@opencode-ai/ui 0.0.0-dev-202608272250 → 0.0.0-dev-18455

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 (289) 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 +227 -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 +24 -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 +15 -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/{components → actions/button}/button.tsx +10 -11
  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 +2 -2
  70. package/src/components/dock-surface.css +2 -9
  71. package/src/components/image-preview.tsx +3 -2
  72. package/src/components/list.css +5 -5
  73. package/src/components/list.tsx +7 -5
  74. package/src/components/popover.tsx +3 -2
  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/dialog.tsx +1 -0
  79. package/src/context/i18n.tsx +17 -14
  80. package/src/{components → data-display/accordion}/accordion.css +1 -26
  81. package/src/{components → data-display/accordion}/accordion.tsx +14 -14
  82. package/src/{v2/components/avatar-v2.tsx → data-display/avatar/avatar.tsx} +1 -1
  83. package/src/{v2/components/badge-v2.css → data-display/badge/badge.css} +19 -0
  84. package/src/{v2/components/badge-v2.tsx → data-display/badge/badge.tsx} +6 -4
  85. package/src/{components → data-display/diff-changes}/diff-changes.css +22 -19
  86. package/src/{v2/components/diff-changes-v2.tsx → data-display/diff-changes/diff-changes.tsx} +7 -2
  87. package/src/{v2/components/keybind-v2.css → data-display/keybind/keybind.css} +1 -1
  88. package/src/{v2/components/keybind-v2.tsx → data-display/keybind/keybind.tsx} +3 -3
  89. package/src/{v2/components/line-comment-v2.css → data-display/line-comment/line-comment.css} +3 -3
  90. package/src/{v2/components/line-comment-v2.tsx → data-display/line-comment/line-comment.tsx} +17 -15
  91. package/src/{v2/components/project-avatar-v2.tsx → data-display/project-avatar/project-avatar.tsx} +1 -1
  92. package/src/{v2/components/loader-v2.tsx → feedback/loader/loader.tsx} +2 -2
  93. package/src/feedback/progress-circle/progress-circle.css +28 -0
  94. package/src/feedback/progress-circle/progress-circle.tsx +64 -0
  95. package/src/{v2/components/toast-v2.tsx → feedback/toast/toast.tsx} +60 -58
  96. package/src/{components → forms/checkbox}/checkbox.css +1 -7
  97. package/src/{components → forms/checkbox}/checkbox.tsx +13 -13
  98. package/src/{v2/components/field-v2.css → forms/field/field.css} +1 -1
  99. package/src/{v2/components/field-v2.tsx → forms/field/field.tsx} +9 -11
  100. package/src/{v2/components/radio-v2.tsx → forms/radio/radio.tsx} +30 -20
  101. package/src/{v2/components/select-v2.css → forms/select/select.css} +2 -8
  102. package/src/{v2/components/select-v2.tsx → forms/select/select.tsx} +38 -32
  103. package/src/{v2/components/switch-v2.css → forms/switch/switch.css} +110 -0
  104. package/src/forms/switch/switch.tsx +34 -0
  105. package/src/{v2/components/text-input-v2.css → forms/text-input/text-input.css} +1 -1
  106. package/src/{v2/components/text-input-v2.tsx → forms/text-input/text-input.tsx} +4 -4
  107. package/src/{v2/components/textarea-v2.tsx → forms/textarea/textarea.tsx} +3 -3
  108. package/src/hooks/create-auto-scroll.tsx +20 -0
  109. package/src/i18n/am.ts +1 -3
  110. package/src/i18n/ar.ts +1 -3
  111. package/src/i18n/az.ts +1 -3
  112. package/src/i18n/bg.ts +1 -3
  113. package/src/i18n/bn.ts +1 -3
  114. package/src/i18n/br.ts +1 -3
  115. package/src/i18n/bs.ts +1 -3
  116. package/src/i18n/ca.ts +1 -3
  117. package/src/i18n/cs.ts +1 -3
  118. package/src/i18n/da.ts +1 -3
  119. package/src/i18n/de.ts +1 -3
  120. package/src/i18n/dv.ts +1 -3
  121. package/src/i18n/dz.ts +1 -3
  122. package/src/i18n/el.ts +1 -3
  123. package/src/i18n/en.ts +37 -5
  124. package/src/i18n/es.ts +1 -3
  125. package/src/i18n/et.ts +1 -3
  126. package/src/i18n/fa.ts +1 -3
  127. package/src/i18n/fi.ts +1 -3
  128. package/src/i18n/fo.ts +1 -3
  129. package/src/i18n/fr.ts +1 -3
  130. package/src/i18n/he.ts +199 -0
  131. package/src/i18n/hi.ts +1 -3
  132. package/src/i18n/hr.ts +1 -3
  133. package/src/i18n/hu.ts +1 -3
  134. package/src/i18n/hy.ts +1 -3
  135. package/src/i18n/id.ts +1 -3
  136. package/src/i18n/is.ts +1 -3
  137. package/src/i18n/it.ts +1 -3
  138. package/src/i18n/ja.ts +1 -3
  139. package/src/i18n/ka.ts +1 -3
  140. package/src/i18n/km.ts +1 -3
  141. package/src/i18n/ko.ts +1 -3
  142. package/src/i18n/lo.ts +1 -3
  143. package/src/i18n/lt.ts +1 -3
  144. package/src/i18n/lv.ts +1 -3
  145. package/src/i18n/mk.ts +1 -3
  146. package/src/i18n/mn.ts +1 -3
  147. package/src/i18n/ms.ts +1 -3
  148. package/src/i18n/my.ts +1 -3
  149. package/src/i18n/ne.ts +1 -3
  150. package/src/i18n/nl.ts +1 -3
  151. package/src/i18n/no.ts +1 -3
  152. package/src/i18n/pa.ts +1 -3
  153. package/src/i18n/pl.ts +1 -3
  154. package/src/i18n/ro.ts +1 -3
  155. package/src/i18n/ru.ts +1 -3
  156. package/src/i18n/si.ts +1 -3
  157. package/src/i18n/sk.ts +1 -3
  158. package/src/i18n/sl.ts +1 -3
  159. package/src/i18n/sq.ts +1 -3
  160. package/src/i18n/sr.ts +1 -3
  161. package/src/i18n/sv.ts +1 -3
  162. package/src/i18n/tg.ts +1 -3
  163. package/src/i18n/th.ts +1 -3
  164. package/src/i18n/tk.ts +1 -3
  165. package/src/i18n/tr.ts +1 -3
  166. package/src/i18n/uk.ts +1 -3
  167. package/src/i18n/ur.ts +1 -3
  168. package/src/i18n/uz.ts +1 -3
  169. package/src/i18n/vi.ts +1 -3
  170. package/src/i18n/zh.ts +1 -3
  171. package/src/i18n/zht.ts +1 -3
  172. package/src/{components/icon.tsx → icons/icon/additional-icons.ts} +8 -74
  173. package/src/icons/icon/icon.css +3 -0
  174. package/src/{v2/components → icons/icon}/icon.tsx +50 -9
  175. package/src/{v2/components/divider-v2.tsx → layout/divider/divider.tsx} +3 -3
  176. package/src/{v2/components/menu-v2.css → navigation/menu/menu.css} +122 -2
  177. package/src/{v2/components/menu-v2.tsx → navigation/menu/menu.tsx} +96 -32
  178. package/src/{v2/components/segmented-control-v2.css → navigation/segmented-control/segmented-control.css} +1 -1
  179. package/src/{v2/components/segmented-control-v2.tsx → navigation/segmented-control/segmented-control.tsx} +9 -8
  180. package/src/{v2/components/tabs-v2.css → navigation/tabs/tabs-current.css} +25 -10
  181. package/src/{components → navigation/tabs}/tabs.css +39 -229
  182. package/src/navigation/tabs/tabs.tsx +194 -0
  183. package/src/{v2/components/dialog-v2.css → overlays/dialog/dialog.css} +3 -0
  184. package/src/{v2/components/dialog-v2.tsx → overlays/dialog/dialog.tsx} +11 -13
  185. package/src/{v2/components/tooltip-v2.css → overlays/tooltip/tooltip.css} +26 -0
  186. package/src/{v2/components/tooltip-v2.tsx → overlays/tooltip/tooltip.tsx} +21 -14
  187. package/src/styles/index.css +4 -20
  188. package/src/styles/tailwind/colors.css +1 -0
  189. package/src/styles/tailwind/index.css +18 -1
  190. package/src/styles/theme.css +2 -2
  191. package/src/{v2/styles → styles/tokens}/theme.css +10 -14
  192. package/src/theme/context.tsx +19 -11
  193. package/src/theme/themes/oc-2.json +3 -1
  194. package/src/theme/v2/foreground.ts +1 -0
  195. package/src/{components → typography/text-shimmer}/text-shimmer.css +2 -1
  196. package/src/{components → typography/text-shimmer}/text-shimmer.tsx +1 -0
  197. package/src/{v2/components/wordmark-v2.tsx → typography/wordmark/wordmark.tsx} +1 -1
  198. package/dist/components/avatar.d.ts +0 -9
  199. package/dist/components/button.d.ts +0 -9
  200. package/dist/components/dialog.d.ts +0 -12
  201. package/dist/components/dropdown-menu.d.ts +0 -80
  202. package/dist/components/icon-button.d.ts +0 -10
  203. package/dist/components/keybind.d.ts +0 -6
  204. package/dist/components/radio-group.d.ts +0 -16
  205. package/dist/components/select.d.ts +0 -21
  206. package/dist/components/tag.d.ts +0 -5
  207. package/dist/components/toast.d.ts +0 -56
  208. package/dist/components/tooltip.d.ts +0 -17
  209. package/dist/v2/components/accordion-v2.d.ts +0 -26
  210. package/dist/v2/components/badge-v2.d.ts +0 -6
  211. package/dist/v2/components/button-v2.d.ts +0 -10
  212. package/dist/v2/components/checkbox-v2.d.ts +0 -10
  213. package/dist/v2/components/diff-changes-v2.d.ts +0 -11
  214. package/dist/v2/components/divider-v2.d.ts +0 -5
  215. package/dist/v2/components/icon-button-v2.d.ts +0 -11
  216. package/dist/v2/components/inline-input-v2.d.ts +0 -21
  217. package/dist/v2/components/keybind-v2.d.ts +0 -7
  218. package/dist/v2/components/loader-v2.d.ts +0 -3
  219. package/dist/v2/components/menu-v2.d.ts +0 -52
  220. package/dist/v2/components/progress-circle-v2.d.ts +0 -8
  221. package/dist/v2/components/radio-v2.d.ts +0 -16
  222. package/dist/v2/components/split-button-v2.d.ts +0 -5
  223. package/dist/v2/components/switch-v2.d.ts +0 -7
  224. package/dist/v2/components/tabs-v2.d.ts +0 -34
  225. package/dist/v2/components/text-shimmer-v2.d.ts +0 -9
  226. package/dist/v2/components/textarea-v2.d.ts +0 -7
  227. package/dist/v2/components/toast-v2.d.ts +0 -57
  228. package/dist/v2/components/tooltip-v2.d.ts +0 -13
  229. package/dist/v2/components/wordmark-v2.d.ts +0 -2
  230. package/src/components/avatar.css +0 -49
  231. package/src/components/avatar.tsx +0 -55
  232. package/src/components/button.css +0 -194
  233. package/src/components/dialog.css +0 -181
  234. package/src/components/dialog.tsx +0 -72
  235. package/src/components/diff-changes.tsx +0 -115
  236. package/src/components/dropdown-menu.css +0 -135
  237. package/src/components/dropdown-menu.tsx +0 -308
  238. package/src/components/icon-button.css +0 -181
  239. package/src/components/icon-button.tsx +0 -29
  240. package/src/components/icon.css +0 -39
  241. package/src/components/keybind.css +0 -18
  242. package/src/components/keybind.tsx +0 -20
  243. package/src/components/progress-circle.css +0 -16
  244. package/src/components/progress-circle.tsx +0 -64
  245. package/src/components/radio-group.css +0 -187
  246. package/src/components/radio-group.tsx +0 -83
  247. package/src/components/select.css +0 -201
  248. package/src/components/select.tsx +0 -174
  249. package/src/components/switch.css +0 -136
  250. package/src/components/switch.tsx +0 -29
  251. package/src/components/tabs.tsx +0 -126
  252. package/src/components/tag.css +0 -37
  253. package/src/components/tag.tsx +0 -22
  254. package/src/components/toast.css +0 -236
  255. package/src/components/toast.tsx +0 -185
  256. package/src/components/tooltip.css +0 -74
  257. package/src/components/tooltip.tsx +0 -163
  258. package/src/v2/components/accordion-v2.css +0 -139
  259. package/src/v2/components/accordion-v2.tsx +0 -86
  260. package/src/v2/components/button-v2.tsx +0 -35
  261. package/src/v2/components/checkbox-v2.css +0 -184
  262. package/src/v2/components/checkbox-v2.tsx +0 -65
  263. package/src/v2/components/diff-changes-v2.css +0 -26
  264. package/src/v2/components/icon-button-v2.tsx +0 -37
  265. package/src/v2/components/inline-input-v2.css +0 -225
  266. package/src/v2/components/inline-input-v2.tsx +0 -107
  267. package/src/v2/components/progress-circle-v2.css +0 -13
  268. package/src/v2/components/progress-circle-v2.tsx +0 -52
  269. package/src/v2/components/switch-v2.tsx +0 -28
  270. package/src/v2/components/tabs-v2.tsx +0 -149
  271. package/src/v2/components/text-shimmer-v2.css +0 -125
  272. package/src/v2/components/text-shimmer-v2.tsx +0 -63
  273. /package/dist/{components → forms/inline-input}/inline-input.d.ts +0 -0
  274. /package/dist/{v2/components → navigation}/tab-state-indicator.d.ts +0 -0
  275. /package/src/{v2/components/button-v2.css → actions/button/button.css} +0 -0
  276. /package/src/{v2/components/icon-button-v2.css → actions/icon-button/icon-button.css} +0 -0
  277. /package/src/{v2/components/avatar-v2.css → data-display/avatar/avatar.css} +0 -0
  278. /package/src/{v2/components/project-avatar-v2.css → data-display/project-avatar/project-avatar.css} +0 -0
  279. /package/src/{v2/components/loader-v2.css → feedback/loader/loader.css} +0 -0
  280. /package/src/{v2/components/toast-v2.css → feedback/toast/toast.css} +0 -0
  281. /package/src/{components → forms/inline-input}/inline-input.css +0 -0
  282. /package/src/{components → forms/inline-input}/inline-input.tsx +0 -0
  283. /package/src/{v2/components/radio-v2.css → forms/radio/radio.css} +0 -0
  284. /package/src/{v2/components/textarea-v2.css → forms/textarea/textarea.css} +0 -0
  285. /package/src/{v2/components/divider-v2.css → layout/divider/divider.css} +0 -0
  286. /package/src/{v2/components → navigation}/tab-state-indicator.tsx +0 -0
  287. /package/src/{v2/components/file-tree-v2.css → styles/file-tree.css} +0 -0
  288. /package/src/{v2/styles → styles/tokens}/colors.css +0 -0
  289. /package/src/{v2/styles/tailwind.css → styles/tokens/index.css} +0 -0
