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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/dist/{data-display/accordion → components}/accordion.d.ts +6 -6
  2. package/dist/components/avatar.d.ts +9 -0
  3. package/dist/components/button.d.ts +9 -0
  4. package/dist/components/card.d.ts +1 -1
  5. package/dist/{forms/checkbox → components}/checkbox.d.ts +2 -2
  6. package/dist/components/dialog.d.ts +12 -0
  7. package/dist/{data-display/diff-changes → components}/diff-changes.d.ts +1 -2
  8. package/dist/components/dropdown-menu.d.ts +80 -0
  9. package/dist/components/icon-button.d.ts +10 -0
  10. package/dist/{icons/icon/additional-icons.d.ts → components/icon.d.ts} +8 -8
  11. package/dist/components/keybind.d.ts +6 -0
  12. package/dist/components/list.d.ts +1 -1
  13. package/dist/{feedback/progress-circle → components}/progress-circle.d.ts +0 -2
  14. package/dist/components/radio-group.d.ts +16 -0
  15. package/dist/components/scroll-view.d.ts +3 -3
  16. package/dist/components/select.d.ts +21 -0
  17. package/dist/{forms/switch → components}/switch.d.ts +2 -4
  18. package/dist/{navigation/tabs → components}/tabs.d.ts +8 -15
  19. package/dist/components/tag.d.ts +5 -0
  20. package/dist/{typography/text-shimmer → components}/text-shimmer.d.ts +0 -1
  21. package/dist/components/toast.d.ts +56 -0
  22. package/dist/components/tooltip.d.ts +17 -0
  23. package/dist/context/i18n.d.ts +7 -10
  24. package/dist/context/marked-parser.d.ts +2 -1
  25. package/dist/hooks/use-filtered-list.d.ts +0 -9
  26. package/dist/i18n/ar.d.ts +2 -0
  27. package/dist/i18n/bg.d.ts +2 -0
  28. package/dist/i18n/br.d.ts +2 -0
  29. package/dist/i18n/bs.d.ts +2 -0
  30. package/dist/i18n/da.d.ts +2 -0
  31. package/dist/i18n/de.d.ts +2 -0
  32. package/dist/i18n/en.d.ts +1 -242
  33. package/dist/i18n/es.d.ts +2 -0
  34. package/dist/i18n/fr.d.ts +2 -0
  35. package/dist/i18n/ja.d.ts +2 -0
  36. package/dist/i18n/km.d.ts +2 -0
  37. package/dist/i18n/ko.d.ts +2 -0
  38. package/dist/i18n/lo.d.ts +2 -0
  39. package/dist/i18n/mk.d.ts +2 -0
  40. package/dist/i18n/mn.d.ts +2 -0
  41. package/dist/i18n/my.d.ts +2 -0
  42. package/dist/i18n/pl.d.ts +2 -0
  43. package/dist/i18n/ru.d.ts +2 -0
  44. package/dist/i18n/sr.d.ts +2 -0
  45. package/dist/i18n/tg.d.ts +2 -0
  46. package/dist/i18n/th.d.ts +2 -0
  47. package/dist/i18n/tr.d.ts +2 -0
  48. package/dist/i18n/zh.d.ts +2 -0
  49. package/dist/i18n/zht.d.ts +2 -0
  50. package/dist/v2/components/accordion-v2.d.ts +26 -0
  51. package/dist/{data-display/avatar/avatar.d.ts → v2/components/avatar-v2.d.ts} +1 -1
  52. package/dist/v2/components/badge-v2.d.ts +6 -0
  53. package/dist/v2/components/button-v2.d.ts +10 -0
  54. package/dist/v2/components/checkbox-v2.d.ts +10 -0
  55. package/dist/{overlays/dialog/dialog.d.ts → v2/components/dialog-v2.d.ts} +2 -1
  56. package/dist/v2/components/diff-changes-v2.d.ts +11 -0
  57. package/dist/v2/components/divider-v2.d.ts +5 -0
  58. package/dist/{forms/field/field.d.ts → v2/components/field-v2.d.ts} +10 -4
  59. package/dist/v2/components/icon-button-v2.d.ts +11 -0
  60. package/dist/{icons/icon → v2/components}/icon.d.ts +1 -44
  61. package/dist/v2/components/inline-input-v2.d.ts +21 -0
  62. package/dist/v2/components/keybind-v2.d.ts +7 -0
  63. package/dist/{data-display/line-comment/line-comment.d.ts → v2/components/line-comment-v2.d.ts} +9 -9
  64. package/dist/v2/components/loader-v2.d.ts +3 -0
  65. package/dist/v2/components/menu-v2.d.ts +52 -0
  66. package/dist/v2/components/progress-circle-v2.d.ts +8 -0
  67. package/dist/{data-display/project-avatar/project-avatar.d.ts → v2/components/project-avatar-v2.d.ts} +1 -1
  68. package/dist/v2/components/radio-v2.d.ts +16 -0
  69. package/dist/{navigation/segmented-control/segmented-control.d.ts → v2/components/segmented-control-v2.d.ts} +5 -5
  70. package/dist/{forms/select/select.d.ts → v2/components/select-v2.d.ts} +6 -4
  71. package/dist/v2/components/split-button-v2.d.ts +5 -0
  72. package/dist/v2/components/switch-v2.d.ts +7 -0
  73. package/dist/v2/components/tabs-v2.d.ts +34 -0
  74. package/dist/{forms/text-input/text-input.d.ts → v2/components/text-input-v2.d.ts} +3 -3
  75. package/dist/v2/components/text-shimmer-v2.d.ts +9 -0
  76. package/dist/v2/components/textarea-v2.d.ts +7 -0
  77. package/dist/v2/components/toast-v2.d.ts +57 -0
  78. package/dist/v2/components/tooltip-v2.d.ts +13 -0
  79. package/dist/v2/components/wordmark-v2.d.ts +2 -0
  80. package/package.json +35 -141
  81. package/src/{data-display/accordion → components}/accordion.css +33 -7
  82. package/src/{data-display/accordion → components}/accordion.tsx +14 -14
  83. package/src/components/animated-number.css +11 -29
  84. package/src/components/animated-number.tsx +2 -2
  85. package/src/components/avatar.css +49 -0
  86. package/src/components/avatar.tsx +55 -0
  87. package/src/components/button.css +194 -0
  88. package/src/{actions/button → components}/button.tsx +11 -19
  89. package/src/components/card.css +23 -2
  90. package/src/components/card.tsx +4 -4
  91. package/src/{forms/checkbox → components}/checkbox.css +7 -1
  92. package/src/{forms/checkbox → components}/checkbox.tsx +13 -13
  93. package/src/components/collapsible.tsx +2 -2
  94. package/src/components/dialog.css +181 -0
  95. package/src/components/dialog.tsx +72 -0
  96. package/src/{data-display/diff-changes → components}/diff-changes.css +19 -22
  97. package/src/components/diff-changes.tsx +115 -0
  98. package/src/components/dock-surface.css +9 -2
  99. package/src/components/dropdown-menu.css +135 -0
  100. package/src/components/dropdown-menu.tsx +308 -0
  101. package/src/components/icon-button.css +181 -0
  102. package/src/components/icon-button.tsx +29 -0
  103. package/src/components/icon.css +39 -0
  104. package/src/{icons/icon/additional-icons.ts → components/icon.tsx} +74 -8
  105. package/src/components/image-preview.tsx +2 -3
  106. package/src/components/keybind.css +18 -0
  107. package/src/components/keybind.tsx +20 -0
  108. package/src/components/list.css +5 -5
  109. package/src/components/list.tsx +5 -7
  110. package/src/components/popover.tsx +2 -3
  111. package/src/components/progress-circle.css +16 -0
  112. package/src/components/progress-circle.tsx +64 -0
  113. package/src/components/radio-group.css +187 -0
  114. package/src/components/radio-group.tsx +83 -0
  115. package/src/components/scroll-view.tsx +20 -5
  116. package/src/components/select.css +201 -0
  117. package/src/components/select.tsx +174 -0
  118. package/src/components/sticky-accordion-header.tsx +1 -1
  119. package/src/components/switch.css +136 -0
  120. package/src/components/switch.tsx +29 -0
  121. package/src/{navigation/tabs → components}/tabs.css +232 -53
  122. package/src/components/tabs.tsx +126 -0
  123. package/src/components/tag.css +37 -0
  124. package/src/components/tag.tsx +22 -0
  125. package/src/components/text-field.tsx +4 -12
  126. package/src/{typography/text-shimmer → components}/text-shimmer.css +1 -2
  127. package/src/{typography/text-shimmer → components}/text-shimmer.tsx +0 -1
  128. package/src/components/toast.css +236 -0
  129. package/src/components/toast.tsx +185 -0
  130. package/src/components/tooltip.css +74 -0
  131. package/src/components/tooltip.tsx +163 -0
  132. package/src/context/dialog.tsx +0 -1
  133. package/src/context/i18n.tsx +14 -17
  134. package/src/context/marked-parser.tsx +13 -3
  135. package/src/hooks/create-auto-scroll.tsx +0 -20
  136. package/src/i18n/am.ts +9 -7
  137. package/src/i18n/ar.ts +9 -7
  138. package/src/i18n/az.ts +9 -7
  139. package/src/i18n/bg.ts +9 -7
  140. package/src/i18n/bn.ts +9 -7
  141. package/src/i18n/br.ts +9 -7
  142. package/src/i18n/bs.ts +9 -7
  143. package/src/i18n/ca.ts +9 -7
  144. package/src/i18n/cs.ts +9 -7
  145. package/src/i18n/da.ts +9 -7
  146. package/src/i18n/de.ts +3 -1
  147. package/src/i18n/dv.ts +9 -7
  148. package/src/i18n/dz.ts +7 -5
  149. package/src/i18n/el.ts +9 -7
  150. package/src/i18n/en.ts +12 -59
  151. package/src/i18n/es.ts +8 -6
  152. package/src/i18n/et.ts +9 -7
  153. package/src/i18n/fa.ts +9 -7
  154. package/src/i18n/fi.ts +9 -7
  155. package/src/i18n/fo.ts +9 -7
  156. package/src/i18n/fr.ts +8 -6
  157. package/src/i18n/hi.ts +9 -7
  158. package/src/i18n/hr.ts +9 -7
  159. package/src/i18n/hu.ts +9 -7
  160. package/src/i18n/hy.ts +9 -7
  161. package/src/i18n/id.ts +9 -7
  162. package/src/i18n/is.ts +9 -7
  163. package/src/i18n/it.ts +9 -7
  164. package/src/i18n/ja.ts +9 -7
  165. package/src/i18n/ka.ts +9 -7
  166. package/src/i18n/km.ts +9 -7
  167. package/src/i18n/ko.ts +9 -7
  168. package/src/i18n/lo.ts +9 -7
  169. package/src/i18n/lt.ts +9 -7
  170. package/src/i18n/lv.ts +9 -7
  171. package/src/i18n/mk.ts +9 -7
  172. package/src/i18n/mn.ts +9 -7
  173. package/src/i18n/ms.ts +9 -7
  174. package/src/i18n/my.ts +9 -7
  175. package/src/i18n/ne.ts +9 -7
  176. package/src/i18n/nl.ts +9 -7
  177. package/src/i18n/no.ts +9 -7
  178. package/src/i18n/pa.ts +9 -7
  179. package/src/i18n/pl.ts +9 -7
  180. package/src/i18n/ro.ts +9 -7
  181. package/src/i18n/ru.ts +9 -7
  182. package/src/i18n/si.ts +9 -7
  183. package/src/i18n/sk.ts +9 -7
  184. package/src/i18n/sl.ts +9 -7
  185. package/src/i18n/sq.ts +9 -7
  186. package/src/i18n/sr.ts +9 -7
  187. package/src/i18n/sv.ts +9 -7
  188. package/src/i18n/tg.ts +9 -7
  189. package/src/i18n/th.ts +9 -7
  190. package/src/i18n/tk.ts +9 -7
  191. package/src/i18n/tr.ts +9 -7
  192. package/src/i18n/uk.ts +9 -7
  193. package/src/i18n/ur.ts +9 -7
  194. package/src/i18n/uz.ts +9 -7
  195. package/src/i18n/vi.ts +9 -7
  196. package/src/i18n/zh.ts +9 -7
  197. package/src/i18n/zht.ts +9 -7
  198. package/src/styles/base.css +0 -5
  199. package/src/styles/index.css +20 -4
  200. package/src/styles/tailwind/colors.css +0 -2
  201. package/src/styles/tailwind/index.css +1 -18
  202. package/src/styles/theme.css +2 -2
  203. package/src/theme/context.tsx +11 -19
  204. package/src/theme/themes/oc-2.json +19 -50
  205. package/src/theme/v2/default-primitives.ts +8 -8
  206. package/src/theme/v2/foreground.ts +0 -1
  207. package/src/theme/v2/mapping.ts +1 -7
  208. package/src/v2/components/accordion-v2.css +139 -0
  209. package/src/v2/components/accordion-v2.tsx +86 -0
  210. package/src/{data-display/avatar/avatar.tsx → v2/components/avatar-v2.tsx} +1 -1
  211. package/src/{data-display/badge/badge.css → v2/components/badge-v2.css} +0 -19
  212. package/src/{data-display/badge/badge.tsx → v2/components/badge-v2.tsx} +4 -6
  213. package/src/{actions/button/button.css → v2/components/button-v2.css} +0 -29
  214. package/src/v2/components/button-v2.tsx +35 -0
  215. package/src/v2/components/checkbox-v2.css +184 -0
  216. package/src/v2/components/checkbox-v2.tsx +65 -0
  217. package/src/{overlays/dialog/dialog.css → v2/components/dialog-v2.css} +0 -3
  218. package/src/{overlays/dialog/dialog.tsx → v2/components/dialog-v2.tsx} +13 -11
  219. package/src/v2/components/diff-changes-v2.css +26 -0
  220. package/src/{data-display/diff-changes/diff-changes.tsx → v2/components/diff-changes-v2.tsx} +2 -7
  221. package/src/{layout/divider/divider.tsx → v2/components/divider-v2.tsx} +3 -3
  222. package/src/{forms/field/field.css → v2/components/field-v2.css} +1 -1
  223. package/src/{forms/field/field.tsx → v2/components/field-v2.tsx} +11 -9
  224. package/src/{actions/icon-button/icon-button.css → v2/components/icon-button-v2.css} +9 -27
  225. package/src/v2/components/icon-button-v2.tsx +37 -0
  226. package/src/{icons/icon → v2/components}/icon.tsx +12 -80
  227. package/src/v2/components/inline-input-v2.css +225 -0
  228. package/src/v2/components/inline-input-v2.tsx +107 -0
  229. package/src/{data-display/keybind/keybind.css → v2/components/keybind-v2.css} +1 -1
  230. package/src/{data-display/keybind/keybind.tsx → v2/components/keybind-v2.tsx} +3 -3
  231. package/src/{data-display/line-comment/line-comment.css → v2/components/line-comment-v2.css} +4 -4
  232. package/src/{data-display/line-comment/line-comment.tsx → v2/components/line-comment-v2.tsx} +15 -17
  233. package/src/{feedback/loader/loader.tsx → v2/components/loader-v2.tsx} +2 -2
  234. package/src/{navigation/menu/menu.css → v2/components/menu-v2.css} +2 -124
  235. package/src/{navigation/menu/menu.tsx → v2/components/menu-v2.tsx} +32 -96
  236. package/src/v2/components/progress-circle-v2.css +13 -0
  237. package/src/v2/components/progress-circle-v2.tsx +52 -0
  238. package/src/{data-display/project-avatar/project-avatar.tsx → v2/components/project-avatar-v2.tsx} +1 -1
  239. package/src/{forms/radio/radio.tsx → v2/components/radio-v2.tsx} +20 -30
  240. package/src/{navigation/segmented-control/segmented-control.css → v2/components/segmented-control-v2.css} +1 -1
  241. package/src/{navigation/segmented-control/segmented-control.tsx → v2/components/segmented-control-v2.tsx} +8 -9
  242. package/src/{forms/select/select.css → v2/components/select-v2.css} +8 -2
  243. package/src/{forms/select/select.tsx → v2/components/select-v2.tsx} +32 -40
  244. package/src/{actions/split-button/split-button.css → v2/components/split-button-v2.css} +6 -2
  245. package/src/{actions/split-button/split-button.tsx → v2/components/split-button-v2.tsx} +4 -4
  246. package/src/{forms/switch/switch.css → v2/components/switch-v2.css} +0 -110
  247. package/src/v2/components/switch-v2.tsx +28 -0
  248. package/src/{navigation/tabs/tabs-current.css → v2/components/tabs-v2.css} +10 -25
  249. package/src/v2/components/tabs-v2.tsx +149 -0
  250. package/src/{forms/text-input/text-input.css → v2/components/text-input-v2.css} +3 -3
  251. package/src/{forms/text-input/text-input.tsx → v2/components/text-input-v2.tsx} +4 -4
  252. package/src/v2/components/text-shimmer-v2.css +125 -0
  253. package/src/v2/components/text-shimmer-v2.tsx +63 -0
  254. package/src/{forms/textarea/textarea.tsx → v2/components/textarea-v2.tsx} +3 -3
  255. package/src/{feedback/toast/toast.tsx → v2/components/toast-v2.tsx} +58 -60
  256. package/src/{overlays/tooltip/tooltip.css → v2/components/tooltip-v2.css} +0 -26
  257. package/src/{overlays/tooltip/tooltip.tsx → v2/components/tooltip-v2.tsx} +17 -24
  258. package/src/v2/components/wordmark-v2.tsx +71 -0
  259. package/src/{styles/tokens → v2/styles}/colors.css +8 -8
  260. package/src/{styles/tokens → v2/styles}/theme.css +16 -23
  261. package/dist/actions/button/button.d.ts +0 -10
  262. package/dist/actions/icon-button/icon-button.d.ts +0 -11
  263. package/dist/actions/split-button/split-button.d.ts +0 -5
  264. package/dist/context/marked-base.d.ts +0 -3
  265. package/dist/data-display/badge/badge.d.ts +0 -7
  266. package/dist/data-display/keybind/keybind.d.ts +0 -7
  267. package/dist/feedback/loader/loader.d.ts +0 -3
  268. package/dist/feedback/toast/toast.d.ts +0 -57
  269. package/dist/forms/radio/radio.d.ts +0 -16
  270. package/dist/forms/textarea/textarea.d.ts +0 -7
  271. package/dist/i18n/he.d.ts +0 -197
  272. package/dist/layout/divider/divider.d.ts +0 -5
  273. package/dist/navigation/menu/menu.d.ts +0 -59
  274. package/dist/overlays/tooltip/tooltip.d.ts +0 -15
  275. package/dist/typography/wordmark/wordmark.d.ts +0 -5
  276. package/src/actions/icon-button/icon-button.tsx +0 -32
  277. package/src/context/marked-base.tsx +0 -27
  278. package/src/feedback/progress-circle/progress-circle.css +0 -28
  279. package/src/feedback/progress-circle/progress-circle.tsx +0 -64
  280. package/src/forms/switch/switch.tsx +0 -34
  281. package/src/i18n/he.ts +0 -199
  282. package/src/icons/icon/icon.css +0 -3
  283. package/src/navigation/tabs/tabs.tsx +0 -194
  284. package/src/typography/wordmark/wordmark.tsx +0 -39
  285. /package/dist/{forms/inline-input → components}/inline-input.d.ts +0 -0
  286. /package/dist/{navigation → v2/components}/tab-state-indicator.d.ts +0 -0
  287. /package/src/{forms/inline-input → components}/inline-input.css +0 -0
  288. /package/src/{forms/inline-input → components}/inline-input.tsx +0 -0
  289. /package/src/{data-display/avatar/avatar.css → v2/components/avatar-v2.css} +0 -0
  290. /package/src/{layout/divider/divider.css → v2/components/divider-v2.css} +0 -0
  291. /package/src/{styles/file-tree.css → v2/components/file-tree-v2.css} +0 -0
  292. /package/src/{feedback/loader/loader.css → v2/components/loader-v2.css} +0 -0
  293. /package/src/{data-display/project-avatar/project-avatar.css → v2/components/project-avatar-v2.css} +0 -0
  294. /package/src/{forms/radio/radio.css → v2/components/radio-v2.css} +0 -0
  295. /package/src/{navigation → v2/components}/tab-state-indicator.tsx +0 -0
  296. /package/src/{forms/textarea/textarea.css → v2/components/textarea-v2.css} +0 -0
  297. /package/src/{feedback/toast/toast.css → v2/components/toast-v2.css} +0 -0
  298. /package/src/{styles/tokens/index.css → v2/styles/tailwind.css} +0 -0
