@opencode-ai/ui 0.0.0-dev-19142 → 0.0.0-dev-202609050337

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 (297) 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 +31 -5
  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 -1
  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 -48
  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 -5
  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/v2/components/icon-button-v2.tsx +37 -0
  225. package/src/{icons/icon → v2/components}/icon.tsx +12 -80
  226. package/src/v2/components/inline-input-v2.css +225 -0
  227. package/src/v2/components/inline-input-v2.tsx +107 -0
  228. package/src/{data-display/keybind/keybind.css → v2/components/keybind-v2.css} +1 -1
  229. package/src/{data-display/keybind/keybind.tsx → v2/components/keybind-v2.tsx} +3 -3
  230. package/src/{data-display/line-comment/line-comment.css → v2/components/line-comment-v2.css} +4 -4
  231. package/src/{data-display/line-comment/line-comment.tsx → v2/components/line-comment-v2.tsx} +15 -17
  232. package/src/{feedback/loader/loader.tsx → v2/components/loader-v2.tsx} +2 -2
  233. package/src/{navigation/menu/menu.css → v2/components/menu-v2.css} +2 -124
  234. package/src/{navigation/menu/menu.tsx → v2/components/menu-v2.tsx} +32 -96
  235. package/src/v2/components/progress-circle-v2.css +13 -0
  236. package/src/v2/components/progress-circle-v2.tsx +52 -0
  237. package/src/{data-display/project-avatar/project-avatar.tsx → v2/components/project-avatar-v2.tsx} +1 -1
  238. package/src/{forms/radio/radio.tsx → v2/components/radio-v2.tsx} +20 -30
  239. package/src/{navigation/segmented-control/segmented-control.css → v2/components/segmented-control-v2.css} +1 -1
  240. package/src/{navigation/segmented-control/segmented-control.tsx → v2/components/segmented-control-v2.tsx} +8 -9
  241. package/src/{forms/select/select.css → v2/components/select-v2.css} +8 -2
  242. package/src/{forms/select/select.tsx → v2/components/select-v2.tsx} +32 -40
  243. package/src/{actions/split-button/split-button.css → v2/components/split-button-v2.css} +6 -2
  244. package/src/{actions/split-button/split-button.tsx → v2/components/split-button-v2.tsx} +4 -4
  245. package/src/{forms/switch/switch.css → v2/components/switch-v2.css} +0 -110
  246. package/src/v2/components/switch-v2.tsx +28 -0
  247. package/src/{navigation/tabs/tabs-current.css → v2/components/tabs-v2.css} +10 -25
  248. package/src/v2/components/tabs-v2.tsx +149 -0
  249. package/src/{forms/text-input/text-input.css → v2/components/text-input-v2.css} +3 -3
  250. package/src/{forms/text-input/text-input.tsx → v2/components/text-input-v2.tsx} +4 -4
  251. package/src/v2/components/text-shimmer-v2.css +125 -0
  252. package/src/v2/components/text-shimmer-v2.tsx +63 -0
  253. package/src/{forms/textarea/textarea.tsx → v2/components/textarea-v2.tsx} +3 -3
  254. package/src/{feedback/toast/toast.tsx → v2/components/toast-v2.tsx} +58 -60
  255. package/src/{overlays/tooltip/tooltip.css → v2/components/tooltip-v2.css} +0 -26
  256. package/src/{overlays/tooltip/tooltip.tsx → v2/components/tooltip-v2.tsx} +17 -24
  257. package/src/{typography/wordmark/wordmark.tsx → v2/components/wordmark-v2.tsx} +2 -2
  258. package/src/{styles/tokens → v2/styles}/colors.css +8 -8
  259. package/src/{styles/tokens → v2/styles}/theme.css +16 -20
  260. package/dist/actions/button/button.d.ts +0 -10
  261. package/dist/actions/icon-button/icon-button.d.ts +0 -11
  262. package/dist/actions/split-button/split-button.d.ts +0 -5
  263. package/dist/context/marked-base.d.ts +0 -3
  264. package/dist/data-display/badge/badge.d.ts +0 -7
  265. package/dist/data-display/keybind/keybind.d.ts +0 -7
  266. package/dist/feedback/loader/loader.d.ts +0 -3
  267. package/dist/feedback/toast/toast.d.ts +0 -57
  268. package/dist/forms/radio/radio.d.ts +0 -16
  269. package/dist/forms/textarea/textarea.d.ts +0 -7
  270. package/dist/i18n/he.d.ts +0 -197
  271. package/dist/layout/divider/divider.d.ts +0 -5
  272. package/dist/navigation/menu/menu.d.ts +0 -59
  273. package/dist/overlays/tooltip/tooltip.d.ts +0 -15
  274. package/dist/typography/wordmark/wordmark.d.ts +0 -2
  275. package/src/actions/icon-button/icon-button.tsx +0 -32
  276. package/src/context/marked-base.tsx +0 -27
  277. package/src/feedback/progress-circle/progress-circle.css +0 -28
  278. package/src/feedback/progress-circle/progress-circle.tsx +0 -64
  279. package/src/forms/switch/switch.tsx +0 -34
  280. package/src/i18n/he.ts +0 -199
  281. package/src/icons/icon/icon.css +0 -3
  282. package/src/navigation/tabs/tabs.tsx +0 -194
  283. /package/dist/{forms/inline-input → components}/inline-input.d.ts +0 -0
  284. /package/dist/{navigation → v2/components}/tab-state-indicator.d.ts +0 -0
  285. /package/src/{forms/inline-input → components}/inline-input.css +0 -0
  286. /package/src/{forms/inline-input → components}/inline-input.tsx +0 -0
  287. /package/src/{data-display/avatar/avatar.css → v2/components/avatar-v2.css} +0 -0
  288. /package/src/{layout/divider/divider.css → v2/components/divider-v2.css} +0 -0
  289. /package/src/{styles/file-tree.css → v2/components/file-tree-v2.css} +0 -0
  290. /package/src/{actions/icon-button/icon-button.css → v2/components/icon-button-v2.css} +0 -0
  291. /package/src/{feedback/loader/loader.css → v2/components/loader-v2.css} +0 -0
  292. /package/src/{data-display/project-avatar/project-avatar.css → v2/components/project-avatar-v2.css} +0 -0
  293. /package/src/{forms/radio/radio.css → v2/components/radio-v2.css} +0 -0
  294. /package/src/{navigation → v2/components}/tab-state-indicator.tsx +0 -0
  295. /package/src/{forms/textarea/textarea.css → v2/components/textarea-v2.css} +0 -0
  296. /package/src/{feedback/toast/toast.css → v2/components/toast-v2.css} +0 -0
  297. /package/src/{styles/tokens/index.css → v2/styles/tailwind.css} +0 -0
