admin-ui-starter-kit 0.1.0 → 0.1.2
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.
- package/.agents/skills/component-library-rules/SKILL.md +24 -0
- package/.agents/skills/component-library-rules/references/components/base__metadata-list.md +2 -2
- package/.agents/skills/component-library-rules/references/import-paths.md +27 -0
- package/AGENTS.md +8 -3
- package/INTEGRATION.md +33 -2
- package/PUBLISHING.md +3 -1
- package/README.md +33 -6
- package/dist/_shared/accordion-CztqyaIN.js +130 -0
- package/dist/_shared/accordion-CztqyaIN.js.map +1 -0
- package/dist/_shared/accordion-D5uTCLCB.cjs +2 -0
- package/dist/_shared/accordion-D5uTCLCB.cjs.map +1 -0
- package/dist/_shared/action-menu-Yrj6VzFS.js +96 -0
- package/dist/_shared/action-menu-Yrj6VzFS.js.map +1 -0
- package/dist/_shared/action-menu-eVP8GGlv.cjs +2 -0
- package/dist/_shared/action-menu-eVP8GGlv.cjs.map +1 -0
- package/dist/_shared/ai-artifact-DaHXJTKg.cjs +3 -0
- package/dist/_shared/ai-artifact-DaHXJTKg.cjs.map +1 -0
- package/dist/_shared/ai-artifact-DyLn3JAs.js +1068 -0
- package/dist/_shared/ai-artifact-DyLn3JAs.js.map +1 -0
- package/dist/_shared/alert-BVw4Mq6H.js +48 -0
- package/dist/_shared/alert-BVw4Mq6H.js.map +1 -0
- package/dist/_shared/alert-DXSlR9ja.cjs +2 -0
- package/dist/_shared/alert-DXSlR9ja.cjs.map +1 -0
- package/dist/_shared/avatar-CpBz9pTv.js +52 -0
- package/dist/_shared/avatar-CpBz9pTv.js.map +1 -0
- package/dist/_shared/avatar-dg20YFFs.cjs +2 -0
- package/dist/_shared/avatar-dg20YFFs.cjs.map +1 -0
- package/dist/_shared/badge-BVCh_hfL.js +108 -0
- package/dist/_shared/badge-BVCh_hfL.js.map +1 -0
- package/dist/_shared/badge-C49SSz-6.cjs +2 -0
- package/dist/_shared/badge-C49SSz-6.cjs.map +1 -0
- package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs +2 -0
- package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs.map +1 -0
- package/dist/_shared/breadcrumbs-Dc93fqqE.js +111 -0
- package/dist/_shared/breadcrumbs-Dc93fqqE.js.map +1 -0
- package/dist/_shared/button-2xglT7yf.cjs +2 -0
- package/dist/_shared/button-2xglT7yf.cjs.map +1 -0
- package/dist/_shared/button-ChCkwoOD.js +176 -0
- package/dist/_shared/button-ChCkwoOD.js.map +1 -0
- package/dist/_shared/button-D0nF99a9.cjs +2 -0
- package/dist/_shared/button-D0nF99a9.cjs.map +1 -0
- package/dist/_shared/button-DBR4QI9E.js +46 -0
- package/dist/_shared/button-DBR4QI9E.js.map +1 -0
- package/dist/_shared/buttons-Bcnt1md_.js +143 -0
- package/dist/_shared/buttons-Bcnt1md_.js.map +1 -0
- package/dist/_shared/buttons-km9xqXJv.cjs +2 -0
- package/dist/_shared/buttons-km9xqXJv.cjs.map +1 -0
- package/dist/_shared/card-radio-group-BGH93O5-.js +158 -0
- package/dist/_shared/card-radio-group-BGH93O5-.js.map +1 -0
- package/dist/_shared/card-radio-group-Vq741uhL.cjs +2 -0
- package/dist/_shared/card-radio-group-Vq741uhL.cjs.map +1 -0
- package/dist/_shared/combobox-BgXAxjU2.js +746 -0
- package/dist/_shared/combobox-BgXAxjU2.js.map +1 -0
- package/dist/_shared/combobox-DuIyh3xJ.cjs +2 -0
- package/dist/_shared/combobox-DuIyh3xJ.cjs.map +1 -0
- package/dist/_shared/command-BbiijN61.js +39 -0
- package/dist/_shared/command-BbiijN61.js.map +1 -0
- package/dist/_shared/command-D7zTvyBJ.cjs +2 -0
- package/dist/_shared/command-D7zTvyBJ.cjs.map +1 -0
- package/dist/_shared/command-DGNtTI-V.cjs +2 -0
- package/dist/_shared/command-DGNtTI-V.cjs.map +1 -0
- package/dist/_shared/command-jKbwFRtS.js +123 -0
- package/dist/_shared/command-jKbwFRtS.js.map +1 -0
- package/dist/_shared/comments-CNUsdwGW.cjs +2 -0
- package/dist/_shared/comments-CNUsdwGW.cjs.map +1 -0
- package/dist/_shared/comments-CvmS7zG3.js +945 -0
- package/dist/_shared/comments-CvmS7zG3.js.map +1 -0
- package/dist/_shared/containers-BFDv7cCV.cjs +2 -0
- package/dist/_shared/containers-BFDv7cCV.cjs.map +1 -0
- package/dist/_shared/containers-C1-A_2PT.js +19 -0
- package/dist/_shared/containers-C1-A_2PT.js.map +1 -0
- package/dist/_shared/content-container-CwqFnaI0.cjs +2 -0
- package/dist/_shared/content-container-CwqFnaI0.cjs.map +1 -0
- package/dist/_shared/content-container-D_3JGBSc.js +33 -0
- package/dist/_shared/content-container-D_3JGBSc.js.map +1 -0
- package/dist/_shared/copyable-CHhCGMfW.js +38 -0
- package/dist/_shared/copyable-CHhCGMfW.js.map +1 -0
- package/dist/_shared/copyable-ndaiocYq.cjs +2 -0
- package/dist/_shared/copyable-ndaiocYq.cjs.map +1 -0
- package/dist/_shared/date-picker-B8O_qbik.js +1353 -0
- package/dist/_shared/date-picker-B8O_qbik.js.map +1 -0
- package/dist/_shared/date-picker-BnOjyuKS.cjs +2 -0
- package/dist/_shared/date-picker-BnOjyuKS.cjs.map +1 -0
- package/dist/_shared/date-pickers-Cas9cPlj.js +330 -0
- package/dist/_shared/date-pickers-Cas9cPlj.js.map +1 -0
- package/dist/_shared/date-pickers-Dk-G3RMy.cjs +2 -0
- package/dist/_shared/date-pickers-Dk-G3RMy.cjs.map +1 -0
- package/dist/_shared/dialog-67GmkMLC.js +101 -0
- package/dist/_shared/dialog-67GmkMLC.js.map +1 -0
- package/dist/_shared/dialog-BF_4uAhE.cjs +2 -0
- package/dist/_shared/dialog-BF_4uAhE.cjs.map +1 -0
- package/dist/_shared/display-B9xVWboG.cjs +8 -0
- package/dist/_shared/display-B9xVWboG.cjs.map +1 -0
- package/dist/_shared/display-BM_GxDAo.js +1237 -0
- package/dist/_shared/display-BM_GxDAo.js.map +1 -0
- package/dist/_shared/dropdown-menu-4nxEBMnd.js +147 -0
- package/dist/_shared/dropdown-menu-4nxEBMnd.js.map +1 -0
- package/dist/_shared/dropdown-menu-DZlWHqWS.cjs +2 -0
- package/dist/_shared/dropdown-menu-DZlWHqWS.cjs.map +1 -0
- package/dist/_shared/form-field-BQlki-8s.js +319 -0
- package/dist/_shared/form-field-BQlki-8s.js.map +1 -0
- package/dist/_shared/form-field-DzpwVS99.cjs +2 -0
- package/dist/_shared/form-field-DzpwVS99.cjs.map +1 -0
- package/dist/_shared/form-sizing-CcbB-OHF.js +21 -0
- package/dist/_shared/form-sizing-CcbB-OHF.js.map +1 -0
- package/dist/_shared/form-sizing-Cw12UeI6.cjs +2 -0
- package/dist/_shared/form-sizing-Cw12UeI6.cjs.map +1 -0
- package/dist/_shared/format-B2AdSQVn.cjs +2 -0
- package/dist/_shared/format-B2AdSQVn.cjs.map +1 -0
- package/dist/_shared/format-CP65h1vK.js +48 -0
- package/dist/_shared/format-CP65h1vK.js.map +1 -0
- package/dist/_shared/forms-B8aaNG44.cjs +2 -0
- package/dist/_shared/forms-B8aaNG44.cjs.map +1 -0
- package/dist/_shared/forms-BusuTZZ2.js +3374 -0
- package/dist/_shared/forms-BusuTZZ2.js.map +1 -0
- package/dist/_shared/header-DWfOUjFL.cjs +2 -0
- package/dist/_shared/header-DWfOUjFL.cjs.map +1 -0
- package/dist/_shared/header-KpdoLtP9.js +369 -0
- package/dist/_shared/header-KpdoLtP9.js.map +1 -0
- package/dist/_shared/heading-BprqyzDs.js +39 -0
- package/dist/_shared/heading-BprqyzDs.js.map +1 -0
- package/dist/_shared/heading-mZc_jan1.cjs +2 -0
- package/dist/_shared/heading-mZc_jan1.cjs.map +1 -0
- package/dist/_shared/hooks-C-uWoRq5.cjs +2 -0
- package/dist/_shared/hooks-C-uWoRq5.cjs.map +1 -0
- package/dist/_shared/hooks-D5HJtvvP.js +118 -0
- package/dist/_shared/hooks-D5HJtvvP.js.map +1 -0
- package/dist/_shared/icon-badge-BBqDyAUz.cjs +2 -0
- package/dist/_shared/icon-badge-BBqDyAUz.cjs.map +1 -0
- package/dist/_shared/icon-badge-Bi63T-bj.js +52 -0
- package/dist/_shared/icon-badge-Bi63T-bj.js.map +1 -0
- package/dist/_shared/input-B2YXTHqz.cjs +2 -0
- package/dist/_shared/input-B2YXTHqz.cjs.map +1 -0
- package/dist/_shared/input-BJb10xb9.cjs +2 -0
- package/dist/_shared/input-BJb10xb9.cjs.map +1 -0
- package/dist/_shared/input-CZxP5Xgj.js +17 -0
- package/dist/_shared/input-CZxP5Xgj.js.map +1 -0
- package/dist/_shared/input-DQahu2sm.js +182 -0
- package/dist/_shared/input-DQahu2sm.js.map +1 -0
- package/dist/_shared/item-Cu5JbZyZ.js +224 -0
- package/dist/_shared/item-Cu5JbZyZ.js.map +1 -0
- package/dist/_shared/item-Cx_7QZ2o.cjs +2 -0
- package/dist/_shared/item-Cx_7QZ2o.cjs.map +1 -0
- package/dist/_shared/mentions-CS3rIhze.js +493 -0
- package/dist/_shared/mentions-CS3rIhze.js.map +1 -0
- package/dist/_shared/mentions-D7gnP3Nf.cjs +2 -0
- package/dist/_shared/mentions-D7gnP3Nf.cjs.map +1 -0
- package/dist/_shared/metadata-CRsVWE8Y.cjs +2 -0
- package/dist/_shared/metadata-CRsVWE8Y.cjs.map +1 -0
- package/dist/_shared/metadata-CfG0FdFZ.js +236 -0
- package/dist/_shared/metadata-CfG0FdFZ.js.map +1 -0
- package/dist/_shared/money-display-Bd0rkjc9.js +198 -0
- package/dist/_shared/money-display-Bd0rkjc9.js.map +1 -0
- package/dist/_shared/money-display-DSFft9Mi.cjs +2 -0
- package/dist/_shared/money-display-DSFft9Mi.cjs.map +1 -0
- package/dist/_shared/navigation-Do9k5Xh1.js +420 -0
- package/dist/_shared/navigation-Do9k5Xh1.js.map +1 -0
- package/dist/_shared/navigation-QAAD3HJd.cjs +2 -0
- package/dist/_shared/navigation-QAAD3HJd.cjs.map +1 -0
- package/dist/_shared/overlays-B8AH8fNv.js +633 -0
- package/dist/_shared/overlays-B8AH8fNv.js.map +1 -0
- package/dist/_shared/overlays-DOcoRy8k.cjs +2 -0
- package/dist/_shared/overlays-DOcoRy8k.cjs.map +1 -0
- package/dist/_shared/page-BPCeKX9X.js +263 -0
- package/dist/_shared/page-BPCeKX9X.js.map +1 -0
- package/dist/_shared/page-DMM32sxi.cjs +2 -0
- package/dist/_shared/page-DMM32sxi.cjs.map +1 -0
- package/dist/_shared/popover-B1f_EUQS.cjs +2 -0
- package/dist/_shared/popover-B1f_EUQS.cjs.map +1 -0
- package/dist/_shared/popover-CgRGcFk9.js +83 -0
- package/dist/_shared/popover-CgRGcFk9.js.map +1 -0
- package/dist/_shared/popover-menu-BEKIT3LR.cjs +2 -0
- package/dist/_shared/popover-menu-BEKIT3LR.cjs.map +1 -0
- package/dist/_shared/popover-menu-BHdHLEVL.js +95 -0
- package/dist/_shared/popover-menu-BHdHLEVL.js.map +1 -0
- package/dist/_shared/rich-text-editor-0uoIoYXU.js +608 -0
- package/dist/_shared/rich-text-editor-0uoIoYXU.js.map +1 -0
- package/dist/_shared/rich-text-editor-wTiARGuB.cjs +2 -0
- package/dist/_shared/rich-text-editor-wTiARGuB.cjs.map +1 -0
- package/dist/_shared/scroll-area-Bo17wtZD.cjs +2 -0
- package/dist/_shared/scroll-area-Bo17wtZD.cjs.map +1 -0
- package/dist/_shared/scroll-area-Cj-hmB5D.js +41 -0
- package/dist/_shared/scroll-area-Cj-hmB5D.js.map +1 -0
- package/dist/_shared/select-07RRiTWc.js +85 -0
- package/dist/_shared/select-07RRiTWc.js.map +1 -0
- package/dist/_shared/select-BfiU7a4n.cjs +2 -0
- package/dist/_shared/select-BfiU7a4n.cjs.map +1 -0
- package/dist/_shared/separator-CN9zAJfs.cjs +2 -0
- package/dist/_shared/separator-CN9zAJfs.cjs.map +1 -0
- package/dist/_shared/separator-DR0uUMKa.js +16 -0
- package/dist/_shared/separator-DR0uUMKa.js.map +1 -0
- package/dist/_shared/sheet-B5FoGJAZ.cjs +2 -0
- package/dist/_shared/sheet-B5FoGJAZ.cjs.map +1 -0
- package/dist/_shared/sheet-cUI8cypP.js +100 -0
- package/dist/_shared/sheet-cUI8cypP.js.map +1 -0
- package/dist/_shared/sidebar-Bq7yKLrG.cjs +2 -0
- package/dist/_shared/sidebar-Bq7yKLrG.cjs.map +1 -0
- package/dist/_shared/sidebar-Da20tCUc.cjs +2 -0
- package/dist/_shared/sidebar-Da20tCUc.cjs.map +1 -0
- package/dist/_shared/sidebar-Q6TYE8Ux.js +371 -0
- package/dist/_shared/sidebar-Q6TYE8Ux.js.map +1 -0
- package/dist/_shared/sidebar-WmnQ55YY.js +537 -0
- package/dist/_shared/sidebar-WmnQ55YY.js.map +1 -0
- package/dist/_shared/skeleton-B3HWEc6G.js +14 -0
- package/dist/_shared/skeleton-B3HWEc6G.js.map +1 -0
- package/dist/_shared/skeleton-Cz_l8-fc.cjs +2 -0
- package/dist/_shared/skeleton-Cz_l8-fc.cjs.map +1 -0
- package/dist/_shared/slot-BgnZtKR5.js +18 -0
- package/dist/_shared/slot-BgnZtKR5.js.map +1 -0
- package/dist/_shared/slot-Dac1ipUC.cjs +2 -0
- package/dist/_shared/slot-Dac1ipUC.cjs.map +1 -0
- package/dist/_shared/smart-card-Bm_VxYUG.cjs +2 -0
- package/dist/_shared/smart-card-Bm_VxYUG.cjs.map +1 -0
- package/dist/_shared/smart-card-MT6JjkoI.js +360 -0
- package/dist/_shared/smart-card-MT6JjkoI.js.map +1 -0
- package/dist/_shared/spinner-BQjxJ_Kx.js +67 -0
- package/dist/_shared/spinner-BQjxJ_Kx.js.map +1 -0
- package/dist/_shared/spinner-Dvaa6GUm.cjs +2 -0
- package/dist/_shared/spinner-Dvaa6GUm.cjs.map +1 -0
- package/dist/_shared/switch-C0yyhsXZ.js +51 -0
- package/dist/_shared/switch-C0yyhsXZ.js.map +1 -0
- package/dist/_shared/switch-DozkSQNn.cjs +2 -0
- package/dist/_shared/switch-DozkSQNn.cjs.map +1 -0
- package/dist/_shared/textarea-Cgl-FPwu.js +119 -0
- package/dist/_shared/textarea-Cgl-FPwu.js.map +1 -0
- package/dist/_shared/textarea-D8wC0XlZ.cjs +2 -0
- package/dist/_shared/textarea-D8wC0XlZ.cjs.map +1 -0
- package/dist/_shared/tooltip-Cws4BiPT.js +49 -0
- package/dist/_shared/tooltip-Cws4BiPT.js.map +1 -0
- package/dist/_shared/tooltip-DyUi-Tac.cjs +2 -0
- package/dist/_shared/tooltip-DyUi-Tac.cjs.map +1 -0
- package/dist/_shared/typography-BW7iZBx7.cjs +2 -0
- package/dist/_shared/typography-BW7iZBx7.cjs.map +1 -0
- package/dist/_shared/typography-a3hydyvI.js +102 -0
- package/dist/_shared/typography-a3hydyvI.js.map +1 -0
- package/dist/components/base/accordion/index.cjs +1 -1
- package/dist/components/base/accordion/index.js +1 -1
- package/dist/components/base/badge/index.cjs +1 -1
- package/dist/components/base/badge/index.js +1 -1
- package/dist/components/base/buttons/index.cjs +1 -1
- package/dist/components/base/buttons/index.js +2 -2
- package/dist/components/base/cards/index.cjs +1 -1
- package/dist/components/base/cards/index.js +1 -1
- package/dist/components/base/combobox/index.cjs +1 -1
- package/dist/components/base/combobox/index.js +1 -1
- package/dist/components/base/command/index.cjs +1 -1
- package/dist/components/base/command/index.js +2 -2
- package/dist/components/base/copyable/index.cjs +1 -1
- package/dist/components/base/copyable/index.js +1 -1
- package/dist/components/base/currency/index.cjs +1 -1
- package/dist/components/base/currency/index.js +1 -1
- package/dist/components/base/date-pickers/index.cjs +1 -1
- package/dist/components/base/date-pickers/index.js +2 -2
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.js +12 -11
- package/dist/components/base/display/metadata/index.cjs +1 -0
- package/dist/components/base/display/metadata/index.js +2 -0
- package/dist/components/base/event-calendar/index.cjs +1 -1
- package/dist/components/base/event-calendar/index.cjs.map +1 -1
- package/dist/components/base/event-calendar/index.js +4 -4
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.js +6 -6
- package/dist/components/base/item/index.cjs +1 -1
- package/dist/components/base/item/index.js +1 -1
- package/dist/components/base/map/index.cjs +1 -1
- package/dist/components/base/map/index.js +3 -3
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/index.js +4 -4
- package/dist/components/base/popover/index.cjs +1 -1
- package/dist/components/base/popover/index.js +1 -1
- package/dist/components/base/popover-menu/index.cjs +1 -1
- package/dist/components/base/popover-menu/index.js +1 -1
- package/dist/components/base/sheet/index.cjs +1 -1
- package/dist/components/base/sheet/index.js +1 -1
- package/dist/components/base/sidebar/index.cjs +1 -1
- package/dist/components/base/sidebar/index.js +1 -1
- package/dist/components/base/spinner/index.cjs +1 -1
- package/dist/components/base/spinner/index.js +1 -1
- package/dist/components/base/table/index.cjs +1 -1
- package/dist/components/base/table/index.js +7 -7
- package/dist/components/composed/admin/index.cjs +1 -1
- package/dist/components/composed/admin/index.cjs.map +1 -1
- package/dist/components/composed/admin/index.js +12 -12
- package/dist/components/composed/ai/index.cjs +1 -1
- package/dist/components/composed/ai/index.js +9 -9
- package/dist/components/composed/analytics/index.cjs +1 -1
- package/dist/components/composed/analytics/index.cjs.map +1 -1
- package/dist/components/composed/analytics/index.js +4 -4
- package/dist/components/composed/cards/index.cjs +1 -1
- package/dist/components/composed/cards/index.cjs.map +1 -1
- package/dist/components/composed/cards/index.js +8 -8
- package/dist/components/composed/commerce/index.cjs +1 -1
- package/dist/components/composed/commerce/index.cjs.map +1 -1
- package/dist/components/composed/commerce/index.js +9 -9
- package/dist/components/composed/dark-surfaces/index.cjs +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
- package/dist/components/composed/dark-surfaces/index.js +6 -6
- package/dist/components/composed/data-display/index.cjs +1 -1
- package/dist/components/composed/data-display/index.cjs.map +1 -1
- package/dist/components/composed/data-display/index.js +7 -7
- package/dist/components/composed/navigation/index.cjs +1 -1
- package/dist/components/composed/navigation/index.js +4 -4
- package/dist/components/composed/onboarding/index.cjs +1 -1
- package/dist/components/composed/onboarding/index.js +2 -2
- package/dist/components/composed/timelines/index.cjs +1 -1
- package/dist/components/composed/timelines/index.js +2 -2
- package/dist/components/features/activities/index.cjs +1 -1
- package/dist/components/features/activities/index.js +4 -4
- package/dist/components/features/ai-chat/index.cjs +1 -1
- package/dist/components/features/ai-chat/index.cjs.map +1 -1
- package/dist/components/features/ai-chat/index.js +6 -6
- package/dist/components/features/card/index.cjs +1 -1
- package/dist/components/features/card/index.js +3 -3
- package/dist/components/features/comments/index.cjs +1 -1
- package/dist/components/features/comments/index.js +2 -2
- package/dist/components/features/event-log/index.cjs +1 -1
- package/dist/components/features/event-log/index.js +3 -3
- package/dist/components/features/filters/index.cjs +1 -1
- package/dist/components/features/filters/index.js +9 -9
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.js +2 -2
- package/dist/components/features/kanban/index.cjs +1 -1
- package/dist/components/features/kanban/index.js +1 -1
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/overlays/index.cjs +1 -1
- package/dist/components/features/overlays/index.js +1 -1
- package/dist/components/features/rich-text-editor/index.cjs +1 -1
- package/dist/components/features/rich-text-editor/index.js +1 -1
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.js +1 -1
- package/dist/components/features/sync/index.cjs +1 -1
- package/dist/components/features/sync/index.js +2 -2
- package/dist/components/layout/containers/index.cjs +1 -1
- package/dist/components/layout/containers/index.js +2 -2
- package/dist/components/layout/header/index.cjs +1 -1
- package/dist/components/layout/header/index.js +1 -1
- package/dist/components/layout/hooks/index.cjs +1 -1
- package/dist/components/layout/hooks/index.js +1 -1
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.js +6 -6
- package/dist/components/layout/page/index.cjs +1 -1
- package/dist/components/layout/page/index.js +1 -1
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.js +2 -2
- package/dist/components/typography/index.cjs +1 -1
- package/dist/components/typography/index.js +3 -2
- package/dist/showcase/assets/AreaChart-CJ57G5Ub.js +6 -0
- package/dist/showcase/assets/CSPContext-BA7DfnCI.js +1 -0
- package/dist/showcase/assets/CompositeItem-PwzgE4va.js +1 -0
- package/dist/showcase/assets/CompositeRoot-Du4CMlK7.js +1 -0
- package/dist/showcase/assets/DialogTrigger-FkENgwo6.js +1 -0
- package/dist/showcase/assets/FormContext-ChygLayp.js +1 -0
- package/dist/showcase/assets/PreviewLayout-z6vpJJGt.js +1 -0
- package/dist/showcase/assets/RadioGroup-CcDmbxOw.js +1 -0
- package/dist/showcase/assets/Separator-Dk4eN76U.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-D_KAA5hZ.js +1 -0
- package/dist/showcase/assets/accordion-dQszzfmw.js +172 -0
- package/dist/showcase/assets/accordion-variants-Dp4wxic-.js +1 -0
- package/dist/showcase/assets/action-menu-CBi2Eiy0.js +1 -0
- package/dist/showcase/assets/activities-DoXsgP4G.js +501 -0
- package/dist/showcase/assets/activities-feed-card-xz5FtkOm.js +1 -0
- package/dist/showcase/assets/admin-CxklUqAG.js +80 -0
- package/dist/showcase/assets/ai-artifact-DkhUdEbM.js +2 -0
- package/dist/showcase/assets/ai-chat-B6PuqkEu.js +568 -0
- package/dist/showcase/assets/ai-elements-D_rpj_ds.js +379 -0
- package/dist/showcase/assets/ai-new-CUPrAbOK.js +167 -0
- package/dist/showcase/assets/ai-tool-call-CEr-dGVx.js +1 -0
- package/dist/showcase/assets/ai-zxF_msJF.js +41 -0
- package/dist/showcase/assets/alert-771BE3Ny.js +59 -0
- package/dist/showcase/assets/alert-CG42DAlX.js +1 -0
- package/dist/showcase/assets/api-key-list-D6jUN7Fq.js +73 -0
- package/dist/showcase/assets/arrow-down-CUoXUyN1.js +1 -0
- package/dist/showcase/assets/arrow-left-Cdq69X6h.js +1 -0
- package/dist/showcase/assets/arrow-right-i25q9L2H.js +1 -0
- package/dist/showcase/assets/arrow-up-pnezegnF.js +1 -0
- package/dist/showcase/assets/arrow-up-right-CK3XnMah.js +1 -0
- package/dist/showcase/assets/avatar-LPmQqZQv.js +1 -0
- package/dist/showcase/assets/avatar-ZVFIQouy.js +57 -0
- package/dist/showcase/assets/badge-DK4bsgZC.js +28 -0
- package/dist/showcase/assets/badge-check-Cw5gkVcG.js +1 -0
- package/dist/showcase/assets/bell-BvJELoaV.js +1 -0
- package/dist/showcase/assets/bot-DRj6sdSR.js +1 -0
- package/dist/showcase/assets/box-BNND3M2m.js +1 -0
- package/dist/showcase/assets/brain-Cy3o-12l.js +1 -0
- package/dist/showcase/assets/brand-DvipEpFn.js +40 -0
- package/dist/showcase/assets/breadcrumb-B-LNuOyv.js +1 -0
- package/dist/showcase/assets/breadcrumb-Lzpc0yo4.js +52 -0
- package/dist/showcase/assets/breadcrumbs-DD6msKFZ.js +1 -0
- package/dist/showcase/assets/briefcase-LcAwoEmu.js +1 -0
- package/dist/showcase/assets/button-CuwcGzk1.js +44 -0
- package/dist/showcase/assets/button-group-CAImjDrl.js +1 -0
- package/dist/showcase/assets/buttons-DTjNHCMl.js +259 -0
- package/dist/showcase/assets/calendar-B1zW0q6I.js +1 -0
- package/dist/showcase/assets/calendar-Dlv72ytt.js +1 -0
- package/dist/showcase/assets/calendar-ls2A08Pn.js +16 -0
- package/dist/showcase/assets/card-BhtkM1BT.js +1 -0
- package/dist/showcase/assets/cards-BRpRXzGk.js +328 -0
- package/dist/showcase/assets/chart-column-BpQkEi1H.js +1 -0
- package/dist/showcase/assets/chevron-down-DyObdfSb.js +1 -0
- package/dist/showcase/assets/chevron-left-T7dHNxYM.js +1 -0
- package/dist/showcase/assets/chevron-right-D_EcqHpT.js +1 -0
- package/dist/showcase/assets/chevron-up-B38ivdGO.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-SdRARzoq.js +1 -0
- package/dist/showcase/assets/circle-BrCPAmDA.js +1 -0
- package/dist/showcase/assets/circle-alert-DdhzLPY_.js +1 -0
- package/dist/showcase/assets/circle-check-DlA6zidQ.js +1 -0
- package/dist/showcase/assets/circle-check-big-DFGJANQF.js +1 -0
- package/dist/showcase/assets/circle-dot-BKmnVUqM.js +1 -0
- package/dist/showcase/assets/circle-question-mark-BNREvgVC.js +1 -0
- package/dist/showcase/assets/circle-x-C45QjHEs.js +1 -0
- package/dist/showcase/assets/clock-D1nKQzQo.js +1 -0
- package/dist/showcase/assets/code-xml-B8N3GRSu.js +1 -0
- package/dist/showcase/assets/collapsible-4TfcWyNs.js +1 -0
- package/dist/showcase/assets/collapsible-CKbZtvTj.js +27 -0
- package/dist/showcase/assets/combobox-DTdGPaU0.js +622 -0
- package/dist/showcase/assets/command-DymTXwL1.js +1 -0
- package/dist/showcase/assets/command-ksVIHQKJ.js +45 -0
- package/dist/showcase/assets/comment-composer-DC9oS1Yy.js +1 -0
- package/dist/showcase/assets/comment-item-CAmKnJa7.js +1 -0
- package/dist/showcase/assets/comments-Benk-2mV.js +349 -0
- package/dist/showcase/assets/commerce-Qz-mq8mQ.js +78 -0
- package/dist/showcase/assets/commerce-extras-CQRc3Bna.js +179 -0
- package/dist/showcase/assets/composite-DBDXLPyz.js +1 -0
- package/dist/showcase/assets/contact-card-DkL2nI3r.js +65 -0
- package/dist/showcase/assets/content-container-mRm6oJEa.js +1 -0
- package/dist/showcase/assets/copyable-DmLlmwzy.js +96 -0
- package/dist/showcase/assets/course-card-CJJoeZj9.js +113 -0
- package/dist/showcase/assets/cpu-BXJnF2Xy.js +1 -0
- package/dist/showcase/assets/credit-card-BQK3KKb2.js +1 -0
- package/dist/showcase/assets/currency-DBPUh8ee.js +149 -0
- package/dist/showcase/assets/dark-surfaces-LpPuIeYy.js +90 -0
- package/dist/showcase/assets/database-BZerpzGE.js +1 -0
- package/dist/showcase/assets/date-block-iiHUpbNX.js +1 -0
- package/dist/showcase/assets/date-picker-BQeBGL7T.js +1 -0
- package/dist/showcase/assets/date-pickers-CKcUEMMF.js +110 -0
- package/dist/showcase/assets/dense-info-DATmxRU8.js +106 -0
- package/dist/showcase/assets/dialog-Bqu5KDYH.js +1 -0
- package/dist/showcase/assets/display-Bj7uPXD4.js +392 -0
- package/dist/showcase/assets/dist-QK7JxeYv.js +1 -0
- package/dist/showcase/assets/dollar-sign-DFZs6vfz.js +1 -0
- package/dist/showcase/assets/download-5oGw_WbW.js +1 -0
- package/dist/showcase/assets/dropdown-menu-1CJgYn0S.js +1 -0
- package/dist/showcase/assets/dropzone-Co1uhsDn.js +1 -0
- package/dist/showcase/assets/ellipsis-cKRcvuyL.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-B1RErEkj.js +1 -0
- package/dist/showcase/assets/empty-Y2-4nCBr.js +1 -0
- package/dist/showcase/assets/empty-item-USa6xcUv.js +49 -0
- package/dist/showcase/assets/empty-state-DfhZ9AT5.js +188 -0
- package/dist/showcase/assets/enhanced-activities-DmAPVUSu.js +359 -0
- package/dist/showcase/assets/esm-BeGQ_ZTM.js +2 -0
- package/dist/showcase/assets/event-calendar-D-jGrrZS.js +138 -0
- package/dist/showcase/assets/event-log-tA_i4eR9.js +326 -0
- package/dist/showcase/assets/example-6phCHGsN.js +1 -0
- package/dist/showcase/assets/external-link-BuVHkCy0.js +1 -0
- package/dist/showcase/assets/eye-DC5HfGm6.js +1 -0
- package/dist/showcase/assets/feature-announcement-DwvxLytd.js +34 -0
- package/dist/showcase/assets/file-D-xM4vLy.js +1 -0
- package/dist/showcase/assets/file-text-tmG5vNbr.js +1 -0
- package/dist/showcase/assets/filters-CrGRXmq6.js +78 -0
- package/dist/showcase/assets/flag-CWrEtkY5.js +1 -0
- package/dist/showcase/assets/folder-open-Br-x1pjP.js +1 -0
- package/dist/showcase/assets/form-sizing-Bb5hiM45.js +1 -0
- package/dist/showcase/assets/format-D_ETCyg4.js +1 -0
- package/dist/showcase/assets/forms-B_MkQ3rm.js +790 -0
- package/dist/showcase/assets/generic-CdmsyXV3.js +1 -0
- package/dist/showcase/assets/getPseudoElementBounds-CZnCbCFP.js +1 -0
- package/dist/showcase/assets/gift-NkuklfU2.js +1 -0
- package/dist/showcase/assets/giftcard-cards-BAvevZ0i.js +85 -0
- package/dist/showcase/assets/git-branch-B_CBqPeO.js +1 -0
- package/dist/showcase/assets/global-search-D9teAbPe.js +90 -0
- package/dist/showcase/assets/globe-gzw45GU2.js +1 -0
- package/dist/showcase/assets/gradient-card-Xk2r7R5H.js +58 -0
- package/dist/showcase/assets/header-notifications-_aZCpE5A.js +1 -0
- package/dist/showcase/assets/heart-CEMKbRaZ.js +1 -0
- package/dist/showcase/assets/house-BlGXAcMH.js +1 -0
- package/dist/showcase/assets/icon-badge-z6N9reH_.js +1 -0
- package/dist/showcase/assets/image-B8mzmVBr.js +1 -0
- package/dist/showcase/assets/inbox-qdSnP4UV.js +1 -0
- package/dist/showcase/assets/index-B4ubXfly.js +10 -0
- package/dist/showcase/assets/inertValue-D5Q8cLku.js +1 -0
- package/dist/showcase/assets/info-DBvvNjc_.js +1 -0
- package/dist/showcase/assets/inline-stat-Bm1zVT8D.js +1 -0
- package/dist/showcase/assets/input-CBQR0aeX.js +1 -0
- package/dist/showcase/assets/input-OrUzpI55.js +1 -0
- package/dist/showcase/assets/input-group-DhqOen2N.js +47 -0
- package/dist/showcase/assets/input-group-l8xa5nUq.js +1 -0
- package/dist/showcase/assets/inputs-DbiJ0qy2.js +49 -0
- package/dist/showcase/assets/invoice-header-C6youIbL.js +36 -0
- package/dist/showcase/assets/invoice-items-g6dgryF-.js +36 -0
- package/dist/showcase/assets/invoice-mini-0iWhufpt.js +14 -0
- package/dist/showcase/assets/invoice-table-Bvdh3rRq.js +30 -0
- package/dist/showcase/assets/isSameDay-BpZEtJe8.js +1 -0
- package/dist/showcase/assets/isToday-F0CS28oK.js +1 -0
- package/dist/showcase/assets/italic-CJOEwjdc.js +1 -0
- package/dist/showcase/assets/item-BiMm1PPB.js +1 -0
- package/dist/showcase/assets/item-CN0cwdj_.js +1 -0
- package/dist/showcase/assets/item-DNqEUYLT.js +117 -0
- package/dist/showcase/assets/kanban-DxePEUiQ.js +175 -0
- package/dist/showcase/assets/label-Dx4WO-fg.js +1 -0
- package/dist/showcase/assets/layout-containers-DDl8rG8S.js +96 -0
- package/dist/showcase/assets/layout-header-Bu6IcDWu.js +170 -0
- package/dist/showcase/assets/layout-page-D-88Qnoy.js +122 -0
- package/dist/showcase/assets/layout-sidebar-Ctft10pk.js +224 -0
- package/dist/showcase/assets/layout-users-DtbZduBG.js +104 -0
- package/dist/showcase/assets/lib-D9BoOYUd.js +1 -0
- package/dist/showcase/assets/lock-CHurDI0n.js +1 -0
- package/dist/showcase/assets/mail-DZ1o1RLW.js +1 -0
- package/dist/showcase/assets/map-C8xiyT9X.js +124 -0
- package/dist/showcase/assets/map-pin-CAKaoYod.js +1 -0
- package/dist/showcase/assets/menus-C6mnp636.js +89 -0
- package/dist/showcase/assets/message-square-Zo5J_zU1.js +1 -0
- package/dist/showcase/assets/metadata-list-W83-UMhc.js +278 -0
- package/dist/showcase/assets/metric-BSvxidIX.js +1 -0
- package/dist/showcase/assets/metric-grid-Dtqx_3Lg.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-mtvcJ_M9.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-DQbyss7i.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-CEBu5Uw0.js +77 -0
- package/dist/showcase/assets/metrics-comparison-Bs-R6v4y.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-BKHWH8sM.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-BxVn0Y2p.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-DtACYEds.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-BkwUGOUR.js +42 -0
- package/dist/showcase/assets/metrics-overview-BAtrlzsI.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-iCRCNyHY.js +54 -0
- package/dist/showcase/assets/minus-C6eBW-2t.js +1 -0
- package/dist/showcase/assets/money-display-DjGRJ16l.js +1 -0
- package/dist/showcase/assets/month-year-picker-DTDebPqf.js +1 -0
- package/dist/showcase/assets/navigation-BrG8Chig.js +86 -0
- package/dist/showcase/assets/navigation-CfXQJbyM.js +230 -0
- package/dist/showcase/assets/navigation-extras-D_gzLlZ5.js +43 -0
- package/dist/showcase/assets/onboarding-checklist-1EerUwAo.js +119 -0
- package/dist/showcase/assets/overlays-2AB9-S1Z.js +88 -0
- package/dist/showcase/assets/overlays-CYt9o3Xq.js +393 -0
- package/dist/showcase/assets/package-BJMP-Fcr.js +1 -0
- package/dist/showcase/assets/page-action-button-BZxJ0X1j.js +1 -0
- package/dist/showcase/assets/page-header-B_rqHJhe.js +1 -0
- package/dist/showcase/assets/pagination-BHiQvvka.js +1 -0
- package/dist/showcase/assets/pagination-Dq0GruQd.js +42 -0
- package/dist/showcase/assets/paperclip-BMYKrUQo.js +1 -0
- package/dist/showcase/assets/pencil-BJ3VS_FO.js +1 -0
- package/dist/showcase/assets/phone-CsRIyvep.js +1 -0
- package/dist/showcase/assets/plus-D2JuXYLg.js +1 -0
- package/dist/showcase/assets/popover-DNT9755r.js +1 -0
- package/dist/showcase/assets/popover-KvGgcPNg.js +1 -0
- package/dist/showcase/assets/popover-menu-CJx30R65.js +1 -0
- package/dist/showcase/assets/progress-B7WuXcJR.js +1 -0
- package/dist/showcase/assets/progress-CweCSAUv.js +18 -0
- package/dist/showcase/assets/props-table-uDY4eIzt.js +1 -0
- package/dist/showcase/assets/quote-DAyyfzQd.js +1 -0
- package/dist/showcase/assets/receipt-C0mMZGbF.js +1 -0
- package/dist/showcase/assets/refresh-cw-X06JbXb-.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-Bks7UDko.js +1 -0
- package/dist/showcase/assets/rich-text-editor-QJsb-qIe.js +124 -0
- package/dist/showcase/assets/rich-text-editor-h07VBNI9.js +141 -0
- package/dist/showcase/assets/rotate-ccw-D84bdX_x.js +1 -0
- package/dist/showcase/assets/scroll-area-0rT06pXZ.js +1 -0
- package/dist/showcase/assets/scroll-area-YXwdzGpN.js +32 -0
- package/dist/showcase/assets/select-BoWQDtUf.js +1 -0
- package/dist/showcase/assets/send-DJsk3cr1.js +1 -0
- package/dist/showcase/assets/separator-CLSnRcJa.js +28 -0
- package/dist/showcase/assets/separator-DWv-twD-.js +1 -0
- package/dist/showcase/assets/settings-Cb2MsAmN.js +1 -0
- package/dist/showcase/assets/sheet-Dn1-MYus.js +1 -0
- package/dist/showcase/assets/shield-DwLjF5ch.js +1 -0
- package/dist/showcase/assets/shield-alert-D8i6gzMK.js +1 -0
- package/dist/showcase/assets/shield-check-D5YRSBIz.js +1 -0
- package/dist/showcase/assets/shopping-bag-BqlAP4vn.js +1 -0
- package/dist/showcase/assets/sidebar.context-BAp_pBEB.js +1 -0
- package/dist/showcase/assets/skeleton-CeNPp4hr.js +1 -0
- package/dist/showcase/assets/skeleton-QPsnM_NR.js +29 -0
- package/dist/showcase/assets/smart-card-BisUbLPt.js +1 -0
- package/dist/showcase/assets/sonner-B7GzbBK2.js +22 -0
- package/dist/showcase/assets/sortable.esm-BDcEOHT7.js +5 -0
- package/dist/showcase/assets/sparkles-CF9P5Tqh.js +1 -0
- package/dist/showcase/assets/spinner-BeamEyJd.js +49 -0
- package/dist/showcase/assets/spinner-DoYBfalR.js +1 -0
- package/dist/showcase/assets/spinner-UsLsOYzn.js +30 -0
- package/dist/showcase/assets/square-pen-BGTVdnt1.js +1 -0
- package/dist/showcase/assets/stacked-avatars-BWfVX1Ov.js +1 -0
- package/dist/showcase/assets/star-NsPNO9gR.js +1 -0
- package/dist/showcase/assets/startOfDay-zJBpxLuW.js +1 -0
- package/dist/showcase/assets/styles-DA7a7hVy.js +1 -0
- package/dist/showcase/assets/switch-C62S4U2o.js +1 -0
- package/dist/showcase/assets/switch-CYQcinJZ.js +1 -0
- package/dist/showcase/assets/table-w4IABkpa.js +1 -0
- package/dist/showcase/assets/table-xgB63UrY.js +390 -0
- package/dist/showcase/assets/tabs-BFTEaTXj.js +19 -0
- package/dist/showcase/assets/tabs-oMJn9Ujq.js +1 -0
- package/dist/showcase/assets/text-button-BgcutPuu.js +1 -0
- package/dist/showcase/assets/text-link-CS9thOWL.js +1 -0
- package/dist/showcase/assets/textarea-BOBx4EM6.js +1 -0
- package/dist/showcase/assets/textarea-CTzYZZqa.js +1 -0
- package/dist/showcase/assets/timelines-CK07mEBK.js +186 -0
- package/dist/showcase/assets/toggle-group-CSPdPT6G.js +1 -0
- package/dist/showcase/assets/toggles-DDSdl-gA.js +71 -0
- package/dist/showcase/assets/toggles-group-Y2BdKEFB.js +32 -0
- package/dist/showcase/assets/trash-2-C-FAptQP.js +1 -0
- package/dist/showcase/assets/trending-up-BmLhdF_w.js +1 -0
- package/dist/showcase/assets/truck-pZdUS_as.js +1 -0
- package/dist/showcase/assets/typography-CnBH2z7f.js +214 -0
- package/dist/showcase/assets/ui-badge-Cl6INRO5.js +28 -0
- package/dist/showcase/assets/ui-card-B5P-thNu.js +30 -0
- package/dist/showcase/assets/ui-table-B32RILKk.js +42 -0
- package/dist/showcase/assets/upload-tray-mu6bR2ZE.js +138 -0
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CzDaXxmM.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-B0DZvDFu.js +1 -0
- package/dist/showcase/assets/useCompositeItem-BVIVLT9X.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-JEMeTFPx.js +1 -0
- package/dist/showcase/assets/useControlled-ZjqBfPCn.js +1 -0
- package/dist/showcase/assets/useLabelableId-D8CZq8Bm.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-CopGCf3q.js +1 -0
- package/dist/showcase/assets/useRender-zuKv6JQF.js +1 -0
- package/dist/showcase/assets/useRole-08KeyiD3.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-DEuz5CGe.js +1 -0
- package/dist/showcase/assets/useValueChanged-BxFi_qyj.js +1 -0
- package/dist/showcase/assets/user-Bgc2t2_e.js +1 -0
- package/dist/showcase/assets/user-plus-F_TfagnP.js +1 -0
- package/dist/showcase/assets/users-B7G4yTCR.js +1 -0
- package/dist/showcase/assets/vendor-profile-BTQmsKM6.js +37 -0
- package/dist/showcase/assets/wrench-BdzICmjR.js +1 -0
- package/dist/showcase/assets/x-B156Wr-5.js +1 -0
- package/dist/showcase/assets/zap-B3iByjNV.js +1 -0
- package/dist/showcase/index.html +1 -1
- package/package.json +254 -19
- package/dist/_shared/accordion-7rwpgJ1k.cjs +0 -2
- package/dist/_shared/accordion-7rwpgJ1k.cjs.map +0 -1
- package/dist/_shared/accordion-DcduCEIo.js +0 -130
- package/dist/_shared/accordion-DcduCEIo.js.map +0 -1
- package/dist/_shared/action-menu-D0u-q0q-.cjs +0 -2
- package/dist/_shared/action-menu-D0u-q0q-.cjs.map +0 -1
- package/dist/_shared/action-menu-DUBXdReV.js +0 -96
- package/dist/_shared/action-menu-DUBXdReV.js.map +0 -1
- package/dist/_shared/ai-artifact-C3R0god0.cjs +0 -3
- package/dist/_shared/ai-artifact-C3R0god0.cjs.map +0 -1
- package/dist/_shared/ai-artifact-DMjQv_Si.js +0 -1068
- package/dist/_shared/ai-artifact-DMjQv_Si.js.map +0 -1
- package/dist/_shared/alert-B2cuJGAA.cjs +0 -2
- package/dist/_shared/alert-B2cuJGAA.cjs.map +0 -1
- package/dist/_shared/alert-BKUmOI2e.js +0 -48
- package/dist/_shared/alert-BKUmOI2e.js.map +0 -1
- package/dist/_shared/avatar-BcYcRORH.cjs +0 -2
- package/dist/_shared/avatar-BcYcRORH.cjs.map +0 -1
- package/dist/_shared/avatar-CNzG6jSZ.js +0 -52
- package/dist/_shared/avatar-CNzG6jSZ.js.map +0 -1
- package/dist/_shared/badge-BbUN6W7E.js +0 -108
- package/dist/_shared/badge-BbUN6W7E.js.map +0 -1
- package/dist/_shared/badge-BjtDcU1M.cjs +0 -2
- package/dist/_shared/badge-BjtDcU1M.cjs.map +0 -1
- package/dist/_shared/breadcrumbs-DctwTld5.js +0 -111
- package/dist/_shared/breadcrumbs-DctwTld5.js.map +0 -1
- package/dist/_shared/breadcrumbs-m0-gCdNj.cjs +0 -2
- package/dist/_shared/breadcrumbs-m0-gCdNj.cjs.map +0 -1
- package/dist/_shared/button-BCABTFLE.js +0 -46
- package/dist/_shared/button-BCABTFLE.js.map +0 -1
- package/dist/_shared/button-Ck2qS42n.js +0 -176
- package/dist/_shared/button-Ck2qS42n.js.map +0 -1
- package/dist/_shared/button-DjJ-mDI1.cjs +0 -2
- package/dist/_shared/button-DjJ-mDI1.cjs.map +0 -1
- package/dist/_shared/button-DjacsNTg.cjs +0 -2
- package/dist/_shared/button-DjacsNTg.cjs.map +0 -1
- package/dist/_shared/buttons-BVnjQ-uE.js +0 -143
- package/dist/_shared/buttons-BVnjQ-uE.js.map +0 -1
- package/dist/_shared/buttons-BdY6igTr.cjs +0 -2
- package/dist/_shared/buttons-BdY6igTr.cjs.map +0 -1
- package/dist/_shared/card-radio-group--GP1xrz_.js +0 -158
- package/dist/_shared/card-radio-group--GP1xrz_.js.map +0 -1
- package/dist/_shared/card-radio-group-DnQsWozr.cjs +0 -2
- package/dist/_shared/card-radio-group-DnQsWozr.cjs.map +0 -1
- package/dist/_shared/combobox-DBrRE1Dr.cjs +0 -2
- package/dist/_shared/combobox-DBrRE1Dr.cjs.map +0 -1
- package/dist/_shared/combobox-DYztEJaw.js +0 -746
- package/dist/_shared/combobox-DYztEJaw.js.map +0 -1
- package/dist/_shared/command-COvgXQ8r.cjs +0 -2
- package/dist/_shared/command-COvgXQ8r.cjs.map +0 -1
- package/dist/_shared/command-CvZ6Emb8.js +0 -39
- package/dist/_shared/command-CvZ6Emb8.js.map +0 -1
- package/dist/_shared/command-DTFQIUVG.cjs +0 -2
- package/dist/_shared/command-DTFQIUVG.cjs.map +0 -1
- package/dist/_shared/command-Sq8XbHbA.js +0 -123
- package/dist/_shared/command-Sq8XbHbA.js.map +0 -1
- package/dist/_shared/comments-BOFU1GYY.js +0 -945
- package/dist/_shared/comments-BOFU1GYY.js.map +0 -1
- package/dist/_shared/comments-BbTYFzx6.cjs +0 -2
- package/dist/_shared/comments-BbTYFzx6.cjs.map +0 -1
- package/dist/_shared/containers-BthqdOhA.cjs +0 -2
- package/dist/_shared/containers-BthqdOhA.cjs.map +0 -1
- package/dist/_shared/containers-CD2xs1nk.js +0 -19
- package/dist/_shared/containers-CD2xs1nk.js.map +0 -1
- package/dist/_shared/content-container-CFfYbWoa.js +0 -33
- package/dist/_shared/content-container-CFfYbWoa.js.map +0 -1
- package/dist/_shared/content-container-CReiVugL.cjs +0 -2
- package/dist/_shared/content-container-CReiVugL.cjs.map +0 -1
- package/dist/_shared/copyable-CweQ72QI.cjs +0 -2
- package/dist/_shared/copyable-CweQ72QI.cjs.map +0 -1
- package/dist/_shared/copyable-JgsTp6ev.js +0 -38
- package/dist/_shared/copyable-JgsTp6ev.js.map +0 -1
- package/dist/_shared/date-picker-DI4b-SeE.cjs +0 -2
- package/dist/_shared/date-picker-DI4b-SeE.cjs.map +0 -1
- package/dist/_shared/date-picker-DTazvODY.js +0 -1352
- package/dist/_shared/date-picker-DTazvODY.js.map +0 -1
- package/dist/_shared/date-pickers-CLzuzmuc.cjs +0 -2
- package/dist/_shared/date-pickers-CLzuzmuc.cjs.map +0 -1
- package/dist/_shared/date-pickers-CWPxP3zy.js +0 -330
- package/dist/_shared/date-pickers-CWPxP3zy.js.map +0 -1
- package/dist/_shared/dialog-2MJmaj_d.js +0 -101
- package/dist/_shared/dialog-2MJmaj_d.js.map +0 -1
- package/dist/_shared/dialog-KKD0i1T8.cjs +0 -2
- package/dist/_shared/dialog-KKD0i1T8.cjs.map +0 -1
- package/dist/_shared/display-BCy1Ti7T.cjs +0 -8
- package/dist/_shared/display-BCy1Ti7T.cjs.map +0 -1
- package/dist/_shared/display-DUpkE2aS.js +0 -1462
- package/dist/_shared/display-DUpkE2aS.js.map +0 -1
- package/dist/_shared/dropdown-menu-BebBffUH.cjs +0 -2
- package/dist/_shared/dropdown-menu-BebBffUH.cjs.map +0 -1
- package/dist/_shared/dropdown-menu-xdGEynC8.js +0 -147
- package/dist/_shared/dropdown-menu-xdGEynC8.js.map +0 -1
- package/dist/_shared/form-field-rOj3cm6C.js +0 -319
- package/dist/_shared/form-field-rOj3cm6C.js.map +0 -1
- package/dist/_shared/form-field-rcyIIHjR.cjs +0 -2
- package/dist/_shared/form-field-rcyIIHjR.cjs.map +0 -1
- package/dist/_shared/form-sizing--bs_xPe2.cjs +0 -2
- package/dist/_shared/form-sizing--bs_xPe2.cjs.map +0 -1
- package/dist/_shared/form-sizing-CkKcs5fi.js +0 -21
- package/dist/_shared/form-sizing-CkKcs5fi.js.map +0 -1
- package/dist/_shared/format-BlVEsPyT.js +0 -48
- package/dist/_shared/format-BlVEsPyT.js.map +0 -1
- package/dist/_shared/format-DYVtSA2I.cjs +0 -2
- package/dist/_shared/format-DYVtSA2I.cjs.map +0 -1
- package/dist/_shared/forms-BAVsxxRk.js +0 -3374
- package/dist/_shared/forms-BAVsxxRk.js.map +0 -1
- package/dist/_shared/forms-DaZ3LsYc.cjs +0 -2
- package/dist/_shared/forms-DaZ3LsYc.cjs.map +0 -1
- package/dist/_shared/header-BtTMsQ5P.cjs +0 -2
- package/dist/_shared/header-BtTMsQ5P.cjs.map +0 -1
- package/dist/_shared/header-DpW4UWV6.js +0 -369
- package/dist/_shared/header-DpW4UWV6.js.map +0 -1
- package/dist/_shared/hooks-Bsm917yh.cjs +0 -2
- package/dist/_shared/hooks-Bsm917yh.cjs.map +0 -1
- package/dist/_shared/hooks-CX-SICd4.js +0 -118
- package/dist/_shared/hooks-CX-SICd4.js.map +0 -1
- package/dist/_shared/icon-badge-DGKpbo9_.cjs +0 -2
- package/dist/_shared/icon-badge-DGKpbo9_.cjs.map +0 -1
- package/dist/_shared/icon-badge-DoClA_9q.js +0 -52
- package/dist/_shared/icon-badge-DoClA_9q.js.map +0 -1
- package/dist/_shared/input-BXt-YtVs.cjs +0 -2
- package/dist/_shared/input-BXt-YtVs.cjs.map +0 -1
- package/dist/_shared/input-Bx4LeLhn.js +0 -17
- package/dist/_shared/input-Bx4LeLhn.js.map +0 -1
- package/dist/_shared/input-ChZGIhtS.cjs +0 -2
- package/dist/_shared/input-ChZGIhtS.cjs.map +0 -1
- package/dist/_shared/input-Cwv1-5jt.js +0 -182
- package/dist/_shared/input-Cwv1-5jt.js.map +0 -1
- package/dist/_shared/item-BmTYKzEb.js +0 -224
- package/dist/_shared/item-BmTYKzEb.js.map +0 -1
- package/dist/_shared/item-BtR-bz96.cjs +0 -2
- package/dist/_shared/item-BtR-bz96.cjs.map +0 -1
- package/dist/_shared/mentions-DVCjaO_z.cjs +0 -2
- package/dist/_shared/mentions-DVCjaO_z.cjs.map +0 -1
- package/dist/_shared/mentions-DzG8mX5H.js +0 -493
- package/dist/_shared/mentions-DzG8mX5H.js.map +0 -1
- package/dist/_shared/money-display-B5oxCs_0.cjs +0 -2
- package/dist/_shared/money-display-B5oxCs_0.cjs.map +0 -1
- package/dist/_shared/money-display-C0wI02ou.js +0 -198
- package/dist/_shared/money-display-C0wI02ou.js.map +0 -1
- package/dist/_shared/navigation-BA2nsTgU.cjs +0 -2
- package/dist/_shared/navigation-BA2nsTgU.cjs.map +0 -1
- package/dist/_shared/navigation-DHyaf-RZ.js +0 -420
- package/dist/_shared/navigation-DHyaf-RZ.js.map +0 -1
- package/dist/_shared/overlays-Kl6Gp6WR.js +0 -633
- package/dist/_shared/overlays-Kl6Gp6WR.js.map +0 -1
- package/dist/_shared/overlays-W6j-Pe1L.cjs +0 -2
- package/dist/_shared/overlays-W6j-Pe1L.cjs.map +0 -1
- package/dist/_shared/page-DROZhtWT.js +0 -263
- package/dist/_shared/page-DROZhtWT.js.map +0 -1
- package/dist/_shared/page-lh9Rcx_d.cjs +0 -2
- package/dist/_shared/page-lh9Rcx_d.cjs.map +0 -1
- package/dist/_shared/popover-BTEwjJZS.cjs +0 -2
- package/dist/_shared/popover-BTEwjJZS.cjs.map +0 -1
- package/dist/_shared/popover-CF9VWt-l.js +0 -83
- package/dist/_shared/popover-CF9VWt-l.js.map +0 -1
- package/dist/_shared/popover-menu-BYesl29w.js +0 -95
- package/dist/_shared/popover-menu-BYesl29w.js.map +0 -1
- package/dist/_shared/popover-menu-DF9sWz61.cjs +0 -2
- package/dist/_shared/popover-menu-DF9sWz61.cjs.map +0 -1
- package/dist/_shared/rich-text-editor-UZghkgsh.cjs +0 -2
- package/dist/_shared/rich-text-editor-UZghkgsh.cjs.map +0 -1
- package/dist/_shared/rich-text-editor-fUeuK-rY.js +0 -608
- package/dist/_shared/rich-text-editor-fUeuK-rY.js.map +0 -1
- package/dist/_shared/scroll-area-XJLcCczs.js +0 -41
- package/dist/_shared/scroll-area-XJLcCczs.js.map +0 -1
- package/dist/_shared/scroll-area-y8ZJoS97.cjs +0 -2
- package/dist/_shared/scroll-area-y8ZJoS97.cjs.map +0 -1
- package/dist/_shared/select-D8MYF4f7.js +0 -85
- package/dist/_shared/select-D8MYF4f7.js.map +0 -1
- package/dist/_shared/select-DxAiUfpM.cjs +0 -2
- package/dist/_shared/select-DxAiUfpM.cjs.map +0 -1
- package/dist/_shared/separator-BazqiQ9s.js +0 -16
- package/dist/_shared/separator-BazqiQ9s.js.map +0 -1
- package/dist/_shared/separator-DSkXMOXq.cjs +0 -2
- package/dist/_shared/separator-DSkXMOXq.cjs.map +0 -1
- package/dist/_shared/sheet-7iHOs-IU.js +0 -100
- package/dist/_shared/sheet-7iHOs-IU.js.map +0 -1
- package/dist/_shared/sheet-qKtoyxgi.cjs +0 -2
- package/dist/_shared/sheet-qKtoyxgi.cjs.map +0 -1
- package/dist/_shared/sidebar-CaTUJ3t-.js +0 -537
- package/dist/_shared/sidebar-CaTUJ3t-.js.map +0 -1
- package/dist/_shared/sidebar-DVjfsm-f.cjs +0 -2
- package/dist/_shared/sidebar-DVjfsm-f.cjs.map +0 -1
- package/dist/_shared/sidebar-aV5DVAVg.js +0 -371
- package/dist/_shared/sidebar-aV5DVAVg.js.map +0 -1
- package/dist/_shared/sidebar-mL0jSJ8u.cjs +0 -2
- package/dist/_shared/sidebar-mL0jSJ8u.cjs.map +0 -1
- package/dist/_shared/skeleton-Bwv_j9jJ.cjs +0 -2
- package/dist/_shared/skeleton-Bwv_j9jJ.cjs.map +0 -1
- package/dist/_shared/skeleton-DyKa-Ed-.js +0 -14
- package/dist/_shared/skeleton-DyKa-Ed-.js.map +0 -1
- package/dist/_shared/slot-ClIPTht1.cjs +0 -2
- package/dist/_shared/slot-ClIPTht1.cjs.map +0 -1
- package/dist/_shared/slot-CrS_VEVl.js +0 -18
- package/dist/_shared/slot-CrS_VEVl.js.map +0 -1
- package/dist/_shared/smart-card-Ddsjvf7r.cjs +0 -2
- package/dist/_shared/smart-card-Ddsjvf7r.cjs.map +0 -1
- package/dist/_shared/smart-card-hJ01usWt.js +0 -360
- package/dist/_shared/smart-card-hJ01usWt.js.map +0 -1
- package/dist/_shared/spinner-D-pcMBt1.js +0 -67
- package/dist/_shared/spinner-D-pcMBt1.js.map +0 -1
- package/dist/_shared/spinner-zbmhn0vE.cjs +0 -2
- package/dist/_shared/spinner-zbmhn0vE.cjs.map +0 -1
- package/dist/_shared/switch-C5J37LMI.cjs +0 -2
- package/dist/_shared/switch-C5J37LMI.cjs.map +0 -1
- package/dist/_shared/switch-ClGgHcEb.js +0 -51
- package/dist/_shared/switch-ClGgHcEb.js.map +0 -1
- package/dist/_shared/textarea-DeISZfHw.js +0 -119
- package/dist/_shared/textarea-DeISZfHw.js.map +0 -1
- package/dist/_shared/textarea-iR9txrty.cjs +0 -2
- package/dist/_shared/textarea-iR9txrty.cjs.map +0 -1
- package/dist/_shared/tooltip-CEqxHWxQ.js +0 -49
- package/dist/_shared/tooltip-CEqxHWxQ.js.map +0 -1
- package/dist/_shared/tooltip-DPv0LGr9.cjs +0 -2
- package/dist/_shared/tooltip-DPv0LGr9.cjs.map +0 -1
- package/dist/_shared/typography-BtPQBvSm.js +0 -135
- package/dist/_shared/typography-BtPQBvSm.js.map +0 -1
- package/dist/_shared/typography-DClleVWi.cjs +0 -2
- package/dist/_shared/typography-DClleVWi.cjs.map +0 -1
- package/dist/showcase/assets/AreaChart-D-RqNtqG.js +0 -6
- package/dist/showcase/assets/CSPContext-t69BXyB7.js +0 -1
- package/dist/showcase/assets/CompositeItem-DHNLgEeV.js +0 -1
- package/dist/showcase/assets/CompositeRoot-xq_0ZFev.js +0 -1
- package/dist/showcase/assets/DialogTrigger-Cl7n_3xX.js +0 -1
- package/dist/showcase/assets/FormContext-CXdwDz7F.js +0 -1
- package/dist/showcase/assets/PreviewLayout-BHemtKEf.js +0 -1
- package/dist/showcase/assets/RadioGroup-DXAt4VZN.js +0 -1
- package/dist/showcase/assets/Separator-C9vXwWmZ.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-iF4ctnIz.js +0 -1
- package/dist/showcase/assets/accordion-DzkNgNcB.js +0 -172
- package/dist/showcase/assets/accordion-variants-DP5-oxLe.js +0 -1
- package/dist/showcase/assets/action-menu-CyA2e9TF.js +0 -1
- package/dist/showcase/assets/activities-Dt-dO5ew.js +0 -501
- package/dist/showcase/assets/activities-feed-card-DZdFekXl.js +0 -1
- package/dist/showcase/assets/admin-C2SeJmE7.js +0 -80
- package/dist/showcase/assets/ai-Cwo0h_Xn.js +0 -41
- package/dist/showcase/assets/ai-artifact-3UJofyU5.js +0 -2
- package/dist/showcase/assets/ai-chat-CrFtG_Vg.js +0 -568
- package/dist/showcase/assets/ai-elements-iJ15Y7pS.js +0 -379
- package/dist/showcase/assets/ai-new-DuznZydd.js +0 -167
- package/dist/showcase/assets/ai-tool-call-CTcGGAQU.js +0 -1
- package/dist/showcase/assets/alert-CUGGckOX.js +0 -1
- package/dist/showcase/assets/alert-tWped3Sw.js +0 -59
- package/dist/showcase/assets/api-key-list-Q5LAqzMn.js +0 -73
- package/dist/showcase/assets/arrow-down-CfwCPcHL.js +0 -1
- package/dist/showcase/assets/arrow-left-BKx9qNX6.js +0 -1
- package/dist/showcase/assets/arrow-right-DlEpbqEk.js +0 -1
- package/dist/showcase/assets/arrow-up-BYQ4F9L1.js +0 -1
- package/dist/showcase/assets/arrow-up-right-C8r6vYfE.js +0 -1
- package/dist/showcase/assets/avatar-BuZ3zTbH.js +0 -57
- package/dist/showcase/assets/avatar-DR2mqPpY.js +0 -1
- package/dist/showcase/assets/badge-D1HLfP93.js +0 -28
- package/dist/showcase/assets/badge-check-oP2z_95u.js +0 -1
- package/dist/showcase/assets/bell-BTX2D-ES.js +0 -1
- package/dist/showcase/assets/bot-CKh5XgUG.js +0 -1
- package/dist/showcase/assets/box-F1uaZ6iw.js +0 -1
- package/dist/showcase/assets/brain-dD_ppLUa.js +0 -1
- package/dist/showcase/assets/brand-zisZOFKf.js +0 -40
- package/dist/showcase/assets/breadcrumb-C7vv0L8K.js +0 -52
- package/dist/showcase/assets/breadcrumb-fay5sLba.js +0 -1
- package/dist/showcase/assets/breadcrumbs-DklRXepp.js +0 -1
- package/dist/showcase/assets/briefcase-D9M4aNmi.js +0 -1
- package/dist/showcase/assets/button-DbhXfR1N.js +0 -44
- package/dist/showcase/assets/button-group-BpdhyMif.js +0 -1
- package/dist/showcase/assets/buttons-XexbmUtN.js +0 -259
- package/dist/showcase/assets/calendar-BADJgjpI.js +0 -16
- package/dist/showcase/assets/calendar-Djh3xLVx.js +0 -1
- package/dist/showcase/assets/calendar-dWZ2-0gU.js +0 -1
- package/dist/showcase/assets/card-BUSAPPkx.js +0 -1
- package/dist/showcase/assets/cards-DHBPe01w.js +0 -328
- package/dist/showcase/assets/chart-column-6l5wIZ0h.js +0 -1
- package/dist/showcase/assets/chevron-down-at2vrt1V.js +0 -1
- package/dist/showcase/assets/chevron-left-DIs3WYNO.js +0 -1
- package/dist/showcase/assets/chevron-right-BNy0Or0x.js +0 -1
- package/dist/showcase/assets/chevron-up-CX7619BJ.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-Be6eciau.js +0 -1
- package/dist/showcase/assets/circle-C0Yd1DDS.js +0 -1
- package/dist/showcase/assets/circle-alert-DfQp_X3_.js +0 -1
- package/dist/showcase/assets/circle-check-BkqQe1tv.js +0 -1
- package/dist/showcase/assets/circle-check-big-BXxHUhuc.js +0 -1
- package/dist/showcase/assets/circle-dot-HeRgxZxN.js +0 -1
- package/dist/showcase/assets/circle-question-mark-BgS4fb6N.js +0 -1
- package/dist/showcase/assets/circle-x-CMzwDsaf.js +0 -1
- package/dist/showcase/assets/clock-ynCzs_rR.js +0 -1
- package/dist/showcase/assets/code-xml-B8aVstrJ.js +0 -1
- package/dist/showcase/assets/collapsible-C8CKdiRn.js +0 -27
- package/dist/showcase/assets/collapsible-u43HxDHB.js +0 -1
- package/dist/showcase/assets/combobox-D-6ff0VG.js +0 -622
- package/dist/showcase/assets/command-BsHudlBe.js +0 -1
- package/dist/showcase/assets/command-DZqmBolX.js +0 -45
- package/dist/showcase/assets/comment-composer-OnxlkC5y.js +0 -1
- package/dist/showcase/assets/comment-item-DmZ1AJ2Y.js +0 -1
- package/dist/showcase/assets/comments-BjIVksjE.js +0 -349
- package/dist/showcase/assets/commerce-3T1GxvrA.js +0 -78
- package/dist/showcase/assets/commerce-extras-CYv_uRQR.js +0 -179
- package/dist/showcase/assets/composite-mol0-2zZ.js +0 -1
- package/dist/showcase/assets/contact-card-CWAANJqn.js +0 -65
- package/dist/showcase/assets/content-container-D3Phw6h8.js +0 -1
- package/dist/showcase/assets/copyable-BdzUH3U3.js +0 -96
- package/dist/showcase/assets/course-card-Cb6Y2vJ6.js +0 -113
- package/dist/showcase/assets/cpu-CRrekbGQ.js +0 -1
- package/dist/showcase/assets/credit-card--5vg7bQy.js +0 -1
- package/dist/showcase/assets/currency-VuqnKj_Y.js +0 -149
- package/dist/showcase/assets/dark-surfaces-DEyBimFz.js +0 -90
- package/dist/showcase/assets/database-Bnvw0wVV.js +0 -1
- package/dist/showcase/assets/date-block-IhoCVl_d.js +0 -1
- package/dist/showcase/assets/date-picker-DnJpsnaF.js +0 -1
- package/dist/showcase/assets/date-pickers-CEbieq-R.js +0 -110
- package/dist/showcase/assets/dense-info-B04QmrOd.js +0 -106
- package/dist/showcase/assets/dialog-DotEO3IO.js +0 -1
- package/dist/showcase/assets/display-hK7Dtm-B.js +0 -392
- package/dist/showcase/assets/dist-DQgGKvzA.js +0 -1
- package/dist/showcase/assets/dollar-sign-gJtl-XaL.js +0 -1
- package/dist/showcase/assets/download-CMrNgeil.js +0 -1
- package/dist/showcase/assets/dropdown-menu-Cqv6D7Sb.js +0 -1
- package/dist/showcase/assets/dropzone-v69fWHZJ.js +0 -1
- package/dist/showcase/assets/ellipsis-CgqPlt6Z.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-CiJqC0n2.js +0 -1
- package/dist/showcase/assets/empty-DYHzk-Gb.js +0 -1
- package/dist/showcase/assets/empty-item-CTwvC_3M.js +0 -49
- package/dist/showcase/assets/empty-state-eUgJ4h41.js +0 -188
- package/dist/showcase/assets/enhanced-activities-XU2u5gO6.js +0 -359
- package/dist/showcase/assets/esm-B7xAMXnv.js +0 -2
- package/dist/showcase/assets/event-calendar-D2rjpzq1.js +0 -138
- package/dist/showcase/assets/event-log-BxER62Ds.js +0 -326
- package/dist/showcase/assets/example-DPfw-R7_.js +0 -1
- package/dist/showcase/assets/external-link-DJNGkjZ0.js +0 -1
- package/dist/showcase/assets/eye-BQU3UqWi.js +0 -1
- package/dist/showcase/assets/feature-announcement-CjGQEODB.js +0 -34
- package/dist/showcase/assets/file-DBpbC8g-.js +0 -1
- package/dist/showcase/assets/file-text-DokBif5V.js +0 -1
- package/dist/showcase/assets/filters-DM2olMKy.js +0 -78
- package/dist/showcase/assets/flag-hAuZbHU1.js +0 -1
- package/dist/showcase/assets/folder-open-DqubQ0ts.js +0 -1
- package/dist/showcase/assets/form-sizing-CfbZF8Ja.js +0 -1
- package/dist/showcase/assets/format-gCABLair.js +0 -1
- package/dist/showcase/assets/forms-FsAT0C-I.js +0 -790
- package/dist/showcase/assets/generic-BUuo7j09.js +0 -1
- package/dist/showcase/assets/getPseudoElementBounds-l8uxcPNL.js +0 -1
- package/dist/showcase/assets/gift-CS7Tg3kD.js +0 -1
- package/dist/showcase/assets/giftcard-cards-h1ffLs9F.js +0 -85
- package/dist/showcase/assets/git-branch-D4-6vv6t.js +0 -1
- package/dist/showcase/assets/global-search-BUyhhsQv.js +0 -90
- package/dist/showcase/assets/globe-CqLYhUfl.js +0 -1
- package/dist/showcase/assets/gradient-card-Bwr9OLIL.js +0 -58
- package/dist/showcase/assets/header-notifications-BWla1yhM.js +0 -1
- package/dist/showcase/assets/heart-DfZtXfIP.js +0 -1
- package/dist/showcase/assets/house-DhIReDt8.js +0 -1
- package/dist/showcase/assets/icon-badge-BgRFYZEc.js +0 -1
- package/dist/showcase/assets/image-D_eNEZWQ.js +0 -1
- package/dist/showcase/assets/inbox-5sFkO7gC.js +0 -1
- package/dist/showcase/assets/index-B-Z7p0So.js +0 -10
- package/dist/showcase/assets/inertValue-NU_Amr-x.js +0 -1
- package/dist/showcase/assets/info-DyB6KH3Z.js +0 -1
- package/dist/showcase/assets/inline-stat-D2aaM1Vt.js +0 -1
- package/dist/showcase/assets/input-BS64kyoq.js +0 -1
- package/dist/showcase/assets/input-DWLyniGt.js +0 -1
- package/dist/showcase/assets/input-group-BS8j5Eek.js +0 -47
- package/dist/showcase/assets/input-group-B_E_3EGS.js +0 -1
- package/dist/showcase/assets/inputs-DOQ2foig.js +0 -49
- package/dist/showcase/assets/invoice-header-C2-uQE_s.js +0 -36
- package/dist/showcase/assets/invoice-items-BUunRJqA.js +0 -36
- package/dist/showcase/assets/invoice-mini-BrLMrzN6.js +0 -14
- package/dist/showcase/assets/invoice-table-CaB9Z8jI.js +0 -30
- package/dist/showcase/assets/isSameDay-rwvIyLOL.js +0 -1
- package/dist/showcase/assets/isToday-CIAzBrb5.js +0 -1
- package/dist/showcase/assets/italic-B02a4PdD.js +0 -1
- package/dist/showcase/assets/item-C-0RObvI.js +0 -117
- package/dist/showcase/assets/item-CCu0Ufaq.js +0 -1
- package/dist/showcase/assets/item-DF4m_56j.js +0 -1
- package/dist/showcase/assets/kanban-BgW23a7P.js +0 -175
- package/dist/showcase/assets/label-MdV7pglj.js +0 -1
- package/dist/showcase/assets/layout-containers-nKVReEJB.js +0 -96
- package/dist/showcase/assets/layout-header-CKyxHHPC.js +0 -170
- package/dist/showcase/assets/layout-page-ClD2yMnK.js +0 -122
- package/dist/showcase/assets/layout-sidebar-jdQnYDiT.js +0 -224
- package/dist/showcase/assets/layout-users-Cv849xnU.js +0 -104
- package/dist/showcase/assets/lib-BHW4JERQ.js +0 -1
- package/dist/showcase/assets/lock-B8bfl9sZ.js +0 -1
- package/dist/showcase/assets/mail-DmOBTX4I.js +0 -1
- package/dist/showcase/assets/map-ButgRl8f.js +0 -124
- package/dist/showcase/assets/map-pin-o3egisLq.js +0 -1
- package/dist/showcase/assets/menus-DdXgYKVA.js +0 -89
- package/dist/showcase/assets/message-square-Bl6P4TA0.js +0 -1
- package/dist/showcase/assets/metadata-list-aXo96h_U.js +0 -278
- package/dist/showcase/assets/metric-BLHKuZtE.js +0 -1
- package/dist/showcase/assets/metric-grid-6Dpj5eV3.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-m389ipmG.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-B-1IUlHf.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-B8tvK_RB.js +0 -77
- package/dist/showcase/assets/metrics-comparison-DKJ7Js3F.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-BlRnJoI0.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-COI7f64X.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-LRfmKhsy.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-DmqIQVVR.js +0 -42
- package/dist/showcase/assets/metrics-overview-Dbf5RM2k.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-D5oevQvv.js +0 -54
- package/dist/showcase/assets/minus-D-jmUi0G.js +0 -1
- package/dist/showcase/assets/money-display-C__61373.js +0 -1
- package/dist/showcase/assets/month-year-picker-BfBQePUY.js +0 -1
- package/dist/showcase/assets/navigation-DUAe-sQV.js +0 -86
- package/dist/showcase/assets/navigation-extras-itSAf6QT.js +0 -43
- package/dist/showcase/assets/navigation-fAOvwIlP.js +0 -230
- package/dist/showcase/assets/onboarding-checklist-1gmzk3_J.js +0 -119
- package/dist/showcase/assets/overlays-BMTBOIEI.js +0 -88
- package/dist/showcase/assets/overlays-Lu16yJWM.js +0 -393
- package/dist/showcase/assets/package-BIa1hPVQ.js +0 -1
- package/dist/showcase/assets/page-action-button-C5NiQHnP.js +0 -1
- package/dist/showcase/assets/page-header-Cwf9DuhD.js +0 -1
- package/dist/showcase/assets/pagination-9iSNmdCx.js +0 -1
- package/dist/showcase/assets/pagination-MjniF-7j.js +0 -42
- package/dist/showcase/assets/paperclip-CaNLUOIA.js +0 -1
- package/dist/showcase/assets/pencil-DTLGPoc_.js +0 -1
- package/dist/showcase/assets/phone-XvU6LndA.js +0 -1
- package/dist/showcase/assets/plus-BDSCn8ol.js +0 -1
- package/dist/showcase/assets/popover-CvhuubS6.js +0 -1
- package/dist/showcase/assets/popover-DUQqLZN2.js +0 -1
- package/dist/showcase/assets/popover-menu-DVGBuFpL.js +0 -1
- package/dist/showcase/assets/progress-BQopCRpV.js +0 -1
- package/dist/showcase/assets/progress-CvSUR260.js +0 -18
- package/dist/showcase/assets/props-table-BzUnIcv-.js +0 -1
- package/dist/showcase/assets/quote-D55lkoXn.js +0 -1
- package/dist/showcase/assets/receipt-D3ilhl9U.js +0 -1
- package/dist/showcase/assets/refresh-cw-Csl2LQ4l.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-CM5i142y.js +0 -1
- package/dist/showcase/assets/rich-text-editor-Bz7jWvPv.js +0 -124
- package/dist/showcase/assets/rich-text-editor-DWKFpgNI.js +0 -141
- package/dist/showcase/assets/rotate-ccw-BnkpK7eq.js +0 -1
- package/dist/showcase/assets/scroll-area-BTVLd58j.js +0 -1
- package/dist/showcase/assets/scroll-area-CgFEDepJ.js +0 -32
- package/dist/showcase/assets/select-B7-tZDlG.js +0 -1
- package/dist/showcase/assets/send-BhjEdZ06.js +0 -1
- package/dist/showcase/assets/separator-CJayjKGP.js +0 -28
- package/dist/showcase/assets/separator-CZ_sPWQj.js +0 -1
- package/dist/showcase/assets/settings-Duj7gAZe.js +0 -1
- package/dist/showcase/assets/sheet-BMabZ_Gj.js +0 -1
- package/dist/showcase/assets/shield-C22sWOf4.js +0 -1
- package/dist/showcase/assets/shield-alert-DgZ6UO46.js +0 -1
- package/dist/showcase/assets/shield-check-jGSgmijm.js +0 -1
- package/dist/showcase/assets/shopping-bag-Cd09Ga6D.js +0 -1
- package/dist/showcase/assets/sidebar.context-CXTHS3vn.js +0 -1
- package/dist/showcase/assets/skeleton-Dmp4eC1A.js +0 -1
- package/dist/showcase/assets/skeleton-FLNbc7QP.js +0 -29
- package/dist/showcase/assets/smart-card-50WN9sCI.js +0 -1
- package/dist/showcase/assets/sonner-DR_DYpqb.js +0 -22
- package/dist/showcase/assets/sortable.esm-C_l8_Iqt.js +0 -5
- package/dist/showcase/assets/sparkles-C-fyahzv.js +0 -1
- package/dist/showcase/assets/spinner-B8jgVQNj.js +0 -30
- package/dist/showcase/assets/spinner-C4zPRpI0.js +0 -49
- package/dist/showcase/assets/spinner-DFjHsQlR.js +0 -1
- package/dist/showcase/assets/square-pen-Dp7lCfI3.js +0 -1
- package/dist/showcase/assets/stacked-avatars-CTckbUiW.js +0 -1
- package/dist/showcase/assets/star-l00ivfkD.js +0 -1
- package/dist/showcase/assets/startOfDay-Xmododib.js +0 -1
- package/dist/showcase/assets/styles-zuwR0q1z.js +0 -1
- package/dist/showcase/assets/switch-D3LrIrTQ.js +0 -1
- package/dist/showcase/assets/switch-ylXVyh_N.js +0 -1
- package/dist/showcase/assets/table-Cn3-19zb.js +0 -1
- package/dist/showcase/assets/table-ao3IcAnF.js +0 -390
- package/dist/showcase/assets/tabs-CTLQKtiu.js +0 -19
- package/dist/showcase/assets/tabs-lc1fX94A.js +0 -1
- package/dist/showcase/assets/text-button-Fu8UY1A8.js +0 -1
- package/dist/showcase/assets/text-link--EyGasJN.js +0 -1
- package/dist/showcase/assets/textarea-BdhnlNrF.js +0 -1
- package/dist/showcase/assets/textarea-D1kG3a9B.js +0 -1
- package/dist/showcase/assets/timelines-DF3tNgyG.js +0 -186
- package/dist/showcase/assets/toggle-group-CfxuWsv9.js +0 -1
- package/dist/showcase/assets/toggles-CacdBPlV.js +0 -71
- package/dist/showcase/assets/toggles-group-CRhgTGmL.js +0 -32
- package/dist/showcase/assets/trash-2-B0_GprQM.js +0 -1
- package/dist/showcase/assets/trending-up-B202l1b6.js +0 -1
- package/dist/showcase/assets/truck-Bl1pNrHi.js +0 -1
- package/dist/showcase/assets/typography-DEtOxBlR.js +0 -214
- package/dist/showcase/assets/ui-badge-n4RA0J5b.js +0 -28
- package/dist/showcase/assets/ui-card-Ck-kzrTh.js +0 -30
- package/dist/showcase/assets/ui-table-gzOp82pf.js +0 -42
- package/dist/showcase/assets/upload-tray-VvKdTZSi.js +0 -138
- package/dist/showcase/assets/useAnchoredPopupScrollLock-Cu2ZwN7Z.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-C6_cdQ7B.js +0 -1
- package/dist/showcase/assets/useCompositeItem-BfUPqXoj.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-Cf2lpKB8.js +0 -1
- package/dist/showcase/assets/useControlled-C6q3nmcf.js +0 -1
- package/dist/showcase/assets/useLabelableId-CfPT16c1.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-CGeqRuuY.js +0 -1
- package/dist/showcase/assets/useRender-CoUlh0uZ.js +0 -1
- package/dist/showcase/assets/useRole-DSPUSyVX.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-BwZ1HD24.js +0 -1
- package/dist/showcase/assets/useValueChanged-Dej794I1.js +0 -1
- package/dist/showcase/assets/user-3L762Mec.js +0 -1
- package/dist/showcase/assets/user-plus-9WRYjS04.js +0 -1
- package/dist/showcase/assets/users-CxKZ7gt8.js +0 -1
- package/dist/showcase/assets/vendor-profile-BaCptdMF.js +0 -37
- package/dist/showcase/assets/wrench-Duh91tnW.js +0 -1
- package/dist/showcase/assets/x-t42iKYpL.js +0 -1
- package/dist/showcase/assets/zap-D0z3Tv_L.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"money-display-B5oxCs_0.cjs","names":[],"sources":["../../src/components/base/currency/hooks/use-currency.ts","../../src/components/base/currency/currency-pair-preview.tsx","../../src/components/base/display/money-display.tsx"],"sourcesContent":["/**\n * `useCurrency` — sugar over the `money` slice of `<UIProvider>`.\n *\n * Reads currency display settings from the global `UIConfig.money` store\n * (initialized with `DEFAULT_UI_CONFIG.money`), optionally overridden\n * per-call via `useCurrency({ ... })`. Returns formatting helpers that\n * compose the `Intl` APIs against the resolved settings.\n *\n * To change library-wide defaults: mount `<UIProvider config={{ money: {\n * defaultCurrency: 'EUR', formatMode: 'with_symbol' } }}>` near the root.\n * To change a single call site only: pass `useCurrency({ formatMode: ... })`.\n */\nimport { useMemo } from 'react';\n\nimport { useMoneyConfig } from '@/lib/ui-provider';\nimport type {\n MoneyConfig,\n MoneyDisplayMode,\n MoneyDualLayout,\n MoneyFormatMode,\n} from '@/lib/ui-provider';\n\n/**\n * Local-call override shape. Mirrors `MoneyConfig` keys, all optional.\n * Kept as a separate type so the public surface of `useCurrency` doesn't\n * depend directly on the UIConfig types.\n */\nexport type CurrencyOverrides = Partial<MoneyConfig>;\n\n/**\n * @deprecated Kept as an alias for back-compat. Prefer importing\n * `MoneyConfig` from `@/lib/ui-provider` directly.\n */\nexport type CurrencyConfig = MoneyConfig;\n\n/**\n * @deprecated Use `<UIProvider config={{ money: {...} }}>` instead.\n * This export is retained as a no-op shim during migration.\n */\nexport function CurrencyConfigProvider({\n children,\n}: {\n config?: Partial<MoneyConfig>;\n children: React.ReactNode;\n}): React.ReactElement {\n return children as React.ReactElement;\n}\n\n/** Hook returning resolved currency settings + formatting helpers. */\nexport function useCurrency(overrides?: CurrencyOverrides) {\n const fromStore = useMoneyConfig();\n\n const resolved = useMemo<Required<Pick<MoneyConfig,\n 'defaultCurrency' | 'dualPricingEnabled' | 'displayMode' |\n 'dualPricingDisplay' | 'formatMode'\n >> & { displayCurrency: string; locale?: string }>(() => {\n const merged: MoneyConfig = { ...fromStore, ...overrides };\n const defaultCurrency = merged.defaultCurrency ?? 'USD';\n return {\n defaultCurrency,\n displayCurrency: merged.displayCurrency ?? defaultCurrency,\n locale: merged.locale,\n dualPricingEnabled: merged.dualPricingEnabled ?? false,\n displayMode:\n merged.displayMode ?? ('default_only' as MoneyDisplayMode),\n dualPricingDisplay:\n merged.dualPricingDisplay ?? ('lines' as MoneyDualLayout),\n formatMode: merged.formatMode ?? ('with_code' as MoneyFormatMode),\n };\n }, [fromStore, overrides]);\n\n const {\n defaultCurrency,\n displayCurrency,\n locale,\n dualPricingEnabled,\n displayMode,\n dualPricingDisplay,\n formatMode,\n } = resolved;\n\n const shouldShowDualPricing = () => {\n if (!dualPricingEnabled) return false;\n return displayMode === 'dual';\n };\n\n const formatAmount = (\n value: string | number,\n currency: string,\n symbol?: string,\n ): string => {\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n if (!Number.isFinite(numValue)) {\n return currency ? `${String(value)} ${currency}`.trim() : String(value);\n }\n\n const formattedNumber = new Intl.NumberFormat(locale, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(numValue);\n\n switch (formatMode) {\n case 'decimal':\n return formattedNumber;\n case 'with_code':\n return currency ? `${formattedNumber} ${currency}` : formattedNumber;\n case 'with_symbol':\n return symbol\n ? `${symbol}${formattedNumber}`\n : currency\n ? `${formattedNumber} ${currency}`\n : formattedNumber;\n case 'locale_aware':\n if (!currency) return formattedNumber;\n try {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n }).format(numValue);\n } catch {\n return `${formattedNumber} ${currency}`;\n }\n default:\n return currency ? `${formattedNumber} ${currency}` : formattedNumber;\n }\n };\n\n const getCurrencySymbol = (currency: string): string => {\n const symbols: Record<string, string> = {\n BGN: 'лв',\n EUR: '€',\n USD: '$',\n GBP: '£',\n JPY: '¥',\n };\n return symbols[currency] ?? currency;\n };\n\n return {\n defaultCurrency,\n displayCurrency,\n dualPricingEnabled,\n displayMode,\n dualPricingDisplay,\n formatMode,\n shouldShowDualPricing,\n formatAmount,\n getCurrencySymbol,\n };\n}\n\n/**\n * @deprecated Use `DEFAULT_UI_CONFIG.money` from `@/lib/ui-provider`.\n * Retained for back-compat during migration.\n */\nexport const defaultCurrencyConfig: MoneyConfig = {\n defaultCurrency: 'USD',\n dualPricingEnabled: false,\n displayMode: 'default_only',\n dualPricingDisplay: 'lines',\n formatMode: 'with_code',\n};\n\nexport default useCurrency;\n","/**\n * CurrencyPairPreview — inline rendering of a `source → target` currency\n * pair using `useCurrency().formatAmount` for each side. Shows the shared\n * EMPTY placeholder when either leg is missing. Provide a custom `separator`\n * (default `→`) for direction or styling variations.\n */\nimport { ArrowRight } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useCurrency } from '@/components/base/currency/hooks';\nimport { EMPTY } from '@/lib/format';\nimport { cn } from '@/lib/utils';\nimport { useTypographyConfig } from '@/lib/ui-provider';\n/**\n * Currency-pair shape rendered by `<CurrencyPairPreview>`.\n *\n * `value` is the numeric amount; `currency` is the ISO 4217 code;\n * `symbol` is an optional pre-resolved symbol the consumer can pass when\n * they don't want the library to look one up.\n */\nexport interface CurrencyPairLeg {\n\tvalue?: number | string | null;\n\tcurrency?: string | null;\n\tsymbol?: string | null;\n}\n\nexport interface CurrencyPairData {\n\tsource?: CurrencyPairLeg | null;\n\ttarget?: CurrencyPairLeg | null;\n}\n\ntype BaseTextProps = ComponentProps<typeof Text>;\n\nconst DEFAULT_SEPARATOR = (\n\t<ArrowRight className=\"size-3 shrink-0 opacity-60\" aria-hidden=\"true\" />\n);\n\nexport interface CurrencyPairPreviewProps extends Omit<BaseTextProps, 'children' | 'content'> {\n\tpair?: CurrencyPairData | null;\n\temptyLabel?: ReactNode;\n\tseparator?: ReactNode;\n}\n\nexport function CurrencyPairPreview({\n\tpair,\n\temptyLabel = EMPTY,\n\tseparator = DEFAULT_SEPARATOR,\n\tclassName,\n\tsize: sizeProp,\n\ttag = 'span',\n\t...props\n}: CurrencyPairPreviewProps) {\n\tconst { defaultTextSize } = useTypographyConfig();\n\tconst size = sizeProp ?? defaultTextSize ?? 'sm';\n\n\tconst { formatAmount } = useCurrency();\n\n\tconst source = pair?.source?.value ?? null;\n\tconst sourceCurrency = pair?.source?.currency ?? null;\n\tconst sourceSymbol = pair?.source?.symbol ?? null;\n\tconst target = pair?.target?.value ?? null;\n\tconst targetCurrency = pair?.target?.currency ?? null;\n\tconst targetSymbol = pair?.target?.symbol ?? null;\n\n\tif (!source || !target) {\n\t\treturn (\n\t\t\t<Text\n\t\t\t\ttag={tag}\n\t\t\t\tsize={size}\n\t\t\t\ttype=\"secondary\"\n\t\t\t\tclassName={cn('currency-pair-preview--component', 'tabular-nums', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\ttag={tag}\n\t\t\tsize={size}\n\t\t\tclassName={cn('inline-flex items-center gap-1.5 tabular-nums', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span>\n\t\t\t\t{formatAmount(source, String(sourceCurrency ?? ''), sourceSymbol ?? undefined)}\n\t\t\t</span>\n\t\t\t<span className=\"inline-flex items-center text-muted-foreground\" aria-hidden=\"true\">\n\t\t\t\t{separator}\n\t\t\t</span>\n\t\t\t<span>\n\t\t\t\t{formatAmount(target, String(targetCurrency ?? ''), targetSymbol ?? undefined)}\n\t\t\t</span>\n\t\t</Text>\n\t);\n}\n\nCurrencyPairPreview.displayName = 'CurrencyPairPreview';\n","/**\n * MoneyDisplay — primary + (optional) secondary currency amount renderer.\n *\n * Resolves a money value from any of `money` / `moneyPair` / `amount` / `pair`\n * (in priority order) and formats via the active `useCurrency` config. When\n * dual pricing is enabled (provider or per-instance `showPair`), the\n * converted secondary value renders either stacked\n * (`dualPricingDisplay=\"lines\"`, default) or inline. Numbers always use the\n * active locale's thousands separator and tabular-nums for stable column\n * alignment.\n *\n * Re-exported from `@/components/base/currency/money-display` to keep\n * currency-namespaced imports grouped.\n */\nimport type { ComponentProps, ReactNode } from 'react';\nimport { Text } from '@/components/typography';\nimport { useCurrency } from '@/components/base/currency/hooks';\nimport { EMPTY } from '@/lib/format';\nimport { cn } from '@/lib/utils';\nimport { useTypographyConfig } from '@/lib/ui-provider';\n\n/**\n * Flexible input shapes accepted by `<MoneyDisplay>`. The component reads\n * defensively (numeric or string `value`/`amount`) and treats `currency` as\n * a free-form ISO 4217 string. Consumers map their domain money/currency\n * types into these at the call site.\n */\nexport interface CurrencyAmountData {\n value?: number | string | null;\n currency?: string | null;\n symbol?: string | null;\n}\n\nexport interface MoneyValueData {\n amount?: number | string | null;\n currency?: string | null;\n}\n\nexport interface MoneyData extends MoneyValueData {\n /** Optional secondary leg used when dual-pricing is enabled. */\n pair?: MoneyValueData | null;\n}\n\nexport interface MoneyPairData {\n primary?: MoneyData | null;\n secondary?: MoneyData | null;\n}\n\nexport interface CurrencyPairData {\n source?: CurrencyAmountData | null;\n target?: CurrencyAmountData | null;\n}\n\ntype BaseTextProps = ComponentProps<typeof Text>;\n\nexport type MoneyDisplayVariant = 'default' | 'minimal' | 'stacked';\nexport type MoneyDisplaySecondaryEmphasis = 'discrete' | 'muted' | 'match' | 'hidden';\n\nexport interface MoneyDisplayProps extends Omit<BaseTextProps, 'children' | 'content'> {\n\tmoney?: MoneyData | null;\n\tmoneyPair?: MoneyPairData | null;\n\tamount?: CurrencyAmountData | null;\n\tpair?: CurrencyPairData | null;\n\tshowPair?: boolean;\n\tdualPricingDisplay?: 'inline' | 'lines';\n\talignment?: 'left' | 'center' | 'right';\n\temptyLabel?: ReactNode;\n\t/**\n\t * Visual variant. `default`/`stacked` show secondary on a line below;\n\t * `minimal` always renders just the primary value (single token, no\n\t * secondary, no separator) — use it for dense rows or chips.\n\t */\n\tvariant?: MoneyDisplayVariant;\n\t/**\n\t * Tunes the prominence of the secondary value when it renders.\n\t * `discrete` (default for stacked) — `xxs` discrete tone, easy to scan past.\n\t * `muted` — `xs` secondary tone (legacy behaviour).\n\t * `match` — same size as primary, regular weight.\n\t * `hidden` — never render the secondary even if a pair is provided.\n\t */\n\tsecondaryEmphasis?: MoneyDisplaySecondaryEmphasis;\n}\n\ntype ResolvedAmount = {\n\tvalue: number;\n\tcurrency: string | null;\n\tsymbol: string | null;\n};\n\nconst toNumber = (raw: string | number | undefined | null): number | null => {\n\tif (raw === null || raw === undefined) return null;\n\tconst n = typeof raw === 'number' ? raw : Number.parseFloat(String(raw).trim());\n\treturn Number.isFinite(n) ? n : null;\n};\n\nconst resolveCurrencyAmount = (amount?: CurrencyAmountData | null): ResolvedAmount | null => {\n\tconst n = toNumber(amount?.value);\n\tif (n === null) return null;\n\treturn {\n\t\tvalue: n,\n\t\tcurrency: amount?.currency ? String(amount.currency) : null,\n\t\tsymbol: amount?.symbol ? String(amount.symbol) : null,\n\t};\n};\n\nconst resolveMoney = (money?: MoneyData | null): ResolvedAmount | null => {\n\tconst n = toNumber(money?.amount);\n\tif (n === null) return null;\n\treturn {\n\t\tvalue: n,\n\t\tcurrency: money?.currency ? String(money.currency) : null,\n\t\tsymbol: null,\n\t};\n};\n\nconst resolveMoneyValue = (value?: MoneyValueData | null): ResolvedAmount | null => {\n\tconst n = toNumber(value?.amount);\n\tif (n === null) return null;\n\treturn {\n\t\tvalue: n,\n\t\tcurrency: value?.currency ? String(value.currency) : null,\n\t\tsymbol: null,\n\t};\n};\n\nexport function MoneyDisplay({\n\tmoney,\n\tmoneyPair,\n\tamount,\n\tpair,\n\tshowPair = false,\n\tdualPricingDisplay,\n\talignment,\n\temptyLabel = EMPTY,\n\tvariant = 'default',\n\tsecondaryEmphasis = 'discrete',\n\tclassName,\n\t// Defaults tuned for admin density: `sm` + `medium` reads as a normal\n\t// number in context, not a hero figure. Pass `size=\"base\"` /\n\t// `weight=\"semibold\"` for emphasis (totals, KPI tiles).\n\tsize: sizeProp,\n\talign = 'right',\n\tweight = 'medium',\n\ttag = 'span',\n\t...props\n}: MoneyDisplayProps) {\n\tconst { defaultTextSize } = useTypographyConfig();\n\tconst size = sizeProp ?? defaultTextSize ?? 'sm';\n\n\tconst {\n\t\tdisplayCurrency,\n\t\tdualPricingDisplay: globalDualPricingDisplay,\n\t\tshouldShowDualPricing,\n\t\tformatAmount,\n\t\tgetCurrencySymbol,\n\t} = useCurrency();\n\n\tconst resolvedDualPricingDisplay = dualPricingDisplay ?? globalDualPricingDisplay ?? 'lines';\n\n\tconst primaryFromMoneyPair =\n\t\t(shouldShowDualPricing() || showPair) && moneyPair?.primary\n\t\t\t? resolveMoney(moneyPair.primary)\n\t\t\t: null;\n\tconst primaryFromMoney = resolveMoney(money);\n\tconst primaryFromAmount = resolveCurrencyAmount(amount);\n\n\tconst primary = primaryFromMoneyPair ?? primaryFromMoney ?? primaryFromAmount ?? null;\n\tconst primaryCurrency = primary?.currency ?? displayCurrency ?? null;\n\n\tconst shouldRenderPair =\n\t\t(showPair || shouldShowDualPricing()) &&\n\t\tBoolean(moneyPair ?? pair ?? money?.pair);\n\n\tconst resolveSecondary = (): ResolvedAmount | null => {\n\t\tif (!shouldRenderPair) return null;\n\n\t\tif (moneyPair?.primary && moneyPair?.secondary) {\n\t\t\treturn resolveMoney(moneyPair.secondary);\n\t\t}\n\n\t\tif (money?.pair) {\n\t\t\treturn resolveMoneyValue(money.pair);\n\t\t}\n\n\t\tif (pair?.source || pair?.target) {\n\t\t\tconst source = resolveCurrencyAmount(pair?.source ?? null);\n\t\t\tconst target = resolveCurrencyAmount(pair?.target ?? null);\n\n\t\t\tif (!source && !target) return null;\n\n\t\t\tconst sourceCurrency = source?.currency ?? null;\n\t\t\tconst targetCurrency = target?.currency ?? null;\n\n\t\t\tif (primaryCurrency && targetCurrency === primaryCurrency) return source;\n\t\t\tif (primaryCurrency && sourceCurrency === primaryCurrency) return target;\n\t\t\tif (displayCurrency && targetCurrency === displayCurrency) return source;\n\t\t\tif (displayCurrency && sourceCurrency === displayCurrency) return target;\n\t\t\treturn target ?? source;\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconst secondary =\n\t\tvariant === 'minimal' || secondaryEmphasis === 'hidden'\n\t\t\t? null\n\t\t\t: resolveSecondary();\n\n\tconst resolvedAlign = alignment ?? align;\n\tconst alignmentClass =\n\t\tresolvedAlign === 'left'\n\t\t\t? 'text-left'\n\t\t\t: resolvedAlign === 'center'\n\t\t\t\t? 'text-center'\n\t\t\t\t: 'text-right';\n\tconst justifyClass =\n\t\tresolvedAlign === 'left'\n\t\t\t? 'justify-start'\n\t\t\t: resolvedAlign === 'center'\n\t\t\t\t? 'justify-center'\n\t\t\t\t: 'justify-end';\n\n\tif (!primary) {\n\t\treturn (\n\t\t\t<Text\n\t\t\t\ttag={tag}\n\t\t\t\tsize={size}\n\t\t\t\ttype=\"secondary\"\n\t\t\t\talign={resolvedAlign}\n\t\t\t\tclassName={cn('money-display--component', \n\t\t\t\t\t'money--display inline-flex flex-col tabular-nums',\n\t\t\t\t\talignmentClass,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tconst primaryLabel = formatAmount(\n\t\tprimary.value,\n\t\tprimaryCurrency ?? '',\n\t\tprimary.symbol ?? (primaryCurrency ? getCurrencySymbol(primaryCurrency) : undefined),\n\t);\n\tconst secondaryLabel = secondary\n\t\t? formatAmount(\n\t\t\t\tsecondary.value,\n\t\t\t\tsecondary.currency ?? '',\n\t\t\t\tsecondary.symbol ?? (secondary.currency ? getCurrencySymbol(secondary.currency) : undefined),\n\t\t\t)\n\t\t: null;\n\n\tconst secondarySize: BaseTextProps['size'] =\n\t\tsecondaryEmphasis === 'match' ? size\n\t\t\t: secondaryEmphasis === 'muted' ? 'xs'\n\t\t\t\t: 'xxs';\n\tconst secondaryType: BaseTextProps['type'] =\n\t\tsecondaryEmphasis === 'match' ? undefined\n\t\t\t: secondaryEmphasis === 'muted' ? 'secondary'\n\t\t\t\t: 'discrete';\n\n\tif (resolvedDualPricingDisplay === 'inline' && secondaryLabel) {\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'money--display inline-flex items-baseline gap-1.5 tabular-nums whitespace-nowrap',\n\t\t\t\t\tjustifyClass,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...(props as React.HTMLAttributes<HTMLSpanElement>)}\n\t\t\t>\n\t\t\t\t<Text tag=\"span\" size={size} weight={weight}>\n\t\t\t\t\t{primaryLabel}\n\t\t\t\t</Text>\n\t\t\t\t<Text tag=\"span\" size=\"xxs\" type=\"discrete\" aria-hidden=\"true\">\n\t\t\t\t\t·\n\t\t\t\t</Text>\n\t\t\t\t<Text tag=\"span\" size={secondarySize} type={secondaryType} weight=\"regular\">\n\t\t\t\t\t{secondaryLabel}\n\t\t\t\t</Text>\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\ttag={tag}\n\t\t\tsize={size}\n\t\t\talign={resolvedAlign}\n\t\t\tclassName={cn(\n\t\t\t\t'money--display inline-flex flex-col tabular-nums leading-tight',\n\t\t\t\talignmentClass,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Text tag=\"span\" size={size} weight={weight}>\n\t\t\t\t{primaryLabel}\n\t\t\t</Text>\n\t\t\t{!!secondaryLabel && (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize={secondarySize}\n\t\t\t\t\talign={resolvedAlign}\n\t\t\t\t\ttype={secondaryType}\n\t\t\t\t\tclassName=\"block whitespace-nowrap font-normal leading-tight\"\n\t\t\t\t>\n\t\t\t\t\t{secondaryLabel}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Text>\n\t);\n}\n\nMoneyDisplay.displayName = 'MoneyDisplay';\n"],"mappings":"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"}
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { m as e, u as t } from "./ui-provider-4qKSKMPd.js";
|
|
2
|
-
import { cn as n } from "../lib/utils.js";
|
|
3
|
-
import { t as r } from "./text-DIxMTECE.js";
|
|
4
|
-
import { useMemo as i } from "react";
|
|
5
|
-
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
6
|
-
import { ArrowRight as s } from "lucide-react";
|
|
7
|
-
//#region src/components/base/currency/hooks/use-currency.ts
|
|
8
|
-
function c(e) {
|
|
9
|
-
let n = t(), { defaultCurrency: r, displayCurrency: a, locale: o, dualPricingEnabled: s, displayMode: c, dualPricingDisplay: l, formatMode: u } = i(() => {
|
|
10
|
-
let t = {
|
|
11
|
-
...n,
|
|
12
|
-
...e
|
|
13
|
-
}, r = t.defaultCurrency ?? "USD";
|
|
14
|
-
return {
|
|
15
|
-
defaultCurrency: r,
|
|
16
|
-
displayCurrency: t.displayCurrency ?? r,
|
|
17
|
-
locale: t.locale,
|
|
18
|
-
dualPricingEnabled: t.dualPricingEnabled ?? !1,
|
|
19
|
-
displayMode: t.displayMode ?? "default_only",
|
|
20
|
-
dualPricingDisplay: t.dualPricingDisplay ?? "lines",
|
|
21
|
-
formatMode: t.formatMode ?? "with_code"
|
|
22
|
-
};
|
|
23
|
-
}, [n, e]);
|
|
24
|
-
return {
|
|
25
|
-
defaultCurrency: r,
|
|
26
|
-
displayCurrency: a,
|
|
27
|
-
dualPricingEnabled: s,
|
|
28
|
-
displayMode: c,
|
|
29
|
-
dualPricingDisplay: l,
|
|
30
|
-
formatMode: u,
|
|
31
|
-
shouldShowDualPricing: () => s ? c === "dual" : !1,
|
|
32
|
-
formatAmount: (e, t, n) => {
|
|
33
|
-
let r = typeof e == "string" ? parseFloat(e) : e;
|
|
34
|
-
if (!Number.isFinite(r)) return t ? `${String(e)} ${t}`.trim() : String(e);
|
|
35
|
-
let i = new Intl.NumberFormat(o, {
|
|
36
|
-
minimumFractionDigits: 2,
|
|
37
|
-
maximumFractionDigits: 2
|
|
38
|
-
}).format(r);
|
|
39
|
-
switch (u) {
|
|
40
|
-
case "decimal": return i;
|
|
41
|
-
case "with_code": return t ? `${i} ${t}` : i;
|
|
42
|
-
case "with_symbol": return n ? `${n}${i}` : t ? `${i} ${t}` : i;
|
|
43
|
-
case "locale_aware":
|
|
44
|
-
if (!t) return i;
|
|
45
|
-
try {
|
|
46
|
-
return new Intl.NumberFormat(o, {
|
|
47
|
-
style: "currency",
|
|
48
|
-
currency: t
|
|
49
|
-
}).format(r);
|
|
50
|
-
} catch {
|
|
51
|
-
return `${i} ${t}`;
|
|
52
|
-
}
|
|
53
|
-
default: return t ? `${i} ${t}` : i;
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
getCurrencySymbol: (e) => ({
|
|
57
|
-
BGN: "лв",
|
|
58
|
-
EUR: "€",
|
|
59
|
-
USD: "$",
|
|
60
|
-
GBP: "£",
|
|
61
|
-
JPY: "¥"
|
|
62
|
-
})[e] ?? e
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
//#endregion
|
|
66
|
-
//#region src/components/base/currency/currency-pair-preview.tsx
|
|
67
|
-
var l = /* @__PURE__ */ a(s, {
|
|
68
|
-
className: "size-3 shrink-0 opacity-60",
|
|
69
|
-
"aria-hidden": "true"
|
|
70
|
-
});
|
|
71
|
-
function u({ pair: t, emptyLabel: i = "—", separator: s = l, className: u, size: d, tag: f = "span", ...p }) {
|
|
72
|
-
let { defaultTextSize: m } = e(), h = d ?? m ?? "sm", { formatAmount: g } = c(), _ = t?.source?.value ?? null, v = t?.source?.currency ?? null, y = t?.source?.symbol ?? null, b = t?.target?.value ?? null, x = t?.target?.currency ?? null, S = t?.target?.symbol ?? null;
|
|
73
|
-
return !_ || !b ? /* @__PURE__ */ a(r, {
|
|
74
|
-
tag: f,
|
|
75
|
-
size: h,
|
|
76
|
-
type: "secondary",
|
|
77
|
-
className: n("currency-pair-preview--component", "tabular-nums", u),
|
|
78
|
-
...p,
|
|
79
|
-
children: i
|
|
80
|
-
}) : /* @__PURE__ */ o(r, {
|
|
81
|
-
tag: f,
|
|
82
|
-
size: h,
|
|
83
|
-
className: n("inline-flex items-center gap-1.5 tabular-nums", u),
|
|
84
|
-
...p,
|
|
85
|
-
children: [
|
|
86
|
-
/* @__PURE__ */ a("span", { children: g(_, String(v ?? ""), y ?? void 0) }),
|
|
87
|
-
/* @__PURE__ */ a("span", {
|
|
88
|
-
className: "inline-flex items-center text-muted-foreground",
|
|
89
|
-
"aria-hidden": "true",
|
|
90
|
-
children: s
|
|
91
|
-
}),
|
|
92
|
-
/* @__PURE__ */ a("span", { children: g(b, String(x ?? ""), S ?? void 0) })
|
|
93
|
-
]
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
u.displayName = "CurrencyPairPreview";
|
|
97
|
-
//#endregion
|
|
98
|
-
//#region src/components/base/display/money-display.tsx
|
|
99
|
-
var d = (e) => {
|
|
100
|
-
if (e == null) return null;
|
|
101
|
-
let t = typeof e == "number" ? e : Number.parseFloat(String(e).trim());
|
|
102
|
-
return Number.isFinite(t) ? t : null;
|
|
103
|
-
}, f = (e) => {
|
|
104
|
-
let t = d(e?.value);
|
|
105
|
-
return t === null ? null : {
|
|
106
|
-
value: t,
|
|
107
|
-
currency: e?.currency ? String(e.currency) : null,
|
|
108
|
-
symbol: e?.symbol ? String(e.symbol) : null
|
|
109
|
-
};
|
|
110
|
-
}, p = (e) => {
|
|
111
|
-
let t = d(e?.amount);
|
|
112
|
-
return t === null ? null : {
|
|
113
|
-
value: t,
|
|
114
|
-
currency: e?.currency ? String(e.currency) : null,
|
|
115
|
-
symbol: null
|
|
116
|
-
};
|
|
117
|
-
}, m = (e) => {
|
|
118
|
-
let t = d(e?.amount);
|
|
119
|
-
return t === null ? null : {
|
|
120
|
-
value: t,
|
|
121
|
-
currency: e?.currency ? String(e.currency) : null,
|
|
122
|
-
symbol: null
|
|
123
|
-
};
|
|
124
|
-
};
|
|
125
|
-
function h({ money: t, moneyPair: i, amount: s, pair: l, showPair: u = !1, dualPricingDisplay: d, alignment: h, emptyLabel: g = "—", variant: _ = "default", secondaryEmphasis: v = "discrete", className: y, size: b, align: x = "right", weight: S = "medium", tag: C = "span", ...w }) {
|
|
126
|
-
let { defaultTextSize: T } = e(), E = b ?? T ?? "sm", { displayCurrency: D, dualPricingDisplay: O, shouldShowDualPricing: k, formatAmount: A, getCurrencySymbol: j } = c(), M = d ?? O ?? "lines", N = (k() || u) && i?.primary ? p(i.primary) : null, P = p(t), F = f(s), I = N ?? P ?? F ?? null, L = I?.currency ?? D ?? null, R = (u || k()) && !!(i ?? l ?? t?.pair), z = _ === "minimal" || v === "hidden" ? null : (() => {
|
|
127
|
-
if (!R) return null;
|
|
128
|
-
if (i?.primary && i?.secondary) return p(i.secondary);
|
|
129
|
-
if (t?.pair) return m(t.pair);
|
|
130
|
-
if (l?.source || l?.target) {
|
|
131
|
-
let e = f(l?.source ?? null), t = f(l?.target ?? null);
|
|
132
|
-
if (!e && !t) return null;
|
|
133
|
-
let n = e?.currency ?? null, r = t?.currency ?? null;
|
|
134
|
-
return L && r === L ? e : L && n === L ? t : D && r === D ? e : D && n === D ? t : t ?? e;
|
|
135
|
-
}
|
|
136
|
-
return null;
|
|
137
|
-
})(), B = h ?? x, V = B === "left" ? "text-left" : B === "center" ? "text-center" : "text-right", H = B === "left" ? "justify-start" : B === "center" ? "justify-center" : "justify-end";
|
|
138
|
-
if (!I) return /* @__PURE__ */ a(r, {
|
|
139
|
-
tag: C,
|
|
140
|
-
size: E,
|
|
141
|
-
type: "secondary",
|
|
142
|
-
align: B,
|
|
143
|
-
className: n("money-display--component", "money--display inline-flex flex-col tabular-nums", V, y),
|
|
144
|
-
...w,
|
|
145
|
-
children: g
|
|
146
|
-
});
|
|
147
|
-
let U = A(I.value, L ?? "", I.symbol ?? (L ? j(L) : void 0)), W = z ? A(z.value, z.currency ?? "", z.symbol ?? (z.currency ? j(z.currency) : void 0)) : null, G = v === "match" ? E : v === "muted" ? "xs" : "xxs", K = v === "match" ? void 0 : v === "muted" ? "secondary" : "discrete";
|
|
148
|
-
return M === "inline" && W ? /* @__PURE__ */ o("span", {
|
|
149
|
-
className: n("money--display inline-flex items-baseline gap-1.5 tabular-nums whitespace-nowrap", H, y),
|
|
150
|
-
...w,
|
|
151
|
-
children: [
|
|
152
|
-
/* @__PURE__ */ a(r, {
|
|
153
|
-
tag: "span",
|
|
154
|
-
size: E,
|
|
155
|
-
weight: S,
|
|
156
|
-
children: U
|
|
157
|
-
}),
|
|
158
|
-
/* @__PURE__ */ a(r, {
|
|
159
|
-
tag: "span",
|
|
160
|
-
size: "xxs",
|
|
161
|
-
type: "discrete",
|
|
162
|
-
"aria-hidden": "true",
|
|
163
|
-
children: "·"
|
|
164
|
-
}),
|
|
165
|
-
/* @__PURE__ */ a(r, {
|
|
166
|
-
tag: "span",
|
|
167
|
-
size: G,
|
|
168
|
-
type: K,
|
|
169
|
-
weight: "regular",
|
|
170
|
-
children: W
|
|
171
|
-
})
|
|
172
|
-
]
|
|
173
|
-
}) : /* @__PURE__ */ o(r, {
|
|
174
|
-
tag: C,
|
|
175
|
-
size: E,
|
|
176
|
-
align: B,
|
|
177
|
-
className: n("money--display inline-flex flex-col tabular-nums leading-tight", V, y),
|
|
178
|
-
...w,
|
|
179
|
-
children: [/* @__PURE__ */ a(r, {
|
|
180
|
-
tag: "span",
|
|
181
|
-
size: E,
|
|
182
|
-
weight: S,
|
|
183
|
-
children: U
|
|
184
|
-
}), !!W && /* @__PURE__ */ a(r, {
|
|
185
|
-
tag: "span",
|
|
186
|
-
size: G,
|
|
187
|
-
align: B,
|
|
188
|
-
type: K,
|
|
189
|
-
className: "block whitespace-nowrap font-normal leading-tight",
|
|
190
|
-
children: W
|
|
191
|
-
})]
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
h.displayName = "MoneyDisplay";
|
|
195
|
-
//#endregion
|
|
196
|
-
export { u as n, h as t };
|
|
197
|
-
|
|
198
|
-
//# sourceMappingURL=money-display-C0wI02ou.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"money-display-C0wI02ou.js","names":[],"sources":["../../src/components/base/currency/hooks/use-currency.ts","../../src/components/base/currency/currency-pair-preview.tsx","../../src/components/base/display/money-display.tsx"],"sourcesContent":["/**\n * `useCurrency` — sugar over the `money` slice of `<UIProvider>`.\n *\n * Reads currency display settings from the global `UIConfig.money` store\n * (initialized with `DEFAULT_UI_CONFIG.money`), optionally overridden\n * per-call via `useCurrency({ ... })`. Returns formatting helpers that\n * compose the `Intl` APIs against the resolved settings.\n *\n * To change library-wide defaults: mount `<UIProvider config={{ money: {\n * defaultCurrency: 'EUR', formatMode: 'with_symbol' } }}>` near the root.\n * To change a single call site only: pass `useCurrency({ formatMode: ... })`.\n */\nimport { useMemo } from 'react';\n\nimport { useMoneyConfig } from '@/lib/ui-provider';\nimport type {\n MoneyConfig,\n MoneyDisplayMode,\n MoneyDualLayout,\n MoneyFormatMode,\n} from '@/lib/ui-provider';\n\n/**\n * Local-call override shape. Mirrors `MoneyConfig` keys, all optional.\n * Kept as a separate type so the public surface of `useCurrency` doesn't\n * depend directly on the UIConfig types.\n */\nexport type CurrencyOverrides = Partial<MoneyConfig>;\n\n/**\n * @deprecated Kept as an alias for back-compat. Prefer importing\n * `MoneyConfig` from `@/lib/ui-provider` directly.\n */\nexport type CurrencyConfig = MoneyConfig;\n\n/**\n * @deprecated Use `<UIProvider config={{ money: {...} }}>` instead.\n * This export is retained as a no-op shim during migration.\n */\nexport function CurrencyConfigProvider({\n children,\n}: {\n config?: Partial<MoneyConfig>;\n children: React.ReactNode;\n}): React.ReactElement {\n return children as React.ReactElement;\n}\n\n/** Hook returning resolved currency settings + formatting helpers. */\nexport function useCurrency(overrides?: CurrencyOverrides) {\n const fromStore = useMoneyConfig();\n\n const resolved = useMemo<Required<Pick<MoneyConfig,\n 'defaultCurrency' | 'dualPricingEnabled' | 'displayMode' |\n 'dualPricingDisplay' | 'formatMode'\n >> & { displayCurrency: string; locale?: string }>(() => {\n const merged: MoneyConfig = { ...fromStore, ...overrides };\n const defaultCurrency = merged.defaultCurrency ?? 'USD';\n return {\n defaultCurrency,\n displayCurrency: merged.displayCurrency ?? defaultCurrency,\n locale: merged.locale,\n dualPricingEnabled: merged.dualPricingEnabled ?? false,\n displayMode:\n merged.displayMode ?? ('default_only' as MoneyDisplayMode),\n dualPricingDisplay:\n merged.dualPricingDisplay ?? ('lines' as MoneyDualLayout),\n formatMode: merged.formatMode ?? ('with_code' as MoneyFormatMode),\n };\n }, [fromStore, overrides]);\n\n const {\n defaultCurrency,\n displayCurrency,\n locale,\n dualPricingEnabled,\n displayMode,\n dualPricingDisplay,\n formatMode,\n } = resolved;\n\n const shouldShowDualPricing = () => {\n if (!dualPricingEnabled) return false;\n return displayMode === 'dual';\n };\n\n const formatAmount = (\n value: string | number,\n currency: string,\n symbol?: string,\n ): string => {\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n if (!Number.isFinite(numValue)) {\n return currency ? `${String(value)} ${currency}`.trim() : String(value);\n }\n\n const formattedNumber = new Intl.NumberFormat(locale, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(numValue);\n\n switch (formatMode) {\n case 'decimal':\n return formattedNumber;\n case 'with_code':\n return currency ? `${formattedNumber} ${currency}` : formattedNumber;\n case 'with_symbol':\n return symbol\n ? `${symbol}${formattedNumber}`\n : currency\n ? `${formattedNumber} ${currency}`\n : formattedNumber;\n case 'locale_aware':\n if (!currency) return formattedNumber;\n try {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n }).format(numValue);\n } catch {\n return `${formattedNumber} ${currency}`;\n }\n default:\n return currency ? `${formattedNumber} ${currency}` : formattedNumber;\n }\n };\n\n const getCurrencySymbol = (currency: string): string => {\n const symbols: Record<string, string> = {\n BGN: 'лв',\n EUR: '€',\n USD: '$',\n GBP: '£',\n JPY: '¥',\n };\n return symbols[currency] ?? currency;\n };\n\n return {\n defaultCurrency,\n displayCurrency,\n dualPricingEnabled,\n displayMode,\n dualPricingDisplay,\n formatMode,\n shouldShowDualPricing,\n formatAmount,\n getCurrencySymbol,\n };\n}\n\n/**\n * @deprecated Use `DEFAULT_UI_CONFIG.money` from `@/lib/ui-provider`.\n * Retained for back-compat during migration.\n */\nexport const defaultCurrencyConfig: MoneyConfig = {\n defaultCurrency: 'USD',\n dualPricingEnabled: false,\n displayMode: 'default_only',\n dualPricingDisplay: 'lines',\n formatMode: 'with_code',\n};\n\nexport default useCurrency;\n","/**\n * CurrencyPairPreview — inline rendering of a `source → target` currency\n * pair using `useCurrency().formatAmount` for each side. Shows the shared\n * EMPTY placeholder when either leg is missing. Provide a custom `separator`\n * (default `→`) for direction or styling variations.\n */\nimport { ArrowRight } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useCurrency } from '@/components/base/currency/hooks';\nimport { EMPTY } from '@/lib/format';\nimport { cn } from '@/lib/utils';\nimport { useTypographyConfig } from '@/lib/ui-provider';\n/**\n * Currency-pair shape rendered by `<CurrencyPairPreview>`.\n *\n * `value` is the numeric amount; `currency` is the ISO 4217 code;\n * `symbol` is an optional pre-resolved symbol the consumer can pass when\n * they don't want the library to look one up.\n */\nexport interface CurrencyPairLeg {\n\tvalue?: number | string | null;\n\tcurrency?: string | null;\n\tsymbol?: string | null;\n}\n\nexport interface CurrencyPairData {\n\tsource?: CurrencyPairLeg | null;\n\ttarget?: CurrencyPairLeg | null;\n}\n\ntype BaseTextProps = ComponentProps<typeof Text>;\n\nconst DEFAULT_SEPARATOR = (\n\t<ArrowRight className=\"size-3 shrink-0 opacity-60\" aria-hidden=\"true\" />\n);\n\nexport interface CurrencyPairPreviewProps extends Omit<BaseTextProps, 'children' | 'content'> {\n\tpair?: CurrencyPairData | null;\n\temptyLabel?: ReactNode;\n\tseparator?: ReactNode;\n}\n\nexport function CurrencyPairPreview({\n\tpair,\n\temptyLabel = EMPTY,\n\tseparator = DEFAULT_SEPARATOR,\n\tclassName,\n\tsize: sizeProp,\n\ttag = 'span',\n\t...props\n}: CurrencyPairPreviewProps) {\n\tconst { defaultTextSize } = useTypographyConfig();\n\tconst size = sizeProp ?? defaultTextSize ?? 'sm';\n\n\tconst { formatAmount } = useCurrency();\n\n\tconst source = pair?.source?.value ?? null;\n\tconst sourceCurrency = pair?.source?.currency ?? null;\n\tconst sourceSymbol = pair?.source?.symbol ?? null;\n\tconst target = pair?.target?.value ?? null;\n\tconst targetCurrency = pair?.target?.currency ?? null;\n\tconst targetSymbol = pair?.target?.symbol ?? null;\n\n\tif (!source || !target) {\n\t\treturn (\n\t\t\t<Text\n\t\t\t\ttag={tag}\n\t\t\t\tsize={size}\n\t\t\t\ttype=\"secondary\"\n\t\t\t\tclassName={cn('currency-pair-preview--component', 'tabular-nums', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\ttag={tag}\n\t\t\tsize={size}\n\t\t\tclassName={cn('inline-flex items-center gap-1.5 tabular-nums', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span>\n\t\t\t\t{formatAmount(source, String(sourceCurrency ?? ''), sourceSymbol ?? undefined)}\n\t\t\t</span>\n\t\t\t<span className=\"inline-flex items-center text-muted-foreground\" aria-hidden=\"true\">\n\t\t\t\t{separator}\n\t\t\t</span>\n\t\t\t<span>\n\t\t\t\t{formatAmount(target, String(targetCurrency ?? ''), targetSymbol ?? undefined)}\n\t\t\t</span>\n\t\t</Text>\n\t);\n}\n\nCurrencyPairPreview.displayName = 'CurrencyPairPreview';\n","/**\n * MoneyDisplay — primary + (optional) secondary currency amount renderer.\n *\n * Resolves a money value from any of `money` / `moneyPair` / `amount` / `pair`\n * (in priority order) and formats via the active `useCurrency` config. When\n * dual pricing is enabled (provider or per-instance `showPair`), the\n * converted secondary value renders either stacked\n * (`dualPricingDisplay=\"lines\"`, default) or inline. Numbers always use the\n * active locale's thousands separator and tabular-nums for stable column\n * alignment.\n *\n * Re-exported from `@/components/base/currency/money-display` to keep\n * currency-namespaced imports grouped.\n */\nimport type { ComponentProps, ReactNode } from 'react';\nimport { Text } from '@/components/typography';\nimport { useCurrency } from '@/components/base/currency/hooks';\nimport { EMPTY } from '@/lib/format';\nimport { cn } from '@/lib/utils';\nimport { useTypographyConfig } from '@/lib/ui-provider';\n\n/**\n * Flexible input shapes accepted by `<MoneyDisplay>`. The component reads\n * defensively (numeric or string `value`/`amount`) and treats `currency` as\n * a free-form ISO 4217 string. Consumers map their domain money/currency\n * types into these at the call site.\n */\nexport interface CurrencyAmountData {\n value?: number | string | null;\n currency?: string | null;\n symbol?: string | null;\n}\n\nexport interface MoneyValueData {\n amount?: number | string | null;\n currency?: string | null;\n}\n\nexport interface MoneyData extends MoneyValueData {\n /** Optional secondary leg used when dual-pricing is enabled. */\n pair?: MoneyValueData | null;\n}\n\nexport interface MoneyPairData {\n primary?: MoneyData | null;\n secondary?: MoneyData | null;\n}\n\nexport interface CurrencyPairData {\n source?: CurrencyAmountData | null;\n target?: CurrencyAmountData | null;\n}\n\ntype BaseTextProps = ComponentProps<typeof Text>;\n\nexport type MoneyDisplayVariant = 'default' | 'minimal' | 'stacked';\nexport type MoneyDisplaySecondaryEmphasis = 'discrete' | 'muted' | 'match' | 'hidden';\n\nexport interface MoneyDisplayProps extends Omit<BaseTextProps, 'children' | 'content'> {\n\tmoney?: MoneyData | null;\n\tmoneyPair?: MoneyPairData | null;\n\tamount?: CurrencyAmountData | null;\n\tpair?: CurrencyPairData | null;\n\tshowPair?: boolean;\n\tdualPricingDisplay?: 'inline' | 'lines';\n\talignment?: 'left' | 'center' | 'right';\n\temptyLabel?: ReactNode;\n\t/**\n\t * Visual variant. `default`/`stacked` show secondary on a line below;\n\t * `minimal` always renders just the primary value (single token, no\n\t * secondary, no separator) — use it for dense rows or chips.\n\t */\n\tvariant?: MoneyDisplayVariant;\n\t/**\n\t * Tunes the prominence of the secondary value when it renders.\n\t * `discrete` (default for stacked) — `xxs` discrete tone, easy to scan past.\n\t * `muted` — `xs` secondary tone (legacy behaviour).\n\t * `match` — same size as primary, regular weight.\n\t * `hidden` — never render the secondary even if a pair is provided.\n\t */\n\tsecondaryEmphasis?: MoneyDisplaySecondaryEmphasis;\n}\n\ntype ResolvedAmount = {\n\tvalue: number;\n\tcurrency: string | null;\n\tsymbol: string | null;\n};\n\nconst toNumber = (raw: string | number | undefined | null): number | null => {\n\tif (raw === null || raw === undefined) return null;\n\tconst n = typeof raw === 'number' ? raw : Number.parseFloat(String(raw).trim());\n\treturn Number.isFinite(n) ? n : null;\n};\n\nconst resolveCurrencyAmount = (amount?: CurrencyAmountData | null): ResolvedAmount | null => {\n\tconst n = toNumber(amount?.value);\n\tif (n === null) return null;\n\treturn {\n\t\tvalue: n,\n\t\tcurrency: amount?.currency ? String(amount.currency) : null,\n\t\tsymbol: amount?.symbol ? String(amount.symbol) : null,\n\t};\n};\n\nconst resolveMoney = (money?: MoneyData | null): ResolvedAmount | null => {\n\tconst n = toNumber(money?.amount);\n\tif (n === null) return null;\n\treturn {\n\t\tvalue: n,\n\t\tcurrency: money?.currency ? String(money.currency) : null,\n\t\tsymbol: null,\n\t};\n};\n\nconst resolveMoneyValue = (value?: MoneyValueData | null): ResolvedAmount | null => {\n\tconst n = toNumber(value?.amount);\n\tif (n === null) return null;\n\treturn {\n\t\tvalue: n,\n\t\tcurrency: value?.currency ? String(value.currency) : null,\n\t\tsymbol: null,\n\t};\n};\n\nexport function MoneyDisplay({\n\tmoney,\n\tmoneyPair,\n\tamount,\n\tpair,\n\tshowPair = false,\n\tdualPricingDisplay,\n\talignment,\n\temptyLabel = EMPTY,\n\tvariant = 'default',\n\tsecondaryEmphasis = 'discrete',\n\tclassName,\n\t// Defaults tuned for admin density: `sm` + `medium` reads as a normal\n\t// number in context, not a hero figure. Pass `size=\"base\"` /\n\t// `weight=\"semibold\"` for emphasis (totals, KPI tiles).\n\tsize: sizeProp,\n\talign = 'right',\n\tweight = 'medium',\n\ttag = 'span',\n\t...props\n}: MoneyDisplayProps) {\n\tconst { defaultTextSize } = useTypographyConfig();\n\tconst size = sizeProp ?? defaultTextSize ?? 'sm';\n\n\tconst {\n\t\tdisplayCurrency,\n\t\tdualPricingDisplay: globalDualPricingDisplay,\n\t\tshouldShowDualPricing,\n\t\tformatAmount,\n\t\tgetCurrencySymbol,\n\t} = useCurrency();\n\n\tconst resolvedDualPricingDisplay = dualPricingDisplay ?? globalDualPricingDisplay ?? 'lines';\n\n\tconst primaryFromMoneyPair =\n\t\t(shouldShowDualPricing() || showPair) && moneyPair?.primary\n\t\t\t? resolveMoney(moneyPair.primary)\n\t\t\t: null;\n\tconst primaryFromMoney = resolveMoney(money);\n\tconst primaryFromAmount = resolveCurrencyAmount(amount);\n\n\tconst primary = primaryFromMoneyPair ?? primaryFromMoney ?? primaryFromAmount ?? null;\n\tconst primaryCurrency = primary?.currency ?? displayCurrency ?? null;\n\n\tconst shouldRenderPair =\n\t\t(showPair || shouldShowDualPricing()) &&\n\t\tBoolean(moneyPair ?? pair ?? money?.pair);\n\n\tconst resolveSecondary = (): ResolvedAmount | null => {\n\t\tif (!shouldRenderPair) return null;\n\n\t\tif (moneyPair?.primary && moneyPair?.secondary) {\n\t\t\treturn resolveMoney(moneyPair.secondary);\n\t\t}\n\n\t\tif (money?.pair) {\n\t\t\treturn resolveMoneyValue(money.pair);\n\t\t}\n\n\t\tif (pair?.source || pair?.target) {\n\t\t\tconst source = resolveCurrencyAmount(pair?.source ?? null);\n\t\t\tconst target = resolveCurrencyAmount(pair?.target ?? null);\n\n\t\t\tif (!source && !target) return null;\n\n\t\t\tconst sourceCurrency = source?.currency ?? null;\n\t\t\tconst targetCurrency = target?.currency ?? null;\n\n\t\t\tif (primaryCurrency && targetCurrency === primaryCurrency) return source;\n\t\t\tif (primaryCurrency && sourceCurrency === primaryCurrency) return target;\n\t\t\tif (displayCurrency && targetCurrency === displayCurrency) return source;\n\t\t\tif (displayCurrency && sourceCurrency === displayCurrency) return target;\n\t\t\treturn target ?? source;\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconst secondary =\n\t\tvariant === 'minimal' || secondaryEmphasis === 'hidden'\n\t\t\t? null\n\t\t\t: resolveSecondary();\n\n\tconst resolvedAlign = alignment ?? align;\n\tconst alignmentClass =\n\t\tresolvedAlign === 'left'\n\t\t\t? 'text-left'\n\t\t\t: resolvedAlign === 'center'\n\t\t\t\t? 'text-center'\n\t\t\t\t: 'text-right';\n\tconst justifyClass =\n\t\tresolvedAlign === 'left'\n\t\t\t? 'justify-start'\n\t\t\t: resolvedAlign === 'center'\n\t\t\t\t? 'justify-center'\n\t\t\t\t: 'justify-end';\n\n\tif (!primary) {\n\t\treturn (\n\t\t\t<Text\n\t\t\t\ttag={tag}\n\t\t\t\tsize={size}\n\t\t\t\ttype=\"secondary\"\n\t\t\t\talign={resolvedAlign}\n\t\t\t\tclassName={cn('money-display--component', \n\t\t\t\t\t'money--display inline-flex flex-col tabular-nums',\n\t\t\t\t\talignmentClass,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tconst primaryLabel = formatAmount(\n\t\tprimary.value,\n\t\tprimaryCurrency ?? '',\n\t\tprimary.symbol ?? (primaryCurrency ? getCurrencySymbol(primaryCurrency) : undefined),\n\t);\n\tconst secondaryLabel = secondary\n\t\t? formatAmount(\n\t\t\t\tsecondary.value,\n\t\t\t\tsecondary.currency ?? '',\n\t\t\t\tsecondary.symbol ?? (secondary.currency ? getCurrencySymbol(secondary.currency) : undefined),\n\t\t\t)\n\t\t: null;\n\n\tconst secondarySize: BaseTextProps['size'] =\n\t\tsecondaryEmphasis === 'match' ? size\n\t\t\t: secondaryEmphasis === 'muted' ? 'xs'\n\t\t\t\t: 'xxs';\n\tconst secondaryType: BaseTextProps['type'] =\n\t\tsecondaryEmphasis === 'match' ? undefined\n\t\t\t: secondaryEmphasis === 'muted' ? 'secondary'\n\t\t\t\t: 'discrete';\n\n\tif (resolvedDualPricingDisplay === 'inline' && secondaryLabel) {\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'money--display inline-flex items-baseline gap-1.5 tabular-nums whitespace-nowrap',\n\t\t\t\t\tjustifyClass,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...(props as React.HTMLAttributes<HTMLSpanElement>)}\n\t\t\t>\n\t\t\t\t<Text tag=\"span\" size={size} weight={weight}>\n\t\t\t\t\t{primaryLabel}\n\t\t\t\t</Text>\n\t\t\t\t<Text tag=\"span\" size=\"xxs\" type=\"discrete\" aria-hidden=\"true\">\n\t\t\t\t\t·\n\t\t\t\t</Text>\n\t\t\t\t<Text tag=\"span\" size={secondarySize} type={secondaryType} weight=\"regular\">\n\t\t\t\t\t{secondaryLabel}\n\t\t\t\t</Text>\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\ttag={tag}\n\t\t\tsize={size}\n\t\t\talign={resolvedAlign}\n\t\t\tclassName={cn(\n\t\t\t\t'money--display inline-flex flex-col tabular-nums leading-tight',\n\t\t\t\talignmentClass,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Text tag=\"span\" size={size} weight={weight}>\n\t\t\t\t{primaryLabel}\n\t\t\t</Text>\n\t\t\t{!!secondaryLabel && (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize={secondarySize}\n\t\t\t\t\talign={resolvedAlign}\n\t\t\t\t\ttype={secondaryType}\n\t\t\t\t\tclassName=\"block whitespace-nowrap font-normal leading-tight\"\n\t\t\t\t>\n\t\t\t\t\t{secondaryLabel}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Text>\n\t);\n}\n\nMoneyDisplay.displayName = 'MoneyDisplay';\n"],"mappings":";;;;;;;AAiDA,SAAgB,EAAY,GAA+B;CACvD,IAAM,IAAY,GAAgB,EAqB5B,EACF,oBACA,oBACA,WACA,uBACA,gBACA,uBACA,kBA1Ba,QAGwC;EACrD,IAAM,IAAsB;GAAE,GAAG;GAAW,GAAG;GAAW,EACpD,IAAkB,EAAO,mBAAmB;AAClD,SAAO;GACH;GACA,iBAAiB,EAAO,mBAAmB;GAC3C,QAAQ,EAAO;GACf,oBAAoB,EAAO,sBAAsB;GACjD,aACI,EAAO,eAAgB;GAC3B,oBACI,EAAO,sBAAuB;GAClC,YAAY,EAAO,cAAe;GACrC;IACF,CAAC,GAAW,EAAU,CAUrB;AA2DJ,QAAO;EACH;EACA;EACA;EACA;EACA;EACA;EACA,6BA/DK,IACE,MAAgB,SADS;EAgEhC,eA3DA,GACA,GACA,MACS;GACT,IAAM,IAAW,OAAO,KAAU,WAAW,WAAW,EAAM,GAAG;AACjE,OAAI,CAAC,OAAO,SAAS,EAAS,CAC1B,QAAO,IAAW,GAAG,OAAO,EAAM,CAAC,GAAG,IAAW,MAAM,GAAG,OAAO,EAAM;GAG3E,IAAM,IAAkB,IAAI,KAAK,aAAa,GAAQ;IAClD,uBAAuB;IACvB,uBAAuB;IAC1B,CAAC,CAAC,OAAO,EAAS;AAEnB,WAAQ,GAAR;IACI,KAAK,UACD,QAAO;IACX,KAAK,YACD,QAAO,IAAW,GAAG,EAAgB,GAAG,MAAa;IACzD,KAAK,cACD,QAAO,IACD,GAAG,IAAS,MACZ,IACI,GAAG,EAAgB,GAAG,MACtB;IACd,KAAK;AACD,SAAI,CAAC,EAAU,QAAO;AACtB,SAAI;AACA,aAAO,IAAI,KAAK,aAAa,GAAQ;OACjC,OAAO;OACP;OACH,CAAC,CAAC,OAAO,EAAS;aACf;AACJ,aAAO,GAAG,EAAgB,GAAG;;IAErC,QACI,QAAO,IAAW,GAAG,EAAgB,GAAG,MAAa;;;EAwB7D,oBApBuB,OAQhB;GANH,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GAEF,EAAQ,MAAa;EAa/B;;;;AClHL,IAAM,IACL,kBAAC,GAAD;CAAY,WAAU;CAA6B,eAAY;CAAS,CAAA;AASzE,SAAgB,EAAoB,EACnC,SACA,gBAAA,KACA,eAAY,GACZ,cACA,MAAM,GACN,SAAM,QACN,GAAG,KACyB;CAC5B,IAAM,EAAE,uBAAoB,GAAqB,EAC3C,IAAO,KAAY,KAAmB,MAEtC,EAAE,oBAAiB,GAAa,EAEhC,IAAS,GAAM,QAAQ,SAAS,MAChC,IAAiB,GAAM,QAAQ,YAAY,MAC3C,IAAe,GAAM,QAAQ,UAAU,MACvC,IAAS,GAAM,QAAQ,SAAS,MAChC,IAAiB,GAAM,QAAQ,YAAY,MAC3C,IAAe,GAAM,QAAQ,UAAU;AAgB7C,QAdI,CAAC,KAAU,CAAC,IAEd,kBAAC,GAAD;EACM;EACC;EACN,MAAK;EACL,WAAW,EAAG,oCAAoC,gBAAgB,EAAU;EAC5E,GAAI;YAEH;EACK,CAAA,GAKR,kBAAC,GAAD;EACM;EACC;EACN,WAAW,EAAG,iDAAiD,EAAU;EACzE,GAAI;YAJL;GAMC,kBAAC,QAAD,EAAA,UACE,EAAa,GAAQ,OAAO,KAAkB,GAAG,EAAE,KAAgB,KAAA,EAAU,EACxE,CAAA;GACP,kBAAC,QAAD;IAAM,WAAU;IAAiD,eAAY;cAC3E;IACK,CAAA;GACP,kBAAC,QAAD,EAAA,UACE,EAAa,GAAQ,OAAO,KAAkB,GAAG,EAAE,KAAgB,KAAA,EAAU,EACxE,CAAA;GACD;;;AAIT,EAAoB,cAAc;;;ACVlC,IAAM,KAAY,MAA2D;AAC5E,KAAI,KAAQ,KAA2B,QAAO;CAC9C,IAAM,IAAI,OAAO,KAAQ,WAAW,IAAM,OAAO,WAAW,OAAO,EAAI,CAAC,MAAM,CAAC;AAC/E,QAAO,OAAO,SAAS,EAAE,GAAG,IAAI;GAG3B,KAAyB,MAA8D;CAC5F,IAAM,IAAI,EAAS,GAAQ,MAAM;AAEjC,QADI,MAAM,OAAa,OAChB;EACN,OAAO;EACP,UAAU,GAAQ,WAAW,OAAO,EAAO,SAAS,GAAG;EACvD,QAAQ,GAAQ,SAAS,OAAO,EAAO,OAAO,GAAG;EACjD;GAGI,KAAgB,MAAoD;CACzE,IAAM,IAAI,EAAS,GAAO,OAAO;AAEjC,QADI,MAAM,OAAa,OAChB;EACN,OAAO;EACP,UAAU,GAAO,WAAW,OAAO,EAAM,SAAS,GAAG;EACrD,QAAQ;EACR;GAGI,KAAqB,MAAyD;CACnF,IAAM,IAAI,EAAS,GAAO,OAAO;AAEjC,QADI,MAAM,OAAa,OAChB;EACN,OAAO;EACP,UAAU,GAAO,WAAW,OAAO,EAAM,SAAS,GAAG;EACrD,QAAQ;EACR;;AAGF,SAAgB,EAAa,EAC5B,UACA,cACA,WACA,SACA,cAAW,IACX,uBACA,cACA,gBAAA,KACA,aAAU,WACV,uBAAoB,YACpB,cAIA,MAAM,GACN,WAAQ,SACR,YAAS,UACT,SAAM,QACN,GAAG,KACkB;CACrB,IAAM,EAAE,uBAAoB,GAAqB,EAC3C,IAAO,KAAY,KAAmB,MAEtC,EACL,oBACA,oBAAoB,GACpB,0BACA,iBACA,yBACG,GAAa,EAEX,IAA6B,KAAsB,KAA4B,SAE/E,KACJ,GAAuB,IAAI,MAAa,GAAW,UACjD,EAAa,EAAU,QAAQ,GAC/B,MACE,IAAmB,EAAa,EAAM,EACtC,IAAoB,EAAsB,EAAO,EAEjD,IAAU,KAAwB,KAAoB,KAAqB,MAC3E,IAAkB,GAAS,YAAY,KAAmB,MAE1D,KACJ,KAAY,GAAuB,KACpC,GAAQ,KAAa,KAAQ,GAAO,OAgC/B,IACL,MAAY,aAAa,MAAsB,WAC5C,cAhCkD;AACrD,MAAI,CAAC,EAAkB,QAAO;AAE9B,MAAI,GAAW,WAAW,GAAW,UACpC,QAAO,EAAa,EAAU,UAAU;AAGzC,MAAI,GAAO,KACV,QAAO,EAAkB,EAAM,KAAK;AAGrC,MAAI,GAAM,UAAU,GAAM,QAAQ;GACjC,IAAM,IAAS,EAAsB,GAAM,UAAU,KAAK,EACpD,IAAS,EAAsB,GAAM,UAAU,KAAK;AAE1D,OAAI,CAAC,KAAU,CAAC,EAAQ,QAAO;GAE/B,IAAM,IAAiB,GAAQ,YAAY,MACrC,IAAiB,GAAQ,YAAY;AAM3C,UAJI,KAAmB,MAAmB,IAAwB,IAC9D,KAAmB,MAAmB,IAAwB,IAC9D,KAAmB,MAAmB,IAAwB,IAC9D,KAAmB,MAAmB,IAAwB,IAC3D,KAAU;;AAGlB,SAAO;KAMc,EAEhB,IAAgB,KAAa,GAC7B,IACL,MAAkB,SACf,cACA,MAAkB,WACjB,gBACA,cACC,IACL,MAAkB,SACf,kBACA,MAAkB,WACjB,mBACA;AAEL,KAAI,CAAC,EACJ,QACC,kBAAC,GAAD;EACM;EACC;EACN,MAAK;EACL,OAAO;EACP,WAAW,EAAG,4BACb,oDACA,GACA,EACA;EACD,GAAI;YAEH;EACK,CAAA;CAIT,IAAM,IAAe,EACpB,EAAQ,OACR,KAAmB,IACnB,EAAQ,WAAW,IAAkB,EAAkB,EAAgB,GAAG,KAAA,GAC1E,EACK,IAAiB,IACpB,EACA,EAAU,OACV,EAAU,YAAY,IACtB,EAAU,WAAW,EAAU,WAAW,EAAkB,EAAU,SAAS,GAAG,KAAA,GAClF,GACA,MAEG,IACL,MAAsB,UAAU,IAC7B,MAAsB,UAAU,OAC/B,OACC,IACL,MAAsB,UAAU,KAAA,IAC7B,MAAsB,UAAU,cAC/B;AAyBL,QAvBI,MAA+B,YAAY,IAE7C,kBAAC,QAAD;EACC,WAAW,EACV,oFACA,GACA,EACA;EACD,GAAK;YANN;GAQC,kBAAC,GAAD;IAAM,KAAI;IAAa;IAAc;cACnC;IACK,CAAA;GACP,kBAAC,GAAD;IAAM,KAAI;IAAO,MAAK;IAAM,MAAK;IAAW,eAAY;cAAO;IAExD,CAAA;GACP,kBAAC,GAAD;IAAM,KAAI;IAAO,MAAM;IAAe,MAAM;IAAe,QAAO;cAChE;IACK,CAAA;GACD;MAKR,kBAAC,GAAD;EACM;EACC;EACN,OAAO;EACP,WAAW,EACV,kEACA,GACA,EACA;EACD,GAAI;YATL,CAWC,kBAAC,GAAD;GAAM,KAAI;GAAa;GAAc;aACnC;GACK,CAAA,EACN,CAAC,CAAC,KACF,kBAAC,GAAD;GACC,KAAI;GACJ,MAAM;GACN,OAAO;GACP,MAAM;GACN,WAAU;aAET;GACK,CAAA,CAEF;;;AAIT,EAAa,cAAc"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
require(`./chunk-D3uCBrYO.cjs`);const e=require(`../lib/strings.cjs`),t=require(`../lib/utils.cjs`),n=require(`./text-DBnY6fcL.cjs`),r=require(`./typography-DClleVWi.cjs`),i=require(`./badge-BjtDcU1M.cjs`),a=require(`./button-DjacsNTg.cjs`),o=require(`./dropdown-menu-BebBffUH.cjs`),s=require(`./separator-DSkXMOXq.cjs`);let c=require(`react`),l=require(`react/jsx-runtime`),u=require(`lucide-react`);function d({locales:e,onRenderLabel:n,variant:r=`buttons`,onSelect:i}){let o=(0,c.useCallback)((e,t)=>{t||i?.(e)},[i]);return e.length===0?null:r===`inline`?(0,l.jsxs)(`div`,{className:t.cn(`language-switcher--component`,`flex items-center justify-center gap-2.5`),children:[(0,l.jsx)(u.Globe,{className:`size-4 text-muted-foreground/70`,"aria-hidden":`true`}),(0,l.jsx)(`div`,{className:`flex items-center justify-center gap-2.5`,children:e.map((r,i)=>{let a=n?n(r):r.nativeLabel;return(0,l.jsxs)(c.Fragment,{children:[(0,l.jsx)(`button`,{type:`button`,onClick:()=>o(r.value,r.active),className:t.cn(`text-xs transition-colors`,r.active?`text-primary font-medium`:`text-muted-foreground hover:text-foreground`),children:a}),i<e.length-1&&(0,l.jsx)(`span`,{"aria-hidden":`true`,className:`size-1 rounded-full bg-border`})]},r.value)})})]}):(0,l.jsx)(`div`,{className:`flex flex-wrap items-center justify-center gap-2`,children:e.map(e=>{let r=n?n(e):e.nativeLabel;return(0,l.jsx)(a.t,{type:`button`,variant:`secondary`,buttonStyle:e.active?`solid`:`ghost`,onClick:()=>o(e.value,e.active),className:t.cn(`min-w-[4.5rem] justify-center transition-colors`,e.active?`font-semibold text-primary`:`text-muted-foreground`),children:r},e.value)})})}d.displayName=`LanguageSwitcher`;function f(e){if(e.length===0)return`/`;try{let t=typeof window<`u`?window.location.origin:`http://localhost`,n=new URL(e,t).pathname.replace(/\/+$/,``);return n.length>0?n:`/`}catch{let t=(e.split(`?`)[0]??e).replace(/\/+$/,``);return t.length>0?t:`/`}}function p({items:e,currentPath:n,activeClassName:r,itemClassName:i}){let o=f(n??(typeof window<`u`?window.location.pathname:``)),s=typeof r==`string`&&r.length>0?r:`bg-muted`,c=e.map(e=>({item:e,normalizedPath:f(e.href)})),u=c.filter(({normalizedPath:e})=>o===e||o.startsWith(`${e}/`)).sort((e,t)=>t.normalizedPath.length-e.normalizedPath.length)[0]?.normalizedPath??null;return(0,l.jsx)(`nav`,{className:t.cn(`aside-navigation-menu--component`,`flex flex-col space-y-1 space-x-0`),children:c.map(({item:e,normalizedPath:n})=>(0,l.jsx)(a.i,{variant:`secondary`,buttonStyle:`ghost`,size:`sm`,fullWidth:!0,className:t.cn(`justify-start`,i,n===u?s:null),nativeButton:!1,render:t=>(0,l.jsx)(`a`,{...t,href:e.href}),children:e.title},e.href))})}p.displayName=`AsideNavigationMenu`;var m={tabsAria:`Tabs`};function h({items:n,currentUrl:r,strings:i}){let a=e.useStrings(m,i),o=r??(typeof window<`u`?window.location.pathname:`/`),s=e=>{try{return new URL(e,window.location.origin).pathname.replace(/\/+$/,``)}catch{return e.replace(/\/+$/,``).split(`?`)[0]}},c=s(o);return(0,l.jsx)(`div`,{className:t.cn(`navigation-tabs--component`,`navigation-tabs-container w-full my-5`),children:(0,l.jsx)(`nav`,{className:`inline-flex bg-muted rounded-4xl items-center gap-3 p-3`,"aria-label":a.tabsAria,children:n.map(e=>{let n=c===s(e.url);return(0,l.jsx)(`a`,{href:e.url,className:t.cn(`whitespace-nowrap flex items-center gap-1 leading-tight rounded-full border border-transparent px-4 py-1.5 text-sm bg-background text-foreground hover:text-background hover:bg-primary transition-all duration-150`,{"!bg-primary !text-background font-semibold":n}),children:e.label},e.url)})})})}h.displayName=`NavigationTabs`;function g({items:e,currentPath:n,className:r,ariaLabel:i=`Tab navigation`}){let a=n??(typeof window<`u`?window.location.pathname:``),o=(0,c.useMemo)(()=>e.map(e=>{let t=a===e.href,n=null;if(typeof e.icon==`string`)n=(0,l.jsx)(`span`,{className:`text-inherit`,children:e.icon});else if(e.icon){let t=e.icon;n=(0,l.jsx)(t,{className:`h-4 w-4`})}return{key:e.href,item:e,isActive:t,iconNode:n,ariaCurrent:t?`page`:void 0}}),[a,e]);return(0,l.jsx)(`div`,{className:t.cn(`tab-navigation-menu--component`,`w-full`,r),children:(0,l.jsx)(`nav`,{className:`inline-flex bg-muted rounded-full items-center gap-1 p-1`,"aria-label":i,children:o.map(({key:e,item:n,isActive:r,iconNode:i,ariaCurrent:a})=>(0,l.jsxs)(`a`,{href:n.href,className:t.cn(`whitespace-nowrap flex items-center gap-2`,`rounded-full px-4 py-2`,`text-sm font-medium`,`transition-all duration-200`,`focus-visible:outline-none focus-visible:ring-2`,`focus-visible:ring-ring focus-visible:ring-offset-2`,{"bg-background text-foreground shadow-sm":r,"text-muted-foreground hover:text-foreground hover:bg-background/50":!r}),"aria-current":a,children:[!!i&&(0,l.jsx)(`span`,{className:`text-inherit`,children:i}),n.title,!!n.badge&&(0,l.jsx)(`span`,{className:t.cn(`ml-1.5 rounded-full px-2 py-0.5 text-xs font-medium`,r?`bg-primary/10 text-primary`:`bg-muted-foreground/10 text-muted-foreground`),children:n.badge})]},e))})})}g.displayName=`TabNavigationMenu`;function _({eyebrow:e,title:a,description:o,badge:c,breadcrumbs:u,actions:d,children:f,className:p,withSeparator:m=!0}){return(0,l.jsxs)(`header`,{className:t.cn(`page-header--component`,`w-full`,p),children:[!!u&&(0,l.jsx)(`div`,{className:`mb-3`,children:u}),(0,l.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,l.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[!!e&&(0,l.jsx)(n.t,{size:`xxs`,type:`secondary`,weight:`semibold`,className:`mb-1 uppercase tracking-wider`,children:e}),(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(r.o,{tag:`h2`,className:`text-2xl border-0 pb-0`,children:a}),!!c&&(0,l.jsx)(i.t,{variant:c.variant??`secondary`,children:c.label})]}),!!o&&(0,l.jsx)(n.t,{type:`secondary`,className:`mt-1 max-w-2xl`,children:o})]}),!!d&&(0,l.jsx)(`div`,{className:`flex shrink-0 items-center gap-2`,children:d})]}),!!f&&(0,l.jsx)(`div`,{className:`mt-4`,children:f}),!!m&&(0,l.jsx)(s.t,{className:`mt-4`})]})}_.displayName=`PageHeader`;function v({items:e,rootMargin:r=`-40% 0px -50% 0px`,className:i,onSelect:a}){let[o,s]=(0,c.useState)(e[0]?.id??null);return(0,c.useEffect)(()=>{let t=new IntersectionObserver(e=>{let t=e.find(e=>e.isIntersecting);t?.target.id&&s(t.target.id)},{rootMargin:r,threshold:0});return e.forEach(e=>{let n=document.getElementById(e.id);n&&t.observe(n)}),()=>t.disconnect()},[e,r]),(0,l.jsx)(`nav`,{className:t.cn(`section-nav--component`,`flex flex-col gap-0.5`,i),"aria-label":`Section navigation`,children:e.map(e=>{let r=e.icon,i=o===e.id;return(0,l.jsxs)(`a`,{href:`#${e.id}`,onClick:t=>{t.preventDefault(),document.getElementById(e.id)?.scrollIntoView({behavior:`smooth`,block:`start`}),s(e.id),a?.(e.id)},className:t.cn(`flex items-center gap-2 rounded-md px-2 py-1.5 transition-colors`,i?`bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted/50 hover:text-foreground`),children:[!!r&&(0,l.jsx)(r,{className:`size-3.5 shrink-0`}),(0,l.jsx)(n.t,{tag:`span`,weight:i?`semibold`:`medium`,children:e.label})]},e.id)})})}v.displayName=`SectionNav`;function y(e){if(e.length===0)return`/`;try{let t=typeof window<`u`?window.location.origin:`http://localhost`,n=new URL(e,t).pathname.replace(/\/+$/,``);return n.length>0?n:`/`}catch{let t=(e.split(`?`)[0]??e).replace(/\/+$/,``);return t.length>0?t:`/`}}function b({groups:e,currentPath:r,className:a,itemClassName:o,activeItemClassName:s,ariaLabel:d=`Side navigation`}){let f=y(r??(typeof window<`u`?window.location.pathname:``)),p=(0,c.useMemo)(()=>e.flatMap(e=>e.items.map(t=>({groupId:e.id,normalizedPath:y(t.href)}))),[e]).filter(({normalizedPath:e})=>f===e||f.startsWith(`${e}/`)).sort((e,t)=>t.normalizedPath.length-e.normalizedPath.length)[0]?.normalizedPath??null,[m,h]=(0,c.useState)(()=>Object.fromEntries(e.map(e=>[e.id,!!e.defaultCollapsed]))),g=e=>h(t=>({...t,[e]:!t[e]})),_=s&&s.length>0?s:`bg-primary/5 text-primary`;return(0,l.jsx)(`nav`,{className:t.cn(`side-nav--component`,`flex flex-col gap-4`,a),"aria-label":d,children:e.map(e=>{let r=e.collapsible!==!1&&m[e.id],a=!!e.label,s=!r;return(0,l.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[!!a&&(e.collapsible===!1?(0,l.jsx)(n.t,{tag:`div`,size:`xs`,type:`secondary`,weight:`medium`,className:`px-3 py-1.5 uppercase tracking-wider`,children:e.label}):(0,l.jsxs)(`button`,{type:`button`,onClick:()=>g(e.id),className:t.cn(`flex w-full items-center justify-between px-3 py-1.5 rounded-md`,`text-xs font-medium uppercase tracking-wider text-muted-foreground`,`hover:text-foreground transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`),"aria-expanded":!r,children:[(0,l.jsx)(`span`,{children:e.label}),(0,l.jsx)(u.ChevronDown,{className:t.cn(`size-3.5 transition-transform`,r&&`-rotate-90`),"aria-hidden":`true`})]})),!!s&&(0,l.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:e.items.map(e=>{let n=e.icon,r=y(e.href)===p;return(0,l.jsxs)(`a`,{href:e.disabled?void 0:e.href,"aria-current":r?`page`:void 0,"aria-disabled":e.disabled||void 0,className:t.cn(`group flex items-center gap-2.5 rounded-md px-3 py-1.5`,`text-sm transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,`hover:bg-muted/60`,e.disabled&&`pointer-events-none opacity-50`,r&&_,o),children:[!!n&&(0,l.jsx)(n,{className:t.cn(`size-4 shrink-0`,r?`text-primary`:`text-muted-foreground`)}),(0,l.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label}),!!e.badge&&(0,l.jsx)(i.t,{variant:r?`primary`:`secondary`,className:`shrink-0`,children:e.badge})]},e.href)})})]},e.id)})})}b.displayName=`SideNav`;var x=`inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium whitespace-nowrap transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`;function S({items:e,value:n,onChange:r,className:i,tabClassName:a,activeTabClassName:s,moreLabel:d=`More`,ariaLabel:f=`Tab navigation`}){let p=(0,c.useRef)(null),m=(0,c.useRef)(null),[h,g]=(0,c.useState)(e.length);(0,c.useLayoutEffect)(()=>{if(!p.current||!m.current)return;let e=p.current,t=m.current,n=()=>{let n=e.clientWidth,r=Array.from(t.querySelectorAll(`[data-tab-id]`)),i=0,a=0;for(let e of r){let t=e.offsetWidth+4;if(i+t+72<=n)i+=t,a+=1;else break}g(a===r.length?a:Math.max(1,a))};n();let r=new ResizeObserver(n);return r.observe(e),()=>r.disconnect()},[e]);let _=(0,c.useMemo)(()=>{if(!n)return e;let t=e.findIndex(e=>e.id===n);if(t<0||t<h)return e;let r=[...e],i=Math.max(0,h-1);return[r[t],r[i]]=[r[i],r[t]],r},[e,n,h]),v=_.slice(0,h),y=_.slice(h),b=e=>{r?.(e.id),e.onClick?.()},S=(e,n)=>{let r=e.icon,i=t.cn(x,n?t.cn(`bg-card text-foreground shadow-sm`,s):`text-muted-foreground hover:bg-muted/60`,a),o=(0,l.jsxs)(l.Fragment,{children:[!!r&&(0,l.jsx)(r,{className:`size-3.5`}),(0,l.jsx)(`span`,{children:e.label}),!!e.badge&&(0,l.jsx)(`span`,{className:t.cn(`ml-1 inline-flex items-center rounded-full px-1.5 py-0.5 text-xxs font-semibold`,n?`bg-primary/10 text-primary`:`bg-muted-foreground/10 text-muted-foreground`),children:e.badge})]});return e.href?(0,l.jsx)(`a`,{href:e.href,"data-tab-id":e.id,"aria-current":n?`page`:void 0,onClick:()=>b(e),className:t.cn(`overflow-tab-bar--component`,i),children:o},e.id):(0,l.jsx)(`button`,{type:`button`,"data-tab-id":e.id,"aria-pressed":n,onClick:()=>b(e),className:i,children:o},e.id)};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{ref:m,"aria-hidden":`true`,className:`absolute -top-[9999px] left-0 inline-flex items-center gap-1 invisible`,children:e.map(e=>S(e,!1))}),(0,l.jsxs)(`div`,{ref:p,role:`tablist`,"aria-label":f,className:t.cn(`relative inline-flex items-center gap-1 rounded-lg bg-muted/40 p-1`,i),children:[v.map(e=>S(e,e.id===n)),y.length>0&&(0,l.jsxs)(o.t,{children:[(0,l.jsxs)(o.g,{type:`button`,"aria-label":d,className:t.cn(x,`text-muted-foreground hover:bg-muted/60`),children:[(0,l.jsx)(u.MoreHorizontal,{className:`size-3.5`}),(0,l.jsx)(`span`,{children:d})]}),(0,l.jsx)(o.r,{align:`end`,className:`min-w-[160px]`,children:y.map(e=>{let r=e.icon;return(0,l.jsxs)(o.a,{onClick:()=>b(e),className:t.cn(`text-xs gap-1.5 px-2 py-1.5`,e.id===n&&`bg-primary/5 text-primary`),children:[!!r&&(0,l.jsx)(r,{className:`size-3.5`}),(0,l.jsx)(`span`,{children:e.label})]},e.id)})})]})]})]})}S.displayName=`OverflowTabBar`,Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return S}});
|
|
2
|
-
//# sourceMappingURL=navigation-BA2nsTgU.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-BA2nsTgU.cjs","names":[],"sources":["../../src/components/base/navigation/language-switcher.tsx","../../src/components/base/navigation/aside-navigation-menu.tsx","../../src/components/base/navigation/navigation-tabs.tsx","../../src/components/base/navigation/tab-navigation-menu.tsx","../../src/components/base/navigation/page-header/page-header.tsx","../../src/components/base/navigation/section-nav/section-nav.tsx","../../src/components/base/navigation/side-nav.tsx","../../src/components/base/navigation/overflow-tab-bar.tsx"],"sourcesContent":["/**\n * LanguageSwitcher — locale picker with two layouts: `buttons` (chunky\n * primary buttons) and `inline` (small text links separated by dots, prefixed\n * with a globe icon). Defaults to `buttons`.\n *\n * The library never navigates on its own. The consumer wires routing /\n * locale switching by passing `onSelect` (e.g. a Tanstack Router\n * `navigate(...)` or Inertia `router.visit(...)`). When `onSelect` is\n * absent the click is a no-op.\n */\nimport { Globe } from 'lucide-react';\nimport { Fragment, useCallback } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { cn } from '@/lib/utils';\nimport type { LocaleOption } from '@/types/locale.types';\n\ninterface LanguageSwitcherProps {\n\tlocales: LocaleOption[];\n\tonRenderLabel?: (options: LocaleOption) => string;\n\tvariant?: 'buttons' | 'inline';\n\tonSelect?: (value: string) => void;\n}\n\nexport function LanguageSwitcher({\n\tlocales,\n\tonRenderLabel,\n\tvariant = 'buttons',\n\tonSelect,\n}: LanguageSwitcherProps) {\n\tconst handleSelect = useCallback((value: string, isActive: boolean) => {\n\t\tif (isActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tonSelect?.(value);\n\t}, [onSelect]);\n\n\tif (locales.length === 0) {\n\t\treturn null;\n\t}\n\n\tif (variant === 'inline') {\n\t\treturn (\n\t\t\t<div className={cn('language-switcher--component', 'flex items-center justify-center gap-2.5')}>\n\t\t\t\t<Globe className=\"size-4 text-muted-foreground/70\" aria-hidden=\"true\" />\n\t\t\t\t<div className=\"flex items-center justify-center gap-2.5\">\n\t\t\t\t\t{locales.map((locale, index) => {\n\t\t\t\t\t\tconst label = onRenderLabel\n\t\t\t\t\t\t\t? onRenderLabel(locale)\n\t\t\t\t\t\t\t: locale.nativeLabel;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Fragment key={locale.value}>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\thandleSelect(locale.value, locale.active)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'text-xs transition-colors',\n\t\t\t\t\t\t\t\t\t\tlocale.active\n\t\t\t\t\t\t\t\t\t\t\t? 'text-primary font-medium'\n\t\t\t\t\t\t\t\t\t\t\t: 'text-muted-foreground hover:text-foreground',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t{index < locales.length - 1 && (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"size-1 rounded-full bg-border\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"flex flex-wrap items-center justify-center gap-2\">\n\t\t\t{locales.map((locale) => {\n\t\t\t\tconst label = onRenderLabel ? onRenderLabel(locale) : locale.nativeLabel;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={locale.value}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle={locale.active ? 'solid' : 'ghost'}\n\t\t\t\t\t\tonClick={() => handleSelect(locale.value, locale.active)}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'min-w-[4.5rem] justify-center transition-colors',\n\t\t\t\t\t\t\tlocale.active ? 'font-semibold text-primary' : 'text-muted-foreground',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nLanguageSwitcher.displayName = 'LanguageSwitcher';\n","/**\n * AsideNavigationMenu — vertical list of navigation links with active-state\n * highlight. Active item is matched by deepest path prefix so nested routes\n * still highlight their parent. Pass `currentPath` explicitly when SSR-ing or\n * when the consuming router does not update `window.location` synchronously.\n */\nimport { BaseButton } from '@/components/base/buttons';\nimport { cn } from '@/lib/utils';\nimport { type NavItem } from '@/types';\n\ninterface AsideNavigationMenuProps {\n\titems: NavItem[];\n\tcurrentPath?: string;\n\tactiveClassName?: string;\n\titemClassName?: string;\n}\n\nfunction normalizePath(rawUrl: string): string {\n\tif (rawUrl.length === 0) {\n\t\treturn '/';\n\t}\n\n\ttry {\n\t\tconst baseOrigin =\n\t\t\ttypeof window !== 'undefined'\n\t\t\t\t? window.location.origin\n\t\t\t\t: 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, baseOrigin);\n\t\tconst trimmed = parsed.pathname.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t} catch {\n\t\tconst clean = rawUrl.split('?')[0] ?? rawUrl;\n\t\tconst trimmed = clean.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t}\n}\n\nexport default function AsideNavigationMenu({\n\titems,\n\tcurrentPath,\n\tactiveClassName,\n\titemClassName,\n}: AsideNavigationMenuProps) {\n\tconst rawActivePath = currentPath ?? (typeof window !== 'undefined' ? window.location.pathname : '');\n\tconst activePath = normalizePath(rawActivePath);\n\tconst resolvedActiveClassName =\n\t\ttypeof activeClassName === 'string' && activeClassName.length > 0\n\t\t\t? activeClassName\n\t\t\t: 'bg-muted';\n\tconst normalizedItems = items.map((item) => ({\n\t\titem,\n\t\tnormalizedPath: normalizePath(item.href),\n\t}));\n\n\tconst activeItemPath =\n\t\tnormalizedItems\n\t\t\t.filter(\n\t\t\t\t({ normalizedPath }) =>\n\t\t\t\t\tactivePath === normalizedPath ||\n\t\t\t\t\tactivePath.startsWith(`${normalizedPath}/`),\n\t\t\t)\n\t\t\t.sort((a, b) => b.normalizedPath.length - a.normalizedPath.length)[0]\n\t\t\t?.normalizedPath ?? null;\n\n\treturn (\n\t\t<nav className={cn('aside-navigation-menu--component', 'flex flex-col space-y-1 space-x-0')}>\n\t\t\t{normalizedItems.map(({ item, normalizedPath }) => {\n\t\t\t\tconst isActive = normalizedPath === activeItemPath;\n\n\t\t\t\treturn (\n\t\t\t\t\t<BaseButton\n\t\t\t\t\t\tkey={item.href}\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'justify-start',\n\t\t\t\t\t\t\titemClassName,\n\t\t\t\t\t\t\tisActive ? resolvedActiveClassName : null,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tnativeButton={false}\n\t\t\t\t\t\trender={(renderProps) => (\n\t\t\t\t\t\t\t<a {...renderProps} href={item.href} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.title}\n\t\t\t\t\t</BaseButton>\n\t\t\t\t);\n\t\t\t})}\n\t\t</nav>\n\t);\n}\n\nAsideNavigationMenu.displayName = 'AsideNavigationMenu';\n","/**\n * NavigationTabs — large pill tab strip for prominent in-page navigation.\n * Active tab gets full-primary fill with inverse text. Lighter-weight\n * alternative is `TabNavigationMenu` (compact card-style pills).\n */\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nexport interface NavigationTabItem {\n\tlabel: string;\n\tto: string;\n}\n\nexport interface NavigationTabsItem {\n\tlabel: string;\n\turl: string;\n\tactive?: boolean;\n}\n\nexport interface NavigationTabsStrings {\n\ttabsAria: string;\n}\n\nexport const defaultNavigationTabsStrings: NavigationTabsStrings = {\n\ttabsAria: 'Tabs',\n};\n\ninterface NavigationTabsProps {\n\titems: NavigationTabsItem[];\n\tcurrentUrl?: string;\n\tstrings?: StringsProp<NavigationTabsStrings>;\n}\n\nfunction NavigationTabs({ items, currentUrl: currentUrlProp, strings: stringsProp }: NavigationTabsProps) {\n\tconst strings = useStrings(defaultNavigationTabsStrings, stringsProp);\n\tconst url = currentUrlProp ?? (typeof window !== 'undefined' ? window.location.pathname : '/');\n\n\tconst normalizeUrl = (rawUrl: string): string => {\n\t\ttry {\n\t\t\tconst urlObj = new URL(rawUrl, window.location.origin);\n\t\t\treturn urlObj.pathname.replace(/\\/+$/, '');\n\t\t} catch {\n\t\t\treturn rawUrl.replace(/\\/+$/, '').split('?')[0];\n\t\t}\n\t};\n\n\tconst currentUrl = normalizeUrl(url);\n\n\tconst clsDefault = 'whitespace-nowrap flex items-center gap-1 leading-tight rounded-full border border-transparent px-4 py-1.5 text-sm bg-background text-foreground hover:text-background hover:bg-primary transition-all duration-150';\n\treturn (\n\t\t<div className={cn('navigation-tabs--component', 'navigation-tabs-container w-full my-5')}>\n\t\t\t<nav className=\"inline-flex bg-muted rounded-4xl items-center gap-3 p-3\" aria-label={strings.tabsAria}>\n\t\t\t\t{items.map((item) => {\n\t\t\t\t\tconst itemUrl = normalizeUrl(item.url);\n\t\t\t\t\tconst isActive = currentUrl === itemUrl;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={item.url}\n\t\t\t\t\t\t\tkey={item.url}\n\t\t\t\t\t\t\tclassName={cn(clsDefault, {\n\t\t\t\t\t\t\t\t'!bg-primary !text-background font-semibold': isActive,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</nav>\n\t\t</div>\n\t);\n}\n\nexport default NavigationTabs;\n\nNavigationTabs.displayName = 'NavigationTabs';\n","/**\n * TabNavigationMenu — pill-style horizontal navigation. Active tab gets the\n * elevated card background; inactive tabs hover into a translucent variant.\n * Supports optional badges and per-item icons (Lucide component or string).\n */\nimport { useMemo, type ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { type NavItem } from '@/types';\n\ninterface TabNavigationMenuProps {\n\titems: NavItem[];\n\tcurrentPath?: string;\n\tclassName?: string;\n\tariaLabel?: string;\n}\n\nfunction TabNavigationMenu({ items, currentPath, className, ariaLabel = 'Tab navigation' }: TabNavigationMenuProps) {\n\tconst activePath = currentPath ?? (typeof window !== 'undefined' ? window.location.pathname : '');\n\n\tconst normalizedItems = useMemo(() => {\n\t\treturn items.map((item) => {\n\t\t\tconst isActive = activePath === item.href;\n\t\t\tlet iconNode: ReactNode = null;\n\n\t\t\tif (typeof item.icon === 'string') {\n\t\t\t\ticonNode = <span className=\"text-inherit\">{item.icon}</span>;\n\t\t\t} else if (item.icon) {\n\t\t\t\tconst IconComp = item.icon;\n\t\t\t\ticonNode = <IconComp className=\"h-4 w-4\" />;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tkey: item.href,\n\t\t\t\titem,\n\t\t\t\tisActive,\n\t\t\t\ticonNode,\n\t\t\t\tariaCurrent: isActive ? ('page' as const) : undefined,\n\t\t\t};\n\t\t});\n\t}, [activePath, items]);\n\n\treturn (\n\t\t<div className={cn('tab-navigation-menu--component', 'w-full', className)}>\n\t\t\t<nav className=\"inline-flex bg-muted rounded-full items-center gap-1 p-1\" aria-label={ariaLabel}>\n\t\t\t\t{normalizedItems.map(({ key, item, isActive, iconNode, ariaCurrent }) => (\n\t\t\t\t\t<a\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\thref={item.href}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'whitespace-nowrap flex items-center gap-2',\n\t\t\t\t\t\t\t'rounded-full px-4 py-2',\n\t\t\t\t\t\t\t'text-sm font-medium',\n\t\t\t\t\t\t\t'transition-all duration-200',\n\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2',\n\t\t\t\t\t\t\t'focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'bg-background text-foreground shadow-sm': isActive,\n\t\t\t\t\t\t\t\t'text-muted-foreground hover:text-foreground hover:bg-background/50': !isActive,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-current={ariaCurrent}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!iconNode && (\n\t\t\t\t\t\t\t<span className=\"text-inherit\">\n\t\t\t\t\t\t\t\t{iconNode}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'ml-1.5 rounded-full px-2 py-0.5 text-xs font-medium',\n\t\t\t\t\t\t\t\t\tisActive\n\t\t\t\t\t\t\t\t\t\t? 'bg-primary/10 text-primary'\n\t\t\t\t\t\t\t\t\t\t: 'bg-muted-foreground/10 text-muted-foreground',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</a>\n\t\t\t\t))}\n\t\t\t</nav>\n\t\t</div>\n\t);\n}\n\nTabNavigationMenu.displayName = 'TabNavigationMenu';\n\nexport default TabNavigationMenu;\n\n","/**\n * PageHeader — section / page heading with optional eyebrow, breadcrumbs slot,\n * description, status badge, and a row of action buttons. Designed to sit at the top\n * of every dashboard or detail page for consistent vertical rhythm.\n */\nimport type { ReactNode } from 'react';\nimport Heading from '@/components/typography/heading';\nimport { Text } from '@/components/typography';\nimport { Badge, type ComposedBadgeVariant } from '@/components/base/badge';\nimport { Separator } from '@/components/base/display/separator';\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderProps {\n\teyebrow?: ReactNode;\n\ttitle: ReactNode;\n\tdescription?: ReactNode;\n\tbadge?: { label: string; variant?: ComposedBadgeVariant };\n\tbreadcrumbs?: ReactNode;\n\tactions?: ReactNode;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\twithSeparator?: boolean;\n}\n\nexport function PageHeader({\n\teyebrow,\n\ttitle,\n\tdescription,\n\tbadge,\n\tbreadcrumbs,\n\tactions,\n\tchildren,\n\tclassName,\n\twithSeparator = true,\n}: PageHeaderProps) {\n\treturn (\n\t\t<header className={cn('page-header--component', 'w-full', className)}>\n\t\t\t{!!breadcrumbs && <div className=\"mb-3\">{breadcrumbs}</div>}\n\n\t\t\t<div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" weight=\"semibold\" className=\"mb-1 uppercase tracking-wider\">\n\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<Heading tag=\"h2\" className=\"text-2xl border-0 pb-0\">{title}</Heading>\n\t\t\t\t\t\t{!!badge && (\n\t\t\t\t\t\t\t<Badge variant={badge.variant ?? 'secondary'}>{badge.label}</Badge>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t<Text type=\"secondary\" className=\"mt-1 max-w-2xl\">{description}</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{!!actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n\t\t\t</div>\n\n\t\t\t{!!children && <div className=\"mt-4\">{children}</div>}\n\n\t\t\t{!!withSeparator && <Separator className=\"mt-4\" />}\n\t\t</header>\n\t);\n}\n\nPageHeader.displayName = 'PageHeader';\n","/**\n * SectionNav — sticky in-page anchor nav. Pass a list of section ids; the active one\n * is tracked via IntersectionObserver and the matching item is highlighted. Click to\n * scroll to that section. Pure JS — no router required.\n */\nimport { useEffect, useState } from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface SectionNavItem {\n\tid: string;\n\tlabel: string;\n\ticon?: LucideIcon;\n}\n\nexport interface SectionNavProps {\n\titems: SectionNavItem[];\n\trootMargin?: string;\n\tclassName?: string;\n\tonSelect?: (id: string) => void;\n}\n\nexport function SectionNav({ items, rootMargin = '-40% 0px -50% 0px', className, onSelect }: SectionNavProps) {\n\tconst [active, setActive] = useState<string | null>(items[0]?.id ?? null);\n\n\tuseEffect(() => {\n\t\tconst obs = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tconst visible = entries.find((e) => e.isIntersecting);\n\t\t\t\tif (visible?.target.id) setActive(visible.target.id);\n\t\t\t},\n\t\t\t{ rootMargin, threshold: 0 },\n\t\t);\n\t\titems.forEach((it) => {\n\t\t\tconst el = document.getElementById(it.id);\n\t\t\tif (el) obs.observe(el);\n\t\t});\n\t\treturn () => obs.disconnect();\n\t}, [items, rootMargin]);\n\n\treturn (\n\t\t<nav className={cn('section-nav--component', 'flex flex-col gap-0.5', className)} aria-label=\"Section navigation\">\n\t\t\t{items.map((it) => {\n\t\t\t\tconst Icon = it.icon;\n\t\t\t\tconst isActive = active === it.id;\n\t\t\t\treturn (\n\t\t\t\t\t<a\n\t\t\t\t\t\tkey={it.id}\n\t\t\t\t\t\thref={`#${it.id}`}\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tdocument.getElementById(it.id)?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t\t\t\t\t\t\tsetActive(it.id);\n\t\t\t\t\t\t\tonSelect?.(it.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex items-center gap-2 rounded-md px-2 py-1.5 transition-colors',\n\t\t\t\t\t\t\tisActive ? 'bg-primary/10 text-primary' : 'text-muted-foreground hover:bg-muted/50 hover:text-foreground',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!Icon && <Icon className=\"size-3.5 shrink-0\" />}\n\t\t\t\t\t\t<Text tag=\"span\" weight={isActive ? 'semibold' : 'medium'}>{it.label}</Text>\n\t\t\t\t\t</a>\n\t\t\t\t);\n\t\t\t})}\n\t\t</nav>\n\t);\n}\n\nSectionNav.displayName = 'SectionNav';\n","/**\n * SideNav — collapsible vertical sidebar navigation. Items can be grouped\n * with a heading and optionally collapsed; each item supports an icon, badge,\n * and active-state highlight. The active item is matched by deepest path\n * prefix so nested routes still highlight their parent group.\n *\n * Use this when AsideNavigationMenu (flat) is not enough — e.g. settings\n * panes with multiple sections, or a primary app nav with collapsible groups.\n */\nimport { ChevronDown, type LucideIcon } from 'lucide-react';\nimport { useMemo, useState, type ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface SideNavItem {\n\tlabel: ReactNode;\n\thref: string;\n\ticon?: LucideIcon;\n\tbadge?: ReactNode;\n\tdisabled?: boolean;\n}\n\nexport interface SideNavGroup {\n\tid: string;\n\tlabel?: ReactNode;\n\titems: SideNavItem[];\n\tdefaultCollapsed?: boolean;\n\tcollapsible?: boolean;\n}\n\nexport interface SideNavProps {\n\t/** Groups of items. Pass a single group with no `label` for an ungrouped list. */\n\tgroups: SideNavGroup[];\n\tcurrentPath?: string;\n\tclassName?: string;\n\titemClassName?: string;\n\tactiveItemClassName?: string;\n\tariaLabel?: string;\n}\n\nfunction normalizePath(rawUrl: string): string {\n\tif (rawUrl.length === 0) return '/';\n\ttry {\n\t\tconst baseOrigin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, baseOrigin);\n\t\tconst trimmed = parsed.pathname.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t} catch {\n\t\tconst clean = rawUrl.split('?')[0] ?? rawUrl;\n\t\tconst trimmed = clean.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t}\n}\n\nexport function SideNav({\n\tgroups,\n\tcurrentPath,\n\tclassName,\n\titemClassName,\n\tactiveItemClassName,\n\tariaLabel = 'Side navigation',\n}: SideNavProps) {\n\tconst rawActivePath = currentPath ?? (typeof window !== 'undefined' ? window.location.pathname : '');\n\tconst activePath = normalizePath(rawActivePath);\n\n\tconst allNormalized = useMemo(() => {\n\t\treturn groups.flatMap((g) =>\n\t\t\tg.items.map((item) => ({ groupId: g.id, normalizedPath: normalizePath(item.href) })),\n\t\t);\n\t}, [groups]);\n\n\tconst activeNormalized =\n\t\tallNormalized\n\t\t\t.filter(\n\t\t\t\t({ normalizedPath }) =>\n\t\t\t\t\tactivePath === normalizedPath || activePath.startsWith(`${normalizedPath}/`),\n\t\t\t)\n\t\t\t.sort((a, b) => b.normalizedPath.length - a.normalizedPath.length)[0]?.normalizedPath ??\n\t\tnull;\n\n\tconst [collapsed, setCollapsed] = useState<Record<string, boolean>>(() =>\n\t\tObject.fromEntries(groups.map((g) => [g.id, Boolean(g.defaultCollapsed)])),\n\t);\n\n\tconst toggleGroup = (id: string) =>\n\t\tsetCollapsed((prev) => ({ ...prev, [id]: !prev[id] }));\n\n\tconst resolvedActive =\n\t\tactiveItemClassName && activeItemClassName.length > 0\n\t\t\t? activeItemClassName\n\t\t\t: 'bg-primary/5 text-primary';\n\n\treturn (\n\t\t<nav className={cn('side-nav--component', 'flex flex-col gap-4', className)} aria-label={ariaLabel}>\n\t\t\t{groups.map((group) => {\n\t\t\t\tconst isCollapsed = group.collapsible !== false && collapsed[group.id];\n\t\t\t\tconst showLabel = !!group.label;\n\t\t\t\tconst shouldRenderItems = !isCollapsed;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={group.id} className=\"flex flex-col gap-1\">\n\t\t\t\t\t\t{!!showLabel && (\n\t\t\t\t\t\t\tgroup.collapsible !== false ? (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => toggleGroup(group.id)}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'flex w-full items-center justify-between px-3 py-1.5 rounded-md',\n\t\t\t\t\t\t\t\t\t\t'text-xs font-medium uppercase tracking-wider text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t'hover:text-foreground transition-colors',\n\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\taria-expanded={!isCollapsed}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span>{group.label}</span>\n\t\t\t\t\t\t\t\t\t<ChevronDown\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'size-3.5 transition-transform',\n\t\t\t\t\t\t\t\t\t\t\tisCollapsed && '-rotate-90',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\tclassName=\"px-3 py-1.5 uppercase tracking-wider\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!shouldRenderItems && (\n\t\t\t\t\t\t\t<div className=\"flex flex-col gap-0.5\">\n\t\t\t\t\t\t\t\t{group.items.map((item) => {\n\t\t\t\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\t\t\t\tconst itemPath = normalizePath(item.href);\n\t\t\t\t\t\t\t\t\tconst isActive = itemPath === activeNormalized;\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={item.href}\n\t\t\t\t\t\t\t\t\t\t\thref={item.disabled ? undefined : item.href}\n\t\t\t\t\t\t\t\t\t\t\taria-current={isActive ? 'page' : undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-disabled={item.disabled || undefined}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'group flex items-center gap-2.5 rounded-md px-3 py-1.5',\n\t\t\t\t\t\t\t\t\t\t\t\t'text-sm transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t\t\t\t'hover:bg-muted/60',\n\t\t\t\t\t\t\t\t\t\t\t\titem.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t\t\t\t\t\t\t\tisActive && resolvedActive,\n\t\t\t\t\t\t\t\t\t\t\t\titemClassName,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-4 shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisActive ? 'text-primary' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"min-w-0 flex-1 truncate\">{item.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant={isActive ? 'primary' : 'secondary'}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</nav>\n\t);\n}\n\nSideNav.displayName = 'SideNav';\n","/**\n * OverflowTabBar — horizontal tab strip that gracefully degrades on narrow\n * containers. Tabs that would overflow are moved into a trailing \"More\"\n * dropdown so the strip never wraps. Uses a ResizeObserver to recompute on\n * container resize; the active tab is always kept visible by being moved\n * out of the overflow set when needed.\n *\n * Pair with `TabNavigationMenu` for fixed sets where overflow is impossible,\n * or with `NavigationTabs` for marketing-weight pill bars.\n */\nimport { MoreHorizontal, type LucideIcon } from 'lucide-react';\nimport { useEffect, useLayoutEffect, useMemo, useRef, useState, type ReactNode } from 'react';\n\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { cn } from '@/lib/utils';\n\nexport interface OverflowTabItem {\n\tid: string;\n\tlabel: ReactNode;\n\thref?: string;\n\ticon?: LucideIcon;\n\tbadge?: ReactNode;\n\tonClick?: () => void;\n}\n\nexport interface OverflowTabBarProps {\n\titems: OverflowTabItem[];\n\t/** Currently active tab id. */\n\tvalue?: string;\n\tonChange?: (id: string) => void;\n\tclassName?: string;\n\ttabClassName?: string;\n\tactiveTabClassName?: string;\n\tmoreLabel?: string;\n\tariaLabel?: string;\n}\n\nconst TAB_BUTTON_BASE =\n\t'inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium whitespace-nowrap transition-colors ' +\n\t'hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40';\n\nexport function OverflowTabBar({\n\titems,\n\tvalue,\n\tonChange,\n\tclassName,\n\ttabClassName,\n\tactiveTabClassName,\n\tmoreLabel = 'More',\n\tariaLabel = 'Tab navigation',\n}: OverflowTabBarProps) {\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\tconst measureRef = useRef<HTMLDivElement | null>(null);\n\tconst [visibleCount, setVisibleCount] = useState(items.length);\n\n\t// Recompute how many tabs fit when container or items change.\n\tuseLayoutEffect(() => {\n\t\tif (!containerRef.current || !measureRef.current) return;\n\t\tconst container = containerRef.current;\n\t\tconst measure = measureRef.current;\n\n\t\tconst compute = () => {\n\t\t\tconst containerWidth = container.clientWidth;\n\t\t\tconst moreReserve = 72; // approximate \"More\" trigger width\n\t\t\tconst buttons = Array.from(measure.querySelectorAll<HTMLElement>('[data-tab-id]'));\n\t\t\tlet used = 0;\n\t\t\tlet count = 0;\n\t\t\tfor (const btn of buttons) {\n\t\t\t\tconst w = btn.offsetWidth + 4; // gap allowance\n\t\t\t\tif (used + w + moreReserve <= containerWidth) {\n\t\t\t\t\tused += w;\n\t\t\t\t\tcount += 1;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetVisibleCount(count === buttons.length ? count : Math.max(1, count));\n\t\t};\n\n\t\tcompute();\n\t\tconst observer = new ResizeObserver(compute);\n\t\tobserver.observe(container);\n\t\treturn () => observer.disconnect();\n\t}, [items]);\n\n\t// Ensure active tab is always visible; if it falls into the overflow set,\n\t// pull it forward by reducing the visible count to where it lives.\n\tconst orderedItems = useMemo(() => {\n\t\tif (!value) return items;\n\t\tconst activeIdx = items.findIndex((i) => i.id === value);\n\t\tif (activeIdx < 0 || activeIdx < visibleCount) return items;\n\t\t// Move active item into the visible window (swap with last visible).\n\t\tconst next = [...items];\n\t\tconst lastVisibleIdx = Math.max(0, visibleCount - 1);\n\t\t[next[activeIdx], next[lastVisibleIdx]] = [next[lastVisibleIdx], next[activeIdx]];\n\t\treturn next;\n\t}, [items, value, visibleCount]);\n\n\tconst visibleItems = orderedItems.slice(0, visibleCount);\n\tconst overflowItems = orderedItems.slice(visibleCount);\n\n\tconst handleSelect = (item: OverflowTabItem) => {\n\t\tonChange?.(item.id);\n\t\titem.onClick?.();\n\t};\n\n\tconst renderTab = (item: OverflowTabItem, isActive: boolean) => {\n\t\tconst Icon = item.icon;\n\t\tconst className = cn(\n\t\t\tTAB_BUTTON_BASE,\n\t\t\tisActive\n\t\t\t\t? cn('bg-card text-foreground shadow-sm', activeTabClassName)\n\t\t\t\t: 'text-muted-foreground hover:bg-muted/60',\n\t\t\ttabClassName,\n\t\t);\n\t\tconst inner = (\n\t\t\t<>\n\t\t\t\t{!!Icon && <Icon className=\"size-3.5\" />}\n\t\t\t\t<span>{item.label}</span>\n\t\t\t\t{!!item.badge && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'ml-1 inline-flex items-center rounded-full px-1.5 py-0.5 text-xxs font-semibold',\n\t\t\t\t\t\t\tisActive ? 'bg-primary/10 text-primary' : 'bg-muted-foreground/10 text-muted-foreground',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t\tif (item.href) {\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\thref={item.href}\n\t\t\t\t\tdata-tab-id={item.id}\n\t\t\t\t\taria-current={isActive ? 'page' : undefined}\n\t\t\t\t\tonClick={() => handleSelect(item)}\n\t\t\t\t\tclassName={cn('overflow-tab-bar--component', className)}\n\t\t\t\t>\n\t\t\t\t\t{inner}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<button\n\t\t\t\tkey={item.id}\n\t\t\t\ttype=\"button\"\n\t\t\t\tdata-tab-id={item.id}\n\t\t\t\taria-pressed={isActive}\n\t\t\t\tonClick={() => handleSelect(item)}\n\t\t\t\tclassName={className}\n\t\t\t>\n\t\t\t\t{inner}\n\t\t\t</button>\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{/* Hidden measure row: always renders all tabs at native width so\n\t\t\t we can measure how many fit. Visually hidden but laid out. */}\n\t\t\t<div\n\t\t\t\tref={measureRef}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName=\"absolute -top-[9999px] left-0 inline-flex items-center gap-1 invisible\"\n\t\t\t>\n\t\t\t\t{items.map((i) => renderTab(i, false))}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\trole=\"tablist\"\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={cn('relative inline-flex items-center gap-1 rounded-lg bg-muted/40 p-1', className)}\n\t\t\t>\n\t\t\t\t{visibleItems.map((item) => renderTab(item, item.id === value))}\n\t\t\t\t{overflowItems.length > 0 && (\n\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label={moreLabel}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\tTAB_BUTTON_BASE,\n\t\t\t\t\t\t\t\t'text-muted-foreground hover:bg-muted/60',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<MoreHorizontal className=\"size-3.5\" />\n\t\t\t\t\t\t\t<span>{moreLabel}</span>\n\t\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t\t<DropdownMenuContent align=\"end\" className=\"min-w-[160px]\">\n\t\t\t\t\t\t\t{overflowItems.map((item) => {\n\t\t\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleSelect(item)}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'text-xs gap-1.5 px-2 py-1.5',\n\t\t\t\t\t\t\t\t\t\t\titem.id === value && 'bg-primary/5 text-primary',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{!!Icon && <Icon className=\"size-3.5\" />}\n\t\t\t\t\t\t\t\t\t\t<span>{item.label}</span>\n\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nOverflowTabBar.displayName = 'OverflowTabBar';\n\n// useEffect is referenced indirectly through useLayoutEffect above; keep the\n// import so SSR builds that fall back to useEffect still compile cleanly.\nvoid useEffect;\n"],"mappings":"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"}
|