@@ -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
  )
@@ -0,0 +1,71 @@
1
+ import { createUniqueId, type ComponentProps } from "solid-js"
2
+
3
+ export function WordmarkV2(props: Pick<ComponentProps<"svg">, "class">) {
4
+ const mask = createUniqueId()
5
+ const maskGradient = createUniqueId()
6
+
7
+ return (
8
+ <svg
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ viewBox="0 0 720 129"
11
+ fill="none"
12
+ classList={{ [props.class ?? ""]: !!props.class }}
13
+ >
14
+ <g opacity="0.6">
15
+ <g mask={`url(#${mask})`}>
16
+ <g opacity="0.16">
17
+ <path
18
+ opacity="0.7"
19
+ d="M55.3846 36.4286H18.4615V91.7143H55.3846V36.4286ZM73.8462 110.143H0V18H73.8462V110.143Z"
20
+ fill="currentColor"
21
+ />
22
+ <path
23
+ opacity="0.7"
24
+ d="M110.462 91.7143H147.385V36.4286H110.462V91.7143ZM165.846 110.143H110.462V128.571H92V18H165.846V110.143Z"
25
+ fill="currentColor"
26
+ />
27
+ <path
28
+ opacity="0.7"
29
+ d="M258.846 73.2857H203.462V91.7143H258.846V110.143H185V18H258.846V73.2857ZM203.462 54.8571H240.385V36.4286H203.462V54.8571Z"
30
+ fill="currentColor"
31
+ />
32
+ <path
33
+ opacity="0.7"
34
+ d="M332.385 36.4286H295.462V110.143H277V18H332.385V36.4286ZM350.846 110.143H332.385V36.4286H350.846V110.143Z"
35
+ fill="currentColor"
36
+ />
37
+ <path
38
+ opacity="0.7"
39
+ d="M442.846 36.4286H387.462V91.7143H442.846V110.143H369V18H442.846V36.4286Z"
40
+ fill="currentColor"
41
+ />
42
+ <path
43
+ opacity="0.7"
44
+ d="M517.385 36.4286H480.462V91.7143H517.385V36.4286ZM535.846 110.143H462V18H535.846V110.143Z"
45
+ fill="currentColor"
46
+ />
47
+ <path
48
+ opacity="0.7"
49
+ d="M609.385 36.8571H572.462V92.1429H609.385V36.8571ZM627.846 110.571H554V18.4286H609.385V0H627.846V110.571Z"
50
+ fill="currentColor"
51
+ />
52
+ <path
53
+ opacity="0.7"
54
+ d="M664.462 36.4286V54.8571H701.385V36.4286H664.462ZM719.846 73.2857H664.462V91.7143H719.846V110.143H646V18H719.846V73.2857Z"
55
+ fill="currentColor"
56
+ />
57
+ </g>
58
+ </g>
59
+ </g>
60
+ <defs>
61
+ <mask id={mask} style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="720" height="129">
62
+ <rect width="720" height="129" fill={`url(#${maskGradient})`} />
63
+ </mask>
64
+ <linearGradient id={maskGradient} x1="360" y1="68" x2="360" y2="129" gradientUnits="userSpaceOnUse">
65
+ <stop stop-color="white" stop-opacity="0.7" />
66
+ <stop offset="1" stop-color="white" stop-opacity="0" />
67
+ </linearGradient>
68
+ </defs>
69
+ </svg>
70
+ )
71
+ }
@@ -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
 
