@opencode-ai/ui 0.0.0-dev-202609030903 → 0.0.0-dev-18997

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 (296) 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/context/marked-base.d.ts +3 -0
  9. package/dist/context/marked-parser.d.ts +1 -2
  10. package/dist/{components → data-display/accordion}/accordion.d.ts +6 -6
  11. package/dist/{v2/components/avatar-v2.d.ts → data-display/avatar/avatar.d.ts} +1 -1
  12. package/dist/data-display/badge/badge.d.ts +7 -0
  13. package/dist/{components → data-display/diff-changes}/diff-changes.d.ts +2 -1
  14. package/dist/data-display/keybind/keybind.d.ts +7 -0
  15. package/dist/{v2/components/line-comment-v2.d.ts → data-display/line-comment/line-comment.d.ts} +9 -9
  16. package/dist/{v2/components/project-avatar-v2.d.ts → data-display/project-avatar/project-avatar.d.ts} +1 -1
  17. package/dist/feedback/loader/loader.d.ts +3 -0
  18. package/dist/{components → feedback/progress-circle}/progress-circle.d.ts +2 -0
  19. package/dist/feedback/toast/toast.d.ts +57 -0
  20. package/dist/{components → forms/checkbox}/checkbox.d.ts +2 -2
  21. package/dist/{v2/components/field-v2.d.ts → forms/field/field.d.ts} +4 -10
  22. package/dist/forms/radio/radio.d.ts +16 -0
  23. package/dist/{v2/components/select-v2.d.ts → forms/select/select.d.ts} +4 -6
  24. package/dist/{components → forms/switch}/switch.d.ts +4 -2
  25. package/dist/{v2/components/text-input-v2.d.ts → forms/text-input/text-input.d.ts} +3 -3
  26. package/dist/forms/textarea/textarea.d.ts +7 -0
  27. package/dist/hooks/use-filtered-list.d.ts +9 -0
  28. package/dist/i18n/ar.d.ts +0 -2
  29. package/dist/i18n/bg.d.ts +0 -2
  30. package/dist/i18n/br.d.ts +0 -2
  31. package/dist/i18n/bs.d.ts +0 -2
  32. package/dist/i18n/da.d.ts +0 -2
  33. package/dist/i18n/de.d.ts +0 -2
  34. package/dist/i18n/en.d.ts +234 -1
  35. package/dist/i18n/es.d.ts +0 -2
  36. package/dist/i18n/fr.d.ts +0 -2
  37. package/dist/i18n/he.d.ts +197 -0
  38. package/dist/i18n/ja.d.ts +0 -2
  39. package/dist/i18n/km.d.ts +0 -2
  40. package/dist/i18n/ko.d.ts +0 -2
  41. package/dist/i18n/lo.d.ts +0 -2
  42. package/dist/i18n/mk.d.ts +0 -2
  43. package/dist/i18n/mn.d.ts +0 -2
  44. package/dist/i18n/my.d.ts +0 -2
  45. package/dist/i18n/pl.d.ts +0 -2
  46. package/dist/i18n/ru.d.ts +0 -2
  47. package/dist/i18n/sr.d.ts +0 -2
  48. package/dist/i18n/tg.d.ts +0 -2
  49. package/dist/i18n/th.d.ts +0 -2
  50. package/dist/i18n/tr.d.ts +0 -2
  51. package/dist/i18n/zh.d.ts +0 -2
  52. package/dist/i18n/zht.d.ts +0 -2
  53. package/dist/{components/icon.d.ts → icons/icon/additional-icons.d.ts} +8 -8
  54. package/dist/{v2/components → icons/icon}/icon.d.ts +24 -1
  55. package/dist/layout/divider/divider.d.ts +5 -0
  56. package/dist/navigation/menu/menu.d.ts +59 -0
  57. package/dist/{v2/components/segmented-control-v2.d.ts → navigation/segmented-control/segmented-control.d.ts} +5 -5
  58. package/dist/{components → navigation/tabs}/tabs.d.ts +15 -8
  59. package/dist/{v2/components/dialog-v2.d.ts → overlays/dialog/dialog.d.ts} +1 -2
  60. package/dist/overlays/tooltip/tooltip.d.ts +15 -0
  61. package/dist/{components → typography/text-shimmer}/text-shimmer.d.ts +1 -0
  62. package/dist/typography/wordmark/wordmark.d.ts +2 -0
  63. package/package.json +140 -34
  64. package/src/{components → actions/button}/button.tsx +10 -11
  65. package/src/actions/icon-button/icon-button.tsx +32 -0
  66. package/src/{v2/components/split-button-v2.css → actions/split-button/split-button.css} +1 -6
  67. package/src/{v2/components/split-button-v2.tsx → actions/split-button/split-button.tsx} +4 -4
  68. package/src/components/animated-number.css +29 -11
  69. package/src/components/animated-number.tsx +2 -2
  70. package/src/components/card.css +2 -23
  71. package/src/components/card.tsx +4 -4
  72. package/src/components/collapsible.tsx +2 -2
  73. package/src/components/dock-surface.css +2 -9
  74. package/src/components/image-preview.tsx +3 -2
  75. package/src/components/list.css +5 -5
  76. package/src/components/list.tsx +7 -5
  77. package/src/components/popover.tsx +3 -2
  78. package/src/components/scroll-view.tsx +5 -20
  79. package/src/components/sticky-accordion-header.tsx +1 -1
  80. package/src/components/text-field.tsx +12 -4
  81. package/src/context/dialog.tsx +1 -0
  82. package/src/context/i18n.tsx +17 -14
  83. package/src/context/marked-base.tsx +27 -0
  84. package/src/context/marked-parser.tsx +3 -13
  85. package/src/{components → data-display/accordion}/accordion.css +5 -31
  86. package/src/{components → data-display/accordion}/accordion.tsx +14 -14
  87. package/src/{v2/components/avatar-v2.tsx → data-display/avatar/avatar.tsx} +1 -1
  88. package/src/{v2/components/badge-v2.css → data-display/badge/badge.css} +19 -0
  89. package/src/{v2/components/badge-v2.tsx → data-display/badge/badge.tsx} +6 -4
  90. package/src/{components → data-display/diff-changes}/diff-changes.css +22 -19
  91. package/src/{v2/components/diff-changes-v2.tsx → data-display/diff-changes/diff-changes.tsx} +7 -2
  92. package/src/{v2/components/keybind-v2.css → data-display/keybind/keybind.css} +1 -1
  93. package/src/{v2/components/keybind-v2.tsx → data-display/keybind/keybind.tsx} +3 -3
  94. package/src/{v2/components/line-comment-v2.css → data-display/line-comment/line-comment.css} +4 -4
  95. package/src/{v2/components/line-comment-v2.tsx → data-display/line-comment/line-comment.tsx} +17 -15
  96. package/src/{v2/components/project-avatar-v2.tsx → data-display/project-avatar/project-avatar.tsx} +1 -1
  97. package/src/{v2/components/loader-v2.tsx → feedback/loader/loader.tsx} +2 -2
  98. package/src/feedback/progress-circle/progress-circle.css +28 -0
  99. package/src/feedback/progress-circle/progress-circle.tsx +64 -0
  100. package/src/{v2/components/toast-v2.tsx → feedback/toast/toast.tsx} +60 -58
  101. package/src/{components → forms/checkbox}/checkbox.css +1 -7
  102. package/src/{components → forms/checkbox}/checkbox.tsx +13 -13
  103. package/src/{v2/components/field-v2.css → forms/field/field.css} +1 -1
  104. package/src/{v2/components/field-v2.tsx → forms/field/field.tsx} +9 -11
  105. package/src/{v2/components/radio-v2.tsx → forms/radio/radio.tsx} +30 -20
  106. package/src/{v2/components/select-v2.css → forms/select/select.css} +2 -8
  107. package/src/{v2/components/select-v2.tsx → forms/select/select.tsx} +40 -32
  108. package/src/{v2/components/switch-v2.css → forms/switch/switch.css} +110 -0
  109. package/src/forms/switch/switch.tsx +34 -0
  110. package/src/{v2/components/text-input-v2.css → forms/text-input/text-input.css} +1 -1
  111. package/src/{v2/components/text-input-v2.tsx → forms/text-input/text-input.tsx} +4 -4
  112. package/src/{v2/components/textarea-v2.tsx → forms/textarea/textarea.tsx} +3 -3
  113. package/src/hooks/create-auto-scroll.tsx +20 -0
  114. package/src/i18n/am.ts +7 -9
  115. package/src/i18n/ar.ts +7 -9
  116. package/src/i18n/az.ts +7 -9
  117. package/src/i18n/bg.ts +7 -9
  118. package/src/i18n/bn.ts +7 -9
  119. package/src/i18n/br.ts +7 -9
  120. package/src/i18n/bs.ts +7 -9
  121. package/src/i18n/ca.ts +7 -9
  122. package/src/i18n/cs.ts +7 -9
  123. package/src/i18n/da.ts +7 -9
  124. package/src/i18n/de.ts +1 -3
  125. package/src/i18n/dv.ts +7 -9
  126. package/src/i18n/dz.ts +5 -7
  127. package/src/i18n/el.ts +7 -9
  128. package/src/i18n/en.ts +50 -11
  129. package/src/i18n/es.ts +6 -8
  130. package/src/i18n/et.ts +7 -9
  131. package/src/i18n/fa.ts +7 -9
  132. package/src/i18n/fi.ts +7 -9
  133. package/src/i18n/fo.ts +7 -9
  134. package/src/i18n/fr.ts +6 -8
  135. package/src/i18n/he.ts +199 -0
  136. package/src/i18n/hi.ts +7 -9
  137. package/src/i18n/hr.ts +7 -9
  138. package/src/i18n/hu.ts +7 -9
  139. package/src/i18n/hy.ts +7 -9
  140. package/src/i18n/id.ts +7 -9
  141. package/src/i18n/is.ts +7 -9
  142. package/src/i18n/it.ts +7 -9
  143. package/src/i18n/ja.ts +7 -9
  144. package/src/i18n/ka.ts +7 -9
  145. package/src/i18n/km.ts +7 -9
  146. package/src/i18n/ko.ts +7 -9
  147. package/src/i18n/lo.ts +7 -9
  148. package/src/i18n/lt.ts +7 -9
  149. package/src/i18n/lv.ts +7 -9
  150. package/src/i18n/mk.ts +7 -9
  151. package/src/i18n/mn.ts +7 -9
  152. package/src/i18n/ms.ts +7 -9
  153. package/src/i18n/my.ts +7 -9
  154. package/src/i18n/ne.ts +7 -9
  155. package/src/i18n/nl.ts +7 -9
  156. package/src/i18n/no.ts +7 -9
  157. package/src/i18n/pa.ts +7 -9
  158. package/src/i18n/pl.ts +7 -9
  159. package/src/i18n/ro.ts +7 -9
  160. package/src/i18n/ru.ts +7 -9
  161. package/src/i18n/si.ts +7 -9
  162. package/src/i18n/sk.ts +7 -9
  163. package/src/i18n/sl.ts +7 -9
  164. package/src/i18n/sq.ts +7 -9
  165. package/src/i18n/sr.ts +7 -9
  166. package/src/i18n/sv.ts +7 -9
  167. package/src/i18n/tg.ts +7 -9
  168. package/src/i18n/th.ts +7 -9
  169. package/src/i18n/tk.ts +7 -9
  170. package/src/i18n/tr.ts +7 -9
  171. package/src/i18n/uk.ts +7 -9
  172. package/src/i18n/ur.ts +7 -9
  173. package/src/i18n/uz.ts +7 -9
  174. package/src/i18n/vi.ts +7 -9
  175. package/src/i18n/zh.ts +7 -9
  176. package/src/i18n/zht.ts +7 -9
  177. package/src/{components/icon.tsx → icons/icon/additional-icons.ts} +8 -74
  178. package/src/icons/icon/icon.css +3 -0
  179. package/src/{v2/components → icons/icon}/icon.tsx +51 -10
  180. package/src/{v2/components/divider-v2.tsx → layout/divider/divider.tsx} +3 -3
  181. package/src/{v2/components/menu-v2.css → navigation/menu/menu.css} +123 -2
  182. package/src/{v2/components/menu-v2.tsx → navigation/menu/menu.tsx} +96 -32
  183. package/src/{v2/components/segmented-control-v2.css → navigation/segmented-control/segmented-control.css} +1 -1
  184. package/src/{v2/components/segmented-control-v2.tsx → navigation/segmented-control/segmented-control.tsx} +9 -8
  185. package/src/{v2/components/tabs-v2.css → navigation/tabs/tabs-current.css} +25 -10
  186. package/src/{components → navigation/tabs}/tabs.css +39 -229
  187. package/src/navigation/tabs/tabs.tsx +194 -0
  188. package/src/{v2/components/dialog-v2.css → overlays/dialog/dialog.css} +3 -0
  189. package/src/{v2/components/dialog-v2.tsx → overlays/dialog/dialog.tsx} +11 -13
  190. package/src/{v2/components/tooltip-v2.css → overlays/tooltip/tooltip.css} +26 -0
  191. package/src/{v2/components/tooltip-v2.tsx → overlays/tooltip/tooltip.tsx} +24 -17
  192. package/src/styles/base.css +5 -0
  193. package/src/styles/index.css +4 -20
  194. package/src/styles/tailwind/colors.css +1 -0
  195. package/src/styles/tailwind/index.css +18 -1
  196. package/src/styles/theme.css +2 -2
  197. package/src/{v2/styles → styles/tokens}/theme.css +18 -14
  198. package/src/theme/context.tsx +19 -11
  199. package/src/theme/themes/oc-2.json +3 -1
  200. package/src/theme/v2/foreground.ts +1 -0
  201. package/src/theme/v2/mapping.ts +4 -0
  202. package/src/{components → typography/text-shimmer}/text-shimmer.css +2 -1
  203. package/src/{components → typography/text-shimmer}/text-shimmer.tsx +1 -0
  204. package/src/{v2/components/wordmark-v2.tsx → typography/wordmark/wordmark.tsx} +2 -2
  205. package/dist/components/avatar.d.ts +0 -9
  206. package/dist/components/button.d.ts +0 -9
  207. package/dist/components/dialog.d.ts +0 -12
  208. package/dist/components/dropdown-menu.d.ts +0 -80
  209. package/dist/components/icon-button.d.ts +0 -10
  210. package/dist/components/keybind.d.ts +0 -6
  211. package/dist/components/radio-group.d.ts +0 -16
  212. package/dist/components/select.d.ts +0 -21
  213. package/dist/components/tag.d.ts +0 -5
  214. package/dist/components/toast.d.ts +0 -56
  215. package/dist/components/tooltip.d.ts +0 -17
  216. package/dist/v2/components/accordion-v2.d.ts +0 -26
  217. package/dist/v2/components/badge-v2.d.ts +0 -6
  218. package/dist/v2/components/button-v2.d.ts +0 -10
  219. package/dist/v2/components/checkbox-v2.d.ts +0 -10
  220. package/dist/v2/components/diff-changes-v2.d.ts +0 -11
  221. package/dist/v2/components/divider-v2.d.ts +0 -5
  222. package/dist/v2/components/icon-button-v2.d.ts +0 -11
  223. package/dist/v2/components/inline-input-v2.d.ts +0 -21
  224. package/dist/v2/components/keybind-v2.d.ts +0 -7
  225. package/dist/v2/components/loader-v2.d.ts +0 -3
  226. package/dist/v2/components/menu-v2.d.ts +0 -52
  227. package/dist/v2/components/progress-circle-v2.d.ts +0 -8
  228. package/dist/v2/components/radio-v2.d.ts +0 -16
  229. package/dist/v2/components/split-button-v2.d.ts +0 -5
  230. package/dist/v2/components/switch-v2.d.ts +0 -7
  231. package/dist/v2/components/tabs-v2.d.ts +0 -34
  232. package/dist/v2/components/text-shimmer-v2.d.ts +0 -9
  233. package/dist/v2/components/textarea-v2.d.ts +0 -7
  234. package/dist/v2/components/toast-v2.d.ts +0 -57
  235. package/dist/v2/components/tooltip-v2.d.ts +0 -13
  236. package/dist/v2/components/wordmark-v2.d.ts +0 -2
  237. package/src/components/avatar.css +0 -49
  238. package/src/components/avatar.tsx +0 -55
  239. package/src/components/button.css +0 -194
  240. package/src/components/dialog.css +0 -181
  241. package/src/components/dialog.tsx +0 -72
  242. package/src/components/diff-changes.tsx +0 -115
  243. package/src/components/dropdown-menu.css +0 -135
  244. package/src/components/dropdown-menu.tsx +0 -308
  245. package/src/components/icon-button.css +0 -181
  246. package/src/components/icon-button.tsx +0 -29
  247. package/src/components/icon.css +0 -39
  248. package/src/components/keybind.css +0 -18
  249. package/src/components/keybind.tsx +0 -20
  250. package/src/components/progress-circle.css +0 -16
  251. package/src/components/progress-circle.tsx +0 -64
  252. package/src/components/radio-group.css +0 -187
  253. package/src/components/radio-group.tsx +0 -83
  254. package/src/components/select.css +0 -201
  255. package/src/components/select.tsx +0 -174
  256. package/src/components/switch.css +0 -136
  257. package/src/components/switch.tsx +0 -29
  258. package/src/components/tabs.tsx +0 -126
  259. package/src/components/tag.css +0 -37
  260. package/src/components/tag.tsx +0 -22
  261. package/src/components/toast.css +0 -236
  262. package/src/components/toast.tsx +0 -185
  263. package/src/components/tooltip.css +0 -74
  264. package/src/components/tooltip.tsx +0 -163
  265. package/src/v2/components/accordion-v2.css +0 -139
  266. package/src/v2/components/accordion-v2.tsx +0 -86
  267. package/src/v2/components/button-v2.tsx +0 -35
  268. package/src/v2/components/checkbox-v2.css +0 -184
  269. package/src/v2/components/checkbox-v2.tsx +0 -65
  270. package/src/v2/components/diff-changes-v2.css +0 -26
  271. package/src/v2/components/icon-button-v2.tsx +0 -37
  272. package/src/v2/components/inline-input-v2.css +0 -225
  273. package/src/v2/components/inline-input-v2.tsx +0 -107
  274. package/src/v2/components/progress-circle-v2.css +0 -13
  275. package/src/v2/components/progress-circle-v2.tsx +0 -52
  276. package/src/v2/components/switch-v2.tsx +0 -28
  277. package/src/v2/components/tabs-v2.tsx +0 -149
  278. package/src/v2/components/text-shimmer-v2.css +0 -125
  279. package/src/v2/components/text-shimmer-v2.tsx +0 -63
  280. /package/dist/{components → forms/inline-input}/inline-input.d.ts +0 -0
  281. /package/dist/{v2/components → navigation}/tab-state-indicator.d.ts +0 -0
  282. /package/src/{v2/components/button-v2.css → actions/button/button.css} +0 -0
  283. /package/src/{v2/components/icon-button-v2.css → actions/icon-button/icon-button.css} +0 -0
  284. /package/src/{v2/components/avatar-v2.css → data-display/avatar/avatar.css} +0 -0
  285. /package/src/{v2/components/project-avatar-v2.css → data-display/project-avatar/project-avatar.css} +0 -0
  286. /package/src/{v2/components/loader-v2.css → feedback/loader/loader.css} +0 -0
  287. /package/src/{v2/components/toast-v2.css → feedback/toast/toast.css} +0 -0
  288. /package/src/{components → forms/inline-input}/inline-input.css +0 -0
  289. /package/src/{components → forms/inline-input}/inline-input.tsx +0 -0
  290. /package/src/{v2/components/radio-v2.css → forms/radio/radio.css} +0 -0
  291. /package/src/{v2/components/textarea-v2.css → forms/textarea/textarea.css} +0 -0
  292. /package/src/{v2/components/divider-v2.css → layout/divider/divider.css} +0 -0
  293. /package/src/{v2/components → navigation}/tab-state-indicator.tsx +0 -0
  294. /package/src/{v2/components/file-tree-v2.css → styles/file-tree.css} +0 -0
  295. /package/src/{v2/styles → styles/tokens}/colors.css +0 -0
  296. /package/src/{v2/styles/tailwind.css → styles/tokens/index.css} +0 -0
