@logicplanes/kaeso-ui 0.1.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 (660) hide show
  1. package/AGENTS.md +124 -0
  2. package/CLAUDE.md +3 -0
  3. package/LICENSE +21 -0
  4. package/NOTICE.md +5 -0
  5. package/README.md +43 -0
  6. package/ai/component-guides.md +4760 -0
  7. package/ai/component-registry.json +12626 -0
  8. package/ai/component-registry.md +2950 -0
  9. package/ai/icons.md +28 -0
  10. package/ai/tokens.md +207 -0
  11. package/dist/blocks/delete-resource.js +35 -0
  12. package/dist/blocks/delete-resource.js.map +1 -0
  13. package/dist/blocks/pages.js +70 -0
  14. package/dist/blocks/pages.js.map +1 -0
  15. package/dist/blocks/resource-list.js +68 -0
  16. package/dist/blocks/resource-list.js.map +1 -0
  17. package/dist/chunks/app-frame-BBIMch8X.js +224 -0
  18. package/dist/chunks/app-frame-BBIMch8X.js.map +1 -0
  19. package/dist/chunks/arrow-focus-BcySmwwU.js +11 -0
  20. package/dist/chunks/arrow-focus-BcySmwwU.js.map +1 -0
  21. package/dist/chunks/avatar-D2nJNbtC.js +83 -0
  22. package/dist/chunks/avatar-D2nJNbtC.js.map +1 -0
  23. package/dist/chunks/badge-Dkyhs0_j.js +26 -0
  24. package/dist/chunks/badge-Dkyhs0_j.js.map +1 -0
  25. package/dist/chunks/banner-BiziJuBZ.js +85 -0
  26. package/dist/chunks/banner-BiziJuBZ.js.map +1 -0
  27. package/dist/chunks/button-BHKAE6ui.js +164 -0
  28. package/dist/chunks/button-BHKAE6ui.js.map +1 -0
  29. package/dist/chunks/calendar-B5SSTE56.js +104 -0
  30. package/dist/chunks/calendar-B5SSTE56.js.map +1 -0
  31. package/dist/chunks/checkbox-BgRdbfCE.js +124 -0
  32. package/dist/chunks/checkbox-BgRdbfCE.js.map +1 -0
  33. package/dist/chunks/cn-CidVUKMm.js +669 -0
  34. package/dist/chunks/cn-CidVUKMm.js.map +1 -0
  35. package/dist/chunks/code-DDyOlIFO.js +23 -0
  36. package/dist/chunks/code-DDyOlIFO.js.map +1 -0
  37. package/dist/chunks/code-block-BbK6E4Eo.js +273 -0
  38. package/dist/chunks/code-block-BbK6E4Eo.js.map +1 -0
  39. package/dist/chunks/collapsible-Cw_1aem5.js +87 -0
  40. package/dist/chunks/collapsible-Cw_1aem5.js.map +1 -0
  41. package/dist/chunks/combobox-D8pQk22r.js +291 -0
  42. package/dist/chunks/combobox-D8pQk22r.js.map +1 -0
  43. package/dist/chunks/context-BELWW79w.js +20 -0
  44. package/dist/chunks/context-BELWW79w.js.map +1 -0
  45. package/dist/chunks/copy-button-mAzHjYXq.js +109 -0
  46. package/dist/chunks/copy-button-mAzHjYXq.js.map +1 -0
  47. package/dist/chunks/core-Bgefcs3z.js +467 -0
  48. package/dist/chunks/core-Bgefcs3z.js.map +1 -0
  49. package/dist/chunks/date-popup-Er1oQwtU.js +35 -0
  50. package/dist/chunks/date-popup-Er1oQwtU.js.map +1 -0
  51. package/dist/chunks/de-BCg1eRVd.js +384 -0
  52. package/dist/chunks/de-BCg1eRVd.js.map +1 -0
  53. package/dist/chunks/dev-CR1p7gCm.js +30 -0
  54. package/dist/chunks/dev-CR1p7gCm.js.map +1 -0
  55. package/dist/chunks/dialog-CVqSVk3T.js +283 -0
  56. package/dist/chunks/dialog-CVqSVk3T.js.map +1 -0
  57. package/dist/chunks/empty-DIbBpytW.js +38 -0
  58. package/dist/chunks/empty-DIbBpytW.js.map +1 -0
  59. package/dist/chunks/field-d8V94bvZ.js +119 -0
  60. package/dist/chunks/field-d8V94bvZ.js.map +1 -0
  61. package/dist/chunks/field-press-DwzBFafd.js +10 -0
  62. package/dist/chunks/field-press-DwzBFafd.js.map +1 -0
  63. package/dist/chunks/i18n-0RW0IAf3.js +10 -0
  64. package/dist/chunks/i18n-0RW0IAf3.js.map +1 -0
  65. package/dist/chunks/icon-Bha63LaN.js +90 -0
  66. package/dist/chunks/icon-Bha63LaN.js.map +1 -0
  67. package/dist/chunks/icon-CeNQtobn.js +47 -0
  68. package/dist/chunks/icon-CeNQtobn.js.map +1 -0
  69. package/dist/chunks/icon-button-Bw67oKtx.js +50 -0
  70. package/dist/chunks/icon-button-Bw67oKtx.js.map +1 -0
  71. package/dist/chunks/identity-DQinp-Ep.js +342 -0
  72. package/dist/chunks/identity-DQinp-Ep.js.map +1 -0
  73. package/dist/chunks/input-Biakz6GB.js +114 -0
  74. package/dist/chunks/input-Biakz6GB.js.map +1 -0
  75. package/dist/chunks/input-group-DQqEPFj_.js +87 -0
  76. package/dist/chunks/input-group-DQqEPFj_.js.map +1 -0
  77. package/dist/chunks/inset-BLMdxX4I.js +18 -0
  78. package/dist/chunks/inset-BLMdxX4I.js.map +1 -0
  79. package/dist/chunks/iso-field-CznqNVrH.js +31 -0
  80. package/dist/chunks/iso-field-CznqNVrH.js.map +1 -0
  81. package/dist/chunks/json-view-B6KHIWzh.js +174 -0
  82. package/dist/chunks/json-view-B6KHIWzh.js.map +1 -0
  83. package/dist/chunks/kbd-CBcBDvqU.js +132 -0
  84. package/dist/chunks/kbd-CBcBDvqU.js.map +1 -0
  85. package/dist/chunks/labelled-D5udSPUI.js +16 -0
  86. package/dist/chunks/labelled-D5udSPUI.js.map +1 -0
  87. package/dist/chunks/link-provider---9JdxTg.js +27 -0
  88. package/dist/chunks/link-provider---9JdxTg.js.map +1 -0
  89. package/dist/chunks/link-tTapNTpM.js +47 -0
  90. package/dist/chunks/link-tTapNTpM.js.map +1 -0
  91. package/dist/chunks/list-CN8pO8lv.js +475 -0
  92. package/dist/chunks/list-CN8pO8lv.js.map +1 -0
  93. package/dist/chunks/loader-CUehxvSZ.js +57 -0
  94. package/dist/chunks/loader-CUehxvSZ.js.map +1 -0
  95. package/dist/chunks/logo-VmXYhIJL.js +149 -0
  96. package/dist/chunks/logo-VmXYhIJL.js.map +1 -0
  97. package/dist/chunks/markdown-C-iJsYnd.js +313 -0
  98. package/dist/chunks/markdown-C-iJsYnd.js.map +1 -0
  99. package/dist/chunks/menu-OURWt_hD.js +447 -0
  100. package/dist/chunks/menu-OURWt_hD.js.map +1 -0
  101. package/dist/chunks/message-BxTkh1oA.js +49 -0
  102. package/dist/chunks/message-BxTkh1oA.js.map +1 -0
  103. package/dist/chunks/meter-DWhyzFGQ.js +84 -0
  104. package/dist/chunks/meter-DWhyzFGQ.js.map +1 -0
  105. package/dist/chunks/page-header-BIRswR73.js +41 -0
  106. package/dist/chunks/page-header-BIRswR73.js.map +1 -0
  107. package/dist/chunks/pagination-DYdLm18-.js +85 -0
  108. package/dist/chunks/pagination-DYdLm18-.js.map +1 -0
  109. package/dist/chunks/popover-BE7VO-a4.js +50 -0
  110. package/dist/chunks/popover-BE7VO-a4.js.map +1 -0
  111. package/dist/chunks/popover-root-D3q89WNF.js +26 -0
  112. package/dist/chunks/popover-root-D3q89WNF.js.map +1 -0
  113. package/dist/chunks/portal-context-BBbzDKmY.js +33 -0
  114. package/dist/chunks/portal-context-BBbzDKmY.js.map +1 -0
  115. package/dist/chunks/radio-CUxbLCvD.js +110 -0
  116. package/dist/chunks/radio-CUxbLCvD.js.map +1 -0
  117. package/dist/chunks/range-popup-AbRzgHtY.js +111 -0
  118. package/dist/chunks/range-popup-AbRzgHtY.js.map +1 -0
  119. package/dist/chunks/restore-focus-Cap1Q-R3.js +19 -0
  120. package/dist/chunks/restore-focus-Cap1Q-R3.js.map +1 -0
  121. package/dist/chunks/rights-CXo7zEf6.js +279 -0
  122. package/dist/chunks/rights-CXo7zEf6.js.map +1 -0
  123. package/dist/chunks/safe-href-G5DBNVwm.js +13 -0
  124. package/dist/chunks/safe-href-G5DBNVwm.js.map +1 -0
  125. package/dist/chunks/scroll-parent-WXvzQcUo.js +14 -0
  126. package/dist/chunks/scroll-parent-WXvzQcUo.js.map +1 -0
  127. package/dist/chunks/section-XStLtXKa.js +87 -0
  128. package/dist/chunks/section-XStLtXKa.js.map +1 -0
  129. package/dist/chunks/segmented-CDTx2n29.js +113 -0
  130. package/dist/chunks/segmented-CDTx2n29.js.map +1 -0
  131. package/dist/chunks/select-Ca3HGsN1.js +223 -0
  132. package/dist/chunks/select-Ca3HGsN1.js.map +1 -0
  133. package/dist/chunks/separator-D5AzVFTS.js +45 -0
  134. package/dist/chunks/separator-D5AzVFTS.js.map +1 -0
  135. package/dist/chunks/sidebar-C4fL_KMm.js +599 -0
  136. package/dist/chunks/sidebar-C4fL_KMm.js.map +1 -0
  137. package/dist/chunks/sidebar-menu-sd9vCpDy.js +33 -0
  138. package/dist/chunks/sidebar-menu-sd9vCpDy.js.map +1 -0
  139. package/dist/chunks/skeleton-kfuqdl1a.js +36 -0
  140. package/dist/chunks/skeleton-kfuqdl1a.js.map +1 -0
  141. package/dist/chunks/slider-DbhjJ3ML.js +57 -0
  142. package/dist/chunks/slider-DbhjJ3ML.js.map +1 -0
  143. package/dist/chunks/status-dot-CBoQpyL4.js +25 -0
  144. package/dist/chunks/status-dot-CBoQpyL4.js.map +1 -0
  145. package/dist/chunks/styles-Btvg2DCf.js +21 -0
  146. package/dist/chunks/styles-Btvg2DCf.js.map +1 -0
  147. package/dist/chunks/swap-text-BhPI8DOf.js +28 -0
  148. package/dist/chunks/swap-text-BhPI8DOf.js.map +1 -0
  149. package/dist/chunks/switch-CztLhA8F.js +59 -0
  150. package/dist/chunks/switch-CztLhA8F.js.map +1 -0
  151. package/dist/chunks/table-DYKa86af.js +67 -0
  152. package/dist/chunks/table-DYKa86af.js.map +1 -0
  153. package/dist/chunks/tag-BsmQ1xPj.js +87 -0
  154. package/dist/chunks/tag-BsmQ1xPj.js.map +1 -0
  155. package/dist/chunks/text-BPglS3vq.js +63 -0
  156. package/dist/chunks/text-BPglS3vq.js.map +1 -0
  157. package/dist/chunks/textarea-Bvk7N2bh.js +156 -0
  158. package/dist/chunks/textarea-Bvk7N2bh.js.map +1 -0
  159. package/dist/chunks/theme-provider-mgUaQK7L.js +69 -0
  160. package/dist/chunks/theme-provider-mgUaQK7L.js.map +1 -0
  161. package/dist/chunks/tone-CWpsHPb6.js +11 -0
  162. package/dist/chunks/tone-CWpsHPb6.js.map +1 -0
  163. package/dist/chunks/toolbar-Dw3uxpsE.js +36 -0
  164. package/dist/chunks/toolbar-Dw3uxpsE.js.map +1 -0
  165. package/dist/chunks/tooltip-CDu00nzg.js +124 -0
  166. package/dist/chunks/tooltip-CDu00nzg.js.map +1 -0
  167. package/dist/chunks/tooltip-root-DWhtAtFb.js +60 -0
  168. package/dist/chunks/tooltip-root-DWhtAtFb.js.map +1 -0
  169. package/dist/chunks/use-controllable-B5Fd12Bx.js +13 -0
  170. package/dist/chunks/use-controllable-B5Fd12Bx.js.map +1 -0
  171. package/dist/chunks/use-copy-Dm2ncvMX.js +24 -0
  172. package/dist/chunks/use-copy-Dm2ncvMX.js.map +1 -0
  173. package/dist/chunks/use-layout-width-DZaLOQMT.js +27 -0
  174. package/dist/chunks/use-layout-width-DZaLOQMT.js.map +1 -0
  175. package/dist/chunks/use-scroll-margin-DWcfIXac.js +25 -0
  176. package/dist/chunks/use-scroll-margin-DWcfIXac.js.map +1 -0
  177. package/dist/chunks/use-truncated-DmQoePvG.js +25 -0
  178. package/dist/chunks/use-truncated-DmQoePvG.js.map +1 -0
  179. package/dist/chunks/utils-CdH72WEp.js +8 -0
  180. package/dist/chunks/utils-CdH72WEp.js.map +1 -0
  181. package/dist/chunks/virtual-rows-BgMdVelU.js +37 -0
  182. package/dist/chunks/virtual-rows-BgMdVelU.js.map +1 -0
  183. package/dist/chunks/when-idle-Cy3pinqO.js +12 -0
  184. package/dist/chunks/when-idle-Cy3pinqO.js.map +1 -0
  185. package/dist/chunks/zh-CN-cPjO1OOo.js +384 -0
  186. package/dist/chunks/zh-CN-cPjO1OOo.js.map +1 -0
  187. package/dist/components/app-frame.js +2 -0
  188. package/dist/components/avatar.js +2 -0
  189. package/dist/components/badge.js +2 -0
  190. package/dist/components/banner.js +2 -0
  191. package/dist/components/button-group.js +69 -0
  192. package/dist/components/button-group.js.map +1 -0
  193. package/dist/components/button.js +2 -0
  194. package/dist/components/calendar.js +2 -0
  195. package/dist/components/charts/bar.js +231 -0
  196. package/dist/components/charts/bar.js.map +1 -0
  197. package/dist/components/charts/donut.js +179 -0
  198. package/dist/components/charts/donut.js.map +1 -0
  199. package/dist/components/charts/gauge.js +70 -0
  200. package/dist/components/charts/gauge.js.map +1 -0
  201. package/dist/components/charts/heatmap.js +83 -0
  202. package/dist/components/charts/heatmap.js.map +1 -0
  203. package/dist/components/charts/sankey.js +110 -0
  204. package/dist/components/charts/sankey.js.map +1 -0
  205. package/dist/components/charts/sparkline.js +72 -0
  206. package/dist/components/charts/sparkline.js.map +1 -0
  207. package/dist/components/charts/timeseries.js +253 -0
  208. package/dist/components/charts/timeseries.js.map +1 -0
  209. package/dist/components/charts.js +10 -0
  210. package/dist/components/checkbox.js +2 -0
  211. package/dist/components/code-block.js +4 -0
  212. package/dist/components/code.js +2 -0
  213. package/dist/components/collapsible.js +2 -0
  214. package/dist/components/combobox.js +2 -0
  215. package/dist/components/command-palette.js +216 -0
  216. package/dist/components/command-palette.js.map +1 -0
  217. package/dist/components/copy-button.js +2 -0
  218. package/dist/components/data-table.js +399 -0
  219. package/dist/components/data-table.js.map +1 -0
  220. package/dist/components/date-picker.js +327 -0
  221. package/dist/components/date-picker.js.map +1 -0
  222. package/dist/components/dialog.js +178 -0
  223. package/dist/components/dialog.js.map +1 -0
  224. package/dist/components/display-options.js +112 -0
  225. package/dist/components/display-options.js.map +1 -0
  226. package/dist/components/empty.js +2 -0
  227. package/dist/components/field.js +2 -0
  228. package/dist/components/filter-chip.js +120 -0
  229. package/dist/components/filter-chip.js.map +1 -0
  230. package/dist/components/filter-row.js +35 -0
  231. package/dist/components/filter-row.js.map +1 -0
  232. package/dist/components/flow.js +111 -0
  233. package/dist/components/flow.js.map +1 -0
  234. package/dist/components/heading.js +28 -0
  235. package/dist/components/heading.js.map +1 -0
  236. package/dist/components/icon-button.js +2 -0
  237. package/dist/components/icon.js +4 -0
  238. package/dist/components/input.js +181 -0
  239. package/dist/components/input.js.map +1 -0
  240. package/dist/components/kaeso/conversation.js +204 -0
  241. package/dist/components/kaeso/conversation.js.map +1 -0
  242. package/dist/components/kaeso/identity.js +2 -0
  243. package/dist/components/kaeso/moments.js +122 -0
  244. package/dist/components/kaeso/moments.js.map +1 -0
  245. package/dist/components/kaeso/rights.js +2 -0
  246. package/dist/components/kaeso/usage.js +101 -0
  247. package/dist/components/kaeso/usage.js.map +1 -0
  248. package/dist/components/kaeso.js +186 -0
  249. package/dist/components/kaeso.js.map +1 -0
  250. package/dist/components/kbd.js +2 -0
  251. package/dist/components/key-value.js +73 -0
  252. package/dist/components/key-value.js.map +1 -0
  253. package/dist/components/label.js +26 -0
  254. package/dist/components/label.js.map +1 -0
  255. package/dist/components/layout.js +72 -0
  256. package/dist/components/layout.js.map +1 -0
  257. package/dist/components/link.js +2 -0
  258. package/dist/components/list.js +2 -0
  259. package/dist/components/loader.js +38 -0
  260. package/dist/components/loader.js.map +1 -0
  261. package/dist/components/logo.js +2 -0
  262. package/dist/components/markdown.js +4 -0
  263. package/dist/components/menu.js +4 -0
  264. package/dist/components/meter.js +2 -0
  265. package/dist/components/page-header.js +2 -0
  266. package/dist/components/pagination.js +2 -0
  267. package/dist/components/playground.js +813 -0
  268. package/dist/components/playground.js.map +1 -0
  269. package/dist/components/popover.js +53 -0
  270. package/dist/components/popover.js.map +1 -0
  271. package/dist/components/portal.js +15 -0
  272. package/dist/components/portal.js.map +1 -0
  273. package/dist/components/qr-code.js +38 -0
  274. package/dist/components/qr-code.js.map +1 -0
  275. package/dist/components/radio.js +2 -0
  276. package/dist/components/scroll-area.js +35 -0
  277. package/dist/components/scroll-area.js.map +1 -0
  278. package/dist/components/section.js +2 -0
  279. package/dist/components/segmented.js +2 -0
  280. package/dist/components/select.js +2 -0
  281. package/dist/components/separator.js +2 -0
  282. package/dist/components/settings.js +99 -0
  283. package/dist/components/settings.js.map +1 -0
  284. package/dist/components/sheet.js +94 -0
  285. package/dist/components/sheet.js.map +1 -0
  286. package/dist/components/sidebar.js +2 -0
  287. package/dist/components/skeleton.js +2 -0
  288. package/dist/components/slider.js +2 -0
  289. package/dist/components/stat.js +195 -0
  290. package/dist/components/stat.js.map +1 -0
  291. package/dist/components/status-dot.js +2 -0
  292. package/dist/components/surface.js +26 -0
  293. package/dist/components/surface.js.map +1 -0
  294. package/dist/components/swap-text.js +2 -0
  295. package/dist/components/switch.js +2 -0
  296. package/dist/components/table.js +2 -0
  297. package/dist/components/tabs.js +96 -0
  298. package/dist/components/tabs.js.map +1 -0
  299. package/dist/components/tag.js +2 -0
  300. package/dist/components/text.js +2 -0
  301. package/dist/components/theme-menu.js +50 -0
  302. package/dist/components/theme-menu.js.map +1 -0
  303. package/dist/components/timeline.js +58 -0
  304. package/dist/components/timeline.js.map +1 -0
  305. package/dist/components/toast.js +214 -0
  306. package/dist/components/toast.js.map +1 -0
  307. package/dist/components/toc.js +48 -0
  308. package/dist/components/toc.js.map +1 -0
  309. package/dist/components/toolbar.js +2 -0
  310. package/dist/components/tooltip.js +18 -0
  311. package/dist/components/tooltip.js.map +1 -0
  312. package/dist/components/visually-hidden.js +17 -0
  313. package/dist/components/visually-hidden.js.map +1 -0
  314. package/dist/fonts/LICENSE-GeistMono.txt +93 -0
  315. package/dist/fonts/LICENSE-Inter.txt +93 -0
  316. package/dist/fonts/geist-mono-latin-ext-wght-normal.woff2 +0 -0
  317. package/dist/fonts/geist-mono-latin-wght-normal.woff2 +0 -0
  318. package/dist/fonts/inter-latin-ext-opsz-normal.woff2 +0 -0
  319. package/dist/fonts/inter-latin-opsz-normal.woff2 +0 -0
  320. package/dist/fonts.css +40 -0
  321. package/dist/format.js +178 -0
  322. package/dist/format.js.map +1 -0
  323. package/dist/i18n-locales.js +23 -0
  324. package/dist/i18n-locales.js.map +1 -0
  325. package/dist/i18n-provider.js +30 -0
  326. package/dist/i18n-provider.js.map +1 -0
  327. package/dist/i18n.js +7 -0
  328. package/dist/index.js +153 -0
  329. package/dist/kaeso.css +1099 -0
  330. package/dist/styles.css +2 -0
  331. package/dist/tailwind.css +10 -0
  332. package/dist/theme.js +2 -0
  333. package/dist/types/blocks/delete-resource/delete-resource.d.ts +32 -0
  334. package/dist/types/blocks/delete-resource/docs.d.ts +17 -0
  335. package/dist/types/blocks/delete-resource/index.d.ts +1 -0
  336. package/dist/types/blocks/pages/docs.d.ts +42 -0
  337. package/dist/types/blocks/pages/index.d.ts +1 -0
  338. package/dist/types/blocks/pages/pages.d.ts +65 -0
  339. package/dist/types/blocks/resource-list/docs.d.ts +15 -0
  340. package/dist/types/blocks/resource-list/index.d.ts +1 -0
  341. package/dist/types/blocks/resource-list/resource-list.d.ts +36 -0
  342. package/dist/types/component-docs.d.ts +7 -0
  343. package/dist/types/components/app-frame/app-frame.d.ts +79 -0
  344. package/dist/types/components/app-frame/docs.d.ts +23 -0
  345. package/dist/types/components/app-frame/index.d.ts +1 -0
  346. package/dist/types/components/avatar/avatar.d.ts +60 -0
  347. package/dist/types/components/avatar/docs.d.ts +21 -0
  348. package/dist/types/components/avatar/index.d.ts +1 -0
  349. package/dist/types/components/badge/badge.d.ts +41 -0
  350. package/dist/types/components/badge/docs.d.ts +9 -0
  351. package/dist/types/components/badge/index.d.ts +1 -0
  352. package/dist/types/components/banner/banner.d.ts +51 -0
  353. package/dist/types/components/banner/docs.d.ts +14 -0
  354. package/dist/types/components/banner/index.d.ts +1 -0
  355. package/dist/types/components/button/button.d.ts +116 -0
  356. package/dist/types/components/button/docs.d.ts +23 -0
  357. package/dist/types/components/button/index.d.ts +1 -0
  358. package/dist/types/components/button-group/button-group.d.ts +55 -0
  359. package/dist/types/components/button-group/docs.d.ts +11 -0
  360. package/dist/types/components/button-group/index.d.ts +1 -0
  361. package/dist/types/components/calendar/calendar.d.ts +32 -0
  362. package/dist/types/components/calendar/docs.d.ts +16 -0
  363. package/dist/types/components/calendar/index.d.ts +1 -0
  364. package/dist/types/components/charts/bar.d.ts +39 -0
  365. package/dist/types/components/charts/core.d.ts +167 -0
  366. package/dist/types/components/charts/docs.d.ts +174 -0
  367. package/dist/types/components/charts/donut.d.ts +67 -0
  368. package/dist/types/components/charts/gauge.d.ts +20 -0
  369. package/dist/types/components/charts/heatmap.d.ts +24 -0
  370. package/dist/types/components/charts/index.d.ts +8 -0
  371. package/dist/types/components/charts/sankey.d.ts +29 -0
  372. package/dist/types/components/charts/sparkline.d.ts +18 -0
  373. package/dist/types/components/charts/timeseries.d.ts +47 -0
  374. package/dist/types/components/checkbox/checkbox.d.ts +53 -0
  375. package/dist/types/components/checkbox/docs.d.ts +58 -0
  376. package/dist/types/components/checkbox/index.d.ts +1 -0
  377. package/dist/types/components/code/code.d.ts +24 -0
  378. package/dist/types/components/code/docs.d.ts +8 -0
  379. package/dist/types/components/code/index.d.ts +1 -0
  380. package/dist/types/components/code-block/code-block.d.ts +37 -0
  381. package/dist/types/components/code-block/docs.d.ts +41 -0
  382. package/dist/types/components/code-block/highlighter.d.ts +23 -0
  383. package/dist/types/components/code-block/index.d.ts +4 -0
  384. package/dist/types/components/code-block/json-view.d.ts +23 -0
  385. package/dist/types/components/code-block/kaeso-theme.d.ts +66 -0
  386. package/dist/types/components/collapsible/collapsible.d.ts +39 -0
  387. package/dist/types/components/collapsible/docs.d.ts +21 -0
  388. package/dist/types/components/collapsible/index.d.ts +1 -0
  389. package/dist/types/components/combobox/combobox.d.ts +86 -0
  390. package/dist/types/components/combobox/docs.d.ts +62 -0
  391. package/dist/types/components/combobox/index.d.ts +1 -0
  392. package/dist/types/components/command-palette/command-palette.d.ts +44 -0
  393. package/dist/types/components/command-palette/docs.d.ts +17 -0
  394. package/dist/types/components/command-palette/index.d.ts +1 -0
  395. package/dist/types/components/copy-button/copy-button.d.ts +85 -0
  396. package/dist/types/components/copy-button/docs.d.ts +30 -0
  397. package/dist/types/components/copy-button/index.d.ts +1 -0
  398. package/dist/types/components/data-table/columns.d.ts +47 -0
  399. package/dist/types/components/data-table/data-table.d.ts +80 -0
  400. package/dist/types/components/data-table/docs.d.ts +32 -0
  401. package/dist/types/components/data-table/index.d.ts +3 -0
  402. package/dist/types/components/date-picker/date-picker.d.ts +55 -0
  403. package/dist/types/components/date-picker/date-popup.d.ts +9 -0
  404. package/dist/types/components/date-picker/docs.d.ts +73 -0
  405. package/dist/types/components/date-picker/index.d.ts +2 -0
  406. package/dist/types/components/date-picker/iso-field.d.ts +5 -0
  407. package/dist/types/components/date-picker/range-popup.d.ts +13 -0
  408. package/dist/types/components/date-picker/time-input.d.ts +39 -0
  409. package/dist/types/components/dialog/dialog.d.ts +118 -0
  410. package/dist/types/components/dialog/docs.d.ts +70 -0
  411. package/dist/types/components/dialog/focus.d.ts +2 -0
  412. package/dist/types/components/dialog/index.d.ts +2 -0
  413. package/dist/types/components/dialog/step-dialog.d.ts +26 -0
  414. package/dist/types/components/display-options/display-options.d.ts +55 -0
  415. package/dist/types/components/display-options/docs.d.ts +14 -0
  416. package/dist/types/components/display-options/index.d.ts +1 -0
  417. package/dist/types/components/empty/docs.d.ts +12 -0
  418. package/dist/types/components/empty/empty.d.ts +29 -0
  419. package/dist/types/components/empty/index.d.ts +1 -0
  420. package/dist/types/components/field/docs.d.ts +20 -0
  421. package/dist/types/components/field/field.d.ts +78 -0
  422. package/dist/types/components/field/index.d.ts +1 -0
  423. package/dist/types/components/filter-chip/docs.d.ts +19 -0
  424. package/dist/types/components/filter-chip/filter-chip.d.ts +37 -0
  425. package/dist/types/components/filter-chip/index.d.ts +1 -0
  426. package/dist/types/components/filter-row/docs.d.ts +11 -0
  427. package/dist/types/components/filter-row/filter-row.d.ts +23 -0
  428. package/dist/types/components/filter-row/index.d.ts +1 -0
  429. package/dist/types/components/flow/docs.d.ts +12 -0
  430. package/dist/types/components/flow/flow.d.ts +34 -0
  431. package/dist/types/components/flow/index.d.ts +1 -0
  432. package/dist/types/components/heading/docs.d.ts +10 -0
  433. package/dist/types/components/heading/heading.d.ts +30 -0
  434. package/dist/types/components/heading/index.d.ts +1 -0
  435. package/dist/types/components/icon/docs.d.ts +10 -0
  436. package/dist/types/components/icon/icon.d.ts +37 -0
  437. package/dist/types/components/icon/index.d.ts +2 -0
  438. package/dist/types/components/icon-button/docs.d.ts +17 -0
  439. package/dist/types/components/icon-button/icon-button.d.ts +75 -0
  440. package/dist/types/components/icon-button/index.d.ts +1 -0
  441. package/dist/types/components/input/decimal.d.ts +11 -0
  442. package/dist/types/components/input/docs.d.ts +149 -0
  443. package/dist/types/components/input/index.d.ts +8 -0
  444. package/dist/types/components/input/input-group.d.ts +55 -0
  445. package/dist/types/components/input/input.d.ts +45 -0
  446. package/dist/types/components/input/number-input.d.ts +28 -0
  447. package/dist/types/components/input/otp-input.d.ts +27 -0
  448. package/dist/types/components/input/sensitive-input.d.ts +21 -0
  449. package/dist/types/components/input/tag-input.d.ts +27 -0
  450. package/dist/types/components/input/textarea.d.ts +25 -0
  451. package/dist/types/components/kaeso/conversation.d.ts +58 -0
  452. package/dist/types/components/kaeso/docs.d.ts +139 -0
  453. package/dist/types/components/kaeso/effective-access.d.ts +21 -0
  454. package/dist/types/components/kaeso/identity.d.ts +70 -0
  455. package/dist/types/components/kaeso/index.d.ts +8 -0
  456. package/dist/types/components/kaeso/moments.d.ts +30 -0
  457. package/dist/types/components/kaeso/provider-marks.d.ts +1 -0
  458. package/dist/types/components/kaeso/rights-logic.d.ts +13 -0
  459. package/dist/types/components/kaeso/rights.d.ts +69 -0
  460. package/dist/types/components/kaeso/role-picker.d.ts +38 -0
  461. package/dist/types/components/kaeso/usage.d.ts +35 -0
  462. package/dist/types/components/kbd/docs.d.ts +16 -0
  463. package/dist/types/components/kbd/index.d.ts +1 -0
  464. package/dist/types/components/kbd/kbd.d.ts +31 -0
  465. package/dist/types/components/key-value/docs.d.ts +10 -0
  466. package/dist/types/components/key-value/index.d.ts +1 -0
  467. package/dist/types/components/key-value/key-value.d.ts +50 -0
  468. package/dist/types/components/label/docs.d.ts +10 -0
  469. package/dist/types/components/label/index.d.ts +1 -0
  470. package/dist/types/components/label/label.d.ts +22 -0
  471. package/dist/types/components/layout/docs.d.ts +30 -0
  472. package/dist/types/components/layout/index.d.ts +1 -0
  473. package/dist/types/components/layout/layout.d.ts +100 -0
  474. package/dist/types/components/link/docs.d.ts +11 -0
  475. package/dist/types/components/link/index.d.ts +1 -0
  476. package/dist/types/components/link/link.d.ts +27 -0
  477. package/dist/types/components/list/docs.d.ts +75 -0
  478. package/dist/types/components/list/index.d.ts +1 -0
  479. package/dist/types/components/list/list.d.ts +119 -0
  480. package/dist/types/components/list/row-checkbox.d.ts +5 -0
  481. package/dist/types/components/list/virtual-rows.d.ts +10 -0
  482. package/dist/types/components/loader/docs.d.ts +21 -0
  483. package/dist/types/components/loader/index.d.ts +2 -0
  484. package/dist/types/components/loader/loader.d.ts +35 -0
  485. package/dist/types/components/loader/status.d.ts +55 -0
  486. package/dist/types/components/logo/docs.d.ts +10 -0
  487. package/dist/types/components/logo/index.d.ts +1 -0
  488. package/dist/types/components/logo/logo.d.ts +59 -0
  489. package/dist/types/components/logo/paths.d.ts +16 -0
  490. package/dist/types/components/markdown/docs.d.ts +15 -0
  491. package/dist/types/components/markdown/index.d.ts +1 -0
  492. package/dist/types/components/markdown/markdown.d.ts +54 -0
  493. package/dist/types/components/menu/docs.d.ts +19 -0
  494. package/dist/types/components/menu/index.d.ts +2 -0
  495. package/dist/types/components/menu/menu.d.ts +213 -0
  496. package/dist/types/components/menu/styles.d.ts +7 -0
  497. package/dist/types/components/meter/docs.d.ts +23 -0
  498. package/dist/types/components/meter/index.d.ts +1 -0
  499. package/dist/types/components/meter/meter.d.ts +51 -0
  500. package/dist/types/components/page-header/docs.d.ts +12 -0
  501. package/dist/types/components/page-header/index.d.ts +1 -0
  502. package/dist/types/components/page-header/page-header.d.ts +22 -0
  503. package/dist/types/components/pagination/docs.d.ts +17 -0
  504. package/dist/types/components/pagination/index.d.ts +1 -0
  505. package/dist/types/components/pagination/pagination.d.ts +33 -0
  506. package/dist/types/components/playground/compare-grid.d.ts +41 -0
  507. package/dist/types/components/playground/composer.d.ts +40 -0
  508. package/dist/types/components/playground/docs.d.ts +141 -0
  509. package/dist/types/components/playground/index.d.ts +7 -0
  510. package/dist/types/components/playground/model-picker.d.ts +37 -0
  511. package/dist/types/components/playground/parameter-panel.d.ts +52 -0
  512. package/dist/types/components/playground/prompt-suggestions.d.ts +23 -0
  513. package/dist/types/components/playground/response-metrics.d.ts +30 -0
  514. package/dist/types/components/playground/response-view.d.ts +55 -0
  515. package/dist/types/components/popover/docs.d.ts +21 -0
  516. package/dist/types/components/popover/hover-card.d.ts +24 -0
  517. package/dist/types/components/popover/index.d.ts +2 -0
  518. package/dist/types/components/popover/popover-root.d.ts +24 -0
  519. package/dist/types/components/popover/popover.d.ts +40 -0
  520. package/dist/types/components/portal/docs.d.ts +9 -0
  521. package/dist/types/components/portal/index.d.ts +1 -0
  522. package/dist/types/components/portal/portal.d.ts +11 -0
  523. package/dist/types/components/qr-code/docs.d.ts +10 -0
  524. package/dist/types/components/qr-code/index.d.ts +1 -0
  525. package/dist/types/components/qr-code/qr-code.d.ts +22 -0
  526. package/dist/types/components/radio/docs.d.ts +42 -0
  527. package/dist/types/components/radio/index.d.ts +1 -0
  528. package/dist/types/components/radio/labelled.d.ts +13 -0
  529. package/dist/types/components/radio/radio.d.ts +51 -0
  530. package/dist/types/components/scroll-area/docs.d.ts +11 -0
  531. package/dist/types/components/scroll-area/index.d.ts +1 -0
  532. package/dist/types/components/scroll-area/scroll-area.d.ts +28 -0
  533. package/dist/types/components/section/docs.d.ts +28 -0
  534. package/dist/types/components/section/index.d.ts +1 -0
  535. package/dist/types/components/section/section.d.ts +37 -0
  536. package/dist/types/components/segmented/docs.d.ts +15 -0
  537. package/dist/types/components/segmented/index.d.ts +1 -0
  538. package/dist/types/components/segmented/segmented.d.ts +37 -0
  539. package/dist/types/components/select/docs.d.ts +32 -0
  540. package/dist/types/components/select/index.d.ts +1 -0
  541. package/dist/types/components/select/select.d.ts +82 -0
  542. package/dist/types/components/separator/docs.d.ts +10 -0
  543. package/dist/types/components/separator/index.d.ts +1 -0
  544. package/dist/types/components/separator/separator.d.ts +33 -0
  545. package/dist/types/components/settings/docs.d.ts +32 -0
  546. package/dist/types/components/settings/index.d.ts +1 -0
  547. package/dist/types/components/settings/settings.d.ts +45 -0
  548. package/dist/types/components/sheet/docs.d.ts +20 -0
  549. package/dist/types/components/sheet/index.d.ts +1 -0
  550. package/dist/types/components/sheet/sheet.d.ts +51 -0
  551. package/dist/types/components/sidebar/docs.d.ts +20 -0
  552. package/dist/types/components/sidebar/index.d.ts +1 -0
  553. package/dist/types/components/sidebar/sidebar-menu.d.ts +16 -0
  554. package/dist/types/components/sidebar/sidebar.d.ts +178 -0
  555. package/dist/types/components/skeleton/docs.d.ts +14 -0
  556. package/dist/types/components/skeleton/index.d.ts +1 -0
  557. package/dist/types/components/skeleton/skeleton.d.ts +31 -0
  558. package/dist/types/components/slider/docs.d.ts +20 -0
  559. package/dist/types/components/slider/index.d.ts +1 -0
  560. package/dist/types/components/slider/slider.d.ts +29 -0
  561. package/dist/types/components/stat/docs.d.ts +35 -0
  562. package/dist/types/components/stat/index.d.ts +1 -0
  563. package/dist/types/components/stat/stat.d.ts +68 -0
  564. package/dist/types/components/status-dot/docs.d.ts +18 -0
  565. package/dist/types/components/status-dot/index.d.ts +1 -0
  566. package/dist/types/components/status-dot/status-dot.d.ts +36 -0
  567. package/dist/types/components/surface/docs.d.ts +8 -0
  568. package/dist/types/components/surface/index.d.ts +1 -0
  569. package/dist/types/components/surface/surface.d.ts +44 -0
  570. package/dist/types/components/swap-text/docs.d.ts +10 -0
  571. package/dist/types/components/swap-text/index.d.ts +1 -0
  572. package/dist/types/components/swap-text/swap-text.d.ts +22 -0
  573. package/dist/types/components/switch/docs.d.ts +21 -0
  574. package/dist/types/components/switch/index.d.ts +1 -0
  575. package/dist/types/components/switch/switch.d.ts +39 -0
  576. package/dist/types/components/table/docs.d.ts +6 -0
  577. package/dist/types/components/table/index.d.ts +1 -0
  578. package/dist/types/components/table/table.d.ts +30 -0
  579. package/dist/types/components/tabs/docs.d.ts +22 -0
  580. package/dist/types/components/tabs/index.d.ts +1 -0
  581. package/dist/types/components/tabs/tabs.d.ts +61 -0
  582. package/dist/types/components/tag/docs.d.ts +30 -0
  583. package/dist/types/components/tag/index.d.ts +1 -0
  584. package/dist/types/components/tag/tag.d.ts +63 -0
  585. package/dist/types/components/text/docs.d.ts +15 -0
  586. package/dist/types/components/text/index.d.ts +1 -0
  587. package/dist/types/components/text/text.d.ts +111 -0
  588. package/dist/types/components/theme-menu/docs.d.ts +9 -0
  589. package/dist/types/components/theme-menu/index.d.ts +1 -0
  590. package/dist/types/components/theme-menu/theme-menu.d.ts +22 -0
  591. package/dist/types/components/timeline/docs.d.ts +8 -0
  592. package/dist/types/components/timeline/index.d.ts +1 -0
  593. package/dist/types/components/timeline/timeline.d.ts +41 -0
  594. package/dist/types/components/toast/docs.d.ts +26 -0
  595. package/dist/types/components/toast/index.d.ts +1 -0
  596. package/dist/types/components/toast/toast.d.ts +91 -0
  597. package/dist/types/components/toc/docs.d.ts +10 -0
  598. package/dist/types/components/toc/index.d.ts +1 -0
  599. package/dist/types/components/toc/toc.d.ts +27 -0
  600. package/dist/types/components/toolbar/docs.d.ts +9 -0
  601. package/dist/types/components/toolbar/index.d.ts +1 -0
  602. package/dist/types/components/toolbar/toolbar.d.ts +28 -0
  603. package/dist/types/components/tooltip/docs.d.ts +33 -0
  604. package/dist/types/components/tooltip/index.d.ts +2 -0
  605. package/dist/types/components/tooltip/tooltip-provider.d.ts +8 -0
  606. package/dist/types/components/tooltip/tooltip-root.d.ts +9 -0
  607. package/dist/types/components/tooltip/tooltip.d.ts +60 -0
  608. package/dist/types/components/tooltip/trigger-props.d.ts +23 -0
  609. package/dist/types/components/visually-hidden/docs.d.ts +6 -0
  610. package/dist/types/components/visually-hidden/index.d.ts +1 -0
  611. package/dist/types/components/visually-hidden/visually-hidden.d.ts +4 -0
  612. package/dist/types/format/index.d.ts +26 -0
  613. package/dist/types/hooks/scroll-parent.d.ts +1 -0
  614. package/dist/types/hooks/use-copy.d.ts +4 -0
  615. package/dist/types/hooks/use-indicator.d.ts +9 -0
  616. package/dist/types/hooks/use-layout-width.d.ts +3 -0
  617. package/dist/types/hooks/use-scroll-margin.d.ts +2 -0
  618. package/dist/types/hooks/use-stored-state.d.ts +1 -0
  619. package/dist/types/hooks/use-truncated.d.ts +2 -0
  620. package/dist/types/i18n/context.d.ts +11 -0
  621. package/dist/types/i18n/index.d.ts +5 -0
  622. package/dist/types/i18n/locale-names.d.ts +2 -0
  623. package/dist/types/i18n/locale-tags.d.ts +4 -0
  624. package/dist/types/i18n/locales/de.d.ts +2 -0
  625. package/dist/types/i18n/locales/en.d.ts +2 -0
  626. package/dist/types/i18n/locales/zh-CN.d.ts +2 -0
  627. package/dist/types/i18n/message.d.ts +2 -0
  628. package/dist/types/i18n/provider.d.ts +10 -0
  629. package/dist/types/icons/groups.d.ts +8 -0
  630. package/dist/types/icons/vocabulary.d.ts +413 -0
  631. package/dist/types/index.d.ts +79 -0
  632. package/dist/types/theme/index.d.ts +1 -0
  633. package/dist/types/theme/theme-provider.d.ts +22 -0
  634. package/dist/types/utils/arrow-focus.d.ts +2 -0
  635. package/dist/types/utils/cn.d.ts +370 -0
  636. package/dist/types/utils/dev.d.ts +4 -0
  637. package/dist/types/utils/field-press.d.ts +2 -0
  638. package/dist/types/utils/index.d.ts +8 -0
  639. package/dist/types/utils/inset.d.ts +6 -0
  640. package/dist/types/utils/lazy-module.d.ts +8 -0
  641. package/dist/types/utils/link-provider.d.ts +15 -0
  642. package/dist/types/utils/portal-context.d.ts +10 -0
  643. package/dist/types/utils/restore-focus.d.ts +4 -0
  644. package/dist/types/utils/safe-href.d.ts +1 -0
  645. package/dist/types/utils/tone.d.ts +2 -0
  646. package/dist/types/utils/use-controllable.d.ts +1 -0
  647. package/dist/types/utils/variants.d.ts +5 -0
  648. package/dist/types/utils/when-idle.d.ts +1 -0
  649. package/dist/utils.js +9 -0
  650. package/foundations/accessibility.md +41 -0
  651. package/foundations/color.md +40 -0
  652. package/foundations/elevation.md +23 -0
  653. package/foundations/icons.md +14 -0
  654. package/foundations/motion.md +39 -0
  655. package/foundations/psychology.md +36 -0
  656. package/foundations/shape.md +41 -0
  657. package/foundations/tokens.md +24 -0
  658. package/foundations/typography.md +35 -0
  659. package/foundations/writing.md +39 -0
  660. package/package.json +144 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playground.js","names":["__icon_Add01Icon","__icon_ArrowLeft01Icon","__icon_ArrowRight01Icon","__icon_Cancel01Icon","BaseCollapsible","__icon_ArrowRight01Icon","_Fragment","_Fragment","__icon_SlidersHorizontalIcon","cn","useUiText","Icon","useTruncated","Button","IconButton","NumberInput","Textarea","Slider","Segmented","KAESO_SELECT_VARIANTS","Select","Popover","ModelLabel","providerName","Markdown","Fragment$1","KAESO_COMPOSER_VARIANTS","KAESO_COMPOSER_DEFAULT_VARIANTS","COARSE","subscribeCoarse","q","onChange","isCoarse","useCoarsePointer","useSyncExternalStore","Composer","placeholderProp","ariaLabelProp","submitLabelProp","stopLabelProp","force","t","placeholder","ariaLabel","submitLabel","stopLabel","text","setText","useControllable","value","defaultValue","onValueChange","box","useRef","minRows","size","grow","useCallback","el","maxRows","empty","canSend","disabled","streaming","loading","send","onSubmit","clearOnSubmit","coarse","enterSends","submitOn","onKeyDown","className","ref","name","actions","onStop","KAESO_COMPARE_GRID_VARIANTS","KAESO_COMPARE_GRID_DEFAULT_VARIANTS","ColumnContext","Root","columns","Children","children","isValidElement","count","scroller","current","setCurrent","useState","shown","active","target","changed","onActiveChange","scrollTo","i","reduce","go","next","before","fade","end","ro","onScroll","first","release","full","max","add","onAdd","Add01Icon","addLabel","label","ArrowLeft01Icon","ArrowRight01Icon","col","useStickToEnd","body","content","pinned","useEffect","inner","enabled","last","near","Column","useContext","stickToEnd","index","divider","header","onRemove","Cancel01Icon","removeLabel","footer","CompareGrid","KAESO_RESPONSE_VIEW_VARIANTS","KAESO_RESPONSE_VIEW_DEFAULT_VARIANTS","lastLine","lines","l","Thinking","preview","live","title","duration","formatDuration","Collapsible","open","defaultOpen","onOpenChange","o","ResponseView","announce","useId","status","hasText","hasReasoning","reasoning","thinking","reasoningDuration","reasoningOpen","defaultReasoningOpen","onReasoningOpenChange","onRetry","CLAMP","UserMessage","showAll","showLess","all","setAll","clamped","maxLines","a","Thread","KAESO_RESPONSE_METRICS_VARIANTS","KAESO_RESPONSE_METRICS_DEFAULT_VARIANTS","formatLatency","ms","useElapsed","now","setNow","from","id","known","n","Item","width","ResponseMetrics","elapsed","startedAt","tokens","inputTokens","outputTokens","hasCost","cost","line","timeToFirstToken","reasoningTokens","show","dash","formatNumber","formatUSD","KAESO_PARAMETER_PANEL_VARIANTS","KAESO_PARAMETER_PANEL_DEFAULT_VARIANTS","efforts","SliderRow","digits","unset","v","min","ParameterPanel","set","patch","shownEfforts","layout","instructions","sampling","defaults","maxOutputTokensLimit","ParameterPopover","titleProp","panel","trigger","SlidersHorizontalIcon","SELECT_APPEARANCE","KAESO_MODEL_PICKER_VARIANTS","KAESO_MODEL_PICKER_DEFAULT_VARIANTS","ModelPicker","grouped","groupByProvider","options","sorted","b","appearance","KAESO_PROMPT_SUGGESTIONS_VARIANTS","KAESO_PROMPT_SUGGESTIONS_DEFAULT_VARIANTS","PromptSuggestions","align","suggestions","onSelect","s"],"sources":["../../src/components/playground/composer.tsx","../../src/components/playground/compare-grid.tsx","../../src/components/playground/response-view.tsx","../../src/components/playground/response-metrics.tsx","../../src/components/playground/parameter-panel.tsx","../../src/components/playground/model-picker.tsx","../../src/components/playground/prompt-suggestions.tsx"],"sourcesContent":["import { forwardRef, useCallback, useLayoutEffect, useRef, useSyncExternalStore, type FormEvent, type KeyboardEvent, type ReactNode } from \"react\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useControllable } from \"../../utils/use-controllable.js\";\nimport { Button } from \"../button/button.js\";\n\nexport const KAESO_COMPOSER_VARIANTS = {\n size: {\n md: { classes: \"rounded-frame\" },\n sm: { classes: \"rounded-frame\" },\n },\n} as const;\nexport const KAESO_COMPOSER_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nconst COARSE = \"(pointer: coarse)\";\nfunction subscribeCoarse(onChange: () => void) {\n if (typeof window === \"undefined\" || !window.matchMedia) return () => {};\n const q = window.matchMedia(COARSE);\n q.addEventListener?.(\"change\", onChange);\n return () => q.removeEventListener?.(\"change\", onChange);\n}\nconst isCoarse = () => typeof window !== \"undefined\" && !!window.matchMedia?.(COARSE).matches;\nconst useCoarsePointer = () => useSyncExternalStore(subscribeCoarse, isCoarse, () => false);\n\nexport interface ComposerProps {\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n onSubmit?: ((value: string) => void) | undefined;\n submitOn?: \"enter\" | \"mod-enter\" | undefined;\n onStop?: (() => void) | undefined;\n streaming?: boolean | undefined;\n loading?: boolean | undefined;\n disabled?: boolean | undefined;\n clearOnSubmit?: boolean | undefined;\n placeholder?: string | undefined;\n \"aria-label\"?: string | undefined;\n maxRows?: number | undefined;\n size?: keyof typeof KAESO_COMPOSER_VARIANTS.size | undefined;\n actions?: ReactNode | undefined;\n submitLabel?: string | undefined;\n stopLabel?: string | undefined;\n autoFocus?: boolean | undefined;\n name?: string | undefined;\n \"data-force\"?: string | undefined;\n className?: string | undefined;\n}\n\nexport const Composer = /* @__PURE__ */ forwardRef<HTMLTextAreaElement, ComposerProps>(function Composer(\n {\n value,\n defaultValue = \"\",\n onValueChange,\n onSubmit,\n onStop,\n submitOn = \"enter\",\n streaming = false,\n loading = false,\n disabled = false,\n clearOnSubmit = true,\n placeholder: placeholderProp,\n \"aria-label\": ariaLabelProp,\n maxRows = 10,\n size = \"md\",\n actions,\n submitLabel: submitLabelProp,\n stopLabel: stopLabelProp,\n autoFocus,\n name,\n \"data-force\": force,\n className,\n },\n ref,\n) {\n const t = useUiText();\n const placeholder = placeholderProp ?? t(\"composer.placeholder\", \"Write a prompt\");\n const ariaLabel = ariaLabelProp ?? t(\"composer.prompt\", \"Prompt\");\n const submitLabel = submitLabelProp ?? t(\"composer.send\", \"Send\");\n const stopLabel = stopLabelProp ?? t(\"composer.stop\", \"Stop\");\n const [text, setText] = useControllable(value, defaultValue, onValueChange);\n\n const box = useRef<HTMLTextAreaElement | null>(null);\n const minRows = size === \"sm\" ? 1 : 2;\n const grow = useCallback(() => {\n const el = box.current;\n if (!el) return;\n el.style.height = \"auto\";\n el.style.height = `${Math.min(Math.max(el.scrollHeight, minRows * 20 + 16), maxRows * 20 + 16)}px`;\n }, [maxRows, minRows]);\n useLayoutEffect(grow, [grow, text]);\n\n const empty = text.trim() === \"\";\n const canSend = !disabled && !streaming && !loading && !empty;\n const send = () => {\n if (!canSend) return;\n onSubmit?.(text);\n if (clearOnSubmit && value === undefined) setText(\"\");\n };\n const coarse = useCoarsePointer();\n const enterSends = submitOn === \"enter\" && !coarse;\n const onKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key !== \"Enter\") return;\n if (e.nativeEvent.isComposing || e.keyCode === 229) return;\n const mod = e.metaKey || e.ctrlKey;\n if (!mod && (!enterSends || e.shiftKey || e.altKey)) return;\n e.preventDefault();\n send();\n };\n const onFormSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n send();\n };\n\n return (\n <form\n onSubmit={onFormSubmit}\n onMouseDown={(e) => {\n if (e.target === e.currentTarget && !disabled) {\n e.preventDefault();\n box.current?.focus();\n }\n }}\n {...(force ? { \"data-force\": force } : {})}\n {...(disabled ? { \"data-disabled\": \"\" } : {})}\n className={cn(\n \"flex min-w-0 cursor-text flex-col material-composer transition-control\",\n KAESO_COMPOSER_VARIANTS.size[size].classes,\n disabled && \"cursor-not-allowed\",\n className,\n )}\n >\n <textarea\n ref={(el) => {\n box.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n rows={minRows}\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={onKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n aria-label={ariaLabel}\n aria-keyshortcuts={enterSends ? \"Enter Meta+Enter Control+Enter\" : \"Meta+Enter Control+Enter\"}\n {...(enterSends ? { enterKeyHint: \"send\" as const } : {})}\n autoFocus={autoFocus}\n {...(name ? { name } : {})}\n className=\"block w-full min-w-0 resize-none bg-transparent px-16 pt-12 pb-4 text-body text-fg outline-none scrollbar-quiet placeholder:text-fg-tertiary disabled:cursor-not-allowed disabled:text-fg-disabled\"\n />\n <div className=\"flex min-w-0 items-center gap-8 p-8 pt-4\">\n <div className=\"flex min-w-0 flex-1 items-center gap-4\">{actions}</div>\n {streaming ? (\n <Button type=\"button\" size=\"sm\" variant=\"secondary\" reserveLabels={[submitLabel, stopLabel]} onClick={() => onStop?.()} disabled={disabled}>\n {stopLabel}\n </Button>\n ) : (\n <Button type=\"submit\" size=\"sm\" variant=\"primary\" reserveLabels={[submitLabel, stopLabel]} loading={loading} disabled={!canSend && !loading}>\n {submitLabel}\n </Button>\n )}\n </div>\n </form>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Composer.displayName = \"Composer\";\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Add01Icon as __icon_Add01Icon, ArrowLeft01Icon as __icon_ArrowLeft01Icon, ArrowRight01Icon as __icon_ArrowRight01Icon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_COMPARE_GRID_VARIANTS = {\n divider: {\n hairline: { classes: \"hairline-l\" },\n none: { classes: \"\" },\n },\n} as const;\nexport const KAESO_COMPARE_GRID_DEFAULT_VARIANTS = { divider: \"hairline\" } as const;\n\ninterface GridContext {\n index: number;\n count: number;\n divider: keyof typeof KAESO_COMPARE_GRID_VARIANTS.divider;\n add: ReactNode;\n}\nconst ColumnContext = /* @__PURE__ */ createContext<GridContext>({ index: 0, count: 1, divider: \"hairline\", add: null });\n\nexport interface CompareGridProps {\n children: ReactNode;\n \"aria-label\": string;\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n max?: number | undefined;\n active?: number | undefined;\n onActiveChange?: ((index: number) => void) | undefined;\n divider?: keyof typeof KAESO_COMPARE_GRID_VARIANTS.divider | undefined;\n className?: string | undefined;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, CompareGridProps>(function CompareGrid(\n { children, \"aria-label\": ariaLabel, onAdd, addLabel, max = 4, active, onActiveChange, divider = \"hairline\", className },\n ref,\n) {\n const t = useUiText();\n const columns = Children.toArray(children).filter(isValidElement) as ReactElement<CompareColumnProps>[];\n const count = columns.length;\n const scroller = useRef<HTMLDivElement | null>(null);\n const [current, setCurrent] = useState(0);\n const shown = Math.min(active ?? current, Math.max(0, count - 1));\n const target = useRef<number | null>(null);\n const changed = useRef(onActiveChange);\n useLayoutEffect(() => {\n changed.current = onActiveChange;\n });\n\n const scrollTo = useCallback((i: number) => {\n const el = scroller.current?.children[i] as HTMLElement | undefined;\n const box = scroller.current;\n if (!el || !box) return;\n target.current = box.scrollLeft === el.offsetLeft ? null : i;\n const reduce = typeof matchMedia === \"function\" && matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n box.scrollTo({ left: el.offsetLeft, behavior: reduce ? \"auto\" : \"smooth\" });\n }, []);\n const go = (i: number) => {\n const next = Math.max(0, Math.min(count - 1, i));\n setCurrent(next);\n onActiveChange?.(next);\n scrollTo(next);\n };\n useEffect(() => {\n if (active !== undefined) scrollTo(active);\n }, [active, scrollTo]);\n const before = useRef(count);\n useLayoutEffect(() => {\n if (count > before.current) {\n setCurrent(count - 1);\n changed.current?.(count - 1);\n scrollTo(count - 1);\n }\n before.current = count;\n }, [count, scrollTo]);\n\n const fade = useCallback(() => {\n const box = scroller.current;\n if (!box) return;\n const end = box.scrollWidth - box.clientWidth - box.scrollLeft;\n box.style.setProperty(\"--k-fade-start\", box.scrollLeft > 1 ? \"24px\" : \"0px\");\n box.style.setProperty(\"--k-fade-end\", end > 1 ? \"24px\" : \"0px\");\n }, []);\n useLayoutEffect(() => {\n const box = scroller.current;\n if (!box || typeof ResizeObserver === \"undefined\") return;\n fade();\n const ro = new ResizeObserver(fade);\n ro.observe(box);\n return () => ro.disconnect();\n }, [fade, count]);\n\n const onScroll = () => {\n fade();\n const box = scroller.current;\n const first = box?.children[0] as HTMLElement | undefined;\n if (!box || !first || !first.offsetWidth) return;\n const i = Math.max(0, Math.min(count - 1, Math.round(box.scrollLeft / first.offsetWidth)));\n if (target.current !== null) {\n if (i !== target.current) return;\n target.current = null;\n }\n if (i !== shown) {\n setCurrent(i);\n onActiveChange?.(i);\n }\n };\n\n const release = () => {\n target.current = null;\n };\n\n const full = count >= max;\n const add = onAdd ? (\n <IconButton\n icon={__icon_Add01Icon}\n aria-label={addLabel ?? t(\"compareGrid.addModel\", \"Add model\")}\n size=\"sm\"\n onClick={onAdd}\n disabled={full}\n {...(full ? { disabledReason: t(\"compareGrid.compareUpTo\", \"Compare up to {max} at once\", { max }) } : {})}\n />\n ) : null;\n const label = columns[shown]?.props.label ?? \"\";\n\n return (\n <div ref={ref} role=\"group\" aria-label={ariaLabel} className={cn(\"flex h-full min-h-0 min-w-0 flex-col\", className)}>\n {count > 1 || onAdd ? (\n <div className=\"flex h-44 shrink-0 items-center gap-4 px-8 hairline-b md:hidden\">\n <IconButton\n icon={__icon_ArrowLeft01Icon}\n aria-label={t(\"compareGrid.previousColumn\", \"Previous column\")}\n size=\"sm\"\n disabled={shown === 0}\n onClick={() => go(shown - 1)}\n />\n <span aria-live=\"polite\" className=\"min-w-0 flex-1 truncate text-center text-small text-fg-secondary tabular\">\n <span className=\"sr-only\">{t(\"compareGrid.columnName\", \"{label}, \", { label })}</span>\n {t(\"compareGrid.position\", \"{index} of {count}\", { index: shown + 1, count })}\n </span>\n <IconButton\n icon={__icon_ArrowRight01Icon}\n aria-label={t(\"compareGrid.nextColumn\", \"Next column\")}\n size=\"sm\"\n disabled={shown >= count - 1}\n onClick={() => go(shown + 1)}\n />\n {add}\n </div>\n ) : null}\n <div\n ref={scroller}\n onScroll={onScroll}\n onPointerDown={release}\n onWheel={release}\n onTouchStart={release}\n onKeyDown={release}\n className=\"relative min-h-0 min-w-0 flex-1 compare-grid\"\n >\n {columns.map((col, i) => (\n <ColumnContext.Provider key={col.key ?? i} value={{ index: i, count, divider, add: i === count - 1 ? add : null }}>\n {col}\n </ColumnContext.Provider>\n ))}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"CompareGrid\";\n\nexport interface CompareColumnProps {\n label: string;\n header: ReactNode;\n actions?: ReactNode | undefined;\n children?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n onRemove?: (() => void) | undefined;\n removeLabel?: string | undefined;\n stickToEnd?: boolean | undefined;\n className?: string | undefined;\n}\n\nfunction useStickToEnd(enabled: boolean) {\n const body = useRef<HTMLDivElement | null>(null);\n const content = useRef<HTMLDivElement | null>(null);\n const pinned = useRef(true);\n useEffect(() => {\n const el = body.current;\n const inner = content.current;\n if (!enabled || !el || !inner || typeof ResizeObserver === \"undefined\") return;\n let last = el.scrollTop;\n const fade = () => {\n el.style.setProperty(\"--scroll-area-overflow-y-start\", `${Math.max(0, el.scrollTop)}px`);\n el.style.setProperty(\"--scroll-area-overflow-y-end\", `${Math.max(0, el.scrollHeight - el.clientHeight - el.scrollTop)}px`);\n };\n const onScroll = () => {\n fade();\n const near = el.scrollHeight - el.scrollTop - el.clientHeight <= 24;\n pinned.current = el.scrollTop < last - 1 ? near : pinned.current || near;\n last = el.scrollTop;\n };\n const ro = new ResizeObserver(() => {\n if (pinned.current) {\n el.scrollTop = el.scrollHeight;\n last = el.scrollTop;\n }\n fade();\n });\n el.addEventListener(\"scroll\", onScroll, { passive: true });\n ro.observe(inner);\n ro.observe(el);\n return () => {\n el.removeEventListener(\"scroll\", onScroll);\n ro.disconnect();\n };\n }, [enabled]);\n return { body, content };\n}\n\nconst Column = /* @__PURE__ */ forwardRef<HTMLElement, CompareColumnProps>(function CompareGridColumn(\n { label, header, actions, children, footer, onRemove, removeLabel, stickToEnd = true, className },\n ref,\n) {\n const t = useUiText();\n const { index, count, divider, add } = useContext(ColumnContext);\n const { body, content } = useStickToEnd(stickToEnd);\n return (\n <section\n ref={ref}\n aria-label={label}\n className={cn(\n \"row-span-3 grid min-h-0 min-w-0 snap-start snap-always grid-rows-subgrid\",\n index > 0 && KAESO_COMPARE_GRID_VARIANTS.divider[divider].classes,\n className,\n )}\n >\n <header className=\"flex h-52 min-w-0 items-center gap-4 pr-10 pl-8 hairline-b\">\n <div className=\"flex min-w-0 flex-1 items-center\">{header}</div>\n {actions}\n {onRemove && count > 1 && (\n <IconButton icon={__icon_Cancel01Icon} aria-label={removeLabel ?? t(\"compareGrid.remove\", \"Remove {label}\", { label })} size=\"sm\" onClick={onRemove} />\n )}\n {add && <span className=\"hidden md:contents\">{add}</span>}\n </header>\n <div\n ref={body}\n tabIndex={0}\n aria-label={t(\"compareGrid.thread\", \"{label} thread\", { label })}\n role=\"region\"\n className=\"relative min-h-0 overflow-y-auto overscroll-contain scrollbar-quiet scroll-fade-y focus-ring-inset\"\n >\n <div ref={content} className=\"flex min-h-full flex-col px-16 pt-16 pb-24\">\n {children}\n </div>\n </div>\n {footer !== undefined && footer !== null && <footer className=\"flex min-h-44 min-w-0 items-center px-16 pt-8 pb-12\">{footer}</footer>}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Column.displayName = \"CompareGrid.Column\";\n\nexport const CompareGrid = /* @__PURE__ */ Object.assign(Root, { Column });\n","import { forwardRef, useId, useRef, useState, type ReactNode } from \"react\";\nimport { Collapsible as BaseCollapsible } from \"@base-ui/react/collapsible\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { formatDuration } from \"../../format/index.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Button } from \"../button/button.js\";\nimport { Markdown } from \"../markdown/markdown.js\";\nimport { useTruncated } from \"../../hooks/use-truncated.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_RESPONSE_VIEW_VARIANTS = {\n status: {\n pending: { classes: \"\" },\n streaming: { classes: \"\" },\n done: { classes: \"\" },\n stopped: { classes: \"\" },\n error: { classes: \"\" },\n },\n} as const;\nexport const KAESO_RESPONSE_VIEW_DEFAULT_VARIANTS = { status: \"done\" } as const;\n\nexport type ResponseStatus = keyof typeof KAESO_RESPONSE_VIEW_VARIANTS.status;\n\nexport interface ResponseViewProps {\n text?: string | undefined;\n reasoning?: string | undefined;\n status?: ResponseStatus | undefined;\n reasoningDuration?: number | undefined;\n reasoningOpen?: boolean | undefined;\n defaultReasoningOpen?: boolean | undefined;\n onReasoningOpenChange?: ((open: boolean) => void) | undefined;\n onRetry?: (() => void) | undefined;\n footer?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n}\n\nfunction lastLine(text: string) {\n const lines = text.trim().split(\"\\n\");\n for (let i = lines.length - 1; i >= 0; i--) {\n const l = (lines[i] ?? \"\").replace(/[*_`#>]+/g, \"\").trim();\n if (l) return l;\n }\n return \"\";\n}\n\nfunction Thinking({\n text,\n live,\n duration,\n open,\n defaultOpen,\n onOpenChange,\n}: {\n text: string;\n live: boolean;\n duration: number | undefined;\n open: boolean | undefined;\n defaultOpen: boolean | undefined;\n onOpenChange: ((open: boolean) => void) | undefined;\n}) {\n const t = useUiText();\n const preview = live ? lastLine(text) : \"\";\n const title = live\n ? t(\"responseView.thinking\", \"Thinking\")\n : duration !== undefined\n ? t(\"responseView.thoughtFor\", \"Thought for {duration}\", { duration: formatDuration(duration) })\n : t(\"responseView.thinking\", \"Thinking\");\n return (\n <BaseCollapsible.Root\n {...(open !== undefined ? { open } : {})}\n {...(defaultOpen !== undefined ? { defaultOpen } : {})}\n {...(onOpenChange ? { onOpenChange: (o: boolean) => onOpenChange(o) } : {})}\n className=\"flex min-w-0 flex-col\"\n >\n <BaseCollapsible.Trigger className=\"group/think -mx-8 flex h-32 min-w-0 cursor-pointer items-center gap-6 rounded-pill px-8 text-left text-small text-fg-secondary transition-control hover:bg-fill-1 hover:text-fg focus-ring-inset\">\n <span className={cn(\"shrink-0 font-medium\", live && \"animate-pulse-quiet reduced:animate-none\")}>{title}</span>\n <Icon\n icon={__icon_ArrowRight01Icon}\n size=\"xs\"\n className=\"shrink-0 text-fg-tertiary transition-transform duration-180 ease-overlay group-data-panel-open/think:rotate-90\"\n />\n <span aria-hidden className=\"min-w-0 flex-1 truncate text-fg-tertiary group-data-panel-open/think:invisible\">\n {preview}\n </span>\n </BaseCollapsible.Trigger>\n <BaseCollapsible.Panel className=\"collapse-motion\">\n <div className=\"flex gap-12 pt-4 pb-8\">\n <span aria-hidden className=\"w-1 shrink-0 rounded-pill bg-line\" />\n <Markdown text={text} size=\"small\" tone=\"secondary\" streaming={live} collapseAfter={0} wrapCode className=\"min-w-0 flex-1\" />\n </div>\n </BaseCollapsible.Panel>\n </BaseCollapsible.Root>\n );\n}\n\nexport const ResponseView = /* @__PURE__ */ forwardRef<HTMLElement, ResponseViewProps>(function ResponseView(\n {\n text = \"\",\n reasoning,\n status = \"done\",\n reasoningDuration,\n reasoningOpen,\n defaultReasoningOpen,\n onReasoningOpenChange,\n onRetry,\n footer,\n \"aria-label\": ariaLabelProp,\n className,\n },\n ref,\n) {\n const t = useUiText();\n const ariaLabel = ariaLabelProp ?? t(\"responseView.response\", \"Response\");\n const announce = useId();\n const active = status === \"pending\" || status === \"streaming\";\n const hasText = text.trim() !== \"\";\n const hasReasoning = !!reasoning && reasoning.trim() !== \"\";\n const thinking = active && hasReasoning && !hasText;\n return (\n <article\n ref={ref}\n aria-label={ariaLabel}\n aria-busy={active || undefined}\n aria-describedby={announce}\n className={cn(\"flex min-w-0 flex-col gap-8\", className)}\n >\n {hasReasoning && (\n <Thinking\n text={reasoning}\n live={thinking}\n duration={reasoningDuration}\n open={reasoningOpen}\n defaultOpen={defaultReasoningOpen}\n onOpenChange={onReasoningOpenChange}\n />\n )}\n {hasText ? (\n <Markdown text={text} size=\"lg\" streaming={active} collapseAfter={0} wrapCode />\n ) : active && !hasReasoning ? (\n <div aria-hidden className=\"h-22\" />\n ) : null}\n {status === \"stopped\" && (\n <div className=\"flex min-h-24 flex-wrap items-center gap-x-12 gap-y-4\">\n <span className=\"text-small text-fg-tertiary\">\n {hasText ? t(\"responseView.stopped\", \"Stopped\") : t(\"responseView.stoppedBeforeResponse\", \"Stopped before a response\")}\n </span>\n {onRetry && (\n <Button size=\"xs\" variant=\"ghost\" onClick={onRetry}>\n {t(\"responseView.retry\", \"Retry\")}\n </Button>\n )}\n </div>\n )}\n {status === \"error\" && (\n <div className=\"flex min-h-24 flex-wrap items-center gap-x-12 gap-y-4\">\n <span className=\"text-small text-fg-secondary\">\n {hasText ? t(\"responseView.stoppedEarly\", \"The response stopped early\") : t(\"responseView.noResponse\", \"No response\")}\n </span>\n {onRetry && (\n <Button size=\"xs\" variant=\"secondary\" onClick={onRetry}>\n {t(\"responseView.retry\", \"Retry\")}\n </Button>\n )}\n </div>\n )}\n {status === \"done\" && !hasText && <span className=\"text-small text-fg-tertiary\">{t(\"responseView.noText\", \"The model returned no text\")}</span>}\n {footer}\n <span id={announce} className=\"sr-only\">\n {status === \"pending\"\n ? t(\"responseView.waiting\", \"Waiting for the response\")\n : status === \"streaming\"\n ? t(\"responseView.responding\", \"Responding\")\n : \"\"}\n </span>\n </article>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ResponseView.displayName = \"ResponseView\";\n\nexport interface UserMessageProps {\n children: ReactNode;\n maxLines?: 0 | 2 | 3 | 4 | 6 | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n}\n\nconst CLAMP = { 2: \"line-clamp-2\", 3: \"line-clamp-3\", 4: \"line-clamp-4\", 6: \"line-clamp-6\" } as const;\n\nexport const UserMessage = /* @__PURE__ */ forwardRef<HTMLDivElement, UserMessageProps>(function UserMessage(\n { children, maxLines = 4, \"aria-label\": ariaLabelProp, className },\n ref,\n) {\n const t = useUiText();\n const ariaLabel = ariaLabelProp ?? t(\"userMessage.prompt\", \"Prompt\");\n const showAll = t(\"userMessage.showAll\", \"Show all\");\n const showLess = t(\"userMessage.showLess\", \"Show less\");\n const [all, setAll] = useState(false);\n const text = useRef<HTMLParagraphElement | null>(null);\n const clamped = useTruncated(text, maxLines > 0 && !all);\n return (\n <div ref={ref} role=\"group\" aria-label={ariaLabel} className={cn(\"flex min-w-0 flex-col items-start gap-2\", className)}>\n <p\n ref={text}\n className={cn(\n \"max-w-prose min-w-0 text-body font-medium whitespace-pre-wrap wrap-break-word text-fg-secondary\",\n maxLines !== 0 && !all && CLAMP[maxLines],\n )}\n >\n {children}\n </p>\n {(clamped || all) && (\n <Button size=\"xs\" variant=\"link\" reserveLabels={[showAll, showLess]} onClick={() => setAll((a) => !a)} className=\"text-fg-tertiary\">\n {all ? showLess : showAll}\n </Button>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") UserMessage.displayName = \"UserMessage\";\n\nexport interface ThreadProps {\n children: ReactNode;\n className?: string | undefined;\n}\n\nexport const Thread = /* @__PURE__ */ forwardRef<HTMLDivElement, ThreadProps>(function Thread({ children, className }, ref) {\n return (\n <div ref={ref} className={cn(\"flex min-w-0 flex-col gap-32\", className)}>\n {children}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Thread.displayName = \"Thread\";\n","import { forwardRef, useEffect, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { formatDuration, formatNumber, formatUSD } from \"../../format/index.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_RESPONSE_METRICS_VARIANTS = {\n size: {\n sm: { classes: \"text-caption gap-x-12 gap-y-2\" },\n md: { classes: \"text-small gap-x-16 gap-y-4\" },\n },\n} as const;\nexport const KAESO_RESPONSE_METRICS_DEFAULT_VARIANTS = { size: \"sm\" } as const;\n\nexport interface ResponseMetricsProps {\n timeToFirstToken?: number | null | undefined;\n duration?: number | null | undefined;\n inputTokens?: number | null | undefined;\n outputTokens?: number | null | undefined;\n reasoningTokens?: number | null | undefined;\n reasoning?: boolean | undefined;\n live?: boolean | undefined;\n startedAt?: number | undefined;\n cost?: string | null | undefined;\n size?: keyof typeof KAESO_RESPONSE_METRICS_VARIANTS.size | undefined;\n className?: string | undefined;\n}\n\nexport function formatLatency(ms: number): string {\n if (!Number.isFinite(ms) || ms < 0) return \"—\";\n return formatDuration(ms, { precise: true });\n}\n\nfunction useElapsed(from: number | undefined) {\n const [now, setNow] = useState(() => Date.now());\n useEffect(() => {\n if (from === undefined) return;\n setNow(Date.now());\n const id = setInterval(() => setNow(Date.now()), 100);\n return () => clearInterval(id);\n }, [from]);\n return from === undefined ? undefined : Math.max(0, now - from);\n}\n\nfunction known(n: number | null | undefined): n is number {\n return typeof n === \"number\" && Number.isFinite(n);\n}\n\nfunction Item({ label, width, children, value }: { label: string; width: string; children: ReactNode; value?: string | undefined }) {\n return (\n <div className=\"flex items-baseline gap-4 whitespace-nowrap\">\n <dt className=\"text-fg-tertiary\">{label}</dt>\n <dd className={cn(\"text-fg-secondary tabular\", width)} {...(value ? { \"aria-label\": value } : {})}>\n {children}\n </dd>\n </div>\n );\n}\n\nexport const ResponseMetrics = /* @__PURE__ */ forwardRef<HTMLDListElement, ResponseMetricsProps>(function ResponseMetrics(\n { timeToFirstToken, duration, inputTokens, outputTokens, reasoningTokens, reasoning, live = false, startedAt, cost, size = \"sm\", className },\n ref,\n) {\n const t = useUiText();\n const counting = live && startedAt !== undefined && !known(duration);\n const elapsed = useElapsed(counting ? startedAt : undefined);\n const tokens = known(inputTokens) || known(outputTokens);\n const hasCost = cost != null && cost !== \"\";\n const line = cn(\"flex min-w-0 flex-wrap items-baseline\", KAESO_RESPONSE_METRICS_VARIANTS.size[size].classes, className);\n if (!live && !tokens && !hasCost && !known(timeToFirstToken) && !known(duration) && !known(reasoningTokens)) {\n return <dl ref={ref} aria-label={t(\"responseMetrics.metrics\", \"Metrics\")} className={cn(line, size === \"sm\" ? \"min-h-16\" : \"min-h-18\")} />;\n }\n const show = (value: boolean) => live || value;\n const dash = (\n <span className=\"text-fg-tertiary\">\n <span aria-hidden>—</span>\n <span className=\"sr-only\">{t(\"responseMetrics.notYetKnown\", \"not yet known\")}</span>\n </span>\n );\n return (\n <dl ref={ref} aria-label={t(\"responseMetrics.metrics\", \"Metrics\")} className={line}>\n {show(known(timeToFirstToken)) && (\n <Item label={t(\"responseMetrics.firstToken\", \"First token\")} width=\"min-w-40\">\n {known(timeToFirstToken) ? formatLatency(timeToFirstToken) : dash}\n </Item>\n )}\n {show(known(duration)) && (\n <Item label={t(\"responseMetrics.total\", \"Total\")} width=\"min-w-40\">\n {known(duration) ? formatLatency(duration) : elapsed !== undefined ? <span className=\"text-fg-tertiary\">{formatLatency(elapsed)}</span> : dash}\n </Item>\n )}\n {show(tokens) && (\n <Item\n label={t(\"responseMetrics.tokens\", \"Tokens\")}\n width=\"min-w-48\"\n value={\n tokens\n ? t(\"responseMetrics.tokensInOut\", \"{input} in, {output} out\", {\n input: known(inputTokens) ? formatNumber(inputTokens) : t(\"responseMetrics.unknown\", \"unknown\"),\n output: known(outputTokens) ? formatNumber(outputTokens) : t(\"responseMetrics.unknown\", \"unknown\"),\n })\n : undefined\n }\n >\n {tokens ? (\n <>\n {known(inputTokens) ? formatNumber(inputTokens) : dash} → {known(outputTokens) ? formatNumber(outputTokens) : dash}\n </>\n ) : (\n dash\n )}\n </Item>\n )}\n {(known(reasoningTokens) || (live && reasoning)) && (\n <Item label={t(\"responseMetrics.reasoning\", \"Reasoning\")} width=\"min-w-24\">\n {known(reasoningTokens) ? formatNumber(reasoningTokens) : dash}\n </Item>\n )}\n {show(hasCost) && (\n <Item label={t(\"responseMetrics.cost\", \"Cost\")} width=\"min-w-40\">\n {hasCost ? formatUSD(cost) : dash}\n </Item>\n )}\n </dl>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ResponseMetrics.displayName = \"ResponseMetrics\";\n","import { forwardRef, useId, type ReactElement } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { SlidersHorizontalIcon as __icon_SlidersHorizontalIcon } from \"@hugeicons/core-free-icons\";\nimport { formatNumber } from \"../../format/index.js\";\nimport { Button } from \"../button/button.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { NumberInput } from \"../input/number-input.js\";\nimport { Textarea } from \"../input/textarea.js\";\nimport { Popover } from \"../popover/popover.js\";\nimport { Segmented } from \"../segmented/segmented.js\";\nimport { Select } from \"../select/select.js\";\nimport { Slider } from \"../slider/slider.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_PARAMETER_PANEL_VARIANTS = {\n layout: {\n popover: { classes: \"w-full gap-20\" },\n panel: { classes: \"w-full gap-24\" },\n },\n} as const;\nexport const KAESO_PARAMETER_PANEL_DEFAULT_VARIANTS = { layout: \"popover\" } as const;\n\nexport type ReasoningEffort = \"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\nexport type ReasoningSummary = \"auto\" | \"concise\" | \"detailed\" | \"off\";\n\nexport interface PlaygroundParameters {\n instructions?: string | undefined;\n temperature?: number | undefined;\n topP?: number | undefined;\n maxOutputTokens?: number | undefined;\n reasoningEffort?: ReasoningEffort | undefined;\n reasoningSummary?: ReasoningSummary | undefined;\n}\n\nfunction efforts(t: UiText): { value: ReasoningEffort; label: string }[] {\n return [\n { value: \"none\", label: t(\"parameterPanel.effortNone\", \"None\") },\n { value: \"minimal\", label: t(\"parameterPanel.effortMinimal\", \"Minimal\") },\n { value: \"low\", label: t(\"parameterPanel.effortLow\", \"Low\") },\n { value: \"medium\", label: t(\"parameterPanel.effortMedium\", \"Medium\") },\n { value: \"high\", label: t(\"parameterPanel.effortHigh\", \"High\") },\n { value: \"xhigh\", label: t(\"parameterPanel.effortExtraHigh\", \"Extra high\") },\n { value: \"max\", label: t(\"parameterPanel.effortMax\", \"Max\") },\n ];\n}\n\nexport interface ParameterPanelProps {\n value: PlaygroundParameters;\n onValueChange: (next: PlaygroundParameters) => void;\n defaults?: Pick<PlaygroundParameters, \"temperature\" | \"topP\"> | undefined;\n instructions?: boolean | undefined;\n sampling?: boolean | undefined;\n reasoning?: ReasoningEffort[] | boolean | undefined;\n maxOutputTokensLimit?: number | undefined;\n disabled?: boolean | undefined;\n layout?: keyof typeof KAESO_PARAMETER_PANEL_VARIANTS.layout | undefined;\n className?: string | undefined;\n}\n\nfunction SliderRow({\n label,\n value,\n unset,\n min,\n max,\n step,\n digits,\n disabled,\n onChange,\n}: {\n label: string;\n value: number;\n unset: boolean;\n min: number;\n max: number;\n step: number;\n digits: number;\n disabled: boolean;\n onChange: (v: number) => void;\n}) {\n const id = useId();\n const t = useUiText();\n const shown = formatNumber(value, { minimumFractionDigits: digits, maximumFractionDigits: digits });\n return (\n <div className=\"flex flex-col gap-8\">\n <div className=\"flex items-baseline justify-between gap-12\">\n <span id={id} className={cn(\"text-body font-medium\", disabled ? \"text-fg-disabled\" : \"text-fg\")}>\n {label}\n </span>\n <span className={cn(\"text-small tabular\", unset ? \"text-fg-tertiary\" : \"text-fg-secondary\")}>\n {unset ? t(\"parameterPanel.valueDefault\", \"{value} default\", { value: shown }) : shown}\n </span>\n </div>\n <div className=\"px-8\">\n <Slider\n aria-label={label}\n min={min}\n max={max}\n step={step}\n value={value}\n disabled={disabled}\n formatValue={(v) => formatNumber(v, { minimumFractionDigits: digits, maximumFractionDigits: digits })}\n onValueChange={(v) => onChange(Array.isArray(v) ? (v[0] ?? min) : v)}\n />\n </div>\n </div>\n );\n}\n\nexport const ParameterPanel = /* @__PURE__ */ forwardRef<HTMLDivElement, ParameterPanelProps>(function ParameterPanel(\n {\n value,\n onValueChange,\n defaults,\n instructions = true,\n sampling = true,\n reasoning = false,\n maxOutputTokensLimit,\n disabled = false,\n layout = \"popover\",\n className,\n },\n ref,\n) {\n const t = useUiText();\n const set = (patch: Partial<PlaygroundParameters>) => onValueChange({ ...value, ...patch });\n const all = efforts(t);\n const shownEfforts = reasoning === true ? all : Array.isArray(reasoning) ? all.filter((e) => reasoning.includes(e.value)) : [];\n const changed =\n value.temperature !== undefined ||\n value.topP !== undefined ||\n value.maxOutputTokens !== undefined ||\n value.reasoningEffort !== undefined ||\n value.reasoningSummary !== undefined;\n return (\n <div ref={ref} className={cn(\"flex min-w-0 flex-col\", KAESO_PARAMETER_PANEL_VARIANTS.layout[layout].classes, className)}>\n {instructions && (\n <Textarea\n label={t(\"parameterPanel.systemInstructions\", \"System instructions\")}\n rows={3}\n maxRows={8}\n placeholder={t(\"parameterPanel.instructionsPlaceholder\", \"You are a helpful assistant.\")}\n value={value.instructions ?? \"\"}\n disabled={disabled}\n onChange={(e) => set({ instructions: e.target.value === \"\" ? undefined : e.target.value })}\n />\n )}\n {sampling && (\n <>\n <SliderRow\n label={t(\"parameterPanel.temperature\", \"Temperature\")}\n value={value.temperature ?? defaults?.temperature ?? 1}\n unset={value.temperature === undefined}\n min={0}\n max={2}\n step={0.05}\n digits={2}\n disabled={disabled}\n onChange={(v) => set({ temperature: v })}\n />\n <SliderRow\n label={t(\"parameterPanel.topP\", \"Top P\")}\n value={value.topP ?? defaults?.topP ?? 1}\n unset={value.topP === undefined}\n min={0}\n max={1}\n step={0.01}\n digits={2}\n disabled={disabled}\n onChange={(v) => set({ topP: v })}\n />\n </>\n )}\n <NumberInput\n label={t(\"parameterPanel.maxOutputTokens\", \"Max output tokens\")}\n size=\"sm\"\n placeholder={t(\"parameterPanel.modelDefault\", \"Model default\")}\n align=\"start\"\n min=\"1\"\n {...(maxOutputTokensLimit ? { max: String(maxOutputTokensLimit) } : {})}\n step=\"256\"\n value={value.maxOutputTokens === undefined ? \"\" : String(value.maxOutputTokens)}\n disabled={disabled}\n onValueChange={(v) => {\n const n = Number(v);\n set({ maxOutputTokens: v.trim() === \"\" || !Number.isFinite(n) || n <= 0 ? undefined : Math.round(n) });\n }}\n />\n {shownEfforts.length > 0 && (\n <>\n <Select\n label={t(\"parameterPanel.reasoningEffort\", \"Reasoning effort\")}\n size=\"sm\"\n fullWidth\n disabled={disabled}\n value={value.reasoningEffort ?? \"default\"}\n options={[{ value: \"default\", label: t(\"parameterPanel.modelDefault\", \"Model default\") }, ...shownEfforts]}\n onValueChange={(v: string) => set({ reasoningEffort: v === \"default\" ? undefined : (v as ReasoningEffort) })}\n />\n <div className=\"flex flex-col gap-8\">\n <span className={cn(\"text-body font-medium\", disabled ? \"text-fg-disabled\" : \"text-fg\")}>\n {t(\"parameterPanel.reasoningSummary\", \"Reasoning summary\")}\n </span>\n <Segmented\n aria-label={t(\"parameterPanel.reasoningSummary\", \"Reasoning summary\")}\n size=\"sm\"\n fullWidth\n disabled={disabled}\n value={value.reasoningSummary ?? \"auto\"}\n options={[\n { value: \"auto\", label: t(\"parameterPanel.summaryAuto\", \"Auto\") },\n { value: \"concise\", label: t(\"parameterPanel.summaryConcise\", \"Concise\") },\n { value: \"detailed\", label: t(\"parameterPanel.summaryDetailed\", \"Detailed\") },\n { value: \"off\", label: t(\"parameterPanel.summaryOff\", \"Off\") },\n ]}\n onValueChange={(v) => set({ reasoningSummary: v === \"auto\" ? undefined : (v as ReasoningSummary) })}\n />\n </div>\n </>\n )}\n <div className=\"flex justify-end\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={disabled || !changed}\n onClick={() => onValueChange(value.instructions !== undefined ? { instructions: value.instructions } : {})}\n >\n {t(\"parameterPanel.resetToDefaults\", \"Reset to defaults\")}\n </Button>\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ParameterPanel.displayName = \"ParameterPanel\";\n\nexport interface ParameterPopoverProps extends Omit<ParameterPanelProps, \"layout\" | \"className\"> {\n trigger?: ReactElement | undefined;\n title?: string | undefined;\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined;\n align?: \"start\" | \"center\" | \"end\" | undefined;\n}\n\nexport function ParameterPopover({\n trigger,\n title: titleProp,\n open,\n defaultOpen,\n onOpenChange,\n side = \"bottom\",\n align = \"end\",\n ...panel\n}: ParameterPopoverProps) {\n const t = useUiText();\n const title = titleProp ?? t(\"parameterPopover.parameters\", \"Parameters\");\n return (\n <Popover\n trapFocus\n {...(open !== undefined ? { open } : {})}\n {...(defaultOpen !== undefined ? { defaultOpen } : {})}\n {...(onOpenChange ? { onOpenChange } : {})}\n >\n <Popover.Trigger>{trigger ?? <IconButton icon={__icon_SlidersHorizontalIcon} aria-label={title} size=\"sm\" />}</Popover.Trigger>\n <Popover.Content title={title} side={side} align={align} className=\"w-320 max-w-(--available-width)\">\n <ParameterPanel {...panel} />\n </Popover.Content>\n </Popover>\n );\n}\nif (process.env.NODE_ENV !== \"production\") ParameterPopover.displayName = \"ParameterPopover\";\n","import { forwardRef } from \"react\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ModelLabel, providerName } from \"../kaeso/identity.js\";\nimport { KAESO_SELECT_VARIANTS, Select } from \"../select/select.js\";\n\nconst SELECT_APPEARANCE = { ghost: \"header\", default: \"default\" } as const;\n\nexport const KAESO_MODEL_PICKER_VARIANTS = {\n appearance: {\n ghost: { classes: KAESO_SELECT_VARIANTS.appearance.header.classes },\n default: { classes: KAESO_SELECT_VARIANTS.appearance.default.classes },\n },\n} as const;\nexport const KAESO_MODEL_PICKER_DEFAULT_VARIANTS = { appearance: \"ghost\" } as const;\n\nexport interface ModelPickerOption {\n value: string;\n provider: string;\n model?: string | undefined;\n name?: string | undefined;\n disabled?: boolean | undefined;\n}\n\nexport interface ModelPickerProps {\n options: ModelPickerOption[];\n value?: string | null | undefined;\n defaultValue?: string | null | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n groupByProvider?: boolean | undefined;\n placeholder?: string | undefined;\n \"aria-label\"?: string | undefined;\n appearance?: keyof typeof KAESO_MODEL_PICKER_VARIANTS.appearance | undefined;\n size?: \"sm\" | \"md\" | undefined;\n disabled?: boolean | undefined;\n \"data-force\"?: string | undefined;\n className?: string | undefined;\n}\n\nexport const ModelPicker = /* @__PURE__ */ forwardRef<HTMLButtonElement, ModelPickerProps>(function ModelPicker(\n {\n options,\n value,\n defaultValue,\n onValueChange,\n groupByProvider,\n placeholder,\n \"aria-label\": ariaLabel,\n appearance = \"ghost\",\n size = \"sm\",\n disabled,\n \"data-force\": force,\n className,\n },\n ref,\n) {\n const t = useUiText();\n const grouped = groupByProvider ?? new Set(options.map((o) => o.provider)).size > 1;\n const sorted = grouped ? [...options].sort((a, b) => providerName(a.provider).localeCompare(providerName(b.provider))) : options;\n return (\n <Select\n ref={ref}\n aria-label={ariaLabel ?? t(\"modelPicker.model\", \"Model\")}\n appearance={SELECT_APPEARANCE[appearance]}\n size={size}\n placeholder={placeholder ?? t(\"modelPicker.choose\", \"Choose a model\")}\n {...(value !== undefined ? { value } : {})}\n {...(defaultValue !== undefined ? { defaultValue } : {})}\n {...(onValueChange ? { onValueChange } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\"max-w-full\", className)}\n options={sorted.map((o) => ({\n value: o.value,\n textValue: o.name ?? o.model ?? o.value,\n label: <ModelLabel provider={o.provider} model={o.model ?? o.value} {...(o.name ? { name: o.name } : {})} />,\n ...(grouped ? { group: providerName(o.provider) } : {}),\n ...(o.disabled ? { disabled: true } : {}),\n }))}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") ModelPicker.displayName = \"ModelPicker\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_PROMPT_SUGGESTIONS_VARIANTS = {\n align: {\n start: { classes: \"items-stretch\" },\n center: { classes: \"items-center text-center\" },\n },\n} as const;\nexport const KAESO_PROMPT_SUGGESTIONS_DEFAULT_VARIANTS = { align: \"start\" } as const;\n\nexport interface PromptSuggestionsProps {\n suggestions: string[];\n onSelect: (prompt: string) => void;\n \"aria-label\"?: string | undefined;\n align?: keyof typeof KAESO_PROMPT_SUGGESTIONS_VARIANTS.align | undefined;\n className?: string | undefined;\n}\n\nexport const PromptSuggestions = /* @__PURE__ */ forwardRef<HTMLUListElement, PromptSuggestionsProps>(function PromptSuggestions(\n { suggestions, onSelect, \"aria-label\": ariaLabelProp, align = \"start\", className },\n ref,\n) {\n const t = useUiText();\n const ariaLabel = ariaLabelProp ?? t(\"promptSuggestions.examplePrompts\", \"Example prompts\");\n return (\n <ul ref={ref} aria-label={ariaLabel} className={cn(\"flex min-w-0 flex-col gap-2\", KAESO_PROMPT_SUGGESTIONS_VARIANTS.align[align].classes, className)}>\n {suggestions.slice(0, 3).map((s) => (\n <li key={s} className={cn(\"flex min-w-0\", align === \"center\" && \"justify-center\")}>\n <button\n type=\"button\"\n onClick={() => onSelect(s)}\n className={cn(\n \"flex h-36 max-w-full min-w-0 cursor-pointer items-center rounded-item px-16 text-body text-fg-secondary transition-control hover:bg-fill-1 hover:text-fg focus-ring-inset\",\n align === \"start\" && \"flex-1\",\n )}\n >\n <span className=\"min-w-0 truncate\">{s}</span>\n </button>\n </li>\n ))}\n </ul>\n );\n});\nif (process.env.NODE_ENV !== \"production\") PromptSuggestions.displayName = \"PromptSuggestions\";\n"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ "use client";