@@ -11,10 +23,8 @@
11
23
  --v2-background-bg-layer-04: var(--v2-grey-400);
12
24
  --v2-background-bg-inverse: var(--v2-grey-1100);
13
25
  --v2-background-bg-contrast: var(--v2-grey-1000);
14
- --v2-background-bg-icon-button-contrast: var(--v2-background-bg-contrast);
15
26
  --v2-background-bg-button-neutral: var(--v2-grey-50);
16
27
  --v2-background-bg-accent: var(--v2-blue-600);
17
- --v2-background-bg-code-path: var(--v2-cyan-100);
18
28
 
19
29
  /* ── Text ── */
20
30
  --v2-text-text-base: var(--v2-grey-1100);
@@ -25,12 +35,10 @@
25
35
  --v2-text-text-accent: var(--v2-blue-600);
26
36
  --v2-text-text-accent-hover: var(--v2-blue-700);
27
37
  --v2-text-text-code-accent: var(--v2-blue-900);
28
- --v2-text-text-code-path: var(--v2-blue-900);
29
38
 
30
39
  /* ── Icon ── */
31
40
  --v2-icon-icon-base: var(--v2-grey-800);
32
41
  --v2-icon-icon-muted: var(--v2-grey-600);
33
- --v2-icon-icon-faint: var(--v2-grey-500);
34
42
  --v2-icon-icon-inverse: var(--v2-grey-50);
