@opencode-ai/ui 0.0.0-dev-202609062135 → 0.0.0-dev-19200

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 (299) hide show
  1. package/dist/actions/button/button.d.ts +10 -0
  2. package/dist/actions/icon-button/icon-button.d.ts +11 -0
  3. package/dist/actions/split-button/split-button.d.ts +5 -0
  4. package/dist/components/card.d.ts +1 -1
  5. package/dist/components/list.d.ts +1 -1
  6. package/dist/components/scroll-view.d.ts +14 -4
  7. package/dist/context/i18n.d.ts +10 -7
  8. package/dist/context/marked-base.d.ts +3 -0
  9. package/dist/context/marked-parser.d.ts +1 -2
  10. package/dist/{components → data-display/accordion}/accordion.d.ts +6 -6
  11. package/dist/{v2/components/avatar-v2.d.ts → data-display/avatar/avatar.d.ts} +1 -1
  12. package/dist/data-display/badge/badge.d.ts +7 -0
  13. package/dist/{components → data-display/diff-changes}/diff-changes.d.ts +2 -1
  14. package/dist/data-display/keybind/keybind.d.ts +7 -0
  15. package/dist/{v2/components/line-comment-v2.d.ts → data-display/line-comment/line-comment.d.ts} +9 -9
  16. package/dist/{v2/components/project-avatar-v2.d.ts → data-display/project-avatar/project-avatar.d.ts} +1 -1
  17. package/dist/feedback/loader/loader.d.ts +3 -0
  18. package/dist/{components → feedback/progress-circle}/progress-circle.d.ts +2 -0
  19. package/dist/feedback/toast/toast.d.ts +57 -0
  20. package/dist/{components → forms/checkbox}/checkbox.d.ts +2 -2
  21. package/dist/{v2/components/field-v2.d.ts → forms/field/field.d.ts} +4 -10
  22. package/dist/forms/radio/radio.d.ts +16 -0
  23. package/dist/{v2/components/select-v2.d.ts → forms/select/select.d.ts} +5 -6
  24. package/dist/{components → forms/switch}/switch.d.ts +4 -2
  25. package/dist/{v2/components/text-input-v2.d.ts → forms/text-input/text-input.d.ts} +3 -3
  26. package/dist/forms/textarea/textarea.d.ts +7 -0
  27. package/dist/hooks/use-filtered-list.d.ts +9 -0
  28. package/dist/i18n/ar.d.ts +0 -2
  29. package/dist/i18n/bg.d.ts +0 -2
  30. package/dist/i18n/br.d.ts +0 -2
  31. package/dist/i18n/bs.d.ts +0 -2
  32. package/dist/i18n/da.d.ts +0 -2
  33. package/dist/i18n/de.d.ts +0 -2
  34. package/dist/i18n/en.d.ts +242 -1
  35. package/dist/i18n/es.d.ts +0 -2
  36. package/dist/i18n/fr.d.ts +0 -2
  37. package/dist/i18n/he.d.ts +197 -0
  38. package/dist/i18n/ja.d.ts +0 -2
  39. package/dist/i18n/km.d.ts +0 -2
  40. package/dist/i18n/ko.d.ts +0 -2
  41. package/dist/i18n/lo.d.ts +0 -2
  42. package/dist/i18n/mk.d.ts +0 -2
  43. package/dist/i18n/mn.d.ts +0 -2
  44. package/dist/i18n/my.d.ts +0 -2
  45. package/dist/i18n/pl.d.ts +0 -2
  46. package/dist/i18n/ru.d.ts +0 -2
  47. package/dist/i18n/sr.d.ts +0 -2
  48. package/dist/i18n/tg.d.ts +0 -2
  49. package/dist/i18n/th.d.ts +0 -2
  50. package/dist/i18n/tr.d.ts +0 -2
  51. package/dist/i18n/zh.d.ts +0 -2
  52. package/dist/i18n/zht.d.ts +0 -2
  53. package/dist/{components/icon.d.ts → icons/icon/additional-icons.d.ts} +8 -8
  54. package/dist/{v2/components → icons/icon}/icon.d.ts +44 -1
  55. package/dist/layout/divider/divider.d.ts +5 -0
  56. package/dist/navigation/menu/menu.d.ts +59 -0
  57. package/dist/{v2/components/segmented-control-v2.d.ts → navigation/segmented-control/segmented-control.d.ts} +5 -5
  58. package/dist/{components → navigation/tabs}/tabs.d.ts +15 -8
  59. package/dist/{v2/components/dialog-v2.d.ts → overlays/dialog/dialog.d.ts} +1 -2
  60. package/dist/overlays/tooltip/tooltip.d.ts +15 -0
  61. package/dist/{components → typography/text-shimmer}/text-shimmer.d.ts +1 -0
  62. package/dist/typography/wordmark/wordmark.d.ts +5 -0
  63. package/package.json +141 -35
  64. package/src/{v2/components/button-v2.css → actions/button/button.css} +29 -0
  65. package/src/{components → actions/button}/button.tsx +19 -11
  66. package/src/{v2/components/icon-button-v2.css → actions/icon-button/icon-button.css} +27 -9
  67. package/src/actions/icon-button/icon-button.tsx +32 -0
  68. package/src/{v2/components/split-button-v2.css → actions/split-button/split-button.css} +2 -6
  69. package/src/{v2/components/split-button-v2.tsx → actions/split-button/split-button.tsx} +4 -4
  70. package/src/components/animated-number.css +29 -11
  71. package/src/components/animated-number.tsx +2 -2
  72. package/src/components/card.css +2 -23
  73. package/src/components/card.tsx +4 -4
  74. package/src/components/collapsible.tsx +2 -2
  75. package/src/components/dock-surface.css +2 -9
  76. package/src/components/image-preview.tsx +3 -2
  77. package/src/components/list.css +5 -5
  78. package/src/components/list.tsx +7 -5
  79. package/src/components/popover.tsx +3 -2
  80. package/src/components/scroll-view.css +36 -4
  81. package/src/components/scroll-view.tsx +153 -88
  82. package/src/components/sticky-accordion-header.tsx +1 -1
  83. package/src/components/text-field.tsx +12 -4
  84. package/src/context/dialog.tsx +1 -0
  85. package/src/context/i18n.tsx +17 -14
  86. package/src/context/marked-base.tsx +27 -0
  87. package/src/context/marked-parser.tsx +3 -13
  88. package/src/{components → data-display/accordion}/accordion.css +7 -33
  89. package/src/{components → data-display/accordion}/accordion.tsx +14 -14
  90. package/src/{v2/components/avatar-v2.tsx → data-display/avatar/avatar.tsx} +1 -1
  91. package/src/{v2/components/badge-v2.css → data-display/badge/badge.css} +19 -0
  92. package/src/{v2/components/badge-v2.tsx → data-display/badge/badge.tsx} +6 -4
  93. package/src/{components → data-display/diff-changes}/diff-changes.css +22 -19
  94. package/src/{v2/components/diff-changes-v2.tsx → data-display/diff-changes/diff-changes.tsx} +7 -2
  95. package/src/{v2/components/keybind-v2.css → data-display/keybind/keybind.css} +1 -1
  96. package/src/{v2/components/keybind-v2.tsx → data-display/keybind/keybind.tsx} +3 -3
  97. package/src/{v2/components/line-comment-v2.css → data-display/line-comment/line-comment.css} +4 -4
  98. package/src/{v2/components/line-comment-v2.tsx → data-display/line-comment/line-comment.tsx} +17 -15
  99. package/src/{v2/components/project-avatar-v2.tsx → data-display/project-avatar/project-avatar.tsx} +1 -1
  100. package/src/{v2/components/loader-v2.tsx → feedback/loader/loader.tsx} +2 -2
  101. package/src/feedback/progress-circle/progress-circle.css +28 -0
  102. package/src/feedback/progress-circle/progress-circle.tsx +64 -0
  103. package/src/{v2/components/toast-v2.tsx → feedback/toast/toast.tsx} +60 -58
  104. package/src/{components → forms/checkbox}/checkbox.css +1 -7
  105. package/src/{components → forms/checkbox}/checkbox.tsx +13 -13
  106. package/src/{v2/components/field-v2.css → forms/field/field.css} +1 -1
  107. package/src/{v2/components/field-v2.tsx → forms/field/field.tsx} +9 -11
  108. package/src/{v2/components/radio-v2.tsx → forms/radio/radio.tsx} +30 -20
  109. package/src/{v2/components/select-v2.css → forms/select/select.css} +2 -8
  110. package/src/{v2/components/select-v2.tsx → forms/select/select.tsx} +42 -32
  111. package/src/{v2/components/switch-v2.css → forms/switch/switch.css} +110 -0
  112. package/src/forms/switch/switch.tsx +34 -0
  113. package/src/{v2/components/text-input-v2.css → forms/text-input/text-input.css} +3 -3
  114. package/src/{v2/components/text-input-v2.tsx → forms/text-input/text-input.tsx} +4 -4
  115. package/src/{v2/components/textarea-v2.tsx → forms/textarea/textarea.tsx} +3 -3
  116. package/src/hooks/create-auto-scroll.tsx +20 -0
  117. package/src/i18n/am.ts +7 -9
  118. package/src/i18n/ar.ts +7 -9
  119. package/src/i18n/az.ts +7 -9
  120. package/src/i18n/bg.ts +7 -9
  121. package/src/i18n/bn.ts +7 -9
  122. package/src/i18n/br.ts +7 -9
  123. package/src/i18n/bs.ts +7 -9
  124. package/src/i18n/ca.ts +7 -9
  125. package/src/i18n/cs.ts +7 -9
  126. package/src/i18n/da.ts +7 -9
  127. package/src/i18n/de.ts +1 -3
  128. package/src/i18n/dv.ts +7 -9
  129. package/src/i18n/dz.ts +5 -7
  130. package/src/i18n/el.ts +7 -9
  131. package/src/i18n/en.ts +59 -12
  132. package/src/i18n/es.ts +6 -8
  133. package/src/i18n/et.ts +7 -9
  134. package/src/i18n/fa.ts +7 -9
  135. package/src/i18n/fi.ts +7 -9
  136. package/src/i18n/fo.ts +7 -9
  137. package/src/i18n/fr.ts +6 -8
  138. package/src/i18n/he.ts +199 -0
  139. package/src/i18n/hi.ts +7 -9
  140. package/src/i18n/hr.ts +7 -9
  141. package/src/i18n/hu.ts +7 -9
  142. package/src/i18n/hy.ts +7 -9
  143. package/src/i18n/id.ts +7 -9
  144. package/src/i18n/is.ts +7 -9
  145. package/src/i18n/it.ts +7 -9
  146. package/src/i18n/ja.ts +7 -9
  147. package/src/i18n/ka.ts +7 -9
  148. package/src/i18n/km.ts +7 -9
  149. package/src/i18n/ko.ts +7 -9
  150. package/src/i18n/lo.ts +7 -9
  151. package/src/i18n/lt.ts +7 -9
  152. package/src/i18n/lv.ts +7 -9
  153. package/src/i18n/mk.ts +7 -9
  154. package/src/i18n/mn.ts +7 -9
  155. package/src/i18n/ms.ts +7 -9
  156. package/src/i18n/my.ts +7 -9
  157. package/src/i18n/ne.ts +7 -9
  158. package/src/i18n/nl.ts +7 -9
  159. package/src/i18n/no.ts +7 -9
  160. package/src/i18n/pa.ts +7 -9
  161. package/src/i18n/pl.ts +7 -9
  162. package/src/i18n/ro.ts +7 -9
  163. package/src/i18n/ru.ts +7 -9
  164. package/src/i18n/si.ts +7 -9
  165. package/src/i18n/sk.ts +7 -9
  166. package/src/i18n/sl.ts +7 -9
  167. package/src/i18n/sq.ts +7 -9
  168. package/src/i18n/sr.ts +7 -9
  169. package/src/i18n/sv.ts +7 -9
  170. package/src/i18n/tg.ts +7 -9
  171. package/src/i18n/th.ts +7 -9
  172. package/src/i18n/tk.ts +7 -9
  173. package/src/i18n/tr.ts +7 -9
  174. package/src/i18n/uk.ts +7 -9
  175. package/src/i18n/ur.ts +7 -9
  176. package/src/i18n/uz.ts +7 -9
  177. package/src/i18n/vi.ts +7 -9
  178. package/src/i18n/zh.ts +7 -9
  179. package/src/i18n/zht.ts +7 -9
  180. package/src/{components/icon.tsx → icons/icon/additional-icons.ts} +8 -74
  181. package/src/icons/icon/icon.css +3 -0
  182. package/src/{v2/components → icons/icon}/icon.tsx +80 -12
  183. package/src/{v2/components/divider-v2.tsx → layout/divider/divider.tsx} +3 -3
  184. package/src/{v2/components/menu-v2.css → navigation/menu/menu.css} +124 -2
  185. package/src/{v2/components/menu-v2.tsx → navigation/menu/menu.tsx} +96 -32
  186. package/src/{v2/components/segmented-control-v2.css → navigation/segmented-control/segmented-control.css} +1 -1
  187. package/src/{v2/components/segmented-control-v2.tsx → navigation/segmented-control/segmented-control.tsx} +9 -8
  188. package/src/{v2/components/tabs-v2.css → navigation/tabs/tabs-current.css} +25 -10
  189. package/src/{components → navigation/tabs}/tabs.css +53 -232
  190. package/src/navigation/tabs/tabs.tsx +194 -0
  191. package/src/{v2/components/dialog-v2.css → overlays/dialog/dialog.css} +3 -0
  192. package/src/{v2/components/dialog-v2.tsx → overlays/dialog/dialog.tsx} +11 -13
  193. package/src/{v2/components/tooltip-v2.css → overlays/tooltip/tooltip.css} +26 -0
  194. package/src/{v2/components/tooltip-v2.tsx → overlays/tooltip/tooltip.tsx} +24 -17
  195. package/src/styles/base.css +5 -0
  196. package/src/{v2/components/file-tree-v2.css → styles/file-tree.css} +64 -3
  197. package/src/styles/index.css +4 -20
  198. package/src/styles/tailwind/colors.css +2 -0
  199. package/src/styles/tailwind/index.css +18 -1
  200. package/src/styles/theme.css +2 -2
  201. package/src/{v2/styles → styles/tokens}/colors.css +8 -8
  202. package/src/{v2/styles → styles/tokens}/theme.css +23 -16
  203. package/src/theme/context.tsx +19 -11
  204. package/src/theme/themes/oc-2.json +50 -19
  205. package/src/theme/v2/default-primitives.ts +8 -8
  206. package/src/theme/v2/foreground.ts +1 -0
  207. package/src/theme/v2/mapping.ts +7 -1
  208. package/src/{components → typography/text-shimmer}/text-shimmer.css +2 -1
  209. package/src/{components → typography/text-shimmer}/text-shimmer.tsx +1 -0
  210. package/src/typography/wordmark/wordmark.tsx +39 -0
  211. package/dist/components/avatar.d.ts +0 -9
  212. package/dist/components/button.d.ts +0 -9
  213. package/dist/components/dialog.d.ts +0 -12
  214. package/dist/components/dropdown-menu.d.ts +0 -80
  215. package/dist/components/icon-button.d.ts +0 -10
  216. package/dist/components/keybind.d.ts +0 -6
  217. package/dist/components/radio-group.d.ts +0 -16
  218. package/dist/components/select.d.ts +0 -21
  219. package/dist/components/tag.d.ts +0 -5
  220. package/dist/components/toast.d.ts +0 -56
  221. package/dist/components/tooltip.d.ts +0 -17
  222. package/dist/v2/components/accordion-v2.d.ts +0 -26
  223. package/dist/v2/components/badge-v2.d.ts +0 -6
  224. package/dist/v2/components/button-v2.d.ts +0 -10
  225. package/dist/v2/components/checkbox-v2.d.ts +0 -10
  226. package/dist/v2/components/diff-changes-v2.d.ts +0 -11
  227. package/dist/v2/components/divider-v2.d.ts +0 -5
  228. package/dist/v2/components/icon-button-v2.d.ts +0 -11
  229. package/dist/v2/components/inline-input-v2.d.ts +0 -21
  230. package/dist/v2/components/keybind-v2.d.ts +0 -7
  231. package/dist/v2/components/loader-v2.d.ts +0 -3
  232. package/dist/v2/components/menu-v2.d.ts +0 -52
  233. package/dist/v2/components/progress-circle-v2.d.ts +0 -8
  234. package/dist/v2/components/radio-v2.d.ts +0 -16
  235. package/dist/v2/components/split-button-v2.d.ts +0 -5
  236. package/dist/v2/components/switch-v2.d.ts +0 -7
  237. package/dist/v2/components/tabs-v2.d.ts +0 -34
  238. package/dist/v2/components/text-shimmer-v2.d.ts +0 -9
  239. package/dist/v2/components/textarea-v2.d.ts +0 -7
  240. package/dist/v2/components/toast-v2.d.ts +0 -57
  241. package/dist/v2/components/tooltip-v2.d.ts +0 -13
  242. package/dist/v2/components/wordmark-v2.d.ts +0 -2
  243. package/src/components/avatar.css +0 -49
  244. package/src/components/avatar.tsx +0 -55
  245. package/src/components/button.css +0 -194
  246. package/src/components/dialog.css +0 -181
  247. package/src/components/dialog.tsx +0 -72
  248. package/src/components/diff-changes.tsx +0 -115
  249. package/src/components/dropdown-menu.css +0 -135
  250. package/src/components/dropdown-menu.tsx +0 -308
  251. package/src/components/icon-button.css +0 -181
  252. package/src/components/icon-button.tsx +0 -29
  253. package/src/components/icon.css +0 -39
  254. package/src/components/keybind.css +0 -18
  255. package/src/components/keybind.tsx +0 -20
  256. package/src/components/progress-circle.css +0 -16
  257. package/src/components/progress-circle.tsx +0 -64
  258. package/src/components/radio-group.css +0 -187
  259. package/src/components/radio-group.tsx +0 -83
  260. package/src/components/select.css +0 -201
  261. package/src/components/select.tsx +0 -174
  262. package/src/components/switch.css +0 -136
  263. package/src/components/switch.tsx +0 -29
  264. package/src/components/tabs.tsx +0 -126
  265. package/src/components/tag.css +0 -37
  266. package/src/components/tag.tsx +0 -22
  267. package/src/components/toast.css +0 -236
  268. package/src/components/toast.tsx +0 -185
  269. package/src/components/tooltip.css +0 -74
  270. package/src/components/tooltip.tsx +0 -163
  271. package/src/v2/components/accordion-v2.css +0 -139
  272. package/src/v2/components/accordion-v2.tsx +0 -86
  273. package/src/v2/components/button-v2.tsx +0 -35
  274. package/src/v2/components/checkbox-v2.css +0 -184
  275. package/src/v2/components/checkbox-v2.tsx +0 -65
  276. package/src/v2/components/diff-changes-v2.css +0 -26
  277. package/src/v2/components/icon-button-v2.tsx +0 -37
  278. package/src/v2/components/inline-input-v2.css +0 -225
  279. package/src/v2/components/inline-input-v2.tsx +0 -107
  280. package/src/v2/components/progress-circle-v2.css +0 -13
  281. package/src/v2/components/progress-circle-v2.tsx +0 -52
  282. package/src/v2/components/switch-v2.tsx +0 -28
  283. package/src/v2/components/tabs-v2.tsx +0 -149
  284. package/src/v2/components/text-shimmer-v2.css +0 -125
  285. package/src/v2/components/text-shimmer-v2.tsx +0 -63
  286. package/src/v2/components/wordmark-v2.tsx +0 -71
  287. /package/dist/{components → forms/inline-input}/inline-input.d.ts +0 -0
  288. /package/dist/{v2/components → navigation}/tab-state-indicator.d.ts +0 -0
  289. /package/src/{v2/components/avatar-v2.css → data-display/avatar/avatar.css} +0 -0
  290. /package/src/{v2/components/project-avatar-v2.css → data-display/project-avatar/project-avatar.css} +0 -0
  291. /package/src/{v2/components/loader-v2.css → feedback/loader/loader.css} +0 -0
  292. /package/src/{v2/components/toast-v2.css → feedback/toast/toast.css} +0 -0
  293. /package/src/{components → forms/inline-input}/inline-input.css +0 -0
  294. /package/src/{components → forms/inline-input}/inline-input.tsx +0 -0
  295. /package/src/{v2/components/radio-v2.css → forms/radio/radio.css} +0 -0
  296. /package/src/{v2/components/textarea-v2.css → forms/textarea/textarea.css} +0 -0
  297. /package/src/{v2/components/divider-v2.css → layout/divider/divider.css} +0 -0
  298. /package/src/{v2/components → navigation}/tab-state-indicator.tsx +0 -0
  299. /package/src/{v2/styles/tailwind.css → styles/tokens/index.css} +0 -0
