@opencode-ai/ui 0.0.0-dev-19174 → 0.0.0-dev-202609060432

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 (298) hide show
  1. package/dist/{data-display/accordion → components}/accordion.d.ts +6 -6
  2. package/dist/components/avatar.d.ts +9 -0
  3. package/dist/components/button.d.ts +9 -0
  4. package/dist/components/card.d.ts +1 -1
  5. package/dist/{forms/checkbox → components}/checkbox.d.ts +2 -2
  6. package/dist/components/dialog.d.ts +12 -0
  7. package/dist/{data-display/diff-changes → components}/diff-changes.d.ts +1 -2
  8. package/dist/components/dropdown-menu.d.ts +80 -0
  9. package/dist/components/icon-button.d.ts +10 -0
  10. package/dist/{icons/icon/additional-icons.d.ts → components/icon.d.ts} +8 -8
  11. package/dist/components/keybind.d.ts +6 -0
  12. package/dist/components/list.d.ts +1 -1
  13. package/dist/{feedback/progress-circle → components}/progress-circle.d.ts +0 -2
  14. package/dist/components/radio-group.d.ts +16 -0
  15. package/dist/components/scroll-view.d.ts +3 -3
  16. package/dist/components/select.d.ts +21 -0
  17. package/dist/{forms/switch → components}/switch.d.ts +2 -4
  18. package/dist/{navigation/tabs → components}/tabs.d.ts +8 -15
  19. package/dist/components/tag.d.ts +5 -0
  20. package/dist/{typography/text-shimmer → components}/text-shimmer.d.ts +0 -1
  21. package/dist/components/toast.d.ts +56 -0
  22. package/dist/components/tooltip.d.ts +17 -0
  23. package/dist/context/i18n.d.ts +7 -10
  24. package/dist/context/marked-parser.d.ts +2 -1
  25. package/dist/hooks/use-filtered-list.d.ts +0 -9
  26. package/dist/i18n/ar.d.ts +2 -0
  27. package/dist/i18n/bg.d.ts +2 -0
  28. package/dist/i18n/br.d.ts +2 -0
  29. package/dist/i18n/bs.d.ts +2 -0
  30. package/dist/i18n/da.d.ts +2 -0
  31. package/dist/i18n/de.d.ts +2 -0
  32. package/dist/i18n/en.d.ts +1 -242
  33. package/dist/i18n/es.d.ts +2 -0
  34. package/dist/i18n/fr.d.ts +2 -0
  35. package/dist/i18n/ja.d.ts +2 -0
  36. package/dist/i18n/km.d.ts +2 -0
  37. package/dist/i18n/ko.d.ts +2 -0
  38. package/dist/i18n/lo.d.ts +2 -0
  39. package/dist/i18n/mk.d.ts +2 -0
  40. package/dist/i18n/mn.d.ts +2 -0
  41. package/dist/i18n/my.d.ts +2 -0
  42. package/dist/i18n/pl.d.ts +2 -0
  43. package/dist/i18n/ru.d.ts +2 -0
  44. package/dist/i18n/sr.d.ts +2 -0
  45. package/dist/i18n/tg.d.ts +2 -0
  46. package/dist/i18n/th.d.ts +2 -0
  47. package/dist/i18n/tr.d.ts +2 -0
  48. package/dist/i18n/zh.d.ts +2 -0
  49. package/dist/i18n/zht.d.ts +2 -0
  50. package/dist/v2/components/accordion-v2.d.ts +26 -0
  51. package/dist/{data-display/avatar/avatar.d.ts → v2/components/avatar-v2.d.ts} +1 -1
  52. package/dist/v2/components/badge-v2.d.ts +6 -0
  53. package/dist/v2/components/button-v2.d.ts +10 -0
  54. package/dist/v2/components/checkbox-v2.d.ts +10 -0
  55. package/dist/{overlays/dialog/dialog.d.ts → v2/components/dialog-v2.d.ts} +2 -1
  56. package/dist/v2/components/diff-changes-v2.d.ts +11 -0
  57. package/dist/v2/components/divider-v2.d.ts +5 -0
  58. package/dist/{forms/field/field.d.ts → v2/components/field-v2.d.ts} +10 -4
  59. package/dist/v2/components/icon-button-v2.d.ts +11 -0
  60. package/dist/{icons/icon → v2/components}/icon.d.ts +1 -44
  61. package/dist/v2/components/inline-input-v2.d.ts +21 -0
  62. package/dist/v2/components/keybind-v2.d.ts +7 -0
  63. package/dist/{data-display/line-comment/line-comment.d.ts → v2/components/line-comment-v2.d.ts} +9 -9
  64. package/dist/v2/components/loader-v2.d.ts +3 -0
  65. package/dist/v2/components/menu-v2.d.ts +52 -0
  66. package/dist/v2/components/progress-circle-v2.d.ts +8 -0
  67. package/dist/{data-display/project-avatar/project-avatar.d.ts → v2/components/project-avatar-v2.d.ts} +1 -1
  68. package/dist/v2/components/radio-v2.d.ts +16 -0
  69. package/dist/{navigation/segmented-control/segmented-control.d.ts → v2/components/segmented-control-v2.d.ts} +5 -5
  70. package/dist/{forms/select/select.d.ts → v2/components/select-v2.d.ts} +6 -4
  71. package/dist/v2/components/split-button-v2.d.ts +5 -0
  72. package/dist/v2/components/switch-v2.d.ts +7 -0
  73. package/dist/v2/components/tabs-v2.d.ts +34 -0
  74. package/dist/{forms/text-input/text-input.d.ts → v2/components/text-input-v2.d.ts} +3 -3
  75. package/dist/v2/components/text-shimmer-v2.d.ts +9 -0
  76. package/dist/v2/components/textarea-v2.d.ts +7 -0
  77. package/dist/v2/components/toast-v2.d.ts +57 -0
  78. package/dist/v2/components/tooltip-v2.d.ts +13 -0
  79. package/dist/v2/components/wordmark-v2.d.ts +2 -0
  80. package/package.json +35 -141
  81. package/src/{data-display/accordion → components}/accordion.css +33 -7
  82. package/src/{data-display/accordion → components}/accordion.tsx +14 -14
  83. package/src/components/animated-number.css +11 -29
  84. package/src/components/animated-number.tsx +2 -2
  85. package/src/components/avatar.css +49 -0
  86. package/src/components/avatar.tsx +55 -0
  87. package/src/components/button.css +194 -0
  88. package/src/{actions/button → components}/button.tsx +11 -19
  89. package/src/components/card.css +23 -2
  90. package/src/components/card.tsx +4 -4
  91. package/src/{forms/checkbox → components}/checkbox.css +7 -1
  92. package/src/{forms/checkbox → components}/checkbox.tsx +13 -13
  93. package/src/components/collapsible.tsx +2 -2
  94. package/src/components/dialog.css +181 -0
  95. package/src/components/dialog.tsx +72 -0
  96. package/src/{data-display/diff-changes → components}/diff-changes.css +19 -22
  97. package/src/components/diff-changes.tsx +115 -0
  98. package/src/components/dock-surface.css +9 -2
  99. package/src/components/dropdown-menu.css +135 -0
  100. package/src/components/dropdown-menu.tsx +308 -0
  101. package/src/components/icon-button.css +181 -0
  102. package/src/components/icon-button.tsx +29 -0
  103. package/src/components/icon.css +39 -0
  104. package/src/{icons/icon/additional-icons.ts → components/icon.tsx} +74 -8
  105. package/src/components/image-preview.tsx +2 -3
  106. package/src/components/keybind.css +18 -0
  107. package/src/components/keybind.tsx +20 -0
  108. package/src/components/list.css +5 -5
  109. package/src/components/list.tsx +5 -7
  110. package/src/components/popover.tsx +2 -3
  111. package/src/components/progress-circle.css +16 -0
  112. package/src/components/progress-circle.tsx +64 -0
  113. package/src/components/radio-group.css +187 -0
  114. package/src/components/radio-group.tsx +83 -0
  115. package/src/components/scroll-view.tsx +20 -5
  116. package/src/components/select.css +201 -0
  117. package/src/components/select.tsx +174 -0
  118. package/src/components/sticky-accordion-header.tsx +1 -1
  119. package/src/components/switch.css +136 -0
  120. package/src/components/switch.tsx +29 -0
  121. package/src/{navigation/tabs → components}/tabs.css +232 -53
  122. package/src/components/tabs.tsx +126 -0
  123. package/src/components/tag.css +37 -0
  124. package/src/components/tag.tsx +22 -0
  125. package/src/components/text-field.tsx +4 -12
  126. package/src/{typography/text-shimmer → components}/text-shimmer.css +1 -2
  127. package/src/{typography/text-shimmer → components}/text-shimmer.tsx +0 -1
  128. package/src/components/toast.css +236 -0
  129. package/src/components/toast.tsx +185 -0
  130. package/src/components/tooltip.css +74 -0
  131. package/src/components/tooltip.tsx +163 -0
  132. package/src/context/dialog.tsx +0 -1
  133. package/src/context/i18n.tsx +14 -17
  134. package/src/context/marked-parser.tsx +13 -3
  135. package/src/hooks/create-auto-scroll.tsx +0 -20
  136. package/src/i18n/am.ts +9 -7
  137. package/src/i18n/ar.ts +9 -7
  138. package/src/i18n/az.ts +9 -7
  139. package/src/i18n/bg.ts +9 -7
  140. package/src/i18n/bn.ts +9 -7
  141. package/src/i18n/br.ts +9 -7
  142. package/src/i18n/bs.ts +9 -7
  143. package/src/i18n/ca.ts +9 -7
  144. package/src/i18n/cs.ts +9 -7
  145. package/src/i18n/da.ts +9 -7
  146. package/src/i18n/de.ts +3 -1
  147. package/src/i18n/dv.ts +9 -7
  148. package/src/i18n/dz.ts +7 -5
  149. package/src/i18n/el.ts +9 -7
  150. package/src/i18n/en.ts +12 -59
  151. package/src/i18n/es.ts +8 -6
  152. package/src/i18n/et.ts +9 -7
  153. package/src/i18n/fa.ts +9 -7
  154. package/src/i18n/fi.ts +9 -7
  155. package/src/i18n/fo.ts +9 -7
  156. package/src/i18n/fr.ts +8 -6
  157. package/src/i18n/hi.ts +9 -7
  158. package/src/i18n/hr.ts +9 -7
  159. package/src/i18n/hu.ts +9 -7
  160. package/src/i18n/hy.ts +9 -7
  161. package/src/i18n/id.ts +9 -7
  162. package/src/i18n/is.ts +9 -7
  163. package/src/i18n/it.ts +9 -7
  164. package/src/i18n/ja.ts +9 -7
  165. package/src/i18n/ka.ts +9 -7
  166. package/src/i18n/km.ts +9 -7
  167. package/src/i18n/ko.ts +9 -7
  168. package/src/i18n/lo.ts +9 -7
  169. package/src/i18n/lt.ts +9 -7
  170. package/src/i18n/lv.ts +9 -7
  171. package/src/i18n/mk.ts +9 -7
  172. package/src/i18n/mn.ts +9 -7
  173. package/src/i18n/ms.ts +9 -7
  174. package/src/i18n/my.ts +9 -7
  175. package/src/i18n/ne.ts +9 -7
  176. package/src/i18n/nl.ts +9 -7
  177. package/src/i18n/no.ts +9 -7
  178. package/src/i18n/pa.ts +9 -7
  179. package/src/i18n/pl.ts +9 -7
  180. package/src/i18n/ro.ts +9 -7
  181. package/src/i18n/ru.ts +9 -7
  182. package/src/i18n/si.ts +9 -7
  183. package/src/i18n/sk.ts +9 -7
  184. package/src/i18n/sl.ts +9 -7
  185. package/src/i18n/sq.ts +9 -7
  186. package/src/i18n/sr.ts +9 -7
  187. package/src/i18n/sv.ts +9 -7
  188. package/src/i18n/tg.ts +9 -7
  189. package/src/i18n/th.ts +9 -7
  190. package/src/i18n/tk.ts +9 -7
  191. package/src/i18n/tr.ts +9 -7
  192. package/src/i18n/uk.ts +9 -7
  193. package/src/i18n/ur.ts +9 -7
  194. package/src/i18n/uz.ts +9 -7
  195. package/src/i18n/vi.ts +9 -7
  196. package/src/i18n/zh.ts +9 -7
  197. package/src/i18n/zht.ts +9 -7
  198. package/src/styles/base.css +0 -5
  199. package/src/styles/index.css +20 -4
  200. package/src/styles/tailwind/colors.css +0 -2
  201. package/src/styles/tailwind/index.css +1 -18
  202. package/src/styles/theme.css +2 -2
  203. package/src/theme/context.tsx +11 -19
  204. package/src/theme/themes/oc-2.json +19 -50
  205. package/src/theme/v2/default-primitives.ts +8 -8
  206. package/src/theme/v2/foreground.ts +0 -1
  207. package/src/theme/v2/mapping.ts +1 -7
  208. package/src/v2/components/accordion-v2.css +139 -0
  209. package/src/v2/components/accordion-v2.tsx +86 -0
  210. package/src/{data-display/avatar/avatar.tsx → v2/components/avatar-v2.tsx} +1 -1
  211. package/src/{data-display/badge/badge.css → v2/components/badge-v2.css} +0 -19
  212. package/src/{data-display/badge/badge.tsx → v2/components/badge-v2.tsx} +4 -6
  213. package/src/{actions/button/button.css → v2/components/button-v2.css} +0 -29
  214. package/src/v2/components/button-v2.tsx +35 -0
  215. package/src/v2/components/checkbox-v2.css +184 -0
  216. package/src/v2/components/checkbox-v2.tsx +65 -0
  217. package/src/{overlays/dialog/dialog.css → v2/components/dialog-v2.css} +0 -3
  218. package/src/{overlays/dialog/dialog.tsx → v2/components/dialog-v2.tsx} +13 -11
  219. package/src/v2/components/diff-changes-v2.css +26 -0
  220. package/src/{data-display/diff-changes/diff-changes.tsx → v2/components/diff-changes-v2.tsx} +2 -7
  221. package/src/{layout/divider/divider.tsx → v2/components/divider-v2.tsx} +3 -3
  222. package/src/{forms/field/field.css → v2/components/field-v2.css} +1 -1
  223. package/src/{forms/field/field.tsx → v2/components/field-v2.tsx} +11 -9
  224. package/src/{actions/icon-button/icon-button.css → v2/components/icon-button-v2.css} +9 -27
  225. package/src/v2/components/icon-button-v2.tsx +37 -0
  226. package/src/{icons/icon → v2/components}/icon.tsx +12 -80
  227. package/src/v2/components/inline-input-v2.css +225 -0
  228. package/src/v2/components/inline-input-v2.tsx +107 -0
  229. package/src/{data-display/keybind/keybind.css → v2/components/keybind-v2.css} +1 -1
  230. package/src/{data-display/keybind/keybind.tsx → v2/components/keybind-v2.tsx} +3 -3
  231. package/src/{data-display/line-comment/line-comment.css → v2/components/line-comment-v2.css} +4 -4
  232. package/src/{data-display/line-comment/line-comment.tsx → v2/components/line-comment-v2.tsx} +15 -17
  233. package/src/{feedback/loader/loader.tsx → v2/components/loader-v2.tsx} +2 -2
  234. package/src/{navigation/menu/menu.css → v2/components/menu-v2.css} +2 -124
  235. package/src/{navigation/menu/menu.tsx → v2/components/menu-v2.tsx} +32 -96
  236. package/src/v2/components/progress-circle-v2.css +13 -0
  237. package/src/v2/components/progress-circle-v2.tsx +52 -0
  238. package/src/{data-display/project-avatar/project-avatar.tsx → v2/components/project-avatar-v2.tsx} +1 -1
  239. package/src/{forms/radio/radio.tsx → v2/components/radio-v2.tsx} +20 -30
  240. package/src/{navigation/segmented-control/segmented-control.css → v2/components/segmented-control-v2.css} +1 -1
  241. package/src/{navigation/segmented-control/segmented-control.tsx → v2/components/segmented-control-v2.tsx} +8 -9
  242. package/src/{forms/select/select.css → v2/components/select-v2.css} +8 -2
  243. package/src/{forms/select/select.tsx → v2/components/select-v2.tsx} +32 -40
  244. package/src/{actions/split-button/split-button.css → v2/components/split-button-v2.css} +6 -2
  245. package/src/{actions/split-button/split-button.tsx → v2/components/split-button-v2.tsx} +4 -4
  246. package/src/{forms/switch/switch.css → v2/components/switch-v2.css} +0 -110
  247. package/src/v2/components/switch-v2.tsx +28 -0
  248. package/src/{navigation/tabs/tabs-current.css → v2/components/tabs-v2.css} +10 -25
  249. package/src/v2/components/tabs-v2.tsx +149 -0
  250. package/src/{forms/text-input/text-input.css → v2/components/text-input-v2.css} +3 -3
  251. package/src/{forms/text-input/text-input.tsx → v2/components/text-input-v2.tsx} +4 -4
  252. package/src/v2/components/text-shimmer-v2.css +125 -0
  253. package/src/v2/components/text-shimmer-v2.tsx +63 -0
  254. package/src/{forms/textarea/textarea.tsx → v2/components/textarea-v2.tsx} +3 -3
  255. package/src/{feedback/toast/toast.tsx → v2/components/toast-v2.tsx} +58 -60
  256. package/src/{overlays/tooltip/tooltip.css → v2/components/tooltip-v2.css} +0 -26
  257. package/src/{overlays/tooltip/tooltip.tsx → v2/components/tooltip-v2.tsx} +17 -24
  258. package/src/v2/components/wordmark-v2.tsx +71 -0
  259. package/src/{styles/tokens → v2/styles}/colors.css +8 -8
  260. package/src/{styles/tokens → v2/styles}/theme.css +16 -23
  261. package/dist/actions/button/button.d.ts +0 -10
  262. package/dist/actions/icon-button/icon-button.d.ts +0 -11
  263. package/dist/actions/split-button/split-button.d.ts +0 -5
  264. package/dist/context/marked-base.d.ts +0 -3
  265. package/dist/data-display/badge/badge.d.ts +0 -7
  266. package/dist/data-display/keybind/keybind.d.ts +0 -7
  267. package/dist/feedback/loader/loader.d.ts +0 -3
  268. package/dist/feedback/toast/toast.d.ts +0 -57
  269. package/dist/forms/radio/radio.d.ts +0 -16
  270. package/dist/forms/textarea/textarea.d.ts +0 -7
  271. package/dist/i18n/he.d.ts +0 -197
  272. package/dist/layout/divider/divider.d.ts +0 -5
  273. package/dist/navigation/menu/menu.d.ts +0 -59
  274. package/dist/overlays/tooltip/tooltip.d.ts +0 -15
  275. package/dist/typography/wordmark/wordmark.d.ts +0 -5
  276. package/src/actions/icon-button/icon-button.tsx +0 -32
  277. package/src/context/marked-base.tsx +0 -27
  278. package/src/feedback/progress-circle/progress-circle.css +0 -28
  279. package/src/feedback/progress-circle/progress-circle.tsx +0 -64
  280. package/src/forms/switch/switch.tsx +0 -34
  281. package/src/i18n/he.ts +0 -199
  282. package/src/icons/icon/icon.css +0 -3
  283. package/src/navigation/tabs/tabs.tsx +0 -194
  284. package/src/typography/wordmark/wordmark.tsx +0 -39
  285. /package/dist/{forms/inline-input → components}/inline-input.d.ts +0 -0
  286. /package/dist/{navigation → v2/components}/tab-state-indicator.d.ts +0 -0
  287. /package/src/{forms/inline-input → components}/inline-input.css +0 -0
  288. /package/src/{forms/inline-input → components}/inline-input.tsx +0 -0
  289. /package/src/{data-display/avatar/avatar.css → v2/components/avatar-v2.css} +0 -0
  290. /package/src/{layout/divider/divider.css → v2/components/divider-v2.css} +0 -0
  291. /package/src/{styles/file-tree.css → v2/components/file-tree-v2.css} +0 -0
  292. /package/src/{feedback/loader/loader.css → v2/components/loader-v2.css} +0 -0
  293. /package/src/{data-display/project-avatar/project-avatar.css → v2/components/project-avatar-v2.css} +0 -0
  294. /package/src/{forms/radio/radio.css → v2/components/radio-v2.css} +0 -0
  295. /package/src/{navigation → v2/components}/tab-state-indicator.tsx +0 -0
  296. /package/src/{forms/textarea/textarea.css → v2/components/textarea-v2.css} +0 -0
  297. /package/src/{feedback/toast/toast.css → v2/components/toast-v2.css} +0 -0
  298. /package/src/{styles/tokens/index.css → v2/styles/tailwind.css} +0 -0