35
43
  --v2-icon-icon-contrast: var(--v2-grey-100);
36
44
  --v2-icon-icon-accent: var(--v2-blue-600);
@@ -65,7 +73,7 @@
65
73
  --v2-state-bg-danger: var(--v2-red-100);
66
74
  --v2-state-fg-danger: var(--v2-red-800);
67
75
  --v2-state-border-danger: var(--v2-red-300);
68
- --v2-state-bg-info: var(--v2-blue-200);
76
+ --v2-state-bg-info: var(--v2-blue-100);
69
77
  --v2-state-fg-info: var(--v2-blue-800);
70
78
  --v2-state-border-info: var(--v2-blue-300);
71
79
 
@@ -132,12 +140,8 @@
132
140
  --v2-illustration-illustration-layer-02: var(--v2-grey-400);
133
141
  --v2-illustration-illustration-layer-03: var(--v2-grey-500);
134
142
 
135
- --font-family-text: var(--font-family-sans);
136
- --v2-font-family-sans: var(--font-family-sans);
137
- --v2-font-family-code: var(--font-family-mono);
138
- --line-height-tight: 12px;
139
- --line-height-compact: 16px;
140
- --line-height-base: 20px;
143
+ --font-family-text: "Inter", sans-serif;
144
+ --v2-font-family-sans: "Inter", sans-serif;
141
145
  }