@@ -32,7 +32,6 @@
32
32
  border-color 220ms var(--tool-motion-ease, cubic-bezier(0.22, 1, 0.36, 1)),
33
33
  background-color 220ms var(--tool-motion-ease, cubic-bezier(0.22, 1, 0.36, 1)),
34
34
  box-shadow 220ms var(--tool-motion-ease, cubic-bezier(0.22, 1, 0.36, 1));
35
- /* background-color: var(--surface-weak); */
36
35
  }
37
36
 
38
37
  [data-slot="checkbox-checkbox-indicator"] {
@@ -49,19 +48,14 @@
49
48
  transform 220ms var(--tool-motion-ease, cubic-bezier(0.22, 1, 0.36, 1));
50
49
  }
51
50
 
52
- /* [data-slot="checkbox-checkbox-content"] { */
53
- /* } */
54
-
55
51
  [data-slot="checkbox-checkbox-label"] {
56
52
  user-select: none;
57
53
  color: var(--text-base);
58
-
59
- /* text-12-regular */
60
54
  font-family: var(--font-family-sans);
61
55
  font-size: var(--font-size-small);
62
56
  font-style: normal;
63
57
  font-weight: var(--font-weight-regular);
64
- line-height: var(--line-height-large); /* 166.667% */
58
+ line-height: var(--line-height-large);
65
59
  letter-spacing: var(--letter-spacing-normal);
66
60
  }
