sparkdesign 0.0.1 → 0.2.6

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 (403) hide show
  1. package/README.md +279 -5
  2. package/cli/dist/commands/add.js +84 -0
  3. package/cli/dist/commands/diff.js +54 -0
  4. package/cli/dist/commands/init.js +96 -0
  5. package/cli/dist/commands/list.js +25 -0
  6. package/cli/dist/index.js +37 -0
  7. package/cli/dist/utils/config.js +53 -0
  8. package/cli/dist/utils/registry.js +34 -0
  9. package/cli/dist/utils/tokens.js +90 -0
  10. package/cli/dist/utils/transform.js +19 -0
  11. package/cli/registry/basic/alert-dialog.tsx +180 -0
  12. package/cli/registry/basic/avatar.tsx +120 -0
  13. package/cli/registry/basic/button.tsx +100 -0
  14. package/cli/registry/basic/collapse.tsx +94 -0
  15. package/cli/registry/basic/collapsible-card.tsx +230 -0
  16. package/cli/registry/basic/collapsible.tsx +21 -0
  17. package/cli/registry/basic/dropdown-menu.tsx +254 -0
  18. package/cli/registry/basic/icon-button.tsx +66 -0
  19. package/cli/registry/basic/icons-inline.tsx +206 -0
  20. package/cli/registry/basic/kbd.tsx +50 -0
  21. package/cli/registry/basic/option-list.tsx +125 -0
  22. package/cli/registry/basic/pagination.tsx +132 -0
  23. package/cli/registry/basic/progress.tsx +42 -0
  24. package/cli/registry/basic/radio-group.tsx +69 -0
  25. package/cli/registry/basic/resizable.tsx +67 -0
  26. package/cli/registry/basic/scrollbar.tsx +114 -0
  27. package/cli/registry/basic/select.tsx +177 -0
  28. package/cli/registry/basic/skeleton.tsx +33 -0
  29. package/cli/registry/basic/slider.tsx +55 -0
  30. package/cli/registry/basic/sonner.tsx +104 -0
  31. package/cli/registry/basic/spinner.tsx +17 -0
  32. package/cli/registry/basic/switch.tsx +49 -0
  33. package/cli/registry/basic/table.tsx +117 -0
  34. package/cli/registry/basic/tabs.tsx +85 -0
  35. package/cli/registry/basic/tag.tsx +161 -0
  36. package/cli/registry/basic/theme-from-document.ts +10 -0
  37. package/cli/registry/basic/toggle.tsx +223 -0
  38. package/cli/registry/basic/tooltip.tsx +80 -0
  39. package/cli/registry/basic/typography.tsx +201 -0
  40. package/cli/registry/chat/browser-use-part.tsx +166 -0
  41. package/cli/registry/chat/chat-input/chat-input-folder-selector.tsx +185 -0
  42. package/cli/registry/chat/chat-input/chat-input-model-switcher.tsx +131 -0
  43. package/cli/registry/chat/chat-input/chat-input-textarea.tsx +67 -0
  44. package/cli/registry/chat/chat-input/compound.tsx +334 -0
  45. package/cli/registry/chat/chat-input/context.tsx +189 -0
  46. package/cli/registry/chat/chat-input/folder-permission-dialog.tsx +61 -0
  47. package/cli/registry/chat/chat-input/index.tsx +123 -0
  48. package/cli/registry/chat/chat-input/types.ts +77 -0
  49. package/cli/registry/chat/chat-input/useAutoResizeTextarea.ts +20 -0
  50. package/cli/registry/chat/code-block-part.tsx +151 -0
  51. package/cli/registry/chat/file-attachment.tsx +44 -0
  52. package/cli/registry/chat/file-card.tsx +68 -0
  53. package/cli/registry/chat/file-review-part.tsx +259 -0
  54. package/cli/registry/chat/folder-button.tsx +169 -0
  55. package/cli/registry/chat/generated-images-grid.tsx +56 -0
  56. package/cli/registry/chat/generation-status-bar.tsx +72 -0
  57. package/cli/registry/chat/image-attachment.tsx +166 -0
  58. package/cli/registry/chat/image-generating.tsx +281 -0
  59. package/cli/registry/chat/markdown.tsx +146 -0
  60. package/cli/registry/chat/mermaid-part.tsx +90 -0
  61. package/cli/registry/chat/permission-card.tsx +178 -0
  62. package/cli/registry/chat/plan-part.tsx +168 -0
  63. package/cli/registry/chat/question-part.tsx +70 -0
  64. package/cli/registry/chat/queue-indicator.tsx +234 -0
  65. package/cli/registry/chat/reasoning-step.tsx +358 -0
  66. package/cli/registry/chat/related-prompts.tsx +91 -0
  67. package/cli/registry/chat/request.tsx +38 -0
  68. package/cli/registry/chat/response.tsx +271 -0
  69. package/cli/registry/chat/send-button.tsx +94 -0
  70. package/cli/registry/chat/sidebar-menu.tsx +177 -0
  71. package/cli/registry/chat/streaming-markdown-block.tsx +111 -0
  72. package/cli/registry/chat/suggestion-part.tsx +165 -0
  73. package/cli/registry/chat/task-part.tsx +109 -0
  74. package/cli/registry/chat/terminal-code-block-part.tsx +69 -0
  75. package/cli/registry/chat/thinking-indicator.tsx +91 -0
  76. package/cli/registry/chat/tool-invocation-card.tsx +132 -0
  77. package/cli/registry/chat/user-question/UserQuestionCard.tsx +198 -0
  78. package/cli/registry/chat/user-question/UserQuestionFooter.tsx +66 -0
  79. package/cli/registry/chat/user-question/UserQuestionHeader.tsx +64 -0
  80. package/cli/registry/chat/user-question/index.tsx +340 -0
  81. package/cli/registry/chat/user-question/types.ts +61 -0
  82. package/cli/registry/chat/user-question/useUserQuestionKeyboard.ts +127 -0
  83. package/cli/registry/chat/user-question/useUserQuestionState.ts +165 -0
  84. package/cli/registry/chat/user-question-answer.tsx +62 -0
  85. package/cli/registry/lib/file-icon-maps.ts +150 -0
  86. package/cli/registry/lib/use-mermaid-render.ts +76 -0
  87. package/cli/registry/lib/utils.ts +6 -0
  88. package/cli/registry/meta.json +1 -0
  89. package/cli/registry/tokens/scale.css +299 -0
  90. package/cli/registry/tokens/theme.css +633 -0
  91. package/dist/_basePickBy-DnQN8w3y.js +151 -0
  92. package/dist/_basePickBy-a-kPMlkg.cjs +1 -0
  93. package/dist/_baseUniq-B-N2NQ50.js +614 -0
  94. package/dist/_baseUniq-Cc_zbSif.cjs +1 -0
  95. package/dist/arc-BQBhijZ6.js +83 -0
  96. package/dist/arc-mWQt0Yph.cjs +1 -0
  97. package/dist/architectureDiagram-VXUJARFQ-BMZEucno.cjs +36 -0
  98. package/dist/architectureDiagram-VXUJARFQ-DTdjD3Bp.js +4661 -0
  99. package/dist/blockDiagram-VD42YOAC-CzHn0yob.js +2256 -0
  100. package/dist/blockDiagram-VD42YOAC-DDxdHAlz.cjs +122 -0
  101. package/dist/c4Diagram-YG6GDRKO-4Gz0I4gj.cjs +10 -0
  102. package/dist/c4Diagram-YG6GDRKO-BIy--yVN.js +1580 -0
  103. package/dist/channel-BQn0o8bs.js +5 -0
  104. package/dist/channel-DaN7XniJ.cjs +1 -0
  105. package/dist/chunk-4BX2VUAB-BlQFTQqz.cjs +1 -0
  106. package/dist/chunk-4BX2VUAB-Czitj3Kc.js +8 -0
  107. package/dist/chunk-55IACEB6-DXacNZbO.js +8 -0
  108. package/dist/chunk-55IACEB6-DnDxpye9.cjs +1 -0
  109. package/dist/chunk-B4BG7PRW-CBdN0q_V.js +1375 -0
  110. package/dist/chunk-B4BG7PRW-DbGvUkGO.cjs +165 -0
  111. package/dist/chunk-DI55MBZ5-D1YJMs6x.cjs +220 -0
  112. package/dist/chunk-DI55MBZ5-NCQTvayw.js +1370 -0
  113. package/dist/chunk-FMBD7UC4-CsGMbrtr.js +19 -0
  114. package/dist/chunk-FMBD7UC4-Di7cUUh5.cjs +15 -0
  115. package/dist/chunk-QN33PNHL-0j5LC8Lm.cjs +1 -0
  116. package/dist/chunk-QN33PNHL-3GERZBRm.js +19 -0
  117. package/dist/chunk-QZHKN3VN-AVEY9ImQ.js +15 -0
  118. package/dist/chunk-QZHKN3VN-s8Z0a8mc.cjs +1 -0
  119. package/dist/chunk-TZMSLE5B-CAf87HPt.cjs +1 -0
  120. package/dist/chunk-TZMSLE5B-sbiflal0.js +64 -0
  121. package/dist/classDiagram-2ON5EDUG-Ct9JLIN2.cjs +1 -0
  122. package/dist/classDiagram-2ON5EDUG-Dzfrft3a.js +16 -0
  123. package/dist/classDiagram-v2-WZHVMYZB-Ct9JLIN2.cjs +1 -0
  124. package/dist/classDiagram-v2-WZHVMYZB-Dzfrft3a.js +16 -0
  125. package/dist/clone-Cde_NQ8V.js +8 -0
  126. package/dist/clone-DCNjWuM2.cjs +1 -0
  127. package/dist/cose-bilkent-S5V4N54A-0uLijMro.cjs +1 -0
  128. package/dist/cose-bilkent-S5V4N54A-Bb08N431.js +2608 -0
  129. package/dist/cytoscape.esm-CNUX3VTg.cjs +321 -0
  130. package/dist/cytoscape.esm-Cvf3sx9F.js +18704 -0
  131. package/dist/dagre-6UL2VRFP-CY_Wz5Zd.js +444 -0
  132. package/dist/dagre-6UL2VRFP-Dxe7_qZc.cjs +4 -0
  133. package/dist/defaultLocale-BgPVtth8.js +171 -0
  134. package/dist/defaultLocale-C4wbwF1n.cjs +1 -0
  135. package/dist/diagram-PSM6KHXK-D2bdb7MT.js +531 -0
  136. package/dist/diagram-PSM6KHXK-YF69SUjY.cjs +24 -0
  137. package/dist/diagram-QEK2KX5R-BpUSoh0-.js +217 -0
  138. package/dist/diagram-QEK2KX5R-DZPGteon.cjs +43 -0
  139. package/dist/diagram-S2PKOQOG-ht-zdvFG.cjs +24 -0
  140. package/dist/diagram-S2PKOQOG-zFeLJ50Z.js +142 -0
  141. package/dist/erDiagram-Q2GNP2WA-B38iJ6ts.js +841 -0
  142. package/dist/erDiagram-Q2GNP2WA-RgS80DDU.cjs +60 -0
  143. package/dist/flowDiagram-NV44I4VS-BHilOs2p.cjs +162 -0
  144. package/dist/flowDiagram-NV44I4VS-BrBJcoce.js +1620 -0
  145. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  146. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  147. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  148. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  149. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  150. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  151. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  152. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  153. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  154. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  155. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  156. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  157. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  158. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  159. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  160. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  161. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  162. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  163. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  164. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  165. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  166. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  167. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  168. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  169. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  170. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  171. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  172. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  173. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  174. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  175. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  176. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  177. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  178. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  179. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  180. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  181. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  182. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  183. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  184. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  185. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  186. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  187. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  188. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  189. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  190. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  191. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  192. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  193. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  194. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  195. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  196. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  197. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  198. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  199. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  200. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  201. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  202. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  203. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  204. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  205. package/dist/ganttDiagram-JELNMOA3-pZiJeFio.cjs +267 -0
  206. package/dist/ganttDiagram-JELNMOA3-tw6FhkWJ.js +2670 -0
  207. package/dist/gitGraphDiagram-V2S2FVAM-BWn5uIK5.js +699 -0
  208. package/dist/gitGraphDiagram-V2S2FVAM-DKKeG-9R.cjs +65 -0
  209. package/dist/graph-DIbblrZP.cjs +1 -0
  210. package/dist/graph-DPcK91G3.js +247 -0
  211. package/dist/infoDiagram-HS3SLOUP-B8gwwhct.cjs +2 -0
  212. package/dist/infoDiagram-HS3SLOUP-D47PNcP_.js +24 -0
  213. package/dist/init-CHZsXQcr.cjs +1 -0
  214. package/dist/init-DjUOC4st.js +16 -0
  215. package/dist/journeyDiagram-XKPGCS4Q-BG3cfhyU.js +834 -0
  216. package/dist/journeyDiagram-XKPGCS4Q-D8DVLJof.cjs +139 -0
  217. package/dist/kanban-definition-3W4ZIXB7-4OCnEouP.cjs +89 -0
  218. package/dist/kanban-definition-3W4ZIXB7-CWi_ssF9.js +719 -0
  219. package/dist/katex.css +1 -0
  220. package/dist/layout-Byuh8f-J.cjs +1 -0
  221. package/dist/layout-CdLdvj1j.js +1335 -0
  222. package/dist/linear-C2Q_PI9B.js +259 -0
  223. package/dist/linear-C69aPBW1.cjs +1 -0
  224. package/dist/mermaid.core-DBwAx_jp.cjs +249 -0
  225. package/dist/mermaid.core-gFR0XUlD.js +15300 -0
  226. package/dist/mindmap-definition-VGOIOE7T-8P7obVV4.cjs +68 -0
  227. package/dist/mindmap-definition-VGOIOE7T-DnOa7WJ9.js +784 -0
  228. package/dist/ordinal-B6-f3MAq.js +61 -0
  229. package/dist/ordinal-CagbB1m8.cjs +1 -0
  230. package/dist/pieDiagram-ADFJNKIX-5NAlvhMo.js +161 -0
  231. package/dist/pieDiagram-ADFJNKIX-CQBG4yR9.cjs +30 -0
  232. package/dist/qoder-design.css +2 -0
  233. package/dist/quadrantDiagram-AYHSOK5B-Oe4y7RZ0.cjs +7 -0
  234. package/dist/quadrantDiagram-AYHSOK5B-rh2DPEP1.js +1022 -0
  235. package/dist/registry/basic/alert-dialog.d.ts +40 -0
  236. package/dist/registry/basic/avatar.d.ts +30 -0
  237. package/dist/registry/basic/button.d.ts +16 -0
  238. package/dist/registry/basic/collapse.d.ts +22 -0
  239. package/dist/registry/basic/collapsible-card.d.ts +34 -0
  240. package/dist/registry/basic/collapsible.d.ts +15 -0
  241. package/dist/registry/basic/dropdown-menu.d.ts +52 -0
  242. package/dist/registry/basic/icon-button.d.ts +12 -0
  243. package/dist/registry/basic/icons-inline.d.ts +51 -0
  244. package/dist/registry/basic/kbd.d.ts +23 -0
  245. package/dist/registry/basic/option-list.d.ts +16 -0
  246. package/dist/registry/basic/pagination.d.ts +33 -0
  247. package/dist/registry/basic/progress.d.ts +18 -0
  248. package/dist/registry/basic/radio-group.d.ts +25 -0
  249. package/dist/registry/basic/resizable.d.ts +318 -0
  250. package/dist/registry/basic/scrollbar.d.ts +12 -0
  251. package/dist/registry/basic/select.d.ts +35 -0
  252. package/dist/registry/basic/skeleton.d.ts +10 -0
  253. package/dist/registry/basic/slider.d.ts +16 -0
  254. package/dist/registry/basic/sonner.d.ts +23 -0
  255. package/dist/registry/basic/spinner.d.ts +5 -0
  256. package/dist/registry/basic/switch.d.ts +20 -0
  257. package/dist/registry/basic/table.d.ts +18 -0
  258. package/dist/registry/basic/tabs.d.ts +29 -0
  259. package/dist/registry/basic/tag.d.ts +23 -0
  260. package/dist/registry/basic/theme-from-document.d.ts +10 -0
  261. package/dist/registry/basic/toggle.d.ts +29 -0
  262. package/dist/registry/basic/tooltip.d.ts +34 -0
  263. package/dist/registry/basic/typography.d.ts +76 -0
  264. package/dist/registry/chat/browser-use-part.d.ts +28 -0
  265. package/dist/registry/chat/chat-input/chat-input-folder-selector.d.ts +22 -0
  266. package/dist/registry/chat/chat-input/chat-input-model-switcher.d.ts +12 -0
  267. package/dist/registry/chat/chat-input/chat-input-textarea.d.ts +9 -0
  268. package/dist/registry/chat/chat-input/compound.d.ts +97 -0
  269. package/dist/registry/chat/chat-input/context.d.ts +64 -0
  270. package/dist/registry/chat/chat-input/folder-permission-dialog.d.ts +11 -0
  271. package/dist/registry/chat/chat-input/index.d.ts +34 -0
  272. package/dist/registry/chat/chat-input/types.d.ts +79 -0
  273. package/dist/registry/chat/chat-input/useAutoResizeTextarea.d.ts +7 -0
  274. package/dist/registry/chat/code-block-part.d.ts +23 -0
  275. package/dist/registry/chat/file-attachment.d.ts +19 -0
  276. package/dist/registry/chat/file-card.d.ts +10 -0
  277. package/dist/registry/chat/file-review-part.d.ts +30 -0
  278. package/dist/registry/chat/folder-button.d.ts +20 -0
  279. package/dist/registry/chat/generated-images-grid.d.ts +15 -0
  280. package/dist/registry/chat/generation-status-bar.d.ts +19 -0
  281. package/dist/registry/chat/image-attachment.d.ts +19 -0
  282. package/dist/registry/chat/image-generating.d.ts +15 -0
  283. package/dist/registry/chat/markdown.d.ts +8 -0
  284. package/dist/registry/chat/mermaid-part.d.ts +17 -0
  285. package/dist/registry/chat/permission-card.d.ts +24 -0
  286. package/dist/registry/chat/plan-part.d.ts +30 -0
  287. package/dist/registry/chat/question-part.d.ts +24 -0
  288. package/dist/registry/chat/queue-indicator.d.ts +27 -0
  289. package/dist/registry/chat/reasoning-step.d.ts +35 -0
  290. package/dist/registry/chat/related-prompts.d.ts +23 -0
  291. package/dist/registry/chat/request.d.ts +6 -0
  292. package/dist/registry/chat/response.d.ts +28 -0
  293. package/dist/registry/chat/send-button.d.ts +17 -0
  294. package/dist/registry/chat/sidebar-menu.d.ts +23 -0
  295. package/dist/registry/chat/streaming-markdown-block.d.ts +8 -0
  296. package/dist/registry/chat/suggestion-part.d.ts +28 -0
  297. package/dist/registry/chat/task-part.d.ts +28 -0
  298. package/dist/registry/chat/terminal-code-block-part.d.ts +18 -0
  299. package/dist/registry/chat/thinking-indicator.d.ts +14 -0
  300. package/dist/registry/chat/tool-invocation-card.d.ts +20 -0
  301. package/dist/registry/chat/user-question/UserQuestionCard.d.ts +30 -0
  302. package/dist/registry/chat/user-question/UserQuestionFooter.d.ts +18 -0
  303. package/dist/registry/chat/user-question/UserQuestionHeader.d.ts +20 -0
  304. package/dist/registry/chat/user-question/index.d.ts +7 -0
  305. package/dist/registry/chat/user-question/types.d.ts +52 -0
  306. package/dist/registry/chat/user-question/useUserQuestionKeyboard.d.ts +18 -0
  307. package/dist/registry/chat/user-question/useUserQuestionState.d.ts +26 -0
  308. package/dist/registry/chat/user-question-answer.d.ts +13 -0
  309. package/dist/registry/lib/file-icon-maps.d.ts +20 -0
  310. package/dist/registry/lib/use-mermaid-render.d.ts +5 -0
  311. package/dist/registry/lib/utils.d.ts +11 -0
  312. package/dist/requirementDiagram-UZGBJVZJ-DcWaCuXr.js +850 -0
  313. package/dist/requirementDiagram-UZGBJVZJ-gfdlrFiq.cjs +64 -0
  314. package/dist/sankeyDiagram-TZEHDZUN-CQIKFwD0.js +810 -0
  315. package/dist/sankeyDiagram-TZEHDZUN-DvPtzQvC.cjs +10 -0
  316. package/dist/scale.css +307 -0
  317. package/dist/sequenceDiagram-WL72ISMW-BNrsMagL.cjs +145 -0
  318. package/dist/sequenceDiagram-WL72ISMW-iCX3ckKx.js +2511 -0
  319. package/dist/spark-design.cjs.js +265 -0
  320. package/dist/spark-design.es.js +13207 -0
  321. package/dist/src/components/chat/BrowserUsePart/index.d.ts +7 -0
  322. package/dist/src/components/chat/ChatInput/index.d.ts +29 -0
  323. package/dist/src/components/chat/CodeBlockPart/index.d.ts +7 -0
  324. package/dist/src/components/chat/CollapsibleCard/index.d.ts +7 -0
  325. package/dist/src/components/chat/FileAttachment/index.d.ts +3 -0
  326. package/dist/src/components/chat/FileCard/index.d.ts +3 -0
  327. package/dist/src/components/chat/FileReviewPart/index.d.ts +7 -0
  328. package/dist/src/components/chat/FolderButton/index.d.ts +5 -0
  329. package/dist/src/components/chat/GeneratedImagesGrid/index.d.ts +7 -0
  330. package/dist/src/components/chat/GenerationStatusBar/index.d.ts +7 -0
  331. package/dist/src/components/chat/ImageAttachment/index.d.ts +3 -0
  332. package/dist/src/components/chat/ImageGenerating/index.d.ts +6 -0
  333. package/dist/src/components/chat/Markdown/demo-content.d.ts +1 -0
  334. package/dist/src/components/chat/Markdown/index.d.ts +7 -0
  335. package/dist/src/components/chat/MermaidPart/index.d.ts +6 -0
  336. package/dist/src/components/chat/PermissionCard/index.d.ts +4 -0
  337. package/dist/src/components/chat/PlanPart/index.d.ts +6 -0
  338. package/dist/src/components/chat/QuestionPart/index.d.ts +6 -0
  339. package/dist/src/components/chat/QueueIndicator/index.d.ts +4 -0
  340. package/dist/src/components/chat/ReasoningStep/index.d.ts +7 -0
  341. package/dist/src/components/chat/RelatedPrompts/index.d.ts +6 -0
  342. package/dist/src/components/chat/Request/index.d.ts +7 -0
  343. package/dist/src/components/chat/Response/StreamingMarkdownBlock.d.ts +6 -0
  344. package/dist/src/components/chat/Response/index.d.ts +6 -0
  345. package/dist/src/components/chat/SendButton/index.d.ts +5 -0
  346. package/dist/src/components/chat/SidebarMenu/index.d.ts +4 -0
  347. package/dist/src/components/chat/SuggestionPart/index.d.ts +6 -0
  348. package/dist/src/components/chat/TaskPart/index.d.ts +7 -0
  349. package/dist/src/components/chat/TerminalCodeBlockPart/index.d.ts +6 -0
  350. package/dist/src/components/chat/ThinkingIndicator/index.d.ts +6 -0
  351. package/dist/src/components/chat/ToolInvocationCard/index.d.ts +4 -0
  352. package/dist/src/components/chat/UserQuestion/index.d.ts +5 -0
  353. package/dist/src/components/chat/UserQuestionAnswer/index.d.ts +3 -0
  354. package/dist/src/components/foundation/AlertDialog/index.d.ts +20 -0
  355. package/dist/src/components/foundation/Avatar/index.d.ts +7 -0
  356. package/dist/src/components/foundation/Button/index.d.ts +7 -0
  357. package/dist/src/components/foundation/Collapse/index.d.ts +15 -0
  358. package/dist/src/components/foundation/Collapsible/index.d.ts +7 -0
  359. package/dist/src/components/foundation/CollapsibleSection/index.d.ts +43 -0
  360. package/dist/src/components/foundation/DropdownMenu/index.d.ts +19 -0
  361. package/dist/src/components/foundation/EllipsisText/index.d.ts +53 -0
  362. package/dist/src/components/foundation/IconButton/index.d.ts +7 -0
  363. package/dist/src/components/foundation/Kbd/index.d.ts +7 -0
  364. package/dist/src/components/foundation/OptionList/index.d.ts +7 -0
  365. package/dist/src/components/foundation/Pagination/index.d.ts +7 -0
  366. package/dist/src/components/foundation/Progress/index.d.ts +7 -0
  367. package/dist/src/components/foundation/RadioGroup/index.d.ts +7 -0
  368. package/dist/src/components/foundation/Resizable/index.d.ts +7 -0
  369. package/dist/src/components/foundation/Scrollbar/index.d.ts +7 -0
  370. package/dist/src/components/foundation/Select/index.d.ts +17 -0
  371. package/dist/src/components/foundation/Skeleton/index.d.ts +7 -0
  372. package/dist/src/components/foundation/Slider/index.d.ts +7 -0
  373. package/dist/src/components/foundation/Spinner/index.d.ts +7 -0
  374. package/dist/src/components/foundation/Switch/index.d.ts +38 -0
  375. package/dist/src/components/foundation/Table/index.d.ts +7 -0
  376. package/dist/src/components/foundation/Tabs/index.d.ts +7 -0
  377. package/dist/src/components/foundation/Tag/index.d.ts +10 -0
  378. package/dist/src/components/foundation/Toast/index.d.ts +12 -0
  379. package/dist/src/components/foundation/Toggle/index.d.ts +7 -0
  380. package/dist/src/components/foundation/Tooltip/index.d.ts +21 -0
  381. package/dist/src/components/foundation/Typography/index.d.ts +7 -0
  382. package/dist/src/components/index.d.ts +136 -0
  383. package/dist/src/icons/context.d.ts +26 -0
  384. package/dist/src/icons/types.d.ts +18 -0
  385. package/dist/src/lib/ThemeStyleContext.d.ts +21 -0
  386. package/dist/src/lib/file-icon.d.ts +16 -0
  387. package/dist/src/lib/i18n.d.ts +12 -0
  388. package/dist/src/lib/index.d.ts +10 -0
  389. package/dist/src/lib/motion.d.ts +22 -0
  390. package/dist/src/lib/utils.d.ts +11 -0
  391. package/dist/stateDiagram-FKZM4ZOC-DBvJ_eeL.cjs +1 -0
  392. package/dist/stateDiagram-FKZM4ZOC-ZVsJlaHJ.js +263 -0
  393. package/dist/stateDiagram-v2-4FDKWEC3-CB_nTHcE.js +16 -0
  394. package/dist/stateDiagram-v2-4FDKWEC3-Xkx17v6T.cjs +1 -0
  395. package/dist/theme.css +804 -0
  396. package/dist/timeline-definition-IT6M3QCI-BmGkYQiz.cjs +61 -0
  397. package/dist/timeline-definition-IT6M3QCI-Ck8zTt6w.js +795 -0
  398. package/dist/treemap-GDKQZRPO-B9sfERx8.js +17922 -0
  399. package/dist/treemap-GDKQZRPO-BVfJRs0Z.cjs +160 -0
  400. package/dist/xychartDiagram-PRI3JC2R-By_S8NzN.js +1340 -0
  401. package/dist/xychartDiagram-PRI3JC2R-CNfDrGxM.cjs +7 -0
  402. package/package.json +111 -9
  403. package/index.js +0 -5
