@opencode-ai/ui 0.0.0-dev-202608201855 → 0.0.0-dev-17751

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 (285) 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 +3 -3
  7. package/dist/context/i18n.d.ts +10 -7
  8. package/dist/{components → data-display/accordion}/accordion.d.ts +6 -6
  9. package/dist/{v2/components/avatar-v2.d.ts → data-display/avatar/avatar.d.ts} +1 -1
  10. package/dist/data-display/badge/badge.d.ts +7 -0
  11. package/dist/{components → data-display/diff-changes}/diff-changes.d.ts +2 -1
  12. package/dist/data-display/keybind/keybind.d.ts +7 -0
  13. package/dist/{v2/components/line-comment-v2.d.ts → data-display/line-comment/line-comment.d.ts} +9 -9
  14. package/dist/{v2/components/project-avatar-v2.d.ts → data-display/project-avatar/project-avatar.d.ts} +1 -1
  15. package/dist/feedback/loader/loader.d.ts +3 -0
  16. package/dist/{components → feedback/progress-circle}/progress-circle.d.ts +2 -0
  17. package/dist/feedback/toast/toast.d.ts +57 -0
  18. package/dist/{components → forms/checkbox}/checkbox.d.ts +2 -2
  19. package/dist/{v2/components/field-v2.d.ts → forms/field/field.d.ts} +4 -10
  20. package/dist/forms/radio/radio.d.ts +16 -0
  21. package/dist/{v2/components/select-v2.d.ts → forms/select/select.d.ts} +4 -6
  22. package/dist/{components → forms/switch}/switch.d.ts +4 -2
  23. package/dist/{v2/components/text-input-v2.d.ts → forms/text-input/text-input.d.ts} +3 -3
  24. package/dist/forms/textarea/textarea.d.ts +7 -0
  25. package/dist/i18n/ar.d.ts +0 -2
  26. package/dist/i18n/bg.d.ts +0 -2
  27. package/dist/i18n/br.d.ts +0 -2
  28. package/dist/i18n/bs.d.ts +0 -2
  29. package/dist/i18n/da.d.ts +0 -2
  30. package/dist/i18n/de.d.ts +0 -2
  31. package/dist/i18n/en.d.ts +209 -1
  32. package/dist/i18n/es.d.ts +0 -2
  33. package/dist/i18n/fr.d.ts +0 -2
  34. package/dist/i18n/he.d.ts +197 -0
  35. package/dist/i18n/ja.d.ts +0 -2
  36. package/dist/i18n/km.d.ts +0 -2
  37. package/dist/i18n/ko.d.ts +0 -2
  38. package/dist/i18n/lo.d.ts +0 -2
  39. package/dist/i18n/mk.d.ts +0 -2
  40. package/dist/i18n/mn.d.ts +0 -2
  41. package/dist/i18n/my.d.ts +0 -2
  42. package/dist/i18n/pl.d.ts +0 -2
  43. package/dist/i18n/ru.d.ts +0 -2
  44. package/dist/i18n/sr.d.ts +0 -2
  45. package/dist/i18n/tg.d.ts +0 -2
  46. package/dist/i18n/th.d.ts +0 -2
  47. package/dist/i18n/tr.d.ts +0 -2
  48. package/dist/i18n/zh.d.ts +0 -2
  49. package/dist/i18n/zht.d.ts +0 -2
  50. package/dist/{components/icon.d.ts → icons/icon/additional-icons.d.ts} +8 -8
  51. package/dist/{v2/components → icons/icon}/icon.d.ts +16 -1
  52. package/dist/layout/divider/divider.d.ts +5 -0
  53. package/dist/navigation/menu/menu.d.ts +59 -0
  54. package/dist/{v2/components/segmented-control-v2.d.ts → navigation/segmented-control/segmented-control.d.ts} +5 -5
  55. package/dist/{components → navigation/tabs}/tabs.d.ts +15 -8
  56. package/dist/{v2/components/dialog-v2.d.ts → overlays/dialog/dialog.d.ts} +1 -2
  57. package/dist/overlays/tooltip/tooltip.d.ts +14 -0
  58. package/dist/{components → typography/text-shimmer}/text-shimmer.d.ts +1 -0
  59. package/dist/typography/wordmark/wordmark.d.ts +2 -0
  60. package/package.json +131 -13
  61. package/src/{v2/components/button-v2.tsx → actions/button/button.tsx} +8 -8
  62. package/src/actions/icon-button/icon-button.tsx +32 -0
  63. package/src/{v2/components/split-button-v2.css → actions/split-button/split-button.css} +1 -6
  64. package/src/{v2/components/split-button-v2.tsx → actions/split-button/split-button.tsx} +4 -4
  65. package/src/components/animated-number.css +29 -11
  66. package/src/components/animated-number.tsx +2 -2
  67. package/src/components/card.css +2 -23
  68. package/src/components/card.tsx +4 -4
  69. package/src/components/collapsible.tsx +1 -1
  70. package/src/components/image-preview.tsx +3 -2
  71. package/src/components/list.css +5 -5
  72. package/src/components/list.tsx +7 -5
  73. package/src/components/popover.tsx +3 -2
  74. package/src/components/provider-icon.tsx +1 -1
  75. package/src/components/scroll-view.tsx +5 -20
  76. package/src/components/sticky-accordion-header.tsx +1 -1
  77. package/src/components/text-field.tsx +12 -4
  78. package/src/context/i18n.tsx +17 -14
  79. package/src/{components → data-display/accordion}/accordion.css +1 -26
  80. package/src/{components → data-display/accordion}/accordion.tsx +14 -14
  81. package/src/{v2/components/avatar-v2.tsx → data-display/avatar/avatar.tsx} +1 -1
  82. package/src/{v2/components/badge-v2.css → data-display/badge/badge.css} +19 -0
  83. package/src/{v2/components/badge-v2.tsx → data-display/badge/badge.tsx} +6 -4
  84. package/src/{components → data-display/diff-changes}/diff-changes.css +22 -19
  85. package/src/{v2/components/diff-changes-v2.tsx → data-display/diff-changes/diff-changes.tsx} +7 -2
  86. package/src/{v2/components/keybind-v2.css → data-display/keybind/keybind.css} +1 -1
  87. package/src/{v2/components/keybind-v2.tsx → data-display/keybind/keybind.tsx} +3 -3
  88. package/src/{v2/components/line-comment-v2.tsx → data-display/line-comment/line-comment.tsx} +17 -15
  89. package/src/{v2/components/project-avatar-v2.tsx → data-display/project-avatar/project-avatar.tsx} +1 -1
  90. package/src/{v2/components/loader-v2.tsx → feedback/loader/loader.tsx} +2 -2
  91. package/src/feedback/progress-circle/progress-circle.css +28 -0
  92. package/src/feedback/progress-circle/progress-circle.tsx +64 -0
  93. package/src/{v2/components/toast-v2.tsx → feedback/toast/toast.tsx} +60 -58
  94. package/src/{components → forms/checkbox}/checkbox.css +1 -7
  95. package/src/{components → forms/checkbox}/checkbox.tsx +13 -13
  96. package/src/{v2/components/field-v2.tsx → forms/field/field.tsx} +9 -11
  97. package/src/{v2/components/radio-v2.tsx → forms/radio/radio.tsx} +30 -20
  98. package/src/{v2/components/select-v2.css → forms/select/select.css} +2 -8
  99. package/src/{v2/components/select-v2.tsx → forms/select/select.tsx} +38 -32
  100. package/src/{v2/components/switch-v2.css → forms/switch/switch.css} +110 -0
  101. package/src/forms/switch/switch.tsx +34 -0
  102. package/src/{v2/components/text-input-v2.tsx → forms/text-input/text-input.tsx} +4 -4
  103. package/src/{v2/components/textarea-v2.tsx → forms/textarea/textarea.tsx} +3 -3
  104. package/src/hooks/create-auto-scroll.tsx +20 -0
  105. package/src/i18n/am.ts +0 -2
  106. package/src/i18n/ar.ts +0 -2
  107. package/src/i18n/az.ts +0 -2
  108. package/src/i18n/bg.ts +0 -2
  109. package/src/i18n/bn.ts +0 -2
  110. package/src/i18n/br.ts +0 -2
  111. package/src/i18n/bs.ts +0 -2
  112. package/src/i18n/ca.ts +0 -2
  113. package/src/i18n/cs.ts +0 -2
  114. package/src/i18n/da.ts +0 -2
  115. package/src/i18n/de.ts +0 -2
  116. package/src/i18n/dv.ts +0 -2
  117. package/src/i18n/dz.ts +0 -2
  118. package/src/i18n/el.ts +0 -2
  119. package/src/i18n/en.ts +18 -4
  120. package/src/i18n/es.ts +0 -2
  121. package/src/i18n/et.ts +0 -2
  122. package/src/i18n/fa.ts +0 -2
  123. package/src/i18n/fi.ts +0 -2
  124. package/src/i18n/fo.ts +0 -2
  125. package/src/i18n/fr.ts +0 -2
  126. package/src/i18n/he.ts +199 -0
  127. package/src/i18n/hi.ts +0 -2
  128. package/src/i18n/hr.ts +0 -2
  129. package/src/i18n/hu.ts +0 -2
  130. package/src/i18n/hy.ts +0 -2
  131. package/src/i18n/id.ts +0 -2
  132. package/src/i18n/is.ts +0 -2
  133. package/src/i18n/it.ts +0 -2
  134. package/src/i18n/ja.ts +0 -2
  135. package/src/i18n/ka.ts +0 -2
  136. package/src/i18n/km.ts +0 -2
  137. package/src/i18n/ko.ts +0 -2
  138. package/src/i18n/lo.ts +0 -2
  139. package/src/i18n/lt.ts +0 -2
  140. package/src/i18n/lv.ts +0 -2
  141. package/src/i18n/mk.ts +0 -2
  142. package/src/i18n/mn.ts +0 -2
  143. package/src/i18n/ms.ts +0 -2
  144. package/src/i18n/my.ts +0 -2
  145. package/src/i18n/ne.ts +0 -2
  146. package/src/i18n/nl.ts +0 -2
  147. package/src/i18n/no.ts +0 -2
  148. package/src/i18n/pa.ts +0 -2
  149. package/src/i18n/pl.ts +0 -2
  150. package/src/i18n/ro.ts +0 -2
  151. package/src/i18n/ru.ts +0 -2
  152. package/src/i18n/si.ts +0 -2
  153. package/src/i18n/sk.ts +0 -2
  154. package/src/i18n/sl.ts +0 -2
  155. package/src/i18n/sq.ts +0 -2
  156. package/src/i18n/sr.ts +0 -2
  157. package/src/i18n/sv.ts +0 -2
  158. package/src/i18n/tg.ts +0 -2
  159. package/src/i18n/th.ts +0 -2
  160. package/src/i18n/tk.ts +0 -2
  161. package/src/i18n/tr.ts +0 -2
  162. package/src/i18n/uk.ts +0 -2
  163. package/src/i18n/ur.ts +0 -2
  164. package/src/i18n/uz.ts +0 -2
  165. package/src/i18n/vi.ts +0 -2
  166. package/src/i18n/zh.ts +0 -2
  167. package/src/i18n/zht.ts +0 -2
  168. package/src/{components/icon.tsx → icons/icon/additional-icons.ts} +8 -74
  169. package/src/icons/icon/icon.css +3 -0
  170. package/src/{v2/components → icons/icon}/icon.tsx +42 -9
  171. package/src/{v2/components/divider-v2.tsx → layout/divider/divider.tsx} +3 -3
  172. package/src/{v2/components/menu-v2.css → navigation/menu/menu.css} +121 -0
  173. package/src/{v2/components/menu-v2.tsx → navigation/menu/menu.tsx} +96 -32
  174. package/src/{v2/components/segmented-control-v2.tsx → navigation/segmented-control/segmented-control.tsx} +9 -8
  175. package/src/{v2/components/tabs-v2.css → navigation/tabs/tabs-current.css} +24 -9
  176. package/src/{components → navigation/tabs}/tabs.css +39 -229
  177. package/src/navigation/tabs/tabs.tsx +194 -0
  178. package/src/{v2/components/dialog-v2.css → overlays/dialog/dialog.css} +3 -0
  179. package/src/{v2/components/dialog-v2.tsx → overlays/dialog/dialog.tsx} +11 -13
  180. package/src/{v2/components/tooltip-v2.css → overlays/tooltip/tooltip.css} +26 -0
  181. package/src/{v2/components/tooltip-v2.tsx → overlays/tooltip/tooltip.tsx} +18 -14
  182. package/src/styles/index.css +4 -20
  183. package/src/styles/tailwind/index.css +15 -1
  184. package/src/{v2/styles → styles/tokens}/theme.css +0 -12
  185. package/src/theme/context.tsx +19 -11
  186. package/src/theme/themes/oc-2.json +1 -1
  187. package/src/{components → typography/text-shimmer}/text-shimmer.css +2 -1
  188. package/src/{components → typography/text-shimmer}/text-shimmer.tsx +1 -0
  189. package/src/{v2/components/wordmark-v2.tsx → typography/wordmark/wordmark.tsx} +1 -1
  190. package/dist/components/avatar.d.ts +0 -9
  191. package/dist/components/button.d.ts +0 -9
  192. package/dist/components/dialog.d.ts +0 -12
  193. package/dist/components/dropdown-menu.d.ts +0 -80
  194. package/dist/components/icon-button.d.ts +0 -10
  195. package/dist/components/keybind.d.ts +0 -6
  196. package/dist/components/radio-group.d.ts +0 -16
  197. package/dist/components/select.d.ts +0 -21
  198. package/dist/components/tag.d.ts +0 -5
  199. package/dist/components/toast.d.ts +0 -56
  200. package/dist/components/tooltip.d.ts +0 -17
  201. package/dist/v2/components/accordion-v2.d.ts +0 -26
  202. package/dist/v2/components/badge-v2.d.ts +0 -6
  203. package/dist/v2/components/button-v2.d.ts +0 -10
  204. package/dist/v2/components/checkbox-v2.d.ts +0 -10
  205. package/dist/v2/components/diff-changes-v2.d.ts +0 -11
  206. package/dist/v2/components/divider-v2.d.ts +0 -5
  207. package/dist/v2/components/icon-button-v2.d.ts +0 -11
  208. package/dist/v2/components/inline-input-v2.d.ts +0 -21
  209. package/dist/v2/components/keybind-v2.d.ts +0 -7
  210. package/dist/v2/components/loader-v2.d.ts +0 -3
  211. package/dist/v2/components/menu-v2.d.ts +0 -52
  212. package/dist/v2/components/progress-circle-v2.d.ts +0 -8
  213. package/dist/v2/components/radio-v2.d.ts +0 -16
  214. package/dist/v2/components/split-button-v2.d.ts +0 -5
  215. package/dist/v2/components/switch-v2.d.ts +0 -7
  216. package/dist/v2/components/tabs-v2.d.ts +0 -34
  217. package/dist/v2/components/text-shimmer-v2.d.ts +0 -9
  218. package/dist/v2/components/textarea-v2.d.ts +0 -7
  219. package/dist/v2/components/toast-v2.d.ts +0 -57
  220. package/dist/v2/components/tooltip-v2.d.ts +0 -13
  221. package/dist/v2/components/wordmark-v2.d.ts +0 -2
  222. package/src/components/avatar.css +0 -49
  223. package/src/components/avatar.tsx +0 -55
  224. package/src/components/button.css +0 -194
  225. package/src/components/button.tsx +0 -33
  226. package/src/components/dialog.css +0 -181
  227. package/src/components/dialog.tsx +0 -72
  228. package/src/components/diff-changes.tsx +0 -115
  229. package/src/components/dropdown-menu.css +0 -135
  230. package/src/components/dropdown-menu.tsx +0 -308
  231. package/src/components/icon-button.css +0 -181
  232. package/src/components/icon-button.tsx +0 -29
  233. package/src/components/icon.css +0 -39
  234. package/src/components/keybind.css +0 -18
  235. package/src/components/keybind.tsx +0 -20
  236. package/src/components/progress-circle.css +0 -16
  237. package/src/components/progress-circle.tsx +0 -64
  238. package/src/components/radio-group.css +0 -187
  239. package/src/components/radio-group.tsx +0 -83
  240. package/src/components/select.css +0 -201
  241. package/src/components/select.tsx +0 -174
  242. package/src/components/switch.css +0 -136
  243. package/src/components/switch.tsx +0 -29
  244. package/src/components/tabs.tsx +0 -126
  245. package/src/components/tag.css +0 -37
  246. package/src/components/tag.tsx +0 -22
  247. package/src/components/toast.css +0 -236
  248. package/src/components/toast.tsx +0 -185
  249. package/src/components/tooltip.css +0 -74
  250. package/src/components/tooltip.tsx +0 -163
  251. package/src/v2/components/accordion-v2.css +0 -139
  252. package/src/v2/components/accordion-v2.tsx +0 -86
  253. package/src/v2/components/checkbox-v2.css +0 -184
  254. package/src/v2/components/checkbox-v2.tsx +0 -65
  255. package/src/v2/components/diff-changes-v2.css +0 -26
  256. package/src/v2/components/icon-button-v2.tsx +0 -37
  257. package/src/v2/components/inline-input-v2.css +0 -225
  258. package/src/v2/components/inline-input-v2.tsx +0 -107
  259. package/src/v2/components/progress-circle-v2.css +0 -13
  260. package/src/v2/components/progress-circle-v2.tsx +0 -52
  261. package/src/v2/components/switch-v2.tsx +0 -28
  262. package/src/v2/components/tabs-v2.tsx +0 -149
  263. package/src/v2/components/text-shimmer-v2.css +0 -125
  264. package/src/v2/components/text-shimmer-v2.tsx +0 -63
  265. /package/dist/{components → forms/inline-input}/inline-input.d.ts +0 -0
  266. /package/dist/{v2/components → navigation}/tab-state-indicator.d.ts +0 -0
  267. /package/src/{v2/components/button-v2.css → actions/button/button.css} +0 -0
  268. /package/src/{v2/components/icon-button-v2.css → actions/icon-button/icon-button.css} +0 -0
  269. /package/src/{v2/components/avatar-v2.css → data-display/avatar/avatar.css} +0 -0
  270. /package/src/{v2/components/line-comment-v2.css → data-display/line-comment/line-comment.css} +0 -0
  271. /package/src/{v2/components/project-avatar-v2.css → data-display/project-avatar/project-avatar.css} +0 -0
  272. /package/src/{v2/components/loader-v2.css → feedback/loader/loader.css} +0 -0
  273. /package/src/{v2/components/toast-v2.css → feedback/toast/toast.css} +0 -0
  274. /package/src/{v2/components/field-v2.css → forms/field/field.css} +0 -0
  275. /package/src/{components → forms/inline-input}/inline-input.css +0 -0
  276. /package/src/{components → forms/inline-input}/inline-input.tsx +0 -0
  277. /package/src/{v2/components/radio-v2.css → forms/radio/radio.css} +0 -0
  278. /package/src/{v2/components/text-input-v2.css → forms/text-input/text-input.css} +0 -0
  279. /package/src/{v2/components/textarea-v2.css → forms/textarea/textarea.css} +0 -0
  280. /package/src/{v2/components/divider-v2.css → layout/divider/divider.css} +0 -0
  281. /package/src/{v2/components/segmented-control-v2.css → navigation/segmented-control/segmented-control.css} +0 -0
  282. /package/src/{v2/components → navigation}/tab-state-indicator.tsx +0 -0
  283. /package/src/{v2/components/file-tree-v2.css → styles/file-tree.css} +0 -0
  284. /package/src/{v2/styles → styles/tokens}/colors.css +0 -0
  285. /package/src/{v2/styles/tailwind.css → styles/tokens/index.css} +0 -0
