@theokit/ui 0.13.0

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 (715) hide show
  1. package/CHANGELOG.md +1325 -0
  2. package/DESIGN.md +456 -0
  3. package/LICENSE +201 -0
  4. package/NOTICE +38 -0
  5. package/README.md +467 -0
  6. package/dist/chunk-27ENTTY7.js +146 -0
  7. package/dist/chunk-27ENTTY7.js.map +1 -0
  8. package/dist/chunk-2H6TQELG.js +33 -0
  9. package/dist/chunk-2H6TQELG.js.map +1 -0
  10. package/dist/chunk-2L6MRJD4.js +120 -0
  11. package/dist/chunk-2L6MRJD4.js.map +1 -0
  12. package/dist/chunk-2Y5V2PAL.js +80 -0
  13. package/dist/chunk-2Y5V2PAL.js.map +1 -0
  14. package/dist/chunk-34NAFDVL.js +46 -0
  15. package/dist/chunk-34NAFDVL.js.map +1 -0
  16. package/dist/chunk-36KJGXEK.js +112 -0
  17. package/dist/chunk-36KJGXEK.js.map +1 -0
  18. package/dist/chunk-3BMYYNN6.js +124 -0
  19. package/dist/chunk-3BMYYNN6.js.map +1 -0
  20. package/dist/chunk-3OHV7EEI.js +34 -0
  21. package/dist/chunk-3OHV7EEI.js.map +1 -0
  22. package/dist/chunk-3QKTS6F5.js +88 -0
  23. package/dist/chunk-3QKTS6F5.js.map +1 -0
  24. package/dist/chunk-3TBXLYNM.js +42 -0
  25. package/dist/chunk-3TBXLYNM.js.map +1 -0
  26. package/dist/chunk-4AM2HSXU.js +67 -0
  27. package/dist/chunk-4AM2HSXU.js.map +1 -0
  28. package/dist/chunk-4BCGKM65.js +44 -0
  29. package/dist/chunk-4BCGKM65.js.map +1 -0
  30. package/dist/chunk-4D3JILQX.js +145 -0
  31. package/dist/chunk-4D3JILQX.js.map +1 -0
  32. package/dist/chunk-4EJU2GBG.js +48 -0
  33. package/dist/chunk-4EJU2GBG.js.map +1 -0
  34. package/dist/chunk-4WKO3G5C.js +110 -0
  35. package/dist/chunk-4WKO3G5C.js.map +1 -0
  36. package/dist/chunk-53XPKI7Q.js +97 -0
  37. package/dist/chunk-53XPKI7Q.js.map +1 -0
  38. package/dist/chunk-55TDVDPG.js +58 -0
  39. package/dist/chunk-55TDVDPG.js.map +1 -0
  40. package/dist/chunk-56BJLFW7.js +26 -0
  41. package/dist/chunk-56BJLFW7.js.map +1 -0
  42. package/dist/chunk-5HOQLE6Y.js +35 -0
  43. package/dist/chunk-5HOQLE6Y.js.map +1 -0
  44. package/dist/chunk-5TY3NYF5.js +144 -0
  45. package/dist/chunk-5TY3NYF5.js.map +1 -0
  46. package/dist/chunk-5VOSCJKQ.js +92 -0
  47. package/dist/chunk-5VOSCJKQ.js.map +1 -0
  48. package/dist/chunk-65NVO6TK.js +171 -0
  49. package/dist/chunk-65NVO6TK.js.map +1 -0
  50. package/dist/chunk-6A5TPCKP.js +64 -0
  51. package/dist/chunk-6A5TPCKP.js.map +1 -0
  52. package/dist/chunk-6CO4LEXZ.js +41 -0
  53. package/dist/chunk-6CO4LEXZ.js.map +1 -0
  54. package/dist/chunk-6FVUPNPG.js +56 -0
  55. package/dist/chunk-6FVUPNPG.js.map +1 -0
  56. package/dist/chunk-76YWTIWK.js +106 -0
  57. package/dist/chunk-76YWTIWK.js.map +1 -0
  58. package/dist/chunk-7EI7424P.js +78 -0
  59. package/dist/chunk-7EI7424P.js.map +1 -0
  60. package/dist/chunk-AHTVYOPQ.js +26 -0
  61. package/dist/chunk-AHTVYOPQ.js.map +1 -0
  62. package/dist/chunk-AJTJNHKK.js +85 -0
  63. package/dist/chunk-AJTJNHKK.js.map +1 -0
  64. package/dist/chunk-AMT3CPMC.js +155 -0
  65. package/dist/chunk-AMT3CPMC.js.map +1 -0
  66. package/dist/chunk-AX5EH73R.js +59 -0
  67. package/dist/chunk-AX5EH73R.js.map +1 -0
  68. package/dist/chunk-B3VAJSZ2.js +35 -0
  69. package/dist/chunk-B3VAJSZ2.js.map +1 -0
  70. package/dist/chunk-B4CQMQ64.js +25 -0
  71. package/dist/chunk-B4CQMQ64.js.map +1 -0
  72. package/dist/chunk-BMRZXT5T.js +115 -0
  73. package/dist/chunk-BMRZXT5T.js.map +1 -0
  74. package/dist/chunk-BYZ6OFH4.js +73 -0
  75. package/dist/chunk-BYZ6OFH4.js.map +1 -0
  76. package/dist/chunk-C55VUQ7N.js +156 -0
  77. package/dist/chunk-C55VUQ7N.js.map +1 -0
  78. package/dist/chunk-D4GEAV4C.js +91 -0
  79. package/dist/chunk-D4GEAV4C.js.map +1 -0
  80. package/dist/chunk-DC43CHAM.js +152 -0
  81. package/dist/chunk-DC43CHAM.js.map +1 -0
  82. package/dist/chunk-DKCRLN35.js +92 -0
  83. package/dist/chunk-DKCRLN35.js.map +1 -0
  84. package/dist/chunk-DN5BUDBI.js +86 -0
  85. package/dist/chunk-DN5BUDBI.js.map +1 -0
  86. package/dist/chunk-DOLKDYMS.js +88 -0
  87. package/dist/chunk-DOLKDYMS.js.map +1 -0
  88. package/dist/chunk-DW34WXCG.js +28 -0
  89. package/dist/chunk-DW34WXCG.js.map +1 -0
  90. package/dist/chunk-DZAAKHGZ.js +135 -0
  91. package/dist/chunk-DZAAKHGZ.js.map +1 -0
  92. package/dist/chunk-E4IRSSHO.js +116 -0
  93. package/dist/chunk-E4IRSSHO.js.map +1 -0
  94. package/dist/chunk-E67WQXBV.js +104 -0
  95. package/dist/chunk-E67WQXBV.js.map +1 -0
  96. package/dist/chunk-EG6IHP3H.js +128 -0
  97. package/dist/chunk-EG6IHP3H.js.map +1 -0
  98. package/dist/chunk-EO7LOXG2.js +82 -0
  99. package/dist/chunk-EO7LOXG2.js.map +1 -0
  100. package/dist/chunk-EWDN56AS.js +24 -0
  101. package/dist/chunk-EWDN56AS.js.map +1 -0
  102. package/dist/chunk-F5P5P2SC.js +141 -0
  103. package/dist/chunk-F5P5P2SC.js.map +1 -0
  104. package/dist/chunk-FAWPRZTM.js +79 -0
  105. package/dist/chunk-FAWPRZTM.js.map +1 -0
  106. package/dist/chunk-FGYJ2WPX.js +36 -0
  107. package/dist/chunk-FGYJ2WPX.js.map +1 -0
  108. package/dist/chunk-GBG3I5I5.js +46 -0
  109. package/dist/chunk-GBG3I5I5.js.map +1 -0
  110. package/dist/chunk-GDMCDW66.js +19 -0
  111. package/dist/chunk-GDMCDW66.js.map +1 -0
  112. package/dist/chunk-H6HSQCOW.js +80 -0
  113. package/dist/chunk-H6HSQCOW.js.map +1 -0
  114. package/dist/chunk-HDM4RCIF.js +111 -0
  115. package/dist/chunk-HDM4RCIF.js.map +1 -0
  116. package/dist/chunk-HNTOGGVD.js +77 -0
  117. package/dist/chunk-HNTOGGVD.js.map +1 -0
  118. package/dist/chunk-HQW2ABO4.js +28 -0
  119. package/dist/chunk-HQW2ABO4.js.map +1 -0
  120. package/dist/chunk-HRDRGZ2Y.js +76 -0
  121. package/dist/chunk-HRDRGZ2Y.js.map +1 -0
  122. package/dist/chunk-HUOVA7SF.js +83 -0
  123. package/dist/chunk-HUOVA7SF.js.map +1 -0
  124. package/dist/chunk-ITA3SNOR.js +133 -0
  125. package/dist/chunk-ITA3SNOR.js.map +1 -0
  126. package/dist/chunk-IYNUPG2G.js +61 -0
  127. package/dist/chunk-IYNUPG2G.js.map +1 -0
  128. package/dist/chunk-JJ65ZI4P.js +199 -0
  129. package/dist/chunk-JJ65ZI4P.js.map +1 -0
  130. package/dist/chunk-JRBGZ6NI.js +106 -0
  131. package/dist/chunk-JRBGZ6NI.js.map +1 -0
  132. package/dist/chunk-K45OO62F.js +108 -0
  133. package/dist/chunk-K45OO62F.js.map +1 -0
  134. package/dist/chunk-KDTKA667.js +67 -0
  135. package/dist/chunk-KDTKA667.js.map +1 -0
  136. package/dist/chunk-KI7KZBSN.js +142 -0
  137. package/dist/chunk-KI7KZBSN.js.map +1 -0
  138. package/dist/chunk-KOJ7XOPZ.js +87 -0
  139. package/dist/chunk-KOJ7XOPZ.js.map +1 -0
  140. package/dist/chunk-KQTHJ22B.js +82 -0
  141. package/dist/chunk-KQTHJ22B.js.map +1 -0
  142. package/dist/chunk-KRC43RZR.js +77 -0
  143. package/dist/chunk-KRC43RZR.js.map +1 -0
  144. package/dist/chunk-LJQOEGQ2.js +116 -0
  145. package/dist/chunk-LJQOEGQ2.js.map +1 -0
  146. package/dist/chunk-LKRNUSKZ.js +149 -0
  147. package/dist/chunk-LKRNUSKZ.js.map +1 -0
  148. package/dist/chunk-LLL7QQ52.js +76 -0
  149. package/dist/chunk-LLL7QQ52.js.map +1 -0
  150. package/dist/chunk-LQ4B5X4Y.js +56 -0
  151. package/dist/chunk-LQ4B5X4Y.js.map +1 -0
  152. package/dist/chunk-M3FSLEHQ.js +76 -0
  153. package/dist/chunk-M3FSLEHQ.js.map +1 -0
  154. package/dist/chunk-M5G3O6H6.js +57 -0
  155. package/dist/chunk-M5G3O6H6.js.map +1 -0
  156. package/dist/chunk-M6JIC5PU.js +81 -0
  157. package/dist/chunk-M6JIC5PU.js.map +1 -0
  158. package/dist/chunk-N2HJ3SLS.js +186 -0
  159. package/dist/chunk-N2HJ3SLS.js.map +1 -0
  160. package/dist/chunk-NGZWBFTP.js +45 -0
  161. package/dist/chunk-NGZWBFTP.js.map +1 -0
  162. package/dist/chunk-OAKCXT35.js +34 -0
  163. package/dist/chunk-OAKCXT35.js.map +1 -0
  164. package/dist/chunk-OSD3U3HT.js +54 -0
  165. package/dist/chunk-OSD3U3HT.js.map +1 -0
  166. package/dist/chunk-OUXESQ2R.js +42 -0
  167. package/dist/chunk-OUXESQ2R.js.map +1 -0
  168. package/dist/chunk-OY2LJHMJ.js +43 -0
  169. package/dist/chunk-OY2LJHMJ.js.map +1 -0
  170. package/dist/chunk-OYEZR4CN.js +221 -0
  171. package/dist/chunk-OYEZR4CN.js.map +1 -0
  172. package/dist/chunk-P57HUMAE.js +66 -0
  173. package/dist/chunk-P57HUMAE.js.map +1 -0
  174. package/dist/chunk-P6Y2PI6L.js +82 -0
  175. package/dist/chunk-P6Y2PI6L.js.map +1 -0
  176. package/dist/chunk-PA7TDXUQ.js +51 -0
  177. package/dist/chunk-PA7TDXUQ.js.map +1 -0
  178. package/dist/chunk-PPBGGNPV.js +112 -0
  179. package/dist/chunk-PPBGGNPV.js.map +1 -0
  180. package/dist/chunk-PRH4HKND.js +48 -0
  181. package/dist/chunk-PRH4HKND.js.map +1 -0
  182. package/dist/chunk-PSPAZJUQ.js +32 -0
  183. package/dist/chunk-PSPAZJUQ.js.map +1 -0
  184. package/dist/chunk-Q5G5CGZ2.js +170 -0
  185. package/dist/chunk-Q5G5CGZ2.js.map +1 -0
  186. package/dist/chunk-QDAF3LP7.js +89 -0
  187. package/dist/chunk-QDAF3LP7.js.map +1 -0
  188. package/dist/chunk-QGVIGNJ3.js +37 -0
  189. package/dist/chunk-QGVIGNJ3.js.map +1 -0
  190. package/dist/chunk-QNUITYSY.js +68 -0
  191. package/dist/chunk-QNUITYSY.js.map +1 -0
  192. package/dist/chunk-QSWVN3RT.js +116 -0
  193. package/dist/chunk-QSWVN3RT.js.map +1 -0
  194. package/dist/chunk-QTLQZ7OJ.js +110 -0
  195. package/dist/chunk-QTLQZ7OJ.js.map +1 -0
  196. package/dist/chunk-QYAMLIG2.js +84 -0
  197. package/dist/chunk-QYAMLIG2.js.map +1 -0
  198. package/dist/chunk-REILH4XF.js +128 -0
  199. package/dist/chunk-REILH4XF.js.map +1 -0
  200. package/dist/chunk-S6SSK6QX.js +80 -0
  201. package/dist/chunk-S6SSK6QX.js.map +1 -0
  202. package/dist/chunk-SA7ED3PN.js +68 -0
  203. package/dist/chunk-SA7ED3PN.js.map +1 -0
  204. package/dist/chunk-SIJOEM4N.js +55 -0
  205. package/dist/chunk-SIJOEM4N.js.map +1 -0
  206. package/dist/chunk-SLOKAAH2.js +70 -0
  207. package/dist/chunk-SLOKAAH2.js.map +1 -0
  208. package/dist/chunk-TR6NPSMX.js +85 -0
  209. package/dist/chunk-TR6NPSMX.js.map +1 -0
  210. package/dist/chunk-TSZ5DEAT.js +106 -0
  211. package/dist/chunk-TSZ5DEAT.js.map +1 -0
  212. package/dist/chunk-TUNVF45W.js +127 -0
  213. package/dist/chunk-TUNVF45W.js.map +1 -0
  214. package/dist/chunk-TXOBNSQ5.js +63 -0
  215. package/dist/chunk-TXOBNSQ5.js.map +1 -0
  216. package/dist/chunk-U44DRLMM.js +88 -0
  217. package/dist/chunk-U44DRLMM.js.map +1 -0
  218. package/dist/chunk-U4THNRV5.js +114 -0
  219. package/dist/chunk-U4THNRV5.js.map +1 -0
  220. package/dist/chunk-UAZOFC4W.js +72 -0
  221. package/dist/chunk-UAZOFC4W.js.map +1 -0
  222. package/dist/chunk-UGKI466V.js +12 -0
  223. package/dist/chunk-UGKI466V.js.map +1 -0
  224. package/dist/chunk-VM4RMQQN.js +11 -0
  225. package/dist/chunk-VM4RMQQN.js.map +1 -0
  226. package/dist/chunk-VQ37VLAS.js +54 -0
  227. package/dist/chunk-VQ37VLAS.js.map +1 -0
  228. package/dist/chunk-VT7VSYH5.js +73 -0
  229. package/dist/chunk-VT7VSYH5.js.map +1 -0
  230. package/dist/chunk-VTIRUCLZ.js +57 -0
  231. package/dist/chunk-VTIRUCLZ.js.map +1 -0
  232. package/dist/chunk-VVBAEYKI.js +202 -0
  233. package/dist/chunk-VVBAEYKI.js.map +1 -0
  234. package/dist/chunk-WHFIQUCC.js +120 -0
  235. package/dist/chunk-WHFIQUCC.js.map +1 -0
  236. package/dist/chunk-WPSESV5Z.js +74 -0
  237. package/dist/chunk-WPSESV5Z.js.map +1 -0
  238. package/dist/chunk-WXEXCHEN.js +51 -0
  239. package/dist/chunk-WXEXCHEN.js.map +1 -0
  240. package/dist/chunk-X2DDPD3D.js +113 -0
  241. package/dist/chunk-X2DDPD3D.js.map +1 -0
  242. package/dist/chunk-X7VIMKLD.js +127 -0
  243. package/dist/chunk-X7VIMKLD.js.map +1 -0
  244. package/dist/chunk-XJ3EG6XY.js +30 -0
  245. package/dist/chunk-XJ3EG6XY.js.map +1 -0
  246. package/dist/chunk-XOT5HWSF.js +23 -0
  247. package/dist/chunk-XOT5HWSF.js.map +1 -0
  248. package/dist/chunk-Y72IP43U.js +117 -0
  249. package/dist/chunk-Y72IP43U.js.map +1 -0
  250. package/dist/chunk-YD6FLXBV.js +61 -0
  251. package/dist/chunk-YD6FLXBV.js.map +1 -0
  252. package/dist/chunk-YEQQGYYO.js +1022 -0
  253. package/dist/chunk-YEQQGYYO.js.map +1 -0
  254. package/dist/chunk-YYW6AEIT.js +46 -0
  255. package/dist/chunk-YYW6AEIT.js.map +1 -0
  256. package/dist/chunk-ZEVGXKRU.js +104 -0
  257. package/dist/chunk-ZEVGXKRU.js.map +1 -0
  258. package/dist/chunk-ZKSMMLDP.js +74 -0
  259. package/dist/chunk-ZKSMMLDP.js.map +1 -0
  260. package/dist/chunk-ZU6IM6PK.js +101 -0
  261. package/dist/chunk-ZU6IM6PK.js.map +1 -0
  262. package/dist/chunk-ZUS5KZGO.js +714 -0
  263. package/dist/chunk-ZUS5KZGO.js.map +1 -0
  264. package/dist/chunk-ZVS2GOT2.js +58 -0
  265. package/dist/chunk-ZVS2GOT2.js.map +1 -0
  266. package/dist/chunk-ZXPDS6DH.js +3 -0
  267. package/dist/chunk-ZXPDS6DH.js.map +1 -0
  268. package/dist/chunk-ZZQQJX5Z.js +173 -0
  269. package/dist/chunk-ZZQQJX5Z.js.map +1 -0
  270. package/dist/components.css +2 -0
  271. package/dist/composites/account-menu/index.js +6 -0
  272. package/dist/composites/account-menu/index.js.map +1 -0
  273. package/dist/composites/agent-composer/index.js +7 -0
  274. package/dist/composites/agent-composer/index.js.map +1 -0
  275. package/dist/composites/agent-editor/index.js +10 -0
  276. package/dist/composites/agent-editor/index.js.map +1 -0
  277. package/dist/composites/agent-stream/index.js +12 -0
  278. package/dist/composites/agent-stream/index.js.map +1 -0
  279. package/dist/composites/agent-timeline/index.js +5 -0
  280. package/dist/composites/agent-timeline/index.js.map +1 -0
  281. package/dist/composites/approval-card/index.js +5 -0
  282. package/dist/composites/approval-card/index.js.map +1 -0
  283. package/dist/composites/chat-composer/index.js +6 -0
  284. package/dist/composites/chat-composer/index.js.map +1 -0
  285. package/dist/composites/chat-message/index.js +6 -0
  286. package/dist/composites/chat-message/index.js.map +1 -0
  287. package/dist/composites/code-block/index.js +5 -0
  288. package/dist/composites/code-block/index.js.map +1 -0
  289. package/dist/composites/command-palette/index.js +5 -0
  290. package/dist/composites/command-palette/index.js.map +1 -0
  291. package/dist/composites/confirm-dialog/index.js +7 -0
  292. package/dist/composites/confirm-dialog/index.js.map +1 -0
  293. package/dist/composites/cron-jobs-list/index.js +5 -0
  294. package/dist/composites/cron-jobs-list/index.js.map +1 -0
  295. package/dist/composites/data-table/index.js +10 -0
  296. package/dist/composites/data-table/index.js.map +1 -0
  297. package/dist/composites/deployment-row/index.js +5 -0
  298. package/dist/composites/deployment-row/index.js.map +1 -0
  299. package/dist/composites/domain-config/index.js +7 -0
  300. package/dist/composites/domain-config/index.js.map +1 -0
  301. package/dist/composites/env-var-editor/index.js +7 -0
  302. package/dist/composites/env-var-editor/index.js.map +1 -0
  303. package/dist/composites/mcp-server-list/index.js +5 -0
  304. package/dist/composites/mcp-server-list/index.js.map +1 -0
  305. package/dist/composites/page-shell/index.js +7 -0
  306. package/dist/composites/page-shell/index.js.map +1 -0
  307. package/dist/composites/permission-modal/index.js +6 -0
  308. package/dist/composites/permission-modal/index.js.map +1 -0
  309. package/dist/composites/preview-env-card/index.js +6 -0
  310. package/dist/composites/preview-env-card/index.js.map +1 -0
  311. package/dist/composites/preview-panel/index.js +5 -0
  312. package/dist/composites/preview-panel/index.js.map +1 -0
  313. package/dist/composites/project-card/index.js +6 -0
  314. package/dist/composites/project-card/index.js.map +1 -0
  315. package/dist/composites/rollback-ui/index.js +6 -0
  316. package/dist/composites/rollback-ui/index.js.map +1 -0
  317. package/dist/composites/rule-editor/index.js +11 -0
  318. package/dist/composites/rule-editor/index.js.map +1 -0
  319. package/dist/composites/skill-editor/index.js +11 -0
  320. package/dist/composites/skill-editor/index.js.map +1 -0
  321. package/dist/composites/skills-list/index.js +5 -0
  322. package/dist/composites/skills-list/index.js.map +1 -0
  323. package/dist/composites/stability-bundle-viewer/index.js +4 -0
  324. package/dist/composites/stability-bundle-viewer/index.js.map +1 -0
  325. package/dist/composites/task-header/index.js +5 -0
  326. package/dist/composites/task-header/index.js.map +1 -0
  327. package/dist/composites/usage-meter/index.js +5 -0
  328. package/dist/composites/usage-meter/index.js.map +1 -0
  329. package/dist/fonts/LICENSE-GEIST.txt +92 -0
  330. package/dist/fonts/geist-400.woff2 +0 -0
  331. package/dist/fonts/geist-500.woff2 +0 -0
  332. package/dist/fonts/geist-600.woff2 +0 -0
  333. package/dist/fonts/geist-mono-400.woff2 +0 -0
  334. package/dist/fonts/geist-mono-500.woff2 +0 -0
  335. package/dist/fonts/geist-mono-600.woff2 +0 -0
  336. package/dist/fonts-cdn.css +28 -0
  337. package/dist/fonts.css +75 -0
  338. package/dist/index.d.ts +4621 -0
  339. package/dist/index.js +1338 -0
  340. package/dist/index.js.map +1 -0
  341. package/dist/plugin-D5xmXqYb.d.ts +172 -0
  342. package/dist/preset-v3-legacy.d.ts +35 -0
  343. package/dist/preset-v3-legacy.js +159 -0
  344. package/dist/preset-v3-legacy.js.map +1 -0
  345. package/dist/preset.css +27 -0
  346. package/dist/primitives/action-bar/index.js +4 -0
  347. package/dist/primitives/action-bar/index.js.map +1 -0
  348. package/dist/primitives/agent-error-card/index.js +5 -0
  349. package/dist/primitives/agent-error-card/index.js.map +1 -0
  350. package/dist/primitives/agent-event/index.js +4 -0
  351. package/dist/primitives/agent-event/index.js.map +1 -0
  352. package/dist/primitives/agent-handoff/index.js +4 -0
  353. package/dist/primitives/agent-handoff/index.js.map +1 -0
  354. package/dist/primitives/agent-profile/index.js +4 -0
  355. package/dist/primitives/agent-profile/index.js.map +1 -0
  356. package/dist/primitives/agent-starting-state/index.js +5 -0
  357. package/dist/primitives/agent-starting-state/index.js.map +1 -0
  358. package/dist/primitives/agent-streaming/index.js +5 -0
  359. package/dist/primitives/agent-streaming/index.js.map +1 -0
  360. package/dist/primitives/alert/index.js +4 -0
  361. package/dist/primitives/alert/index.js.map +1 -0
  362. package/dist/primitives/artifact-preview/index.js +4 -0
  363. package/dist/primitives/artifact-preview/index.js.map +1 -0
  364. package/dist/primitives/attachment-chip/index.js +4 -0
  365. package/dist/primitives/attachment-chip/index.js.map +1 -0
  366. package/dist/primitives/audit-log-entry/index.js +4 -0
  367. package/dist/primitives/audit-log-entry/index.js.map +1 -0
  368. package/dist/primitives/auto-compact-notice/index.js +5 -0
  369. package/dist/primitives/auto-compact-notice/index.js.map +1 -0
  370. package/dist/primitives/avatar/index.js +4 -0
  371. package/dist/primitives/avatar/index.js.map +1 -0
  372. package/dist/primitives/badge/index.js +4 -0
  373. package/dist/primitives/badge/index.js.map +1 -0
  374. package/dist/primitives/branch-indicator/index.js +4 -0
  375. package/dist/primitives/branch-indicator/index.js.map +1 -0
  376. package/dist/primitives/browser-controls/index.js +4 -0
  377. package/dist/primitives/browser-controls/index.js.map +1 -0
  378. package/dist/primitives/build-log-stream/index.js +5 -0
  379. package/dist/primitives/build-log-stream/index.js.map +1 -0
  380. package/dist/primitives/button/index.js +4 -0
  381. package/dist/primitives/button/index.js.map +1 -0
  382. package/dist/primitives/capability-indicator/index.js +4 -0
  383. package/dist/primitives/capability-indicator/index.js.map +1 -0
  384. package/dist/primitives/card/index.js +4 -0
  385. package/dist/primitives/card/index.js.map +1 -0
  386. package/dist/primitives/channel-card/index.js +4 -0
  387. package/dist/primitives/channel-card/index.js.map +1 -0
  388. package/dist/primitives/chat-thread/index.js +5 -0
  389. package/dist/primitives/chat-thread/index.js.map +1 -0
  390. package/dist/primitives/checkbox/index.js +4 -0
  391. package/dist/primitives/checkbox/index.js.map +1 -0
  392. package/dist/primitives/context-card/index.js +4 -0
  393. package/dist/primitives/context-card/index.js.map +1 -0
  394. package/dist/primitives/context-window-bar/index.js +4 -0
  395. package/dist/primitives/context-window-bar/index.js.map +1 -0
  396. package/dist/primitives/copy-button/index.js +4 -0
  397. package/dist/primitives/copy-button/index.js.map +1 -0
  398. package/dist/primitives/cost-meter/index.js +4 -0
  399. package/dist/primitives/cost-meter/index.js.map +1 -0
  400. package/dist/primitives/created-files-card/index.js +4 -0
  401. package/dist/primitives/created-files-card/index.js.map +1 -0
  402. package/dist/primitives/cron-job-card/index.js +4 -0
  403. package/dist/primitives/cron-job-card/index.js.map +1 -0
  404. package/dist/primitives/danger-zone/index.js +4 -0
  405. package/dist/primitives/danger-zone/index.js.map +1 -0
  406. package/dist/primitives/dialog/index.js +4 -0
  407. package/dist/primitives/dialog/index.js.map +1 -0
  408. package/dist/primitives/diff-viewer/index.js +4 -0
  409. package/dist/primitives/diff-viewer/index.js.map +1 -0
  410. package/dist/primitives/dropdown-menu/index.js +4 -0
  411. package/dist/primitives/dropdown-menu/index.js.map +1 -0
  412. package/dist/primitives/empty-state/index.js +4 -0
  413. package/dist/primitives/empty-state/index.js.map +1 -0
  414. package/dist/primitives/export-chat-dialog/index.js +4 -0
  415. package/dist/primitives/export-chat-dialog/index.js.map +1 -0
  416. package/dist/primitives/folder-context-card/index.js +4 -0
  417. package/dist/primitives/folder-context-card/index.js.map +1 -0
  418. package/dist/primitives/folder-selector/index.js +4 -0
  419. package/dist/primitives/folder-selector/index.js.map +1 -0
  420. package/dist/primitives/form-field/index.js +4 -0
  421. package/dist/primitives/form-field/index.js.map +1 -0
  422. package/dist/primitives/gateway-status-indicator/index.js +4 -0
  423. package/dist/primitives/gateway-status-indicator/index.js.map +1 -0
  424. package/dist/primitives/hook-config/index.js +4 -0
  425. package/dist/primitives/hook-config/index.js.map +1 -0
  426. package/dist/primitives/hook-event-log/index.js +4 -0
  427. package/dist/primitives/hook-event-log/index.js.map +1 -0
  428. package/dist/primitives/input/index.js +4 -0
  429. package/dist/primitives/input/index.js.map +1 -0
  430. package/dist/primitives/intent-selector/index.js +4 -0
  431. package/dist/primitives/intent-selector/index.js.map +1 -0
  432. package/dist/primitives/label/index.js +4 -0
  433. package/dist/primitives/label/index.js.map +1 -0
  434. package/dist/primitives/lane-board/index.js +4 -0
  435. package/dist/primitives/lane-board/index.js.map +1 -0
  436. package/dist/primitives/login-split/index.js +4 -0
  437. package/dist/primitives/login-split/index.js.map +1 -0
  438. package/dist/primitives/mcp-server-card/index.js +4 -0
  439. package/dist/primitives/mcp-server-card/index.js.map +1 -0
  440. package/dist/primitives/memory-editor/index.js +4 -0
  441. package/dist/primitives/memory-editor/index.js.map +1 -0
  442. package/dist/primitives/mention-menu/index.js +4 -0
  443. package/dist/primitives/mention-menu/index.js.map +1 -0
  444. package/dist/primitives/metrics-panel/index.js +4 -0
  445. package/dist/primitives/metrics-panel/index.js.map +1 -0
  446. package/dist/primitives/model-card/index.js +4 -0
  447. package/dist/primitives/model-card/index.js.map +1 -0
  448. package/dist/primitives/model-selector/index.js +4 -0
  449. package/dist/primitives/model-selector/index.js.map +1 -0
  450. package/dist/primitives/pagination/index.js +4 -0
  451. package/dist/primitives/pagination/index.js.map +1 -0
  452. package/dist/primitives/permission-matrix/index.js +4 -0
  453. package/dist/primitives/permission-matrix/index.js.map +1 -0
  454. package/dist/primitives/pin-input/index.js +4 -0
  455. package/dist/primitives/pin-input/index.js.map +1 -0
  456. package/dist/primitives/plan-badge/index.js +4 -0
  457. package/dist/primitives/plan-badge/index.js.map +1 -0
  458. package/dist/primitives/progress/index.js +4 -0
  459. package/dist/primitives/progress/index.js.map +1 -0
  460. package/dist/primitives/progress-checklist/index.js +4 -0
  461. package/dist/primitives/progress-checklist/index.js.map +1 -0
  462. package/dist/primitives/project-switcher/index.js +4 -0
  463. package/dist/primitives/project-switcher/index.js.map +1 -0
  464. package/dist/primitives/quick-action-chips/index.js +4 -0
  465. package/dist/primitives/quick-action-chips/index.js.map +1 -0
  466. package/dist/primitives/radio-group/index.js +4 -0
  467. package/dist/primitives/radio-group/index.js.map +1 -0
  468. package/dist/primitives/recent-folders-list/index.js +4 -0
  469. package/dist/primitives/recent-folders-list/index.js.map +1 -0
  470. package/dist/primitives/rule-card/index.js +4 -0
  471. package/dist/primitives/rule-card/index.js.map +1 -0
  472. package/dist/primitives/run-stats/index.js +4 -0
  473. package/dist/primitives/run-stats/index.js.map +1 -0
  474. package/dist/primitives/run-status-pill/index.js +4 -0
  475. package/dist/primitives/run-status-pill/index.js.map +1 -0
  476. package/dist/primitives/running-tasks-panel/index.js +4 -0
  477. package/dist/primitives/running-tasks-panel/index.js.map +1 -0
  478. package/dist/primitives/scroll-area/index.js +4 -0
  479. package/dist/primitives/scroll-area/index.js.map +1 -0
  480. package/dist/primitives/select/index.js +4 -0
  481. package/dist/primitives/select/index.js.map +1 -0
  482. package/dist/primitives/session-list-item/index.js +4 -0
  483. package/dist/primitives/session-list-item/index.js.map +1 -0
  484. package/dist/primitives/session-timeline/index.js +4 -0
  485. package/dist/primitives/session-timeline/index.js.map +1 -0
  486. package/dist/primitives/sheet/index.js +4 -0
  487. package/dist/primitives/sheet/index.js.map +1 -0
  488. package/dist/primitives/sidebar/index.js +4 -0
  489. package/dist/primitives/sidebar/index.js.map +1 -0
  490. package/dist/primitives/skeleton/index.js +5 -0
  491. package/dist/primitives/skeleton/index.js.map +1 -0
  492. package/dist/primitives/skill-card/index.js +4 -0
  493. package/dist/primitives/skill-card/index.js.map +1 -0
  494. package/dist/primitives/social-auth-row/index.js +4 -0
  495. package/dist/primitives/social-auth-row/index.js.map +1 -0
  496. package/dist/primitives/stat-tile/index.js +4 -0
  497. package/dist/primitives/stat-tile/index.js.map +1 -0
  498. package/dist/primitives/status-dot/index.js +4 -0
  499. package/dist/primitives/status-dot/index.js.map +1 -0
  500. package/dist/primitives/steps-rail/index.js +4 -0
  501. package/dist/primitives/steps-rail/index.js.map +1 -0
  502. package/dist/primitives/sub-agent-dispatch/index.js +4 -0
  503. package/dist/primitives/sub-agent-dispatch/index.js.map +1 -0
  504. package/dist/primitives/switch/index.js +4 -0
  505. package/dist/primitives/switch/index.js.map +1 -0
  506. package/dist/primitives/system-prompt-editor/index.js +4 -0
  507. package/dist/primitives/system-prompt-editor/index.js.map +1 -0
  508. package/dist/primitives/table/index.js +4 -0
  509. package/dist/primitives/table/index.js.map +1 -0
  510. package/dist/primitives/tabs/index.js +4 -0
  511. package/dist/primitives/tabs/index.js.map +1 -0
  512. package/dist/primitives/task-plan/index.js +4 -0
  513. package/dist/primitives/task-plan/index.js.map +1 -0
  514. package/dist/primitives/terminal-panel/index.js +5 -0
  515. package/dist/primitives/terminal-panel/index.js.map +1 -0
  516. package/dist/primitives/textarea/index.js +4 -0
  517. package/dist/primitives/textarea/index.js.map +1 -0
  518. package/dist/primitives/thinking-level-selector/index.js +4 -0
  519. package/dist/primitives/thinking-level-selector/index.js.map +1 -0
  520. package/dist/primitives/timestamp/index.js +4 -0
  521. package/dist/primitives/timestamp/index.js.map +1 -0
  522. package/dist/primitives/toast/index.js +4 -0
  523. package/dist/primitives/toast/index.js.map +1 -0
  524. package/dist/primitives/token-usage-chart/index.js +4 -0
  525. package/dist/primitives/token-usage-chart/index.js.map +1 -0
  526. package/dist/primitives/tool-call/index.js +4 -0
  527. package/dist/primitives/tool-call/index.js.map +1 -0
  528. package/dist/primitives/tool-call-card/index.js +4 -0
  529. package/dist/primitives/tool-call-card/index.js.map +1 -0
  530. package/dist/primitives/tool-result/index.js +4 -0
  531. package/dist/primitives/tool-result/index.js.map +1 -0
  532. package/dist/primitives/tools-list/index.js +4 -0
  533. package/dist/primitives/tools-list/index.js.map +1 -0
  534. package/dist/primitives/tooltip/index.js +4 -0
  535. package/dist/primitives/tooltip/index.js.map +1 -0
  536. package/dist/primitives/topnav/index.js +4 -0
  537. package/dist/primitives/topnav/index.js.map +1 -0
  538. package/dist/primitives/update-banner/index.js +4 -0
  539. package/dist/primitives/update-banner/index.js.map +1 -0
  540. package/dist/slide/index.d.ts +212 -0
  541. package/dist/slide/index.js +3 -0
  542. package/dist/slide/index.js.map +1 -0
  543. package/dist/slide/plugins/emoji/index.d.ts +29 -0
  544. package/dist/slide/plugins/emoji/index.js +157 -0
  545. package/dist/slide/plugins/emoji/index.js.map +1 -0
  546. package/dist/slide/plugins/math/index.d.ts +13 -0
  547. package/dist/slide/plugins/math/index.js +145 -0
  548. package/dist/slide/plugins/math/index.js.map +1 -0
  549. package/dist/slide/plugins/mermaid/index.d.ts +55 -0
  550. package/dist/slide/plugins/mermaid/index.js +218 -0
  551. package/dist/slide/plugins/mermaid/index.js.map +1 -0
  552. package/dist/slide/plugins/shiki/index.d.ts +18 -0
  553. package/dist/slide/plugins/shiki/index.js +87 -0
  554. package/dist/slide/plugins/shiki/index.js.map +1 -0
  555. package/dist/slide/themes/default.css +256 -0
  556. package/dist/slide/themes/layouts.css +143 -0
  557. package/dist/slide/themes/violet-forge.css +256 -0
  558. package/dist/slide-deck/index.css +52 -0
  559. package/dist/slide-deck/index.css.map +1 -0
  560. package/dist/slide-deck/index.d.ts +377 -0
  561. package/dist/slide-deck/index.js +1111 -0
  562. package/dist/slide-deck/index.js.map +1 -0
  563. package/dist/styles-v3-legacy.css +88 -0
  564. package/dist/styles.css +137 -0
  565. package/dist/tokens-v4.css +187 -0
  566. package/dist/tokens.css +230 -0
  567. package/dist/vite-plugin.d.ts +29 -0
  568. package/dist/vite-plugin.js +76 -0
  569. package/dist/vite-plugin.js.map +1 -0
  570. package/dist/whiteboard/index.d.ts +258 -0
  571. package/dist/whiteboard/index.js +738 -0
  572. package/dist/whiteboard/index.js.map +1 -0
  573. package/llms.txt +273 -0
  574. package/package.json +800 -0
  575. package/registry/index.json +856 -0
  576. package/registry/r/account-menu.json +24 -0
  577. package/registry/r/action-bar.json +22 -0
  578. package/registry/r/agent-composer.json +22 -0
  579. package/registry/r/agent-editor.json +27 -0
  580. package/registry/r/agent-error-card.json +22 -0
  581. package/registry/r/agent-event.json +24 -0
  582. package/registry/r/agent-handoff.json +22 -0
  583. package/registry/r/agent-profile.json +23 -0
  584. package/registry/r/agent-starting-state.json +22 -0
  585. package/registry/r/agent-stream.json +27 -0
  586. package/registry/r/agent-streaming.json +22 -0
  587. package/registry/r/agent-timeline.json +22 -0
  588. package/registry/r/agent-types.json +15 -0
  589. package/registry/r/alert.json +22 -0
  590. package/registry/r/approval-card.json +25 -0
  591. package/registry/r/artifact-preview.json +22 -0
  592. package/registry/r/attachment-chip.json +24 -0
  593. package/registry/r/audit-log-entry.json +23 -0
  594. package/registry/r/auto-compact-notice.json +22 -0
  595. package/registry/r/avatar.json +23 -0
  596. package/registry/r/badge.json +22 -0
  597. package/registry/r/browser-controls.json +22 -0
  598. package/registry/r/build-log-stream.json +19 -0
  599. package/registry/r/button.json +23 -0
  600. package/registry/r/capability-indicator.json +23 -0
  601. package/registry/r/card.json +22 -0
  602. package/registry/r/chat-composer.json +23 -0
  603. package/registry/r/chat-message.json +129 -0
  604. package/registry/r/chat-thread.json +20 -0
  605. package/registry/r/chat-types.json +15 -0
  606. package/registry/r/checkbox.json +24 -0
  607. package/registry/r/cn.json +19 -0
  608. package/registry/r/code-block.json +21 -0
  609. package/registry/r/command-palette.json +25 -0
  610. package/registry/r/confirm-dialog.json +25 -0
  611. package/registry/r/context-card.json +23 -0
  612. package/registry/r/context-window-bar.json +20 -0
  613. package/registry/r/copy-button.json +22 -0
  614. package/registry/r/cost-meter.json +22 -0
  615. package/registry/r/created-files-card.json +23 -0
  616. package/registry/r/cron-job-card.json +22 -0
  617. package/registry/r/cron-jobs-list.json +23 -0
  618. package/registry/r/danger-zone.json +20 -0
  619. package/registry/r/data-table.json +27 -0
  620. package/registry/r/deployment-row.json +23 -0
  621. package/registry/r/dialog.json +23 -0
  622. package/registry/r/diff-viewer.json +20 -0
  623. package/registry/r/domain-config.json +25 -0
  624. package/registry/r/dropdown-menu.json +23 -0
  625. package/registry/r/empty-state.json +20 -0
  626. package/registry/r/env-var-editor.json +25 -0
  627. package/registry/r/folder-context-card.json +23 -0
  628. package/registry/r/folder-selector.json +22 -0
  629. package/registry/r/form-field.json +23 -0
  630. package/registry/r/hook-config.json +22 -0
  631. package/registry/r/hook-event-log.json +22 -0
  632. package/registry/r/input.json +22 -0
  633. package/registry/r/intent-selector.json +24 -0
  634. package/registry/r/label.json +22 -0
  635. package/registry/r/lane-board.json +20 -0
  636. package/registry/r/live-region-context.json +16 -0
  637. package/registry/r/login-split.json +20 -0
  638. package/registry/r/mcp-server-card.json +22 -0
  639. package/registry/r/mcp-server-list.json +23 -0
  640. package/registry/r/memory-editor.json +23 -0
  641. package/registry/r/mention-menu.json +23 -0
  642. package/registry/r/metrics-panel.json +22 -0
  643. package/registry/r/mode-types.json +15 -0
  644. package/registry/r/model-card.json +23 -0
  645. package/registry/r/model-selector.json +23 -0
  646. package/registry/r/page-shell.json +25 -0
  647. package/registry/r/pagination.json +22 -0
  648. package/registry/r/permission-matrix.json +22 -0
  649. package/registry/r/permission-modal.json +24 -0
  650. package/registry/r/permission-types.json +15 -0
  651. package/registry/r/pin-input.json +20 -0
  652. package/registry/r/plan-badge.json +20 -0
  653. package/registry/r/preview-env-card.json +25 -0
  654. package/registry/r/preview-panel.json +21 -0
  655. package/registry/r/progress-checklist.json +23 -0
  656. package/registry/r/progress.json +20 -0
  657. package/registry/r/project-card.json +25 -0
  658. package/registry/r/project-switcher.json +22 -0
  659. package/registry/r/quick-action-chips.json +21 -0
  660. package/registry/r/radio-group.json +23 -0
  661. package/registry/r/recent-folders-list.json +22 -0
  662. package/registry/r/rollback-ui.json +24 -0
  663. package/registry/r/rule-card.json +23 -0
  664. package/registry/r/rule-editor.json +28 -0
  665. package/registry/r/rule-types.json +18 -0
  666. package/registry/r/run-stats.json +22 -0
  667. package/registry/r/running-tasks-panel.json +22 -0
  668. package/registry/r/safe-href.json +16 -0
  669. package/registry/r/scroll-area.json +22 -0
  670. package/registry/r/select.json +24 -0
  671. package/registry/r/session-list-item.json +20 -0
  672. package/registry/r/session-timeline.json +22 -0
  673. package/registry/r/sheet.json +24 -0
  674. package/registry/r/sidebar.json +19 -0
  675. package/registry/r/skeleton.json +19 -0
  676. package/registry/r/skill-card.json +24 -0
  677. package/registry/r/skill-editor.json +28 -0
  678. package/registry/r/skills-list.json +23 -0
  679. package/registry/r/slide-deck.json +130 -0
  680. package/registry/r/slide-plugin-emoji.json +28 -0
  681. package/registry/r/slide-plugin-math.json +24 -0
  682. package/registry/r/slide-plugin-mermaid.json +23 -0
  683. package/registry/r/slide-plugin-shiki.json +23 -0
  684. package/registry/r/slide.json +123 -0
  685. package/registry/r/social-auth-row.json +21 -0
  686. package/registry/r/stat-tile.json +22 -0
  687. package/registry/r/status-dot.json +20 -0
  688. package/registry/r/steps-rail.json +20 -0
  689. package/registry/r/sub-agent-dispatch.json +22 -0
  690. package/registry/r/switch.json +23 -0
  691. package/registry/r/system-prompt-editor.json +22 -0
  692. package/registry/r/table.json +22 -0
  693. package/registry/r/tabs.json +22 -0
  694. package/registry/r/tailwind-preset.json +19 -0
  695. package/registry/r/task-header.json +24 -0
  696. package/registry/r/task-plan.json +22 -0
  697. package/registry/r/task-types.json +15 -0
  698. package/registry/r/terminal-panel.json +22 -0
  699. package/registry/r/textarea.json +22 -0
  700. package/registry/r/theme-provider.json +59 -0
  701. package/registry/r/theme-script.json +18 -0
  702. package/registry/r/theo-ui-provider.json +20 -0
  703. package/registry/r/timestamp.json +20 -0
  704. package/registry/r/toast.json +30 -0
  705. package/registry/r/token-usage-chart.json +20 -0
  706. package/registry/r/tokens.json +21 -0
  707. package/registry/r/tool-call-card.json +23 -0
  708. package/registry/r/tool-call.json +22 -0
  709. package/registry/r/tool-result.json +20 -0
  710. package/registry/r/tools-list.json +23 -0
  711. package/registry/r/tooltip.json +22 -0
  712. package/registry/r/topnav.json +22 -0
  713. package/registry/r/types.json +15 -0
  714. package/registry/r/usage-meter.json +21 -0
  715. package/registry/r/whiteboard.json +101 -0