@@ -0,0 +1,117 @@
1
+ import { forwardRef } from 'react'
2
+ import type { HTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react'
3
+ import { cn } from '@/lib/utils'
4
+
5
+ const Table = forwardRef<HTMLTableElement, HTMLAttributes<HTMLTableElement>>(
6
+ ({ className, ...props }, ref) => (
7
+ <div className="relative w-full overflow-auto scrollbar-auto">
8
+ <table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />
9
+ </div>
10
+ )
11
+ )
12
+ Table.displayName = 'Table'
13
+
14
+ const TableHeader = forwardRef<
15
+ HTMLTableSectionElement,
16
+ HTMLAttributes<HTMLTableSectionElement>
17
+ >(({ className, ...props }, ref) => (
18
+ <thead
19
+ ref={ref}
20
+ className={cn('[&_tr]:border-b border-border-tertiary', className)}
21
+ {...props}
22
+ />
23
+ ))
24
+ TableHeader.displayName = 'TableHeader'
25
+
26
+ const TableBody = forwardRef<
27
+ HTMLTableSectionElement,
28
+ HTMLAttributes<HTMLTableSectionElement>
29
+ >(({ className, ...props }, ref) => (
30
+ <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />
31
+ ))
32
+ TableBody.displayName = 'TableBody'
33
+
34
+ const TableFooter = forwardRef<
35
+ HTMLTableSectionElement,
36
+ HTMLAttributes<HTMLTableSectionElement>
37
+ >(({ className, ...props }, ref) => (
38
+ <tfoot
39
+ ref={ref}
40
+ className={cn(
41
+ 'border-t border-border-tertiary bg-fill-tertiary font-medium [&>tr]:last:border-b-0',
42
+ className
43
+ )}
44
+ {...props}
45
+ />
46
+ ))
47
+ TableFooter.displayName = 'TableFooter'
48
+
49
+ const TableRow = forwardRef<
50
+ HTMLTableRowElement,
51
+ HTMLAttributes<HTMLTableRowElement>
52
+ >(({ className, ...props }, ref) => (
53
+ <tr
54
+ ref={ref}
55
+ className={cn(
56
+ 'border-b border-border-tertiary transition-colors hover:bg-fill-tertiary data-[state=selected]:bg-fill-tertiary',
57
+ className
58
+ )}
59
+ {...props}
60
+ />
61
+ ))
62
+ TableRow.displayName = 'TableRow'
63
+
64
+ const TableHead = forwardRef<
65
+ HTMLTableCellElement,
66
+ ThHTMLAttributes<HTMLTableCellElement>
67
+ >(({ className, ...props }, ref) => (
68
+ <th
69
+ ref={ref}
70
+ className={cn(
71
+ 'h-10 px-4 text-left align-middle font-medium text-text-secondary [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-0.5',
72
+ className
73
+ )}
74
+ {...props}
75
+ />
76
+ ))
77
+ TableHead.displayName = 'TableHead'
78
+
79
+ const TableCell = forwardRef<
80
+ HTMLTableCellElement,
81
+ TdHTMLAttributes<HTMLTableCellElement>
82
+ >(({ className, ...props }, ref) => (
83
+ <td
84
+ ref={ref}
85
+ className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-0.5', className)}
86
+ {...props}
87
+ />
88
+ ))
89
+ TableCell.displayName = 'TableCell'
90
+
91
+ const TableCaption = forwardRef<
92
+ HTMLTableCaptionElement,
93
+ HTMLAttributes<HTMLTableCaptionElement>
94
+ >(({ className, ...props }, ref) => (
95
+ <caption ref={ref} className={cn('mt-4 text-sm text-text-secondary', className)} {...props} />
96
+ ))
97
+ TableCaption.displayName = 'TableCaption'
98
+
99
+ export type TableProps = HTMLAttributes<HTMLTableElement>
100
+ export type TableHeaderProps = HTMLAttributes<HTMLTableSectionElement>
101
+ export type TableBodyProps = HTMLAttributes<HTMLTableSectionElement>
102
+ export type TableFooterProps = HTMLAttributes<HTMLTableSectionElement>
103
+ export type TableRowProps = HTMLAttributes<HTMLTableRowElement>
104
+ export type TableHeadProps = ThHTMLAttributes<HTMLTableCellElement>
105
+ export type TableCellProps = TdHTMLAttributes<HTMLTableCellElement>
106
+ export type TableCaptionProps = HTMLAttributes<HTMLTableCaptionElement>
107
+
108
+ export {
109
+ Table,
110
+ TableHeader,
111
+ TableBody,
112
+ TableFooter,
113
+ TableHead,
114
+ TableRow,
115
+ TableCell,
116
+ TableCaption,
117
+ }
@@ -0,0 +1,85 @@
1
+ import * as React from 'react'
2
+ import * as TabsPrimitive from '@radix-ui/react-tabs'
3
+ import { cva, type VariantProps } from 'class-variance-authority'
4
+ import { cn } from '@/lib/utils'
5
+
6
+ const Tabs = TabsPrimitive.Root
7
+
8
+ const tabsListVariants = cva(
9
+ 'inline-flex items-center justify-center text-text-secondary data-[orientation=horizontal]:flex-row data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch',
10
+ {
11
+ variants: {
12
+ variant: {
13
+ default: 'rounded-lg bg-fill-secondary p-0.5 gap-0.5',
14
+ line: 'gap-6 border-b border-border-tertiary bg-transparent p-0',
15
+ },
16
+ },
17
+ defaultVariants: { variant: 'default' },
18
+ }
19
+ )
20
+
21
+ const tabsTriggerVariants = cva(
22
+ 'inline-flex items-center justify-center gap-1.5 whitespace-nowrap text-sm font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-primary-border focus-visible:ring-offset-2 focus-visible:ring-offset-bg-base disabled:pointer-events-none disabled:opacity-50 data-[state=active]:text-text cursor-pointer data-[orientation=vertical]:justify-start data-[orientation=vertical]:rounded-md data-[orientation=vertical]:px-3 data-[orientation=vertical]:py-2',
23
+ {
24
+ variants: {
25
+ variant: {
26
+ default: 'rounded-md px-3 py-1.5 data-[state=active]:bg-bg-container data-[state=active]:shadow-sm',
27
+ line: 'rounded-none border-b-2 border-transparent px-1 pb-2 pt-0 data-[state=active]:border-primary data-[state=active]:shadow-none',
28
+ },
29
+ },
30
+ defaultVariants: { variant: 'default' },
31
+ }
32
+ )
33
+
34
+ export interface TabsListProps
35
+ extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,
36
+ VariantProps<typeof tabsListVariants> {}
37
+
38
+ export interface TabsTriggerProps
39
+ extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,
40
+ VariantProps<typeof tabsTriggerVariants> {}
41
+
42
+ const TabsList = React.forwardRef<
43
+ React.ElementRef<typeof TabsPrimitive.List>,
44
+ TabsListProps
45
+ >(({ className, variant = 'default', ...props }, ref) => (
46
+ <TabsPrimitive.List
47
+ ref={ref}
48
+ className={cn(tabsListVariants({ variant }), className)}
49
+ {...props}
50
+ />
51
+ ))
52
+ TabsList.displayName = TabsPrimitive.List.displayName
53
+
54
+ const TabsTrigger = React.forwardRef<
55
+ React.ElementRef<typeof TabsPrimitive.Trigger>,
56
+ TabsTriggerProps
57
+ >(({ className, variant = 'default', ...props }, ref) => (
58
+ <TabsPrimitive.Trigger
59
+ ref={ref}
60
+ className={cn(tabsTriggerVariants({ variant }), className)}
61
+ {...props}
62
+ />
63
+ ))
64
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName
65
+
66
+ const TabsContent = React.forwardRef<
67
+ React.ElementRef<typeof TabsPrimitive.Content>,
68
+ React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>
69
+ >(({ className, ...props }, ref) => (
70
+ <TabsPrimitive.Content
71
+ ref={ref}
72
+ className={cn(
73
+ 'mt-2 outline-none ring-0 data-[state=inactive]:hidden',
74
+ 'data-[orientation=vertical]:mt-0 data-[orientation=vertical]:ml-2',
75
+ className
76
+ )}
77
+ {...props}
78
+ />
79
+ ))
80
+ TabsContent.displayName = TabsPrimitive.Content.displayName
81
+
82
+ export type TabsContentProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>
83
+ export type TabsProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root>
84
+
85
+ export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants, tabsTriggerVariants }
@@ -0,0 +1,161 @@
1
+ import * as React from 'react'
2
+ import { motion } from 'framer-motion'
3
+ import { cva, type VariantProps } from 'class-variance-authority'
4
+ import { cn } from '@/lib/utils'
5
+ import { CloseLargeLine } from './icons-inline'
6
+
7
+ const tagVariants = cva(
8
+ 'inline-flex items-center justify-center gap-1.5 rounded-md border px-2.5 py-0.5 text-xs font-medium transition-colors whitespace-nowrap cursor-pointer group',
9
+ {
10
+ variants: {
11
+ appearance: { filled: '', outline: 'bg-transparent' },
12
+ color: {
13
+ primary: '',
14
+ success: '',
15
+ error: '',
16
+ warning: '',
17
+ info: '',
18
+ link: '',
19
+ pink: '',
20
+ purple: '',
21
+ yellow: '',
22
+ orange: '',
23
+ teal: '',
24
+ blue: '',
25
+ mauve: '',
26
+ slate: '',
27
+ lavender: '',
28
+ sage: '',
29
+ },
30
+ },
31
+ compoundVariants: [
32
+ { appearance: 'filled', color: 'primary', className: 'border-transparent bg-primary text-text-on-primary hover:bg-primary-hover' },
33
+ { appearance: 'filled', color: 'success', className: 'border-transparent bg-success-bg text-success border-success-border hover:bg-success-bg-hover' },
34
+ { appearance: 'filled', color: 'error', className: 'border-transparent bg-error-bg text-error border-error-border hover:bg-error-bg-hover' },
35
+ { appearance: 'filled', color: 'warning', className: 'border-transparent bg-warning-bg text-warning border-warning-border hover:bg-warning-bg-hover' },
36
+ { appearance: 'filled', color: 'info', className: 'border-transparent bg-info-bg text-info border-info-border hover:bg-info-bg-hover' },
37
+ { appearance: 'filled', color: 'link', className: 'border-transparent bg-transparent text-link underline-offset-4 hover:underline hover:text-link' },
38
+ { appearance: 'filled', color: 'pink', className: 'border-transparent bg-pink-bg text-pink hover:bg-pink-bg-hover' },
39
+ { appearance: 'filled', color: 'purple', className: 'border-transparent bg-purple-bg text-purple hover:bg-purple-bg-hover' },
40
+ { appearance: 'filled', color: 'yellow', className: 'border-transparent bg-yellow-bg text-yellow hover:bg-yellow-bg-hover' },
41
+ { appearance: 'filled', color: 'orange', className: 'border-transparent bg-orange-bg text-orange hover:bg-orange-bg-hover' },
42
+ { appearance: 'filled', color: 'teal', className: 'border-transparent bg-teal-bg text-teal hover:bg-teal-bg-hover' },
43
+ { appearance: 'filled', color: 'blue', className: 'border-transparent bg-blue-bg text-blue hover:bg-blue-bg-hover' },
44
+ { appearance: 'filled', color: 'mauve', className: 'border-transparent bg-mauve-bg text-mauve hover:bg-mauve-bg-hover' },
45
+ { appearance: 'filled', color: 'slate', className: 'border-transparent bg-slate-bg text-slate hover:bg-slate-bg-hover' },
46
+ { appearance: 'filled', color: 'lavender', className: 'border-transparent bg-lavender-bg text-lavender hover:bg-lavender-bg-hover' },
47
+ { appearance: 'filled', color: 'sage', className: 'border-transparent bg-sage-bg text-sage hover:bg-sage-bg-hover' },
48
+ { appearance: 'outline', color: 'primary', className: 'border-primary-border text-primary hover:bg-primary-bg' },
49
+ { appearance: 'outline', color: 'success', className: 'border-success-border text-success hover:bg-success-bg' },
50
+ { appearance: 'outline', color: 'error', className: 'border-error-border text-error hover:bg-error-bg' },
51
+ { appearance: 'outline', color: 'warning', className: 'border-warning-border text-warning hover:bg-warning-bg' },
52
+ { appearance: 'outline', color: 'info', className: 'border-info-border text-info hover:bg-info-bg' },
53
+ { appearance: 'outline', color: 'link', className: 'border-transparent text-link underline-offset-4 hover:underline hover:text-link' },
54
+ { appearance: 'outline', color: 'pink', className: 'border-pink text-pink hover:bg-pink-bg' },
55
+ { appearance: 'outline', color: 'purple', className: 'border-purple text-purple hover:bg-purple-bg' },
56
+ { appearance: 'outline', color: 'yellow', className: 'border-yellow text-yellow hover:bg-yellow-bg' },
57
+ { appearance: 'outline', color: 'orange', className: 'border-orange text-orange hover:bg-orange-bg' },
58
+ { appearance: 'outline', color: 'teal', className: 'border-teal text-teal hover:bg-teal-bg' },
59
+ { appearance: 'outline', color: 'blue', className: 'border-blue text-blue hover:bg-blue-bg' },
60
+ { appearance: 'outline', color: 'mauve', className: 'border-mauve text-mauve hover:bg-mauve-bg' },
61
+ { appearance: 'outline', color: 'slate', className: 'border-slate text-slate hover:bg-slate-bg' },
62
+ { appearance: 'outline', color: 'lavender', className: 'border-lavender text-lavender hover:bg-lavender-bg' },
63
+ { appearance: 'outline', color: 'sage', className: 'border-sage text-sage hover:bg-sage-bg' },
64
+ ],
65
+ defaultVariants: { appearance: 'filled', color: 'primary' },
66
+ }
67
+ )
68
+
69
+ export interface TagProps
70
+ extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'>,
71
+ VariantProps<typeof tagVariants> {
72
+ closable?: boolean
73
+ onClose?: (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => void
74
+ closeAriaLabel?: string
75
+ closeIcon?: React.ReactNode
76
+ }
77
+
78
+ const Tag = React.forwardRef<HTMLSpanElement, TagProps>(
79
+ (
80
+ {
81
+ className,
82
+ appearance = 'filled',
83
+ color = 'primary',
84
+ closable = false,
85
+ onClose,
86
+ closeAriaLabel = 'Close tag',
87
+ closeIcon,
88
+ children,
89
+ onMouseEnter: onMouseEnterProp,
90
+ onMouseLeave: onMouseLeaveProp,
91
+ ...props
92
+ },
93
+ ref
94
+ ) => {
95
+ const [isHovered, setIsHovered] = React.useState(false)
96
+ const showClose = closable && typeof onClose === 'function'
97
+
98
+ const handleMouseEnter = (e: React.MouseEvent<HTMLSpanElement>) => {
99
+ if (showClose) setIsHovered(true)
100
+ onMouseEnterProp?.(e)
101
+ }
102
+ const handleMouseLeave = (e: React.MouseEvent<HTMLSpanElement>) => {
103
+ if (showClose) setIsHovered(false)
104
+ onMouseLeaveProp?.(e)
105
+ }
106
+ const handleCloseClick = (e: React.MouseEvent<HTMLButtonElement>) => {
107
+ e.preventDefault()
108
+ e.stopPropagation()
109
+ onClose?.(e)
110
+ }
111
+ const handleCloseKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {
112
+ if (e.key !== 'Enter' && e.key !== ' ') return
113
+ e.preventDefault()
114
+ e.stopPropagation()
115
+ onClose?.(e)
116
+ }
117
+
118
+ return (
119
+ <span
120
+ ref={ref}
121
+ className={cn(
122
+ tagVariants({ appearance, color }),
123
+ showClose && 'gap-0 pr-1.5',
124
+ className
125
+ )}
126
+ onMouseEnter={handleMouseEnter}
127
+ onMouseLeave={handleMouseLeave}
128
+ {...props}
129
+ >
130
+ {children}
131
+ {showClose && (
132
+ <motion.div
133
+ aria-hidden
134
+ initial={false}
135
+ animate={{
136
+ width: isHovered ? 16 : 0,
137
+ marginLeft: isHovered ? 2 : 0,
138
+ opacity: isHovered ? 1 : 0,
139
+ }}
140
+ transition={{ duration: 0.2, ease: [0.4, 0, 0.2, 1] }}
141
+ className="flex min-w-0 shrink-0 overflow-hidden"
142
+ style={{ pointerEvents: isHovered ? 'auto' : 'none' }}
143
+ >
144
+ <button
145
+ type="button"
146
+ aria-label={closeAriaLabel}
147
+ className="inline-flex h-4 w-4 cursor-pointer items-center justify-center rounded-sm text-current/80 hover:text-current focus:outline-none"
148
+ onClick={handleCloseClick}
149
+ onKeyDown={handleCloseKeyDown}
150
+ >
151
+ {closeIcon ?? <CloseLargeLine className="h-3 w-3" />}
152
+ </button>
153
+ </motion.div>
154
+ )}
155
+ </span>
156
+ )
157
+ }
158
+ )
159
+ Tag.displayName = 'Tag'
160
+
161
+ export { Tag, tagVariants }
@@ -0,0 +1,10 @@
1
+ export function getThemeFromDocument(): Record<string, string> {
2
+ if (typeof document === 'undefined') return {}
3
+ const el = document.documentElement
4
+ const out: Record<string, string> = {}
5
+ const theme = el.getAttribute('data-theme')
6
+ const style = el.getAttribute('data-style')
7
+ if (theme) out['data-theme'] = theme
8
+ if (style) out['data-style'] = style
9
+ return out
10
+ }
@@ -0,0 +1,223 @@
1
+ import { createContext, forwardRef, useContext } from 'react'
2
+ import type { ComponentPropsWithoutRef, ReactNode } from 'react'
3
+ import * as TogglePrimitive from '@radix-ui/react-toggle'
4
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group'
5
+ import { cva, type VariantProps } from 'class-variance-authority'
6
+ import { cn } from '@/lib/utils'
7
+
8
+ const toggleVariants = cva(
9
+ 'inline-flex items-center justify-center gap-1.5 font-medium transition-colors duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-border focus-visible:ring-offset-2 focus-visible:ring-offset-bg-base disabled:pointer-events-none disabled:opacity-50 cursor-pointer data-[state=on]:bg-fill data-[state=on]:text-text',
10
+ {
11
+ variants: {
12
+ variant: {
13
+ default:
14
+ 'bg-transparent text-text-secondary hover:bg-fill-secondary hover:text-text data-[state=on]:bg-fill data-[state=on]:text-text',
15
+ outline:
16
+ 'border border-border-tertiary bg-transparent text-text-secondary hover:bg-fill-secondary hover:text-text data-[state=on]:border-border-secondary data-[state=on]:bg-fill data-[state=on]:text-text',
17
+ },
18
+ size: {
19
+ sm: 'h-7 px-2 text-xs',
20
+ md: 'h-9 px-3 text-sm',
21
+ lg: 'h-11 px-4 text-base',
22
+ },
23
+ rounded: {
24
+ square: 'rounded',
25
+ pill: 'rounded-full',
26
+ },
27
+ },
28
+ defaultVariants: { variant: 'default', size: 'md', rounded: 'square' },
29
+ }
30
+ )
31
+
32
+ export interface ToggleProps
33
+ extends Omit<React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>, 'asChild'>,
34
+ VariantProps<typeof toggleVariants> {
35
+ children?: ReactNode
36
+ prefixIcon?: ReactNode
37
+ suffixIcon?: ReactNode
38
+ }
39
+
40
+ export const Toggle = forwardRef<
41
+ React.ElementRef<typeof TogglePrimitive.Root>,
42
+ ToggleProps
43
+ >(
44
+ (
45
+ {
46
+ variant = 'default',
47
+ size = 'md',
48
+ rounded = 'square',
49
+ className,
50
+ prefixIcon,
51
+ suffixIcon,
52
+ children,
53
+ ...props
54
+ },
55
+ ref
56
+ ) => (
57
+ <TogglePrimitive.Root
58
+ ref={ref}
59
+ className={toggleVariants({ variant, size, rounded, className })}
60
+ {...props}
61
+ >
62
+ {prefixIcon && (
63
+ <span className="inline-flex shrink-0 items-center justify-center [&>*]:block [&>*]:leading-none">
64
+ {prefixIcon}
65
+ </span>
66
+ )}
67
+ {children}
68
+ {suffixIcon && (
69
+ <span className="inline-flex shrink-0 items-center justify-center [&>*]:block [&>*]:leading-none">
70
+ {suffixIcon}
71
+ </span>
72
+ )}
73
+ </TogglePrimitive.Root>
74
+ )
75
+ )
76
+ Toggle.displayName = 'Toggle'
77
+
78
+ type ToggleGroupContextValue = VariantProps<typeof toggleVariants> & {
79
+ spacing?: 'none' | 'sm' | 'md'
80
+ }
81
+
82
+ const ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null)
83
+ const spacingClasses = { none: 'gap-0', sm: 'gap-1', md: 'gap-2' } as const
84
+
85
+ const toggleGroupItemGroupClasses = [
86
+ 'shrink-0',
87
+ 'group-data-[spacing=0]/toggle-group:rounded-none',
88
+ 'group-data-[spacing=0]/toggle-group:group-data-[orientation=horizontal]/toggle-group:first:rounded-l',
89
+ 'group-data-[spacing=0]/toggle-group:group-data-[orientation=horizontal]/toggle-group:last:rounded-r',
90
+ 'group-data-[spacing=0]/toggle-group:group-data-[orientation=vertical]/toggle-group:first:rounded-t',
91
+ 'group-data-[spacing=0]/toggle-group:group-data-[orientation=vertical]/toggle-group:last:rounded-b',
92
+ 'group-data-[spacing=0]/toggle-group:data-[variant=outline]:group-data-[orientation=horizontal]/toggle-group:[&:not(:first-child)]:border-l-0',
93
+ 'group-data-[spacing=0]/toggle-group:data-[variant=outline]:group-data-[orientation=vertical]/toggle-group:[&:not(:first-child)]:border-t-0',
94
+ ].join(' ')
95
+
96
+ type ToggleGroupRootProps = React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>
97
+
98
+ export type ToggleGroupProps = ToggleGroupRootProps &
99
+ VariantProps<typeof toggleVariants> & {
100
+ spacing?: 'none' | 'sm' | 'md'
101
+ children?: ReactNode
102
+ }
103
+
104
+ const ToggleGroup = forwardRef<
105
+ React.ElementRef<typeof ToggleGroupPrimitive.Root>,
106
+ ToggleGroupProps
107
+ >(
108
+ (
109
+ {
110
+ type = 'single',
111
+ variant = 'default',
112
+ size = 'md',
113
+ rounded = 'square',
114
+ spacing = 'none',
115
+ className,
116
+ orientation = 'horizontal',
117
+ children,
118
+ ...props
119
+ },
120
+ ref
121
+ ) => {
122
+ const rootClassName = cn(
123
+ 'group/toggle-group inline-flex w-fit',
124
+ orientation === 'horizontal' ? 'flex-row' : 'flex-col',
125
+ orientation === 'vertical' && 'items-stretch',
126
+ spacingClasses[spacing],
127
+ className
128
+ )
129
+ const commonProps = {
130
+ ref,
131
+ orientation,
132
+ 'data-spacing': spacing === 'none' ? '0' : spacing,
133
+ 'data-orientation': orientation,
134
+ 'data-variant': variant,
135
+ 'data-size': size,
136
+ className: rootClassName,
137
+ } as const
138
+ return (
139
+ <ToggleGroupContext.Provider value={{ variant, size, rounded, spacing }}>
140
+ {type === 'multiple' ? (
141
+ <ToggleGroupPrimitive.Root
142
+ {...commonProps}
143
+ {...(props as ToggleGroupPrimitive.ToggleGroupMultipleProps)}
144
+ type="multiple"
145
+ >
146
+ {children}
147
+ </ToggleGroupPrimitive.Root>
148
+ ) : (
149
+ <ToggleGroupPrimitive.Root
150
+ {...commonProps}
151
+ {...(props as ToggleGroupPrimitive.ToggleGroupSingleProps)}
152
+ type="single"
153
+ >
154
+ {children}
155
+ </ToggleGroupPrimitive.Root>
156
+ )}
157
+ </ToggleGroupContext.Provider>
158
+ )
159
+ }
160
+ )
161
+ ToggleGroup.displayName = 'ToggleGroup'
162
+
163
+ export interface ToggleGroupItemProps
164
+ extends Omit<React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>, 'asChild'>,
165
+ VariantProps<typeof toggleVariants> {
166
+ value: string
167
+ children?: ReactNode
168
+ prefixIcon?: ReactNode
169
+ suffixIcon?: ReactNode
170
+ }
171
+
172
+ const ToggleGroupItem = forwardRef<
173
+ React.ElementRef<typeof ToggleGroupPrimitive.Item>,
174
+ ToggleGroupItemProps
175
+ >(
176
+ (
177
+ {
178
+ variant: variantProp,
179
+ size: sizeProp,
180
+ rounded: roundedProp,
181
+ className,
182
+ prefixIcon,
183
+ suffixIcon,
184
+ children,
185
+ ...props
186
+ },
187
+ ref
188
+ ) => {
189
+ const ctx = useContext(ToggleGroupContext)
190
+ const variant = variantProp ?? ctx?.variant ?? 'default'
191
+ const size = sizeProp ?? ctx?.size ?? 'md'
192
+ const rounded = roundedProp ?? ctx?.rounded ?? 'square'
193
+ return (
194
+ <ToggleGroupPrimitive.Item
195
+ ref={ref}
196
+ data-variant={variant}
197
+ data-size={size}
198
+ className={cn(
199
+ toggleVariants({ variant, size, rounded }),
200
+ ctx && toggleGroupItemGroupClasses,
201
+ 'focus-visible:z-10',
202
+ className
203
+ )}
204
+ {...props}
205
+ >
206
+ {prefixIcon && (
207
+ <span className="inline-flex shrink-0 items-center justify-center [&>*]:block [&>*]:leading-none">
208
+ {prefixIcon}
209
+ </span>
210
+ )}
211
+ {children}
212
+ {suffixIcon && (
213
+ <span className="inline-flex shrink-0 items-center justify-center [&>*]:block [&>*]:leading-none">
214
+ {suffixIcon}
215
+ </span>
216
+ )}
217
+ </ToggleGroupPrimitive.Item>
218
+ )
219
+ }
220
+ )
221
+ ToggleGroupItem.displayName = 'ToggleGroupItem'
222
+
223
+ export { ToggleGroup, ToggleGroupItem, toggleVariants }
@@ -0,0 +1,80 @@
1
+ import * as React from 'react'
2
+ import { motion } from 'framer-motion'
3
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip'
4
+ import { cn } from '@/lib/utils'
5
+ import { getThemeFromDocument } from './theme-from-document'
6
+
7
+ const TooltipProvider = TooltipPrimitive.Provider
8
+
9
+ const TooltipRoot = TooltipPrimitive.Root
10
+
11
+ const TooltipTrigger = TooltipPrimitive.Trigger
12
+
13
+ const TooltipContent = React.forwardRef<
14
+ React.ElementRef<typeof TooltipPrimitive.Content>,
15
+ React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> & {
16
+ /** When provided (e.g. from ThemeStyleProvider), used for portal wrapper instead of getThemeFromDocument */
17
+ dataStyle?: string
18
+ dataTheme?: string
19
+ }
20
+ >(({ className, sideOffset = 8, children, dataStyle, dataTheme, ...props }, ref) => {
21
+ const fromDoc = getThemeFromDocument()
22
+ const dataProps =
23
+ dataStyle !== undefined
24
+ ? { 'data-style': dataStyle, 'data-theme': dataTheme ?? fromDoc['data-theme'] ?? '' }
25
+ : fromDoc
26
+ return (
27
+ <TooltipPrimitive.Portal>
28
+ <div style={{ display: 'contents' }} {...dataProps}>
29
+ <TooltipPrimitive.Content
30
+ ref={ref}
31
+ sideOffset={sideOffset}
32
+ className={cn(
33
+ 'z-50 max-w-60 overflow-hidden rounded px-2 py-1 text-xs leading-5',
34
+ 'bg-bg-highlight text-text-on-primary shadow-sm',
35
+ className
36
+ )}
37
+ {...props}
38
+ >
39
+ <motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} transition={{ duration: 0.15 }}>
40
+ {children}
41
+ </motion.div>
42
+ </TooltipPrimitive.Content>
43
+ </div>
44
+ </TooltipPrimitive.Portal>
45
+ )
46
+ })
47
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName
48
+
49
+ export interface TooltipProps {
50
+ content: React.ReactNode
51
+ children: React.ReactNode
52
+ side?: 'top' | 'right' | 'bottom' | 'left'
53
+ contentClassName?: string
54
+ /** When provided, portal content uses this data-style (e.g. from ThemeStyleProvider) */
55
+ dataStyle?: string
56
+ /** When provided, portal content uses this data-theme */
57
+ dataTheme?: string
58
+ }
59
+
60
+ function Tooltip({ content, children, side = 'top', contentClassName, dataStyle, dataTheme }: TooltipProps) {
61
+ return (
62
+ <TooltipProvider delayDuration={300}>
63
+ <TooltipRoot>
64
+ <TooltipTrigger asChild>{children}</TooltipTrigger>
65
+ <TooltipContent side={side} className={contentClassName} dataStyle={dataStyle} dataTheme={dataTheme}>
66
+ {content}
67
+ </TooltipContent>
68
+ </TooltipRoot>
69
+ </TooltipProvider>
70
+ )
71
+ }
72
+ Tooltip.displayName = 'Tooltip'
73
+
74
+ export {
75
+ TooltipProvider,
76
+ TooltipRoot,
77
+ TooltipTrigger,
78
+ TooltipContent,
79
+ Tooltip,
80
+ }