nuance-ui 0.2.8 → 0.2.9

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 (96) hide show
  1. package/LICENSE.md +9 -9
  2. package/README.md +75 -75
  3. package/dist/module.json +1 -1
  4. package/dist/runtime/components/action-icon/action-icon-group.vue +3 -3
  5. package/dist/runtime/components/action-icon/action-icon.vue +23 -23
  6. package/dist/runtime/components/app-shell/app-shell-aside.vue +30 -30
  7. package/dist/runtime/components/app-shell/app-shell-footer.vue +29 -29
  8. package/dist/runtime/components/app-shell/app-shell-header.vue +30 -30
  9. package/dist/runtime/components/app-shell/app-shell-main.vue +18 -18
  10. package/dist/runtime/components/app-shell/app-shell-navbar.vue +34 -34
  11. package/dist/runtime/components/app-shell/app-shell-section.vue +10 -10
  12. package/dist/runtime/components/app-shell/app-shell.vue +34 -34
  13. package/dist/runtime/components/box.vue +3 -3
  14. package/dist/runtime/components/breadcrumbs.vue +78 -78
  15. package/dist/runtime/components/button/button.vue +40 -40
  16. package/dist/runtime/components/button/unstyled-button.vue +23 -23
  17. package/dist/runtime/components/calendar/calendar.vue +60 -60
  18. package/dist/runtime/components/calendar/ui/core/calendar-header.vue +95 -95
  19. package/dist/runtime/components/calendar/ui/core/calendar-root.vue +3 -3
  20. package/dist/runtime/components/calendar/ui/levels/calendar-decade.vue +40 -40
  21. package/dist/runtime/components/calendar/ui/levels/calendar-month.vue +77 -77
  22. package/dist/runtime/components/calendar/ui/levels/calendar-year.vue +40 -40
  23. package/dist/runtime/components/card/card-section.vue +3 -3
  24. package/dist/runtime/components/card/card.vue +3 -3
  25. package/dist/runtime/components/checkbox/checkbox-card.vue +37 -37
  26. package/dist/runtime/components/checkbox/checkbox-indicator.vue +117 -117
  27. package/dist/runtime/components/checkbox/checkbox.vue +139 -139
  28. package/dist/runtime/components/chip/chip-group.vue +2 -2
  29. package/dist/runtime/components/chip/chip.vue +200 -200
  30. package/dist/runtime/components/combobox/combobox-dropdown.vue +14 -14
  31. package/dist/runtime/components/combobox/combobox-empty.vue +3 -3
  32. package/dist/runtime/components/combobox/combobox-group.vue +21 -21
  33. package/dist/runtime/components/combobox/combobox-option-list.vue +3 -3
  34. package/dist/runtime/components/combobox/combobox-option.vue +22 -22
  35. package/dist/runtime/components/combobox/combobox-options-dropdown.vue +29 -29
  36. package/dist/runtime/components/combobox/combobox-root.vue +3 -3
  37. package/dist/runtime/components/combobox/combobox-target.vue +3 -3
  38. package/dist/runtime/components/container.vue +8 -8
  39. package/dist/runtime/components/date-time-picker.d.vue.ts +3 -3
  40. package/dist/runtime/components/date-time-picker.vue +66 -66
  41. package/dist/runtime/components/date-time-picker.vue.d.ts +3 -3
  42. package/dist/runtime/components/dialog/ui/dialog-close-button.vue +11 -11
  43. package/dist/runtime/components/dialog/ui/dialog-header.vue +5 -5
  44. package/dist/runtime/components/dialog/ui/dialog-title.vue +5 -5
  45. package/dist/runtime/components/drawer/drawer-close-button.vue +3 -3
  46. package/dist/runtime/components/drawer/drawer-header.vue +3 -3
  47. package/dist/runtime/components/drawer/drawer-root.vue +15 -15
  48. package/dist/runtime/components/drawer/drawer-title.vue +3 -3
  49. package/dist/runtime/components/files/file-upload-button.vue +12 -12
  50. package/dist/runtime/components/files/file-upload-icon.vue +1 -1
  51. package/dist/runtime/components/input/date-picker.vue +85 -85
  52. package/dist/runtime/components/input/email-input.vue +19 -19
  53. package/dist/runtime/components/input/number-input.vue +134 -134
  54. package/dist/runtime/components/input/password-input.vue +28 -28
  55. package/dist/runtime/components/input/text-input.vue +35 -35
  56. package/dist/runtime/components/input/ui/input-inline.vue +105 -105
  57. package/dist/runtime/components/input/ui/input-wrapper.vue +54 -54
  58. package/dist/runtime/components/link/link-button.vue +16 -16
  59. package/dist/runtime/components/link/link.vue +10 -10
  60. package/dist/runtime/components/loader/_loaders/bars-loader.vue +5 -5
  61. package/dist/runtime/components/loader/_loaders/dots-loader.vue +5 -5
  62. package/dist/runtime/components/loader/_loaders/oval-loader.vue +1 -1
  63. package/dist/runtime/components/modal/modal-close-button.vue +3 -3
  64. package/dist/runtime/components/modal/modal-header.vue +3 -3
  65. package/dist/runtime/components/modal/modal-root.vue +13 -13
  66. package/dist/runtime/components/modal/modal-title.vue +3 -3
  67. package/dist/runtime/components/nav-link/nav-icon-link.vue +15 -15
  68. package/dist/runtime/components/nav-link/nav-link.vue +132 -132
  69. package/dist/runtime/components/paper.vue +33 -33
  70. package/dist/runtime/components/popover/popover-dropdown.vue +69 -70
  71. package/dist/runtime/components/popover/popover-target.vue +8 -8
  72. package/dist/runtime/components/popover/popover.vue +1 -1
  73. package/dist/runtime/components/progress/progress-label.vue +3 -3
  74. package/dist/runtime/components/progress/progress-root.vue +3 -3
  75. package/dist/runtime/components/progress/progress-section.vue +8 -8
  76. package/dist/runtime/components/progress/progress.vue +9 -9
  77. package/dist/runtime/components/renderless/renderless.vue +3 -3
  78. package/dist/runtime/components/roving-focus/roving-focus-item.vue +14 -14
  79. package/dist/runtime/components/select.vue +63 -63
  80. package/dist/runtime/components/switch/switch-group.vue +16 -16
  81. package/dist/runtime/components/table/table.d.ts +30 -30
  82. package/dist/runtime/components/table/ui/table-sortable-header.vue +11 -11
  83. package/dist/runtime/components/tabs/tabs-list.vue +10 -10
  84. package/dist/runtime/components/tabs/tabs-panel.vue +11 -11
  85. package/dist/runtime/components/tabs/tabs-root.vue +8 -8
  86. package/dist/runtime/components/tabs/tabs-tab.vue +22 -22
  87. package/dist/runtime/components/text.vue +67 -67
  88. package/dist/runtime/components/textarea.vue +36 -36
  89. package/dist/runtime/components/title.vue +14 -14
  90. package/dist/runtime/components/transition.vue +3 -3
  91. package/dist/runtime/components/tree/_ui/tree-item.vue +128 -129
  92. package/dist/runtime/components/tree/_ui/tree-root.vue +21 -21
  93. package/dist/runtime/components/visually-hidden/visually-hidden-input.vue +1 -1
  94. package/dist/runtime/components/visually-hidden/visually-hidden.vue +9 -9
  95. package/dist/runtime/styles/dark-theme.css +1 -1
  96. package/package.json +1 -1
