@logicplanes/kaeso-ui 0.1.0 → 0.2.1

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 (246) hide show
  1. package/AGENTS.md +1 -0
  2. package/LICENSE +1 -1
  3. package/ai/component-guides.md +269 -7
  4. package/ai/component-registry.json +600 -800
  5. package/ai/component-registry.md +200 -141
  6. package/ai/icons.md +2 -2
  7. package/ai/tokens.md +1 -1
  8. package/dist/blocks/delete-resource.js +1 -1
  9. package/dist/blocks/pages.js +3 -3
  10. package/dist/blocks/resource-list.js +2 -2
  11. package/dist/chunks/app-frame-BXh-06HL.js +214 -0
  12. package/dist/chunks/app-frame-BXh-06HL.js.map +1 -0
  13. package/dist/chunks/{banner-BiziJuBZ.js → banner-DxGBPQ7p.js} +2 -2
  14. package/dist/chunks/{banner-BiziJuBZ.js.map → banner-DxGBPQ7p.js.map} +1 -1
  15. package/dist/chunks/{button-BHKAE6ui.js → button-DQvoOxVQ.js} +2 -2
  16. package/dist/chunks/{button-BHKAE6ui.js.map → button-DQvoOxVQ.js.map} +1 -1
  17. package/dist/chunks/{calendar-B5SSTE56.js → calendar-CN3YJi2k.js} +3 -3
  18. package/dist/chunks/{calendar-B5SSTE56.js.map → calendar-CN3YJi2k.js.map} +1 -1
  19. package/dist/chunks/code-BADhvsgC.js +33 -0
  20. package/dist/chunks/code-BADhvsgC.js.map +1 -0
  21. package/dist/chunks/{code-block-BbK6E4Eo.js → code-block-DxtladFW.js} +41 -37
  22. package/dist/chunks/code-block-DxtladFW.js.map +1 -0
  23. package/dist/chunks/{combobox-D8pQk22r.js → combobox-D30Wt11R.js} +4 -4
  24. package/dist/chunks/{combobox-D8pQk22r.js.map → combobox-D30Wt11R.js.map} +1 -1
  25. package/dist/chunks/{copy-button-mAzHjYXq.js → copy-button-DXxn-YYZ.js} +4 -4
  26. package/dist/chunks/{copy-button-mAzHjYXq.js.map → copy-button-DXxn-YYZ.js.map} +1 -1
  27. package/dist/chunks/{core-Bgefcs3z.js → core-K960A4OT.js} +119 -120
  28. package/dist/chunks/core-K960A4OT.js.map +1 -0
  29. package/dist/chunks/{date-popup-Er1oQwtU.js → date-popup-B-6xhb-1.js} +3 -3
  30. package/dist/chunks/{date-popup-Er1oQwtU.js.map → date-popup-B-6xhb-1.js.map} +1 -1
  31. package/dist/chunks/{de-BCg1eRVd.js → de-CTAo4KL7.js} +10 -10
  32. package/dist/chunks/de-CTAo4KL7.js.map +1 -0
  33. package/dist/chunks/dialog-LNKgPEsV.js +319 -0
  34. package/dist/chunks/dialog-LNKgPEsV.js.map +1 -0
  35. package/dist/chunks/{icon-Bha63LaN.js → icon-CBzvyEqC.js} +30 -29
  36. package/dist/chunks/icon-CBzvyEqC.js.map +1 -0
  37. package/dist/chunks/{icon-button-Bw67oKtx.js → icon-button-_x1RUphC.js} +3 -3
  38. package/dist/chunks/{icon-button-Bw67oKtx.js.map → icon-button-_x1RUphC.js.map} +1 -1
  39. package/dist/chunks/{identity-DQinp-Ep.js → identity-BtZC_d_Q.js} +3 -3
  40. package/dist/chunks/{identity-DQinp-Ep.js.map → identity-BtZC_d_Q.js.map} +1 -1
  41. package/dist/chunks/{input-Biakz6GB.js → input-CNTfI6YE.js} +2 -2
  42. package/dist/chunks/{input-Biakz6GB.js.map → input-CNTfI6YE.js.map} +1 -1
  43. package/dist/chunks/{input-group-DQqEPFj_.js → input-group-CYA1MEoZ.js} +2 -2
  44. package/dist/chunks/{input-group-DQqEPFj_.js.map → input-group-CYA1MEoZ.js.map} +1 -1
  45. package/dist/chunks/{iso-field-CznqNVrH.js → iso-field-1qmg7TP8.js} +2 -2
  46. package/dist/chunks/{iso-field-CznqNVrH.js.map → iso-field-1qmg7TP8.js.map} +1 -1
  47. package/dist/chunks/linear-scale-BWKeRqDX.js +37 -0
  48. package/dist/chunks/linear-scale-BWKeRqDX.js.map +1 -0
  49. package/dist/chunks/{link-tTapNTpM.js → link-vz9aV8WX.js} +9 -2
  50. package/dist/chunks/link-vz9aV8WX.js.map +1 -0
  51. package/dist/chunks/{list-CN8pO8lv.js → list-CzaiyNja.js} +119 -111
  52. package/dist/chunks/list-CzaiyNja.js.map +1 -0
  53. package/dist/chunks/{markdown-C-iJsYnd.js → markdown-5NyaHHfN.js} +6 -6
  54. package/dist/chunks/{markdown-C-iJsYnd.js.map → markdown-5NyaHHfN.js.map} +1 -1
  55. package/dist/chunks/{menu-OURWt_hD.js → menu-DyVPwgfF.js} +2 -2
  56. package/dist/chunks/{menu-OURWt_hD.js.map → menu-DyVPwgfF.js.map} +1 -1
  57. package/dist/chunks/nav-sheet-BIErlV74.js +58 -0
  58. package/dist/chunks/nav-sheet-BIErlV74.js.map +1 -0
  59. package/dist/chunks/{logo-VmXYhIJL.js → nav-wordmark-DLkItdvo.js} +12 -93
  60. package/dist/chunks/nav-wordmark-DLkItdvo.js.map +1 -0
  61. package/dist/chunks/observe-resize-DhxhmoyB.js +25 -0
  62. package/dist/chunks/observe-resize-DhxhmoyB.js.map +1 -0
  63. package/dist/chunks/{page-header-BIRswR73.js → page-header-CEPZzhRp.js} +2 -2
  64. package/dist/chunks/{page-header-BIRswR73.js.map → page-header-CEPZzhRp.js.map} +1 -1
  65. package/dist/chunks/{pagination-DYdLm18-.js → pagination-CCMxQ5pH.js} +3 -3
  66. package/dist/chunks/{pagination-DYdLm18-.js.map → pagination-CCMxQ5pH.js.map} +1 -1
  67. package/dist/chunks/{range-popup-AbRzgHtY.js → range-popup-DGOnGGag.js} +4 -4
  68. package/dist/chunks/{range-popup-AbRzgHtY.js.map → range-popup-DGOnGGag.js.map} +1 -1
  69. package/dist/chunks/resize-motion-CMaidkwe.js +101 -0
  70. package/dist/chunks/resize-motion-CMaidkwe.js.map +1 -0
  71. package/dist/chunks/{rights-CXo7zEf6.js → rights-BbiJ0AJB.js} +4 -4
  72. package/dist/chunks/{rights-CXo7zEf6.js.map → rights-BbiJ0AJB.js.map} +1 -1
  73. package/dist/chunks/{section-XStLtXKa.js → section-DzOLLN1p.js} +3 -3
  74. package/dist/chunks/section-DzOLLN1p.js.map +1 -0
  75. package/dist/chunks/{segmented-CDTx2n29.js → segmented-MrinfDL8.js} +36 -35
  76. package/dist/chunks/segmented-MrinfDL8.js.map +1 -0
  77. package/dist/chunks/select-Bc4kRiSG.js +227 -0
  78. package/dist/chunks/select-Bc4kRiSG.js.map +1 -0
  79. package/dist/chunks/{sidebar-C4fL_KMm.js → sidebar-5IA18LuP.js} +180 -183
  80. package/dist/chunks/sidebar-5IA18LuP.js.map +1 -0
  81. package/dist/chunks/{sidebar-menu-sd9vCpDy.js → sidebar-menu-DRWRxcJ3.js} +2 -2
  82. package/dist/chunks/{sidebar-menu-sd9vCpDy.js.map → sidebar-menu-DRWRxcJ3.js.map} +1 -1
  83. package/dist/chunks/{switch-CztLhA8F.js → switch-XMY_CQE-.js} +2 -2
  84. package/dist/chunks/{switch-CztLhA8F.js.map → switch-XMY_CQE-.js.map} +1 -1
  85. package/dist/chunks/{tag-BsmQ1xPj.js → tag-Dg89uYpV.js} +3 -3
  86. package/dist/chunks/{tag-BsmQ1xPj.js.map → tag-Dg89uYpV.js.map} +1 -1
  87. package/dist/chunks/{text-BPglS3vq.js → text--5MKh2G4.js} +3 -3
  88. package/dist/chunks/{text-BPglS3vq.js.map → text--5MKh2G4.js.map} +1 -1
  89. package/dist/chunks/{textarea-Bvk7N2bh.js → textarea-Cj8iR82R.js} +3 -3
  90. package/dist/chunks/{textarea-Bvk7N2bh.js.map → textarea-Cj8iR82R.js.map} +1 -1
  91. package/dist/chunks/theme-provider-DJhORMlc.js +72 -0
  92. package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -0
  93. package/dist/chunks/tooltip-DEbCCsru.js +151 -0
  94. package/dist/chunks/tooltip-DEbCCsru.js.map +1 -0
  95. package/dist/chunks/{tooltip-root-DWhtAtFb.js → tooltip-root-DRd4ciUv.js} +2 -2
  96. package/dist/chunks/{tooltip-root-DWhtAtFb.js.map → tooltip-root-DRd4ciUv.js.map} +1 -1
  97. package/dist/chunks/use-layout-width-CbSDbRb0.js +28 -0
  98. package/dist/chunks/use-layout-width-CbSDbRb0.js.map +1 -0
  99. package/dist/chunks/use-scroll-margin-DfdTc_5D.js +26 -0
  100. package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +1 -0
  101. package/dist/chunks/use-truncated-CW0hByYt.js +24 -0
  102. package/dist/chunks/use-truncated-CW0hByYt.js.map +1 -0
  103. package/dist/chunks/{virtual-rows-BgMdVelU.js → virtual-rows-BZe49bKi.js} +2 -2
  104. package/dist/chunks/{virtual-rows-BgMdVelU.js.map → virtual-rows-BZe49bKi.js.map} +1 -1
  105. package/dist/chunks/{zh-CN-cPjO1OOo.js → zh-CN-C7GmVswt.js} +15 -15
  106. package/dist/chunks/zh-CN-C7GmVswt.js.map +1 -0
  107. package/dist/components/app-frame.js +3 -1
  108. package/dist/components/banner.js +1 -1
  109. package/dist/components/button-group.js +2 -2
  110. package/dist/components/button.js +1 -1
  111. package/dist/components/calendar.js +1 -1
  112. package/dist/components/charts/bar.js +78 -77
  113. package/dist/components/charts/bar.js.map +1 -1
  114. package/dist/components/charts/donut.js +2 -2
  115. package/dist/components/charts/gauge.js +1 -1
  116. package/dist/components/charts/sankey.js +1 -1
  117. package/dist/components/charts/timeseries.js +75 -75
  118. package/dist/components/charts/timeseries.js.map +1 -1
  119. package/dist/components/charts.js +1 -1
  120. package/dist/components/code-block.js +1 -1
  121. package/dist/components/code.js +1 -1
  122. package/dist/components/combobox.js +1 -1
  123. package/dist/components/command-palette.js +105 -97
  124. package/dist/components/command-palette.js.map +1 -1
  125. package/dist/components/copy-button.js +1 -1
  126. package/dist/components/data-table.js +94 -95
  127. package/dist/components/data-table.js.map +1 -1
  128. package/dist/components/date-picker.js +3 -3
  129. package/dist/components/date-picker.js.map +1 -1
  130. package/dist/components/dialog.js +141 -153
  131. package/dist/components/dialog.js.map +1 -1
  132. package/dist/components/display-options.js +5 -5
  133. package/dist/components/filter-chip.js +1 -1
  134. package/dist/components/flow.js +37 -36
  135. package/dist/components/flow.js.map +1 -1
  136. package/dist/components/icon-button.js +1 -1
  137. package/dist/components/icon.js +1 -1
  138. package/dist/components/input.js +5 -5
  139. package/dist/components/kaeso/conversation.js +2 -2
  140. package/dist/components/kaeso/identity.js +1 -1
  141. package/dist/components/kaeso/moments.js +3 -3
  142. package/dist/components/kaeso/rights.js +1 -1
  143. package/dist/components/kaeso/usage.js +1 -1
  144. package/dist/components/kaeso.js +4 -4
  145. package/dist/components/key-value.js +3 -3
  146. package/dist/components/link.js +1 -1
  147. package/dist/components/list.js +1 -1
  148. package/dist/components/logo.js +101 -1
  149. package/dist/components/logo.js.map +1 -0
  150. package/dist/components/markdown.js +1 -1
  151. package/dist/components/menu.js +1 -1
  152. package/dist/components/page-header.js +1 -1
  153. package/dist/components/pagination.js +1 -1
  154. package/dist/components/playground.js +8 -8
  155. package/dist/components/scroll-area.js +30 -23
  156. package/dist/components/scroll-area.js.map +1 -1
  157. package/dist/components/section.js +1 -1
  158. package/dist/components/segmented.js +1 -1
  159. package/dist/components/select.js +1 -1
  160. package/dist/components/sheet.js +46 -41
  161. package/dist/components/sheet.js.map +1 -1
  162. package/dist/components/sidebar.js +1 -1
  163. package/dist/components/stat.js +75 -76
  164. package/dist/components/stat.js.map +1 -1
  165. package/dist/components/switch.js +1 -1
  166. package/dist/components/tag.js +1 -1
  167. package/dist/components/text.js +1 -1
  168. package/dist/components/theme-image.js +38 -0
  169. package/dist/components/theme-image.js.map +1 -0
  170. package/dist/components/theme-menu.js +3 -3
  171. package/dist/components/theme-select.js +58 -0
  172. package/dist/components/theme-select.js.map +1 -0
  173. package/dist/components/toast.js +91 -92
  174. package/dist/components/toast.js.map +1 -1
  175. package/dist/components/tooltip.js +1 -1
  176. package/dist/i18n-provider.js +1 -1
  177. package/dist/index.js +76 -74
  178. package/dist/kaeso.css +39 -16
  179. package/dist/styles.css +1 -1
  180. package/dist/theme.js +1 -1
  181. package/dist/types/components/app-frame/app-frame.d.ts +2 -10
  182. package/dist/types/components/app-frame/docs.d.ts +1 -0
  183. package/dist/types/components/app-frame/index.d.ts +1 -0
  184. package/dist/types/components/app-frame/nav-sheet.d.ts +11 -0
  185. package/dist/types/components/charts/linear-scale.d.ts +17 -0
  186. package/dist/types/components/code/code.d.ts +16 -0
  187. package/dist/types/components/code/docs.d.ts +1 -0
  188. package/dist/types/components/code-block/code-block.d.ts +2 -0
  189. package/dist/types/components/code-block/docs.d.ts +4 -0
  190. package/dist/types/components/command-palette/command-palette.d.ts +1 -0
  191. package/dist/types/components/command-palette/docs.d.ts +1 -0
  192. package/dist/types/components/dialog/dialog.d.ts +5 -2
  193. package/dist/types/components/dialog/docs.d.ts +10 -0
  194. package/dist/types/components/dialog/index.d.ts +1 -0
  195. package/dist/types/components/dialog/scope.d.ts +9 -0
  196. package/dist/types/components/dialog/step-dialog.d.ts +9 -1
  197. package/dist/types/components/link/link.d.ts +8 -0
  198. package/dist/types/components/logo/nav-wordmark.d.ts +6 -0
  199. package/dist/types/components/scroll-area/scroll-area.d.ts +3 -3
  200. package/dist/types/components/theme-image/docs.d.ts +13 -0
  201. package/dist/types/components/theme-image/index.d.ts +1 -0
  202. package/dist/types/components/theme-image/theme-image.d.ts +23 -0
  203. package/dist/types/components/theme-select/docs.d.ts +10 -0
  204. package/dist/types/components/theme-select/index.d.ts +1 -0
  205. package/dist/types/components/theme-select/theme-select.d.ts +34 -0
  206. package/dist/types/icons/groups.d.ts +1 -1
  207. package/dist/types/icons/vocabulary.d.ts +5 -0
  208. package/dist/types/index.d.ts +2 -0
  209. package/dist/types/theme/theme-provider.d.ts +1 -1
  210. package/dist/types/utils/dialog-scope.d.ts +7 -0
  211. package/dist/types/utils/lazy-module.d.ts +7 -2
  212. package/dist/types/utils/observe-resize.d.ts +1 -0
  213. package/dist/types/utils/resize-motion.d.ts +2 -0
  214. package/foundations/motion.md +1 -0
  215. package/package.json +2 -2
  216. package/dist/chunks/app-frame-BBIMch8X.js +0 -224
  217. package/dist/chunks/app-frame-BBIMch8X.js.map +0 -1
  218. package/dist/chunks/code-DDyOlIFO.js +0 -23
  219. package/dist/chunks/code-DDyOlIFO.js.map +0 -1
  220. package/dist/chunks/code-block-BbK6E4Eo.js.map +0 -1
  221. package/dist/chunks/core-Bgefcs3z.js.map +0 -1
  222. package/dist/chunks/de-BCg1eRVd.js.map +0 -1
  223. package/dist/chunks/dialog-CVqSVk3T.js +0 -283
  224. package/dist/chunks/dialog-CVqSVk3T.js.map +0 -1
  225. package/dist/chunks/icon-Bha63LaN.js.map +0 -1
  226. package/dist/chunks/link-tTapNTpM.js.map +0 -1
  227. package/dist/chunks/list-CN8pO8lv.js.map +0 -1
  228. package/dist/chunks/logo-VmXYhIJL.js.map +0 -1
  229. package/dist/chunks/restore-focus-Cap1Q-R3.js +0 -19
  230. package/dist/chunks/restore-focus-Cap1Q-R3.js.map +0 -1
  231. package/dist/chunks/section-XStLtXKa.js.map +0 -1
  232. package/dist/chunks/segmented-CDTx2n29.js.map +0 -1
  233. package/dist/chunks/select-Ca3HGsN1.js +0 -223
  234. package/dist/chunks/select-Ca3HGsN1.js.map +0 -1
  235. package/dist/chunks/sidebar-C4fL_KMm.js.map +0 -1
  236. package/dist/chunks/theme-provider-mgUaQK7L.js +0 -69
  237. package/dist/chunks/theme-provider-mgUaQK7L.js.map +0 -1
  238. package/dist/chunks/tooltip-CDu00nzg.js +0 -124
  239. package/dist/chunks/tooltip-CDu00nzg.js.map +0 -1
  240. package/dist/chunks/use-layout-width-DZaLOQMT.js +0 -27
  241. package/dist/chunks/use-layout-width-DZaLOQMT.js.map +0 -1
  242. package/dist/chunks/use-scroll-margin-DWcfIXac.js +0 -25
  243. package/dist/chunks/use-scroll-margin-DWcfIXac.js.map +0 -1
  244. package/dist/chunks/use-truncated-DmQoePvG.js +0 -25
  245. package/dist/chunks/use-truncated-DmQoePvG.js.map +0 -1
  246. package/dist/chunks/zh-CN-cPjO1OOo.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-CVqSVk3T.js","names":["BaseDialog","__icon_Cancel01Icon","_Fragment","Dialog","BaseAlertDialog","AlertDialog","__icon_ArrowLeft01Icon","cn","usePortalContainer","InsetContent","useUiText","Button","IconButton","Input","useRestoreFocus","Fragment$1","DIALOG_FIELD","FOCUSABLE","usable","el","firstUsable","scope","selector","initialDialogControl","content","frame","footer","actions","dangerSecondary","KAESO_BUTTON_VARIANTS","safe","a","danger","primary","focusDialogSection","section","previous","KAESO_DIALOG_VARIANTS","KAESO_DIALOG_DEFAULT_VARIANTS","BACKDROP","DIALOG_VIEWPORT","DIALOG_POPUP","useScrolledUnder","ref","useRef","under","setUnder","useState","useEffect","check","ro","observe","child","mo","DialogFrame","t","Title","inline","Dialog","closeButton","Cancel01Icon","close","hideClose","Description","size","className","onSubmit","headerStart","title","description","children","focusFirstControl","open","Root","props","focus","container","defaultOpen","onOpenChange","o","trigger","Close","Dialog$1","KAESO_ALERT_DIALOG_VARIANTS","KAESO_ALERT_DIALOG_DEFAULT_VARIANTS","AlertFrame","cancelProp","typed","setTyped","busy","setBusy","pending","cancelLabel","typeBefore","typeAfter","AlertDialog","ok","confirmText","confirm","loading","r","onConfirm","done","tone","confirmLabel","AlertDialog$1","inner","setInner","isOpen","setOpen","KAESO_LAYER_DIALOG_VARIANTS","KAESO_LAYER_DIALOG_DEFAULT_VARIANTS","bodyOf","LayerDialog","wanted","layer","index","layers","sections","focused","tops","left","shown","useLayoutEffect","from","back","body","go","i","onLayerChange","stack","current","remember","e","l","ArrowLeft01Icon"],"sources":["../../src/components/dialog/focus.ts","../../src/components/dialog/dialog.tsx"],"sourcesContent":["import { KAESO_BUTTON_VARIANTS } from \"../button/button.js\";\n\nconst DIALOG_FIELD =\n 'input:not([type=hidden]):not([tabindex=\"-1\"]):not([aria-hidden=\"true\"]), textarea, select, [role=combobox]:not([tabindex=\"-1\"]), [role=radio][tabindex=\"0\"], [role=checkbox]:not([tabindex=\"-1\"]), [role=switch]:not([tabindex=\"-1\"]), [role=listbox]:not([tabindex=\"-1\"]), [role=grid] [data-index][tabindex=\"0\"]';\nconst FOCUSABLE = 'a[href], button, input:not([type=hidden]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nconst usable = (el: HTMLElement) => !el.closest(\"[hidden], [inert]\") && !el.matches(\":disabled, [aria-disabled=true]\");\nconst firstUsable = (scope: ParentNode, selector: string) => [...scope.querySelectorAll<HTMLElement>(selector)].find(usable) ?? null;\n\nexport function initialDialogControl(frame: HTMLElement, scope?: HTMLElement | undefined): HTMLElement | null {\n const content = scope ?? frame.querySelector<HTMLElement>(\"[data-dialog-body]\");\n const footer = frame.querySelector<HTMLElement>(\"[data-dialog-footer]\");\n const actions = footer ? [...footer.querySelectorAll<HTMLElement>(\"button, a[href]\")].filter(usable) : [];\n const { primary, danger, \"danger-secondary\": dangerSecondary } = KAESO_BUTTON_VARIANTS.variant;\n const safe = actions.filter((a) => !a.classList.contains(danger.classes) && !a.classList.contains(dangerSecondary.classes));\n return (\n (content && (firstUsable(content, \"[data-autofocus]\") ?? firstUsable(content, DIALOG_FIELD))) ??\n safe.find((a) => a.classList.contains(primary.classes)) ??\n safe[0] ??\n (content && firstUsable(content, FOCUSABLE)) ??\n firstUsable(frame, FOCUSABLE)\n );\n}\n\nexport function focusDialogSection(section: HTMLElement | null | undefined, previous?: HTMLElement | null | undefined) {\n const frame = section?.closest<HTMLElement>(\"[data-dialog-frame]\");\n if (!section || !frame || frame.closest(\"[data-closed]\")) return;\n const back = previous?.isConnected && frame.contains(previous) && usable(previous) ? previous : null;\n (back ?? initialDialogControl(frame, section))?.focus({ preventScroll: true });\n}\n","import { InsetContent } from \"../../utils/inset.js\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { forwardRef, useEffect, useLayoutEffect, useRef, useState, type FocusEvent, type KeyboardEvent, type ReactElement, type ReactNode } from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { AlertDialog as BaseAlertDialog } from \"@base-ui/react/alert-dialog\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useRestoreFocus } from \"../../utils/restore-focus.js\";\nimport { Cancel01Icon as __icon_Cancel01Icon, ArrowLeft01Icon as __icon_ArrowLeft01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { Button } from \"../button/button.js\";\nimport { Input } from \"../input/input.js\";\nimport { focusDialogSection, initialDialogControl } from \"./focus.js\";\n\nexport const KAESO_DIALOG_VARIANTS = {\n size: {\n sm: { classes: \"w-440\" },\n md: { classes: \"w-560\" },\n lg: { classes: \"w-720\" },\n },\n} as const;\nexport const KAESO_DIALOG_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nconst BACKDROP = \"fixed inset-0 z-50 bg-overlay backdrop-motion\";\nconst DIALOG_VIEWPORT = \"fixed inset-0 z-50 flex items-center justify-center p-16\";\nconst DIALOG_POPUP = \"relative flex dialog-limits flex-col overflow-hidden rounded-dialog bg-raised text-fg shadow-dialog outline-none dialog-motion\";\n\nfunction useScrolledUnder<T extends HTMLElement>() {\n const ref = useRef<T | null>(null);\n const [under, setUnder] = useState(false);\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const check = () => setUnder(el.scrollHeight - el.scrollTop - el.clientHeight > 1);\n check();\n el.addEventListener(\"scroll\", check, { passive: true });\n const ro = typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(check) : null;\n const observe = () => {\n for (const child of el.children) ro?.observe(child);\n };\n ro?.observe(el);\n observe();\n const mo = new MutationObserver(() => {\n observe();\n check();\n });\n mo.observe(el, { childList: true });\n return () => {\n el.removeEventListener(\"scroll\", check);\n ro?.disconnect();\n mo.disconnect();\n };\n }, []);\n return { ref, under };\n}\n\nexport interface DialogProps {\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n trigger?: ReactElement | undefined;\n title: ReactNode;\n description?: ReactNode | undefined;\n size?: keyof typeof KAESO_DIALOG_VARIANTS.size | undefined;\n children?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n onSubmit?: (() => void) | undefined;\n hideClose?: boolean | undefined;\n headerStart?: ReactNode | undefined;\n className?: string | undefined;\n inline?: boolean | undefined;\n}\n\nfunction DialogFrame({ title, description, children, footer, onSubmit, hideClose, headerStart, size = \"md\", className, inline }: DialogProps) {\n const { ref, under } = useScrolledUnder<HTMLDivElement>();\n const t = useUiText();\n const Title = inline ? \"h2\" : BaseDialog.Title;\n const closeButton = <IconButton icon={__icon_Cancel01Icon} aria-label={t(\"dialog.close\", \"Close\")} tooltip={false} />;\n const close = hideClose ? null : inline ? closeButton : <BaseDialog.Close render={closeButton} />;\n const Description = inline ? \"p\" : BaseDialog.Description;\n return (\n <div\n data-dialog-frame=\"\"\n className={cn(\"flex min-h-0 flex-col\", inline && \"rounded-dialog bg-raised shadow-dialog\", inline && KAESO_DIALOG_VARIANTS.size[size].classes, className)}\n onKeyDown={(e: KeyboardEvent) => {\n if (onSubmit && e.key === \"Enter\" && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n onSubmit();\n }\n }}\n >\n {headerStart !== undefined ? (\n <>\n <div className=\"flex h-32 items-center justify-between px-16 pt-16 box-content\">\n <span className=\"flex items-center\">{headerStart}</span>\n {close}\n </div>\n <div className=\"flex flex-col gap-4 px-24 pt-8 pb-4\">\n <Title className=\"text-title-sm font-semibold text-fg text-balance\">{title}</Title>\n {description && <Description className=\"text-body text-fg-secondary text-pretty\">{description}</Description>}\n </div>\n </>\n ) : (\n <div className=\"flex items-start gap-12 px-24 pt-20 pb-4\">\n <div className=\"flex min-w-0 flex-1 flex-col gap-4 pt-4\">\n <Title className=\"text-title-sm font-semibold text-fg text-balance\">{title}</Title>\n {description && <Description className=\"text-body text-fg-secondary text-pretty\">{description}</Description>}\n </div>\n {close && <span className=\"-mr-8 flex\">{close}</span>}\n </div>\n )}\n {children && (\n <div ref={ref} data-dialog-body=\"\" className={cn(\"min-h-0 flex-1 overflow-y-auto px-24 pt-16 scrollbar-quiet\", footer ? \"pb-8\" : \"pb-24\")}>\n {children}\n </div>\n )}\n {footer && (\n <div\n data-dialog-footer=\"\"\n className={cn(\"flex shrink-0 flex-wrap items-center justify-end gap-8 px-24 pt-16 pb-20 transition-control\", under && \"hairline-t\")}\n >\n {footer}\n </div>\n )}\n </div>\n );\n}\n\nfunction focusFirstControl(): HTMLElement | true {\n const open = [...document.querySelectorAll<HTMLElement>(\"[role=dialog], [role=alertdialog]\")].pop();\n const frame = open?.querySelector<HTMLElement>(\"[data-dialog-frame]\");\n return (frame && initialDialogControl(frame)) ?? open ?? true;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, DialogProps>(function Dialog(props, ref) {\n const { open, defaultOpen, onOpenChange, trigger, size = \"md\", inline } = props;\n const focus = useRestoreFocus(open, focusFirstControl);\n const container = usePortalContainer();\n if (inline) return <DialogFrame {...props} />;\n return (\n <BaseDialog.Root\n {...(open !== undefined ? { open } : {})}\n {...(defaultOpen !== undefined ? { defaultOpen } : {})}\n {...(onOpenChange ? { onOpenChange: (o: boolean) => onOpenChange(o) } : {})}\n >\n {trigger && <BaseDialog.Trigger render={trigger} />}\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className={BACKDROP} />\n <BaseDialog.Viewport className={DIALOG_VIEWPORT}>\n <BaseDialog.Popup\n ref={ref}\n initialFocus={focus.initialFocus}\n finalFocus={focus.finalFocus}\n className={cn(DIALOG_POPUP, KAESO_DIALOG_VARIANTS.size[size].classes)}\n >\n <InsetContent inset={false}>\n <DialogFrame {...props} />\n </InsetContent>\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"Dialog\";\n\nfunction Close({ children }: { children: ReactElement }) {\n return <BaseDialog.Close render={children} />;\n}\nif (process.env.NODE_ENV !== \"production\") Close.displayName = \"Dialog.Close\";\n\nexport const Dialog = /* @__PURE__ */ Object.assign(Root, { Close });\n\nexport const KAESO_ALERT_DIALOG_VARIANTS = {\n tone: {\n danger: { classes: \"bg-danger-tint text-danger-text\" },\n warning: { classes: \"bg-warning-tint text-warning-text\" },\n info: { classes: \"bg-info-tint text-info-text\" },\n },\n} as const;\nexport const KAESO_ALERT_DIALOG_DEFAULT_VARIANTS = { tone: \"danger\" } as const;\n\nexport interface AlertDialogProps {\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n trigger?: ReactElement | undefined;\n title: ReactNode;\n description: ReactNode;\n confirmLabel: string;\n cancelLabel?: string | undefined;\n onConfirm: () => void | Promise<void>;\n tone?: keyof typeof KAESO_ALERT_DIALOG_VARIANTS.tone | undefined;\n confirmText?: string | undefined;\n loading?: boolean | undefined;\n inline?: boolean | undefined;\n}\n\nfunction AlertFrame({\n title,\n description,\n confirmLabel,\n cancelLabel: cancelProp,\n onConfirm,\n tone = \"danger\",\n confirmText,\n loading,\n inline,\n close,\n}: AlertDialogProps & { close: () => void }) {\n const [typed, setTyped] = useState(\"\");\n const [busy, setBusy] = useState(false);\n const pending = useRef(false);\n const t = useUiText();\n const cancelLabel = cancelProp ?? t(\"alertDialog.cancel\", \"Cancel\");\n const [typeBefore, typeAfter = \"\"] = t(\"alertDialog.typeToConfirm\", \"Type {text} to confirm\").split(\"{text}\");\n const Title = inline ? \"h2\" : BaseAlertDialog.Title;\n const Description = inline ? \"p\" : BaseAlertDialog.Description;\n const ok = !confirmText || typed === confirmText;\n const confirm = async () => {\n if (!ok || loading || pending.current) return;\n const r = onConfirm();\n if (!(r instanceof Promise)) return close();\n pending.current = true;\n setBusy(true);\n const done = await r.then(\n () => true,\n () => false,\n );\n pending.current = false;\n setBusy(false);\n if (done) close();\n };\n return (\n <div className={cn(\"flex flex-col gap-20 p-24\", inline && \"w-440 rounded-dialog bg-raised shadow-dialog\")}>\n <div className=\"flex flex-col gap-6\">\n <Title className=\"text-title-sm font-semibold text-fg text-balance\">{title}</Title>\n <Description className=\"text-body text-fg-secondary text-pretty\">{description}</Description>\n </div>\n {confirmText && (\n <Input\n label={\n <span className=\"font-regular text-fg-secondary\">\n {typeBefore}\n <span className=\"mono font-medium text-fg\">{confirmText}</span>\n {typeAfter}\n </span>\n }\n value={typed}\n onChange={(e) => setTyped(e.target.value)}\n autoComplete=\"off\"\n spellCheck={false}\n onKeyDown={(e) => e.key === \"Enter\" && confirm()}\n />\n )}\n <div className=\"flex flex-wrap justify-end gap-8\">\n {inline ? <Button>{cancelLabel}</Button> : <BaseAlertDialog.Close render={<Button>{cancelLabel}</Button>} />}\n <Button variant={tone === \"danger\" ? \"danger\" : \"primary\"} onClick={confirm} disabled={!ok} loading={busy || loading}>\n {confirmLabel}\n </Button>\n </div>\n </div>\n );\n}\n\nexport function AlertDialog(props: AlertDialogProps) {\n const { open, defaultOpen, onOpenChange, trigger, inline } = props;\n const [inner, setInner] = useState(defaultOpen ?? false);\n const isOpen = open ?? inner;\n const setOpen = (o: boolean) => {\n if (open === undefined) setInner(o);\n onOpenChange?.(o);\n };\n const focus = useRestoreFocus(isOpen);\n const container = usePortalContainer();\n if (inline) return <AlertFrame {...props} close={() => undefined} />;\n return (\n <BaseAlertDialog.Root open={isOpen} onOpenChange={(o: boolean) => setOpen(o)}>\n {trigger && <BaseAlertDialog.Trigger render={trigger} />}\n <BaseAlertDialog.Portal container={container}>\n <BaseAlertDialog.Backdrop className={BACKDROP} />\n <BaseAlertDialog.Viewport className={DIALOG_VIEWPORT}>\n <BaseAlertDialog.Popup initialFocus={focus.initialFocus} finalFocus={focus.finalFocus} className={cn(DIALOG_POPUP, \"w-440\")}>\n <InsetContent inset={false}>\n <AlertFrame {...props} close={() => setOpen(false)} />\n </InsetContent>\n </BaseAlertDialog.Popup>\n </BaseAlertDialog.Viewport>\n </BaseAlertDialog.Portal>\n </BaseAlertDialog.Root>\n );\n}\nif (process.env.NODE_ENV !== \"production\") AlertDialog.displayName = \"AlertDialog\";\n\nexport const KAESO_LAYER_DIALOG_VARIANTS = KAESO_DIALOG_VARIANTS;\nexport const KAESO_LAYER_DIALOG_DEFAULT_VARIANTS = KAESO_DIALOG_DEFAULT_VARIANTS;\n\nexport interface DialogLayer {\n title: ReactNode;\n description?: ReactNode | undefined;\n content: ReactNode;\n footer?: ReactNode | undefined;\n}\n\nexport interface LayerDialogProps extends Omit<DialogProps, \"title\" | \"description\" | \"children\" | \"footer\" | \"headerStart\"> {\n layers: DialogLayer[];\n layer?: number | undefined;\n onLayerChange?: ((layer: number) => void) | undefined;\n}\n\nconst bodyOf = (el: HTMLElement | null | undefined) => el?.closest<HTMLElement>(\"[data-dialog-body]\") ?? null;\n\nexport function LayerDialog({ layers, layer, onLayerChange, ...props }: LayerDialogProps) {\n const [inner, setInner] = useState(0);\n const t = useUiText();\n const wanted = layer ?? inner;\n const index = wanted > 0 && wanted < layers.length ? wanted : 0;\n const sections = useRef<(HTMLDivElement | null)[]>([]);\n const focused = useRef<(HTMLElement | null)[]>([]);\n const tops = useRef<number[]>([]);\n const left = useRef(index);\n const shown = useRef(index);\n if (left.current !== index) {\n tops.current[left.current] = bodyOf(sections.current[left.current])?.scrollTop ?? 0;\n left.current = index;\n }\n useLayoutEffect(() => {\n const from = shown.current;\n shown.current = index;\n if (from === index) return;\n const back = index < from;\n if (!back) focused.current[index] = null;\n focused.current.length = index + 1;\n const section = sections.current[index];\n const body = bodyOf(section);\n if (body) body.scrollTop = back ? (tops.current[index] ?? 0) : 0;\n focusDialogSection(section, back ? focused.current[index] : null);\n }, [index]);\n const go = (i: number) => {\n if (layer === undefined) setInner(i);\n onLayerChange?.(i);\n };\n const stack = layers.slice(0, index + 1);\n const current = stack[index];\n if (!current) return null;\n const remember = (i: number) => (e: FocusEvent<HTMLElement>) => {\n if (e.target instanceof HTMLElement) focused.current[i] = e.target;\n };\n return (\n <Dialog\n {...props}\n title={current.title}\n description={current.description}\n footer={\n current.footer\n ? stack.map((l, i) =>\n l.footer ? (\n <div key={i} hidden={i !== index} className=\"contents\" onFocus={remember(i)}>\n {l.footer}\n </div>\n ) : null,\n )\n : undefined\n }\n headerStart={\n index > 0 ? (\n <IconButton key=\"back\" icon={__icon_ArrowLeft01Icon} aria-label={t(\"dialog.back\", \"Back\")} onClick={() => go(index - 1)} className=\"animate-layer-in\" />\n ) : null\n }\n >\n {stack.map((l, i) => (\n <div\n key={i}\n ref={(el) => {\n sections.current[i] = el;\n }}\n hidden={i !== index}\n className=\"animate-layer-in\"\n onFocus={remember(i)}\n >\n {l.content}\n </div>\n ))}\n </Dialog>\n );\n}\nif (process.env.NODE_ENV !== \"production\") LayerDialog.displayName = \"LayerDialog\";\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"icon-Bha63LaN.js","names":["icons","Key01Icon","ShieldKeyIcon","Folder01Icon","Building03Icon","AiBrain01Icon","TestTube01Icon","Link01Icon","GaugeIcon","Wallet01Icon","LeftToRightListBulletIcon","Analytics01Icon","User03Icon","UserGroupIcon","Robot01Icon","Settings01Icon","Audit01Icon","ServerStack01Icon","PlugSocketIcon","Route01Icon","ArrowDataTransferVerticalIcon","Database01Icon","LockKeyIcon","LaptopIcon","DashboardSquare01Icon","ChartLineData01Icon","Home01Icon","ToolsIcon","CpuIcon","Image01Icon","Pdf01Icon","SourceCodeIcon","Logout01Icon","Copy01Icon","ArrowUpRight01Icon","LinkSquare02Icon","Add01Icon","Cancel01Icon","Edit02Icon","Delete02Icon","Download01Icon","Upload01Icon","Refresh01Icon","ArrowReloadHorizontalIcon","Search01Icon","FilterHorizontalIcon","SlidersHorizontalIcon","MoreHorizontalIcon","Menu01Icon","Sorting05Icon","UnfoldMoreIcon","ArrowExpand01Icon","ArrowShrink02Icon","ViewIcon","ViewOffSlashIcon","EyeIcon","SidebarLeftIcon","SidebarRightIcon","GridViewIcon","Layers01Icon","Tick02Icon","CheckmarkCircle02Icon","Alert02Icon","AlertCircleIcon","InformationCircleIcon","MinusSignIcon","Notification03Icon","ArrowDown01Icon","ArrowUp01Icon","ArrowLeft01Icon","ArrowRight01Icon","Calendar03Icon","Clock01Icon","CodeIcon","Mail01Icon","KeyboardIcon","HelpCircleIcon","GithubIcon","Sun03Icon","Moon02Icon","ComputerIcon"],"sources":["../../src/icons/vocabulary.ts"],"sourcesContent":["import {\n Add01Icon,\n AiBrain01Icon,\n TestTube01Icon,\n Alert02Icon,\n AlertCircleIcon,\n Analytics01Icon,\n ArrowDown01Icon,\n ArrowLeft01Icon,\n ArrowRight01Icon,\n ArrowUp01Icon,\n ArrowUpRight01Icon,\n ArrowDataTransferVerticalIcon,\n Audit01Icon,\n Building03Icon,\n Calendar03Icon,\n Cancel01Icon,\n CheckmarkCircle02Icon,\n Clock01Icon,\n CodeIcon,\n Copy01Icon,\n CpuIcon,\n Database01Icon,\n Delete02Icon,\n Download01Icon,\n Edit02Icon,\n EyeIcon,\n FilterHorizontalIcon,\n Folder01Icon,\n GaugeIcon,\n GithubIcon,\n HelpCircleIcon,\n Home01Icon,\n Image01Icon,\n InformationCircleIcon,\n Key01Icon,\n KeyboardIcon,\n LeftToRightListBulletIcon,\n Link01Icon,\n LinkSquare02Icon,\n LockKeyIcon,\n Logout01Icon,\n Mail01Icon,\n Menu01Icon,\n Moon02Icon,\n MoreHorizontalIcon,\n Pdf01Icon,\n PlugSocketIcon,\n Refresh01Icon,\n Robot01Icon,\n Route01Icon,\n Search01Icon,\n ServerStack01Icon,\n Settings01Icon,\n ShieldKeyIcon,\n SidebarLeftIcon,\n SidebarRightIcon,\n SlidersHorizontalIcon,\n Sorting05Icon,\n SourceCodeIcon,\n Sun03Icon,\n Tick02Icon,\n ToolsIcon,\n User03Icon,\n UserGroupIcon,\n ViewIcon,\n ViewOffSlashIcon,\n Wallet01Icon,\n ComputerIcon,\n DashboardSquare01Icon,\n ChartLineData01Icon,\n GridViewIcon,\n Layers01Icon,\n ArrowExpand01Icon,\n ArrowShrink02Icon,\n MinusSignIcon,\n Upload01Icon,\n Notification03Icon,\n ArrowReloadHorizontalIcon,\n UnfoldMoreIcon,\n LaptopIcon,\n} from \"@hugeicons/core-free-icons\";\n\nexport const icons = {\n key: Key01Icon,\n providerKey: ShieldKeyIcon,\n project: Folder01Icon,\n organization: Building03Icon,\n model: AiBrain01Icon,\n playground: TestTube01Icon,\n alias: Link01Icon,\n limit: GaugeIcon,\n budget: Wallet01Icon,\n requestLog: LeftToRightListBulletIcon,\n usage: Analytics01Icon,\n member: User03Icon,\n members: UserGroupIcon,\n serviceAccount: Robot01Icon,\n settings: Settings01Icon,\n audit: Audit01Icon,\n instance: ServerStack01Icon,\n provider: PlugSocketIcon,\n route: Route01Icon,\n gateway: ArrowDataTransferVerticalIcon,\n database: Database01Icon,\n security: LockKeyIcon,\n session: LaptopIcon,\n overview: DashboardSquare01Icon,\n chart: ChartLineData01Icon,\n home: Home01Icon,\n tools: ToolsIcon,\n reasoning: CpuIcon,\n vision: Image01Icon,\n pdf: Pdf01Icon,\n structuredOutput: SourceCodeIcon,\n signOut: Logout01Icon,\n copy: Copy01Icon,\n externalLink: ArrowUpRight01Icon,\n openExternal: LinkSquare02Icon,\n add: Add01Icon,\n close: Cancel01Icon,\n edit: Edit02Icon,\n delete: Delete02Icon,\n download: Download01Icon,\n upload: Upload01Icon,\n refresh: Refresh01Icon,\n retry: ArrowReloadHorizontalIcon,\n search: Search01Icon,\n filter: FilterHorizontalIcon,\n displayOptions: SlidersHorizontalIcon,\n more: MoreHorizontalIcon,\n menu: Menu01Icon,\n sort: Sorting05Icon,\n switcher: UnfoldMoreIcon,\n expand: ArrowExpand01Icon,\n collapse: ArrowShrink02Icon,\n show: ViewIcon,\n hide: ViewOffSlashIcon,\n reveal: EyeIcon,\n sidebar: SidebarLeftIcon,\n sidePanel: SidebarRightIcon,\n list: LeftToRightListBulletIcon,\n board: GridViewIcon,\n stack: Layers01Icon,\n check: Tick02Icon,\n success: CheckmarkCircle02Icon,\n warning: Alert02Icon,\n error: AlertCircleIcon,\n info: InformationCircleIcon,\n minus: MinusSignIcon,\n notification: Notification03Icon,\n chevronDown: ArrowDown01Icon,\n chevronUp: ArrowUp01Icon,\n chevronLeft: ArrowLeft01Icon,\n chevronRight: ArrowRight01Icon,\n arrowRight: ArrowRight01Icon,\n calendar: Calendar03Icon,\n time: Clock01Icon,\n code: CodeIcon,\n mail: Mail01Icon,\n keyboard: KeyboardIcon,\n help: HelpCircleIcon,\n github: GithubIcon,\n themeLight: Sun03Icon,\n themeDark: Moon02Icon,\n themeSystem: ComputerIcon,\n} as const;\n\nexport type IconName = keyof typeof icons;\n"],"mappings":";;AAmFA,IAAaA,KAAQ;CACnB,KAAKC;CACL,aAAaC;CACb,SAASC;CACT,cAAcC;CACd,OAAOC;CACP,YAAYC;CACZ,OAAOC;CACP,OAAOC;CACP,QAAQC;CACR,YAAYC;CACZ,OAAOC;CACP,QAAQC;CACR,SAASC;CACT,gBAAgBC;CAChB,UAAUC;CACV,OAAOC;CACP,UAAUC;CACV,UAAUC;CACV,OAAOC;CACP,SAASC;CACT,UAAUC;CACV,UAAUC;CACV,SAASC;CACT,UAAUC;CACV,OAAOC;CACP,MAAMC;CACN,OAAOC;CACP,WAAWC;CACX,QAAQC;CACR,KAAKC;CACL,kBAAkBC;CAClB,SAASC;CACT,MAAMC;CACN,cAAcC;CACd,cAAcC;CACd,KAAKC;CACL,OAAOC;CACP,MAAMC;CACN,QAAQC;CACR,UAAUC;CACV,QAAQC;CACR,SAASC;CACT,OAAOC;CACP,QAAQC;CACR,QAAQC;CACR,gBAAgBC;CAChB,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,UAAUC;CACV,QAAQC;CACR,UAAUC;CACV,MAAMC;CACN,MAAMC;CACN,QAAQC;CACR,SAASC;CACT,WAAWC;CACX,MAAM/C;CACN,OAAOgD;CACP,OAAOC;CACP,OAAOC;CACP,SAASC;CACT,SAASC;CACT,OAAOC;CACP,MAAMC;CACN,OAAOC;CACP,cAAcC;CACd,aAAaC;CACb,WAAWC;CACX,aAAaC;CACb,cAAcC;CACd,YAAYA;CACZ,UAAUC;CACV,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,UAAUC;CACV,MAAMC;CACN,QAAQC;CACR,YAAYC;CACZ,WAAWC;CACX,aAAaC;AACf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"link-tTapNTpM.js","names":["__icon_ArrowUpRight01Icon","cn","isExternalHref","useLinkComponent","useUiText","Icon","KAESO_LINK_VARIANTS","KAESO_LINK_DEFAULT_VARIANTS","Link","props","LinkComp","t","isExternal","external","href","variant","className","children","ArrowUpRight01Icon"],"sources":["../../src/components/link/link.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { isExternalHref, useLinkComponent } from \"../../utils/link-provider.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { ArrowUpRight01Icon as __icon_ArrowUpRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_LINK_VARIANTS = {\n variant: {\n inline: {\n classes: \"text-inherit underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current\",\n },\n quiet: {\n classes: \"text-fg-secondary no-underline hover:text-fg\",\n },\n standalone: {\n classes: \"font-medium text-fg no-underline hover:underline hover:decoration-line-strong hover:underline-offset-3\",\n },\n },\n} as const;\nexport const KAESO_LINK_DEFAULT_VARIANTS = { variant: \"inline\" } as const;\n\nexport interface LinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string;\n variant?: keyof typeof KAESO_LINK_VARIANTS.variant | undefined;\n external?: boolean | undefined;\n children: ReactNode;\n}\n\nexport const Link = /* @__PURE__ */ forwardRef<HTMLAnchorElement, LinkProps>(function Link({ href, variant = \"inline\", external, className, children, ...props }, ref) {\n const LinkComp = useLinkComponent();\n const t = useUiText();\n const isExternal = external ?? isExternalHref(href);\n return (\n <LinkComp\n ref={ref}\n href={href}\n className={cn(\n \"relative -mx-2 box-decoration-clone rounded-code px-2 transition-control focus-ring tap-target\",\n KAESO_LINK_VARIANTS.variant[variant].classes,\n className,\n )}\n {...(isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n {...props}\n >\n {children}\n {isExternal && (\n <span aria-hidden=\"true\" className=\"whitespace-nowrap\">\n {\"\\u2060\"}\n <Icon icon={__icon_ArrowUpRight01Icon} size=\"xs\" className=\"ml-2 inline-block align-middle\" />\n </span>\n )}\n {isExternal && <span className=\"sr-only\">{t(\"link.opensInNewTab\", \" (opens in a new tab)\")}</span>}\n </LinkComp>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Link.displayName = \"Link\";\n"],"mappings":";;;;;;;;;AAOA,IAAaM,IAAsB,EACjC,SAAS;CACP,QAAQ,EACN,SAAS,yGACX;CACA,OAAO,EACL,SAAS,+CACX;CACA,YAAY,EACV,SAAS,yGACX;AACF,EACF,GACaC,IAA8B,EAAE,SAAS,SAAS,GASlDC,IAAuB,kBAAyC,SAAc,EAAE,SAAM,aAAU,UAAU,aAAU,cAAW,aAAU,GAAGC,KAAS,GAAK;CACrK,IAAMC,IAAWP,EAAiB,GAC5BQ,IAAIP,EAAU,GACdQ,IAAaC,KAAYX,EAAeY,CAAI;CAClD,OACE,kBAACJ,GAAD;EACO;EACC;EACN,WAAWT,EACT,kGACAK,EAAoB,QAAQS,EAAQ,CAAC,SACrCC,CACF;EACA,GAAKJ,IAAa;GAAE,QAAQ;GAAU,KAAK;EAAsB,IAAI,CAAC;EACtE,GAAIH;EATN,UAAA;GAWGQ;GACAL,KACC,kBAAC,QAAD;IAAM,eAAY;IAAO,WAAU;IAAnC,UAAA,CACG,KACD,kBAACP,GAAD;KAAM,MAAML;KAA2B,MAAK;KAAK,WAAU;IAAkC,CAAA,CACzF;;GAEPY,KAAc,kBAAC,QAAD;IAAM,WAAU;IAAW,UAAAD,EAAE,sBAAsB,uBAAuB;GAAQ,CAAA;EACzF;;AAEd,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-CN8pO8lv.js","names":["__icon_Add01Icon","__icon_Cancel01Icon","cn","usePortalContainer","useUiText","Icon","useLazyModule","lazyModule","Text","IconButton","useLayoutWidth","Skeleton","scrollParent","checkbox","n","RowCheckbox","ariaLabel","mod","over","setOver","useState","pressed","setPressed","useEffect","timer","release","onToggle","checked","virtualRows","KAESO_LIST_VARIANTS","KAESO_LIST_DEFAULT_VARIANTS","ID_W","NARROW","FOCUSABLE","TEXT_ENTRY","removeWidgetsFromTabOrder","line","root","primary","widget","List","selectedProp","forceRow","inset","useInset","selectedInner","setSelectedInner","selected","setSelected","useCallback","s","onSelectedChange","collapsed","setCollapsed","groups","g","active","setActive","anchor","setAnchor","useRef","width","narrow","flat","useMemo","rows","list","item","c","i","a","items","firstRow","f","none","virtual","virtualizeAbove","estimateSize","density","VirtualRows","scrollTo","tabStop","focusLine","now","hadVirtualRows","useLayoutEffect","el","observer","toggle","id","enabledIds","lines","onKeyDown","target","index","onPrimary","row","selectable","moveTo","from","next","widgets","w","at","onOpen","selecting","render","GroupHeader","ListRow","ref","loading","className","LoadingRows","empty","FirstRows","selectionBar","SelectionBar","selectionActions","view","total","extra","count","j","force","card","t","stacked","onSelect","depth","lastChild","idWidth","first","indent","glyph","title","onAdd","Add01Icon","addLabel","container","createPortal","children","onClear","Cancel01Icon","SelectionAction","danger","icon"],"sources":["../../src/components/list/row-checkbox.tsx","../../src/components/list/list.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { lazyModule, useLazyModule } from \"../../utils/lazy-module.js\";\n\nconst checkbox = /* @__PURE__ */ lazyModule(() => import(\"../checkbox/checkbox.js\"));\n\nexport function RowCheckbox({ checked, onToggle, \"aria-label\": ariaLabel }: { checked: boolean; onToggle: () => void; \"aria-label\": string }) {\n const mod = useLazyModule(checkbox, true);\n const [over, setOver] = useState(false);\n const [pressed, setPressed] = useState(false);\n useEffect(() => {\n if (!pressed) return;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const release = () => {\n timer = setTimeout(() => setPressed(false));\n };\n window.addEventListener(\"pointerup\", release, true);\n window.addEventListener(\"pointercancel\", release, true);\n return () => {\n clearTimeout(timer);\n window.removeEventListener(\"pointerup\", release, true);\n window.removeEventListener(\"pointercancel\", release, true);\n };\n }, [pressed]);\n if (mod && !over && !pressed) return <mod.CheckboxBox checked={checked} onCheckedChange={onToggle} aria-label={ariaLabel} />;\n return (\n <span\n role=\"checkbox\"\n aria-checked={checked}\n aria-label={ariaLabel}\n onPointerEnter={() => setOver(true)}\n onPointerLeave={() => setOver(false)}\n onPointerDown={() => setPressed(true)}\n onClick={() => {\n onToggle();\n setOver(false);\n setPressed(false);\n }}\n className=\"relative -m-3 inline-flex size-24 shrink-0 cursor-pointer items-center justify-center rounded-checkbox\"\n >\n <span aria-hidden className={cn(\"flex size-18 items-center justify-center rounded-checkbox\", checked ? \"bg-ink\" : \"bg-raised shadow-selector\")} />\n </span>\n );\n}\n","import { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useInset } from \"../../utils/inset.js\";\nimport { Add01Icon as __icon_Add01Icon, 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 { Text } from \"../text/text.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { scrollParent } from \"../../hooks/scroll-parent.js\";\nimport { useLayoutWidth } from \"../../hooks/use-layout-width.js\";\nimport { createPortal } from \"react-dom\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { lazyModule, useLazyModule } from \"../../utils/lazy-module.js\";\nimport { RowCheckbox } from \"./row-checkbox.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nconst virtualRows = /* @__PURE__ */ lazyModule(() => import(\"./virtual-rows.js\"));\n\nexport const KAESO_LIST_VARIANTS = {\n density: {\n default: { classes: \"h-44\" },\n compact: { classes: \"h-36\" },\n },\n} as const;\nexport const KAESO_LIST_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\nexport interface ListItemData {\n id: string;\n title: ReactNode;\n textValue?: string | undefined;\n subtitle?: ReactNode | undefined;\n glyph?: ReactNode | undefined;\n leading?: ReactNode | undefined;\n displayId?: string | undefined;\n meta?: ReactNode | undefined;\n date?: ReactNode | undefined;\n avatar?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n children?: ListItemData[] | undefined;\n disabled?: boolean | undefined;\n}\n\nexport interface ListGroup {\n id: string;\n title: ReactNode;\n glyph?: ReactNode | undefined;\n count?: number | undefined;\n items: ListItemData[];\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n defaultCollapsed?: boolean | undefined;\n}\n\ntype Flat = { kind: \"header\"; group: ListGroup; key: string } | { kind: \"row\"; item: ListItemData; depth: 0 | 1; lastChild: boolean; key: string };\n\nexport interface ListProps {\n items?: ListItemData[] | undefined;\n groups?: ListGroup[] | undefined;\n onOpen?: ((item: ListItemData) => void) | undefined;\n selectable?: boolean | undefined;\n selected?: Set<string> | undefined;\n onSelectedChange?: ((selected: Set<string>) => void) | undefined;\n idWidth?: 48 | 64 | 80 | 96 | 120 | undefined;\n density?: keyof typeof KAESO_LIST_VARIANTS.density | undefined;\n virtualizeAbove?: number | undefined;\n selectionActions?: ReactNode | undefined;\n selectionBar?: boolean | undefined;\n loading?: boolean | undefined;\n empty?: ReactNode | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n \"data-force-row\"?: string | undefined;\n}\n\nconst ID_W = { 48: \"w-48\", 64: \"w-64\", 80: \"w-80\", 96: \"w-96\", 120: \"w-120\" } as const;\n\nconst NARROW = 520;\nconst FOCUSABLE = \"a[href], button, input, select, textarea, [tabindex], [contenteditable=true]\";\nconst TEXT_ENTRY = \"input:not([type=checkbox]):not([type=radio]), textarea, select, [contenteditable=true]\";\n\nfunction removeWidgetsFromTabOrder(root: HTMLElement) {\n for (const line of root.querySelectorAll<HTMLElement>(\"[role=row]\")) {\n const primary = line.querySelector(\"[data-index]\");\n if (!primary) continue;\n for (const widget of line.querySelectorAll<HTMLElement>(FOCUSABLE)) {\n if (widget !== primary && widget.getAttribute(\"tabindex\") !== \"-1\") widget.setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n\nexport const List = /* @__PURE__ */ forwardRef<HTMLDivElement, ListProps>(function List(\n {\n items,\n groups,\n onOpen,\n selectable,\n selected: selectedProp,\n onSelectedChange,\n idWidth,\n density = \"default\",\n virtualizeAbove = 100,\n selectionActions,\n selectionBar = true,\n loading,\n empty,\n className,\n \"aria-label\": ariaLabel,\n \"data-force-row\": forceRow,\n },\n ref,\n) {\n const inset = useInset();\n const [selectedInner, setSelectedInner] = useState<Set<string>>(new Set());\n const selected = selectedProp ?? selectedInner;\n const setSelected = useCallback(\n (s: Set<string>) => {\n if (!selectedProp) setSelectedInner(s);\n onSelectedChange?.(s);\n },\n [selectedProp, onSelectedChange],\n );\n const [collapsed, setCollapsed] = useState<Set<string>>(() => new Set((groups ?? []).filter((g) => g.defaultCollapsed).map((g) => g.id)));\n const [active, setActive] = useState(-1);\n const [anchor, setAnchor] = useState<number | null>(null);\n const root = useRef<HTMLDivElement | null>(null);\n const width = useLayoutWidth(root);\n const narrow = !!width && width < NARROW;\n\n const flat = useMemo<Flat[]>(() => {\n const rows = (list: ListItemData[]): Flat[] =>\n list.flatMap((item) => [\n { kind: \"row\" as const, item, depth: 0 as const, lastChild: false, key: item.id },\n ...(item.children ?? []).map((c, i, a) => ({ kind: \"row\" as const, item: c, depth: 1 as const, lastChild: i === a.length - 1, key: c.id })),\n ]);\n if (groups) return groups.flatMap((g) => [{ kind: \"header\" as const, group: g, key: `h-${g.id}` }, ...(collapsed.has(g.id) ? [] : rows(g.items))]);\n return rows(items ?? []);\n }, [items, groups, collapsed]);\n const firstRow = flat.findIndex((f) => f.kind === \"row\");\n const none = groups ? groups.every((g) => g.items.length === 0) : (items ?? []).length === 0;\n\n const virtual = flat.length > virtualizeAbove;\n const estimateSize = (i: number) => (flat[i]?.kind === \"header\" ? (i === 0 ? 36 : 52) : narrow ? 64 : density === \"compact\" ? 36 : 44);\n const VirtualRows = useLazyModule(virtualRows, virtual)?.VirtualRows;\n const scrollTo = useRef<((index: number) => void) | null>(null);\n\n if (active >= flat.length) setActive(-1);\n const tabStop = active >= 0 ? active : flat.length ? 0 : -1;\n const focusLine = (i: number) => {\n setActive(i);\n if (virtual) scrollTo.current?.(i);\n const line = () => root.current?.querySelector<HTMLElement>(`[data-index=\"${i}\"]`);\n const now = line();\n if (now) now.focus();\n else requestAnimationFrame(() => line()?.focus());\n };\n const hadVirtualRows = useRef(!!VirtualRows);\n useLayoutEffect(() => {\n if (VirtualRows && !hadVirtualRows.current && active >= 0 && document.activeElement === document.body) {\n root.current?.querySelector<HTMLElement>(`[data-index=\"${active}\"]`)?.focus();\n }\n hadVirtualRows.current = !!VirtualRows;\n });\n useLayoutEffect(() => {\n const el = root.current;\n if (!el) return;\n removeWidgetsFromTabOrder(el);\n const observer = new MutationObserver(() => removeWidgetsFromTabOrder(el));\n observer.observe(el, { subtree: true, childList: true, attributes: true, attributeFilter: [\"tabindex\"] });\n return () => observer.disconnect();\n }, []);\n const toggle = (id: string) => {\n const s = new Set(selected);\n if (s.has(id)) s.delete(id);\n else s.add(id);\n setSelected(s);\n };\n const enabledIds = (lines: Flat[]) => lines.flatMap((f) => (f.kind === \"row\" && !f.item.disabled ? [f.item.id] : []));\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (e.defaultPrevented || !e.currentTarget.contains(target) || target.closest(TEXT_ENTRY)) return;\n const line = target.closest<HTMLElement>(\"[role=row]\");\n const primary = line?.querySelector<HTMLElement>(\"[data-index]\");\n if (!line || !primary) return;\n const index = Number(primary.dataset.index);\n const onPrimary = target === primary;\n const f = flat[index];\n const row = f?.kind === \"row\" ? f.item : undefined;\n if (e.altKey) return;\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === \"a\" && selectable && !e.shiftKey) {\n e.preventDefault();\n setSelected(new Set(enabledIds(flat)));\n }\n return;\n }\n const moveTo = (next: number) => {\n e.preventDefault();\n if (e.shiftKey && selectable) {\n const from = anchor ?? index;\n setAnchor(from);\n const s = new Set(selected);\n enabledIds(flat.slice(Math.min(from, next), Math.max(from, next) + 1)).forEach((id) => s.add(id));\n setSelected(s);\n } else setAnchor(null);\n focusLine(next);\n };\n const widgets = () =>\n [...line.querySelectorAll<HTMLElement>(FOCUSABLE)].filter(\n (w) => w !== primary && !w.closest(\"[role=checkbox], [aria-hidden=true], [hidden]\") && !w.matches(\":disabled, input[type=checkbox]\"),\n );\n if (e.key === \"ArrowDown\" || (e.key === \"j\" && !e.shiftKey)) moveTo(Math.min(flat.length - 1, index + 1));\n else if (e.key === \"ArrowUp\" || (e.key === \"k\" && !e.shiftKey)) moveTo(Math.max(0, index - 1));\n else if (e.key === \"Home\") moveTo(0);\n else if (e.key === \"End\") moveTo(flat.length - 1);\n else if (e.key === \"ArrowRight\" || e.key === \"ArrowLeft\") {\n const list = widgets();\n const at = onPrimary ? -1 : list.indexOf(target);\n const next = e.key === \"ArrowRight\" ? list[at + 1] : at > 0 ? list[at - 1] : at === 0 ? primary : undefined;\n if (!next) return;\n e.preventDefault();\n next.focus();\n } else if (e.key === \"Escape\" && !onPrimary) {\n e.preventDefault();\n primary.focus();\n } else if (!onPrimary || !row || e.shiftKey) {\n return;\n } else if ((e.key === \" \" || e.key === \"x\") && selectable) {\n e.preventDefault();\n if (!row.disabled) toggle(row.id);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (!row.disabled) onOpen?.(row);\n } else if (e.key === \"Escape\" && selectable && selected.size) {\n setSelected(new Set());\n }\n };\n const selecting = selected.size > 0;\n const render = (f: Flat, i: number) =>\n f.kind === \"header\" ? (\n <GroupHeader\n key={f.key}\n title={f.group.title}\n glyph={f.group.glyph}\n count={f.group.count ?? f.group.items.length}\n collapsed={collapsed.has(f.group.id)}\n onToggle={() => {\n const s = new Set(collapsed);\n if (s.has(f.group.id)) s.delete(f.group.id);\n else s.add(f.group.id);\n setCollapsed(s);\n }}\n onAdd={f.group.onAdd}\n addLabel={f.group.addLabel}\n indent={!!selectable}\n first={i === 0}\n index={i}\n active={i === tabStop}\n onFocus={() => setActive(i)}\n />\n ) : (\n <ListRow\n key={f.key}\n index={i}\n item={f.item}\n depth={f.depth}\n lastChild={f.lastChild}\n idWidth={idWidth}\n density={density}\n narrow={narrow}\n active={i === tabStop}\n selected={selected.has(f.item.id)}\n selectable={!!selectable}\n selecting={selecting}\n onSelect={() => toggle(f.item.id)}\n onOpen={() => onOpen?.(f.item)}\n onFocus={() => setActive(i)}\n {...(forceRow && i === firstRow ? { \"data-force\": forceRow } : {})}\n />\n );\n\n return (\n <div\n ref={(e) => {\n root.current = e;\n if (typeof ref === \"function\") ref(e);\n else if (ref) ref.current = e;\n }}\n role=\"grid\"\n aria-label={ariaLabel}\n aria-multiselectable={selectable || undefined}\n aria-busy={loading || undefined}\n onKeyDown={onKeyDown}\n className={cn(\"relative flex flex-col outline-none\", inset && \"overflow-hidden rounded-group bg-raised shadow-xs\", className)}\n >\n {loading && (none || flat.length === 0) ? (\n <LoadingRows density={density} />\n ) : none && empty ? (\n <div role=\"row\">\n <div role=\"gridcell\">{empty}</div>\n </div>\n ) : virtual && VirtualRows ? (\n <VirtualRows\n count={flat.length}\n estimateSize={estimateSize}\n getScrollElement={() => scrollParent(root.current)}\n scrollTo={scrollTo}\n row={(i) => render(flat[i]!, i)}\n measure={narrow}\n />\n ) : virtual ? (\n <FirstRows count={flat.length} estimateSize={estimateSize} row={(i) => render(flat[i]!, i)} />\n ) : (\n flat.map(render)\n )}\n {selectable && selecting && selectionBar && (\n <SelectionBar count={selected.size} onClear={() => setSelected(new Set())}>\n {selectionActions}\n </SelectionBar>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") List.displayName = \"List\";\n\nfunction FirstRows({ count, estimateSize, row }: { count: number; estimateSize: (index: number) => number; row: (index: number) => ReactNode }) {\n const view = typeof window === \"undefined\" ? 1024 : window.innerHeight;\n const rows: ReactNode[] = [];\n let total = 0;\n let extra = 12;\n for (let i = 0; i < count; i++) {\n if (total >= view && extra-- <= 0) {\n for (let j = i; j < count; j++) total += estimateSize(j);\n break;\n }\n rows.push(\n <div key={i} role=\"presentation\" className=\"absolute top-0 left-0 w-full\" style={{ transform: `translateY(${Math.round(total)}px)` }}>\n {row(i)}\n </div>,\n );\n total += estimateSize(i);\n }\n return (\n <div role=\"presentation\" className=\"relative w-full\" style={{ height: total }}>\n {rows}\n </div>\n );\n}\n\nfunction LoadingRows({ density }: { density: keyof typeof KAESO_LIST_VARIANTS.density }) {\n return (\n <div role=\"presentation\">\n {[62, 48, 70, 54, 40, 58].map((w, i) => (\n <div key={i} role=\"presentation\" className=\"px-8\">\n <div className={cn(\"flex items-center gap-12 px-16\", KAESO_LIST_VARIANTS.density[density].classes)}>\n <Skeleton shape=\"line\" className=\"min-w-0\" style={{ width: `${w}%` }} />\n <span className=\"flex-1\" />\n <Skeleton shape=\"line\" className=\"w-64 shrink-0\" />\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nexport interface ListRowProps {\n item: ListItemData;\n index?: number | undefined;\n depth?: 0 | 1 | undefined;\n lastChild?: boolean | undefined;\n idWidth?: keyof typeof ID_W | undefined;\n density?: keyof typeof KAESO_LIST_VARIANTS.density | undefined;\n narrow?: boolean | undefined;\n active?: boolean | undefined;\n selected?: boolean | undefined;\n selectable?: boolean | undefined;\n selecting?: boolean | undefined;\n onSelect?: (() => void) | undefined;\n onOpen?: (() => void) | undefined;\n onFocus?: (() => void) | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const ListRow = /* @__PURE__ */ forwardRef<HTMLDivElement, ListRowProps>(function ListRow(\n {\n item,\n index,\n depth = 0,\n lastChild,\n idWidth,\n density = \"default\",\n narrow = false,\n active,\n selected,\n selectable,\n selecting,\n onSelect,\n onOpen,\n onFocus,\n \"data-force\": force,\n },\n ref,\n) {\n const card = useInset();\n const t = useUiText();\n const lines = narrow && !!(item.meta || item.date);\n const stacked = (card || lines) && !!item.subtitle;\n return (\n <div role=\"row\" className={card ? cn(\"px-0\", index !== undefined && index > 0 && \"hairline-t\") : \"px-8\"}>\n <div\n ref={ref}\n role=\"gridcell\"\n aria-selected={selectable ? !!selected : undefined}\n aria-disabled={item.disabled || undefined}\n data-index={index}\n data-row=\"\"\n tabIndex={active === false ? -1 : 0}\n onFocus={onFocus}\n onClick={(e: MouseEvent<HTMLElement>) => {\n if (!e.currentTarget.contains(e.target as Node) || (e.target as HTMLElement).closest(\"button, a, [role=checkbox]\")) return;\n if (selecting && selectable) onSelect?.();\n else onOpen?.();\n }}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"group/row relative flex cursor-pointer items-center gap-12 px-16 text-body transition-control focus-ring-inset select-none\",\n card ? \"rounded-none\" : \"rounded-item\",\n lines ? \"min-h-56 py-8\" : stacked ? \"h-56\" : card && density === \"default\" ? \"h-48\" : KAESO_LIST_VARIANTS.density[density].classes,\n \"hover:bg-fill-1 hover:controls-on-fill\",\n selected && \"bg-fill-2 controls-on-fill hover:bg-fill-2\",\n item.disabled && \"pointer-events-none text-fg-disabled\",\n )}\n >\n {selectable && (\n <span\n className={cn(\n \"flex shrink-0 transition-control\",\n selecting || selected ? \"opacity-100\" : \"opacity-0 group-hover/row:opacity-100 group-focus-visible/row:opacity-100 coarse:opacity-100\",\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <RowCheckbox\n checked={!!selected}\n onToggle={() => onSelect?.()}\n aria-label={t(\"list.selectItem\", \"Select {name}\", { name: item.textValue ?? (typeof item.title === \"string\" ? item.title : item.id) })}\n />\n </span>\n )}\n {depth === 1 && (\n <span aria-hidden className=\"relative -ml-4 h-full w-16 shrink-0\">\n <span className={cn(\"absolute left-6 w-1 bg-line-strong\", lastChild ? \"top-0 h-1/2\" : \"inset-y-0\")} />\n <span className=\"absolute top-1/2 left-6 h-1 w-10 bg-line-strong\" />\n </span>\n )}\n {item.glyph && <span className=\"flex size-16 shrink-0 items-center justify-center\">{item.glyph}</span>}\n {item.leading && <span className=\"-mr-4 flex shrink-0\">{item.leading}</span>}\n {item.displayId && <span className={cn(\"shrink-0 truncate mono text-small text-fg-tertiary tabular\", idWidth && ID_W[idWidth])}>{item.displayId}</span>}\n <span className={cn(\"flex min-w-0 flex-1\", lines ? \"flex-col items-start gap-4\" : \"contents\")}>\n <span className={cn(\"flex min-w-0\", lines ? \"w-full\" : \"flex-1\", stacked ? \"flex-col items-start gap-2\" : \"items-baseline gap-8\")}>\n {typeof item.title === \"string\" ? (\n <Text truncate weight=\"medium\" className={cn(\"min-w-0 shrink\", stacked && \"max-w-full\")}>\n {item.title}\n </Text>\n ) : (\n <span className={cn(\"min-w-0 truncate font-medium text-fg\", stacked && \"max-w-full\")}>{item.title}</span>\n )}\n {item.subtitle && (\n <span className={cn(\"min-w-0 truncate text-fg-secondary\", stacked ? \"max-w-full text-small\" : \"flex-1 basis-0\")}>{item.subtitle}</span>\n )}\n </span>\n {lines && (\n <span className=\"flex min-w-0 flex-wrap items-center gap-x-8 gap-y-4\">\n {item.meta && <span className=\"flex min-w-0 flex-wrap items-center gap-6\">{item.meta}</span>}\n {item.date && <span className=\"text-small whitespace-nowrap text-fg-secondary tabular\">{item.date}</span>}\n </span>\n )}\n </span>\n {lines && item.actions && <span className=\"flex shrink-0 items-center gap-2\">{item.actions}</span>}\n {!lines && (item.meta || item.actions) && (\n <span className=\"relative flex shrink-0 items-center gap-6\">\n <span className={cn(\"flex items-center gap-6\", item.actions && \"transition-control group-hover/row:opacity-0 group-focus-within/row:opacity-0\")}>\n {item.meta}\n </span>\n {item.actions && (\n <span\n className={cn(\n \"flex items-center gap-2 opacity-0 transition-control group-hover/row:opacity-100 group-focus-within/row:opacity-100 coarse:opacity-100\",\n item.meta && \"absolute inset-y-0 right-0 coarse:static\",\n )}\n >\n {item.actions}\n </span>\n )}\n </span>\n )}\n {!lines && item.date && <span className=\"min-w-80 shrink-0 text-right text-small whitespace-nowrap text-fg-secondary tabular\">{item.date}</span>}\n {item.avatar && <span className=\"flex shrink-0\">{item.avatar}</span>}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ListRow.displayName = \"ListRow\";\n\nexport interface GroupHeaderProps {\n title: ReactNode;\n glyph?: ReactNode | undefined;\n count?: number | undefined;\n collapsed?: boolean | undefined;\n onToggle?: (() => void) | undefined;\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n indent?: boolean | undefined;\n first?: boolean | undefined;\n index?: number | undefined;\n active?: boolean | undefined;\n onFocus?: (() => void) | undefined;\n}\n\nexport const GroupHeader = /* @__PURE__ */ forwardRef<HTMLDivElement, GroupHeaderProps>(function GroupHeader(\n { title, glyph, count, collapsed, onToggle, onAdd, addLabel, indent, first, index, active, onFocus },\n ref,\n) {\n const card = useInset();\n const t = useUiText();\n return (\n <div ref={ref} role=\"row\" onFocus={onFocus} className={card ? cn(\"group/gh bg-fill-1\", !first && \"hairline-t\") : \"group/gh px-8 pt-16 first:pt-0\"}>\n <div role=\"gridcell\" className={cn(\"flex items-center gap-4 pr-8\", card ? \"h-36 pl-6\" : \"h-36\", !card && (indent ? \"pl-36\" : \"pl-6\"))}>\n <button\n type=\"button\"\n aria-expanded={!collapsed}\n data-index={index}\n tabIndex={active === false ? -1 : 0}\n onClick={onToggle}\n className=\"relative flex h-28 min-w-0 cursor-pointer items-center gap-8 rounded-pill px-10 text-small transition-control hover:bg-fill-1 focus-ring tap-target\"\n >\n {glyph && <span className=\"flex size-16 items-center justify-center\">{glyph}</span>}\n <span className=\"truncate font-medium text-fg-secondary\">{title}</span>\n {count !== undefined && <span className=\"text-fg-tertiary tabular\">{count}</span>}\n <svg viewBox=\"0 0 8 8\" aria-hidden className={cn(\"size-8 text-fg-tertiary transition-transform duration-180\", !collapsed && \"rotate-90\")}>\n <path d=\"M2.5 1.5 5.5 4l-3 2.5z\" fill=\"currentColor\" />\n </svg>\n </button>\n <span className=\"flex-1\" />\n {onAdd && (\n <span className=\"flex opacity-0 transition-control group-hover/gh:opacity-100 group-focus-within/gh:opacity-100 coarse:opacity-100\">\n <IconButton icon={__icon_Add01Icon} aria-label={addLabel ?? t(\"list.add\", \"Add\")} size=\"xs\" onClick={onAdd} />\n </span>\n )}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") GroupHeader.displayName = \"GroupHeader\";\n\nexport function SelectionBar({ count, onClear, children }: { count: number; onClear: () => void; children?: ReactNode | undefined }) {\n const container = usePortalContainer();\n const t = useUiText();\n if (typeof document === \"undefined\") return null;\n return createPortal(\n <div\n role=\"region\"\n aria-label={t(\"list.selection\", \"Selection\")}\n className=\"pointer-events-none fixed right-0 bottom-24 left-0 z-50 flex justify-center px-16\"\n >\n <div className=\"pointer-events-auto flex min-h-44 items-center gap-4 rounded-pill bg-toast py-6 pr-6 pl-16 text-body font-medium text-toast-fg shadow-toast popup-motion\">\n <span className=\"pr-8 tabular\">{t(\"list.selected\", \"{count} selected\", { count: String(count) })}</span>\n <span className=\"mr-4 h-20 w-1 bg-toast-action\" aria-hidden />\n {children}\n <button\n type=\"button\"\n onClick={onClear}\n aria-label={t(\"list.clearSelection\", \"Clear selection\")}\n className=\"inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-toast-fg-secondary transition-control hover:bg-toast-action hover:text-toast-fg focus-ring\"\n >\n <Icon icon={__icon_Cancel01Icon} size=\"sm\" />\n </button>\n </div>\n </div>,\n container ?? document.body,\n );\n}\nif (process.env.NODE_ENV !== \"production\") SelectionBar.displayName = \"SelectionBar\";\n\nexport function SelectionAction({\n children,\n onClick,\n icon,\n danger,\n}: {\n children: ReactNode;\n onClick?: (() => void) | undefined;\n icon?: IconData | undefined;\n danger?: boolean | undefined;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"inline-flex h-32 cursor-pointer items-center gap-6 rounded-pill px-12 text-body font-medium transition-control hover:bg-toast-action focus-ring\",\n danger ? \"text-toast-danger\" : \"text-toast-fg\",\n icon && \"pl-10\",\n )}\n >\n {icon && <Icon icon={icon} size=\"sm\" className={danger ? undefined : \"text-toast-fg-secondary\"} />}\n {children}\n </button>\n );\n}\nif (process.env.NODE_ENV !== \"production\") SelectionAction.displayName = \"SelectionAction\";\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logo-VmXYhIJL.js","names":["geometry.mark","geometry.markIcon","geometry.lockup","geometry.wordmark","cn","mark","markIcon","wordmark","lockup","KAESO_LOGO_VARIANTS","KAESO_LOGO_DEFAULT_VARIANTS","makeSvg","C","defaultTitle","props","g","base","sizeClass","className","decorative","title","d","name","MarkSvg","IconSvg","LockupSvg","WordmarkSvg","Mark","size","IconMark","Lockup","WORDMARK_TIGHT","Wordmark","style","Logo"],"sources":["../../src/components/logo/paths.ts","../../src/components/logo/logo.tsx"],"sourcesContent":["export const mark = {\n viewBox: \"80.5 79.5 861 643\",\n paths: [\n \"m240 100h162c9 0 13 3 20 9l155 136c27 24 53 38 84 40h253q7 0 7 7v50q0 6-7 6l-403-8c-25-1-44-8-63-25l-212-204c-6-6-4-11 4-11z\",\n \"m107 542c45-33 92-65 138-96 62-41 114-60 184-61h484q8 0 8 7v19q0 7-8 7l-354 1c-44 0-73 7-102 29l-202 161q-6 5-14 5h-134q-6 0-6-6v-58q0-5 6-8z\",\n \"m307 693 225-202c22-19 49-27 78-28l303-5q8 0 8 8v56q0 5-6 5h-182c-31 0-51 8-72 25l-165 140c-7 6-12 10-23 10h-164c-6 0-7-4-2-9z\",\n ],\n} as const;\nexport const markIcon = {\n viewBox: \"107 90 620 620\",\n paths: [\n \"m240 100h162c9 0 13 3 20 9l155 136c27 24 53 38 84 40h253q7 0 7 7v50q0 6-7 6l-403-8c-25-1-44-8-63-25l-212-204c-6-6-4-11 4-11z\",\n \"m107 542c45-33 92-65 138-96 62-41 114-60 184-61h484q8 0 8 7v19q0 7-8 7l-354 1c-44 0-73 7-102 29l-202 161q-6 5-14 5h-134q-6 0-6-6v-58q0-5 6-8z\",\n \"m307 693 225-202c22-19 49-27 78-28l303-5q8 0 8 8v56q0 5-6 5h-182c-31 0-51 8-72 25l-165 140c-7 6-12 10-23 10h-164c-6 0-7-4-2-9z\",\n ],\n} as const;\nexport const wordmark = {\n viewBox: \"49.952 47.249 925.995 221.798\",\n paths: [\n \"m72 71.5h34.5v76.1l86-76.1h47.1l-89.6 81.9 90.5 91.8h-46.3l-70.8-70.3-16.9 15.7v54.6h-34.5z\",\n \"m330.5 71.5h31.6l80.2 173.7h-38.1l-20.5-43.2h-79.6l-19.5 43.2h-34.5zm14.6 42.6-26.7 59.2h53.6z\",\n \"m457.7 71.5h136.4v30.6h-101.4v37.8h87.4v31h-87.4v43.1h102.3v31.2h-137.3z\",\n \"m748.1 79.3v31.8c-20.5-7.1-41.8-11-65.4-11-21.7 0-34.7 6.2-34.7 19.8 0 11.5 9.8 16.8 26.4 18.9l21.3 1.7c40.7 2.5 63.3 18.2 63.3 52.2 0 36.1-26.1 54.3-74.8 54.3-24 0-46.4-3.6-66.4-11.7v-32.3c21.3 8.5 40.9 12.9 65.4 12.9 25.9 0 39.9-6.7 39.9-20.3 0-13.3-10.4-19.1-30.2-20.6l-21.4-1.4c-40.2-2.6-60.5-19.1-60.5-50.2 0-33.7 26.8-54.1 69.8-54.1 27.1 0 48.4 3 67.3 10z\",\n \"m862.8 69.7c52.3 0 91.1 37.1 91.1 88.8 0 52.4-37.2 88.3-90.9 88.3-53.9 0-92-36.4-92-88 0-51.1 39.4-89.1 91.8-89.1zm0 33.3c-32.7 0-55.3 23.4-55.3 55.8 0 32.5 22.5 55 55.5 55 32.9 0 55-22.8 55-55s-22.7-55.8-55.2-55.8z\",\n ],\n} as const;\nexport const lockup = {\n viewBox: \"42.541 42.142 939.02 234.215\",\n paths: [\n \"m112 64.5h57.5l46.3 42.3c12.3 10.8 23.3 13.3 39.5 13.3h72.9v19.9h-117c-14.8 0-26-1.3-33.6-8.4z\",\n \"m64.9 205.1 47.2-29.3c25.2-15.9 44.7-23.9 73.5-23.9h142.6v12.3h-111.6c-17.2 0-24.8 2.2-35.9 10.6l-66.8 51.5h-49z\",\n \"m132.9 254 64.8-58.5c13.5-12.4 22.4-16.1 44.1-16.1h86.4v21.6h-60.7c-13.4 0-17.9 2.2-26.9 9.7l-48.8 43.3z\",\n \"m383.5 101h22.3v48.6l55.5-48.6h30.1l-57.3 52.2 59.1 58.8h-30.4l-44.8-44-12.2 10.5v33.5h-22.3z\",\n \"m498.7 212 52.5-111h19.5l52.1 111h-24.8l-12.3-28h-51.2l-12.9 28zm44.6-46.9h33.7l-16.6-36.4z\",\n \"m632.8 101h89v20.2h-65.9v23.8h57.2v20.1h-57.2v26.5h66.9v20.4h-90z\",\n \"m823.6 105.5v20.7c-12.9-4.3-24.3-6.6-38.2-6.6-17.3 0-26.8 4.3-26.8 12.5 0 8.7 8 11.1 25.1 11.9 31.6 1.4 46.8 11.3 46.8 33.3 0 24.3-18 35.9-48.5 35.9-17 0-33-2.6-44.5-6.5v-21.2c14.1 5.2 28.6 7.6 43.3 7.6 17.3 0 26.5-4.1 26.5-12.9 0-8.7-6.7-12-25.4-13-31.8-1.5-47.9-10.1-47.9-32.3 0-22.3 17.6-35 47.5-35 15.6 0 30 1.7 42.1 5.6z\",\n \"m898.9 100c35.8 0 60.3 23 60.3 56.7s-24.5 56.6-60.3 56.6c-35.7 0-59.9-22.8-59.9-56.6 0-33.7 24.2-56.7 59.9-56.7zm0 21.1c-21.9 0-36.8 14.2-36.8 35.6s14.9 35.5 36.8 35.5c22 0 36.7-14.1 36.7-35.5s-14.7-35.6-36.7-35.6z\",\n ],\n} as const;\n","import { forwardRef, type SVGAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport * as geometry from \"./paths.js\";\n\nexport const KAESO_LOGO_VARIANTS = {\n markSize: {\n sm: { classes: \"h-20\" },\n md: { classes: \"h-24\" },\n lg: { classes: \"h-32\" },\n xl: { classes: \"h-48\" },\n },\n lockupSize: {\n sm: { classes: \"h-28\" },\n md: { classes: \"h-32\" },\n lg: { classes: \"h-40\" },\n },\n} as const;\nexport const KAESO_LOGO_DEFAULT_VARIANTS = { markSize: \"md\", lockupSize: \"sm\" } as const;\n\ntype Geometry = { readonly viewBox: string; readonly paths: readonly string[] };\ninterface BaseLogoProps extends Omit<SVGAttributes<SVGSVGElement>, \"children\"> {\n title?: string | undefined;\n decorative?: boolean | undefined;\n}\n\nfunction makeSvg(name: string, g: Geometry, defaultTitle: string, base: string) {\n const C = /* @__PURE__ */ forwardRef<SVGSVGElement, BaseLogoProps & { sizeClass: string }>(function LogoSvg(\n { title = defaultTitle, decorative, sizeClass, className, ...props },\n ref,\n ) {\n return (\n <svg\n ref={ref}\n viewBox={g.viewBox}\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\"block w-auto shrink-0\", base, sizeClass, className)}\n {...(decorative ? { \"aria-hidden\": true, focusable: false } : { role: \"img\", \"aria-label\": title })}\n {...props}\n >\n {g.paths.map((d) => (\n <path key={d} d={d} />\n ))}\n </svg>\n );\n });\n C.displayName = name;\n return C;\n}\n\nconst MarkSvg = /* @__PURE__ */ makeSvg(\"Logo.Mark\", geometry.mark, \"Kaeso\", \"\");\nconst IconSvg = /* @__PURE__ */ makeSvg(\"Logo.Icon\", geometry.markIcon, \"Kaeso\", \"\");\nconst LockupSvg = /* @__PURE__ */ makeSvg(\"Logo.Lockup\", geometry.lockup, \"Kaeso\", \"\");\nconst WordmarkSvg = /* @__PURE__ */ makeSvg(\"Logo.Wordmark\", geometry.wordmark, \"Kaeso\", \"\");\n\nexport interface LogoMarkProps extends BaseLogoProps {\n size?: keyof typeof KAESO_LOGO_VARIANTS.markSize | undefined;\n}\nexport interface LogoLockupProps extends BaseLogoProps {\n size?: keyof typeof KAESO_LOGO_VARIANTS.lockupSize | undefined;\n}\n\nconst Mark = /* @__PURE__ */ forwardRef<SVGSVGElement, LogoMarkProps>(function Mark({ size = \"md\", ...props }, ref) {\n return <MarkSvg ref={ref} sizeClass={KAESO_LOGO_VARIANTS.markSize[size].classes} {...props} />;\n});\nif (process.env.NODE_ENV !== \"production\") Mark.displayName = \"Logo.Mark\";\n\nconst IconMark = /* @__PURE__ */ forwardRef<SVGSVGElement, LogoMarkProps>(function IconMark({ size = \"md\", ...props }, ref) {\n return <IconSvg ref={ref} sizeClass={KAESO_LOGO_VARIANTS.markSize[size].classes} {...props} />;\n});\nif (process.env.NODE_ENV !== \"production\") IconMark.displayName = \"Logo.Icon\";\n\nconst Lockup = /* @__PURE__ */ forwardRef<SVGSVGElement, LogoLockupProps>(function Lockup({ size = \"sm\", ...props }, ref) {\n return <LockupSvg ref={ref} sizeClass={KAESO_LOGO_VARIANTS.lockupSize[size].classes} {...props} />;\n});\nif (process.env.NODE_ENV !== \"production\") Lockup.displayName = \"Logo.Lockup\";\n\nexport interface LogoWordmarkProps extends BaseLogoProps {\n size?: keyof typeof KAESO_LOGO_VARIANTS.lockupSize | \"nav\" | undefined;\n}\n\nconst WORDMARK_TIGHT = \"72 69.3 881.9 177.7\";\n\nconst Wordmark = /* @__PURE__ */ forwardRef<SVGSVGElement, LogoWordmarkProps>(function Wordmark({ size = \"sm\", title = \"Kaeso\", decorative, className, style, ...props }, ref) {\n if (size === \"nav\") {\n return (\n <svg\n ref={ref}\n viewBox={WORDMARK_TIGHT}\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\"block shrink-0\", className)}\n style={{ width: 60, height: 12, ...style }}\n {...(decorative ? { \"aria-hidden\": true, focusable: false } : { role: \"img\", \"aria-label\": title })}\n {...props}\n >\n {geometry.wordmark.paths.map((d) => (\n <path key={d} d={d} />\n ))}\n </svg>\n );\n }\n return (\n <WordmarkSvg\n ref={ref}\n sizeClass={size === \"sm\" ? \"h-24\" : KAESO_LOGO_VARIANTS.lockupSize[size].classes}\n title={title}\n {...(decorative ? { decorative } : {})}\n {...(className ? { className } : {})}\n {...(style ? { style } : {})}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Wordmark.displayName = \"Logo.Wordmark\";\n\nexport const Logo = /* @__PURE__ */ Object.assign(\n /* @__PURE__ */ forwardRef<SVGSVGElement, LogoLockupProps>(function Logo(props, ref) {\n return <Lockup ref={ref} {...props} />;\n }),\n { Mark, Icon: IconMark, Lockup, Wordmark },\n);\nif (process.env.NODE_ENV !== \"production\") Logo.displayName = \"Logo\";\n"],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- "use client";