142
146
 
143
147
  /* OS preference fallback (no JS needed) */
@@ -154,7 +158,6 @@
154
158
  --v2-background-bg-contrast: var(--v2-grey-700);
155
159
  --v2-background-bg-button-neutral: var(--v2-alpha-light-6);
156
160
  --v2-background-bg-accent: var(--v2-blue-600);
157
- --v2-background-bg-code-path: var(--v2-cyan-1200);
158
161
 
159
162
  --v2-text-text-base: var(--v2-grey-200);
160
163
  --v2-text-text-muted: var(--v2-grey-500);
@@ -164,11 +167,9 @@
164
167
  --v2-text-text-accent: var(--v2-blue-400);
165
168
  --v2-text-text-accent-hover: var(--v2-blue-300);
166
169
  --v2-text-text-code-accent: var(--v2-blue-400);
167
- --v2-text-text-code-path: var(--v2-blue-300);
168
170
 
169
171
  --v2-icon-icon-base: var(--v2-grey-400);
170
172
  --v2-icon-icon-muted: var(--v2-grey-600);
171
- --v2-icon-icon-faint: var(--v2-grey-500);
172
173
  --v2-icon-icon-inverse: var(--v2-grey-1000);
173
174
  --v2-icon-icon-contrast: var(--v2-grey-200);
