@logicplanes/kaeso-ui 0.4.3 → 0.4.5

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 (490) hide show
  1. package/ai/component-guides.md +279 -98
  2. package/ai/component-registry.json +352 -236
  3. package/ai/component-registry.md +241 -219
  4. package/ai/icons.md +2 -2
  5. package/ai/tokens.md +18 -14
  6. package/dist/blocks/delete-resource.js +3 -3
  7. package/dist/blocks/delete-resource.js.map +1 -1
  8. package/dist/blocks/pages.js +47 -42
  9. package/dist/blocks/pages.js.map +1 -1
  10. package/dist/blocks/resource-list.js +68 -55
  11. package/dist/blocks/resource-list.js.map +1 -1
  12. package/dist/chunks/agent-avatar-DHieggHK.js +188 -0
  13. package/dist/chunks/agent-avatar-DHieggHK.js.map +1 -0
  14. package/dist/chunks/app-frame-DysOel2X.js +232 -0
  15. package/dist/chunks/app-frame-DysOel2X.js.map +1 -0
  16. package/dist/chunks/arrow-focus-B0KdRFX8.js +20 -0
  17. package/dist/chunks/arrow-focus-B0KdRFX8.js.map +1 -0
  18. package/dist/chunks/avatar-CYNMK7uY.js +110 -0
  19. package/dist/chunks/avatar-CYNMK7uY.js.map +1 -0
  20. package/dist/chunks/badge-C0GC3B9X.js +27 -0
  21. package/dist/chunks/badge-C0GC3B9X.js.map +1 -0
  22. package/dist/chunks/banner-B3DGLTBu.js +88 -0
  23. package/dist/chunks/banner-B3DGLTBu.js.map +1 -0
  24. package/dist/chunks/button-IblhXUyZ.js +202 -0
  25. package/dist/chunks/button-IblhXUyZ.js.map +1 -0
  26. package/dist/chunks/{calendar-BWaf2MXc.js → calendar-Dc6_dl0f.js} +4 -4
  27. package/dist/chunks/calendar-Dc6_dl0f.js.map +1 -0
  28. package/dist/chunks/checkbox-9tbimmF3.js +141 -0
  29. package/dist/chunks/checkbox-9tbimmF3.js.map +1 -0
  30. package/dist/chunks/{cn-Dj6sRgkF.js → cn-BjnOAUrA.js} +45 -4
  31. package/dist/chunks/cn-BjnOAUrA.js.map +1 -0
  32. package/dist/chunks/code-block-64e-Cy1S.js +346 -0
  33. package/dist/chunks/code-block-64e-Cy1S.js.map +1 -0
  34. package/dist/chunks/code-block-KIvuE8jg.js +352 -0
  35. package/dist/chunks/code-block-KIvuE8jg.js.map +1 -0
  36. package/dist/chunks/{code-tqj0uhBL.js → code-xqjww4Pv.js} +5 -6
  37. package/dist/chunks/code-xqjww4Pv.js.map +1 -0
  38. package/dist/chunks/combobox-DkcjkWc6.js +352 -0
  39. package/dist/chunks/combobox-DkcjkWc6.js.map +1 -0
  40. package/dist/chunks/command-list-CypqsC4T.js +456 -0
  41. package/dist/chunks/command-list-CypqsC4T.js.map +1 -0
  42. package/dist/chunks/{copy-button-FJvPJn72.js → copy-button-CwU8t_9_.js} +22 -15
  43. package/dist/chunks/copy-button-CwU8t_9_.js.map +1 -0
  44. package/dist/chunks/core-CmK-8ObW.js +505 -0
  45. package/dist/chunks/core-CmK-8ObW.js.map +1 -0
  46. package/dist/chunks/data-table-CqY8_6IS.js +581 -0
  47. package/dist/chunks/data-table-CqY8_6IS.js.map +1 -0
  48. package/dist/chunks/date-popup-DAnjptFt.js +58 -0
  49. package/dist/chunks/date-popup-DAnjptFt.js.map +1 -0
  50. package/dist/chunks/{de-CPXJh9cq.js → de-CqC4aSIV.js} +81 -40
  51. package/dist/chunks/de-CqC4aSIV.js.map +1 -0
  52. package/dist/chunks/{dialog-Cg9A_6SF.js → dialog-2zb6ClNR.js} +156 -134
  53. package/dist/chunks/dialog-2zb6ClNR.js.map +1 -0
  54. package/dist/chunks/disclosure-BtYRTDO3.js +22 -0
  55. package/dist/chunks/disclosure-BtYRTDO3.js.map +1 -0
  56. package/dist/chunks/domain-obd_w9xk.js +28 -0
  57. package/dist/chunks/domain-obd_w9xk.js.map +1 -0
  58. package/dist/chunks/{empty-DvhyMXQq.js → empty-BpiUgGzm.js} +2 -2
  59. package/dist/chunks/{empty-DvhyMXQq.js.map → empty-BpiUgGzm.js.map} +1 -1
  60. package/dist/chunks/{field-TviMvYa2.js → field-D7m-yl-D.js} +37 -34
  61. package/dist/chunks/field-D7m-yl-D.js.map +1 -0
  62. package/dist/chunks/{icon-D7ja-_Yk.js → icon-CBzOwqrX.js} +7 -6
  63. package/dist/chunks/{icon-D7ja-_Yk.js.map → icon-CBzOwqrX.js.map} +1 -1
  64. package/dist/chunks/icon-CPJWE2N-.js +95 -0
  65. package/dist/chunks/{icon-DVooQfk4.js.map → icon-CPJWE2N-.js.map} +1 -1
  66. package/dist/chunks/{icon-button-CrdF_eMG.js → icon-button-Dfwpvmav.js} +7 -6
  67. package/dist/chunks/icon-button-Dfwpvmav.js.map +1 -0
  68. package/dist/chunks/{identity-BmhQ6BQ-.js → identity-3Foi5F8w.js} +7 -7
  69. package/dist/chunks/{identity-BmhQ6BQ-.js.map → identity-3Foi5F8w.js.map} +1 -1
  70. package/dist/chunks/{input-2VJuj_M4.js → input-Bo5-UZg2.js} +15 -9
  71. package/dist/chunks/input-Bo5-UZg2.js.map +1 -0
  72. package/dist/chunks/{input-group-DQ_4DoXg.js → input-group-jPcK9T_a.js} +42 -29
  73. package/dist/chunks/input-group-jPcK9T_a.js.map +1 -0
  74. package/dist/chunks/iso-field-DoqHBg8n.js +52 -0
  75. package/dist/chunks/iso-field-DoqHBg8n.js.map +1 -0
  76. package/dist/chunks/json-view-DZ2nL2Ir.js +253 -0
  77. package/dist/chunks/json-view-DZ2nL2Ir.js.map +1 -0
  78. package/dist/chunks/{kbd-BF1vKXJf.js → kbd-8A0ML_up.js} +30 -28
  79. package/dist/chunks/kbd-8A0ML_up.js.map +1 -0
  80. package/dist/chunks/label-DW24Aj0Z.js +26 -0
  81. package/dist/chunks/label-DW24Aj0Z.js.map +1 -0
  82. package/dist/chunks/{link-KWI7PevW.js → link-CMjkcLQK.js} +14 -14
  83. package/dist/chunks/link-CMjkcLQK.js.map +1 -0
  84. package/dist/chunks/list-B4G-sWwV.js +540 -0
  85. package/dist/chunks/list-B4G-sWwV.js.map +1 -0
  86. package/dist/chunks/{loader-DCfPndXa.js → loader-zo8CCIGJ.js} +2 -2
  87. package/dist/chunks/{loader-DCfPndXa.js.map → loader-zo8CCIGJ.js.map} +1 -1
  88. package/dist/chunks/markdown-C565aBR7.js +338 -0
  89. package/dist/chunks/markdown-C565aBR7.js.map +1 -0
  90. package/dist/chunks/menu-Clvv6ftq.js +485 -0
  91. package/dist/chunks/menu-Clvv6ftq.js.map +1 -0
  92. package/dist/chunks/merge-refs-BN1FyQt9.js +20 -0
  93. package/dist/chunks/merge-refs-BN1FyQt9.js.map +1 -0
  94. package/dist/chunks/meter-CASMHlxl.js +100 -0
  95. package/dist/chunks/meter-CASMHlxl.js.map +1 -0
  96. package/dist/chunks/nav-sheet-Dt6JSvzX.js +67 -0
  97. package/dist/chunks/nav-sheet-Dt6JSvzX.js.map +1 -0
  98. package/dist/chunks/{nav-wordmark-_pjheAsZ.js → nav-wordmark-J4pB_vjr.js} +4 -8
  99. package/dist/chunks/nav-wordmark-J4pB_vjr.js.map +1 -0
  100. package/dist/chunks/page-header-kS5tdmvb.js +45 -0
  101. package/dist/chunks/page-header-kS5tdmvb.js.map +1 -0
  102. package/dist/chunks/pagination-D7fAm8qg.js +147 -0
  103. package/dist/chunks/pagination-D7fAm8qg.js.map +1 -0
  104. package/dist/chunks/picker-popover-1FHb1LQG.js +119 -0
  105. package/dist/chunks/picker-popover-1FHb1LQG.js.map +1 -0
  106. package/dist/chunks/popover-Bl5QYqnh.js +51 -0
  107. package/dist/chunks/popover-Bl5QYqnh.js.map +1 -0
  108. package/dist/chunks/{portal-context-BBbzDKmY.js → portal-context-CTatR2Z8.js} +14 -4
  109. package/dist/chunks/portal-context-CTatR2Z8.js.map +1 -0
  110. package/dist/chunks/{radio-CDDFpdtL.js → radio-C6GtzF_t.js} +38 -23
  111. package/dist/chunks/radio-C6GtzF_t.js.map +1 -0
  112. package/dist/chunks/range-popup-lGiZsG3s.js +160 -0
  113. package/dist/chunks/range-popup-lGiZsG3s.js.map +1 -0
  114. package/dist/chunks/reasoning-frame-C3HdQRRS.js +51 -0
  115. package/dist/chunks/reasoning-frame-C3HdQRRS.js.map +1 -0
  116. package/dist/chunks/release-art-ChiT4T2S.js +582 -0
  117. package/dist/chunks/release-art-ChiT4T2S.js.map +1 -0
  118. package/dist/chunks/rights-B68ocZuq.js +312 -0
  119. package/dist/chunks/rights-B68ocZuq.js.map +1 -0
  120. package/dist/chunks/{scroll-area-D8MD7Vpo.js → scroll-area-_Ljh4-bG.js} +11 -6
  121. package/dist/chunks/scroll-area-_Ljh4-bG.js.map +1 -0
  122. package/dist/chunks/section-CFBYhsUi.js +77 -0
  123. package/dist/chunks/section-CFBYhsUi.js.map +1 -0
  124. package/dist/chunks/section-header-DU1Q4Tdf.js +28 -0
  125. package/dist/chunks/section-header-DU1Q4Tdf.js.map +1 -0
  126. package/dist/chunks/segmented-D9i1avik.js +119 -0
  127. package/dist/chunks/segmented-D9i1avik.js.map +1 -0
  128. package/dist/chunks/select-BqjmQOqx.js +222 -0
  129. package/dist/chunks/select-BqjmQOqx.js.map +1 -0
  130. package/dist/chunks/{separator-D7TzNHmX.js → separator-BNWf6BBj.js} +13 -8
  131. package/dist/chunks/separator-BNWf6BBj.js.map +1 -0
  132. package/dist/chunks/sidebar-Dq7oGOje.js +664 -0
  133. package/dist/chunks/sidebar-Dq7oGOje.js.map +1 -0
  134. package/dist/chunks/{sidebar-menu-BN3jkTlK.js → sidebar-menu-QSSNu1jJ.js} +2 -2
  135. package/dist/chunks/{sidebar-menu-BN3jkTlK.js.map → sidebar-menu-QSSNu1jJ.js.map} +1 -1
  136. package/dist/chunks/{skeleton-Dcz57Zyp.js → skeleton-D-qk3mes.js} +3 -3
  137. package/dist/chunks/skeleton-D-qk3mes.js.map +1 -0
  138. package/dist/chunks/slider-CcE8GtuV.js +58 -0
  139. package/dist/chunks/slider-CcE8GtuV.js.map +1 -0
  140. package/dist/chunks/{status-dot-QJTF0Yv4.js → status-dot-CP6runiC.js} +4 -4
  141. package/dist/chunks/{status-dot-QJTF0Yv4.js.map → status-dot-CP6runiC.js.map} +1 -1
  142. package/dist/chunks/{styles-CVJU9t9v.js → styles-hkFkoBbi.js} +2 -2
  143. package/dist/chunks/{styles-CVJU9t9v.js.map → styles-hkFkoBbi.js.map} +1 -1
  144. package/dist/chunks/{swap-text-Dr0Irxz6.js → swap-text-SlUjrTlG.js} +3 -3
  145. package/dist/chunks/swap-text-SlUjrTlG.js.map +1 -0
  146. package/dist/chunks/switch-ngywMQdl.js +76 -0
  147. package/dist/chunks/switch-ngywMQdl.js.map +1 -0
  148. package/dist/chunks/table-CTK5E0J7.js +102 -0
  149. package/dist/chunks/table-CTK5E0J7.js.map +1 -0
  150. package/dist/chunks/tag-BGr6lTSV.js +100 -0
  151. package/dist/chunks/tag-BGr6lTSV.js.map +1 -0
  152. package/dist/chunks/{text-CIXH8rmT.js → text-DkKdTVUf.js} +9 -9
  153. package/dist/chunks/text-DkKdTVUf.js.map +1 -0
  154. package/dist/chunks/{textarea--4FRL3Pb.js → textarea-CO0HP6fK.js} +47 -36
  155. package/dist/chunks/textarea-CO0HP6fK.js.map +1 -0
  156. package/dist/chunks/timeseries-Ck-q0wWn.js +381 -0
  157. package/dist/chunks/timeseries-Ck-q0wWn.js.map +1 -0
  158. package/dist/chunks/toolbar-u0Gm7Q7-.js +61 -0
  159. package/dist/chunks/toolbar-u0Gm7Q7-.js.map +1 -0
  160. package/dist/chunks/tooltip-Tkm-urbi.js +202 -0
  161. package/dist/chunks/tooltip-Tkm-urbi.js.map +1 -0
  162. package/dist/chunks/tooltip-root-BC_RNNiP.js +70 -0
  163. package/dist/chunks/tooltip-root-BC_RNNiP.js.map +1 -0
  164. package/dist/chunks/truncated-d1afmUJT.js +33 -0
  165. package/dist/chunks/truncated-d1afmUJT.js.map +1 -0
  166. package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js +28 -0
  167. package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js.map +1 -0
  168. package/dist/chunks/use-hydrating-COtYVRo4.js +8 -0
  169. package/dist/chunks/use-hydrating-COtYVRo4.js.map +1 -0
  170. package/dist/chunks/use-scroll-fade-uc8mWSDX.js +30 -0
  171. package/dist/chunks/use-scroll-fade-uc8mWSDX.js.map +1 -0
  172. package/dist/chunks/{zh-CN-29X4CDLE.js → zh-CN-BlpsT6d_.js} +80 -39
  173. package/dist/chunks/zh-CN-BlpsT6d_.js.map +1 -0
  174. package/dist/components/agent-avatar.js +1 -1
  175. package/dist/components/app-frame.js +2 -2
  176. package/dist/components/avatar.js +1 -1
  177. package/dist/components/badge.js +1 -1
  178. package/dist/components/banner.js +1 -1
  179. package/dist/components/button-group.js +22 -22
  180. package/dist/components/button-group.js.map +1 -1
  181. package/dist/components/button.js +1 -1
  182. package/dist/components/calendar.js +1 -1
  183. package/dist/components/charts/bar.js +235 -160
  184. package/dist/components/charts/bar.js.map +1 -1
  185. package/dist/components/charts/donut.js +144 -99
  186. package/dist/components/charts/donut.js.map +1 -1
  187. package/dist/components/charts/gauge.js +61 -49
  188. package/dist/components/charts/gauge.js.map +1 -1
  189. package/dist/components/charts/heatmap.js +179 -70
  190. package/dist/components/charts/heatmap.js.map +1 -1
  191. package/dist/components/charts/sankey.js +144 -77
  192. package/dist/components/charts/sankey.js.map +1 -1
  193. package/dist/components/charts/sparkline.js +54 -38
  194. package/dist/components/charts/sparkline.js.map +1 -1
  195. package/dist/components/charts/timeseries.js +1 -1
  196. package/dist/components/charts.js +2 -2
  197. package/dist/components/checkbox.js +1 -1
  198. package/dist/components/code-block.js +4 -3
  199. package/dist/components/code.js +1 -1
  200. package/dist/components/collapsible.js +77 -1
  201. package/dist/components/collapsible.js.map +1 -0
  202. package/dist/components/combobox.js +1 -1
  203. package/dist/components/command-list.js +2 -2
  204. package/dist/components/command-palette.js +89 -66
  205. package/dist/components/command-palette.js.map +1 -1
  206. package/dist/components/copy-button.js +1 -1
  207. package/dist/components/data-table.js +1 -459
  208. package/dist/components/date-picker.js +162 -151
  209. package/dist/components/date-picker.js.map +1 -1
  210. package/dist/components/dialog.js +74 -63
  211. package/dist/components/dialog.js.map +1 -1
  212. package/dist/components/display-options.js +76 -64
  213. package/dist/components/display-options.js.map +1 -1
  214. package/dist/components/empty.js +1 -1
  215. package/dist/components/field.js +1 -1
  216. package/dist/components/figure.js +2 -2
  217. package/dist/components/filter-chip.js +36 -27
  218. package/dist/components/filter-chip.js.map +1 -1
  219. package/dist/components/filter-row.js +4 -4
  220. package/dist/components/filter-row.js.map +1 -1
  221. package/dist/components/flow.js +94 -63
  222. package/dist/components/flow.js.map +1 -1
  223. package/dist/components/heading.js +1 -1
  224. package/dist/components/icon-button.js +1 -1
  225. package/dist/components/icon.js +2 -2
  226. package/dist/components/input.js +176 -98
  227. package/dist/components/input.js.map +1 -1
  228. package/dist/components/kaeso/conversation.js +51 -46
  229. package/dist/components/kaeso/conversation.js.map +1 -1
  230. package/dist/components/kaeso/identity.js +1 -1
  231. package/dist/components/kaeso/moments.js +23 -20
  232. package/dist/components/kaeso/moments.js.map +1 -1
  233. package/dist/components/kaeso/rights.js +1 -1
  234. package/dist/components/kaeso/usage.js +90 -74
  235. package/dist/components/kaeso/usage.js.map +1 -1
  236. package/dist/components/kaeso.js +200 -187
  237. package/dist/components/kaeso.js.map +1 -1
  238. package/dist/components/kbd.js +1 -1
  239. package/dist/components/key-value.js +32 -47
  240. package/dist/components/key-value.js.map +1 -1
  241. package/dist/components/label.js +1 -25
  242. package/dist/components/layout.js +2 -2
  243. package/dist/components/layout.js.map +1 -1
  244. package/dist/components/link.js +1 -1
  245. package/dist/components/list.js +1 -1
  246. package/dist/components/loader.js +11 -10
  247. package/dist/components/loader.js.map +1 -1
  248. package/dist/components/logo.js +2 -2
  249. package/dist/components/markdown.js +1 -1
  250. package/dist/components/menu.js +2 -2
  251. package/dist/components/meter.js +1 -1
  252. package/dist/components/page-header.js +1 -1
  253. package/dist/components/pagination.js +1 -1
  254. package/dist/components/playground.js +644 -529
  255. package/dist/components/playground.js.map +1 -1
  256. package/dist/components/popover.js +4 -4
  257. package/dist/components/popover.js.map +1 -1
  258. package/dist/components/portal.js +1 -1
  259. package/dist/components/qr-code.js +2 -2
  260. package/dist/components/qr-code.js.map +1 -1
  261. package/dist/components/radio.js +1 -1
  262. package/dist/components/release-art.js +1 -1
  263. package/dist/components/scroll-area.js +1 -1
  264. package/dist/components/section.js +1 -1
  265. package/dist/components/segmented.js +1 -1
  266. package/dist/components/select.js +1 -1
  267. package/dist/components/separator.js +1 -1
  268. package/dist/components/settings.js +39 -46
  269. package/dist/components/settings.js.map +1 -1
  270. package/dist/components/sheet.js +10 -9
  271. package/dist/components/sheet.js.map +1 -1
  272. package/dist/components/sidebar.js +1 -1
  273. package/dist/components/skeleton.js +1 -1
  274. package/dist/components/slider.js +1 -1
  275. package/dist/components/stat.js +98 -84
  276. package/dist/components/stat.js.map +1 -1
  277. package/dist/components/status-dot.js +1 -1
  278. package/dist/components/surface.js +1 -1
  279. package/dist/components/swap-text.js +1 -1
  280. package/dist/components/switch.js +1 -1
  281. package/dist/components/table.js +1 -1
  282. package/dist/components/tabs.js +73 -55
  283. package/dist/components/tabs.js.map +1 -1
  284. package/dist/components/tag.js +1 -1
  285. package/dist/components/text.js +1 -1
  286. package/dist/components/theme-image.js +1 -1
  287. package/dist/components/theme-menu.js +5 -2
  288. package/dist/components/theme-menu.js.map +1 -1
  289. package/dist/components/theme-select.js +1 -1
  290. package/dist/components/thumbnail.js +35 -24
  291. package/dist/components/thumbnail.js.map +1 -1
  292. package/dist/components/timeline.js +51 -35
  293. package/dist/components/timeline.js.map +1 -1
  294. package/dist/components/toast.js +76 -66
  295. package/dist/components/toast.js.map +1 -1
  296. package/dist/components/toc.js +14 -8
  297. package/dist/components/toc.js.map +1 -1
  298. package/dist/components/toolbar.js +1 -1
  299. package/dist/components/tooltip.js +1 -1
  300. package/dist/components/visually-hidden.js +1 -1
  301. package/dist/i18n-provider.js +1 -1
  302. package/dist/index.js +101 -101
  303. package/dist/kaeso.css +605 -67
  304. package/dist/styles.css +1 -1
  305. package/dist/tailwind.css +1 -1
  306. package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -2
  307. package/dist/types/components/agent-avatar/agent-avatar.d.ts +24 -19
  308. package/dist/types/components/badge/badge.d.ts +3 -3
  309. package/dist/types/components/banner/banner.d.ts +3 -3
  310. package/dist/types/components/button/button.d.ts +2 -2
  311. package/dist/types/components/button-group/button-group.d.ts +1 -1
  312. package/dist/types/components/charts/domain.d.ts +11 -0
  313. package/dist/types/components/charts/marks.d.ts +1 -0
  314. package/dist/types/components/code/code.d.ts +3 -3
  315. package/dist/types/components/code-block/diff-view.d.ts +30 -0
  316. package/dist/types/components/code-block/diff.d.ts +26 -0
  317. package/dist/types/components/code-block/docs.d.ts +14 -0
  318. package/dist/types/components/code-block/index.d.ts +1 -0
  319. package/dist/types/components/code-block/json-view.d.ts +2 -1
  320. package/dist/types/components/code-block/numbers.d.ts +1 -0
  321. package/dist/types/components/collapsible/collapsible.d.ts +2 -2
  322. package/dist/types/components/collapsible/disclosure.d.ts +2 -0
  323. package/dist/types/components/data-table/data-table.d.ts +6 -5
  324. package/dist/types/components/data-table/docs.d.ts +1 -0
  325. package/dist/types/components/data-table/time-columns.d.ts +1 -0
  326. package/dist/types/components/date-picker/focus-day.d.ts +1 -0
  327. package/dist/types/components/date-picker/iso-field.d.ts +8 -1
  328. package/dist/types/components/dialog/dialog.d.ts +7 -7
  329. package/dist/types/components/field/field.d.ts +1 -1
  330. package/dist/types/components/flow/flow.d.ts +1 -1
  331. package/dist/types/components/icon-button/icon-button.d.ts +1 -1
  332. package/dist/types/components/input/input-group.d.ts +2 -0
  333. package/dist/types/components/input/number-input.d.ts +4 -4
  334. package/dist/types/components/input/otp-input.d.ts +3 -3
  335. package/dist/types/components/kaeso/client-button.d.ts +2 -1
  336. package/dist/types/components/kaeso/provider-picker.d.ts +1 -0
  337. package/dist/types/components/kaeso/rights.d.ts +1 -1
  338. package/dist/types/components/kaeso/role-picker.d.ts +1 -0
  339. package/dist/types/components/key-value/key-value.d.ts +2 -2
  340. package/dist/types/components/layout/layout.d.ts +2 -2
  341. package/dist/types/components/link/link.d.ts +4 -4
  342. package/dist/types/components/list/list.d.ts +2 -2
  343. package/dist/types/components/menu/menu.d.ts +2 -1
  344. package/dist/types/components/menu/styles.d.ts +3 -3
  345. package/dist/types/components/meter/meter.d.ts +3 -3
  346. package/dist/types/components/page-header/page-header.d.ts +1 -1
  347. package/dist/types/components/pagination/pagination.d.ts +2 -2
  348. package/dist/types/components/playground/prompt-suggestions.d.ts +1 -0
  349. package/dist/types/components/playground/reasoning-frame.d.ts +14 -0
  350. package/dist/types/components/playground/reasoning.d.ts +1 -0
  351. package/dist/types/components/popover/popover.d.ts +1 -1
  352. package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
  353. package/dist/types/components/section/section-header.d.ts +6 -0
  354. package/dist/types/components/segmented/segmented.d.ts +1 -0
  355. package/dist/types/components/select/select.d.ts +1 -1
  356. package/dist/types/components/sheet/sheet.d.ts +3 -3
  357. package/dist/types/components/sidebar/sidebar.d.ts +1 -0
  358. package/dist/types/components/slider/slider.d.ts +2 -2
  359. package/dist/types/components/stat/stat.d.ts +1 -1
  360. package/dist/types/components/tabs/tabs.d.ts +6 -4
  361. package/dist/types/components/text/truncated.d.ts +7 -0
  362. package/dist/types/components/timeline/timeline.d.ts +5 -5
  363. package/dist/types/components/toc/toc.d.ts +1 -1
  364. package/dist/types/components/toolbar/toolbar.d.ts +1 -1
  365. package/dist/types/components/tooltip/tooltip.d.ts +2 -2
  366. package/dist/types/components/tooltip/trigger-props.d.ts +1 -0
  367. package/dist/types/hooks/use-coarse-pointer.d.ts +1 -0
  368. package/dist/types/hooks/use-hydrating.d.ts +1 -0
  369. package/dist/types/icons/groups.d.ts +1 -1
  370. package/dist/types/icons/vocabulary.d.ts +5 -0
  371. package/dist/types/utils/arrow-focus.d.ts +4 -1
  372. package/dist/types/utils/cn.d.ts +33 -0
  373. package/dist/types/utils/portal-context.d.ts +7 -1
  374. package/dist/utils.js +2 -2
  375. package/foundations/accessibility.md +3 -2
  376. package/foundations/color.md +5 -1
  377. package/foundations/elevation.md +1 -0
  378. package/foundations/motion.md +1 -1
  379. package/foundations/shape.md +2 -2
  380. package/foundations/typography.md +12 -12
  381. package/package.json +2 -2
  382. package/dist/chunks/agent-avatar-0pdBTWkR.js +0 -171
  383. package/dist/chunks/agent-avatar-0pdBTWkR.js.map +0 -1
  384. package/dist/chunks/app-frame-DogGRmsu.js +0 -221
  385. package/dist/chunks/app-frame-DogGRmsu.js.map +0 -1
  386. package/dist/chunks/arrow-focus-BcySmwwU.js +0 -11
  387. package/dist/chunks/arrow-focus-BcySmwwU.js.map +0 -1
  388. package/dist/chunks/avatar-CWbdwbJv.js +0 -83
  389. package/dist/chunks/avatar-CWbdwbJv.js.map +0 -1
  390. package/dist/chunks/badge-C2KtxCLB.js +0 -26
  391. package/dist/chunks/badge-C2KtxCLB.js.map +0 -1
  392. package/dist/chunks/banner-BA2ALw9M.js +0 -85
  393. package/dist/chunks/banner-BA2ALw9M.js.map +0 -1
  394. package/dist/chunks/button-CzuxqawA.js +0 -164
  395. package/dist/chunks/button-CzuxqawA.js.map +0 -1
  396. package/dist/chunks/calendar-BWaf2MXc.js.map +0 -1
  397. package/dist/chunks/checkbox-CQjwCPkc.js +0 -126
  398. package/dist/chunks/checkbox-CQjwCPkc.js.map +0 -1
  399. package/dist/chunks/cn-Dj6sRgkF.js.map +0 -1
  400. package/dist/chunks/code-block-D5A-CGXG.js +0 -330
  401. package/dist/chunks/code-block-D5A-CGXG.js.map +0 -1
  402. package/dist/chunks/code-tqj0uhBL.js.map +0 -1
  403. package/dist/chunks/collapsible-CKrCX_T9.js +0 -87
  404. package/dist/chunks/collapsible-CKrCX_T9.js.map +0 -1
  405. package/dist/chunks/combobox-DjDI7SUC.js +0 -319
  406. package/dist/chunks/combobox-DjDI7SUC.js.map +0 -1
  407. package/dist/chunks/command-list-C2Y7V_lt.js +0 -418
  408. package/dist/chunks/command-list-C2Y7V_lt.js.map +0 -1
  409. package/dist/chunks/copy-button-FJvPJn72.js.map +0 -1
  410. package/dist/chunks/core-BYns5ytV.js +0 -472
  411. package/dist/chunks/core-BYns5ytV.js.map +0 -1
  412. package/dist/chunks/date-popup-CPA_zt6o.js +0 -35
  413. package/dist/chunks/date-popup-CPA_zt6o.js.map +0 -1
  414. package/dist/chunks/de-CPXJh9cq.js.map +0 -1
  415. package/dist/chunks/dialog-Cg9A_6SF.js.map +0 -1
  416. package/dist/chunks/field-TviMvYa2.js.map +0 -1
  417. package/dist/chunks/hidden-description-B2zSmLcn.js +0 -23
  418. package/dist/chunks/hidden-description-B2zSmLcn.js.map +0 -1
  419. package/dist/chunks/icon-DVooQfk4.js +0 -94
  420. package/dist/chunks/icon-button-CrdF_eMG.js.map +0 -1
  421. package/dist/chunks/input-2VJuj_M4.js.map +0 -1
  422. package/dist/chunks/input-group-DQ_4DoXg.js.map +0 -1
  423. package/dist/chunks/iso-field-B2rTwiBo.js +0 -33
  424. package/dist/chunks/iso-field-B2rTwiBo.js.map +0 -1
  425. package/dist/chunks/json-view-Dqd2TDkc.js +0 -175
  426. package/dist/chunks/json-view-Dqd2TDkc.js.map +0 -1
  427. package/dist/chunks/kbd-BF1vKXJf.js.map +0 -1
  428. package/dist/chunks/link-KWI7PevW.js.map +0 -1
  429. package/dist/chunks/list-M1csq-d4.js +0 -494
  430. package/dist/chunks/list-M1csq-d4.js.map +0 -1
  431. package/dist/chunks/markdown-DULktoTK.js +0 -313
  432. package/dist/chunks/markdown-DULktoTK.js.map +0 -1
  433. package/dist/chunks/menu-DEmBfdPm.js +0 -450
  434. package/dist/chunks/menu-DEmBfdPm.js.map +0 -1
  435. package/dist/chunks/meter-Bj4N3Xuh.js +0 -84
  436. package/dist/chunks/meter-Bj4N3Xuh.js.map +0 -1
  437. package/dist/chunks/nav-sheet-CzgIwgAm.js +0 -60
  438. package/dist/chunks/nav-sheet-CzgIwgAm.js.map +0 -1
  439. package/dist/chunks/nav-wordmark-_pjheAsZ.js.map +0 -1
  440. package/dist/chunks/page-header-DL2y2iZp.js +0 -41
  441. package/dist/chunks/page-header-DL2y2iZp.js.map +0 -1
  442. package/dist/chunks/pagination-Cn_qF4cg.js +0 -86
  443. package/dist/chunks/pagination-Cn_qF4cg.js.map +0 -1
  444. package/dist/chunks/picker-popover-BxyU1U9F.js +0 -106
  445. package/dist/chunks/picker-popover-BxyU1U9F.js.map +0 -1
  446. package/dist/chunks/popover-DNN4S47w.js +0 -50
  447. package/dist/chunks/popover-DNN4S47w.js.map +0 -1
  448. package/dist/chunks/portal-context-BBbzDKmY.js.map +0 -1
  449. package/dist/chunks/radio-CDDFpdtL.js.map +0 -1
  450. package/dist/chunks/range-popup-CRyWYUB1.js +0 -128
  451. package/dist/chunks/range-popup-CRyWYUB1.js.map +0 -1
  452. package/dist/chunks/release-art-ZwfFQImt.js +0 -561
  453. package/dist/chunks/release-art-ZwfFQImt.js.map +0 -1
  454. package/dist/chunks/rights-Cyp0Pzp-.js +0 -279
  455. package/dist/chunks/rights-Cyp0Pzp-.js.map +0 -1
  456. package/dist/chunks/scroll-area-D8MD7Vpo.js.map +0 -1
  457. package/dist/chunks/scroll-parent-WXvzQcUo.js +0 -14
  458. package/dist/chunks/scroll-parent-WXvzQcUo.js.map +0 -1
  459. package/dist/chunks/section-Ce1efbsP.js +0 -87
  460. package/dist/chunks/section-Ce1efbsP.js.map +0 -1
  461. package/dist/chunks/segmented-CErcoxwi.js +0 -114
  462. package/dist/chunks/segmented-CErcoxwi.js.map +0 -1
  463. package/dist/chunks/select-x4XVsdCI.js +0 -210
  464. package/dist/chunks/select-x4XVsdCI.js.map +0 -1
  465. package/dist/chunks/separator-D7TzNHmX.js.map +0 -1
  466. package/dist/chunks/sidebar-3r1ZRXlN.js +0 -621
  467. package/dist/chunks/sidebar-3r1ZRXlN.js.map +0 -1
  468. package/dist/chunks/skeleton-Dcz57Zyp.js.map +0 -1
  469. package/dist/chunks/slider-Ci83PGtj.js +0 -57
  470. package/dist/chunks/slider-Ci83PGtj.js.map +0 -1
  471. package/dist/chunks/swap-text-Dr0Irxz6.js.map +0 -1
  472. package/dist/chunks/switch-BNMq_kGt.js +0 -59
  473. package/dist/chunks/switch-BNMq_kGt.js.map +0 -1
  474. package/dist/chunks/table-BeOSKl_3.js +0 -84
  475. package/dist/chunks/table-BeOSKl_3.js.map +0 -1
  476. package/dist/chunks/tag-D_M1s2qS.js +0 -87
  477. package/dist/chunks/tag-D_M1s2qS.js.map +0 -1
  478. package/dist/chunks/text-CIXH8rmT.js.map +0 -1
  479. package/dist/chunks/textarea--4FRL3Pb.js.map +0 -1
  480. package/dist/chunks/timeseries-D1xjRXfk.js +0 -339
  481. package/dist/chunks/timeseries-D1xjRXfk.js.map +0 -1
  482. package/dist/chunks/toolbar-WA_oZgu-.js +0 -37
  483. package/dist/chunks/toolbar-WA_oZgu-.js.map +0 -1
  484. package/dist/chunks/tooltip-OcwO0VUT.js +0 -154
  485. package/dist/chunks/tooltip-OcwO0VUT.js.map +0 -1
  486. package/dist/chunks/tooltip-root-DzahJDVj.js +0 -60
  487. package/dist/chunks/tooltip-root-DzahJDVj.js.map +0 -1
  488. package/dist/chunks/zh-CN-29X4CDLE.js.map +0 -1
  489. package/dist/components/data-table.js.map +0 -1
  490. package/dist/components/label.js.map +0 -1
