@usetheo/ui 0.13.1 → 0.14.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 (1019) hide show
  1. package/README.md +4 -466
  2. package/dist/components/composites/command-palette/command-palette.d.ts +1 -1
  3. package/dist/components/primitives/badge/badge.d.ts +1 -1
  4. package/dist/components/primitives/button/button.d.ts +1 -1
  5. package/dist/components/primitives/danger-zone/danger-zone.d.ts +1 -1
  6. package/dist/components/primitives/dialog/dialog.d.ts +3 -3
  7. package/dist/components/primitives/dropdown-menu/dropdown-menu.d.ts +1 -1
  8. package/dist/components/primitives/sheet/sheet.d.ts +3 -3
  9. package/dist/components/primitives/toast/toast.d.ts +1 -1
  10. package/dist/index.d.ts +0 -89
  11. package/dist/index.js +4657 -1545
  12. package/dist/lib/cn.d.ts +1 -1
  13. package/dist/{preset-v3-legacy.js → tailwind-preset.js} +1 -16
  14. package/package.json +28 -788
  15. package/CHANGELOG.md +0 -1797
  16. package/DESIGN.md +0 -456
  17. package/NOTICE +0 -38
  18. package/dist/chunk-23YEYNDS.js +0 -89
  19. package/dist/chunk-23YEYNDS.js.map +0 -1
  20. package/dist/chunk-25KBUQEQ.js +0 -95
  21. package/dist/chunk-25KBUQEQ.js.map +0 -1
  22. package/dist/chunk-2A3E5Y72.js +0 -165
  23. package/dist/chunk-2A3E5Y72.js.map +0 -1
  24. package/dist/chunk-2EUKYGH5.js +0 -98
  25. package/dist/chunk-2EUKYGH5.js.map +0 -1
  26. package/dist/chunk-2NZYMQKT.js +0 -56
  27. package/dist/chunk-2NZYMQKT.js.map +0 -1
  28. package/dist/chunk-2OVFVPSZ.js +0 -26
  29. package/dist/chunk-2OVFVPSZ.js.map +0 -1
  30. package/dist/chunk-2UP7SECE.js +0 -78
  31. package/dist/chunk-2UP7SECE.js.map +0 -1
  32. package/dist/chunk-33ETHPT7.js +0 -112
  33. package/dist/chunk-33ETHPT7.js.map +0 -1
  34. package/dist/chunk-33IIDFSM.js +0 -43
  35. package/dist/chunk-33IIDFSM.js.map +0 -1
  36. package/dist/chunk-345HYADQ.js +0 -88
  37. package/dist/chunk-345HYADQ.js.map +0 -1
  38. package/dist/chunk-3ZXZGZOX.js +0 -57
  39. package/dist/chunk-3ZXZGZOX.js.map +0 -1
  40. package/dist/chunk-45FWKR23.js +0 -62
  41. package/dist/chunk-45FWKR23.js.map +0 -1
  42. package/dist/chunk-4DTLUBRW.js +0 -122
  43. package/dist/chunk-4DTLUBRW.js.map +0 -1
  44. package/dist/chunk-4EH6F54D.js +0 -69
  45. package/dist/chunk-4EH6F54D.js.map +0 -1
  46. package/dist/chunk-4EKF4EIE.js +0 -140
  47. package/dist/chunk-4EKF4EIE.js.map +0 -1
  48. package/dist/chunk-4SMYNLTA.js +0 -83
  49. package/dist/chunk-4SMYNLTA.js.map +0 -1
  50. package/dist/chunk-4UBFLXS3.js +0 -35
  51. package/dist/chunk-4UBFLXS3.js.map +0 -1
  52. package/dist/chunk-52J7SDYH.js +0 -48
  53. package/dist/chunk-52J7SDYH.js.map +0 -1
  54. package/dist/chunk-5XCTTXC3.js +0 -180
  55. package/dist/chunk-5XCTTXC3.js.map +0 -1
  56. package/dist/chunk-624AATQZ.js +0 -77
  57. package/dist/chunk-624AATQZ.js.map +0 -1
  58. package/dist/chunk-6IODJQWC.js +0 -47
  59. package/dist/chunk-6IODJQWC.js.map +0 -1
  60. package/dist/chunk-75IDWFYX.js +0 -134
  61. package/dist/chunk-75IDWFYX.js.map +0 -1
  62. package/dist/chunk-7BGCWJQR.js +0 -113
  63. package/dist/chunk-7BGCWJQR.js.map +0 -1
  64. package/dist/chunk-7BQXMG2A.js +0 -93
  65. package/dist/chunk-7BQXMG2A.js.map +0 -1
  66. package/dist/chunk-7RFWVNQA.js +0 -47
  67. package/dist/chunk-7RFWVNQA.js.map +0 -1
  68. package/dist/chunk-7T4NK6W6.js +0 -192
  69. package/dist/chunk-7T4NK6W6.js.map +0 -1
  70. package/dist/chunk-A3OU6ICP.js +0 -91
  71. package/dist/chunk-A3OU6ICP.js.map +0 -1
  72. package/dist/chunk-ABBXLAJW.js +0 -74
  73. package/dist/chunk-ABBXLAJW.js.map +0 -1
  74. package/dist/chunk-AENNHS3S.js +0 -83
  75. package/dist/chunk-AENNHS3S.js.map +0 -1
  76. package/dist/chunk-AXNJFBYX.js +0 -136
  77. package/dist/chunk-AXNJFBYX.js.map +0 -1
  78. package/dist/chunk-AXUAQM45.js +0 -154
  79. package/dist/chunk-AXUAQM45.js.map +0 -1
  80. package/dist/chunk-B2FL7KBJ.js +0 -65
  81. package/dist/chunk-B2FL7KBJ.js.map +0 -1
  82. package/dist/chunk-BE232OKN.js +0 -42
  83. package/dist/chunk-BE232OKN.js.map +0 -1
  84. package/dist/chunk-BP4RQSX7.js +0 -200
  85. package/dist/chunk-BP4RQSX7.js.map +0 -1
  86. package/dist/chunk-BPJ3RN3U.js +0 -112
  87. package/dist/chunk-BPJ3RN3U.js.map +0 -1
  88. package/dist/chunk-BSF4Y4UT.js +0 -77
  89. package/dist/chunk-BSF4Y4UT.js.map +0 -1
  90. package/dist/chunk-BWIDDAR7.js +0 -86
  91. package/dist/chunk-BWIDDAR7.js.map +0 -1
  92. package/dist/chunk-BYUWQ6OP.js +0 -45
  93. package/dist/chunk-BYUWQ6OP.js.map +0 -1
  94. package/dist/chunk-C5ULP2P5.js +0 -140
  95. package/dist/chunk-C5ULP2P5.js.map +0 -1
  96. package/dist/chunk-CCG7PXLX.js +0 -24
  97. package/dist/chunk-CCG7PXLX.js.map +0 -1
  98. package/dist/chunk-CED2LKHI.js +0 -117
  99. package/dist/chunk-CED2LKHI.js.map +0 -1
  100. package/dist/chunk-CGWIOIEO.js +0 -27
  101. package/dist/chunk-CGWIOIEO.js.map +0 -1
  102. package/dist/chunk-CSEGVTKO.js +0 -110
  103. package/dist/chunk-CSEGVTKO.js.map +0 -1
  104. package/dist/chunk-CVFSNA4K.js +0 -716
  105. package/dist/chunk-CVFSNA4K.js.map +0 -1
  106. package/dist/chunk-E26M7ATD.js +0 -61
  107. package/dist/chunk-E26M7ATD.js.map +0 -1
  108. package/dist/chunk-E63IRXZZ.js +0 -78
  109. package/dist/chunk-E63IRXZZ.js.map +0 -1
  110. package/dist/chunk-ESJUISWY.js +0 -45
  111. package/dist/chunk-ESJUISWY.js.map +0 -1
  112. package/dist/chunk-ET7A3TQZ.js +0 -158
  113. package/dist/chunk-ET7A3TQZ.js.map +0 -1
  114. package/dist/chunk-ETTL6XGU.js +0 -139
  115. package/dist/chunk-ETTL6XGU.js.map +0 -1
  116. package/dist/chunk-EWDN56AS.js +0 -24
  117. package/dist/chunk-EWDN56AS.js.map +0 -1
  118. package/dist/chunk-FJZKA2LV.js +0 -165
  119. package/dist/chunk-FJZKA2LV.js.map +0 -1
  120. package/dist/chunk-G2WCT6PJ.js +0 -69
  121. package/dist/chunk-G2WCT6PJ.js.map +0 -1
  122. package/dist/chunk-GC52HWIL.js +0 -41
  123. package/dist/chunk-GC52HWIL.js.map +0 -1
  124. package/dist/chunk-GCKFA7X7.js +0 -83
  125. package/dist/chunk-GCKFA7X7.js.map +0 -1
  126. package/dist/chunk-GDMCDW66.js +0 -19
  127. package/dist/chunk-GDMCDW66.js.map +0 -1
  128. package/dist/chunk-GIXHBTHH.js +0 -59
  129. package/dist/chunk-GIXHBTHH.js.map +0 -1
  130. package/dist/chunk-GLEOUWPN.js +0 -108
  131. package/dist/chunk-GLEOUWPN.js.map +0 -1
  132. package/dist/chunk-GLRUM43F.js +0 -121
  133. package/dist/chunk-GLRUM43F.js.map +0 -1
  134. package/dist/chunk-H3L7WZDZ.js +0 -74
  135. package/dist/chunk-H3L7WZDZ.js.map +0 -1
  136. package/dist/chunk-H55WXDME.js +0 -45
  137. package/dist/chunk-H55WXDME.js.map +0 -1
  138. package/dist/chunk-H5QPJNVD.js +0 -98
  139. package/dist/chunk-H5QPJNVD.js.map +0 -1
  140. package/dist/chunk-HB45JHMM.js +0 -43
  141. package/dist/chunk-HB45JHMM.js.map +0 -1
  142. package/dist/chunk-HETHTYEZ.js +0 -80
  143. package/dist/chunk-HETHTYEZ.js.map +0 -1
  144. package/dist/chunk-HHSKNB32.js +0 -55
  145. package/dist/chunk-HHSKNB32.js.map +0 -1
  146. package/dist/chunk-HILOUYES.js +0 -151
  147. package/dist/chunk-HILOUYES.js.map +0 -1
  148. package/dist/chunk-HTJVHFNW.js +0 -178
  149. package/dist/chunk-HTJVHFNW.js.map +0 -1
  150. package/dist/chunk-HZ7Z22VW.js +0 -130
  151. package/dist/chunk-HZ7Z22VW.js.map +0 -1
  152. package/dist/chunk-JFKBFQA5.js +0 -129
  153. package/dist/chunk-JFKBFQA5.js.map +0 -1
  154. package/dist/chunk-JIZKW3WC.js +0 -74
  155. package/dist/chunk-JIZKW3WC.js.map +0 -1
  156. package/dist/chunk-JQTCCKZA.js +0 -154
  157. package/dist/chunk-JQTCCKZA.js.map +0 -1
  158. package/dist/chunk-JR4H3FJ2.js +0 -74
  159. package/dist/chunk-JR4H3FJ2.js.map +0 -1
  160. package/dist/chunk-JRW53TVG.js +0 -53
  161. package/dist/chunk-JRW53TVG.js.map +0 -1
  162. package/dist/chunk-JXOCE27Z.js +0 -82
  163. package/dist/chunk-JXOCE27Z.js.map +0 -1
  164. package/dist/chunk-JYW5YNF7.js +0 -188
  165. package/dist/chunk-JYW5YNF7.js.map +0 -1
  166. package/dist/chunk-K72DJOXR.js +0 -81
  167. package/dist/chunk-K72DJOXR.js.map +0 -1
  168. package/dist/chunk-KDE3NYTI.js +0 -144
  169. package/dist/chunk-KDE3NYTI.js.map +0 -1
  170. package/dist/chunk-KFUFTZLS.js +0 -111
  171. package/dist/chunk-KFUFTZLS.js.map +0 -1
  172. package/dist/chunk-KHBXI6AV.js +0 -149
  173. package/dist/chunk-KHBXI6AV.js.map +0 -1
  174. package/dist/chunk-M74ZYBOK.js +0 -93
  175. package/dist/chunk-M74ZYBOK.js.map +0 -1
  176. package/dist/chunk-ML7WLNIK.js +0 -11
  177. package/dist/chunk-ML7WLNIK.js.map +0 -1
  178. package/dist/chunk-MXB2GVEQ.js +0 -57
  179. package/dist/chunk-MXB2GVEQ.js.map +0 -1
  180. package/dist/chunk-NEMXW2LB.js +0 -102
  181. package/dist/chunk-NEMXW2LB.js.map +0 -1
  182. package/dist/chunk-OJPPSJMF.js +0 -65
  183. package/dist/chunk-OJPPSJMF.js.map +0 -1
  184. package/dist/chunk-OMR6ZGME.js +0 -63
  185. package/dist/chunk-OMR6ZGME.js.map +0 -1
  186. package/dist/chunk-ORVYP73T.js +0 -223
  187. package/dist/chunk-ORVYP73T.js.map +0 -1
  188. package/dist/chunk-OZFUUO2Q.js +0 -50
  189. package/dist/chunk-OZFUUO2Q.js.map +0 -1
  190. package/dist/chunk-P44UAK45.js +0 -115
  191. package/dist/chunk-P44UAK45.js.map +0 -1
  192. package/dist/chunk-PJUP4BJD.js +0 -116
  193. package/dist/chunk-PJUP4BJD.js.map +0 -1
  194. package/dist/chunk-PJWYIOY4.js +0 -3
  195. package/dist/chunk-PJWYIOY4.js.map +0 -1
  196. package/dist/chunk-PVCW4O37.js +0 -147
  197. package/dist/chunk-PVCW4O37.js.map +0 -1
  198. package/dist/chunk-PXT47DRZ.js +0 -59
  199. package/dist/chunk-PXT47DRZ.js.map +0 -1
  200. package/dist/chunk-PZGUZHI7.js +0 -142
  201. package/dist/chunk-PZGUZHI7.js.map +0 -1
  202. package/dist/chunk-Q2BAL2PF.js +0 -965
  203. package/dist/chunk-Q2BAL2PF.js.map +0 -1
  204. package/dist/chunk-QBUTRD2M.js +0 -58
  205. package/dist/chunk-QBUTRD2M.js.map +0 -1
  206. package/dist/chunk-QCQTTOMD.js +0 -236
  207. package/dist/chunk-QCQTTOMD.js.map +0 -1
  208. package/dist/chunk-QNYOIVQ4.js +0 -36
  209. package/dist/chunk-QNYOIVQ4.js.map +0 -1
  210. package/dist/chunk-QPURZJJM.js +0 -88
  211. package/dist/chunk-QPURZJJM.js.map +0 -1
  212. package/dist/chunk-QRXIYPWP.js +0 -121
  213. package/dist/chunk-QRXIYPWP.js.map +0 -1
  214. package/dist/chunk-QV4BQRNH.js +0 -29
  215. package/dist/chunk-QV4BQRNH.js.map +0 -1
  216. package/dist/chunk-REFY5MLN.js +0 -212
  217. package/dist/chunk-REFY5MLN.js.map +0 -1
  218. package/dist/chunk-RJ6RAMKH.js +0 -89
  219. package/dist/chunk-RJ6RAMKH.js.map +0 -1
  220. package/dist/chunk-RJBCTMVW.js +0 -59
  221. package/dist/chunk-RJBCTMVW.js.map +0 -1
  222. package/dist/chunk-RLWULF5B.js +0 -113
  223. package/dist/chunk-RLWULF5B.js.map +0 -1
  224. package/dist/chunk-RPZMFGYI.js +0 -31
  225. package/dist/chunk-RPZMFGYI.js.map +0 -1
  226. package/dist/chunk-RQT5DWGG.js +0 -34
  227. package/dist/chunk-RQT5DWGG.js.map +0 -1
  228. package/dist/chunk-SBKVVVYY.js +0 -89
  229. package/dist/chunk-SBKVVVYY.js.map +0 -1
  230. package/dist/chunk-SOJW47EZ.js +0 -70
  231. package/dist/chunk-SOJW47EZ.js.map +0 -1
  232. package/dist/chunk-SQ66DCXY.js +0 -35
  233. package/dist/chunk-SQ66DCXY.js.map +0 -1
  234. package/dist/chunk-SXKGWHAM.js +0 -179
  235. package/dist/chunk-SXKGWHAM.js.map +0 -1
  236. package/dist/chunk-T2OKGV6M.js +0 -13
  237. package/dist/chunk-T2OKGV6M.js.map +0 -1
  238. package/dist/chunk-TJLULCZW.js +0 -108
  239. package/dist/chunk-TJLULCZW.js.map +0 -1
  240. package/dist/chunk-TY6NTWN5.js +0 -29
  241. package/dist/chunk-TY6NTWN5.js.map +0 -1
  242. package/dist/chunk-U3AEEFVB.js +0 -152
  243. package/dist/chunk-U3AEEFVB.js.map +0 -1
  244. package/dist/chunk-UGKI466V.js +0 -12
  245. package/dist/chunk-UGKI466V.js.map +0 -1
  246. package/dist/chunk-V3HFDVZ3.js +0 -102
  247. package/dist/chunk-V3HFDVZ3.js.map +0 -1
  248. package/dist/chunk-V6H2RUVP.js +0 -77
  249. package/dist/chunk-V6H2RUVP.js.map +0 -1
  250. package/dist/chunk-VB53UMAL.js +0 -106
  251. package/dist/chunk-VB53UMAL.js.map +0 -1
  252. package/dist/chunk-VBEMLZGX.js +0 -86
  253. package/dist/chunk-VBEMLZGX.js.map +0 -1
  254. package/dist/chunk-VBQFE5RV.js +0 -92
  255. package/dist/chunk-VBQFE5RV.js.map +0 -1
  256. package/dist/chunk-VHK2OUCW.js +0 -38
  257. package/dist/chunk-VHK2OUCW.js.map +0 -1
  258. package/dist/chunk-VHTAVROO.js +0 -53
  259. package/dist/chunk-VHTAVROO.js.map +0 -1
  260. package/dist/chunk-VM4RMQQN.js +0 -11
  261. package/dist/chunk-VM4RMQQN.js.map +0 -1
  262. package/dist/chunk-VZX4HLBM.js +0 -84
  263. package/dist/chunk-VZX4HLBM.js.map +0 -1
  264. package/dist/chunk-W47V2F3Q.js +0 -115
  265. package/dist/chunk-W47V2F3Q.js.map +0 -1
  266. package/dist/chunk-W7I3ZX66.js +0 -76
  267. package/dist/chunk-W7I3ZX66.js.map +0 -1
  268. package/dist/chunk-WD42UBGR.js +0 -64
  269. package/dist/chunk-WD42UBGR.js.map +0 -1
  270. package/dist/chunk-XC7SYZYR.js +0 -86
  271. package/dist/chunk-XC7SYZYR.js.map +0 -1
  272. package/dist/chunk-XJA4B3F5.js +0 -68
  273. package/dist/chunk-XJA4B3F5.js.map +0 -1
  274. package/dist/chunk-XSENM65D.js +0 -128
  275. package/dist/chunk-XSENM65D.js.map +0 -1
  276. package/dist/chunk-YD2QEVHO.js +0 -68
  277. package/dist/chunk-YD2QEVHO.js.map +0 -1
  278. package/dist/chunk-YDKRUSB5.js +0 -35
  279. package/dist/chunk-YDKRUSB5.js.map +0 -1
  280. package/dist/chunk-YES6SPDT.js +0 -55
  281. package/dist/chunk-YES6SPDT.js.map +0 -1
  282. package/dist/chunk-YNDHYMPI.js +0 -46
  283. package/dist/chunk-YNDHYMPI.js.map +0 -1
  284. package/dist/chunk-YO3WEMOH.js +0 -130
  285. package/dist/chunk-YO3WEMOH.js.map +0 -1
  286. package/dist/chunk-YUFFAWNB.js +0 -90
  287. package/dist/chunk-YUFFAWNB.js.map +0 -1
  288. package/dist/chunk-YVXMWUWD.js +0 -118
  289. package/dist/chunk-YVXMWUWD.js.map +0 -1
  290. package/dist/chunk-Z6HZMGO2.js +0 -106
  291. package/dist/chunk-Z6HZMGO2.js.map +0 -1
  292. package/dist/chunk-ZAMPCRFJ.js +0 -121
  293. package/dist/chunk-ZAMPCRFJ.js.map +0 -1
  294. package/dist/chunk-ZEFOXF2I.js +0 -87
  295. package/dist/chunk-ZEFOXF2I.js.map +0 -1
  296. package/dist/chunk-ZJXOHLQE.js +0 -66
  297. package/dist/chunk-ZJXOHLQE.js.map +0 -1
  298. package/dist/chunk-ZPURFK4C.js +0 -203
  299. package/dist/chunk-ZPURFK4C.js.map +0 -1
  300. package/dist/chunk-ZXPDS6DH.js +0 -3
  301. package/dist/chunk-ZXPDS6DH.js.map +0 -1
  302. package/dist/chunk-ZZZIOTLC.js +0 -89
  303. package/dist/chunk-ZZZIOTLC.js.map +0 -1
  304. package/dist/components/composites/agent-composer/agent-composer.d.ts +0 -41
  305. package/dist/components/composites/agent-composer/index.d.ts +0 -1
  306. package/dist/components/composites/agent-editor/agent-editor.d.ts +0 -31
  307. package/dist/components/composites/agent-editor/index.d.ts +0 -1
  308. package/dist/components/composites/agent-stream/agent-stream.d.ts +0 -72
  309. package/dist/components/composites/agent-stream/index.d.ts +0 -2
  310. package/dist/components/composites/agent-stream/to-agent-stream-items.d.ts +0 -32
  311. package/dist/components/composites/agent-timeline/agent-timeline.d.ts +0 -22
  312. package/dist/components/composites/agent-timeline/index.d.ts +0 -1
  313. package/dist/components/composites/agent-tool-renderer/agent-tool-renderer.d.ts +0 -60
  314. package/dist/components/composites/agent-tool-renderer/index.d.ts +0 -1
  315. package/dist/components/composites/agent-tool-renderer/tool-call-part.d.ts +0 -5
  316. package/dist/components/composites/approval-card/approval-card.d.ts +0 -35
  317. package/dist/components/composites/approval-card/index.d.ts +0 -1
  318. package/dist/components/composites/chat-composer/chat-composer.d.ts +0 -68
  319. package/dist/components/composites/chat-composer/index.d.ts +0 -1
  320. package/dist/components/composites/chat-message/chat-message-actions.d.ts +0 -22
  321. package/dist/components/composites/chat-message/chat-message-branch.d.ts +0 -17
  322. package/dist/components/composites/chat-message/chat-message-response.d.ts +0 -15
  323. package/dist/components/composites/chat-message/chat-message-toolbar.d.ts +0 -7
  324. package/dist/components/composites/chat-message/chat-message.d.ts +0 -94
  325. package/dist/components/composites/chat-message/index.d.ts +0 -23
  326. package/dist/components/composites/chat-message/parts/data-part.d.ts +0 -9
  327. package/dist/components/composites/chat-message/parts/file-part.d.ts +0 -5
  328. package/dist/components/composites/chat-message/parts/reasoning-part.d.ts +0 -7
  329. package/dist/components/composites/chat-message/parts/source-part.d.ts +0 -9
  330. package/dist/components/composites/chat-message/parts/text-part.d.ts +0 -11
  331. package/dist/components/composites/choice-prompt/choice-prompt.d.ts +0 -65
  332. package/dist/components/composites/choice-prompt/index.d.ts +0 -2
  333. package/dist/components/composites/confirm-prompt/confirm-prompt.d.ts +0 -31
  334. package/dist/components/composites/confirm-prompt/index.d.ts +0 -1
  335. package/dist/components/composites/cron-jobs-list/cron-jobs-list.d.ts +0 -15
  336. package/dist/components/composites/cron-jobs-list/index.d.ts +0 -1
  337. package/dist/components/composites/mcp-server-list/index.d.ts +0 -1
  338. package/dist/components/composites/mcp-server-list/mcp-server-list.d.ts +0 -15
  339. package/dist/components/composites/multi-select-prompt/index.d.ts +0 -1
  340. package/dist/components/composites/multi-select-prompt/multi-select-prompt.d.ts +0 -61
  341. package/dist/components/composites/permission-modal/index.d.ts +0 -1
  342. package/dist/components/composites/permission-modal/permission-modal.d.ts +0 -48
  343. package/dist/components/composites/preview-panel/index.d.ts +0 -1
  344. package/dist/components/composites/preview-panel/preview-panel.d.ts +0 -24
  345. package/dist/components/composites/rule-editor/index.d.ts +0 -1
  346. package/dist/components/composites/rule-editor/rule-editor.d.ts +0 -18
  347. package/dist/components/composites/skill-editor/index.d.ts +0 -1
  348. package/dist/components/composites/skill-editor/skill-editor.d.ts +0 -19
  349. package/dist/components/composites/skills-list/index.d.ts +0 -1
  350. package/dist/components/composites/skills-list/skills-list.d.ts +0 -15
  351. package/dist/components/composites/slide-deck/context.d.ts +0 -23
  352. package/dist/components/composites/slide-deck/controls.d.ts +0 -8
  353. package/dist/components/composites/slide-deck/fragments.d.ts +0 -20
  354. package/dist/components/composites/slide-deck/index.d.ts +0 -21
  355. package/dist/components/composites/slide-deck/notes.d.ts +0 -14
  356. package/dist/components/composites/slide-deck/presenter-view.d.ts +0 -15
  357. package/dist/components/composites/slide-deck/print-styles.d.ts +0 -21
  358. package/dist/components/composites/slide-deck/progress-bar.d.ts +0 -8
  359. package/dist/components/composites/slide-deck/schema.d.ts +0 -31
  360. package/dist/components/composites/slide-deck/slide-deck.d.ts +0 -78
  361. package/dist/components/composites/slide-deck/slide-number.d.ts +0 -11
  362. package/dist/components/composites/slide-deck/split-deck.d.ts +0 -2
  363. package/dist/components/composites/slide-deck/thumbnails.d.ts +0 -19
  364. package/dist/components/composites/slide-deck/use-deck-hash-routing.d.ts +0 -23
  365. package/dist/components/composites/slide-deck/use-deck-keyboard.d.ts +0 -25
  366. package/dist/components/composites/slide-deck/use-deck-state.d.ts +0 -57
  367. package/dist/components/composites/slide-deck/use-deck-swipe.d.ts +0 -20
  368. package/dist/components/composites/slide-deck/use-fullscreen.d.ts +0 -18
  369. package/dist/components/composites/stability-bundle-viewer/index.d.ts +0 -1
  370. package/dist/components/composites/stability-bundle-viewer/stability-bundle-viewer.d.ts +0 -28
  371. package/dist/components/composites/text-prompt/index.d.ts +0 -1
  372. package/dist/components/composites/text-prompt/text-prompt.d.ts +0 -48
  373. package/dist/components/composites/usage-meter/index.d.ts +0 -1
  374. package/dist/components/composites/usage-meter/usage-meter.d.ts +0 -56
  375. package/dist/components/primitives/agent-error-card/agent-error-card.d.ts +0 -47
  376. package/dist/components/primitives/agent-error-card/index.d.ts +0 -1
  377. package/dist/components/primitives/agent-event/agent-event.d.ts +0 -25
  378. package/dist/components/primitives/agent-event/index.d.ts +0 -1
  379. package/dist/components/primitives/agent-handoff/agent-handoff.d.ts +0 -24
  380. package/dist/components/primitives/agent-handoff/index.d.ts +0 -1
  381. package/dist/components/primitives/agent-profile/agent-profile.d.ts +0 -28
  382. package/dist/components/primitives/agent-profile/index.d.ts +0 -1
  383. package/dist/components/primitives/agent-starting-state/agent-starting-state.d.ts +0 -15
  384. package/dist/components/primitives/agent-starting-state/index.d.ts +0 -1
  385. package/dist/components/primitives/agent-streaming/agent-streaming.d.ts +0 -16
  386. package/dist/components/primitives/agent-streaming/index.d.ts +0 -1
  387. package/dist/components/primitives/artifact-preview/artifact-preview.d.ts +0 -25
  388. package/dist/components/primitives/artifact-preview/index.d.ts +0 -1
  389. package/dist/components/primitives/attachment-chip/attachment-chip.d.ts +0 -14
  390. package/dist/components/primitives/attachment-chip/index.d.ts +0 -1
  391. package/dist/components/primitives/audit-log-entry/audit-log-entry.d.ts +0 -29
  392. package/dist/components/primitives/audit-log-entry/index.d.ts +0 -1
  393. package/dist/components/primitives/auto-compact-notice/auto-compact-notice.d.ts +0 -24
  394. package/dist/components/primitives/auto-compact-notice/index.d.ts +0 -1
  395. package/dist/components/primitives/branch-indicator/branch-indicator.d.ts +0 -13
  396. package/dist/components/primitives/branch-indicator/index.d.ts +0 -1
  397. package/dist/components/primitives/browser-controls/browser-controls.d.ts +0 -19
  398. package/dist/components/primitives/browser-controls/index.d.ts +0 -1
  399. package/dist/components/primitives/build-log-stream/build-log-stream.d.ts +0 -51
  400. package/dist/components/primitives/build-log-stream/index.d.ts +0 -1
  401. package/dist/components/primitives/capability-indicator/capability-indicator.d.ts +0 -57
  402. package/dist/components/primitives/capability-indicator/index.d.ts +0 -1
  403. package/dist/components/primitives/channel-card/channel-card.d.ts +0 -28
  404. package/dist/components/primitives/channel-card/index.d.ts +0 -1
  405. package/dist/components/primitives/chat-thread/chat-thread.d.ts +0 -12
  406. package/dist/components/primitives/chat-thread/index.d.ts +0 -1
  407. package/dist/components/primitives/context-card/context-card.d.ts +0 -18
  408. package/dist/components/primitives/context-card/index.d.ts +0 -1
  409. package/dist/components/primitives/context-window-bar/context-window-bar.d.ts +0 -27
  410. package/dist/components/primitives/context-window-bar/index.d.ts +0 -1
  411. package/dist/components/primitives/cost-meter/cost-meter.d.ts +0 -23
  412. package/dist/components/primitives/cost-meter/index.d.ts +0 -1
  413. package/dist/components/primitives/created-files-card/created-files-card.d.ts +0 -30
  414. package/dist/components/primitives/created-files-card/index.d.ts +0 -1
  415. package/dist/components/primitives/cron-job-card/cron-job-card.d.ts +0 -30
  416. package/dist/components/primitives/cron-job-card/index.d.ts +0 -1
  417. package/dist/components/primitives/diff-viewer/diff-viewer.d.ts +0 -45
  418. package/dist/components/primitives/diff-viewer/index.d.ts +0 -1
  419. package/dist/components/primitives/export-chat-dialog/export-chat-dialog.d.ts +0 -18
  420. package/dist/components/primitives/export-chat-dialog/index.d.ts +0 -1
  421. package/dist/components/primitives/folder-context-card/folder-context-card.d.ts +0 -40
  422. package/dist/components/primitives/folder-context-card/index.d.ts +0 -1
  423. package/dist/components/primitives/folder-selector/folder-selector.d.ts +0 -18
  424. package/dist/components/primitives/folder-selector/index.d.ts +0 -1
  425. package/dist/components/primitives/gateway-status-indicator/gateway-status-indicator.d.ts +0 -19
  426. package/dist/components/primitives/gateway-status-indicator/index.d.ts +0 -1
  427. package/dist/components/primitives/hook-config/hook-config.d.ts +0 -27
  428. package/dist/components/primitives/hook-config/index.d.ts +0 -1
  429. package/dist/components/primitives/hook-event-log/hook-event-log.d.ts +0 -27
  430. package/dist/components/primitives/hook-event-log/index.d.ts +0 -1
  431. package/dist/components/primitives/intent-selector/index.d.ts +0 -1
  432. package/dist/components/primitives/intent-selector/intent-selector.d.ts +0 -22
  433. package/dist/components/primitives/lane-board/index.d.ts +0 -1
  434. package/dist/components/primitives/lane-board/lane-board.d.ts +0 -26
  435. package/dist/components/primitives/mcp-server-card/index.d.ts +0 -1
  436. package/dist/components/primitives/mcp-server-card/mcp-server-card.d.ts +0 -32
  437. package/dist/components/primitives/memory-editor/index.d.ts +0 -1
  438. package/dist/components/primitives/memory-editor/memory-editor.d.ts +0 -29
  439. package/dist/components/primitives/mention-menu/index.d.ts +0 -1
  440. package/dist/components/primitives/mention-menu/mention-menu.d.ts +0 -44
  441. package/dist/components/primitives/model-card/index.d.ts +0 -1
  442. package/dist/components/primitives/model-card/model-card.d.ts +0 -72
  443. package/dist/components/primitives/model-selector/index.d.ts +0 -1
  444. package/dist/components/primitives/model-selector/model-selector.d.ts +0 -21
  445. package/dist/components/primitives/permission-matrix/index.d.ts +0 -1
  446. package/dist/components/primitives/permission-matrix/permission-matrix.d.ts +0 -43
  447. package/dist/components/primitives/progress-checklist/index.d.ts +0 -1
  448. package/dist/components/primitives/progress-checklist/progress-checklist.d.ts +0 -18
  449. package/dist/components/primitives/project-switcher/index.d.ts +0 -1
  450. package/dist/components/primitives/project-switcher/project-switcher.d.ts +0 -32
  451. package/dist/components/primitives/quick-action-chips/index.d.ts +0 -1
  452. package/dist/components/primitives/quick-action-chips/quick-action-chips.d.ts +0 -22
  453. package/dist/components/primitives/recent-folders-list/index.d.ts +0 -1
  454. package/dist/components/primitives/recent-folders-list/recent-folders-list.d.ts +0 -21
  455. package/dist/components/primitives/rule-card/index.d.ts +0 -1
  456. package/dist/components/primitives/rule-card/rule-card.d.ts +0 -15
  457. package/dist/components/primitives/run-stats/index.d.ts +0 -1
  458. package/dist/components/primitives/run-stats/run-stats.d.ts +0 -16
  459. package/dist/components/primitives/run-status-pill/index.d.ts +0 -1
  460. package/dist/components/primitives/run-status-pill/run-status-pill.d.ts +0 -13
  461. package/dist/components/primitives/running-tasks-panel/index.d.ts +0 -1
  462. package/dist/components/primitives/running-tasks-panel/running-tasks-panel.d.ts +0 -20
  463. package/dist/components/primitives/session-list-item/index.d.ts +0 -1
  464. package/dist/components/primitives/session-list-item/session-list-item.d.ts +0 -35
  465. package/dist/components/primitives/session-timeline/index.d.ts +0 -1
  466. package/dist/components/primitives/session-timeline/session-timeline.d.ts +0 -32
  467. package/dist/components/primitives/skill-card/index.d.ts +0 -1
  468. package/dist/components/primitives/skill-card/skill-card.d.ts +0 -28
  469. package/dist/components/primitives/slide/alerts.d.ts +0 -31
  470. package/dist/components/primitives/slide/frontmatter.d.ts +0 -23
  471. package/dist/components/primitives/slide/index.d.ts +0 -16
  472. package/dist/components/primitives/slide/json-schema.d.ts +0 -9
  473. package/dist/components/primitives/slide/marpit-bg.d.ts +0 -36
  474. package/dist/components/primitives/slide/parse.d.ts +0 -59
  475. package/dist/components/primitives/slide/plugin.d.ts +0 -79
  476. package/dist/components/primitives/slide/plugins/emoji/index.d.ts +0 -8
  477. package/dist/components/primitives/slide/plugins/emoji/map.d.ts +0 -15
  478. package/dist/components/primitives/slide/plugins/math/index.d.ts +0 -6
  479. package/dist/components/primitives/slide/plugins/mermaid/index.d.ts +0 -48
  480. package/dist/components/primitives/slide/plugins/shiki/index.d.ts +0 -11
  481. package/dist/components/primitives/slide/sanitize.d.ts +0 -33
  482. package/dist/components/primitives/slide/schema.d.ts +0 -109
  483. package/dist/components/primitives/slide/slide.d.ts +0 -53
  484. package/dist/components/primitives/slide/themes/index.d.ts +0 -9
  485. package/dist/components/primitives/slide/use-slide-fit.d.ts +0 -21
  486. package/dist/components/primitives/slide/validate.d.ts +0 -33
  487. package/dist/components/primitives/steps-rail/index.d.ts +0 -1
  488. package/dist/components/primitives/steps-rail/steps-rail.d.ts +0 -24
  489. package/dist/components/primitives/sub-agent-dispatch/index.d.ts +0 -1
  490. package/dist/components/primitives/sub-agent-dispatch/sub-agent-dispatch.d.ts +0 -30
  491. package/dist/components/primitives/system-prompt-editor/index.d.ts +0 -1
  492. package/dist/components/primitives/system-prompt-editor/system-prompt-editor.d.ts +0 -25
  493. package/dist/components/primitives/task-plan/index.d.ts +0 -1
  494. package/dist/components/primitives/task-plan/task-plan.d.ts +0 -36
  495. package/dist/components/primitives/terminal-panel/index.d.ts +0 -1
  496. package/dist/components/primitives/terminal-panel/terminal-panel.d.ts +0 -32
  497. package/dist/components/primitives/thinking-level-selector/index.d.ts +0 -1
  498. package/dist/components/primitives/thinking-level-selector/thinking-level-selector.d.ts +0 -24
  499. package/dist/components/primitives/token-usage-chart/index.d.ts +0 -2
  500. package/dist/components/primitives/token-usage-chart/token-usage-chart.d.ts +0 -44
  501. package/dist/components/primitives/token-usage-chart/usage-metrics.d.ts +0 -23
  502. package/dist/components/primitives/tool-call/index.d.ts +0 -1
  503. package/dist/components/primitives/tool-call/tool-call.d.ts +0 -30
  504. package/dist/components/primitives/tool-call-card/index.d.ts +0 -1
  505. package/dist/components/primitives/tool-call-card/tool-call-card.d.ts +0 -30
  506. package/dist/components/primitives/tool-result/index.d.ts +0 -1
  507. package/dist/components/primitives/tool-result/tool-result.d.ts +0 -19
  508. package/dist/components/primitives/tools-list/index.d.ts +0 -1
  509. package/dist/components/primitives/tools-list/tools-list.d.ts +0 -32
  510. package/dist/components/primitives/whiteboard/index.d.ts +0 -2
  511. package/dist/components/primitives/whiteboard/render/freedraw.d.ts +0 -2
  512. package/dist/components/primitives/whiteboard/render/line.d.ts +0 -4
  513. package/dist/components/primitives/whiteboard/render/rough-paths.d.ts +0 -16
  514. package/dist/components/primitives/whiteboard/render/scene.d.ts +0 -3
  515. package/dist/components/primitives/whiteboard/render/shape.d.ts +0 -5
  516. package/dist/components/primitives/whiteboard/render/style.d.ts +0 -24
  517. package/dist/components/primitives/whiteboard/render/text.d.ts +0 -2
  518. package/dist/components/primitives/whiteboard/schema.d.ts +0 -596
  519. package/dist/components/primitives/whiteboard/seed.d.ts +0 -22
  520. package/dist/components/primitives/whiteboard/validate.d.ts +0 -26
  521. package/dist/components/primitives/whiteboard/viewport/use-pointer-pan.d.ts +0 -11
  522. package/dist/components/primitives/whiteboard/viewport/use-viewport.d.ts +0 -33
  523. package/dist/components/primitives/whiteboard/whiteboard.d.ts +0 -21
  524. package/dist/components.css +0 -2
  525. package/dist/composites/account-menu/index.js +0 -6
  526. package/dist/composites/account-menu/index.js.map +0 -1
  527. package/dist/composites/agent-composer/index.js +0 -8
  528. package/dist/composites/agent-composer/index.js.map +0 -1
  529. package/dist/composites/agent-editor/index.js +0 -11
  530. package/dist/composites/agent-editor/index.js.map +0 -1
  531. package/dist/composites/agent-stream/index.js +0 -24
  532. package/dist/composites/agent-stream/index.js.map +0 -1
  533. package/dist/composites/agent-timeline/index.js +0 -5
  534. package/dist/composites/agent-timeline/index.js.map +0 -1
  535. package/dist/composites/agent-tool-renderer/index.js +0 -17
  536. package/dist/composites/agent-tool-renderer/index.js.map +0 -1
  537. package/dist/composites/approval-card/index.js +0 -5
  538. package/dist/composites/approval-card/index.js.map +0 -1
  539. package/dist/composites/chat-composer/index.js +0 -6
  540. package/dist/composites/chat-composer/index.js.map +0 -1
  541. package/dist/composites/chat-message/index.js +0 -20
  542. package/dist/composites/chat-message/index.js.map +0 -1
  543. package/dist/composites/choice-prompt/index.js +0 -11
  544. package/dist/composites/choice-prompt/index.js.map +0 -1
  545. package/dist/composites/code-block/index.js +0 -5
  546. package/dist/composites/code-block/index.js.map +0 -1
  547. package/dist/composites/command-palette/index.js +0 -6
  548. package/dist/composites/command-palette/index.js.map +0 -1
  549. package/dist/composites/confirm-dialog/index.js +0 -8
  550. package/dist/composites/confirm-dialog/index.js.map +0 -1
  551. package/dist/composites/confirm-prompt/index.js +0 -7
  552. package/dist/composites/confirm-prompt/index.js.map +0 -1
  553. package/dist/composites/cron-jobs-list/index.js +0 -5
  554. package/dist/composites/cron-jobs-list/index.js.map +0 -1
  555. package/dist/composites/data-table/index.js +0 -11
  556. package/dist/composites/data-table/index.js.map +0 -1
  557. package/dist/composites/deployment-row/index.js +0 -5
  558. package/dist/composites/deployment-row/index.js.map +0 -1
  559. package/dist/composites/domain-config/index.js +0 -8
  560. package/dist/composites/domain-config/index.js.map +0 -1
  561. package/dist/composites/env-var-editor/index.js +0 -9
  562. package/dist/composites/env-var-editor/index.js.map +0 -1
  563. package/dist/composites/mcp-server-list/index.js +0 -6
  564. package/dist/composites/mcp-server-list/index.js.map +0 -1
  565. package/dist/composites/metric-card/index.js +0 -5
  566. package/dist/composites/metric-card/index.js.map +0 -1
  567. package/dist/composites/multi-select-prompt/index.js +0 -11
  568. package/dist/composites/multi-select-prompt/index.js.map +0 -1
  569. package/dist/composites/page-shell/index.js +0 -8
  570. package/dist/composites/page-shell/index.js.map +0 -1
  571. package/dist/composites/permission-modal/index.js +0 -7
  572. package/dist/composites/permission-modal/index.js.map +0 -1
  573. package/dist/composites/preview-env-card/index.js +0 -6
  574. package/dist/composites/preview-env-card/index.js.map +0 -1
  575. package/dist/composites/preview-panel/index.js +0 -5
  576. package/dist/composites/preview-panel/index.js.map +0 -1
  577. package/dist/composites/project-card/index.js +0 -6
  578. package/dist/composites/project-card/index.js.map +0 -1
  579. package/dist/composites/rollback-ui/index.js +0 -7
  580. package/dist/composites/rollback-ui/index.js.map +0 -1
  581. package/dist/composites/rule-editor/index.js +0 -12
  582. package/dist/composites/rule-editor/index.js.map +0 -1
  583. package/dist/composites/skill-editor/index.js +0 -12
  584. package/dist/composites/skill-editor/index.js.map +0 -1
  585. package/dist/composites/skills-list/index.js +0 -6
  586. package/dist/composites/skills-list/index.js.map +0 -1
  587. package/dist/composites/stability-bundle-viewer/index.js +0 -5
  588. package/dist/composites/stability-bundle-viewer/index.js.map +0 -1
  589. package/dist/composites/status-indicator/index.js +0 -4
  590. package/dist/composites/status-indicator/index.js.map +0 -1
  591. package/dist/composites/task-header/index.js +0 -5
  592. package/dist/composites/task-header/index.js.map +0 -1
  593. package/dist/composites/text-prompt/index.js +0 -10
  594. package/dist/composites/text-prompt/index.js.map +0 -1
  595. package/dist/composites/usage-meter/index.js +0 -5
  596. package/dist/composites/usage-meter/index.js.map +0 -1
  597. package/dist/fonts/LICENSE-GEIST.txt +0 -92
  598. package/dist/fonts/geist-400.woff2 +0 -0
  599. package/dist/fonts/geist-500.woff2 +0 -0
  600. package/dist/fonts/geist-600.woff2 +0 -0
  601. package/dist/fonts/geist-mono-400.woff2 +0 -0
  602. package/dist/fonts/geist-mono-500.woff2 +0 -0
  603. package/dist/fonts/geist-mono-600.woff2 +0 -0
  604. package/dist/fonts-cdn.css +0 -28
  605. package/dist/fonts.css +0 -75
  606. package/dist/index.js.map +0 -1
  607. package/dist/lib/markdown/code-block.d.ts +0 -14
  608. package/dist/lib/markdown/inline-code.d.ts +0 -10
  609. package/dist/lib/markdown/math.d.ts +0 -12
  610. package/dist/lib/markdown/mermaid.d.ts +0 -6
  611. package/dist/lib/markdown/parser.d.ts +0 -47
  612. package/dist/lib/markdown/streaming-preprocess.d.ts +0 -39
  613. package/dist/lib/prompt.d.ts +0 -40
  614. package/dist/lib/sdk-tools-adapters/index.d.ts +0 -1
  615. package/dist/lib/sdk-tools-adapters/index.js +0 -3
  616. package/dist/lib/sdk-tools-adapters/index.js.map +0 -1
  617. package/dist/lib/sdk-tools-adapters/sdk-tools-adapters.d.ts +0 -60
  618. package/dist/preset-v3-legacy.d.ts +0 -32
  619. package/dist/preset-v3-legacy.js.map +0 -1
  620. package/dist/preset.css +0 -27
  621. package/dist/primitives/action-bar/index.js +0 -4
  622. package/dist/primitives/action-bar/index.js.map +0 -1
  623. package/dist/primitives/agent-error-card/index.js +0 -5
  624. package/dist/primitives/agent-error-card/index.js.map +0 -1
  625. package/dist/primitives/agent-event/index.js +0 -5
  626. package/dist/primitives/agent-event/index.js.map +0 -1
  627. package/dist/primitives/agent-handoff/index.js +0 -4
  628. package/dist/primitives/agent-handoff/index.js.map +0 -1
  629. package/dist/primitives/agent-profile/index.js +0 -4
  630. package/dist/primitives/agent-profile/index.js.map +0 -1
  631. package/dist/primitives/agent-starting-state/index.js +0 -5
  632. package/dist/primitives/agent-starting-state/index.js.map +0 -1
  633. package/dist/primitives/agent-streaming/index.js +0 -5
  634. package/dist/primitives/agent-streaming/index.js.map +0 -1
  635. package/dist/primitives/alert/index.js +0 -4
  636. package/dist/primitives/alert/index.js.map +0 -1
  637. package/dist/primitives/artifact-preview/index.js +0 -4
  638. package/dist/primitives/artifact-preview/index.js.map +0 -1
  639. package/dist/primitives/attachment-chip/index.js +0 -4
  640. package/dist/primitives/attachment-chip/index.js.map +0 -1
  641. package/dist/primitives/audit-log-entry/index.js +0 -4
  642. package/dist/primitives/audit-log-entry/index.js.map +0 -1
  643. package/dist/primitives/auto-compact-notice/index.js +0 -5
  644. package/dist/primitives/auto-compact-notice/index.js.map +0 -1
  645. package/dist/primitives/avatar/index.js +0 -4
  646. package/dist/primitives/avatar/index.js.map +0 -1
  647. package/dist/primitives/badge/index.js +0 -4
  648. package/dist/primitives/badge/index.js.map +0 -1
  649. package/dist/primitives/branch-indicator/index.js +0 -4
  650. package/dist/primitives/branch-indicator/index.js.map +0 -1
  651. package/dist/primitives/browser-controls/index.js +0 -4
  652. package/dist/primitives/browser-controls/index.js.map +0 -1
  653. package/dist/primitives/build-log-stream/index.js +0 -7
  654. package/dist/primitives/build-log-stream/index.js.map +0 -1
  655. package/dist/primitives/button/index.js +0 -4
  656. package/dist/primitives/button/index.js.map +0 -1
  657. package/dist/primitives/capability-indicator/index.js +0 -4
  658. package/dist/primitives/capability-indicator/index.js.map +0 -1
  659. package/dist/primitives/card/index.js +0 -5
  660. package/dist/primitives/card/index.js.map +0 -1
  661. package/dist/primitives/channel-card/index.js +0 -4
  662. package/dist/primitives/channel-card/index.js.map +0 -1
  663. package/dist/primitives/chat-thread/index.js +0 -5
  664. package/dist/primitives/chat-thread/index.js.map +0 -1
  665. package/dist/primitives/checkbox/index.js +0 -4
  666. package/dist/primitives/checkbox/index.js.map +0 -1
  667. package/dist/primitives/context-card/index.js +0 -4
  668. package/dist/primitives/context-card/index.js.map +0 -1
  669. package/dist/primitives/context-window-bar/index.js +0 -4
  670. package/dist/primitives/context-window-bar/index.js.map +0 -1
  671. package/dist/primitives/copy-button/index.js +0 -5
  672. package/dist/primitives/copy-button/index.js.map +0 -1
  673. package/dist/primitives/cost-meter/index.js +0 -4
  674. package/dist/primitives/cost-meter/index.js.map +0 -1
  675. package/dist/primitives/created-files-card/index.js +0 -4
  676. package/dist/primitives/created-files-card/index.js.map +0 -1
  677. package/dist/primitives/cron-job-card/index.js +0 -4
  678. package/dist/primitives/cron-job-card/index.js.map +0 -1
  679. package/dist/primitives/danger-zone/index.js +0 -4
  680. package/dist/primitives/danger-zone/index.js.map +0 -1
  681. package/dist/primitives/dialog/index.js +0 -4
  682. package/dist/primitives/dialog/index.js.map +0 -1
  683. package/dist/primitives/diff-viewer/index.js +0 -4
  684. package/dist/primitives/diff-viewer/index.js.map +0 -1
  685. package/dist/primitives/dropdown-menu/index.js +0 -4
  686. package/dist/primitives/dropdown-menu/index.js.map +0 -1
  687. package/dist/primitives/empty-state/index.js +0 -4
  688. package/dist/primitives/empty-state/index.js.map +0 -1
  689. package/dist/primitives/export-chat-dialog/index.js +0 -5
  690. package/dist/primitives/export-chat-dialog/index.js.map +0 -1
  691. package/dist/primitives/folder-context-card/index.js +0 -4
  692. package/dist/primitives/folder-context-card/index.js.map +0 -1
  693. package/dist/primitives/folder-selector/index.js +0 -4
  694. package/dist/primitives/folder-selector/index.js.map +0 -1
  695. package/dist/primitives/form-field/index.js +0 -5
  696. package/dist/primitives/form-field/index.js.map +0 -1
  697. package/dist/primitives/gateway-status-indicator/index.js +0 -4
  698. package/dist/primitives/gateway-status-indicator/index.js.map +0 -1
  699. package/dist/primitives/hook-config/index.js +0 -5
  700. package/dist/primitives/hook-config/index.js.map +0 -1
  701. package/dist/primitives/hook-event-log/index.js +0 -4
  702. package/dist/primitives/hook-event-log/index.js.map +0 -1
  703. package/dist/primitives/input/index.js +0 -4
  704. package/dist/primitives/input/index.js.map +0 -1
  705. package/dist/primitives/intent-selector/index.js +0 -4
  706. package/dist/primitives/intent-selector/index.js.map +0 -1
  707. package/dist/primitives/label/index.js +0 -4
  708. package/dist/primitives/label/index.js.map +0 -1
  709. package/dist/primitives/lane-board/index.js +0 -4
  710. package/dist/primitives/lane-board/index.js.map +0 -1
  711. package/dist/primitives/login-split/index.js +0 -4
  712. package/dist/primitives/login-split/index.js.map +0 -1
  713. package/dist/primitives/mcp-server-card/index.js +0 -4
  714. package/dist/primitives/mcp-server-card/index.js.map +0 -1
  715. package/dist/primitives/memory-editor/index.js +0 -4
  716. package/dist/primitives/memory-editor/index.js.map +0 -1
  717. package/dist/primitives/mention-menu/index.js +0 -5
  718. package/dist/primitives/mention-menu/index.js.map +0 -1
  719. package/dist/primitives/metrics-panel/index.js +0 -4
  720. package/dist/primitives/metrics-panel/index.js.map +0 -1
  721. package/dist/primitives/model-card/index.js +0 -4
  722. package/dist/primitives/model-card/index.js.map +0 -1
  723. package/dist/primitives/model-selector/index.js +0 -4
  724. package/dist/primitives/model-selector/index.js.map +0 -1
  725. package/dist/primitives/pagination/index.js +0 -4
  726. package/dist/primitives/pagination/index.js.map +0 -1
  727. package/dist/primitives/permission-matrix/index.js +0 -5
  728. package/dist/primitives/permission-matrix/index.js.map +0 -1
  729. package/dist/primitives/pin-input/index.js +0 -5
  730. package/dist/primitives/pin-input/index.js.map +0 -1
  731. package/dist/primitives/plan-badge/index.js +0 -4
  732. package/dist/primitives/plan-badge/index.js.map +0 -1
  733. package/dist/primitives/progress/index.js +0 -4
  734. package/dist/primitives/progress/index.js.map +0 -1
  735. package/dist/primitives/progress-checklist/index.js +0 -4
  736. package/dist/primitives/progress-checklist/index.js.map +0 -1
  737. package/dist/primitives/project-switcher/index.js +0 -4
  738. package/dist/primitives/project-switcher/index.js.map +0 -1
  739. package/dist/primitives/quick-action-chips/index.js +0 -4
  740. package/dist/primitives/quick-action-chips/index.js.map +0 -1
  741. package/dist/primitives/radio-group/index.js +0 -4
  742. package/dist/primitives/radio-group/index.js.map +0 -1
  743. package/dist/primitives/recent-folders-list/index.js +0 -4
  744. package/dist/primitives/recent-folders-list/index.js.map +0 -1
  745. package/dist/primitives/rule-card/index.js +0 -4
  746. package/dist/primitives/rule-card/index.js.map +0 -1
  747. package/dist/primitives/run-stats/index.js +0 -4
  748. package/dist/primitives/run-stats/index.js.map +0 -1
  749. package/dist/primitives/run-status-pill/index.js +0 -4
  750. package/dist/primitives/run-status-pill/index.js.map +0 -1
  751. package/dist/primitives/running-tasks-panel/index.js +0 -4
  752. package/dist/primitives/running-tasks-panel/index.js.map +0 -1
  753. package/dist/primitives/scroll-area/index.js +0 -5
  754. package/dist/primitives/scroll-area/index.js.map +0 -1
  755. package/dist/primitives/select/index.js +0 -4
  756. package/dist/primitives/select/index.js.map +0 -1
  757. package/dist/primitives/session-list-item/index.js +0 -4
  758. package/dist/primitives/session-list-item/index.js.map +0 -1
  759. package/dist/primitives/session-timeline/index.js +0 -4
  760. package/dist/primitives/session-timeline/index.js.map +0 -1
  761. package/dist/primitives/sheet/index.js +0 -4
  762. package/dist/primitives/sheet/index.js.map +0 -1
  763. package/dist/primitives/sidebar/index.js +0 -4
  764. package/dist/primitives/sidebar/index.js.map +0 -1
  765. package/dist/primitives/skeleton/index.js +0 -5
  766. package/dist/primitives/skeleton/index.js.map +0 -1
  767. package/dist/primitives/skill-card/index.js +0 -4
  768. package/dist/primitives/skill-card/index.js.map +0 -1
  769. package/dist/primitives/social-auth-row/index.js +0 -4
  770. package/dist/primitives/social-auth-row/index.js.map +0 -1
  771. package/dist/primitives/stat-tile/index.js +0 -4
  772. package/dist/primitives/stat-tile/index.js.map +0 -1
  773. package/dist/primitives/status-dot/index.js +0 -6
  774. package/dist/primitives/status-dot/index.js.map +0 -1
  775. package/dist/primitives/steps-rail/index.js +0 -4
  776. package/dist/primitives/steps-rail/index.js.map +0 -1
  777. package/dist/primitives/sub-agent-dispatch/index.js +0 -4
  778. package/dist/primitives/sub-agent-dispatch/index.js.map +0 -1
  779. package/dist/primitives/switch/index.js +0 -4
  780. package/dist/primitives/switch/index.js.map +0 -1
  781. package/dist/primitives/system-prompt-editor/index.js +0 -5
  782. package/dist/primitives/system-prompt-editor/index.js.map +0 -1
  783. package/dist/primitives/table/index.js +0 -5
  784. package/dist/primitives/table/index.js.map +0 -1
  785. package/dist/primitives/tabs/index.js +0 -4
  786. package/dist/primitives/tabs/index.js.map +0 -1
  787. package/dist/primitives/task-plan/index.js +0 -4
  788. package/dist/primitives/task-plan/index.js.map +0 -1
  789. package/dist/primitives/terminal-panel/index.js +0 -5
  790. package/dist/primitives/terminal-panel/index.js.map +0 -1
  791. package/dist/primitives/textarea/index.js +0 -4
  792. package/dist/primitives/textarea/index.js.map +0 -1
  793. package/dist/primitives/thinking-level-selector/index.js +0 -5
  794. package/dist/primitives/thinking-level-selector/index.js.map +0 -1
  795. package/dist/primitives/timestamp/index.js +0 -6
  796. package/dist/primitives/timestamp/index.js.map +0 -1
  797. package/dist/primitives/toast/index.js +0 -5
  798. package/dist/primitives/toast/index.js.map +0 -1
  799. package/dist/primitives/token-usage-chart/index.js +0 -4
  800. package/dist/primitives/token-usage-chart/index.js.map +0 -1
  801. package/dist/primitives/tool-call/index.js +0 -5
  802. package/dist/primitives/tool-call/index.js.map +0 -1
  803. package/dist/primitives/tool-call-card/index.js +0 -5
  804. package/dist/primitives/tool-call-card/index.js.map +0 -1
  805. package/dist/primitives/tool-result/index.js +0 -4
  806. package/dist/primitives/tool-result/index.js.map +0 -1
  807. package/dist/primitives/tools-list/index.js +0 -4
  808. package/dist/primitives/tools-list/index.js.map +0 -1
  809. package/dist/primitives/tooltip/index.js +0 -4
  810. package/dist/primitives/tooltip/index.js.map +0 -1
  811. package/dist/primitives/topnav/index.js +0 -4
  812. package/dist/primitives/topnav/index.js.map +0 -1
  813. package/dist/primitives/update-banner/index.js +0 -4
  814. package/dist/primitives/update-banner/index.js.map +0 -1
  815. package/dist/screens/theo-code-shell.d.ts +0 -9
  816. package/dist/screens/theo-code-shell.data.d.ts +0 -147
  817. package/dist/slide/index.js +0 -4
  818. package/dist/slide/index.js.map +0 -1
  819. package/dist/slide/plugins/emoji/index.js +0 -157
  820. package/dist/slide/plugins/emoji/index.js.map +0 -1
  821. package/dist/slide/plugins/math/index.js +0 -145
  822. package/dist/slide/plugins/math/index.js.map +0 -1
  823. package/dist/slide/plugins/mermaid/index.js +0 -218
  824. package/dist/slide/plugins/mermaid/index.js.map +0 -1
  825. package/dist/slide/plugins/shiki/index.js +0 -87
  826. package/dist/slide/plugins/shiki/index.js.map +0 -1
  827. package/dist/slide/themes/default.css +0 -256
  828. package/dist/slide/themes/layouts.css +0 -143
  829. package/dist/slide/themes/violet-forge.css +0 -256
  830. package/dist/slide-deck/index.css +0 -52
  831. package/dist/slide-deck/index.css.map +0 -1
  832. package/dist/slide-deck/index.js +0 -1122
  833. package/dist/slide-deck/index.js.map +0 -1
  834. package/dist/styles-v3-legacy.css +0 -88
  835. package/dist/styles.css +0 -137
  836. package/dist/themes/anthropic-style.d.ts +0 -11
  837. package/dist/themes/aurora-terminal.d.ts +0 -9
  838. package/dist/themes/classic-paper.d.ts +0 -17
  839. package/dist/themes/color-value-pattern.d.ts +0 -22
  840. package/dist/themes/color.d.ts +0 -62
  841. package/dist/themes/define.d.ts +0 -65
  842. package/dist/themes/density.d.ts +0 -17
  843. package/dist/themes/dracula.d.ts +0 -14
  844. package/dist/themes/github-dark.d.ts +0 -11
  845. package/dist/themes/index.d.ts +0 -26
  846. package/dist/themes/linear-glass.d.ts +0 -11
  847. package/dist/themes/one-dark.d.ts +0 -11
  848. package/dist/themes/openai-style.d.ts +0 -10
  849. package/dist/themes/schema.d.ts +0 -112
  850. package/dist/themes/theme-provider.d.ts +0 -82
  851. package/dist/themes/theme-script.d.ts +0 -48
  852. package/dist/themes/theme-switcher.d.ts +0 -17
  853. package/dist/themes/types.d.ts +0 -88
  854. package/dist/themes/vercel-mono.d.ts +0 -11
  855. package/dist/themes/violet-forge.d.ts +0 -12
  856. package/dist/theo-ui-provider.d.ts +0 -50
  857. package/dist/tokens-v4.css +0 -223
  858. package/dist/tokens.css +0 -315
  859. package/dist/types/agent.d.ts +0 -19
  860. package/dist/types/chat.d.ts +0 -173
  861. package/dist/types/mode.d.ts +0 -16
  862. package/dist/types/permission.d.ts +0 -8
  863. package/dist/types/rule.d.ts +0 -28
  864. package/dist/vite-plugin.d.ts +0 -25
  865. package/dist/vite-plugin.js +0 -76
  866. package/dist/vite-plugin.js.map +0 -1
  867. package/dist/whiteboard/index.js +0 -741
  868. package/dist/whiteboard/index.js.map +0 -1
  869. package/llms.txt +0 -273
  870. package/registry/index.json +0 -910
  871. package/registry/r/account-menu.json +0 -24
  872. package/registry/r/action-bar.json +0 -22
  873. package/registry/r/agent-composer.json +0 -22
  874. package/registry/r/agent-editor.json +0 -27
  875. package/registry/r/agent-error-card.json +0 -22
  876. package/registry/r/agent-event.json +0 -24
  877. package/registry/r/agent-handoff.json +0 -22
  878. package/registry/r/agent-profile.json +0 -23
  879. package/registry/r/agent-starting-state.json +0 -22
  880. package/registry/r/agent-stream.json +0 -27
  881. package/registry/r/agent-streaming.json +0 -22
  882. package/registry/r/agent-timeline.json +0 -22
  883. package/registry/r/agent-tool-renderer.json +0 -40
  884. package/registry/r/agent-types.json +0 -15
  885. package/registry/r/alert.json +0 -22
  886. package/registry/r/approval-card.json +0 -25
  887. package/registry/r/artifact-preview.json +0 -22
  888. package/registry/r/attachment-chip.json +0 -24
  889. package/registry/r/audit-log-entry.json +0 -23
  890. package/registry/r/auto-compact-notice.json +0 -22
  891. package/registry/r/avatar.json +0 -23
  892. package/registry/r/badge.json +0 -22
  893. package/registry/r/browser-controls.json +0 -22
  894. package/registry/r/build-log-stream.json +0 -20
  895. package/registry/r/button.json +0 -23
  896. package/registry/r/capability-indicator.json +0 -23
  897. package/registry/r/card.json +0 -22
  898. package/registry/r/chat-composer.json +0 -23
  899. package/registry/r/chat-message.json +0 -124
  900. package/registry/r/chat-thread.json +0 -20
  901. package/registry/r/chat-types.json +0 -15
  902. package/registry/r/checkbox.json +0 -24
  903. package/registry/r/choice-prompt.json +0 -25
  904. package/registry/r/cn.json +0 -19
  905. package/registry/r/code-block.json +0 -21
  906. package/registry/r/command-palette.json +0 -25
  907. package/registry/r/confirm-dialog.json +0 -25
  908. package/registry/r/confirm-prompt.json +0 -21
  909. package/registry/r/context-card.json +0 -23
  910. package/registry/r/context-window-bar.json +0 -20
  911. package/registry/r/copy-button.json +0 -22
  912. package/registry/r/cost-meter.json +0 -22
  913. package/registry/r/created-files-card.json +0 -23
  914. package/registry/r/cron-job-card.json +0 -22
  915. package/registry/r/cron-jobs-list.json +0 -23
  916. package/registry/r/danger-zone.json +0 -20
  917. package/registry/r/data-table.json +0 -27
  918. package/registry/r/deployment-row.json +0 -23
  919. package/registry/r/dialog.json +0 -23
  920. package/registry/r/diff-viewer.json +0 -20
  921. package/registry/r/domain-config.json +0 -25
  922. package/registry/r/dropdown-menu.json +0 -23
  923. package/registry/r/empty-state.json +0 -20
  924. package/registry/r/env-var-editor.json +0 -26
  925. package/registry/r/env.json +0 -15
  926. package/registry/r/folder-context-card.json +0 -23
  927. package/registry/r/folder-selector.json +0 -22
  928. package/registry/r/form-field.json +0 -23
  929. package/registry/r/hook-config.json +0 -22
  930. package/registry/r/hook-event-log.json +0 -22
  931. package/registry/r/input.json +0 -22
  932. package/registry/r/intent-selector.json +0 -24
  933. package/registry/r/label.json +0 -22
  934. package/registry/r/lane-board.json +0 -20
  935. package/registry/r/live-region-context.json +0 -16
  936. package/registry/r/login-split.json +0 -20
  937. package/registry/r/mcp-server-card.json +0 -22
  938. package/registry/r/mcp-server-list.json +0 -23
  939. package/registry/r/memory-editor.json +0 -23
  940. package/registry/r/mention-menu.json +0 -23
  941. package/registry/r/metric-card.json +0 -23
  942. package/registry/r/metrics-panel.json +0 -22
  943. package/registry/r/mode-types.json +0 -15
  944. package/registry/r/model-card.json +0 -23
  945. package/registry/r/model-selector.json +0 -23
  946. package/registry/r/multi-select-prompt.json +0 -25
  947. package/registry/r/page-shell.json +0 -25
  948. package/registry/r/pagination.json +0 -22
  949. package/registry/r/permission-matrix.json +0 -22
  950. package/registry/r/permission-modal.json +0 -24
  951. package/registry/r/permission-types.json +0 -15
  952. package/registry/r/pin-input.json +0 -20
  953. package/registry/r/plan-badge.json +0 -20
  954. package/registry/r/preview-env-card.json +0 -25
  955. package/registry/r/preview-panel.json +0 -21
  956. package/registry/r/progress-checklist.json +0 -23
  957. package/registry/r/progress.json +0 -20
  958. package/registry/r/project-card.json +0 -25
  959. package/registry/r/project-switcher.json +0 -22
  960. package/registry/r/prompt.json +0 -15
  961. package/registry/r/quick-action-chips.json +0 -21
  962. package/registry/r/radio-group.json +0 -23
  963. package/registry/r/recent-folders-list.json +0 -22
  964. package/registry/r/rollback-ui.json +0 -24
  965. package/registry/r/rule-card.json +0 -23
  966. package/registry/r/rule-editor.json +0 -28
  967. package/registry/r/rule-types.json +0 -18
  968. package/registry/r/run-stats.json +0 -22
  969. package/registry/r/running-tasks-panel.json +0 -22
  970. package/registry/r/safe-href.json +0 -16
  971. package/registry/r/scroll-area.json +0 -22
  972. package/registry/r/select.json +0 -24
  973. package/registry/r/session-list-item.json +0 -20
  974. package/registry/r/session-timeline.json +0 -22
  975. package/registry/r/sheet.json +0 -24
  976. package/registry/r/sidebar.json +0 -19
  977. package/registry/r/skeleton.json +0 -19
  978. package/registry/r/skill-card.json +0 -24
  979. package/registry/r/skill-editor.json +0 -28
  980. package/registry/r/skills-list.json +0 -23
  981. package/registry/r/slide-deck.json +0 -130
  982. package/registry/r/slide-plugin-emoji.json +0 -28
  983. package/registry/r/slide-plugin-math.json +0 -24
  984. package/registry/r/slide-plugin-mermaid.json +0 -23
  985. package/registry/r/slide-plugin-shiki.json +0 -23
  986. package/registry/r/slide.json +0 -123
  987. package/registry/r/social-auth-row.json +0 -21
  988. package/registry/r/stat-tile.json +0 -22
  989. package/registry/r/status-dot.json +0 -21
  990. package/registry/r/status-indicator.json +0 -20
  991. package/registry/r/steps-rail.json +0 -20
  992. package/registry/r/sub-agent-dispatch.json +0 -22
  993. package/registry/r/switch.json +0 -23
  994. package/registry/r/system-prompt-editor.json +0 -22
  995. package/registry/r/table.json +0 -22
  996. package/registry/r/tabs.json +0 -22
  997. package/registry/r/tailwind-preset.json +0 -19
  998. package/registry/r/task-header.json +0 -24
  999. package/registry/r/task-plan.json +0 -22
  1000. package/registry/r/task-types.json +0 -15
  1001. package/registry/r/terminal-panel.json +0 -22
  1002. package/registry/r/text-prompt.json +0 -24
  1003. package/registry/r/textarea.json +0 -22
  1004. package/registry/r/theme-provider.json +0 -60
  1005. package/registry/r/theme-script.json +0 -18
  1006. package/registry/r/theo-ui-provider.json +0 -20
  1007. package/registry/r/timestamp.json +0 -21
  1008. package/registry/r/toast.json +0 -30
  1009. package/registry/r/token-usage-chart.json +0 -20
  1010. package/registry/r/tokens.json +0 -21
  1011. package/registry/r/tool-call-card.json +0 -23
  1012. package/registry/r/tool-call.json +0 -22
  1013. package/registry/r/tool-result.json +0 -20
  1014. package/registry/r/tools-list.json +0 -23
  1015. package/registry/r/tooltip.json +0 -22
  1016. package/registry/r/topnav.json +0 -22
  1017. package/registry/r/types.json +0 -15
  1018. package/registry/r/usage-meter.json +0 -21
  1019. package/registry/r/whiteboard.json +0 -101
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/composites/choice-prompt/choice-prompt.tsx"],"names":[],"mappings":"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","file":"chunk-5XCTTXC3.js","sourcesContent":["\"use client\";\n\nimport { forwardRef, useId, useState } from \"react\";\nimport type { HTMLAttributes, KeyboardEvent, ReactNode } from \"react\";\nimport { cn } from \"../../../lib/cn.js\";\nimport {\n OTHER_OPTION_VALUE,\n type PromptOption,\n digitKeyToIndex,\n isOtherValue,\n} from \"../../../lib/prompt.js\";\nimport { Badge } from \"../../primitives/badge/index.js\";\nimport { Button } from \"../../primitives/button/index.js\";\nimport { Input } from \"../../primitives/input/index.js\";\nimport { Label } from \"../../primitives/label/index.js\";\nimport { RadioGroup } from \"../../primitives/radio-group/index.js\";\n\n/**\n * ChoicePrompt — single-select \"ask the user\" card for agent surfaces.\n *\n * Mirrors the UX of Claude Code's question card: a question with an optional\n * header chip, a list of options each carrying a label + description, optional\n * number-key shortcuts (terminal-style `1`..`9` selection), an injectable\n * free-text \"Other\" option, and a side-by-side preview pane when options carry\n * preview content.\n *\n * Renders one question at a time — sequencing across multiple questions is the\n * consumer's responsibility (there is no built-in flow orchestrator).\n *\n * Controlled or uncontrolled: pass `value` + `onValueChange` to control the\n * selection, or `defaultValue` to let the component own it. Same for the Other\n * text via `otherText` / `onOtherTextChange`.\n */\n\n/** Payload handed to `onConfirm`. */\nexport interface ChoicePromptResult {\n /** The selected option value (or the reserved Other value). */\n value: string;\n /** Present only when the selected value is the synthesized Other option. */\n otherText?: string;\n}\n\nexport interface ChoicePromptProps extends Omit<HTMLAttributes<HTMLElement>, \"onSelect\"> {\n /** The question being asked. */\n question: ReactNode;\n /** Optional secondary line under the question. */\n description?: ReactNode;\n /** Optional short header chip (rendered as a Badge), e.g. \"Deploy\". */\n badge?: ReactNode;\n /** The selectable options. */\n options: PromptOption[];\n /** Controlled selected value. */\n value?: string;\n /** Initial selected value when uncontrolled. */\n defaultValue?: string;\n /** Fired with the option value whenever the selection changes. */\n onValueChange?: (value: string) => void;\n /** Inject a free-text \"Other\" option as the last row. */\n allowOther?: boolean;\n /** Label for the Other row. Defaults to \"Other\". */\n otherLabel?: ReactNode;\n /** Placeholder for the Other text field. */\n otherPlaceholder?: string;\n /** Controlled Other text. */\n otherText?: string;\n /** Fired with the Other text on every keystroke. */\n onOtherTextChange?: (text: string) => void;\n /** Enable `1`..`9` number-key selection. Default true. */\n enableKeyboardShortcuts?: boolean;\n /** Show the `1`..`9` hint chips next to options. Defaults to the shortcut flag. */\n showNumbers?: boolean;\n /** Confirm button label. Defaults to \"Confirm\". Omit `onConfirm` to hide it. */\n confirmLabel?: ReactNode;\n /** Cancel button label. Defaults to \"Cancel\". Omit `onCancel` to hide it. */\n cancelLabel?: ReactNode;\n /** Pressing Confirm. Receives the selection (and Other text when relevant). */\n onConfirm?: (result: ChoicePromptResult) => void;\n /** Pressing Cancel. */\n onCancel?: () => void;\n}\n\nconst ChoicePrompt = forwardRef<HTMLElement, ChoicePromptProps>(\n (\n {\n className,\n question,\n description,\n badge,\n options,\n value,\n defaultValue,\n onValueChange,\n allowOther = false,\n otherLabel = \"Other\",\n otherPlaceholder = \"Type your answer…\",\n otherText,\n onOtherTextChange,\n enableKeyboardShortcuts = true,\n showNumbers,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n onConfirm,\n onCancel,\n ...props\n },\n ref,\n ) => {\n const baseId = useId();\n const questionId = `${baseId}-question`;\n const optionId = (value_: string): string => `${baseId}-opt-${value_}`;\n\n const [internalValue, setInternalValue] = useState<string | undefined>(defaultValue);\n const selected = value !== undefined ? value : internalValue;\n\n const [internalOther, setInternalOther] = useState(\"\");\n const otherValue = otherText !== undefined ? otherText : internalOther;\n\n const numbersVisible = showNumbers ?? enableKeyboardShortcuts;\n const hasPreview = options.some((option) => option.preview != null);\n const selectedPreview = options.find((option) => option.value === selected)?.preview;\n\n const select = (next: string): void => {\n if (value === undefined) setInternalValue(next);\n onValueChange?.(next);\n };\n\n const setOther = (next: string): void => {\n if (otherText === undefined) setInternalOther(next);\n onOtherTextChange?.(next);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>): void => {\n if (!enableKeyboardShortcuts) return;\n const target = event.target as HTMLElement;\n // Never hijack digits typed into a form field (e.g. the Other input).\n if (target.tagName === \"INPUT\" || target.tagName === \"TEXTAREA\") return;\n const index = digitKeyToIndex(event.key);\n if (index === null || index >= options.length) return;\n const option = options[index];\n if (!option || option.disabled) return;\n event.preventDefault();\n select(option.value);\n };\n\n const confirm = (): void => {\n if (!selected) return;\n onConfirm?.(\n isOtherValue(selected) ? { value: selected, otherText: otherValue } : { value: selected },\n );\n };\n\n return (\n <section\n data-slot=\"choice-prompt\"\n ref={ref}\n aria-labelledby={questionId}\n onKeyDown={handleKeyDown}\n className={cn(\n \"grid w-full gap-4 rounded-xl border bg-card p-5 text-card-foreground shadow-md\",\n \"transition-shadow duration-base ease-out-soft\",\n className,\n )}\n {...props}\n >\n <header className=\"flex items-start justify-between gap-3\">\n <h3 id={questionId} className=\"font-display text-foreground text-title-md tracking-tight\">\n {question}\n </h3>\n {badge != null ? (\n <Badge variant=\"primary\" size=\"sm\" className=\"shrink-0\">\n {badge}\n </Badge>\n ) : null}\n </header>\n {description != null ? (\n <p className=\"text-body-sm text-muted-foreground\">{description}</p>\n ) : null}\n\n <div className={cn(\"grid gap-5\", hasPreview && \"md:grid-cols-2\")}>\n <RadioGroup\n aria-labelledby={questionId}\n value={selected ?? \"\"}\n onValueChange={select}\n className=\"gap-2\"\n >\n {options.map((option, index) => (\n <div key={option.value} className=\"flex items-start gap-3\">\n <RadioGroup.Item\n value={option.value}\n id={optionId(option.value)}\n disabled={option.disabled}\n className=\"mt-0.5\"\n />\n <Label\n htmlFor={optionId(option.value)}\n className=\"flex flex-1 cursor-pointer flex-col items-start gap-0.5\"\n >\n <span className=\"text-body-md text-foreground\">{option.label}</span>\n {option.description != null ? (\n <span className=\"text-body-sm text-muted-foreground\">{option.description}</span>\n ) : null}\n </Label>\n {numbersVisible && index < 9 ? (\n <span\n aria-hidden=\"true\"\n className=\"mt-0.5 shrink-0 rounded border border-border bg-muted px-1.5 font-mono text-label text-muted-foreground\"\n >\n {index + 1}\n </span>\n ) : null}\n </div>\n ))}\n\n {allowOther ? (\n <div className=\"flex flex-col gap-2 border-border/40 border-t pt-2\">\n <div className=\"flex items-start gap-3\">\n <RadioGroup.Item\n value={OTHER_OPTION_VALUE}\n id={optionId(OTHER_OPTION_VALUE)}\n className=\"mt-0.5\"\n />\n <Label\n htmlFor={optionId(OTHER_OPTION_VALUE)}\n className=\"flex-1 cursor-pointer text-body-md\"\n >\n {otherLabel}\n </Label>\n </div>\n {isOtherValue(selected) ? (\n <Input\n size=\"sm\"\n aria-label={typeof otherLabel === \"string\" ? otherLabel : \"Other\"}\n placeholder={otherPlaceholder}\n value={otherValue}\n onChange={(event) => setOther(event.target.value)}\n className=\"ml-7\"\n />\n ) : null}\n </div>\n ) : null}\n </RadioGroup>\n\n {hasPreview ? (\n <div className=\"rounded-lg border border-border/60 bg-muted/40 p-3\">\n <p className=\"mb-2 font-sans text-label-caps text-muted-foreground uppercase tracking-wider\">\n Preview\n </p>\n {selectedPreview != null ? (\n <div className=\"whitespace-pre-wrap break-words font-mono text-code-sm text-foreground\">\n {selectedPreview}\n </div>\n ) : (\n <p className=\"text-body-sm text-muted-foreground\">Select an option to preview.</p>\n )}\n </div>\n ) : null}\n </div>\n\n {onConfirm || onCancel ? (\n <footer className=\"flex items-center justify-end gap-2\">\n {onCancel ? (\n <Button size=\"sm\" variant=\"secondary\" onClick={onCancel}>\n {cancelLabel}\n </Button>\n ) : null}\n {onConfirm ? (\n <Button size=\"sm\" variant=\"primary\" disabled={!selected} onClick={confirm}>\n {confirmLabel}\n </Button>\n ) : null}\n </footer>\n ) : null}\n </section>\n );\n },\n);\nChoicePrompt.displayName = \"ChoicePrompt\";\n\nexport { ChoicePrompt };\n"]}
@@ -1,77 +0,0 @@
1
- import { cn } from './chunk-EWDN56AS.js';
2
- import { cva } from 'class-variance-authority';
3
- import { forwardRef } from 'react';
4
- import { jsx } from 'react/jsx-runtime';
5
-
6
- var badgeVariants = cva(
7
- [
8
- "inline-flex items-center gap-1.5 rounded-full border",
9
- "font-sans uppercase tracking-wider",
10
- "transition-colors"
11
- ],
12
- {
13
- variants: {
14
- variant: {
15
- default: "border-border/40 bg-muted text-muted-foreground",
16
- primary: "border-primary/30 bg-primary/10 text-primary",
17
- accent: "border-accent/40 bg-accent/15 text-accent",
18
- success: "border-success/40 bg-success/15 text-success",
19
- warning: "border-warning/40 bg-warning/15 text-warning",
20
- destructive: "border-destructive/40 bg-destructive/15 text-destructive",
21
- outline: "border-border bg-transparent text-foreground"
22
- },
23
- size: {
24
- sm: "px-2 py-0.5 text-label-caps",
25
- md: "px-2.5 py-0.5 text-label",
26
- lg: "px-3 py-1 text-body-md"
27
- }
28
- },
29
- defaultVariants: { variant: "default", size: "md" }
30
- }
31
- );
32
- var Badge = forwardRef(
33
- ({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx(
34
- "span",
35
- {
36
- "data-slot": "badge",
37
- "data-variant": variant,
38
- "data-size": size,
39
- ref,
40
- className: cn(badgeVariants({ variant, size }), className),
41
- ...props
42
- }
43
- )
44
- );
45
- Badge.displayName = "Badge";
46
- var toneClass = {
47
- primary: "bg-primary",
48
- accent: "bg-accent",
49
- success: "bg-success",
50
- warning: "bg-warning",
51
- destructive: "bg-destructive",
52
- muted: "bg-muted-foreground"
53
- };
54
- var Dot = forwardRef(
55
- ({ className, pulse = false, tone = "success", ...props }, ref) => /* @__PURE__ */ jsx(
56
- "span",
57
- {
58
- "data-slot": "badge-dot",
59
- ref,
60
- "aria-hidden": "true",
61
- className: cn(
62
- "inline-block size-1.5 rounded-full",
63
- toneClass[tone],
64
- pulse && "animate-pulse-glow",
65
- className
66
- ),
67
- ...props
68
- }
69
- )
70
- );
71
- Dot.displayName = "Badge.Dot";
72
- var BadgeWithDot = Badge;
73
- BadgeWithDot.Dot = Dot;
74
-
75
- export { BadgeWithDot, badgeVariants };
76
- //# sourceMappingURL=chunk-624AATQZ.js.map
77
- //# sourceMappingURL=chunk-624AATQZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/badge/badge.tsx"],"names":[],"mappings":";;;;;AAoBA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB;AAAA,IACE,sDAAA;AAAA,IACA,oCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,iDAAA;AAAA,QACT,OAAA,EAAS,8CAAA;AAAA,QACT,MAAA,EAAQ,2CAAA;AAAA,QACR,OAAA,EAAS,8CAAA;AAAA,QACT,OAAA,EAAS,8CAAA;AAAA,QACT,WAAA,EAAa,0DAAA;AAAA,QACb,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,6BAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,IAAA;AAAK;AAEtD;AAMA,IAAM,KAAA,GAAQ,UAAA;AAAA,EACZ,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,MAAM,GAAG,KAAA,IAAS,GAAA,qBACvC,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,GAAA;AAAA,MACA,SAAA,EAAW,GAAG,aAAA,CAAc,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MACxD,GAAG;AAAA;AAAA;AAGV,CAAA;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;AAOpB,IAAM,SAAA,GAAgE;AAAA,EACpE,OAAA,EAAS,YAAA;AAAA,EACT,MAAA,EAAQ,WAAA;AAAA,EACR,OAAA,EAAS,YAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,WAAA,EAAa,gBAAA;AAAA,EACb,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,GAAA,GAAM,UAAA;AAAA,EACV,CAAC,EAAE,SAAA,EAAW,KAAA,GAAQ,KAAA,EAAO,OAAO,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBACzD,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,GAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACT,oCAAA;AAAA,QACA,UAAU,IAAI,CAAA;AAAA,QACd,KAAA,IAAS,oBAAA;AAAA,QACT;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AAGV,CAAA;AACA,GAAA,CAAI,WAAA,GAAc,WAAA;AAElB,IAAM,YAAA,GAAe;AACrB,YAAA,CAAa,GAAA,GAAM,GAAA","file":"chunk-624AATQZ.js","sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"../../../lib/cn.js\";\n\n/**\n * Badge — small status / tag indicator.\n *\n * Variants:\n * - default muted surface, hairline border\n * - primary violet outline + soft violet bg\n * - accent burnt sienna (celebration / pro / beta)\n * - success deploy succeeded\n * - warning attention needed\n * - destructive failed\n * - outline transparent, just border\n *\n * Status dots are inlined via `<Badge.Dot />` for things like \"Building…\",\n * \"Running\", \"Failed\" rows in deployment lists.\n */\nconst badgeVariants = cva(\n [\n \"inline-flex items-center gap-1.5 rounded-full border\",\n \"font-sans uppercase tracking-wider\",\n \"transition-colors\",\n ],\n {\n variants: {\n variant: {\n default: \"border-border/40 bg-muted text-muted-foreground\",\n primary: \"border-primary/30 bg-primary/10 text-primary\",\n accent: \"border-accent/40 bg-accent/15 text-accent\",\n success: \"border-success/40 bg-success/15 text-success\",\n warning: \"border-warning/40 bg-warning/15 text-warning\",\n destructive: \"border-destructive/40 bg-destructive/15 text-destructive\",\n outline: \"border-border bg-transparent text-foreground\",\n },\n size: {\n sm: \"px-2 py-0.5 text-label-caps\",\n md: \"px-2.5 py-0.5 text-label\",\n lg: \"px-3 py-1 text-body-md\",\n },\n },\n defaultVariants: { variant: \"default\", size: \"md\" },\n },\n);\n\nexport interface BadgeProps\n extends HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nconst Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, ...props }, ref) => (\n <span\n data-slot=\"badge\"\n data-variant={variant}\n data-size={size}\n ref={ref}\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n />\n ),\n);\nBadge.displayName = \"Badge\";\n\ninterface BadgeDotProps extends HTMLAttributes<HTMLSpanElement> {\n pulse?: boolean;\n tone?: \"primary\" | \"accent\" | \"success\" | \"warning\" | \"destructive\" | \"muted\";\n}\n\nconst toneClass: Record<NonNullable<BadgeDotProps[\"tone\"]>, string> = {\n primary: \"bg-primary\",\n accent: \"bg-accent\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n destructive: \"bg-destructive\",\n muted: \"bg-muted-foreground\",\n};\n\nconst Dot = forwardRef<HTMLSpanElement, BadgeDotProps>(\n ({ className, pulse = false, tone = \"success\", ...props }, ref) => (\n <span\n data-slot=\"badge-dot\"\n ref={ref}\n aria-hidden=\"true\"\n className={cn(\n \"inline-block size-1.5 rounded-full\",\n toneClass[tone],\n pulse && \"animate-pulse-glow\",\n className,\n )}\n {...props}\n />\n ),\n);\nDot.displayName = \"Badge.Dot\";\n\nconst BadgeWithDot = Badge as typeof Badge & { Dot: typeof Dot };\nBadgeWithDot.Dot = Dot;\n\nexport { BadgeWithDot as Badge, badgeVariants };\n"]}
@@ -1,47 +0,0 @@
1
- import { cn } from './chunk-EWDN56AS.js';
2
- import { forwardRef } from 'react';
3
- import { jsx, jsxs } from 'react/jsx-runtime';
4
-
5
- var SocialAuthRow = forwardRef(
6
- ({ className, providers, onSelect, vertical, ...props }, ref) => /* @__PURE__ */ jsx(
7
- "div",
8
- {
9
- "data-slot": "social-auth-row",
10
- ref,
11
- className: cn(
12
- "grid gap-2",
13
- vertical ? "grid-cols-1" : `grid-cols-${Math.min(providers.length, 4)}`,
14
- className
15
- ),
16
- style: !vertical ? { gridTemplateColumns: `repeat(${providers.length}, minmax(0, 1fr))` } : void 0,
17
- ...props,
18
- children: providers.map((p) => {
19
- const Icon = p.icon;
20
- return /* @__PURE__ */ jsxs(
21
- "button",
22
- {
23
- type: "button",
24
- onClick: () => onSelect?.(p.id),
25
- className: cn(
26
- "inline-flex h-10 items-center justify-center gap-2 rounded-lg border border-border bg-card",
27
- "px-4 font-medium font-sans text-body-sm text-foreground",
28
- "transition-colors duration-base ease-out-soft",
29
- "hover:bg-muted",
30
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background"
31
- ),
32
- children: [
33
- /* @__PURE__ */ jsx(Icon, { className: "size-4", "aria-hidden": "true" }),
34
- p.label
35
- ]
36
- },
37
- p.id
38
- );
39
- })
40
- }
41
- )
42
- );
43
- SocialAuthRow.displayName = "SocialAuthRow";
44
-
45
- export { SocialAuthRow };
46
- //# sourceMappingURL=chunk-6IODJQWC.js.map
47
- //# sourceMappingURL=chunk-6IODJQWC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/social-auth-row/social-auth-row.tsx"],"names":[],"mappings":";;;;AA2BA,IAAM,aAAA,GAAgB,UAAA;AAAA,EACpB,CAAC,EAAE,SAAA,EAAW,SAAA,EAAW,UAAU,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACvD,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,YAAA;AAAA,QACA,QAAA,GAAW,gBAAgB,CAAA,UAAA,EAAa,IAAA,CAAK,IAAI,SAAA,CAAU,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,QACrE;AAAA,OACF;AAAA,MACA,KAAA,EACE,CAAC,QAAA,GACG,EAAE,qBAAqB,CAAA,OAAA,EAAU,SAAA,CAAU,MAAM,CAAA,iBAAA,CAAA,EAAoB,GACrE,MAAA;AAAA,MAEL,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,KAAM;AACpB,QAAA,MAAM,OAAO,CAAA,CAAE,IAAA;AACf,QAAA,uBACE,IAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,QAAA,GAAW,CAAA,CAAE,EAAE,CAAA;AAAA,YAC9B,SAAA,EAAW,EAAA;AAAA,cACT,4FAAA;AAAA,cACA,yDAAA;AAAA,cACA,+CAAA;AAAA,cACA,gBAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,aAAA,EAAY,MAAA,EAAO,CAAA;AAAA,cAC3C,CAAA,CAAE;AAAA;AAAA,WAAA;AAAA,UAZE,CAAA,CAAE;AAAA,SAaT;AAAA,MAEJ,CAAC;AAAA;AAAA;AAGP;AACA,aAAA,CAAc,WAAA,GAAc,eAAA","file":"chunk-6IODJQWC.js","sourcesContent":["import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../../../lib/cn.js\";\nimport type { IconComponent } from \"../../../lib/types.js\";\n\nexport interface SocialProvider {\n id: string;\n label: ReactNode;\n /** Icon component (e.g. brand-specific SVG). */\n icon: IconComponent;\n}\n\ninterface SocialAuthRowProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n providers: SocialProvider[];\n onSelect?: (id: string) => void;\n /**\n * Stack vertically instead of horizontally (single-column flow).\n */\n vertical?: boolean;\n}\n\n/**\n * SocialAuthRow — row of OAuth provider buttons.\n *\n * Stateless; caller wires the redirect on `onSelect`. Buttons share Theo button\n * styling but with provider icon prominently on the left.\n */\nconst SocialAuthRow = forwardRef<HTMLDivElement, SocialAuthRowProps>(\n ({ className, providers, onSelect, vertical, ...props }, ref) => (\n <div\n data-slot=\"social-auth-row\"\n ref={ref}\n className={cn(\n \"grid gap-2\",\n vertical ? \"grid-cols-1\" : `grid-cols-${Math.min(providers.length, 4)}`,\n className,\n )}\n style={\n !vertical\n ? { gridTemplateColumns: `repeat(${providers.length}, minmax(0, 1fr))` }\n : undefined\n }\n {...props}\n >\n {providers.map((p) => {\n const Icon = p.icon;\n return (\n <button\n key={p.id}\n type=\"button\"\n onClick={() => onSelect?.(p.id)}\n className={cn(\n \"inline-flex h-10 items-center justify-center gap-2 rounded-lg border border-border bg-card\",\n \"px-4 font-medium font-sans text-body-sm text-foreground\",\n \"transition-colors duration-base ease-out-soft\",\n \"hover:bg-muted\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n )}\n >\n <Icon className=\"size-4\" aria-hidden=\"true\" />\n {p.label}\n </button>\n );\n })}\n </div>\n ),\n);\nSocialAuthRow.displayName = \"SocialAuthRow\";\n\nexport { SocialAuthRow };\n"]}
@@ -1,134 +0,0 @@
1
- "use client";
2
- import { cn } from './chunk-EWDN56AS.js';
3
- import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
4
- import { forwardRef, useRef, useState, useCallback, useEffect } from 'react';
5
- import { jsxs, jsx } from 'react/jsx-runtime';
6
-
7
- var ScrollAreaRoot = forwardRef(
8
- ({ className, children, orientation = "vertical", size = "thin", type = "hover", ...props }, ref) => /* @__PURE__ */ jsxs(
9
- ScrollAreaPrimitive.Root,
10
- {
11
- "data-slot": "scroll-area",
12
- ref,
13
- type,
14
- className: cn("relative overflow-hidden", className),
15
- ...props,
16
- children: [
17
- /* @__PURE__ */ jsx(
18
- ScrollAreaPrimitive.Viewport,
19
- {
20
- className: cn(
21
- "h-full w-full rounded-[inherit]",
22
- // Smooth scroll-behavior + masked overflow inheriting any inner radius
23
- "[&>div]:!block"
24
- ),
25
- children
26
- }
27
- ),
28
- orientation === "vertical" || orientation === "both" ? /* @__PURE__ */ jsx(ScrollBar, { orientation: "vertical", size }) : null,
29
- orientation === "horizontal" || orientation === "both" ? /* @__PURE__ */ jsx(ScrollBar, { orientation: "horizontal", size }) : null,
30
- /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, { className: "bg-transparent" })
31
- ]
32
- }
33
- )
34
- );
35
- ScrollAreaRoot.displayName = "ScrollArea";
36
- var ScrollBar = forwardRef(({ className, orientation = "vertical", size = "thin", ...props }, ref) => /* @__PURE__ */ jsx(
37
- ScrollAreaPrimitive.ScrollAreaScrollbar,
38
- {
39
- "data-slot": "scroll-area-bar",
40
- ref,
41
- orientation,
42
- className: cn(
43
- "z-10 flex touch-none select-none p-0.5 transition-[width,height,background-color] duration-base ease-out-soft",
44
- // hover state slightly lifts the track with a near-invisible violet wash
45
- "hover:bg-primary/5",
46
- orientation === "vertical" && (size === "thin" ? "h-full w-2.5 border-l border-l-transparent" : "h-full w-3 border-l border-l-transparent"),
47
- orientation === "horizontal" && (size === "thin" ? "h-2.5 w-full flex-col border-t border-t-transparent" : "h-3 w-full flex-col border-t border-t-transparent"),
48
- className
49
- ),
50
- ...props,
51
- children: /* @__PURE__ */ jsx(
52
- ScrollAreaPrimitive.ScrollAreaThumb,
53
- {
54
- className: cn(
55
- "relative flex-1 rounded-full bg-primary/30",
56
- "transition-[background-color,box-shadow] duration-fast ease-out-soft",
57
- // Theme-aware: glow uses --primary (recolors when theme switches)
58
- "hover:bg-primary/55 hover:shadow-[0_0_8px_hsl(var(--primary)/0.35)]",
59
- // Drag state uses Radix data-state="visible" + :active
60
- "active:bg-primary/75 data-[state=visible]:bg-primary/45"
61
- )
62
- }
63
- )
64
- }
65
- ));
66
- ScrollBar.displayName = "ScrollArea.Bar";
67
- var ScrollArea = /* @__PURE__ */ Object.assign(ScrollAreaRoot, { Bar: ScrollBar });
68
- function isNearBottom(metrics, threshold) {
69
- return metrics.scrollHeight - metrics.clientHeight - metrics.scrollTop <= threshold;
70
- }
71
- function resolveViewport(node) {
72
- return node.querySelector("[data-radix-scroll-area-viewport]") ?? node;
73
- }
74
- function readMetrics(el) {
75
- return { scrollTop: el.scrollTop, scrollHeight: el.scrollHeight, clientHeight: el.clientHeight };
76
- }
77
- var DEFAULT_THRESHOLD = 32;
78
- function useStickToBottom(options = {}) {
79
- const threshold = options.threshold ?? DEFAULT_THRESHOLD;
80
- const viewportRef = useRef(null);
81
- const pinnedRef = useRef(true);
82
- const cleanupRef = useRef(null);
83
- const [isPinned, setIsPinned] = useState(true);
84
- const scrollToBottom = useCallback(() => {
85
- const el = viewportRef.current;
86
- if (!el) return;
87
- el.scrollTop = el.scrollHeight;
88
- pinnedRef.current = true;
89
- setIsPinned(true);
90
- }, []);
91
- const scrollRef = useCallback(
92
- (node) => {
93
- cleanupRef.current?.();
94
- cleanupRef.current = null;
95
- if (node === null) {
96
- viewportRef.current = null;
97
- return;
98
- }
99
- const vp = resolveViewport(node);
100
- viewportRef.current = vp;
101
- const updatePinned = () => {
102
- const pinned = isNearBottom(readMetrics(vp), threshold);
103
- pinnedRef.current = pinned;
104
- setIsPinned(pinned);
105
- };
106
- const onScroll = () => updatePinned();
107
- const onGrow = () => {
108
- if (pinnedRef.current) vp.scrollTop = vp.scrollHeight;
109
- };
110
- vp.addEventListener("scroll", onScroll, { passive: true });
111
- updatePinned();
112
- onGrow();
113
- const mutationObserver = new MutationObserver(onGrow);
114
- mutationObserver.observe(vp, { childList: true, subtree: true, characterData: true });
115
- let resizeObserver;
116
- if (typeof ResizeObserver !== "undefined") {
117
- resizeObserver = new ResizeObserver(onGrow);
118
- resizeObserver.observe(vp);
119
- }
120
- cleanupRef.current = () => {
121
- vp.removeEventListener("scroll", onScroll);
122
- mutationObserver.disconnect();
123
- resizeObserver?.disconnect();
124
- };
125
- },
126
- [threshold]
127
- );
128
- useEffect(() => () => cleanupRef.current?.(), []);
129
- return { scrollRef, isPinned, scrollToBottom };
130
- }
131
-
132
- export { ScrollArea, isNearBottom, useStickToBottom };
133
- //# sourceMappingURL=chunk-75IDWFYX.js.map
134
- //# sourceMappingURL=chunk-75IDWFYX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/scroll-area/scroll-area.tsx","../src/components/primitives/scroll-area/use-stick-to-bottom.ts"],"names":[],"mappings":"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","file":"chunk-75IDWFYX.js","sourcesContent":["import * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, ElementRef } from \"react\";\nimport { cn } from \"../../../lib/cn.js\";\n\n/**\n * ScrollArea — custom scroller with Violet Forge styling.\n *\n * Built on Radix ScrollArea so the native scrollbar is always hidden and the\n * custom thumb stays consistent across Chrome/Firefox/Safari/macOS-trackpad.\n *\n * Visual:\n * - track is transparent, only the thumb is visible.\n * - thumb is `--primary` at 25% opacity by default; on hover, 45% with violet glow.\n * - active drag bumps to 60%.\n * - the rounded full pill thumb plays well with the brutalist border language\n * but stays subtle (1.5px wide on rest, 3px on hover).\n *\n * Modes (via `type`):\n * - \"hover\" (default) — scrollbar fades in on hover/focus, otherwise hidden.\n * - \"always\" — scrollbar always visible.\n * - \"auto\" — scrollbar visible only when content overflows.\n * - \"scroll\" — Radix-managed: visible only while scrolling.\n */\n\ninterface ScrollAreaProps extends ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {\n /**\n * Optional override for which scrollbar(s) to render.\n * Defaults: vertical only. Set to \"both\" for grids/tables with overflow-x.\n */\n orientation?: \"vertical\" | \"horizontal\" | \"both\";\n /**\n * Thickness of the scrollbar. Default \"thin\" (2.5px → 3.5px on hover).\n * Use \"regular\" (8px) for content where the scrollbar should be a more prominent target.\n */\n size?: \"thin\" | \"regular\";\n}\n\nconst ScrollAreaRoot = forwardRef<ElementRef<typeof ScrollAreaPrimitive.Root>, ScrollAreaProps>(\n (\n { className, children, orientation = \"vertical\", size = \"thin\", type = \"hover\", ...props },\n ref,\n ) => (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n ref={ref}\n type={type}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n className={cn(\n \"h-full w-full rounded-[inherit]\",\n // Smooth scroll-behavior + masked overflow inheriting any inner radius\n \"[&>div]:!block\",\n )}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n {orientation === \"vertical\" || orientation === \"both\" ? (\n <ScrollBar orientation=\"vertical\" size={size} />\n ) : null}\n {orientation === \"horizontal\" || orientation === \"both\" ? (\n <ScrollBar orientation=\"horizontal\" size={size} />\n ) : null}\n <ScrollAreaPrimitive.Corner className=\"bg-transparent\" />\n </ScrollAreaPrimitive.Root>\n ),\n);\nScrollAreaRoot.displayName = \"ScrollArea\";\n\ninterface ScrollBarProps\n extends ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar> {\n size?: \"thin\" | \"regular\";\n}\n\nconst ScrollBar = forwardRef<\n ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n ScrollBarProps\n>(({ className, orientation = \"vertical\", size = \"thin\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-bar\"\n ref={ref}\n orientation={orientation}\n className={cn(\n \"z-10 flex touch-none select-none p-0.5 transition-[width,height,background-color] duration-base ease-out-soft\",\n // hover state slightly lifts the track with a near-invisible violet wash\n \"hover:bg-primary/5\",\n orientation === \"vertical\" &&\n (size === \"thin\"\n ? \"h-full w-2.5 border-l border-l-transparent\"\n : \"h-full w-3 border-l border-l-transparent\"),\n orientation === \"horizontal\" &&\n (size === \"thin\"\n ? \"h-2.5 w-full flex-col border-t border-t-transparent\"\n : \"h-3 w-full flex-col border-t border-t-transparent\"),\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n className={cn(\n \"relative flex-1 rounded-full bg-primary/30\",\n \"transition-[background-color,box-shadow] duration-fast ease-out-soft\",\n // Theme-aware: glow uses --primary (recolors when theme switches)\n \"hover:bg-primary/55 hover:shadow-[0_0_8px_hsl(var(--primary)/0.35)]\",\n // Drag state uses Radix data-state=\"visible\" + :active\n \"active:bg-primary/75 data-[state=visible]:bg-primary/45\",\n )}\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = \"ScrollArea.Bar\";\n\n// Compound assembly. `ScrollArea.Bar` is the only public surface for the\n// scroll bar. The previous standalone `ScrollBar` re-export was deprecated\n// theater in v0.0.0 (no public consumers exist on a pre-published package),\n// so it was removed cleanly in T7.4 (agent-team-audit-fixes plan).\nconst ScrollArea = /*#__PURE__*/ Object.assign(ScrollAreaRoot, { Bar: ScrollBar });\n\nexport { ScrollArea };\n","\"use client\";\n\n/**\n * `useStickToBottom` (M5-5) — auto-scroll a scroll container to the bottom when\n * its content grows, but ONLY while the user is pinned near the bottom (so it\n * never yanks the view away while they read history). Encapsulates the leaked\n * `[data-radix-scroll-area-viewport]` selector: attach `scrollRef` to a\n * `<ScrollArea>` (or any element) and the hook resolves the real scrollable\n * node internally.\n *\n * Content growth (streamed messages/tokens) is detected with a `MutationObserver`\n * — a scroll container's own box does not resize when content grows inside it, so\n * a ResizeObserver alone would miss it. A `ResizeObserver` is added on top (when\n * available) to also catch box-size changes such as an image finishing load.\n */\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface StickToBottomMetrics {\n scrollTop: number;\n scrollHeight: number;\n clientHeight: number;\n}\n\n/** Pure: is the scroll position within `threshold` px of the bottom? */\nexport function isNearBottom(metrics: StickToBottomMetrics, threshold: number): boolean {\n return metrics.scrollHeight - metrics.clientHeight - metrics.scrollTop <= threshold;\n}\n\nexport interface UseStickToBottomOptions {\n /** Px distance from the bottom under which the view is considered pinned. */\n threshold?: number;\n}\n\nexport interface UseStickToBottomReturn<T extends HTMLElement = HTMLElement> {\n /** Attach to the `<ScrollArea>` root (or any element). */\n scrollRef: (node: T | null) => void;\n /** Whether the view is currently pinned near the bottom. */\n isPinned: boolean;\n /** Force-scroll to the bottom and re-pin. */\n scrollToBottom: () => void;\n}\n\nfunction resolveViewport(node: HTMLElement): HTMLElement {\n return node.querySelector<HTMLElement>(\"[data-radix-scroll-area-viewport]\") ?? node;\n}\n\nfunction readMetrics(el: HTMLElement): StickToBottomMetrics {\n return { scrollTop: el.scrollTop, scrollHeight: el.scrollHeight, clientHeight: el.clientHeight };\n}\n\nconst DEFAULT_THRESHOLD = 32;\n\nexport function useStickToBottom<T extends HTMLElement = HTMLElement>(\n options: UseStickToBottomOptions = {},\n): UseStickToBottomReturn<T> {\n const threshold = options.threshold ?? DEFAULT_THRESHOLD;\n const viewportRef = useRef<HTMLElement | null>(null);\n const pinnedRef = useRef(true);\n const cleanupRef = useRef<(() => void) | null>(null);\n const [isPinned, setIsPinned] = useState(true);\n\n const scrollToBottom = useCallback(() => {\n const el = viewportRef.current;\n if (!el) return;\n el.scrollTop = el.scrollHeight;\n pinnedRef.current = true;\n setIsPinned(true);\n }, []);\n\n const scrollRef = useCallback(\n (node: T | null) => {\n cleanupRef.current?.();\n cleanupRef.current = null;\n if (node === null) {\n viewportRef.current = null;\n return;\n }\n const vp = resolveViewport(node);\n viewportRef.current = vp;\n\n const updatePinned = (): void => {\n const pinned = isNearBottom(readMetrics(vp), threshold);\n pinnedRef.current = pinned;\n setIsPinned(pinned);\n };\n const onScroll = (): void => updatePinned();\n // Auto-scroll on growth ONLY while pinned — the guard that prevents yanking\n // the view away while the user reads history.\n const onGrow = (): void => {\n if (pinnedRef.current) vp.scrollTop = vp.scrollHeight;\n };\n\n vp.addEventListener(\"scroll\", onScroll, { passive: true });\n updatePinned();\n onGrow(); // pin to bottom on attach when already pinned\n\n // A scroll container's OWN box does not resize when content grows inside\n // it, so streamed messages/tokens are detected as DOM mutations (the\n // primary signal). A ResizeObserver additionally catches box-size changes\n // (e.g. an image finishing load) when the environment provides one.\n const mutationObserver = new MutationObserver(onGrow);\n mutationObserver.observe(vp, { childList: true, subtree: true, characterData: true });\n let resizeObserver: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\") {\n resizeObserver = new ResizeObserver(onGrow);\n resizeObserver.observe(vp);\n }\n cleanupRef.current = (): void => {\n vp.removeEventListener(\"scroll\", onScroll);\n mutationObserver.disconnect();\n resizeObserver?.disconnect();\n };\n },\n [threshold],\n );\n\n useEffect(() => () => cleanupRef.current?.(), []);\n\n return { scrollRef, isPinned, scrollToBottom };\n}\n"]}
@@ -1,113 +0,0 @@
1
- import { cn } from './chunk-EWDN56AS.js';
2
- import { Sparkles, Wrench, CalendarDays, Eye, GitBranch, Image } from 'lucide-react';
3
- import { forwardRef } from 'react';
4
- import { jsxs, jsx } from 'react/jsx-runtime';
5
-
6
- var formatTokens = (n) => {
7
- if (n >= 1e6) return `${(n / 1e6).toFixed(0)}M`;
8
- if (n >= 1e3) return `${(n / 1e3).toFixed(0)}k`;
9
- return `${n}`;
10
- };
11
- var formatUsd = (n) => n >= 100 ? `$${n.toFixed(0)}` : n >= 1 ? `$${n.toFixed(2)}` : `$${n.toFixed(3)}`;
12
- var ModelCard = forwardRef(
13
- ({ className, model, selected, onSelect, ...props }, ref) => {
14
- const Tag = onSelect ? "button" : "article";
15
- return /* @__PURE__ */ jsxs(
16
- Tag,
17
- {
18
- "data-slot": "model-card",
19
- ref,
20
- type: onSelect ? "button" : void 0,
21
- onClick: onSelect ? () => onSelect(model.id) : void 0,
22
- className: cn(
23
- "grid gap-3 rounded-xl border bg-card p-4 text-left",
24
- "transition-[border-color,box-shadow] duration-base ease-out-soft",
25
- selected ? "border-primary shadow-glow" : onSelect ? "hover:border-primary/40 hover:shadow-sm" : "",
26
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
27
- className
28
- ),
29
- "aria-pressed": onSelect ? !!selected : void 0,
30
- ...props,
31
- children: [
32
- /* @__PURE__ */ jsxs("header", { className: "flex items-start justify-between gap-3", children: [
33
- /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
34
- /* @__PURE__ */ jsx("h4", { className: "font-display text-title-md tracking-tight", children: model.name }),
35
- /* @__PURE__ */ jsx("p", { className: "font-mono text-label-caps text-muted-foreground uppercase tracking-wider", children: model.vendor })
36
- ] }),
37
- model.tag ? /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 rounded-full bg-accent/15 px-2 py-0.5 font-mono text-accent text-label uppercase", children: [
38
- typeof model.tag === "string" && model.tag.toLowerCase() === "smart" ? /* @__PURE__ */ jsx(Sparkles, { className: "size-3" }) : null,
39
- model.tag
40
- ] }) : null
41
- ] }),
42
- model.description ? /* @__PURE__ */ jsx("p", { className: "text-body-sm text-muted-foreground", children: model.description }) : null,
43
- /* @__PURE__ */ jsxs("dl", { className: "grid grid-cols-2 gap-3 border-border/30 border-t pt-3 font-mono", children: [
44
- /* @__PURE__ */ jsxs("div", { className: "grid gap-0.5", children: [
45
- /* @__PURE__ */ jsx("dt", { className: "text-label-caps text-muted-foreground uppercase tracking-wider", children: "Context" }),
46
- /* @__PURE__ */ jsxs("dd", { className: "font-medium text-body-sm tabular-nums", children: [
47
- formatTokens(model.contextWindow),
48
- " tok"
49
- ] })
50
- ] }),
51
- /* @__PURE__ */ jsxs("div", { className: "grid gap-0.5", children: [
52
- /* @__PURE__ */ jsx("dt", { className: "text-label-caps text-muted-foreground uppercase tracking-wider", children: "Max output" }),
53
- /* @__PURE__ */ jsxs("dd", { className: "font-medium text-body-sm tabular-nums", children: [
54
- formatTokens(model.maxOutput),
55
- " tok"
56
- ] })
57
- ] }),
58
- model.pricePerMInput !== void 0 ? /* @__PURE__ */ jsxs("div", { className: "grid gap-0.5", children: [
59
- /* @__PURE__ */ jsx("dt", { className: "text-label-caps text-muted-foreground uppercase tracking-wider", children: "Input" }),
60
- /* @__PURE__ */ jsxs("dd", { className: "font-medium text-body-sm tabular-nums", children: [
61
- formatUsd(model.pricePerMInput),
62
- " ",
63
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "/M" })
64
- ] })
65
- ] }) : null,
66
- model.pricePerMOutput !== void 0 ? /* @__PURE__ */ jsxs("div", { className: "grid gap-0.5", children: [
67
- /* @__PURE__ */ jsx("dt", { className: "text-label-caps text-muted-foreground uppercase tracking-wider", children: "Output" }),
68
- /* @__PURE__ */ jsxs("dd", { className: "font-medium text-body-sm tabular-nums", children: [
69
- formatUsd(model.pricePerMOutput),
70
- " ",
71
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "/M" })
72
- ] })
73
- ] }) : null
74
- ] }),
75
- model.capabilities && model.capabilities.length > 0 ? /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5", children: model.capabilities.map((cap) => {
76
- const Icon = cap.icon ?? Wrench;
77
- return /* @__PURE__ */ jsxs(
78
- "span",
79
- {
80
- className: cn(
81
- "inline-flex items-center gap-1 rounded-md px-2 py-0.5 font-mono text-label",
82
- cap.enabled ? "bg-success/15 text-success" : "bg-muted text-muted-foreground line-through"
83
- ),
84
- children: [
85
- /* @__PURE__ */ jsx(Icon, { className: "size-3", "aria-hidden": "true" }),
86
- cap.label
87
- ]
88
- },
89
- cap.id
90
- );
91
- }) }) : null,
92
- model.cutoff ? /* @__PURE__ */ jsxs("p", { className: "inline-flex items-center gap-1 font-mono text-label text-muted-foreground", children: [
93
- /* @__PURE__ */ jsx(CalendarDays, { className: "size-3", "aria-hidden": "true" }),
94
- " Knowledge cutoff \xB7 ",
95
- model.cutoff
96
- ] }) : null
97
- ]
98
- }
99
- );
100
- }
101
- );
102
- ModelCard.displayName = "ModelCard";
103
- var modelCapabilityPresets = {
104
- vision: { id: "vision", label: "Vision", icon: Image },
105
- tools: { id: "tools", label: "Tool use", icon: Wrench },
106
- reasoning: { id: "reasoning", label: "Reasoning", icon: Sparkles },
107
- fineTuning: { id: "ft", label: "Fine-tuning", icon: GitBranch },
108
- multimodal: { id: "multimodal", label: "Multimodal", icon: Eye }
109
- };
110
-
111
- export { ModelCard, modelCapabilityPresets };
112
- //# sourceMappingURL=chunk-7BGCWJQR.js.map
113
- //# sourceMappingURL=chunk-7BGCWJQR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/model-card/model-card.tsx"],"names":[],"mappings":"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","file":"chunk-7BGCWJQR.js","sourcesContent":["import { CalendarDays, Eye, GitBranch, Image, Sparkles, Wrench } from \"lucide-react\";\nimport { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../../../lib/cn.js\";\nimport type { IconComponent } from \"../../../lib/types.js\";\n\nexport interface ModelCapabilityFlag {\n id: string;\n label: string;\n icon?: IconComponent;\n enabled: boolean;\n}\n\nexport interface ModelInfo {\n id: string;\n /** Display name (e.g. \"Opus 4.7\"). */\n name: string;\n /** Vendor (Anthropic, OpenAI, …). */\n vendor: string;\n /** Optional tag (default, fast, smart, beta). */\n tag?: ReactNode;\n /** Total context window in tokens. */\n contextWindow: number;\n /** Max output tokens per turn. */\n maxOutput: number;\n /** USD per million input tokens. */\n pricePerMInput?: number;\n /** USD per million output tokens. */\n pricePerMOutput?: number;\n /** Knowledge cutoff date label (e.g. \"Jan 2026\"). */\n cutoff?: string;\n /** Capability flags shown as chips. */\n capabilities?: ModelCapabilityFlag[];\n /** Short description / positioning. */\n description?: ReactNode;\n}\n\nconst formatTokens = (n: number) => {\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(0)}M`;\n if (n >= 1_000) return `${(n / 1_000).toFixed(0)}k`;\n return `${n}`;\n};\n\nconst formatUsd = (n: number) =>\n n >= 100 ? `$${n.toFixed(0)}` : n >= 1 ? `$${n.toFixed(2)}` : `$${n.toFixed(3)}`;\n\ninterface ModelCardProps extends Omit<HTMLAttributes<HTMLElement>, \"onSelect\"> {\n model: ModelInfo;\n /** Render as the currently-selected variant (violet ring). */\n selected?: boolean;\n /** Fires when user clicks to select. */\n onSelect?: (id: string) => void;\n}\n\n/**\n * ModelCard — full info on a model: vendor, context, output cap, pricing,\n * capabilities, knowledge cutoff. Used in the \"switch model\" surface.\n */\nconst ModelCard = forwardRef<HTMLElement, ModelCardProps>(\n ({ className, model, selected, onSelect, ...props }, ref) => {\n const Tag = onSelect ? \"button\" : \"article\";\n return (\n <Tag\n data-slot=\"model-card\"\n ref={ref as never}\n type={onSelect ? \"button\" : undefined}\n onClick={onSelect ? () => onSelect(model.id) : undefined}\n className={cn(\n \"grid gap-3 rounded-xl border bg-card p-4 text-left\",\n \"transition-[border-color,box-shadow] duration-base ease-out-soft\",\n selected\n ? \"border-primary shadow-glow\"\n : onSelect\n ? \"hover:border-primary/40 hover:shadow-sm\"\n : \"\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n className,\n )}\n aria-pressed={onSelect ? !!selected : undefined}\n {...(props as HTMLAttributes<HTMLElement>)}\n >\n <header className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <h4 className=\"font-display text-title-md tracking-tight\">{model.name}</h4>\n <p className=\"font-mono text-label-caps text-muted-foreground uppercase tracking-wider\">\n {model.vendor}\n </p>\n </div>\n {model.tag ? (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-accent/15 px-2 py-0.5 font-mono text-accent text-label uppercase\">\n {typeof model.tag === \"string\" && model.tag.toLowerCase() === \"smart\" ? (\n <Sparkles className=\"size-3\" />\n ) : null}\n {model.tag}\n </span>\n ) : null}\n </header>\n\n {model.description ? (\n <p className=\"text-body-sm text-muted-foreground\">{model.description}</p>\n ) : null}\n\n <dl className=\"grid grid-cols-2 gap-3 border-border/30 border-t pt-3 font-mono\">\n <div className=\"grid gap-0.5\">\n <dt className=\"text-label-caps text-muted-foreground uppercase tracking-wider\">\n Context\n </dt>\n <dd className=\"font-medium text-body-sm tabular-nums\">\n {formatTokens(model.contextWindow)} tok\n </dd>\n </div>\n <div className=\"grid gap-0.5\">\n <dt className=\"text-label-caps text-muted-foreground uppercase tracking-wider\">\n Max output\n </dt>\n <dd className=\"font-medium text-body-sm tabular-nums\">\n {formatTokens(model.maxOutput)} tok\n </dd>\n </div>\n {model.pricePerMInput !== undefined ? (\n <div className=\"grid gap-0.5\">\n <dt className=\"text-label-caps text-muted-foreground uppercase tracking-wider\">\n Input\n </dt>\n <dd className=\"font-medium text-body-sm tabular-nums\">\n {formatUsd(model.pricePerMInput)} <span className=\"text-muted-foreground\">/M</span>\n </dd>\n </div>\n ) : null}\n {model.pricePerMOutput !== undefined ? (\n <div className=\"grid gap-0.5\">\n <dt className=\"text-label-caps text-muted-foreground uppercase tracking-wider\">\n Output\n </dt>\n <dd className=\"font-medium text-body-sm tabular-nums\">\n {formatUsd(model.pricePerMOutput)} <span className=\"text-muted-foreground\">/M</span>\n </dd>\n </div>\n ) : null}\n </dl>\n\n {model.capabilities && model.capabilities.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5\">\n {model.capabilities.map((cap) => {\n const Icon = cap.icon ?? Wrench;\n return (\n <span\n key={cap.id}\n className={cn(\n \"inline-flex items-center gap-1 rounded-md px-2 py-0.5 font-mono text-label\",\n cap.enabled\n ? \"bg-success/15 text-success\"\n : \"bg-muted text-muted-foreground line-through\",\n )}\n >\n <Icon className=\"size-3\" aria-hidden=\"true\" />\n {cap.label}\n </span>\n );\n })}\n </div>\n ) : null}\n\n {model.cutoff ? (\n <p className=\"inline-flex items-center gap-1 font-mono text-label text-muted-foreground\">\n <CalendarDays className=\"size-3\" aria-hidden=\"true\" /> Knowledge cutoff · {model.cutoff}\n </p>\n ) : null}\n </Tag>\n );\n },\n);\nModelCard.displayName = \"ModelCard\";\n\n/** Pre-canned capability flags. */\nexport const modelCapabilityPresets = {\n vision: { id: \"vision\", label: \"Vision\", icon: Image as IconComponent } as const,\n tools: { id: \"tools\", label: \"Tool use\", icon: Wrench } as const,\n reasoning: { id: \"reasoning\", label: \"Reasoning\", icon: Sparkles } as const,\n fineTuning: { id: \"ft\", label: \"Fine-tuning\", icon: GitBranch } as const,\n multimodal: { id: \"multimodal\", label: \"Multimodal\", icon: Eye } as const,\n};\n\nexport { ModelCard };\n"]}
@@ -1,93 +0,0 @@
1
- import { Progress } from './chunk-4EH6F54D.js';
2
- import { cn } from './chunk-EWDN56AS.js';
3
- import { forwardRef } from 'react';
4
- import { jsxs, jsx } from 'react/jsx-runtime';
5
-
6
- function defaultFormat(value, max, unit) {
7
- return `${value} / ${max}${unit ? ` ${unit}` : ""}`;
8
- }
9
- function metricAriaLabel(metric, formatted) {
10
- const label = typeof metric.label === "string" ? metric.label : "metric";
11
- return `${label}: ${formatted}`;
12
- }
13
- var UsageMeter = forwardRef(
14
- ({ className, title, action, metrics, compact = false, ...props }, ref) => {
15
- const hasHeader = Boolean(title) || Boolean(action);
16
- return /* @__PURE__ */ jsxs(
17
- "div",
18
- {
19
- "data-slot": "usage-meter",
20
- ref,
21
- className: cn(
22
- "grid gap-3 rounded-xl border border-border bg-card p-4",
23
- compact && "gap-2",
24
- className
25
- ),
26
- "data-theo-usage-meter": "",
27
- ...props,
28
- children: [
29
- hasHeader ? /* @__PURE__ */ jsxs("header", { className: "flex items-baseline justify-between gap-3", children: [
30
- title ? /* @__PURE__ */ jsx(
31
- "span",
32
- {
33
- className: cn(
34
- "font-mono text-label-caps text-muted-foreground uppercase tracking-wider"
35
- ),
36
- children: title
37
- }
38
- ) : /* @__PURE__ */ jsx("span", {}),
39
- action ? /* @__PURE__ */ jsx("div", { className: "shrink-0", children: action }) : null
40
- ] }) : null,
41
- metrics.map((metric, idx) => {
42
- const overQuota = metric.value > metric.max;
43
- const fmt = metric.formatter ?? defaultFormat;
44
- const formatted = fmt(metric.value, metric.max, metric.unit);
45
- const intent = overQuota ? "warning" : "default";
46
- const key = `${typeof metric.label === "string" ? metric.label : "metric"}-${idx}`;
47
- if (compact) {
48
- return /* @__PURE__ */ jsx(
49
- Progress,
50
- {
51
- value: metric.value,
52
- max: metric.max,
53
- intent,
54
- "aria-label": metricAriaLabel(metric, formatted)
55
- },
56
- key
57
- );
58
- }
59
- return /* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
60
- /* @__PURE__ */ jsxs("div", { className: "flex items-baseline justify-between gap-3 text-body-sm", children: [
61
- /* @__PURE__ */ jsx("span", { className: "truncate text-muted-foreground", children: metric.label }),
62
- /* @__PURE__ */ jsx(
63
- "span",
64
- {
65
- className: cn(
66
- "shrink-0 font-mono tabular-nums",
67
- overQuota ? "text-warning" : "text-foreground"
68
- ),
69
- children: formatted
70
- }
71
- )
72
- ] }),
73
- /* @__PURE__ */ jsx(
74
- Progress,
75
- {
76
- value: metric.value,
77
- max: metric.max,
78
- intent,
79
- "aria-label": metricAriaLabel(metric, formatted)
80
- }
81
- )
82
- ] }, key);
83
- })
84
- ]
85
- }
86
- );
87
- }
88
- );
89
- UsageMeter.displayName = "UsageMeter";
90
-
91
- export { UsageMeter };
92
- //# sourceMappingURL=chunk-7BQXMG2A.js.map
93
- //# sourceMappingURL=chunk-7BQXMG2A.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/composites/usage-meter/usage-meter.tsx"],"names":[],"mappings":"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","file":"chunk-7BQXMG2A.js","sourcesContent":["import { forwardRef } from \"react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../../../lib/cn.js\";\nimport { Progress } from \"../../primitives/progress/index.js\";\n\n/**\n * UsageMeter — multi-metric stacked usage card.\n *\n * PaaS-shape sibling of `<CostMeter>` (which is mono-USD). Displays N\n * metrics with arbitrary units (GB, requests, build-minutes, seats) per\n * the reference TheoCloud dashboard mockup. Each row = label + value/max\n * + `<Progress>` fill bar.\n *\n * Composition:\n *\n * <UsageMeter\n * title=\"Last 30 days\"\n * action={<Badge variant=\"outline\">Upgrade</Badge>}\n * metrics={[\n * { label: \"Fast Data Transfer\", value: 0, max: 100, unit: \"GB\" },\n * { label: \"Edge Requests\", value: 0, max: 1_000_000, unit: \"req\",\n * formatter: (v, m) => `${v} / ${m >= 1e6 ? `${m / 1e6}M` : m}` },\n * ]}\n * />\n *\n * Over-quota detection: when `value > max`, the value text gets the\n * `text-warning` class and the underlying `<Progress>` uses\n * `intent=\"warning\"` (bar fills 100% via Progress's own clamping).\n *\n * `compact` mode renders only the bars (no label/value text) — useful in\n * narrow nav-bar slots.\n *\n * Imports the sibling `<Progress>` primitive via relative path (per RFC\n * dashboard-paas-primitives D3) — primitives must not depend on the\n * `@theokit/ui` barrel.\n */\n\nexport interface UsageMetric {\n /** Display label (e.g. \"Fast Data Transfer\"). */\n label: ReactNode;\n /** Current consumption. */\n value: number;\n /** Maximum allowed in the current period. */\n max: number;\n /** Unit string (e.g. \"GB\", \"req\", \"min\"). Rendered after value/max. */\n unit?: string;\n /** Optional custom formatter — overrides default `${value} / ${max} ${unit}`. */\n formatter?: (value: number, max: number, unit?: string) => string;\n}\n\nexport interface UsageMeterProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Card title (e.g. \"Last 30 days\", \"This billing period\"). */\n title?: ReactNode;\n /** Optional right-aligned action slot (e.g. an Upgrade Badge or Button). */\n action?: ReactNode;\n /** Array of metrics to display. Order preserved. */\n metrics: UsageMetric[];\n /** When true, show only the bars without label/value text (sparkline mode). */\n compact?: boolean;\n}\n\nfunction defaultFormat(value: number, max: number, unit?: string): string {\n return `${value} / ${max}${unit ? ` ${unit}` : \"\"}`;\n}\n\nfunction metricAriaLabel(metric: UsageMetric, formatted: string): string {\n // Label may be a ReactNode; coerce to string for aria-label.\n const label = typeof metric.label === \"string\" ? metric.label : \"metric\";\n return `${label}: ${formatted}`;\n}\n\nconst UsageMeter = forwardRef<HTMLDivElement, UsageMeterProps>(\n ({ className, title, action, metrics, compact = false, ...props }, ref) => {\n const hasHeader = Boolean(title) || Boolean(action);\n return (\n <div\n data-slot=\"usage-meter\"\n ref={ref}\n className={cn(\n \"grid gap-3 rounded-xl border border-border bg-card p-4\",\n compact && \"gap-2\",\n className,\n )}\n data-theo-usage-meter=\"\"\n {...props}\n >\n {hasHeader ? (\n <header className=\"flex items-baseline justify-between gap-3\">\n {title ? (\n <span\n className={cn(\n \"font-mono text-label-caps text-muted-foreground uppercase tracking-wider\",\n )}\n >\n {title}\n </span>\n ) : (\n <span />\n )}\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </header>\n ) : null}\n\n {metrics.map((metric, idx) => {\n const overQuota = metric.value > metric.max;\n const fmt = metric.formatter ?? defaultFormat;\n const formatted = fmt(metric.value, metric.max, metric.unit);\n const intent = overQuota ? \"warning\" : \"default\";\n // Each metric needs a stable key. Without a unique id field we\n // synthesize one from label + idx — duplicates resolve via the\n // index suffix.\n const key = `${typeof metric.label === \"string\" ? metric.label : \"metric\"}-${idx}`;\n\n if (compact) {\n return (\n <Progress\n key={key}\n value={metric.value}\n max={metric.max}\n intent={intent}\n aria-label={metricAriaLabel(metric, formatted)}\n />\n );\n }\n\n return (\n <div key={key} className=\"grid gap-1.5\">\n <div className=\"flex items-baseline justify-between gap-3 text-body-sm\">\n <span className=\"truncate text-muted-foreground\">{metric.label}</span>\n <span\n className={cn(\n \"shrink-0 font-mono tabular-nums\",\n overQuota ? \"text-warning\" : \"text-foreground\",\n )}\n >\n {formatted}\n </span>\n </div>\n <Progress\n value={metric.value}\n max={metric.max}\n intent={intent}\n aria-label={metricAriaLabel(metric, formatted)}\n />\n </div>\n );\n })}\n </div>\n );\n },\n);\nUsageMeter.displayName = \"UsageMeter\";\n\nexport { UsageMeter };\n"]}