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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/dist/actions/button/button.d.ts +10 -0
  2. package/dist/actions/icon-button/icon-button.d.ts +11 -0
  3. package/dist/actions/split-button/split-button.d.ts +5 -0
  4. package/dist/components/card.d.ts +1 -1
  5. package/dist/components/list.d.ts +1 -1
  6. package/dist/components/scroll-view.d.ts +3 -3
  7. package/dist/context/i18n.d.ts +10 -7
  8. package/dist/{components → data-display/accordion}/accordion.d.ts +6 -6
  9. package/dist/{v2/components/avatar-v2.d.ts → data-display/avatar/avatar.d.ts} +1 -1
  10. package/dist/data-display/badge/badge.d.ts +7 -0
  11. package/dist/{components → data-display/diff-changes}/diff-changes.d.ts +2 -1
  12. package/dist/data-display/keybind/keybind.d.ts +7 -0
  13. package/dist/{v2/components/line-comment-v2.d.ts → data-display/line-comment/line-comment.d.ts} +9 -9
  14. package/dist/{v2/components/project-avatar-v2.d.ts → data-display/project-avatar/project-avatar.d.ts} +1 -1
  15. package/dist/feedback/loader/loader.d.ts +3 -0
  16. package/dist/{components → feedback/progress-circle}/progress-circle.d.ts +2 -0
  17. package/dist/feedback/toast/toast.d.ts +57 -0
  18. package/dist/{components → forms/checkbox}/checkbox.d.ts +2 -2
  19. package/dist/{v2/components/field-v2.d.ts → forms/field/field.d.ts} +4 -10
  20. package/dist/forms/radio/radio.d.ts +16 -0
  21. package/dist/{v2/components/select-v2.d.ts → forms/select/select.d.ts} +4 -6
  22. package/dist/{components → forms/switch}/switch.d.ts +4 -2
  23. package/dist/{v2/components/text-input-v2.d.ts → forms/text-input/text-input.d.ts} +3 -3
  24. package/dist/forms/textarea/textarea.d.ts +7 -0
  25. package/dist/i18n/ar.d.ts +0 -2
  26. package/dist/i18n/bg.d.ts +0 -2
  27. package/dist/i18n/br.d.ts +0 -2
  28. package/dist/i18n/bs.d.ts +0 -2
  29. package/dist/i18n/da.d.ts +0 -2
  30. package/dist/i18n/de.d.ts +0 -2
  31. package/dist/i18n/en.d.ts +209 -1
  32. package/dist/i18n/es.d.ts +0 -2
  33. package/dist/i18n/fr.d.ts +0 -2
  34. package/dist/i18n/he.d.ts +197 -0
  35. package/dist/i18n/ja.d.ts +0 -2
  36. package/dist/i18n/km.d.ts +0 -2
  37. package/dist/i18n/ko.d.ts +0 -2
  38. package/dist/i18n/lo.d.ts +0 -2
  39. package/dist/i18n/mk.d.ts +0 -2
  40. package/dist/i18n/mn.d.ts +0 -2
  41. package/dist/i18n/my.d.ts +0 -2
  42. package/dist/i18n/pl.d.ts +0 -2
  43. package/dist/i18n/ru.d.ts +0 -2
  44. package/dist/i18n/sr.d.ts +0 -2
  45. package/dist/i18n/tg.d.ts +0 -2
  46. package/dist/i18n/th.d.ts +0 -2
  47. package/dist/i18n/tr.d.ts +0 -2
  48. package/dist/i18n/zh.d.ts +0 -2
  49. package/dist/i18n/zht.d.ts +0 -2
  50. package/dist/{components/icon.d.ts → icons/icon/additional-icons.d.ts} +8 -8
  51. package/dist/{v2/components → icons/icon}/icon.d.ts +16 -1
  52. package/dist/layout/divider/divider.d.ts +5 -0
  53. package/dist/navigation/menu/menu.d.ts +59 -0
  54. package/dist/{v2/components/segmented-control-v2.d.ts → navigation/segmented-control/segmented-control.d.ts} +5 -5
  55. package/dist/{components → navigation/tabs}/tabs.d.ts +15 -8
  56. package/dist/{v2/components/dialog-v2.d.ts → overlays/dialog/dialog.d.ts} +1 -2
  57. package/dist/overlays/tooltip/tooltip.d.ts +14 -0
  58. package/dist/{components → typography/text-shimmer}/text-shimmer.d.ts +1 -0
  59. package/dist/typography/wordmark/wordmark.d.ts +2 -0
  60. package/package.json +131 -13
  61. package/src/{v2/components/button-v2.tsx → actions/button/button.tsx} +8 -8
  62. package/src/actions/icon-button/icon-button.tsx +32 -0
  63. package/src/{v2/components/split-button-v2.css → actions/split-button/split-button.css} +1 -6
  64. package/src/{v2/components/split-button-v2.tsx → actions/split-button/split-button.tsx} +4 -4
  65. package/src/components/animated-number.css +29 -11
  66. package/src/components/animated-number.tsx +2 -2
  67. package/src/components/card.css +2 -23
  68. package/src/components/card.tsx +4 -4
  69. package/src/components/collapsible.tsx +1 -1
  70. package/src/components/image-preview.tsx +3 -2
  71. package/src/components/list.css +5 -5
  72. package/src/components/list.tsx +7 -5
  73. package/src/components/popover.tsx +3 -2
  74. package/src/components/provider-icon.tsx +1 -1
  75. package/src/components/scroll-view.tsx +5 -20
  76. package/src/components/sticky-accordion-header.tsx +1 -1
  77. package/src/components/text-field.tsx +12 -4
  78. package/src/context/i18n.tsx +17 -14
  79. package/src/{components → data-display/accordion}/accordion.css +1 -26
  80. package/src/{components → data-display/accordion}/accordion.tsx +14 -14
  81. package/src/{v2/components/avatar-v2.tsx → data-display/avatar/avatar.tsx} +1 -1
  82. package/src/{v2/components/badge-v2.css → data-display/badge/badge.css} +19 -0
  83. package/src/{v2/components/badge-v2.tsx → data-display/badge/badge.tsx} +6 -4
  84. package/src/{components → data-display/diff-changes}/diff-changes.css +22 -19
  85. package/src/{v2/components/diff-changes-v2.tsx → data-display/diff-changes/diff-changes.tsx} +7 -2
  86. package/src/{v2/components/keybind-v2.css → data-display/keybind/keybind.css} +1 -1
  87. package/src/{v2/components/keybind-v2.tsx → data-display/keybind/keybind.tsx} +3 -3
  88. package/src/{v2/components/line-comment-v2.tsx → data-display/line-comment/line-comment.tsx} +17 -15
  89. package/src/{v2/components/project-avatar-v2.tsx → data-display/project-avatar/project-avatar.tsx} +1 -1
  90. package/src/{v2/components/loader-v2.tsx → feedback/loader/loader.tsx} +2 -2
  91. package/src/feedback/progress-circle/progress-circle.css +28 -0
  92. package/src/feedback/progress-circle/progress-circle.tsx +64 -0
  93. package/src/{v2/components/toast-v2.tsx → feedback/toast/toast.tsx} +60 -58
  94. package/src/{components → forms/checkbox}/checkbox.css +1 -7
  95. package/src/{components → forms/checkbox}/checkbox.tsx +13 -13
  96. package/src/{v2/components/field-v2.tsx → forms/field/field.tsx} +9 -11
  97. package/src/{v2/components/radio-v2.tsx → forms/radio/radio.tsx} +30 -20
  98. package/src/{v2/components/select-v2.css → forms/select/select.css} +2 -8
  99. package/src/{v2/components/select-v2.tsx → forms/select/select.tsx} +38 -32
  100. package/src/{v2/components/switch-v2.css → forms/switch/switch.css} +110 -0
  101. package/src/forms/switch/switch.tsx +34 -0
  102. package/src/{v2/components/text-input-v2.tsx → forms/text-input/text-input.tsx} +4 -4
  103. package/src/{v2/components/textarea-v2.tsx → forms/textarea/textarea.tsx} +3 -3
  104. package/src/hooks/create-auto-scroll.tsx +20 -0
  105. package/src/i18n/am.ts +0 -2
  106. package/src/i18n/ar.ts +0 -2
  107. package/src/i18n/az.ts +0 -2
  108. package/src/i18n/bg.ts +0 -2
  109. package/src/i18n/bn.ts +0 -2
  110. package/src/i18n/br.ts +0 -2
  111. package/src/i18n/bs.ts +0 -2
  112. package/src/i18n/ca.ts +0 -2
  113. package/src/i18n/cs.ts +0 -2
  114. package/src/i18n/da.ts +0 -2
  115. package/src/i18n/de.ts +0 -2
  116. package/src/i18n/dv.ts +0 -2
  117. package/src/i18n/dz.ts +0 -2
  118. package/src/i18n/el.ts +0 -2
  119. package/src/i18n/en.ts +18 -4
  120. package/src/i18n/es.ts +0 -2
  121. package/src/i18n/et.ts +0 -2
  122. package/src/i18n/fa.ts +0 -2
  123. package/src/i18n/fi.ts +0 -2
  124. package/src/i18n/fo.ts +0 -2
  125. package/src/i18n/fr.ts +0 -2
  126. package/src/i18n/he.ts +199 -0
  127. package/src/i18n/hi.ts +0 -2
  128. package/src/i18n/hr.ts +0 -2
  129. package/src/i18n/hu.ts +0 -2
  130. package/src/i18n/hy.ts +0 -2
  131. package/src/i18n/id.ts +0 -2
  132. package/src/i18n/is.ts +0 -2
  133. package/src/i18n/it.ts +0 -2
  134. package/src/i18n/ja.ts +0 -2
  135. package/src/i18n/ka.ts +0 -2
  136. package/src/i18n/km.ts +0 -2
  137. package/src/i18n/ko.ts +0 -2
  138. package/src/i18n/lo.ts +0 -2
  139. package/src/i18n/lt.ts +0 -2
  140. package/src/i18n/lv.ts +0 -2
  141. package/src/i18n/mk.ts +0 -2
  142. package/src/i18n/mn.ts +0 -2
  143. package/src/i18n/ms.ts +0 -2
  144. package/src/i18n/my.ts +0 -2
  145. package/src/i18n/ne.ts +0 -2
  146. package/src/i18n/nl.ts +0 -2
  147. package/src/i18n/no.ts +0 -2
  148. package/src/i18n/pa.ts +0 -2
  149. package/src/i18n/pl.ts +0 -2
  150. package/src/i18n/ro.ts +0 -2
  151. package/src/i18n/ru.ts +0 -2
  152. package/src/i18n/si.ts +0 -2
  153. package/src/i18n/sk.ts +0 -2
  154. package/src/i18n/sl.ts +0 -2
  155. package/src/i18n/sq.ts +0 -2
  156. package/src/i18n/sr.ts +0 -2
  157. package/src/i18n/sv.ts +0 -2
  158. package/src/i18n/tg.ts +0 -2
  159. package/src/i18n/th.ts +0 -2
  160. package/src/i18n/tk.ts +0 -2
  161. package/src/i18n/tr.ts +0 -2
  162. package/src/i18n/uk.ts +0 -2
  163. package/src/i18n/ur.ts +0 -2
  164. package/src/i18n/uz.ts +0 -2
  165. package/src/i18n/vi.ts +0 -2
  166. package/src/i18n/zh.ts +0 -2
  167. package/src/i18n/zht.ts +0 -2
  168. package/src/{components/icon.tsx → icons/icon/additional-icons.ts} +8 -74
  169. package/src/icons/icon/icon.css +3 -0
  170. package/src/{v2/components → icons/icon}/icon.tsx +42 -9
  171. package/src/{v2/components/divider-v2.tsx → layout/divider/divider.tsx} +3 -3
  172. package/src/{v2/components/menu-v2.css → navigation/menu/menu.css} +121 -0
  173. package/src/{v2/components/menu-v2.tsx → navigation/menu/menu.tsx} +96 -32
  174. package/src/{v2/components/segmented-control-v2.tsx → navigation/segmented-control/segmented-control.tsx} +9 -8
  175. package/src/{v2/components/tabs-v2.css → navigation/tabs/tabs-current.css} +24 -9
  176. package/src/{components → navigation/tabs}/tabs.css +39 -229
  177. package/src/navigation/tabs/tabs.tsx +194 -0
  178. package/src/{v2/components/dialog-v2.css → overlays/dialog/dialog.css} +3 -0
  179. package/src/{v2/components/dialog-v2.tsx → overlays/dialog/dialog.tsx} +11 -13
  180. package/src/{v2/components/tooltip-v2.css → overlays/tooltip/tooltip.css} +26 -0
  181. package/src/{v2/components/tooltip-v2.tsx → overlays/tooltip/tooltip.tsx} +18 -14
  182. package/src/styles/index.css +4 -20
  183. package/src/styles/tailwind/index.css +15 -1
  184. package/src/{v2/styles → styles/tokens}/theme.css +0 -12
  185. package/src/theme/context.tsx +19 -11
  186. package/src/theme/themes/oc-2.json +1 -1
  187. package/src/{components → typography/text-shimmer}/text-shimmer.css +2 -1
  188. package/src/{components → typography/text-shimmer}/text-shimmer.tsx +1 -0
  189. package/src/{v2/components/wordmark-v2.tsx → typography/wordmark/wordmark.tsx} +1 -1
  190. package/dist/components/avatar.d.ts +0 -9
  191. package/dist/components/button.d.ts +0 -9
  192. package/dist/components/dialog.d.ts +0 -12
  193. package/dist/components/dropdown-menu.d.ts +0 -80
  194. package/dist/components/icon-button.d.ts +0 -10
  195. package/dist/components/keybind.d.ts +0 -6
  196. package/dist/components/radio-group.d.ts +0 -16
  197. package/dist/components/select.d.ts +0 -21
  198. package/dist/components/tag.d.ts +0 -5
  199. package/dist/components/toast.d.ts +0 -56
  200. package/dist/components/tooltip.d.ts +0 -17
  201. package/dist/v2/components/accordion-v2.d.ts +0 -26
  202. package/dist/v2/components/badge-v2.d.ts +0 -6
  203. package/dist/v2/components/button-v2.d.ts +0 -10
  204. package/dist/v2/components/checkbox-v2.d.ts +0 -10
  205. package/dist/v2/components/diff-changes-v2.d.ts +0 -11
  206. package/dist/v2/components/divider-v2.d.ts +0 -5
  207. package/dist/v2/components/icon-button-v2.d.ts +0 -11
  208. package/dist/v2/components/inline-input-v2.d.ts +0 -21
  209. package/dist/v2/components/keybind-v2.d.ts +0 -7
  210. package/dist/v2/components/loader-v2.d.ts +0 -3
  211. package/dist/v2/components/menu-v2.d.ts +0 -52
  212. package/dist/v2/components/progress-circle-v2.d.ts +0 -8
  213. package/dist/v2/components/radio-v2.d.ts +0 -16
  214. package/dist/v2/components/split-button-v2.d.ts +0 -5
  215. package/dist/v2/components/switch-v2.d.ts +0 -7
  216. package/dist/v2/components/tabs-v2.d.ts +0 -34
  217. package/dist/v2/components/text-shimmer-v2.d.ts +0 -9
  218. package/dist/v2/components/textarea-v2.d.ts +0 -7
  219. package/dist/v2/components/toast-v2.d.ts +0 -57
  220. package/dist/v2/components/tooltip-v2.d.ts +0 -13
  221. package/dist/v2/components/wordmark-v2.d.ts +0 -2
  222. package/src/components/avatar.css +0 -49
  223. package/src/components/avatar.tsx +0 -55
  224. package/src/components/button.css +0 -194
  225. package/src/components/button.tsx +0 -33
  226. package/src/components/dialog.css +0 -181
  227. package/src/components/dialog.tsx +0 -72
  228. package/src/components/diff-changes.tsx +0 -115
  229. package/src/components/dropdown-menu.css +0 -135
  230. package/src/components/dropdown-menu.tsx +0 -308
  231. package/src/components/icon-button.css +0 -181
  232. package/src/components/icon-button.tsx +0 -29
  233. package/src/components/icon.css +0 -39
  234. package/src/components/keybind.css +0 -18
  235. package/src/components/keybind.tsx +0 -20
  236. package/src/components/progress-circle.css +0 -16
  237. package/src/components/progress-circle.tsx +0 -64
  238. package/src/components/radio-group.css +0 -187
  239. package/src/components/radio-group.tsx +0 -83
  240. package/src/components/select.css +0 -201
  241. package/src/components/select.tsx +0 -174
  242. package/src/components/switch.css +0 -136
  243. package/src/components/switch.tsx +0 -29
  244. package/src/components/tabs.tsx +0 -126
  245. package/src/components/tag.css +0 -37
  246. package/src/components/tag.tsx +0 -22
  247. package/src/components/toast.css +0 -236
  248. package/src/components/toast.tsx +0 -185
  249. package/src/components/tooltip.css +0 -74
  250. package/src/components/tooltip.tsx +0 -163
  251. package/src/v2/components/accordion-v2.css +0 -139
  252. package/src/v2/components/accordion-v2.tsx +0 -86
  253. package/src/v2/components/checkbox-v2.css +0 -184
  254. package/src/v2/components/checkbox-v2.tsx +0 -65
  255. package/src/v2/components/diff-changes-v2.css +0 -26
  256. package/src/v2/components/icon-button-v2.tsx +0 -37
  257. package/src/v2/components/inline-input-v2.css +0 -225
  258. package/src/v2/components/inline-input-v2.tsx +0 -107
  259. package/src/v2/components/progress-circle-v2.css +0 -13
  260. package/src/v2/components/progress-circle-v2.tsx +0 -52
  261. package/src/v2/components/switch-v2.tsx +0 -28
  262. package/src/v2/components/tabs-v2.tsx +0 -149
  263. package/src/v2/components/text-shimmer-v2.css +0 -125
  264. package/src/v2/components/text-shimmer-v2.tsx +0 -63
  265. /package/dist/{components → forms/inline-input}/inline-input.d.ts +0 -0
  266. /package/dist/{v2/components → navigation}/tab-state-indicator.d.ts +0 -0
  267. /package/src/{v2/components/button-v2.css → actions/button/button.css} +0 -0
  268. /package/src/{v2/components/icon-button-v2.css → actions/icon-button/icon-button.css} +0 -0
  269. /package/src/{v2/components/avatar-v2.css → data-display/avatar/avatar.css} +0 -0
  270. /package/src/{v2/components/line-comment-v2.css → data-display/line-comment/line-comment.css} +0 -0
  271. /package/src/{v2/components/project-avatar-v2.css → data-display/project-avatar/project-avatar.css} +0 -0
  272. /package/src/{v2/components/loader-v2.css → feedback/loader/loader.css} +0 -0
  273. /package/src/{v2/components/toast-v2.css → feedback/toast/toast.css} +0 -0
  274. /package/src/{v2/components/field-v2.css → forms/field/field.css} +0 -0
  275. /package/src/{components → forms/inline-input}/inline-input.css +0 -0
  276. /package/src/{components → forms/inline-input}/inline-input.tsx +0 -0
  277. /package/src/{v2/components/radio-v2.css → forms/radio/radio.css} +0 -0
  278. /package/src/{v2/components/text-input-v2.css → forms/text-input/text-input.css} +0 -0
  279. /package/src/{v2/components/textarea-v2.css → forms/textarea/textarea.css} +0 -0
  280. /package/src/{v2/components/divider-v2.css → layout/divider/divider.css} +0 -0
  281. /package/src/{v2/components/segmented-control-v2.css → navigation/segmented-control/segmented-control.css} +0 -0
  282. /package/src/{v2/components → navigation}/tab-state-indicator.tsx +0 -0
  283. /package/src/{v2/components/file-tree-v2.css → styles/file-tree.css} +0 -0
  284. /package/src/{v2/styles → styles/tokens}/colors.css +0 -0
  285. /package/src/{v2/styles/tailwind.css → styles/tokens/index.css} +0 -0