@@ -0,0 +1,59 @@
1
+ import { DropdownMenu } from "@kobalte/core/dropdown-menu";
2
+ import { ContextMenu } from "@kobalte/core/context-menu";
3
+ import { type ComponentProps, type JSX, type ParentProps } from "solid-js";
4
+ import "./menu.css";
5
+ export type MenuAppearance = "standard" | "compact";
6
+ export interface MenuItemProps extends ComponentProps<typeof DropdownMenu.Item> {
7
+ shortcut?: JSX.Element | string;
8
+ badge?: JSX.Element | string;
9
+ }
10
+ declare function MenuItem(props: ParentProps<MenuItemProps>): JSX.Element;
11
+ export interface MenuCheckboxItemProps extends ComponentProps<typeof DropdownMenu.CheckboxItem> {
12
+ shortcut?: JSX.Element | string;
13
+ badge?: JSX.Element | string;
14
+ }
15
+ declare function MenuCheckboxItem(props: ParentProps<MenuCheckboxItemProps>): JSX.Element;
16
+ export interface MenuRadioItemProps extends ComponentProps<typeof DropdownMenu.RadioItem> {
17
+ shortcut?: JSX.Element | string;
18
+ badge?: JSX.Element | string;
19
+ }
20
+ declare function MenuRadioItem(props: ParentProps<MenuRadioItemProps>): JSX.Element;
21
+ export interface MenuSubTriggerProps extends ComponentProps<typeof DropdownMenu.SubTrigger> {
22
+ shortcut?: JSX.Element | string;
23
+ badge?: JSX.Element | string;
24
+ }
25
+ declare function MenuSubTrigger(props: ParentProps<MenuSubTriggerProps>): JSX.Element;
26
+ declare function MenuSubContent(props: ComponentProps<typeof DropdownMenu.SubContent>): JSX.Element;
27
+ declare function MenuGroupLabel(props: ComponentProps<typeof DropdownMenu.GroupLabel>): JSX.Element;
28
+ declare function MenuSeparator(props: ComponentProps<typeof DropdownMenu.Separator>): JSX.Element;
29
+ declare function MenuContent(props: ComponentProps<typeof DropdownMenu.Content>): JSX.Element;
30
+ export interface MenuProps extends ComponentProps<typeof DropdownMenu> {
31
+ appearance?: MenuAppearance;
32
+ }
33
+ declare function MenuRoot(props: MenuProps): JSX.Element;
34
+ export interface MenuContextProps extends ComponentProps<typeof ContextMenu> {
35
+ appearance?: MenuAppearance;
36
+ }
37
+ declare function MenuContextRoot(props: MenuContextProps): JSX.Element;
38
+ declare function MenuContextContent(props: ComponentProps<typeof ContextMenu.Content>): JSX.Element;
39
+ export declare const Menu: typeof MenuRoot & {
40
+ Trigger: typeof import("@kobalte/core/dropdown-menu").Trigger;
41
+ Portal: typeof import("@kobalte/core/context-menu").Portal;
42
+ Content: typeof MenuContent;
43
+ Item: typeof MenuItem;
44
+ CheckboxItem: typeof MenuCheckboxItem;
45
+ RadioGroup: typeof import("@kobalte/core/context-menu").RadioGroup;
46
+ RadioItem: typeof MenuRadioItem;
47
+ Group: typeof import("@kobalte/core/context-menu").Group;
48
+ GroupLabel: typeof MenuGroupLabel;
49
+ Separator: typeof MenuSeparator;
50
+ Sub: typeof import("@kobalte/core/context-menu").Sub;
51
+ SubTrigger: typeof MenuSubTrigger;
52
+ SubContent: typeof MenuSubContent;
53
+ Context: typeof MenuContextRoot & {
54
+ Trigger: typeof import("@kobalte/core/context-menu").Trigger;
55
+ Portal: typeof import("@kobalte/core/context-menu").Portal;
56
+ Content: typeof MenuContextContent;
57
+ };
58
+ };
59
+ export {};
@@ -1,8 +1,8 @@
1
1
  import { type JSX, type ParentProps } from "solid-js";