@@ -11,15 +11,15 @@ const ctx = useTabsState();
11
11
  </script>
12
12
 
13
13
  <template>
14
- <Box
15
- :is
16
- :id='ctx?.getPanelId(value)'
17
- :mod='[mod, { orientation: ctx?.orientation }]'
18
- :data-active='ctx?.active.value === value'
19
- :class='css.panel'
20
- role='tabpanel'
21
- :aria-labelledby='ctx?.getTabId(value)'
22
- >
23
- <slot />
24
- </Box>
14
+ <Box
15
+ :is
16
+ :id='ctx?.getPanelId(value)'
17
+ :mod='[mod, { orientation: ctx?.orientation }]'
18
+ :data-active='ctx?.active.value === value'
19
+ :class='css.panel'
20
+ role='tabpanel'
21
+ :aria-labelledby='ctx?.getTabId(value)'
22
+ >
23
+ <slot />
24
+ </Box>
25
25
  </template>
@@ -58,17 +58,17 @@ useProvideTabsContext({
58
58
  </script>
59
59
 
60
60
  <template>
61
- <Box
62
- :is
63
- :style
61
+ <Box
62
+ :is
63
+ :style
64
64
  :mod='[mod, {
65
65
  orientation,
66
66
  inverted: orientation === "horizontal" && inverted,
67
67
  placement: orientation === "vertical" && placement,
68
68
  variant
69
- }]'
70
- :class='css.root'
71
- >
72
- <slot />
73
- </Box>
69
+ }]'
70
+ :class='css.root'
71
+ >
72
+ <slot />
73
+ </Box>
74
74
  </template>
