@kitn.ai/ui 0.26.0 → 0.28.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 (488) hide show
  1. package/README.md +25 -6
  2. package/bin/mcp.js +16 -3
  3. package/bin/route.js +23 -0
  4. package/bin/route.test.js +58 -0
  5. package/dist/{elements/chunks/Icon--Y8vsFal.js → Icon-DObhsRtm.js} +1 -1
  6. package/dist/action-icons-CcgNN2oT.js +1 -0
  7. package/dist/arrow-down-CjRU3JgV.js +1 -0
  8. package/dist/arrow-left-Bnpb1UEW.js +1 -0
  9. package/dist/artifact-Bwt7OgcR.js +1 -0
  10. package/dist/assets/dev-5XzXYR21.js +91 -0
  11. package/dist/attachments-Qr4kg-2b.js +1 -0
  12. package/dist/{elements/chunks/audio-visualizer-D7lB6mvR.js → audio-visualizer-DToYdfSc.js} +1 -1
  13. package/dist/badge-CdEu_jn2.js +1 -0
  14. package/dist/bash-InADTalH.js +1 -6
  15. package/dist/bell-DQAAOpDz.js +1 -0
  16. package/dist/{elements/chunks/button-flUbeufF.js → button-DkuOnGLy.js} +1 -1
  17. package/dist/card-renderer-Jx70m6_l.js +1 -0
  18. package/dist/card-routing-0YidER_3.js +1 -0
  19. package/dist/check-njkVdZu2.js +1 -0
  20. package/dist/checkbox-D7iRB3nL.js +1 -0
  21. package/dist/checkbox-group-B2_rpoPM.js +1 -0
  22. package/dist/chevron-down-B72s6PXR.js +1 -0
  23. package/dist/chevron-right-BatuHzUm.js +1 -0
  24. package/dist/choice-card-m0BYqqOK.js +1 -0
  25. package/dist/circle-check-B62pODB3.js +1 -0
  26. package/dist/circle-x-BPG0iPst.js +1 -0
  27. package/dist/circle-zx0ByzY9.js +1 -0
  28. package/dist/{elements/chunks/cn-CU7UAWzk.js → cn-DN5AWfiS.js} +1 -1
  29. package/dist/code-block-ClMLKb7C.js +1 -0
  30. package/dist/{elements/chunks/collapsible-BzbXpPzr.js → collapsible-B4DlWicL.js} +1 -1
  31. package/dist/components/attachment-types.d.ts +7 -0
  32. package/dist/components/audio-visualizer/fit-scale.d.ts +1 -1
  33. package/dist/components/card-renderer.d.ts +13 -0
  34. package/dist/components/card.d.ts +4 -0
  35. package/dist/components/chat-thread.d.ts +135 -2
  36. package/dist/components/conversation-item.d.ts +35 -7
  37. package/dist/components/conversation-list.d.ts +17 -5
  38. package/dist/components/conversation-panel.d.ts +29 -0
  39. package/dist/components/form-widgets.d.ts +67 -2
  40. package/dist/components/form.d.ts +48 -1
  41. package/dist/components/home-panel.d.ts +34 -0
  42. package/dist/components/message.d.ts +25 -3
  43. package/dist/components/reasoning.d.ts +6 -0
  44. package/dist/components/scroll-button.d.ts +11 -0
  45. package/dist/components/thread.d.ts +5 -0
  46. package/dist/components/tool-types.d.ts +9 -0
  47. package/dist/components/widget-tab-bar.d.ts +16 -0
  48. package/dist/composer-sQ0HcvyG.js +106 -0
  49. package/dist/confirm-card-rQWDQsnC.js +1 -0
  50. package/dist/construct-cli.es.js +1337 -0
  51. package/dist/{elements/chunks/context-VLIL3sJ-.js → context-0kg4ZX1J.js} +1 -1
  52. package/dist/controllable-CnGpMF6r.js +1 -0
  53. package/dist/conversation-item-BxwQLaFJ.js +1 -0
  54. package/dist/conversation-list-BCfGN1JU.js +1 -0
  55. package/dist/copy-n9u9rqpi.js +1 -0
  56. package/dist/core-AYMC6_lb.js +12 -5874
  57. package/dist/{create-tween-BFT6c-Y8.js → create-tween-C-q-JCM-.js} +1 -1
  58. package/dist/{create-tween-CJNlzoaO.js → create-tween-CRrJXxBd.js} +1 -1
  59. package/dist/{create-tween-CQED4T0g.js → create-tween-DZ3RRDHD.js} +1 -1
  60. package/dist/{elements/chunks/create-tween-c4Z8TDYz.js → create-tween-uPkArjIG.js} +2 -2
  61. package/dist/css-M7EaDHN_.js +1 -6
  62. package/dist/custom-elements.json +1433 -202
  63. package/dist/default-input-CaMrJkgH.js +1 -0
  64. package/dist/define-By-uL588.js +1 -0
  65. package/dist/define.d.ts +4 -0
  66. package/dist/define.js +510 -0
  67. package/dist/define.server.d.ts +5 -0
  68. package/dist/define.server.js +506 -0
  69. package/dist/{elements/chunks/disclosure-CcNbyLy0.js → disclosure-WUImBbDv.js} +1 -1
  70. package/dist/{elements/chunks/dropdown-BgWTthUx.js → dropdown-wZVeJOMd.js} +1 -1
  71. package/dist/elements/agent-card.js +1 -1
  72. package/dist/elements/artifact.js +1 -1
  73. package/dist/elements/attachments.js +1 -1
  74. package/dist/elements/audio-visualizer.js +1 -1
  75. package/dist/elements/autoloader.js +1 -1
  76. package/dist/elements/avatar.js +1 -1
  77. package/dist/elements/badge.js +1 -1
  78. package/dist/elements/button.js +1 -1
  79. package/dist/elements/card.js +1 -1
  80. package/dist/elements/cards.js +1 -1
  81. package/dist/elements/chain-of-thought.js +1 -1
  82. package/dist/elements/chat-scope-picker.js +1 -1
  83. package/dist/elements/chat-workspace.js +1 -1
  84. package/dist/elements/chat.js +1 -1
  85. package/dist/elements/checkbox-group.d.ts +1 -0
  86. package/dist/elements/checkbox-group.js +1 -0
  87. package/dist/elements/checkbox.d.ts +1 -0
  88. package/dist/elements/checkbox.js +1 -0
  89. package/dist/elements/checkpoint.js +1 -1
  90. package/dist/elements/choice.js +1 -1
  91. package/dist/elements/coachmark.js +1 -1
  92. package/dist/elements/code-block.js +1 -1
  93. package/dist/elements/command.js +1 -1
  94. package/dist/elements/compare.js +1 -1
  95. package/dist/elements/composer.js +1 -1
  96. package/dist/elements/confirm-card.js +1 -1
  97. package/dist/elements/context-meter.js +1 -1
  98. package/dist/elements/conversation-item.js +1 -1
  99. package/dist/elements/conversation-list.js +1 -1
  100. package/dist/elements/define-entry.d.ts +12 -0
  101. package/dist/elements/dialog.js +1 -1
  102. package/dist/elements/dock.js +102 -8
  103. package/dist/elements/dropdown.js +1 -1
  104. package/dist/elements/editable-label.js +1 -1
  105. package/dist/elements/element-data-types.d.ts +37 -0
  106. package/dist/elements/embed.js +1 -1
  107. package/dist/elements/empty.js +1 -1
  108. package/dist/elements/feedback-bar.js +1 -1
  109. package/dist/elements/file-tree.js +1 -1
  110. package/dist/elements/file-upload.js +1 -1
  111. package/dist/elements/form.js +1 -1
  112. package/dist/elements/hover-card.js +1 -1
  113. package/dist/elements/icon.js +1 -1
  114. package/dist/elements/image.js +1 -1
  115. package/dist/elements/input.js +1 -1
  116. package/dist/elements/kbd.js +1 -1
  117. package/dist/elements/link-preview.js +1 -1
  118. package/dist/elements/loader.js +1 -1
  119. package/dist/elements/markdown.js +1 -1
  120. package/dist/elements/menu.js +1 -1
  121. package/dist/elements/message-skills.js +1 -1
  122. package/dist/elements/message.js +1 -1
  123. package/dist/elements/model-switcher.js +1 -1
  124. package/dist/elements/nav.js +1 -1
  125. package/dist/elements/notice.js +1 -1
  126. package/dist/elements/pane-grid.d.ts +1 -0
  127. package/dist/elements/pane-grid.js +1 -0
  128. package/dist/elements/pane-group.js +1 -1
  129. package/dist/elements/pane.js +1 -1
  130. package/dist/elements/popover.js +1 -1
  131. package/dist/elements/progress-bar.js +1 -1
  132. package/dist/elements/prompt-dock.js +1 -1
  133. package/dist/elements/prompt-input.js +1 -1
  134. package/dist/elements/prompt-suggestions.js +1 -1
  135. package/dist/elements/radio-group.d.ts +1 -0
  136. package/dist/elements/radio-group.js +1 -0
  137. package/dist/elements/reasoning.js +1 -1
  138. package/dist/elements/remote.js +1 -1
  139. package/dist/elements/resizable.js +1 -1
  140. package/dist/elements/response-stream.js +2 -2
  141. package/dist/elements/screen.js +1 -1
  142. package/dist/elements/scroll-area.js +1 -1
  143. package/dist/elements/scroll-button.js +1 -1
  144. package/dist/elements/search.js +1 -1
  145. package/dist/elements/segmented.js +1 -1
  146. package/dist/elements/select.d.ts +1 -0
  147. package/dist/elements/select.js +1 -0
  148. package/dist/elements/separator.js +1 -1
  149. package/dist/elements/setting-item.js +1 -1
  150. package/dist/elements/settings-group.js +1 -1
  151. package/dist/elements/skeleton.js +1 -1
  152. package/dist/elements/slider.d.ts +1 -0
  153. package/dist/elements/slider.js +1 -0
  154. package/dist/elements/slots.d.ts +1 -1
  155. package/dist/elements/source.js +1 -1
  156. package/dist/elements/status.js +1 -1
  157. package/dist/elements/switch.js +1 -1
  158. package/dist/elements/tabs.js +1 -1
  159. package/dist/elements/tasks.js +1 -1
  160. package/dist/elements/text-shimmer.js +1 -1
  161. package/dist/elements/thinking-bar.js +1 -1
  162. package/dist/elements/thread.js +1 -1
  163. package/dist/elements/toast.js +1 -1
  164. package/dist/elements/tool.js +1 -1
  165. package/dist/elements/tooltip.js +1 -1
  166. package/dist/elements/voice-input.js +1 -1
  167. package/dist/elements/voice-output.js +1 -1
  168. package/dist/elements.d.ts +380 -26
  169. package/dist/{elements/chunks/ellipsis-7gU33mL2.js → ellipsis-CbOpJnU3.js} +1 -1
  170. package/dist/embed-CrfjkbUG.js +1 -0
  171. package/dist/engine-javascript-vq0WuIJl.js +14 -2516
  172. package/dist/{elements/chunks/external-link-CSOEsNlx.js → external-link-ByXAwBBQ.js} +1 -1
  173. package/dist/file-text-DMib2qwt.js +1 -0
  174. package/dist/{elements/chunks/file-tree-zvB2i7P9.js → file-tree-CJqM2aP7.js} +1 -1
  175. package/dist/folder-_BAb929C.js +1 -0
  176. package/dist/form-DSZgZQZk.js +1 -0
  177. package/dist/github-dark-dimmed-DUshB20C.js +1 -4
  178. package/dist/github-light-JYsPkUQd.js +1 -4
  179. package/dist/hover-card-BQbul9eq.js +1 -0
  180. package/dist/html-CPZ3oZQ7.js +1 -10
  181. package/dist/icon-CdcfRhYI.js +1 -0
  182. package/dist/{elements/chunks/index-BCRhi84a.js → index-xu_pdcPi.js} +1 -1
  183. package/dist/index.d.ts +4 -2
  184. package/dist/index.js +7474 -5857
  185. package/dist/index.server.js +5965 -4762
  186. package/dist/info-DsFjGuI_.js +1 -0
  187. package/dist/input-DKbmkMos.js +1 -0
  188. package/dist/javascript-C25yR2R2.js +1 -6
  189. package/dist/json-DxJze_jm.js +1 -6
  190. package/dist/kai.es.js +1 -1
  191. package/dist/kbd-PvdGhX4s.js +1 -0
  192. package/dist/{elements/chunks/link-preview-OQ9IEq0f.js → link-preview-DbM1866N.js} +1 -1
  193. package/dist/link-zF8PzWfF.js +1 -0
  194. package/dist/loader-BM4CEz4G.js +1 -0
  195. package/dist/{elements/chunks/markdown-DgBFaGAz.js → markdown-LMvmAyBk.js} +7 -7
  196. package/dist/mcp.es.js +1361 -81
  197. package/dist/message-BSsgvHvf.js +1 -0
  198. package/dist/message-BYZECyek.js +1 -0
  199. package/dist/message-circle-DruwObfX.js +1 -0
  200. package/dist/message-square-BG6q6mlm.js +1 -0
  201. package/dist/{elements/chunks/minimize-2-DPIUKTrT.js → minimize-2-BQRoBV1V.js} +1 -1
  202. package/dist/{elements/chunks/model-switcher-DsT8tFB0.js → model-switcher-CMpCOYcB.js} +1 -1
  203. package/dist/{elements/chunks/overlay-DuiwdXjm.js → overlay-Cb-MkyDa.js} +1 -1
  204. package/dist/panel-right-i8warFxT.js +1 -0
  205. package/dist/paperclip-ByY3UVO6.js +1 -0
  206. package/dist/play-BvKKq3fX.js +1 -0
  207. package/dist/primitives/card-data-types.d.ts +49 -0
  208. package/dist/primitives/card-routing.d.ts +1 -33
  209. package/dist/primitives/card-validate.d.ts +2 -2
  210. package/dist/primitives/chat-config.d.ts +29 -2
  211. package/dist/primitives/conversation-store.d.ts +54 -0
  212. package/dist/primitives/field-mask.d.ts +96 -0
  213. package/dist/primitives/field-semantics.d.ts +36 -0
  214. package/dist/primitives/input-mask.d.ts +46 -0
  215. package/dist/primitives/url-scheme-policy.d.ts +34 -0
  216. package/dist/primitives/use-resize-observer.d.ts +2 -2
  217. package/dist/progress-bar-jVAHvMUf.js +1 -0
  218. package/dist/prompt-suggestion-CD-qtNgC.js +1 -0
  219. package/dist/radio-BsoBMhkF.js +1 -0
  220. package/dist/react/index.d.ts +586 -19
  221. package/dist/react.js +223 -187
  222. package/dist/reasoning-4kBPtlTx.js +1 -0
  223. package/dist/register-impl-B1hLkrI8.js +424 -0
  224. package/dist/{elements/chunks/resizable-D181b4fM.js → resizable-uPmY9VY-.js} +1 -1
  225. package/dist/rotate-ccw-B2xn93py.js +1 -0
  226. package/dist/rotate-cw-CMVLoCyH.js +1 -0
  227. package/dist/schemas/form.schema.json +21 -1
  228. package/dist/schemas/tool-defs.d.ts +11 -1
  229. package/dist/schemas.js +81 -81
  230. package/dist/scroll-area-BqLUo8ZZ.js +1 -0
  231. package/dist/scroll-button-DslXiJyL.js +1 -0
  232. package/dist/select-2cLRtPGT.js +1 -0
  233. package/dist/{elements/chunks/separator-CeJHQqLW.js → separator-BWQtNJcM.js} +1 -1
  234. package/dist/{elements/chunks/settings-CqaHgJF9.js → settings-BBR63jLg.js} +1 -1
  235. package/dist/{elements/chunks/settings-group-CjqjLCOn.js → settings-group-B2ciy-Iw.js} +1 -1
  236. package/dist/{elements/chunks/skeleton-D8akBnKS.js → skeleton-CkHI-HgC.js} +1 -1
  237. package/dist/slider-DDR9U-i0.js +1 -0
  238. package/dist/{solid-BtdqNZI7.js → solid-BzCFdL25.js} +9771 -7594
  239. package/dist/{solid-CnavwBye.js → solid-DruVOXnf.js} +7893 -6183
  240. package/dist/solid.d.ts +16 -2
  241. package/dist/solid.js +256 -243
  242. package/dist/solid.server.js +256 -243
  243. package/dist/source-GEnFF528.js +1 -0
  244. package/dist/star-CilHq8GP.js +1 -0
  245. package/dist/state/index.d.ts +1 -1
  246. package/dist/state/mock.d.ts +32 -2
  247. package/dist/state.js +133 -108
  248. package/dist/store-Ciyk6eZG.js +1 -0
  249. package/dist/svelte--5p79yCD.js +1 -15
  250. package/dist/switch-KkeQIbuH.js +1 -0
  251. package/dist/tasks-card-BrN4bggJ.js +1 -0
  252. package/dist/text-shimmer-Dcj1MHuq.js +1 -0
  253. package/dist/textarea-Dpvbngbg.js +1 -0
  254. package/dist/theme.tokens.css +110 -13
  255. package/dist/{elements/chunks/thumbs-up-DX2Ijk3H.js → thumbs-up-CsT9Wzb9.js} +1 -1
  256. package/dist/toast-store-tgK6MuMv.js +1 -0
  257. package/dist/{elements/chunks/tool-DKQ2D1DP.js → tool-DzUjIBT8.js} +1 -1
  258. package/dist/{elements/chunks/tooltip-B0G99y8w.js → tooltip-Bkkg_4t0.js} +1 -1
  259. package/dist/trash-2-jBKxjGGQ.js +1 -0
  260. package/dist/{elements/chunks/triangle-alert-F9cyUEyy.js → triangle-alert-DlQ68ppf.js} +1 -1
  261. package/dist/tsx-B8rCNbgL.js +1 -6
  262. package/dist/types.d.ts +48 -3
  263. package/dist/typescript-RycA9KXf.js +1 -6
  264. package/dist/ui/checkbox-group.d.ts +83 -0
  265. package/dist/ui/checkbox.d.ts +40 -0
  266. package/dist/ui/dock.d.ts +51 -0
  267. package/dist/ui/icon.d.ts +3 -0
  268. package/dist/ui/input.d.ts +48 -2
  269. package/dist/ui/radio.d.ts +85 -0
  270. package/dist/ui/select.d.ts +71 -0
  271. package/dist/ui/slider.d.ts +65 -0
  272. package/dist/ui/switch.d.ts +9 -2
  273. package/dist/upload-TcAHXv9W.js +1 -0
  274. package/dist/url-scheme-policy-DR5DgvkM.js +1 -0
  275. package/dist/use-card-resolution-DaZqAdWf.js +1 -0
  276. package/dist/{elements/chunks/variant-aurora-qt6Zct8M.js → variant-aurora-BhLuYxJR.js} +1 -1
  277. package/dist/{variant-aurora-B8II3-I1.js → variant-aurora-CNmfHhcx.js} +2 -2
  278. package/dist/{variant-aurora-CMNWOSJR.js → variant-aurora-D6GsdTPA.js} +2 -2
  279. package/dist/{variant-aurora-CcuDMWwQ.js → variant-aurora-DbW_OWL2.js} +1 -1
  280. package/dist/{elements/chunks/variant-custom-tJp22_BQ.js → variant-custom-BRvaNHSi.js} +1 -1
  281. package/dist/{variant-custom-L16JLLZy.js → variant-custom-BvYHR62b.js} +1 -1
  282. package/dist/{variant-custom-BdvYC7af.js → variant-custom-DMTrEO5w.js} +2 -2
  283. package/dist/{variant-custom-C714mqKl.js → variant-custom-DV2x254s.js} +2 -2
  284. package/dist/{variant-wave-ecwykeyL.js → variant-wave-BNMGrDfj.js} +2 -2
  285. package/dist/{variant-wave-2S4La2Ka.js → variant-wave-BpDd8t3Z.js} +1 -1
  286. package/dist/{variant-wave-D7ruiA1W.js → variant-wave-CyBueXj9.js} +2 -2
  287. package/dist/{elements/chunks/variant-wave-CaQ5ti39.js → variant-wave-sp-qwsdI.js} +1 -1
  288. package/dist/vue-BmIZj4XD.js +1 -33
  289. package/dist/x-Z5UntkIJ.js +1 -0
  290. package/frameworks/react/index.tsx +210 -22
  291. package/llms-full.txt +1184 -22
  292. package/llms.txt +6 -3
  293. package/package.json +17 -4
  294. package/src/agent-tooling/README.md +192 -0
  295. package/src/agent-tooling/catalog/invariants.ts +3 -3
  296. package/src/agent-tooling/catalog/surfaces.ts +72 -0
  297. package/src/agent-tooling/construct/cli-entry.ts +8 -0
  298. package/src/agent-tooling/construct/cli.ts +147 -0
  299. package/src/agent-tooling/construct/codegen.ts +1635 -0
  300. package/src/agent-tooling/construct/construct.v1.schema.json +319 -0
  301. package/src/agent-tooling/construct/dev.ts +148 -0
  302. package/src/agent-tooling/construct/fixtures/demo-widget.construct.json +7 -0
  303. package/src/agent-tooling/construct/fixtures/ops-console.construct.json +44 -0
  304. package/src/agent-tooling/construct/fixtures/owner-widget.construct.json +32 -0
  305. package/src/agent-tooling/construct/schema.ts +452 -0
  306. package/src/agent-tooling/mcp/server.ts +2 -1
  307. package/src/agent-tooling/mcp/tools/construct.ts +130 -0
  308. package/src/agent-tooling/mcp/tools/debug.ts +126 -4
  309. package/src/agent-tooling/mcp/tools/reference.ts +104 -3
  310. package/src/agent-tooling/recipes/composed-thread.ts +714 -0
  311. package/src/agent-tooling/recipes/index.ts +22 -0
  312. package/src/agent-tooling/recipes/types.ts +32 -0
  313. package/src/agent-tooling/registry.ts +5 -0
  314. package/src/components/attachment-types.ts +7 -0
  315. package/src/components/audio-visualizer/fit-scale.ts +1 -1
  316. package/src/components/card-renderer.tsx +39 -8
  317. package/src/components/card.tsx +10 -2
  318. package/src/components/chat-scope-picker.tsx +2 -2
  319. package/src/components/chat-thread.tsx +602 -43
  320. package/src/components/choice-card.tsx +102 -37
  321. package/src/components/coachmark.tsx +1 -1
  322. package/src/components/code-block.tsx +2 -2
  323. package/src/components/composer.tsx +89 -15
  324. package/src/components/confirm-card.tsx +20 -4
  325. package/src/components/conversation-item.tsx +56 -9
  326. package/src/components/conversation-list.tsx +25 -10
  327. package/src/components/conversation-panel.tsx +118 -0
  328. package/src/components/empty.tsx +14 -3
  329. package/src/components/file-tree.tsx +5 -1
  330. package/src/components/form-widgets.tsx +257 -195
  331. package/src/components/form.tsx +297 -9
  332. package/src/components/home-panel.tsx +159 -0
  333. package/src/components/loader.tsx +12 -5
  334. package/src/components/message-skills.tsx +1 -1
  335. package/src/components/message.tsx +71 -11
  336. package/src/components/prompt-input.tsx +7 -1
  337. package/src/components/prompt-suggestion.tsx +4 -1
  338. package/src/components/reasoning.tsx +30 -3
  339. package/src/components/response-compare.tsx +2 -2
  340. package/src/components/scroll-button.tsx +56 -4
  341. package/src/components/source.tsx +6 -1
  342. package/src/components/tasks-card.tsx +58 -16
  343. package/src/components/thread.tsx +10 -1
  344. package/src/components/toast.tsx +1 -1
  345. package/src/components/tool-types.ts +9 -0
  346. package/src/components/widget-tab-bar.tsx +73 -0
  347. package/src/elements/attachments.tsx +3 -1
  348. package/src/elements/chat-workspace.tsx +1 -1
  349. package/src/elements/chat.tsx +115 -5
  350. package/src/elements/checkbox-group.tsx +164 -0
  351. package/src/elements/checkbox.tsx +134 -0
  352. package/src/elements/compiled.css +1 -1
  353. package/src/elements/composer.tsx +12 -1
  354. package/src/elements/conversation-item.tsx +62 -22
  355. package/src/elements/conversation-list.tsx +2 -2
  356. package/src/elements/define-entry.ts +12 -0
  357. package/src/elements/dock.tsx +11 -0
  358. package/src/elements/element-data-types.ts +40 -0
  359. package/src/elements/element-manifest.json +24 -0
  360. package/src/elements/element-meta.json +767 -34
  361. package/src/elements/element-nonscalar.json +17 -0
  362. package/src/elements/element-types.d.ts +380 -26
  363. package/src/elements/feedback-bar.tsx +5 -0
  364. package/src/elements/icon-names.json +29 -0
  365. package/src/elements/input.tsx +312 -23
  366. package/src/elements/message.tsx +2 -0
  367. package/src/elements/pane-grid.tsx +111 -0
  368. package/src/elements/prompt-input.tsx +8 -2
  369. package/src/elements/radio-group.tsx +129 -0
  370. package/src/elements/register-impl.ts +6 -0
  371. package/src/elements/scroll-button.tsx +54 -6
  372. package/src/elements/select.tsx +165 -0
  373. package/src/elements/slider.tsx +171 -0
  374. package/src/elements/slots.ts +1 -1
  375. package/src/elements/styles.css +89 -3
  376. package/src/elements/thread.tsx +2 -0
  377. package/src/elements/toast.tsx +14 -1
  378. package/src/index.ts +5 -2
  379. package/src/primitives/card-data-types.ts +49 -0
  380. package/src/primitives/card-host.tsx +4 -2
  381. package/src/primitives/card-routing.ts +7 -56
  382. package/src/primitives/card-schemas/form.schema.json +21 -1
  383. package/src/primitives/card-validate.ts +10 -2
  384. package/src/primitives/chat-config.tsx +33 -6
  385. package/src/primitives/conversation-store.ts +248 -0
  386. package/src/primitives/field-mask.ts +256 -0
  387. package/src/primitives/field-semantics.ts +115 -0
  388. package/src/primitives/input-mask.ts +853 -0
  389. package/src/primitives/toast-store.ts +66 -4
  390. package/src/primitives/url-scheme-policy.ts +70 -0
  391. package/src/primitives/use-resize-observer.ts +2 -2
  392. package/src/schemas/tool-defs.ts +12 -2
  393. package/src/solid.ts +20 -2
  394. package/src/state/index.ts +1 -1
  395. package/src/state/mock.ts +92 -6
  396. package/src/types.ts +45 -3
  397. package/src/ui/agent-card.tsx +2 -2
  398. package/src/ui/avatar.tsx +1 -1
  399. package/src/ui/checkbox-group.tsx +153 -0
  400. package/src/ui/checkbox.tsx +63 -0
  401. package/src/ui/dock.tsx +192 -7
  402. package/src/ui/icon.tsx +53 -0
  403. package/src/ui/input.tsx +249 -9
  404. package/src/ui/kbd.tsx +1 -1
  405. package/src/ui/nav.tsx +1 -1
  406. package/src/ui/pane-group.tsx +2 -2
  407. package/src/ui/radio.tsx +150 -0
  408. package/src/ui/select.tsx +168 -0
  409. package/src/ui/slider.tsx +178 -0
  410. package/src/ui/switch.tsx +49 -18
  411. package/src/utils/cn.ts +11 -5
  412. package/theme.css +112 -13
  413. package/dist/elements/chunks/action-icons-D9u3OzYW.js +0 -1
  414. package/dist/elements/chunks/arrow-left-CVh1TeN7.js +0 -1
  415. package/dist/elements/chunks/artifact-BkYcfIlZ.js +0 -1
  416. package/dist/elements/chunks/attachments-DwfNlubq.js +0 -1
  417. package/dist/elements/chunks/badge-Q0-Cmwzz.js +0 -1
  418. package/dist/elements/chunks/bash-InADTalH.js +0 -1
  419. package/dist/elements/chunks/card-renderer-3Dyl-FpN.js +0 -1
  420. package/dist/elements/chunks/card-routing-BK09BdmL.js +0 -1
  421. package/dist/elements/chunks/check-B5kBPKeo.js +0 -1
  422. package/dist/elements/chunks/chevron-down-DZ1GS39h.js +0 -1
  423. package/dist/elements/chunks/chevron-right-CvP7OUd2.js +0 -1
  424. package/dist/elements/chunks/choice-card-D4QUIOWZ.js +0 -1
  425. package/dist/elements/chunks/circle-CDf9g6MQ.js +0 -1
  426. package/dist/elements/chunks/circle-check-CA47Nqbz.js +0 -1
  427. package/dist/elements/chunks/circle-x-CJ_HVbC8.js +0 -1
  428. package/dist/elements/chunks/code-block-BdLiTitd.js +0 -1
  429. package/dist/elements/chunks/composer-Byve-n8K.js +0 -69
  430. package/dist/elements/chunks/confirm-card-B0flE3MN.js +0 -1
  431. package/dist/elements/chunks/controllable-DTwTIlwp.js +0 -1
  432. package/dist/elements/chunks/conversation-item-BDztezOG.js +0 -1
  433. package/dist/elements/chunks/copy-Nf-kqxXH.js +0 -1
  434. package/dist/elements/chunks/core-AYMC6_lb.js +0 -12
  435. package/dist/elements/chunks/css-M7EaDHN_.js +0 -1
  436. package/dist/elements/chunks/default-input-C2iLFq0b.js +0 -1
  437. package/dist/elements/chunks/define-wjHR1MkU.js +0 -1
  438. package/dist/elements/chunks/download-C4V7tBdb.js +0 -1
  439. package/dist/elements/chunks/embed-D3KewsIJ.js +0 -1
  440. package/dist/elements/chunks/engine-javascript-vq0WuIJl.js +0 -141
  441. package/dist/elements/chunks/file-text-D1G8khle.js +0 -1
  442. package/dist/elements/chunks/folder-WW2LGLid.js +0 -1
  443. package/dist/elements/chunks/form-CQirdC4W.js +0 -1
  444. package/dist/elements/chunks/github-dark-dimmed-DUshB20C.js +0 -1
  445. package/dist/elements/chunks/github-light-JYsPkUQd.js +0 -1
  446. package/dist/elements/chunks/hover-card-CJJkfHTK.js +0 -1
  447. package/dist/elements/chunks/html-CPZ3oZQ7.js +0 -1
  448. package/dist/elements/chunks/icon-Cfgmf4fa.js +0 -1
  449. package/dist/elements/chunks/info-DX3YMOt6.js +0 -1
  450. package/dist/elements/chunks/input-BtW9U6Sq.js +0 -1
  451. package/dist/elements/chunks/javascript-C25yR2R2.js +0 -1
  452. package/dist/elements/chunks/json-DxJze_jm.js +0 -1
  453. package/dist/elements/chunks/kbd-LGXwuT_V.js +0 -1
  454. package/dist/elements/chunks/link-2My69BqT.js +0 -1
  455. package/dist/elements/chunks/loader-iOxc_Tu-.js +0 -1
  456. package/dist/elements/chunks/message-VMZohrXx.js +0 -1
  457. package/dist/elements/chunks/message-circle-CpXMM-_n.js +0 -1
  458. package/dist/elements/chunks/message-square-DxcWtETQ.js +0 -1
  459. package/dist/elements/chunks/message-tZmV2A3p.js +0 -1
  460. package/dist/elements/chunks/paperclip-CRZVp4z_.js +0 -1
  461. package/dist/elements/chunks/progress-bar-DNy66e_E.js +0 -1
  462. package/dist/elements/chunks/prompt-suggestion-Bn64Nl7L.js +0 -1
  463. package/dist/elements/chunks/reasoning-Emn9N4-T.js +0 -1
  464. package/dist/elements/chunks/rotate-cw-CPWe37D9.js +0 -1
  465. package/dist/elements/chunks/scroll-area-ClZkZxIk.js +0 -1
  466. package/dist/elements/chunks/scroll-button-DPE-t3x_.js +0 -1
  467. package/dist/elements/chunks/share-CyfnNEqp.js +0 -1
  468. package/dist/elements/chunks/source-UWCvmVak.js +0 -1
  469. package/dist/elements/chunks/star-DoHFAikQ.js +0 -1
  470. package/dist/elements/chunks/store-Cjq0qwYN.js +0 -1
  471. package/dist/elements/chunks/svelte--5p79yCD.js +0 -1
  472. package/dist/elements/chunks/tasks-card-CmZ5xh6v.js +0 -1
  473. package/dist/elements/chunks/text-shimmer-DYn09zrz.js +0 -1
  474. package/dist/elements/chunks/textarea-skiGHURM.js +0 -1
  475. package/dist/elements/chunks/toast-store-CFnQpThX.js +0 -1
  476. package/dist/elements/chunks/tsx-B8rCNbgL.js +0 -1
  477. package/dist/elements/chunks/typescript-RycA9KXf.js +0 -1
  478. package/dist/elements/chunks/use-card-resolution-DoA2f_EU.js +0 -1
  479. package/dist/elements/chunks/vue-BmIZj4XD.js +0 -1
  480. package/dist/elements/chunks/x-B6UnOiLw.js +0 -1
  481. package/dist/llms/llms-full.txt +0 -2949
  482. package/dist/llms/llms.txt +0 -156
  483. package/dist/register-impl-DpE7icIb.js +0 -293
  484. package/dist/ui/stat.d.ts +0 -16
  485. package/src/ui/stat.tsx +0 -41
  486. /package/dist/{elements/chunks/card-tags-D8lZ-C_U.js → card-tags-D8lZ-C_U.js} +0 -0
  487. /package/dist/{elements/chunks/link-preview-DNILK391.js → link-preview-DNILK391.js} +0 -0
  488. /package/dist/{elements/chunks/slots-DaNjX0rc.js → slots-DaNjX0rc.js} +0 -0