174
175
  --v2-icon-icon-accent: var(--v2-blue-400);
@@ -268,10 +269,8 @@
268
269
  --v2-background-bg-layer-04: var(--v2-grey-400);
269
270
  --v2-background-bg-inverse: var(--v2-grey-1100);
270
271
  --v2-background-bg-contrast: var(--v2-grey-1000);
271
- --v2-background-bg-icon-button-contrast: var(--v2-background-bg-contrast);
272
272
  --v2-background-bg-button-neutral: var(--v2-grey-50);
273
273
  --v2-background-bg-accent: var(--v2-blue-600);
274
- --v2-background-bg-code-path: var(--v2-cyan-100);
275
274
 
276
275
  --v2-text-text-base: var(--v2-grey-1100);
277
276
  --v2-text-text-muted: var(--v2-grey-700);
@@ -281,11 +280,9 @@
281
280
  --v2-text-text-accent: var(--v2-blue-600);
282
281
  --v2-text-text-accent-hover: var(--v2-blue-700);
283
282
  --v2-text-text-code-accent: var(--v2-blue-900);
284
- --v2-text-text-code-path: var(--v2-blue-900);
285
283
 
286
284
  --v2-icon-icon-base: var(--v2-grey-800);
287
285
  --v2-icon-icon-muted: var(--v2-grey-600);