package/src/i18n/tg.ts CHANGED
@@ -69,7 +69,7 @@ export const dict = {
69
69
  "ui.sessionTurn.error.addCredits": "Илова кардани кредитҳо",
70
70
  "dialog.usageExceeded.freeTier.title": "Ба ҳадди ройгон расид",
71
71
  "dialog.usageExceeded.freeTier.description":
72
- "Ба OpenCode Go бо нархи $10 дар як моҳ обуна шавед, то ба беҳтарин моделҳои кушодаасос дастрасии боэътимод дошта бошед.",
72
+ "Ба OpenCode Go обуна шавед, то дастрасии боэътимод ба беҳтарин моделҳои кушодаасос аз $5 дар як моҳ оғоз шавад.",
73
73
  "dialog.usageExceeded.freeTier.actionLabel": "Обуна шавед",
74
74
  "dialog.usageExceeded.accountRateLimit.title": "Ба маҳдудияти рафтан расид",
75
75
  "dialog.usageExceeded.accountRateLimit.description":
@@ -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/th.ts CHANGED
@@ -73,7 +73,7 @@ export const dict = {
73
73
 
74
74
  "dialog.usageExceeded.freeTier.title": "ถึงขีดจำกัดฟรีแล้ว",
75
75
  "dialog.usageExceeded.freeTier.description":
76
- "สมัครสมาชิก OpenCode Go ในราคา $10/เดือน เพื่อการเข้าถึงโมเดลโอเพนซอร์สที่ดีที่สุดอย่างเชื่อถือได้",
76
+ "สมัครสมาชิก OpenCode Go เพื่อการเข้าถึงโมเดลโอเพนซอร์สที่ดีที่สุดอย่างเชื่อถือได้ เริ่มต้นที่ $5/เดือน",
77
77
  "dialog.usageExceeded.freeTier.actionLabel": "สมัครสมาชิก",
78
78
  "dialog.usageExceeded.accountRateLimit.title": "ถึงขีดจำกัดของ Go แล้ว",
79
79
  "dialog.usageExceeded.accountRateLimit.description":
@@ -151,8 +151,6 @@ export const dict = {
151
151
  "ui.tool.websearch.provider": "{{provider}} ค้นหาเว็บ",
152
152
  "ui.tool.shell": "เชลล์",
153
153
  "ui.tool.patch": "แพตช์",
154
- "ui.tool.todos": "รายการงาน",
155
- "ui.tool.todos.read": "อ่านรายการงาน",
156
154
  "ui.tool.questions": "คำถาม",
157
155
  "ui.tool.questions.numbered": "คำถาม {{number}}",
158
156
  "ui.tool.agent": "เอเจนต์ {{type}}",
package/src/i18n/tk.ts CHANGED
@@ -69,7 +69,7 @@ export const dict: Record<string, string> = {
69
69
  "ui.sessionTurn.error.addCredits": "Karz goşuň",
70
70
  "dialog.usageExceeded.freeTier.title": "Mugt çäk ýetdi",
71
71
  "dialog.usageExceeded.freeTier.description":
72
- "Iň oňat açyk çeşme modellerine ygtybarly girmek üçin aýda 10 $ töläp, OpenCode Go-a ýazylyň.",
72
+ "Iň oňat açyk çeşme modellerine ygtybarly girmek üçin aýda 5 $ -dan başlap, OpenCode Go-a ýazylyň.",
73
73
  "dialog.usageExceeded.freeTier.actionLabel": "Abuna ýazylyň",
74
74
  "dialog.usageExceeded.accountRateLimit.title": "Çäklendirildi",
75
75
  "dialog.usageExceeded.accountRateLimit.description":
@@ -143,8 +143,6 @@ export const dict: Record<string, string> = {
143
143
  "ui.tool.websearch.provider": "{{provider}} Web gözlegi",
144
144
  "ui.tool.shell": "Shell",
145
145
  "ui.tool.patch": "Patch",
146
- "ui.tool.todos": "Edilmeli işler",
147
- "ui.tool.todos.read": "Edilmeli zatlary okaň",
148
146
  "ui.tool.questions": "Soraglar",
149
147
  "ui.tool.questions.numbered": "Soraglar {{number}}",
150
148
  "ui.tool.agent": "{{type}} Agenti",
package/src/i18n/tr.ts CHANGED
@@ -79,7 +79,7 @@ export const dict = {
79
79
 
80
80
  "dialog.usageExceeded.freeTier.title": "Ücretsiz sınıra ulaşıldı",
81
81
  "dialog.usageExceeded.freeTier.description":
82
- "En iyi açık kaynaklı modellere güvenilir erişim için aylık $10 karşılığında OpenCode Go'ya abone olun.",
82
+ "En iyi açık kaynaklı modellere güvenilir erişim için OpenCode Go'ya abone olun. Aylık $5'ten başlar.",
83
83
  "dialog.usageExceeded.freeTier.actionLabel": "Abone ol",
84
84
  "dialog.usageExceeded.accountRateLimit.title": "Go sınırına ulaşıldı",
85
85
  "dialog.usageExceeded.accountRateLimit.description":
@@ -157,8 +157,6 @@ export const dict = {
157
157
  "ui.tool.websearch.provider": "{{provider}} Web araması",
158
158
  "ui.tool.shell": "Kabuk",
159
159
  "ui.tool.patch": "Yama",
160
- "ui.tool.todos": "Görevler",
161
- "ui.tool.todos.read": "Görevleri oku",
162
160
  "ui.tool.questions": "Sorular",
163
161
  "ui.tool.questions.numbered": "Sorular {{number}}",
164
162
  "ui.tool.agent": "{{type}} ajanı",
package/src/i18n/uk.ts CHANGED
@@ -77,7 +77,7 @@ export const dict: Record<string, string> = {
77
77
 
78
78
  "dialog.usageExceeded.freeTier.title": "Безкоштовний ліміт вичерпано",
79
79
  "dialog.usageExceeded.freeTier.description":
80
- "Підпишіться на OpenCode Go за $10 на місяць для надійного доступу до найкращих моделей із відкритим кодом.",
80
+ "Підпишіться на OpenCode Go для надійного доступу до найкращих моделей із відкритим кодом від $5 на місяць.",
81
81
  "dialog.usageExceeded.freeTier.actionLabel": "Підписатися",
82
82
  "dialog.usageExceeded.accountRateLimit.title": "Ліміт Go вичерпано",
83
83
  "dialog.usageExceeded.accountRateLimit.description":
@@ -167,8 +167,6 @@ export const dict: Record<string, string> = {
167
167
  "ui.tool.websearch.provider": "{{provider}} Веб-пошук",
168
168
  "ui.tool.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/ur.ts CHANGED
@@ -70,7 +70,7 @@ export const dict: Record<string, string> = {
70
70
  "ui.sessionTurn.error.addCredits": "کریڈٹ شامل کریں۔",
71
71
  "dialog.usageExceeded.freeTier.title": "مفت استعمال کی حد پوری ہو گئی",
72
72
  "dialog.usageExceeded.freeTier.description":
73
- "$10/ماہ میں بہترین اوپن سورس ماڈلز تک قابل اعتماد رسائی کے لیے OpenCode Go کو سبسکرائب کریں۔",
73
+ "$5/ماہ سے شروع ہونے والے بہترین اوپن سورس ماڈلز تک قابل اعتماد رسائی کے لیے OpenCode Go کو سبسکرائب کریں۔",
74
74
  "dialog.usageExceeded.freeTier.actionLabel": "سبسکرائب کریں۔",
75
75
  "dialog.usageExceeded.accountRateLimit.title": "Go حد تک پہنچ گئی۔",
76
76
  "dialog.usageExceeded.accountRateLimit.description":
@@ -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/uz.ts CHANGED
@@ -71,7 +71,7 @@ export const dict: Record<string, string> = {
71
71
  "ui.sessionTurn.error.addCredits": "Kredit qo'shing",
72
72
  "dialog.usageExceeded.freeTier.title": "Bepul chegaraga yetdi",
73
73
  "dialog.usageExceeded.freeTier.description":
74
- "Oyiga $10 evaziga eng yaxshi ochiq kodli modellarga ishonchli kirish uchun OpenCode Go ga obuna bo'ling.",
74
+ "Oyiga $5 dan boshlab eng yaxshi ochiq kodli modellarga ishonchli kirish uchun OpenCode Go ga obuna bo'ling.",
75
75
  "dialog.usageExceeded.freeTier.actionLabel": "Obuna boʻling",
76
76
  "dialog.usageExceeded.accountRateLimit.title": "Oʻtish chegarasiga yetdi",
77
77
  "dialog.usageExceeded.accountRateLimit.description":
@@ -146,8 +146,6 @@ export const dict: Record<string, string> = {
146
146
  "ui.tool.websearch.provider": "{{provider}} veb-qidiruv",
147
147
  "ui.tool.shell": "Shell",
148
148
  "ui.tool.patch": "Yamoq",
149
- "ui.tool.todos": "Vazifalar",
150
- "ui.tool.todos.read": "Vazifalarni o'qing",
151
149
  "ui.tool.questions": "Savollar",
152
150
  "ui.tool.questions.numbered": "Savollar {{number}}",
153
151
  "ui.tool.agent": "{{type}} agenti",
package/src/i18n/vi.ts CHANGED
@@ -69,7 +69,7 @@ export const dict: Record<string, string> = {
69
69
  "ui.sessionTurn.error.addCredits": "Thêm số dư",
70
70
  "dialog.usageExceeded.freeTier.title": "Đã đạt đến giới hạn miễn phí",
71
71
  "dialog.usageExceeded.freeTier.description":
72
- "Đăng ký OpenCode Go với giá $10/tháng để có quyền truy cập đáng tin cậy vào các mô hình nguồn mở tốt nhất.",
72
+ "Đăng ký OpenCode Go để có quyền truy cập đáng tin cậy vào các mô hình nguồn mở tốt nhất, bắt đầu từ $5/tháng.",
73
73
  "dialog.usageExceeded.freeTier.actionLabel": "Đăng ký",
74
74
  "dialog.usageExceeded.accountRateLimit.title": "Đã đạt giới hạn Go",
75
75
  "dialog.usageExceeded.accountRateLimit.description":
@@ -143,8 +143,6 @@ export const dict: Record<string, string> = {
143
143
  "ui.tool.websearch.provider": "{{provider}} Tìm kiếm trên web",
144
144
  "ui.tool.shell": "Shell",
145
145
  "ui.tool.patch": "Bản vá",
146
- "ui.tool.todos": "Việc cần làm",
147
- "ui.tool.todos.read": "Đọc việc cần làm",
148
146
  "ui.tool.questions": "Câu hỏi",
149
147
  "ui.tool.questions.numbered": "Câu hỏi {{number}}",
150
148
  "ui.tool.agent": "Tác nhân {{type}}",
package/src/i18n/zh.ts CHANGED
@@ -76,7 +76,7 @@ export const dict = {
76
76
  "ui.sessionTurn.error.addCredits": "充值",
77
77
 
78
78
  "dialog.usageExceeded.freeTier.title": "免费额度已用完",
79
- "dialog.usageExceeded.freeTier.description": "每月 $10 订阅 OpenCode Go,可靠地使用最佳开源模型。",
79
+ "dialog.usageExceeded.freeTier.description": "订阅 OpenCode Go,可靠地使用最佳开源模型,每月 $5 起。",
80
80
  "dialog.usageExceeded.freeTier.actionLabel": "订阅",
81
81
  "dialog.usageExceeded.accountRateLimit.title": "Go 额度已用完",
82
82
  "dialog.usageExceeded.accountRateLimit.description": "使用额度已达上限。如需立即继续使用此模型,请启用余额付费",
@@ -153,8 +153,6 @@ export const dict = {
153
153
  "ui.tool.websearch.provider": "{{provider}} 网页搜索",
154
154
  "ui.tool.shell": "Shell",
155
155
  "ui.tool.patch": "补丁",
156
- "ui.tool.todos": "待办",
157
- "ui.tool.todos.read": "读取待办",
158
156
  "ui.tool.questions": "问题",
159
157
  "ui.tool.questions.numbered": "问题 {{number}}",
160
158
  "ui.tool.agent": "{{type}} 智能体",
package/src/i18n/zht.ts CHANGED
@@ -76,7 +76,7 @@ export const dict = {
76
76
  "ui.sessionTurn.error.addCredits": "新增點數",
77
77
 
78
78
  "dialog.usageExceeded.freeTier.title": "已達免費額度上限",
79
- "dialog.usageExceeded.freeTier.description": "每月 $10 訂閱 OpenCode Go,可靠地使用最佳開源模型。",
79
+ "dialog.usageExceeded.freeTier.description": "訂閱 OpenCode Go,可靠地使用最佳開源模型,每月 $5 起。",
80
80
  "dialog.usageExceeded.freeTier.actionLabel": "訂閱",
81
81
  "dialog.usageExceeded.accountRateLimit.title": "已達 Go 額度上限",
82
82
  "dialog.usageExceeded.accountRateLimit.description": "已達使用額度上限。若要立即繼續使用此模型,請啟用可用餘額計費",
@@ -153,8 +153,6 @@ export const dict = {
153
153
  "ui.tool.websearch.provider": "{{provider}} 網頁搜尋",
154
154
  "ui.tool.shell": "Shell",
155
155
  "ui.tool.patch": "修補",
156
- "ui.tool.todos": "待辦",
157
- "ui.tool.todos.read": "讀取待辦",
158
156
  "ui.tool.questions": "問題",
159
157
  "ui.tool.questions.numbered": "問題 {{number}}",
160
158
  "ui.tool.agent": "{{type}} 代理程式",
@@ -1,6 +1,4 @@
1
- import { onMount, splitProps, type ComponentProps } from "solid-js"
2
-
3
- const icons = {
1
+ export const additionalIcons = {
4
2
  "align-right": `<path d="M12.292 6.04167L16.2503 9.99998L12.292 13.9583M2.91699 9.99998H15.6253M17.0837 3.75V16.25" stroke="currentColor" stroke-linecap="square"/>`,
5
3
  "arrow-up": `<path fill-rule="evenodd" clip-rule="evenodd" d="M9.99991 2.24121L16.0921 8.33343L15.2083 9.21731L10.6249 4.63397V17.5001H9.37492V4.63398L4.7916 9.21731L3.90771 8.33343L9.99991 2.24121Z" fill="currentColor"/>`,
6
4
  "arrow-left": `<path d="M8.33464 4.58398L2.91797 10.0007L8.33464 15.4173M3.33464 10.0007H17.0846" stroke="currentColor" stroke-linecap="square"/>`,
@@ -10,6 +8,7 @@ const icons = {
10
8
  prompt: `<path d="M14.5841 12.0807H17.9193V2.91406H5.6276V6.2474M14.5859 6.2474H2.08594V15.4141H5.0026V17.4974L8.7526 15.4141H14.5859V6.2474Z" stroke="currentColor" stroke-linecap="square"/>`,
11
9
  brain: `<path d="M13.332 8.7487C11.4911 8.7487 9.9987 7.25631 9.9987 5.41536M6.66536 11.2487C8.50631 11.2487 9.9987 12.7411 9.9987 14.582M9.9987 2.78209L9.9987 17.0658M16.004 15.0475C17.1255 14.5876 17.9154 13.4849 17.9154 12.1978C17.9154 11.3363 17.5615 10.5575 16.9913 9.9987C17.5615 9.43991 17.9154 8.66108 17.9154 7.79962C17.9154 6.21199 16.7136 4.90504 15.1702 4.73878C14.7858 3.21216 13.4039 2.08203 11.758 2.08203C11.1171 2.08203 10.5162 2.25337 9.9987 2.55275C9.48117 2.25337 8.88032 2.08203 8.23944 2.08203C6.59353 2.08203 5.21157 3.21216 4.82722 4.73878C3.28377 4.90504 2.08203 6.21199 2.08203 7.79962C2.08203 8.66108 2.43585 9.43991 3.00609 9.9987C2.43585 10.5575 2.08203 11.3363 2.08203 12.1978C2.08203 13.4849 2.87191 14.5876 3.99339 15.0475C4.46688 16.7033 5.9917 17.9154 7.79962 17.9154C8.61335 17.9154 9.36972 17.6698 9.9987 17.2488C10.6277 17.6698 11.384 17.9154 12.1978 17.9154C14.0057 17.9154 15.5305 16.7033 16.004 15.0475Z" stroke="currentColor"/>`,
12
10
  fork: `<path d="M2.91602 7.91406L2.91602 2.91406H7.91602M12.0827 2.91406H17.0827L17.0827 7.91406M9.99935 9.9974L9.99935 17.0807M9.99935 9.9974L3.33268 3.33073M9.99935 9.9974L16.666 3.33073" stroke="currentColor" stroke-linecap="square"/>`,
11
+ "workspace-isolated": `<g transform="translate(2 2)"><path d="M10.5 10.5V5.5H5.5V10.5H10.5Z" fill="currentColor"/><rect x="2.5" y="2.5" width="11" height="11" stroke="currentColor"/></g>`,
13
12
  "bullet-list": `<path d="M9.58329 13.7497H17.0833M9.58329 6.24967H17.0833M6.24996 6.24967C6.24996 7.17015 5.50377 7.91634 4.58329 7.91634C3.66282 7.91634 2.91663 7.17015 2.91663 6.24967C2.91663 5.3292 3.66282 4.58301 4.58329 4.58301C5.50377 4.58301 6.24996 5.3292 6.24996 6.24967ZM6.24996 13.7497C6.24996 14.6701 5.50377 15.4163 4.58329 15.4163C3.66282 15.4163 2.91663 14.6701 2.91663 13.7497C2.91663 12.8292 3.66282 12.083 4.58329 12.083C5.50377 12.083 6.24996 12.8292 6.24996 13.7497Z" stroke="currentColor" stroke-linecap="square"/>`,
14
13
  "check-small": `<path d="M6.5 11.4412L8.97059 13.5L13.5 6.5" stroke="currentColor" stroke-linecap="square"/>`,
15
14
  "chevron-down": `<path d="M6.6665 8.33325L9.99984 11.6666L13.3332 8.33325" stroke="currentColor" stroke-linecap="square"/>`,
@@ -103,79 +102,14 @@ const icons = {
103
102
  link: `<path d="M2.08334 12.0833L1.72979 11.7298L1.37624 12.0833L1.72979 12.4369L2.08334 12.0833ZM7.91668 17.9167L7.56312 18.2702L7.91668 18.6238L8.27023 18.2702L7.91668 17.9167ZM17.9167 7.91666L18.2702 8.27022L18.6238 7.91666L18.2702 7.56311L17.9167 7.91666ZM12.0833 2.08333L12.4369 1.72977L12.0833 1.37622L11.7298 1.72977L12.0833 2.08333ZM8.39646 5.06311L8.0429 5.41666L8.75001 6.12377L9.10356 5.77021L8.75001 5.41666L8.39646 5.06311ZM5.77023 9.10355L6.12378 8.74999L5.41668 8.04289L5.06312 8.39644L5.41668 8.74999L5.77023 9.10355ZM14.2298 10.8964L13.8762 11.25L14.5833 11.9571L14.9369 11.6035L14.5833 11.25L14.2298 10.8964ZM11.6036 14.9369L11.9571 14.5833L11.25 13.8762L10.8965 14.2298L11.25 14.5833L11.6036 14.9369ZM7.14646 12.1464L6.7929 12.5L7.50001 13.2071L7.85356 12.8535L7.50001 12.5L7.14646 12.1464ZM12.8536 7.85355L13.2071 7.49999L12.5 6.79289L12.1465 7.14644L12.5 7.49999L12.8536 7.85355ZM2.08334 12.0833L1.72979 12.4369L7.56312 18.2702L7.91668 17.9167L8.27023 17.5631L2.4369 11.7298L2.08334 12.0833ZM17.9167 7.91666L18.2702 7.56311L12.4369 1.72977L12.0833 2.08333L11.7298 2.43688L17.5631 8.27022L17.9167 7.91666ZM12.0833 2.08333L11.7298 1.72977L8.39646 5.06311L8.75001 5.41666L9.10356 5.77021L12.4369 2.43688L12.0833 2.08333ZM5.41668 8.74999L5.06312 8.39644L1.72979 11.7298L2.08334 12.0833L2.4369 12.4369L5.77023 9.10355L5.41668 8.74999ZM14.5833 11.25L14.9369 11.6035L18.2702 8.27022L17.9167 7.91666L17.5631 7.56311L14.2298 10.8964L14.5833 11.25ZM7.91668 17.9167L8.27023 18.2702L11.6036 14.9369L11.25 14.5833L10.8965 14.2298L7.56312 17.5631L7.91668 17.9167ZM7.50001 12.5L7.85356 12.8535L12.8536 7.85355L12.5 7.49999L12.1465 7.14644L7.14646 12.1464L7.50001 12.5Z" fill="currentColor"/>`,
104
103
  providers: `<path d="M10.0001 4.37562V2.875M13 4.37793V2.87793M7.00014 4.37793V2.875M10 17.1279V15.6279M13 17.1279V15.6279M7 17.1279V15.6279M15.625 13.0029H17.125M15.625 7.00293H17.125M15.625 10.0029H17.125M2.875 10.0029H4.375M2.875 13.0029H4.375M2.875 7.00293H4.375M4.375 4.37793H15.625V15.6279H4.375V4.37793ZM12.6241 10.0022C12.6241 11.4519 11.4488 12.6272 9.99908 12.6272C8.54934 12.6272 7.37408 11.4519 7.37408 10.0022C7.37408 8.55245 8.54934 7.3772 9.99908 7.3772C11.4488 7.3772 12.6241 8.55245 12.6241 10.0022Z" stroke="currentColor" stroke-linecap="square"/>`,
105
104
  models: `<path fill-rule="evenodd" clip-rule="evenodd" d="M17.5 10C12.2917 10 10 12.2917 10 17.5C10 12.2917 7.70833 10 2.5 10C7.70833 10 10 7.70833 10 2.5C10 7.70833 12.2917 10 17.5 10Z" stroke="currentColor"/>`,
105
+ appearance: `<path d="M2.707 14.707L14.707 2.707M2.707 9.06L9.06 2.707M2.707 3.413L3.413 2.707M8.354 14.707L14.707 8.354M14.000 14.706L14.706 14.000" stroke="currentColor" stroke-linecap="square"/>`,
106
+ notifications: `<path d="M15.389 7.278V9.611C15.389 10.593 15.389 11.389 15.389 11.389H11.833M6.056 11.389H2.5C2.5 11.389 2.5 10.593 2.5 9.611V4.278C2.5 3.296 2.5 2.5 2.5 2.5H9.945M6.056 11.389V13.611H8.944H11.833V11.389M6.056 11.389H11.833" stroke="currentColor"/><circle cx="14.5" cy="4.5" r="2" stroke="currentColor" fill="currentColor"/>`,
107
+ extensions: `<path d="M9.166 6.805V9.305M11.834 6.805V9.305M6.5 6.805V9.305M2.5 2.5V13.61H15.833V2.5H2.5Z" stroke="currentColor" stroke-linecap="square"/>`,
108
+ cube: `<path d="M10 2.5L16.5 6.25V13.75L10 17.5L3.5 13.75V6.25L10 2.5Z" stroke="currentColor"/><path d="M10 10L16.5 6.25M10 10V17.5M10 10L3.5 6.25" stroke="currentColor"/>`,
109
+ "post-skill": `<rect x="2.5" y="3.5" width="15" height="13" rx="1.5" stroke="currentColor"/><path d="M5.5 7.5H10.5M5.5 10.5H14.5" stroke="currentColor"/>`,
106
110
  "arrow-undo-down": `<path d="M4.08333 11.0859L1.75 8.7526L4.08333 6.41927M2.33333 8.7526L12.5417 8.7526L12.5417 3.21094L7 3.21094" stroke="currentColor" stroke-width="1" stroke-linecap="square"/>`,
107
111
  }
108
112
 
109
- const spriteID = "opencode-icon-sprite"
110
- const symbol = (name: keyof typeof icons) => `opencode-icon-${name}`
111
- let spriteInserted = false
112
-
113
- function viewBox(name: keyof typeof icons) {
113
+ export function additionalIconViewBox(name: keyof typeof additionalIcons) {
114
114
  return name === "magnifying-glass" || name === "arrow-undo-down" || name === "subagent" ? "0 0 16 16" : "0 0 20 20"
115
115
  }
116
-
117
- function ensureSprite() {
118
- if (spriteInserted) return
119
- if (typeof document === "undefined") return
120
- if (document.getElementById(spriteID)) {
121
- spriteInserted = true
122
- return
123
- }
124
- const body = document.body as HTMLElement | null
125
- if (!body) return
126
-
127
- const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg")
128
- svg.id = spriteID
129
- svg.setAttribute("aria-hidden", "true")
130
- svg.setAttribute("width", "0")
131
- svg.setAttribute("height", "0")
132
- svg.style.position = "absolute"
133
- svg.style.overflow = "hidden"
134
- svg.innerHTML = Object.entries(icons)
135
- .map(([name, path]) => {
136
- const key = name as keyof typeof icons
137
- return `<symbol id="${symbol(key)}" viewBox="${viewBox(key)}">${path}</symbol>`
138
- })
139
- .join("")
140
- body.insertBefore(svg, body.firstChild)
141
- spriteInserted = true
142
- }
143
-
144
- export interface IconProps extends ComponentProps<"svg"> {
145
- name: keyof typeof icons
146
- size?: "small" | "normal" | "medium" | "large"
147
- }
148
-
149
- export function Icon(props: IconProps) {
150
- const [local, others] = splitProps(props, ["name", "size", "class", "classList"])
151
- onMount(ensureSprite)
152
-
153
- return (
154
- <div
155
- data-component="icon"
156
- data-size={local.size || "normal"}
157
- data-directional={
158
- local.name === "arrow-left" ||
159
- local.name === "arrow-right" ||
160
- local.name === "chevron-left" ||
161
- local.name === "chevron-right"
162
- ? true
163
- : undefined
164
- }
165
- >
166
- <svg
167
- data-slot="icon-svg"
168
- classList={{
169
- ...local.classList,
170
- [local.class ?? ""]: !!local.class,
171
- }}
172
- fill="none"
173
- viewBox={viewBox(local.name)}
174
- aria-hidden="true"
175
- {...others}
176
- >
177
- <use href={`#${symbol(local.name)}`} />
178
- </svg>
179
- </div>
180
- )
181
- }
@@ -0,0 +1,3 @@
1
+ :dir(rtl) [data-slot="icon-svg"][data-directional] {
2
+ transform: scaleX(-1);
3
+ }
@@ -1,5 +1,8 @@
1
1
  import { onMount, type ComponentProps, splitProps } from "solid-js"
2
+ import { additionalIcons, additionalIconViewBox } from "./additional-icons"
3
+ import "./icon.css"
2
4
 
5
+ // Consumers center the SVG viewport, so each icon must center its artwork within its viewBox.
3
6
  const icons = {
4
7
  edit: {
5
8
  viewBox: "0 0 16 16",
@@ -17,6 +20,10 @@ const icons = {
17
20
  viewBox: "0 0 16 16",
18
21
  body: `<path d="M5.118 5.686V10.314M5.118 5.686C5.97 5.686 6.661 4.995 6.661 4.143C6.661 3.291 5.97 2.6 5.118 2.6C4.266 2.6 3.575 3.291 3.575 4.143C3.575 4.995 4.266 5.686 5.118 5.686ZM5.118 10.314C4.266 10.314 3.575 11.005 3.575 11.857C3.575 12.709 4.266 13.4 5.118 13.4C5.97 13.4 6.661 12.709 6.661 11.857M5.118 10.314C5.97 10.314 6.661 11.005 6.661 11.857M10.882 5.686C11.734 5.686 12.425 4.995 12.425 4.143C12.425 3.291 11.734 2.6 10.882 2.6C10.03 2.6 9.339 3.291 9.339 4.143C9.339 4.995 10.03 5.686 10.882 5.686ZM10.882 5.686V9.457C10.882 10.783 9.807 11.857 8.482 11.857H6.661" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>`,
19
22
  },
23
+ "branch-out": {
24
+ viewBox: "0 0 16 16",
25
+ body: `<path d="M10.4225 3.35355L12.9024 5.83344L10.4225 8.31333" stroke="currentColor"/><path d="M1 12.2852H4.23042C4.89912 12.2852 5.52359 11.951 5.89452 11.3946L9.00783 6.72462C8.37877 6.16823 10.0032 5.83402 10.6719 5.83402H12.9024" stroke="currentColor"/><path d="M8.5 12.2852H14" stroke="currentColor" stroke-linejoin="round"/>`,
26
+ },
20
27
  "grid-plus": {
21
28
  viewBox: "0 0 16 16",
22
29
  body: `<path d="M13.9948 11.668H9.32812M11.6641 9.33203V13.9987M6.66667 9.33203V13.9987H2V9.33203H6.66667ZM6.66667 2V6.66667H2V2H6.66667ZM13.9948 2V6.66667H9.32812V2H13.9948Z" stroke="currentColor" stroke-miterlimit="10" stroke-linecap="square"/>`,
@@ -25,6 +32,10 @@ const icons = {
25
32
  viewBox: "0 0 16 16",
26
33
  body: `<path d="M6.33345 6.33349V5.00015H9.66679V7.00015L8.00015 8.00015V9.66679M8.27485 11.6819H7.71897M14.4446 8.00011C14.4446 11.5593 11.5593 14.4446 8.00011 14.4446C4.44094 14.4446 1.55566 11.5593 1.55566 8.00011C1.55566 4.44094 4.44094 1.55566 8.00011 1.55566C11.5593 1.55566 14.4446 4.44094 14.4446 8.00011Z" stroke="currentColor" stroke-linecap="square"/>`,
27
34
  },
35
+ "circle-exclamation": {
36
+ viewBox: "0 0 16 16",
37
+ body: `<path d="M8.75 11.75H7.25V10.25H8.75V11.75Z" fill="currentColor"/><path d="M8.75 9.25H7.25V4.25H8.75V9.25Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8 1C9.93286 1 11.684 1.7836 12.9502 3.0498C14.2164 4.31601 15 6.06714 15 8C15 11.866 11.866 15 8 15C6.06714 15 4.31601 14.2164 3.0498 12.9502C1.7836 11.684 1 9.93286 1 8C1 4.13401 4.13401 1 8 1ZM8 2C4.68629 2 2 4.68629 2 8C2 9.65699 2.67148 11.1559 3.75781 12.2422C4.84415 13.3285 6.34301 14 8 14C11.3137 14 14 11.3137 14 8C14 6.34301 13.3285 4.84415 12.2422 3.75781C11.1559 2.67148 9.65699 2 8 2Z" fill="currentColor"/>`,
38
+ },
28
39
  "sidebar-right": {
29
40
  viewBox: "0 0 20 20",
30
41
  body: `<path d="M2.91536 2.91406H2.36536V2.36406H2.91536V2.91406ZM2.91536 17.0807V17.6307H2.36536V17.0807H2.91536ZM17.082 17.0807H17.632V17.6307H17.082V17.0807ZM17.082 2.91406V2.36406H17.632V2.91406H17.082ZM6.9987 2.91406H6.4487V2.36406H6.9987V2.91406ZM6.9987 17.0807V17.6307H6.4487V17.0807H6.9987ZM2.91536 2.91406H3.46536V17.0807H2.91536H2.36536V2.91406H2.91536ZM2.91536 17.0807V16.5307H17.082V17.0807V17.6307H2.91536V17.0807ZM17.082 17.0807H16.532V2.91406H17.082H17.632V17.0807H17.082ZM17.082 2.91406V3.46406H2.91536V2.91406V2.36406H17.082V2.91406ZM6.9987 2.91406H7.5487V17.0807H6.9987H6.4487V2.91406H6.9987ZM17.082 17.0807L17.082 17.6307L6.9987 17.6307V17.0807V16.5307L17.082 16.5307L17.082 17.0807ZM6.9987 2.91406V2.36406H17.082V2.91406V3.46406H6.9987V2.91406Z" fill="currentColor"/>`,
@@ -121,6 +132,14 @@ const icons = {
121
132
  viewBox: "0 0 20 20",
122
133
  body: `<path d="M7 14.5H13M7 7.99512H10.0049M10.0049 7.99512H13M10.0049 7.99512V5M10.0049 7.99512V11M18 18V2L2 2L2 18H18Z" stroke="currentColor"/>`,
123
134
  },
135
+ "window-analytics": {
136
+ viewBox: "0 0 16 16",
137
+ body: `<g transform="translate(1 2)"><path d="M7 4H11M7 8H11M0.5 0.5V11.5H13.5V0.5H0.5ZM3.5 3.5H4.5V4.5H3.5V3.5ZM3.5 7.5H4.5V8.5H3.5V7.5Z" stroke="currentColor" stroke-miterlimit="10" stroke-linecap="square"/></g>`,
138
+ },
139
+ trash: {
140
+ viewBox: "0 0 20 20",
141
+ body: `<path d="M4.58342 17.9134L4.58369 17.4134L4.22787 17.5384L4.22766 18.0384H4.58342V17.9134ZM15.4167 17.9134V18.0384H15.7725L15.7723 17.5384L15.4167 17.9134ZM2.08342 3.95508V3.45508H1.58342V3.95508H2.08342V4.45508V3.95508ZM17.9167 4.45508V4.95508H18.4167V4.45508H17.9167V3.95508V4.45508ZM4.16677 4.58008L3.66701 4.5996L4.22816 17.5379L4.72792 17.4934L5.22767 17.4489L4.66652 4.54055L4.16677 4.58008ZM4.58342 18.0384V17.9134H15.4167V18.0384V18.5384H4.58342V18.0384ZM15.4167 17.9134L15.8332 17.5379L16.2498 4.5996L15.7501 4.58008L15.2503 4.56055L14.8337 17.4989L15.4167 17.9134ZM15.8334 4.58008V4.08008H4.16677V4.58008V5.08008H15.8334V4.58008ZM2.08342 4.45508V4.95508H4.16677V4.58008V4.08008H2.08342V4.45508ZM15.8334 4.58008V5.08008H17.9167V4.45508V3.95508H15.8334V4.58008ZM6.83951 4.35149L7.432 4.55047C7.79251 3.47701 8.80699 2.70508 10.0001 2.70508V2.20508V1.70508C8.25392 1.70508 6.77335 2.83539 6.24702 4.15251L6.83951 4.35149ZM10.0001 2.20508V2.70508C11.1932 2.70508 12.2077 3.47701 12.5682 4.55047L13.1607 4.35149L13.7532 4.15251C13.2269 2.83539 11.7463 1.70508 10.0001 1.70508V2.20508Z" fill="currentColor"/>`,
142
+ },
124
143
  "outline-sliders": {
125
144
  viewBox: "0 0 16 16",
126
145
  body: `<path d="M11.7779 4.66675H14.4446M11.7779 4.66675C11.7779 5.77132 10.8825 6.66675 9.77789 6.66675C8.67332 6.66675 7.77789 5.77132 7.77789 4.66675M11.7779 4.66675C11.7779 3.56218 10.8825 2.66675 9.77789 2.66675C8.67332 2.66675 7.77789 3.56218 7.77789 4.66675M1.55566 4.66675H7.77789M4.22233 11.3334H1.55566M4.22233 11.3334C4.22233 12.438 5.11776 13.3334 6.22233 13.3334C7.3269 13.3334 8.22233 12.438 8.22233 11.3334M4.22233 11.3334C4.22233 10.2288 5.11776 9.33341 6.22233 9.33341C7.3269 9.33341 8.22233 10.2288 8.22233 11.3334M14.4446 11.3334H8.22233" stroke="currentColor"/>`,
@@ -145,16 +164,29 @@ const icons = {
145
164
  viewBox: "0 0 20 20",
146
165
  body: `<path d="M5.83333 4.16406L2.5 7.4974L5.83333 10.8307M3.33333 7.4974H17.9167V15.4141H10" stroke="currentColor" stroke-linecap="square"/>`,
147
166
  },
167
+ "fill-triangle-down": {
168
+ viewBox: "0 0 16 16",
169
+ body: `<path d="M5.37624 6.75194C5.1818 6.41861 5.42223 6 5.80813 6H10.1921C10.578 6 10.8184 6.41861 10.624 6.75194L8.43199 10.5096C8.23905 10.8404 7.76115 10.8404 7.56821 10.5096L5.37624 6.75194Z" fill="currentColor"/>`,
170
+ },
148
171
  archive: {
149
172
  viewBox: "0 0 16 16",
150
173
  body: `<path d="M13.1112 13.5555V14.0555H13.6112V13.5555H13.1112ZM2.889 13.5555H2.389L2.389 14.0555H2.889V13.5555ZM3.38901 5.55546L3.38901 5.05546L2.38901 5.05546L2.38901 5.55546L2.88901 5.55546L3.38901 5.55546ZM14.4446 2.44434H14.9446V1.94434L14.4446 1.94434L14.4446 2.44434ZM14.4446 5.55545L14.4446 6.05545L14.9446 6.05545V5.55545H14.4446ZM1.55566 5.55546L1.05566 5.55545L1.05566 6.05546L1.55566 6.05546L1.55566 5.55546ZM1.5557 2.44436L1.5557 1.94436L1.05571 1.94436L1.0557 2.44435L1.5557 2.44436ZM13.1112 5.55546H12.6112V13.5555H13.1112H13.6112V5.55546H13.1112ZM2.889 13.5555H3.389L3.38901 5.55546L2.88901 5.55546L2.38901 5.55546L2.389 13.5555H2.889ZM14.4446 2.44434H13.9446V5.55545H14.4446H14.9446V2.44434H14.4446ZM1.55566 5.55546L2.05566 5.55547L2.0557 2.44436L1.5557 2.44436L1.0557 2.44435L1.05566 5.55545L1.55566 5.55546ZM6.22234 8.22213V8.72213H9.7779V8.22213V7.72213H6.22234V8.22213ZM13.1112 13.5555V13.0555H2.889V13.5555V14.0555H13.1112V13.5555ZM1.5557 2.44436L1.5557 2.94436L14.4446 2.94434L14.4446 2.44434L14.4446 1.94434L1.5557 1.94436L1.5557 2.44436ZM14.4446 5.55545L14.4446 5.05545L1.55566 5.05546L1.55566 5.55546L1.55566 6.05546L14.4446 6.05545L14.4446 5.55545Z" fill="currentColor"/>`,
151
174
  },
152
175
  }
153
176
 
177
+ type IconName = keyof typeof icons | keyof typeof additionalIcons
178
+
154
179
  const spriteID = "opencode-v2-icon-sprite"
155
- const symbol = (name: keyof typeof icons) => `opencode-v2-icon-${name}`
180
+ const symbol = (name: IconName) => `opencode-v2-icon-${name}`
156
181
  let spriteInserted = false
157
182
 
183
+ function getIcon(name: IconName) {
184
+ const icon = icons[name as keyof typeof icons]
185
+ if (icon) return icon
186
+ const body = additionalIcons[name as keyof typeof additionalIcons]
187
+ return { body, viewBox: additionalIconViewBox(name as keyof typeof additionalIcons) }
188
+ }
189
+
158
190
  function ensureSprite() {
159
191
  if (spriteInserted) return
160
192
  if (typeof document === "undefined") return
@@ -170,25 +202,26 @@ function ensureSprite() {
170
202
  svg.setAttribute("height", "0")
171
203
  svg.style.position = "absolute"
172
204
  svg.style.overflow = "hidden"
173
- svg.innerHTML = Object.entries(icons)
174
- .map(
175
- ([name, icon]) =>
176
- `<symbol id="${symbol(name as keyof typeof icons)}" viewBox="${icon.viewBox}">${icon.body}</symbol>`,
177
- )
205
+ svg.innerHTML = Array.from(new Set<IconName>([...Object.keys(additionalIcons), ...Object.keys(icons)] as IconName[]))
206
+ .map((name) => `<symbol id="${symbol(name)}" viewBox="${getIcon(name).viewBox}">${getIcon(name).body}</symbol>`)
178
207
  .join("")
179
208
  document.body.insertBefore(svg, document.body.firstChild)
180
209
  spriteInserted = true
181
210
  }
182
211
 
183
212
  export interface IconProps extends ComponentProps<"svg"> {
184
- name: keyof typeof icons | (string & {})
213
+ name: IconName | (string & {})
185
214
  size?: "small" | "normal" | "large"
186
215
  }
187
216
 
188
217
  export function Icon(props: IconProps) {
189
218
  const [split, rest] = splitProps(props, ["name", "size"])
190
- const iconName = () => (icons[split.name as keyof typeof icons] ? (split.name as keyof typeof icons) : "plus")
191
- const icon = () => icons[iconName()]
219
+ const iconName = (): IconName => {
220
+ if (icons[split.name as keyof typeof icons]) return split.name as keyof typeof icons
221
+ if (additionalIcons[split.name as keyof typeof additionalIcons]) return split.name as keyof typeof additionalIcons
222
+ return "plus"
223
+ }
224
+ const icon = () => getIcon(iconName())
192
225
  const pixelSize = split.size === "small" ? 14 : split.size === "large" ? 20 : 16
193
226
  onMount(ensureSprite)
194
227
 
@@ -196,6 +229,14 @@ export function Icon(props: IconProps) {
196
229
  <svg
197
230
  {...rest}
198
231
  data-slot="icon-svg"
232
+ data-directional={
233
+ iconName() === "arrow-left" ||
234
+ iconName() === "arrow-right" ||
235
+ iconName() === "chevron-left" ||
236
+ iconName() === "chevron-right"
237
+ ? ""
238
+ : undefined
239
+ }
199
240
  width={pixelSize}
200
241
  height={pixelSize}
201
242
  viewBox={icon().viewBox}
@@ -1,9 +1,9 @@
1
1
  import { type ComponentProps, splitProps } from "solid-js"
2
- import "./divider-v2.css"
2
+ import "./divider.css"
3
3
 
4
- export interface DividerV2Props extends ComponentProps<"div"> {}
4
+ export interface DividerProps extends ComponentProps<"div"> {}
5
5
 
6
- export function DividerV2(props: DividerV2Props) {
6
+ export function Divider(props: DividerProps) {
7
7
  const [local, rest] = splitProps(props, ["class", "classList"])
8
8
  return (
9
9
  <div
@@ -31,6 +31,10 @@
31
31
  }
32
32
  }
33
33
 
34
+ :dir(rtl) [data-slot="menu-v2-item-chevron"] {
35
+ transform: scaleX(-1);
36
+ }
37
+
34
38
  [data-component="menu-v2-item"] {
35
39
  --menu-v2-fg: var(--v2-text-text-base);
36
40
  --menu-v2-fg-muted: var(--v2-text-text-faint);
@@ -72,7 +76,7 @@
72
76
 
73
77
  font-size: 13px;
74
78
  font-weight: 440;
75
- line-height: 100%;
79
+ line-height: var(--line-height-compact);
76
80
  letter-spacing: -0.04px;
77
81
  color: var(--menu-v2-fg);
78
82
  }
@@ -171,13 +175,129 @@
171
175
 
172
176
  font-size: 11px;
173
177
  font-weight: 530;
174
- line-height: 100%;
175
178
  letter-spacing: 0.05px;
176
179
  color: var(--v2-text-text-faint);
177
180
  user-select: none;
178
181
  font-variant-numeric: tabular-nums;
179
182
  }
180
183
 
184
+ [data-component="menu-v2-content"][data-appearance="standard"] {
185
+ min-width: 8rem;
186
+ padding: 4px;
187
+ overflow: hidden;
188
+ border: 1px solid color-mix(in oklch, var(--border-base) 50%, transparent);
189
+ border-radius: var(--radius-md);
190
+ background: var(--surface-raised-stronger-non-alpha);
191
+ background-clip: padding-box;
192
+ box-shadow: var(--shadow-md);
193
+ z-index: 60;
194
+ animation: dropdown-menu-open 150ms ease-out;
195
+
196
+ &[data-closed] {
197
+ animation: dropdown-menu-close 150ms ease-out;
198
+ }
199
+
200
+ [data-component="menu-v2-item"] {
201
+ position: relative;
202
+ height: auto;
203
+ min-height: 0;
204
+ padding: 4px 8px;
205
+ border-radius: var(--radius-sm);
206
+ color: var(--text-strong);
207
+ font-family: var(--font-family-sans);
208
+ font-size: var(--font-size-small);
209
+ font-weight: var(--font-weight-medium);
210
+ line-height: var(--line-height-large);
211
+ letter-spacing: var(--letter-spacing-normal);
212
+ font-variant-numeric: normal;
213
+ -webkit-font-smoothing: auto;
214
+ text-rendering: auto;
215
+
216
+ [data-slot="menu-v2-item-content"] {
217
+ font-family: inherit;
218
+ font-size: inherit;
219
+ font-weight: inherit;
220
+ line-height: inherit;
221
+ letter-spacing: inherit;
222
+ color: inherit;
223
+ }
224
+
225
+ &[data-highlighted] {
226
+ background: var(--surface-raised-base-hover);
227
+ }
228
+
229
+ &[data-disabled] {
230
+ color: var(--text-weak);
231
+ opacity: 1;
232
+ }
233
+
234
+ &[data-checked] {
235
+ padding-inline-end: 28px;
236
+ }
237
+
238
+ &[data-checked] [data-slot="menu-v2-item-content"] {
239
+ font-weight: inherit;
240
+ color: inherit;
241
+ }
242
+
243
+ [data-slot="menu-v2-item-indicator"] {
244
+ position: absolute;
245
+ inset-inline-end: 8px;
246
+ top: 50%;
247
+ width: 16px;
248
+ height: 16px;
249
+ transform: translateY(-50%);
250
+ color: var(--icon-base);
251
+ }
252
+
253
+ [data-slot="menu-v2-item-chevron"] {
254
+ margin-inline-start: auto;
255
+ color: var(--icon-base);
256
+ }
257
+ }
258
+
259
+ [data-slot="menu-v2-separator"] {
260
+ width: calc(100% + 8px);
261
+ height: 1px;
262
+ margin: 4px -4px;
263
+ background: var(--border-weak-base);
264
+ }
265
+
266
+ [data-slot="menu-v2-group-label"] {
267
+ height: auto;
268
+ padding: 4px 8px;
269
+ color: var(--text-weak);
270
+ font-family: var(--font-family-sans);
271
+ font-size: var(--font-size-x-small);
272
+ font-weight: var(--font-weight-medium);
273
+ line-height: var(--line-height-large);
274
+ letter-spacing: var(--letter-spacing-normal);
275
+ font-variant-numeric: normal;
276
+ }
277
+ }
278
+
279
+ @keyframes dropdown-menu-open {
280
+ from {
281
+ opacity: 0;
282
+ transform: scale(0.96);
283
+ }
284
+ to {
285
+ opacity: 1;
286
+ transform: scale(1);
287
+ }
288
+ }
289
+
290
+ @keyframes dropdown-menu-close {
291
+ from {
292
+ opacity: 1;
293
+ transform: scale(1);
294
+ }
295
+ to {
296
+ opacity: 0;
297
+ transform: scale(0.96);
298
+ }
299
+ }
300
+
181
301
  @keyframes menu-v2-in {
182
302
  from {
183
303
  opacity: 0;