67
61
 
@@ -1,8 +1,8 @@
1
- import { Checkbox as Kobalte } from "@kobalte/core/checkbox"
1
+ import { Control, Description, ErrorMessage, Indicator, Input, Label, Root } from "@kobalte/core/checkbox"
2
2
  import { Show, splitProps } from "solid-js"
3
3
  import type { ComponentProps, JSX, ParentProps } from "solid-js"
4
4
 
5
- export interface CheckboxProps extends ParentProps<ComponentProps<typeof Kobalte>> {
5
+ export interface CheckboxProps extends ParentProps<ComponentProps<typeof Root>> {
6
6
  hideLabel?: boolean
7
7
  description?: string
8
8
  icon?: JSX.Element
@@ -11,10 +11,10 @@ export interface CheckboxProps extends ParentProps<ComponentProps<typeof Kobalte
11
11
  export function Checkbox(props: CheckboxProps) {
12
12
  const [local, others] = splitProps(props, ["children", "class", "label", "hideLabel", "description", "icon"])
13
13
  return (
14
- <Kobalte {...others} data-component="checkbox">
15
- <Kobalte.Input data-slot="checkbox-checkbox-input" />
16
- <Kobalte.Control data-slot="checkbox-checkbox-control">
17
- <Kobalte.Indicator data-slot="checkbox-checkbox-indicator">
14
+ <Root {...others} data-component="checkbox">
15
+ <Input data-slot="checkbox-checkbox-input" />
16
+ <Control data-slot="checkbox-checkbox-control">
17
+ <Indicator data-slot="checkbox-checkbox-indicator">
18
18
  {local.icon || (
19
19
  <svg viewBox="0 0 12 12" fill="none" width="10" height="10" xmlns="http://www.w3.org/2000/svg">
20
20
  <path
@@ -25,19 +25,19 @@ export function Checkbox(props: CheckboxProps) {
25
25
  />
26
26
  </svg>
27
27
  )}
28
- </Kobalte.Indicator>
29
- </Kobalte.Control>
28
+ </Indicator>
29
+ </Control>
30
30
  <div data-slot="checkbox-checkbox-content">
31
31
  <Show when={props.children}>
32
- <Kobalte.Label data-slot="checkbox-checkbox-label" classList={{ "sr-only": local.hideLabel }}>
32
+ <Label data-slot="checkbox-checkbox-label" classList={{ "sr-only": local.hideLabel }}>
33
33
  {props.children}
34
- </Kobalte.Label>
34
+ </Label>
35
35
  </Show>
36
36
  <Show when={local.description}>
37
- <Kobalte.Description data-slot="checkbox-checkbox-description">{local.description}</Kobalte.Description>
37
+ <Description data-slot="checkbox-checkbox-description">{local.description}</Description>
38
38
  </Show>
39
- <Kobalte.ErrorMessage data-slot="checkbox-checkbox-error" />
39
+ <ErrorMessage data-slot="checkbox-checkbox-error" />
40
40
  </div>
41
- </Kobalte>
41
+ </Root>
42
42
  )
43
43
  }
@@ -20,7 +20,7 @@
20
20
  font-style: normal;
21
21
  font-weight: 530;
22
22
  font-size: 13px;
23
- line-height: 1;
23
+ line-height: var(--line-height-compact);
24
24
  letter-spacing: -0.04px;
25
25
  color: var(--v2-text-text-base);
26
26
  font-variation-settings: "slnt" 0;
@@ -11,8 +11,8 @@ import {
11
11
  type ComponentProps,
12
12
  type ParentProps,
13
13
  } from "solid-js"
14
- import { TooltipV2 } from "./tooltip-v2"
15
- import "./field-v2.css"
14
+ import { Tooltip } from "@opencode-ai/ui/tooltip"
15
+ import "./field.css"
16
16
 
17
17
  type FieldContextValue = {
18
18
  controlId: string
@@ -40,14 +40,14 @@ function useField() {
40
40
  const CONTROL_SELECTOR = [
41
41
  "[data-slot='text-input-v2-input']",
42
42
  "[data-slot='textarea-v2-textarea']",
43
- "[data-slot='inline-input-v2-input']",
43
+ "[data-component='inline-input']",
44
44
  ].join(", ")
45
45
 
46
- export interface FieldV2Props extends ComponentProps<"div"> {
46
+ export interface FieldProps extends ComponentProps<"div"> {
47
47
  invalid?: boolean
48
48
  }
49
49
 
50
- function FieldV2Root(props: ParentProps<FieldV2Props>) {
50
+ function FieldRoot(props: ParentProps<FieldProps>) {
51
51
  const [local, rest] = splitProps(props, ["invalid", "class", "classList", "children"])
52
52
 
53
53
  const controlId = `field-control-${createUniqueId()}`
@@ -86,7 +86,7 @@ function FieldV2Root(props: ParentProps<FieldV2Props>) {
86
86
  if (!control) return
87
87
 
88
88
  const shell = control.closest(
89
- "[data-component='text-input-v2'], [data-component='textarea-v2'], [data-component='inline-input-v2']",
89
+ "[data-component='text-input-v2'], [data-component='textarea-v2'], [data-component='inline-input']",
90
90
  ) as HTMLElement | null
91
91
 
92
92
  control.id = controlId
@@ -173,7 +173,7 @@ function FieldLabel(props: ParentProps<FieldLabelProps>) {
173
173
  <span data-slot="field-v2-label-text">{local.children}</span>
174
174
  <Show when={local.tooltip}>
175
175
  {(tooltip) => (
176
- <TooltipV2 value={tooltip()}>
176
+ <Tooltip value={tooltip()}>
177
177
  <button
178
178
  type="button"
179
179
  data-slot="field-v2-label-info"
@@ -182,7 +182,7 @@ function FieldLabel(props: ParentProps<FieldLabelProps>) {
182
182
  >
183
183
  <FieldLabelInfoIcon />
184
184
  </button>
185
- </TooltipV2>
185
+ </Tooltip>
186
186
  )}
187
187
  </Show>
188
188
  </label>
@@ -255,11 +255,9 @@ function FieldControl(props: ParentProps<ComponentProps<"div">>) {
255
255
  )
256
256
  }
257
257
 
258
- export const FieldV2 = Object.assign(FieldV2Root, {
258
+ export const Field = Object.assign(FieldRoot, {
259
259
  Label: FieldLabel,
260
260
  Prefix: FieldPrefix,
261
261
  Suffix: FieldSuffix,
262
262
  Control: FieldControl,
263
263
  })
264
-
265
- export const Field = FieldV2
@@ -1,18 +1,28 @@
1
- import { RadioGroup as Kobalte } from "@kobalte/core/radio-group"
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"
2
12
  import { Show, splitProps, type JSX } from "solid-js"
3
13
  import type { ComponentProps, ParentProps } from "solid-js"
4
- import "./radio-v2.css"
14
+ import "./radio.css"
5
15
 
6
- export interface RadioGroupV2Props extends ParentProps<ComponentProps<typeof Kobalte>> {
16
+ export interface RadioGroupProps extends ParentProps<ComponentProps<typeof Root>> {
7
17
  label?: JSX.Element
8
18
  description?: JSX.Element
9
19
  hideLabel?: boolean
10
20
  }
11
21
 
12
- export function RadioGroupV2(props: RadioGroupV2Props) {
22
+ export function RadioGroup(props: RadioGroupProps) {
13
23
  const [local, others] = splitProps(props, ["class", "classList", "children", "label", "description", "hideLabel"])
14
24
  return (
15
- <Kobalte
25
+ <Root
16
26
  {...others}
17
27
  data-component="radio-v2"
18
28
  classList={{
@@ -22,30 +32,30 @@ export function RadioGroupV2(props: RadioGroupV2Props) {
22
32
  >
23
33
  <Show when={local.label}>
24
34
  {(label) => (
25
- <Kobalte.Label data-slot="radio-v2-label" classList={{ "sr-only": local.hideLabel }}>
35
+ <Label data-slot="radio-v2-label" classList={{ "sr-only": local.hideLabel }}>
26
36
  {label()}
27
- </Kobalte.Label>
37
+ </Label>
28
38
  )}
29
39
  </Show>
30
40
  <Show when={local.description}>
31
- {(description) => <Kobalte.Description data-slot="radio-v2-description">{description()}</Kobalte.Description>}
41
+ {(description) => <Description data-slot="radio-v2-description">{description()}</Description>}
32
42
  </Show>
33
43
  <div data-slot="radio-v2-items">{local.children}</div>
34
- <Kobalte.ErrorMessage data-slot="radio-v2-error" />
35
- </Kobalte>
44
+ <ErrorMessage data-slot="radio-v2-error" />
45
+ </Root>
36
46
  )
37
47
  }
38
48
 
39
- export interface RadioItemV2Props extends ComponentProps<typeof Kobalte.Item> {
49
+ export interface RadioItemProps extends ComponentProps<typeof Item> {
40
50
  label: JSX.Element
41
51
  description?: JSX.Element
42
52
  hideLabel?: boolean
43
53
  }
44
54
 
45
- export function RadioItemV2(props: RadioItemV2Props) {
55
+ export function RadioItem(props: RadioItemProps) {
46
56
  const [local, others] = splitProps(props, ["class", "classList", "label", "description", "hideLabel"])
47
57
  return (
48
- <Kobalte.Item
58
+ <Item
49
59
  {...others}
50
60
  data-slot="radio-v2-item"
51
61
  classList={{
@@ -53,20 +63,20 @@ export function RadioItemV2(props: RadioItemV2Props) {
53
63
  [local.class ?? ""]: !!local.class,
54
64
  }}
55
65
  >
56
- <Kobalte.ItemInput data-slot="radio-v2-item-input" />
66
+ <ItemInput data-slot="radio-v2-item-input" />
57
67
  <div data-slot="radio-v2-item-control-stack">
58
- <Kobalte.ItemControl data-slot="radio-v2-item-control">
59
- <Kobalte.ItemIndicator data-slot="radio-v2-item-indicator" />
60
- </Kobalte.ItemControl>
68
+ <ItemControl data-slot="radio-v2-item-control">
69
+ <ItemIndicator data-slot="radio-v2-item-indicator" />
70
+ </ItemControl>
61
71
  </div>
62
- <Kobalte.ItemLabel data-slot="radio-v2-item-label" classList={{ "sr-only": local.hideLabel }}>
72
+ <ItemLabel data-slot="radio-v2-item-label" classList={{ "sr-only": local.hideLabel }}>
63
73
  <div data-slot="radio-v2-item-text">
64
74
  <span data-slot="radio-v2-item-label-text">{local.label}</span>
65
75
  <Show when={local.description}>
66
76
  {(description) => <span data-slot="radio-v2-item-description">{description()}</span>}
67
77
  </Show>
68
78
  </div>
69
- </Kobalte.ItemLabel>
70
- </Kobalte.Item>
79
+ </ItemLabel>
80
+ </Item>
71
81
  )
72
82
  }
@@ -1,4 +1,4 @@
1
- @import "./menu-v2.css";
1
+ @import "../../navigation/menu/menu.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
- /* Trigger shell — aligned with text-input-v2 */
49
+ /* Shared trigger structure for the inline control. */
50
50
  [data-component="select-v2"] {
51
51
  box-sizing: border-box;
52
52
  display: flex;
@@ -73,12 +73,6 @@
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
-
82
76
  [data-component="select-v2"]:where(:hover):not([data-disabled], [data-invalid]):not(:focus-within):not(
83
77
  [data-expanded]
84
78
  ) {
@@ -1,6 +1,17 @@
1
- import { Select as Kobalte } from "@kobalte/core/select"
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"
2
13
  import { Show, createMemo, onCleanup, splitProps, type ComponentProps, type JSX } from "solid-js"
3
- import "./select-v2.css"
14
+ import "./select.css"
4
15
 
5
16
  function groupOptions<T>(options: T[], groupBy?: (x: T) => string): { category: string; options: T[] }[] {
6
17
  if (!groupBy) {
@@ -40,8 +51,8 @@ const CheckSmall = () => (
40
51
  </svg>
41
52
  )
42
53
 
43
- export type SelectV2Props<T> = Omit<
44
- ComponentProps<typeof Kobalte<T, { category: string; options: T[] }>>,
54
+ export type SelectProps<T> = Omit<
55
+ ComponentProps<typeof Root<T, { category: string; options: T[] }>>,
45
56
  "value" | "onSelect" | "children" | "options" | "itemComponent" | "sectionComponent" | "defaultValue" | "multiple"
46
57
  > & {
47
58
  placeholder?: string
@@ -53,15 +64,14 @@ export type SelectV2Props<T> = Omit<
53
64
  groupBy?: (x: T) => string
54
65
  onSelect?: (value: T | null) => void
55
66
  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"
58
67
  invalid?: boolean
59
68
  numeric?: boolean
60
69
  children?: (item: T) => JSX.Element
61
70
  valueClass?: string
71
+ contentClass?: string
62
72
  }
63
73
 
64
- export function SelectV2<T>(props: SelectV2Props<T>) {
74
+ export function Select<T>(props: SelectProps<T>) {
65
75
  const [local, others] = splitProps(props, [
66
76
  "class",
67
77
  "classList",
@@ -75,11 +85,11 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
75
85
  "onHighlight",
76
86
  "onOpenChange",
77
87
  "children",
78
- "appearance",
79
88
  "invalid",
80
89
  "numeric",
81
90
  "disabled",
82
91
  "valueClass",
92
+ "contentClass",
83
93
  "placement",
84
94
  "gutter",
85
95
  "sameWidth",
@@ -88,8 +98,6 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
88
98
  "fitViewport",
89
99
  ])
90
100
 
91
- const inline = () => (local.appearance ?? "base") === "inline"
92
-
93
101
  const state: { key?: string; cleanup?: void | (() => void) } = {}
94
102
 
95
103
  const stop = () => {
@@ -118,15 +126,15 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
118
126
  const grouped = createMemo(() => groupOptions(local.options, local.groupBy))
119
127
 
120
128
  return (
121
- <Kobalte<T, { category: string; options: T[] }>
129
+ <Root<T, { category: string; options: T[] }>
122
130
  {...others}
123
131
  multiple={false}
124
132
  allowDuplicateSelectionEvents={false}
125
133
  disabled={local.disabled}
126
134
  data-component="select-v2-root"
127
- placement={local.placement ?? (inline() ? "bottom-end" : "bottom-start")}
135
+ placement={local.placement ?? "bottom-end"}
128
136
  gutter={local.gutter ?? 4}
129
- sameWidth={local.sameWidth ?? !inline()}
137
+ sameWidth={local.sameWidth ?? false}
130
138
  flip={local.flip ?? true}
131
139
  slide={local.slide ?? true}
132
140
  fitViewport={local.fitViewport ?? false}
@@ -137,31 +145,31 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
137
145
  optionGroupChildren="options"
138
146
  placeholder={local.placeholder}
139
147
  sectionComponent={(sectionProps) => (
140
- <Kobalte.Section>
148
+ <Section>
141
149
  <Show when={sectionProps.section.rawValue.category}>
142
150
  <div data-slot="menu-v2-group-label">{sectionProps.section.rawValue.category}</div>
143
151
  </Show>
144
- </Kobalte.Section>
152
+ </Section>
145
153
  )}
146
154
  itemComponent={(itemProps) => (
147
- <Kobalte.Item
155
+ <Item
148
156
  {...itemProps}
149
157
  data-component="menu-v2-item"
150
158
  onPointerEnter={() => move(itemProps.item.rawValue)}
151
159
  onPointerMove={() => move(itemProps.item.rawValue)}
152
160
  onFocus={() => move(itemProps.item.rawValue)}
153
161
  >
154
- <Kobalte.ItemLabel data-slot="menu-v2-item-content" as="span">
162
+ <ItemLabel data-slot="menu-v2-item-content" as="span">
155
163
  {local.children
156
164
  ? local.children(itemProps.item.rawValue)
157
165
  : local.label
158
166
  ? local.label(itemProps.item.rawValue)
159
167
  : String(itemProps.item.rawValue as string)}
160
- </Kobalte.ItemLabel>
161
- <Kobalte.ItemIndicator data-slot="menu-v2-item-indicator" forceMount>
168
+ </ItemLabel>
169
+ <ItemIndicator data-slot="menu-v2-item-indicator" forceMount>
162
170
  <CheckSmall />
163
- </Kobalte.ItemIndicator>
164
- </Kobalte.Item>
171
+ </ItemIndicator>
172
+ </Item>
165
173
  )}
166
174
  onChange={(next) => {
167
175
  const v = next == null ? null : Array.isArray(next) ? ((next[0] as T) ?? null) : (next as T)
@@ -173,10 +181,12 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
173
181
  if (!open) stop()
174
182
  }}
175
183
  >
176
- <Kobalte.Trigger
184
+ <Trigger
177
185
  as="div"
186
+ aria-label={props["aria-label"]}
187
+ aria-labelledby={props["aria-labelledby"]}
178
188
  data-component="select-v2"
179
- data-appearance={local.appearance ?? "base"}
189
+ data-appearance="inline"
180
190
  data-invalid={local.invalid ? "" : undefined}
181
191
  data-numeric={local.numeric ? "" : undefined}
182
192
  disabled={local.disabled}
@@ -187,23 +197,23 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
187
197
  }}
188
198
  >
189
199
  <div data-slot="select-v2-value">
190
- <Kobalte.Value<T> data-slot="select-v2-value-text" class={local.valueClass}>
200
+ <Value<T> data-slot="select-v2-value-text" class={local.valueClass}>
191
201
  {(st) => {
192
202
  const selected = st.selectedOption()
193
203
  if (local.label && selected != null) return local.label(selected)
194
204
  return selected != null ? (selected as string) : ""
195
205
  }}
196
- </Kobalte.Value>
206
+ </Value>
197
207
  </div>
198
208
  <span data-slot="select-v2-chevron" aria-hidden="true">
199
209
  <ChevronDown />
200
210
  </span>
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>
211
+ </Trigger>
212
+ <Portal>
213
+ <Content class={local.contentClass} data-component="menu-v2-content" data-slot="select-v2-content">
214
+ <Listbox data-slot="select-v2-listbox" />
215
+ </Content>
216
+ </Portal>
217
+ </Root>
208
218
  )
209
219
  }
@@ -160,3 +160,113 @@
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,34 @@
1
+ import { Control, Description, ErrorMessage, Input, Label, Root, Thumb } from "@kobalte/core/switch"
2
+ import { Show, splitProps } from "solid-js"
3
+ import type { ComponentProps, ParentProps } from "solid-js"
4
+ import "./switch.css"
5
+
6
+ export interface SwitchProps extends ParentProps<ComponentProps<typeof Root>> {
7
+ // I think we should consolidate - ask designers.
8
+ appearance?: "standard" | "compact"
9
+ hideLabel?: boolean
10
+ description?: string
11
+ }
12
+
13
+ export function Switch(props: SwitchProps) {
14
+ const [local, others] = splitProps(props, ["children", "class", "appearance", "hideLabel", "description"])
15
+ return (
16
+ <Root {...others} class={local.class} data-component="switch" data-appearance={local.appearance ?? "compact"}>
17
+ <Input data-slot="switch-input" />
18
+ <Show when={local.children}>
19
+ {(label) => (
20
+ <Label data-slot="switch-label" classList={{ "sr-only": local.hideLabel }}>
21
+ {label()}
22
+ </Label>
23
+ )}
24
+ </Show>
25
+ <Show when={local.description}>
26
+ <Description data-slot="switch-description">{local.description}</Description>
27
+ </Show>
28
+ <Control data-slot="switch-control">
29
+ <Thumb data-slot="switch-thumb" />
30
+ </Control>
31
+ <ErrorMessage data-slot="switch-error" />
32
+ </Root>
33
+ )
34
+ }
@@ -13,7 +13,7 @@
13
13
  outline: 1px solid transparent;
14
14
  outline-offset: 0;
15
15
  background:
16
- linear-gradient(180deg, var(--v2-alpha-light-2) 0%, var(--v2-alpha-light-0) 100%), var(--v2-background-bg-base);
16
+ linear-gradient(180deg, var(--v2-alpha-light-6) 0%, var(--v2-alpha-light-2) 100%), var(--v2-background-bg-base);
17
17
  box-shadow: var(--v2-elevation-button-neutral);
18
18
  flex: none;
19
19
  align-self: stretch;
@@ -30,7 +30,7 @@
30
30
  [data-component="text-input-v2"]:where(:hover):not([data-disabled], [data-invalid]):not(:focus-within) {
31
31
  background:
32
32
  linear-gradient(0deg, var(--v2-overlay-simple-overlay-hover), var(--v2-overlay-simple-overlay-hover)),
33
- linear-gradient(180deg, var(--v2-alpha-light-2) 0%, var(--v2-alpha-light-0) 100%), var(--v2-background-bg-base);
33
+ linear-gradient(180deg, var(--v2-alpha-light-6) 0%, var(--v2-alpha-light-2) 100%), var(--v2-background-bg-base);
34
34
  }
35
35
 
36
36
  [data-component="text-input-v2"]:where(:focus-within):not([data-disabled], [data-invalid]) {
@@ -92,7 +92,7 @@
92
92
  font-style: normal;
93
93
  font-weight: 440;
94
94
  font-size: 13px;
95
- line-height: 1;
95
+ line-height: var(--line-height-compact);
96
96
  letter-spacing: -0.04px;
97
97
  color: var(--v2-text-text-base);
98
98
  font-variation-settings: "slnt" 0;
@@ -1,9 +1,9 @@
1
1
  import { type ComponentProps, type JSX, Show, splitProps } from "solid-js"
2
- import { Icon } from "./icon"
2
+ import { Icon } from "@opencode-ai/ui/icon"
3
3
  import { useI18n } from "../../context/i18n"
4
- import "./text-input-v2.css"
4
+ import "./text-input.css"
5
5
 
6
- export interface TextInputV2Props extends Omit<ComponentProps<"input">, "type"> {
6
+ export interface TextInputProps extends Omit<ComponentProps<"input">, "type"> {
7
7
  /** Icon or adornment shown before the field value. */
8
8
  leadingIcon?: JSX.Element
9
9
  /** Show the trailing copy action. */
@@ -25,7 +25,7 @@ export interface TextInputV2Props extends Omit<ComponentProps<"input">, "type">
25
25
  type?: ComponentProps<"input">["type"]
26
26
  }
27
27
 
28
- export function TextInputV2(props: TextInputV2Props) {
28
+ export function TextInput(props: TextInputProps) {
29
29
  const i18n = useI18n()
30
30
  const [local, inputProps] = splitProps(props, [
31
31
  "class",