288
- --v2-icon-icon-faint: var(--v2-grey-500);
289
286
  --v2-icon-icon-inverse: var(--v2-grey-50);
290
287
  --v2-icon-icon-contrast: var(--v2-grey-100);
291
288
  --v2-icon-icon-accent: var(--v2-blue-600);
@@ -317,7 +314,7 @@
317
314
  --v2-state-bg-danger: var(--v2-red-100);
318
315
  --v2-state-fg-danger: var(--v2-red-800);
319
316
  --v2-state-border-danger: var(--v2-red-300);
320
- --v2-state-bg-info: var(--v2-blue-200);
317
+ --v2-state-bg-info: var(--v2-blue-100);
321
318
  --v2-state-fg-info: var(--v2-blue-800);
322
319
  --v2-state-border-info: var(--v2-blue-300);
323
320
 
@@ -394,10 +391,8 @@
394
391
  --v2-background-bg-layer-04: var(--v2-grey-700);
395
392
  --v2-background-bg-inverse: var(--v2-grey-50);
396
393
  --v2-background-bg-contrast: var(--v2-grey-700);
397
- --v2-background-bg-icon-button-contrast: var(--v2-grey-400);
398
394
  --v2-background-bg-button-neutral: var(--v2-alpha-light-6);
399
395
  --v2-background-bg-accent: var(--v2-blue-600);
400
- --v2-background-bg-code-path: var(--v2-cyan-1200);
401
396
 
402
397
  --v2-text-text-base: var(--v2-grey-100);
403
398
  --v2-text-text-muted: var(--v2-grey-500);
@@ -407,11 +402,9 @@
407
402
  --v2-text-text-accent: var(--v2-blue-400);
408
403
  --v2-text-text-accent-hover: var(--v2-blue-300);
409
404
  --v2-text-text-code-accent: var(--v2-blue-400);
410
- --v2-text-text-code-path: var(--v2-blue-300);
411
405
 
412
406
  --v2-icon-icon-base: var(--v2-grey-400);
413
407
  --v2-icon-icon-muted: var(--v2-grey-600);
414
- --v2-icon-icon-faint: var(--v2-grey-500);
415
408
  --v2-icon-icon-inverse: var(--v2-grey-1100);
416
409
  --v2-icon-icon-contrast: var(--v2-grey-100);
417
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;