@@ -1,7 +1,7 @@
1
- import { Dialog as Kobalte } from "@kobalte/core/dialog"
1
+ import { CloseButton, Content, Description, Title } from "@kobalte/core/dialog"
2
2
  import { type ComponentProps, type JSXElement, type ParentProps, Show, children, splitProps } from "solid-js"
3
3
  import { useI18n } from "../../context/i18n"
4
- import "./dialog-v2.css"
4
+ import "./dialog.css"
5
5
 
6
6
  export interface DialogProps extends ParentProps {
7
7
  size?: "normal" | "large" | "x-large"
@@ -36,7 +36,7 @@ export function DialogBody(props: ParentProps & { class?: ComponentProps<"div">[
36
36
  }
37
37
 
38
38
  export function DialogTitle(props: ParentProps) {
39
- return <Kobalte.Title data-slot="dialog-header-title">{props.children}</Kobalte.Title>
39
+ return <Title data-slot="dialog-header-title">{props.children}</Title>
40
40
  }
41
41
 
42
42
  export function DialogTitleGroup(props: DialogTitleGroupProps) {
@@ -45,8 +45,8 @@ export function DialogTitleGroup(props: DialogTitleGroupProps) {
45
45
 
46
46
  return (
47
47
  <div data-slot="dialog-title-group">
48
- <Show when={title()}>{(t) => <Kobalte.Title data-slot="dialog-title">{t()}</Kobalte.Title>}</Show>
49
- <Kobalte.Description data-slot="dialog-description">{description()}</Kobalte.Description>
48
+ <Show when={title()}>{(t) => <Title data-slot="dialog-title">{t()}</Title>}</Show>
49
+ <Description data-slot="dialog-description">{description()}</Description>
50
50
  </div>
51
51
  )
52
52
  }
@@ -59,8 +59,8 @@ export function DialogHeader(props: DialogHeaderProps) {
59
59
  return (
60
60
  <div data-slot="dialog-header" data-hide-close={hideClose() ? "" : undefined}>
61
61
  {local.children}
62
- {!hideClose() && (
63
- <Kobalte.CloseButton data-slot="dialog-close-button" aria-label={local.closeLabel ?? i18n.t("ui.common.close")}>
62
+ <Show when={!hideClose()}>
63
+ <CloseButton data-slot="dialog-close-button" aria-label={local.closeLabel ?? i18n.t("ui.common.close")}>
64
64
  <svg
65
65
  width="16"
66
66
  height="16"
@@ -75,8 +75,8 @@ export function DialogHeader(props: DialogHeaderProps) {
75
75
  stroke-linejoin="round"
76
76
  />
77
77
  </svg>
78
- </Kobalte.CloseButton>
79
- )}
78
+ </CloseButton>
79
+ </Show>
80
80
  </div>
81
81
  )
82
82
  }
@@ -92,7 +92,7 @@ export function Dialog(props: DialogProps) {
92
92
  data-size={local.size || "normal"}
93
93
  >
94
94
  <div data-slot="dialog-container" class={local.containerClass}>
95
- <Kobalte.Content
95
+ <Content
96
96
  data-slot="dialog-content"
97
97
  classList={{
98
98
  ...local.classList,
@@ -108,10 +108,8 @@ export function Dialog(props: DialogProps) {
108
108
  }}
109
109
  >
110
110
  {local.children}
111
- </Kobalte.Content>
111
+ </Content>
112
112
  </div>
113
113
  </div>
114
114
  )
115
115
  }
116
-
117
- export const DialogV2 = Dialog
@@ -39,6 +39,32 @@
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
+
42
68
  @keyframes tooltipV2In {
43
69
  from {
44
70
  opacity: 0;
@@ -1,19 +1,21 @@
1
- import { Tooltip as KobalteTooltip } from "@kobalte/core/tooltip"
2
- import { createEffect, Match, onCleanup, splitProps, Switch, type JSX } from "solid-js"
1
+ import { Content, Portal, Root, Trigger } from "@kobalte/core/tooltip"
2
+ import { createEffect, Match, onCleanup, splitProps, Switch, untrack, type JSX } from "solid-js"
3
3
  import type { ComponentProps } from "solid-js"
4
4
  import { createStore } from "solid-js/store"
5
- import "./tooltip-v2.css"
5
+ import "./tooltip.css"
6
6
 
7
- export interface TooltipV2Props extends ComponentProps<typeof KobalteTooltip> {
7
+ export interface TooltipProps extends ComponentProps<typeof Root> {
8
8
  value: JSX.Element
9
+ appearance?: "standard" | "compact"
9
10
  class?: string
10
11
  contentClass?: string
11
12
  contentStyle?: JSX.CSSProperties
12
13
  inactive?: boolean
13
14
  forceOpen?: boolean
15
+ triggerTabIndex?: number
14
16
  }
15
17
 
16
- export function TooltipV2(props: TooltipV2Props) {
18
+ export function Tooltip(props: TooltipProps) {
17
19
  let ref: HTMLDivElement | undefined
18
20
  const [state, setState] = createStore({
19
21
  open: false,
@@ -22,16 +24,19 @@ export function TooltipV2(props: TooltipV2Props) {
22
24
  })
23
25
  const [local, others] = splitProps(props, [
24
26
  "children",
27
+ "appearance",
25
28
  "class",
26
29
  "contentClass",
27
30
  "contentStyle",
28
31
  "inactive",
29
32
  "forceOpen",
33
+ "triggerTabIndex",
30
34
  "ignoreSafeArea",
31
35
  "value",
32
36
  ])
33
37
 
34
38
  const close = () => setState("open", false)
39
+ const controlled = () => local.forceOpen !== undefined
35
40
 
36
41
  const inside = () => {
37
42
  const active = document.activeElement
@@ -40,7 +45,7 @@ export function TooltipV2(props: TooltipV2Props) {
40
45
  }
41
46
 
42
47
  const drop = (expand = state.expand) => {
43
- if (expand) return
48
+ if (expand || !state.block) return
44
49
  if (ref?.matches(":hover")) return
45
50
  if (inside()) return
46
51
  setState("block", false)
@@ -69,7 +74,7 @@ export function TooltipV2(props: TooltipV2Props) {
69
74
 
70
75
  createEffect(() => {
71
76
  if (!ref) return
72
- sync()
77
+ untrack(sync)
73
78
  const obs = new MutationObserver(sync)
74
79
  obs.observe(ref, {
75
80
  subtree: true,
@@ -86,16 +91,16 @@ export function TooltipV2(props: TooltipV2Props) {
86
91
  <Switch>
87
92
  <Match when={local.inactive}>{local.children}</Match>
88
93
  <Match when={true}>
89
- <KobalteTooltip
94
+ <Root
90
95
  gutter={4}
91
96
  openDelay={400}
92
97
  skipDelayDuration={300}
93
98
  {...others}
94
99
  closeDelay={0}
95
100
  ignoreSafeArea={local.ignoreSafeArea ?? true}
96
- open={local.forceOpen || state.open}
101
+ open={controlled() ? local.forceOpen : state.open}
97
102
  onOpenChange={(open) => {
98
- if (local.forceOpen) return
103
+ if (controlled()) return
99
104
  if (state.block && open) return
100
105
  if (justClickedTrigger) {
101
106
  justClickedTrigger = false
@@ -104,9 +109,10 @@ export function TooltipV2(props: TooltipV2Props) {
104
109
  setState("open", open)
105
110
  }}
106
111
  >
107
- <KobalteTooltip.Trigger
112
+ <Trigger
108
113
  ref={ref}
109
114
  as="div"
115
+ tabIndex={local.triggerTabIndex}
110
116
  data-component="tooltip-v2-trigger"
111
117
  class={local.class}
112
118
  onPointerDownCapture={arm}
@@ -118,14 +124,15 @@ export function TooltipV2(props: TooltipV2Props) {
118
124
  onFocusOut={() => requestAnimationFrame(() => drop())}
119
125
  >
120
126
  {local.children}
121
- </KobalteTooltip.Trigger>
122
- <KobalteTooltip.Portal>
123
- <KobalteTooltip.Content
127
+ </Trigger>
128
+ <Portal>
129
+ <Content
124
130
  ref={(el) => {
125
131
  const theme = ref?.closest("[data-theme]")?.getAttribute("data-theme")
126
132
  if (theme) el.setAttribute("data-theme", theme)
127
133
  }}
128
134
  data-component="tooltip-v2"
135
+ data-appearance={local.appearance ?? "compact"}
129
136
  data-placement={props.placement}
130
137
  data-force-open={local.forceOpen}
131
138
  class={local.contentClass}
@@ -138,9 +145,9 @@ export function TooltipV2(props: TooltipV2Props) {
138
145
  }}
139
146
  >
140
147
  {local.value}
141
- </KobalteTooltip.Content>
142
- </KobalteTooltip.Portal>
143
- </KobalteTooltip>
148
+ </Content>
149
+ </Portal>
150
+ </Root>
144
151
  </Match>
145
152
  </Switch>
146
153
  )
@@ -401,4 +401,9 @@ input:where([type="button"], [type="reset"], [type="submit"]),
401
401
  [contenteditable="true"] {
402
402
  font-size: 16px !important;
403
403
  }
404
+
405
+ input::placeholder,
406
+ textarea::placeholder {
407
+ font-size: 13px;
408
+ }
404
409
  }
@@ -6,47 +6,31 @@
6
6
  @import "./base.css" layer(base);
7
7
  @import "katex/dist/katex.min.css" layer(base);
8
8
 
9
- @import "../components/accordion.css" layer(components);
9
+ @import "../data-display/accordion/accordion.css" layer(components);
10
10
  @import "../components/animated-number.css" layer(components);
11
11
  @import "../components/app-icon.css" layer(components);
12
- @import "../components/avatar.css" layer(components);
13
- @import "../components/button.css" layer(components);
14
12
  @import "../components/card.css" layer(components);
15
- @import "../components/checkbox.css" layer(components);
13
+ @import "../forms/checkbox/checkbox.css" layer(components);
16
14
  @import "../components/collapsible.css" layer(components);
17
- @import "../components/diff-changes.css" layer(components);
18
15
  @import "../components/context-menu.css" layer(components);
19
- @import "../components/dropdown-menu.css" layer(components);
20
- @import "../components/dialog.css" layer(components);
21
16
  @import "../components/file-icon.css" layer(components);
22
17
  @import "../components/hover-card.css" layer(components);
23
18
  @import "../components/provider-icon.css" layer(components);
24
19
  @import "../components/dock-surface.css" layer(components);
25
- @import "../components/icon.css" layer(components);
26
- @import "../components/icon-button.css" layer(components);
27
20
  @import "../components/image-preview.css" layer(components);
28
- @import "../components/keybind.css" layer(components);
21
+ @import "../forms/inline-input/inline-input.css" layer(components);
29
22
  @import "../components/text-field.css" layer(components);
30
- @import "../components/inline-input.css" layer(components);
31
23
  @import "../components/list.css" layer(components);
32
24
  @import "../components/logo.css" layer(components);
33
25
  @import "../components/popover.css" layer(components);
34
26
  @import "../components/progress.css" layer(components);
35
- @import "../components/progress-circle.css" layer(components);
36
- @import "../components/radio-group.css" layer(components);
37
27
  @import "../components/resize-handle.css" layer(components);
38
- @import "../components/select.css" layer(components);
39
28
  @import "../components/spinner.css" layer(components);
40
- @import "../components/switch.css" layer(components);
41
29
  @import "../components/scroll-view.css" layer(components);
42
30
  @import "../components/sticky-accordion-header.css" layer(components);
43
- @import "../components/tabs.css" layer(components);
44
- @import "../components/tag.css" layer(components);
31
+ @import "../navigation/tabs/tabs.css" layer(components);
45
32
  @import "../components/text-reveal.css" layer(components);
46
33
  @import "../components/text-strikethrough.css" layer(components);
47
- @import "../components/text-shimmer.css" layer(components);
48
- @import "../components/toast.css" layer(components);
49
- @import "../components/tooltip.css" layer(components);
50
34
  @import "../components/typewriter.css" layer(components);
51
35
 
52
36
  @import "./utilities.css" layer(utilities);
@@ -252,6 +252,7 @@
252
252
  --color-v2-text-text-code-accent: var(--v2-text-text-code-accent);
253
253
  --color-v2-icon-icon-base: var(--v2-icon-icon-base);
254
254
  --color-v2-icon-icon-muted: var(--v2-icon-icon-muted);
255
+ --color-v2-icon-icon-faint: var(--v2-icon-icon-faint);
255
256
  --color-v2-icon-icon-inverse: var(--v2-icon-icon-inverse);
256
257
  --color-v2-icon-icon-contrast: var(--v2-icon-icon-contrast);
257
258
  --color-v2-icon-icon-accent: var(--v2-icon-icon-accent);
@@ -1,7 +1,21 @@
1
1
  @layer theme, base, components, utilities;
2
2
 
3
3
  @import "tailwindcss/theme.css" layer(theme);
4
- @import "tailwindcss/utilities.css" layer(utilities) source("../../../../");
4
+ @import "tailwindcss/utilities.css" layer(utilities) source(none);
5
+ @source "../../../../app/src";
6
+ @source "../../../../app/index.html";
7
+ @source not "../../../../app/src/i18n";
8
+ @source not "../../../../app/src/**/*.test.{ts,tsx}";
9
+ @source "../../../../desktop/src/renderer";
10
+ @source not "../../../../desktop/src/renderer/**/*.test.{ts,tsx}";
11
+ @source "../../../../enterprise/src";
12
+ @source "../../../../session-ui/src";
13
+ @source not "../../../../session-ui/src/**/*.test.{ts,tsx}";
14
+ @source "../../../../storybook";
15
+ @source "../../../src";
16
+ @source not "../../../src/assets";
17
+ @source not "../../../src/i18n";
18
+ @source not "../../../src/**/*.test.{ts,tsx}";
5
19
  @import "./utilities.css";
6
20
 
7
21
  @import "../index.css";
@@ -51,6 +65,9 @@
51
65
  --leading-lg: var(--line-height-large);
52
66
  --leading-xl: var(--line-height-x-large);
53
67
  --leading-2xl: var(--line-height-2x-large);
68
+ --leading-text-tight: var(--line-height-tight);
69
+ --leading-text-compact: var(--line-height-compact);
70
+ --leading-text-base: var(--line-height-base);
54
71
 
55
72
  --tracking-normal: var(--letter-spacing-normal);
56
73
  --tracking-tight: var(--letter-spacing-tight);
@@ -1,8 +1,8 @@
1
1
  :root {
2
- --font-family-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
2
+ --font-family-sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
3
3
  --font-family-sans--font-feature-settings: normal;
4
4
  --font-family-mono:
5
- ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
5
+ "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
6
6
  --font-family-mono--font-feature-settings: normal;
7
7
 
8
8
  --font-size-small: 13px;
@@ -1,16 +1,4 @@
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
-
14
2
  :root {
15
3
  color-scheme: light;
16
4
 
@@ -25,6 +13,7 @@
25
13
  --v2-background-bg-contrast: var(--v2-grey-1000);
26
14
  --v2-background-bg-button-neutral: var(--v2-grey-50);
27
15
  --v2-background-bg-accent: var(--v2-blue-600);
16
+ --v2-background-bg-code-path: var(--v2-cyan-100);
28
17
 
29
18
  /* ── Text ── */
30
19
  --v2-text-text-base: var(--v2-grey-1100);
@@ -35,10 +24,12 @@
35
24
  --v2-text-text-accent: var(--v2-blue-600);
36
25
  --v2-text-text-accent-hover: var(--v2-blue-700);
37
26
  --v2-text-text-code-accent: var(--v2-blue-900);
27
+ --v2-text-text-code-path: var(--v2-cyan-900);
38
28
 
39
29
  /* ── Icon ── */
40
30
  --v2-icon-icon-base: var(--v2-grey-800);
41
31
  --v2-icon-icon-muted: var(--v2-grey-600);
32
+ --v2-icon-icon-faint: var(--v2-grey-500);
42
33
  --v2-icon-icon-inverse: var(--v2-grey-50);
43
34
  --v2-icon-icon-contrast: var(--v2-grey-100);
44
35
  --v2-icon-icon-accent: var(--v2-blue-600);
@@ -140,8 +131,12 @@
140
131
  --v2-illustration-illustration-layer-02: var(--v2-grey-400);
141
132
  --v2-illustration-illustration-layer-03: var(--v2-grey-500);
142
133
 
143
- --font-family-text: "Inter", sans-serif;
144
- --v2-font-family-sans: "Inter", sans-serif;
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;
145
140
  }
146
141
 
147
142
  /* OS preference fallback (no JS needed) */
@@ -158,6 +153,7 @@
158
153
  --v2-background-bg-contrast: var(--v2-grey-700);
159
154
  --v2-background-bg-button-neutral: var(--v2-alpha-light-6);
160
155
  --v2-background-bg-accent: var(--v2-blue-600);
156
+ --v2-background-bg-code-path: var(--v2-cyan-1200);
161
157
 
162
158
  --v2-text-text-base: var(--v2-grey-200);
163
159
  --v2-text-text-muted: var(--v2-grey-500);
@@ -167,9 +163,11 @@
167
163
  --v2-text-text-accent: var(--v2-blue-400);
168
164
  --v2-text-text-accent-hover: var(--v2-blue-300);
169
165
  --v2-text-text-code-accent: var(--v2-blue-400);
166
+ --v2-text-text-code-path: var(--v2-cyan-400);
170
167
 
171
168
  --v2-icon-icon-base: var(--v2-grey-400);
172
169
  --v2-icon-icon-muted: var(--v2-grey-600);
170
+ --v2-icon-icon-faint: var(--v2-grey-500);
173
171
  --v2-icon-icon-inverse: var(--v2-grey-1000);
174
172
  --v2-icon-icon-contrast: var(--v2-grey-200);
175
173
  --v2-icon-icon-accent: var(--v2-blue-400);
@@ -271,6 +269,7 @@
271
269
  --v2-background-bg-contrast: var(--v2-grey-1000);
272
270
  --v2-background-bg-button-neutral: var(--v2-grey-50);
273
271
  --v2-background-bg-accent: var(--v2-blue-600);
272
+ --v2-background-bg-code-path: var(--v2-cyan-100);
274
273
 
275
274
  --v2-text-text-base: var(--v2-grey-1100);
276
275
  --v2-text-text-muted: var(--v2-grey-700);
@@ -280,9 +279,11 @@
280
279
  --v2-text-text-accent: var(--v2-blue-600);
281
280
  --v2-text-text-accent-hover: var(--v2-blue-700);
282
281
  --v2-text-text-code-accent: var(--v2-blue-900);
282
+ --v2-text-text-code-path: var(--v2-cyan-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);
286
287
  --v2-icon-icon-inverse: var(--v2-grey-50);
287
288
  --v2-icon-icon-contrast: var(--v2-grey-100);
288
289
  --v2-icon-icon-accent: var(--v2-blue-600);
@@ -393,6 +394,7 @@
393
394
  --v2-background-bg-contrast: var(--v2-grey-700);
394
395
  --v2-background-bg-button-neutral: var(--v2-alpha-light-6);
395
396
  --v2-background-bg-accent: var(--v2-blue-600);
397
+ --v2-background-bg-code-path: var(--v2-cyan-1200);
396
398
 
397
399
  --v2-text-text-base: var(--v2-grey-100);
398
400
  --v2-text-text-muted: var(--v2-grey-500);
@@ -402,9 +404,11 @@
402
404
  --v2-text-text-accent: var(--v2-blue-400);
403
405
  --v2-text-text-accent-hover: var(--v2-blue-300);
404
406
  --v2-text-text-code-accent: var(--v2-blue-400);
407
+ --v2-text-text-code-path: var(--v2-cyan-400);
405
408
 
406
409
  --v2-icon-icon-base: var(--v2-grey-400);
407
410
  --v2-icon-icon-muted: var(--v2-grey-600);
411
+ --v2-icon-icon-faint: var(--v2-grey-500);
408
412
  --v2-icon-icon-inverse: var(--v2-grey-1100);
409
413
  --v2-icon-icon-contrast: var(--v2-grey-100);
410
414
  --v2-icon-icon-accent: var(--v2-blue-400);
@@ -84,8 +84,9 @@ const names: Record<string, string> = {
84
84
  }
85
85
  const oc2Theme = oc2ThemeJson as DesktopTheme
86
86
 
87
- function normalize(id: string | null | undefined) {
88
- return id === "oc-1" ? "oc-2" : id
87
+ function resolveStoredTheme(id: string | null | undefined, registered?: Record<string, DesktopTheme>) {
88
+ if (id === "oc-2" || (id && (knownThemes().has(id) || registered?.[id]))) return id
89
+ return "oc-2"
89
90
  }
90
91
 
91
92
  function read(key: string) {
@@ -177,7 +178,12 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({
177
178
  defaultTheme?: string
178
179
  onThemeApplied?: (theme: DesktopTheme, mode: "light" | "dark", scheme: ColorScheme) => void
179
180
  }) => {
180
- const themeId = normalize(read(STORAGE_KEYS.THEME_ID) ?? props.defaultTheme) ?? "oc-2"
181
+ const rawTheme = read(STORAGE_KEYS.THEME_ID) ?? props.defaultTheme
182
+ const themeId = resolveStoredTheme(rawTheme)
183
+ if (rawTheme && rawTheme !== themeId) {
184
+ write(STORAGE_KEYS.THEME_ID, themeId)
185
+ clear()
186
+ }
181
187
  const colorScheme = (read(STORAGE_KEYS.COLOR_SCHEME) as ColorScheme | null) ?? "system"
182
188
  const mode = colorScheme === "system" ? getSystemMode() : colorScheme
183
189
  const [store, setStore] = createStore({
@@ -194,7 +200,7 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({
194
200
  const loads = new Map<string, Promise<DesktopTheme | undefined>>()
195
201
 
196
202
  const load = (id: string) => {
197
- const next = normalize(id)
203
+ const next = id
198
204
  if (!next) return Promise.resolve(undefined)
199
205
  const hit = store.themes[next]
200
206
  if (hit) return Promise.resolve(hit)
@@ -233,9 +239,11 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({
233
239
 
234
240
  const onStorage = (e: StorageEvent) => {
235
241
  if (e.key === STORAGE_KEYS.THEME_ID && e.newValue) {
236
- const next = normalize(e.newValue)
237
- if (!next) return
238
- if (next !== "oc-2" && !knownThemes().has(next) && !store.themes[next]) return
242
+ const next = resolveStoredTheme(e.newValue, store.themes)
243
+ if (next !== e.newValue) {
244
+ write(STORAGE_KEYS.THEME_ID, next)
245
+ clear()
246
+ }
239
247
  setStore("themeId", next)
240
248
  if (next === "oc-2") {
241
249
  clear()
@@ -262,8 +270,8 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({
262
270
  }
263
271
  makeEventListener(mediaQuery, "change", onMedia)
264
272
 
265
- const rawTheme = read(STORAGE_KEYS.THEME_ID)
266
- const savedTheme = normalize(rawTheme ?? props.defaultTheme) ?? "oc-2"
273
+ const rawTheme = read(STORAGE_KEYS.THEME_ID) ?? props.defaultTheme
274
+ const savedTheme = resolveStoredTheme(rawTheme, store.themes)
267
275
  const savedScheme = (read(STORAGE_KEYS.COLOR_SCHEME) as ColorScheme | null) ?? "system"
268
276
  if (rawTheme && rawTheme !== savedTheme) {
269
277
  write(STORAGE_KEYS.THEME_ID, savedTheme)
@@ -285,7 +293,7 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({
285
293
  })
286
294
 
287
295
  const setTheme = (id: string) => {
288
- const next = normalize(id)
296
+ const next = id
289
297
  if (!next) {
290
298
  console.warn(`Theme "${id}" not found`)
291
299
  return
@@ -325,7 +333,7 @@ export const { use: useTheme, provider: ThemeProvider } = createSimpleContext({
325
333
  setColorScheme,
326
334
  registerTheme: (theme: DesktopTheme) => setStore("themes", theme.id, theme),
327
335
  previewTheme: (id: string) => {
328
- const next = normalize(id)
336
+ const next = id
329
337
  if (!next) return
330
338
  if (next !== "oc-2" && !knownThemes().has(next) && !store.themes[next]) return
331
339
  setStore("previewThemeId", next)
@@ -25,7 +25,7 @@
25
25
  "border-weak-base": "#DBDBDB",
26
26
  "border-weaker-base": "#E8E8E8",
27
27
  "icon-base": "#8F8F8F",
28
- "icon-weak-base": "#C7C7C7",
28
+ "icon-weak-base": "C7C7C7",
29
29
  "surface-raised-base": "#F3F3F3",
30
30
  "surface-raised-base-hover": "#EDEDED",
31
31
  "surface-base": "#F8F8F8",
@@ -176,6 +176,7 @@
176
176
  "v2-text-text-code-accent": "var(--v2-blue-900)",
177
177
  "v2-icon-icon-base": "var(--v2-grey-800)",
178
178
  "v2-icon-icon-muted": "var(--v2-grey-600)",
179
+ "v2-icon-icon-faint": "var(--v2-grey-500)",
179
180
  "v2-icon-icon-inverse": "var(--v2-grey-50)",
180
181
  "v2-icon-icon-contrast": "var(--v2-grey-100)",
181
182
  "v2-icon-icon-accent": "var(--v2-blue-600)",
@@ -411,6 +412,7 @@
411
412
  "v2-text-text-code-accent": "var(--v2-blue-400)",
412
413
  "v2-icon-icon-base": "var(--v2-grey-400)",
413
414
  "v2-icon-icon-muted": "var(--v2-grey-600)",
415
+ "v2-icon-icon-faint": "var(--v2-grey-500)",
414
416
  "v2-icon-icon-inverse": "var(--v2-grey-1100)",
415
417
  "v2-icon-icon-contrast": "var(--v2-grey-100)",
416
418
  "v2-icon-icon-accent": "var(--v2-blue-400)",
@@ -52,6 +52,7 @@ export function mapV2Foreground(
52
52
  "v2-text-text-faint": shift(body, { l: isDark ? -0.2 : 0.21, c: isDark ? 0.78 : 0.72 }),
53
53
  "v2-icon-icon-base": greyRef(pickGrey(primitives, bgBase, 7, isDark ? 400 : 800)),
54
54
  "v2-icon-icon-muted": greyRef(pickGrey(primitives, bgBase, 3, 600)),
55
+ "v2-icon-icon-faint": greyRef(pickGrey(primitives, bgBase, 1.5, 500)),
55
56
  "v2-icon-icon-inverse": greyRef(pickGrey(primitives, bgInverse, 7, inverseTarget)),
56
57
  "v2-icon-icon-contrast": greyRef(pickGrey(primitives, bgContrast, 7, 100)),
57
58
  "v2-icon-icon-accent": isDark ? "var(--v2-blue-400)" : "var(--v2-blue-600)",
@@ -42,11 +42,13 @@ const light: Record<string, V2ColorValue> = {
42
42
  "v2-background-bg-contrast": ref("v2-grey-900"),
43
43
  "v2-background-bg-button-neutral": ref("v2-grey-100"),
44
44
  "v2-background-bg-accent": ref("v2-blue-600"),
45
+ "v2-background-bg-code-path": ref("v2-cyan-100"),
45
46
  "v2-text-text-inverse": ref("v2-grey-100"),
46
47
  "v2-text-text-contrast": ref("v2-grey-100"),
47
48
  "v2-text-text-accent": ref("v2-blue-600"),
48
49
  "v2-text-text-accent-hover": ref("v2-blue-700"),
49
50
  "v2-text-text-code-accent": ref("v2-blue-900"),
51
+ "v2-text-text-code-path": ref("v2-cyan-900"),
50
52
  "v2-border-border-muted": ref("v2-alpha-dark-8"),
51
53
  "v2-border-border-base": ref("v2-alpha-dark-10"),
52
54
  "v2-border-border-strong": ref("v2-alpha-dark-20"),
@@ -107,11 +109,13 @@ const dark: Record<string, V2ColorValue> = {
107
109
  "v2-background-bg-contrast": ref("v2-grey-700"),
108
110
  "v2-background-bg-button-neutral": ref("v2-alpha-light-6"),
109
111
  "v2-background-bg-accent": ref("v2-blue-600"),
112
+ "v2-background-bg-code-path": ref("v2-cyan-1200"),
110
113
  "v2-text-text-inverse": ref("v2-grey-1000"),
111
114
  "v2-text-text-contrast": ref("v2-grey-100"),
112
115
  "v2-text-text-accent": ref("v2-blue-400"),
113
116
  "v2-text-text-accent-hover": ref("v2-blue-300"),
114
117
  "v2-text-text-code-accent": ref("v2-blue-400"),
118
+ "v2-text-text-code-path": ref("v2-cyan-400"),
115
119
  "v2-border-border-muted": ref("v2-alpha-light-8"),
116
120
  "v2-border-border-base": ref("v2-alpha-light-10"),
117
121
  "v2-border-border-strong": ref("v2-alpha-light-20"),
@@ -5,7 +5,8 @@
5
5
  --text-shimmer-index: 0;
6
6
  --text-shimmer-angle: 90deg;
7
7
  --text-shimmer-spread: 5.2ch;
8
- --text-shimmer-size: 360%;
8
+ --text-shimmer-gutter: calc(var(--text-shimmer-spread) + 1ch);
9
+ --text-shimmer-size: calc(200% + var(--text-shimmer-gutter) + var(--text-shimmer-gutter));
9
10
  --text-shimmer-base-color: var(--text-weak);
10
11
  --text-shimmer-peak-color: var(--text-strong);
11
12
  --text-shimmer-sweep: linear-gradient(
@@ -1,5 +1,6 @@
1
1
  import { createEffect, createMemo, createSignal, onCleanup, type ValidComponent } from "solid-js"
2
2
  import { Dynamic } from "solid-js/web"
3
+ import "./text-shimmer.css"
3
4
 
4
5
  export const TextShimmer = <T extends ValidComponent = "span">(props: {
5
6
  text: string
@@ -1,6 +1,6 @@
1
1
  import { createUniqueId, type ComponentProps } from "solid-js"
2
2
 
3
- export function WordmarkV2(props: Pick<ComponentProps<"svg">, "class">) {
3
+ export function Wordmark(props: Pick<ComponentProps<"svg">, "class">) {
4
4
  const mask = createUniqueId()
5
5
  const maskGradient = createUniqueId()
6
6
 
@@ -11,7 +11,7 @@ export function WordmarkV2(props: Pick<ComponentProps<"svg">, "class">) {
11
11
  fill="none"
12
12
  classList={{ [props.class ?? ""]: !!props.class }}
13
13
  >
14
- <g opacity="0.6">
14
+ <g opacity="0.6" class="[[data-color-scheme=dark]_&]:opacity-100">
15
15
  <g mask={`url(#${mask})`}>
16
16
  <g opacity="0.16">
17
17
  <path
@@ -1,9 +0,0 @@
1
- import { type ComponentProps } from "solid-js";
2
- export interface AvatarProps extends ComponentProps<"div"> {
3
- fallback: string;
4
- src?: string;
5
- background?: string;
6
- foreground?: string;
7
- size?: "small" | "normal" | "large";
8
- }
9
- export declare function Avatar(props: AvatarProps): import("solid-js").JSX.Element;
@@ -1,9 +0,0 @@
1
- import { Button as Kobalte } from "@kobalte/core/button";
2
- import { type ComponentProps } from "solid-js";
3
- import { IconProps } from "./icon";
4
- export interface ButtonProps extends ComponentProps<typeof Kobalte>, Pick<ComponentProps<"button">, "class" | "classList" | "children"> {
5
- size?: "small" | "normal" | "large";
6
- variant?: "primary" | "secondary" | "ghost";
7
- icon?: IconProps["name"];
8
- }
9
- export declare function Button(props: ButtonProps): import("solid-js").JSX.Element;