@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":"app-frame-BBIMch8X.js","names":["__icon_SidebarLeftIcon","cn","usePortalContainer","InsetContent","useUiText","buttonClasses","IconButton","SidebarSheetContext","useSidebar","SidebarFloatingContext","BrandWordmark","KAESO_APP_FRAME_VARIANTS","KAESO_APP_FRAME_DEFAULT_VARIANTS","Ctx","useAppFrame","useContext","Root","navOpen","setNavOpen","useState","toggle","useRef","mainId","useId","Main","fill","className","SkipLink","sidebar","PhoneBar","brandHref","brandLabel","corner","FrameSheet","t","target","main","Bar","banner","toggleRef","SidebarLeftIcon","open","onOpen","NavSheet","leave","useEffect","peek","wide","onChange","onOpenChange","Dialog","o","returnFocus","PEEK_DELAY","peeking","setPeeking","MenuButton","intent","collapsed","setCollapsed","openNav","KAESO_APP_FRAME_BODY_VARIANTS","KAESO_APP_FRAME_BODY_DEFAULT_VARIANTS","Body","props","padding","Settings","title","actions","description","AppFrame"],"sources":["../../src/components/app-frame/app-frame.tsx"],"sourcesContent":["import { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { createContext, forwardRef, useContext, useId, useState, type HTMLAttributes, type ReactNode, type RefObject } from \"react\";\nimport { Dialog } from \"@base-ui/react/dialog\";\nimport { InsetContent } from \"../../utils/inset.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { SidebarLeftIcon as __icon_SidebarLeftIcon } from \"@hugeicons/core-free-icons\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { buttonClasses } from \"../button/button.js\";\nimport { useSidebar, BrandWordmark, SidebarFloatingContext, SidebarSheetContext } from \"../sidebar/sidebar.js\";\nimport { useEffect, useRef } from \"react\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_APP_FRAME_VARIANTS = {\n fill: {\n screen: { classes: \"h-dvh\" },\n parent: { classes: \"h-full\" },\n },\n} as const;\nexport const KAESO_APP_FRAME_DEFAULT_VARIANTS = { fill: \"screen\" } as const;\n\nconst Ctx = /* @__PURE__ */ createContext<{ openNav: () => void; embedded: boolean }>({ openNav: () => undefined, embedded: false });\nexport const useAppFrame = () => useContext(Ctx);\n\nexport interface AppFrameProps {\n sidebar: ReactNode;\n children: ReactNode;\n corner?: ReactNode | undefined;\n fill?: keyof typeof KAESO_APP_FRAME_VARIANTS.fill | undefined;\n brandHref?: string | undefined;\n brandLabel?: string | undefined;\n className?: string | undefined;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, AppFrameProps>(function AppFrame(\n { sidebar, children, corner, fill = \"screen\", brandHref, brandLabel, className },\n ref,\n) {\n const [navOpen, setNavOpen] = useState(false);\n const toggle = useRef<HTMLButtonElement | null>(null);\n const mainId = `k-main-${useId().replace(/[^\\w-]/g, \"\")}`;\n const Main = fill === \"screen\" ? \"main\" : \"div\";\n return (\n <Ctx.Provider value={{ openNav: () => setNavOpen(true), embedded: fill === \"parent\" }}>\n <div\n ref={ref}\n className={cn(\n \"relative isolate flex w-full flex-col overflow-hidden bg-chrome text-fg lg:flex-row\",\n KAESO_APP_FRAME_VARIANTS.fill[fill].classes,\n className,\n )}\n >\n <SkipLink target={mainId} />\n <div className=\"hidden h-full lg:flex\">{sidebar}</div>\n <PhoneBar banner={fill === \"screen\"} href={brandHref} label={brandLabel} open={navOpen} onOpen={() => setNavOpen(true)} toggleRef={toggle} />\n <Main\n id={mainId}\n className=\"relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-panel outline-none safe-area-panel lg:my-8 lg:mr-8 lg:rounded-panel lg:shadow-panel\"\n >\n {children}\n </Main>\n {corner && <div className=\"fixed right-16 bottom-16 z-10 flex items-center gap-8\">{corner}</div>}\n </div>\n <FrameSheet navOpen={navOpen} setNavOpen={setNavOpen} returnFocus={toggle}>\n {sidebar}\n </FrameSheet>\n </Ctx.Provider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"AppFrame\";\n\nfunction SkipLink({ target }: { target: string }) {\n const t = useUiText();\n return (\n <a\n href={`#${target}`}\n onClick={(e) => {\n const main = document.getElementById(target);\n if (!main) return;\n e.preventDefault();\n main.setAttribute(\"tabindex\", \"-1\");\n main.addEventListener(\"blur\", () => main.removeAttribute(\"tabindex\"), { once: true });\n main.focus();\n }}\n className={cn(buttonClasses({ size: \"sm\" }), \"absolute top-8 left-8 z-50 not-focus:sr-only\")}\n >\n {t(\"appFrame.skipToContent\", \"Skip to content\")}\n </a>\n );\n}\nif (process.env.NODE_ENV !== \"production\") SkipLink.displayName = \"AppFrame.SkipLink\";\n\nfunction PhoneBar({\n banner,\n href,\n label,\n open,\n onOpen,\n toggleRef,\n}: {\n banner: boolean;\n href: string | undefined;\n label: string | undefined;\n open: boolean;\n onOpen: () => void;\n toggleRef: RefObject<HTMLButtonElement | null>;\n}) {\n const Bar = banner ? \"header\" : \"div\";\n const t = useUiText();\n return (\n <Bar data-phone-bar=\"\" className=\"shrink-0 bg-panel safe-area-bar lg:hidden\">\n <div className=\"mt-8 flex h-52 items-center justify-between pr-20 pl-28\">\n <BrandWordmark href={href} label={label} />\n <IconButton\n ref={toggleRef}\n icon={__icon_SidebarLeftIcon}\n aria-label={t(\"appFrame.openNavigation\", \"Open navigation\")}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n tooltip={false}\n onClick={onOpen}\n />\n </div>\n </Bar>\n );\n}\nif (process.env.NODE_ENV !== \"production\") PhoneBar.displayName = \"AppFrame.PhoneBar\";\n\nexport function NavSheet({\n open,\n onOpenChange,\n peek = false,\n returnFocus,\n children,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n peek?: boolean | undefined;\n returnFocus?: RefObject<HTMLElement | null> | undefined;\n children: ReactNode;\n}) {\n const leave = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const t = useUiText();\n useEffect(() => {\n if (!open || peek || typeof window === \"undefined\") return;\n const wide = window.matchMedia(\"(min-width: 1024px)\");\n const onChange = () => wide.matches && onOpenChange(false);\n onChange();\n wide.addEventListener(\"change\", onChange);\n return () => wide.removeEventListener(\"change\", onChange);\n }, [open, peek, onOpenChange]);\n return (\n <Dialog.Root open={open} onOpenChange={(o: boolean) => onOpenChange(o)} modal={!peek}>\n <Dialog.Portal container={usePortalContainer()}>\n <Dialog.Backdrop className=\"fixed inset-0 z-40 bg-overlay opacity-60 backdrop-motion\" />\n <Dialog.Popup\n aria-label={t(\"appFrame.navigation\", \"Navigation\")}\n data-side=\"left\"\n initialFocus={!peek}\n {...(returnFocus ? { finalFocus: returnFocus } : {})}\n className=\"fixed top-0 bottom-0 left-0 z-40 flex overflow-hidden rounded-r-sheet bg-chrome shadow-dialog outline-none safe-area-sheet sheet-motion\"\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"a[href]\")) onOpenChange(false);\n }}\n onPointerEnter={() => clearTimeout(leave.current)}\n onPointerLeave={() => {\n if (!peek) return;\n leave.current = setTimeout(() => onOpenChange(false), 160);\n }}\n >\n <SidebarFloatingContext.Provider value>\n <SidebarSheetContext.Provider value={{ close: () => onOpenChange(false), peek }}>{children}</SidebarSheetContext.Provider>\n </SidebarFloatingContext.Provider>\n </Dialog.Popup>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\nif (process.env.NODE_ENV !== \"production\") NavSheet.displayName = \"NavSheet\";\n\nexport const PEEK_DELAY = 750;\n\nfunction FrameSheet({\n navOpen,\n setNavOpen,\n returnFocus,\n children,\n}: {\n navOpen: boolean;\n setNavOpen: (o: boolean) => void;\n returnFocus: RefObject<HTMLElement | null>;\n children: ReactNode;\n}) {\n const { peeking, setPeeking } = useSidebar();\n return (\n <NavSheet\n open={navOpen || peeking}\n peek={peeking && !navOpen}\n {...(navOpen ? { returnFocus } : {})}\n onOpenChange={(o) => {\n if (!o) {\n setNavOpen(false);\n setPeeking(false);\n }\n }}\n >\n {children}\n </NavSheet>\n );\n}\n\nfunction MenuButton({ className }: { className?: string | undefined }) {\n const { openNav } = useAppFrame();\n const { collapsed, setCollapsed, setPeeking } = useSidebar();\n const intent = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const t = useUiText();\n const wide = () => typeof window !== \"undefined\" && window.matchMedia(\"(min-width: 1024px)\").matches;\n return (\n <IconButton\n onPointerEnter={() => {\n if (collapsed && wide()) intent.current = setTimeout(() => setPeeking(true), PEEK_DELAY);\n }}\n onPointerLeave={() => clearTimeout(intent.current)}\n icon={__icon_SidebarLeftIcon}\n data-sidebar-expand=\"\"\n aria-label={collapsed ? t(\"appFrame.expandSidebar\", \"Expand sidebar\") : t(\"appFrame.openNavigation\", \"Open navigation\")}\n shortcut={collapsed ? [\"[\"] : undefined}\n onClick={() => {\n clearTimeout(intent.current);\n if (collapsed && wide()) setCollapsed(false);\n else openNav();\n }}\n className={cn(\"hidden\", collapsed && \"lg:inline-flex\", className)}\n />\n );\n}\nif (process.env.NODE_ENV !== \"production\") MenuButton.displayName = \"AppFrame.MenuButton\";\n\nexport const KAESO_APP_FRAME_BODY_VARIANTS = {\n padding: {\n none: { classes: \"\" },\n list: { classes: \"pt-8 pb-24\" },\n page: { classes: \"px-24 pt-16 pb-48\" },\n },\n} as const;\nexport const KAESO_APP_FRAME_BODY_DEFAULT_VARIANTS = { padding: \"none\" } as const;\n\nexport interface AppFrameBodyProps extends HTMLAttributes<HTMLDivElement> {\n padding?: keyof typeof KAESO_APP_FRAME_BODY_VARIANTS.padding | undefined;\n}\n\nconst Body = /* @__PURE__ */ forwardRef<HTMLDivElement, AppFrameBodyProps>(function AppFrameBody({ className, padding = \"none\", ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\"min-h-0 flex-1 overflow-y-auto overscroll-contain scrollbar-quiet\", KAESO_APP_FRAME_BODY_VARIANTS.padding[padding].classes, className)}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Body.displayName = \"AppFrame.Body\";\n\nexport interface SettingsPageProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n title: ReactNode;\n description?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n}\n\nconst Settings = /* @__PURE__ */ forwardRef<HTMLDivElement, SettingsPageProps>(function AppFrameSettings({ title, description, actions, className, children, ...props }, ref) {\n return (\n <Body ref={ref} className=\"relative\">\n <MenuButton className=\"absolute top-10 left-12 z-10\" />\n <div className={cn(\"mx-auto w-full max-w-settings px-24 pt-64 pb-96\", className)} {...props}>\n <header className=\"flex flex-col gap-8\">\n <div className=\"flex items-start justify-between gap-16\">\n <h1 className=\"min-w-0 text-title-lg font-semibold text-fg text-balance\">{title}</h1>\n {actions && <div className=\"flex h-34 shrink-0 items-center gap-8\">{actions}</div>}\n </div>\n {description && <p className=\"text-body-lg font-regular text-fg-secondary\">{description}</p>}\n </header>\n <div className=\"mt-8\">\n <InsetContent>{children}</InsetContent>\n </div>\n </div>\n </Body>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Settings.displayName = \"AppFrame.Settings\";\n\nexport const AppFrame = /* @__PURE__ */ Object.assign(Root, { MenuButton, Body, Settings });\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ function e(e) {
2
+ if (e.defaultPrevented || e.key !== "ArrowLeft" && e.key !== "ArrowRight") return;
3
+ let t = e.target;
4
+ if (t.tagName === "INPUT" && t.value) return;
5
+ let n = [...e.currentTarget.querySelectorAll("button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), a[href]")], r = n.indexOf(t);
6
+ r < 0 || (e.preventDefault(), n[(r + (e.key === "ArrowRight" ? 1 : -1) + n.length) % n.length]?.focus());
7
+ }
8
+ //#endregion
9
+ export { e as t };
10
+
11
+ //# sourceMappingURL=arrow-focus-BcySmwwU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow-focus-BcySmwwU.js","names":["arrowFocus","target","items","i"],"sources":["../../src/utils/arrow-focus.ts"],"sourcesContent":["import type { KeyboardEvent } from \"react\";\n\nconst FOCUSABLE = 'button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), a[href]';\n\nexport function arrowFocus(e: KeyboardEvent<HTMLElement>) {\n if (e.defaultPrevented || (e.key !== \"ArrowLeft\" && e.key !== \"ArrowRight\")) return;\n const target = e.target as HTMLElement;\n if (target.tagName === \"INPUT\" && (target as HTMLInputElement).value) return;\n const items = [...e.currentTarget.querySelectorAll<HTMLElement>(FOCUSABLE)];\n const i = items.indexOf(target);\n if (i < 0) return;\n e.preventDefault();\n items[(i + (e.key === \"ArrowRight\" ? 1 : -1) + items.length) % items.length]?.focus();\n}\n"],"mappings":"AAIA,SAAgBA,EAAW,GAA+B;CACxD,IAAI,EAAE,oBAAqB,EAAE,QAAQ,eAAe,EAAE,QAAQ,cAAe;CAC7E,IAAMC,IAAS,EAAE;CACjB,IAAIA,EAAO,YAAY,WAAYA,EAA4B,OAAO;CACtE,IAAMC,IAAQ,CAAC,GAAG,EAAE,cAAc,iBAA8B,2FAAS,CAAC,GACpEC,IAAID,EAAM,QAAQD,CAAM;CAC9B,AAAIE,IAAI,MACR,EAAE,eAAe,GACjBD,GAAOC,KAAK,EAAE,QAAQ,eAAe,IAAI,MAAMD,EAAM,UAAUA,EAAM,OAAO,EAAE,MAAM;AACtF"}
@@ -0,0 +1,83 @@
1
+ "use client";
2
+ import { t as e } from "./cn-CidVUKMm.js";
3
+ import { i as t } from "./context-BELWW79w.js";
4
+ import { forwardRef as n, useState as r } from "react";
5
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
+ //#region src/components/avatar/avatar.tsx
7
+ var o = {
8
+ size: {
9
+ 20: { classes: "size-20 text-micro" },
10
+ 24: { classes: "size-24 text-micro" },
11
+ 28: { classes: "size-28 text-caption" },
12
+ 32: { classes: "size-32 text-caption" },
13
+ 40: { classes: "size-40 text-body" }
14
+ },
15
+ kind: {
16
+ person: { classes: "rounded-pill" },
17
+ org: { classes: "rounded-org" }
18
+ }
19
+ }, s = {
20
+ size: 24,
21
+ kind: "person"
22
+ };
23
+ function c(e, t = 2) {
24
+ let n = e.trim().split(/\s+/).filter(Boolean);
25
+ if (n.length === 0) return "?";
26
+ let r = n[0]?.[0] ?? "";
27
+ return (t === 1 || n.length < 2 ? r : r + (n[n.length - 1]?.[0] ?? "")).toUpperCase();
28
+ }
29
+ var l = /* @__PURE__ */ n(function({ name: t, src: n, size: a = 24, kind: s = "person", decorative: l, className: u }, d) {
30
+ let [f, p] = r(void 0);
31
+ return /* @__PURE__ */ i("span", {
32
+ ref: d,
33
+ ...l ? { "aria-hidden": !0 } : {
34
+ role: "img",
35
+ "aria-label": t
36
+ },
37
+ className: e("relative inline-flex shrink-0 items-center justify-center overflow-hidden bg-fill-2 font-semibold text-fg select-none", o.size[a].classes, o.kind[s].classes, a <= 24 && s === "org" && "rounded-avatar", u),
38
+ children: n && n !== f ? /* @__PURE__ */ i("img", {
39
+ src: n,
40
+ alt: "",
41
+ className: "size-full object-cover",
42
+ onError: () => p(n)
43
+ }) : c(t, a === 20 ? 1 : 2)
44
+ });
45
+ });
46
+ process.env.NODE_ENV !== "production" && (l.displayName = "Avatar");
47
+ var u = {
48
+ 20: "-ms-4",
49
+ 24: "-ms-2",
50
+ 28: "-ms-2",
51
+ 32: "-ms-4",
52
+ 40: "-ms-6"
53
+ }, d = /* @__PURE__ */ n(function({ people: n, size: r = 24, max: s = 4, className: c, children: d }, f) {
54
+ let p = t(), m = n.slice(0, s), h = n.length - m.length, g = u[r];
55
+ return /* @__PURE__ */ a("div", {
56
+ ref: f,
57
+ role: "group",
58
+ "aria-label": n.map((e) => e.name).join(p("avatarGroup.listSeparator", ", ")),
59
+ className: e("flex items-center", c),
60
+ children: [
61
+ m.map((t, n) => /* @__PURE__ */ i(l, {
62
+ name: t.name,
63
+ ...t.src ? { src: t.src } : {},
64
+ size: r,
65
+ decorative: !0,
66
+ className: e("ring-2 ring-panel", n > 0 && g)
67
+ }, t.name + n)),
68
+ h > 0 && /* @__PURE__ */ a("span", {
69
+ className: e("inline-flex shrink-0 items-center justify-center rounded-pill bg-fill-1 font-medium text-fg-secondary ring-2 ring-panel tabular", o.size[r].classes, g),
70
+ children: ["+", h]
71
+ }),
72
+ d && /* @__PURE__ */ i("span", {
73
+ className: "ms-8 inline-flex items-center",
74
+ children: d
75
+ })
76
+ ]
77
+ });
78
+ });
79
+ process.env.NODE_ENV !== "production" && (d.displayName = "AvatarGroup");
80
+ //#endregion
81
+ export { c as a, o as i, d as n, s as r, l as t };
82
+
83
+ //# sourceMappingURL=avatar-D2nJNbtC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-D2nJNbtC.js","names":["cn","useUiText","KAESO_AVATAR_VARIANTS","KAESO_AVATAR_DEFAULT_VARIANTS","initials","parts","name","first","max","Avatar","failedSrc","setFailedSrc","useState","decorative","size","kind","className","src","GROUP_OVERLAP","AvatarGroup","t","shown","people","rest","overlap","p","i","children"],"sources":["../../src/components/avatar/avatar.tsx"],"sourcesContent":["import { forwardRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_AVATAR_VARIANTS = {\n size: {\n 20: { classes: \"size-20 text-micro\" },\n 24: { classes: \"size-24 text-micro\" },\n 28: { classes: \"size-28 text-caption\" },\n 32: { classes: \"size-32 text-caption\" },\n 40: { classes: \"size-40 text-body\" },\n },\n kind: {\n person: { classes: \"rounded-pill\" },\n org: { classes: \"rounded-org\" },\n },\n} as const;\nexport const KAESO_AVATAR_DEFAULT_VARIANTS = { size: 24, kind: \"person\" } as const;\n\nexport function initials(name: string, max: 1 | 2 = 2): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"?\";\n const first = parts[0]?.[0] ?? \"\";\n return (max === 1 || parts.length < 2 ? first : first + (parts[parts.length - 1]?.[0] ?? \"\")).toUpperCase();\n}\n\nexport interface AvatarProps {\n name: string;\n src?: string | undefined;\n size?: keyof typeof KAESO_AVATAR_VARIANTS.size | undefined;\n kind?: keyof typeof KAESO_AVATAR_VARIANTS.kind | undefined;\n decorative?: boolean | undefined;\n className?: string | undefined;\n}\n\nexport const Avatar = /* @__PURE__ */ forwardRef<HTMLSpanElement, AvatarProps>(function Avatar({ name, src, size = 24, kind = \"person\", decorative, className }, ref) {\n const [failedSrc, setFailedSrc] = useState<string | undefined>(undefined);\n return (\n <span\n ref={ref}\n {...(decorative ? { \"aria-hidden\": true } : { role: \"img\", \"aria-label\": name })}\n className={cn(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden bg-fill-2 font-semibold text-fg select-none\",\n KAESO_AVATAR_VARIANTS.size[size].classes,\n KAESO_AVATAR_VARIANTS.kind[kind].classes,\n size <= 24 && kind === \"org\" && \"rounded-avatar\",\n className,\n )}\n >\n {src && src !== failedSrc ? (\n <img src={src} alt=\"\" className=\"size-full object-cover\" onError={() => setFailedSrc(src)} />\n ) : (\n initials(name, size === 20 ? 1 : 2)\n )}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Avatar.displayName = \"Avatar\";\n\nexport interface AvatarGroupProps {\n people: { name: string; src?: string | undefined }[];\n size?: keyof typeof KAESO_AVATAR_VARIANTS.size | undefined;\n max?: number | undefined;\n className?: string | undefined;\n children?: ReactNode | undefined;\n}\n\nconst GROUP_OVERLAP = { 20: \"-ms-4\", 24: \"-ms-2\", 28: \"-ms-2\", 32: \"-ms-4\", 40: \"-ms-6\" } as const;\n\nexport const AvatarGroup = /* @__PURE__ */ forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup({ people, size = 24, max = 4, className, children }, ref) {\n const t = useUiText();\n const shown = people.slice(0, max);\n const rest = people.length - shown.length;\n const overlap = GROUP_OVERLAP[size];\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={people.map((p) => p.name).join(t(\"avatarGroup.listSeparator\", \", \"))}\n className={cn(\"flex items-center\", className)}\n >\n {shown.map((p, i) => (\n <Avatar\n key={p.name + i}\n name={p.name}\n {...(p.src ? { src: p.src } : {})}\n size={size}\n decorative\n className={cn(\"ring-2 ring-panel\", i > 0 && overlap)}\n />\n ))}\n {rest > 0 && (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center justify-center rounded-pill bg-fill-1 font-medium text-fg-secondary ring-2 ring-panel tabular\",\n KAESO_AVATAR_VARIANTS.size[size].classes,\n overlap,\n )}\n >\n +{rest}\n </span>\n )}\n {children && <span className=\"ms-8 inline-flex items-center\">{children}</span>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") AvatarGroup.displayName = \"AvatarGroup\";\n"],"mappings":";;;;;;AAIA,IAAaE,IAAwB;CACnC,MAAM;EACJ,IAAI,EAAE,SAAS,qBAAqB;EACpC,IAAI,EAAE,SAAS,qBAAqB;EACpC,IAAI,EAAE,SAAS,uBAAuB;EACtC,IAAI,EAAE,SAAS,uBAAuB;EACtC,IAAI,EAAE,SAAS,oBAAoB;CACrC;CACA,MAAM;EACJ,QAAQ,EAAE,SAAS,eAAe;EAClC,KAAK,EAAE,SAAS,cAAc;CAChC;AACF,GACaC,IAAgC;CAAE,MAAM;CAAI,MAAM;AAAS;AAExE,SAAgBC,EAAS,GAAc,IAAa,GAAW;CAC7D,IAAMC,IAAQC,EAAK,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO;CACrD,IAAID,EAAM,WAAW,GAAG,OAAO;CAC/B,IAAME,IAAQF,EAAM,EAAE,GAAG,MAAM;CAC/B,QAAQG,MAAQ,KAAKH,EAAM,SAAS,IAAIE,IAAQA,KAASF,EAAMA,EAAM,SAAS,EAAE,GAAG,MAAM,IAAA,CAAK,YAAY;AAC5G;AAWA,IAAaI,IAAyB,kBAAyC,SAAgB,EAAE,SAAM,QAAK,UAAO,IAAI,UAAO,UAAU,eAAY,gBAAa,GAAK;CACpK,IAAM,CAACC,GAAWC,KAAgBC,EAA6B,KAAA,CAAS;CACxE,OACE,kBAAC,QAAD;EACO;EACL,GAAKC,IAAa,EAAE,eAAe,GAAK,IAAI;GAAE,MAAM;GAAO,cAAcP;EAAK;EAC9E,WAAWN,EACT,yHACAE,EAAsB,KAAKY,EAAK,CAAC,SACjCZ,EAAsB,KAAKa,EAAK,CAAC,SACjCD,KAAQ,MAAMC,MAAS,SAAS,kBAChCC,CACF;EAEC,UAAAC,KAAOA,MAAQP,IACd,kBAAC,OAAD;GAAU;GAAK,KAAI;GAAG,WAAU;GAAyB,eAAeC,EAAaM,CAAG;EAAI,CAAA,IAE5Fb,EAASE,GAAMQ,MAAS,KAAK,IAAI,CAAC;CAEhC,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc;AAUhE,IAAMI,IAAgB;CAAE,IAAI;CAAS,IAAI;CAAS,IAAI;CAAS,IAAI;CAAS,IAAI;AAAQ,GAE3EC,IAA8B,kBAA6C,SAAqB,EAAE,WAAQ,UAAO,IAAI,SAAM,GAAG,cAAW,eAAY,GAAK;CACrK,IAAMC,IAAInB,EAAU,GACdoB,IAAQC,EAAO,MAAM,GAAGd,CAAG,GAC3Be,IAAOD,EAAO,SAASD,EAAM,QAC7BG,IAAUN,EAAcJ;CAC9B,OACE,kBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAYQ,EAAO,KAAK,MAAMG,EAAE,IAAI,CAAC,CAAC,KAAKL,EAAE,6BAA6B,IAAI,CAAC;EAC/E,WAAWpB,EAAG,qBAAqBgB,CAAS;EAJ9C,UAAA;GAMGK,EAAM,KAAK,GAAG,MACb,kBAACZ,GAAD;IAEE,MAAMgB,EAAE;IACR,GAAKA,EAAE,MAAM,EAAE,KAAKA,EAAE,IAAI,IAAI,CAAC;IACzB;IACN,YAAA;IACA,WAAWzB,EAAG,qBAAqB0B,IAAI,KAAKF,CAAO;GACpD,GANMC,EAAE,OAAOC,CAMf,CACF;GACAH,IAAO,KACN,kBAAC,QAAD;IACE,WAAWvB,EACT,mIACAE,EAAsB,KAAKY,EAAK,CAAC,SACjCU,CACF;IALF,UAAA,CAMC,KACGD,CACE;;GAEPI,KAAY,kBAAC,QAAD;IAAM,WAAU;IAAiC;GAAe,CAAA;EAC1E;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc"}
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { t as e } from "./cn-CidVUKMm.js";
3
+ import { forwardRef as t } from "react";
4
+ import { jsx as n } from "react/jsx-runtime";
5
+ //#region src/components/badge/badge.tsx
6
+ var r = { tone: {
7
+ neutral: { classes: "bg-fill-2 text-fg-secondary" },
8
+ success: { classes: "bg-success-tint text-success-text" },
9
+ warning: { classes: "bg-warning-tint text-warning-text" },
10
+ danger: { classes: "bg-danger-tint text-danger-text" },
11
+ info: { classes: "bg-info-tint text-info-text" },
12
+ outline: { classes: "bg-transparent text-fg-secondary shadow-ring" },
13
+ ink: { classes: "bg-ink text-on-ink" }
14
+ } }, i = { tone: "neutral" }, a = /* @__PURE__ */ t(function({ tone: t = "neutral", className: i, children: a, ...o }, s) {
15
+ return /* @__PURE__ */ n("span", {
16
+ ref: s,
17
+ className: e("inline-flex h-22 shrink-0 items-center rounded-pill px-8 text-caption font-medium whitespace-nowrap tabular", r.tone[t].classes, i),
18
+ ...o,
19
+ children: a
20
+ });
21
+ });
22
+ process.env.NODE_ENV !== "production" && (a.displayName = "Badge");
23
+ //#endregion
24
+ export { i as n, r, a as t };
25
+
26
+ //# sourceMappingURL=badge-Dkyhs0_j.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge-Dkyhs0_j.js","names":["cn","KAESO_BADGE_VARIANTS","KAESO_BADGE_DEFAULT_VARIANTS","Badge","props","tone","className"],"sources":["../../src/components/badge/badge.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport const KAESO_BADGE_VARIANTS = {\n tone: {\n neutral: { classes: \"bg-fill-2 text-fg-secondary\" },\n success: { classes: \"bg-success-tint text-success-text\" },\n warning: { classes: \"bg-warning-tint text-warning-text\" },\n danger: { classes: \"bg-danger-tint text-danger-text\" },\n info: { classes: \"bg-info-tint text-info-text\" },\n outline: { classes: \"bg-transparent text-fg-secondary shadow-ring\" },\n ink: { classes: \"bg-ink text-on-ink\" },\n },\n} as const;\nexport const KAESO_BADGE_DEFAULT_VARIANTS = { tone: \"neutral\" } as const;\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: keyof typeof KAESO_BADGE_VARIANTS.tone | undefined;\n children: ReactNode;\n}\n\nexport const Badge = /* @__PURE__ */ forwardRef<HTMLSpanElement, BadgeProps>(function Badge({ tone = \"neutral\", className, children, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex h-22 shrink-0 items-center rounded-pill px-8 text-caption font-medium whitespace-nowrap tabular\",\n KAESO_BADGE_VARIANTS.tone[tone].classes,\n className,\n )}\n {...props}\n >\n {children}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Badge.displayName = \"Badge\";\n"],"mappings":";;;;;AAGA,IAAaC,IAAuB,EAClC,MAAM;CACJ,SAAS,EAAE,SAAS,8BAA8B;CAClD,SAAS,EAAE,SAAS,oCAAoC;CACxD,SAAS,EAAE,SAAS,oCAAoC;CACxD,QAAQ,EAAE,SAAS,kCAAkC;CACrD,MAAM,EAAE,SAAS,8BAA8B;CAC/C,SAAS,EAAE,SAAS,+CAA+C;CACnE,KAAK,EAAE,SAAS,qBAAqB;AACvC,EACF,GACaC,IAA+B,EAAE,MAAM,UAAU,GAOjDC,IAAwB,kBAAwC,SAAe,EAAE,UAAO,WAAW,cAAW,aAAU,GAAGC,KAAS,GAAK;CACpJ,OACE,kBAAC,QAAD;EACO;EACL,WAAWJ,EACT,+GACAC,EAAqB,KAAKI,EAAK,CAAC,SAChCC,CACF;EACA,GAAIF;EAEH;CACG,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc"}
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import { t as e } from "./cn-CidVUKMm.js";
3
+ import { i as t } from "./context-BELWW79w.js";
4
+ import { t as n } from "./icon-CeNQtobn.js";
5
+ import { t as r } from "./icon-button-Bw67oKtx.js";
6
+ import { forwardRef as i, useState as a } from "react";
7
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
8
+ import { Alert02Icon as c, AlertCircleIcon as l, Cancel01Icon as u, CheckmarkCircle02Icon as d, InformationCircleIcon as f } from "@hugeicons/core-free-icons";
9
+ //#region src/components/banner/banner.tsx
10
+ var p = {
11
+ tone: {
12
+ neutral: { classes: "bg-fill-1 text-fg" },
13
+ info: { classes: "bg-info-tint text-fg" },
14
+ success: { classes: "bg-success-tint text-fg" },
15
+ warning: { classes: "bg-warning-tint text-fg" },
16
+ danger: { classes: "bg-danger-tint text-fg" }
17
+ },
18
+ layout: {
19
+ inline: { classes: "rounded-well px-16 py-12" },
20
+ full: { classes: "rounded-none px-24 py-10" }
21
+ }
22
+ }, m = {
23
+ tone: "neutral",
24
+ layout: "inline"
25
+ }, h = {
26
+ neutral: f,
27
+ info: f,
28
+ success: d,
29
+ warning: c,
30
+ danger: l
31
+ }, g = {
32
+ neutral: "text-fg-secondary",
33
+ info: "text-info-text",
34
+ success: "text-success-text",
35
+ warning: "text-warning-text",
36
+ danger: "text-danger-text"
37
+ }, _ = /* @__PURE__ */ i(function({ tone: i = "neutral", layout: c = "inline", title: l, children: d, icon: f, actions: m, onDismiss: _, className: v }, y) {
38
+ let [b, x] = a(!1), S = t();
39
+ if (b) return null;
40
+ let C = _ && (i === "neutral" || i === "info");
41
+ return /* @__PURE__ */ o("div", {
42
+ ref: y,
43
+ role: i === "danger" ? "alert" : "status",
44
+ className: e("@container w-full", p.tone[i].classes, p.layout[c].classes, v),
45
+ children: /* @__PURE__ */ s("div", {
46
+ className: e("flex items-start gap-8", m && "@banner:items-center"),
47
+ children: [/* @__PURE__ */ s("div", {
48
+ className: "flex min-w-0 flex-1 flex-col gap-12 @banner:flex-row @banner:items-center @banner:gap-24",
49
+ children: [/* @__PURE__ */ s("div", {
50
+ className: "flex min-w-0 flex-1 items-start gap-8",
51
+ children: [/* @__PURE__ */ o(n, {
52
+ icon: f ?? h[i],
53
+ size: "sm",
54
+ className: e("mt-2", g[i])
55
+ }), /* @__PURE__ */ s("div", {
56
+ className: "flex min-w-0 flex-1 flex-col gap-2 text-body",
57
+ children: [l && /* @__PURE__ */ o("span", {
58
+ className: "font-semibold text-fg",
59
+ children: l
60
+ }), d && /* @__PURE__ */ o("div", {
61
+ className: "text-fg text-pretty",
62
+ children: d
63
+ })]
64
+ })]
65
+ }), m && /* @__PURE__ */ o("div", {
66
+ className: "ml-24 flex shrink-0 flex-wrap items-center gap-8 @banner:ml-0",
67
+ children: m
68
+ })]
69
+ }), C && /* @__PURE__ */ o(r, {
70
+ icon: u,
71
+ "aria-label": S("banner.dismiss", "Dismiss"),
72
+ size: "xs",
73
+ className: "-my-2 -mr-6",
74
+ onClick: () => {
75
+ x(!0), _?.();
76
+ }
77
+ })]
78
+ })
79
+ });
80
+ });
81
+ process.env.NODE_ENV !== "production" && (_.displayName = "Banner");
82
+ //#endregion
83
+ export { m as n, p as r, _ as t };
84
+
85
+ //# sourceMappingURL=banner-BiziJuBZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner-BiziJuBZ.js","names":["__icon_InformationCircleIcon","__icon_CheckmarkCircle02Icon","__icon_Alert02Icon","__icon_AlertCircleIcon","__icon_Cancel01Icon","cn","useUiText","Icon","IconButton","KAESO_BANNER_VARIANTS","KAESO_BANNER_DEFAULT_VARIANTS","ICON","InformationCircleIcon","CheckmarkCircle02Icon","Alert02Icon","AlertCircleIcon","ICON_TONE","Banner","hidden","setHidden","useState","t","dismissible","onDismiss","tone","layout","className","actions","icon","title","children","Cancel01Icon"],"sources":["../../src/components/banner/banner.tsx"],"sourcesContent":["import { forwardRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { InformationCircleIcon as __icon_InformationCircleIcon, CheckmarkCircle02Icon as __icon_CheckmarkCircle02Icon, Alert02Icon as __icon_Alert02Icon, AlertCircleIcon as __icon_AlertCircleIcon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_BANNER_VARIANTS = {\n tone: {\n neutral: { classes: \"bg-fill-1 text-fg\" },\n info: { classes: \"bg-info-tint text-fg\" },\n success: { classes: \"bg-success-tint text-fg\" },\n warning: { classes: \"bg-warning-tint text-fg\" },\n danger: { classes: \"bg-danger-tint text-fg\" },\n },\n layout: {\n inline: { classes: \"rounded-well px-16 py-12\" },\n full: { classes: \"rounded-none px-24 py-10\" },\n },\n} as const;\nexport const KAESO_BANNER_DEFAULT_VARIANTS = { tone: \"neutral\", layout: \"inline\" } as const;\n\nconst ICON: Record<keyof typeof KAESO_BANNER_VARIANTS.tone, IconData> = {\n neutral: __icon_InformationCircleIcon,\n info: __icon_InformationCircleIcon,\n success: __icon_CheckmarkCircle02Icon,\n warning: __icon_Alert02Icon,\n danger: __icon_AlertCircleIcon,\n};\nconst ICON_TONE = {\n neutral: \"text-fg-secondary\",\n info: \"text-info-text\",\n success: \"text-success-text\",\n warning: \"text-warning-text\",\n danger: \"text-danger-text\",\n} as const;\n\nexport interface BannerProps {\n tone?: keyof typeof KAESO_BANNER_VARIANTS.tone | undefined;\n layout?: keyof typeof KAESO_BANNER_VARIANTS.layout | undefined;\n title?: ReactNode | undefined;\n children?: ReactNode | undefined;\n icon?: IconData | undefined;\n actions?: ReactNode | undefined;\n onDismiss?: (() => void) | undefined;\n className?: string | undefined;\n}\n\nexport const Banner = /* @__PURE__ */ forwardRef<HTMLDivElement, BannerProps>(function Banner(\n { tone = \"neutral\", layout = \"inline\", title, children, icon, actions, onDismiss, className },\n ref,\n) {\n const [hidden, setHidden] = useState(false);\n const t = useUiText();\n if (hidden) return null;\n const dismissible = onDismiss && (tone === \"neutral\" || tone === \"info\");\n return (\n <div\n ref={ref}\n role={tone === \"danger\" ? \"alert\" : \"status\"}\n className={cn(\"@container w-full\", KAESO_BANNER_VARIANTS.tone[tone].classes, KAESO_BANNER_VARIANTS.layout[layout].classes, className)}\n >\n <div className={cn(\"flex items-start gap-8\", actions && \"@banner:items-center\")}>\n <div className=\"flex min-w-0 flex-1 flex-col gap-12 @banner:flex-row @banner:items-center @banner:gap-24\">\n <div className=\"flex min-w-0 flex-1 items-start gap-8\">\n <Icon icon={icon ?? ICON[tone]} size=\"sm\" className={cn(\"mt-2\", ICON_TONE[tone])} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2 text-body\">\n {title && <span className=\"font-semibold text-fg\">{title}</span>}\n {children && <div className=\"text-fg text-pretty\">{children}</div>}\n </div>\n </div>\n {actions && <div className=\"ml-24 flex shrink-0 flex-wrap items-center gap-8 @banner:ml-0\">{actions}</div>}\n </div>\n {dismissible && (\n <IconButton\n icon={__icon_Cancel01Icon}\n aria-label={t(\"banner.dismiss\", \"Dismiss\")}\n size=\"xs\"\n className=\"-my-2 -mr-6\"\n onClick={() => {\n setHidden(true);\n onDismiss?.();\n }}\n />\n )}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Banner.displayName = \"Banner\";\n"],"mappings":";;;;;;;;;AAOA,IAAaS,IAAwB;CACnC,MAAM;EACJ,SAAS,EAAE,SAAS,oBAAoB;EACxC,MAAM,EAAE,SAAS,uBAAuB;EACxC,SAAS,EAAE,SAAS,0BAA0B;EAC9C,SAAS,EAAE,SAAS,0BAA0B;EAC9C,QAAQ,EAAE,SAAS,yBAAyB;CAC9C;CACA,QAAQ;EACN,QAAQ,EAAE,SAAS,2BAA2B;EAC9C,MAAM,EAAE,SAAS,2BAA2B;CAC9C;AACF,GACaC,IAAgC;CAAE,MAAM;CAAW,QAAQ;AAAS,GAE3EC,IAAkE;CACtE,SAASX;CACT,MAAMA;CACN,SAASC;CACT,SAASC;CACT,QAAQC;AACV,GACMa,IAAY;CAChB,SAAS;CACT,MAAM;CACN,SAAS;CACT,SAAS;CACT,QAAQ;AACV,GAaaC,IAAyB,kBAAwC,SAC5E,EAAE,UAAO,WAAW,YAAS,UAAU,UAAO,aAAU,SAAM,YAAS,cAAW,gBAClF,GACA;CACA,IAAM,CAACC,GAAQC,KAAaC,EAAS,EAAK,GACpCC,IAAIf,EAAU;CACpB,IAAIY,GAAQ,OAAO;CACnB,IAAMI,IAAcC,MAAcC,MAAS,aAAaA,MAAS;CACjE,OACE,kBAAC,OAAD;EACO;EACL,MAAMA,MAAS,WAAW,UAAU;EACpC,WAAWnB,EAAG,qBAAqBI,EAAsB,KAAKe,EAAK,CAAC,SAASf,EAAsB,OAAOgB,EAAO,CAAC,SAASC,CAAS;EAEpI,UAAA,kBAAC,OAAD;GAAK,WAAWrB,EAAG,0BAA0BsB,KAAW,sBAAsB;GAA9E,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,kBAACpB,GAAD;MAAM,MAAMqB,KAAQjB,EAAKa;MAAO,MAAK;MAAK,WAAWnB,EAAG,QAAQW,EAAUQ,EAAK;KAAI,CAAA,GACnF,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACGK,KAAS,kBAAC,QAAD;OAAM,WAAU;OAAyB,UAAAA;MAAY,CAAA,GAC9DC,KAAY,kBAAC,OAAD;OAAK,WAAU;OAAuB;MAAc,CAAA,CAC9D;KACF,CAAA,CAAA;IACJ,CAAA,GAAAH,KAAW,kBAAC,OAAD;KAAK,WAAU;KAAiE,UAAAA;IAAa,CAAA,CACtG;GACJ,CAAA,GAAAL,KACC,kBAACd,GAAD;IACE,MAAMJ;IACN,cAAYiB,EAAE,kBAAkB,SAAS;IACzC,MAAK;IACL,WAAU;IACV,eAAe;KAEb,AADAF,EAAU,EAAI,GACdI,IAAY;IACd;GACD,CAAA,CAEA;;CACF,CAAA;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc"}
@@ -0,0 +1,164 @@
1
+ "use client";
2
+ import { t as e } from "./cn-CidVUKMm.js";
3
+ import { i as t, r as n } from "./dev-CR1p7gCm.js";
4
+ import { n as r, r as i } from "./link-provider---9JdxTg.js";
5
+ import { t as a } from "./icon-CeNQtobn.js";
6
+ import { i as o } from "./kbd-CBcBDvqU.js";
7
+ import { r as s } from "./tooltip-CDu00nzg.js";
8
+ import { i as c, r as l } from "./loader-CUehxvSZ.js";
9
+ import { r as u } from "./swap-text-BhPI8DOf.js";
10
+ import { forwardRef as d } from "react";
11
+ import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
12
+ //#region src/components/button/button.tsx
13
+ var h = {
14
+ variant: {
15
+ primary: { classes: "material-primary" },
16
+ secondary: { classes: "material-secondary" },
17
+ ghost: { classes: "material-ghost" },
18
+ quiet: { classes: "material-ghost text-fg-secondary hover:text-fg" },
19
+ soft: { classes: "material-soft" },
20
+ danger: { classes: "material-danger" },
21
+ "danger-secondary": { classes: "material-danger-secondary" },
22
+ link: { classes: "bg-transparent text-fg underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current disabled:text-fg-disabled" }
23
+ },
24
+ size: {
25
+ xs: { classes: "h-24 px-10 gap-4 text-caption font-medium" },
26
+ sm: { classes: "h-32 px-12 gap-6 text-body font-medium" },
27
+ md: { classes: "h-36 px-16 gap-6 text-body font-medium" },
28
+ lg: { classes: "h-40 px-18 gap-8 text-body font-medium" },
29
+ xl: { classes: "h-48 px-22 gap-8 text-body-lg font-medium" }
30
+ },
31
+ shape: {
32
+ pill: { classes: "rounded-pill" },
33
+ circle: { classes: "rounded-pill p-0 justify-center" }
34
+ }
35
+ }, g = {
36
+ variant: "secondary",
37
+ size: "md",
38
+ shape: "pill"
39
+ }, _ = {
40
+ xs: "pl-8",
41
+ sm: "pl-10",
42
+ md: "pl-14",
43
+ lg: "pl-16",
44
+ xl: "pl-20"
45
+ }, v = {
46
+ xs: "pr-8",
47
+ sm: "pr-10",
48
+ md: "pr-14",
49
+ lg: "pr-16",
50
+ xl: "pr-20"
51
+ }, y = {
52
+ xs: "size-24",
53
+ sm: "size-32",
54
+ md: "size-36",
55
+ lg: "size-40",
56
+ xl: "size-48"
57
+ }, b = {
58
+ xs: "xs",
59
+ sm: "sm",
60
+ md: "sm",
61
+ lg: "md",
62
+ xl: "lg"
63
+ };
64
+ function x({ variant: t = g.variant, size: n = g.size, shape: r = g.shape, leading: i = !1, trailing: a = !1, fullWidth: o = !1 } = {}) {
65
+ return e("relative inline-flex shrink-0 select-none items-center justify-center whitespace-nowrap no-underline", "cursor-pointer transition-control focus-ring tap-target disabled:cursor-not-allowed", h.size[n].classes, h.shape[r].classes, r === "circle" && y[n], r === "pill" && i && t !== "link" && _[n], r === "pill" && a && t !== "link" && v[n], t === "link" && "-mx-4 px-4", h.variant[t].classes, o && "w-full");
66
+ }
67
+ var S = /* @__PURE__ */ d(function(d, h) {
68
+ let { variant: _ = g.variant, size: v = g.size, loading: y = !1, disabled: S = !1, disabledReason: C, href: w, target: T, rel: E, fullWidth: D, className: O, type: k, onClick: A, ...j } = d, M = i();
69
+ t("Button", O);
70
+ let N = c(y), P = y || N, F = d.shape === "circle", I = b[v], L = I === "xs" ? "xs" : I === "sm" ? "sm" : "md", R = F ? void 0 : d.leadingIcon, z = F ? void 0 : d.trailingIcon, B = F ? void 0 : d.shortcut, V = F ? void 0 : d.count, H = F ? void 0 : d.reserveLabels;
71
+ F && n("Button", !!d["aria-label"]);
72
+ let U = { ...j };
73
+ for (let e of [
74
+ "shape",
75
+ "icon",
76
+ "leadingIcon",
77
+ "trailingIcon",
78
+ "shortcut",
79
+ "count",
80
+ "children",
81
+ "reserveLabels"
82
+ ]) delete U[e];
83
+ let W = !!C && S, G = P || W, K = e(x({
84
+ variant: _,
85
+ size: v,
86
+ shape: F ? "circle" : "pill",
87
+ leading: !!R,
88
+ trailing: !!z || !!B || V !== void 0,
89
+ fullWidth: !!D
90
+ }), P && "cursor-progress", O), q = F ? N ? /* @__PURE__ */ p(l, { size: L }) : /* @__PURE__ */ p(a, {
91
+ icon: d.icon,
92
+ size: I
93
+ }) : /* @__PURE__ */ m(f, { children: [
94
+ N && R ? /* @__PURE__ */ p(l, { size: L }) : R ? /* @__PURE__ */ p(a, {
95
+ icon: R,
96
+ size: I
97
+ }) : null,
98
+ /* @__PURE__ */ p("span", {
99
+ className: e("inline-flex min-w-0 items-center", N && !R && "opacity-0"),
100
+ children: H ? /* @__PURE__ */ p(u, {
101
+ reserve: H,
102
+ children: d.children
103
+ }) : d.children
104
+ }),
105
+ V !== void 0 && /* @__PURE__ */ p("span", {
106
+ className: e("inline-flex h-20 min-w-20 items-center justify-center rounded-pill px-6 text-caption font-medium tabular", _ === "primary" ? "bg-on-ink/15 text-on-ink" : _ === "danger" ? "bg-on-danger/20 text-on-danger" : "bg-fill-2 text-fg-secondary"),
107
+ children: V
108
+ }),
109
+ B && /* @__PURE__ */ p(o, {
110
+ keys: B,
111
+ tone: _ === "primary" || _ === "danger" ? "onInk" : "default"
112
+ }),
113
+ z && /* @__PURE__ */ p(a, {
114
+ icon: z,
115
+ size: I
116
+ }),
117
+ N && !R && /* @__PURE__ */ p(l, {
118
+ size: L,
119
+ className: "absolute inset-0 m-auto"
120
+ })
121
+ ] }), J = (e) => {
122
+ G ? e.preventDefault() : A?.(e);
123
+ }, Y;
124
+ if (w && !S) {
125
+ let e = r(w);
126
+ Y = /* @__PURE__ */ p(M, {
127
+ ref: h,
128
+ href: w,
129
+ className: K,
130
+ ...T ? { target: T } : e ? { target: "_blank" } : {},
131
+ ...E ? { rel: E } : e ? { rel: "noopener noreferrer" } : {},
132
+ ...U,
133
+ ...P ? {
134
+ "aria-busy": !0,
135
+ "data-loading": ""
136
+ } : {},
137
+ onClick: J,
138
+ children: q
139
+ });
140
+ } else Y = /* @__PURE__ */ p("button", {
141
+ ref: h,
142
+ type: k ?? "button",
143
+ className: K,
144
+ disabled: S && !W,
145
+ ...U,
146
+ ...W ? { "aria-disabled": !0 } : {},
147
+ ...P ? {
148
+ "aria-busy": !0,
149
+ "data-loading": ""
150
+ } : {},
151
+ ...W ? { "data-disabled": "" } : {},
152
+ onClick: J,
153
+ children: q
154
+ });
155
+ return C && S ? /* @__PURE__ */ p(s, {
156
+ content: C,
157
+ children: Y
158
+ }) : Y;
159
+ });
160
+ process.env.NODE_ENV !== "production" && (S.displayName = "Button");
161
+ //#endregion
162
+ export { x as a, h as i, S as n, g as r, b as t };
163
+
164
+ //# sourceMappingURL=button-BHKAE6ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-BHKAE6ui.js","names":["_Fragment","cn","warnStylingClassName","warnMissingName","isExternalHref","useLinkComponent","Icon","KbdSequence","Tooltip","useDelayedLoading","Spinner","SwapText","Fragment$1","KAESO_BUTTON_VARIANTS","KAESO_BUTTON_DEFAULT_VARIANTS","LEADING_ICON_PADDING","TRAILING_ICON_PADDING","CIRCLE","BUTTON_ICON_SIZE","buttonClasses","size","shape","leading","variant","trailing","fullWidth","Button","rest","props","LinkComp","className","spinning","loading","busy","isCircle","iconSize","spinnerSize","leadingIcon","trailingIcon","shortcut","count","reserveLabels","domProps","k","softDisabled","disabledReason","disabled","inert","classes","content","handleClick","onClick","el","href","external","target","rel","type"],"sources":["../../src/components/button/button.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type MouseEvent, type ReactElement, type ReactNode, type Ref } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useLinkComponent, isExternalHref } from \"../../utils/link-provider.js\";\nimport { warnMissingName, warnStylingClassName } from \"../../utils/dev.js\";\nimport { Icon, type IconData, type IconSize } from \"../icon/icon.js\";\nimport { Spinner, useDelayedLoading } from \"../loader/loader.js\";\nimport { KbdSequence } from \"../kbd/kbd.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { SwapText } from \"../swap-text/swap-text.js\";\n\nexport const KAESO_BUTTON_VARIANTS = {\n variant: {\n primary: { classes: \"material-primary\" },\n secondary: { classes: \"material-secondary\" },\n ghost: { classes: \"material-ghost\" },\n quiet: {\n classes: \"material-ghost text-fg-secondary hover:text-fg\",\n },\n soft: { classes: \"material-soft\" },\n danger: { classes: \"material-danger\" },\n \"danger-secondary\": { classes: \"material-danger-secondary\" },\n link: {\n classes: \"bg-transparent text-fg underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current disabled:text-fg-disabled\",\n },\n },\n size: {\n xs: { classes: \"h-24 px-10 gap-4 text-caption font-medium\" },\n sm: { classes: \"h-32 px-12 gap-6 text-body font-medium\" },\n md: { classes: \"h-36 px-16 gap-6 text-body font-medium\" },\n lg: { classes: \"h-40 px-18 gap-8 text-body font-medium\" },\n xl: { classes: \"h-48 px-22 gap-8 text-body-lg font-medium\" },\n },\n shape: {\n pill: { classes: \"rounded-pill\" },\n circle: { classes: \"rounded-pill p-0 justify-center\" },\n },\n} as const;\nexport const KAESO_BUTTON_DEFAULT_VARIANTS = { variant: \"secondary\", size: \"md\", shape: \"pill\" } as const;\n\nexport type ButtonVariant = keyof typeof KAESO_BUTTON_VARIANTS.variant;\nexport type ButtonSize = keyof typeof KAESO_BUTTON_VARIANTS.size;\nexport type ButtonShape = keyof typeof KAESO_BUTTON_VARIANTS.shape;\n\nconst LEADING_ICON_PADDING: Record<ButtonSize, string> = { xs: \"pl-8\", sm: \"pl-10\", md: \"pl-14\", lg: \"pl-16\", xl: \"pl-20\" };\nconst TRAILING_ICON_PADDING: Record<ButtonSize, string> = { xs: \"pr-8\", sm: \"pr-10\", md: \"pr-14\", lg: \"pr-16\", xl: \"pr-20\" };\nconst CIRCLE: Record<ButtonSize, string> = { xs: \"size-24\", sm: \"size-32\", md: \"size-36\", lg: \"size-40\", xl: \"size-48\" };\nexport const BUTTON_ICON_SIZE: Record<ButtonSize, IconSize> = { xs: \"xs\", sm: \"sm\", md: \"sm\", lg: \"md\", xl: \"lg\" };\n\nexport function buttonClasses({\n variant = KAESO_BUTTON_DEFAULT_VARIANTS.variant,\n size = KAESO_BUTTON_DEFAULT_VARIANTS.size,\n shape = KAESO_BUTTON_DEFAULT_VARIANTS.shape,\n leading = false,\n trailing = false,\n fullWidth = false,\n}: {\n variant?: ButtonVariant | undefined;\n size?: ButtonSize | undefined;\n shape?: ButtonShape | undefined;\n leading?: boolean | undefined;\n trailing?: boolean | undefined;\n fullWidth?: boolean | undefined;\n} = {}) {\n return cn(\n \"relative inline-flex shrink-0 select-none items-center justify-center whitespace-nowrap no-underline\",\n \"cursor-pointer transition-control focus-ring tap-target disabled:cursor-not-allowed\",\n KAESO_BUTTON_VARIANTS.size[size].classes,\n KAESO_BUTTON_VARIANTS.shape[shape].classes,\n shape === \"circle\" && CIRCLE[size],\n shape === \"pill\" && leading && variant !== \"link\" && LEADING_ICON_PADDING[size],\n shape === \"pill\" && trailing && variant !== \"link\" && TRAILING_ICON_PADDING[size],\n variant === \"link\" && \"-mx-4 px-4\",\n KAESO_BUTTON_VARIANTS.variant[variant].classes,\n fullWidth && \"w-full\",\n );\n}\n\ninterface CommonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n variant?: ButtonVariant | undefined;\n size?: ButtonSize | undefined;\n loading?: boolean | undefined;\n disabledReason?: string | undefined;\n href?: string | undefined;\n target?: string | undefined;\n rel?: string | undefined;\n fullWidth?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport interface PillButtonProps extends CommonProps {\n shape?: \"pill\" | undefined;\n children: ReactNode;\n leadingIcon?: IconData | undefined;\n trailingIcon?: IconData | undefined;\n shortcut?: string[] | string[][] | undefined;\n count?: number | undefined;\n reserveLabels?: ReactNode[] | undefined;\n}\n\nexport interface CircleButtonProps extends CommonProps {\n shape: \"circle\";\n icon: IconData;\n \"aria-label\": string;\n children?: never | undefined;\n}\n\nexport type ButtonProps = PillButtonProps | CircleButtonProps;\n\nexport const Button = /* @__PURE__ */ forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>(function Button(props, ref) {\n const {\n variant = KAESO_BUTTON_DEFAULT_VARIANTS.variant,\n size = KAESO_BUTTON_DEFAULT_VARIANTS.size,\n loading = false,\n disabled = false,\n disabledReason,\n href,\n target,\n rel,\n fullWidth,\n className,\n type,\n onClick,\n ...rest\n } = props;\n const LinkComp = useLinkComponent();\n warnStylingClassName(\"Button\", className);\n\n const spinning = useDelayedLoading(loading);\n const busy = loading || spinning;\n const isCircle = props.shape === \"circle\";\n const iconSize = BUTTON_ICON_SIZE[size];\n const spinnerSize = iconSize === \"xs\" ? \"xs\" : iconSize === \"sm\" ? \"sm\" : \"md\";\n const leadingIcon = !isCircle ? (props as PillButtonProps).leadingIcon : undefined;\n const trailingIcon = !isCircle ? (props as PillButtonProps).trailingIcon : undefined;\n const shortcut = !isCircle ? (props as PillButtonProps).shortcut : undefined;\n const count = !isCircle ? (props as PillButtonProps).count : undefined;\n const reserveLabels = !isCircle ? (props as PillButtonProps).reserveLabels : undefined;\n if (isCircle) warnMissingName(\"Button\", !!(props as CircleButtonProps)[\"aria-label\"]);\n\n const domProps = { ...rest } as Record<string, unknown>;\n for (const k of [\"shape\", \"icon\", \"leadingIcon\", \"trailingIcon\", \"shortcut\", \"count\", \"children\", \"reserveLabels\"]) delete domProps[k];\n\n const softDisabled = !!disabledReason && disabled;\n const inert = busy || softDisabled;\n const classes = cn(\n buttonClasses({\n variant,\n size,\n shape: isCircle ? \"circle\" : \"pill\",\n leading: !!leadingIcon,\n trailing: !!trailingIcon || !!shortcut || count !== undefined,\n fullWidth: !!fullWidth,\n }),\n busy && \"cursor-progress\",\n className,\n );\n\n const content = isCircle ? (\n spinning ? (\n <Spinner size={spinnerSize} />\n ) : (\n <Icon icon={(props as CircleButtonProps).icon} size={iconSize} />\n )\n ) : (\n <>\n {spinning && leadingIcon ? <Spinner size={spinnerSize} /> : leadingIcon ? <Icon icon={leadingIcon} size={iconSize} /> : null}\n <span className={cn(\"inline-flex min-w-0 items-center\", spinning && !leadingIcon && \"opacity-0\")}>\n {reserveLabels ? <SwapText reserve={reserveLabels}>{(props as PillButtonProps).children}</SwapText> : (props as PillButtonProps).children}\n </span>\n {count !== undefined && (\n <span\n className={cn(\n \"inline-flex h-20 min-w-20 items-center justify-center rounded-pill px-6 text-caption font-medium tabular\",\n variant === \"primary\" ? \"bg-on-ink/15 text-on-ink\" : variant === \"danger\" ? \"bg-on-danger/20 text-on-danger\" : \"bg-fill-2 text-fg-secondary\",\n )}\n >\n {count}\n </span>\n )}\n {shortcut && <KbdSequence keys={shortcut} tone={variant === \"primary\" || variant === \"danger\" ? \"onInk\" : \"default\"} />}\n {trailingIcon && <Icon icon={trailingIcon} size={iconSize} />}\n {spinning && !leadingIcon && <Spinner size={spinnerSize} className=\"absolute inset-0 m-auto\" />}\n </>\n );\n\n const handleClick = (e: MouseEvent<HTMLButtonElement & HTMLAnchorElement>) => {\n if (inert) {\n e.preventDefault();\n return;\n }\n onClick?.(e as MouseEvent<HTMLButtonElement>);\n };\n\n let el: ReactNode;\n if (href && !disabled) {\n const external = isExternalHref(href);\n el = (\n <LinkComp\n ref={ref as Ref<HTMLAnchorElement>}\n href={href}\n className={classes}\n {...(target ? { target } : external ? { target: \"_blank\" } : {})}\n {...(rel ? { rel } : external ? { rel: \"noopener noreferrer\" } : {})}\n {...(domProps as object)}\n {...(busy ? { \"aria-busy\": true, \"data-loading\": \"\" } : {})}\n onClick={handleClick}\n >\n {content}\n </LinkComp>\n );\n } else {\n el = (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type={type ?? \"button\"}\n className={classes}\n disabled={disabled && !softDisabled}\n {...(domProps as object)}\n {...(softDisabled ? { \"aria-disabled\": true } : {})}\n {...(busy ? { \"aria-busy\": true, \"data-loading\": \"\" } : {})}\n {...(softDisabled ? { \"data-disabled\": \"\" } : {})}\n onClick={handleClick}\n >\n {content}\n </button>\n );\n }\n\n if (disabledReason && disabled) {\n return <Tooltip content={disabledReason}>{el as ReactElement}</Tooltip>;\n }\n return el;\n});\nif (process.env.NODE_ENV !== \"production\") Button.displayName = \"Button\";\n"],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ "use client";
2
+ import { i as e, r as t } from "./context-BELWW79w.js";
3
+ import { t as n } from "./icon-CeNQtobn.js";
4
+ import { useMemo as r } from "react";
5
+ import { jsx as i } from "react/jsx-runtime";
6
+ import { ArrowDown01Icon as a, ArrowLeft01Icon as o, ArrowRight01Icon as s } from "@hugeicons/core-free-icons";
7
+ import { DayPicker as c } from "react-day-picker";
8
+ //#region src/components/calendar/calendar.tsx
9
+ var l = { mode: {
10
+ single: { classes: "" },
11
+ range: { classes: "" }
12
+ } }, u = { mode: "single" }, d = {
13
+ root: "k-cal relative select-none",
14
+ months: "flex gap-24",
15
+ month: "flex flex-col gap-8",
16
+ month_caption: "flex h-32 items-center px-8 text-body font-semibold text-fg",
17
+ caption_label: "",
18
+ nav: "absolute top-0 right-0 flex items-center gap-2",
19
+ button_previous: "inline-flex size-32 items-center justify-center rounded-pill text-fg-secondary transition-control hover:bg-fill-1 hover:text-fg focus-ring disabled:opacity-40",
20
+ button_next: "inline-flex size-32 items-center justify-center rounded-pill text-fg-secondary transition-control hover:bg-fill-1 hover:text-fg focus-ring disabled:opacity-40",
21
+ month_grid: "border-collapse",
22
+ weekdays: "",
23
+ weekday: "h-32 w-36 text-caption font-medium text-fg-tertiary",
24
+ weeks: "",
25
+ week: "",
26
+ day: "k-day",
27
+ day_button: "",
28
+ selected: "k-selected",
29
+ today: "k-today",
30
+ outside: "k-outside",
31
+ disabled: "k-disabled",
32
+ range_start: "k-range-start",
33
+ range_middle: "k-range-middle",
34
+ range_end: "k-range-end",
35
+ hidden: "invisible",
36
+ focused: "",
37
+ chevron: "",
38
+ footer: ""
39
+ };
40
+ function f({ orientation: e }) {
41
+ return /* @__PURE__ */ i(n, {
42
+ icon: e === "left" ? o : e === "right" ? s : a,
43
+ size: "sm"
44
+ });
45
+ }
46
+ function p(e, t) {
47
+ let n = new Intl.DateTimeFormat(e, {
48
+ month: "long",
49
+ year: "numeric"
50
+ }), r = new Intl.DateTimeFormat(e, { weekday: "short" }), i = new Intl.DateTimeFormat(e, { weekday: "long" }), a = new Intl.DateTimeFormat(e, { dateStyle: "full" });
51
+ return {
52
+ lang: e,
53
+ formatters: {
54
+ formatCaption: (e) => n.format(e),
55
+ formatWeekdayName: (e) => r.format(e).replace(/\.$/, "")
56
+ },
57
+ labels: {
58
+ labelPrevious: () => t("calendar.previousMonth", "Go to the Previous Month"),
59
+ labelNext: () => t("calendar.nextMonth", "Go to the Next Month"),
60
+ labelNav: () => t("calendar.navigation", "Navigation bar"),
61
+ labelGrid: (e) => n.format(e),
62
+ labelWeekday: (e) => i.format(e),
63
+ labelDayButton: (e, n) => {
64
+ let r = a.format(e);
65
+ return n.today && (r = t("calendar.today", "Today, {date}", { date: r })), n.selected && (r = t("calendar.selected", "{date}, selected", { date: r })), r;
66
+ }
67
+ }
68
+ };
69
+ }
70
+ function m({ mode: n = "single", selected: a, onSelect: o, month: s, defaultMonth: l, onMonthChange: u, numberOfMonths: m = 1, weekStartsOn: h = 1, disabled: g, className: _ }) {
71
+ let v = t(), y = e(), b = {
72
+ ...r(() => v === "en" ? {} : p(v, y), [v, y]),
73
+ classNames: m > 1 ? {
74
+ ...d,
75
+ outside: "k-outside invisible"
76
+ } : d,
77
+ components: { Chevron: f },
78
+ weekStartsOn: h,
79
+ numberOfMonths: m,
80
+ showOutsideDays: !0,
81
+ fixedWeeks: !0,
82
+ ...s ? { month: s } : {},
83
+ ...l ? { defaultMonth: l } : {},
84
+ ...u ? { onMonthChange: u } : {},
85
+ ...g ? { disabled: g } : {},
86
+ ..._ ? { className: _ } : {}
87
+ };
88
+ return n === "range" ? /* @__PURE__ */ i(c, {
89
+ mode: "range",
90
+ selected: a,
91
+ onSelect: (e) => o?.(e),
92
+ ...b
93
+ }) : /* @__PURE__ */ i(c, {
94
+ mode: "single",
95
+ selected: a,
96
+ onSelect: (e) => o?.(e),
97
+ ...b
98
+ });
99
+ }
100
+ process.env.NODE_ENV !== "production" && (m.displayName = "Calendar");
101
+ //#endregion
102
+ export { u as n, l as r, m as t };
103
+
104
+ //# sourceMappingURL=calendar-B5SSTE56.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar-B5SSTE56.js","names":["__icon_ArrowLeft01Icon","__icon_ArrowRight01Icon","__icon_ArrowDown01Icon","useUiText","useLocale","Icon","KAESO_CALENDAR_VARIANTS","KAESO_CALENDAR_DEFAULT_VARIANTS","CAL_CLASSES","Chevron","orientation","ArrowLeft01Icon","ArrowRight01Icon","ArrowDown01Icon","localized","monthYear","locale","weekdayShort","weekdayLong","full","month","weekday","label","date","modifiers","Calendar","t","common","useMemo","numberOfMonths","defaultMonth","onMonthChange","disabled","className","mode","DayPicker","onSelect","r","d"],"sources":["../../src/components/calendar/calendar.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { DayPicker, type DateRange, type Formatters, type Labels } from \"react-day-picker\";\nimport { Icon } from \"../icon/icon.js\";\nimport { ArrowLeft01Icon as __icon_ArrowLeft01Icon, ArrowRight01Icon as __icon_ArrowRight01Icon, ArrowDown01Icon as __icon_ArrowDown01Icon } from \"@hugeicons/core-free-icons\";\nimport { useLocale, useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_CALENDAR_VARIANTS = {\n mode: {\n single: { classes: \"\" },\n range: { classes: \"\" },\n },\n} as const;\nexport const KAESO_CALENDAR_DEFAULT_VARIANTS = { mode: \"single\" } as const;\n\nconst CAL_CLASSES = {\n root: \"k-cal relative select-none\",\n months: \"flex gap-24\",\n month: \"flex flex-col gap-8\",\n month_caption: \"flex h-32 items-center px-8 text-body font-semibold text-fg\",\n caption_label: \"\",\n nav: \"absolute top-0 right-0 flex items-center gap-2\",\n button_previous:\n \"inline-flex size-32 items-center justify-center rounded-pill text-fg-secondary transition-control hover:bg-fill-1 hover:text-fg focus-ring disabled:opacity-40\",\n button_next:\n \"inline-flex size-32 items-center justify-center rounded-pill text-fg-secondary transition-control hover:bg-fill-1 hover:text-fg focus-ring disabled:opacity-40\",\n month_grid: \"border-collapse\",\n weekdays: \"\",\n weekday: \"h-32 w-36 text-caption font-medium text-fg-tertiary\",\n weeks: \"\",\n week: \"\",\n day: \"k-day\",\n day_button: \"\",\n selected: \"k-selected\",\n today: \"k-today\",\n outside: \"k-outside\",\n disabled: \"k-disabled\",\n range_start: \"k-range-start\",\n range_middle: \"k-range-middle\",\n range_end: \"k-range-end\",\n hidden: \"invisible\",\n focused: \"\",\n chevron: \"\",\n footer: \"\",\n};\n\nfunction Chevron({ orientation }: { orientation?: \"left\" | \"right\" | \"up\" | \"down\" | undefined }) {\n return <Icon icon={orientation === \"left\" ? __icon_ArrowLeft01Icon : orientation === \"right\" ? __icon_ArrowRight01Icon : __icon_ArrowDown01Icon} size=\"sm\" />;\n}\n\nfunction localized(locale: string, t: UiText): { formatters: Partial<Formatters>; labels: Partial<Labels>; lang: string } {\n const monthYear = new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" });\n const weekdayShort = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n const weekdayLong = new Intl.DateTimeFormat(locale, { weekday: \"long\" });\n const full = new Intl.DateTimeFormat(locale, { dateStyle: \"full\" });\n return {\n lang: locale,\n formatters: {\n formatCaption: (month) => monthYear.format(month),\n formatWeekdayName: (weekday) => weekdayShort.format(weekday).replace(/\\.$/, \"\"),\n },\n labels: {\n labelPrevious: () => t(\"calendar.previousMonth\", \"Go to the Previous Month\"),\n labelNext: () => t(\"calendar.nextMonth\", \"Go to the Next Month\"),\n labelNav: () => t(\"calendar.navigation\", \"Navigation bar\"),\n labelGrid: (month) => monthYear.format(month),\n labelWeekday: (weekday) => weekdayLong.format(weekday),\n labelDayButton: (date, modifiers) => {\n let label = full.format(date);\n if (modifiers.today) label = t(\"calendar.today\", \"Today, {date}\", { date: label });\n if (modifiers.selected) label = t(\"calendar.selected\", \"{date}, selected\", { date: label });\n return label;\n },\n },\n };\n}\n\nexport interface CalendarProps {\n mode?: keyof typeof KAESO_CALENDAR_VARIANTS.mode | undefined;\n selected?: Date | DateRange | undefined;\n onSelect?: ((value: Date | DateRange | undefined) => void) | undefined;\n month?: Date | undefined;\n defaultMonth?: Date | undefined;\n onMonthChange?: ((month: Date) => void) | undefined;\n numberOfMonths?: number | undefined;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;\n disabled?: ((date: Date) => boolean) | undefined;\n className?: string | undefined;\n}\n\nexport function Calendar({\n mode = \"single\",\n selected,\n onSelect,\n month,\n defaultMonth,\n onMonthChange,\n numberOfMonths = 1,\n weekStartsOn = 1,\n disabled,\n className,\n}: CalendarProps) {\n const locale = useLocale();\n const t = useUiText();\n const language = useMemo(() => (locale === \"en\" ? {} : localized(locale, t)), [locale, t]);\n const common = {\n ...language,\n classNames: numberOfMonths > 1 ? { ...CAL_CLASSES, outside: \"k-outside invisible\" } : CAL_CLASSES,\n components: { Chevron },\n weekStartsOn,\n numberOfMonths,\n showOutsideDays: true,\n fixedWeeks: true,\n ...(month ? { month } : {}),\n ...(defaultMonth ? { defaultMonth } : {}),\n ...(onMonthChange ? { onMonthChange } : {}),\n ...(disabled ? { disabled } : {}),\n ...(className ? { className } : {}),\n };\n if (mode === \"range\") {\n return <DayPicker mode=\"range\" selected={selected as DateRange | undefined} onSelect={(r) => onSelect?.(r)} {...common} />;\n }\n return <DayPicker mode=\"single\" selected={selected as Date | undefined} onSelect={(d) => onSelect?.(d)} {...common} />;\n}\nif (process.env.NODE_ENV !== \"production\") Calendar.displayName = \"Calendar\";\n"],"mappings":"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"}