@@ -0,0 +1,312 @@
1
+ "use client";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
+ import { a as t, o as n } from "./inset-BUzyXLK4.js";
4
+ import { i as r } from "./context-BELWW79w.js";
5
+ import { t as i } from "./icon-CBzOwqrX.js";
6
+ import { r as a } from "./tooltip-Tkm-urbi.js";
7
+ import { o } from "./input-Bo5-UZg2.js";
8
+ import { n as s } from "./checkbox-9tbimmF3.js";
9
+ import { r as c } from "./combobox-DkcjkWc6.js";
10
+ import { t as l } from "./empty-BpiUgGzm.js";
11
+ import { t as u } from "./truncated-d1afmUJT.js";
12
+ import { t as d } from "./badge-C0GC3B9X.js";
13
+ import { forwardRef as f, useEffect as p, useId as m, useLayoutEffect as h, useMemo as g, useRef as _, useState as v } from "react";
14
+ import { jsx as y, jsxs as b } from "react/jsx-runtime";
15
+ import { Alert02Icon as x, MinusSignIcon as S, Tick02Icon as C } from "@hugeicons/core-free-icons";
16
+ //#region src/components/kaeso/rights-logic.ts
17
+ function w(e, t, n) {
18
+ let r = new Map(e.map((e) => [e.code, e])), i = /* @__PURE__ */ new Map();
19
+ for (let t of e) for (let e of t.requires ?? []) i.set(e, [...i.get(e) ?? [], t.code]);
20
+ let a = [{
21
+ code: t,
22
+ granted: n
23
+ }], o = /* @__PURE__ */ new Set([t]), s = [t];
24
+ for (; s.length;) {
25
+ let e = s.shift(), t = n ? r.get(e)?.requires ?? [] : i.get(e) ?? [];
26
+ for (let e of t) {
27
+ if (o.has(e)) continue;
28
+ o.add(e);
29
+ let t = r.get(e);
30
+ t && !t.disabled && (s.push(e), t.granted !== n && a.push({
31
+ code: e,
32
+ granted: n
33
+ }));
34
+ }
35
+ }
36
+ return a;
37
+ }
38
+ function T(e, t, n) {
39
+ let r = new Map(e.map((e) => [e.code, e.granted])), i = /* @__PURE__ */ new Map();
40
+ for (let a of t) {
41
+ if (a.disabled || r.get(a.code) === n) continue;
42
+ let t = e.map((e) => ({
43
+ ...e,
44
+ granted: i.get(e.code) ?? e.granted
45
+ }));
46
+ for (let e of w(t, a.code, n)) i.set(e.code, e.granted), r.set(e.code, e.granted);
47
+ }
48
+ return [...i].map(([e, t]) => ({
49
+ code: e,
50
+ granted: t
51
+ }));
52
+ }
53
+ //#endregion
54
+ //#region src/components/kaeso/rights.tsx
55
+ var E = "[role=\"checkbox\"], [data-right-extra]", D = {
56
+ origin: {
57
+ preset: { classes: "text-fg-secondary" },
58
+ added: { classes: "text-success-text" },
59
+ removed: { classes: "text-danger-text" },
60
+ none: { classes: "" }
61
+ },
62
+ mode: {
63
+ edit: { classes: "" },
64
+ readOnly: { classes: "" }
65
+ }
66
+ }, O = {
67
+ origin: "none",
68
+ mode: "edit"
69
+ };
70
+ function k(e) {
71
+ return {
72
+ preset: e("rightsMatrix.fromRole", "From role"),
73
+ added: e("rightsMatrix.added", "Added"),
74
+ removed: e("rightsMatrix.removed", "Removed"),
75
+ none: ""
76
+ };
77
+ }
78
+ var A = (e, ...t) => t.some((t) => t?.toLowerCase().includes(e)), j = /* @__PURE__ */ f(function({ groups: t, onChange: n, onRightsChange: i, readOnly: a, searchable: c, originLabels: u, "aria-label": d, className: f }, x) {
79
+ let S = r(), [C, D] = v(""), [O, j] = v(""), [N, P] = v(() => /* @__PURE__ */ new Set()), F = _(void 0);
80
+ p(() => () => clearTimeout(F.current), []);
81
+ let I = _(null), L = m(), R = g(() => t.flatMap((e) => e.rights), [t]), z = g(() => new Map(R.map((e) => [e.code, e.label ?? e.code])), [R]), B = g(() => {
82
+ if (R.length < 3) return /* @__PURE__ */ new Set();
83
+ let e = new Set(R.flatMap((e) => e.requires ?? []));
84
+ return new Set([...e].filter((e) => R.every((t) => t.code === e || t.requires?.includes(e))));
85
+ }, [R]), V = R.some((e) => e.origin !== void 0), H = {
86
+ ...k(S),
87
+ ...u
88
+ }, U = C.trim().toLowerCase(), W = t.map((e) => !U || A(U, e.label) ? e : {
89
+ ...e,
90
+ rights: e.rights.filter((e) => A(U, e.label, e.code, e.description))
91
+ }).filter((e) => e.rights.length > 0), G = (e) => {
92
+ if (!e.length) return;
93
+ if (i) i(e);
94
+ else if (n) for (let t of e) n(t.code, t.granted);
95
+ let [t, ...r] = e, a = r.map((e) => z.get(e.code) ?? e.code);
96
+ j(a.length && t ? t.granted ? S("rightsMatrix.alsoGranted", "Also granted {rights}", { rights: a.join(S("rightsMatrix.listSeparator", ", ")) }) : S("rightsMatrix.alsoRemoved", "Also removed {rights}", { rights: a.join(S("rightsMatrix.listSeparator", ", ")) }) : ""), clearTimeout(F.current), P(new Set(r.map((e) => e.code))), r.length && (F.current = setTimeout(() => P(/* @__PURE__ */ new Set()), 1200));
97
+ }, [K, q] = v(0), J = _(() => {});
98
+ return J.current = () => {
99
+ let e = I.current;
100
+ if (!e || a) return;
101
+ let t = [...e.querySelectorAll("[role=\"checkbox\"]")], n = t[Math.min(K, t.length - 1)];
102
+ for (let t of e.querySelectorAll(E)) {
103
+ let e = t === n ? "0" : "-1";
104
+ t.getAttribute("tabindex") !== e && t.setAttribute("tabindex", e);
105
+ }
106
+ }, h(() => J.current()), h(() => {
107
+ let e = I.current;
108
+ if (!e || a) return;
109
+ let t = new MutationObserver(() => J.current());
110
+ return t.observe(e, {
111
+ subtree: !0,
112
+ childList: !0,
113
+ attributes: !0,
114
+ attributeFilter: ["tabindex"]
115
+ }), () => t.disconnect();
116
+ }, [a]), /* @__PURE__ */ b("div", {
117
+ ref: (e) => {
118
+ I.current = e, typeof x == "function" ? x(e) : x && (x.current = e);
119
+ },
120
+ role: "group",
121
+ "aria-label": d ?? S("rightsMatrix.rights", "Rights"),
122
+ onKeyDown: (e) => {
123
+ let t = e.target;
124
+ if (!I.current || a || e.altKey || e.metaKey || e.ctrlKey) return;
125
+ let n = [...I.current.querySelectorAll("[role=\"checkbox\"]")], r = t.closest("[data-right]"), i = t.getAttribute("role") === "checkbox" ? t : r?.querySelector("[role=\"checkbox\"]");
126
+ if (!i) return;
127
+ if (t !== i) {
128
+ (e.key === "ArrowLeft" || e.key === "Escape") && (e.preventDefault(), i.focus());
129
+ return;
130
+ }
131
+ let o = n.indexOf(i), s = r?.querySelector("[data-right-extra]"), c = e.key === "ArrowDown" ? n[o + 1] : e.key === "ArrowUp" ? n[o - 1] : e.key === "Home" ? n[0] : e.key === "End" ? n[n.length - 1] : e.key === "ArrowRight" ? s : void 0;
132
+ c && (e.preventDefault(), c.focus());
133
+ },
134
+ onFocus: (e) => {
135
+ let t = [...I.current?.querySelectorAll("[role=\"checkbox\"]") ?? []].indexOf(e.target);
136
+ t >= 0 && t !== K && q(t);
137
+ },
138
+ className: e("@container flex min-w-0 flex-col gap-24", f),
139
+ children: [
140
+ c && /* @__PURE__ */ y(o, {
141
+ className: "w-full",
142
+ "aria-label": S("rightsMatrix.searchRights", "Search rights"),
143
+ placeholder: S("rightsMatrix.searchRights", "Search rights"),
144
+ value: C,
145
+ onChange: (e) => D(e.target.value),
146
+ onClear: () => D("")
147
+ }),
148
+ W.length === 0 && /* @__PURE__ */ y(l, {
149
+ size: "compact",
150
+ title: S("rightsMatrix.noMatch", "No rights match"),
151
+ description: S("rightsMatrix.noMatchHint", "Try a right's name, its code, or a word from its description.")
152
+ }),
153
+ W.map((t, n) => {
154
+ let r = `${L}-g${n}`, i = t.rights.filter((e) => e.granted).length, o = t.rights.filter((e) => !e.disabled), c = o.length > 0 && o.every((e) => e.granted), l = i === t.rights.length;
155
+ return /* @__PURE__ */ b("section", {
156
+ "aria-labelledby": r,
157
+ className: "flex min-w-0 flex-col",
158
+ children: [/* @__PURE__ */ b(a ? "div" : "label", {
159
+ "data-right": "",
160
+ className: e("flex items-start gap-12 px-12 pb-4", !a && o.length > 0 && "cursor-pointer"),
161
+ children: [!a && /* @__PURE__ */ y("span", {
162
+ className: "flex h-20 items-center",
163
+ children: /* @__PURE__ */ y(s, {
164
+ "aria-label": U ? S("rightsMatrix.everyRightShownIn", "Every right shown in {group}", { group: t.label }) : S("rightsMatrix.everyRightIn", "Every right in {group}", { group: t.label }),
165
+ checked: l,
166
+ indeterminate: i > 0 && !l,
167
+ disabled: o.length === 0,
168
+ onCheckedChange: () => G(T(R, t.rights, !c))
169
+ })
170
+ }), /* @__PURE__ */ b("span", {
171
+ className: "flex min-w-0 flex-1 flex-col",
172
+ children: [/* @__PURE__ */ b("span", {
173
+ className: "flex items-baseline justify-between gap-12",
174
+ children: [/* @__PURE__ */ y("span", {
175
+ id: r,
176
+ className: "min-w-0 wrap-break-word text-body font-semibold text-fg",
177
+ children: t.label
178
+ }), /* @__PURE__ */ y("span", {
179
+ className: "shrink-0 text-small text-fg-secondary tabular",
180
+ children: S("rightsMatrix.grantedOfTotal", "{granted} of {total}", {
181
+ granted: i,
182
+ total: t.rights.length
183
+ })
184
+ })]
185
+ }), t.description && /* @__PURE__ */ y("span", {
186
+ className: "text-small text-fg-secondary text-pretty",
187
+ children: t.description
188
+ })]
189
+ })]
190
+ }), t.rights.map((e) => /* @__PURE__ */ y(M, {
191
+ right: e,
192
+ readOnly: !!a,
193
+ query: U,
194
+ hasOrigin: V,
195
+ originText: H,
196
+ names: z,
197
+ universal: B,
198
+ flashed: N.has(e.code),
199
+ onToggle: (t) => G(w(R, e.code, t))
200
+ }, e.code))]
201
+ }, t.label);
202
+ }),
203
+ /* @__PURE__ */ y("span", {
204
+ "aria-live": "polite",
205
+ className: "sr-only",
206
+ children: O
207
+ })
208
+ ]
209
+ });
210
+ });
211
+ process.env.NODE_ENV !== "production" && (j.displayName = "RightsMatrix");
212
+ function M({ right: o, readOnly: l, query: f, hasOrigin: p, originText: h, names: g, universal: _, flashed: v, onToggle: w }) {
213
+ let T = r(), E = t(), O = n(), k = E || O, A = m(), j = m(), M = o.label ?? o.code, N = l ? [] : (o.requires ?? []).filter((e) => !_.has(e)).map((e) => g.get(e) ?? e), P = /* @__PURE__ */ b("span", {
214
+ className: "flex min-w-0 flex-1 flex-col gap-2",
215
+ children: [
216
+ /* @__PURE__ */ b("span", {
217
+ className: "flex min-w-0 items-start gap-8",
218
+ children: [
219
+ /* @__PURE__ */ y("span", {
220
+ id: j,
221
+ className: e("min-w-0 wrap-break-word", o.label ? "text-body font-medium" : "mono text-small", l && !o.granted || o.disabled ? "text-fg-secondary" : "text-fg"),
222
+ children: /* @__PURE__ */ y(c, {
223
+ text: M,
224
+ query: f
225
+ })
226
+ }),
227
+ o.label && /* @__PURE__ */ y("span", {
228
+ className: "hidden h-20 min-w-0 items-center @auth:flex",
229
+ children: /* @__PURE__ */ y(u, {
230
+ className: "min-w-0 mono text-caption text-fg-tertiary",
231
+ children: o.code
232
+ })
233
+ }),
234
+ o.sensitive && /* @__PURE__ */ y("span", {
235
+ className: e("flex shrink-0 items-center", o.label ? "h-20" : "h-18"),
236
+ children: /* @__PURE__ */ y(a, {
237
+ content: T("rightsMatrix.sensitiveHint", "Sensitive: exposes data or is hard to undo"),
238
+ children: /* @__PURE__ */ y("span", {
239
+ tabIndex: 0,
240
+ "data-right-extra": "",
241
+ className: "inline-flex shrink-0 rounded-pill text-warning-text focus-ring",
242
+ children: /* @__PURE__ */ y(i, {
243
+ icon: x,
244
+ size: "sm",
245
+ label: T("rightsMatrix.sensitive", "Sensitive")
246
+ })
247
+ })
248
+ })
249
+ }),
250
+ p && !l && /* @__PURE__ */ y("span", {
251
+ className: e("ml-auto flex max-w-160 min-w-80 shrink-0 items-center justify-end text-right text-small", o.label ? "min-h-20" : "min-h-18", D.origin[o.origin ?? "none"].classes),
252
+ children: /* @__PURE__ */ y(u, { children: h[o.origin ?? "none"] })
253
+ })
254
+ ]
255
+ }),
256
+ /* @__PURE__ */ y("span", {
257
+ id: A,
258
+ className: "text-small text-pretty text-fg-secondary",
259
+ children: o.description
260
+ }),
261
+ N.length > 0 && /* @__PURE__ */ y("span", {
262
+ className: "text-caption text-fg-secondary",
263
+ children: T("rightsMatrix.needs", "Needs {rights}", { rights: N.join(T("rightsMatrix.listSeparator", ", ")) })
264
+ }),
265
+ l && o.granted && !!o.sources?.length && /* @__PURE__ */ y("span", {
266
+ className: "flex flex-wrap gap-4 pt-4",
267
+ children: o.sources.map((e) => e.detail ? /* @__PURE__ */ y(a, {
268
+ content: e.detail,
269
+ children: /* @__PURE__ */ y(d, {
270
+ tabIndex: 0,
271
+ className: "cursor-help underline decoration-dotted underline-offset-2 focus-ring",
272
+ children: e.label
273
+ })
274
+ }, e.label) : /* @__PURE__ */ y(d, { children: e.label }, e.label))
275
+ })
276
+ ]
277
+ });
278
+ if (l) return /* @__PURE__ */ b("div", {
279
+ className: "flex min-h-56 items-start gap-12 px-12 py-8",
280
+ children: [/* @__PURE__ */ y("span", {
281
+ className: "flex h-20 w-18 shrink-0 items-center justify-center",
282
+ children: /* @__PURE__ */ y(i, {
283
+ icon: o.granted ? C : S,
284
+ size: "sm",
285
+ className: o.granted ? "text-fg" : "text-fg-tertiary",
286
+ label: o.granted ? T("rightsMatrix.granted", "Granted") : T("rightsMatrix.notGranted", "Not granted")
287
+ })
288
+ }), P]
289
+ });
290
+ let F = /* @__PURE__ */ b("label", {
291
+ "data-right": "",
292
+ className: e("flex min-h-56 items-start gap-12 rounded-item px-12 py-8 transition-control", o.disabled ? "cursor-not-allowed" : e("cursor-pointer", k ? "hover:bg-raised-hover" : "hover:bg-fill-1"), v && (k ? "bg-raised-pressed hover:bg-raised-pressed" : "bg-fill-2 hover:bg-fill-2")),
293
+ children: [/* @__PURE__ */ y("span", {
294
+ className: "flex h-20 items-center",
295
+ children: /* @__PURE__ */ y(s, {
296
+ checked: o.granted,
297
+ disabled: o.disabled,
298
+ onCheckedChange: w,
299
+ "aria-labelledby": j,
300
+ "aria-describedby": A
301
+ })
302
+ }), P]
303
+ });
304
+ return o.disabled && o.disabledReason ? /* @__PURE__ */ y(a, {
305
+ content: o.disabledReason,
306
+ children: F
307
+ }) : F;
308
+ }
309
+ //#endregion
310
+ export { w as a, T as i, D as n, j as r, O as t };
311
+
312
+ //# sourceMappingURL=rights-B68ocZuq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rights-B68ocZuq.js","names":["__icon_Alert02Icon","__icon_Tick02Icon","__icon_MinusSignIcon","cn","useInset","useRaised","useUiText","Icon","Tooltip","CheckboxBox","Highlight","Empty","TruncatedText","Badge","rightsCascade","byCode","rights","r","dependents","req","out","seen","code","queue","next","linked","granted","c","groupCascade","state","all","group","current","n","g","STOPS","KAESO_RIGHTS_MATRIX_VARIANTS","KAESO_RIGHTS_MATRIX_DEFAULT_VARIANTS","originTexts","t","matches","texts","q","RightsMatrix","ariaLabel","query","setQuery","useState","announcement","setAnnouncement","flashed","setFlashed","flashTimer","useRef","root","baseId","useId","useMemo","groups","names","universal","required","hasOrigins","originText","originLabels","shown","apply","changes","onRightsChange","onChange","first","rest","also","stop","setStop","roving","el","readOnly","boxes","own","w","tabindex","useLayoutEffect","observer","ref","target","row","box","i","extra","className","searchable","SearchInput","headingId","gi","grantedCount","changeable","changeableOn","allOn","RightRow","inset","raised","onRaised","descId","nameId","name","needs","text","Alert02Icon","hasOrigin","s","Tick02Icon","MinusSignIcon","onToggle"],"sources":["../../src/components/kaeso/rights-logic.ts","../../src/components/kaeso/rights.tsx"],"sourcesContent":["export interface RightChange {\n code: string;\n granted: boolean;\n}\n\ninterface Node {\n code: string;\n granted: boolean;\n requires?: string[] | undefined;\n disabled?: boolean | undefined;\n}\n\nexport function rightsCascade(rights: readonly Node[], code: string, granted: boolean): RightChange[] {\n const byCode = new Map(rights.map((r) => [r.code, r]));\n const dependents = new Map<string, string[]>();\n for (const r of rights) for (const req of r.requires ?? []) dependents.set(req, [...(dependents.get(req) ?? []), r.code]);\n const out: RightChange[] = [{ code, granted }];\n const seen = new Set([code]);\n const queue = [code];\n while (queue.length) {\n const next = queue.shift() as string;\n const linked = granted ? (byCode.get(next)?.requires ?? []) : (dependents.get(next) ?? []);\n for (const c of linked) {\n if (seen.has(c)) continue;\n seen.add(c);\n const r = byCode.get(c);\n if (!r || r.disabled) continue;\n queue.push(c);\n if (r.granted !== granted) out.push({ code: c, granted });\n }\n }\n return out;\n}\n\nexport function groupCascade(all: readonly Node[], group: readonly Node[], granted: boolean): RightChange[] {\n const state = new Map(all.map((r) => [r.code, r.granted]));\n const out = new Map<string, boolean>();\n for (const r of group) {\n if (r.disabled || state.get(r.code) === granted) continue;\n const current = all.map((n) => ({ ...n, granted: out.get(n.code) ?? n.granted }));\n for (const c of rightsCascade(current, r.code, granted)) {\n out.set(c.code, c.granted);\n state.set(c.code, c.granted);\n }\n }\n return [...out].map(([code, g]) => ({ code, granted: g }));\n}\n","import { forwardRef, useEffect, useId, useLayoutEffect, useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Alert02Icon as __icon_Alert02Icon, Tick02Icon as __icon_Tick02Icon, MinusSignIcon as __icon_MinusSignIcon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { CheckboxBox } from \"../checkbox/checkbox.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { SearchInput } from \"../input/input.js\";\nimport { Empty } from \"../empty/empty.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { Highlight } from \"../combobox/combobox.js\";\nimport { groupCascade, rightsCascade, type RightChange } from \"./rights-logic.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\nimport { useInset, useRaised } from \"../../utils/inset.js\";\nimport { TruncatedText } from \"../text/truncated.js\";\n\nconst STOPS = '[role=\"checkbox\"], [data-right-extra]';\n\nexport const KAESO_RIGHTS_MATRIX_VARIANTS = {\n origin: {\n preset: { classes: \"text-fg-secondary\" },\n added: { classes: \"text-success-text\" },\n removed: { classes: \"text-danger-text\" },\n none: { classes: \"\" },\n },\n mode: {\n edit: { classes: \"\" },\n readOnly: { classes: \"\" },\n },\n} as const;\nexport const KAESO_RIGHTS_MATRIX_DEFAULT_VARIANTS = { origin: \"none\", mode: \"edit\" } as const;\n\ntype Origin = keyof typeof KAESO_RIGHTS_MATRIX_VARIANTS.origin;\n\nexport interface RightSource {\n label: string;\n detail?: string | undefined;\n}\n\nexport interface Right {\n code: string;\n label?: string | undefined;\n description: string;\n granted: boolean;\n origin?: Origin | undefined;\n sensitive?: boolean | undefined;\n requires?: string[] | undefined;\n sources?: RightSource[] | undefined;\n disabled?: boolean | undefined;\n disabledReason?: string | undefined;\n}\n\nexport interface RightsGroup {\n label: string;\n description?: string | undefined;\n rights: Right[];\n}\n\nexport interface RightsMatrixProps {\n groups: RightsGroup[];\n onChange?: ((code: string, granted: boolean) => void) | undefined;\n onRightsChange?: ((changes: RightChange[]) => void) | undefined;\n readOnly?: boolean | undefined;\n searchable?: boolean | undefined;\n originLabels?: Partial<Record<Origin, string>> | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n}\n\nfunction originTexts(t: UiText): Record<Origin, string> {\n return { preset: t(\"rightsMatrix.fromRole\", \"From role\"), added: t(\"rightsMatrix.added\", \"Added\"), removed: t(\"rightsMatrix.removed\", \"Removed\"), none: \"\" };\n}\n\nconst matches = (q: string, ...texts: (string | undefined)[]) => texts.some((t) => t?.toLowerCase().includes(q));\n\nexport const RightsMatrix = /* @__PURE__ */ forwardRef<HTMLDivElement, RightsMatrixProps>(function RightsMatrix(\n { groups, onChange, onRightsChange, readOnly, searchable, originLabels, \"aria-label\": ariaLabel, className },\n ref,\n) {\n const t = useUiText();\n const [query, setQuery] = useState(\"\");\n const [announcement, setAnnouncement] = useState(\"\");\n const [flashed, setFlashed] = useState<ReadonlySet<string>>(() => new Set());\n const flashTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n useEffect(() => () => clearTimeout(flashTimer.current), []);\n const root = useRef<HTMLDivElement | null>(null);\n const baseId = useId();\n const all = useMemo(() => groups.flatMap((g) => g.rights), [groups]);\n const names = useMemo(() => new Map(all.map((r) => [r.code, r.label ?? r.code])), [all]);\n const universal = useMemo(() => {\n if (all.length < 3) return new Set<string>();\n const required = new Set(all.flatMap((r) => r.requires ?? []));\n return new Set([...required].filter((c) => all.every((r) => r.code === c || r.requires?.includes(c))));\n }, [all]);\n const hasOrigins = all.some((r) => r.origin !== undefined);\n const originText = { ...originTexts(t), ...originLabels };\n const q = query.trim().toLowerCase();\n const shown = groups\n .map((g) => (!q || matches(q, g.label) ? g : { ...g, rights: g.rights.filter((r) => matches(q, r.label, r.code, r.description)) }))\n .filter((g) => g.rights.length > 0);\n\n const apply = (changes: RightChange[]) => {\n if (!changes.length) return;\n if (onRightsChange) onRightsChange(changes);\n else if (onChange) for (const c of changes) onChange(c.code, c.granted);\n const [first, ...rest] = changes;\n const also = rest.map((c) => names.get(c.code) ?? c.code);\n setAnnouncement(\n also.length && first\n ? first.granted\n ? t(\"rightsMatrix.alsoGranted\", \"Also granted {rights}\", { rights: also.join(t(\"rightsMatrix.listSeparator\", \", \")) })\n : t(\"rightsMatrix.alsoRemoved\", \"Also removed {rights}\", { rights: also.join(t(\"rightsMatrix.listSeparator\", \", \")) })\n : \"\",\n );\n clearTimeout(flashTimer.current);\n setFlashed(new Set(rest.map((c) => c.code)));\n if (rest.length) flashTimer.current = setTimeout(() => setFlashed(new Set()), 1200);\n };\n\n const [stop, setStop] = useState(0);\n const roving = useRef(() => {});\n roving.current = () => {\n const el = root.current;\n if (!el || readOnly) return;\n const boxes = [...el.querySelectorAll<HTMLElement>('[role=\"checkbox\"]')];\n const own = boxes[Math.min(stop, boxes.length - 1)];\n for (const w of el.querySelectorAll<HTMLElement>(STOPS)) {\n const tabindex = w === own ? \"0\" : \"-1\";\n if (w.getAttribute(\"tabindex\") !== tabindex) w.setAttribute(\"tabindex\", tabindex);\n }\n };\n useLayoutEffect(() => roving.current());\n useLayoutEffect(() => {\n const el = root.current;\n if (!el || readOnly) return;\n const observer = new MutationObserver(() => roving.current());\n observer.observe(el, { subtree: true, childList: true, attributes: true, attributeFilter: [\"tabindex\"] });\n return () => observer.disconnect();\n }, [readOnly]);\n\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (!root.current || readOnly || e.altKey || e.metaKey || e.ctrlKey) return;\n const boxes = [...root.current.querySelectorAll<HTMLElement>('[role=\"checkbox\"]')];\n const row = target.closest<HTMLElement>(\"[data-right]\");\n const box = target.getAttribute(\"role\") === \"checkbox\" ? target : row?.querySelector<HTMLElement>('[role=\"checkbox\"]');\n if (!box) return;\n if (target !== box) {\n if (e.key === \"ArrowLeft\" || e.key === \"Escape\") {\n e.preventDefault();\n box.focus();\n }\n return;\n }\n const i = boxes.indexOf(box);\n const extra = row?.querySelector<HTMLElement>(\"[data-right-extra]\");\n const next =\n e.key === \"ArrowDown\"\n ? boxes[i + 1]\n : e.key === \"ArrowUp\"\n ? boxes[i - 1]\n : e.key === \"Home\"\n ? boxes[0]\n : e.key === \"End\"\n ? boxes[boxes.length - 1]\n : e.key === \"ArrowRight\"\n ? extra\n : undefined;\n if (!next) return;\n e.preventDefault();\n next.focus();\n };\n\n return (\n <div\n ref={(el) => {\n root.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n role=\"group\"\n aria-label={ariaLabel ?? t(\"rightsMatrix.rights\", \"Rights\")}\n onKeyDown={onKeyDown}\n onFocus={(e) => {\n const boxes = [...(root.current?.querySelectorAll<HTMLElement>('[role=\"checkbox\"]') ?? [])];\n const i = boxes.indexOf(e.target as HTMLElement);\n if (i >= 0 && i !== stop) setStop(i);\n }}\n className={cn(\"@container flex min-w-0 flex-col gap-24\", className)}\n >\n {searchable && (\n <SearchInput\n className=\"w-full\"\n aria-label={t(\"rightsMatrix.searchRights\", \"Search rights\")}\n placeholder={t(\"rightsMatrix.searchRights\", \"Search rights\")}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onClear={() => setQuery(\"\")}\n />\n )}\n {shown.length === 0 && (\n <Empty\n size=\"compact\"\n title={t(\"rightsMatrix.noMatch\", \"No rights match\")}\n description={t(\"rightsMatrix.noMatchHint\", \"Try a right's name, its code, or a word from its description.\")}\n />\n )}\n {shown.map((g, gi) => {\n const headingId = `${baseId}-g${gi}`;\n const grantedCount = g.rights.filter((r) => r.granted).length;\n const changeable = g.rights.filter((r) => !r.disabled);\n const changeableOn = changeable.length > 0 && changeable.every((r) => r.granted);\n const allOn = grantedCount === g.rights.length;\n const Header = readOnly ? \"div\" : \"label\";\n return (\n <section key={g.label} aria-labelledby={headingId} className=\"flex min-w-0 flex-col\">\n <Header data-right=\"\" className={cn(\"flex items-start gap-12 px-12 pb-4\", !readOnly && changeable.length > 0 && \"cursor-pointer\")}>\n {!readOnly && (\n <span className=\"flex h-20 items-center\">\n <CheckboxBox\n aria-label={\n q\n ? t(\"rightsMatrix.everyRightShownIn\", \"Every right shown in {group}\", { group: g.label })\n : t(\"rightsMatrix.everyRightIn\", \"Every right in {group}\", { group: g.label })\n }\n checked={allOn}\n indeterminate={grantedCount > 0 && !allOn}\n disabled={changeable.length === 0}\n onCheckedChange={() => apply(groupCascade(all, g.rights, !changeableOn))}\n />\n </span>\n )}\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"flex items-baseline justify-between gap-12\">\n <span id={headingId} className=\"min-w-0 wrap-break-word text-body font-semibold text-fg\">\n {g.label}\n </span>\n <span className=\"shrink-0 text-small text-fg-secondary tabular\">\n {t(\"rightsMatrix.grantedOfTotal\", \"{granted} of {total}\", { granted: grantedCount, total: g.rights.length })}\n </span>\n </span>\n {g.description && <span className=\"text-small text-fg-secondary text-pretty\">{g.description}</span>}\n </span>\n </Header>\n {g.rights.map((r) => (\n <RightRow\n key={r.code}\n right={r}\n readOnly={!!readOnly}\n query={q}\n hasOrigin={hasOrigins}\n originText={originText}\n names={names}\n universal={universal}\n flashed={flashed.has(r.code)}\n onToggle={(granted) => apply(rightsCascade(all, r.code, granted))}\n />\n ))}\n </section>\n );\n })}\n <span aria-live=\"polite\" className=\"sr-only\">\n {announcement}\n </span>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RightsMatrix.displayName = \"RightsMatrix\";\n\nfunction RightRow({\n right: r,\n readOnly,\n query,\n hasOrigin,\n originText,\n names,\n universal,\n flashed,\n onToggle,\n}: {\n right: Right;\n readOnly: boolean;\n query: string;\n hasOrigin: boolean;\n originText: Record<Origin, string>;\n names: Map<string, string>;\n universal: ReadonlySet<string>;\n flashed: boolean;\n onToggle: (granted: boolean) => void;\n}) {\n const t = useUiText();\n const inset = useInset();\n const raised = useRaised();\n const onRaised = inset || raised;\n const descId = useId();\n const nameId = useId();\n const name = r.label ?? r.code;\n const needs = readOnly ? [] : (r.requires ?? []).filter((c) => !universal.has(c)).map((c) => names.get(c) ?? c);\n const text: ReactNode = (\n <span className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <span className=\"flex min-w-0 items-start gap-8\">\n <span\n id={nameId}\n className={cn(\n \"min-w-0 wrap-break-word\",\n r.label ? \"text-body font-medium\" : \"mono text-small\",\n (readOnly && !r.granted) || r.disabled ? \"text-fg-secondary\" : \"text-fg\",\n )}\n >\n <Highlight text={name} query={query} />\n </span>\n {r.label && (\n <span className=\"hidden h-20 min-w-0 items-center @auth:flex\">\n <TruncatedText className=\"min-w-0 mono text-caption text-fg-tertiary\">{r.code}</TruncatedText>\n </span>\n )}\n {r.sensitive && (\n <span className={cn(\"flex shrink-0 items-center\", r.label ? \"h-20\" : \"h-18\")}>\n <Tooltip content={t(\"rightsMatrix.sensitiveHint\", \"Sensitive: exposes data or is hard to undo\")}>\n <span tabIndex={0} data-right-extra=\"\" className=\"inline-flex shrink-0 rounded-pill text-warning-text focus-ring\">\n <Icon icon={__icon_Alert02Icon} size=\"sm\" label={t(\"rightsMatrix.sensitive\", \"Sensitive\")} />\n </span>\n </Tooltip>\n </span>\n )}\n {hasOrigin && !readOnly && (\n <span\n className={cn(\n \"ml-auto flex max-w-160 min-w-80 shrink-0 items-center justify-end text-right text-small\",\n r.label ? \"min-h-20\" : \"min-h-18\",\n KAESO_RIGHTS_MATRIX_VARIANTS.origin[r.origin ?? \"none\"].classes,\n )}\n >\n <TruncatedText>{originText[r.origin ?? \"none\"]}</TruncatedText>\n </span>\n )}\n </span>\n <span id={descId} className=\"text-small text-pretty text-fg-secondary\">\n {r.description}\n </span>\n {needs.length > 0 && (\n <span className=\"text-caption text-fg-secondary\">\n {t(\"rightsMatrix.needs\", \"Needs {rights}\", { rights: needs.join(t(\"rightsMatrix.listSeparator\", \", \")) })}\n </span>\n )}\n {readOnly && r.granted && !!r.sources?.length && (\n <span className=\"flex flex-wrap gap-4 pt-4\">\n {r.sources.map((s) =>\n s.detail ? (\n <Tooltip key={s.label} content={s.detail}>\n <Badge tabIndex={0} className=\"cursor-help underline decoration-dotted underline-offset-2 focus-ring\">\n {s.label}\n </Badge>\n </Tooltip>\n ) : (\n <Badge key={s.label}>{s.label}</Badge>\n ),\n )}\n </span>\n )}\n </span>\n );\n\n if (readOnly) {\n return (\n <div className=\"flex min-h-56 items-start gap-12 px-12 py-8\">\n <span className=\"flex h-20 w-18 shrink-0 items-center justify-center\">\n <Icon\n icon={r.granted ? __icon_Tick02Icon : __icon_MinusSignIcon}\n size=\"sm\"\n className={r.granted ? \"text-fg\" : \"text-fg-tertiary\"}\n label={r.granted ? t(\"rightsMatrix.granted\", \"Granted\") : t(\"rightsMatrix.notGranted\", \"Not granted\")}\n />\n </span>\n {text}\n </div>\n );\n }\n\n const row = (\n <label\n data-right=\"\"\n className={cn(\n \"flex min-h-56 items-start gap-12 rounded-item px-12 py-8 transition-control\",\n r.disabled ? \"cursor-not-allowed\" : cn(\"cursor-pointer\", onRaised ? \"hover:bg-raised-hover\" : \"hover:bg-fill-1\"),\n flashed && (onRaised ? \"bg-raised-pressed hover:bg-raised-pressed\" : \"bg-fill-2 hover:bg-fill-2\"),\n )}\n >\n <span className=\"flex h-20 items-center\">\n <CheckboxBox checked={r.granted} disabled={r.disabled} onCheckedChange={onToggle} aria-labelledby={nameId} aria-describedby={descId} />\n </span>\n {text}\n </label>\n );\n return r.disabled && r.disabledReason ? <Tooltip content={r.disabledReason}>{row}</Tooltip> : row;\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as e } from "./cn-Dj6sRgkF.js";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
3
  import { forwardRef as t } from "react";