2
2
  import type { ComponentProps } from "solid-js";
3
- import "./segmented-control-v2.css";
3
+ import "./segmented-control.css";
4
4
  type OnChange = (value: string | null) => void;
5
- export type SegmentedControlV2Props = Omit<ComponentProps<"div">, "onChange"> & ParentProps<{
5
+ export type SegmentedControlProps = Omit<ComponentProps<"div">, "onChange"> & ParentProps<{
6
6
  /** Selected value when controlled (including `null` when empty). Omit key for uncontrolled. */
7
7
  value?: string | null;
8
8
  /** Initial value when uncontrolled. */
@@ -12,10 +12,10 @@ export type SegmentedControlV2Props = Omit<ComponentProps<"div">, "onChange"> &
12
12
  allowDeselect?: boolean;
13
13
  disabled?: boolean;
14
14
  }>;
15
- export declare function SegmentedControlV2(props: SegmentedControlV2Props): JSX.Element;
16
- export type SegmentedControlItemV2Props = Omit<ComponentProps<"button">, "type" | "children"> & ParentProps<{
15
+ export declare function SegmentedControl(props: SegmentedControlProps): JSX.Element;
16
+ export type SegmentedControlItemProps = Omit<ComponentProps<"button">, "type" | "children"> & ParentProps<{
17
17
  value: string;
18
18
  children: JSX.Element;
19
19
  }>;
20
- export declare function SegmentedControlItemV2(props: SegmentedControlItemV2Props): JSX.Element;
20
+ export declare function SegmentedControlItem(props: SegmentedControlItemProps): JSX.Element;
21
21
  export {};
@@ -1,29 +1,36 @@
1
- import { Tabs as Kobalte } from "@kobalte/core/tabs";
1
+ import { Content, List, Root, Trigger } from "@kobalte/core/tabs";
2
2
  import { type JSX } from "solid-js";
3
- import type { ComponentProps, ParentProps, Component } from "solid-js";
4
- export interface TabsProps extends ComponentProps<typeof Kobalte> {
5
- variant?: "normal" | "alt" | "pill" | "settings";
3
+ import type { Component, ComponentProps, ParentProps } from "solid-js";
4
+ import "./tabs-current.css";
5
+ export type TabsVariant = "panel" | "underline" | "surface" | "line" | "pill" | "settings";
6
+ export interface TabsProps extends ComponentProps<typeof Root> {
7
+ variant?: TabsVariant;
6
8
  orientation?: "horizontal" | "vertical";
7
9
  }
8
- export interface TabsListProps extends ComponentProps<typeof Kobalte.List> {
10
+ export interface TabsListProps extends ComponentProps<typeof List> {
9
11
  }
10
- export interface TabsTriggerProps extends ComponentProps<typeof Kobalte.Trigger> {
12
+ export interface TabsTriggerProps extends ComponentProps<typeof Trigger> {
11
13
  classes?: {
12
14
  button?: string;
13
15
  };
14
- hideCloseButton?: boolean;
15
16
  closeButton?: JSX.Element;
17
+ hideCloseButton?: boolean;
16
18
  onMiddleClick?: () => void;
19
+ subtext?: JSX.Element | string;
20
+ }
21
+ export interface TabsCloseButtonProps extends ComponentProps<"button"> {
17
22
  }
18
- export interface TabsContentProps extends ComponentProps<typeof Kobalte.Content> {
23
+ export interface TabsContentProps extends ComponentProps<typeof Content> {
19
24
  }
20
25
  declare function TabsRoot(props: TabsProps): JSX.Element;
21
26
  declare function TabsList(props: TabsListProps): JSX.Element;
22
27
  declare function TabsTrigger(props: ParentProps<TabsTriggerProps>): JSX.Element;
28
+ declare function TabsCloseButton(props: TabsCloseButtonProps): JSX.Element;
23
29
  declare function TabsContent(props: ParentProps<TabsContentProps>): JSX.Element;
24
30
  export declare const Tabs: typeof TabsRoot & {
25
31
  List: typeof TabsList;
26
32
  Trigger: typeof TabsTrigger;
33
+ CloseButton: typeof TabsCloseButton;
27
34
  Content: typeof TabsContent;
28
35
  SectionTitle: Component<{
29
36
  children?: JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { type ComponentProps, type JSXElement, type ParentProps } from "solid-js";
2
- import "./dialog-v2.css";
2
+ import "./dialog.css";
3
3
  export interface DialogProps extends ParentProps {
4
4
  size?: "normal" | "large" | "x-large";
5
5
  variant?: "default" | "settings";
@@ -24,4 +24,3 @@ export declare function DialogTitle(props: ParentProps): import("solid-js").JSX.
24
24
  export declare function DialogTitleGroup(props: DialogTitleGroupProps): import("solid-js").JSX.Element;
25
25
  export declare function DialogHeader(props: DialogHeaderProps): import("solid-js").JSX.Element;
26
26
  export declare function Dialog(props: DialogProps): import("solid-js").JSX.Element;
27
- export declare const DialogV2: typeof Dialog;
@@ -0,0 +1,14 @@
1
+ import { Root } from "@kobalte/core/tooltip";
2
+ import { type JSX } from "solid-js";
3
+ import type { ComponentProps } from "solid-js";
4
+ import "./tooltip.css";
5
+ export interface TooltipProps extends ComponentProps<typeof Root> {
6
+ value: JSX.Element;
7
+ appearance?: "standard" | "compact";
8
+ class?: string;
9
+ contentClass?: string;
10
+ contentStyle?: JSX.CSSProperties;
11
+ inactive?: boolean;
12
+ forceOpen?: boolean;
13
+ }
14
+ export declare function Tooltip(props: TooltipProps): JSX.Element;
@@ -1,4 +1,5 @@
1
1
  import { type ValidComponent } from "solid-js";
2
+ import "./text-shimmer.css";
2
3
  export declare const TextShimmer: <T extends ValidComponent = "span">(props: {
3
4
  text: string;
4
5
  class?: string;
@@ -0,0 +1,2 @@
1
+ import { type ComponentProps } from "solid-js";
2
+ export declare function Wordmark(props: Pick<ComponentProps<"svg">, "class">): import("solid-js").JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencode-ai/ui",
3
- "version": "0.0.0-dev-202608201855",
3
+ "version": "0.0.0-dev-17751",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -34,6 +34,133 @@
34
34
  ],
35
35
  "exports": {
36
36
  "./package.json": "./package.json",
37
+ "./accordion": {
38
+ "types": "./dist/data-display/accordion/accordion.d.ts",
39
+ "import": "./src/data-display/accordion/accordion.tsx"
40
+ },
41
+ "./avatar": {
42
+ "types": "./dist/data-display/avatar/avatar.d.ts",
43
+ "import": "./src/data-display/avatar/avatar.tsx"
44
+ },
45
+ "./badge": {
46
+ "types": "./dist/data-display/badge/badge.d.ts",
47
+ "import": "./src/data-display/badge/badge.tsx"
48
+ },
49
+ "./button": {
50
+ "types": "./dist/actions/button/button.d.ts",
51
+ "import": "./src/actions/button/button.tsx"
52
+ },
53
+ "./button.css": "./src/actions/button/button.css",
54
+ "./checkbox": {
55
+ "types": "./dist/forms/checkbox/checkbox.d.ts",
56
+ "import": "./src/forms/checkbox/checkbox.tsx"
57
+ },
58
+ "./dialog": {
59
+ "types": "./dist/overlays/dialog/dialog.d.ts",
60
+ "import": "./src/overlays/dialog/dialog.tsx"
61
+ },
62
+ "./diff-changes": {
63
+ "types": "./dist/data-display/diff-changes/diff-changes.d.ts",
64
+ "import": "./src/data-display/diff-changes/diff-changes.tsx"
65
+ },
66
+ "./divider": {
67
+ "types": "./dist/layout/divider/divider.d.ts",
68
+ "import": "./src/layout/divider/divider.tsx"
69
+ },
70
+ "./field": {
71
+ "types": "./dist/forms/field/field.d.ts",
72
+ "import": "./src/forms/field/field.tsx"
73
+ },
74
+ "./file-tree.css": "./src/styles/file-tree.css",
75
+ "./icon": {
76
+ "types": "./dist/icons/icon/icon.d.ts",
77
+ "import": "./src/icons/icon/icon.tsx"
78
+ },
79
+ "./icon-button": {
80
+ "types": "./dist/actions/icon-button/icon-button.d.ts",
81
+ "import": "./src/actions/icon-button/icon-button.tsx"
82
+ },
83
+ "./inline-input": {
84
+ "types": "./dist/forms/inline-input/inline-input.d.ts",
85
+ "import": "./src/forms/inline-input/inline-input.tsx"
86
+ },
87
+ "./keybind": {
88
+ "types": "./dist/data-display/keybind/keybind.d.ts",
89
+ "import": "./src/data-display/keybind/keybind.tsx"
90
+ },
91
+ "./line-comment": {
92
+ "types": "./dist/data-display/line-comment/line-comment.d.ts",
93
+ "import": "./src/data-display/line-comment/line-comment.tsx"
94
+ },
95
+ "./loader": {
96
+ "types": "./dist/feedback/loader/loader.d.ts",
97
+ "import": "./src/feedback/loader/loader.tsx"
98
+ },
99
+ "./menu": {
100
+ "types": "./dist/navigation/menu/menu.d.ts",
101
+ "import": "./src/navigation/menu/menu.tsx"
102
+ },
103
+ "./progress-circle": {
104
+ "types": "./dist/feedback/progress-circle/progress-circle.d.ts",
105
+ "import": "./src/feedback/progress-circle/progress-circle.tsx"
106
+ },
107
+ "./project-avatar": {
108
+ "types": "./dist/data-display/project-avatar/project-avatar.d.ts",
109
+ "import": "./src/data-display/project-avatar/project-avatar.tsx"
110
+ },
111
+ "./radio": {
112
+ "types": "./dist/forms/radio/radio.d.ts",
113
+ "import": "./src/forms/radio/radio.tsx"
114
+ },
115
+ "./segmented-control": {
116
+ "types": "./dist/navigation/segmented-control/segmented-control.d.ts",
117
+ "import": "./src/navigation/segmented-control/segmented-control.tsx"
118
+ },
119
+ "./select": {
120
+ "types": "./dist/forms/select/select.d.ts",
121
+ "import": "./src/forms/select/select.tsx"
122
+ },
123
+ "./split-button": {
124
+ "types": "./dist/actions/split-button/split-button.d.ts",
125
+ "import": "./src/actions/split-button/split-button.tsx"
126
+ },
127
+ "./switch": {
128
+ "types": "./dist/forms/switch/switch.d.ts",
129
+ "import": "./src/forms/switch/switch.tsx"
130
+ },
131
+ "./tab-state-indicator": {
132
+ "types": "./dist/navigation/tab-state-indicator.d.ts",
133
+ "import": "./src/navigation/tab-state-indicator.tsx"
134
+ },
135
+ "./tabs": {
136
+ "types": "./dist/navigation/tabs/tabs.d.ts",
137
+ "import": "./src/navigation/tabs/tabs.tsx"
138
+ },
139
+ "./text-input": {
140
+ "types": "./dist/forms/text-input/text-input.d.ts",
141
+ "import": "./src/forms/text-input/text-input.tsx"
142
+ },
143
+ "./text-input.css": "./src/forms/text-input/text-input.css",
144
+ "./textarea": {
145
+ "types": "./dist/forms/textarea/textarea.d.ts",
146
+ "import": "./src/forms/textarea/textarea.tsx"
147
+ },
148
+ "./text-shimmer": {
149
+ "types": "./dist/typography/text-shimmer/text-shimmer.d.ts",
150
+ "import": "./src/typography/text-shimmer/text-shimmer.tsx"
151
+ },
152
+ "./toast": {
153
+ "types": "./dist/feedback/toast/toast.d.ts",
154
+ "import": "./src/feedback/toast/toast.tsx"
155
+ },
156
+ "./tooltip": {
157
+ "types": "./dist/overlays/tooltip/tooltip.d.ts",
158
+ "import": "./src/overlays/tooltip/tooltip.tsx"
159
+ },
160
+ "./wordmark": {
161
+ "types": "./dist/typography/wordmark/wordmark.d.ts",
162
+ "import": "./src/typography/wordmark/wordmark.tsx"
163
+ },
37
164
  "./*": {
38
165
  "types": "./dist/components/*.d.ts",
39
166
  "import": "./src/components/*.tsx"
@@ -63,6 +190,7 @@
63
190
  "import": "./src/storybook/fixtures.ts"
64
191
  },
65
192
  "./styles": "./src/styles/index.css",
193
+ "./styles/tokens": "./src/styles/tokens/index.css",
66
194
  "./styles/tailwind": "./src/styles/tailwind/index.css",
67
195
  "./theme": {
68
196
  "types": "./dist/theme/index.d.ts",
@@ -89,13 +217,7 @@
89
217
  "import": "./src/components/app-icons/types.ts"
90
218
  },
91
219
  "./fonts/*": "./src/assets/fonts/*",
92
- "./audio/*": "./src/assets/audio/*",
93
- "./v2/*.css": "./src/v2/components/*.css",
94
- "./v2/*": {
95
- "types": "./dist/v2/components/*.d.ts",
96
- "import": "./src/v2/components/*.tsx"
97
- },
98
- "./v2/styles/*": "./src/v2/styles/*"
220
+ "./audio/*": "./src/assets/audio/*"
99
221
  },
100
222
  "scripts": {
101
223
  "build": "rm -rf dist && tsc -p tsconfig.build.json",
@@ -124,8 +246,6 @@
124
246
  "dependencies": {
125
247
  "@kobalte/core": "0.13.11",
126
248
  "@pierre/diffs": "1.2.10",
127
- "@shikijs/transformers": "3.9.2",
128
- "@solid-primitives/bounds": "0.1.3",
129
249
  "@solid-primitives/event-listener": "2.4.5",
130
250
  "@solid-primitives/media": "2.3.3",
131
251
  "@solid-primitives/resize-observer": "2.1.3",
@@ -133,14 +253,12 @@
133
253
  "diff": "8.0.2",
134
254
  "dompurify": "3.3.1",
135
255
  "fuzzysort": "3.1.0",
136
- "katex": "0.16.27",
256
+ "katex": "0.16.47",
137
257
  "luxon": "3.6.1",
138
258
  "marked": "18.0.7",
139
259
  "marked-shiki": "1.2.1",
140
260
  "morphdom": "2.7.8",
141
261
  "motion": "12.34.5",
142
- "motion-dom": "12.34.3",
143
- "motion-utils": "12.29.2",
144
262
  "remeda": "2.26.0",
145
263
  "remend": "1.3.0",
146
264
  "shiki": "4.2.0",
@@ -1,21 +1,21 @@
1
- import { Button as Kobalte } from "@kobalte/core/button"
1
+ import { Root } from "@kobalte/core/button"
2
2
  import { type ComponentProps, Show, createMemo, splitProps } from "solid-js"
3
- import { Icon, type IconProps } from "./icon"
4
- import "./button-v2.css"
3
+ import { Icon, type IconProps } from "@opencode-ai/ui/icon"
4
+ import "./button.css"
5
5
 
6
- export interface ButtonV2Props
7
- extends ComponentProps<typeof Kobalte>,
6
+ export interface ButtonProps
7
+ extends ComponentProps<typeof Root>,
8
8
  Pick<ComponentProps<"button">, "class" | "classList" | "children"> {
9
9
  size?: "small" | "normal" | "large"
10
10
  variant?: "neutral" | "danger" | "warning" | "outline" | "contrast" | "ghost" | "ghost-muted" | "loading"
11
11
  icon?: IconProps["name"]
12
12
  }
13
13
 
14
- export function ButtonV2(props: ButtonV2Props) {
14
+ export function Button(props: ButtonProps) {
15
15
  const [split, rest] = splitProps(props, ["variant", "size", "icon", "class", "classList"])
16
16
  const resolvedIcon = createMemo(() => split.icon)
17
17
  return (
18
- <Kobalte
18
+ <Root
19
19
  {...rest}
20
20
  data-component="button-v2"
21
21
  data-size={split.size || "normal"}
@@ -30,6 +30,6 @@ export function ButtonV2(props: ButtonV2Props) {
30
30
  <Icon name={resolvedIcon()!} />
31
31
  </Show>
32
32
  {props.children}
33
- </Kobalte>
33
+ </Root>
34
34
  )
35
35
  }
@@ -0,0 +1,32 @@
1
+ import { Root } from "@kobalte/core/button"
2
+ import { type ComponentProps, splitProps } from "solid-js"
3
+ import { JSX } from "solid-js"
4
+ import "./icon-button.css"
5
+
6
+ export interface IconButtonProps
7
+ extends ComponentProps<typeof Root>,
8
+ Pick<ComponentProps<"button">, "class" | "classList"> {
9
+ icon?: JSX.Element
10
+ size?: "small" | "normal" | "large"
11
+ variant?: "neutral" | "contrast" | "ghost" | "ghost-muted"
12
+ state?: "rest" | "hover" | "pressed"
13
+ }
14
+
15
+ export function IconButton(props: ComponentProps<"button"> & IconButtonProps) {
16
+ const [local, rest] = splitProps(props, ["variant", "size", "icon", "class", "classList", "state"])
17
+ return (
18
+ <Root
19
+ {...rest}
20
+ data-component="icon-button-v2"
21
+ data-size={local.size || "normal"}
22
+ data-variant={local.variant || "neutral"}
23
+ data-state={local.state}
24
+ classList={{
25
+ ...local.classList,
26
+ [local.class ?? ""]: !!local.class,
27
+ }}
28
+ >
29
+ {local.icon}
30
+ </Root>
31
+ )
32
+ }
@@ -87,13 +87,8 @@
87
87
  flex-shrink: 0;
88
88
  }
89
89
 
90
- [data-component="menu-v2-content"].open-in-app-v2-menu [data-component="icon"] {
90
+ [data-component="menu-v2-content"].open-in-app-v2-menu [data-slot="icon-svg"] {
91
91
  width: 16px;
92
92
  height: 16px;
93
93
  flex-shrink: 0;
94
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-v2.css"
2
+ import "./split-button.css"
3
3
 
4
- export function SplitButtonV2(props: ParentProps<ComponentProps<"div">>) {
4
+ export function SplitButton(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 SplitButtonV2(props: ParentProps<ComponentProps<"div">>) {
17
17
  )
18
18
  }
19
19
 
20
- export function SplitButtonV2Action(props: ComponentProps<"button">) {
20
+ export function SplitButtonAction(props: ComponentProps<"button">) {
21
21
  const [split, rest] = splitProps(props, ["class", "classList"])
22
22
  return (
23
23
  <button
@@ -32,7 +32,7 @@ export function SplitButtonV2Action(props: ComponentProps<"button">) {
32
32
  )
33
33
  }
34
34
 
35
- export function SplitButtonV2MenuTrigger(props: ComponentProps<"button">) {
35
+ export function SplitButtonMenuTrigger(props: ComponentProps<"button">) {
36
36
  const [split, rest] = splitProps(props, ["class", "classList"])
37
37
  return (
38
38
  <button
@@ -17,7 +17,7 @@
17
17
  }
18
18
 
19
19
  [data-slot="animated-number-digit"] {
20
- display: inline-block;
20
+ display: inline-grid;
21
21
  width: 1ch;
22
22
  height: 1em;
23
23
  line-height: 1em;
@@ -41,19 +41,12 @@
41
41
  mask-repeat: no-repeat;
42
42
  }
43
43
 
44
+ [data-slot="animated-number-static"],
44
45
  [data-slot="animated-number-strip"] {
45
- display: inline-flex;
46
- flex-direction: column;
47
- transform: translateY(calc(var(--animated-number-offset, 10) * -1em));
48
- transition-property: transform;
49
- transition-duration: var(--animated-number-duration, 560ms);
50
- transition-timing-function: var(--tool-motion-ease, cubic-bezier(0.22, 1, 0.36, 1));
51
- }
52
-
53
- [data-slot="animated-number-strip"][data-animating="false"] {
54
- transition-duration: 0ms;
46
+ grid-area: 1 / 1;
55
47
  }
56
48
 
49
+ [data-slot="animated-number-static"],
57
50
  [data-slot="animated-number-cell"] {
58
51
  display: inline-flex;
59
52
  align-items: center;
@@ -62,6 +55,24 @@
62
55
  height: 1em;
63
56
  line-height: 1em;
64
57
  }
58
+
59
+ [data-slot="animated-number-digit"][data-animating="true"] [data-slot="animated-number-static"] {
60
+ visibility: hidden;
61
+ }
62
+
63
+ [data-slot="animated-number-strip"] {
64
+ display: inline-flex;
65
+ flex-direction: column;
66
+ margin-top: calc(var(--animated-number-offset, 10) * -1em);
67
+ transition-property: margin-top;
68
+ transition-duration: var(--animated-number-duration, 560ms);
69
+ transition-timing-function: var(--tool-motion-ease, cubic-bezier(0.22, 1, 0.36, 1));
70
+ }
71
+
72
+ [data-slot="animated-number-digit"][data-animating="false"] [data-slot="animated-number-strip"] {
73
+ transition-duration: 0ms;
74
+ visibility: hidden;
75
+ }
65
76
  }
66
77
 
67
78
  @media (prefers-reduced-motion: reduce) {
@@ -71,5 +82,12 @@
71
82
 
72
83
  [data-component="animated-number"] [data-slot="animated-number-strip"] {
73
84
  transition-duration: 0ms;
85
+ visibility: hidden;
86
+ }
87
+
88
+ [data-component="animated-number"]
89
+ [data-slot="animated-number-digit"][data-animating]
90
+ [data-slot="animated-number-static"] {
91
+ visibility: visible;
74
92
  }
75
93
  }
@@ -43,10 +43,10 @@ function Digit(props: { value: number; direction: 1 | -1 }) {
43
43
  )
44
44
 
45
45
  return (
46
- <span data-slot="animated-number-digit">
46
+ <span data-slot="animated-number-digit" data-animating={animating() ? "true" : "false"}>
47
+ <span data-slot="animated-number-static">{props.value}</span>
47
48
  <span
48
49
  data-slot="animated-number-strip"
49
- data-animating={animating() ? "true" : "false"}
50
50
  onTransitionEnd={() => {
51
51
  setState("animating", false)
52
52
  setState("step", (value) => normalize(value) + 10)
@@ -58,7 +58,7 @@
58
58
  gap: var(--card-gap);
59
59
  }
60
60
 
61
- :where([data-slot="card-title"]) [data-component="icon"] {
61
+ :where([data-slot="card-title"]) [data-slot="icon-svg"] {
62
62
  color: var(--card-accent);
63
63
  }
64
64
 
@@ -71,7 +71,7 @@
71
71
  flex: 0 0 auto;
72
72
  }
73
73
 
74
- :where([data-slot="card-title-icon"][data-placeholder]) [data-component="icon"] {
74
+ :where([data-slot="card-title-icon"][data-placeholder]) [data-slot="icon-svg"] {
75
75
  color: var(--v2-text-text-faint);
76
76
  }
77
77
 
@@ -92,24 +92,3 @@
92
92
  padding-left: var(--card-indent);
93
93
  }
94
94
  }
95
-
96
- body:not([data-new-layout]) [data-component="card"] {
97
- color: var(--text-strong);
98
- --card-accent: var(--icon-active);
99
-
100
- :where([data-card="title"], [data-slot="card-title"]) {
101
- color: var(--text-strong);
102
- }
103
-
104
- :where([data-slot="card-title-icon"][data-placeholder]) [data-component="icon"] {
105
- color: var(--text-weak);
106
- }
107
-
108
- :where([data-card="description"], [data-slot="card-description"]) {
109
- color: var(--text-base);
110
- }
111
-
112
- &[data-variant="error"] {
113
- --card-accent: var(--icon-critical-base) !important;
114
- }
115
- }
@@ -1,5 +1,5 @@
1
- import { type ComponentProps, splitProps } from "solid-js"
2
- import { Icon, type IconProps } from "./icon"
1
+ import { type ComponentProps, Show, splitProps } from "solid-js"
2
+ import { Icon, type IconProps } from "@opencode-ai/ui/icon"
3
3
 
4
4
  type Variant = "normal" | "error" | "warning" | "success" | "info"
5
5
 
@@ -80,11 +80,11 @@ export function CardTitle(props: CardTitleProps) {
80
80
  [split.class ?? ""]: !!split.class,
81
81
  }}
82
82
  >
83
- {show() ? (
83
+ <Show when={show()}>
84
84
  <span data-slot="card-title-icon" data-placeholder={placeholder() || undefined}>
85
85
  <Icon name={name() ?? "dash"} size="small" />
86
86
  </span>
87
- ) : null}
87
+ </Show>
88
88
  {split.children}
89
89
  </div>
90
90
  )
@@ -1,6 +1,6 @@
1
1
  import { Collapsible as Kobalte, CollapsibleRootProps } from "@kobalte/core/collapsible"
2
2
  import { ComponentProps, ParentProps, splitProps } from "solid-js"
3
- import { Icon } from "./icon"
3
+ import { Icon } from "@opencode-ai/ui/icon"
4
4
 
5
5
  export interface CollapsibleProps extends ParentProps<CollapsibleRootProps> {
6
6
  class?: string
@@ -1,6 +1,7 @@
1
1
  import { Dialog as Kobalte } from "@kobalte/core/dialog"
2
2
  import { useI18n } from "../context/i18n"
3
- import { IconButton } from "./icon-button"
3
+ import { Icon } from "@opencode-ai/ui/icon"
4
+ import { IconButton } from "@opencode-ai/ui/icon-button"
4
5
 
5
6
  export interface ImagePreviewProps {
6
7
  src: string
@@ -17,7 +18,7 @@ export function ImagePreview(props: ImagePreviewProps) {
17
18
  <Kobalte.CloseButton
18
19
  data-slot="image-preview-close"
19
20
  as={IconButton}
20
- icon="close"
21
+ icon={<Icon name="close" />}
21
22
  variant="ghost"
22
23
  aria-label={i18n.t("ui.common.close")}
23
24
  />