@@ -1,6 +1,17 @@
1
- import { Select as Kobalte } from "@kobalte/core/select"
1
+ import {
2
+ Content,
3
+ Item,
4
+ ItemIndicator,
5
+ ItemLabel,
6
+ Listbox,
7
+ Portal,
8
+ Root,
9
+ Section,
10
+ Trigger,
11
+ Value,
12
+ } from "@kobalte/core/select"
2
13
  import { Show, createMemo, onCleanup, splitProps, type ComponentProps, type JSX } from "solid-js"
3
- import "./select-v2.css"
14
+ import "./select.css"
4
15
 
5
16
  function groupOptions<T>(options: T[], groupBy?: (x: T) => string): { category: string; options: T[] }[] {
6
17
  if (!groupBy) {
@@ -40,8 +51,8 @@ const CheckSmall = () => (
40
51
  </svg>
41
52
  )
42
53
 
43
- export type SelectV2Props<T> = Omit<
44
- ComponentProps<typeof Kobalte<T, { category: string; options: T[] }>>,
54
+ export type SelectProps<T> = Omit<
55
+ ComponentProps<typeof Root<T, { category: string; options: T[] }>>,
45
56
  "value" | "onSelect" | "children" | "options" | "itemComponent" | "sectionComponent" | "defaultValue" | "multiple"
46
57
  > & {
47
58
  placeholder?: string
@@ -53,15 +64,13 @@ export type SelectV2Props<T> = Omit<
53
64
  groupBy?: (x: T) => string
54
65
  onSelect?: (value: T | null) => void
55
66
  onHighlight?: (value: T | undefined) => void | (() => void)
56
- /** `base` / `large` match text-input-v2; `inline` is a compact settings-row trigger. */
57
- appearance?: "base" | "large" | "inline"
58
67
  invalid?: boolean
59
68
  numeric?: boolean
60
69
  children?: (item: T) => JSX.Element
61
70
  valueClass?: string
62
71
  }
63
72
 
64
- export function SelectV2<T>(props: SelectV2Props<T>) {
73
+ export function Select<T>(props: SelectProps<T>) {
65
74
  const [local, others] = splitProps(props, [
66
75
  "class",
67
76
  "classList",
@@ -75,7 +84,6 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
75
84
  "onHighlight",
76
85
  "onOpenChange",
77
86
  "children",
78
- "appearance",
79
87
  "invalid",
80
88
  "numeric",
81
89
  "disabled",
@@ -88,8 +96,6 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
88
96
  "fitViewport",
89
97
  ])
90
98
 
91
- const inline = () => (local.appearance ?? "base") === "inline"
92
-
93
99
  const state: { key?: string; cleanup?: void | (() => void) } = {}
94
100
 
95
101
  const stop = () => {
@@ -118,15 +124,15 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
118
124
  const grouped = createMemo(() => groupOptions(local.options, local.groupBy))
119
125
 
120
126
  return (
121
- <Kobalte<T, { category: string; options: T[] }>
127
+ <Root<T, { category: string; options: T[] }>
122
128
  {...others}
123
129
  multiple={false}
124
130
  allowDuplicateSelectionEvents={false}
125
131
  disabled={local.disabled}
126
132
  data-component="select-v2-root"
127
- placement={local.placement ?? (inline() ? "bottom-end" : "bottom-start")}
133
+ placement={local.placement ?? "bottom-end"}
128
134
  gutter={local.gutter ?? 4}
129
- sameWidth={local.sameWidth ?? !inline()}
135
+ sameWidth={local.sameWidth ?? false}
130
136
  flip={local.flip ?? true}
131
137
  slide={local.slide ?? true}
132
138
  fitViewport={local.fitViewport ?? false}
@@ -137,31 +143,31 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
137
143
  optionGroupChildren="options"
138
144
  placeholder={local.placeholder}
139
145
  sectionComponent={(sectionProps) => (
140
- <Kobalte.Section>
146
+ <Section>
141
147
  <Show when={sectionProps.section.rawValue.category}>
142
148
  <div data-slot="menu-v2-group-label">{sectionProps.section.rawValue.category}</div>
143
149
  </Show>
144
- </Kobalte.Section>
150
+ </Section>
145
151
  )}
146
152
  itemComponent={(itemProps) => (
147
- <Kobalte.Item
153
+ <Item
148
154
  {...itemProps}
149
155
  data-component="menu-v2-item"
150
156
  onPointerEnter={() => move(itemProps.item.rawValue)}
151
157
  onPointerMove={() => move(itemProps.item.rawValue)}
152
158
  onFocus={() => move(itemProps.item.rawValue)}
153
159
  >
154
- <Kobalte.ItemLabel data-slot="menu-v2-item-content" as="span">
160
+ <ItemLabel data-slot="menu-v2-item-content" as="span">
155
161
  {local.children
156
162
  ? local.children(itemProps.item.rawValue)
157
163
  : local.label
158
164
  ? local.label(itemProps.item.rawValue)
159
165
  : String(itemProps.item.rawValue as string)}
160
- </Kobalte.ItemLabel>
161
- <Kobalte.ItemIndicator data-slot="menu-v2-item-indicator" forceMount>
166
+ </ItemLabel>
167
+ <ItemIndicator data-slot="menu-v2-item-indicator" forceMount>
162
168
  <CheckSmall />
163
- </Kobalte.ItemIndicator>
164
- </Kobalte.Item>
169
+ </ItemIndicator>
170
+ </Item>
165
171
  )}
166
172
  onChange={(next) => {
167
173
  const v = next == null ? null : Array.isArray(next) ? ((next[0] as T) ?? null) : (next as T)
@@ -173,10 +179,10 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
173
179
  if (!open) stop()
174
180
  }}
175
181
  >
176
- <Kobalte.Trigger
182
+ <Trigger
177
183
  as="div"
178
184
  data-component="select-v2"
179
- data-appearance={local.appearance ?? "base"}
185
+ data-appearance="inline"
180
186
  data-invalid={local.invalid ? "" : undefined}
181
187
  data-numeric={local.numeric ? "" : undefined}
182
188
  disabled={local.disabled}
@@ -187,23 +193,23 @@ export function SelectV2<T>(props: SelectV2Props<T>) {
187
193
  }}
188
194
  >
189
195
  <div data-slot="select-v2-value">
190
- <Kobalte.Value<T> data-slot="select-v2-value-text" class={local.valueClass}>
196
+ <Value<T> data-slot="select-v2-value-text" class={local.valueClass}>
191
197
  {(st) => {
192
198
  const selected = st.selectedOption()
193
199
  if (local.label && selected != null) return local.label(selected)
194
200
  return selected != null ? (selected as string) : ""
195
201
  }}
196
- </Kobalte.Value>
202
+ </Value>
197
203
  </div>
198
204
  <span data-slot="select-v2-chevron" aria-hidden="true">
199
205
  <ChevronDown />
200
206
  </span>
201
- </Kobalte.Trigger>
202
- <Kobalte.Portal>
203
- <Kobalte.Content data-component="menu-v2-content" data-slot="select-v2-content">
204
- <Kobalte.Listbox data-slot="select-v2-listbox" />
205
- </Kobalte.Content>
206
- </Kobalte.Portal>
207
- </Kobalte>
207
+ </Trigger>
208
+ <Portal>
209
+ <Content data-component="menu-v2-content" data-slot="select-v2-content">
210
+ <Listbox data-slot="select-v2-listbox" />
211
+ </Content>
212
+ </Portal>
213
+ </Root>
208
214
  )
209
215
  }
@@ -160,3 +160,113 @@
160
160
  pointer-events: none;
161
161
  }
162
162
  }
163
+
164
+ [data-component="switch"][data-appearance="standard"] {
165
+ [data-slot="switch-control"] {
166
+ padding: 0;
167
+ width: 28px;
168
+ height: 16px;
169
+ border-radius: 3px;
170
+ border: 1px solid var(--border-weak-base);
171
+ background: var(--surface-base);
172
+ box-shadow: none;
173
+ transition:
174
+ background-color 150ms,
175
+ border-color 150ms;
176
+ }
177
+
178
+ [data-slot="switch-thumb"] {
179
+ box-sizing: content-box;
180
+ width: 14px;
181
+ height: 14px;
182
+ border-radius: 2px;
183
+ border: 1px solid var(--border-base);
184
+ background: var(--icon-invert-base);
185
+ box-shadow:
186
+ 0 1px 2px -1px rgba(19, 16, 16, 0.04),
187
+ 0 1px 2px 0 rgba(19, 16, 16, 0.06),
188
+ 0 1px 3px 0 rgba(19, 16, 16, 0.08);
189
+ transform: translateX(-1px);
190
+ transition:
191
+ transform 150ms,
192
+ background-color 150ms;
193
+ }
194
+
195
+ [data-slot="switch-label"] {
196
+ color: var(--text-base);
197
+ font-family: var(--font-family-sans);
198
+ font-size: var(--font-size-small);
199
+ font-style: normal;
200
+ font-weight: var(--font-weight-regular);
201
+ line-height: var(--line-height-large);
202
+ letter-spacing: var(--letter-spacing-normal);
203
+ }
204
+
205
+ [data-slot="switch-description"] {
206
+ color: var(--text-base);
207
+ font-family: var(--font-family-sans);
208
+ font-size: 12px;
209
+ font-weight: var(--font-weight-regular);
210
+ line-height: var(--line-height-normal);
211
+ letter-spacing: var(--letter-spacing-normal);
212
+ }
213
+
214
+ [data-slot="switch-error"] {
215
+ color: var(--text-error);
216
+ }
217
+
218
+ &:hover:not([data-disabled], [data-readonly]) [data-slot="switch-control"] {
219
+ border-color: var(--border-hover);
220
+ background: var(--surface-hover);
221
+ }
222
+
223
+ &:hover:not([data-disabled], [data-readonly]) [data-slot="switch-thumb"] {
224
+ width: 14px;
225
+ border-radius: 2px;
226
+ }
227
+
228
+ &:not([data-readonly]) [data-slot="switch-input"]:focus-visible ~ [data-slot="switch-control"] {
229
+ border-color: var(--border-focus);
230
+ outline: none;
231
+ box-shadow: var(--shadow-xs-border-focus);
232
+ }
233
+
234
+ &[data-checked] [data-slot="switch-control"] {
235
+ border-color: var(--icon-strong-base);
236
+ background: var(--icon-strong-base);
237
+ box-shadow: none;
238
+ }
239
+
240
+ &[data-checked] [data-slot="switch-thumb"],
241
+ &[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-thumb"] {
242
+ width: 14px;
243
+ border: none;
244
+ border-radius: 2px;
245
+ transform: translateX(12px);
246
+ background: var(--icon-invert-base);
247
+ }
248
+
249
+ &:dir(rtl)[data-checked] [data-slot="switch-thumb"],
250
+ &:dir(rtl)[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-thumb"] {
251
+ transform: translateX(-12px);
252
+ }
253
+
254
+ &[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-control"] {
255
+ border-color: var(--border-hover);
256
+ background: var(--surface-hover);
257
+ }
258
+
259
+ &[data-disabled] [data-slot="switch-control"] {
260
+ border-color: var(--border-disabled);
261
+ background: var(--surface-disabled);
262
+ opacity: 1;
263
+ }
264
+
265
+ &[data-disabled] [data-slot="switch-thumb"] {
266
+ background: var(--icon-disabled);
267
+ }
268
+
269
+ &[data-invalid] [data-slot="switch-control"] {
270
+ border-color: var(--border-error);
271
+ }
272
+ }
@@ -0,0 +1,34 @@
1
+ import { Control, Description, ErrorMessage, Input, Label, Root, Thumb } from "@kobalte/core/switch"
2
+ import { Show, splitProps } from "solid-js"
3
+ import type { ComponentProps, ParentProps } from "solid-js"
4
+ import "./switch.css"
5
+
6
+ export interface SwitchProps extends ParentProps<ComponentProps<typeof Root>> {
7
+ // I think we should consolidate - ask designers.
8
+ appearance?: "standard" | "compact"
9
+ hideLabel?: boolean
10
+ description?: string
11
+ }
12
+
13
+ export function Switch(props: SwitchProps) {
14
+ const [local, others] = splitProps(props, ["children", "class", "appearance", "hideLabel", "description"])
15
+ return (
16
+ <Root {...others} class={local.class} data-component="switch" data-appearance={local.appearance ?? "compact"}>
17
+ <Input data-slot="switch-input" />
18
+ <Show when={local.children}>
19
+ {(label) => (
20
+ <Label data-slot="switch-label" classList={{ "sr-only": local.hideLabel }}>
21
+ {label()}
22
+ </Label>
23
+ )}
24
+ </Show>
25
+ <Show when={local.description}>
26
+ <Description data-slot="switch-description">{local.description}</Description>
27
+ </Show>
28
+ <Control data-slot="switch-control">
29
+ <Thumb data-slot="switch-thumb" />
30
+ </Control>
31
+ <ErrorMessage data-slot="switch-error" />
32
+ </Root>
33
+ )
34
+ }
@@ -1,9 +1,9 @@
1
1
  import { type ComponentProps, type JSX, Show, splitProps } from "solid-js"
2
- import { Icon } from "./icon"
2
+ import { Icon } from "@opencode-ai/ui/icon"
3
3
  import { useI18n } from "../../context/i18n"
4
- import "./text-input-v2.css"
4
+ import "./text-input.css"
5
5
 
6
- export interface TextInputV2Props extends Omit<ComponentProps<"input">, "type"> {
6
+ export interface TextInputProps extends Omit<ComponentProps<"input">, "type"> {
7
7
  /** Icon or adornment shown before the field value. */
8
8
  leadingIcon?: JSX.Element
9
9
  /** Show the trailing copy action. */
@@ -25,7 +25,7 @@ export interface TextInputV2Props extends Omit<ComponentProps<"input">, "type">
25
25
  type?: ComponentProps<"input">["type"]
26
26
  }
27
27
 
28
- export function TextInputV2(props: TextInputV2Props) {
28
+ export function TextInput(props: TextInputProps) {
29
29
  const i18n = useI18n()
30
30
  const [local, inputProps] = splitProps(props, [
31
31
  "class",
@@ -1,12 +1,12 @@
1
1
  import { type ComponentProps, splitProps } from "solid-js"
2
- import "./textarea-v2.css"
2
+ import "./textarea.css"
3
3
 
4
- export interface TextareaV2Props extends ComponentProps<"textarea"> {
4
+ export interface TextareaProps extends ComponentProps<"textarea"> {
5
5
  /** Error styling for the field and value text. */
6
6
  invalid?: boolean
7
7
  }
8
8
 
9
- export function TextareaV2(props: TextareaV2Props) {
9
+ export function Textarea(props: TextareaProps) {
10
10
  const [local, textareaProps] = splitProps(props, ["class", "classList", "invalid", "disabled", "rows"])
11
11
 
12
12
  return (
@@ -186,6 +186,26 @@ export function createAutoScroll(options: AutoScrollOptions) {
186
186
  },
187
187
  )
188
188
 
189
+ createEffect(() => {
190
+ const el = store.scrollRef
191
+ if (!el) return
192
+ const root = el.closest("main")
193
+ if (!root) return
194
+ let connected = el.isConnected
195
+ const contains = (node: Node) => node === el || (node instanceof Element && node.contains(el))
196
+ const observer = new MutationObserver((records) => {
197
+ records.forEach((record) => {
198
+ if ([...record.removedNodes].some(contains)) connected = false
199
+ if (!record.addedNodes.length || ![...record.addedNodes].some(contains)) return
200
+ const reattached = !connected
201
+ connected = true
202
+ if (reattached) scrollToBottom(false)
203
+ })
204
+ })
205
+ observer.observe(root, { childList: true })
206
+ onCleanup(() => observer.disconnect())
207
+ })
208
+
189
209
  createEffect(
190
210
  on(options.working, (working: boolean) => {
191
211
  settling = false
package/src/i18n/am.ts CHANGED
@@ -142,8 +142,6 @@ export const dict: Record<string, string> = {
142
142
  "ui.tool.websearch.provider": "{{provider}}ድር ፍለጋ",
143
143
  "ui.tool.shell": "ሼል",
144
144
  "ui.tool.patch": "Patch",
145
- "ui.tool.todos": "የሚደረጉ ነገሮች",
146
- "ui.tool.todos.read": "ወደ-ድርጊት አንብብ",
147
145
  "ui.tool.questions": "ጥያቄዎች",
148
146
  "ui.tool.questions.numbered": "ጥያቄዎች {{number}}",
149
147
  "ui.tool.agent": "{{type}} ወኪል",
package/src/i18n/ar.ts CHANGED
@@ -167,8 +167,6 @@ export const dict = {
167
167
  "ui.tool.websearch.provider": "{{provider}} بحث الويب",
168
168
  "ui.tool.shell": "Shell",
169
169
  "ui.tool.patch": "تطبيق رقعة",
170
- "ui.tool.todos": "المهام",
171
- "ui.tool.todos.read": "قراءة المهام",
172
170
  "ui.tool.questions": "أسئلة",
173
171
  "ui.tool.questions.numbered": "أسئلة {{number}}",
174
172
  "ui.tool.agent": "وكيل {{type}}",
package/src/i18n/az.ts CHANGED
@@ -143,8 +143,6 @@ export const dict: Record<string, string> = {
143
143
  "ui.tool.websearch.provider": "{{provider}} Veb axtarışı",
144
144
  "ui.tool.shell": "Shell",
145
145
  "ui.tool.patch": "Patch",
146
- "ui.tool.todos": "Tapşırıqlar",
147
- "ui.tool.todos.read": "Tapşırıqları oxu",
148
146
  "ui.tool.questions": "Suallar",
149
147
  "ui.tool.questions.numbered": "Suallar {{number}}",
150
148
  "ui.tool.agent": "{{type}} Agent",
package/src/i18n/bg.ts CHANGED
@@ -143,8 +143,6 @@ export const dict = {
143
143
  "ui.tool.websearch.provider": "{{provider}} Търсене в мрежата",
144
144
  "ui.tool.shell": "Shell",
145
145
  "ui.tool.patch": "Patch",
146
- "ui.tool.todos": "Задачи",
147
- "ui.tool.todos.read": "Прочетете задачи",
148
146
  "ui.tool.questions": "Въпроси",
149
147
  "ui.tool.questions.numbered": "Въпроси {{number}}",
150
148
  "ui.tool.agent": "{{type}} Агент",
package/src/i18n/bn.ts CHANGED
@@ -145,8 +145,6 @@ export const dict: Record<string, string> = {
145
145
  "ui.tool.websearch.provider": "{{provider}} Web Search",
146
146
  "ui.tool.shell": "শেল",
147
147
  "ui.tool.patch": "প্যাচ",
148
- "ui.tool.todos": "করণীয়",
149
- "ui.tool.todos.read": "করণীয় পড়ুন",
150
148
  "ui.tool.questions": "প্রশ্ন",
151
149
  "ui.tool.questions.numbered": "প্রশ্ন {{number}}",
152
150
  "ui.tool.agent": "{{type}} এজেন্ট",
package/src/i18n/br.ts CHANGED
@@ -155,8 +155,6 @@ export const dict = {
155
155
  "ui.tool.websearch.provider": "{{provider}} Pesquisa na web",
156
156
  "ui.tool.shell": "Shell",
157
157
  "ui.tool.patch": "Patch",
158
- "ui.tool.todos": "Tarefas",
159
- "ui.tool.todos.read": "Ler tarefas",
160
158
  "ui.tool.questions": "Perguntas",
161
159
  "ui.tool.questions.numbered": "Perguntas {{number}}",
162
160
  "ui.tool.agent": "Agente {{type}}",
package/src/i18n/bs.ts CHANGED
@@ -159,8 +159,6 @@ export const dict = {
159
159
  "ui.tool.websearch.provider": "{{provider}} Pretraga weba",
160
160
  "ui.tool.shell": "Shell",
161
161
  "ui.tool.patch": "Patch",
162
- "ui.tool.todos": "Lista zadataka",
163
- "ui.tool.todos.read": "Čitanje liste zadataka",
164
162
  "ui.tool.questions": "Pitanja",
165
163
  "ui.tool.questions.numbered": "Pitanja {{number}}",
166
164
  "ui.tool.agent": "{{type}} agent",
package/src/i18n/ca.ts CHANGED
@@ -147,8 +147,6 @@ export const dict: Record<string, string> = {
147
147
  "ui.tool.websearch.provider": "{{provider}} Cerca web",
148
148
  "ui.tool.shell": "Shell",
149
149
  "ui.tool.patch": "Pedaç",
150
- "ui.tool.todos": "Coses pendents",
151
- "ui.tool.todos.read": "Llegir tasques pendents",
152
150
  "ui.tool.questions": "Preguntes",
153
151
  "ui.tool.questions.numbered": "Preguntes {{number}}",
154
152
  "ui.tool.agent": "{{type}} Agent",
package/src/i18n/cs.ts CHANGED
@@ -151,8 +151,6 @@ export const dict: Record<string, string> = {
151
151
  "ui.tool.websearch.provider": "{{provider}} Vyhledávání na webu",
152
152
  "ui.tool.shell": "Shell",
153
153
  "ui.tool.patch": "Patch",
154
- "ui.tool.todos": "Úkoly",
155
- "ui.tool.todos.read": "Přečtěte si úkoly",
156
154
  "ui.tool.questions": "Otázky",
157
155
  "ui.tool.questions.numbered": "Otázky {{number}}",
158
156
  "ui.tool.agent": "{{type}} Agent",
package/src/i18n/da.ts CHANGED
@@ -130,8 +130,6 @@ export const dict = {
130
130
  "ui.tool.websearch.provider": "{{provider}} Websøgning",
131
131
  "ui.tool.shell": "Shell",
132
132
  "ui.tool.patch": "Patch",
133
- "ui.tool.todos": "Opgaver",
134
- "ui.tool.todos.read": "Læs opgaver",
135
133
  "ui.tool.questions": "Spørgsmål",
136
134
  "ui.tool.questions.numbered": "Spørgsmål {{number}}",
137
135
  "ui.tool.agent": "{{type}}-agent",
package/src/i18n/de.ts CHANGED
@@ -137,8 +137,6 @@ export const dict = {
137
137
  "ui.tool.websearch.provider": "{{provider}} Web-Suche",
138
138
  "ui.tool.shell": "Shell",
139
139
  "ui.tool.patch": "Patch",
140
- "ui.tool.todos": "Aufgaben",
141
- "ui.tool.todos.read": "Aufgaben lesen",
142
140
  "ui.tool.questions": "Fragen",
143
141
  "ui.tool.questions.numbered": "Fragen {{number}}",
144
142
  "ui.tool.agent": "{{type}}-Agent",
package/src/i18n/dv.ts CHANGED
@@ -144,8 +144,6 @@ export const dict: Record<string, string> = {
144
144
  "ui.tool.websearch.provider": "{{provider}} ވެބް ސަރޗް",
145
145
  "ui.tool.shell": "ޝެލް",
146
146
  "ui.tool.patch": "ޕެޗް",
147
- "ui.tool.todos": "ޓޫ-ޑޯސް",
148
- "ui.tool.todos.read": "ޓޫ-ޑޯސް ކިޔާށެވެ",
149
147
  "ui.tool.questions": "ސުވާލުތަކެވެ",
150
148
  "ui.tool.questions.numbered": "ސުވާލުތައް {{number}}",
151
149
  "ui.tool.agent": "{{type}} އޭޖެންޓް",
package/src/i18n/dz.ts CHANGED
@@ -145,8 +145,6 @@ export const dict: Record<string, string> = {
145
145
  "ui.tool.websearch.provider": "{{provider}} Web Search",
146
146
  "ui.tool.shell": "Shell",
147
147
  "ui.tool.patch": "ལྷནམ",
148
- "ui.tool.todos": "འབད་དགོཔ་ཚུ།",
149
- "ui.tool.todos.read": "ལཱ་འབད་དགོཔ་ལྷག།",
150
148
  "ui.tool.questions": "དྲི་བ།",
151
149
  "ui.tool.questions.numbered": "དྲི་བ།{{number}}།",
152
150
  "ui.tool.agent": "{{type}} ལས་ཚན།",
package/src/i18n/el.ts CHANGED
@@ -143,8 +143,6 @@ export const dict: Record<string, string> = {
143
143
  "ui.tool.websearch.provider": "{{provider}} Αναζήτηση στον Ιστό",
144
144
  "ui.tool.shell": "Shell",
145
145
  "ui.tool.patch": "Patch",
146
- "ui.tool.todos": "Εκκρεμότητες",
147
- "ui.tool.todos.read": "Διαβάστε τις εργασίες",
148
146
  "ui.tool.questions": "Ερωτήσεις",
149
147
  "ui.tool.questions.numbered": "Ερωτήσεις {{number}}",
150
148
  "ui.tool.agent": "Πράκτορας {{type}}",
package/src/i18n/en.ts CHANGED
@@ -1,4 +1,4 @@
1
- export const dict: Record<string, string> = {
1
+ const source = {
2
2
  "ui.sessionReview.title": "Session changes",
3
3
  "ui.sessionReview.title.git": "Git changes",
4
4
  "ui.sessionReview.title.branch": "Branch changes",
@@ -108,6 +108,8 @@ export const dict: Record<string, string> = {
108
108
  "ui.messagePart.context.search.other": "{{count}} searches",
109
109
  "ui.messagePart.context.list.one": "{{count}} list",
110
110
  "ui.messagePart.context.list.other": "{{count}} lists",
111
+ "ui.messagePart.context.match.one": "({{count}} match)",
112
+ "ui.messagePart.context.match.other": "({{count}} matches)",
111
113
 
112
114
  "ui.list.loading": "Loading",
113
115
  "ui.list.empty": "No results",
@@ -158,9 +160,8 @@ export const dict: Record<string, string> = {
158
160
  "ui.tool.websearch": "Web Search",
159
161
  "ui.tool.websearch.provider": "{{provider}} Web Search",
160
162
  "ui.tool.shell": "Shell",
163
+ "ui.tool.execute": "Execute",
161
164
  "ui.tool.patch": "Patch",
162
- "ui.tool.todos": "To-dos",
163
- "ui.tool.todos.read": "Read to-dos",
164
165
  "ui.tool.questions": "Questions",
165
166
  "ui.tool.questions.numbered": "Questions {{number}}",
166
167
  "ui.tool.agent": "{{type}} Agent",
@@ -203,6 +204,10 @@ export const dict: Record<string, string> = {
203
204
  "ui.message.duration.seconds": "{{count}}s",
204
205
  "ui.message.duration.minutesSeconds": "{{minutes}}m {{seconds}}s",
205
206
  "ui.message.interrupted": "Interrupted",
207
+ "ui.sessionTimeline.notice.model": "Model",
208
+ "ui.sessionTimeline.notice.failed": "{{actor}} failed",
209
+ "ui.sessionTimeline.notice.cancelled": "{{actor}} cancelled",
210
+ "ui.sessionTimeline.notice.finished": "{{actor}} finished",
206
211
  "ui.message.queued": "Queued",
207
212
  "ui.message.attachment.alt": "attachment",
208
213
 
@@ -217,4 +222,13 @@ export const dict: Record<string, string> = {
217
222
  "ui.question.multiHint": "Select all answers that apply",
218
223
  "ui.question.singleHint": "Select one answer",
219
224
  "ui.question.custom.placeholder": "Type your answer...",
220
- }
225
+ } satisfies Record<string, string>
226
+
227
+ export type Key = keyof typeof source
228
+ export type PluralCategory = "zero" | "one" | "two" | "few" | "many" | "other"
229
+ export type PluralKey = {
230
+ [Entry in Key]: Entry extends `${infer Base}.other` ? (`${Base}.one` extends Key ? Base : never) : never
231
+ }[Key]
232
+ export type PluralLookupKey = `${PluralKey}.${PluralCategory}`
233
+ export type LocaleKey = Key | PluralLookupKey
234
+ export const dict: typeof source & Record<string, string> = source
package/src/i18n/es.ts CHANGED
@@ -155,8 +155,6 @@ export const dict = {
155
155
  "ui.tool.websearch.provider": "{{provider}} Búsqueda web",
156
156
  "ui.tool.shell": "Shell",
157
157
  "ui.tool.patch": "Parche",
158
- "ui.tool.todos": "Tareas",
159
- "ui.tool.todos.read": "Leer tareas",
160
158
  "ui.tool.questions": "Preguntas",
161
159
  "ui.tool.questions.numbered": "Preguntas {{number}}",
162
160
  "ui.tool.agent": "Agente {{type}}",
package/src/i18n/et.ts CHANGED
@@ -143,8 +143,6 @@ export const dict: Record<string, string> = {
143
143
  "ui.tool.websearch.provider": "{{provider}} Veebiotsing",
144
144
  "ui.tool.shell": "Shell",
145
145
  "ui.tool.patch": "Patch",
146
- "ui.tool.todos": "Ülesanded",
147
- "ui.tool.todos.read": "Lugege ülesandeid",
148
146
  "ui.tool.questions": "Küsimused",
149
147
  "ui.tool.questions.numbered": "Küsimused {{number}}",
150
148
  "ui.tool.agent": "{{type}} Agent",
package/src/i18n/fa.ts CHANGED
@@ -143,8 +143,6 @@ export const dict: Record<string, string> = {
143
143
  "ui.tool.websearch.provider": "جستجوی وب {{provider}}",
144
144
  "ui.tool.shell": "پوسته",
145
145
  "ui.tool.patch": "پچ",
146
- "ui.tool.todos": "کارها",
147
- "ui.tool.todos.read": "کارها را بخوانید",
148
146
  "ui.tool.questions": "سوالات",
149
147
  "ui.tool.questions.numbered": "سوالات {{number}}",
150
148
  "ui.tool.agent": "عامل {{type}}",
package/src/i18n/fi.ts CHANGED
@@ -125,8 +125,6 @@ export const dict: Record<string, string> = {
125
125
  "ui.tool.websearch.provider": "{{provider}} Verkkohaku",
126
126
  "ui.tool.shell": "Shell",
127
127
  "ui.tool.patch": "Patch",
128
- "ui.tool.todos": "Tehtävät",
129
- "ui.tool.todos.read": "Lue tehtävät",
130
128
  "ui.tool.questions": "Kysymykset",
131
129
  "ui.tool.questions.numbered": "Kysymykset {{number}}",
132
130
  "ui.tool.agent": "{{type}}-agentti",
package/src/i18n/fo.ts CHANGED
@@ -143,8 +143,6 @@ export const dict: Record<string, string> = {
143
143
  "ui.tool.websearch.provider": "{{provider}} Leitan á netinum",
144
144
  "ui.tool.shell": "Shell",
145
145
  "ui.tool.patch": "Patch",
146
- "ui.tool.todos": "Uppgávur",
147
- "ui.tool.todos.read": "Les uppgávur",
148
146
  "ui.tool.questions": "Spurningar",
149
147
  "ui.tool.questions.numbered": "Spurningar {{number}}",
150
148
  "ui.tool.agent": "{{type}} agentur",
package/src/i18n/fr.ts CHANGED
@@ -157,8 +157,6 @@ export const dict = {
157
157
  "ui.tool.websearch.provider": "{{provider}} Recherche Web",
158
158
  "ui.tool.shell": "Shell",
159
159
  "ui.tool.patch": "Patch",
160
- "ui.tool.todos": "Tâches",
161
- "ui.tool.todos.read": "Lire les tâches",
162
160
  "ui.tool.questions": "Questions",
163
161
  "ui.tool.questions.numbered": "Questions {{number}}",
164
162
  "ui.tool.agent": "Agent {{type}}",