diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index bfbfff99a..13b9fcfd4 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1721,8 +1721,6 @@ _notification:
_deck:
alwaysShowMainColumn: "常にメインカラムを表示"
columnAlign: "カラムの寄せ"
- columnMargin: "カラム間のマージン"
- columnHeaderHeight: "カラムのヘッダー幅"
addColumn: "カラムを追加"
swapLeft: "左に移動"
swapRight: "右に移動"
diff --git a/packages/client/src/pages/settings/deck.vue b/packages/client/src/pages/settings/deck.vue
index b1cf8a8cc..96cb22bca 100644
--- a/packages/client/src/pages/settings/deck.vue
+++ b/packages/client/src/pages/settings/deck.vue
@@ -10,18 +10,6 @@
-
- {{ i18n.ts._deck.columnHeaderHeight }}
-
-
-
-
-
-
- {{ i18n.ts._deck.columnMargin }}
- px
-
-
{{ i18n.ts._deck.profile }}{{ profile }}
@@ -41,8 +29,6 @@ import { definePageMetadata } from '@/scripts/page-metadata';
const navWindow = computed(deckStore.makeGetterSetter('navWindow'));
const alwaysShowMainColumn = computed(deckStore.makeGetterSetter('alwaysShowMainColumn'));
const columnAlign = computed(deckStore.makeGetterSetter('columnAlign'));
-const columnMargin = computed(deckStore.makeGetterSetter('columnMargin'));
-const columnHeaderHeight = computed(deckStore.makeGetterSetter('columnHeaderHeight'));
const profile = computed(deckStore.makeGetterSetter('profile'));
watch(navWindow, async () => {
diff --git a/packages/client/src/pages/settings/statusbars.vue b/packages/client/src/pages/settings/statusbars.vue
index dea5e0ffd..18de11975 100644
--- a/packages/client/src/pages/settings/statusbars.vue
+++ b/packages/client/src/pages/settings/statusbars.vue
@@ -12,6 +12,7 @@
+
diff --git a/packages/client/src/themes/_dark.json5 b/packages/client/src/themes/_dark.json5
index 5c6e7755e..88ec8a545 100644
--- a/packages/client/src/themes/_dark.json5
+++ b/packages/client/src/themes/_dark.json5
@@ -77,6 +77,7 @@
codeString: '#ffb675',
codeNumber: '#cfff9e',
codeBoolean: '#c59eff',
+ deckDivider: '#000',
htmlThemeColor: '@bg',
X2: ':darken<2<@panel',
X3: 'rgba(255, 255, 255, 0.05)',
diff --git a/packages/client/src/themes/_light.json5 b/packages/client/src/themes/_light.json5
index 66e70d5e1..bad1291c8 100644
--- a/packages/client/src/themes/_light.json5
+++ b/packages/client/src/themes/_light.json5
@@ -77,6 +77,7 @@
codeString: '#b98710',
codeNumber: '#0fbbbb',
codeBoolean: '#62b70c',
+ deckDivider: ':darken<3<@bg',
htmlThemeColor: '@bg',
X2: ':darken<2<@panel',
X3: 'rgba(0, 0, 0, 0.05)',
diff --git a/packages/client/src/ui/_common_/statusbars.vue b/packages/client/src/ui/_common_/statusbars.vue
index 11912e141..7b3a68ec4 100644
--- a/packages/client/src/ui/_common_/statusbars.vue
+++ b/packages/client/src/ui/_common_/statusbars.vue
@@ -4,7 +4,8 @@
verySmall: defaultStore.reactiveState.statusbarSize.value === 'verySmall',
small: defaultStore.reactiveState.statusbarSize.value === 'small',
medium: defaultStore.reactiveState.statusbarSize.value === 'medium',
- large: defaultStore.reactiveState.statusbarSize.value === 'large'
+ large: defaultStore.reactiveState.statusbarSize.value === 'large',
+ veryLarge: defaultStore.reactiveState.statusbarSize.value === 'veryLarge',
}"
>
@@ -46,6 +47,11 @@ const XUserList = defineAsyncComponent(() => import('./statusbar-user-list.vue')
font-size: 0.875em;
}
+ &.veryLarge {
+ --height: 30px;
+ font-size: 0.9em;
+ }
+
> .item {
display: inline-flex;
vertical-align: bottom;
diff --git a/packages/client/src/ui/deck.vue b/packages/client/src/ui/deck.vue
index 1cf1a1481..88fc39061 100644
--- a/packages/client/src/ui/deck.vue
+++ b/packages/client/src/ui/deck.vue
@@ -1,32 +1,37 @@
-
@@ -183,22 +188,14 @@ function moveFocus(id: string, direction: 'up' | 'down' | 'left' | 'right') {
// TODO: ここではなくて、各カラムで自身の幅に応じて上書きするようにしたい
--margin: var(--marginHalf);
+ --deckDividerThickness: 5px;
+
display: flex;
// ほんとは単に 100vh と書きたいところだが... https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
height: calc(var(--vh, 1vh) * 100);
box-sizing: border-box;
flex: 1;
- &.center {
- > .column:first-of-type {
- margin-left: auto;
- }
-
- > .column:last-of-type {
- margin-right: auto;
- }
- }
-
&.isMobile {
padding-bottom: 100px;
}
@@ -209,24 +206,55 @@ function moveFocus(id: string, direction: 'up' | 'down' | 'left' | 'right') {
display: flex;
flex-direction: column;
- > .columns {
- display: flex;
+ > .columnsWrapper {
flex: 1;
- padding: var(--deckMargin);
- overflow-x: auto;
- overflow-y: clip;
+ display: flex;
+ flex-direction: row;
- > .column {
- flex-shrink: 0;
- margin-right: var(--deckMargin);
+ > .columns {
+ flex: 1;
+ display: flex;
+ overflow-x: auto;
+ overflow-y: clip;
- &.folder {
- display: flex;
- flex-direction: column;
-
- > *:not(:last-child) {
- margin-bottom: var(--deckMargin);
+ &.center {
+ > .column:first-of-type {
+ margin-left: auto;
}
+
+ > .column:last-of-type {
+ margin-right: auto;
+ }
+ }
+
+ > .column {
+ flex-shrink: 0;
+ border-right: solid var(--deckDividerThickness) var(--deckDivider);
+
+ &:first-child {
+ border-left: solid var(--deckDividerThickness) var(--deckDivider);
+ }
+
+ &.folder {
+ display: flex;
+ flex-direction: column;
+
+ > *:not(:last-child) {
+ border-bottom: solid var(--deckDividerThickness) var(--deckDivider);
+ }
+ }
+ }
+ }
+
+ > .sideMenu {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ width: 32px;
+
+ > .button {
+ width: 100%;
+ aspect-ratio: 1;
}
}
}
diff --git a/packages/client/src/ui/deck/column.vue b/packages/client/src/ui/deck/column.vue
index 6db3549fb..e8e554d72 100644
--- a/packages/client/src/ui/deck/column.vue
+++ b/packages/client/src/ui/deck/column.vue
@@ -1,13 +1,14 @@
-
-
+
@@ -39,9 +40,8 @@ export type DeckFunc = {