@globalbrain/sefirot 4.38.1 → 4.40.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 (44) hide show
  1. package/config/vite.js +1 -0
  2. package/lib/blocks/lens/components/LensCatalog.vue +52 -38
  3. package/lib/blocks/lens/components/LensCatalogControl.vue +5 -9
  4. package/lib/blocks/lens/components/LensCatalogFooter.vue +14 -14
  5. package/lib/blocks/lens/components/LensCatalogStateFilter.vue +3 -3
  6. package/lib/blocks/lens/components/LensCatalogStateFilterCondition.vue +1 -1
  7. package/lib/blocks/lens/components/LensCatalogStateFilterGroup.vue +1 -1
  8. package/lib/blocks/lens/components/LensCatalogStateSort.vue +3 -3
  9. package/lib/blocks/lens/components/LensFormFilter.vue +21 -22
  10. package/lib/blocks/lens/components/LensFormFilterCondition.vue +1 -1
  11. package/lib/blocks/lens/components/LensFormFilterGroup.vue +1 -1
  12. package/lib/blocks/lens/components/LensFormOverrideBase.vue +22 -21
  13. package/lib/blocks/lens/components/LensFormView.vue +25 -26
  14. package/lib/blocks/lens/components/LensTable.vue +1 -3
  15. package/lib/components/SAvatar.vue +7 -2
  16. package/lib/components/SAvatarStack.vue +5 -4
  17. package/lib/components/SButton.vue +3 -1
  18. package/lib/components/SCard.vue +35 -64
  19. package/lib/components/SCardBlock.vue +5 -12
  20. package/lib/components/SCardClose.vue +20 -0
  21. package/lib/components/SCardFooter.vue +15 -0
  22. package/lib/components/SContent.vue +25 -13
  23. package/lib/components/SInputCheckbox.vue +1 -0
  24. package/lib/components/SInputDate.vue +3 -2
  25. package/lib/components/SInputDropdown.vue +2 -1
  26. package/lib/components/SInputFile.vue +5 -4
  27. package/lib/components/SInputFileUpload.vue +1 -1
  28. package/lib/components/SInputHMS.vue +2 -1
  29. package/lib/components/SInputRadio.vue +1 -0
  30. package/lib/components/SInputSelect.vue +2 -1
  31. package/lib/components/SInputText.vue +3 -2
  32. package/lib/components/SInputTextarea.vue +72 -79
  33. package/lib/components/SInputYMD.vue +2 -1
  34. package/lib/components/SModal.vue +60 -1
  35. package/lib/components/SPagination.vue +0 -4
  36. package/lib/components/STable.vue +5 -5
  37. package/lib/components/STableCell.vue +4 -4
  38. package/lib/components/STableColumn.vue +4 -4
  39. package/lib/components/STableFooter.vue +3 -3
  40. package/lib/components/STableHeader.vue +1 -1
  41. package/lib/components/STableItem.vue +2 -2
  42. package/lib/styles/utilities.css +10 -0
  43. package/lib/styles/variables.css +115 -95
  44. package/package.json +20 -19
package/config/vite.js CHANGED
@@ -84,6 +84,7 @@ export const baseConfig = {
84
84
  'file-saver',
85
85
  'markdown-it > argparse',
86
86
  'markdown-it > entities',
87
+ 'pinia',
87
88
  'qs'
88
89
  ],
89
90
  // @keep-sorted
@@ -1,6 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import { useDebounceFn, useElementSize } from '@vueuse/core'
3
3
  import { computed, ref, watch } from 'vue'
4
+ import SDivider from '../../../components/SDivider.vue'
4
5
  import { useQuery } from '../../../composables/Api'
5
6
  import { usePower } from '../../../composables/Power'
6
7
  import { type FieldData } from '../FieldData'