@@ -39,32 +39,6 @@
39
39
  }
40
40
  }
41
41
 
42
- [data-component="tooltip-v2"][data-appearance="standard"] {
43
- display: block;
44
- max-width: 320px;
45
- padding: 2px 8px;
46
- border: 1px solid var(--border-weak-base, rgba(0, 0, 0, 0.07));
47
- border-radius: var(--radius-sm);
48
- background: var(--surface-float-base);
49
- color: var(--text-invert-strong);
50
- box-shadow: var(--shadow-md);
51
- font-family: var(--font-family-sans);
52
- font-size: var(--font-size-small);
53
- font-style: normal;
54
- font-weight: var(--font-weight-medium);
55
- line-height: var(--line-height-large);
56
- letter-spacing: var(--letter-spacing-normal);
57
- font-variant-numeric: normal;
58
- font-variation-settings: normal;
59
- user-select: text;
60
- animation: none;
61
-
62
- &[data-closed]:not([data-force-open="true"]) {
63
- opacity: 0;
64
- animation: none;
65
- }
66
- }
67
-
68
42
  @keyframes tooltipV2In {
69
43
  from {
70
44
  opacity: 0;
@@ -1,21 +1,19 @@
1
- import { Content, Portal, Root, Trigger } from "@kobalte/core/tooltip"
2
- import { createEffect, Match, onCleanup, splitProps, Switch, untrack, type JSX } from "solid-js"
1
+ import { Tooltip as KobalteTooltip } from "@kobalte/core/tooltip"
2
+ import { createEffect, Match, onCleanup, splitProps, Switch, type JSX } from "solid-js"
3
3
  import type { ComponentProps } from "solid-js"
4
4
  import { createStore } from "solid-js/store"
5
- import "./tooltip.css"
5
+ import "./tooltip-v2.css"
6
6
 
7
- export interface TooltipProps extends ComponentProps<typeof Root> {
7
+ export interface TooltipV2Props extends ComponentProps<typeof KobalteTooltip> {
8
8
  value: JSX.Element
9
- appearance?: "standard" | "compact"
10
9
  class?: string
11
10
  contentClass?: string
12
11
  contentStyle?: JSX.CSSProperties
13
12
  inactive?: boolean
14
13
  forceOpen?: boolean
15
- triggerTabIndex?: number
16
14
  }
17
15
 
18
- export function Tooltip(props: TooltipProps) {
16
+ export function TooltipV2(props: TooltipV2Props) {
19
17
  let ref: HTMLDivElement | undefined
20
18
  const [state, setState] = createStore({
21
19
  open: false,
@@ -24,19 +22,16 @@ export function Tooltip(props: TooltipProps) {
24
22
  })
25
23
  const [local, others] = splitProps(props, [
26
24
  "children",
27
- "appearance",
28
25
  "class",
29
26
  "contentClass",
30
27
  "contentStyle",
31
28
  "inactive",
32
29
  "forceOpen",
33
- "triggerTabIndex",
34
30
  "ignoreSafeArea",
35
31
  "value",
36
32
  ])
37
33
 
38
34
  const close = () => setState("open", false)
39
- const controlled = () => local.forceOpen !== undefined
40
35
 
41
36
  const inside = () => {
42
37
  const active = document.activeElement
@@ -45,7 +40,7 @@ export function Tooltip(props: TooltipProps) {
45
40
  }
46
41
 
47
42
  const drop = (expand = state.expand) => {
48
- if (expand || !state.block) return
43
+ if (expand) return
49
44
  if (ref?.matches(":hover")) return
50
45
  if (inside()) return
51
46
  setState("block", false)
@@ -74,7 +69,7 @@ export function Tooltip(props: TooltipProps) {
74
69
 
75
70
  createEffect(() => {
76
71
  if (!ref) return
77
- untrack(sync)
72
+ sync()
78
73
  const obs = new MutationObserver(sync)
79
74
  obs.observe(ref, {
80
75
  subtree: true,
@@ -91,16 +86,16 @@ export function Tooltip(props: TooltipProps) {
91
86
  <Switch>
92
87
  <Match when={local.inactive}>{local.children}</Match>
93
88
  <Match when={true}>
94
- <Root
89
+ <KobalteTooltip
95
90
  gutter={4}
96
91
  openDelay={400}
97
92
  skipDelayDuration={300}
98
93
  {...others}
99
94
  closeDelay={0}
100
95
  ignoreSafeArea={local.ignoreSafeArea ?? true}
101
- open={controlled() ? local.forceOpen : state.open}
96
+ open={local.forceOpen || state.open}
102
97
  onOpenChange={(open) => {
103
- if (controlled()) return
98
+ if (local.forceOpen) return
104
99
  if (state.block && open) return
105
100
  if (justClickedTrigger) {
106
101
  justClickedTrigger = false
@@ -109,10 +104,9 @@ export function Tooltip(props: TooltipProps) {
109
104
  setState("open", open)
110
105
  }}
111
106
  >
112
- <Trigger
107
+ <KobalteTooltip.Trigger
113
108
  ref={ref}
114
109
  as="div"
115
- tabIndex={local.triggerTabIndex}
116
110
  data-component="tooltip-v2-trigger"
117
111
  class={local.class}
118
112
  onPointerDownCapture={arm}
@@ -124,15 +118,14 @@ export function Tooltip(props: TooltipProps) {
124
118
  onFocusOut={() => requestAnimationFrame(() => drop())}
125
119
  >
126
120
  {local.children}
127
- </Trigger>
128
- <Portal>
129
- <Content
121
+ </KobalteTooltip.Trigger>
122
+ <KobalteTooltip.Portal>
123
+ <KobalteTooltip.Content
130
124
  ref={(el) => {
131
125
  const theme = ref?.closest("[data-theme]")?.getAttribute("data-theme")
132
126
  if (theme) el.setAttribute("data-theme", theme)
133
127
  }}
134
128
  data-component="tooltip-v2"
135
- data-appearance={local.appearance ?? "compact"}
136
129
  data-placement={props.placement}
137
130
  data-force-open={local.forceOpen}
138
131
  class={local.contentClass}
@@ -145,9 +138,9 @@ export function Tooltip(props: TooltipProps) {
145
138
  }}
146
139
  >
147
140
  {local.value}
148
- </Content>
149
- </Portal>
150
- </Root>
141
+ </KobalteTooltip.Content>
142
+ </KobalteTooltip.Portal>
143
+ </KobalteTooltip>
151
144
  </Match>
152
145
  </Switch>
153
146
  )
@@ -1,6 +1,6 @@
1
1
  import { createUniqueId, type ComponentProps } from "solid-js"
2
2
 
3
- export function Wordmark(props: Pick<ComponentProps<"svg">, "class">) {
3
+ export function WordmarkV2(props: Pick<ComponentProps<"svg">, "class">) {
4
4
  const mask = createUniqueId()
5
5
  const maskGradient = createUniqueId()
6
6
 
@@ -11,7 +11,7 @@ export function Wordmark(props: Pick<ComponentProps<"svg">, "class">) {
11
11
  fill="none"
12
12
  classList={{ [props.class ?? ""]: !!props.class }}
13
13
  >
14
- <g opacity="0.6" class="[[data-color-scheme=dark]_&]:opacity-100">
14
+ <g opacity="0.6">
15
15
  <g mask={`url(#${mask})`}>
16
16
  <g opacity="0.16">
17
17
  <path
@@ -128,18 +128,18 @@
128
128
  --v2-cyan-1200: #00353fff;
129
129
 
130
130
  /* ── Blue ── */
131
- --v2-blue-100: #f5f8ffff;
132
- --v2-blue-200: #ecf1feff;
131
+ --v2-blue-100: #ecf1feff;
132
+ --v2-blue-200: #d7e2fcff;
133
133
  --v2-blue-300: #c3d4fdff;
134
134
  --v2-blue-400: #a2bcffff;
135
135
  --v2-blue-500: #7698fdff;
136
136
  --v2-blue-600: #3b5cf6ff;
137
- --v2-blue-700: #0b34f4ff;
138
- --v2-blue-800: #3250dfff;
139
- --v2-blue-900: #2c47c8ff;
140
- --v2-blue-1000: #263fa9ff;
141
- --v2-blue-1100: #22388fff;
142
- --v2-blue-1200: #021945ff;
137
+ --v2-blue-700: #3250dfff;
138
+ --v2-blue-800: #2c47c8ff;
139
+ --v2-blue-900: #263fa9ff;
140
+ --v2-blue-1000: #22388fff;
141
+ --v2-blue-1100: #1c2e70ff;
142
+ --v2-blue-1200: #1b2852ff;
143
143
 
144
144
  /* ── Purple ── */
145
145
  --v2-purple-100: #ebecfeff;
@@ -1,4 +1,16 @@
1
1
  @layer theme {
2
+ html[data-theme="oc-2"] body:not([data-new-layout]) {
3
+ --text-diff-add-base: light-dark(#167517, #c4ffc0);
4
+ --text-diff-delete-base: light-dark(#fa3012, #ec2f14);
5
+ --syntax-comment: light-dark(#7a7a7a, #8f8f8f);
6
+ --syntax-keyword: light-dark(#a753ae, #edb2f1);
7
+ --syntax-string: #00ceb9;
8
+ --syntax-primitive: light-dark(#034cff, #8cb0ff);
9
+ --syntax-property: light-dark(#a753ae, #fab283);
10
+ --syntax-type: light-dark(#8a6f00, #fcd53a);
11
+ --syntax-critical: light-dark(#ff8c00, #fab283);
12
+ }
13
+
2
14
  :root {
3
15
  color-scheme: light;
4
16
 
@@ -13,7 +25,6 @@
13
25
  --v2-background-bg-contrast: var(--v2-grey-1000);
14
26
  --v2-background-bg-button-neutral: var(--v2-grey-50);
15
27
  --v2-background-bg-accent: var(--v2-blue-600);
16
- --v2-background-bg-code-path: var(--v2-cyan-100);
17
28
 
18
29
  /* ── Text ── */
19
30
  --v2-text-text-base: var(--v2-grey-1100);
@@ -24,12 +35,10 @@
24
35
  --v2-text-text-accent: var(--v2-blue-600);
25
36
  --v2-text-text-accent-hover: var(--v2-blue-700);
26
37
  --v2-text-text-code-accent: var(--v2-blue-900);
27
- --v2-text-text-code-path: var(--v2-blue-900);
28
38
 
29
39
  /* ── Icon ── */
30
40
  --v2-icon-icon-base: var(--v2-grey-800);
31
41
  --v2-icon-icon-muted: var(--v2-grey-600);
32
- --v2-icon-icon-faint: var(--v2-grey-500);
33
42
  --v2-icon-icon-inverse: var(--v2-grey-50);
34
43
  --v2-icon-icon-contrast: var(--v2-grey-100);
35
44
  --v2-icon-icon-accent: var(--v2-blue-600);
@@ -64,7 +73,7 @@
64
73
  --v2-state-bg-danger: var(--v2-red-100);
65
74
  --v2-state-fg-danger: var(--v2-red-800);
66
75
  --v2-state-border-danger: var(--v2-red-300);
67
- --v2-state-bg-info: var(--v2-blue-200);
76
+ --v2-state-bg-info: var(--v2-blue-100);
68
77
  --v2-state-fg-info: var(--v2-blue-800);
69
78
  --v2-state-border-info: var(--v2-blue-300);
70
79
 
@@ -131,12 +140,8 @@
131
140
  --v2-illustration-illustration-layer-02: var(--v2-grey-400);
132
141
  --v2-illustration-illustration-layer-03: var(--v2-grey-500);
133
142
 
134
- --font-family-text: var(--font-family-sans);
135
- --v2-font-family-sans: var(--font-family-sans);
136
- --v2-font-family-code: var(--font-family-mono);
137
- --line-height-tight: 12px;
138
- --line-height-compact: 16px;
139
- --line-height-base: 20px;
143
+ --font-family-text: "Inter", sans-serif;
144
+ --v2-font-family-sans: "Inter", sans-serif;
140
145
  }
141
146
 
142
147
  /* OS preference fallback (no JS needed) */
@@ -153,7 +158,6 @@
153
158
  --v2-background-bg-contrast: var(--v2-grey-700);
154
159
  --v2-background-bg-button-neutral: var(--v2-alpha-light-6);
155
160
  --v2-background-bg-accent: var(--v2-blue-600);
156
- --v2-background-bg-code-path: var(--v2-cyan-1200);
157
161
 
158
162
  --v2-text-text-base: var(--v2-grey-200);
159
163
  --v2-text-text-muted: var(--v2-grey-500);
@@ -163,11 +167,9 @@
163
167
  --v2-text-text-accent: var(--v2-blue-400);
164
168
  --v2-text-text-accent-hover: var(--v2-blue-300);
165
169
  --v2-text-text-code-accent: var(--v2-blue-400);
166
- --v2-text-text-code-path: var(--v2-blue-300);
167
170
 
168
171
  --v2-icon-icon-base: var(--v2-grey-400);
169
172
  --v2-icon-icon-muted: var(--v2-grey-600);
170
- --v2-icon-icon-faint: var(--v2-grey-500);
171
173
  --v2-icon-icon-inverse: var(--v2-grey-1000);
172
174
  --v2-icon-icon-contrast: var(--v2-grey-200);
173
175
  --v2-icon-icon-accent: var(--v2-blue-400);
@@ -269,7 +271,6 @@
269
271
  --v2-background-bg-contrast: var(--v2-grey-1000);
270
272
  --v2-background-bg-button-neutral: var(--v2-grey-50);
271
273
  --v2-background-bg-accent: var(--v2-blue-600);
272
- --v2-background-bg-code-path: var(--v2-cyan-100);
273
274
 
274
275
  --v2-text-text-base: var(--v2-grey-1100);
275
276
  --v2-text-text-muted: var(--v2-grey-700);
@@ -279,11 +280,9 @@
279
280
  --v2-text-text-accent: var(--v2-blue-600);
280
281
  --v2-text-text-accent-hover: var(--v2-blue-700);
281
282
  --v2-text-text-code-accent: var(--v2-blue-900);
282
- --v2-text-text-code-path: var(--v2-blue-900);
283
283
 
284
284
  --v2-icon-icon-base: var(--v2-grey-800);
285
285
  --v2-icon-icon-muted: var(--v2-grey-600);
286
- --v2-icon-icon-faint: var(--v2-grey-500);
287
286
  --v2-icon-icon-inverse: var(--v2-grey-50);
288
287
  --v2-icon-icon-contrast: var(--v2-grey-100);
289
288
  --v2-icon-icon-accent: var(--v2-blue-600);
@@ -315,7 +314,7 @@
315
314
  --v2-state-bg-danger: var(--v2-red-100);
316
315
  --v2-state-fg-danger: var(--v2-red-800);
317
316
  --v2-state-border-danger: var(--v2-red-300);
318
- --v2-state-bg-info: var(--v2-blue-200);
317
+ --v2-state-bg-info: var(--v2-blue-100);
319
318
  --v2-state-fg-info: var(--v2-blue-800);
320
319
  --v2-state-border-info: var(--v2-blue-300);
321
320
 
@@ -394,7 +393,6 @@
394
393
  --v2-background-bg-contrast: var(--v2-grey-700);
395
394
  --v2-background-bg-button-neutral: var(--v2-alpha-light-6);
396
395
  --v2-background-bg-accent: var(--v2-blue-600);
397
- --v2-background-bg-code-path: var(--v2-cyan-1200);
398
396
 
399
397
  --v2-text-text-base: var(--v2-grey-100);
400
398
  --v2-text-text-muted: var(--v2-grey-500);
@@ -404,11 +402,9 @@
404
402
  --v2-text-text-accent: var(--v2-blue-400);
405
403
  --v2-text-text-accent-hover: var(--v2-blue-300);
406
404
  --v2-text-text-code-accent: var(--v2-blue-400);
407
- --v2-text-text-code-path: var(--v2-blue-300);
408
405
 
409
406
  --v2-icon-icon-base: var(--v2-grey-400);
410
407
  --v2-icon-icon-muted: var(--v2-grey-600);
411
- --v2-icon-icon-faint: var(--v2-grey-500);
412
408
  --v2-icon-icon-inverse: var(--v2-grey-1100);
413
409
  --v2-icon-icon-contrast: var(--v2-grey-100);
414
410
  --v2-icon-icon-accent: var(--v2-blue-400);
@@ -1,10 +0,0 @@
1
- import { Root } from "@kobalte/core/button";
2
- import { type ComponentProps } from "solid-js";
3
- import { type IconProps } from "@opencode-ai/ui/icon";
4
- import "./button.css";
5
- export interface ButtonProps extends ComponentProps<typeof Root>, Pick<ComponentProps<"button">, "class" | "classList" | "children"> {
6
- size?: "small" | "normal" | "large";
7
- variant?: "neutral" | "danger" | "warning" | "outline" | "contrast" | "ghost" | "ghost-muted" | "ghost-faint" | "loading";
8
- icon?: IconProps["name"];
9
- }
10
- export declare function Button(props: ButtonProps): import("solid-js").JSX.Element;
@@ -1,11 +0,0 @@
1
- import { Root } from "@kobalte/core/button";
2
- import { type ComponentProps } from "solid-js";
3
- import { JSX } from "solid-js";
4
- import "./icon-button.css";
5
- export interface IconButtonProps extends ComponentProps<typeof Root>, Pick<ComponentProps<"button">, "class" | "classList"> {
6
- icon?: JSX.Element;
7
- size?: "small" | "normal" | "large";
8
- variant?: "neutral" | "contrast" | "ghost" | "ghost-muted";
9
- state?: "rest" | "hover" | "pressed";
10
- }
11
- export declare function IconButton(props: ComponentProps<"button"> & IconButtonProps): JSX.Element;
@@ -1,5 +0,0 @@
1
- import { type ComponentProps, type ParentProps } from "solid-js";
2
- import "./split-button.css";
3
- export declare function SplitButton(props: ParentProps<ComponentProps<"div">>): import("solid-js").JSX.Element;
4
- export declare function SplitButtonAction(props: ComponentProps<"button">): import("solid-js").JSX.Element;
5
- export declare function SplitButtonMenuTrigger(props: ComponentProps<"button">): import("solid-js").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { Marked } from "marked";
2
- export declare function createMarkdownBase(): Marked<string, string>;
3
- export declare function parseSmallMarkdown(text: string): string | undefined;
@@ -1,7 +0,0 @@
1
- import { type ComponentProps } from "solid-js";
2
- import "./badge.css";
3
- export interface BadgeProps extends ComponentProps<"span"> {
4
- appearance?: "standard" | "compact";
5
- variant?: "neutral" | "accent";
6
- }
7
- export declare function Badge(props: BadgeProps): import("solid-js").JSX.Element;
@@ -1,7 +0,0 @@
1
- import { type ComponentProps } from "solid-js";
2
- import "./keybind.css";
3
- export interface KeybindProps extends ComponentProps<"div"> {
4
- keys: string[];
5
- variant?: "neutral" | "ghost";
6
- }
7
- export declare function Keybind(props: KeybindProps): import("solid-js").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { type ComponentProps } from "solid-js";
2
- import "./loader.css";
3
- export declare function Loader(props: ComponentProps<"svg">): import("solid-js").JSX.Element;
@@ -1,57 +0,0 @@
1
- import { type ToasterProps } from "solid-sonner";
2
- import type { ComponentProps, JSX } from "solid-js";
3
- import "../../actions/button/button.css";
4
- import "./toast.css";
5
- export interface ToastRegionProps extends ToasterProps {
6
- }
7
- declare function ToastRegion(props: ToastRegionProps): JSX.Element;
8
- export interface ToastRootComponentProps {
9
- toastId: number;
10
- children?: JSX.Element;
11
- }
12
- declare function ToastRoot(props: ToastRootComponentProps): JSX.Element;
13
- declare function ToastIcon(props: ComponentProps<"div">): JSX.Element;
14
- declare function ToastContent(props: ComponentProps<"div">): JSX.Element;
15
- declare function ToastTitle(props: ComponentProps<"div">): JSX.Element;
16
- declare function ToastDescription(props: ComponentProps<"div">): JSX.Element;
17
- declare function ToastActions(props: ComponentProps<"div">): JSX.Element;
18
- declare function ToastCloseButton(props: ComponentProps<"button">): JSX.Element;
19
- export declare const Toast: typeof ToastRoot & {
20
- Region: typeof ToastRegion;
21
- Icon: typeof ToastIcon;
22
- Content: typeof ToastContent;
23
- Title: typeof ToastTitle;
24
- Description: typeof ToastDescription;
25
- Actions: typeof ToastActions;
26
- CloseButton: typeof ToastCloseButton;
27
- };
28
- export declare const toaster: {
29
- show(render: (props: {
30
- toastId: number;
31
- }) => JSX.Element, options?: {
32
- duration?: number;
33
- persistent?: boolean;
34
- }): number;
35
- dismiss(toastId?: number): string | number | undefined;
36
- };
37
- export interface ToastAction {
38
- label: string;
39
- variant?: "primary" | "secondary";
40
- onClick: "dismiss" | (() => void);
41
- }
42
- export interface ToastOptions {
43
- title?: string;
44
- description?: string;
45
- icon?: JSX.Element;
46
- variant?: "default" | "success" | "error" | "loading";
47
- duration?: number;
48
- persistent?: boolean;
49
- actions?: ToastAction[];
50
- }
51
- export declare function showToast(options: ToastOptions | string): number;
52
- export interface ToastPromiseOptions<T, U = unknown> {
53
- loading?: JSX.Element;
54
- success?: (data: T) => JSX.Element;
55
- error?: (error: U) => JSX.Element;
56
- }
57
- export {};
@@ -1,16 +0,0 @@
1
- import { Item, Root } from "@kobalte/core/radio-group";
2
- import { type JSX } from "solid-js";
3
- import type { ComponentProps, ParentProps } from "solid-js";
4
- import "./radio.css";
5
- export interface RadioGroupProps extends ParentProps<ComponentProps<typeof Root>> {
6
- label?: JSX.Element;
7
- description?: JSX.Element;
8
- hideLabel?: boolean;
9
- }
10
- export declare function RadioGroup(props: RadioGroupProps): JSX.Element;
11
- export interface RadioItemProps extends ComponentProps<typeof Item> {
12
- label: JSX.Element;
13
- description?: JSX.Element;
14
- hideLabel?: boolean;
15
- }
16
- export declare function RadioItem(props: RadioItemProps): JSX.Element;
@@ -1,7 +0,0 @@
1
- import { type ComponentProps } from "solid-js";
2
- import "./textarea.css";
3
- export interface TextareaProps extends ComponentProps<"textarea"> {
4
- /** Error styling for the field and value text. */
5
- invalid?: boolean;
6
- }
7
- export declare function Textarea(props: TextareaProps): import("solid-js").JSX.Element;