@globalbrain/sefirot 2.48.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/lib/components/SActionList.vue +23 -0
  2. package/lib/components/SActionListItem.vue +64 -0
  3. package/lib/components/SAvatar.vue +1 -1
  4. package/lib/components/SButton.vue +378 -392
  5. package/lib/components/SCard.vue +5 -5
  6. package/lib/components/SCardHeader.vue +1 -1
  7. package/lib/components/SCardHeaderTitle.vue +4 -4
  8. package/lib/components/SContent.vue +2 -2
  9. package/lib/components/SDescItem.vue +1 -1
  10. package/lib/components/SDescLink.vue +2 -2
  11. package/lib/components/SDescText.vue +2 -2
  12. package/lib/components/SDropdown.vue +1 -1
  13. package/lib/components/SDropdownSectionFilter.vue +8 -9
  14. package/lib/components/SDropdownSectionMenu.vue +1 -1
  15. package/lib/components/SHeadLead.vue +2 -2
  16. package/lib/components/SHeadTitle.vue +4 -4
  17. package/lib/components/SInputBase.vue +5 -5
  18. package/lib/components/SInputCheckbox.vue +5 -5
  19. package/lib/components/SInputRadio.vue +4 -4
  20. package/lib/components/SInputSegments.vue +132 -0
  21. package/lib/components/SInputSegmentsOption.vue +150 -0
  22. package/lib/components/SSheet.vue +1 -1
  23. package/lib/components/SState.vue +7 -7
  24. package/lib/components/STableCell.vue +1 -1
  25. package/lib/components/STableCellAvatars.vue +1 -1
  26. package/lib/components/STableColumn.vue +1 -1
  27. package/lib/components/STableHeader.vue +1 -1
  28. package/lib/components/STableHeaderActionItem.vue +1 -1
  29. package/lib/composables/Table.ts +6 -5
  30. package/lib/styles/base.css +1 -1
  31. package/lib/styles/bootstrap.css +1 -0
  32. package/lib/styles/variables-deprecated.css +336 -0
  33. package/lib/styles/variables.css +581 -577
  34. package/package.json +1 -1
@@ -35,11 +35,11 @@ const classes = computed(() => [
35
35
  background-color: var(--c-gutter);
36
36
  }
37
37
 
38
- .SCard.neutral { border-color: var(--c-divider-2); }
39
- .SCard.info { border-color: var(--c-info-border); }
40
- .SCard.success { border-color: var(--c-success-border); }
41
- .SCard.warning { border-color: var(--c-warning-border); }
42
- .SCard.danger { border-color: var(--c-danger-border); }
38
+ .SCard.neutral { border-color: var(--c-divider); }
39
+ .SCard.info { border-color: var(--c-border-info-1); }
40
+ .SCard.success { border-color: var(--c-border-success-1); }
41
+ .SCard.warning { border-color: var(--c-border-warning-1); }
42
+ .SCard.danger { border-color: var(--c-border-danger-1); }
43
43
 
44
44
  .SCard.collapsed {
45
45
  height: 48px;
@@ -10,6 +10,6 @@
10
10
  align-items: center;
11
11
  border-radius: 5px 5px 0 0;
12
12
  height: 48px;
13
- background-color: var(--c-bg-soft);
13
+ background-color: var(--c-bg-elv-4);
14
14
  }
15
15
  </style>
@@ -22,8 +22,8 @@ defineProps<{
22
22
  }
23
23
 
24
24
  .SCardHeaderTitle.neutral { color: var(--c-text-1); }
25
- .SCardHeaderTitle.info { color: var(--c-info-text); }
26
- .SCardHeaderTitle.success { color: var(--c-success-text); }
27
- .SCardHeaderTitle.warning { color: var(--c-warning-text); }
28
- .SCardHeaderTitle.danger { color: var(--c-danger-text); }
25
+ .SCardHeaderTitle.info { color: var(--c-text-info-1); }
26
+ .SCardHeaderTitle.success { color: var(--c-text-success-1); }
27
+ .SCardHeaderTitle.warning { color: var(--c-text-warning-1); }
28
+ .SCardHeaderTitle.danger { color: var(--c-text-danger-1); }
29
29
  </style>
@@ -24,11 +24,11 @@
24
24
  }
25
25
 
26
26
  .SContent :deep(a) {
27
- color: var(--c-info-text);
27
+ color: var(--c-text-info-1);
28
28
  transition: color 0.25s;
29
29
 
30
30
  &:hover {
31
- color: var(--c-info-text-dark);
31
+ color: var(--c-text-info-2);
32
32
  }
33
33
  }