@@ -1,28 +1,18 @@
1
- import {
2
- Description,
3
- ErrorMessage,
4
- Item,
5
- ItemControl,
6
- ItemIndicator,
7
- ItemInput,
8
- ItemLabel,
9
- Label,
10
- Root,
11
- } from "@kobalte/core/radio-group"
1
+ import { RadioGroup as Kobalte } from "@kobalte/core/radio-group"
12
2
  import { Show, splitProps, type JSX } from "solid-js"
13
3
  import type { ComponentProps, ParentProps } from "solid-js"
14
- import "./radio.css"
4
+ import "./radio-v2.css"
15
5
 
16
- export interface RadioGroupProps extends ParentProps<ComponentProps<typeof Root>> {
6
+ export interface RadioGroupV2Props extends ParentProps<ComponentProps<typeof Kobalte>> {
17
7
  label?: JSX.Element
18
8
  description?: JSX.Element
19
9
  hideLabel?: boolean
20
10
  }
21
11
 
22
- export function RadioGroup(props: RadioGroupProps) {
12
+ export function RadioGroupV2(props: RadioGroupV2Props) {
23
13
  const [local, others] = splitProps(props, ["class", "classList", "children", "label", "description", "hideLabel"])
24
14
  return (
25
- <Root
15
+ <Kobalte
26
16
  {...others}
27
17
  data-component="radio-v2"
28
18
  classList={{
@@ -32,30 +22,30 @@ export function RadioGroup(props: RadioGroupProps) {
32
22
  >
33
23
  <Show when={local.label}>
34
24
  {(label) => (
35
- <Label data-slot="radio-v2-label" classList={{ "sr-only": local.hideLabel }}>
25
+ <Kobalte.Label data-slot="radio-v2-label" classList={{ "sr-only": local.hideLabel }}>
36
26
  {label()}
37
- </Label>
27
+ </Kobalte.Label>
38
28
  )}
39
29
  </Show>
40
30
  <Show when={local.description}>
41
- {(description) => <Description data-slot="radio-v2-description">{description()}</Description>}
31
+ {(description) => <Kobalte.Description data-slot="radio-v2-description">{description()}</Kobalte.Description>}
42
32
  </Show>
43
33
  <div data-slot="radio-v2-items">{local.children}</div>
44
- <ErrorMessage data-slot="radio-v2-error" />
45
- </Root>
34
+ <Kobalte.ErrorMessage data-slot="radio-v2-error" />
35
+ </Kobalte>
46
36
  )
47
37
  }
48
38
 
49
- export interface RadioItemProps extends ComponentProps<typeof Item> {
39
+ export interface RadioItemV2Props extends ComponentProps<typeof Kobalte.Item> {
50
40
  label: JSX.Element
51
41
  description?: JSX.Element
52
42
  hideLabel?: boolean
53
43
  }
54
44
 
55
- export function RadioItem(props: RadioItemProps) {
45
+ export function RadioItemV2(props: RadioItemV2Props) {
56
46
  const [local, others] = splitProps(props, ["class", "classList", "label", "description", "hideLabel"])
57
47
  return (
58
- <Item
48
+ <Kobalte.Item
59
49
  {...others}
60
50
  data-slot="radio-v2-item"
61
51
  classList={{
@@ -63,20 +53,20 @@ export function RadioItem(props: RadioItemProps) {
63
53
  [local.class ?? ""]: !!local.class,
64
54
  }}
65
55
  >
66
- <ItemInput data-slot="radio-v2-item-input" />
56
+ <Kobalte.ItemInput data-slot="radio-v2-item-input" />
67
57
  <div data-slot="radio-v2-item-control-stack">
68
- <ItemControl data-slot="radio-v2-item-control">
69
- <ItemIndicator data-slot="radio-v2-item-indicator" />
70
- </ItemControl>
58
+ <Kobalte.ItemControl data-slot="radio-v2-item-control">
59
+ <Kobalte.ItemIndicator data-slot="radio-v2-item-indicator" />
60
+ </Kobalte.ItemControl>
71
61
  </div>
72
- <ItemLabel data-slot="radio-v2-item-label" classList={{ "sr-only": local.hideLabel }}>
62
+ <Kobalte.ItemLabel data-slot="radio-v2-item-label" classList={{ "sr-only": local.hideLabel }}>
73
63
  <div data-slot="radio-v2-item-text">
74
64
  <span data-slot="radio-v2-item-label-text">{local.label}</span>
75
65
  <Show when={local.description}>
76
66
  {(description) => <span data-slot="radio-v2-item-description">{description()}</span>}
77
67
  </Show>
78
68
  </div>
79
- </ItemLabel>
80
- </Item>
69
+ </Kobalte.ItemLabel>
70
+ </Kobalte.Item>
81
71
  )
82
72
  }
@@ -37,7 +37,7 @@
37
37
  font-style: normal;
38
38
  font-weight: 440;
39
39
  font-size: 13px;
40
- line-height: var(--line-height-compact);
40
+ line-height: 100%;
41
41
  letter-spacing: -0.04px;
42
42
  font-variant-numeric: tabular-nums;
43
43
  font-variation-settings: "slnt" 0;
@@ -10,7 +10,7 @@ import {
10
10
  type ParentProps,
11
11
  } from "solid-js"
12
12
  import type { ComponentProps } from "solid-js"
13
- import "./segmented-control.css"
13
+ import "./segmented-control-v2.css"
14
14
 
15
15
  type OnChange = (value: string | null) => void
16
16
 
@@ -26,11 +26,11 @@ const SegmentedControlContext = createContext<SegmentedControlContextValue>()
26
26
 
27
27
  function useSegmentedControlContext() {
28
28
  const ctx = useContext(SegmentedControlContext)
29
- if (!ctx) throw new Error("SegmentedControlItem must be used inside SegmentedControl")
29
+ if (!ctx) throw new Error("SegmentedControlItemV2 must be used inside SegmentedControlV2")
30
30
  return ctx
31
31
  }
32
32
 
33
- export type SegmentedControlProps = Omit<ComponentProps<"div">, "onChange"> &
33
+ export type SegmentedControlV2Props = Omit<ComponentProps<"div">, "onChange"> &
34
34
  ParentProps<{
35
35
  /** Selected value when controlled (including `null` when empty). Omit key for uncontrolled. */
36
36
  value?: string | null
@@ -42,7 +42,7 @@ export type SegmentedControlProps = Omit<ComponentProps<"div">, "onChange"> &
42
42
  disabled?: boolean
43
43
  }>
44
44
 
45
- export function SegmentedControl(props: SegmentedControlProps) {
45
+ export function SegmentedControlV2(props: SegmentedControlV2Props) {
46
46
  const isControlled = createMemo(() => Object.hasOwn(props as object, "value"))
47
47
  const merged = mergeProps({ allowDeselect: false, disabled: false }, props)
48
48
  const [local, rest] = splitProps(merged, [
@@ -119,7 +119,7 @@ export function SegmentedControl(props: SegmentedControlProps) {
119
119
  )
120
120
  }
121
121
 
122
- export type SegmentedControlItemProps = Omit<ComponentProps<"button">, "type" | "children"> &
122
+ export type SegmentedControlItemV2Props = Omit<ComponentProps<"button">, "type" | "children"> &
123
123
  ParentProps<{
124
124
  value: string
125
125
  children: JSX.Element
@@ -132,7 +132,7 @@ function invokeButtonHandler<E extends Event>(
132
132
  if (typeof handler === "function") (handler as (ev: typeof e) => void)(e)
133
133
  }
134
134
 
135
- export function SegmentedControlItem(props: SegmentedControlItemProps) {
135
+ export function SegmentedControlItemV2(props: SegmentedControlItemV2Props) {
136
136
  const merged = mergeProps({ disabled: false }, props)
137
137
  const [local, rest] = splitProps(merged, [
138
138
  "class",
@@ -159,14 +159,13 @@ export function SegmentedControlItem(props: SegmentedControlItemProps) {
159
159
  invokeButtonHandler(local.onKeyDown, e)
160
160
  if (e.defaultPrevented || disabled()) return
161
161
  const t = e.currentTarget
162
- const horizontal = t.closest(`[data-slot="segmented-control-v2"]`)?.matches(":dir(rtl)") ? -1 : 1
163
162
 
164
163
  if (e.key === "ArrowRight") {
165
164
  e.preventDefault()
166
- ctx.focusNext(t, horizontal)
165
+ ctx.focusNext(t, 1)
167
166
  } else if (e.key === "ArrowLeft") {
168
167
  e.preventDefault()
169
- ctx.focusNext(t, -horizontal as 1 | -1)
168
+ ctx.focusNext(t, -1)
170
169
  }
171
170
 
172
171
  // accessibility stuff
@@ -1,4 +1,4 @@
1
- @import "../../navigation/menu/menu.css";
1
+ @import "./menu-v2.css";
2
2
 
3
3
  /* Above modal dialogs (z-index 50); matches legacy select-content. */
4
4
  [data-popper-positioner]:has([data-slot="select-v2-content"]) {
@@ -46,7 +46,7 @@
46
46
  }
47
47
  }
48
48
 
49
- /* Shared trigger structure for the inline control. */
49
+ /* Trigger shell aligned with text-input-v2 */
50
50
  [data-component="select-v2"] {
51
51
  box-sizing: border-box;
52
52
  display: flex;
@@ -73,6 +73,12 @@
73
73
  box-shadow 85ms ease-out;
74
74
  }
75
75
 
76
+ [data-component="select-v2"][data-appearance="large"] {
77
+ height: 32px;
78
+ padding-block: 0;
79
+ padding-inline: 0 8px;
80
+ }
81
+
76
82
  [data-component="select-v2"]:where(:hover):not([data-disabled], [data-invalid]):not(:focus-within):not(
77
83
  [data-expanded]
78
84
  ) {
@@ -1,17 +1,6 @@
1
- import {
2
- Content,
3
- Item,
4
- ItemIndicator,
5
- ItemLabel,
6
- Listbox,
7
- Portal,
8
- Root,
9
- Section,
10
- Trigger,
11
- Value,
12
- } from "@kobalte/core/select"
1
+ import { Select as Kobalte } from "@kobalte/core/select"
13
2
  import { Show, createMemo, onCleanup, splitProps, type ComponentProps, type JSX } from "solid-js"
14
- import "./select.css"
3
+ import "./select-v2.css"
15
4
 
16
5
  function groupOptions<T>(options: T[], groupBy?: (x: T) => string): { category: string; options: T[] }[] {
17
6
  if (!groupBy) {
@@ -51,8 +40,8 @@ const CheckSmall = () => (
51
40
  </svg>
52
41
  )
53
42
 
54
- export type SelectProps<T> = Omit<
55
- ComponentProps<typeof Root<T, { category: string; options: T[] }>>,
43
+ export type SelectV2Props<T> = Omit<
44
+ ComponentProps<typeof Kobalte<T, { category: string; options: T[] }>>,
56
45
  "value" | "onSelect" | "children" | "options" | "itemComponent" | "sectionComponent" | "defaultValue" | "multiple"
57
46
  > & {
58
47
  placeholder?: string
@@ -64,13 +53,15 @@ export type SelectProps<T> = Omit<
64
53
  groupBy?: (x: T) => string
65
54
  onSelect?: (value: T | null) => void
66
55
  onHighlight?: (value: T | undefined) => void | (() => void)
56
+ /** `base` / `large` match text-input-v2; `inline` is a compact settings-row trigger. */
57
+ appearance?: "base" | "large" | "inline"
67
58
  invalid?: boolean
68
59
  numeric?: boolean
69
60
  children?: (item: T) => JSX.Element
70
61
  valueClass?: string
71
62
  }
72
63
 
73
- export function Select<T>(props: SelectProps<T>) {
64
+ export function SelectV2<T>(props: SelectV2Props<T>) {
74
65
  const [local, others] = splitProps(props, [
75
66
  "class",
76
67
  "classList",
@@ -84,6 +75,7 @@ export function Select<T>(props: SelectProps<T>) {
84
75
  "onHighlight",
85
76
  "onOpenChange",
86
77
  "children",
78
+ "appearance",
87
79
  "invalid",
88
80
  "numeric",
89
81
  "disabled",
@@ -96,6 +88,8 @@ export function Select<T>(props: SelectProps<T>) {
96
88
  "fitViewport",
97
89
  ])
98
90
 
91
+ const inline = () => (local.appearance ?? "base") === "inline"
92
+
99
93
  const state: { key?: string; cleanup?: void | (() => void) } = {}
100
94
 
101
95
  const stop = () => {
@@ -124,15 +118,15 @@ export function Select<T>(props: SelectProps<T>) {
124
118
  const grouped = createMemo(() => groupOptions(local.options, local.groupBy))
125
119
 
126
120
  return (
127
- <Root<T, { category: string; options: T[] }>
121
+ <Kobalte<T, { category: string; options: T[] }>
128
122
  {...others}
129
123
  multiple={false}
130
124
  allowDuplicateSelectionEvents={false}
131
125
  disabled={local.disabled}
132
126
  data-component="select-v2-root"
133
- placement={local.placement ?? "bottom-end"}
127
+ placement={local.placement ?? (inline() ? "bottom-end" : "bottom-start")}
134
128
  gutter={local.gutter ?? 4}
135
- sameWidth={local.sameWidth ?? false}
129
+ sameWidth={local.sameWidth ?? !inline()}
136
130
  flip={local.flip ?? true}
137
131
  slide={local.slide ?? true}
138
132
  fitViewport={local.fitViewport ?? false}
@@ -143,31 +137,31 @@ export function Select<T>(props: SelectProps<T>) {
143
137
  optionGroupChildren="options"
144
138
  placeholder={local.placeholder}
145
139
  sectionComponent={(sectionProps) => (
146
- <Section>
140
+ <Kobalte.Section>
147
141
  <Show when={sectionProps.section.rawValue.category}>
148
142
  <div data-slot="menu-v2-group-label">{sectionProps.section.rawValue.category}</div>
149
143
  </Show>
150
- </Section>
144
+ </Kobalte.Section>
151
145
  )}
152
146
  itemComponent={(itemProps) => (
153
- <Item
147
+ <Kobalte.Item
154
148
  {...itemProps}
155
149
  data-component="menu-v2-item"
156
150
  onPointerEnter={() => move(itemProps.item.rawValue)}
157
151
  onPointerMove={() => move(itemProps.item.rawValue)}
158
152
  onFocus={() => move(itemProps.item.rawValue)}
159
153
  >
160
- <ItemLabel data-slot="menu-v2-item-content" as="span">
154
+ <Kobalte.ItemLabel data-slot="menu-v2-item-content" as="span">
161
155
  {local.children
162
156
  ? local.children(itemProps.item.rawValue)
163
157
  : local.label
164
158
  ? local.label(itemProps.item.rawValue)
165
159
  : String(itemProps.item.rawValue as string)}
166
- </ItemLabel>
167
- <ItemIndicator data-slot="menu-v2-item-indicator" forceMount>
160
+ </Kobalte.ItemLabel>
161
+ <Kobalte.ItemIndicator data-slot="menu-v2-item-indicator" forceMount>
168
162
  <CheckSmall />
169
- </ItemIndicator>
170
- </Item>
163
+ </Kobalte.ItemIndicator>
164
+ </Kobalte.Item>
171
165
  )}
172
166
  onChange={(next) => {
173
167
  const v = next == null ? null : Array.isArray(next) ? ((next[0] as T) ?? null) : (next as T)
@@ -179,12 +173,10 @@ export function Select<T>(props: SelectProps<T>) {
179
173
  if (!open) stop()
180
174
  }}
181
175
  >
182
- <Trigger
176
+ <Kobalte.Trigger
183
177
  as="div"
184
- aria-label={props["aria-label"]}
185
- aria-labelledby={props["aria-labelledby"]}
186
178
  data-component="select-v2"
187
- data-appearance="inline"
179
+ data-appearance={local.appearance ?? "base"}
188
180
  data-invalid={local.invalid ? "" : undefined}
189
181
  data-numeric={local.numeric ? "" : undefined}
190
182
  disabled={local.disabled}
@@ -195,23 +187,23 @@ export function Select<T>(props: SelectProps<T>) {
195
187
  }}
196
188
  >
197
189
  <div data-slot="select-v2-value">
198
- <Value<T> data-slot="select-v2-value-text" class={local.valueClass}>
190
+ <Kobalte.Value<T> data-slot="select-v2-value-text" class={local.valueClass}>
199
191
  {(st) => {
200
192
  const selected = st.selectedOption()
201
193
  if (local.label && selected != null) return local.label(selected)
202
194
  return selected != null ? (selected as string) : ""
203
195
  }}
204
- </Value>
196
+ </Kobalte.Value>
205
197
  </div>
206
198
  <span data-slot="select-v2-chevron" aria-hidden="true">
207
199
  <ChevronDown />
208
200
  </span>
209
- </Trigger>
210
- <Portal>
211
- <Content data-component="menu-v2-content" data-slot="select-v2-content">
212
- <Listbox data-slot="select-v2-listbox" />
213
- </Content>
214
- </Portal>
215
- </Root>
201
+ </Kobalte.Trigger>
202
+ <Kobalte.Portal>
203
+ <Kobalte.Content data-component="menu-v2-content" data-slot="select-v2-content">
204
+ <Kobalte.Listbox data-slot="select-v2-listbox" />
205
+ </Kobalte.Content>
206
+ </Kobalte.Portal>
207
+ </Kobalte>
216
208
  )
217
209
  }
@@ -9,7 +9,6 @@
9
9
  overflow: hidden;
10
10
  }
11
11
 
12
- [data-component="split-button-v2"].session-review-v2-open-in-app,
13
12
  [data-component="split-button-v2"]:is(:hover, :has([data-component="split-button-v2-menu-trigger"][data-expanded])) {
14
13
  box-shadow: inset 0 0 0 1px var(--v2-border-border-muted);
15
14
  }
@@ -88,8 +87,13 @@
88
87
  flex-shrink: 0;
89
88
  }
90
89
 
91
- [data-component="menu-v2-content"].open-in-app-v2-menu [data-slot="icon-svg"] {
90
+ [data-component="menu-v2-content"].open-in-app-v2-menu [data-component="icon"] {
92
91
  width: 16px;
93
92
  height: 16px;
94
93
  flex-shrink: 0;
95
94
  }
95
+
96
+ [data-component="menu-v2-content"].open-in-app-v2-menu [data-component="icon"] [data-slot="icon-svg"] {
97
+ width: 16px;
98
+ height: 16px;
99
+ }
@@ -1,7 +1,7 @@
1
1
  import { splitProps, type ComponentProps, type ParentProps } from "solid-js"
2
- import "./split-button.css"
2
+ import "./split-button-v2.css"
3
3
 
4
- export function SplitButton(props: ParentProps<ComponentProps<"div">>) {
4
+ export function SplitButtonV2(props: ParentProps<ComponentProps<"div">>) {
5
5
  const [split, rest] = splitProps(props, ["class", "classList", "children"])
6
6
  return (
7
7
  <div
@@ -17,7 +17,7 @@ export function SplitButton(props: ParentProps<ComponentProps<"div">>) {
17
17
  )
18
18
  }
19
19
 
20
- export function SplitButtonAction(props: ComponentProps<"button">) {
20
+ export function SplitButtonV2Action(props: ComponentProps<"button">) {
21
21
  const [split, rest] = splitProps(props, ["class", "classList"])
22
22
  return (
23
23
  <button
@@ -32,7 +32,7 @@ export function SplitButtonAction(props: ComponentProps<"button">) {
32
32
  )
33
33
  }
34
34
 
35
- export function SplitButtonMenuTrigger(props: ComponentProps<"button">) {
35
+ export function SplitButtonV2MenuTrigger(props: ComponentProps<"button">) {
36
36
  const [split, rest] = splitProps(props, ["class", "classList"])
37
37
  return (
38
38
  <button
@@ -160,113 +160,3 @@
160
160
  pointer-events: none;
161
161
  }
162
162
  }
163
-
164
- [data-component="switch"][data-appearance="standard"] {
165
- [data-slot="switch-control"] {
166
- padding: 0;
167
- width: 28px;
168
- height: 16px;
169
- border-radius: 3px;
170
- border: 1px solid var(--border-weak-base);
171
- background: var(--surface-base);
172
- box-shadow: none;
173
- transition:
174
- background-color 150ms,
175
- border-color 150ms;
176
- }
177
-
178
- [data-slot="switch-thumb"] {
179
- box-sizing: content-box;
180
- width: 14px;
181
- height: 14px;
182
- border-radius: 2px;
183
- border: 1px solid var(--border-base);
184
- background: var(--icon-invert-base);
185
- box-shadow:
186
- 0 1px 2px -1px rgba(19, 16, 16, 0.04),
187
- 0 1px 2px 0 rgba(19, 16, 16, 0.06),
188
- 0 1px 3px 0 rgba(19, 16, 16, 0.08);
189
- transform: translateX(-1px);
190
- transition:
191
- transform 150ms,
192
- background-color 150ms;
193
- }
194
-
195
- [data-slot="switch-label"] {
196
- color: var(--text-base);
197
- font-family: var(--font-family-sans);
198
- font-size: var(--font-size-small);
199
- font-style: normal;
200
- font-weight: var(--font-weight-regular);
201
- line-height: var(--line-height-large);
202
- letter-spacing: var(--letter-spacing-normal);
203
- }
204
-
205
- [data-slot="switch-description"] {
206
- color: var(--text-base);
207
- font-family: var(--font-family-sans);
208
- font-size: 12px;
209
- font-weight: var(--font-weight-regular);
210
- line-height: var(--line-height-normal);
211
- letter-spacing: var(--letter-spacing-normal);
212
- }
213
-
214
- [data-slot="switch-error"] {
215
- color: var(--text-error);
216
- }
217
-
218
- &:hover:not([data-disabled], [data-readonly]) [data-slot="switch-control"] {
219
- border-color: var(--border-hover);
220
- background: var(--surface-hover);
221
- }
222
-
223
- &:hover:not([data-disabled], [data-readonly]) [data-slot="switch-thumb"] {
224
- width: 14px;
225
- border-radius: 2px;
226
- }
227
-
228
- &:not([data-readonly]) [data-slot="switch-input"]:focus-visible ~ [data-slot="switch-control"] {
229
- border-color: var(--border-focus);
230
- outline: none;
231
- box-shadow: var(--shadow-xs-border-focus);
232
- }
233
-
234
- &[data-checked] [data-slot="switch-control"] {
235
- border-color: var(--icon-strong-base);
236
- background: var(--icon-strong-base);
237
- box-shadow: none;
238
- }
239
-
240
- &[data-checked] [data-slot="switch-thumb"],
241
- &[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-thumb"] {
242
- width: 14px;
243
- border: none;
244
- border-radius: 2px;
245
- transform: translateX(12px);
246
- background: var(--icon-invert-base);
247
- }
248
-
249
- &:dir(rtl)[data-checked] [data-slot="switch-thumb"],
250
- &:dir(rtl)[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-thumb"] {
251
- transform: translateX(-12px);
252
- }
253
-
254
- &[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-control"] {
255
- border-color: var(--border-hover);
256
- background: var(--surface-hover);
257
- }
258
-
259
- &[data-disabled] [data-slot="switch-control"] {
260
- border-color: var(--border-disabled);
261
- background: var(--surface-disabled);
262
- opacity: 1;
263
- }
264
-
265
- &[data-disabled] [data-slot="switch-thumb"] {
266
- background: var(--icon-disabled);
267
- }
268
-
269
- &[data-invalid] [data-slot="switch-control"] {
270
- border-color: var(--border-error);
271
- }
272
- }
@@ -0,0 +1,28 @@
1
+ import { Switch as Kobalte } from "@kobalte/core/switch"
2
+ import { Show, splitProps } from "solid-js"
3
+ import type { ComponentProps, ParentProps } from "solid-js"
4
+ import "./switch-v2.css"
5
+
6
+ export interface SwitchProps extends ParentProps<ComponentProps<typeof Kobalte>> {
7
+ hideLabel?: boolean
8
+ }
9
+
10
+ export function Switch(props: SwitchProps) {
11
+ const [local, others] = splitProps(props, ["children", "class", "hideLabel"])
12
+ return (
13
+ <Kobalte {...others} class={local.class} data-component="switch">
14
+ <Kobalte.Input data-slot="switch-input" />
15
+ <Show when={local.children}>
16
+ {(label) => (
17
+ <Kobalte.Label data-slot="switch-label" classList={{ "sr-only": local.hideLabel }}>
18
+ {label()}
19
+ </Kobalte.Label>
20
+ )}
21
+ </Show>
22
+ <Kobalte.Control data-slot="switch-control">
23
+ <Kobalte.Thumb data-slot="switch-thumb" />
24
+ </Kobalte.Control>
25
+ <Kobalte.ErrorMessage data-slot="switch-error" />
26
+ </Kobalte>
27
+ )
28
+ }
@@ -59,7 +59,7 @@
59
59
 
60
60
  font-size: 13px;
61
61
  font-weight: 440;
62
- line-height: var(--line-height-compact);
62
+ line-height: 100%;
63
63
  letter-spacing: -0.04px;
64
64
  }
65
65
 
@@ -68,29 +68,22 @@
68
68
  box-shadow: none;
69
69
  }
70
70
 
71
- [data-slot="tabs-v2-trigger-close-button"] {
72
- display: flex;
73
- align-items: center;
74
- justify-content: center;
75
- margin-inline-start: -5px;
76
- flex: none;
77
- }
78
-
79
- [data-slot="tabs-v2-trigger-close-button"] [data-slot="tabs-close-button"] {
71
+ [data-component="tabs-v2"] [data-slot="tabs-v2-close-button"] {
80
72
  width: 20px;
81
73
  height: 20px;
82
- padding: 0;
74
+ margin-inline-start: -5px;
75
+ flex: none;
83
76
  display: flex;
84
77
  align-items: center;
85
78
  justify-content: center;
86
79
  color: var(--v2-text-text-faint);
87
80
  }
88
81
 
89
- [data-slot="tabs-v2-trigger-close-button"] [data-slot="tabs-close-button"]:hover {
82
+ [data-component="tabs-v2"] [data-slot="tabs-v2-close-button"]:hover {
90
83
  color: var(--v2-text-text-muted);
91
84
  }
92
85
 
93
- [data-component="tabs-v2"] [data-component="icon-button-v2"] {
86
+ [data-component="tabs-v2"] [data-component="icon-button"] {
94
87
  margin: 0;
95
88
  }
96
89
 
@@ -182,7 +175,7 @@
182
175
  border: 0.5px solid var(--v2-border-border-muted);
183
176
  }
184
177
 
185
- [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] > [data-slot="tabs-v2-list"] {
178
+ [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] [data-slot="tabs-v2-list"] {
186
179
  flex-direction: column;
187
180
  width: 240px;
188
181
  min-width: 200px;
@@ -193,9 +186,7 @@
193
186
  border-inline-end: 1px solid var(--v2-border-border-base);
194
187
  }
195
188
 
196
- [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"]
197
- > [data-slot="tabs-v2-list"]
198
- [data-slot="tabs-v2-section-title"] {
189
+ [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] [data-slot="tabs-v2-section-title"] {
199
190
  width: 100%;
200
191
  padding-inline-start: 4px;
201
192
  color: var(--v2-text-text-muted);
@@ -204,9 +195,7 @@
204
195
  user-select: none;
205
196
  }
206
197
 
207
- [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"]
208
- > [data-slot="tabs-v2-list"]
209
- [data-slot="tabs-v2-trigger-wrapper"] {
198
+ [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] [data-slot="tabs-v2-trigger-wrapper"] {
210
199
  width: 100%;
211
200
  height: 28px;
212
201
  border-radius: 4px;
@@ -214,9 +203,7 @@
214
203
  color: var(--v2-text-text-muted);
215
204
  }
216
205
 
217
- [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"]
218
- > [data-slot="tabs-v2-list"]
219
- [data-slot="tabs-v2-trigger"] {
206
+ [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] [data-slot="tabs-v2-trigger"] {
220
207
  width: 100%;
221
208
  height: 100%;
222
209
  justify-content: flex-start;
@@ -225,14 +212,12 @@
225
212
  }
226
213
 
227
214
  [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"]
228
- > [data-slot="tabs-v2-list"]
229
215
  [data-slot="tabs-v2-trigger-wrapper"]:hover:not(:disabled):not(:has([data-selected])) {
230
216
  background-color: var(--v2-background-bg-layer-03);
231
217
  color: var(--v2-text-text-base);
232
218
  }
233
219
 
234
220
  [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"]
235
- > [data-slot="tabs-v2-list"]
236
221
  [data-slot="tabs-v2-trigger-wrapper"]:has([data-selected]) {
237
222
  background-color: var(--v2-background-bg-layer-03);
238
223
  color: var(--v2-text-text-base);