2
+ import { t as e } from "../chunks/cn-CidVUKMm.js";
3
+ import { n as t, r as n } from "../chunks/portal-context-BBbzDKmY.js";
4
+ import { i as r, n as i, r as a, t as o } from "../chunks/popover-BE7VO-a4.js";
5
+ import { forwardRef as s } from "react";
6
+ import { jsx as c } from "react/jsx-runtime";
7
+ import { PreviewCard as l } from "@base-ui/react/preview-card";
8
+ //#region src/components/popover/hover-card.tsx
9
+ function u({ children: e, open: t, defaultOpen: n, onOpenChange: r }) {
10
+ return /* @__PURE__ */ c(l.Root, {
11
+ ...t === void 0 ? {} : { open: t },
12
+ ...n === void 0 ? {} : { defaultOpen: n },
13
+ ...r ? { onOpenChange: (e) => r(e) } : {},
14
+ children: e
15
+ });
16
+ }
17
+ process.env.NODE_ENV !== "production" && (u.displayName = "HoverCard");
18
+ function d({ children: e, delay: t = 600 }) {
19
+ return /* @__PURE__ */ c(l.Trigger, {
20
+ render: e,
21
+ delay: t,
22
+ closeDelay: 150
23
+ });
24
+ }
25
+ process.env.NODE_ENV !== "production" && (d.displayName = "HoverCard.Trigger");
26
+ var f = /* @__PURE__ */ s(function({ children: r, side: i = "bottom", align: o = "start", sideOffset: s = 8, className: u }, d) {
27
+ return /* @__PURE__ */ c(l.Portal, {
28
+ container: n(),
29
+ children: /* @__PURE__ */ c(l.Positioner, {
30
+ positionMethod: "fixed",
31
+ collisionBoundary: t(),
32
+ side: i,
33
+ align: o,
34
+ sideOffset: s,
35
+ collisionPadding: 8,
36
+ className: "z-50",
37
+ children: /* @__PURE__ */ c(l.Popup, {
38
+ ref: d,
39
+ className: e(a, "w-320 p-16", u),
40
+ children: r
41
+ })
42
+ })
43
+ });
44
+ });
45
+ process.env.NODE_ENV !== "production" && (f.displayName = "HoverCard.Content");
46
+ var p = /* @__PURE__ */ Object.assign(u, {
47
+ Trigger: d,
48
+ Content: f
49
+ });
50
+ //#endregion
51
+ export { p as HoverCard, o as KAESO_POPOVER_DEFAULT_VARIANTS, i as KAESO_POPOVER_VARIANTS, a as POPOVER_POPUP, r as Popover };
52
+
53
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.js","names":["BasePreviewCard","cn","pageBoundary","usePortalContainer","Popover","KAESO_POPOVER_VARIANTS","POPOVER_POPUP","KAESO_POPOVER_DEFAULT_VARIANTS","HoverRoot","PreviewCard","open","defaultOpen","onOpenChange","o","HoverTrigger","children","HoverContent","className","HoverCard"],"sources":["../../src/components/popover/hover-card.tsx"],"sourcesContent":["import { forwardRef, type ReactElement, type ReactNode } from \"react\";\nimport { PreviewCard as BasePreviewCard } from \"@base-ui/react/preview-card\";\nimport { pageBoundary, usePortalContainer } from \"../../utils/portal-context.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { POPOVER_POPUP, type PopoverContentProps } from \"./popover.js\";\n\nexport interface HoverCardProps {\n children: ReactNode;\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n}\n\nfunction HoverRoot({ children, open, defaultOpen, onOpenChange }: HoverCardProps) {\n return (\n <BasePreviewCard.Root\n {...(open !== undefined ? { open } : {})}\n {...(defaultOpen !== undefined ? { defaultOpen } : {})}\n {...(onOpenChange ? { onOpenChange: (o: boolean) => onOpenChange(o) } : {})}\n >\n {children}\n </BasePreviewCard.Root>\n );\n}\nif (process.env.NODE_ENV !== \"production\") HoverRoot.displayName = \"HoverCard\";\nfunction HoverTrigger({ children, delay = 600 }: { children: ReactElement; delay?: number | undefined }) {\n return <BasePreviewCard.Trigger render={children} delay={delay} closeDelay={150} />;\n}\nif (process.env.NODE_ENV !== \"production\") HoverTrigger.displayName = \"HoverCard.Trigger\";\nconst HoverContent = /* @__PURE__ */ forwardRef<HTMLDivElement, Omit<PopoverContentProps, \"title\" | \"padding\" | \"aria-label\">>(function HoverCardContent(\n { children, side = \"bottom\", align = \"start\", sideOffset = 8, className },\n ref,\n) {\n return (\n <BasePreviewCard.Portal container={usePortalContainer()}>\n <BasePreviewCard.Positioner\n positionMethod=\"fixed\"\n collisionBoundary={pageBoundary()}\n side={side}\n align={align}\n sideOffset={sideOffset}\n collisionPadding={8}\n className=\"z-50\"\n >\n <BasePreviewCard.Popup ref={ref} className={cn(POPOVER_POPUP, \"w-320 p-16\", className)}>\n {children}\n </BasePreviewCard.Popup>\n </BasePreviewCard.Positioner>\n </BasePreviewCard.Portal>\n );\n});\nif (process.env.NODE_ENV !== \"production\") HoverContent.displayName = \"HoverCard.Content\";\nexport const HoverCard = /* @__PURE__ */ Object.assign(HoverRoot, { Trigger: HoverTrigger, Content: HoverContent });\n"],"mappings":";;;;;;;;AAaA,SAASQ,EAAU,EAAE,aAAU,SAAM,gBAAa,mBAAgC;CAChF,OACE,kBAACR,EAAgB,MAAjB;EACE,GAAKU,MAAS,KAAA,IAAuB,CAAC,IAAZ,EAAE,QAAK;EACjC,GAAKC,MAAgB,KAAA,IAA8B,CAAC,IAAnB,EAAE,eAAY;EAC/C,GAAKC,IAAe,EAAE,eAAe,MAAeA,EAAaC,CAAC,EAAE,IAAI,CAAC;EAExE;CACmB,CAAA;AAE1B;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc;AACnE,SAASC,EAAa,EAAE,aAAU,WAAQ,OAA+D;CACvG,OAAO,kBAACd,EAAgB,SAAjB;EAAyB,QAAQe;EAAiB;EAAO,YAAY;CAAM,CAAA;AACpF;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAa,cAAc;AACtE,IAAMC,IAA+B,kBAA0F,SAC7H,EAAE,aAAU,UAAO,UAAU,WAAQ,SAAS,gBAAa,GAAG,gBAC9D,GACA;CACA,OACE,kBAAChB,EAAgB,QAAjB;EAAwB,WAAWG,EAAmB;EACpD,UAAA,kBAACH,EAAgB,YAAjB;GACE,gBAAe;GACf,mBAAmBE,EAAa;GAC1B;GACC;GACK;GACZ,kBAAkB;GAClB,WAAU;GAEV,UAAA,kBAACF,EAAgB,OAAjB;IAA4B;IAAK,WAAWC,EAAGK,GAAe,cAAcW,CAAS;IAClF;GACoB,CAAA;EACG,CAAA;CACN,CAAA;AAE5B,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAa,cAAc;AACtE,IAAaC,IAA4B,uBAAO,OAAOV,GAAW;CAAE,SAASM;CAAc,SAASE;AAAa,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { r as e } from "../chunks/portal-context-BBbzDKmY.js";
3
+ import { useEffect as t, useState as n } from "react";
4
+ import { createPortal as r } from "react-dom";
5
+ //#region src/components/portal/portal.tsx
6
+ var i = {}, a = {};
7
+ function o({ children: i, container: a }) {
8
+ let o = e(), [s, c] = n(!1);
9
+ return t(() => c(!0), []), s ? r(i, a ?? o ?? document.body) : null;
10
+ }
11
+ process.env.NODE_ENV !== "production" && (o.displayName = "Portal");
12
+ //#endregion
13
+ export { a as KAESO_PORTAL_DEFAULT_VARIANTS, i as KAESO_PORTAL_VARIANTS, o as Portal };
14
+
15
+ //# sourceMappingURL=portal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.js","names":["usePortalContainer","KAESO_PORTAL_VARIANTS","KAESO_PORTAL_DEFAULT_VARIANTS","Portal","scoped","mounted","setMounted","useState","useEffect","createPortal","children","container"],"sources":["../../src/components/portal/portal.tsx"],"sourcesContent":["import { useEffect, useState, type ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\n\nexport const KAESO_PORTAL_VARIANTS = {} as const;\nexport const KAESO_PORTAL_DEFAULT_VARIANTS = {} as const;\n\nexport interface PortalProps {\n children: ReactNode;\n container?: HTMLElement | null | undefined;\n}\n\nexport function Portal({ children, container }: PortalProps) {\n const scoped = usePortalContainer();\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n if (!mounted) return null;\n return createPortal(children, container ?? scoped ?? document.body);\n}\nif (process.env.NODE_ENV !== \"production\") Portal.displayName = \"Portal\";\n"],"mappings":";;;;;AAIA,IAAaC,IAAwB,CAAC,GACzBC,IAAgC,CAAC;AAO9C,SAAgBC,EAAO,EAAE,aAAU,gBAA0B;CAC3D,IAAMC,IAASJ,EAAmB,GAC5B,CAACK,GAASC,KAAcC,EAAS,EAAK;CAG5C,OAFAC,QAAgBF,EAAW,EAAI,GAAG,CAAC,CAAC,GAC/BD,IACEI,EAAaC,GAAUC,KAAaP,KAAU,SAAS,IAAI,IAD7C;AAEvB;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc"}
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ import { t as e } from "../chunks/cn-CidVUKMm.js";
3
+ import { forwardRef as t, useMemo as n } from "react";
4
+ import { jsx as r } from "react/jsx-runtime";
5
+ import { encode as i } from "uqr";
6
+ //#region src/components/qr-code/qr-code.tsx
7
+ var a = { size: {
8
+ md: { classes: "size-160" },
9
+ lg: { classes: "size-200" }
10
+ } }, o = { size: "md" }, s = /* @__PURE__ */ t(function({ value: t, label: o, size: s = "md", className: c }, l) {
11
+ let { path: u, extent: d } = n(() => {
12
+ let { data: e, size: n } = i(t, {
13
+ ecc: "M",
14
+ border: 2
15
+ }), r = "";
16
+ return e.forEach((e, t) => e.forEach((e, n) => e && (r += `M${n} ${t}h1v1h-1z`))), {
17
+ path: r,
18
+ extent: n
19
+ };
20
+ }, [t]);
21
+ return /* @__PURE__ */ r("svg", {
22
+ ref: l,
23
+ viewBox: `0 0 ${d} ${d}`,
24
+ role: "img",
25
+ "aria-label": o,
26
+ shapeRendering: "crispEdges",
27
+ className: e("block rounded-well bg-scan text-on-scan shadow-ring", a.size[s].classes, c),
28
+ children: /* @__PURE__ */ r("path", {
29
+ d: u,
30
+ fill: "currentColor"
31
+ })
32
+ });
33
+ });
34
+ process.env.NODE_ENV !== "production" && (s.displayName = "QRCode");
35
+ //#endregion
36
+ export { o as KAESO_QR_CODE_DEFAULT_VARIANTS, a as KAESO_QR_CODE_VARIANTS, s as QRCode };
37
+
38
+ //# sourceMappingURL=qr-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-code.js","names":["cn","KAESO_QR_CODE_VARIANTS","KAESO_QR_CODE_DEFAULT_VARIANTS","QRCode","useMemo","encode","value","d","data","row","dark","x","y","extent","label","size","className","path"],"sources":["../../src/components/qr-code/qr-code.tsx"],"sourcesContent":["import { forwardRef, useMemo } from \"react\";\nimport { encode } from \"uqr\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport const KAESO_QR_CODE_VARIANTS = {\n size: {\n md: { classes: \"size-160\" },\n lg: { classes: \"size-200\" },\n },\n} as const;\nexport const KAESO_QR_CODE_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface QRCodeProps {\n value: string;\n label: string;\n size?: keyof typeof KAESO_QR_CODE_VARIANTS.size | undefined;\n className?: string | undefined;\n}\n\nexport const QRCode = /* @__PURE__ */ forwardRef<SVGSVGElement, QRCodeProps>(function QRCode({ value, label, size = \"md\", className }, ref) {\n const { path, extent } = useMemo(() => {\n const { data, size: n } = encode(value, { ecc: \"M\", border: 2 });\n let d = \"\";\n data.forEach((row, y) => row.forEach((dark, x) => dark && (d += `M${x} ${y}h1v1h-1z`)));\n return { path: d, extent: n };\n }, [value]);\n return (\n <svg\n ref={ref}\n viewBox={`0 0 ${extent} ${extent}`}\n role=\"img\"\n aria-label={label}\n shapeRendering=\"crispEdges\"\n className={cn(\"block rounded-well bg-scan text-on-scan shadow-ring\", KAESO_QR_CODE_VARIANTS.size[size].classes, className)}\n >\n <path d={path} fill=\"currentColor\" />\n </svg>\n );\n});\nif (process.env.NODE_ENV !== \"production\") QRCode.displayName = \"QRCode\";\n"],"mappings":";;;;;;AAIA,IAAaC,IAAyB,EACpC,MAAM;CACJ,IAAI,EAAE,SAAS,WAAW;CAC1B,IAAI,EAAE,SAAS,WAAW;AAC5B,EACF,GACaC,IAAiC,EAAE,MAAM,KAAK,GAS9CC,IAAyB,kBAAuC,SAAgB,EAAE,UAAO,UAAO,UAAO,MAAM,gBAAa,GAAK;CAC1I,IAAM,EAAE,SAAM,cAAWC,QAAc;EACrC,IAAM,EAAE,SAAM,MAAM,MAAMC,EAAOC,GAAO;GAAE,KAAK;GAAK,QAAQ;EAAE,CAAC,GAC3DC,IAAI;EAER,OADAC,EAAK,SAAS,GAAK,MAAMC,EAAI,SAAS,GAAM,MAAMC,MAAS,KAAK,IAAIC,EAAE,GAAGC,EAAE,UAAU,CAAC,GAC/E;GAAE,MAAML;GAAG,QAAQ;EAAE;CAC9B,GAAG,CAACD,CAAK,CAAC;CACV,OACE,kBAAC,OAAD;EACO;EACL,SAAS,OAAOO,EAAO,GAAGA;EAC1B,MAAK;EACL,cAAYC;EACZ,gBAAe;EACf,WAAWd,EAAG,uDAAuDC,EAAuB,KAAKc,EAAK,CAAC,SAASC,CAAS;EAEzH,UAAA,kBAAC,QAAD;GAAM,GAAGC;GAAM,MAAK;EAAgB,CAAA;CACjC,CAAA;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc"}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export { t as KAESO_RADIO_DEFAULT_VARIANTS, n as KAESO_RADIO_VARIANTS, r as Radio, i as RadioCards, a as RadioCircle, o as RadioGroup } from "../chunks/radio-CUxbLCvD.js";
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { t as e } from "../chunks/cn-CidVUKMm.js";
3
+ import { forwardRef as t } from "react";
4
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
+ import { ScrollArea as i } from "@base-ui/react/scroll-area";
6
+ //#region src/components/scroll-area/scroll-area.tsx
7
+ var a = { orientation: {
8
+ vertical: { classes: "scroll-fade-y" },
9
+ horizontal: { classes: "scroll-fade-x" },
10
+ both: { classes: "" }
11
+ } }, o = { orientation: "vertical" }, s = ({ orientation: t }) => /* @__PURE__ */ n(i.Scrollbar, {
12
+ orientation: t,
13
+ className: e("flex touch-none p-2 opacity-0 select-none transition-control data-hovering:opacity-100 data-scrolling:opacity-100", t === "vertical" ? "w-10" : "h-10 flex-col"),
14
+ children: /* @__PURE__ */ n(i.Thumb, { className: "flex-1 rounded-pill bg-line-strong" })
15
+ }), c = /* @__PURE__ */ t(function({ children: t, orientation: o = "vertical", className: c, viewportClassName: l, ...u }, d) {
16
+ return /* @__PURE__ */ r(i.Root, {
17
+ ref: d,
18
+ className: e("relative min-h-0 overflow-hidden", c),
19
+ children: [
20
+ /* @__PURE__ */ n(i.Viewport, {
21
+ className: e("size-full overscroll-contain focus-ring-inset", a.orientation[o].classes, l),
22
+ ...u,
23
+ children: t
24
+ }),
25
+ o !== "horizontal" && /* @__PURE__ */ n(s, { orientation: "vertical" }),
26
+ o !== "vertical" && /* @__PURE__ */ n(s, { orientation: "horizontal" }),
27
+ o === "both" && /* @__PURE__ */ n(i.Corner, {})
28
+ ]
29
+ });
30
+ });
31
+ process.env.NODE_ENV !== "production" && (c.displayName = "ScrollArea");
32
+ //#endregion
33
+ export { o as KAESO_SCROLL_AREA_DEFAULT_VARIANTS, a as KAESO_SCROLL_AREA_VARIANTS, c as ScrollArea };
34
+
35
+ //# sourceMappingURL=scroll-area.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area.js","names":["BaseScrollArea","cn","ScrollArea$1","KAESO_SCROLL_AREA_VARIANTS","KAESO_SCROLL_AREA_DEFAULT_VARIANTS","Bar","orientation","ScrollArea","props","className","viewportClassName"],"sources":["../../src/components/scroll-area/scroll-area.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { ScrollArea as BaseScrollArea } from \"@base-ui/react/scroll-area\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport const KAESO_SCROLL_AREA_VARIANTS = {\n orientation: {\n vertical: { classes: \"scroll-fade-y\" },\n horizontal: { classes: \"scroll-fade-x\" },\n both: { classes: \"\" },\n },\n} as const;\nexport const KAESO_SCROLL_AREA_DEFAULT_VARIANTS = { orientation: \"vertical\" } as const;\n\nexport interface ScrollAreaProps {\n children: ReactNode;\n orientation?: keyof typeof KAESO_SCROLL_AREA_VARIANTS.orientation | undefined;\n className?: string | undefined;\n viewportClassName?: string | undefined;\n \"aria-label\"?: string | undefined;\n}\n\nconst Bar = ({ orientation }: { orientation: \"vertical\" | \"horizontal\" }) => (\n <BaseScrollArea.Scrollbar\n orientation={orientation}\n className={cn(\n \"flex touch-none p-2 opacity-0 select-none transition-control data-hovering:opacity-100 data-scrolling:opacity-100\",\n orientation === \"vertical\" ? \"w-10\" : \"h-10 flex-col\",\n )}\n >\n <BaseScrollArea.Thumb className=\"flex-1 rounded-pill bg-line-strong\" />\n </BaseScrollArea.Scrollbar>\n);\n\nexport const ScrollArea = /* @__PURE__ */ forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(\n { children, orientation = \"vertical\", className, viewportClassName, ...props },\n ref,\n) {\n return (\n <BaseScrollArea.Root ref={ref} className={cn(\"relative min-h-0 overflow-hidden\", className)}>\n <BaseScrollArea.Viewport\n className={cn(\"size-full overscroll-contain focus-ring-inset\", KAESO_SCROLL_AREA_VARIANTS.orientation[orientation].classes, viewportClassName)}\n {...props}\n >\n {children}\n </BaseScrollArea.Viewport>\n {orientation !== \"horizontal\" && <Bar orientation=\"vertical\" />}\n {orientation !== \"vertical\" && <Bar orientation=\"horizontal\" />}\n {orientation === \"both\" && <BaseScrollArea.Corner />}\n </BaseScrollArea.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ScrollArea.displayName = \"ScrollArea\";\n"],"mappings":";;;;;;AAIA,IAAaG,IAA6B,EACxC,aAAa;CACX,UAAU,EAAE,SAAS,gBAAgB;CACrC,YAAY,EAAE,SAAS,gBAAgB;CACvC,MAAM,EAAE,SAAS,GAAG;AACtB,EACF,GACaC,IAAqC,EAAE,aAAa,WAAW,GAUtEC,KAAO,EAAE,qBACb,kBAACL,EAAe,WAAhB;CACe;CACb,WAAWC,EACT,qHACAK,MAAgB,aAAa,SAAS,eACxC;CAEA,UAAA,kBAACN,EAAe,OAAhB,EAAsB,WAAU,qCAAsC,CAAA;AAC9C,CAAA,GAGfO,IAA6B,kBAA4C,SACpF,EAAE,aAAU,iBAAc,YAAY,cAAW,sBAAmB,GAAGC,KACvE,GACA;CACA,OACE,kBAACR,EAAe,MAAhB;EAA0B;EAAK,WAAWC,EAAG,oCAAoCQ,CAAS;EAA1F,UAAA;GACE,kBAACT,EAAe,UAAhB;IACE,WAAWC,EAAG,iDAAiDE,EAA2B,YAAYG,EAAY,CAAC,SAASI,CAAiB;IAC7I,GAAIF;IAEH;GACsB,CAAA;GACxBF,MAAgB,gBAAgB,kBAACD,GAAD,EAAK,aAAY,WAAY,CAAA;GAC7DC,MAAgB,cAAc,kBAACD,GAAD,EAAK,aAAY,aAAc,CAAA;GAC7DC,MAAgB,UAAU,kBAACN,EAAe,QAAhB,CAAwB,CAAA;EAChC;;AAEzB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export { t as AuthLayout, n as KAESO_SECTION_DEFAULT_VARIANTS, r as KAESO_SECTION_VARIANTS, i as Section, a as SplitView } from "../chunks/section-XStLtXKa.js";
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export { t as KAESO_SEGMENTED_DEFAULT_VARIANTS, n as KAESO_SEGMENTED_VARIANTS, r as Segmented } from "../chunks/segmented-CDTx2n29.js";
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export { t as KAESO_SELECT_DEFAULT_VARIANTS, n as KAESO_SELECT_VARIANTS, r as Select } from "../chunks/select-Ca3HGsN1.js";
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ export { t as KAESO_SEPARATOR_DEFAULT_VARIANTS, n as KAESO_SEPARATOR_VARIANTS, r as Separator } from "../chunks/separator-D5AzVFTS.js";
@@ -0,0 +1,99 @@
1
+ "use client";
2
+ import { t as e } from "../chunks/cn-CidVUKMm.js";
3
+ import { r as t } from "../chunks/link-provider---9JdxTg.js";
4
+ import { t as n } from "../chunks/icon-CeNQtobn.js";
5
+ import { forwardRef as r } from "react";
6
+ import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
7
+ import { ArrowRight01Icon as s } from "@hugeicons/core-free-icons";
8
+ //#region src/components/settings/settings.tsx
9
+ var c = { row: {
10
+ default: { classes: "min-h-64 py-12" },
11
+ single: { classes: "min-h-56 py-10" }
12
+ } }, l = { row: "default" }, u = /* @__PURE__ */ r(function({ title: t, description: n, actions: r, children: i, className: s }, c) {
13
+ return /* @__PURE__ */ o("section", {
14
+ ref: c,
15
+ className: e("mt-48 first:mt-40", s),
16
+ children: [(t || r) && /* @__PURE__ */ o("div", {
17
+ className: "mb-12 flex items-end justify-between gap-16",
18
+ children: [/* @__PURE__ */ o("div", {
19
+ className: "flex flex-col gap-2",
20
+ children: [t && /* @__PURE__ */ a("h2", {
21
+ className: "text-title-sm font-semibold text-fg",
22
+ children: t
23
+ }), n && /* @__PURE__ */ a("p", {
24
+ className: "text-small text-fg-secondary",
25
+ children: n
26
+ })]
27
+ }), r]
28
+ }), i]
29
+ });
30
+ });
31
+ process.env.NODE_ENV !== "production" && (u.displayName = "SettingsSection");
32
+ var d = /* @__PURE__ */ r(function({ children: t, className: n, ...r }, i) {
33
+ return /* @__PURE__ */ a("div", {
34
+ ref: i,
35
+ role: "group",
36
+ className: e("flex flex-col overflow-hidden rounded-group bg-raised shadow-xs", n),
37
+ ...r,
38
+ children: t
39
+ });
40
+ });
41
+ process.env.NODE_ENV !== "production" && (d.displayName = "SettingsGroup");
42
+ var f = /* @__PURE__ */ r(function({ title: r, description: l, icon: u, control: d, value: f, href: p, onClick: m, id: h, danger: g, className: _, "data-force": v }, y) {
43
+ let b = t(), x = !!(p || m), S = /* @__PURE__ */ o(i, { children: [
44
+ u && /* @__PURE__ */ a("span", {
45
+ className: "inline-flex size-20 shrink-0 items-center justify-center text-fg-secondary",
46
+ children: /* @__PURE__ */ a(n, {
47
+ icon: u,
48
+ size: "md"
49
+ })
50
+ }),
51
+ /* @__PURE__ */ o("span", {
52
+ className: "flex min-w-0 flex-1 basis-140 flex-col gap-2",
53
+ children: [/* @__PURE__ */ a("span", {
54
+ id: h ? `${h}-title` : void 0,
55
+ className: e("text-body-lg font-medium", g ? "text-danger-text" : "text-fg"),
56
+ children: r
57
+ }), l && /* @__PURE__ */ a("span", {
58
+ className: "text-small text-fg-secondary text-pretty",
59
+ children: l
60
+ })]
61
+ }),
62
+ d && /* @__PURE__ */ a("span", {
63
+ className: "flex max-w-full shrink-0 items-center",
64
+ children: d
65
+ }),
66
+ (f !== void 0 || x) && !d && /* @__PURE__ */ o("span", {
67
+ className: "flex shrink-0 items-center gap-6 text-body text-fg-secondary",
68
+ children: [f, x && /* @__PURE__ */ a(n, {
69
+ icon: s,
70
+ size: "sm",
71
+ className: "text-fg-tertiary"
72
+ })]
73
+ })
74
+ ] }), C = e("relative flex w-full flex-wrap items-center gap-x-16 gap-y-8 px-20 text-left", l ? c.row.default.classes : c.row.single.classes, "not-first:before:absolute not-first:before:top-0 not-first:before:right-0 not-first:before:h-1 not-first:before:bg-line-subtle", u ? "not-first:before:left-56" : "not-first:before:left-20", x && "cursor-pointer transition-control hover:bg-fill-1 active:bg-fill-2 focus-ring-card-row", _);
75
+ return p ? /* @__PURE__ */ a(b, {
76
+ ref: y,
77
+ href: p,
78
+ className: C,
79
+ ...v ? { "data-force": v } : {},
80
+ children: S
81
+ }) : m ? /* @__PURE__ */ a("button", {
82
+ ref: y,
83
+ type: "button",
84
+ onClick: m,
85
+ className: C,
86
+ ...v ? { "data-force": v } : {},
87
+ children: S
88
+ }) : /* @__PURE__ */ a("div", {
89
+ ref: y,
90
+ className: C,
91
+ ...v ? { "data-force": v } : {},
92
+ children: S
93
+ });
94
+ });
95
+ process.env.NODE_ENV !== "production" && (f.displayName = "SettingsRow");
96
+ //#endregion
97
+ export { l as KAESO_SETTINGS_DEFAULT_VARIANTS, c as KAESO_SETTINGS_VARIANTS, d as SettingsGroup, f as SettingsRow, u as SettingsSection };
98
+
99
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","names":["_Fragment","__icon_ArrowRight01Icon","cn","useLinkComponent","Icon","Fragment$1","KAESO_SETTINGS_VARIANTS","KAESO_SETTINGS_DEFAULT_VARIANTS","SettingsSection","className","title","actions","description","children","SettingsGroup","props","SettingsRow","force","LinkComp","navigates","href","onClick","body","icon","id","danger","control","value","ArrowRight01Icon","classes"],"sources":["../../src/components/settings/settings.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { forwardRef, type MouseEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useLinkComponent } from \"../../utils/link-provider.js\";\nimport { ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\n\nexport const KAESO_SETTINGS_VARIANTS = {\n row: {\n default: { classes: \"min-h-64 py-12\" },\n single: { classes: \"min-h-56 py-10\" },\n },\n} as const;\nexport const KAESO_SETTINGS_DEFAULT_VARIANTS = { row: \"default\" } as const;\n\nexport interface SettingsSectionProps {\n title?: ReactNode | undefined;\n description?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n children: ReactNode;\n className?: string | undefined;\n}\n\nexport const SettingsSection = /* @__PURE__ */ forwardRef<HTMLElement, SettingsSectionProps>(function SettingsSection(\n { title, description, actions, children, className },\n ref,\n) {\n return (\n <section ref={ref} className={cn(\"mt-48 first:mt-40\", className)}>\n {(title || actions) && (\n <div className=\"mb-12 flex items-end justify-between gap-16\">\n <div className=\"flex flex-col gap-2\">\n {title && <h2 className=\"text-title-sm font-semibold text-fg\">{title}</h2>}\n {description && <p className=\"text-small text-fg-secondary\">{description}</p>}\n </div>\n {actions}\n </div>\n )}\n {children}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SettingsSection.displayName = \"SettingsSection\";\n\nexport const SettingsGroup = /* @__PURE__ */ forwardRef<HTMLDivElement, { children: ReactNode; className?: string | undefined; \"aria-label\"?: string | undefined }>(\n function SettingsGroup({ children, className, ...props }, ref) {\n return (\n <div ref={ref} role=\"group\" className={cn(\"flex flex-col overflow-hidden rounded-group bg-raised shadow-xs\", className)} {...props}>\n {children}\n </div>\n );\n },\n);\nif (process.env.NODE_ENV !== \"production\") SettingsGroup.displayName = \"SettingsGroup\";\n\nexport interface SettingsRowProps {\n title: ReactNode;\n description?: ReactNode | undefined;\n icon?: IconData | undefined;\n control?: ReactNode | undefined;\n value?: ReactNode | undefined;\n href?: string | undefined;\n onClick?: ((e: MouseEvent<HTMLElement>) => void) | undefined;\n id?: string | undefined;\n danger?: boolean | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const SettingsRow = /* @__PURE__ */ forwardRef<HTMLDivElement, SettingsRowProps>(function SettingsRow(\n { title, description, icon, control, value, href, onClick, id, danger, className, \"data-force\": force },\n ref,\n) {\n const LinkComp = useLinkComponent();\n const navigates = !!(href || onClick);\n const body = (\n <>\n {icon && (\n <span className=\"inline-flex size-20 shrink-0 items-center justify-center text-fg-secondary\">\n <Icon icon={icon} size=\"md\" />\n </span>\n )}\n <span className=\"flex min-w-0 flex-1 basis-140 flex-col gap-2\">\n <span id={id ? `${id}-title` : undefined} className={cn(\"text-body-lg font-medium\", danger ? \"text-danger-text\" : \"text-fg\")}>\n {title}\n </span>\n {description && <span className=\"text-small text-fg-secondary text-pretty\">{description}</span>}\n </span>\n {control && <span className=\"flex max-w-full shrink-0 items-center\">{control}</span>}\n {(value !== undefined || navigates) && !control && (\n <span className=\"flex shrink-0 items-center gap-6 text-body text-fg-secondary\">\n {value}\n {navigates && <Icon icon={__icon_ArrowRight01Icon} size=\"sm\" className=\"text-fg-tertiary\" />}\n </span>\n )}\n </>\n );\n const classes = cn(\n \"relative flex w-full flex-wrap items-center gap-x-16 gap-y-8 px-20 text-left\",\n description ? KAESO_SETTINGS_VARIANTS.row.default.classes : KAESO_SETTINGS_VARIANTS.row.single.classes,\n \"not-first:before:absolute not-first:before:top-0 not-first:before:right-0 not-first:before:h-1 not-first:before:bg-line-subtle\",\n icon ? \"not-first:before:left-56\" : \"not-first:before:left-20\",\n navigates && \"cursor-pointer transition-control hover:bg-fill-1 active:bg-fill-2 focus-ring-card-row\",\n className,\n );\n if (href) {\n return (\n <LinkComp ref={ref as React.Ref<HTMLAnchorElement>} href={href} className={classes} {...(force ? { \"data-force\": force } : {})}>\n {body}\n </LinkComp>\n );\n }\n if (onClick) {\n return (\n <button ref={ref as React.Ref<HTMLButtonElement>} type=\"button\" onClick={onClick} className={classes} {...(force ? { \"data-force\": force } : {})}>\n {body}\n </button>\n );\n }\n return (\n <div ref={ref} className={classes} {...(force ? { \"data-force\": force } : {})}>\n {body}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SettingsRow.displayName = \"SettingsRow\";\n"],"mappings":";;;;;;;;AAOA,IAAaM,IAA0B,EACrC,KAAK;CACH,SAAS,EAAE,SAAS,iBAAiB;CACrC,QAAQ,EAAE,SAAS,iBAAiB;AACtC,EACF,GACaC,IAAkC,EAAE,KAAK,UAAU,GAUnDC,IAAkC,kBAA8C,SAC3F,EAAE,UAAO,gBAAa,YAAS,aAAU,gBACzC,GACA;CACA,OACE,kBAAC,WAAD;EAAc;EAAK,WAAWN,EAAG,qBAAqBO,CAAS;EAA/D,UAAA,EACIC,KAASC,MACT,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACGD,KAAS,kBAAC,MAAD;KAAI,WAAU;KAAuC,UAAAA;IAAU,CAAA,GACxEE,KAAe,kBAAC,KAAD;KAAG,WAAU;KAAgC,UAAAA;IAAe,CAAA,CACzE;GACJ,CAAA,GAAAD,CACE;EAEN,CAAA,GAAAE,CACM;;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAgB,cAAc;AAEzE,IAAaC,IAAgC,kBAC3C,SAAuB,EAAE,aAAU,cAAW,GAAGC,KAAS,GAAK;CAC7D,OACE,kBAAC,OAAD;EAAU;EAAK,MAAK;EAAQ,WAAWb,EAAG,mEAAmEO,CAAS;EAAG,GAAIM;EAC1H;CACE,CAAA;AAET,CACF;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAc,cAAc;AAgBvE,IAAaC,IAA8B,kBAA6C,SACtF,EAAE,UAAO,gBAAa,SAAM,YAAS,UAAO,SAAM,YAAS,OAAI,WAAQ,cAAW,cAAcC,KAChG,GACA;CACA,IAAMC,IAAWf,EAAiB,GAC5BgB,IAAY,CAAC,EAAEC,KAAQC,IACvBC,IACJ,kBAAAtB,GAAA,EAAA,UAAA;EACGuB,KACC,kBAAC,QAAD;GAAM,WAAU;GACd,UAAA,kBAACnB,GAAD;IAAY;IAAM,MAAK;GAAM,CAAA;EACzB,CAAA;EAER,kBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CACE,kBAAC,QAAD;IAAM,IAAIoB,IAAK,GAAGA,EAAG,UAAU,KAAA;IAAW,WAAWtB,EAAG,4BAA4BuB,IAAS,qBAAqB,SAAS;IACxH,UAAAf;GACG,CAAA,GACLE,KAAe,kBAAC,QAAD;IAAM,WAAU;IAA4C,UAAAA;GAAkB,CAAA,CAC1F;;EACLc,KAAW,kBAAC,QAAD;GAAM,WAAU;GAAyC,UAAAA;EAAc,CAAA;GACjFC,MAAU,KAAA,KAAaR,MAAc,CAACO,KACtC,kBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CACGC,GACAR,KAAa,kBAACf,GAAD;IAAM,MAAMH;IAAyB,MAAK;IAAK,WAAU;GAAoB,CAAA,CACvF;;CAER,EAAA,CAAA,GAEE4B,IAAU3B,EACd,gFACAU,IAAcN,EAAwB,IAAI,QAAQ,UAAUA,EAAwB,IAAI,OAAO,SAC/F,kIACAiB,IAAO,6BAA6B,4BACpCJ,KAAa,0FACbV,CACF;CAeA,OAdIW,IAEA,kBAACF,GAAD;EAAe;EAA2C;EAAM,WAAWW;EAAS,GAAKZ,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;EACzH,UAAAK;CACO,CAAA,IAGVD,IAEA,kBAAC,UAAD;EAAa;EAAqC,MAAK;EAAkB;EAAS,WAAWQ;EAAS,GAAKZ,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;EAC3I,UAAAK;CACK,CAAA,IAIV,kBAAC,OAAD;EAAU;EAAK,WAAWO;EAAS,GAAKZ,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;EACxE,UAAAK;CACE,CAAA;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc"}
@@ -0,0 +1,94 @@
1
+ "use client";
2
+ import { t as e } from "../chunks/cn-CidVUKMm.js";
3
+ import { r as t } from "../chunks/portal-context-BBbzDKmY.js";
4
+ import { t as n } from "../chunks/inset-BLMdxX4I.js";
5
+ import { i as r } from "../chunks/context-BELWW79w.js";
6
+ import { t as i } from "../chunks/icon-button-Bw67oKtx.js";
7
+ import { t as a } from "../chunks/restore-focus-Cap1Q-R3.js";
8
+ import { forwardRef as o } from "react";
9
+ import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
10
+ import { Cancel01Icon as u } from "@hugeicons/core-free-icons";
11
+ import { Dialog as d } from "@base-ui/react/dialog";
12
+ //#region src/components/sheet/sheet.tsx
13
+ var f = {
14
+ size: {
15
+ sm: { classes: "w-480" },
16
+ md: { classes: "w-640" },
17
+ lg: { classes: "w-800" }
18
+ },
19
+ side: {
20
+ right: { classes: "top-8 right-8 bottom-8 sheet-limits-x" },
21
+ left: { classes: "top-8 bottom-8 left-8 sheet-limits-x" },
22
+ bottom: { classes: "right-8 bottom-8 left-8 sheet-limits-y" }
23
+ }
24
+ }, p = {
25
+ size: "sm",
26
+ side: "right"
27
+ };
28
+ function m({ title: e, subtitle: t, actions: n, children: a, footer: o, inline: f, onOpenChange: p }) {
29
+ let m = f ? "h2" : d.Title, h = r(), g = /* @__PURE__ */ c(i, {
30
+ icon: u,
31
+ "aria-label": h("sheet.close", "Close"),
32
+ tooltip: !1,
33
+ ...f && p ? { onClick: () => p(!1) } : {}
34
+ });
35
+ return /* @__PURE__ */ l(s, { children: [
36
+ /* @__PURE__ */ l("div", {
37
+ className: "flex h-60 shrink-0 items-center gap-12 pr-12 pl-24 hairline-b",
38
+ children: [
39
+ /* @__PURE__ */ l("div", {
40
+ className: "flex min-w-0 flex-1 flex-col",
41
+ children: [/* @__PURE__ */ c(m, {
42
+ className: "truncate text-title-sm font-semibold text-fg",
43
+ children: e
44
+ }), t && /* @__PURE__ */ c("span", {
45
+ className: "truncate mono text-small text-fg-secondary",
46
+ children: t
47
+ })]
48
+ }),
49
+ n,
50
+ f ? g : /* @__PURE__ */ c(d.Close, { render: g })
51
+ ]
52
+ }),
53
+ /* @__PURE__ */ c("div", {
54
+ className: "min-h-0 flex-1 overflow-y-auto overscroll-contain px-24 py-20 scrollbar-quiet",
55
+ children: a
56
+ }),
57
+ o && /* @__PURE__ */ c("div", {
58
+ className: "flex shrink-0 flex-wrap items-center justify-end gap-8 px-24 py-16 hairline-t",
59
+ children: o
60
+ })
61
+ ] });
62
+ }
63
+ var h = /* @__PURE__ */ o(function(r, i) {
64
+ let { open: o, defaultOpen: s, onOpenChange: u, trigger: p, size: h = "sm", side: g = "right", modal: _ = !0, inline: v } = r, y = e("flex flex-col overflow-hidden rounded-sheet bg-raised text-fg shadow-dialog outline-none", g !== "bottom" && f.size[h].classes), b = a(o, () => _), x = t();
65
+ return v ? /* @__PURE__ */ c("div", {
66
+ ref: i,
67
+ className: e(y, "h-560"),
68
+ children: /* @__PURE__ */ c(m, { ...r })
69
+ }) : /* @__PURE__ */ l(d.Root, {
70
+ ...o === void 0 ? {} : { open: o },
71
+ ...s === void 0 ? {} : { defaultOpen: s },
72
+ ...u ? { onOpenChange: (e) => u(e) } : {},
73
+ modal: _,
74
+ children: [p && /* @__PURE__ */ c(d.Trigger, { render: p }), /* @__PURE__ */ l(d.Portal, {
75
+ container: x,
76
+ children: [_ && /* @__PURE__ */ c(d.Backdrop, { className: "fixed inset-0 z-40 bg-overlay opacity-50 backdrop-motion" }), /* @__PURE__ */ c(d.Popup, {
77
+ ref: i,
78
+ "data-side": g,
79
+ initialFocus: b.initialFocus,
80
+ finalFocus: b.finalFocus,
81
+ className: e("fixed z-40 sheet-motion", y, f.side[g].classes, !_ && g !== "bottom" && "sheet-inspector"),
82
+ children: /* @__PURE__ */ c(n, {
83
+ inset: !1,
84
+ children: /* @__PURE__ */ c(m, { ...r })
85
+ })
86
+ })]
87
+ })]
88
+ });
89
+ });
90
+ process.env.NODE_ENV !== "production" && (h.displayName = "Sheet");
91
+ //#endregion
92
+ export { p as KAESO_SHEET_DEFAULT_VARIANTS, f as KAESO_SHEET_VARIANTS, h as Sheet };
93
+
94
+ //# sourceMappingURL=sheet.js.map