@@ -13,32 +13,32 @@ const active = computed(() => value === ctx?.active.value);
13
13
  </script>
14
14
 
15
15
  <template>
16
- <UnstyledButton
17
- :id='ctx?.getTabId(value)'
16
+ <UnstyledButton
17
+ :id='ctx?.getTabId(value)'
18
18
  :mod='[mod, {
19
19
  variant: ctx?.variant,
20
20
  active,
21
21
  orientation: ctx?.orientation,
22
22
  inverted: ctx?.inverted,
23
23
  placement: ctx?.orientation === "vertical" && ctx.placement
24
- }]'
25
- :class='css.tab'
26
- role='tab'
27
- :aria-selected='active'
28
- :tabindex='$attrs?.tabIndex !== void 0 ? $attrs?.tabIndex : active || ctx?.active.value === null ? 0 : -1'
29
- :aria-controls='ctx?.getPanelId(value)'
30
- @click='ctx?.onUpdate(value)'
31
- >
32
- <span v-if='$slots.leftSection || icon' :class='css.tabSection' data-position='left'>
33
- <slot name='leftSection'>
34
- <Icon v-if='icon' :name='icon' />
35
- </slot>
36
- </span>
37
- <span v-if='$slots.default' :class='css.tabLabel'>
38
- <slot />
39
- </span>
40
- <span v-if='$slots.rightSection' :class='css.tabSection' data-position='right'>
41
- <slot name='rightSection' />
42
- </span>
43
- </UnstyledButton>
24
+ }]'
25
+ :class='css.tab'
26
+ role='tab'
27
+ :aria-selected='active'
28
+ :tabindex='$attrs?.tabIndex !== void 0 ? $attrs?.tabIndex : active || ctx?.active.value === null ? 0 : -1'
29
+ :aria-controls='ctx?.getPanelId(value)'
30
+ @click='ctx?.onUpdate(value)'
31
+ >
32
+ <span v-if='$slots.leftSection || icon' :class='css.tabSection' data-position='left'>
33
+ <slot name='leftSection'>
34
+ <Icon v-if='icon' :name='icon' />
35
+ </slot>
36
+ </span>
37
+ <span v-if='$slots.default' :class='css.tabLabel'>
38
+ <slot />
39
+ </span>
40
+ <span v-if='$slots.rightSection' :class='css.tabSection' data-position='right'>
41
+ <slot name='rightSection' />
42
+ </span>
43
+ </UnstyledButton>
44
44
  </template>
