@xen-orchestra/web-core 0.1.0 → 0.2.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 (82) hide show
  1. package/lib/assets/css/_colors.pcss +148 -116
  2. package/lib/assets/css/_context.pcss +44 -44
  3. package/lib/assets/css/base.pcss +9 -8
  4. package/lib/assets/no-data.svg +67 -0
  5. package/lib/components/CardNumbers.vue +5 -5
  6. package/lib/components/LegendTitle.vue +3 -3
  7. package/lib/components/PowerStateIcon.vue +6 -6
  8. package/lib/components/UiCard.vue +2 -2
  9. package/lib/components/UiTag.vue +39 -31
  10. package/lib/components/backup-item/BackupItem.vue +5 -2
  11. package/lib/components/backup-state/BackupState.vue +4 -5
  12. package/lib/components/button/ButtonIcon.vue +40 -40
  13. package/lib/components/button/UiButton.vue +356 -93
  14. package/lib/components/card/CardSubtitle.vue +2 -2
  15. package/lib/components/card/CardTitle.vue +9 -4
  16. package/lib/components/cell-object/CellObject.vue +4 -4
  17. package/lib/components/cell-text/CellText.vue +3 -3
  18. package/lib/components/chip/ChipIcon.vue +6 -5
  19. package/lib/components/chip/UiChip.vue +20 -20
  20. package/lib/components/counter/VtsCounter.vue +147 -0
  21. package/lib/components/divider/Divider.vue +2 -2
  22. package/lib/components/donut-chart/DonutChart.vue +9 -9
  23. package/lib/components/dropdown/DropdownItem.vue +53 -73
  24. package/lib/components/dropdown/DropdownList.vue +1 -1
  25. package/lib/components/dropdown/DropdownTitle.vue +6 -6
  26. package/lib/components/head-bar/HeadBar.vue +6 -6
  27. package/lib/components/icon/ComplexIcon.vue +1 -1
  28. package/lib/components/icon/ObjectIcon.vue +19 -19
  29. package/lib/components/icon/VtsIcon.vue +96 -0
  30. package/lib/components/info/VtsInfo.vue +55 -0
  31. package/lib/components/input/UiInput.vue +22 -16
  32. package/lib/components/layout/LayoutSidebar.vue +3 -3
  33. package/lib/components/legend/LegendItem.vue +11 -11
  34. package/lib/components/menu/MenuItem.vue +4 -4
  35. package/lib/components/menu/MenuList.vue +6 -6
  36. package/lib/components/menu/MenuSeparator.vue +2 -2
  37. package/lib/components/menu/MenuTrigger.vue +6 -6
  38. package/lib/components/object-link/ObjectLink.vue +12 -12
  39. package/lib/components/query-search-bar/QuerySearchBar.vue +10 -3
  40. package/lib/components/stacked-bar/StackedBar.vue +2 -2
  41. package/lib/components/stacked-bar/StackedBarSegment.vue +6 -5
  42. package/lib/components/state-hero/NoDataHero.vue +11 -0
  43. package/lib/components/state-hero/StateHero.vue +6 -3
  44. package/lib/components/tab/TabItem.vue +11 -11
  45. package/lib/components/tab/TabList.vue +2 -2
  46. package/lib/components/table/ColumnTitle.vue +19 -16
  47. package/lib/components/table/UiTable.vue +5 -5
  48. package/lib/components/task/QuickTaskItem.vue +6 -6
  49. package/lib/components/task/QuickTaskList.vue +1 -1
  50. package/lib/components/task/QuickTaskPanel.vue +1 -1
  51. package/lib/components/task/QuickTaskTabBar.vue +22 -4
  52. package/lib/components/tooltip/TooltipItem.vue +15 -9
  53. package/lib/components/tree/TreeItemError.vue +1 -1
  54. package/lib/components/tree/TreeItemLabel.vue +12 -12
  55. package/lib/components/tree/TreeLine.vue +2 -2
  56. package/lib/components/tree/TreeLoadingItem.vue +4 -8
  57. package/lib/components/user/UserLink.vue +8 -8
  58. package/lib/components/user/UserLogo.vue +2 -2
  59. package/lib/composables/hide-route-query.composable.ts +10 -0
  60. package/lib/composables/route-query/actions/handle-delete.ts +9 -6
  61. package/lib/composables/route-query/actions/handle-set.ts +6 -4
  62. package/lib/composables/route-query/types.ts +10 -1
  63. package/lib/composables/sort-route-query.composable.ts +18 -0
  64. package/lib/composables/table/create-base-definition.ts +20 -0
  65. package/lib/composables/table/create-define-column.ts +26 -0
  66. package/lib/composables/table/create-sorting-definition.ts +48 -0
  67. package/lib/composables/table/create-visibility-definition.ts +44 -0
  68. package/lib/composables/table/type.ts +112 -0
  69. package/lib/composables/table.composable.ts +76 -0
  70. package/lib/layouts/CoreLayout.vue +3 -3
  71. package/lib/locales/en.json +1 -0
  72. package/lib/locales/fr.json +1 -0
  73. package/lib/types/backup.type.ts +1 -1
  74. package/lib/types/button.type.ts +1 -1
  75. package/lib/types/color.type.ts +2 -4
  76. package/lib/types/size.type.ts +0 -2
  77. package/lib/types/utility.type.ts +2 -0
  78. package/lib/utils/to-variants.util.ts +9 -0
  79. package/package.json +3 -3
  80. package/lib/components/UiCounter.vue +0 -89
  81. package/lib/components/icon/UiIcon.vue +0 -47
  82. package/lib/components/icon/VmIcon.vue +0 -30