@@ -0,0 +1,230 @@
1
+ /* Theo UI — Design System "Violet Forge" tokens.
2
+ *
3
+ * Tokens normativos. Não edite valores aqui sem revisão do design system.
4
+ * Referência: docs/design-system.md
5
+ *
6
+ * Estratégia:
7
+ * - CSS custom properties para todas as cores, scales e durations.
8
+ * - Default é light. Dark é ativado via [data-theme="dark"] ou .dark.
9
+ * - HSL split (h s l) em vez de hex permite alpha via color-mix() ou hsl(var(--x) / .5).
10
+ *
11
+ * Roxo Theo: #7C3AED → hsl(262 83% 58%)
12
+ * Burnt sienna: #C96442 → hsl(15 54% 53%)
13
+ */
14
+
15
+ /* `:root` and `[data-theme="dark"]` declarations are intentionally NOT wrapped
16
+ * in `@layer base` so they apply at the document level regardless of whether
17
+ * the consumer's CSS pipeline runs Tailwind's preflight. The texture utilities
18
+ * below remain in `@layer utilities` because that layer affects ordering only,
19
+ * not the cascade root.
20
+ */
21
+ :root {
22
+ /* Base palette ------------------------------------------------------- *
23
+ * Neutrals are 100% desaturated (Vercel-style). Color comes from the
24
+ * primary (violet) + accent (burnt sienna) tokens below — never from
25
+ * surface tints.
26
+ */
27
+ --background: 0 0% 100%; /* #FFFFFF */
28
+ --foreground: 0 0% 4%; /* #0A0A0A */
29
+
30
+ --card: 0 0% 100%; /* #FFFFFF */
31
+ --card-foreground: 0 0% 4%;
32
+
33
+ --popover: 0 0% 100%;
34
+ --popover-foreground: 0 0% 4%;
35
+
36
+ /* Primary — Theo violet (equity) ------------------------------------- */
37
+ --primary: 262 83% 58%; /* #7C3AED */
38
+ --primary-deep: 263 70% 42%; /* #5B21B6 — pressed */
39
+ --primary-glow: 263 90% 76%; /* #A78BFA — hover halo */
40
+ --primary-foreground: 0 0% 100%;
41
+
42
+ /* Secondary — neutral muted ----------------------------------------- */
43
+ --secondary: 0 0% 96%; /* #F5F5F5 */
44
+ --secondary-foreground: 0 0% 4%;
45
+
46
+ /* Accent — burnt sienna --------------------------------------------- */
47
+ --accent: 15 54% 53%; /* #C96442 */
48
+ --accent-deep: 15 55% 40%; /* #9C4A2E */
49
+ --accent-foreground: 0 0% 100%;
50
+
51
+ /* Muted ------------------------------------------------------------- */
52
+ --muted: 0 0% 96%;
53
+ --muted-foreground: 0 0% 45%; /* #737373 */
54
+
55
+ /* Surfaces, borders, inputs ----------------------------------------- */
56
+ --border: 0 0% 91%; /* #E8E8E8 — Vercel-style hairline */
57
+ --input: 0 0% 91%;
58
+ --ring: 262 83% 58%; /* matches primary */
59
+
60
+ /* Semantics --------------------------------------------------------- */
61
+ --success: 142 71% 36%; /* #16A34A */
62
+ --success-foreground: 0 0% 100%;
63
+ --warning: 33 92% 44%; /* #D97706 */
64
+ --warning-foreground: 0 0% 100%;
65
+ --destructive: 0 72% 51%; /* #DC2626 */
66
+ --destructive-foreground: 0 0% 100%;
67
+ --info: 217 91% 60%; /* #3B82F6 */
68
+ --info-foreground: 0 0% 100%;
69
+
70
+ /* Radii ------------------------------------------------------------- */
71
+ --radius-none: 0px;
72
+ --radius-sm: 4px;
73
+ --radius-md: 6px;
74
+ --radius-lg: 10px;
75
+ --radius-xl: 14px;
76
+ --radius-2xl: 20px;
77
+ --radius-full: 9999px;
78
+ /* shadcn compat */
79
+ --radius: 14px;
80
+
81
+ /* Spacing scale (4px base) ------------------------------------------ */
82
+ --space-1: 4px;
83
+ --space-2: 8px;
84
+ --space-3: 12px;
85
+ --space-4: 16px;
86
+ --space-5: 20px;
87
+ --space-6: 24px;
88
+ --space-8: 32px;
89
+ --space-10: 40px;
90
+ --space-12: 48px;
91
+ --space-16: 64px;
92
+ --space-20: 80px;
93
+ --space-24: 96px;
94
+ --space-32: 128px;
95
+
96
+ /* Elevation — theme-aware (uses --foreground for shadow ink,
97
+ * --primary for the signature glow, so swapping themes recolors them).
98
+ */
99
+ --shadow-sm: 0 1px 2px 0 hsl(var(--foreground) / 0.06);
100
+ --shadow-md: 0 2px 8px -2px hsl(var(--foreground) / 0.08), 0 1px 3px hsl(var(--foreground) / 0.06);
101
+ --shadow-lg: 0 12px 32px -8px hsl(var(--foreground) / 0.12), 0 4px 12px
102
+ hsl(var(--foreground) / 0.08);
103
+ --shadow-glow: 0 0 24px hsl(var(--primary) / 0.25);
104
+ --shadow-glow-strong: 0 0 32px hsl(var(--primary) / 0.4);
105
+
106
+ /* Motion ------------------------------------------------------------ */
107
+ --ease-out-soft: cubic-bezier(0.22, 1, 0.36, 1);
108
+ --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
109
+ --ease-snap: cubic-bezier(0.85, 0, 0.15, 1);
110
+ --duration-fast: 120ms;
111
+ --duration-base: 200ms;
112
+ --duration-slow: 360ms;
113
+ --stagger: 60ms;
114
+
115
+ /* Typography (Geist family — Vercel-inspired Violet Forge) ---------- */
116
+ --font-display: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
117
+ --font-body: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
118
+ --font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
119
+ }
120
+
121
+ /* Dark mode — dominante --------------------------------------------- *
122
+ * Vercel-aligned grayscale: pure neutrals (0% saturation) for every
123
+ * surface and text layer. Color only in primary (violet), accent (burnt
124
+ * sienna), and semantic tokens (success/warning/destructive/info).
125
+ *
126
+ * Activated exclusively via the `.dark` class on `<html>` (set by
127
+ * `ThemeProvider`, `ThemeScript`, or consumers manually). The previous
128
+ * `[data-theme="dark"]` companion selector was dead — `data-theme` holds
129
+ * the theme NAME, never the literal `"dark"`.
130
+ */
131
+ .dark {
132
+ --background: 0 0% 4%; /* #0A0A0A */
133
+ --foreground: 0 0% 96%; /* #F5F5F5 */
134
+
135
+ --card: 0 0% 7%; /* #121212 */
136
+ --card-foreground: 0 0% 96%;
137
+
138
+ --popover: 0 0% 9%; /* #171717 */
139
+ --popover-foreground: 0 0% 96%;
140
+
141
+ --primary: 262 83% 58%;
142
+ --primary-deep: 263 70% 42%;
143
+ --primary-glow: 263 90% 76%;
144
+ --primary-foreground: 0 0% 100%;
145
+
146
+ --secondary: 0 0% 11%; /* #1C1C1C */
147
+ --secondary-foreground: 0 0% 96%;
148
+
149
+ --accent: 15 54% 53%;
150
+ --accent-deep: 15 55% 40%;
151
+ --accent-foreground: 0 0% 100%;
152
+
153
+ --muted: 0 0% 11%;
154
+ --muted-foreground: 0 0% 60%; /* #999 — Vercel gray-500 */
155
+
156
+ --border: 0 0% 16%; /* #292929 */
157
+ --input: 0 0% 11%;
158
+ --ring: 262 83% 58%;
159
+
160
+ --success: 152 79% 52%; /* #22E58C */
161
+ --success-foreground: 0 0% 4%;
162
+ --warning: 38 92% 50%; /* #F59E0B */
163
+ --warning-foreground: 0 0% 4%;
164
+ --destructive: 350 100% 65%; /* #FF4F6D */
165
+ --destructive-foreground: 0 0% 4%;
166
+ --info: 213 100% 70%; /* #5FB3FF */
167
+ --info-foreground: 0 0% 4%;
168
+
169
+ /* In dark mode, shadows are heavier ink (against the dark surface) and
170
+ * the glow brightens. Both still derive from theme tokens.
171
+ */
172
+ --shadow-sm: 0 1px 2px 0 hsl(0 0% 0% / 0.4);
173
+ --shadow-md: 0 2px 8px -2px hsl(0 0% 0% / 0.5), 0 1px 3px hsl(0 0% 0% / 0.4);
174
+ --shadow-lg: 0 12px 32px -8px hsl(0 0% 0% / 0.6), 0 4px 12px hsl(0 0% 0% / 0.4);
175
+ --shadow-glow: 0 0 24px hsl(var(--primary-glow) / 0.4);
176
+ --shadow-glow-strong: 0 0 36px hsl(var(--primary-glow) / 0.6);
177
+ }
178
+
179
+ /* Reduced motion — neutralizes durations and transitions for users who
180
+ * request prefers-reduced-motion: reduce. Components that use animation as
181
+ * semantic state (e.g. a spinner on a running step) can opt back in with
182
+ * Tailwind's `motion-safe:` prefix.
183
+ *
184
+ * Reference: WCAG 2.3.3 Animation from Interactions (Level AAA).
185
+ */
186
+ @media (prefers-reduced-motion: reduce) {
187
+ :root {
188
+ --duration-fast: 0ms;
189
+ --duration-base: 0ms;
190
+ --duration-slow: 0ms;
191
+ --stagger: 0ms;
192
+ }
193
+ *,
194
+ *::before,
195
+ *::after {
196
+ animation-duration: 0.001ms !important;
197
+ animation-iteration-count: 1 !important;
198
+ transition-duration: 0.001ms !important;
199
+ scroll-behavior: auto !important;
200
+ }
201
+ }
202
+
203
+ /* Texture utilities (signature) ---------------------------------------- */
204
+ @layer utilities {
205
+ .bg-dotted-violet {
206
+ background-image: radial-gradient(hsl(var(--primary) / 0.08) 1px, transparent 1px);
207
+ background-size: 20px 20px;
208
+ }
209
+
210
+ .bg-dotted-violet-strong {
211
+ background-image: radial-gradient(hsl(var(--primary) / 0.16) 1px, transparent 1px);
212
+ background-size: 20px 20px;
213
+ }
214
+
215
+ .bg-hero-glow {
216
+ background-image: radial-gradient(
217
+ ellipse 60% 50% at 70% 0%,
218
+ hsl(var(--primary) / 0.18) 0%,
219
+ transparent 60%
220
+ );
221
+ }
222
+
223
+ .bg-paper-grain {
224
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.06 0 0 0 0 0.04 0 0 0 0 0.08 0 0 0 0.18 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
225
+ }
226
+
227
+ .text-balance {
228
+ text-wrap: balance;
229
+ }
230
+ }
@@ -0,0 +1,29 @@
1
+ import { Plugin } from 'vite';
2
+
3
+ /**
4
+ * `@theokit/ui/vite-plugin` — auto-wire Tailwind v4 for consumers.
5
+ *
6
+ * Default export is a factory returning ONE Vite Plugin. Internally:
7
+ * 1. chains `@tailwindcss/vite` v4 via the `config()` hook when resolvable
8
+ * and `opts.tailwind !== false`,
9
+ * 2. exposes a virtual module `virtual:@theokit/ui/library-sources.css`
10
+ * whose contents register `@source` directives covering the library's
11
+ * published files, so consumer-side Tailwind scans `@theokit/ui` JSX
12
+ * and emits its utility classes,
13
+ * 3. degrades gracefully via `console.warn` (never throws) when
14
+ * `@tailwindcss/vite` is not installed — the surface stays usable in
15
+ * CSS-only mode via the pre-built `@theokit/ui/styles.css` subpath.
16
+ *
17
+ * This is the cross-repo contract TheoKit's `integrateUseTheoUI()` probes
18
+ * for. See `docs/rfcs/0008-vite-plugin-and-preset.md`.
19
+ */
20
+
21
+ interface UseTheoUIPluginOptions {
22
+ /** Disable Tailwind v4 auto-chain. Default: `true`. */
23
+ tailwind?: boolean;
24
+ /** Extra `@source` globs merged into the library defaults. */
25
+ contentExtra?: string[];
26
+ }
27
+ declare function useTheoUIVite(opts?: UseTheoUIPluginOptions): Plugin;
28
+
29
+ export { type UseTheoUIPluginOptions, useTheoUIVite as default };
@@ -0,0 +1,76 @@
1
+ // src/vite-plugin.ts
2
+ var PLUGIN_NAME = "@theokit/ui/vite-plugin";
3
+ var VIRTUAL_ID = "virtual:@theokit/ui/library-sources.css";
4
+ var RESOLVED_VIRTUAL_ID = `\0${VIRTUAL_ID}`;
5
+ function buildLibrarySourcesCss(extra = []) {
6
+ if (extra.length === 0) {
7
+ return [
8
+ "/* @theokit/ui/vite-plugin \u2014 `virtual:@theokit/ui/library-sources.css` */",
9
+ "/* The library now ships pre-compiled utility CSS via `dist/components.css` */",
10
+ "/* (chained from `dist/styles.css`), so no `@source` glob is needed here. */",
11
+ "/* This virtual module remains resolvable for backwards compatibility. */",
12
+ ""
13
+ ].join("\n");
14
+ }
15
+ return `${extra.map((g) => `@source ${JSON.stringify(g)};`).join("\n")}
16
+ `;
17
+ }
18
+ function useTheoUIVite(opts = {}) {
19
+ const wantsTailwind = opts.tailwind !== false;
20
+ const extra = opts.contentExtra ?? [];
21
+ let warned = false;
22
+ const warnMissingPeer = () => {
23
+ if (warned) return;
24
+ warned = true;
25
+ console.warn(
26
+ `[${PLUGIN_NAME}] @tailwindcss/vite was not resolvable; falling back to CSS-only mode. Install \`@tailwindcss/vite@^4\` to get the utility-driven design tokens, or import \`@theokit/ui/styles.css\` directly for the pre-built surface.`
27
+ );
28
+ };
29
+ return {
30
+ name: PLUGIN_NAME,
31
+ // Vite's typing for `config()` since 5.x explicitly omits `plugins` from
32
+ // the allowed return shape to nudge authors toward `Plugin[]` factories.
33
+ // The runtime still honors `{ plugins }` merge, and the TheoKit contract
34
+ // requires ONE Plugin object (so we can't return `Plugin[]` here).
35
+ // The cast keeps the public surface honest and the type-checker quiet.
36
+ async config(_userConfig, _env) {
37
+ if (!wantsTailwind) {
38
+ return void 0;
39
+ }
40
+ try {
41
+ const specifier = "@tailwindcss/vite";
42
+ const mod = await import(
43
+ /* @vite-ignore */
44
+ specifier
45
+ );
46
+ const factory = mod.default;
47
+ if (typeof factory !== "function") {
48
+ warnMissingPeer();
49
+ return void 0;
50
+ }
51
+ const tw = factory();
52
+ const tailwindPlugins = Array.isArray(tw) ? tw : [tw];
53
+ return { plugins: tailwindPlugins };
54
+ } catch {
55
+ warnMissingPeer();
56
+ return void 0;
57
+ }
58
+ },
59
+ resolveId(id) {
60
+ if (id === VIRTUAL_ID) {
61
+ return RESOLVED_VIRTUAL_ID;
62
+ }
63
+ return void 0;
64
+ },
65
+ load(id) {
66
+ if (id === RESOLVED_VIRTUAL_ID) {
67
+ return buildLibrarySourcesCss(extra);
68
+ }
69
+ return void 0;
70
+ }
71
+ };
72
+ }
73
+
74
+ export { useTheoUIVite as default };
75
+ //# sourceMappingURL=vite-plugin.js.map
76
+ //# sourceMappingURL=vite-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/vite-plugin.ts"],"names":[],"mappings":";AA0BA,IAAM,WAAA,GAAc,yBAAA;AACpB,IAAM,UAAA,GAAa,yCAAA;AACnB,IAAM,mBAAA,GAAsB,KAAK,UAAU,CAAA,CAAA;AAE3C,SAAS,sBAAA,CAAuB,KAAA,GAAkB,EAAC,EAAW;AAuB5D,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO;AAAA,MACL,gFAAA;AAAA,MACA,gFAAA;AAAA,MACA,8EAAA;AAAA,MACA,2EAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI,CAAA;AAAA,EACb;AACA,EAAA,OAAO,CAAA,EAAG,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,CAAA,QAAA,EAAW,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAA,CAAA,CAAG,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC;AAAA,CAAA;AACxE;AAEe,SAAR,aAAA,CAA+B,IAAA,GAA+B,EAAC,EAAW;AAC/E,EAAA,MAAM,aAAA,GAAgB,KAAK,QAAA,KAAa,KAAA;AACxC,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,IAAgB,EAAC;AAEpC,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,MAAM,kBAAkB,MAAY;AAClC,IAAA,IAAI,MAAA,EAAQ;AACZ,IAAA,MAAA,GAAS,IAAA;AAET,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN,IAAI,WAAW,CAAA,yNAAA;AAAA,KACjB;AAAA,EACF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,WAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAON,MAAM,MAAA,CAAO,WAAA,EAAa,IAAA,EAAwD;AAChF,MAAA,IAAI,CAAC,aAAA,EAAe;AAClB,QAAA,OAAO,MAAA;AAAA,MACT;AAEA,MAAA,IAAI;AAKF,QAAA,MAAM,SAAA,GAAY,mBAAA;AAClB,QAAA,MAAM,MAAM,MAAM;AAAA;AAAA,UAA0B;AAAA,SAAA;AAC5C,QAAA,MAAM,UAAW,GAAA,CAA8B,OAAA;AAC/C,QAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AACjC,UAAA,eAAA,EAAgB;AAChB,UAAA,OAAO,KAAA,CAAA;AAAA,QACT;AACA,QAAA,MAAM,KAAM,OAAA,EAAoC;AAChD,QAAA,MAAM,kBAAkB,KAAA,CAAM,OAAA,CAAQ,EAAE,CAAA,GAAI,EAAA,GAAK,CAAC,EAAE,CAAA;AACpD,QAAA,OAAO,EAAE,SAAS,eAAA,EAAgB;AAAA,MACpC,CAAA,CAAA,MAAQ;AACN,QAAA,eAAA,EAAgB;AAChB,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,IACF,CAAA;AAAA,IAEA,UAAU,EAAA,EAAI;AACZ,MAAA,IAAI,OAAO,UAAA,EAAY;AACrB,QAAA,OAAO,mBAAA;AAAA,MACT;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAAA,IAEA,KAAK,EAAA,EAAI;AACP,MAAA,IAAI,OAAO,mBAAA,EAAqB;AAC9B,QAAA,OAAO,uBAAuB,KAAK,CAAA;AAAA,MACrC;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AACF","file":"vite-plugin.js","sourcesContent":["/**\n * `@theokit/ui/vite-plugin` — auto-wire Tailwind v4 for consumers.\n *\n * Default export is a factory returning ONE Vite Plugin. Internally:\n * 1. chains `@tailwindcss/vite` v4 via the `config()` hook when resolvable\n * and `opts.tailwind !== false`,\n * 2. exposes a virtual module `virtual:@theokit/ui/library-sources.css`\n * whose contents register `@source` directives covering the library's\n * published files, so consumer-side Tailwind scans `@theokit/ui` JSX\n * and emits its utility classes,\n * 3. degrades gracefully via `console.warn` (never throws) when\n * `@tailwindcss/vite` is not installed — the surface stays usable in\n * CSS-only mode via the pre-built `@theokit/ui/styles.css` subpath.\n *\n * This is the cross-repo contract TheoKit's `integrateUseTheoUI()` probes\n * for. See `docs/rfcs/0008-vite-plugin-and-preset.md`.\n */\nimport type { Plugin, UserConfig } from \"vite\";\n\nexport interface UseTheoUIPluginOptions {\n /** Disable Tailwind v4 auto-chain. Default: `true`. */\n tailwind?: boolean;\n /** Extra `@source` globs merged into the library defaults. */\n contentExtra?: string[];\n}\n\nconst PLUGIN_NAME = \"@theokit/ui/vite-plugin\";\nconst VIRTUAL_ID = \"virtual:@theokit/ui/library-sources.css\";\nconst RESOLVED_VIRTUAL_ID = `\\0${VIRTUAL_ID}`;\n\nfunction buildLibrarySourcesCss(extra: string[] = []): string {\n // RFC 0008 follow-up #2 (0.6.1-next.0):\n // The previous implementation emitted `@source` globs pointing at\n // `node_modules/@theokit/ui/dist/**/*.{js,mjs,cjs}` so Tailwind v4 would\n // scan the library's published JS for utility classes. Under pnpm,\n // `node_modules/@theokit/ui` is a symlink to a deep `.pnpm` directory\n // and Tailwind v4's tinyglobby scanner does NOT follow symlinks — the\n // glob expanded to zero matches and the consumer saw flat-rendered\n // components (no hover/focus/active variants emitted).\n //\n // The fix lives entirely on the library side: `dist/styles.css` now\n // chains `@import \"./components.css\"`, a pre-compiled CSS file built\n // by `scripts/build-precompiled-css.ts` containing the materialized\n // utility rules for every class the library uses. Consumers get every\n // variant for free with a single `@import \"@theokit/ui/styles.css\"` —\n // no filesystem scanning, no symlink dependency.\n //\n // The virtual module below is retained for backwards compatibility\n // (TheoKit's earlier integration code may still resolve it) but it\n // now emits ONLY the optional consumer-supplied `contentExtra` globs.\n // The library-side default globs are gone — pre-compiled CSS replaces\n // them. Returning empty (`extra = []`) is safe; Tailwind v4 ignores\n // empty CSS.\n if (extra.length === 0) {\n return [\n \"/* @theokit/ui/vite-plugin — `virtual:@theokit/ui/library-sources.css` */\",\n \"/* The library now ships pre-compiled utility CSS via `dist/components.css` */\",\n \"/* (chained from `dist/styles.css`), so no `@source` glob is needed here. */\",\n \"/* This virtual module remains resolvable for backwards compatibility. */\",\n \"\",\n ].join(\"\\n\");\n }\n return `${extra.map((g) => `@source ${JSON.stringify(g)};`).join(\"\\n\")}\\n`;\n}\n\nexport default function useTheoUIVite(opts: UseTheoUIPluginOptions = {}): Plugin {\n const wantsTailwind = opts.tailwind !== false;\n const extra = opts.contentExtra ?? [];\n\n let warned = false;\n const warnMissingPeer = (): void => {\n if (warned) return;\n warned = true;\n // biome-ignore lint/suspicious/noConsole: TheoKit cross-repo contract requires `console.warn` (not throw) when the optional `@tailwindcss/vite` peer is missing. See RFC 0008 §3 D1.\n console.warn(\n `[${PLUGIN_NAME}] @tailwindcss/vite was not resolvable; falling back to CSS-only mode. Install \\`@tailwindcss/vite@^4\\` to get the utility-driven design tokens, or import \\`@theokit/ui/styles.css\\` directly for the pre-built surface.`,\n );\n };\n\n return {\n name: PLUGIN_NAME,\n\n // Vite's typing for `config()` since 5.x explicitly omits `plugins` from\n // the allowed return shape to nudge authors toward `Plugin[]` factories.\n // The runtime still honors `{ plugins }` merge, and the TheoKit contract\n // requires ONE Plugin object (so we can't return `Plugin[]` here).\n // The cast keeps the public surface honest and the type-checker quiet.\n async config(_userConfig, _env): Promise<Omit<UserConfig, \"plugins\"> | undefined> {\n if (!wantsTailwind) {\n return undefined;\n }\n\n try {\n // Dynamic import keeps `@tailwindcss/vite` as an OPTIONAL peer. The\n // specifier is held in a variable so Vite's import-analysis pass\n // leaves it alone — at runtime the consumer's resolver does the\n // actual resolution. Resolution failure must not crash the build.\n const specifier = \"@tailwindcss/vite\";\n const mod = await import(/* @vite-ignore */ specifier);\n const factory = (mod as { default?: unknown }).default;\n if (typeof factory !== \"function\") {\n warnMissingPeer();\n return undefined;\n }\n const tw = (factory as () => Plugin | Plugin[])();\n const tailwindPlugins = Array.isArray(tw) ? tw : [tw];\n return { plugins: tailwindPlugins } as unknown as Omit<UserConfig, \"plugins\">;\n } catch {\n warnMissingPeer();\n return undefined;\n }\n },\n\n resolveId(id) {\n if (id === VIRTUAL_ID) {\n return RESOLVED_VIRTUAL_ID;\n }\n return undefined;\n },\n\n load(id) {\n if (id === RESOLVED_VIRTUAL_ID) {\n return buildLibrarySourcesCss(extra);\n }\n return undefined;\n },\n };\n}\n"]}
@@ -0,0 +1,258 @@
1
+ import * as react from 'react';
2
+ import { z } from 'zod';
3
+
4
+ /**
5
+ * Zod schema for the Whiteboard JSON v1 (`WhiteboardScene`).
6
+ *
7
+ * Design goals (see RFC 0001 §4 and ADR D4 in the plan):
8
+ * - LLM-friendly: minimal fields per element.
9
+ * - Discriminated union by `type` for exhaustive typing in TS.
10
+ * - Defensive against LLM mistakes:
11
+ * - EC-3: `.finite()` everywhere — rejects NaN / Infinity.
12
+ * - EC-4: `.max()` on dimensions to cap absurd values from the model.
13
+ */
14
+
15
+ declare const whiteboardScene: z.ZodObject<{
16
+ version: z.ZodLiteral<1>;
17
+ width: z.ZodNumber;
18
+ height: z.ZodNumber;
19
+ background: z.ZodOptional<z.ZodString>;
20
+ elements: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
21
+ id: z.ZodOptional<z.ZodString>;
22
+ x: z.ZodNumber;
23
+ y: z.ZodNumber;
24
+ stroke: z.ZodOptional<z.ZodString>;
25
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
26
+ strokeStyle: z.ZodOptional<z.ZodEnum<{
27
+ solid: "solid";
28
+ dashed: "dashed";
29
+ dotted: "dotted";
30
+ }>>;
31
+ fill: z.ZodOptional<z.ZodString>;
32
+ fillStyle: z.ZodOptional<z.ZodEnum<{
33
+ solid: "solid";
34
+ hachure: "hachure";
35
+ "cross-hatch": "cross-hatch";
36
+ zigzag: "zigzag";
37
+ }>>;
38
+ opacity: z.ZodOptional<z.ZodNumber>;
39
+ roughness: z.ZodOptional<z.ZodNumber>;
40
+ seed: z.ZodOptional<z.ZodNumber>;
41
+ type: z.ZodLiteral<"rect">;
42
+ w: z.ZodNumber;
43
+ h: z.ZodNumber;
44
+ label: z.ZodOptional<z.ZodString>;
45
+ roundness: z.ZodOptional<z.ZodEnum<{
46
+ sharp: "sharp";
47
+ round: "round";
48
+ }>>;
49
+ }, z.core.$strip>, z.ZodObject<{
50
+ id: z.ZodOptional<z.ZodString>;
51
+ x: z.ZodNumber;
52
+ y: z.ZodNumber;
53
+ stroke: z.ZodOptional<z.ZodString>;
54
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
55
+ strokeStyle: z.ZodOptional<z.ZodEnum<{
56
+ solid: "solid";
57
+ dashed: "dashed";
58
+ dotted: "dotted";
59
+ }>>;
60
+ fill: z.ZodOptional<z.ZodString>;
61
+ fillStyle: z.ZodOptional<z.ZodEnum<{
62
+ solid: "solid";
63
+ hachure: "hachure";
64
+ "cross-hatch": "cross-hatch";
65
+ zigzag: "zigzag";
66
+ }>>;
67
+ opacity: z.ZodOptional<z.ZodNumber>;
68
+ roughness: z.ZodOptional<z.ZodNumber>;
69
+ seed: z.ZodOptional<z.ZodNumber>;
70
+ type: z.ZodLiteral<"ellipse">;
71
+ w: z.ZodNumber;
72
+ h: z.ZodNumber;
73
+ label: z.ZodOptional<z.ZodString>;
74
+ }, z.core.$strip>, z.ZodObject<{
75
+ id: z.ZodOptional<z.ZodString>;
76
+ x: z.ZodNumber;
77
+ y: z.ZodNumber;
78
+ stroke: z.ZodOptional<z.ZodString>;
79
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
80
+ strokeStyle: z.ZodOptional<z.ZodEnum<{
81
+ solid: "solid";
82
+ dashed: "dashed";
83
+ dotted: "dotted";
84
+ }>>;
85
+ fill: z.ZodOptional<z.ZodString>;
86
+ fillStyle: z.ZodOptional<z.ZodEnum<{
87
+ solid: "solid";
88
+ hachure: "hachure";
89
+ "cross-hatch": "cross-hatch";
90
+ zigzag: "zigzag";
91
+ }>>;
92
+ opacity: z.ZodOptional<z.ZodNumber>;
93
+ roughness: z.ZodOptional<z.ZodNumber>;
94
+ seed: z.ZodOptional<z.ZodNumber>;
95
+ type: z.ZodLiteral<"diamond">;
96
+ w: z.ZodNumber;
97
+ h: z.ZodNumber;
98
+ label: z.ZodOptional<z.ZodString>;
99
+ }, z.core.$strip>, z.ZodObject<{
100
+ id: z.ZodOptional<z.ZodString>;
101
+ x: z.ZodNumber;
102
+ y: z.ZodNumber;
103
+ stroke: z.ZodOptional<z.ZodString>;
104
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
105
+ strokeStyle: z.ZodOptional<z.ZodEnum<{
106
+ solid: "solid";
107
+ dashed: "dashed";
108
+ dotted: "dotted";
109
+ }>>;
110
+ fill: z.ZodOptional<z.ZodString>;
111
+ fillStyle: z.ZodOptional<z.ZodEnum<{
112
+ solid: "solid";
113
+ hachure: "hachure";
114
+ "cross-hatch": "cross-hatch";
115
+ zigzag: "zigzag";
116
+ }>>;
117
+ opacity: z.ZodOptional<z.ZodNumber>;
118
+ roughness: z.ZodOptional<z.ZodNumber>;
119
+ seed: z.ZodOptional<z.ZodNumber>;
120
+ type: z.ZodLiteral<"line">;
121
+ to: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
122
+ }, z.core.$strip>, z.ZodObject<{
123
+ id: z.ZodOptional<z.ZodString>;
124
+ x: z.ZodNumber;
125
+ y: z.ZodNumber;
126
+ stroke: z.ZodOptional<z.ZodString>;
127
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
128
+ strokeStyle: z.ZodOptional<z.ZodEnum<{
129
+ solid: "solid";
130
+ dashed: "dashed";
131
+ dotted: "dotted";
132
+ }>>;
133
+ fill: z.ZodOptional<z.ZodString>;
134
+ fillStyle: z.ZodOptional<z.ZodEnum<{
135
+ solid: "solid";
136
+ hachure: "hachure";
137
+ "cross-hatch": "cross-hatch";
138
+ zigzag: "zigzag";
139
+ }>>;
140
+ opacity: z.ZodOptional<z.ZodNumber>;
141
+ roughness: z.ZodOptional<z.ZodNumber>;
142
+ seed: z.ZodOptional<z.ZodNumber>;
143
+ type: z.ZodLiteral<"arrow">;
144
+ to: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
145
+ label: z.ZodOptional<z.ZodString>;
146
+ headStart: z.ZodOptional<z.ZodBoolean>;
147
+ headEnd: z.ZodDefault<z.ZodBoolean>;
148
+ }, z.core.$strip>, z.ZodObject<{
149
+ id: z.ZodOptional<z.ZodString>;
150
+ x: z.ZodNumber;
151
+ y: z.ZodNumber;
152
+ stroke: z.ZodOptional<z.ZodString>;
153
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
154
+ strokeStyle: z.ZodOptional<z.ZodEnum<{
155
+ solid: "solid";
156
+ dashed: "dashed";
157
+ dotted: "dotted";
158
+ }>>;
159
+ fill: z.ZodOptional<z.ZodString>;
160
+ fillStyle: z.ZodOptional<z.ZodEnum<{
161
+ solid: "solid";
162
+ hachure: "hachure";
163
+ "cross-hatch": "cross-hatch";
164
+ zigzag: "zigzag";
165
+ }>>;
166
+ opacity: z.ZodOptional<z.ZodNumber>;
167
+ roughness: z.ZodOptional<z.ZodNumber>;
168
+ seed: z.ZodOptional<z.ZodNumber>;
169
+ type: z.ZodLiteral<"text">;
170
+ text: z.ZodString;
171
+ fontSize: z.ZodOptional<z.ZodNumber>;
172
+ align: z.ZodOptional<z.ZodEnum<{
173
+ left: "left";
174
+ center: "center";
175
+ right: "right";
176
+ }>>;
177
+ fontFamily: z.ZodOptional<z.ZodEnum<{
178
+ sans: "sans";
179
+ serif: "serif";
180
+ mono: "mono";
181
+ hand: "hand";
182
+ }>>;
183
+ }, z.core.$strip>, z.ZodObject<{
184
+ id: z.ZodOptional<z.ZodString>;
185
+ x: z.ZodNumber;
186
+ y: z.ZodNumber;
187
+ stroke: z.ZodOptional<z.ZodString>;
188
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
189
+ strokeStyle: z.ZodOptional<z.ZodEnum<{
190
+ solid: "solid";
191
+ dashed: "dashed";
192
+ dotted: "dotted";
193
+ }>>;
194
+ fill: z.ZodOptional<z.ZodString>;
195
+ fillStyle: z.ZodOptional<z.ZodEnum<{
196
+ solid: "solid";
197
+ hachure: "hachure";
198
+ "cross-hatch": "cross-hatch";
199
+ zigzag: "zigzag";
200
+ }>>;
201
+ opacity: z.ZodOptional<z.ZodNumber>;
202
+ roughness: z.ZodOptional<z.ZodNumber>;
203
+ seed: z.ZodOptional<z.ZodNumber>;
204
+ type: z.ZodLiteral<"freedraw">;
205
+ points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodOptional<z.ZodNumber>], null>>;
206
+ }, z.core.$strip>], "type">>;
207
+ }, z.core.$strip>;
208
+ type WhiteboardScene = z.output<typeof whiteboardScene>;
209
+ type WhiteboardSceneInput = z.input<typeof whiteboardScene>;
210
+
211
+ /**
212
+ * Public validator for `WhiteboardScene` JSON. Wraps Zod and converts errors
213
+ * into a structured shape that an LLM can consume to self-correct.
214
+ *
215
+ * Returns `{ ok: true, scene }` on success or `{ ok: false, errors }` with
216
+ * each error carrying `{ path, message, code, got? }`. See RFC 0001 §4.
217
+ */
218
+
219
+ interface ValidationError {
220
+ /** Dot-joined Zod path, e.g. "elements.2.type" or "width". */
221
+ path: string;
222
+ /** Human-readable explanation (passes through Zod's message). */
223
+ message: string;
224
+ /** Zod issue code: `invalid_type`, `too_small`, `invalid_literal`, ... */
225
+ code: string;
226
+ /** Actual value received at `path`. Populated for type mismatches, discriminator mismatches, and any issue where Zod's `received` is absent but the value can be recovered by walking the original input along `path`. */
227
+ got?: unknown;
228
+ }
229
+ type ValidationResult = {
230
+ ok: true;
231
+ scene: WhiteboardScene;
232
+ } | {
233
+ ok: false;
234
+ errors: ValidationError[];
235
+ };
236
+ declare function validateScene(input: unknown): ValidationResult;
237
+
238
+ /** Input type accepted by the component (defaults like `headEnd` are optional). */
239
+ type WhiteboardData = WhiteboardSceneInput;
240
+
241
+ interface WhiteboardProps {
242
+ /** The scene to render. Validated with Zod on every change. */
243
+ data: WhiteboardData | unknown;
244
+ className?: string;
245
+ /** Starting zoom level (clamped 0.1–8). Default 1. */
246
+ initialZoom?: number;
247
+ /** World coordinate centered in the viewport on first render. */
248
+ initialCenter?: [number, number];
249
+ /** When true, computes a bounding box of all elements and zooms to fit. */
250
+ fitOnLoad?: boolean;
251
+ /** Called once per validation failure with the list of errors (EC-6: in useEffect, not render). */
252
+ onValidationError?: (errors: ValidationError[]) => void;
253
+ /** Accessible label for the SVG (defaults to "Whiteboard diagram"). */
254
+ "aria-label"?: string;
255
+ }
256
+ declare function Whiteboard({ data, className, initialZoom, initialCenter, fitOnLoad, onValidationError, "aria-label": ariaLabel, }: WhiteboardProps): react.JSX.Element;
257
+
258
+ export { type ValidationError, type ValidationResult, Whiteboard, type WhiteboardData, type WhiteboardProps, validateScene };