2
- import { useRef as e } from "react";
3
- //#region src/utils/restore-focus.ts
4
- function t() {
5
- if (typeof document > "u") return null;
6
- let e = document.activeElement;
7
- return e instanceof HTMLElement && e !== document.body ? e : null;
8
- }
9
- function n(n, r = () => !0) {
10
- let i = e(null), a = e(!1);
11
- return n && !a.current && (i.current = t()), n !== void 0 && (a.current = n), {
12
- initialFocus: () => r(),
13
- finalFocus: () => n !== void 0 && i.current?.isConnected ? i.current : !0
14
- };
15
- }
16
- //#endregion
17
- export { n as t };
18
-
19
- //# sourceMappingURL=restore-focus-Cap1Q-R3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"restore-focus-Cap1Q-R3.js","names":["focused","a","useRestoreFocus","opener","useRef","wasOpen","open","first"],"sources":["../../src/utils/restore-focus.ts"],"sourcesContent":["import { useRef } from \"react\";\n\nfunction focused(): HTMLElement | null {\n if (typeof document === \"undefined\") return null;\n const a = document.activeElement;\n return a instanceof HTMLElement && a !== document.body ? a : null;\n}\n\nexport function useRestoreFocus(open: boolean | undefined, first: () => HTMLElement | boolean = () => true) {\n const opener = useRef<HTMLElement | null>(null);\n const wasOpen = useRef(false);\n if (open && !wasOpen.current) opener.current = focused();\n if (open !== undefined) wasOpen.current = open;\n return {\n initialFocus: () => first(),\n finalFocus: () => (open !== undefined && opener.current?.isConnected ? opener.current : true),\n };\n}\n"],"mappings":";;;AAEA,SAASA,IAA8B;CACrC,IAAI,OAAO,WAAa,KAAa,OAAO;CAC5C,IAAMC,IAAI,SAAS;CACnB,OAAOA,aAAa,eAAeA,MAAM,SAAS,OAAOA,IAAI;AAC/D;AAEA,SAAgBC,EAAgB,GAA2B,UAA2C,IAAM;CAC1G,IAAMC,IAASC,EAA2B,IAAI,GACxCC,IAAUD,EAAO,EAAK;CAG5B,OAFIE,KAAQ,CAACD,EAAQ,YAAS,EAAO,UAAUL,EAAQ,IACnDM,MAAS,KAAA,MAAW,EAAQ,UAAUA,IACnC;EACL,oBAAoBC,EAAM;EAC1B,kBAAmBD,MAAS,KAAA,KAAaH,EAAO,SAAS,cAAcA,EAAO,UAAU;CAC1F;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"section-XStLtXKa.js","names":["cn","Logo","KAESO_SECTION_VARIANTS","KAESO_SECTION_DEFAULT_VARIANTS","Section","spacing","className","title","actions","description","children","SplitView","aside","AuthLayout","footer"],"sources":["../../src/components/section/section.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Logo } from \"../logo/logo.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) && (\n <header 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 {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-28\">\n <Logo.Wordmark size=\"nav\" />\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-tertiary\">{footer}</div>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") AuthLayout.displayName = \"AuthLayout\";\n"],"mappings":";;;;;;AAIA,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,MACT,kBAAC,UAAD;GAAQ,WAAU;GAAlB,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACGD,KAAS,kBAAC,MAAD;KAAI,WAAU;KAAuC,UAAAA;IAAU,CAAA,GACxEE,KAAe,kBAAC,KAAD;KAAG,WAAU;KAA4C,UAAAA;IAAe,CAAA,CACrF;GACJ,CAAA,GAAAD,KAAW,kBAAC,OAAD;IAAK,WAAU;IAAoC,UAAAA;GAAa,CAAA,CACtE;EAET,CAAA,GAAAE,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,WAAWX,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,UAAAM;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,WAAWb,EAAG,8EAA8EM,CAAS;EAApH,UAAA;GACE,kBAAC,OAAD;IAAK,WAAU;IACb,UAAA,kBAACL,EAAK,UAAN,EAAe,MAAK,MAAO,CAAA;GACxB,CAAA;GACL,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,kBAAC,MAAD;MAAI,WAAU;MAAgE,UAAAM;KAAU,CAAA;KACvFE,KAAe,kBAAC,KAAD;MAAG,WAAU;MAA4E,UAAAA;KAAe,CAAA;KACxH,kBAAC,OAAD;MAAK,WAAU;MAA8B;KAAc,CAAA;IACxD;;GACJK,KAAU,kBAAC,OAAD;IAAK,WAAU;IAAqC,UAAAA;GAAY,CAAA;EACxE;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"segmented-CDTx2n29.js","names":["BaseRadioGroup","BaseRadio","cn","Icon","useIndicator","box","setBox","useState","animate","setAnimate","useEffect","raf","live","useLayoutEffect","root","container","measure","el","selector","b","ro","c","layout","KAESO_SEGMENTED_VARIANTS","KAESO_SEGMENTED_DEFAULT_VARIANTS","ITEM","ITEM_ICON","Segmented","ariaLabel","force","current","setCurrent","useControllable","value","defaultValue","options","onValueChange","track","useRef","ind","size","RadioGroup","ref","v","disabled","fullWidth","className","iconOnly","o","item","Radio","Tooltip"],"sources":["../../src/hooks/use-indicator.ts","../../src/components/segmented/segmented.tsx"],"sourcesContent":["import { useEffect, useLayoutEffect, useState, type RefObject } from \"react\";\n\nexport function useIndicator(\n container: RefObject<HTMLElement | null>,\n selector: string,\n layout: string,\n): { x: number; y: number; w: number; h: number; ready: boolean; animate: boolean } {\n const [box, setBox] = useState({ x: 0, y: 0, w: 0, h: 0, ready: false });\n const [animate, setAnimate] = useState(false);\n useEffect(() => {\n if (!box.ready || animate) return;\n let raf = 0;\n let live = true;\n void (document.fonts?.ready ?? Promise.resolve()).then(() => {\n if (live) raf = requestAnimationFrame(() => (raf = requestAnimationFrame(() => setAnimate(true))));\n });\n return () => {\n live = false;\n cancelAnimationFrame(raf);\n };\n }, [box.ready, animate]);\n useLayoutEffect(() => {\n const root = container.current;\n if (!root) return;\n const measure = () => {\n const el = root.querySelector<HTMLElement>(selector);\n if (!el) return setBox((b) => ({ ...b, ready: false }));\n setBox({ x: Math.round(el.offsetLeft), y: Math.round(el.offsetTop), w: Math.round(el.offsetWidth), h: Math.round(el.offsetHeight), ready: true });\n };\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n let live = true;\n const ro = new ResizeObserver(measure);\n ro.observe(root);\n root.querySelectorAll(\":scope > *\").forEach((c) => ro.observe(c));\n void document.fonts?.ready.then(() => {\n if (live) measure();\n });\n return () => {\n live = false;\n ro.disconnect();\n };\n }, [container, selector, layout]);\n return { ...box, animate };\n}\n","import { forwardRef, useRef, type ReactNode } from \"react\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useControllable } from \"../../utils/use-controllable.js\";\nimport { useIndicator } from \"../../hooks/use-indicator.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\n\nexport const KAESO_SEGMENTED_VARIANTS = {\n size: {\n sm: { classes: \"h-32 p-2 gap-2\" },\n md: { classes: \"h-36 p-2 gap-2\" },\n },\n} as const;\nexport const KAESO_SEGMENTED_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nconst ITEM = { sm: \"h-28 px-10 text-body\", md: \"h-32 px-12 text-body\" } as const;\nconst ITEM_ICON = { sm: \"w-32 px-0\", md: \"w-36 px-0\" } as const;\n\nexport interface SegmentedOption {\n value: string;\n label?: ReactNode | undefined;\n icon?: IconData | undefined;\n \"aria-label\"?: string | undefined;\n disabled?: boolean | undefined;\n}\n\nexport interface SegmentedProps {\n options: SegmentedOption[];\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n size?: keyof typeof KAESO_SEGMENTED_VARIANTS.size | undefined;\n disabled?: boolean | undefined;\n fullWidth?: boolean | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const Segmented = /* @__PURE__ */ forwardRef<HTMLDivElement, SegmentedProps>(function Segmented(\n { options, value, defaultValue, onValueChange, size = \"md\", disabled, fullWidth, className, \"aria-label\": ariaLabel, \"data-force\": force },\n ref,\n) {\n const [current, setCurrent] = useControllable(value, defaultValue ?? options[0]?.value ?? \"\", onValueChange);\n const track = useRef<HTMLDivElement | null>(null);\n const ind = useIndicator(track, \"[data-checked]\", `${current}|${options.length}|${size}`);\n return (\n <BaseRadioGroup\n ref={(el: HTMLDivElement | null) => {\n track.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n value={current}\n onValueChange={(v: unknown) => setCurrent(String(v))}\n {...(disabled !== undefined ? { disabled } : {})}\n aria-label={ariaLabel}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"relative isolate inline-flex items-center rounded-pill bg-fill-1\",\n KAESO_SEGMENTED_VARIANTS.size[size].classes,\n fullWidth && \"flex w-full\",\n disabled && \"opacity-40\",\n className,\n )}\n >\n <span\n aria-hidden\n className={cn(\"absolute top-0 left-0 -z-10 rounded-pill bg-raised shadow-segment\", ind.animate && \"indicator-motion\", !ind.ready && \"opacity-0\")}\n style={{ transform: `translate(${ind.x}px, ${ind.y}px)`, width: ind.w, height: ind.h }}\n />\n {options.map((o) => {\n const iconOnly = o.icon && !o.label;\n const item = (\n <BaseRadio.Root\n key={o.value}\n value={o.value}\n {...(o.disabled ? { disabled: true } : {})}\n {...(o[\"aria-label\"] ? { \"aria-label\": o[\"aria-label\"] } : {})}\n className={cn(\n \"relative inline-flex cursor-pointer items-center justify-center gap-6 rounded-pill font-medium whitespace-nowrap text-fg-secondary transition-control focus-ring tap-target\",\n \"hover:text-fg checked:text-fg disabled:cursor-not-allowed disabled:text-fg-disabled\",\n ITEM[size],\n iconOnly && ITEM_ICON[size],\n fullWidth && \"flex-1\",\n )}\n >\n {o.icon && <Icon icon={o.icon} size=\"sm\" />}\n {o.label}\n </BaseRadio.Root>\n );\n return iconOnly && o[\"aria-label\"] ? (\n <Tooltip key={o.value} content={o[\"aria-label\"]}>\n {item}\n </Tooltip>\n ) : (\n item\n );\n })}\n </BaseRadioGroup>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Segmented.displayName = \"Segmented\";\n"],"mappings":"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"}
@@ -1,223 +0,0 @@
1
- "use client";
2
- import { i as e, o as t } from "./styles-Btvg2DCf.js";
3
- import { t as n } from "./cn-CidVUKMm.js";
4
- import { i as r } from "./dev-CR1p7gCm.js";
5
- import { n as i, r as a } from "./portal-context-BBbzDKmY.js";
6
- import { i as o } from "./context-BELWW79w.js";
7
- import { t as s } from "./icon-CeNQtobn.js";
8
- import { a as ee, o as c, s as te } from "./field-d8V94bvZ.js";
9
- import { n as ne, t as l } from "./use-layout-width-DZaLOQMT.js";
10
- import { Fragment as u, forwardRef as d, useCallback as f, useRef as p } from "react";
11
- import { jsx as m, jsxs as h } from "react/jsx-runtime";
12
- import { ArrowDown01Icon as g, ArrowUp01Icon as re, Tick02Icon as _ } from "@hugeicons/core-free-icons";
13
- import { Select as v } from "@base-ui/react/select";
14
- //#region src/components/select/select.tsx
15
- var y = {
16
- appearance: {
17
- default: { classes: "material-secondary" },
18
- ghost: { classes: "material-ghost text-fg-secondary hover:text-fg open:text-fg" },
19
- header: { classes: "material-ghost text-fg" }
20
- },
21
- size: {
22
- sm: { classes: "h-32 pl-12 pr-10 gap-6 text-body" },
23
- md: { classes: "h-36 pl-16 pr-12 gap-8 text-body" },
24
- lg: { classes: "h-40 pl-18 pr-14 gap-8 text-body" },
25
- xl: { classes: "h-48 pl-22 pr-18 gap-8 text-body-lg" }
26
- }
27
- }, b = {
28
- appearance: "default",
29
- size: "md"
30
- };
31
- function x(e, t) {
32
- return (n) => {
33
- t(n) && e(n);
34
- };
35
- }
36
- function ie(e) {
37
- let t = [];
38
- for (let n of e) {
39
- let e = t[t.length - 1];
40
- e && e.group === n.group ? e.items.push(n) : t.push({
41
- group: n.group,
42
- items: [n]
43
- });
44
- }
45
- return t;
46
- }
47
- var S = /* @__PURE__ */ d(function(d, b) {
48
- let { options: S, placeholder: w, size: T = "md", appearance: E = "default", disabled: D, name: O, id: k, open: A, onOpenChange: j, invalid: M, icon: N, fullWidth: P, label: F, description: I, error: L, optional: R, required: z, layout: B, className: V, multiple: H, "aria-label": U, "data-force": W } = d;
49
- r("Select", V);
50
- let G = o(), K = w ?? G("select.placeholder", "Select"), q = ee(), J = c(d), Y = p(null), X = ne(Y), ae = f((e) => {
51
- Y.current = e, typeof b == "function" ? b(e) : b && (b.current = e);
52
- }, [b]), Z = new Map(S.map((e) => [e.value, e])), Q = (e) => {
53
- let t = Z.get(e);
54
- return t?.textValue ?? (typeof t?.label == "string" ? t.label : e);
55
- }, oe = d.multiple ? {
56
- multiple: !0,
57
- ...d.value === void 0 ? {} : { value: d.value },
58
- ...d.defaultValue === void 0 ? {} : { defaultValue: d.defaultValue },
59
- ...d.onValueChange ? { onValueChange: x(d.onValueChange, Array.isArray) } : {}
60
- } : {
61
- ...d.value === void 0 ? {} : { value: d.value },
62
- ...d.defaultValue === void 0 ? {} : { defaultValue: d.defaultValue },
63
- ...d.onValueChange ? { onValueChange: x(d.onValueChange, (e) => typeof e == "string") } : {}
64
- }, $ = /* @__PURE__ */ h(v.Root, {
65
- ...oe,
66
- ...q?.required ?? z ? { required: !0 } : {},
67
- ...D === void 0 ? {} : { disabled: D },
68
- ...O ? { name: O } : {},
69
- ...A === void 0 ? {} : { open: A },
70
- ...j ? { onOpenChange: (e) => j(e) } : {},
71
- itemToStringLabel: (e) => Q(String(e)),
72
- modal: !1,
73
- children: [/* @__PURE__ */ h(v.Trigger, {
74
- ref: ae,
75
- ...k ? { id: k } : {},
76
- ...J.controlProps,
77
- ...U ? { "aria-label": U } : {},
78
- ...M || L ? { "aria-invalid": !0 } : {},
79
- ...W ? { "data-force": W } : {},
80
- className: n("inline-flex min-w-0 cursor-pointer items-center justify-between rounded-pill font-medium whitespace-nowrap transition-control focus-ring disabled:cursor-not-allowed", y.size[T].classes, y.appearance[E].classes, (M || L) && "ring-invalid", P && "w-full", !(F || I || L) && V),
81
- children: [
82
- N && /* @__PURE__ */ m(s, {
83
- icon: N,
84
- size: "sm",
85
- className: "text-fg-secondary"
86
- }),
87
- /* @__PURE__ */ m(v.Value, {
88
- className: "min-w-0 flex-1 truncate text-left data-placeholder:text-fg-tertiary data-placeholder:font-regular",
89
- placeholder: K,
90
- children: (e) => {
91
- if (H) {
92
- let t = Array.isArray(e) ? e.map(String) : [], [n] = t;
93
- return n === void 0 ? K : t.length === 1 ? Q(n) : G("select.firstAndMore", "{first} +{count}", {
94
- first: Q(n),
95
- count: String(t.length - 1)
96
- });
97
- }
98
- return e == null || e === "" ? K : Z.get(String(e))?.label ?? String(e);
99
- }
100
- }),
101
- /* @__PURE__ */ m(v.Icon, {
102
- className: "flex shrink-0 text-fg-tertiary",
103
- children: /* @__PURE__ */ m(s, {
104
- icon: g,
105
- size: "sm"
106
- })
107
- })
108
- ]
109
- }), /* @__PURE__ */ m(v.Portal, {
110
- container: a(),
111
- children: /* @__PURE__ */ m(v.Positioner, {
112
- positionMethod: "fixed",
113
- collisionBoundary: i(),
114
- alignItemWithTrigger: !1,
115
- align: "start",
116
- sideOffset: 6,
117
- collisionPadding: 8,
118
- className: "z-50 outline-none",
119
- children: /* @__PURE__ */ h(v.Popup, {
120
- className: n(t, "min-w-anchor overflow-hidden"),
121
- style: l(X),
122
- children: [
123
- /* @__PURE__ */ m(v.ScrollUpArrow, {
124
- className: "flex h-20 items-center justify-center text-fg-tertiary",
125
- children: /* @__PURE__ */ m(s, {
126
- icon: re,
127
- size: "xs"
128
- })
129
- }),
130
- /* @__PURE__ */ m(v.List, {
131
- className: "-mx-6 flex min-h-0 flex-col overflow-y-auto overscroll-contain px-6 outline-none scrollbar-quiet",
132
- children: ie(S).map((t, r) => /* @__PURE__ */ h(u, { children: [r > 0 && /* @__PURE__ */ m("div", {
133
- role: "presentation",
134
- className: "mx-10 my-4 h-1 shrink-0 bg-line-subtle"
135
- }), /* @__PURE__ */ h(v.Group, {
136
- className: "flex flex-col",
137
- children: [t.group && /* @__PURE__ */ m(v.GroupLabel, {
138
- className: "flex h-28 items-center px-10 text-caption font-medium text-fg-secondary",
139
- children: t.group
140
- }), t.items.map((t) => /* @__PURE__ */ h(v.Item, {
141
- value: t.value,
142
- ...t.disabled ? { disabled: !0 } : {},
143
- label: t.textValue ?? (typeof t.label == "string" ? t.label : t.value),
144
- className: n(e, "group/opt"),
145
- children: [
146
- H && /* @__PURE__ */ m("span", {
147
- className: "pointer-events-none flex",
148
- children: /* @__PURE__ */ m(C, {})
149
- }),
150
- t.icon && /* @__PURE__ */ m(s, {
151
- icon: t.icon,
152
- size: "sm",
153
- className: n("text-fg-secondary group-data-highlighted/item:text-fg group-data-disabled/item:text-fg-disabled", t.description && "self-start mt-10")
154
- }),
155
- /* @__PURE__ */ h("span", {
156
- className: n("flex min-w-0 flex-1 flex-col", t.description && "gap-2 py-8"),
157
- children: [/* @__PURE__ */ m(v.ItemText, {
158
- className: "truncate",
159
- children: t.label
160
- }), t.description && /* @__PURE__ */ m("span", {
161
- className: "text-small font-regular whitespace-normal text-fg-secondary",
162
- children: t.description
163
- })]
164
- }),
165
- !H && /* @__PURE__ */ m(v.ItemIndicator, {
166
- keepMounted: !0,
167
- className: n("flex size-16 shrink-0 items-center justify-center text-fg opacity-0 data-selected:opacity-100", t.description && "self-start mt-10"),
168
- children: /* @__PURE__ */ m(s, {
169
- icon: _,
170
- size: "sm"
171
- })
172
- })
173
- ]
174
- }, t.value))]
175
- })] }, t.group ?? `g${r}`))
176
- }),
177
- /* @__PURE__ */ m(v.ScrollDownArrow, {
178
- className: "flex h-20 items-center justify-center text-fg-tertiary",
179
- children: /* @__PURE__ */ m(s, {
180
- icon: g,
181
- size: "xs"
182
- })
183
- })
184
- ]
185
- })
186
- })
187
- })]
188
- });
189
- return q ? $ : te({
190
- label: F,
191
- description: I,
192
- error: L,
193
- optional: R,
194
- required: z,
195
- layout: B,
196
- id: J.wrapId ?? k,
197
- disabled: D,
198
- className: V
199
- }, $);
200
- });
201
- process.env.NODE_ENV !== "production" && (S.displayName = "Select");
202
- function C() {
203
- return /* @__PURE__ */ m("span", {
204
- className: "inline-flex size-18 shrink-0 items-center justify-center rounded-checkbox bg-raised shadow-selector group-data-selected/opt:bg-ink group-data-selected/opt:shadow-none",
205
- children: /* @__PURE__ */ m("svg", {
206
- viewBox: "0 0 12 12",
207
- className: "hidden size-12 text-on-ink group-data-selected/opt:block",
208
- fill: "none",
209
- "aria-hidden": !0,
210
- children: /* @__PURE__ */ m("path", {
211
- d: "M2.5 6.25 4.9 8.5 9.5 3.75",
212
- stroke: "currentColor",
213
- strokeWidth: "1.75",
214
- strokeLinecap: "round",
215
- strokeLinejoin: "round"
216
- })
217
- })
218
- });
219
- }
220
- //#endregion
221
- export { y as n, S as r, b as t };
222
-
223
- //# sourceMappingURL=select-Ca3HGsN1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"select-Ca3HGsN1.js","names":["Select","BaseSelect","__icon_ArrowDown01Icon","__icon_ArrowUp01Icon","__icon_Tick02Icon","MENU_ITEM","MENU_POPUP","cn","warnStylingClassName","pageBoundary","usePortalContainer","useUiText","Icon","useField","useFieldControl","withField","useLayoutWidth","anchorWidthStyle","KAESO_SELECT_VARIANTS","KAESO_SELECT_DEFAULT_VARIANTS","changeWith","accepts","value","onChange","groupsOf","out","o","options","last","Select$1","placeholderProp","ariaLabel","force","props","className","t","placeholder","field","fc","trigger","useRef","triggerWidth","setTrigger","useCallback","el","ref","byValue","textOf","v","valueProps","control","Select","required","disabled","name","open","onOpenChange","id","invalid","error","size","appearance","fullWidth","label","description","icon","multiple","arr","first","ArrowDown01Icon","ArrowUp01Icon","Fragment","gi","g","OptionCheckbox","Tick02Icon"],"sources":["../../src/components/select/select.tsx"],"sourcesContent":["import { pageBoundary, usePortalContainer } from \"../../utils/portal-context.js\";\nimport { Fragment, forwardRef, useCallback, useRef, type ReactNode } from \"react\";\nimport { Select as BaseSelect } from \"@base-ui/react/select\";\nimport { cn } from \"../../utils/cn.js\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { ArrowDown01Icon as __icon_ArrowDown01Icon, ArrowUp01Icon as __icon_ArrowUp01Icon, Tick02Icon as __icon_Tick02Icon } from \"@hugeicons/core-free-icons\";\nimport { MENU_ICON, MENU_ITEM, MENU_LABEL, MENU_POPUP, MENU_SEPARATOR } from \"../menu/styles.js\";\nimport { anchorWidthStyle, useLayoutWidth } from \"../../hooks/use-layout-width.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_SELECT_VARIANTS = {\n appearance: {\n default: { classes: \"material-secondary\" },\n ghost: { classes: \"material-ghost text-fg-secondary hover:text-fg open:text-fg\" },\n header: { classes: \"material-ghost text-fg\" },\n },\n size: {\n sm: { classes: \"h-32 pl-12 pr-10 gap-6 text-body\" },\n md: { classes: \"h-36 pl-16 pr-12 gap-8 text-body\" },\n lg: { classes: \"h-40 pl-18 pr-14 gap-8 text-body\" },\n xl: { classes: \"h-48 pl-22 pr-18 gap-8 text-body-lg\" },\n },\n} as const;\nexport const KAESO_SELECT_DEFAULT_VARIANTS = { appearance: \"default\", size: \"md\" } as const;\n\nexport interface SelectOption {\n value: string;\n label: ReactNode;\n textValue?: string | undefined;\n description?: ReactNode | undefined;\n icon?: IconData | undefined;\n group?: string | undefined;\n disabled?: boolean | undefined;\n}\n\ninterface BaseProps extends FieldWrapProps {\n options: SelectOption[];\n placeholder?: ReactNode | undefined;\n size?: keyof typeof KAESO_SELECT_VARIANTS.size | undefined;\n appearance?: keyof typeof KAESO_SELECT_VARIANTS.appearance | undefined;\n disabled?: boolean | undefined;\n name?: string | undefined;\n id?: string | undefined;\n open?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n invalid?: boolean | undefined;\n icon?: IconData | undefined;\n fullWidth?: boolean | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\nexport interface SingleSelectProps extends BaseProps {\n multiple?: false | undefined;\n value?: string | null | undefined;\n defaultValue?: string | null | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n}\nexport interface MultiSelectProps extends BaseProps {\n multiple: true;\n value?: string[] | undefined;\n defaultValue?: string[] | undefined;\n onValueChange?: ((value: string[]) => void) | undefined;\n}\nexport type SelectProps = SingleSelectProps | MultiSelectProps;\n\nfunction changeWith<T extends string | string[]>(onChange: (value: T) => void, accepts: (value: unknown) => value is T) {\n return (value: unknown) => {\n if (accepts(value)) onChange(value);\n };\n}\n\nfunction groupsOf(options: SelectOption[]) {\n const out: { group: string | undefined; items: SelectOption[] }[] = [];\n for (const o of options) {\n const last = out[out.length - 1];\n if (last && last.group === o.group) last.items.push(o);\n else out.push({ group: o.group, items: [o] });\n }\n return out;\n}\n\nexport const Select = /* @__PURE__ */ forwardRef<HTMLButtonElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder: placeholderProp,\n size = \"md\",\n appearance = \"default\",\n disabled,\n name,\n id,\n open,\n onOpenChange,\n invalid,\n icon,\n fullWidth,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n multiple,\n \"aria-label\": ariaLabel,\n \"data-force\": force,\n } = props;\n warnStylingClassName(\"Select\", className);\n const t = useUiText();\n const placeholder = placeholderProp ?? t(\"select.placeholder\", \"Select\");\n const field = useField();\n const fc = useFieldControl(props);\n const trigger = useRef<HTMLButtonElement | null>(null);\n const triggerWidth = useLayoutWidth(trigger);\n const setTrigger = useCallback(\n (el: HTMLButtonElement | null) => {\n trigger.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref],\n );\n const byValue = new Map(options.map((o) => [o.value, o]));\n const textOf = (v: string) => {\n const o = byValue.get(v);\n return o?.textValue ?? (typeof o?.label === \"string\" ? o.label : v);\n };\n const valueProps: Pick<BaseSelect.Root.Props<string, boolean>, \"multiple\" | \"value\" | \"defaultValue\" | \"onValueChange\"> = props.multiple\n ? {\n multiple: true,\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onValueChange ? { onValueChange: changeWith(props.onValueChange, Array.isArray) } : {}),\n }\n : {\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onValueChange ? { onValueChange: changeWith(props.onValueChange, (v) => typeof v === \"string\") } : {}),\n };\n const control = (\n <BaseSelect.Root\n {...valueProps}\n {...((field?.required ?? required) ? { required: true } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(name ? { name } : {})}\n {...(open !== undefined ? { open } : {})}\n {...(onOpenChange ? { onOpenChange: (o: boolean) => onOpenChange(o) } : {})}\n itemToStringLabel={(v: unknown) => textOf(String(v))}\n modal={false}\n >\n <BaseSelect.Trigger\n ref={setTrigger}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(ariaLabel ? { \"aria-label\": ariaLabel } : {})}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"inline-flex min-w-0 cursor-pointer items-center justify-between rounded-pill font-medium whitespace-nowrap transition-control focus-ring disabled:cursor-not-allowed\",\n KAESO_SELECT_VARIANTS.size[size].classes,\n KAESO_SELECT_VARIANTS.appearance[appearance].classes,\n (invalid || error) && \"ring-invalid\",\n fullWidth && \"w-full\",\n !(label || description || error) && className,\n )}\n >\n {icon && <Icon icon={icon} size=\"sm\" className=\"text-fg-secondary\" />}\n <BaseSelect.Value\n className=\"min-w-0 flex-1 truncate text-left data-placeholder:text-fg-tertiary data-placeholder:font-regular\"\n placeholder={placeholder}\n >\n {(value: unknown) => {\n if (multiple) {\n const arr = Array.isArray(value) ? value.map(String) : [];\n const [first] = arr;\n if (first === undefined) return placeholder;\n return arr.length === 1 ? textOf(first) : t(\"select.firstAndMore\", \"{first} +{count}\", { first: textOf(first), count: String(arr.length - 1) });\n }\n return value == null || value === \"\" ? placeholder : (byValue.get(String(value))?.label ?? String(value));\n }}\n </BaseSelect.Value>\n <BaseSelect.Icon className=\"flex shrink-0 text-fg-tertiary\">\n <Icon icon={__icon_ArrowDown01Icon} size=\"sm\" />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n <BaseSelect.Portal container={usePortalContainer()}>\n <BaseSelect.Positioner\n positionMethod=\"fixed\"\n collisionBoundary={pageBoundary()}\n alignItemWithTrigger={false}\n align=\"start\"\n sideOffset={6}\n collisionPadding={8}\n className=\"z-50 outline-none\"\n >\n <BaseSelect.Popup className={cn(MENU_POPUP, \"min-w-anchor overflow-hidden\")} style={anchorWidthStyle(triggerWidth)}>\n <BaseSelect.ScrollUpArrow className=\"flex h-20 items-center justify-center text-fg-tertiary\">\n <Icon icon={__icon_ArrowUp01Icon} size=\"xs\" />\n </BaseSelect.ScrollUpArrow>\n <BaseSelect.List className=\"-mx-6 flex min-h-0 flex-col overflow-y-auto overscroll-contain px-6 outline-none scrollbar-quiet\">\n {groupsOf(options).map((g, gi) => (\n <Fragment key={g.group ?? `g${gi}`}>\n {gi > 0 && <div role=\"presentation\" className={MENU_SEPARATOR} />}\n <BaseSelect.Group className=\"flex flex-col\">\n {g.group && <BaseSelect.GroupLabel className={MENU_LABEL}>{g.group}</BaseSelect.GroupLabel>}\n {g.items.map((o) => (\n <BaseSelect.Item\n key={o.value}\n value={o.value}\n {...(o.disabled ? { disabled: true } : {})}\n label={o.textValue ?? (typeof o.label === \"string\" ? o.label : o.value)}\n className={cn(MENU_ITEM, \"group/opt\")}\n >\n {multiple && (\n <span className=\"pointer-events-none flex\">\n <OptionCheckbox />\n </span>\n )}\n {o.icon && <Icon icon={o.icon} size=\"sm\" className={cn(MENU_ICON, o.description && \"self-start mt-10\")} />}\n <span className={cn(\"flex min-w-0 flex-1 flex-col\", o.description && \"gap-2 py-8\")}>\n <BaseSelect.ItemText className=\"truncate\">{o.label}</BaseSelect.ItemText>\n {o.description && <span className=\"text-small font-regular whitespace-normal text-fg-secondary\">{o.description}</span>}\n </span>\n {!multiple && (\n <BaseSelect.ItemIndicator\n keepMounted\n className={cn(\n \"flex size-16 shrink-0 items-center justify-center text-fg opacity-0 data-selected:opacity-100\",\n o.description && \"self-start mt-10\",\n )}\n >\n <Icon icon={__icon_Tick02Icon} size=\"sm\" />\n </BaseSelect.ItemIndicator>\n )}\n </BaseSelect.Item>\n ))}\n </BaseSelect.Group>\n </Fragment>\n ))}\n </BaseSelect.List>\n <BaseSelect.ScrollDownArrow className=\"flex h-20 items-center justify-center text-fg-tertiary\">\n <Icon icon={__icon_ArrowDown01Icon} size=\"xs\" />\n </BaseSelect.ScrollDownArrow>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") Select.displayName = \"Select\";\n\nfunction OptionCheckbox() {\n return (\n <span className=\"inline-flex size-18 shrink-0 items-center justify-center rounded-checkbox bg-raised shadow-selector group-data-selected/opt:bg-ink group-data-selected/opt:shadow-none\">\n <svg viewBox=\"0 0 12 12\" className=\"hidden size-12 text-on-ink group-data-selected/opt:block\" fill=\"none\" aria-hidden>\n <path d=\"M2.5 6.25 4.9 8.5 9.5 3.75\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </span>\n );\n}\n"],"mappings":"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"}