@@ -67,7 +68,7 @@ export interface Props {
67
68
  clickableFields?: string[]
68
69
 
69
70
  // Whether to show border around the catalog.
70
- border?: boolean
71
+ showBorder?: boolean
71
72
 
72
73
  // Padding to add around various blocks in the catalog. This padding only
73
74
  // applies to the X axis (left and right). The default is `16px`.
@@ -180,14 +181,17 @@ const hasConditions = computed(() => {
180
181
  return _filters.value.length > 0 || _sort.value.length > 0
181
182
  })
182
183
 
183
- const borderWidth = computed(() => {
184
- return props.border ? 'var(--lens-catalog-border-width, 1px)' : '0'
184
+ const containerClasses = computed(() => {
185
+ return {
186
+ 'show-empty-state': _showEmptyState.value,
187
+ 'has-border': props.showBorder
188
+ }
185
189
  })
186
190
 
187
191
  const paddings = computed(() => ({
188
192
  '--lens-catalog-control-padding': `0 ${props.padding ?? '16px'}`,
189
- '--lens-catalog-filters-block-padding': `12px ${props.padding ?? '16px'}`,
190
- '--lens-catalog-sorts-block-padding': `12px ${props.padding ?? '16px'}`,
193
+ '--lens-catalog-filters-block-padding': `8px ${props.padding ?? '16px'}`,
194
+ '--lens-catalog-sorts-block-padding': `8px ${props.padding ?? '16px'}`,
191
195
  '--lens-catalog-footer-padding': `0 ${props.padding ?? '16px'}`,
192
196
  '--table-padding-left': `calc(${props.padding ?? '16px'} - 16px)`
193
197
  }))
@@ -195,7 +199,7 @@ const paddings = computed(() => ({
195
199
  const conditionBlocksSize = useElementSize(conditionBlocksEl)
196
200
 
197
201
  const headerHeight = 'var(--lens-catalog-global-height-offset)'
198
- const controlHeight = '48px - 1px'
202
+ const controlHeight = '56px - 1px'
199
203
  const conditionBlocksHeight = computed(() => conditionBlocksSize.height.value > 0 ? `${conditionBlocksSize.height.value}px - 1px` : '0px')
200
204
  const columnsHeight = '40px - 1px'
201
205
  const footerHeight = '56px - 1px'
@@ -212,7 +216,6 @@ const containerMinHeight = computed(() => {
212
216
 
213
217
  const containerStyles = computed(() => {
214
218
  return {
215
- borderWidth: borderWidth.value,
216
219
  ...paddings.value,
217
220
  ...(containerMinHeight.value ?? {})
218
221
  }
@@ -364,7 +367,7 @@ defineExpose({
364
367
  </script>
365
368
 
366
369
  <template>
367
- <SCard class="LensCatalog" :class="{ 'show-empty-state': _showEmptyState }" :style="containerStyles">
370
+ <div class="LensCatalog" :class="containerClasses" :style="containerStyles">
368
371
  <template v-if="_showEmptyState">
369
372
  <slot name="empty-state" />
370
373
  </template>
@@ -397,20 +400,25 @@ defineExpose({
397
400
  </LensCatalogControl>
398
401
  <div v-else class="control-skeleton" />
399
402
  <div v-if="!hideConditions && result && (_filters.length > 0 || _sort.length > 0)" ref="conditionBlocksEl" class="condition-blocks">
400
- <LensCatalogStateFilter
401
- v-if="_filters.length > 0"
402
- :filters="_filters"
403
- :fields="result.fields"
404
- @reset="onResetFilters"
405
- />
406
- <LensCatalogStateSort
407
- v-if="_sort.length > 0"
408
- :fields="result.fields"
409
- :sorts="_sort"
410
- @reset="onResetSorts"
411
- />
403
+ <template v-if="_filters.length > 0">
404
+ <SDivider />
405
+ <LensCatalogStateFilter
406
+ :filters="_filters"
407
+ :fields="result.fields"
408
+ @reset="onResetFilters"
409
+ />
410
+ </template>
411
+ <template v-if="_sort.length > 0">
412
+ <SDivider />
413
+ <LensCatalogStateSort
414
+ :fields="result.fields"
415
+ :sorts="_sort"
416
+ @reset="onResetSorts"
417
+ />
418
+ </template>
412
419
  </div>
413
- <SCardBlock class="list" :style="tableMaxHeight">
420
+ <SDivider />
421
+ <div class="list" :style="tableMaxHeight">
414
422
  <LensTable
415
423
  :result
416
424
  :loading
@@ -430,7 +438,7 @@ defineExpose({
430
438
  @prev="onPrev"
431
439
  @next="onNext"
432
440
  />
433
- </SCardBlock>
441
+ </div>
434
442
  </div>
435
443
 
436
444
  <SModal :open="filterDialog.state.value" @close="filterDialog.off">
@@ -455,16 +463,15 @@ defineExpose({
455
463
  @apply="onViewUpdated"
456
464
  />
457
465
  </SModal>
458
- </SCard>
466
+ </div>
459
467
  </template>
460
468
 
461
- <style scoped lang="postcss">
469
+ <style scoped>
462
470
  .LensCatalog {
463
- --c-bg-elv-2: var(--c-bg-1);
464
- --c-bg-elv-3: var(--c-bg-1);
465
- --c-bg-elv-4: var(--c-bg-2);
466
-
471
+ display: flex;
472
+ flex-direction: column;
467
473
  flex-grow: 1;
474
+ background-color: var(--c-bg-1);
468
475
  }
469
476
 
470
477
  .LensCatalog.show-empty-state {
@@ -472,10 +479,25 @@ defineExpose({
472
479
  background-color: var(--c-bg-1);
473
480
  }
474
481
 
482
+ .LensCatalog.has-border {
483
+ .container {
484
+ border: 1px solid var(--c-border);
485
+ border-radius: 12px;
486
+ }
487
+
488
+ :deep(.LensCatalogControl) {
489
+ border-radius: 11px 11px 0 0;
490
+ }
491
+
492
+ :deep(.LensCatalogFooter) {
493
+ border-radius: 0 0 11px 11px;
494
+ }
495
+ }
496
+
475
497
  .container {
476
498
  display: flex;
477
499
  flex-direction: column;
478
- gap: 1px;
500
+ flex-grow: 1;
479
501
  min-height: 100%;
480
502
  }
481
503
 
@@ -483,18 +505,10 @@ defineExpose({
483
505
  display: flex;
484
506
  flex-direction: column;
485
507
  flex-grow: 1;
486
- border-radius: 0 0 5px 5px;
487
508
  }
488
509
 
489
510
  .control-skeleton {
490
- height: 48px;
511
+ height: 56px;
491
512
  background-color: var(--c-bg-1);
492
513
  }
493
-
494
- .condition-blocks {
495
- display: flex;
496
- flex-direction: column;
497
- gap: 1px;
498
- background-color: var(--c-gutter);
499
- }
500
514
  </style>
@@ -81,7 +81,7 @@ function createFilterPresetOptions(): ActionList {
81
81
  </script>
82
82
 
83
83
  <template>
84
- <SCardBlock class="LensCatalogControl">
84
+ <div class="LensCatalogControl">
85
85
  <template v-if="!selected || selected.length === 0">
86
86
  <div class="main">
87
87
  <SInputText
@@ -95,7 +95,6 @@ function createFilterPresetOptions(): ActionList {
95
95
  />
96
96
  <SActionMenu
97
97
  v-if="filterPresets?.length"
98
- type="outline"
99
98
  size="sm"
100
99
  :icon="IconLightning"
101
100
  :label="t.a_filter_preset"
@@ -103,14 +102,12 @@ function createFilterPresetOptions(): ActionList {
103
102
  />
104
103
  <SButton
105
104
  v-if="showFilters"
106
- type="outline"
107
105
  size="sm"
108
106
  :icon="IconFunnelSimple"
109
107
  :label="t.a_filter"
110
108
  @click="$emit('filter')"
111
109
  />
112
110
  <SButton
113
- type="outline"
114
111
  size="sm"
115
112
  :icon="IconSlidersHorizontal"
116
113
  :label="t.a_view"
@@ -120,7 +117,6 @@ function createFilterPresetOptions(): ActionList {
120
117
  <div class="sub">
121
118
  <slot name="sub-left" />
122
119
  <SButton
123
- type="outline"
124
120
  size="sm"
125
121
  :icon="isConditionActive ? IconBookOpenText : IconBook"
126
122
  :disabled="isConditionDisabled"
@@ -142,16 +138,16 @@ function createFilterPresetOptions(): ActionList {
142
138
  </div>
143
139
  </div>
144
140
  </template>
145
- </SCardBlock>
141
+ </div>
146
142
  </template>
147
143
 
148
- <style scoped lang="postcss">
144
+ <style scoped>
149
145
  .LensCatalogControl {
150
146
  display: flex;
151
147
  align-items: center;
152
- border-radius: 5px 5px 0 0;
153
148
  padding: var(--lens-catalog-control-padding, 0 12px);
154
- height: 48px;
149
+ height: 56px;
150
+ background-color: var(--c-bg-1);
155
151
  }
156
152
 
157
153
  .main {
@@ -1,4 +1,5 @@
1
1
  <script setup lang="ts">
2
+ import SPagination from '../../../components/SPagination.vue'
2
3
  import { type LensResult } from '../LensResult'
3
4
 
4
5
  defineProps<{
@@ -14,28 +15,27 @@ defineEmits<{
14
15
 
15
16
  <template>
16
17
  <div class="LensCatalogFooter">
17
- <SControl>
18
- <SControlRight>
19
- <SControlPagination
20
- :total="result.pagination.total"
21
- :page="result.pagination.page"
22
- :per-page="result.pagination.perPage"
23
- :disabled="loading"
24
- @prev="$emit('prev')"
25
- @next="$emit('next')"
26
- />
27
- </SControlRight>
28
- </SControl>
18
+ <SPagination
19
+ size="small"
20
+ align="right"
21
+ :total="result.pagination.total"
22
+ :page="result.pagination.page"
23
+ :per-page="result.pagination.perPage"
24
+ :disabled="loading"
25
+ @prev="$emit('prev')"
26
+ @next="$emit('next')"
27
+ />
29
28
  </div>
30
29
  </template>
31
30
 
32
- <style scoped lang="postcss">
31
+ <style scoped>
33
32
  .LensCatalogFooter {
34
33
  position: relative;
35
34
  z-index: 10;
36
35
  display: flex;
37
- flex-shrink: 0;
36
+ justify-content: flex-end;
38
37
  align-items: center;
38
+ flex-shrink: 0;
39
39
  margin-top: -1px;
40
40
  border-top: 1px solid var(--c-gutter);
41
41
  border-radius: 0 0 5px 5px;
@@ -88,7 +88,7 @@ function isConnector(value: any): value is '$and' | '$or' {
88
88
  </script>
89
89
 
90
90
  <template>
91
- <SCardBlock class="LensCatalogStateFilter">
91
+ <div class="LensCatalogStateFilter">
92
92
  <div v-if="!isOpen" class="closed">
93
93
  <span class="filter-count">{{ t.filter_count(group.count) }}</span>
94
94
  </div>
@@ -111,10 +111,10 @@ function isConnector(value: any): value is '$and' | '$or' {
111
111
  </span>
112
112
  </button>
113
113
  </div>
114
- </SCardBlock>
114
+ </div>
115
115
  </template>
116
116
 
117
- <style scoped lang="postcss">
117
+ <style scoped>
118
118
  .LensCatalogStateFilter {
119
119
  display: flex;
120
120
  gap: 16px;
@@ -54,7 +54,7 @@ const valueText = computedAsync(async () => {
54
54
  </div>
55
55
  </template>
56
56
 
57
- <style scoped lang="postcss">
57
+ <style scoped>
58
58
  .LensCatalogStateFilterCondition {
59
59
  display: flex;
60
60
  gap: 1px;
@@ -49,7 +49,7 @@ const connectorTextDict = {
49
49
  </div>
50
50
  </template>
51
51
 
52
- <style scoped lang="postcss">
52
+ <style scoped>
53
53
  .LensCatalogStateFilterGroup {
54
54
  display: flex;
55
55
  flex-direction: column;
@@ -50,7 +50,7 @@ function getOrderText(sort: LensQuerySort): string {
50
50
  </script>
51
51
 
52
52
  <template>
53
- <SCardBlock class="LensCatalogStateSort">
53
+ <div class="LensCatalogStateSort">
54
54
  <div v-if="!isOpen" class="closed">
55
55
  <span class="sort-count">{{ t.sort_count(sorts.length) }}</span>
56
56
  </div>
@@ -72,10 +72,10 @@ function getOrderText(sort: LensQuerySort): string {
72
72
  </span>
73
73
  </button>
74
74
  </div>
75
- </SCardBlock>
75
+ </div>
76
76
  </template>
77
77
 
78
- <style scoped lang="postcss">
78
+ <style scoped>
79
79
  .LensCatalogStateSort {
80
80
  display: flex;
81
81
  gap: 16px;
@@ -1,5 +1,12 @@
1
1
  <script setup lang="ts">
2
2
  import { computed } from 'vue'
3
+ import SButton from '../../../components/SButton.vue'
4
+ import SCard from '../../../components/SCard.vue'
5
+ import SCardBlock from '../../../components/SCardBlock.vue'
6
+ import SCardClose from '../../../components/SCardClose.vue'
7
+ import SCardFooter from '../../../components/SCardFooter.vue'
8
+ import SContent from '../../../components/SContent.vue'
9
+ import SDoc from '../../../components/SDoc.vue'
3
10
  import { useData } from '../../../composables/Data'
4
11
  import { useLang, useTrans } from '../../../composables/Lang'
5
12
  import { useValidation } from '../../../composables/Validation'
@@ -129,6 +136,7 @@ async function onApply() {
129
136
 
130
137
  <template>
131
138
  <SCard class="LensFormFilters" size="xlarge">
139
+ <SCardClose @click="$emit('cancel')" />
132
140
  <SCardBlock class="s-p-32">
133
141
  <SDoc>
134
142
  <SContent>
@@ -143,27 +151,18 @@ async function onApply() {
143
151
  />
144
152
  </SDoc>
145
153
  </SCardBlock>
146
- <SCardBlock class="s-py-16 s-px-32">
147
- <SControl size="md">
148
- <SControlRight>
149
- <SControlButton
150
- :label="t.a_cancel"
151
- @click="$emit('cancel')"
152
- />
153
- <SControlButton
154
- mode="info"
155
- :label="t.a_apply"
156
- @click="onApply"
157
- />
158
- </SControlRight>
159
- </SControl>
160
- </SCardBlock>
154
+ <SCardFooter class="s-py-16 s-px-32">
155
+ <SButton
156
+ size="md"
157
+ :label="t.a_cancel"
158
+ @click="$emit('cancel')"
159
+ />
160
+ <SButton
161
+ size="md"
162
+ mode="info"
163
+ :label="t.a_apply"
164
+ @click="onApply"
165
+ />
166
+ </SCardFooter>
161
167
  </SCard>
162
168
  </template>
163
-
164
- <style scoped lang="postcss">
165
- .LensFormFilters {
166
- --c-bg-elv-2: var(--c-bg-1);
167
- --c-bg-elv-3: var(--c-bg-1);
168
- }
169
- </style>
@@ -175,7 +175,7 @@ async function resolveInput() {
175
175
  </div>
176
176
  </template>
177
177
 
178
- <style scoped lang="postcss">
178
+ <style scoped>
179
179
  .LensFormSearchCondition {
180
180
  display: grid;
181
181
  grid-template-columns: 256px 160px minmax(0, 1fr) 32px;
@@ -129,7 +129,7 @@ function onAddGroup() {
129
129
  </div>
130
130
  </template>
131
131
 
132
- <style scoped lang="postcss">
132
+ <style scoped>
133
133
  .LensFormFilterGroup {
134
134
  display: flex;
135
135
  flex-direction: column;
@@ -1,4 +1,11 @@
1
1
  <script setup lang="ts">
2
+ import SButton from '../../../components/SButton.vue'
3
+ import SCard from '../../../components/SCard.vue'
4
+ import SCardBlock from '../../../components/SCardBlock.vue'
5
+ import SCardClose from '../../../components/SCardClose.vue'
6
+ import SCardFooter from '../../../components/SCardFooter.vue'
7
+ import SContent from '../../../components/SContent.vue'
8
+ import SDoc from '../../../components/SDoc.vue'
2
9
  import SInputCheckbox from '../../../components/SInputCheckbox.vue'
3
10
  import SInputNumber from '../../../components/SInputNumber.vue'
4
11
  import SInputText from '../../../components/SInputText.vue'
@@ -91,6 +98,7 @@ async function onSave() {
91
98
 
92
99
  <template>
93
100
  <SCard class="LensFormOverrideBase" size="large">
101
+ <SCardClose @click="$emit('cancel')" />
94
102
  <SCardBlock class="s-p-32">
95
103
  <SDoc>
96
104
  <SContent>
@@ -147,30 +155,23 @@ async function onSave() {
147
155
  </div>
148
156
  </SDoc>
149
157
  </SCardBlock>
150
- <SCardBlock class="s-py-16 s-px-32">
151
- <SControl size="md">
152
- <SControlRight>
153
- <SControlButton
154
- :label="t.a_cancel"
155
- @click="$emit('cancel')"
156
- />
157
- <SControlButton
158
- mode="info"
159
- :label="t.a_apply"
160
- @click="onSave"
161
- />
162
- </SControlRight>
163
- </SControl>
164
- </SCardBlock>
158
+ <SCardFooter class="s-py-16 s-px-32">
159
+ <SButton
160
+ size="md"
161
+ :label="t.a_cancel"
162
+ @click="$emit('cancel')"
163
+ />
164
+ <SButton
165
+ size="md"
166
+ mode="info"
167
+ :label="t.a_apply"
168
+ @click="onSave"
169
+ />
170
+ </SCardFooter>
165
171
  </SCard>
166
172
  </template>
167
173
 
168
- <style scoped lang="postcss">
169
- .LensFormOverrideBase {
170
- --c-bg-elv-2: var(--c-bg-1);
171
- --c-bg-elv-3: var(--c-bg-1);
172
- }
173
-
174
+ <style scoped>
174
175
  .fieldset {
175
176
  display: flex;
176
177
  flex-direction: column;
@@ -8,7 +8,14 @@ import { cloneDeep } from 'lodash-es'
8
8
  import { computed, ref } from 'vue'
9
9
  import { useDraggable } from 'vue-draggable-plus'
10
10
  import SButton from '../../../components/SButton.vue'
11
+ import SCard from '../../../components/SCard.vue'
12
+ import SCardBlock from '../../../components/SCardBlock.vue'
13
+ import SCardClose from '../../../components/SCardClose.vue'
14
+ import SCardFooter from '../../../components/SCardFooter.vue'
15
+ import SContent from '../../../components/SContent.vue'
16
+ import SDoc from '../../../components/SDoc.vue'
11
17
  import SInputCheckbox from '../../../components/SInputCheckbox.vue'
18
+ import SModal from '../../../components/SModal.vue'
12
19
  import { useLang, useTrans } from '../../../composables/Lang'
13
20
  import { usePower } from '../../../composables/Power'
14
21
  import { type FieldData } from '../FieldData'
@@ -149,6 +156,7 @@ async function onApply() {
149
156
 
150
157
  <template>
151
158
  <SCard class="LensFormView" size="medium">
159
+ <SCardClose @click="$emit('cancel')" />
152
160
  <SCardBlock class="s-p-32">
153
161
  <SDoc>
154
162
  <SContent>
@@ -217,21 +225,19 @@ async function onApply() {
217
225
  </div>
218
226
  </SDoc>
219
227
  </SCardBlock>
220
- <SCardBlock class="s-py-16 s-px-32">
221
- <SControl size="md">
222
- <SControlRight>
223
- <SControlButton
224
- :label="t.a_cancel"
225
- @click="$emit('cancel')"
226
- />
227
- <SControlButton
228
- mode="info"
229
- :label="t.a_apply"
230
- @click="onApply"
231
- />
232
- </SControlRight>
233
- </SControl>
234
- </SCardBlock>
228
+ <SCardFooter class="s-py-16 s-px-32">
229
+ <SButton
230
+ size="md"
231
+ :label="t.a_cancel"
232
+ @click="$emit('cancel')"
233
+ />
234
+ <SButton
235
+ size="md"
236
+ mode="info"
237
+ :label="t.a_apply"
238
+ @click="onApply"
239
+ />
240
+ </SCardFooter>
235
241
 
236
242
  <SModal :open="editDialog.state.value" @close="editDialog.off()">
237
243
  <LensFormOverride
@@ -246,12 +252,7 @@ async function onApply() {
246
252
  </SCard>
247
253
  </template>
248
254
 
249
- <style scoped lang="postcss">
250
- .LensFormView {
251
- --c-bg-elv-2: var(--c-bg-1);
252
- --c-bg-elv-3: var(--c-bg-1);
253
- }
254
-
255
+ <style scoped>
255
256
  .main {
256
257
  display: flex;
257
258
  flex-direction: column;
@@ -286,15 +287,13 @@ async function onApply() {
286
287
  .input {
287
288
  display: flex;
288
289
  flex-grow: 1;
289
- gap: 1px;
290
- border: 1px dashed var(--c-divider);
290
+ border: 1px dashed var(--input-border-color);
291
291
  border-radius: 6px;
292
- background-color: var(--c-gutter);
293
292
  overflow: hidden;
294
293
  transition: border-color 0.25s;
295
294
 
296
295
  &:hover {
297
- border-color: var(--c-border-mute-2);
296
+ border-color: var(--input-hover-border-color);
298
297
  }
299
298
  }
300
299
 
@@ -318,7 +317,7 @@ async function onApply() {
318
317
  display: flex;
319
318
  align-items: center;
320
319
  flex-grow: 1;
321
- padding: 0 8px;
320
+ padding: 0 8px 0 0;
322
321
  background-color: var(--c-bg-1);
323
322
  }
324
323
 
@@ -117,7 +117,7 @@ function onSortUpdated(sort: LensQuerySort) {
117
117
  </div>
118
118
  </template>
119
119
 
120
- <style scoped lang="postcss">
120
+ <style scoped>
121
121
  .LensTable {
122
122
  display: flex;
123
123
  flex-direction: column;
@@ -132,8 +132,6 @@ function onSortUpdated(sort: LensQuerySort) {
132
132
  * but it is quite tricky to scope the desired field in CSS at the moment.
133
133
  */
134
134
  font-feature-settings: "tnum";
135
-
136
- --c-bg-elv-3: var(--c-bg-1);
137
135
  }
138
136
 
139
137
  .LensTable.is-loading,
@@ -55,7 +55,7 @@ const tooltipPosition = computed(() => {
55
55
  display: flex;
56
56
  justify-content: center;
57
57
  align-items: center;
58
- background-color: var(--c-bg-elv-1);
58
+ background-color: var(--c-bg-1);
59
59
  border-radius: 50%;
60
60
  overflow: hidden;
61
61
  }
@@ -115,6 +115,11 @@ const tooltipPosition = computed(() => {
115
115
  }
116
116
 
117
117
  .SAvatar.no-image {
118
- border: 1px solid var(--c-border-mute-1);
118
+ border: 1px solid var(--c-border);
119
+ background-color: var(--c-bg-3);
120
+
121
+ .dark & {
122
+ border-color: transparent;
123
+ }
119
124
  }
120
125
  </style>
@@ -42,11 +42,12 @@ const count = computed(() => {
42
42
  .SAvatarStack {
43
43
  display: flex;
44
44
 
45
- :slotted(.SAvatar), :deep(.SAvatar), .more {
45
+ :slotted(.SAvatar),
46
+ :deep(.SAvatar),
47
+ .more {
46
48
  flex-shrink: 0;
47
- border: 2px solid var(--c-bg-elv-2);
48
- border-radius: 50%;
49
49
  overflow: hidden;
50
+ box-shadow: 0 0 0 2px var(--c-bg-1);
50
51
  }
51
52
 
52
53
  &.mini > :deep(*):not(:last-child) { margin-right: -6px; }
@@ -62,7 +63,7 @@ const count = computed(() => {
62
63
  display: flex;
63
64
  justify-content: center;
64
65
  align-items: center;
65
- background-color: var(--c-bg-mute-1);
66
+ background-color: var(--c-bg-3);
66
67
  border-radius: 50%;
67
68
  line-height: 1;
68
69
  color: var(--c-text-2);