@@ -51,74 +51,74 @@ const style = computed(() => useStyleResolver((theme) => ({
51
51
  </script>
52
52
 
53
53
  <template>
54
- <Box :is v-bind='rest' :mod='_mod' :class='$style.root' :style>
55
- <slot />
56
- </Box>
54
+ <Box :is v-bind='rest' :mod='_mod' :class='$style.root' :style>
55
+ <slot />
56
+ </Box>
57
57
  </template>
58
58
 
59
59
  <style module lang="postcss">
60
- .root {
61
- --text-fz: var(--font-size-sm);
62
- --text-lh: var(--line-height-sm);
63
- --text-color: inherit;
64
- --text-fw: normal;
65
- --text-gradient: none;
66
- --text-line-clamp: none;
67
-
68
- margin: 0;
69
- padding: 0;
70
-
71
- font-size: var(--text-fz);
72
- font-weight: var(--text-fw);
73
- line-height: var(--text-lh);
74
- color: var(--text-color);
75
- text-decoration: none;
76
- -webkit-tap-highlight-color: transparent;
77
-
78
- &:where([data-truncate]) {
79
- overflow: hidden;
80
-
81
- text-overflow: ellipsis;
82
- white-space: nowrap;
83
- }
84
-
85
- &:where([data-truncate='start']) {
86
- direction: rtl;
87
-
88
- text-align: right;
89
-
90
- @mixin where-rtl {
91
- direction: ltr;
92
-
93
- text-align: left;
94
- }
95
- }
96
-
97
- &:where([data-variant='gradient']) {
98
- background-image: var(--text-gradient);
99
- -webkit-background-clip: text;
100
- background-clip: text;
101
- -webkit-text-fill-color: transparent;
102
- }
103
-
104
- &:where([data-line-clamp]) {
105
- overflow: hidden;
106
- display: -webkit-box;
107
- -webkit-box-orient: vertical;
108
- -webkit-line-clamp: var(--text-line-clamp);
109
-
110
- text-overflow: ellipsis;
111
- }
112
-
113
- &:where([data-inherit]) {
114
- font-size: inherit;
115
- font-weight: inherit;
116
- line-height: inherit;
117
- color: inherit;
118
- }
119
-
120
- &:where([data-inline]) {
121
- line-height: 1;
122
- }
123
- }
60
+ .root {
61
+ --text-fz: var(--font-size-sm);
62
+ --text-lh: var(--line-height-sm);
63
+ --text-color: inherit;
64
+ --text-fw: normal;
65
+ --text-gradient: none;
66
+ --text-line-clamp: none;
67
+
68
+ margin: 0;
69
+ padding: 0;
70
+
71
+ font-size: var(--text-fz);
72
+ font-weight: var(--text-fw);
73
+ line-height: var(--text-lh);
74
+ color: var(--text-color);
75
+ text-decoration: none;
76
+ -webkit-tap-highlight-color: transparent;
77
+
78
+ &:where([data-truncate]) {
79
+ overflow: hidden;
80
+
81
+ text-overflow: ellipsis;
82
+ white-space: nowrap;
83
+ }
84
+
85
+ &:where([data-truncate='start']) {
86
+ direction: rtl;
87
+
88
+ text-align: right;
89
+
90
+ @mixin where-rtl {
91
+ direction: ltr;
92
+
93
+ text-align: left;
94
+ }
95
+ }
96
+
97
+ &:where([data-variant='gradient']) {
98
+ background-image: var(--text-gradient);
99
+ -webkit-background-clip: text;
100
+ background-clip: text;
101
+ -webkit-text-fill-color: transparent;
102
+ }
103
+
104
+ &:where([data-line-clamp]) {
105
+ overflow: hidden;
106
+ display: -webkit-box;
107
+ -webkit-box-orient: vertical;
108
+ -webkit-line-clamp: var(--text-line-clamp);
109
+
110
+ text-overflow: ellipsis;
111
+ }
112
+
113
+ &:where([data-inherit]) {
114
+ font-size: inherit;
115
+ font-weight: inherit;
116
+ line-height: inherit;
117
+ color: inherit;
118
+ }
119
+
120
+ &:where([data-inline]) {
121
+ line-height: 1;
122
+ }
123
+ }
124
124
  </style>
@@ -33,42 +33,42 @@ defineExpose({
33
33
  </script>
34
34
 
35
35
  <template>
36
- <InputWrapper v-bind='props' :multiline :class='$attrs?.class'>
37
- <InputBase>
38
- <template v-if='!!$slots.leftSection || icon' #leftSection>
39
- <slot name='leftSection'>
40
- <Icon v-if='icon' :name='icon' />
41
- </slot>
42
- </template>
43
-
44
- <template #default='{ id, css }'>
45
- <textarea
46
- v-bind='{ ...$attrs, class: void 0 }'
47
- :id
48
- ref='input'
49
- v-model='model'
50
- :class='[css, $style.textarea]'
51
- :required='props.required'
52
- :disabled='props.required'
53
- :readonly='props.readonly'
54
- />
55
- </template>
56
-
57
- <template v-if='!!$slots.rightSection' #rightSection>
58
- <slot name='rightSection' />
59
- </template>
60
- </InputBase>
61
-
62
- <template v-if='!!$slots.label' #label>
63
- <slot name='label' />
64
- </template>
65
- <template v-if='!!$slots.error' #error>
66
- <slot name='error' />
67
- </template>
68
- <template v-if='!!$slots.description' #description>
69
- <slot name='description' />
70
- </template>
71
- </InputWrapper>
36
+ <InputWrapper v-bind='props' :multiline :class='$attrs?.class'>
37
+ <InputBase>
38
+ <template v-if='!!$slots.leftSection || icon' #leftSection>
39
+ <slot name='leftSection'>
40
+ <Icon v-if='icon' :name='icon' />
41
+ </slot>
42
+ </template>
43
+
44
+ <template #default='{ id, css }'>
45
+ <textarea
46
+ v-bind='{ ...$attrs, class: void 0 }'
47
+ :id
48
+ ref='input'
49
+ v-model='model'
50
+ :class='[css, $style.textarea]'
51
+ :required='props.required'
52
+ :disabled='props.required'
53
+ :readonly='props.readonly'
54
+ />
55
+ </template>
56
+
57
+ <template v-if='!!$slots.rightSection' #rightSection>
58
+ <slot name='rightSection' />
59
+ </template>
60
+ </InputBase>
61
+
62
+ <template v-if='!!$slots.label' #label>
63
+ <slot name='label' />
64
+ </template>
65
+ <template v-if='!!$slots.error' #error>
66
+ <slot name='error' />
67
+ </template>
68
+ <template v-if='!!$slots.description' #description>
69
+ <slot name='description' />
70
+ </template>
71
+ </InputWrapper>
72
72
  </template>
73
73
 
74
74
  <style module>
@@ -26,21 +26,21 @@ const style = computed(() => ({ "--title-text-wrap": textWrap }));
26
26
  </script>
27
27
 
28
28
  <template>
29
- <Text
30
- :is='`h${order}`'
31
- v-bind='rest'
32
- :size='size || `h${order}`'
33
- :class='$style.root'
34
- :style
35
- >
36
- <slot />
37
- </Text>
29
+ <Text
30
+ :is='`h${order}`'
31
+ v-bind='rest'
32
+ :size='size || `h${order}`'
33
+ :class='$style.root'
34
+ :style
35
+ >
36
+ <slot />
37
+ </Text>
38
38
  </template>
39
39
 
40
40
  <style module lang="postcss">
41
- .root {
42
- --title-text-wrap: pretty;
43
-
44
- text-wrap: var(--title-text-wrap);
45
- }
41
+ .root {
42
+ --title-text-wrap: pretty;
43
+
44
+ text-wrap: var(--title-text-wrap);
45
+ }
46
46
  </style>
@@ -17,9 +17,9 @@ const style = computed(() => ({
17
17
  </script>
18
18
 
19
19
  <template>
20
- <Transition :class='$style.root' :style :name @after-leave='() => emit("afterLeave")'>
21
- <slot />
22
- </Transition>
20
+ <Transition :class='$style.root' :style :name @after-leave='() => emit("afterLeave")'>
21
+ <slot />
22
+ </Transition>
23
23
  </template>
24
24
 
25
25
  <style module>
@@ -51,136 +51,135 @@ const { handleClick, handleKeyDown } = useTreeItemHandlers(path, isFolder, expan
51
51
  </script>
52
52
 
53
53
  <template>
54
- <li :class='$style.item' role='presentation'>
55
- <RovingFocusItem>
56
- <Button
57
- :size='ctx.size'
58
- :color='ctx.color'
59
- :variant='ctx.variant'
60
- :disabled
61
- role='treeitem'
62
- :classes='$style'
63
- :aria-level='level'
64
- :aria-selected='selected'
65
- :mod='{ active, selected, "tree-item": path }'
66
- right-section-p-e='all'
67
- @click.prevent='handleClick'
68
- @keydown.prevent='handleKeyDown'
69
- >
70
- <template #leftSection>
71
- <template v-if='pending'>
72
- <Loader :class='$style.icon' />
73
- </template>
74
-
75
- <template v-else-if='isFolder'>
76
- <Icon v-if='expanded' :class='$style.icon' :name='trailingIcon' />
77
- <Icon v-else :class='$style.icon' :name='icon' />
78
- </template>
79
-
80
- <template v-else>
81
- <Icon
82
- :class='$style.icon'
83
- :name='fileIcon'
84
- :style='{ color: color && getThemeColor(color, theme) }'
85
- />
86
- </template>
87
- </template>
88
-
89
- {{ name ?? path }}
90
-
91
- <template v-if='isFolder' #rightSection>
92
- <ActionIcon
93
- icon='gravity-ui:chevron-down'
94
- size='sm'
95
- :color='ctx.color'
96
- :classes='{ root: $style.chevron, icon: $style["chevron-icon"] }'
97
- :mod='{ expanded }'
98
- variant='subtle'
99
- @click.stop='ctx.toggle("expand", path)'
100
- />
101
- </template>
102
- </Button>
103
- </RovingFocusItem>
104
-
105
- <UTransition name='scale-y'>
106
- <ul
107
- v-if='expanded && data && data.length > 0'
108
- :class='$style.list'
109
- role='group'
110
- >
111
- <TreeItem
112
- v-for='child in data'
113
- :key='child.path'
114
- v-bind='child'
115
- :path='child.path'
116
- :level='level + 1'
117
- />
118
- </ul>
119
- </UTransition>
120
- </li>
54
+ <li :class='$style.item' role='presentation'>
55
+ <RovingFocusItem>
56
+ <Button
57
+ :size='ctx.size'
58
+ :color='ctx.color'
59
+ :variant='ctx.variant'
60
+ :disabled
61
+ role='treeitem'
62
+ :classes='$style'
63
+ :aria-level='level'
64
+ :aria-selected='selected'
65
+ :mod='{ active, selected, "tree-item": path }'
66
+ right-section-p-e='all'
67
+ @click.prevent='handleClick'
68
+ @keydown.prevent='handleKeyDown'
69
+ >
70
+ <template #leftSection>
71
+ <template v-if='pending'>
72
+ <Loader :class='$style.icon' />
73
+ </template>
74
+
75
+ <template v-else-if='isFolder'>
76
+ <Icon v-if='expanded' :class='$style.icon' :name='trailingIcon' />
77
+ <Icon v-else :class='$style.icon' :name='icon' />
78
+ </template>
79
+
80
+ <template v-else>
81
+ <Icon
82
+ :class='$style.icon'
83
+ :name='fileIcon'
84
+ :style='{ color: color && getThemeColor(color, theme) }'
85
+ />
86
+ </template>
87
+ </template>
88
+
89
+ {{ name ?? path }}
90
+
91
+ <template v-if='isFolder' #rightSection>
92
+ <ActionIcon
93
+ icon='gravity-ui:chevron-down'
94
+ size='sm'
95
+ :color='ctx.color'
96
+ :classes='{ root: $style.chevron, icon: $style["chevron-icon"] }'
97
+ :mod='{ expanded }'
98
+ variant='subtle'
99
+ @click.stop='ctx.toggle("expand", path)'
100
+ />
101
+ </template>
102
+ </Button>
103
+ </RovingFocusItem>
104
+
105
+ <UTransition name='scale-y'>
106
+ <ul
107
+ v-if='expanded && data && data.length > 0'
108
+ :class='$style.list'
109
+ role='group'
110
+ >
111
+ <TreeItem
112
+ v-for='child in data'
113
+ :key='child.path'
114
+ v-bind='child'
115
+ :path='child.path'
116
+ :level='level + 1'
117
+ />
118
+ </ul>
119
+ </UTransition>
120
+ </li>
121
121
  </template>
122
122
 
123
123
  <style module lang="postcss">
124
- .item {
125
- display: grid;
126
- gap: .25rem;
127
- }
128
-
129
- .icon {
130
- --loader-size: var(--tree-icon-size);
131
-
132
- width: var(--tree-icon-size);
133
- height: var(--tree-icon-size);
134
- }
135
-
136
- .chevron {
137
- color: var(--color-dimmed);
138
-
139
- transition: transform .3s ease-in-out;
140
-
141
- &:hover {
142
- color: var(--color-dimmed);
143
-
144
- background-color: transparent;
145
- }
146
-
147
- &[data-expanded] .chevron-icon {
148
- transform: rotate(-180deg);
149
- }
150
- }
151
-
152
-
153
- .list {
154
- display: grid;
155
- gap: .25rem;
156
-
157
- margin-inline-start: 1rem;
158
-
159
- padding-inline-start: .75rem;
160
- border-left: 1px solid var(--color-gray-4);
161
- }
162
-
163
- .root {
164
- .inner {
165
- display: grid;
166
- grid-template-columns: auto 1fr auto;
167
-
168
- color: var(--color-text);
169
-
170
- .label {
171
- font-weight: 500;
172
- }
173
- }
174
-
175
- &[data-active],
176
- &[data-selected] {
177
- .inner {
178
- color: var(--button-color);
179
- }
180
- }
181
-
182
- &[data-selected] {
183
- background: alpha(var(--button-color), .1);
184
- }
185
- }
124
+ .item {
125
+ display: grid;
126
+ gap: .25rem;
127
+ }
128
+
129
+ .icon {
130
+ --loader-size: var(--tree-icon-size);
131
+
132
+ width: var(--tree-icon-size);
133
+ height: var(--tree-icon-size);
134
+ }
135
+
136
+ .chevron {
137
+ color: var(--color-dimmed);
138
+
139
+ transition: transform .3s ease-in-out;
140
+
141
+ &:hover {
142
+ color: var(--color-dimmed);
143
+
144
+ background-color: transparent;
145
+ }
146
+
147
+ &[data-expanded] .chevron-icon {
148
+ transform: rotate(-180deg);
149
+ }
150
+ }
151
+
152
+ .list {
153
+ display: grid;
154
+ gap: .25rem;
155
+
156
+ margin-inline-start: 1rem;
157
+
158
+ padding-inline-start: .75rem;
159
+ border-left: 1px solid var(--color-gray-4);
160
+ }
161
+
162
+ .root {
163
+ .inner {
164
+ display: grid;
165
+ grid-template-columns: auto 1fr auto;
166
+
167
+ color: var(--color-text);
168
+
169
+ .label {
170
+ font-weight: 500;
171
+ }
172
+ }
173
+
174
+ &[data-active],
175
+ &[data-selected] {
176
+ .inner {
177
+ color: var(--button-color);
178
+ }
179
+ }
180
+
181
+ &[data-selected] {
182
+ background: alpha(var(--button-color), .1);
183
+ }
184
+ }
186
185
  </style>