34
34
 
@@ -32,7 +32,7 @@ const labelWidth = computed(() => {
32
32
  }
33
33
 
34
34
  .SDesc.divider > .SDescItem {
35
- border-bottom: 1px dashed var(--c-divider-1);
35
+ border-bottom: 1px dashed var(--c-divider);
36
36
  padding-bottom: 7px;
37
37
  }
38
38
  </style>
@@ -41,11 +41,11 @@ const link = computed(() => {
41
41
  white-space: nowrap;
42
42
  overflow: hidden;
43
43
  text-overflow: ellipsis;
44
- color: var(--c-info-text);
44
+ color: var(--c-text-info-1);
45
45
  transition: color 0.25s;
46
46
 
47
47
  &:hover {
48
- color: var(--c-info-text-dark);
48
+ color: var(--c-text-info-2);
49
49
  }
50
50
  }
51
51
  </style>
@@ -53,11 +53,11 @@ const lineClamp = computed(() => props.lineClamp ?? 'none')
53
53
  }
54
54
 
55
55
  .value :deep(a) {
56
- color: var(--c-info-text);
56
+ color: var(--c-text-info-1);
57
57
  transition: color 0.25s;
58
58
 
59
59
  &:hover {
60
- color: var(--c-info-text-dark);
60
+ color: var(--c-text-info-2);
61
61
  }
62
62
  }
63
63
  </style>
@@ -19,7 +19,7 @@ defineProps<{
19
19
 
20
20
  <style scoped lang="postcss">
21
21
  .SDropdown {
22
- border: 1px solid var(--c-divider-2);
22
+ border: 1px solid var(--c-divider);
23
23
  border-radius: 6px;
24
24
  min-width: 256px;
25
25
  max-height: 384px;
@@ -105,11 +105,10 @@ function handleClick(option: DropdownSectionFilterOption, value: string | number
105
105
  z-index: 10;
106
106
  border-bottom: 1px solid var(--c-gutter);
107
107
  padding: 8px;
108
- background-color: var(--c-bg-elv-up);
109
108
  }
110
109
 
111
110
  .input {
112
- border: 1px solid var(--c-divider-1);
111
+ border: 1px solid var(--c-divider);
113
112
  border-radius: 6px;
114
113
  padding: 0 8px;
115
114
  width: 100%;
@@ -141,7 +140,7 @@ function handleClick(option: DropdownSectionFilterOption, value: string | number
141
140
 
142
141
  &:hover,
143
142
  &:focus {
144
- background-color: var(--c-mute);
143
+ background-color: var(--c-bg-mute-1);
145
144
  }
146
145
  }
147
146
 
@@ -155,7 +154,7 @@ function handleClick(option: DropdownSectionFilterOption, value: string | number
155
154
  display: flex;
156
155
  justify-content: center;
157
156
  align-items: center;
158
- border: 1px solid var(--c-divider-1);
157
+ border: 1px solid var(--c-border-mute-1);
159
158
  border-radius: 4px;
160
159
  width: 16px;
161
160
  height: 16px;
@@ -163,8 +162,8 @@ function handleClick(option: DropdownSectionFilterOption, value: string | number
163
162
  transition: border-color 0.1s, background-color 0.1s;
164
163
 
165
164
  .button.active & {
166
- border-color: var(--c-info-text);
167
- background-color: var(--c-info);
165
+ border-color: var(--c-fg-info-1);
166
+ background-color: var(--c-fg-info-1);
168
167
  }
169
168
  }
170
169
 
@@ -184,7 +183,7 @@ function handleClick(option: DropdownSectionFilterOption, value: string | number
184
183
  .radio {
185
184
  position: relative;
186
185
  flex-shrink: 0;
187
- border: 1px solid var(--c-divider-1);
186
+ border: 1px solid var(--c-border-mute-1);
188
187
  border-radius: 50%;
189
188
  margin-top: 8px;
190
189
  margin-bottom: 8px;
@@ -194,7 +193,7 @@ function handleClick(option: DropdownSectionFilterOption, value: string | number
194
193
  transition: border-color 0.25s;
195
194
 
196
195
  .button.active & {
197
- border-color: var(--c-info-light);
196
+ border-color: var(--c-border-info-1);
198
197
  }
199
198
  }
200
199
 
@@ -209,7 +208,7 @@ function handleClick(option: DropdownSectionFilterOption, value: string | number
209
208
  align-items: center;
210
209
  border-radius: 50%;
211
210
  width: 100%;
212
- background-color: var(--c-info-light);
211
+ background-color: var(--c-fg-info-1);
213
212
  opacity: 0;
214
213
  transform: scale(0);
215
214
  transition: opacity 0.25s, transform 0.1s;
@@ -38,7 +38,7 @@ defineProps<{
38
38
  transition: color 0.25s, background-color 0.25s;
39
39
 
40
40
  &:hover:not(:disabled) {
41
- background-color: var(--c-mute);
41
+ background-color: var(--c-bg-mute-1);
42
42
  }
43
43
 
44
44
  &:disabled {
@@ -12,11 +12,11 @@
12
12
  }
13
13
 
14
14
  .SHeadLead :deep(a) {
15
- color: var(--c-info-text);
15
+ color: var(--c-text-info-1);
16
16
  transition: color 0.25s;
17
17
 
18
18
  &:hover {
19
- color: var(--c-info-text-dark);
19
+ color: var(--c-text-info-2);
20
20
  }
21
21
  }
22
22
  </style>
@@ -21,8 +21,8 @@ defineProps<{
21
21
  }
22
22
 
23
23
  .SHeadTitle.neutral { color: var(--c-text-1); }
24
- .SHeadTitle.info { color: var(--c-info-text); }
25
- .SHeadTitle.success { color: var(--c-success-text); }
26
- .SHeadTitle.warning { color: var(--c-warning-text); }
27
- .SHeadTitle.danger { color: var(--c-danger-text); }
24
+ .SHeadTitle.info { color: var(--c-text-info-1); }
25
+ .SHeadTitle.success { color: var(--c-text-success-1); }
26
+ .SHeadTitle.warning { color: var(--c-text-warning-1); }
27
+ .SHeadTitle.danger { color: var(--c-text-danger-1); }
28
28
  </style>
@@ -132,7 +132,7 @@ function getErrorMsg(validation: Validatable) {
132
132
 
133
133
  &:hover, &:focus, &:focus-within {
134
134
  .label-info {
135
- color: var(--c-info-text);
135
+ color: var(--c-text-info-1);
136
136
  }
137
137
  }
138
138
 
@@ -191,10 +191,10 @@ function getErrorMsg(validation: Validatable) {
191
191
 
192
192
  &.neutral { color: var(--c-text-1); }
193
193
  &.mute { color: var(--c-text-2); }
194
- &.info { color: var(--c-info-text); }
195
- &.success { color: var(--c-success-text); }
196
- &.warning { color: var(--c-warning-text); }
197
- &.danger { color: var(--c-danger-text); }
194
+ &.info { color: var(--c-text-info-1); }
195
+ &.success { color: var(--c-text-success-1); }
196
+ &.warning { color: var(--c-text-warning-1); }
197
+ &.danger { color: var(--c-text-danger-1); }
198
198
  }
199
199
 
200
200
  .check-icon {
@@ -109,15 +109,15 @@ function onClick() {
109
109
 
110
110
  &:hover {
111
111
  .box {
112
- border-color: var(--c-info-light);
112
+ border-color: var(--c-border-info-1);
113
113
  }
114
114
  }
115
115
  }
116
116
 
117
117
  .input.on {
118
118
  .box {
119
- border-color: var(--c-info-light);
120
- background-color: var(--c-info-light);
119
+ border-color: var(--c-fg-info-1);
120
+ background-color: var(--c-fg-info-1);
121
121
  }
122
122
 
123
123
  .check {
@@ -128,7 +128,7 @@ function onClick() {
128
128
 
129
129
  .box {
130
130
  position: relative;
131
- border: 1px solid var(--c-divider-1);
131
+ border: 1px solid var(--c-border-mute-1);
132
132
  border-radius: 4px;
133
133
  width: 16px;
134
134
  height: 16px;
@@ -151,7 +151,7 @@ function onClick() {
151
151
  .check-icon {
152
152
  width: 10px;
153
153
  height: 10px;
154
- color: var(--c-white);
154
+ color: var(--c-white-1);
155
155
  }
156
156
 
157
157
  .text {
@@ -89,14 +89,14 @@ function onClick() {
89
89
 
90
90
  &:hover {
91
91
  .box {
92
- border-color: var(--c-info-light);
92
+ border-color: var(--c-border-info-1);
93
93
  }
94
94
  }
95
95
  }
96
96
 
97
97
  .input.on {
98
98
  .box {
99
- border-color: var(--c-info-light);
99
+ border-color: var(--c-fg-info-1);
100
100
  }
101
101
 
102
102
  .check {
@@ -107,7 +107,7 @@ function onClick() {
107
107
 
108
108
  .box {
109
109
  position: relative;
110
- border: 1px solid var(--c-divider-1);
110
+ border: 1px solid var(--c-border-mute-1);
111
111
  border-radius: 50%;
112
112
  width: 16px;
113
113
  height: 16px;
@@ -126,7 +126,7 @@ function onClick() {
126
126
  align-items: center;
127
127
  border-radius: 50%;
128
128
  width: 100%;
129
- background-color: var(--c-info-light);
129
+ background-color: var(--c-fg-info-1);
130
130
  opacity: 0;
131
131
  transform: scale(0);
132
132
  transition: opacity 0.25s, transform 0.1s;
@@ -0,0 +1,132 @@
1
+ <script setup lang="ts" generic="T extends string | number | boolean">
2
+ import { type IconifyIcon } from '@iconify/vue/dist/offline'
3
+ import { computed } from 'vue'
4
+ import { type Validatable } from '../composables/Validation'
5
+ import SInputBase from './SInputBase.vue'
6
+ import SInputSegmentsOption, { type Mode } from './SInputSegmentsOption.vue'
7
+
8
+ export type Size = 'mini' | 'small' | 'medium'
9
+ export type Color = 'neutral' | 'mute' | 'info' | 'success' | 'warning' | 'danger'
10
+
11
+ export interface Option<T extends string | number | boolean> {
12
+ label: string
13
+ value: T
14
+ mode?: Mode
15
+ disabled?: boolean
16
+ }
17
+
18
+ const props = defineProps<{
19
+ size?: Size
20
+ name?: string
21
+ label?: string
22
+ info?: string
23
+ note?: string
24
+ help?: string
25
+ checkIcon?: IconifyIcon
26
+ checkText?: string
27
+ checkColor?: Color
28
+ options: Option<T>[]
29
+ block?: boolean
30
+ disabled?: boolean
31
+ value?: T
32
+ modelValue?: T
33
+ validation?: Validatable
34
+ hideError?: boolean
35
+ }>()
36
+
37
+ const emit = defineEmits<{
38
+ (e: 'update:model-value', value: T): void
39
+ (e: 'change', value: T): void
40
+ }>()
41
+
42
+ const _value = computed(() => {
43
+ const v = props.modelValue !== undefined
44
+ ? props.modelValue
45
+ : props.value
46
+
47
+ if (v === undefined) {
48
+ throw new Error('[sefirot] SInputSegments: `value` or `modelValue` is required.')
49
+ }
50
+
51
+ return v
52
+ })
53
+
54
+ function onSelect(value: T) {
55
+ emit('update:model-value', value)
56
+ emit('change', value)
57
+ }
58
+ </script>
59
+
60
+ <template>
61
+ <SInputBase
62
+ class="SInputSegments"
63
+ :class="[size ?? 'small', { block }]"
64
+ :label="label"
65
+ :note="note"
66
+ :info="info"
67
+ :help="help"
68
+ :check-icon="checkIcon"
69
+ :check-text="checkText"
70
+ :check-color="checkColor"
71
+ :hide-error="hideError"
72
+ :validation="validation"
73
+ >
74
+ <div class="box">
75
+ <SInputSegmentsOption
76
+ v-for="option, index in options"
77
+ :key="index"
78
+ :size="size ?? 'small'"
79
+ :label="option.label"
80
+ :value="option.value"
81
+ :mode="option.mode ?? 'neutral'"
82
+ :active="_value === option.value"
83
+ :disabled="disabled ? true : option.disabled ?? false"
84
+ @click="onSelect(option.value)"
85
+ />
86
+ </div>
87
+ <template v-if="$slots.info" #info><slot name="info" /></template>
88
+ </SInputBase>
89
+ </template>
90
+
91
+ <style scoped lang="postcss">
92
+ .SInputSegments.mini {
93
+ .box {
94
+ padding: 2px;
95
+ height: 32px;
96
+ }
97
+ }
98
+
99
+ .SInputSegments.small {
100
+ .box {
101
+ padding: 4px;
102
+ height: 40px;
103
+ }
104
+ }
105
+
106
+ .SInputSegments.medium {
107
+ .box {
108
+ padding: 4px;
109
+ height: 48px;
110
+ }
111
+ }
112
+
113
+ .SInputSegments.block {
114
+ .box {
115
+ display: flex;
116
+ }
117
+ }
118
+
119
+ .SInputSegments.has-error {
120
+ .box {
121
+ border-color: var(--input-error-border-color);
122
+ }
123
+ }
124
+
125
+ .box {
126
+ display: inline-flex;
127
+ border: 1px solid var(--input-border-color);
128
+ border-radius: 6px;
129
+ background-color: var(--input-bg-color);
130
+ transition: border-color 0.25s;
131
+ }
132
+ </style>
@@ -0,0 +1,150 @@
1
+ <script setup lang="ts" generic="T extends string | number | boolean">
2
+ export type Size = 'mini' | 'small' | 'medium'
3
+ export type Mode = 'neutral' | 'mute' | 'info' | 'success' | 'warning' | 'danger'
4
+
5
+ const props = defineProps<{
6
+ size: Size
7
+ label: string
8
+ value: T
9
+ mode: Mode
10
+ active: boolean
11
+ disabled: boolean
12
+ }>()
13
+
14
+ const emit = defineEmits<{
15
+ (e: 'click'): void
16
+ }>()
17
+
18
+ function onClick() {
19
+ if (!props.disabled) {
20
+ emit('click')
21
+ }
22
+ }
23
+ </script>
24
+
25
+ <template>
26
+ <button
27
+ class="SInputSegmentsOption"
28
+ :class="[size, mode, { active }, { disabled }]"
29
+ @click="onClick"
30
+ >
31
+ <span class="label">
32
+ {{ label }}
33
+ </span>
34
+ </button>
35
+ </template>
36
+
37
+ <style scoped lang="postcss">
38
+ .SInputSegmentsOption {
39
+ position: relative;
40
+ display: block;
41
+ flex-grow: 1;
42
+ justify-content: center;
43
+ align-items: center;
44
+ border: 1px solid transparent;
45
+ border-radius: 3px;
46
+ width: 100%;
47
+ height: 100%;
48
+ text-align: center;
49
+ font-size: 14px;
50
+ color: var(--c-text-2);
51
+ white-space: nowrap;
52
+ transition: border-color 0.25s, color 0.25s, background-color 0.25s;
53
+
54
+ &:hover {
55
+ color: var(--c-text-1);
56
+ }
57
+
58
+ &.disabled {
59
+ color: var(--c-text-3);
60
+ cursor: not-allowed;
61
+ }
62
+
63
+ .SInputSegmentsOption + &::before {
64
+ position: absolute;
65
+ left: -1px;
66
+ display: block;
67
+ width: 1px;
68
+ height: 16px;
69
+ border-radius: 4px;
70
+ background-color: var(--c-divider-2);
71
+ content: "";
72
+ transition: opacity 0.25s;
73
+ }
74
+
75
+ .SInputSegmentsOption.active + &::before,
76
+ &.active::before {
77
+ opacity: 0;
78
+ }
79
+ }
80
+
81
+ .SInputSegmentsOption.mini {
82
+ .SInputSegmentsOption + &::before {
83
+ top: 4px;
84
+ }
85
+
86
+ .label {
87
+ padding: 0 12px;
88
+ }
89
+ }
90
+
91
+ .SInputSegmentsOption.small {
92
+ .SInputSegmentsOption + &::before {
93
+ top: 7px;
94
+ }
95
+
96
+ .label {
97
+ padding: 0 12px;
98
+ }
99
+ }
100
+
101
+ .SInputSegmentsOption.medium {
102
+ .SInputSegmentsOption + &::before {
103
+ top: 10px;
104
+ }
105
+
106
+ .label {
107
+ padding: 0 16px;
108
+ }
109
+ }
110
+
111
+ .SInputSegmentsOption.neutral.active {
112
+ border-color: var(--button-fill-mute-border-color);
113
+ color: var(--button-fill-mute-text-color);
114
+ background-color: var(--button-fill-mute-bg-color);
115
+ }
116
+
117
+ .SInputSegmentsOption.mute.active {
118
+ border-color: var(--button-fill-mute-border-color);
119
+ color: var(--c-text-2);
120
+ background-color: var(--button-fill-mute-bg-color);
121
+ }
122
+
123
+ .SInputSegmentsOption.info.active {
124
+ border-color: var(--button-fill-info-border-color);
125
+ color: var(--button-fill-info-text-color);
126
+ background-color: var(--button-fill-info-bg-color);
127
+ }
128
+
129
+ .SInputSegmentsOption.success.active {
130
+ border-color: var(--button-fill-success-border-color);
131
+ color: var(--button-fill-success-text-color);
132
+ background-color: var(--button-fill-success-bg-color);
133
+ }
134
+
135
+ .SInputSegmentsOption.warning.active {
136
+ border-color: var(--button-fill-warning-border-color);
137
+ color: var(--button-fill-warning-text-color);
138
+ background-color: var(--button-fill-warning-bg-color);
139
+ }
140
+
141
+ .SInputSegmentsOption.danger.active {
142
+ border-color: var(--button-fill-danger-border-color);
143
+ color: var(--button-fill-danger-text-color);
144
+ background-color: var(--button-fill-danger-bg-color);
145
+ }
146
+
147
+ .label {
148
+ display: inline-block;
149
+ }
150
+ </style>
@@ -45,7 +45,7 @@ defineEmits<{
45
45
  box-shadow: var(--shadow-depth-5);
46
46
 
47
47
  .dark & {
48
- background-color: var(--c-bg-soft);
48
+ background-color: var(--c-bg-elv-4);
49
49
  }
50
50
  }
51
51
  }
@@ -28,11 +28,11 @@ const classes = computed(() => [
28
28
  .SState {
29
29
  display: inline-flex;
30
30
  align-items: center;
31
- border: 1px solid var(--c-divider-2);
31
+ border: 1px solid var(--c-border-mute-1);
32
32
  border-radius: 6px;
33
33
  font-weight: 500;
34
34
  white-space: nowrap;
35
- background-color: var(--c-mute);
35
+ background-color: var(--c-bg-mute-1);
36
36
  }
37
37
 
38
38
  .SState.mini {
@@ -105,23 +105,23 @@ const classes = computed(() => [
105
105
 
106
106
  .SState.mute {
107
107
  .label { color: var(--c-text-2); }
108
- .indicator { background-color: var(--c-mute-darker); }
108
+ .indicator { background-color: var(--c-fg-gray-1); }
109
109
  }
110
110
 
111
111
  .SState.info {
112
- .indicator { background-color: var(--c-info-text); }
112
+ .indicator { background-color: var(--c-fg-info-1); }
113
113
  }
114
114
 
115
115
  .SState.success {
116
- .indicator { background-color: var(--c-success-text); }
116
+ .indicator { background-color: var(--c-fg-success-1); }
117
117
  }
118
118
 
119
119
  .SState.warning {
120
- .indicator { background-color: var(--c-warning-text); }
120
+ .indicator { background-color: var(--c-fg-warning-1); }
121
121
  }
122
122
 
123
123
  .SState.danger {
124
- .indicator { background-color: var(--c-danger-text); }
124
+ .indicator { background-color: var(--c-fg-danger-1); }
125
125
  }
126
126
 
127
127
  .label {
@@ -126,7 +126,7 @@ const computedCell = computed<TableCell | undefined>(() =>
126
126
 
127
127
  <style scoped lang="postcss">
128
128
  .STableCell {
129
- background-color: var(--c-bg-elv-up);
129
+ background-color: var(--c-bg-elv-3);
130
130
  transition: background-color 0.1s;
131
131
  overflow: hidden;
132
132
 
@@ -33,7 +33,7 @@ const names = computed(() => {
33
33
  return `${_avatars.value[0].name}, ${_avatars.value[1].name}`
34
34
  }
35
35
 
36
- return `${_avatars.value[0].name}, ${_avatars.value[1].name} +${_avatars.value.length - 1}`
36
+ return `${_avatars.value[0].name}, ${_avatars.value[1].name} +${_avatars.value.length - 2}`
37
37
  })
38
38
  </script>
39
39
 
@@ -148,7 +148,7 @@ function stopDialogPositionListener() {
148
148
 
149
149
  <style scoped lang="postcss">
150
150
  .STableColumn {
151
- background-color: var(--c-bg-soft);
151
+ background-color: var(--c-bg-elv-4);
152
152
 
153
153
  &.has-header {
154
154
  border-top: 1px solid var(--c-divider-2);
@@ -60,7 +60,7 @@ const resetAction = computed(() => {
60
60
  border-radius: calc(var(--table-border-radius) - 1px) calc(var(--table-border-radius) - 1px) 0 0;
61
61
  padding-right: var(--table-padding-right);
62
62
  padding-left: var(--table-padding-left);
63
- background-color: var(--c-bg-soft);
63
+ background-color: var(--c-bg-elv-4);
64
64
 
65
65
  &.borderless {
66
66
  border-radius: 0;