@@ -12,9 +12,16 @@
12
12
  :placeholder="$t('core.query-search-bar.placeholder')"
13
13
  />
14
14
  <template v-if="uiStore.isDesktop">
15
- <UiButton type="submit">{{ $t('core.search') }}</UiButton>
15
+ <UiButton size="medium" color="normal" level="primary" type="submit">{{ $t('core.search') }}</UiButton>
16
16
  <Divider type="stretch" />
17
- <UiButton v-tooltip="$t('coming-soon')" level="secondary" :left-icon="faFilter" disabled>
17
+ <UiButton
18
+ v-tooltip="$t('coming-soon')"
19
+ size="medium"
20
+ color="normal"
21
+ level="secondary"
22
+ :left-icon="faFilter"
23
+ disabled
24
+ >
18
25
  {{ $t('core.query-search-bar.use-query-builder') }}
19
26
  </UiButton>
20
27
  </template>
@@ -55,6 +62,6 @@ const value = ref<string>('')
55
62
  }
56
63
 
57
64
  .label {
58
- color: var(--color-grey-200);
65
+ color: var(--color-neutral-txt-secondary);
59
66
  }
60
67
  </style>
@@ -5,7 +5,7 @@
5
5
  v-for="(segment, index) in segments"
6
6
  :key="index"
7
7
  :color="segment.color"
8
- :percentage="(segment.value / max) * 100"
8
+ :percentage="max === 0 ? 0 : (segment.value / max) * 100"
9
9
  />
10
10
  </div>
11
11
  </template>
@@ -38,6 +38,6 @@ const max = computed(() => Math.max(props.maxValue ?? 0, totalValue.value))
38
38
  height: 4rem;
39
39
  border-radius: 0.8rem;
40
40
  overflow: hidden;
41
- background-color: var(--background-color-purple-10);
41
+ background-color: var(--color-neutral-background-disabled);
42
42
  }
43
43
  </style>