@@ -1 +1 @@
1
- function xe(e){var t,o,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(o=xe(e[t]))&&(r&&(r+=" "),r+=o)}else for(o in e)e[o]&&(r&&(r+=" "),r+=o);return r}function we(){for(var e,t,o=0,r="",s=arguments.length;o<s;o++)(e=arguments[o])&&(t=xe(e))&&(r&&(r+=" "),r+=t);return r}const De=(e,t)=>{const o=new Array(e.length+t.length);for(let r=0;r<e.length;r++)o[r]=e[r];for(let r=0;r<t.length;r++)o[e.length+r]=t[r];return o},Fe=(e,t)=>({classGroupId:e,validator:t}),ve=(e=new Map,t=null,o)=>({nextPart:e,validators:t,classGroupId:o}),V="-",ye=[],He="arbitrary..",Je=e=>{const t=Qe(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:s=>{if(s.startsWith("[")&&s.endsWith("]"))return Ke(s);const l=s.split(V),d=l[0]===""&&l.length>1?1:0;return ze(l,d,t)},getConflictingClassGroupIds:(s,l)=>{if(l){const d=r[s],b=o[s];return d?b?De(b,d):d:b||ye}return o[s]||ye}}},ze=(e,t,o)=>{if(e.length-t===0)return o.classGroupId;const r=e[t],s=o.nextPart.get(r);if(s){const u=ze(e,t+1,s);if(u)return u}const l=o.validators;if(l===null)return;const d=t===0?e.join(V):e.slice(t).join(V),b=l.length;for(let u=0;u<b;u++){const p=l[u];if(p.validator(d))return p.classGroupId}},Ke=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),o=t.indexOf(":"),r=t.slice(0,o);return r?He+r:void 0})(),Qe=e=>{const{theme:t,classGroups:o}=e;return Ue(o,t)},Ue=(e,t)=>{const o=ve();for(const r in e){const s=e[r];ae(s,o,r,t)}return o},ae=(e,t,o,r)=>{const s=e.length;for(let l=0;l<s;l++){const d=e[l];Ve(d,t,o,r)}},Ve=(e,t,o,r)=>{if(typeof e=="string"){Xe(e,t,o);return}if(typeof e=="function"){Ye(e,t,o,r);return}Ze(e,t,o,r)},Xe=(e,t,o)=>{const r=e===""?t:Ge(t,e);r.classGroupId=o},Ye=(e,t,o,r)=>{if(eo(e)){ae(e(r),t,o,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Fe(o,e))},Ze=(e,t,o,r)=>{const s=Object.entries(e),l=s.length;for(let d=0;d<l;d++){const[b,u]=s[d];ae(u,Ge(t,b),o,r)}},Ge=(e,t)=>{let o=e;const r=t.split(V),s=r.length;for(let l=0;l<s;l++){const d=r[l];let b=o.nextPart.get(d);b||(b=ve(),o.nextPart.set(d,b)),o=b}return o},eo=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,oo=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,o=Object.create(null),r=Object.create(null);const s=(l,d)=>{o[l]=d,t++,t>e&&(t=0,r=o,o=Object.create(null))};return{get(l){let d=o[l];if(d!==void 0)return d;if((d=r[l])!==void 0)return s(l,d),d},set(l,d){l in o?o[l]=d:s(l,d)}}},le="!",Ce=":",ro=[],je=(e,t,o,r,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:o,maybePostfixModifierPosition:r,isExternal:s}),to=e=>{const{prefix:t,experimentalParseClassName:o}=e;let r=s=>{const l=[];let d=0,b=0,u=0,p;const z=s.length;for(let w=0;w<z;w++){const G=s[w];if(d===0&&b===0){if(G===Ce){l.push(s.slice(u,w)),u=w+1;continue}if(G==="/"){p=w;continue}}G==="["?d++:G==="]"?d--:G==="("?b++:G===")"&&b--}const h=l.length===0?s:s.slice(u);let S=h,j=!1;h.endsWith(le)?(S=h.slice(0,-1),j=!0):h.startsWith(le)&&(S=h.slice(1),j=!0);const R=p&&p>u?p-u:void 0;return je(l,j,S,R)};if(t){const s=t+Ce,l=r;r=d=>d.startsWith(s)?l(d.slice(s.length)):je(ro,!1,d,void 0,!0)}if(o){const s=r;r=l=>o({className:l,parseClassName:s})}return r},so=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((o,r)=>{t.set(o,1e6+r)}),o=>{const r=[];let s=[];for(let l=0;l<o.length;l++){const d=o[l],b=d[0]==="[",u=t.has(d);b||u?(s.length>0&&(s.sort(),r.push(...s),s=[]),r.push(d)):s.push(d)}return s.length>0&&(s.sort(),r.push(...s)),r}},no=e=>({cache:oo(e.cacheSize),parseClassName:to(e),sortModifiers:so(e),postfixLookupClassGroupIds:ao(e),...Je(e)}),ao=e=>{const t=Object.create(null),o=e.postfixLookupClassGroups;if(o)for(let r=0;r<o.length;r++)t[o[r]]=!0;return t},lo=/\s+/,io=(e,t)=>{const{parseClassName:o,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:l,postfixLookupClassGroupIds:d}=t,b=[],u=e.trim().split(lo);let p="";for(let z=u.length-1;z>=0;z-=1){const h=u[z],{isExternal:S,modifiers:j,hasImportantModifier:R,baseClassName:w,maybePostfixModifierPosition:G}=o(h);if(S){p=h+(p.length>0?" "+p:p);continue}let W=!!G,v;if(W){const N=w.substring(0,G);v=r(N);const i=v&&d[v]?r(w):void 0;i&&i!==v&&(v=i,W=!1)}else v=r(w);if(!v){if(!W){p=h+(p.length>0?" "+p:p);continue}if(v=r(w),!v){p=h+(p.length>0?" "+p:p);continue}W=!1}const D=j.length===0?"":j.length===1?j[0]:l(j).join(":"),T=R?D+le:D,E=T+v;if(b.indexOf(E)>-1)continue;b.push(E);const q=s(v,W);for(let N=0;N<q.length;++N){const i=q[N];b.push(T+i)}p=h+(p.length>0?" "+p:p)}return p},co=(...e)=>{let t=0,o,r,s="";for(;t<e.length;)(o=e[t++])&&(r=Me(o))&&(s&&(s+=" "),s+=r);return s},Me=e=>{if(typeof e=="string")return e;let t,o="";for(let r=0;r<e.length;r++)e[r]&&(t=Me(e[r]))&&(o&&(o+=" "),o+=t);return o},Ne=(e,...t)=>{let o,r,s,l;const d=u=>{const p=t.reduce((z,h)=>h(z),e());return o=no(p),r=o.cache.get,s=o.cache.set,l=b,b(u)},b=u=>{const p=r(u);if(p)return p;const z=io(u,o);return s(u,z),z};return l=d,(...u)=>l(co(...u))},mo=[],f=e=>{const t=o=>o[e]||mo;return t.isThemeGetter=!0,t},Ie=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Pe=/^\((?:(\w[\w-]*):)?(.+)\)$/i,po=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,bo=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,uo=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,fo=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,go=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ho=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,P=e=>po.test(e),m=e=>!!e&&!Number.isNaN(Number(e)),M=e=>!!e&&Number.isInteger(Number(e)),ie=e=>e.endsWith("%")&&m(e.slice(0,-1)),I=e=>bo.test(e),Le=()=>!0,ko=e=>uo.test(e)&&!fo.test(e),ce=()=>!1,xo=e=>go.test(e),wo=e=>ho.test(e),vo=e=>!n(e)&&!a(e),yo=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),zo=e=>L(e,Te,ce),n=e=>Ie.test(e),$=e=>L(e,Ee,ko),Se=e=>L(e,Lo,m),Go=e=>L(e,Be,Le),Co=e=>L(e,qe,ce),We=e=>L(e,$e,ce),jo=e=>L(e,Ae,wo),X=e=>L(e,_e,xo),a=e=>Pe.test(e),F=e=>A(e,Ee),Mo=e=>A(e,qe),Oe=e=>A(e,$e),No=e=>A(e,Te),Io=e=>A(e,Ae),Y=e=>A(e,_e,!0),Po=e=>A(e,Be,!0),L=(e,t,o)=>{const r=Ie.exec(e);return r?r[1]?t(r[1]):o(r[2]):!1},A=(e,t,o=!1)=>{const r=Pe.exec(e);return r?r[1]?t(r[1]):o:!1},$e=e=>e==="position"||e==="percentage",Ae=e=>e==="image"||e==="url",Te=e=>e==="length"||e==="size"||e==="bg-size",Ee=e=>e==="length",Lo=e=>e==="number",qe=e=>e==="family-name",Be=e=>e==="number"||e==="weight",_e=e=>e==="shadow",Re=()=>{const e=f("color"),t=f("font"),o=f("text"),r=f("font-weight"),s=f("tracking"),l=f("leading"),d=f("breakpoint"),b=f("container"),u=f("spacing"),p=f("radius"),z=f("shadow"),h=f("inset-shadow"),S=f("text-shadow"),j=f("drop-shadow"),R=f("blur"),w=f("perspective"),G=f("aspect"),W=f("ease"),v=f("animate"),D=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...T(),a,n],q=()=>["auto","hidden","clip","visible","scroll"],N=()=>["auto","contain","none"],i=()=>[a,n,u],y=()=>[P,"full","auto",...i()],me=()=>[M,"none","subgrid",a,n],pe=()=>["auto",{span:["full",M,a,n]},M,a,n],H=()=>[M,"auto",a,n],be=()=>["auto","min","max","fr",a,n],oe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],B=()=>["start","end","center","stretch","center-safe","end-safe"],C=()=>["auto",...i()],O=()=>[P,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...i()],re=()=>[P,"screen","full","dvw","lvw","svw","min","max","fit",...i()],te=()=>[P,"screen","full","lh","dvh","lvh","svh","min","max","fit",...i()],c=()=>[e,a,n],ue=()=>[...T(),Oe,We,{position:[a,n]}],fe=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ge=()=>["auto","cover","contain",No,zo,{size:[a,n]}],se=()=>[ie,F,$],k=()=>["","none","full",p,a,n],x=()=>["",m,F,$],J=()=>["solid","dashed","dotted","double"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],g=()=>[m,ie,Oe,We],ke=()=>["","none",R,a,n],K=()=>["none",m,a,n],Q=()=>["none",m,a,n],ne=()=>[m,a,n],U=()=>[P,"full",...i()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[I],breakpoint:[I],color:[Le],container:[I],"drop-shadow":[I],ease:["in","out","in-out"],font:[vo],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[I],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[I],shadow:[I],spacing:["px",m],text:[I],"text-shadow":[I],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",P,n,a,G]}],container:["container"],"container-type":[{"@container":["","normal","size",a,n]}],"container-named":[yo],columns:[{columns:[m,n,a,b]}],"break-after":[{"break-after":D()}],"break-before":[{"break-before":D()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:E()}],overflow:[{overflow:q()}],"overflow-x":[{"overflow-x":q()}],"overflow-y":[{"overflow-y":q()}],overscroll:[{overscroll:N()}],"overscroll-x":[{"overscroll-x":N()}],"overscroll-y":[{"overscroll-y":N()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:y()}],"inset-x":[{"inset-x":y()}],"inset-y":[{"inset-y":y()}],start:[{"inset-s":y(),start:y()}],end:[{"inset-e":y(),end:y()}],"inset-bs":[{"inset-bs":y()}],"inset-be":[{"inset-be":y()}],top:[{top:y()}],right:[{right:y()}],bottom:[{bottom:y()}],left:[{left:y()}],visibility:["visible","invisible","collapse"],z:[{z:[M,"auto",a,n]}],basis:[{basis:[P,"full","auto",b,...i()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[m,P,"auto","initial","none",n]}],grow:[{grow:["",m,a,n]}],shrink:[{shrink:["",m,a,n]}],order:[{order:[M,"first","last","none",a,n]}],"grid-cols":[{"grid-cols":me()}],"col-start-end":[{col:pe()}],"col-start":[{"col-start":H()}],"col-end":[{"col-end":H()}],"grid-rows":[{"grid-rows":me()}],"row-start-end":[{row:pe()}],"row-start":[{"row-start":H()}],"row-end":[{"row-end":H()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":be()}],"auto-rows":[{"auto-rows":be()}],gap:[{gap:i()}],"gap-x":[{"gap-x":i()}],"gap-y":[{"gap-y":i()}],"justify-content":[{justify:[...oe(),"normal"]}],"justify-items":[{"justify-items":[...B(),"normal"]}],"justify-self":[{"justify-self":["auto",...B()]}],"align-content":[{content:["normal",...oe()]}],"align-items":[{items:[...B(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...B(),{baseline:["","last"]}]}],"place-content":[{"place-content":oe()}],"place-items":[{"place-items":[...B(),"baseline"]}],"place-self":[{"place-self":["auto",...B()]}],p:[{p:i()}],px:[{px:i()}],py:[{py:i()}],ps:[{ps:i()}],pe:[{pe:i()}],pbs:[{pbs:i()}],pbe:[{pbe:i()}],pt:[{pt:i()}],pr:[{pr:i()}],pb:[{pb:i()}],pl:[{pl:i()}],m:[{m:C()}],mx:[{mx:C()}],my:[{my:C()}],ms:[{ms:C()}],me:[{me:C()}],mbs:[{mbs:C()}],mbe:[{mbe:C()}],mt:[{mt:C()}],mr:[{mr:C()}],mb:[{mb:C()}],ml:[{ml:C()}],"space-x":[{"space-x":i()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":i()}],"space-y-reverse":["space-y-reverse"],size:[{size:O()}],"inline-size":[{inline:["auto",...re()]}],"min-inline-size":[{"min-inline":["auto",...re()]}],"max-inline-size":[{"max-inline":["none",...re()]}],"block-size":[{block:["auto",...te()]}],"min-block-size":[{"min-block":["auto",...te()]}],"max-block-size":[{"max-block":["none",...te()]}],w:[{w:[b,"screen",...O()]}],"min-w":[{"min-w":[b,"screen","none",...O()]}],"max-w":[{"max-w":[b,"screen","none","prose",{screen:[d]},...O()]}],h:[{h:["screen","lh",...O()]}],"min-h":[{"min-h":["screen","lh","none",...O()]}],"max-h":[{"max-h":["screen","lh",...O()]}],"font-size":[{text:["base",o,F,$]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,Po,Go]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",ie,n]}],"font-family":[{font:[Mo,Co,t]}],"font-features":[{"font-features":[n]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,a,n]}],"line-clamp":[{"line-clamp":[m,"none",a,Se]}],leading:[{leading:[l,...i()]}],"list-image":[{"list-image":["none",a,n]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",a,n]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:c()}],"text-color":[{text:c()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...J(),"wavy"]}],"text-decoration-thickness":[{decoration:[m,"from-font","auto",a,$]}],"text-decoration-color":[{decoration:c()}],"underline-offset":[{"underline-offset":[m,"auto",a,n]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:i()}],"tab-size":[{tab:[M,a,n]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",a,n]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",a,n]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ue()}],"bg-repeat":[{bg:fe()}],"bg-size":[{bg:ge()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},M,a,n],radial:["",a,n],conic:[M,a,n]},Io,jo]}],"bg-color":[{bg:c()}],"gradient-from-pos":[{from:se()}],"gradient-via-pos":[{via:se()}],"gradient-to-pos":[{to:se()}],"gradient-from":[{from:c()}],"gradient-via":[{via:c()}],"gradient-to":[{to:c()}],rounded:[{rounded:k()}],"rounded-s":[{"rounded-s":k()}],"rounded-e":[{"rounded-e":k()}],"rounded-t":[{"rounded-t":k()}],"rounded-r":[{"rounded-r":k()}],"rounded-b":[{"rounded-b":k()}],"rounded-l":[{"rounded-l":k()}],"rounded-ss":[{"rounded-ss":k()}],"rounded-se":[{"rounded-se":k()}],"rounded-ee":[{"rounded-ee":k()}],"rounded-es":[{"rounded-es":k()}],"rounded-tl":[{"rounded-tl":k()}],"rounded-tr":[{"rounded-tr":k()}],"rounded-br":[{"rounded-br":k()}],"rounded-bl":[{"rounded-bl":k()}],"border-w":[{border:x()}],"border-w-x":[{"border-x":x()}],"border-w-y":[{"border-y":x()}],"border-w-s":[{"border-s":x()}],"border-w-e":[{"border-e":x()}],"border-w-bs":[{"border-bs":x()}],"border-w-be":[{"border-be":x()}],"border-w-t":[{"border-t":x()}],"border-w-r":[{"border-r":x()}],"border-w-b":[{"border-b":x()}],"border-w-l":[{"border-l":x()}],"divide-x":[{"divide-x":x()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":x()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...J(),"hidden","none"]}],"divide-style":[{divide:[...J(),"hidden","none"]}],"border-color":[{border:c()}],"border-color-x":[{"border-x":c()}],"border-color-y":[{"border-y":c()}],"border-color-s":[{"border-s":c()}],"border-color-e":[{"border-e":c()}],"border-color-bs":[{"border-bs":c()}],"border-color-be":[{"border-be":c()}],"border-color-t":[{"border-t":c()}],"border-color-r":[{"border-r":c()}],"border-color-b":[{"border-b":c()}],"border-color-l":[{"border-l":c()}],"divide-color":[{divide:c()}],"outline-style":[{outline:[...J(),"none","hidden"]}],"outline-offset":[{"outline-offset":[m,a,n]}],"outline-w":[{outline:["",m,F,$]}],"outline-color":[{outline:c()}],shadow:[{shadow:["","none",z,Y,X]}],"shadow-color":[{shadow:c()}],"inset-shadow":[{"inset-shadow":["none",h,Y,X]}],"inset-shadow-color":[{"inset-shadow":c()}],"ring-w":[{ring:x()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:c()}],"ring-offset-w":[{"ring-offset":[m,$]}],"ring-offset-color":[{"ring-offset":c()}],"inset-ring-w":[{"inset-ring":x()}],"inset-ring-color":[{"inset-ring":c()}],"text-shadow":[{"text-shadow":["none",S,Y,X]}],"text-shadow-color":[{"text-shadow":c()}],opacity:[{opacity:[m,a,n]}],"mix-blend":[{"mix-blend":[...he(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":he()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[m]}],"mask-image-linear-from-pos":[{"mask-linear-from":g()}],"mask-image-linear-to-pos":[{"mask-linear-to":g()}],"mask-image-linear-from-color":[{"mask-linear-from":c()}],"mask-image-linear-to-color":[{"mask-linear-to":c()}],"mask-image-t-from-pos":[{"mask-t-from":g()}],"mask-image-t-to-pos":[{"mask-t-to":g()}],"mask-image-t-from-color":[{"mask-t-from":c()}],"mask-image-t-to-color":[{"mask-t-to":c()}],"mask-image-r-from-pos":[{"mask-r-from":g()}],"mask-image-r-to-pos":[{"mask-r-to":g()}],"mask-image-r-from-color":[{"mask-r-from":c()}],"mask-image-r-to-color":[{"mask-r-to":c()}],"mask-image-b-from-pos":[{"mask-b-from":g()}],"mask-image-b-to-pos":[{"mask-b-to":g()}],"mask-image-b-from-color":[{"mask-b-from":c()}],"mask-image-b-to-color":[{"mask-b-to":c()}],"mask-image-l-from-pos":[{"mask-l-from":g()}],"mask-image-l-to-pos":[{"mask-l-to":g()}],"mask-image-l-from-color":[{"mask-l-from":c()}],"mask-image-l-to-color":[{"mask-l-to":c()}],"mask-image-x-from-pos":[{"mask-x-from":g()}],"mask-image-x-to-pos":[{"mask-x-to":g()}],"mask-image-x-from-color":[{"mask-x-from":c()}],"mask-image-x-to-color":[{"mask-x-to":c()}],"mask-image-y-from-pos":[{"mask-y-from":g()}],"mask-image-y-to-pos":[{"mask-y-to":g()}],"mask-image-y-from-color":[{"mask-y-from":c()}],"mask-image-y-to-color":[{"mask-y-to":c()}],"mask-image-radial":[{"mask-radial":[a,n]}],"mask-image-radial-from-pos":[{"mask-radial-from":g()}],"mask-image-radial-to-pos":[{"mask-radial-to":g()}],"mask-image-radial-from-color":[{"mask-radial-from":c()}],"mask-image-radial-to-color":[{"mask-radial-to":c()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[m]}],"mask-image-conic-from-pos":[{"mask-conic-from":g()}],"mask-image-conic-to-pos":[{"mask-conic-to":g()}],"mask-image-conic-from-color":[{"mask-conic-from":c()}],"mask-image-conic-to-color":[{"mask-conic-to":c()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ue()}],"mask-repeat":[{mask:fe()}],"mask-size":[{mask:ge()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",a,n]}],filter:[{filter:["","none",a,n]}],blur:[{blur:ke()}],brightness:[{brightness:[m,a,n]}],contrast:[{contrast:[m,a,n]}],"drop-shadow":[{"drop-shadow":["","none",j,Y,X]}],"drop-shadow-color":[{"drop-shadow":c()}],grayscale:[{grayscale:["",m,a,n]}],"hue-rotate":[{"hue-rotate":[m,a,n]}],invert:[{invert:["",m,a,n]}],saturate:[{saturate:[m,a,n]}],sepia:[{sepia:["",m,a,n]}],"backdrop-filter":[{"backdrop-filter":["","none",a,n]}],"backdrop-blur":[{"backdrop-blur":ke()}],"backdrop-brightness":[{"backdrop-brightness":[m,a,n]}],"backdrop-contrast":[{"backdrop-contrast":[m,a,n]}],"backdrop-grayscale":[{"backdrop-grayscale":["",m,a,n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m,a,n]}],"backdrop-invert":[{"backdrop-invert":["",m,a,n]}],"backdrop-opacity":[{"backdrop-opacity":[m,a,n]}],"backdrop-saturate":[{"backdrop-saturate":[m,a,n]}],"backdrop-sepia":[{"backdrop-sepia":["",m,a,n]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":i()}],"border-spacing-x":[{"border-spacing-x":i()}],"border-spacing-y":[{"border-spacing-y":i()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",a,n]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[m,"initial",a,n]}],ease:[{ease:["linear","initial",W,a,n]}],delay:[{delay:[m,a,n]}],animate:[{animate:["none",v,a,n]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,a,n]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:K()}],"rotate-x":[{"rotate-x":K()}],"rotate-y":[{"rotate-y":K()}],"rotate-z":[{"rotate-z":K()}],scale:[{scale:Q()}],"scale-x":[{"scale-x":Q()}],"scale-y":[{"scale-y":Q()}],"scale-z":[{"scale-z":Q()}],"scale-3d":["scale-3d"],skew:[{skew:ne()}],"skew-x":[{"skew-x":ne()}],"skew-y":[{"skew-y":ne()}],transform:[{transform:[a,n,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:U()}],"translate-x":[{"translate-x":U()}],"translate-y":[{"translate-y":U()}],"translate-z":[{"translate-z":U()}],"translate-none":["translate-none"],zoom:[{zoom:[M,a,n]}],accent:[{accent:c()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:c()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",a,n]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":c()}],"scrollbar-track-color":[{"scrollbar-track":c()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":i()}],"scroll-mx":[{"scroll-mx":i()}],"scroll-my":[{"scroll-my":i()}],"scroll-ms":[{"scroll-ms":i()}],"scroll-me":[{"scroll-me":i()}],"scroll-mbs":[{"scroll-mbs":i()}],"scroll-mbe":[{"scroll-mbe":i()}],"scroll-mt":[{"scroll-mt":i()}],"scroll-mr":[{"scroll-mr":i()}],"scroll-mb":[{"scroll-mb":i()}],"scroll-ml":[{"scroll-ml":i()}],"scroll-p":[{"scroll-p":i()}],"scroll-px":[{"scroll-px":i()}],"scroll-py":[{"scroll-py":i()}],"scroll-ps":[{"scroll-ps":i()}],"scroll-pe":[{"scroll-pe":i()}],"scroll-pbs":[{"scroll-pbs":i()}],"scroll-pbe":[{"scroll-pbe":i()}],"scroll-pt":[{"scroll-pt":i()}],"scroll-pr":[{"scroll-pr":i()}],"scroll-pb":[{"scroll-pb":i()}],"scroll-pl":[{"scroll-pl":i()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",a,n]}],fill:[{fill:["none",...c()]}],"stroke-w":[{stroke:[m,F,$,Se]}],stroke:[{stroke:["none",...c()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},So=(e,{cacheSize:t,prefix:o,experimentalParseClassName:r,extend:s={},override:l={}})=>(_(e,"cacheSize",t),_(e,"prefix",o),_(e,"experimentalParseClassName",r),Z(e.theme,l.theme),Z(e.classGroups,l.classGroups),Z(e.conflictingClassGroups,l.conflictingClassGroups),Z(e.conflictingClassGroupModifiers,l.conflictingClassGroupModifiers),_(e,"postfixLookupClassGroups",l.postfixLookupClassGroups),_(e,"orderSensitiveModifiers",l.orderSensitiveModifiers),ee(e.theme,s.theme),ee(e.classGroups,s.classGroups),ee(e.conflictingClassGroups,s.conflictingClassGroups),ee(e.conflictingClassGroupModifiers,s.conflictingClassGroupModifiers),de(e,s,"postfixLookupClassGroups"),de(e,s,"orderSensitiveModifiers"),e),_=(e,t,o)=>{o!==void 0&&(e[t]=o)},Z=(e,t)=>{if(t)for(const o in t)_(e,o,t[o])},ee=(e,t)=>{if(t)for(const o in t)de(e,t,o)},de=(e,t,o)=>{const r=t[o];r!==void 0&&(e[o]=e[o]?e[o].concat(r):r)},Wo=(e,...t)=>typeof e=="function"?Ne(Re,e,...t):Ne(()=>So(Re(),e),...t),Oo=Wo({extend:{classGroups:{"font-size":[{text:["caption","meta","body","title"]}]}}});function $o(...e){return Oo(we(e))}export{we as a,$o as c};
1
+ function xe(e){var t,o,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(o=xe(e[t]))&&(r&&(r+=" "),r+=o)}else for(o in e)e[o]&&(r&&(r+=" "),r+=o);return r}function we(){for(var e,t,o=0,r="",s=arguments.length;o<s;o++)(e=arguments[o])&&(t=xe(e))&&(r&&(r+=" "),r+=t);return r}const De=(e,t)=>{const o=new Array(e.length+t.length);for(let r=0;r<e.length;r++)o[r]=e[r];for(let r=0;r<t.length;r++)o[e.length+r]=t[r];return o},Fe=(e,t)=>({classGroupId:e,validator:t}),ve=(e=new Map,t=null,o)=>({nextPart:e,validators:t,classGroupId:o}),V="-",ye=[],He="arbitrary..",Je=e=>{const t=Qe(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:s=>{if(s.startsWith("[")&&s.endsWith("]"))return Ke(s);const l=s.split(V),d=l[0]===""&&l.length>1?1:0;return ze(l,d,t)},getConflictingClassGroupIds:(s,l)=>{if(l){const d=r[s],b=o[s];return d?b?De(b,d):d:b||ye}return o[s]||ye}}},ze=(e,t,o)=>{if(e.length-t===0)return o.classGroupId;const r=e[t],s=o.nextPart.get(r);if(s){const u=ze(e,t+1,s);if(u)return u}const l=o.validators;if(l===null)return;const d=t===0?e.join(V):e.slice(t).join(V),b=l.length;for(let u=0;u<b;u++){const p=l[u];if(p.validator(d))return p.classGroupId}},Ke=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),o=t.indexOf(":"),r=t.slice(0,o);return r?He+r:void 0})(),Qe=e=>{const{theme:t,classGroups:o}=e;return Ue(o,t)},Ue=(e,t)=>{const o=ve();for(const r in e){const s=e[r];ae(s,o,r,t)}return o},ae=(e,t,o,r)=>{const s=e.length;for(let l=0;l<s;l++){const d=e[l];Ve(d,t,o,r)}},Ve=(e,t,o,r)=>{if(typeof e=="string"){Xe(e,t,o);return}if(typeof e=="function"){Ye(e,t,o,r);return}Ze(e,t,o,r)},Xe=(e,t,o)=>{const r=e===""?t:Ge(t,e);r.classGroupId=o},Ye=(e,t,o,r)=>{if(eo(e)){ae(e(r),t,o,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Fe(o,e))},Ze=(e,t,o,r)=>{const s=Object.entries(e),l=s.length;for(let d=0;d<l;d++){const[b,u]=s[d];ae(u,Ge(t,b),o,r)}},Ge=(e,t)=>{let o=e;const r=t.split(V),s=r.length;for(let l=0;l<s;l++){const d=r[l];let b=o.nextPart.get(d);b||(b=ve(),o.nextPart.set(d,b)),o=b}return o},eo=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,oo=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,o=Object.create(null),r=Object.create(null);const s=(l,d)=>{o[l]=d,t++,t>e&&(t=0,r=o,o=Object.create(null))};return{get(l){let d=o[l];if(d!==void 0)return d;if((d=r[l])!==void 0)return s(l,d),d},set(l,d){l in o?o[l]=d:s(l,d)}}},le="!",Ce=":",ro=[],je=(e,t,o,r,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:o,maybePostfixModifierPosition:r,isExternal:s}),to=e=>{const{prefix:t,experimentalParseClassName:o}=e;let r=s=>{const l=[];let d=0,b=0,u=0,p;const z=s.length;for(let w=0;w<z;w++){const G=s[w];if(d===0&&b===0){if(G===Ce){l.push(s.slice(u,w)),u=w+1;continue}if(G==="/"){p=w;continue}}G==="["?d++:G==="]"?d--:G==="("?b++:G===")"&&b--}const h=l.length===0?s:s.slice(u);let S=h,j=!1;h.endsWith(le)?(S=h.slice(0,-1),j=!0):h.startsWith(le)&&(S=h.slice(1),j=!0);const R=p&&p>u?p-u:void 0;return je(l,j,S,R)};if(t){const s=t+Ce,l=r;r=d=>d.startsWith(s)?l(d.slice(s.length)):je(ro,!1,d,void 0,!0)}if(o){const s=r;r=l=>o({className:l,parseClassName:s})}return r},so=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((o,r)=>{t.set(o,1e6+r)}),o=>{const r=[];let s=[];for(let l=0;l<o.length;l++){const d=o[l],b=d[0]==="[",u=t.has(d);b||u?(s.length>0&&(s.sort(),r.push(...s),s=[]),r.push(d)):s.push(d)}return s.length>0&&(s.sort(),r.push(...s)),r}},no=e=>({cache:oo(e.cacheSize),parseClassName:to(e),sortModifiers:so(e),postfixLookupClassGroupIds:ao(e),...Je(e)}),ao=e=>{const t=Object.create(null),o=e.postfixLookupClassGroups;if(o)for(let r=0;r<o.length;r++)t[o[r]]=!0;return t},lo=/\s+/,io=(e,t)=>{const{parseClassName:o,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:l,postfixLookupClassGroupIds:d}=t,b=[],u=e.trim().split(lo);let p="";for(let z=u.length-1;z>=0;z-=1){const h=u[z],{isExternal:S,modifiers:j,hasImportantModifier:R,baseClassName:w,maybePostfixModifierPosition:G}=o(h);if(S){p=h+(p.length>0?" "+p:p);continue}let W=!!G,v;if(W){const N=w.substring(0,G);v=r(N);const i=v&&d[v]?r(w):void 0;i&&i!==v&&(v=i,W=!1)}else v=r(w);if(!v){if(!W){p=h+(p.length>0?" "+p:p);continue}if(v=r(w),!v){p=h+(p.length>0?" "+p:p);continue}W=!1}const D=j.length===0?"":j.length===1?j[0]:l(j).join(":"),T=R?D+le:D,E=T+v;if(b.indexOf(E)>-1)continue;b.push(E);const q=s(v,W);for(let N=0;N<q.length;++N){const i=q[N];b.push(T+i)}p=h+(p.length>0?" "+p:p)}return p},co=(...e)=>{let t=0,o,r,s="";for(;t<e.length;)(o=e[t++])&&(r=Me(o))&&(s&&(s+=" "),s+=r);return s},Me=e=>{if(typeof e=="string")return e;let t,o="";for(let r=0;r<e.length;r++)e[r]&&(t=Me(e[r]))&&(o&&(o+=" "),o+=t);return o},Ne=(e,...t)=>{let o,r,s,l;const d=u=>{const p=t.reduce((z,h)=>h(z),e());return o=no(p),r=o.cache.get,s=o.cache.set,l=b,b(u)},b=u=>{const p=r(u);if(p)return p;const z=io(u,o);return s(u,z),z};return l=d,(...u)=>l(co(...u))},mo=[],f=e=>{const t=o=>o[e]||mo;return t.isThemeGetter=!0,t},Ie=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Pe=/^\((?:(\w[\w-]*):)?(.+)\)$/i,po=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,bo=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,uo=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,fo=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,go=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ho=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,P=e=>po.test(e),m=e=>!!e&&!Number.isNaN(Number(e)),M=e=>!!e&&Number.isInteger(Number(e)),ie=e=>e.endsWith("%")&&m(e.slice(0,-1)),I=e=>bo.test(e),Le=()=>!0,ko=e=>uo.test(e)&&!fo.test(e),ce=()=>!1,xo=e=>go.test(e),wo=e=>ho.test(e),vo=e=>!n(e)&&!a(e),yo=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),zo=e=>L(e,Te,ce),n=e=>Ie.test(e),$=e=>L(e,Ee,ko),Se=e=>L(e,Lo,m),Go=e=>L(e,Be,Le),Co=e=>L(e,qe,ce),We=e=>L(e,$e,ce),jo=e=>L(e,Ae,wo),X=e=>L(e,_e,xo),a=e=>Pe.test(e),F=e=>A(e,Ee),Mo=e=>A(e,qe),Oe=e=>A(e,$e),No=e=>A(e,Te),Io=e=>A(e,Ae),Y=e=>A(e,_e,!0),Po=e=>A(e,Be,!0),L=(e,t,o)=>{const r=Ie.exec(e);return r?r[1]?t(r[1]):o(r[2]):!1},A=(e,t,o=!1)=>{const r=Pe.exec(e);return r?r[1]?t(r[1]):o:!1},$e=e=>e==="position"||e==="percentage",Ae=e=>e==="image"||e==="url",Te=e=>e==="length"||e==="size"||e==="bg-size",Ee=e=>e==="length",Lo=e=>e==="number",qe=e=>e==="family-name",Be=e=>e==="number"||e==="weight",_e=e=>e==="shadow",Re=()=>{const e=f("color"),t=f("font"),o=f("text"),r=f("font-weight"),s=f("tracking"),l=f("leading"),d=f("breakpoint"),b=f("container"),u=f("spacing"),p=f("radius"),z=f("shadow"),h=f("inset-shadow"),S=f("text-shadow"),j=f("drop-shadow"),R=f("blur"),w=f("perspective"),G=f("aspect"),W=f("ease"),v=f("animate"),D=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...T(),a,n],q=()=>["auto","hidden","clip","visible","scroll"],N=()=>["auto","contain","none"],i=()=>[a,n,u],y=()=>[P,"full","auto",...i()],me=()=>[M,"none","subgrid",a,n],pe=()=>["auto",{span:["full",M,a,n]},M,a,n],H=()=>[M,"auto",a,n],be=()=>["auto","min","max","fr",a,n],oe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],B=()=>["start","end","center","stretch","center-safe","end-safe"],C=()=>["auto",...i()],O=()=>[P,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...i()],re=()=>[P,"screen","full","dvw","lvw","svw","min","max","fit",...i()],te=()=>[P,"screen","full","lh","dvh","lvh","svh","min","max","fit",...i()],c=()=>[e,a,n],ue=()=>[...T(),Oe,We,{position:[a,n]}],fe=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ge=()=>["auto","cover","contain",No,zo,{size:[a,n]}],se=()=>[ie,F,$],k=()=>["","none","full",p,a,n],x=()=>["",m,F,$],J=()=>["solid","dashed","dotted","double"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],g=()=>[m,ie,Oe,We],ke=()=>["","none",R,a,n],K=()=>["none",m,a,n],Q=()=>["none",m,a,n],ne=()=>[m,a,n],U=()=>[P,"full",...i()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[I],breakpoint:[I],color:[Le],container:[I],"drop-shadow":[I],ease:["in","out","in-out"],font:[vo],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[I],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[I],shadow:[I],spacing:["px",m],text:[I],"text-shadow":[I],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",P,n,a,G]}],container:["container"],"container-type":[{"@container":["","normal","size",a,n]}],"container-named":[yo],columns:[{columns:[m,n,a,b]}],"break-after":[{"break-after":D()}],"break-before":[{"break-before":D()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:E()}],overflow:[{overflow:q()}],"overflow-x":[{"overflow-x":q()}],"overflow-y":[{"overflow-y":q()}],overscroll:[{overscroll:N()}],"overscroll-x":[{"overscroll-x":N()}],"overscroll-y":[{"overscroll-y":N()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:y()}],"inset-x":[{"inset-x":y()}],"inset-y":[{"inset-y":y()}],start:[{"inset-s":y(),start:y()}],end:[{"inset-e":y(),end:y()}],"inset-bs":[{"inset-bs":y()}],"inset-be":[{"inset-be":y()}],top:[{top:y()}],right:[{right:y()}],bottom:[{bottom:y()}],left:[{left:y()}],visibility:["visible","invisible","collapse"],z:[{z:[M,"auto",a,n]}],basis:[{basis:[P,"full","auto",b,...i()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[m,P,"auto","initial","none",n]}],grow:[{grow:["",m,a,n]}],shrink:[{shrink:["",m,a,n]}],order:[{order:[M,"first","last","none",a,n]}],"grid-cols":[{"grid-cols":me()}],"col-start-end":[{col:pe()}],"col-start":[{"col-start":H()}],"col-end":[{"col-end":H()}],"grid-rows":[{"grid-rows":me()}],"row-start-end":[{row:pe()}],"row-start":[{"row-start":H()}],"row-end":[{"row-end":H()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":be()}],"auto-rows":[{"auto-rows":be()}],gap:[{gap:i()}],"gap-x":[{"gap-x":i()}],"gap-y":[{"gap-y":i()}],"justify-content":[{justify:[...oe(),"normal"]}],"justify-items":[{"justify-items":[...B(),"normal"]}],"justify-self":[{"justify-self":["auto",...B()]}],"align-content":[{content:["normal",...oe()]}],"align-items":[{items:[...B(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...B(),{baseline:["","last"]}]}],"place-content":[{"place-content":oe()}],"place-items":[{"place-items":[...B(),"baseline"]}],"place-self":[{"place-self":["auto",...B()]}],p:[{p:i()}],px:[{px:i()}],py:[{py:i()}],ps:[{ps:i()}],pe:[{pe:i()}],pbs:[{pbs:i()}],pbe:[{pbe:i()}],pt:[{pt:i()}],pr:[{pr:i()}],pb:[{pb:i()}],pl:[{pl:i()}],m:[{m:C()}],mx:[{mx:C()}],my:[{my:C()}],ms:[{ms:C()}],me:[{me:C()}],mbs:[{mbs:C()}],mbe:[{mbe:C()}],mt:[{mt:C()}],mr:[{mr:C()}],mb:[{mb:C()}],ml:[{ml:C()}],"space-x":[{"space-x":i()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":i()}],"space-y-reverse":["space-y-reverse"],size:[{size:O()}],"inline-size":[{inline:["auto",...re()]}],"min-inline-size":[{"min-inline":["auto",...re()]}],"max-inline-size":[{"max-inline":["none",...re()]}],"block-size":[{block:["auto",...te()]}],"min-block-size":[{"min-block":["auto",...te()]}],"max-block-size":[{"max-block":["none",...te()]}],w:[{w:[b,"screen",...O()]}],"min-w":[{"min-w":[b,"screen","none",...O()]}],"max-w":[{"max-w":[b,"screen","none","prose",{screen:[d]},...O()]}],h:[{h:["screen","lh",...O()]}],"min-h":[{"min-h":["screen","lh","none",...O()]}],"max-h":[{"max-h":["screen","lh",...O()]}],"font-size":[{text:["base",o,F,$]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,Po,Go]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",ie,n]}],"font-family":[{font:[Mo,Co,t]}],"font-features":[{"font-features":[n]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,a,n]}],"line-clamp":[{"line-clamp":[m,"none",a,Se]}],leading:[{leading:[l,...i()]}],"list-image":[{"list-image":["none",a,n]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",a,n]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:c()}],"text-color":[{text:c()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...J(),"wavy"]}],"text-decoration-thickness":[{decoration:[m,"from-font","auto",a,$]}],"text-decoration-color":[{decoration:c()}],"underline-offset":[{"underline-offset":[m,"auto",a,n]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:i()}],"tab-size":[{tab:[M,a,n]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",a,n]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",a,n]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ue()}],"bg-repeat":[{bg:fe()}],"bg-size":[{bg:ge()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},M,a,n],radial:["",a,n],conic:[M,a,n]},Io,jo]}],"bg-color":[{bg:c()}],"gradient-from-pos":[{from:se()}],"gradient-via-pos":[{via:se()}],"gradient-to-pos":[{to:se()}],"gradient-from":[{from:c()}],"gradient-via":[{via:c()}],"gradient-to":[{to:c()}],rounded:[{rounded:k()}],"rounded-s":[{"rounded-s":k()}],"rounded-e":[{"rounded-e":k()}],"rounded-t":[{"rounded-t":k()}],"rounded-r":[{"rounded-r":k()}],"rounded-b":[{"rounded-b":k()}],"rounded-l":[{"rounded-l":k()}],"rounded-ss":[{"rounded-ss":k()}],"rounded-se":[{"rounded-se":k()}],"rounded-ee":[{"rounded-ee":k()}],"rounded-es":[{"rounded-es":k()}],"rounded-tl":[{"rounded-tl":k()}],"rounded-tr":[{"rounded-tr":k()}],"rounded-br":[{"rounded-br":k()}],"rounded-bl":[{"rounded-bl":k()}],"border-w":[{border:x()}],"border-w-x":[{"border-x":x()}],"border-w-y":[{"border-y":x()}],"border-w-s":[{"border-s":x()}],"border-w-e":[{"border-e":x()}],"border-w-bs":[{"border-bs":x()}],"border-w-be":[{"border-be":x()}],"border-w-t":[{"border-t":x()}],"border-w-r":[{"border-r":x()}],"border-w-b":[{"border-b":x()}],"border-w-l":[{"border-l":x()}],"divide-x":[{"divide-x":x()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":x()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...J(),"hidden","none"]}],"divide-style":[{divide:[...J(),"hidden","none"]}],"border-color":[{border:c()}],"border-color-x":[{"border-x":c()}],"border-color-y":[{"border-y":c()}],"border-color-s":[{"border-s":c()}],"border-color-e":[{"border-e":c()}],"border-color-bs":[{"border-bs":c()}],"border-color-be":[{"border-be":c()}],"border-color-t":[{"border-t":c()}],"border-color-r":[{"border-r":c()}],"border-color-b":[{"border-b":c()}],"border-color-l":[{"border-l":c()}],"divide-color":[{divide:c()}],"outline-style":[{outline:[...J(),"none","hidden"]}],"outline-offset":[{"outline-offset":[m,a,n]}],"outline-w":[{outline:["",m,F,$]}],"outline-color":[{outline:c()}],shadow:[{shadow:["","none",z,Y,X]}],"shadow-color":[{shadow:c()}],"inset-shadow":[{"inset-shadow":["none",h,Y,X]}],"inset-shadow-color":[{"inset-shadow":c()}],"ring-w":[{ring:x()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:c()}],"ring-offset-w":[{"ring-offset":[m,$]}],"ring-offset-color":[{"ring-offset":c()}],"inset-ring-w":[{"inset-ring":x()}],"inset-ring-color":[{"inset-ring":c()}],"text-shadow":[{"text-shadow":["none",S,Y,X]}],"text-shadow-color":[{"text-shadow":c()}],opacity:[{opacity:[m,a,n]}],"mix-blend":[{"mix-blend":[...he(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":he()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[m]}],"mask-image-linear-from-pos":[{"mask-linear-from":g()}],"mask-image-linear-to-pos":[{"mask-linear-to":g()}],"mask-image-linear-from-color":[{"mask-linear-from":c()}],"mask-image-linear-to-color":[{"mask-linear-to":c()}],"mask-image-t-from-pos":[{"mask-t-from":g()}],"mask-image-t-to-pos":[{"mask-t-to":g()}],"mask-image-t-from-color":[{"mask-t-from":c()}],"mask-image-t-to-color":[{"mask-t-to":c()}],"mask-image-r-from-pos":[{"mask-r-from":g()}],"mask-image-r-to-pos":[{"mask-r-to":g()}],"mask-image-r-from-color":[{"mask-r-from":c()}],"mask-image-r-to-color":[{"mask-r-to":c()}],"mask-image-b-from-pos":[{"mask-b-from":g()}],"mask-image-b-to-pos":[{"mask-b-to":g()}],"mask-image-b-from-color":[{"mask-b-from":c()}],"mask-image-b-to-color":[{"mask-b-to":c()}],"mask-image-l-from-pos":[{"mask-l-from":g()}],"mask-image-l-to-pos":[{"mask-l-to":g()}],"mask-image-l-from-color":[{"mask-l-from":c()}],"mask-image-l-to-color":[{"mask-l-to":c()}],"mask-image-x-from-pos":[{"mask-x-from":g()}],"mask-image-x-to-pos":[{"mask-x-to":g()}],"mask-image-x-from-color":[{"mask-x-from":c()}],"mask-image-x-to-color":[{"mask-x-to":c()}],"mask-image-y-from-pos":[{"mask-y-from":g()}],"mask-image-y-to-pos":[{"mask-y-to":g()}],"mask-image-y-from-color":[{"mask-y-from":c()}],"mask-image-y-to-color":[{"mask-y-to":c()}],"mask-image-radial":[{"mask-radial":[a,n]}],"mask-image-radial-from-pos":[{"mask-radial-from":g()}],"mask-image-radial-to-pos":[{"mask-radial-to":g()}],"mask-image-radial-from-color":[{"mask-radial-from":c()}],"mask-image-radial-to-color":[{"mask-radial-to":c()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[m]}],"mask-image-conic-from-pos":[{"mask-conic-from":g()}],"mask-image-conic-to-pos":[{"mask-conic-to":g()}],"mask-image-conic-from-color":[{"mask-conic-from":c()}],"mask-image-conic-to-color":[{"mask-conic-to":c()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ue()}],"mask-repeat":[{mask:fe()}],"mask-size":[{mask:ge()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",a,n]}],filter:[{filter:["","none",a,n]}],blur:[{blur:ke()}],brightness:[{brightness:[m,a,n]}],contrast:[{contrast:[m,a,n]}],"drop-shadow":[{"drop-shadow":["","none",j,Y,X]}],"drop-shadow-color":[{"drop-shadow":c()}],grayscale:[{grayscale:["",m,a,n]}],"hue-rotate":[{"hue-rotate":[m,a,n]}],invert:[{invert:["",m,a,n]}],saturate:[{saturate:[m,a,n]}],sepia:[{sepia:["",m,a,n]}],"backdrop-filter":[{"backdrop-filter":["","none",a,n]}],"backdrop-blur":[{"backdrop-blur":ke()}],"backdrop-brightness":[{"backdrop-brightness":[m,a,n]}],"backdrop-contrast":[{"backdrop-contrast":[m,a,n]}],"backdrop-grayscale":[{"backdrop-grayscale":["",m,a,n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m,a,n]}],"backdrop-invert":[{"backdrop-invert":["",m,a,n]}],"backdrop-opacity":[{"backdrop-opacity":[m,a,n]}],"backdrop-saturate":[{"backdrop-saturate":[m,a,n]}],"backdrop-sepia":[{"backdrop-sepia":["",m,a,n]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":i()}],"border-spacing-x":[{"border-spacing-x":i()}],"border-spacing-y":[{"border-spacing-y":i()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",a,n]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[m,"initial",a,n]}],ease:[{ease:["linear","initial",W,a,n]}],delay:[{delay:[m,a,n]}],animate:[{animate:["none",v,a,n]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,a,n]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:K()}],"rotate-x":[{"rotate-x":K()}],"rotate-y":[{"rotate-y":K()}],"rotate-z":[{"rotate-z":K()}],scale:[{scale:Q()}],"scale-x":[{"scale-x":Q()}],"scale-y":[{"scale-y":Q()}],"scale-z":[{"scale-z":Q()}],"scale-3d":["scale-3d"],skew:[{skew:ne()}],"skew-x":[{"skew-x":ne()}],"skew-y":[{"skew-y":ne()}],transform:[{transform:[a,n,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:U()}],"translate-x":[{"translate-x":U()}],"translate-y":[{"translate-y":U()}],"translate-z":[{"translate-z":U()}],"translate-none":["translate-none"],zoom:[{zoom:[M,a,n]}],accent:[{accent:c()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:c()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",a,n]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":c()}],"scrollbar-track-color":[{"scrollbar-track":c()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":i()}],"scroll-mx":[{"scroll-mx":i()}],"scroll-my":[{"scroll-my":i()}],"scroll-ms":[{"scroll-ms":i()}],"scroll-me":[{"scroll-me":i()}],"scroll-mbs":[{"scroll-mbs":i()}],"scroll-mbe":[{"scroll-mbe":i()}],"scroll-mt":[{"scroll-mt":i()}],"scroll-mr":[{"scroll-mr":i()}],"scroll-mb":[{"scroll-mb":i()}],"scroll-ml":[{"scroll-ml":i()}],"scroll-p":[{"scroll-p":i()}],"scroll-px":[{"scroll-px":i()}],"scroll-py":[{"scroll-py":i()}],"scroll-ps":[{"scroll-ps":i()}],"scroll-pe":[{"scroll-pe":i()}],"scroll-pbs":[{"scroll-pbs":i()}],"scroll-pbe":[{"scroll-pbe":i()}],"scroll-pt":[{"scroll-pt":i()}],"scroll-pr":[{"scroll-pr":i()}],"scroll-pb":[{"scroll-pb":i()}],"scroll-pl":[{"scroll-pl":i()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",a,n]}],fill:[{fill:["none",...c()]}],"stroke-w":[{stroke:[m,F,$,Se]}],stroke:[{stroke:["none",...c()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},So=(e,{cacheSize:t,prefix:o,experimentalParseClassName:r,extend:s={},override:l={}})=>(_(e,"cacheSize",t),_(e,"prefix",o),_(e,"experimentalParseClassName",r),Z(e.theme,l.theme),Z(e.classGroups,l.classGroups),Z(e.conflictingClassGroups,l.conflictingClassGroups),Z(e.conflictingClassGroupModifiers,l.conflictingClassGroupModifiers),_(e,"postfixLookupClassGroups",l.postfixLookupClassGroups),_(e,"orderSensitiveModifiers",l.orderSensitiveModifiers),ee(e.theme,s.theme),ee(e.classGroups,s.classGroups),ee(e.conflictingClassGroups,s.conflictingClassGroups),ee(e.conflictingClassGroupModifiers,s.conflictingClassGroupModifiers),de(e,s,"postfixLookupClassGroups"),de(e,s,"orderSensitiveModifiers"),e),_=(e,t,o)=>{o!==void 0&&(e[t]=o)},Z=(e,t)=>{if(t)for(const o in t)_(e,o,t[o])},ee=(e,t)=>{if(t)for(const o in t)de(e,t,o)},de=(e,t,o)=>{const r=t[o];r!==void 0&&(e[o]=e[o]?e[o].concat(r):r)},Wo=(e,...t)=>typeof e=="function"?Ne(Re,e,...t):Ne(()=>So(Re(),e),...t),Oo=Wo({extend:{classGroups:{"font-size":[{text:["micro","caption","meta","compact","body","title"]}]}}});function $o(...e){return Oo(we(e))}export{we as a,$o as c};
@@ -0,0 +1 @@
1
+ import{s as f,p as d,q as p,i as u,c as s,S as b,A as $,K as L,t as g,g as P,h as q,a as A,d as E,b as J,e as K}from"./define-By-uL588.js";import{c as m}from"./cn-DN5AWfiS.js";import{c as M}from"./check-njkVdZu2.js";import{c as R}from"./copy-n9u9rqpi.js";const B={bash:()=>import("./bash-InADTalH.js"),javascript:()=>import("./javascript-C25yR2R2.js"),typescript:()=>import("./typescript-RycA9KXf.js"),tsx:()=>import("./tsx-B8rCNbgL.js"),html:()=>import("./html-CPZ3oZQ7.js"),css:()=>import("./css-M7EaDHN_.js"),json:()=>import("./json-DxJze_jm.js"),vue:()=>import("./vue-BmIZj4XD.js"),svelte:()=>import("./svelte--5p79yCD.js")},D={"github-dark-dimmed":()=>import("./github-dark-dimmed-DUshB20C.js"),"github-light":()=>import("./github-light-JYsPkUQd.js")},F={js:"javascript",ts:"typescript",jsx:"tsx",sh:"bash",shell:"bash"},w="github-dark-dimmed";let G={...B},I={...D},N={...F},v=null;const y=new Set,T=new Set;function O(){return v||(v=(async()=>{const[{createHighlighterCore:e},{createJavaScriptRegexEngine:t}]=await Promise.all([import("./core-AYMC6_lb.js"),import("./engine-javascript-vq0WuIJl.js")]);return e({themes:[],langs:[],engine:t()})})()),v}function j(e){return N[e]??e}async function Q(e,t){const n=j(t);if(y.has(n))return!0;const r=G[n];return r?(await e.loadLanguage(r()),y.add(n),!0):!1}async function k(e,t){if(T.has(t))return!0;const n=I[t];return n?(await e.loadTheme(n()),T.add(t),!0):!1}function U(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function h(e){return`<pre><code>${U(e)}</code></pre>`}async function V(e,t,n){if(!e)return h(e);try{const r=await O();if(!await Q(r,t))return h(e);const a=await k(r,n)?n:await k(r,w)?w:null;return a?r.codeToHtml(e,{lang:j(t),theme:a}):h(e)}catch{return h(e)}}var W=g("<button type=button part=copy>"),C=g("<div>"),X=g("<div tabindex=0>"),Y=g("<div tabindex=0><pre><code>");const Z=2e3;function _(e){const[t,n]=P(!1);let r;return q(()=>clearTimeout(r)),(()=>{var a=W();return a.$$click=()=>{var i;Promise.resolve((i=navigator.clipboard)==null?void 0:i.writeText(e.text)).catch(()=>{}),n(!0),clearTimeout(r),r=setTimeout(()=>n(!1),Z)},u(a,s(b,{get when(){return t()},get fallback(){return s(R,{size:14,"aria-hidden":"true"})},get children(){return s(M,{size:14,"aria-hidden":"true",class:"text-emerald-500"})}})),A(i=>{var l=t()?"Copied":"Copy code",c=m("inline-flex items-center justify-center rounded-md p-1.5","text-muted-foreground transition-colors hover:bg-muted hover:text-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring");return l!==i.e&&E(a,"aria-label",i.e=l),c!==i.t&&J(a,i.t=c),i},{e:void 0,t:void 0}),a})()}function ee(e){const[t,n]=f(e,["children","class","copy","copyText"]);return(()=>{var r=C();return d(r,p({get class(){return m("not-prose flex w-full flex-col overflow-clip border","border-border bg-card text-card-foreground","rounded-[var(--kai-code-radius,0.75rem)]",t.class)}},n),!1,!0),u(r,s(b,{get when(){return t.copy},get children(){return s(re,{class:"justify-end border-b border-border px-2 py-1",get children(){return s(_,{get text(){return t.copyText??""}})}})}}),null),u(r,()=>t.children,null),r})()}function te(e){const[t,n]=f(e,["code","language","theme","class"]),r=$(),a=()=>t.language??"tsx",i=()=>t.theme??r.codeTheme(),l=()=>r.codeHighlight(),[c]=L(()=>l()?{code:t.code,lang:a(),theme:i()}:null,o=>V(o.code,o.lang,o.theme)),S=()=>{switch(r.proseSize()){case"xs":return"text-caption";case"sm":return"text-compact";case"base":return"text-sm";case"lg":return"text-base"}},x=()=>m("w-full overflow-x-auto kai-focus-inset [&>pre]:px-4 [&>pre]:py-4",S(),t.class);return s(b,{get when(){return c()},get fallback(){return(()=>{var o=Y(),H=o.firstChild,z=H.firstChild;return d(o,p({get class(){return x()}},n),!1,!0),u(z,()=>t.code),o})()},get children(){var o=X();return d(o,p({get class(){return x()},get innerHTML(){return c()}},n),!1,!1),o}})}function re(e){const[t,n]=f(e,["children","class"]);return(()=>{var r=C();return d(r,p({get class(){return m("flex items-center justify-between",t.class)}},n),!1,!0),u(r,()=>t.children),r})()}K(["click"]);export{ee as C,te as a};
@@ -1 +1 @@
1
- import{s as c,g as k,w as I,c as y,q as p,m as u,i as v,j as h,a as R,H as q,b as B,t as g,B as E,G}from"./define-wjHR1MkU.js";import{c as C}from"./cn-CU7UAWzk.js";var H=g("<div>"),P=g("<button>"),j=g("<div><div>");const w=E(),m=()=>{const o=G(w);if(!o)throw new Error("Collapsible parts must be used within <Collapsible>");return o};function N(o){var n;const[e,l]=c(o,["open","defaultOpen","onOpenChange","disabled","controllerRef","children","class"]),[r,a]=k(e.defaultOpen??!1),s=()=>e.open!==void 0,t=()=>s()?!!e.open:r(),i=()=>!!e.disabled,f=d=>{var b;t()!==d&&(s()||a(d),(b=e.onOpenChange)==null||b.call(e,d))},x=()=>{i()||f(!t())};(n=e.controllerRef)==null||n.call(e,{open:t,setOpen:f});const O=I();return y(w.Provider,{value:{open:t,toggle:x,contentId:O,disabled:i},get children(){var d=H();return p(d,u({get class(){return e.class}},l,{get"data-expanded"(){return t()?"":void 0},get"data-closed"(){return t()?void 0:""},get"data-state"(){return t()?"open":"closed"}}),!1,!0),v(d,()=>e.children),d}})}function U(o){const n=m(),[e,l]=c(o,["children","class","as","onClick"]),r=()=>({type:"button","aria-expanded":n.open(),"aria-controls":n.contentId,disabled:n.disabled()||void 0,"data-expanded":n.open()?"":void 0,"data-closed":n.open()?void 0:"","data-state":n.open()?"open":"closed",onClick:a=>{n.disabled()||(typeof e.onClick=="function"&&e.onClick(a),n.toggle())},class:e.class,...l});return h(()=>h(()=>!!e.as)()?e.as(r()):(()=>{var a=P();return p(a,u(r),!1,!0),v(a,()=>e.children),a})())}function _(o){const n=m(),[e,l]=c(o,["children","class"]);return(()=>{var r=j(),a=r.firstChild;return p(r,u(l,{get id(){return n.contentId},get"data-expanded"(){return n.open()?"":void 0},get"data-closed"(){return n.open()?void 0:""},get class(){return C("grid transition-[grid-template-rows] duration-200 ease-out",n.open()?"grid-rows-[1fr]":"grid-rows-[0fr]")}}),!1,!0),v(a,()=>e.children),R(s=>{var t=!n.open(),i=C("overflow-hidden",e.class);return t!==s.e&&q(r,"inert",s.e=t),i!==s.t&&B(a,s.t=i),s},{e:void 0,t:void 0}),r})()}export{N as C,U as a,_ as b};
1
+ import{s as c,g as k,w as I,c as y,p,q as u,i as v,m as h,a as R,J as q,b as E,t as g,G as H,H as J}from"./define-By-uL588.js";import{c as C}from"./cn-DN5AWfiS.js";var P=g("<div>"),A=g("<button>"),G=g("<div><div>");const w=H(),m=()=>{const o=J(w);if(!o)throw new Error("Collapsible parts must be used within <Collapsible>");return o};function N(o){var n;const[e,l]=c(o,["open","defaultOpen","onOpenChange","disabled","controllerRef","children","class"]),[r,a]=k(e.defaultOpen??!1),s=()=>e.open!==void 0,t=()=>s()?!!e.open:r(),i=()=>!!e.disabled,f=d=>{var b;t()!==d&&(s()||a(d),(b=e.onOpenChange)==null||b.call(e,d))},x=()=>{i()||f(!t())};(n=e.controllerRef)==null||n.call(e,{open:t,setOpen:f});const O=I();return y(w.Provider,{value:{open:t,toggle:x,contentId:O,disabled:i},get children(){var d=P();return p(d,u({get class(){return e.class}},l,{get"data-expanded"(){return t()?"":void 0},get"data-closed"(){return t()?void 0:""},get"data-state"(){return t()?"open":"closed"}}),!1,!0),v(d,()=>e.children),d}})}function U(o){const n=m(),[e,l]=c(o,["children","class","as","onClick"]),r=()=>({type:"button","aria-expanded":n.open(),"aria-controls":n.contentId,disabled:n.disabled()||void 0,"data-expanded":n.open()?"":void 0,"data-closed":n.open()?void 0:"","data-state":n.open()?"open":"closed",onClick:a=>{n.disabled()||(typeof e.onClick=="function"&&e.onClick(a),n.toggle())},class:e.class,...l});return h(()=>h(()=>!!e.as)()?e.as(r()):(()=>{var a=A();return p(a,u(r),!1,!0),v(a,()=>e.children),a})())}function _(o){const n=m(),[e,l]=c(o,["children","class"]);return(()=>{var r=G(),a=r.firstChild;return p(r,u(l,{get id(){return n.contentId},get"data-expanded"(){return n.open()?"":void 0},get"data-closed"(){return n.open()?void 0:""},get class(){return C("grid transition-[grid-template-rows] duration-200 ease-out",n.open()?"grid-rows-[1fr]":"grid-rows-[0fr]")}}),!1,!0),v(a,()=>e.children),R(s=>{var t=!n.open(),i=C("overflow-hidden",e.class);return t!==s.e&&q(r,"inert",s.e=t),i!==s.t&&E(a,s.t=i),s},{e:void 0,t:void 0}),r})()}export{N as C,U as a,_ as b};
@@ -5,6 +5,13 @@ export interface AttachmentData {
5
5
  type: 'file' | 'source-document';
6
6
  filename?: string;
7
7
  mediaType?: string;
8
+ /** A `data:` URI or an https URL — this is the field the wire encodes, so it
9
+ * is what reaches the model. NEVER `URL.createObjectURL`: an object URL
10
+ * resolves only inside the tab that minted it, so a `blob:` URL renders a
11
+ * flawless preview and is meaningless to any provider —
12
+ * `toOpenAIMessages`/`toAnthropicMessages` refuse it rather than send an
13
+ * address the model cannot fetch. Read picked files with
14
+ * `FileReader.readAsDataURL` instead (see `elements/default-input.tsx`). */
8
15
  url?: string;
9
16
  title?: string;
10
17
  }
@@ -1,6 +1,6 @@
1
1
  import { Accessor } from 'solid-js';
2
2
  /**
3
- * Fit-to-container scaling (owner finding, rung 2): the size tiers are fixed
3
+ * Fit-to-container scaling: the size tiers are fixed
4
4
  * px by design (`sizes.ts`), so a container narrower than a tier's natural
5
5
  * footprint used to CLIP the picture at its edges. The dispatcher now scales
6
6
  * the WHOLE visualization down proportionally to fit, and renders byte-equal
@@ -51,6 +51,19 @@ export interface CardRendererProps {
51
51
  * supplied through `schemas` — is never validated either way.
52
52
  */
53
53
  validateCards?: boolean;
54
+ /**
55
+ * The custom-element host node to emit off when no `CardProvider` is above this
56
+ * renderer: events leave as the bubbling, composed `kai-card` CustomEvent
57
+ * (`emitCardEvent`), so `listenForCardEvents(element)` — or a plain
58
+ * `addEventListener('kai-card', …)` on the element — receives them.
59
+ *
60
+ * This is what makes cards INSIDE `<kai-chat>`/`<kai-message>`/`<kai-thread>`
61
+ * interactive: those facades pass their own host element down here, and
62
+ * with neither this nor a `CardProvider` every emit — ready/action/submit/
63
+ * dismiss/reopen and the contract `error` — used to be silently discarded.
64
+ * An ambient `CardProvider` still wins when present.
65
+ */
66
+ hostElement?: HTMLElement;
54
67
  }
55
68
  /**
56
69
  * True when the consumer registered a schema for this type.
@@ -16,6 +16,10 @@ export interface CardProps extends JSX.HTMLAttributes<HTMLDivElement> {
16
16
  /** Stable id for the heading (so composing cards can `aria-labelledby` it).
17
17
  * Auto-generated when omitted. */
18
18
  headingId?: string;
19
+ /** Stable id for the description (so composing cards can `aria-describedby` it
20
+ * — e.g. `kai-choice`'s radiogroup points at its prompt). Auto-generated when
21
+ * omitted, mirroring `headingId`. */
22
+ descriptionId?: string;
19
23
  /** Render a dismiss (×) button that hides the card and calls `onDismiss`.
20
24
  * Opt-in, OFF by default — the contract cards never set it, so they are
21
25
  * unaffected. */
@@ -6,9 +6,11 @@ import { MediaTypeFilter } from '../wire/media-types.js';
6
6
  import { TriggerDef } from './composer.js';
7
7
  import { ChatMessage } from '../elements/chat-types.js';
8
8
  import { ProseSize } from '../primitives/chat-config.js';
9
- import { ModelOption } from '../types.js';
9
+ import { ModelOption, HomeConfig, HomeLinkEntry } from '../types.js';
10
10
  import { CardComponentMap } from '../primitives/card-registry.js';
11
11
  import { CardSchemaMap } from './card-renderer.js';
12
+ import { JSX } from 'solid-js';
13
+ import { ConversationStore } from '../primitives/conversation-store.js';
12
14
  export interface ChatThreadContextUsage {
13
15
  usedTokens: number;
14
16
  maxTokens: number;
@@ -33,6 +35,11 @@ export interface ChatThreadProps {
33
35
  * the kit checks its own seven built-ins and leaves your own card type
34
36
  * unvalidated. A schema here WINS over a built-in of the same name. */
35
37
  cardSchemas?: CardSchemaMap;
38
+ /** The custom-element host node to emit card events off when no `CardProvider`
39
+ * is present, forwarded through `MessageBody` to `CardRenderer`. The
40
+ * element facades pass their own host element so card events leave as the
41
+ * bubbling `kai-card` CustomEvent. */
42
+ cardHostElement?: HTMLElement;
36
43
  /** Value of the input. A **string** is controlled (the host owns the text and
37
44
  * updates it on `kai-value-change`). A **ComposerDoc** is a one-time seed that
38
45
  * pre-populates pills; the user then edits freely. Leave unset for uncontrolled. */
@@ -61,6 +68,19 @@ export interface ChatThreadProps {
61
68
  /** Enable Shiki syntax highlighting in code blocks. Turn off to render plain
62
69
  * `<pre>` blocks (lighter, no highlighter load). Default true. */
63
70
  codeHighlight?: boolean;
71
+ /** How `reasoning` parts render across the thread. `'full'` (default) is the
72
+ * current collapsible-disclosure behavior; `'compact'` shows only a shimmer
73
+ * loader while a reasoning part streams and nothing once it settles (no
74
+ * expandable detail); `'off'` renders reasoning parts not at all. Forwarded
75
+ * to every `MessageBody` as `reasoningMode`. */
76
+ reasoning?: 'full' | 'compact' | 'off';
77
+ /** Seeds the reasoning disclosure open AND keeps it tracking the stream
78
+ * (open while streaming, closes when it settles): the pre-Task-19f `full`
79
+ * behavior. Default false/absent: the panel starts closed (just the
80
+ * "Thinking" shimmer chip) and only opens on click, the current default
81
+ * (owner ruling, 2026-08-26). Meaningless when `reasoning` is `'compact'`
82
+ * or `'off'`. Forwarded to every `MessageBody` as `reasoningDefaultOpen`. */
83
+ reasoningOpen?: boolean;
64
84
  /** Optional header title shown on the left of the header. */
65
85
  chatTitle?: string;
66
86
  /** Optional model list. When set (>1 model) a ModelSwitcher is shown in the
@@ -78,12 +98,107 @@ export interface ChatThreadProps {
78
98
  headerStart?: boolean;
79
99
  /** Whether the host has `slot="header-end"` content (right of the controls). */
80
100
  headerEnd?: boolean;
101
+ /** Extra content rendered in the header-end region, AFTER `slot="header-end"`.
102
+ * This is a JSX escape hatch for a caller composing `ChatThread` directly as a
103
+ * Solid component (no shadow-DOM host, so there is no light-DOM node to slot) —
104
+ * the `kai-dock`-docked construct widget is the motivating case: it needs its
105
+ * own close affordance to sit IN the header row, sharing it with the title
106
+ * instead of floating as a second control with no visible relationship to the
107
+ * chat surface. Renders alongside the named slot rather than replacing it, so a
108
+ * real `slot="header-end"` consumer and this prop can both be present. Counts
109
+ * toward `showHeader()` the same as `headerEnd`, so a construct with no title
110
+ * and only this content still gets a header row to sit in. */
111
+ headerEndContent?: JSX.Element;
112
+ /** Turns on the prior-conversations list: a list-toggle button appears in
113
+ * the header row and the panel gains a second, list, view (C-1 — one
114
+ * panel, two states, never a persistent sidebar). Off by default, same
115
+ * convention as every other capability in this file. Requires BOTH
116
+ * `store` AND `onConversationLoad` — the second is the only path a caller
117
+ * has to actually receive a loaded conversation's messages back (this
118
+ * component never mutates `props.messages` itself). Set with either
119
+ * missing, the feature decides loudly (one `console.error` on mount) and
120
+ * stays visually off rather than throwing or silently going inert: a
121
+ * `store` with no `onConversationLoad` would otherwise make row-select/
122
+ * new/restore fire and do nothing visible, and mount's own auto-restore
123
+ * would still stamp an active conversation id that the save effect could
124
+ * then clobber with whatever `props.messages` the caller drives in next. */
125
+ conversations?: boolean;
126
+ /** The adapter this thread persists through when `conversations` is on:
127
+ * `list()` on mount and on every list-view open, `load(id)` on row select,
128
+ * `save(id, messages)` on every message-array change for the active
129
+ * conversation. A kit-owned INTERFACE (C-3) — the dev owns invocation,
130
+ * transport, auth and retention entirely; `localStorageStore`/`fetchStore`
131
+ * (`@kitn.ai/ui`'s `primitives/conversation-store`) are the shipped
132
+ * built-ins. Set as a JS property; never expressible as an attribute (an
133
+ * adapter is a live object of functions, not scalar data). */
134
+ store?: ConversationStore;
135
+ /** Fires whenever `load(id)` resolves and this thread's `messages` are
136
+ * about to be replaced with that conversation's history — the hook a
137
+ * caller uses to actually own and re-render `messages` (this component
138
+ * does not mutate `props.messages` itself; C-8 keeps the state machine
139
+ * here but the message ARRAY stays the caller's own state, matching every
140
+ * other prop in this file). The second argument is the conversation's id
141
+ * — `undefined` for the "new conversation" case (C-6: no id exists until
142
+ * the first message mints one). Required whenever `conversations` is on;
143
+ * see that prop's own doc for the guard this component runs without it. */
144
+ onConversationLoad?: (messages: ChatMessage[], id?: string) => void;
145
+ /** Whether the surrounding chrome that HOSTS this thread is currently
146
+ * VISIBLE to the visitor — e.g. a docked widget's open/closed state.
147
+ * `ChatThread` has no knowledge of whatever hosts it (a `Dock`, a plain
148
+ * page, anything — same boundary `closeConversationsList` documents), so
149
+ * this is the seam: a host that can hide itself sets it, everyone else
150
+ * leaves it unset.
151
+ *
152
+ * Meaningful only when `conversations` is on, where it's the third leg of
153
+ * "seen" (owner round, 2026-08-26 — unread indicators): the active
154
+ * conversation counts as seen, and gets `store.markRead` called for it,
155
+ * only while it's ALSO the active conversation AND the chat view (not the
156
+ * list) is showing AND this is true. Undeclared/`true` (the default) means
157
+ * "always visible" — correct for every layout with no show/hide concept at
158
+ * all (fullscreen/aside/split/custom) and for any widget consumer that
159
+ * doesn't wire it, which just means unread never distinguishes "closed"
160
+ * from "open" for them (a smaller inaccuracy than the alternative: without
161
+ * this leg, a message arriving to the active conversation while the
162
+ * widget is actually closed would get silently marked read behind the
163
+ * visitor's back, purely because it happened to be the active id). */
164
+ hostOpen?: boolean;
165
+ /** Fires whenever "is any OTHER conversation (not the active one) unread"
166
+ * changes — the value this thread already renders as a dot on its own
167
+ * header toggle, reported outward so a sibling control with no view into
168
+ * `ChatThread`'s internal conversation-summary state (a `Dock`'s own
169
+ * `unread` prop, say) can mirror it. Only meaningful with `conversations`
170
+ * on; never fires otherwise. */
171
+ onUnreadChange?: (unread: boolean) => void;
172
+ /** Turns on the widget home screen (Intercom-pattern, H-1/H-2): the panel
173
+ * boots into a `home` view — greeting, most-recent-conversation card, a
174
+ * "new conversation" CTA, and host-defined links — with a Home/Messages
175
+ * tab bar beneath the content area. The prior-conversations list moves
176
+ * from the header toggle onto the Messages tab (H-2); a drilled-into chat
177
+ * (from a list row, the recent card, or "new conversation") hides the tab
178
+ * bar and shows a back arrow in the header instead. Off by default: unset,
179
+ * the widget renders byte-for-byte as it does today. */
180
+ home?: HomeConfig;
181
+ /** Fires when a `home.links` entry with no `href` is activated (an
182
+ * `href`-bearing entry navigates as a real anchor instead — see
183
+ * `HomePanelProps.onLink`). Meaningful only when `home` is set. */
184
+ onHomeLink?: (entry: HomeLinkEntry) => void;
81
185
  /** REPLACE: full custom header in place of the built-in title/model/context bar. */
82
186
  headerFull?: boolean;
83
187
  /** INJECT: left sidebar column (e.g. a conversation list / your own nav). */
84
188
  sidebar?: boolean;
85
189
  /** REPLACE: custom zero-state rendered in the message area while the thread is empty (replaces the empty message list only; the composer and its suggestions still render). */
86
190
  empty?: boolean;
191
+ /** REPLACE, JSX form: the empty-state content itself, for a caller composing
192
+ * `ChatThread` directly as a Solid component rather than through the `<kai-chat>`
193
+ * shadow-DOM boundary that `empty`/`slot="empty"` targets. Renders INSIDE this
194
+ * component's own tree — so a caller passing the kit's own `<Empty>` composition
195
+ * (`components/empty.tsx`) gets it fully styled by the adopted stylesheet, unlike
196
+ * `slot="empty"`: that slot only ever receives LIGHT-DOM children of the shadow
197
+ * HOST, and light-DOM nodes are outside the shadow root's adopted stylesheets, so
198
+ * Tailwind-utility-class content projected there renders bare. Takes priority
199
+ * over `empty`/`slot="empty"` when both are set — the two are alternate delivery
200
+ * mechanisms for the same region, not additive like `headerEndContent`. */
201
+ emptyContent?: JSX.Element;
87
202
  /** REPLACE: full custom composer in place of the built-in prompt input. The
88
203
  * projected content wires its own submit (the data-flow boundary). */
89
204
  composer?: boolean;
@@ -98,6 +213,10 @@ export interface ChatThreadProps {
98
213
  accept?: MediaTypeFilter;
99
214
  /** Files the composer refused because `accept` excluded them. */
100
215
  onAttachmentsRejected?: (rejected: RejectedAttachment[]) => void;
216
+ /** When `false`, hides the built-in paperclip attach button. Defaults to
217
+ * `true` (undeclared keeps today's behavior: attach visible), matching
218
+ * `DefaultPromptInput`'s own default: only an explicit `false` hides it. */
219
+ attach?: boolean;
101
220
  /** Show a web-search (Globe) button in the input toolbar; calls `onWebSearch`. */
102
221
  webSearch?: boolean;
103
222
  /** Show a Voice (Mic) button in the input toolbar; fires a `voice` event. */
@@ -133,5 +252,19 @@ export interface ChatThreadController {
133
252
  clear(): void;
134
253
  send(): void;
135
254
  scrollToBottom(behavior?: ScrollBehavior): void;
255
+ /** Force the widget back to its default landing view — `'home'` when the
256
+ * `home` prop is set (H-5), `'chat'` otherwise (a no-op if already there,
257
+ * or if neither `home` nor `conversations` is on). ChatThread has no knowledge of
258
+ * whatever chrome hosts it — a `Dock`, a plain page, anything — so it
259
+ * cannot know when that host closes. The seam is this one imperative
260
+ * call: a host that can go from visible to hidden and back (the `kai-dock`
261
+ * widget being the motivating case) calls it on every hide, so the NEXT
262
+ * open always lands on the chat view rather than wherever the list was
263
+ * left (owner: reopening the widget should show the default screen, not
264
+ * a stale list view). `Dock`'s own `onOpenChange` already fires on every
265
+ * close path — header X, the launcher toggle, and Escape — so a single
266
+ * `onOpenChange={(open) => !open && controller.closeConversationsList()}`
267
+ * at the call site covers all three with no per-path wiring. */
268
+ closeConversationsList(): void;
136
269
  }
137
- export declare function ChatThread(props: ChatThreadProps): import("solid-js").JSX.Element;
270
+ export declare function ChatThread(props: ChatThreadProps): JSX.Element;
@@ -15,9 +15,25 @@ export interface ConversationItemProps {
15
15
  * ticking clock. Returns '' for a missing or unparseable date.
16
16
  */
17
17
  export declare function relativeTimeShort(iso?: string, now?: number): string;
18
+ /**
19
+ * Whether a conversation should show an unread indicator (owner round,
20
+ * 2026-08-26). `lastReadAt`'s own doc (`types.ts`) has the full contract;
21
+ * this is the one place that reads it, so both list surfaces (this file's
22
+ * `ConversationItem` and the widget-box `ConversationPanel`) derive it
23
+ * identically rather than each restating the comparison.
24
+ *
25
+ * Absent `lastReadAt` reads as NOT unread — the decide-loudly default for a
26
+ * store that never implements `ConversationStore.markRead` at all (every
27
+ * summary it returns leaves the field undefined forever, so this always
28
+ * returns `false` for it) rather than guessing "probably unread" from a
29
+ * signal the store never actually provided. Defensive `Date.parse`, same
30
+ * pattern as `relativeTimeShort` above: an unparsable date reads as not
31
+ * unread rather than throwing.
32
+ */
33
+ export declare function isConversationUnread(conv: Pick<ConversationSummary, 'updatedAt' | 'lastReadAt'>): boolean;
18
34
  /**
19
35
  * The slotted-item shape rendered by `<kai-conversation-item>` — the composed
20
- * row of the consumer-owned loop (spec 2026-08-20 § 2a). Distinct from the
36
+ * row of the consumer-owned loop. Distinct from the
21
37
  * data-mode `ConversationItem` above, which batteries mode keeps rendering
22
38
  * unchanged: this one takes REGIONS, not a `ConversationSummary`.
23
39
  *
@@ -25,16 +41,19 @@ export declare function relativeTimeShort(iso?: string, now?: number): string;
25
41
  * title), plus `leading`, `meta`, and `menu`. The `menu` region takes the
26
42
  * consumer's OWN popover (rename / fork / archive live there); the component
27
43
  * provides only the region plus focus and ARIA plumbing, never a declarative
28
- * actions prop. Activation semantics live in the CONTAINER
29
- * (`createConversationItemsController` in conversation-list.tsx): this row is
30
- * presentational, and the `data-kai-item-menu` marker on the menu region is what
31
- * the container's activation guard keys off so a click in the consumer's menu
32
- * never also selects the row.
44
+ * actions prop. Activation has two modes: inside `<kai-conversations>` it
45
+ * lives in the CONTAINER (`createConversationItemsController` in
46
+ * conversation-list.tsx this row renders no handler and the
47
+ * `data-kai-item-menu` marker on the menu region is what the container's
48
+ * activation guard keys off so a click in the consumer's menu never also
49
+ * selects the row); STANDALONE, `onActivate` makes the row body
50
+ * its own tabbable button-role control — click / Enter / Space — with the menu
51
+ * still outside the control as the body's sibling.
33
52
  *
34
53
  * ARIA contract for direct Solid use: the row renders `role="listitem"` holding
35
54
  * a `role="button"` body (`aria-current` marks the active row, the same dialect
36
55
  * as the batteries-mode row above) with the menu as the body's tabbable SIBLING
37
- * (ratified 2026-08-20; axe `nested-interactive` bans focusable descendants of
56
+ * (axe `nested-interactive` bans focusable descendants of
38
57
  * a control, and `aria-required-children` outlaws non-option content anywhere
39
58
  * inside a listbox, which is why the vocabulary is not listbox/option). Render
40
59
  * your loop's rows inside a `role="list"` ancestor; element mode has no such
@@ -64,6 +83,15 @@ export interface SlottedConversationItemProps {
64
83
  * Solid consumers rendering the component directly leave it off and the row
65
84
  * itself is the group. */
66
85
  hostSemantics?: boolean;
86
+ /** STANDALONE activation: when set, the row body is itself the
87
+ * activation control — `tabindex="0"` on the `role="button"` body, and
88
+ * click / Enter / Space call this. The menu region never triggers it (it is
89
+ * the body's sibling, outside the control). Inside `<kai-conversations>`
90
+ * leave it UNSET: the container's controller owns activation (its delegated
91
+ * click/keydown → `kai-conversation-select`) plus roving tabindex, and a
92
+ * handler here would double-fire. The `kai-conversation-item` facade passes
93
+ * it only when the item is standalone. */
94
+ onActivate?: () => void;
67
95
  class?: string;
68
96
  }
69
97
  export declare function SlottedConversationItem(props: SlottedConversationItemProps): JSX.Element;
@@ -19,6 +19,18 @@ export declare function CollapsedRail(props: CollapsedRailProps): JSX.Element;
19
19
  * the plain-HTML spellings (host `id` matches the `<kai-conversation>`
20
20
  * data-carrier precedent). */
21
21
  export declare function readConversationItemId(el: Element): string;
22
+ /** Whether a `<kai-conversation-item>` is STANDALONE — outside the management
23
+ * of a `<kai-conversations>` container — and therefore activates ITSELF:
24
+ * the facade makes its row body a
25
+ * tabbable button and fires `kai-select` on click / Enter / Space. Derived
26
+ * from the container's own membership rule, not from mere ancestry: item mode
27
+ * queries `:scope > kai-conversation-item` (direct children only), so an item
28
+ * wrapped in another element inside a container is standalone too — the
29
+ * container's controller never stamps or activates it. Inside a container
30
+ * (a direct child), the parent-item contract is the ONLY activation
31
+ * path: the container dispatches `kai-conversation-select` and owns roving
32
+ * tabindex, and the item fires nothing of its own. */
33
+ export declare function isStandaloneConversationItem(el: Element): boolean;
22
34
  export interface ConversationItemsControllerOptions {
23
35
  /** The current slotted item hosts, in DOM order. */
24
36
  getItems: () => HTMLElement[];
@@ -39,7 +51,7 @@ export interface ConversationItemsController {
39
51
  handleKeyDown(e: KeyboardEvent): void;
40
52
  }
41
53
  /**
42
- * The parent-item contract of item mode (spec 2026-08-20 § 2a), as a pure-DOM
54
+ * The parent-item contract of item mode, as a pure-DOM
43
55
  * controller so it is host-agnostic: the `kai-conversations` facade wires it over
44
56
  * its slotted `kai-conversation-item` children, and the jsdom contract tests
45
57
  * drive it over plain nodes. Solid context cannot cross the element boundary
@@ -54,8 +66,8 @@ export interface ConversationItemsController {
54
66
  * left alone);
55
67
  * - roving tabindex — exactly one body node `tabindex="0"` (the active
56
68
  * item's, else the first's), the rest `-1`, re-derived on every `sync()`;
57
- * menu content keeps its natural tab order (it is the body's SIBLING, per
58
- * the ratified 2026-08-20 sibling restructure);
69
+ * menu content keeps its natural tab order (it is the body's SIBLING, not a
70
+ * descendant);
59
71
  * - activation (click / Enter / Space) calls `onSelect` with the item's id, and
60
72
  * is SUPPRESSED when the composed path crosses the item's `menu` region
61
73
  * (light-DOM `slot="menu"` content or the shadow `data-kai-item-menu`
@@ -85,8 +97,8 @@ export interface ConversationListProps {
85
97
  /** Receive the imperative controller once mounted. The `kai-conversations`
86
98
  * facade uses it to focus / clear the internal search input. */
87
99
  controllerRef?: (controller: ConversationListController) => void;
88
- /** Item mode (spec 2026-08-20 § 2a): the consumer's OWN rows, rendered inside
89
- * a list region in place of the data rows. When set, the built-in search
100
+ /** Item mode: your OWN rows, rendered inside a list region in place of the
101
+ * data rows. When set, the built-in search
90
102
  * filter, grouping and empty/no-match states do not apply — the consumer's
91
103
  * loop owns them — while the chrome (header, search box, new-chat, footer)
92
104
  * still renders and `onSearchChange` still reports queries. The
@@ -0,0 +1,29 @@
1
+ import { ConversationSummary } from '../types.js';
2
+ export interface ConversationPanelProps {
3
+ conversations: ConversationSummary[];
4
+ activeId?: string;
5
+ onSelect: (id: string) => void;
6
+ onNewChat: () => void;
7
+ /** Wording for the floating new-conversation pill. Defaults to "New conversation". */
8
+ newChatLabel?: string;
9
+ class?: string;
10
+ }
11
+ /**
12
+ * The widget-box list view (owner rework, 2026-08-26 — the earlier retrofit
13
+ * of the desktop `ConversationList` into this box was rejected at the live
14
+ * demo). NOT `ConversationList`, which stays the desktop-sidebar surface
15
+ * unchanged: no search box, no group headers, no per-row menu, no full-width
16
+ * footer bar, no second "+" beside the header toggle. A row is a
17
+ * conversation, full stop — bold title, right-aligned relative time, one
18
+ * truncated line of the last message. The ONE way to start a new
19
+ * conversation is the floating pill near the bottom.
20
+ *
21
+ * Modeled directly on Intercom's Messenger "Messages" tab (first-hand
22
+ * research: `.superpowers/sdd/2026-08-26-conversations/
23
+ * research-intercom-messages-view.md`) — a box this size gets one job at a
24
+ * time: browsing conversations OR having one, never both, and the list
25
+ * replaces the ENTIRE content area (`ChatThread` hides the thread,
26
+ * suggestions and composer while this renders — see its `view() === 'list'`
27
+ * branch).
28
+ */
29
+ export declare function ConversationPanel(props: ConversationPanelProps): import("solid-js").JSX.Element;