4
4
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
5
  import { CSPProvider as i } from "@base-ui/react/csp-provider";
@@ -8,11 +8,11 @@ import { ScrollArea as a } from "@base-ui/react/scroll-area";
8
8
  var o = { orientation: {
9
9
  vertical: { classes: "scroll-axis-y scroll-fade-y" },
10
10
  horizontal: { classes: "scroll-axis-x scroll-fade-x" },
11
- both: { classes: "scroll-axis-both" }
11
+ both: { classes: "scroll-axis-both scroll-fade-both" }
12
12
  } }, s = { orientation: "vertical" }, c = ({ orientation: t }) => /* @__PURE__ */ n(a.Scrollbar, {
13
13
  orientation: t,
14
- className: e("flex touch-none p-2 opacity-0 select-none transition-control data-hovering:opacity-100 data-scrolling:opacity-100", t === "vertical" ? "w-10" : "h-10 flex-col"),
15
- children: /* @__PURE__ */ n(a.Thumb, { className: "flex-1 rounded-pill bg-line-strong" })
14
+ className: e("group/bar flex touch-none p-2 opacity-0 select-none transition-control data-hovering:opacity-100 data-scrolling:opacity-100", t === "vertical" ? "w-10" : "h-10 flex-col"),
15
+ children: /* @__PURE__ */ n(a.Thumb, { className: "flex-1 rounded-pill bg-line-strong transition-control group-data-hovering/bar:bg-fg-tertiary group-data-scrolling/bar:bg-fg-tertiary forced-line" })
16
16
  }), l = /* @__PURE__ */ t(function({ children: t, orientation: s = "vertical", className: l, viewportClassName: u, "aria-label": d }, f) {
17
17
  return /* @__PURE__ */ n(i, {
18
18
  disableStyleElements: !0,
@@ -21,13 +21,18 @@ var o = { orientation: {
21
21
  className: e("relative min-h-0 overflow-hidden", l),
22
22
  children: [
23
23
  /* @__PURE__ */ n(a.Viewport, {
24
- className: e("size-full focus-ring-inset", o.orientation[s].classes, u),
24
+ className: e("peer/viewport size-full outline-none", o.orientation[s].classes, u),
25
25
  ...d ? {
26
26
  role: "region",
27
27
  "aria-label": d
28
28
  } : {},
29
29
  children: t
30
30
  }),
31
+ /* @__PURE__ */ n("span", {
32
+ "aria-hidden": !0,
33
+ style: { borderRadius: "inherit" },
34
+ className: "pointer-events-none absolute inset-0 peer-focus-visible/viewport:outline-2 peer-focus-visible/viewport:-outline-offset-2 peer-focus-visible/viewport:outline-focus peer-focus-visible/viewport:outline-solid"
35
+ }),
31
36
  s !== "horizontal" && /* @__PURE__ */ n(c, { orientation: "vertical" }),
32
37
  s !== "vertical" && /* @__PURE__ */ n(c, { orientation: "horizontal" }),
33
38
  s === "both" && /* @__PURE__ */ n(a.Corner, {})
@@ -39,4 +44,4 @@ process.env.NODE_ENV !== "production" && (l.displayName = "ScrollArea");
39
44
  //#endregion
40
45
  export { o as n, l as r, s as t };
41
46
 
42
- //# sourceMappingURL=scroll-area-D8MD7Vpo.js.map
47
+ //# sourceMappingURL=scroll-area-_Ljh4-bG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area-_Ljh4-bG.js","names":["BaseScrollArea","ScrollArea","cn","KAESO_SCROLL_AREA_VARIANTS","KAESO_SCROLL_AREA_DEFAULT_VARIANTS","Bar","ScrollArea","orientation","ScrollArea$1","label","CSPProvider","className","viewportClassName"],"sources":["../../src/components/scroll-area/scroll-area.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { CSPProvider } from \"@base-ui/react/csp-provider\";\nimport { ScrollArea as BaseScrollArea } from \"@base-ui/react/scroll-area\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport const KAESO_SCROLL_AREA_VARIANTS = {\n orientation: {\n vertical: { classes: \"scroll-axis-y scroll-fade-y\" },\n horizontal: { classes: \"scroll-axis-x scroll-fade-x\" },\n both: { classes: \"scroll-axis-both scroll-fade-both\" },\n },\n} as const;\nexport const KAESO_SCROLL_AREA_DEFAULT_VARIANTS = { orientation: \"vertical\" } as const;\n\nexport interface ScrollAreaProps {\n children: ReactNode;\n orientation?: keyof typeof KAESO_SCROLL_AREA_VARIANTS.orientation | undefined;\n className?: string | undefined;\n viewportClassName?: string | undefined;\n \"aria-label\"?: string | undefined;\n}\n\nconst Bar = ({ orientation }: { orientation: \"vertical\" | \"horizontal\" }) => (\n <BaseScrollArea.Scrollbar\n orientation={orientation}\n className={cn(\n \"group/bar flex touch-none p-2 opacity-0 select-none transition-control data-hovering:opacity-100 data-scrolling:opacity-100\",\n orientation === \"vertical\" ? \"w-10\" : \"h-10 flex-col\",\n )}\n >\n <BaseScrollArea.Thumb className=\"flex-1 rounded-pill bg-line-strong transition-control group-data-hovering/bar:bg-fg-tertiary group-data-scrolling/bar:bg-fg-tertiary forced-line\" />\n </BaseScrollArea.Scrollbar>\n);\n\nexport const ScrollArea = /* @__PURE__ */ forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(\n { children, orientation = \"vertical\", className, viewportClassName, \"aria-label\": label },\n ref,\n) {\n return (\n <CSPProvider disableStyleElements>\n <BaseScrollArea.Root ref={ref} className={cn(\"relative min-h-0 overflow-hidden\", className)}>\n <BaseScrollArea.Viewport\n className={cn(\"peer/viewport size-full outline-none\", KAESO_SCROLL_AREA_VARIANTS.orientation[orientation].classes, viewportClassName)}\n {...(label ? { role: \"region\", \"aria-label\": label } : {})}\n >\n {children}\n </BaseScrollArea.Viewport>\n <span\n aria-hidden\n style={{ borderRadius: \"inherit\" }}\n className=\"pointer-events-none absolute inset-0 peer-focus-visible/viewport:outline-2 peer-focus-visible/viewport:-outline-offset-2 peer-focus-visible/viewport:outline-focus peer-focus-visible/viewport:outline-solid\"\n />\n {orientation !== \"horizontal\" && <Bar orientation=\"vertical\" />}\n {orientation !== \"vertical\" && <Bar orientation=\"horizontal\" />}\n {orientation === \"both\" && <BaseScrollArea.Corner />}\n </BaseScrollArea.Root>\n </CSPProvider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ScrollArea.displayName = \"ScrollArea\";\n"],"mappings":";;;;;;;AAKA,IAAaG,IAA6B,EACxC,aAAa;CACX,UAAU,EAAE,SAAS,8BAA8B;CACnD,YAAY,EAAE,SAAS,8BAA8B;CACrD,MAAM,EAAE,SAAS,oCAAoC;AACvD,EACF,GACaC,IAAqC,EAAE,aAAa,WAAW,GAUtEC,KAAO,EAAE,qBACb,kBAACL,EAAe,WAAhB;CACe;CACb,WAAWE,EACT,+HACAK,MAAgB,aAAa,SAAS,eACxC;CAEA,UAAA,kBAACP,EAAe,OAAhB,EAAsB,WAAU,mJAAoJ,CAAA;AAC5J,CAAA,GAGfC,IAA6B,kBAA4C,SACpF,EAAE,aAAU,iBAAc,YAAY,cAAW,sBAAmB,cAAcQ,KAClF,GACA;CACA,OACE,kBAACC,GAAD;EAAa,sBAAA;EACX,UAAA,kBAACV,EAAe,MAAhB;GAA0B;GAAK,WAAWE,EAAG,oCAAoCS,CAAS;GAA1F,UAAA;IACE,kBAACX,EAAe,UAAhB;KACE,WAAWE,EAAG,wCAAwCC,EAA2B,YAAYI,EAAY,CAAC,SAASK,CAAiB;KACpI,GAAKH,IAAQ;MAAE,MAAM;MAAU,cAAcA;KAAM,IAAI,CAAC;KAEvD;IACsB,CAAA;IACzB,kBAAC,QAAD;KACE,eAAA;KACA,OAAO,EAAE,cAAc,UAAU;KACjC,WAAU;IACX,CAAA;IACAF,MAAgB,gBAAgB,kBAACF,GAAD,EAAK,aAAY,WAAY,CAAA;IAC7DE,MAAgB,cAAc,kBAACF,GAAD,EAAK,aAAY,aAAc,CAAA;IAC7DE,MAAgB,UAAU,kBAACP,EAAe,QAAhB,CAAwB,CAAA;GAChC;;CACV,CAAA;AAEjB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
@@ -0,0 +1,77 @@
1
+ "use client";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
+ import { t } from "./nav-wordmark-J4pB_vjr.js";
4
+ import { t as n } from "./section-header-DU1Q4Tdf.js";
5
+ import { forwardRef as r } from "react";
6
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
7
+ //#region src/components/section/section.tsx
8
+ var o = { spacing: {
9
+ default: { classes: "mt-48 first:mt-0" },
10
+ none: { classes: "" }
11
+ } }, s = { spacing: "default" }, c = /* @__PURE__ */ r(function({ title: t, description: r, actions: s, spacing: c = "default", children: l, className: u }, d) {
12
+ return /* @__PURE__ */ a("section", {
13
+ ref: d,
14
+ className: e(o.spacing[c].classes, u),
15
+ children: [(t || s) && /* @__PURE__ */ i(n, {
16
+ title: t,
17
+ description: r,
18
+ actions: s
19
+ }), l]
20
+ });
21
+ });
22
+ process.env.NODE_ENV !== "production" && (c.displayName = "Section");
23
+ var l = /* @__PURE__ */ r(function({ children: t, aside: n, className: r }, o) {
24
+ return /* @__PURE__ */ a("div", {
25
+ ref: o,
26
+ className: e("grid grid-cols-1 lg:grid-cols-aside", r),
27
+ children: [/* @__PURE__ */ i("div", {
28
+ className: "min-w-0 lg:pr-32",
29
+ children: t
30
+ }), /* @__PURE__ */ i("aside", {
31
+ className: "mt-32 min-w-0 lg:mt-0 lg:pl-32 lg:hairline-l",
32
+ children: /* @__PURE__ */ i("div", {
33
+ className: "flex flex-col gap-32 lg:sticky lg:top-16",
34
+ children: n
35
+ })
36
+ })]
37
+ });
38
+ });
39
+ process.env.NODE_ENV !== "production" && (l.displayName = "SplitView");
40
+ var u = /* @__PURE__ */ r(function({ title: n, description: r, children: o, footer: s, className: c }, l) {
41
+ return /* @__PURE__ */ a("div", {
42
+ ref: l,
43
+ className: e("relative flex min-h-dvh flex-col items-center bg-panel px-16 py-64 text-fg", c),
44
+ children: [
45
+ /* @__PURE__ */ i("div", {
46
+ className: "absolute top-0 left-0 mt-8 flex h-52 items-center px-16 sm:px-28",
47
+ children: /* @__PURE__ */ i(t, {})
48
+ }),
49
+ /* @__PURE__ */ a("div", {
50
+ className: "flex w-full max-w-auth flex-1 flex-col justify-center",
51
+ children: [
52
+ /* @__PURE__ */ i("h1", {
53
+ className: "text-center text-title-lg font-semibold text-fg text-balance",
54
+ children: n
55
+ }),
56
+ r && /* @__PURE__ */ i("p", {
57
+ className: "mt-8 text-center text-body-lg font-regular text-fg-secondary text-pretty",
58
+ children: r
59
+ }),
60
+ /* @__PURE__ */ i("div", {
61
+ className: "mt-24 flex flex-col gap-16",
62
+ children: o
63
+ })
64
+ ]
65
+ }),
66
+ s && /* @__PURE__ */ i("div", {
67
+ className: "mt-48 text-small text-fg-secondary",
68
+ children: s
69
+ })
70
+ ]
71
+ });
72
+ });
73
+ process.env.NODE_ENV !== "production" && (u.displayName = "AuthLayout");
74
+ //#endregion
75
+ export { l as a, c as i, s as n, o as r, u as t };
76
+
77
+ //# sourceMappingURL=section-CFBYhsUi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-CFBYhsUi.js","names":["cn","SectionHeader","KAESO_SECTION_VARIANTS","KAESO_SECTION_DEFAULT_VARIANTS","Section","spacing","className","title","actions","children","SplitView","aside","AuthLayout","NavWordmark","description","footer"],"sources":["../../src/components/section/section.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { NavWordmark } from \"../logo/nav-wordmark.js\";\nimport { SectionHeader } from \"./section-header.js\";\n\nexport const KAESO_SECTION_VARIANTS = {\n spacing: {\n default: { classes: \"mt-48 first:mt-0\" },\n none: { classes: \"\" },\n },\n} as const;\nexport const KAESO_SECTION_DEFAULT_VARIANTS = { spacing: \"default\" } as const;\n\nexport interface SectionProps {\n title?: ReactNode | undefined;\n description?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n spacing?: keyof typeof KAESO_SECTION_VARIANTS.spacing | undefined;\n children: ReactNode;\n className?: string | undefined;\n}\n\nexport const Section = /* @__PURE__ */ forwardRef<HTMLElement, SectionProps>(function Section({ title, description, actions, spacing = \"default\", children, className }, ref) {\n return (\n <section ref={ref} className={cn(KAESO_SECTION_VARIANTS.spacing[spacing].classes, className)}>\n {(title || actions) && <SectionHeader title={title} description={description} actions={actions} />}\n {children}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Section.displayName = \"Section\";\n\nexport const SplitView = /* @__PURE__ */ forwardRef<HTMLDivElement, { children: ReactNode; aside: ReactNode; className?: string | undefined }>(function SplitView(\n { children, aside, className },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"grid grid-cols-1 lg:grid-cols-aside\", className)}>\n <div className=\"min-w-0 lg:pr-32\">{children}</div>\n <aside className=\"mt-32 min-w-0 lg:mt-0 lg:pl-32 lg:hairline-l\">\n <div className=\"flex flex-col gap-32 lg:sticky lg:top-16\">{aside}</div>\n </aside>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SplitView.displayName = \"SplitView\";\n\nexport const AuthLayout = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { title: ReactNode; description?: ReactNode | undefined; children: ReactNode; footer?: ReactNode | undefined; className?: string | undefined }\n>(function AuthLayout({ title, description, children, footer, className }, ref) {\n return (\n <div ref={ref} className={cn(\"relative flex min-h-dvh flex-col items-center bg-panel px-16 py-64 text-fg\", className)}>\n <div className=\"absolute top-0 left-0 mt-8 flex h-52 items-center px-16 sm:px-28\">\n <NavWordmark />\n </div>\n <div className=\"flex w-full max-w-auth flex-1 flex-col justify-center\">\n <h1 className=\"text-center text-title-lg font-semibold text-fg text-balance\">{title}</h1>\n {description && <p className=\"mt-8 text-center text-body-lg font-regular text-fg-secondary text-pretty\">{description}</p>}\n <div className=\"mt-24 flex flex-col gap-16\">{children}</div>\n </div>\n {footer && <div className=\"mt-48 text-small text-fg-secondary\">{footer}</div>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") AuthLayout.displayName = \"AuthLayout\";\n"],"mappings":";;;;;;;AAKA,IAAaE,IAAyB,EACpC,SAAS;CACP,SAAS,EAAE,SAAS,mBAAmB;CACvC,MAAM,EAAE,SAAS,GAAG;AACtB,EACF,GACaC,IAAiC,EAAE,SAAS,UAAU,GAWtDC,IAA0B,kBAAsC,SAAiB,EAAE,UAAO,gBAAa,YAAS,aAAU,WAAW,aAAU,gBAAa,GAAK;CAC5K,OACE,kBAAC,WAAD;EAAc;EAAK,WAAWJ,EAAGE,EAAuB,QAAQG,EAAQ,CAAC,SAASC,CAAS;EAA3F,UAAA,EACIC,KAASC,MAAY,kBAACP,GAAD;GAAsB;GAAoB;GAAsB;EAAU,CAAA,GAChGQ,CACM;;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAQ,cAAc;AAEjE,IAAaC,IAA4B,kBAAsG,SAC7I,EAAE,aAAU,UAAO,gBACnB,GACA;CACA,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWV,EAAG,uCAAuCM,CAAS;EAA7E,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;GAAoB;EAAc,CAAA,GACjD,kBAAC,SAAD;GAAO,WAAU;GACf,UAAA,kBAAC,OAAD;IAAK,WAAU;IAA4C,UAAAK;GAAW,CAAA;EACjE,CAAA,CACJ;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc;AAEnE,IAAaC,IAA6B,kBAGxC,SAAoB,EAAE,UAAO,gBAAa,aAAU,WAAQ,gBAAa,GAAK;CAC9E,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWZ,EAAG,8EAA8EM,CAAS;EAApH,UAAA;GACE,kBAAC,OAAD;IAAK,WAAU;IACb,UAAA,kBAACO,GAAD,CAAc,CAAA;GACX,CAAA;GACL,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,kBAAC,MAAD;MAAI,WAAU;MAAgE,UAAAN;KAAU,CAAA;KACvFO,KAAe,kBAAC,KAAD;MAAG,WAAU;MAA4E,UAAAA;KAAe,CAAA;KACxH,kBAAC,OAAD;MAAK,WAAU;MAA8B;KAAc,CAAA;IACxD;;GACJC,KAAU,kBAAC,OAAD;IAAK,WAAU;IAAsC,UAAAA;GAAY,CAAA;EACzE;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { forwardRef as e } from "react";
3
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
4
+ //#region src/components/section/section-header.tsx
5
+ var r = /* @__PURE__ */ e(function({ title: e, description: r, actions: i }, a) {
6
+ return /* @__PURE__ */ n("header", {
7
+ ref: a,
8
+ className: "mb-16 flex flex-wrap items-end justify-between gap-x-16 gap-y-12",
9
+ children: [/* @__PURE__ */ n("div", {
10
+ className: "flex min-w-0 flex-col gap-2",
11
+ children: [e && /* @__PURE__ */ t("h2", {
12
+ className: "text-title-sm font-semibold text-fg",
13
+ children: e
14
+ }), r && /* @__PURE__ */ t("p", {
15
+ className: "max-w-prose text-small text-fg-secondary",
16
+ children: r
17
+ })]
18
+ }), i && /* @__PURE__ */ t("div", {
19
+ className: "flex shrink-0 items-center gap-8",
20
+ children: i
21
+ })]
22
+ });
23
+ });
24
+ process.env.NODE_ENV !== "production" && (r.displayName = "SectionHeader");
25
+ //#endregion
26
+ export { r as t };
27
+
28
+ //# sourceMappingURL=section-header-DU1Q4Tdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-header-DU1Q4Tdf.js","names":["SectionHeader","title","description","actions"],"sources":["../../src/components/section/section-header.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\n\nexport const SectionHeader = /* @__PURE__ */ forwardRef<HTMLElement, { title: ReactNode; description: ReactNode; actions: ReactNode }>(function SectionHeader(\n { title, description, actions },\n ref,\n) {\n return (\n <header ref={ref} className=\"mb-16 flex flex-wrap items-end justify-between gap-x-16 gap-y-12\">\n <div className=\"flex min-w-0 flex-col gap-2\">\n {title && <h2 className=\"text-title-sm font-semibold text-fg\">{title}</h2>}\n {description && <p className=\"max-w-prose text-small text-fg-secondary\">{description}</p>}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-8\">{actions}</div>}\n </header>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SectionHeader.displayName = \"SectionHeader\";\n"],"mappings":";;;;AAEA,IAAaA,IAAgC,kBAA0F,SACrI,EAAE,UAAO,gBAAa,cACtB,GACA;CACA,OACE,kBAAC,UAAD;EAAa;EAAK,WAAU;EAA5B,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACGC,KAAS,kBAAC,MAAD;IAAI,WAAU;IAAuC,UAAAA;GAAU,CAAA,GACxEC,KAAe,kBAAC,KAAD;IAAG,WAAU;IAA4C,UAAAA;GAAe,CAAA,CACrF;EACJ,CAAA,GAAAC,KAAW,kBAAC,OAAD;GAAK,WAAU;GAAoC,UAAAA;EAAa,CAAA,CACtE;;AAEZ,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAc,cAAc"}