@@ -38,19 +38,19 @@ useResizeObserver(ellipsisElement, ([entry]) => {
38
38
  /* COLOR VARIANT */
39
39
  .stacked-bar-segment {
40
40
  &.primary {
41
- --background-color: var(--color-purple-base);
41
+ --background-color: var(--color-normal-item-base);
42
42
  }
43
43
 
44
44
  &.success {
45
- --background-color: var(--color-green-base);
45
+ --background-color: var(--color-success-item-base);
46
46
  }
47
47
 
48
48
  &.warning {
49
- --background-color: var(--color-orange-base);
49
+ --background-color: var(--color-warning-item-base);
50
50
  }
51
51
 
52
52
  &.danger {
53
- --background-color: var(--color-red-base);
53
+ --background-color: var(--color-danger-item-base);
54
54
  }
55
55
  }
56
56
 
@@ -60,8 +60,9 @@ useResizeObserver(ellipsisElement, ([entry]) => {
60
60
  justify-content: center;
61
61
  align-items: center;
62
62
  white-space: nowrap;
63
- color: var(--color-grey-600);
63
+ color: var(--color-normal-txt-item);
64
64
  background-color: var(--background-color);
65
+ padding-inline: 0.8rem;
65
66
  }
66
67
 
67
68
  .hidden {
@@ -0,0 +1,11 @@
1
+ <template>
2
+ <StateHero class="no-data-hero" image="no-data" :type>{{ $t('no-data') }}</StateHero>
3
+ </template>
4
+
5
+ <script lang="ts" setup>
6
+ import StateHero, { type StateHeroType } from '@core/components/state-hero/StateHero.vue'
7
+
8
+ defineProps<{
9
+ type: StateHeroType
10
+ }>()
11
+ </script>
@@ -17,7 +17,7 @@ export type StateHeroType = 'page' | 'card'
17
17
  const props = defineProps<{
18
18
  type: StateHeroType
19
19
  busy?: boolean
20
- image?: 'no-result' | 'under-construction' // TODO: 'offline' | 'no-data' | 'not-found' | 'all-good' | 'all-done' | 'error'
20
+ image?: 'no-result' | 'under-construction' | 'no-data' // TODO: 'offline' | 'not-found' | 'all-good' | 'all-done' | 'error'
21
21
  }>()
22
22
 
23
23
  const typoClass = computed(() => (props.type === 'page' ? 'h2-black' : 'h4-medium'))
@@ -35,12 +35,14 @@ const imageSrc = computed(() => {
35
35
  .state-hero {
36
36
  &.page {
37
37
  --image-width: 90%;
38
+ --image-max-height: none;
38
39
  --spinner-size: 10rem;
39
40
  --gap: 8.2rem;
40
41
  }
41
42
 
42
43
  &.card {
43
44
  --image-width: 70%;
45
+ --image-max-height: 20rem;
44
46
  --spinner-size: 6rem;
45
47
  --gap: 2rem;
46
48
  }
@@ -58,14 +60,15 @@ const imageSrc = computed(() => {
58
60
  .image {
59
61
  width: var(--image-width);
60
62
  max-width: 55rem;
63
+ max-height: var(--image-max-height);
61
64
  }
62
65
 
63
66
  .spinner {
64
- color: var(--color-purple-base);
67
+ color: var(--color-normal-txt-base);
65
68
  font-size: var(--spinner-size);
66
69
  }
67
70
 
68
71
  .text {
69
- color: var(--color-purple-base);
72
+ color: var(--color-normal-txt-base);
70
73
  }
71
74
  </style>
@@ -40,31 +40,31 @@ const classNames = computed(() => {
40
40
  /* COLOR VARIANTS */
41
41
  .tab-item {
42
42
  & {
43
- --color: var(--color-grey-100);
43
+ --color: var(--color-neutral-txt-primary);
44
44
  --border-color: transparent;
45
45
  --background-color: transparent;
46
46
  }
47
47
 
48
48
  &:is(:hover, .hover, :focus-visible) {
49
- --color: var(--color-grey-100);
50
- --border-color: var(--color-purple-d20);
51
- --background-color: var(--background-color-purple-20);
49
+ --color: var(--color-neutral-txt-primary);
50
+ --border-color: var(--color-normal-item-hover);
51
+ --background-color: var(--color-normal-background-hover);
52
52
  }
53
53
 
54
54
  &:is(:active, .pressed) {
55
- --color: var(--color-grey-100);
56
- --border-color: var(--color-purple-d40);
57
- --background-color: var(--background-color-purple-30);
55
+ --color: var(--color-neutral-txt-primary);
56
+ --border-color: var(--color-normal-item-active);
57
+ --background-color: var(--color-normal-background-active);
58
58
  }
59
59
 
60
60
  &:is(.active, .selected) {
61
- --color: var(--color-grey-100);
62
- --border-color: var(--color-purple-base);
63
- --background-color: var(--background-color-purple-10);
61
+ --color: var(--color-neutral-txt-primary);
62
+ --border-color: var(--color-normal-item-base);
63
+ --background-color: var(--color-normal-background-selected);
64
64
  }
65
65
 
66
66
  &:is(:disabled, .disabled) {
67
- --color: var(--color-grey-400);
67
+ --color: var(--color-neutral-txt-secondary);
68
68
  --border-color: transparent;
69
69
  --background-color: transparent;
70
70
  }
@@ -24,8 +24,8 @@ useContext(DisabledContext, () => props.disabled)
24
24
  display: flex;
25
25
  align-items: stretch;
26
26
  height: 5rem;
27
- border-bottom: 1px solid var(--color-grey-500);
28
- background-color: var(--background-color-primary);
27
+ border-bottom: 1px solid var(--color-neutral-border);
28
+ background-color: var(--color-neutral-background-primary);
29
29
  max-width: 100%;
30
30
  overflow: auto;
31
31
  flex-shrink: 0;
@@ -1,6 +1,6 @@
1
1
  <!-- v1.0 -->
2
2
  <template>
3
- <MenuList :disabled placement="bottom-start" shadow>
3
+ <MenuList :disabled placement="bottom-start" border>
4
4
  <template #trigger="{ open, isOpen }">
5
5
  <th
6
6
  :class="{ interactive, disabled, focus: isOpen }"
@@ -9,10 +9,10 @@
9
9
  >
10
10
  <div class="content">
11
11
  <span class="label">
12
- <UiIcon :icon />
12
+ <VtsIcon :icon accent="current" />
13
13
  <slot />
14
14
  </span>
15
- <UiIcon :icon="currentInteraction?.icon" />
15
+ <VtsIcon :icon="currentInteraction?.icon" accent="current" />
16
16
  </div>
17
17
  </th>
18
18
  </template>
@@ -23,7 +23,8 @@
23
23
  :disabled="interaction.disabled"
24
24
  :on-click="() => updateInteraction(interaction)"
25
25
  >
26
- <UiIcon :icon="interaction.icon" />{{ interaction.label }}
26
+ <VtsIcon :icon="interaction.icon" accent="current" />
27
+ {{ interaction.label }}
27
28
  <i v-if="currentInteraction?.id === interaction.id" class="current-interaction typo p3-regular-italic">
28
29
  {{ $t('core.current').toLowerCase() }}
29
30
  </i>
@@ -32,7 +33,7 @@
32
33
  </template>
33
34
 
34
35
  <script lang="ts" setup>
35
- import UiIcon from '@core/components/icon/UiIcon.vue'
36
+ import VtsIcon from '@core/components/icon/VtsIcon.vue'
36
37
  import MenuItem from '@core/components/menu/MenuItem.vue'
37
38
  import MenuList from '@core/components/menu/MenuList.vue'
38
39
  import { vTooltip } from '@core/directives/tooltip.directive'
@@ -94,41 +95,43 @@ const updateInteraction = (interaction: Interaction) => {
94
95
  <style lang="postcss" scoped>
95
96
  /* COLOR VARIANTS */
96
97
  .column-header.interactive {
97
- --color: var(--color-purple-base);
98
- --background-color: var(--background-color-primary);
98
+ --color: var(--color-normal-txt-base);
99
+ --background-color: var(--color-neutral-background-primary);
99
100
 
100
101
  &.focus {
101
- --color: var(--color-purple-base);
102
- --background-color: var(--background-color-purple-10);
102
+ --color: var(--color-normal-txt-base);
103
+ --background-color: var(--color-normal-background-selected);
103
104
  }
104
105
 
105
106
  &:hover {
106
- --color: var(--color-purple-d20);
107
- --background-color: var(--background-color-purple-20);
107
+ --color: var(--color-normal-txt-hover);
108
+ --background-color: var(--color-normal-background-hover);
108
109
  }
109
110
 
110
111
  &:active {
111
- --color: var(--color-purple-d40);
112
- --background-color: var(--background-color-purple-30);
112
+ --color: var(--color-normal-txt-active);
113
+ --background-color: var(--color-normal-background-active);
113
114
  }
114
115
 
115
116
  &.disabled {
116
- --color: var(--color-grey-400);
117
- --background-color: var(--background-color-secondary);
117
+ --color: var(--color-neutral-txt-secondary);
118
+ --background-color: var(--color-neutral-background-disabled);
118
119
  }
119
120
  }
121
+
120
122
  /* IMPLEMENTATION */
121
123
  .column-header.interactive {
122
124
  cursor: pointer;
123
125
  color: var(--color);
124
126
  background-color: var(--background-color);
127
+
125
128
  &.disabled {
126
129
  cursor: not-allowed;
127
130
  }
128
131
  }
129
132
 
130
133
  .current-interaction {
131
- color: var(--color-grey-300);
134
+ color: var(--color-neutral-txt-secondary);
132
135
  }
133
136
 
134
137
  .content {
@@ -19,16 +19,16 @@ provide('tableName', props.name)
19
19
  .ui-table {
20
20
  width: 100%;
21
21
  border-spacing: 0;
22
- background-color: var(--background-color-primary);
22
+ background-color: var(--color-neutral-background-primary);
23
23
  line-height: 2.4rem;
24
- color: var(--color-grey-200);
24
+ color: var(--color-neutral-txt-secondary);
25
25
  border-collapse: collapse;
26
26
  table-layout: fixed;
27
27
 
28
28
  :deep(th),
29
29
  :deep(td) {
30
30
  padding: 1rem;
31
- border-top: 0.1rem solid var(--color-grey-500);
31
+ border-top: 0.1rem solid var(--color-neutral-border);
32
32
  text-align: left;
33
33
  }
34
34
 
@@ -39,7 +39,7 @@ provide('tableName', props.name)
39
39
  :deep(thead) {
40
40
  th,
41
41
  td {
42
- color: var(--color-purple-base);
42
+ color: var(--color-normal-txt-base);
43
43
  font-size: 1.4rem;
44
44
  font-weight: 400;
45
45
  text-transform: uppercase;
@@ -49,7 +49,7 @@ provide('tableName', props.name)
49
49
  &.vertical-border {
50
50
  :deep(th),
51
51
  :deep(td) {
52
- border-right: 0.1rem solid var(--color-grey-500);
52
+ border-right: 0.1rem solid var(--color-neutral-border);
53
53
 
54
54
  &:first-child {
55
55
  border-left: none;
@@ -9,16 +9,16 @@
9
9
  </div>
10
10
  <div class="informations">
11
11
  <div class="line-1">
12
- <UiTag v-if="task.tag" color="grey">{{ task.tag }}</UiTag>
12
+ <UiTag v-if="task.tag" color="secondary">{{ task.tag }}</UiTag>
13
13
  <div v-if="hasSubTasks" class="subtasks">
14
- <UiIcon :icon="faCircleNotch" />
14
+ <VtsIcon :icon="faCircleNotch" accent="current" />
15
15
  <span class="typo p4-medium">{{ $t('tasks.n-subtasks', { n: subTasksCount }) }}</span>
16
16
  </div>
17
17
  </div>
18
18
  <div v-if="task.start" class="line-2 typo p4-regular">
19
19
  {{ $d(task.start, 'datetime_short') }}
20
20
  <template v-if="task.end">
21
- <UiIcon :icon="faArrowRight" />
21
+ <VtsIcon :icon="faArrowRight" accent="current" />
22
22
  {{ $d(new Date(task.end), 'datetime_short') }}
23
23
  </template>
24
24
  </div>
@@ -30,7 +30,7 @@
30
30
 
31
31
  <script lang="ts" setup>
32
32
  import ButtonIcon from '@core/components/button/ButtonIcon.vue'
33
- import UiIcon from '@core/components/icon/UiIcon.vue'
33
+ import VtsIcon from '@core/components/icon/VtsIcon.vue'
34
34
  import QuickTaskList from '@core/components/task/QuickTaskList.vue'
35
35
  import UiTag from '@core/components/UiTag.vue'
36
36
  import type { Task } from '@core/types/task.type'
@@ -54,7 +54,7 @@ const hasSubTasks = computed(() => subTasksCount.value > 0)
54
54
  display: flex;
55
55
 
56
56
  &:not(:last-child) {
57
- border-bottom: 0.1rem solid var(--color-grey-500);
57
+ border-bottom: 0.1rem solid var(--color-neutral-border);
58
58
  }
59
59
  }
60
60
 
@@ -80,7 +80,7 @@ const hasSubTasks = computed(() => subTasksCount.value > 0)
80
80
  }
81
81
 
82
82
  .line-2 {
83
- color: var(--color-grey-200);
83
+ color: var(--color-neutral-txt-secondary);
84
84
  }
85
85
 
86
86
  .subtasks {
@@ -29,7 +29,7 @@ defineProps<{
29
29
  .vts-quick-task-list {
30
30
  display: flex;
31
31
  flex-direction: column;
32
- background-color: var(--background-color-primary);
32
+ background-color: var(--color-neutral-background-primary);
33
33
  padding: 1rem 0;
34
34
 
35
35
  &:not(.sublist) {
@@ -53,7 +53,7 @@ const currentTasks = computed(() => {
53
53
  min-width: 65rem;
54
54
  border-radius: 0.8rem;
55
55
  overflow: hidden;
56
- border: 0.1rem solid var(--color-grey-500);
56
+ border: 0.1rem solid var(--color-neutral-border);
57
57
  z-index: 1001;
58
58
 
59
59
  &.mobile {
@@ -2,15 +2,33 @@
2
2
  <TabList :disabled="loading">
3
3
  <TabItem v-bind="tabs.pending.bindings">
4
4
  {{ $t('tasks.quick-view.in-progress') }}
5
- <UiCounter v-if="pendingCount !== undefined" :value="pendingCount" color="info" />
5
+ <VtsCounter
6
+ v-if="pendingCount !== undefined"
7
+ :value="pendingCount"
8
+ accent="brand"
9
+ variant="primary"
10
+ size="small"
11
+ />
6
12
  </TabItem>
7
13
  <TabItem v-bind="tabs.success.bindings">
8
14
  {{ $t('tasks.quick-view.done') }}
9
- <UiCounter v-if="successCount !== undefined" :value="successCount" color="success" />
15
+ <VtsCounter
16
+ v-if="successCount !== undefined"
17
+ :value="successCount"
18
+ accent="success"
19
+ variant="primary"
20
+ size="small"
21
+ />
10
22
  </TabItem>
11
23
  <TabItem v-bind="tabs.failure.bindings">
12
24
  {{ $t('tasks.quick-view.failed') }}
13
- <UiCounter v-if="failureCount !== undefined" :value="failureCount" color="danger" />
25
+ <VtsCounter
26
+ v-if="failureCount !== undefined"
27
+ :value="failureCount"
28
+ accent="danger"
29
+ variant="primary"
30
+ size="small"
31
+ />
14
32
  </TabItem>
15
33
  <Divider type="tab" />
16
34
  <TabItem v-bind="tabs.all.bindings">
@@ -26,10 +44,10 @@
26
44
  </template>
27
45
 
28
46
  <script lang="ts" setup>
47
+ import VtsCounter from '@core/components/counter/VtsCounter.vue'
29
48
  import Divider from '@core/components/divider/Divider.vue'
30
49
  import TabItem from '@core/components/tab/TabItem.vue'
31
50
  import TabList from '@core/components/tab/TabList.vue'
32
- import UiCounter from '@core/components/UiCounter.vue'
33
51
  import { useTabList } from '@core/composables/tab-list.composable'
34
52
  import type { TaskTab } from '@core/types/task.type'
35
53
 
@@ -10,7 +10,7 @@ import type { TooltipOptions } from '@core/stores/tooltip.store'
10
10
  import { hasEllipsis } from '@core/utils/has-ellipsis.util'
11
11
  import { isString } from 'lodash-es'
12
12
  import place from 'placement.js'
13
- import { computed, ref, watchEffect } from 'vue'
13
+ import { computed, ref, watch, watchEffect } from 'vue'
14
14
 
15
15
  const props = defineProps<{
16
16
  target: HTMLElement
@@ -41,13 +41,19 @@ const isDisabled = computed(() => content.value === false)
41
41
 
42
42
  const placement = computed(() => props.options.placement ?? 'top')
43
43
 
44
- watchEffect(() => {
45
- if (tooltipElement.value) {
46
- place(props.target, tooltipElement.value, {
47
- placement: placement.value,
48
- })
44
+ function updatePlacement() {
45
+ if (!tooltipElement.value) {
46
+ return
49
47
  }
50
- })
48
+
49
+ place(props.target, tooltipElement.value, {
50
+ placement: placement.value,
51
+ })
52
+ }
53
+
54
+ watchEffect(() => updatePlacement(), { flush: 'post' })
55
+
56
+ watch(content, () => updatePlacement(), { flush: 'post' })
51
57
  </script>
52
58
 
53
59
  <style lang="postcss" scoped>
@@ -56,9 +62,9 @@ watchEffect(() => {
56
62
  display: inline-flex;
57
63
  padding: 0.4rem 0.8rem;
58
64
  pointer-events: none;
59
- color: var(--color-grey-600);
65
+ color: var(--color-neutral-background-primary);
60
66
  border-radius: 0.4rem;
61
- background-color: var(--color-grey-100);
67
+ background-color: var(--color-neutral-txt-primary);
62
68
  z-index: 999999;
63
69
  }
64
70
 
@@ -8,6 +8,6 @@
8
8
  <style lang="postcss" scoped>
9
9
  .tree-item-error {
10
10
  padding-left: 3rem;
11
- color: var(--color-red-base);
11
+ color: var(--color-danger-txt-base);
12
12
  }
13
13
  </style>
@@ -26,7 +26,7 @@
26
26
  <div v-else class="h-line" />
27
27
  <a v-tooltip="{ selector: '.text' }" :href class="link typo p2-medium" @click="navigate">
28
28
  <slot name="icon">
29
- <UiIcon :icon class="icon" />
29
+ <VtsIcon :icon accent="current" class="icon" />
30
30
  </slot>
31
31
  <div class="text text-ellipsis">
32
32
  <slot />
@@ -39,7 +39,7 @@
39
39
 
40
40
  <script lang="ts" setup>
41
41
  import ButtonIcon from '@core/components/button/ButtonIcon.vue'
42
- import UiIcon from '@core/components/icon/UiIcon.vue'
42
+ import VtsIcon from '@core/components/icon/VtsIcon.vue'
43
43
  import TreeLine from '@core/components/tree/TreeLine.vue'
44
44
  import { vTooltip } from '@core/directives/tooltip.directive'
45
45
  import { IK_TREE_ITEM_EXPANDED, IK_TREE_ITEM_HAS_CHILDREN, IK_TREE_LIST_DEPTH } from '@core/utils/injection-keys.util'
@@ -72,22 +72,22 @@ const depth = inject(IK_TREE_LIST_DEPTH, 0)
72
72
  <style lang="postcss" scoped>
73
73
  /* COLOR VARIANTS */
74
74
  .tree-item-label {
75
- --color: var(--color-grey-100);
76
- --background-color: var(--background-color-primary);
75
+ --color: var(--color-neutral-txt-primary);
76
+ --background-color: var(--color-neutral-background-primary);
77
77
 
78
78
  &:is(.exact-active, .active) {
79
- --color: var(--color-grey-100);
80
- --background-color: var(--background-color-purple-10);
79
+ --color: var(--color-neutral-txt-primary);
80
+ --background-color: var(--color-normal-background-selected);
81
81
  }
82
82
 
83
83
  &:hover {
84
- --color: var(--color-grey-100);
85
- --background-color: var(--background-color-purple-20);
84
+ --color: var(--color-neutral-txt-primary);
85
+ --background-color: var(--color-normal-background-hover);
86
86
  }
87
87
 
88
88
  &:active {
89
- --color: var(--color-grey-100);
90
- --background-color: var(--background-color-purple-30);
89
+ --color: var(--color-neutral-txt-primary);
90
+ --background-color: var(--color-normal-background-active);
91
91
  }
92
92
  }
93
93
 
@@ -114,7 +114,7 @@ const depth = inject(IK_TREE_LIST_DEPTH, 0)
114
114
  gap: 1.2rem;
115
115
 
116
116
  &:hover {
117
- color: var(--color-grey-100);
117
+ color: var(--color-neutral-txt-primary);
118
118
  }
119
119
  }
120
120
 
@@ -128,7 +128,7 @@ const depth = inject(IK_TREE_LIST_DEPTH, 0)
128
128
 
129
129
  .h-line {
130
130
  width: 2rem;
131
- border-bottom: 0.1rem solid var(--color-purple-base);
131
+ border-bottom: 0.1rem solid var(--color-normal-txt-base);
132
132
  margin-left: -0.4rem;
133
133
  }
134
134
  </style>
@@ -24,7 +24,7 @@ defineProps<{
24
24
 
25
25
  .tree-line-vertical {
26
26
  width: 0.1rem;
27
- background: var(--color-purple-base);
27
+ background: var(--color-normal-txt-base);
28
28
  height: calc(100% + var(--offset));
29
29
  transform: translateY(calc(var(--offset) * -1));
30
30
  }
@@ -35,7 +35,7 @@ defineProps<{
35
35
  background: transparent;
36
36
 
37
37
  &.right {
38
- background: var(--color-purple-base);
38
+ background: var(--color-normal-txt-base);
39
39
  }
40
40
  }
41
41
  }
@@ -6,7 +6,7 @@
6
6
  <template v-if="depth > 1">
7
7
  <TreeLine v-for="i in depth - 1" :key="i" :right="i === depth - 1" full-height />
8
8
  </template>
9
- <UiIcon :icon class="icon" />
9
+ <VtsIcon :icon accent="current" />
10
10
  <div class="loader">&nbsp;</div>
11
11
  </div>
12
12
  </div>
@@ -14,7 +14,7 @@
14
14
  </template>
15
15
 
16
16
  <script lang="ts" setup>
17
- import UiIcon from '@core/components/icon/UiIcon.vue'
17
+ import VtsIcon from '@core/components/icon/VtsIcon.vue'
18
18
  import TreeLine from '@core/components/tree/TreeLine.vue'
19
19
  import { IK_TREE_LIST_DEPTH } from '@core/utils/injection-keys.util'
20
20
  import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
@@ -31,11 +31,7 @@ const depth = inject(IK_TREE_LIST_DEPTH, 0)
31
31
  .tree-loading-item-label-placeholder {
32
32
  display: flex;
33
33
  height: 4rem;
34
- background-color: var(--background-color-primary);
35
- }
36
-
37
- .icon {
38
- color: var(--color-grey-100);
34
+ background-color: var(--color-neutral-background-primary);
39
35
  }
40
36
 
41
37
  .link-placeholder {
@@ -49,7 +45,7 @@ const depth = inject(IK_TREE_LIST_DEPTH, 0)
49
45
  .loader {
50
46
  flex: 1;
51
47
  animation: pulse alternate 1s infinite;
52
- background-color: var(--background-color-purple-10);
48
+ background-color: var(--color-normal-background-selected);
53
49
  }
54
50
 
55
51
  @keyframes pulse {
@@ -24,24 +24,24 @@ defineProps<{
24
24
  <style lang="postcss" scoped>
25
25
  /* COLOR VARIANTS */
26
26
  .user-link {
27
- --color: var(--color-purple-base);
28
- --border-color: var(--color-purple-base);
27
+ --color: var(--color-normal-txt-base);
28
+ --border-color: var(--color-normal-txt-base);
29
29
 
30
30
  &.is-link {
31
31
  &:is(:hover, .hover, :focus-visible) {
32
- --color: var(--color-purple-d20);
33
- --border-color: var(--color-purple-d20);
32
+ --color: var(--color-normal-txt-hover);
33
+ --border-color: var(--color-normal-txt-hover);
34
34
  }
35
35
 
36
36
  &:is(:active, .pressed) {
37
- --color: var(--color-purple-d40);
38
- --border-color: var(--color-purple-d40);
37
+ --color: var(--color-normal-txt-active);
38
+ --border-color: var(--color-normal-txt-active);
39
39
  }
40
40
  }
41
41
 
42
42
  &.disabled {
43
- --color: var(--color-grey-400);
44
- --border-color: var(--color-grey-400);
43
+ --color: var(--color-neutral-txt-secondary);
44
+ --border-color: var(--color-neutral-txt-secondary);
45
45
  }
46
46
  }
47
47