admin-ui-starter-kit 0.4.2 → 0.4.4
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/admin-ui-consumer-migration/SKILL.md +10 -0
- package/.agents/skills/admin-ui-consumer-migration/references/actions-service.md +236 -0
- package/.agents/skills/component-library-rules/SKILL.md +7 -1
- package/.agents/skills/component-library-rules/references/base-wrapper.md +24 -4
- package/.agents/skills/component-library-rules/references/components/INDEX.json +4 -3
- package/.agents/skills/component-library-rules/references/components/INDEX.md +4 -3
- package/.agents/skills/component-library-rules/references/components/ui__inputs.md +117 -18
- package/.agents/skills/component-library-rules/references/components/ui__layout-primitives.md +71 -0
- package/.agents/skills/component-library-rules/references/components/ui__menus.md +125 -43
- package/.agents/skills/component-library-rules/references/components/ui__overlays.md +117 -42
- package/AGENTS.md +7 -4
- package/CHANGELOG.md +26 -1
- package/COMPONENT_SELECTION.md +10 -1
- package/INTEGRATION.md +47 -0
- package/README.md +62 -5
- package/dist/_shared/accordion-Df1XrCDv.cjs +2 -0
- package/dist/_shared/accordion-Df1XrCDv.cjs.map +1 -0
- package/dist/_shared/accordion-Rzi9wEl6.js +130 -0
- package/dist/_shared/accordion-Rzi9wEl6.js.map +1 -0
- package/dist/_shared/action-menu-CrOJ63Q9.js +96 -0
- package/dist/_shared/action-menu-CrOJ63Q9.js.map +1 -0
- package/dist/_shared/action-menu-D9OowHKx.cjs +2 -0
- package/dist/_shared/action-menu-D9OowHKx.cjs.map +1 -0
- package/dist/_shared/ai-artifact-D4EjKoq6.cjs +3 -0
- package/dist/_shared/ai-artifact-D4EjKoq6.cjs.map +1 -0
- package/dist/_shared/ai-artifact-nlOrSeqT.js +1099 -0
- package/dist/_shared/ai-artifact-nlOrSeqT.js.map +1 -0
- package/dist/_shared/auth-C5HawWvp.cjs +2 -0
- package/dist/_shared/auth-C5HawWvp.cjs.map +1 -0
- package/dist/_shared/auth-DnMEJXP9.js +643 -0
- package/dist/_shared/auth-DnMEJXP9.js.map +1 -0
- package/dist/_shared/badge-6WYAMJwA.js +108 -0
- package/dist/_shared/badge-6WYAMJwA.js.map +1 -0
- package/dist/_shared/badge-CBof1rbF.cjs +2 -0
- package/dist/_shared/badge-CBof1rbF.cjs.map +1 -0
- package/dist/_shared/button-BGKY8UY0.js +173 -0
- package/dist/_shared/button-BGKY8UY0.js.map +1 -0
- package/dist/_shared/button-BI347RlM.cjs +2 -0
- package/dist/_shared/button-BI347RlM.cjs.map +1 -0
- package/dist/_shared/button-DEFoa7-c.cjs +2 -0
- package/dist/_shared/button-DEFoa7-c.cjs.map +1 -0
- package/dist/_shared/button-DlqryxqA.js +46 -0
- package/dist/_shared/button-DlqryxqA.js.map +1 -0
- package/dist/_shared/buttons-PL-TGJ32.js +143 -0
- package/dist/_shared/buttons-PL-TGJ32.js.map +1 -0
- package/dist/_shared/buttons-kVvSD_oI.cjs +2 -0
- package/dist/_shared/buttons-kVvSD_oI.cjs.map +1 -0
- package/dist/_shared/combobox-B4KmDZK0.cjs +2 -0
- package/dist/_shared/combobox-B4KmDZK0.cjs.map +1 -0
- package/dist/_shared/combobox-YUGi3xSc.js +810 -0
- package/dist/_shared/combobox-YUGi3xSc.js.map +1 -0
- package/dist/_shared/comments-GzXdwpq4.js +952 -0
- package/dist/_shared/comments-GzXdwpq4.js.map +1 -0
- package/dist/_shared/comments-Zj_foV1V.cjs +2 -0
- package/dist/_shared/comments-Zj_foV1V.cjs.map +1 -0
- package/dist/_shared/date-picker-Dl91BM3D.js +1361 -0
- package/dist/_shared/date-picker-Dl91BM3D.js.map +1 -0
- package/dist/_shared/date-picker-zFOqtmAS.cjs +2 -0
- package/dist/_shared/date-picker-zFOqtmAS.cjs.map +1 -0
- package/dist/_shared/date-pickers-BBydcIjN.cjs +2 -0
- package/dist/_shared/date-pickers-BBydcIjN.cjs.map +1 -0
- package/dist/_shared/date-pickers-D2OsgV4V.js +330 -0
- package/dist/_shared/date-pickers-D2OsgV4V.js.map +1 -0
- package/dist/_shared/dialog-CCN4tjU9.js +101 -0
- package/dist/_shared/dialog-CCN4tjU9.js.map +1 -0
- package/dist/_shared/dialog-Dd0ENSrU.cjs +2 -0
- package/dist/_shared/dialog-Dd0ENSrU.cjs.map +1 -0
- package/dist/_shared/display-Dhy5ogxC.cjs +2 -0
- package/dist/_shared/display-Dhy5ogxC.cjs.map +1 -0
- package/dist/_shared/display-NBtWdAMl.js +1154 -0
- package/dist/_shared/display-NBtWdAMl.js.map +1 -0
- package/dist/_shared/forms-BweX9Lm8.cjs +2 -0
- package/dist/_shared/forms-BweX9Lm8.cjs.map +1 -0
- package/dist/_shared/forms-L1hyNKpZ.js +3430 -0
- package/dist/_shared/forms-L1hyNKpZ.js.map +1 -0
- package/dist/_shared/header-BSBPtGn4.cjs +2 -0
- package/dist/_shared/header-BSBPtGn4.cjs.map +1 -0
- package/dist/_shared/header-No6GSp4R.js +360 -0
- package/dist/_shared/header-No6GSp4R.js.map +1 -0
- package/dist/_shared/hooks-BkXvZ4py.js +118 -0
- package/dist/_shared/hooks-BkXvZ4py.js.map +1 -0
- package/dist/_shared/hooks-D3SbLBRk.cjs +2 -0
- package/dist/_shared/hooks-D3SbLBRk.cjs.map +1 -0
- package/dist/_shared/mentions-CA1Ka_Bv.cjs +2 -0
- package/dist/_shared/mentions-CA1Ka_Bv.cjs.map +1 -0
- package/dist/_shared/mentions-CdvvLGQG.js +506 -0
- package/dist/_shared/mentions-CdvvLGQG.js.map +1 -0
- package/dist/_shared/metadata-Ckcmar8d.js +235 -0
- package/dist/_shared/metadata-Ckcmar8d.js.map +1 -0
- package/dist/_shared/metadata-DamdYVZL.cjs +2 -0
- package/dist/_shared/metadata-DamdYVZL.cjs.map +1 -0
- package/dist/_shared/navigation-BemwPPC8.cjs +2 -0
- package/dist/_shared/navigation-BemwPPC8.cjs.map +1 -0
- package/dist/_shared/navigation-DY540HB0.js +419 -0
- package/dist/_shared/navigation-DY540HB0.js.map +1 -0
- package/dist/_shared/overlays-CJs_syAu.js +648 -0
- package/dist/_shared/overlays-CJs_syAu.js.map +1 -0
- package/dist/_shared/overlays-DWFEaAog.cjs +2 -0
- package/dist/_shared/overlays-DWFEaAog.cjs.map +1 -0
- package/dist/_shared/page-Cg_gNpyK.js +262 -0
- package/dist/_shared/page-Cg_gNpyK.js.map +1 -0
- package/dist/_shared/page-CpFWQuWU.cjs +2 -0
- package/dist/_shared/page-CpFWQuWU.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-B2VqNi6j.js +620 -0
- package/dist/_shared/rich-text-editor-B2VqNi6j.js.map +1 -0
- package/dist/_shared/rich-text-editor-ChE-pI3N.cjs +2 -0
- package/dist/_shared/rich-text-editor-ChE-pI3N.cjs.map +1 -0
- package/dist/_shared/sheet-BOgUA4fC.cjs +2 -0
- package/dist/_shared/sheet-BOgUA4fC.cjs.map +1 -0
- package/dist/_shared/sheet-DWQuyRRz.js +100 -0
- package/dist/_shared/sheet-DWQuyRRz.js.map +1 -0
- package/dist/_shared/sidebar-BGpi9K_Q.js +389 -0
- package/dist/_shared/sidebar-BGpi9K_Q.js.map +1 -0
- package/dist/_shared/sidebar-BTFfxmNG.cjs +2 -0
- package/dist/_shared/sidebar-BTFfxmNG.cjs.map +1 -0
- package/dist/_shared/sidebar-CC3lcvNX.cjs +2 -0
- package/dist/_shared/sidebar-CC3lcvNX.cjs.map +1 -0
- package/dist/_shared/sidebar-wmztVpnO.js +538 -0
- package/dist/_shared/sidebar-wmztVpnO.js.map +1 -0
- package/dist/_shared/smart-card-B6m7tmt0.cjs +2 -0
- package/dist/_shared/smart-card-B6m7tmt0.cjs.map +1 -0
- package/dist/_shared/smart-card-thLb85Ih.js +361 -0
- package/dist/_shared/smart-card-thLb85Ih.js.map +1 -0
- package/dist/_shared/table-BItnJ8lG.cjs +2 -0
- package/dist/_shared/table-BItnJ8lG.cjs.map +1 -0
- package/dist/_shared/table-D3349b-v.js +1189 -0
- package/dist/_shared/table-D3349b-v.js.map +1 -0
- package/dist/_shared/workspace-BGVeTeJy.js +357 -0
- package/dist/_shared/workspace-BGVeTeJy.js.map +1 -0
- package/dist/_shared/workspace-CWyzTUmE.cjs +2 -0
- package/dist/_shared/workspace-CWyzTUmE.cjs.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/carousel/index.cjs +1 -1
- package/dist/components/base/carousel/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/date-pickers/index.cjs +1 -1
- package/dist/components/base/date-pickers/index.js +2 -2
- package/dist/components/base/display/alert.d.ts +1 -1
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.js +6 -6
- package/dist/components/base/display/metadata/index.cjs +1 -1
- package/dist/components/base/display/metadata/index.js +1 -1
- package/dist/components/base/event-calendar/index.cjs +1 -1
- package/dist/components/base/event-calendar/index.js +41 -41
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.js +1 -1
- package/dist/components/base/map/index.cjs +1 -1
- package/dist/components/base/map/index.js +31 -31
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/index.js +2 -2
- 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 +2 -2
- package/dist/components/base/sidebar/sidebar.d.ts +5 -3
- package/dist/components/base/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/base/table/index.cjs +1 -1
- package/dist/components/base/table/index.js +1 -1
- package/dist/components/composed/admin/index.cjs +1 -1
- package/dist/components/composed/admin/index.js +47 -47
- package/dist/components/composed/ai/index.cjs +1 -1
- package/dist/components/composed/ai/index.js +105 -105
- package/dist/components/composed/analytics/index.cjs +1 -1
- package/dist/components/composed/analytics/index.js +89 -89
- package/dist/components/composed/cards/index.cjs +1 -1
- package/dist/components/composed/cards/index.js +116 -116
- package/dist/components/composed/commerce/index.cjs +1 -1
- package/dist/components/composed/commerce/index.js +127 -127
- package/dist/components/composed/dark-surfaces/index.cjs +1 -1
- package/dist/components/composed/dark-surfaces/index.js +37 -37
- package/dist/components/composed/data-display/index.cjs +1 -1
- package/dist/components/composed/data-display/index.js +3 -3
- package/dist/components/composed/navigation/index.cjs +1 -1
- package/dist/components/composed/navigation/index.js +55 -55
- package/dist/components/composed/onboarding/index.cjs +1 -1
- package/dist/components/composed/onboarding/index.js +1 -1
- 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 +56 -56
- package/dist/components/features/ai-chat/index.cjs +2 -2
- package/dist/components/features/ai-chat/index.js +53 -53
- package/dist/components/features/card/index.cjs +1 -1
- package/dist/components/features/card/index.js +21 -21
- 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 +143 -143
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.js +57 -57
- package/dist/components/features/kanban/index.cjs +1 -1
- package/dist/components/features/kanban/index.js +14 -14
- package/dist/components/features/media-library/index.cjs +1 -1
- package/dist/components/features/media-library/index.js +178 -178
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts.map +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts.map +1 -1
- package/dist/components/features/overlays/index.cjs +1 -1
- package/dist/components/features/overlays/index.js +1 -1
- package/dist/components/features/overlays/overlays.types.d.ts +1 -0
- package/dist/components/features/overlays/overlays.types.d.ts.map +1 -1
- package/dist/components/features/products/index.cjs +1 -1
- package/dist/components/features/products/index.js +124 -124
- 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/schema-form/index.cjs +1 -1
- package/dist/components/features/schema-form/index.js +26 -26
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.js +1 -1
- package/dist/components/layout/auth/index.cjs +1 -1
- package/dist/components/layout/auth/index.js +1 -1
- package/dist/components/layout/header/index.cjs +1 -1
- package/dist/components/layout/header/index.js +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts.map +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/components/sidebar-grouped-navigation.d.ts.map +1 -1
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.js +2 -2
- package/dist/components/layout/workspace/index.cjs +1 -1
- package/dist/components/layout/workspace/index.js +1 -1
- package/dist/components/ui/alert-dialog.d.ts +19 -0
- package/dist/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert.d.ts +1 -1
- package/dist/components/ui/aspect-ratio.d.ts +5 -0
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/carousel.d.ts +29 -0
- package/dist/components/ui/carousel.d.ts.map +1 -0
- package/dist/components/ui/direction.d.ts +2 -0
- package/dist/components/ui/direction.d.ts.map +1 -0
- package/dist/components/ui/drawer.d.ts +14 -0
- package/dist/components/ui/drawer.d.ts.map +1 -0
- package/dist/components/ui/field.d.ts +25 -0
- package/dist/components/ui/field.d.ts.map +1 -0
- package/dist/components/ui/input-otp.d.ts +12 -0
- package/dist/components/ui/input-otp.d.ts.map +1 -0
- package/dist/components/ui/kbd.d.ts +4 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/label.d.ts +4 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/menubar.d.ts +30 -0
- package/dist/components/ui/menubar.d.ts.map +1 -0
- package/dist/components/ui/native-select.d.ts +9 -0
- package/dist/components/ui/native-select.d.ts.map +1 -0
- package/dist/components/ui/navigation-menu.d.ts +12 -0
- package/dist/components/ui/navigation-menu.d.ts.map +1 -0
- package/dist/components/ui/resizable.d.ts +8 -0
- package/dist/components/ui/resizable.d.ts.map +1 -0
- package/dist/services/actions/action-overlay-outlet.d.ts +4 -0
- package/dist/services/actions/action-overlay-outlet.d.ts.map +1 -0
- package/dist/services/actions/action-provider.d.ts +8 -0
- package/dist/services/actions/action-provider.d.ts.map +1 -0
- package/dist/services/actions/action-scope.d.ts +4 -0
- package/dist/services/actions/action-scope.d.ts.map +1 -0
- package/dist/services/actions/action-store.d.ts +44 -0
- package/dist/services/actions/action-store.d.ts.map +1 -0
- package/dist/services/actions/actions.strings.d.ts +3 -0
- package/dist/services/actions/actions.strings.d.ts.map +1 -0
- package/dist/services/actions/actions.types.d.ts +248 -0
- package/dist/services/actions/actions.types.d.ts.map +1 -0
- package/dist/services/actions/hooks.d.ts +8 -0
- package/dist/services/actions/hooks.d.ts.map +1 -0
- package/dist/services/actions/index.cjs +2 -0
- package/dist/services/actions/index.cjs.map +1 -0
- package/dist/services/actions/index.d.ts +8 -0
- package/dist/services/actions/index.d.ts.map +1 -0
- package/dist/services/actions/index.js +562 -0
- package/dist/services/actions/index.js.map +1 -0
- package/dist/showcase/assets/AreaChart-BYEewdc_.js +6 -0
- package/dist/showcase/assets/CSPContext-B11tftuK.js +1 -0
- package/dist/showcase/assets/CompositeItem-Duekeg4m.js +1 -0
- package/dist/showcase/assets/CompositeRoot-BgNU3T7R.js +1 -0
- package/dist/showcase/assets/DialogTrigger-9xWmoeF5.js +1 -0
- package/dist/showcase/assets/FieldItemContext-BSFHjS7g.js +1 -0
- package/dist/showcase/assets/LabelableContext-B3W_70Qk.js +1 -0
- package/dist/showcase/assets/PreviewLayout-nADJqRlP.js +1 -0
- package/dist/showcase/assets/RadioGroup-Bp1VCzxr.js +1 -0
- package/dist/showcase/assets/Separator-9PWX3shz.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-DwELw9xS.js +1 -0
- package/dist/showcase/assets/accordion-CfqHO9_z.js +171 -0
- package/dist/showcase/assets/accordion-variants-pkPHxkLW.js +1 -0
- package/dist/showcase/assets/action-menu-DFzSuDjI.js +1 -0
- package/dist/showcase/assets/activities-Bo97b2-I.js +501 -0
- package/dist/showcase/assets/activities-feed-card-D77gf27B.js +1 -0
- package/dist/showcase/assets/activity-BUlCWLI8.js +1 -0
- package/dist/showcase/assets/admin-CxTV4kZX.js +80 -0
- package/dist/showcase/assets/ai-Bym5H8bn.js +41 -0
- package/dist/showcase/assets/ai-artifact-DZVl1WmK.js +2 -0
- package/dist/showcase/assets/ai-chat-M3X5-PgT.js +568 -0
- package/dist/showcase/assets/ai-elements-DjppcMBD.js +387 -0
- package/dist/showcase/assets/ai-new-CXnrIi5S.js +167 -0
- package/dist/showcase/assets/ai-tool-call-DyMI8DqD.js +1 -0
- package/dist/showcase/assets/alert-D6Pygy2s.js +62 -0
- package/dist/showcase/assets/alert-DCrWLbEx.js +93 -0
- package/dist/showcase/assets/alert-qTNM0vld.js +1 -0
- package/dist/showcase/assets/api-key-list-CCpuHYHc.js +73 -0
- package/dist/showcase/assets/app-sidebar-CxTRNC5L.js +1 -0
- package/dist/showcase/assets/arrow-down--phuskCV.js +1 -0
- package/dist/showcase/assets/arrow-left-B__WWqyA.js +1 -0
- package/dist/showcase/assets/arrow-right-1-EvXxjB.js +1 -0
- package/dist/showcase/assets/arrow-up-lWotnmo7.js +1 -0
- package/dist/showcase/assets/arrow-up-right-IyQ3oeq0.js +1 -0
- package/dist/showcase/assets/avatar-gugtNx4D.js +57 -0
- package/dist/showcase/assets/avatar-n1nywTlx.js +1 -0
- package/dist/showcase/assets/badge-TuE-u3Hv.js +28 -0
- package/dist/showcase/assets/badge-check-CPDvpVzK.js +1 -0
- package/dist/showcase/assets/bell-DeCVddCA.js +1 -0
- package/dist/showcase/assets/bot-B_vzJEJH.js +1 -0
- package/dist/showcase/assets/box-z4O8t_K5.js +1 -0
- package/dist/showcase/assets/brain-DdKBE4Bh.js +1 -0
- package/dist/showcase/assets/brand-CfW7mgTY.js +36 -0
- package/dist/showcase/assets/breadcrumb-B4TBbKv3.js +52 -0
- package/dist/showcase/assets/breadcrumb-bF_sFVBL.js +1 -0
- package/dist/showcase/assets/breadcrumbs-CBv3EaMX.js +1 -0
- package/dist/showcase/assets/briefcase-ClqzeNt3.js +1 -0
- package/dist/showcase/assets/building-2-BQuWgjZj.js +1 -0
- package/dist/showcase/assets/button-CWKNCI82.js +44 -0
- package/dist/showcase/assets/button-group-BYhxtFwV.js +1 -0
- package/dist/showcase/assets/buttons-mBRyBw3Q.js +270 -0
- package/dist/showcase/assets/calendar-BgloJjlW.js +1 -0
- package/dist/showcase/assets/calendar-CJDWspzi.js +1 -0
- package/dist/showcase/assets/calendar-CgML2kJt.js +16 -0
- package/dist/showcase/assets/calendar-days-C0gTLVnY.js +1 -0
- package/dist/showcase/assets/camera-nIlaz4Sn.js +1 -0
- package/dist/showcase/assets/card-1ncRnRvq.js +1 -0
- package/dist/showcase/assets/card-CcgWzFB-.js +188 -0
- package/dist/showcase/assets/card-primitives-By4-RTuP.js +1 -0
- package/dist/showcase/assets/card-radio-group-DeX3qsRg.js +1 -0
- package/dist/showcase/assets/cards-DdqQr8rY.js +328 -0
- package/dist/showcase/assets/carousel-CV8ltDl8.js +449 -0
- package/dist/showcase/assets/chart-BNzHjskC.js +358 -0
- package/dist/showcase/assets/chart-column-CpTxRLEH.js +1 -0
- package/dist/showcase/assets/checkbox-CZTTm4Dv.js +1 -0
- package/dist/showcase/assets/chevron-down-LWBNHe9S.js +1 -0
- package/dist/showcase/assets/chevron-left-BsshO7nf.js +1 -0
- package/dist/showcase/assets/chevron-right-t68um2_G.js +1 -0
- package/dist/showcase/assets/chevron-up-DjhlESJB.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-ZUo0Do59.js +1 -0
- package/dist/showcase/assets/circle-BL52dLr9.js +1 -0
- package/dist/showcase/assets/circle-alert-CXCt6zxc.js +1 -0
- package/dist/showcase/assets/circle-check-CbiRRw7s.js +1 -0
- package/dist/showcase/assets/circle-check-big-BSgn7lyt.js +1 -0
- package/dist/showcase/assets/circle-dot-WEOpGGJf.js +1 -0
- package/dist/showcase/assets/circle-question-mark-C9hLlsD7.js +1 -0
- package/dist/showcase/assets/circle-x-BT9TJbJC.js +1 -0
- package/dist/showcase/assets/clock-3-CfRK8ckc.js +1 -0
- package/dist/showcase/assets/clock-D-3zf0c1.js +1 -0
- package/dist/showcase/assets/code-xml-CQYKKuBU.js +1 -0
- package/dist/showcase/assets/collapsible-BC0hQvat.js +27 -0
- package/dist/showcase/assets/collapsible-CRVtVDCF.js +1 -0
- package/dist/showcase/assets/combobox-D4VYvYCT.js +696 -0
- package/dist/showcase/assets/command-CxeHT4lL.js +1 -0
- package/dist/showcase/assets/command-Do_t_Zou.js +1 -0
- package/dist/showcase/assets/comment-composer-DoFwvVlq.js +1 -0
- package/dist/showcase/assets/comment-item-CT8UbVeg.js +1 -0
- package/dist/showcase/assets/comments-CqdXrjUn.js +357 -0
- package/dist/showcase/assets/commerce-B9V2Wo_q.js +79 -0
- package/dist/showcase/assets/commerce-extras-CNT3QmAT.js +189 -0
- package/dist/showcase/assets/composite-BXLXcagx.js +1 -0
- package/dist/showcase/assets/contact-card-BLcAXepj.js +65 -0
- package/dist/showcase/assets/content-container-DJVD3ZmI.js +1 -0
- package/dist/showcase/assets/copyable-od17NrMu.js +96 -0
- package/dist/showcase/assets/course-card-CdZQr5yy.js +77 -0
- package/dist/showcase/assets/cpu-B8kRNR1R.js +1 -0
- package/dist/showcase/assets/credit-card-BYMQj03s.js +1 -0
- package/dist/showcase/assets/currency-Cxv3Cp6B.js +149 -0
- package/dist/showcase/assets/dark-surfaces-Cfp58iFb.js +90 -0
- package/dist/showcase/assets/database-DuUABvxU.js +1 -0
- package/dist/showcase/assets/date-block-E9qfY7W7.js +1 -0
- package/dist/showcase/assets/date-picker-I8BdaiiU.js +1 -0
- package/dist/showcase/assets/date-pickers-BLJaqhcS.js +73 -0
- package/dist/showcase/assets/dense-info-Bk1K_7Ww.js +106 -0
- package/dist/showcase/assets/dialog-BuatDnQ9.js +1 -0
- package/dist/showcase/assets/dialog-DCx-LydW.js +1 -0
- package/dist/showcase/assets/display-Bt7busw5.js +403 -0
- package/dist/showcase/assets/dist-BPyBHOXU.js +45 -0
- package/dist/showcase/assets/dollar-sign-qXQSS6Gh.js +1 -0
- package/dist/showcase/assets/download-B2JAmHmJ.js +1 -0
- package/dist/showcase/assets/dropdown-menu-DXT3BZLa.js +1 -0
- package/dist/showcase/assets/dropzone-BKIxDJNy.js +1 -0
- package/dist/showcase/assets/earth-7-Z3Gv2v.js +1 -0
- package/dist/showcase/assets/ellipsis-6Krb3RRW.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-DeOMIw1J.js +1 -0
- package/dist/showcase/assets/empty-BSYKaeXQ.js +1 -0
- package/dist/showcase/assets/empty-item-YElgv25f.js +49 -0
- package/dist/showcase/assets/empty-state-D-LrvnKF.js +1 -0
- package/dist/showcase/assets/empty-state-dNh1GtVU.js +188 -0
- package/dist/showcase/assets/enhanced-activities-Bw99ItYl.js +361 -0
- package/dist/showcase/assets/enhanced-combobox-CqLZmU3K.js +1 -0
- package/dist/showcase/assets/event-calendar-CcSi7g5A.js +138 -0
- package/dist/showcase/assets/event-log-2uq-eYxh.js +330 -0
- package/dist/showcase/assets/example-CTJ8AdNR.js +1 -0
- package/dist/showcase/assets/external-link-D0gqSa1q.js +1 -0
- package/dist/showcase/assets/eye-CDMCDLei.js +1 -0
- package/dist/showcase/assets/feature-announcement-BlyNck35.js +34 -0
- package/dist/showcase/assets/file-Y5EbzufX.js +1 -0
- package/dist/showcase/assets/file-text-DH1mBuPi.js +1 -0
- package/dist/showcase/assets/filters-BtHF4GSM.js +78 -0
- package/dist/showcase/assets/flag-CJ08LwLY.js +1 -0
- package/dist/showcase/assets/folder-open-DODo2pjy.js +1 -0
- package/dist/showcase/assets/form-field-CHY7jh1q.js +1 -0
- package/dist/showcase/assets/format-DYJqAuDM.js +1 -0
- package/dist/showcase/assets/forms-DgvQQXHO.js +862 -0
- package/dist/showcase/assets/frame-CdKicP4A.js +167 -0
- package/dist/showcase/assets/getPseudoElementBounds-D9-Hr3mO.js +1 -0
- package/dist/showcase/assets/gift-DD8O7cld.js +1 -0
- package/dist/showcase/assets/giftcard-cards-Dp9eYodY.js +85 -0
- package/dist/showcase/assets/git-branch-DZq1Vo2G.js +1 -0
- package/dist/showcase/assets/global-search-BqDotXql.js +215 -0
- package/dist/showcase/assets/global-search-PH6LXqZw.js +1 -0
- package/dist/showcase/assets/globe-mRTwrUxM.js +1 -0
- package/dist/showcase/assets/gradient-card-CaL88YKv.js +58 -0
- package/dist/showcase/assets/hash-DuqvHQHv.js +1 -0
- package/dist/showcase/assets/header-CiNgDop3.js +1 -0
- package/dist/showcase/assets/header-notifications-B9XMBsK_.js +1 -0
- package/dist/showcase/assets/heart-DsGJfnDx.js +1 -0
- package/dist/showcase/assets/house-B504aFIP.js +1 -0
- package/dist/showcase/assets/icon-badge-DMNu8xb5.js +1 -0
- package/dist/showcase/assets/image-C3DaMxmn.js +1 -0
- package/dist/showcase/assets/inbox-BWKQMLMx.js +1 -0
- package/dist/showcase/assets/index-DN3tqopz.css +2 -0
- package/dist/showcase/assets/index-DaYVSqKu.js +10 -0
- package/dist/showcase/assets/inertValue-DrtTkMGx.js +1 -0
- package/dist/showcase/assets/info-_FrGoCay.js +1 -0
- package/dist/showcase/assets/inline-stat-BYu-tiUU.js +1 -0
- package/dist/showcase/assets/input-C96HMHWR.js +1 -0
- package/dist/showcase/assets/input-fMPi7XxI.js +1 -0
- package/dist/showcase/assets/input-group-BZnSgFCn.js +47 -0
- package/dist/showcase/assets/input-group-CVONNP3T.js +1 -0
- package/dist/showcase/assets/inputs-Blh0LJ8-.js +155 -0
- package/dist/showcase/assets/invoice-header-Bpo4iwX3.js +36 -0
- package/dist/showcase/assets/invoice-items-OVIrbG0k.js +36 -0
- package/dist/showcase/assets/invoice-mini-CaOMTiUO.js +14 -0
- package/dist/showcase/assets/invoice-table-BXd_HhUg.js +30 -0
- package/dist/showcase/assets/isSameDay-NBVO9AKF.js +1 -0
- package/dist/showcase/assets/isToday-Bk5HMXWn.js +1 -0
- package/dist/showcase/assets/italic-BOv5bW4H.js +1 -0
- package/dist/showcase/assets/item-B4rdcVVp.js +134 -0
- package/dist/showcase/assets/item-BVt0zZ12.js +1 -0
- package/dist/showcase/assets/item-C4Xk3DC1.js +1 -0
- package/dist/showcase/assets/kanban-BXbelelR.js +186 -0
- package/dist/showcase/assets/label-Cv6wotdv.js +1 -0
- package/dist/showcase/assets/languages-BofyvcCF.js +1 -0
- package/dist/showcase/assets/layers-DJK0t5px.js +1 -0
- package/dist/showcase/assets/layout-app-shell-D_yMonSl.js +608 -0
- package/dist/showcase/assets/layout-auth-BTvSTwUz.js +754 -0
- package/dist/showcase/assets/layout-containers-PMuo__2O.js +101 -0
- package/dist/showcase/assets/layout-header-DQ3zeCHz.js +170 -0
- package/dist/showcase/assets/layout-page-CbvWdHrK.js +122 -0
- package/dist/showcase/assets/layout-primitives-6nsFFIdE.js +34 -0
- package/dist/showcase/assets/layout-sidebar-CKqeVCSY.js +224 -0
- package/dist/showcase/assets/layout-users-Cypq-42s.js +117 -0
- package/dist/showcase/assets/layout-workspace-DiRR8vDv.js +183 -0
- package/dist/showcase/assets/lock-DXmvLEEx.js +1 -0
- package/dist/showcase/assets/lock-keyhole-Cu6M-jjE.js +1 -0
- package/dist/showcase/assets/mail-CXVFHkzh.js +1 -0
- package/dist/showcase/assets/mail-check-BNEu3j2a.js +1 -0
- package/dist/showcase/assets/map-DnE1pFCQ.js +124 -0
- package/dist/showcase/assets/map-pin-CpOVa8IH.js +1 -0
- package/dist/showcase/assets/media-library-C-KfEvm4.js +695 -0
- package/dist/showcase/assets/mention-inline-suggestions-DlmslsfR.js +1 -0
- package/dist/showcase/assets/mentions-C8ZdNFuC.js +138 -0
- package/dist/showcase/assets/menus-B8yUL75K.js +165 -0
- package/dist/showcase/assets/message-square-DNOTaOFs.js +1 -0
- package/dist/showcase/assets/metadata-list-BQAanxM-.js +1 -0
- package/dist/showcase/assets/metadata-list-DL9qgDAp.js +288 -0
- package/dist/showcase/assets/metric-CYi09Ltx.js +1 -0
- package/dist/showcase/assets/metric-bar-CQH1z8T3.js +1 -0
- package/dist/showcase/assets/metric-grid-H1ixqMCI.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-BBzWzFZ-.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-C7Z2ITl4.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-CZZSWiMn.js +50 -0
- package/dist/showcase/assets/metrics-comparison-BPqz8k30.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-C3NYZAfx.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-RjHfm7um.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-DnBjyDH4.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-CKn405qb.js +42 -0
- package/dist/showcase/assets/metrics-overview-D8YGtdrh.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-Dxh6cAha.js +54 -0
- package/dist/showcase/assets/minus-20OTSSxf.js +1 -0
- package/dist/showcase/assets/money-display-BoiAMxH8.js +1 -0
- package/dist/showcase/assets/month-year-picker-Bl59Ygq9.js +1 -0
- package/dist/showcase/assets/navigation-B8d2CDU6.js +90 -0
- package/dist/showcase/assets/navigation-D16JX3kL.js +230 -0
- package/dist/showcase/assets/navigation-extras-Dm83uT6i.js +43 -0
- package/dist/showcase/assets/onboarding-checklist-DznDpP9M.js +119 -0
- package/dist/showcase/assets/overlays-CzlSqbFz.js +408 -0
- package/dist/showcase/assets/overlays-DUFqbkb9.js +159 -0
- package/dist/showcase/assets/package-BCXIwEPz.js +1 -0
- package/dist/showcase/assets/package-check-Ol-Cw3j-.js +1 -0
- package/dist/showcase/assets/page-action-button-DpzdSYvw.js +1 -0
- package/dist/showcase/assets/page-header-B_b7SqW8.js +1 -0
- package/dist/showcase/assets/pagination-BPDQo9Dl.js +1 -0
- package/dist/showcase/assets/pagination-PvkEX0qs.js +42 -0
- package/dist/showcase/assets/paperclip-CznEsmLN.js +1 -0
- package/dist/showcase/assets/password-input-CWMY5q3b.js +1 -0
- package/dist/showcase/assets/pencil-Cl9qi90g.js +1 -0
- package/dist/showcase/assets/phone-DbvK_QQJ.js +1 -0
- package/dist/showcase/assets/plus-CO8t66Yo.js +1 -0
- package/dist/showcase/assets/popover-3QIVx9lU.js +1 -0
- package/dist/showcase/assets/popover-Cyg9oYIU.js +1 -0
- package/dist/showcase/assets/popover-menu-DJPHeIL1.js +1 -0
- package/dist/showcase/assets/products-WsU-qdMz.js +407 -0
- package/dist/showcase/assets/progress-C61sf-qt.js +1 -0
- package/dist/showcase/assets/progress-PvTl8Fgf.js +18 -0
- package/dist/showcase/assets/props-table-C8la6vcG.js +1 -0
- package/dist/showcase/assets/props.generated-vFrhDrth.json +38618 -0
- package/dist/showcase/assets/quote-N1_lRDnX.js +1 -0
- package/dist/showcase/assets/receipt-C6a_WyLu.js +1 -0
- package/dist/showcase/assets/receipt-text-CDOh8FAv.js +1 -0
- package/dist/showcase/assets/refresh-cw-D4-ECZ1x.js +1 -0
- package/dist/showcase/assets/resolveAriaLabelledBy-iFo8AzEr.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-DqAP3zJd.js +1 -0
- package/dist/showcase/assets/rich-text-editor-CU0IZpwV.js +143 -0
- package/dist/showcase/assets/rich-text-editor-DCU7mMoO.js +124 -0
- package/dist/showcase/assets/rotate-ccw-Dd5zEmr7.js +1 -0
- package/dist/showcase/assets/save-DDmFSQli.js +1 -0
- package/dist/showcase/assets/schema-form-B7naqMvv.js +325 -0
- package/dist/showcase/assets/scroll-area-CdaYm4UK.js +32 -0
- package/dist/showcase/assets/scroll-area-DwWSHYHB.js +1 -0
- package/dist/showcase/assets/select-CNzpb5ug.js +1 -0
- package/dist/showcase/assets/select-DBXZ_Wzf.js +1 -0
- package/dist/showcase/assets/send-eDm7YMmA.js +1 -0
- package/dist/showcase/assets/separator-4IC9ED7s.js +1 -0
- package/dist/showcase/assets/separator-DPGDsZpG.js +28 -0
- package/dist/showcase/assets/settings-IANZGo2i.js +1 -0
- package/dist/showcase/assets/sheet-2oCce5ae.js +1 -0
- package/dist/showcase/assets/shield-CDZhhvFW.js +1 -0
- package/dist/showcase/assets/shield-alert-5hL3sdf3.js +1 -0
- package/dist/showcase/assets/shield-check-CaO2dhVS.js +1 -0
- package/dist/showcase/assets/shopping-bag-Bt3iK-Bv.js +1 -0
- package/dist/showcase/assets/sidebar-Cds60-PS.js +1 -0
- package/dist/showcase/assets/sidebar.context-CdH_DH9M.js +1 -0
- package/dist/showcase/assets/skeleton-2HajJKO4.js +29 -0
- package/dist/showcase/assets/skeleton-CGEJwPdD.js +1 -0
- package/dist/showcase/assets/slider-BjQViBR0.js +1 -0
- package/dist/showcase/assets/sliders-horizontal-C3JH5WQu.js +1 -0
- package/dist/showcase/assets/smart-card-CHouYi8U.js +1 -0
- package/dist/showcase/assets/sonner-Cog559j7.js +22 -0
- package/dist/showcase/assets/sortable.esm-hUEKsxpQ.js +5 -0
- package/dist/showcase/assets/sparkles-B18eTHVN.js +1 -0
- package/dist/showcase/assets/spinner-BSI97i4D.js +1 -0
- package/dist/showcase/assets/spinner-D0WhVyye.js +30 -0
- package/dist/showcase/assets/spinner-DQmJ7k9y.js +49 -0
- package/dist/showcase/assets/square-pen-CLyDWdhj.js +1 -0
- package/dist/showcase/assets/stacked-avatars-ECnU27uV.js +1 -0
- package/dist/showcase/assets/star-C3mhkpSK.js +1 -0
- package/dist/showcase/assets/startOfDay-ECIxhJGC.js +1 -0
- package/dist/showcase/assets/stringifyLocale-CkHjdQTJ.js +1 -0
- package/dist/showcase/assets/styles-CDD7mDye.js +1 -0
- package/dist/showcase/assets/suggestions-DOW6NBJp.js +126 -0
- package/dist/showcase/assets/switch-D59YKmf6.js +1 -0
- package/dist/showcase/assets/switch-NICmdoPn.js +1 -0
- package/dist/showcase/assets/sync-B8nBZXQ9.js +107 -0
- package/dist/showcase/assets/table-CckompuR.js +382 -0
- package/dist/showcase/assets/table-DtA4-Q0p.js +1 -0
- package/dist/showcase/assets/table-actions-DdoPJTMy.js +1 -0
- package/dist/showcase/assets/tabs-BrC_HxL_.js +1 -0
- package/dist/showcase/assets/tabs-UVxr80vY.js +19 -0
- package/dist/showcase/assets/tags-input-iDfvhzZD.js +1 -0
- package/dist/showcase/assets/text-button-DHFCLCoc.js +1 -0
- package/dist/showcase/assets/text-link-nCLLDcS_.js +1 -0
- package/dist/showcase/assets/textarea-DsSuQHQY.js +1 -0
- package/dist/showcase/assets/textarea-DyGI3Kcn.js +1 -0
- package/dist/showcase/assets/timelines-JmMcH657.js +200 -0
- package/dist/showcase/assets/toggle-group-BZKzMmC8.js +1 -0
- package/dist/showcase/assets/toggles-BSJvy4Tw.js +71 -0
- package/dist/showcase/assets/toggles-group-Bsc6eaWw.js +32 -0
- package/dist/showcase/assets/trash-2-C9AC7Pcv.js +1 -0
- package/dist/showcase/assets/trending-up-CGaDZj0S.js +1 -0
- package/dist/showcase/assets/truck-Dq6heokm.js +1 -0
- package/dist/showcase/assets/typography-ByvwR6Kg.js +223 -0
- package/dist/showcase/assets/ui-badge-BYgJSE_w.js +28 -0
- package/dist/showcase/assets/ui-card-BdueUfow.js +30 -0
- package/dist/showcase/assets/ui-table-CxtCQUsg.js +42 -0
- package/dist/showcase/assets/upload-tray-DKJ8nFZp.js +138 -0
- package/dist/showcase/assets/use-layout-link-CGBQHZon.js +1 -0
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CywAbxVB.js +1 -0
- package/dist/showcase/assets/useAriaLabelledBy-B2bZzE7D.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-SLdY_s6S.js +1 -0
- package/dist/showcase/assets/useCompositeItem-g6aCBp84.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-DK0Tpege.js +1 -0
- package/dist/showcase/assets/useControlled-BF8maje6.js +1 -0
- package/dist/showcase/assets/useLabelableId-hdKzFCp2.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-CnhifZ1E.js +1 -0
- package/dist/showcase/assets/useRender-QhawWhpb.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-Cht7Sa7e.js +1 -0
- package/dist/showcase/assets/useValueChanged-DURO1kfZ.js +1 -0
- package/dist/showcase/assets/user-plus-DbOuTfr7.js +1 -0
- package/dist/showcase/assets/user-u65Fo7k7.js +1 -0
- package/dist/showcase/assets/users-BUb7CmVp.js +1 -0
- package/dist/showcase/assets/valueToPercent-gleKSaFe.js +1 -0
- package/dist/showcase/assets/vendor-profile-wfI3PBuO.js +37 -0
- package/dist/showcase/assets/video-e4hDbTQ2.js +1 -0
- package/dist/showcase/assets/wrench-CBUvtxdr.js +1 -0
- package/dist/showcase/assets/x-oVTJnCJn.js +1 -0
- package/dist/showcase/assets/zap-CzABYL3c.js +1 -0
- package/dist/showcase/index.html +2 -2
- package/dist/style.css +1 -1
- package/package.json +15 -4
- package/scripts/README.md +24 -0
- package/scripts/metadata.json +325 -0
- package/dist/_shared/accordion-BWU7zxlO.cjs +0 -2
- package/dist/_shared/accordion-BWU7zxlO.cjs.map +0 -1
- package/dist/_shared/accordion-DTYKGqWD.js +0 -130
- package/dist/_shared/accordion-DTYKGqWD.js.map +0 -1
- package/dist/_shared/action-menu-BoQnI2UF.cjs +0 -2
- package/dist/_shared/action-menu-BoQnI2UF.cjs.map +0 -1
- package/dist/_shared/action-menu-uyg1Phsn.js +0 -96
- package/dist/_shared/action-menu-uyg1Phsn.js.map +0 -1
- package/dist/_shared/ai-artifact-CY1Jf9gM.cjs +0 -3
- package/dist/_shared/ai-artifact-CY1Jf9gM.cjs.map +0 -1
- package/dist/_shared/ai-artifact-DdlK_l56.js +0 -1099
- package/dist/_shared/ai-artifact-DdlK_l56.js.map +0 -1
- package/dist/_shared/auth-CDjZFJxy.cjs +0 -2
- package/dist/_shared/auth-CDjZFJxy.cjs.map +0 -1
- package/dist/_shared/auth-_udUdWtn.js +0 -643
- package/dist/_shared/auth-_udUdWtn.js.map +0 -1
- package/dist/_shared/badge--o9wFHB_.cjs +0 -2
- package/dist/_shared/badge--o9wFHB_.cjs.map +0 -1
- package/dist/_shared/badge-yGlx9trX.js +0 -108
- package/dist/_shared/badge-yGlx9trX.js.map +0 -1
- package/dist/_shared/button-683R5quQ.js +0 -46
- package/dist/_shared/button-683R5quQ.js.map +0 -1
- package/dist/_shared/button-C1qc97U1.cjs +0 -2
- package/dist/_shared/button-C1qc97U1.cjs.map +0 -1
- package/dist/_shared/button-CjZrRLzR.cjs +0 -2
- package/dist/_shared/button-CjZrRLzR.cjs.map +0 -1
- package/dist/_shared/button-SuocMQFT.js +0 -173
- package/dist/_shared/button-SuocMQFT.js.map +0 -1
- package/dist/_shared/buttons-9YBwevkP.cjs +0 -2
- package/dist/_shared/buttons-9YBwevkP.cjs.map +0 -1
- package/dist/_shared/buttons-BR4BGVYf.js +0 -143
- package/dist/_shared/buttons-BR4BGVYf.js.map +0 -1
- package/dist/_shared/combobox-CpSmiPV8.cjs +0 -2
- package/dist/_shared/combobox-CpSmiPV8.cjs.map +0 -1
- package/dist/_shared/combobox-D01JwyFZ.js +0 -810
- package/dist/_shared/combobox-D01JwyFZ.js.map +0 -1
- package/dist/_shared/comments-D9velZAW.js +0 -952
- package/dist/_shared/comments-D9velZAW.js.map +0 -1
- package/dist/_shared/comments-DyUAKSQu.cjs +0 -2
- package/dist/_shared/comments-DyUAKSQu.cjs.map +0 -1
- package/dist/_shared/date-picker-BnsvBFOZ.cjs +0 -2
- package/dist/_shared/date-picker-BnsvBFOZ.cjs.map +0 -1
- package/dist/_shared/date-picker-TMcjGO26.js +0 -1361
- package/dist/_shared/date-picker-TMcjGO26.js.map +0 -1
- package/dist/_shared/date-pickers-BI4xLjHR.js +0 -330
- package/dist/_shared/date-pickers-BI4xLjHR.js.map +0 -1
- package/dist/_shared/date-pickers-BhaUK5S2.cjs +0 -2
- package/dist/_shared/date-pickers-BhaUK5S2.cjs.map +0 -1
- package/dist/_shared/dialog-A95-614f.js +0 -101
- package/dist/_shared/dialog-A95-614f.js.map +0 -1
- package/dist/_shared/dialog-ivDByBmO.cjs +0 -2
- package/dist/_shared/dialog-ivDByBmO.cjs.map +0 -1
- package/dist/_shared/display-C4n0uuxl.js +0 -1154
- package/dist/_shared/display-C4n0uuxl.js.map +0 -1
- package/dist/_shared/display-oDW0O9yB.cjs +0 -2
- package/dist/_shared/display-oDW0O9yB.cjs.map +0 -1
- package/dist/_shared/forms-CwJci54_.js +0 -3430
- package/dist/_shared/forms-CwJci54_.js.map +0 -1
- package/dist/_shared/forms-E3JkTgcC.cjs +0 -2
- package/dist/_shared/forms-E3JkTgcC.cjs.map +0 -1
- package/dist/_shared/header-BUAddfdE.js +0 -360
- package/dist/_shared/header-BUAddfdE.js.map +0 -1
- package/dist/_shared/header-BnxWOiNm.cjs +0 -2
- package/dist/_shared/header-BnxWOiNm.cjs.map +0 -1
- package/dist/_shared/hooks-MW0UTO3q.cjs +0 -2
- package/dist/_shared/hooks-MW0UTO3q.cjs.map +0 -1
- package/dist/_shared/hooks-ZiPIvs0_.js +0 -118
- package/dist/_shared/hooks-ZiPIvs0_.js.map +0 -1
- package/dist/_shared/mentions-Br-EP9tq.js +0 -506
- package/dist/_shared/mentions-Br-EP9tq.js.map +0 -1
- package/dist/_shared/mentions-DNTsRHJl.cjs +0 -2
- package/dist/_shared/mentions-DNTsRHJl.cjs.map +0 -1
- package/dist/_shared/metadata-CPSQGPJh.cjs +0 -2
- package/dist/_shared/metadata-CPSQGPJh.cjs.map +0 -1
- package/dist/_shared/metadata-qTNAOM7E.js +0 -235
- package/dist/_shared/metadata-qTNAOM7E.js.map +0 -1
- package/dist/_shared/navigation-HnnA6uSV.js +0 -419
- package/dist/_shared/navigation-HnnA6uSV.js.map +0 -1
- package/dist/_shared/navigation-J2g0Tw9D.cjs +0 -2
- package/dist/_shared/navigation-J2g0Tw9D.cjs.map +0 -1
- package/dist/_shared/overlays-CIeniDjj.js +0 -639
- package/dist/_shared/overlays-CIeniDjj.js.map +0 -1
- package/dist/_shared/overlays-Xc_F_Y-E.cjs +0 -2
- package/dist/_shared/overlays-Xc_F_Y-E.cjs.map +0 -1
- package/dist/_shared/page-BFV-KE8H.js +0 -262
- package/dist/_shared/page-BFV-KE8H.js.map +0 -1
- package/dist/_shared/page-UJfWfw2R.cjs +0 -2
- package/dist/_shared/page-UJfWfw2R.cjs.map +0 -1
- package/dist/_shared/rich-text-editor-B6WKHUKC.js +0 -620
- package/dist/_shared/rich-text-editor-B6WKHUKC.js.map +0 -1
- package/dist/_shared/rich-text-editor-Dm-6r_xe.cjs +0 -2
- package/dist/_shared/rich-text-editor-Dm-6r_xe.cjs.map +0 -1
- package/dist/_shared/sheet-BKEfwhCn.js +0 -100
- package/dist/_shared/sheet-BKEfwhCn.js.map +0 -1
- package/dist/_shared/sheet-D4yWgkwC.cjs +0 -2
- package/dist/_shared/sheet-D4yWgkwC.cjs.map +0 -1
- package/dist/_shared/sidebar-BML5ZZ5s.js +0 -537
- package/dist/_shared/sidebar-BML5ZZ5s.js.map +0 -1
- package/dist/_shared/sidebar-Bl_KRk-S.cjs +0 -2
- package/dist/_shared/sidebar-Bl_KRk-S.cjs.map +0 -1
- package/dist/_shared/sidebar-C89O5ho_.cjs +0 -2
- package/dist/_shared/sidebar-C89O5ho_.cjs.map +0 -1
- package/dist/_shared/sidebar-ux-yk-Ph.js +0 -382
- package/dist/_shared/sidebar-ux-yk-Ph.js.map +0 -1
- package/dist/_shared/smart-card-DYZGY_Su.js +0 -361
- package/dist/_shared/smart-card-DYZGY_Su.js.map +0 -1
- package/dist/_shared/smart-card-Df80VF8x.cjs +0 -2
- package/dist/_shared/smart-card-Df80VF8x.cjs.map +0 -1
- package/dist/_shared/table-CBKDA7ZE.js +0 -1189
- package/dist/_shared/table-CBKDA7ZE.js.map +0 -1
- package/dist/_shared/table-CJoxRCWy.cjs +0 -2
- package/dist/_shared/table-CJoxRCWy.cjs.map +0 -1
- package/dist/_shared/workspace-CTjIGCE0.cjs +0 -2
- package/dist/_shared/workspace-CTjIGCE0.cjs.map +0 -1
- package/dist/_shared/workspace-WgJgiSUA.js +0 -357
- package/dist/_shared/workspace-WgJgiSUA.js.map +0 -1
- package/dist/showcase/assets/AreaChart-DUe3j5uB.js +0 -6
- package/dist/showcase/assets/CSPContext-ImKusJJ_.js +0 -1
- package/dist/showcase/assets/CompositeItem-DleE4kTc.js +0 -1
- package/dist/showcase/assets/CompositeRoot-BbNkvtLz.js +0 -1
- package/dist/showcase/assets/DialogTrigger-C0DB0bXw.js +0 -1
- package/dist/showcase/assets/FieldItemContext-CFTR-INZ.js +0 -1
- package/dist/showcase/assets/FormContext-lmjYAh4E.js +0 -1
- package/dist/showcase/assets/LabelableContext-CDv6gSfU.js +0 -1
- package/dist/showcase/assets/PreviewLayout-BG1B5TzA.js +0 -1
- package/dist/showcase/assets/RadioGroup-C-0MNAYY.js +0 -1
- package/dist/showcase/assets/Separator-KsPLUEno.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-AV8xAl2m.js +0 -1
- package/dist/showcase/assets/accordion-BWkuKg77.js +0 -171
- package/dist/showcase/assets/accordion-variants-CVT_62VO.js +0 -1
- package/dist/showcase/assets/action-menu-BOUHlGba.js +0 -1
- package/dist/showcase/assets/activities-DMDQje7Y.js +0 -501
- package/dist/showcase/assets/activities-feed-card-B8wpu4F3.js +0 -1
- package/dist/showcase/assets/activity-B-FxNryB.js +0 -1
- package/dist/showcase/assets/admin-CAhEeKt_.js +0 -80
- package/dist/showcase/assets/ai-UioEgJ90.js +0 -41
- package/dist/showcase/assets/ai-artifact-CUAlhcSX.js +0 -2
- package/dist/showcase/assets/ai-chat-C_w2PSmy.js +0 -568
- package/dist/showcase/assets/ai-elements-DmxqXR6H.js +0 -387
- package/dist/showcase/assets/ai-new-PG02TWQq.js +0 -167
- package/dist/showcase/assets/ai-tool-call-BaJx1rR4.js +0 -1
- package/dist/showcase/assets/alert-D7n-kQoO.js +0 -93
- package/dist/showcase/assets/alert-DIelf1qF.js +0 -1
- package/dist/showcase/assets/alert-TQCZEcn-.js +0 -62
- package/dist/showcase/assets/api-key-list-CSt4trYG.js +0 -73
- package/dist/showcase/assets/app-sidebar-DixqrLf2.js +0 -1
- package/dist/showcase/assets/arrow-down-CYh_aUsd.js +0 -1
- package/dist/showcase/assets/arrow-left-pYYsNkZE.js +0 -1
- package/dist/showcase/assets/arrow-right-Bf1Tl6D5.js +0 -1
- package/dist/showcase/assets/arrow-up-BhmQRZs9.js +0 -1
- package/dist/showcase/assets/arrow-up-right-CuAsO3-r.js +0 -1
- package/dist/showcase/assets/avatar-5EFTnHEG.js +0 -1
- package/dist/showcase/assets/avatar-DLpnivU0.js +0 -57
- package/dist/showcase/assets/badge-check-BRAVo7dA.js +0 -1
- package/dist/showcase/assets/badge-yFoRqbiq.js +0 -28
- package/dist/showcase/assets/bell-Dt3Nz2y2.js +0 -1
- package/dist/showcase/assets/bot-5Ro5Dayc.js +0 -1
- package/dist/showcase/assets/box-mt6TbZO6.js +0 -1
- package/dist/showcase/assets/brain-736080Wh.js +0 -1
- package/dist/showcase/assets/brand-4K8xsJ91.js +0 -36
- package/dist/showcase/assets/breadcrumb-CAlApdCw.js +0 -1
- package/dist/showcase/assets/breadcrumb-DHeGqoTD.js +0 -52
- package/dist/showcase/assets/breadcrumbs-D_lniGJs.js +0 -1
- package/dist/showcase/assets/briefcase-B_Uti-Iu.js +0 -1
- package/dist/showcase/assets/building-2-zgcwuzxP.js +0 -1
- package/dist/showcase/assets/button-PmqgeJKm.js +0 -44
- package/dist/showcase/assets/button-group-DAOmmujV.js +0 -1
- package/dist/showcase/assets/buttons-PtpR_v16.js +0 -270
- package/dist/showcase/assets/calendar-BiOGjB7a.js +0 -1
- package/dist/showcase/assets/calendar-C1A98cz0.js +0 -16
- package/dist/showcase/assets/calendar-DTgagmt7.js +0 -1
- package/dist/showcase/assets/calendar-days-pr8kXiTx.js +0 -1
- package/dist/showcase/assets/camera-CGKLOOep.js +0 -1
- package/dist/showcase/assets/card-CFIG8Dgg.js +0 -1
- package/dist/showcase/assets/card-CRd07Iun.js +0 -188
- package/dist/showcase/assets/card-primitives-YgCOqVDI.js +0 -1
- package/dist/showcase/assets/card-radio-group-Du6yaMZ-.js +0 -1
- package/dist/showcase/assets/cards-H7ywhTNM.js +0 -328
- package/dist/showcase/assets/carousel-Dwll5oz1.js +0 -449
- package/dist/showcase/assets/chart-BWnVf-d-.js +0 -358
- package/dist/showcase/assets/chart-column-DjAyOA-t.js +0 -1
- package/dist/showcase/assets/checkbox-fwuAAaUZ.js +0 -1
- package/dist/showcase/assets/chevron-down-CSn8HCwf.js +0 -1
- package/dist/showcase/assets/chevron-left-Ddj6-KOu.js +0 -1
- package/dist/showcase/assets/chevron-right-d-umkBru.js +0 -1
- package/dist/showcase/assets/chevron-up-CeFY6O0I.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-Ck3rUZtc.js +0 -1
- package/dist/showcase/assets/circle-Dy08kACD.js +0 -1
- package/dist/showcase/assets/circle-alert-ysbx8rsZ.js +0 -1
- package/dist/showcase/assets/circle-check-TT7cFQrr.js +0 -1
- package/dist/showcase/assets/circle-check-big-4RnJfeaC.js +0 -1
- package/dist/showcase/assets/circle-dot-CvoDXS-W.js +0 -1
- package/dist/showcase/assets/circle-question-mark-Dbi-WTYN.js +0 -1
- package/dist/showcase/assets/circle-x-c5z6-eYV.js +0 -1
- package/dist/showcase/assets/clock-3-DDEsD4Tb.js +0 -1
- package/dist/showcase/assets/clock-DuBsP5t3.js +0 -1
- package/dist/showcase/assets/code-xml-SoYTMEdm.js +0 -1
- package/dist/showcase/assets/collapsible-Cv3oGVkH.js +0 -27
- package/dist/showcase/assets/collapsible-DagkA3To.js +0 -1
- package/dist/showcase/assets/combobox-CPC4a_MH.js +0 -696
- package/dist/showcase/assets/command-BtaMPVtf.js +0 -45
- package/dist/showcase/assets/command-C37Q471b.js +0 -1
- package/dist/showcase/assets/comment-composer-W0xfh_HP.js +0 -1
- package/dist/showcase/assets/comment-item-Ctcpx1GX.js +0 -1
- package/dist/showcase/assets/comments-BODDdRry.js +0 -357
- package/dist/showcase/assets/commerce-B9MICTY2.js +0 -79
- package/dist/showcase/assets/commerce-extras-DsgnTkBH.js +0 -189
- package/dist/showcase/assets/composite-B-19wwf9.js +0 -1
- package/dist/showcase/assets/contact-card-CqP3YxTq.js +0 -65
- package/dist/showcase/assets/content-container-x2tsQKwH.js +0 -1
- package/dist/showcase/assets/copyable-DH0w0i_h.js +0 -96
- package/dist/showcase/assets/course-card-qpC4JUUM.js +0 -77
- package/dist/showcase/assets/cpu-DjJeD_0Z.js +0 -1
- package/dist/showcase/assets/credit-card-CYgRtM77.js +0 -1
- package/dist/showcase/assets/currency-hguqIjWU.js +0 -149
- package/dist/showcase/assets/dark-surfaces-Cj34O9A0.js +0 -90
- package/dist/showcase/assets/database-BVwSMeGM.js +0 -1
- package/dist/showcase/assets/date-block-LCTDXG5-.js +0 -1
- package/dist/showcase/assets/date-picker-CbYq8wZ7.js +0 -1
- package/dist/showcase/assets/date-pickers-BaSX23MK.js +0 -73
- package/dist/showcase/assets/dense-info-kY1QmtaP.js +0 -106
- package/dist/showcase/assets/dialog-B85US9Ue.js +0 -1
- package/dist/showcase/assets/dialog-iIgfMvTJ.js +0 -1
- package/dist/showcase/assets/display-DTaQWVJp.js +0 -403
- package/dist/showcase/assets/dollar-sign-DlK6XF_v.js +0 -1
- package/dist/showcase/assets/download-B_EY5cGA.js +0 -1
- package/dist/showcase/assets/dropdown-menu-bPWrLPgm.js +0 -1
- package/dist/showcase/assets/dropzone-Bl7RO_Uk.js +0 -1
- package/dist/showcase/assets/earth-C7n2JAYm.js +0 -1
- package/dist/showcase/assets/ellipsis-ntuo3ejh.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-yH8S83bc.js +0 -1
- package/dist/showcase/assets/empty-CY8f7iFe.js +0 -1
- package/dist/showcase/assets/empty-item-Ct7uCr40.js +0 -49
- package/dist/showcase/assets/empty-state-DlO8SJi8.js +0 -188
- package/dist/showcase/assets/empty-state-IAAUTn6f.js +0 -1
- package/dist/showcase/assets/enhanced-activities-DLwShhof.js +0 -361
- package/dist/showcase/assets/enhanced-combobox-Cs_-wq9p.js +0 -1
- package/dist/showcase/assets/event-calendar-C4KlumlG.js +0 -138
- package/dist/showcase/assets/event-log-BvUU5Rj8.js +0 -330
- package/dist/showcase/assets/example-BIrQab7K.js +0 -1
- package/dist/showcase/assets/external-link-DuJlM_H4.js +0 -1
- package/dist/showcase/assets/eye-CnRPL_H8.js +0 -1
- package/dist/showcase/assets/feature-announcement-0dOcSH7F.js +0 -34
- package/dist/showcase/assets/file-Dc5UHkfE.js +0 -1
- package/dist/showcase/assets/file-text-D3AE37vP.js +0 -1
- package/dist/showcase/assets/filters-CsovNSxS.js +0 -78
- package/dist/showcase/assets/flag-CJJ43K4x.js +0 -1
- package/dist/showcase/assets/folder-open-Dp0sceCi.js +0 -1
- package/dist/showcase/assets/form-field-Cxm4APa9.js +0 -1
- package/dist/showcase/assets/format-bDaUGCSP.js +0 -1
- package/dist/showcase/assets/forms-BrVikK1p.js +0 -862
- package/dist/showcase/assets/frame-CkLEABTd.js +0 -167
- package/dist/showcase/assets/getPseudoElementBounds-Bznj386s.js +0 -1
- package/dist/showcase/assets/gift-Bx8IO1FQ.js +0 -1
- package/dist/showcase/assets/giftcard-cards-CZTXBjv0.js +0 -85
- package/dist/showcase/assets/git-branch-D9jt-u1q.js +0 -1
- package/dist/showcase/assets/global-search-C2R_3Pb3.js +0 -215
- package/dist/showcase/assets/global-search-D9XJ747r.js +0 -1
- package/dist/showcase/assets/globe-BJHI134i.js +0 -1
- package/dist/showcase/assets/gradient-card-CV8w2JG5.js +0 -58
- package/dist/showcase/assets/hash-CtBGoIvf.js +0 -1
- package/dist/showcase/assets/header-B3FSlVv4.js +0 -1
- package/dist/showcase/assets/header-notifications-3VH9lzzJ.js +0 -1
- package/dist/showcase/assets/heart-BWZYF4xJ.js +0 -1
- package/dist/showcase/assets/house-CAQOnHLO.js +0 -1
- package/dist/showcase/assets/icon-badge-CxvxB8Vd.js +0 -1
- package/dist/showcase/assets/image-Byz-p7hT.js +0 -1
- package/dist/showcase/assets/inbox-D4UE_W9O.js +0 -1
- package/dist/showcase/assets/index-ADfexGMA.css +0 -2
- package/dist/showcase/assets/index-Cz4UGUT2.js +0 -10
- package/dist/showcase/assets/inertValue-BVXUUuS4.js +0 -1
- package/dist/showcase/assets/info-DFu8OfxV.js +0 -1
- package/dist/showcase/assets/inline-stat-DqI70yoJ.js +0 -1
- package/dist/showcase/assets/input-BPDdWrB1.js +0 -1
- package/dist/showcase/assets/input-BzafMIDj.js +0 -1
- package/dist/showcase/assets/input-group-BYZYeQ7j.js +0 -1
- package/dist/showcase/assets/input-group-YIWmmLJ6.js +0 -47
- package/dist/showcase/assets/inputs-DjzrYJdb.js +0 -49
- package/dist/showcase/assets/invoice-header-B00JrPAb.js +0 -36
- package/dist/showcase/assets/invoice-items-CUt5D3Wz.js +0 -36
- package/dist/showcase/assets/invoice-mini-CRoaQ9g9.js +0 -14
- package/dist/showcase/assets/invoice-table-DYNnDTQl.js +0 -30
- package/dist/showcase/assets/isSameDay-DVNkwpSk.js +0 -1
- package/dist/showcase/assets/isToday-DZ1HTCty.js +0 -1
- package/dist/showcase/assets/italic-AbetEb3d.js +0 -1
- package/dist/showcase/assets/item-BGA6_5Zh.js +0 -134
- package/dist/showcase/assets/item-BJOYyqeO.js +0 -1
- package/dist/showcase/assets/item-CbiuwbAN.js +0 -1
- package/dist/showcase/assets/kanban-Br-Yz002.js +0 -186
- package/dist/showcase/assets/label-BlCKlLE-.js +0 -1
- package/dist/showcase/assets/languages-CKcUvHnt.js +0 -1
- package/dist/showcase/assets/layers-CakZLRSD.js +0 -1
- package/dist/showcase/assets/layout-app-shell-ukDXqPxC.js +0 -608
- package/dist/showcase/assets/layout-auth-BFza65L3.js +0 -754
- package/dist/showcase/assets/layout-containers-v1jG_b7r.js +0 -101
- package/dist/showcase/assets/layout-header-CqBf9wjY.js +0 -170
- package/dist/showcase/assets/layout-page-WJcljCac.js +0 -122
- package/dist/showcase/assets/layout-sidebar-DL6TLuQC.js +0 -224
- package/dist/showcase/assets/layout-users-B8qpsvV9.js +0 -117
- package/dist/showcase/assets/layout-workspace-iOKZ4-9K.js +0 -183
- package/dist/showcase/assets/lock-Dn4-vUBz.js +0 -1
- package/dist/showcase/assets/lock-keyhole-M6KZ_7RC.js +0 -1
- package/dist/showcase/assets/mail-check-DXqQwivW.js +0 -1
- package/dist/showcase/assets/mail-w1nhszbW.js +0 -1
- package/dist/showcase/assets/map-CquesVXo.js +0 -124
- package/dist/showcase/assets/map-pin-DUl-Lt6t.js +0 -1
- package/dist/showcase/assets/media-library-CCJBQRPu.js +0 -695
- package/dist/showcase/assets/mention-inline-suggestions-DyW6IwL8.js +0 -1
- package/dist/showcase/assets/mentions-Ea4pSJqG.js +0 -138
- package/dist/showcase/assets/menus-CJjtE4fD.js +0 -89
- package/dist/showcase/assets/message-square-B0RnrJV6.js +0 -1
- package/dist/showcase/assets/metadata-list-DkN9yfTj.js +0 -288
- package/dist/showcase/assets/metadata-list-fm8e58ID.js +0 -1
- package/dist/showcase/assets/metric-bar-BydkmggA.js +0 -1
- package/dist/showcase/assets/metric-grid-BKjrYpt9.js +0 -1
- package/dist/showcase/assets/metric-guQTLTAa.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-DehaJ3nC.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-YjwFT4ae.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-B6DspERM.js +0 -50
- package/dist/showcase/assets/metrics-comparison-Nru5wypZ.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-CcumN0Or.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-2WB7w9mz.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-jU3hsB3C.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-CaJ99RXL.js +0 -42
- package/dist/showcase/assets/metrics-overview-Sa7z6jct.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-PLvMkA0M.js +0 -54
- package/dist/showcase/assets/minus-OyRBql2C.js +0 -1
- package/dist/showcase/assets/money-display-23DKz-jK.js +0 -1
- package/dist/showcase/assets/month-year-picker-oEoInnKW.js +0 -1
- package/dist/showcase/assets/navigation-Ds60FMAs.js +0 -230
- package/dist/showcase/assets/navigation-Dufz6qnF.js +0 -90
- package/dist/showcase/assets/navigation-extras-DKufT82I.js +0 -43
- package/dist/showcase/assets/onboarding-checklist-DSkS2ktA.js +0 -119
- package/dist/showcase/assets/overlays-BptoR4sm.js +0 -408
- package/dist/showcase/assets/overlays-CVGJ_FEg.js +0 -88
- package/dist/showcase/assets/package-0ZgMoFm1.js +0 -1
- package/dist/showcase/assets/package-check-CT0dhSM8.js +0 -1
- package/dist/showcase/assets/page-action-button-DrHJKFbp.js +0 -1
- package/dist/showcase/assets/page-header-CikNDnqI.js +0 -1
- package/dist/showcase/assets/pagination-CxuA2zkE.js +0 -42
- package/dist/showcase/assets/pagination-DsPLs2Tx.js +0 -1
- package/dist/showcase/assets/paperclip-CDMZ_JAo.js +0 -1
- package/dist/showcase/assets/password-input-BVaUPw7a.js +0 -1
- package/dist/showcase/assets/pencil-BouoJ5x7.js +0 -1
- package/dist/showcase/assets/phone-DCNFH5yg.js +0 -1
- package/dist/showcase/assets/plus-DkHZm34I.js +0 -1
- package/dist/showcase/assets/popover-BSB11Qjp.js +0 -1
- package/dist/showcase/assets/popover-CECpX3MQ.js +0 -1
- package/dist/showcase/assets/popover-menu-CuA8fb7i.js +0 -1
- package/dist/showcase/assets/products-BJHNTW62.js +0 -407
- package/dist/showcase/assets/progress-DGvRQyPS.js +0 -1
- package/dist/showcase/assets/progress-tpxRVOkp.js +0 -18
- package/dist/showcase/assets/props-table-BR-KjRNe.js +0 -1
- package/dist/showcase/assets/props.generated-qdUud3iu.json +0 -38611
- package/dist/showcase/assets/quote-CN-Sodsj.js +0 -1
- package/dist/showcase/assets/receipt-T8B9lscp.js +0 -1
- package/dist/showcase/assets/receipt-text-CeBruM29.js +0 -1
- package/dist/showcase/assets/refresh-cw-DnxNcOMm.js +0 -1
- package/dist/showcase/assets/resolveAriaLabelledBy-B2ZzrlGb.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-CGuVi0Dj.js +0 -1
- package/dist/showcase/assets/rich-text-editor-Bha0lSKT.js +0 -143
- package/dist/showcase/assets/rich-text-editor-NeOPmoZF.js +0 -124
- package/dist/showcase/assets/rotate-ccw-7aUlKQpX.js +0 -1
- package/dist/showcase/assets/save-AT8JlA8E.js +0 -1
- package/dist/showcase/assets/schema-form-BpkVygoO.js +0 -325
- package/dist/showcase/assets/scroll-area-B0wmaMAD.js +0 -32
- package/dist/showcase/assets/scroll-area-CgXTHlpJ.js +0 -1
- package/dist/showcase/assets/select-BG_Iad8E.js +0 -1
- package/dist/showcase/assets/select-t6dryszf.js +0 -1
- package/dist/showcase/assets/send-BzGRF4t-.js +0 -1
- package/dist/showcase/assets/separator-BjGdXNcn.js +0 -1
- package/dist/showcase/assets/separator-DbiGagrP.js +0 -28
- package/dist/showcase/assets/settings-BSRT_96A.js +0 -1
- package/dist/showcase/assets/sheet-CEuKOBxr.js +0 -1
- package/dist/showcase/assets/shield-CcR2q5u_.js +0 -1
- package/dist/showcase/assets/shield-alert-DhbgXV1X.js +0 -1
- package/dist/showcase/assets/shield-check-CRbBJXw2.js +0 -1
- package/dist/showcase/assets/shopping-bag-B5BzpLV5.js +0 -1
- package/dist/showcase/assets/sidebar--2nHUTn3.js +0 -1
- package/dist/showcase/assets/sidebar.context-BCb20eIt.js +0 -1
- package/dist/showcase/assets/skeleton-BeVdks4r.js +0 -1
- package/dist/showcase/assets/skeleton-DijlT51X.js +0 -29
- package/dist/showcase/assets/slider-Cp4m3NTK.js +0 -1
- package/dist/showcase/assets/sliders-horizontal-C8RwUn0S.js +0 -1
- package/dist/showcase/assets/smart-card-B4P_C0nk.js +0 -1
- package/dist/showcase/assets/sonner-CLYYRmEW.js +0 -22
- package/dist/showcase/assets/sortable.esm-CoekVJlU.js +0 -5
- package/dist/showcase/assets/sparkles-DFJmoAFP.js +0 -1
- package/dist/showcase/assets/spinner-CeQHboSs.js +0 -49
- package/dist/showcase/assets/spinner-DMKANM9S.js +0 -30
- package/dist/showcase/assets/spinner-WEI7TMVk.js +0 -1
- package/dist/showcase/assets/square-pen-CfvmmXYo.js +0 -1
- package/dist/showcase/assets/stacked-avatars-CcCnnUrA.js +0 -1
- package/dist/showcase/assets/star-DK5onZCp.js +0 -1
- package/dist/showcase/assets/startOfDay-BuizEr24.js +0 -1
- package/dist/showcase/assets/styles-BStlbPXe.js +0 -1
- package/dist/showcase/assets/suggestions-Cd_XUmz3.js +0 -126
- package/dist/showcase/assets/switch-5f1vwEZ7.js +0 -1
- package/dist/showcase/assets/switch-arjWj-n7.js +0 -1
- package/dist/showcase/assets/sync-DorQdMfx.js +0 -107
- package/dist/showcase/assets/table-ClYkDRAk.js +0 -1
- package/dist/showcase/assets/table-D9q0odD8.js +0 -382
- package/dist/showcase/assets/table-actions-UJbkGb44.js +0 -1
- package/dist/showcase/assets/tabs-BENBPFif.js +0 -19
- package/dist/showcase/assets/tabs-ePpje8sU.js +0 -1
- package/dist/showcase/assets/tags-input-DRlg3zQH.js +0 -1
- package/dist/showcase/assets/text-button-CQvP6Kic.js +0 -1
- package/dist/showcase/assets/text-link-DT-nOORV.js +0 -1
- package/dist/showcase/assets/textarea-BGHGV17m.js +0 -1
- package/dist/showcase/assets/textarea-pstF1OBP.js +0 -1
- package/dist/showcase/assets/timelines-D8y-IyxW.js +0 -200
- package/dist/showcase/assets/toggle-group-BVyFo04r.js +0 -1
- package/dist/showcase/assets/toggles-dhLpAHSR.js +0 -71
- package/dist/showcase/assets/toggles-group-BJ5Jio2p.js +0 -32
- package/dist/showcase/assets/trash-2-OsaEm8cc.js +0 -1
- package/dist/showcase/assets/trending-up-HlQQXTth.js +0 -1
- package/dist/showcase/assets/truck-CvvBxBeB.js +0 -1
- package/dist/showcase/assets/typography-D_99bjSh.js +0 -223
- package/dist/showcase/assets/ui-badge-C1bu7wRu.js +0 -28
- package/dist/showcase/assets/ui-card-Ct1FFUxv.js +0 -30
- package/dist/showcase/assets/ui-table-Dxu9Jjq0.js +0 -42
- package/dist/showcase/assets/upload-tray-BeOBVU1z.js +0 -138
- package/dist/showcase/assets/use-layout-link-BK_oEoBg.js +0 -1
- package/dist/showcase/assets/useAnchoredPopupScrollLock-DLXArfPo.js +0 -1
- package/dist/showcase/assets/useAriaLabelledBy-etINba8U.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-BNe9r1t_.js +0 -1
- package/dist/showcase/assets/useCompositeItem-CvG1CBEV.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-CcY0U1bY.js +0 -1
- package/dist/showcase/assets/useControlled-Cpg8gDqb.js +0 -1
- package/dist/showcase/assets/useLabelableId-Czdg4nY8.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-eyZ6twES.js +0 -1
- package/dist/showcase/assets/useRender-BAZlIYnj.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-C2I8g7TT.js +0 -1
- package/dist/showcase/assets/useValueChanged-Bz3WRSDy.js +0 -1
- package/dist/showcase/assets/user-Bqmz8M16.js +0 -1
- package/dist/showcase/assets/user-plus-MMxrhI4h.js +0 -1
- package/dist/showcase/assets/users-ERTaffcv.js +0 -1
- package/dist/showcase/assets/valueToPercent-B5BHWU68.js +0 -1
- package/dist/showcase/assets/vendor-profile-BAwCE0wP.js +0 -37
- package/dist/showcase/assets/video-DJm0ubTE.js +0 -1
- package/dist/showcase/assets/wrench-gaXnvr_b.js +0 -1
- package/dist/showcase/assets/x-BqJnRkKw.js +0 -1
- package/dist/showcase/assets/zap-DHBVTfYZ.js +0 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { useStrings as e } from "../lib/strings.js";
|
|
2
|
+
import { cn as t } from "../lib/utils.js";
|
|
3
|
+
import { t as n } from "./button-BGKY8UY0.js";
|
|
4
|
+
import { i as r, n as i, t as a } from "./tooltip-CLr_sPX8.js";
|
|
5
|
+
import { n as o, t as s } from "./heading-HeP06nXG.js";
|
|
6
|
+
import { t as c } from "./separator-B8FBp-7E.js";
|
|
7
|
+
import l from "react";
|
|
8
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
9
|
+
import { Info as f } from "lucide-react";
|
|
10
|
+
//#region src/components/base/display/metadata/metadata-list.strings.ts
|
|
11
|
+
var p = {
|
|
12
|
+
formatInfoAriaLabel: (e) => `${e} info`,
|
|
13
|
+
infoFallback: "Info"
|
|
14
|
+
}, m = {
|
|
15
|
+
1: "grid-cols-1",
|
|
16
|
+
2: "grid-cols-1 sm:grid-cols-2",
|
|
17
|
+
3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
18
|
+
4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"
|
|
19
|
+
}, h = {
|
|
20
|
+
start: "justify-start",
|
|
21
|
+
end: "justify-end",
|
|
22
|
+
center: "justify-center",
|
|
23
|
+
between: "justify-between",
|
|
24
|
+
around: "justify-around",
|
|
25
|
+
evenly: "justify-evenly"
|
|
26
|
+
}, g = {
|
|
27
|
+
start: "items-start",
|
|
28
|
+
center: "items-center",
|
|
29
|
+
end: "items-end",
|
|
30
|
+
baseline: "items-baseline"
|
|
31
|
+
}, _ = (e, t) => e.id ? e.id : `metadata-${typeof e.label == "string" ? e.label : `${t}`}-${t}`;
|
|
32
|
+
function v({ items: v, columns: y = 2, dense: b = !1, emptyLabel: x = "—", title: S, titleSeparator: C = !1, className: w, gapClassName: T, labelClassName: E, valueClassName: D, descriptionClassName: O, layout: k = "vertical", justify: A = "start", align: j = "center", separator: M = ": ", itemSeparator: N = !1, wrap: P = !0, strings: F }) {
|
|
33
|
+
let I = e(p, F), L = l.useMemo(() => v.filter(Boolean), [v]);
|
|
34
|
+
if (l.useEffect(() => {}, [k, L]), L.length === 0) return null;
|
|
35
|
+
let R = m[y] ?? m[2], z = T ?? (b ? "gap-2" : "gap-3"), B = b ? "text-xxs" : "text-xs", V = "text-sm", H = S != null, U = H && C;
|
|
36
|
+
if (k === "horizontal") {
|
|
37
|
+
let e = h[A] ?? h.start, p = g[j] ?? g.center, m = typeof N == "string" ? N : N ? " | " : "", v = b ? "gap-2" : "gap-3", y = P ? "flex-wrap" : "flex-nowrap";
|
|
38
|
+
return /* @__PURE__ */ d("div", {
|
|
39
|
+
className: t("metadata-list--component", "metadata-list-container", w),
|
|
40
|
+
children: [
|
|
41
|
+
!!H && /* @__PURE__ */ u(s, {
|
|
42
|
+
tag: "h6",
|
|
43
|
+
className: "mb-1.5 font-medium text-muted-foreground uppercase tracking-wide",
|
|
44
|
+
children: S
|
|
45
|
+
}),
|
|
46
|
+
!!U && /* @__PURE__ */ u(c, { className: "mb-2" }),
|
|
47
|
+
/* @__PURE__ */ u("div", {
|
|
48
|
+
className: t("flex", y, e, p, v),
|
|
49
|
+
children: L.map((e, s) => {
|
|
50
|
+
let c = _(e, s), p = e.emptyLabel ?? x, h = e.value ?? p, g = e.icon, v = e.tooltip !== null && e.tooltip !== void 0, y = typeof e.render == "function", S = m && s < L.length - 1;
|
|
51
|
+
return /* @__PURE__ */ d(l.Fragment, { children: [/* @__PURE__ */ d("div", {
|
|
52
|
+
className: "flex items-center gap-1.5",
|
|
53
|
+
children: [
|
|
54
|
+
!!g && /* @__PURE__ */ u(g, { className: t("flex-shrink-0", b ? "h-3 w-3" : "h-3.5 w-3.5", "text-muted-foreground") }),
|
|
55
|
+
/* @__PURE__ */ u(o, {
|
|
56
|
+
size: "xs",
|
|
57
|
+
type: "secondary",
|
|
58
|
+
className: t("metadata--field tracking-wide whitespace-nowrap", B, E),
|
|
59
|
+
children: e.label
|
|
60
|
+
}),
|
|
61
|
+
!!v && /* @__PURE__ */ d(a, { children: [/* @__PURE__ */ u(r, { render: (r) => /* @__PURE__ */ u(n, {
|
|
62
|
+
...r,
|
|
63
|
+
type: "button",
|
|
64
|
+
variant: "secondary",
|
|
65
|
+
buttonStyle: "ghost",
|
|
66
|
+
size: "icon-xs",
|
|
67
|
+
className: t("inline-flex items-center", r.className),
|
|
68
|
+
"aria-label": typeof e.label == "string" ? I.formatInfoAriaLabel(e.label) : I.infoFallback,
|
|
69
|
+
children: /* @__PURE__ */ u(f, { className: "h-3 w-3 text-muted-foreground cursor-help flex-shrink-0" })
|
|
70
|
+
}) }), /* @__PURE__ */ u(i, {
|
|
71
|
+
side: "top",
|
|
72
|
+
align: "start",
|
|
73
|
+
className: "max-w-xs",
|
|
74
|
+
children: /* @__PURE__ */ u(o, {
|
|
75
|
+
type: "inverse",
|
|
76
|
+
size: "xs",
|
|
77
|
+
children: e.tooltip
|
|
78
|
+
})
|
|
79
|
+
})] }),
|
|
80
|
+
/* @__PURE__ */ u(o, {
|
|
81
|
+
size: "xs",
|
|
82
|
+
type: "secondary",
|
|
83
|
+
children: M
|
|
84
|
+
}),
|
|
85
|
+
y ? e.render?.(e) : /* @__PURE__ */ u(o, {
|
|
86
|
+
weight: "medium",
|
|
87
|
+
className: t(V, D),
|
|
88
|
+
children: h
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
}), !!S && /* @__PURE__ */ u(o, {
|
|
92
|
+
size: "xs",
|
|
93
|
+
type: "secondary",
|
|
94
|
+
children: m
|
|
95
|
+
})] }, c);
|
|
96
|
+
})
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (k === "rows") {
|
|
102
|
+
let e = b ? "py-1.5" : "py-2.5";
|
|
103
|
+
return /* @__PURE__ */ d("div", {
|
|
104
|
+
className: t("metadata-list--component", "metadata-list-container", w),
|
|
105
|
+
children: [
|
|
106
|
+
!!H && /* @__PURE__ */ u(s, {
|
|
107
|
+
tag: "h6",
|
|
108
|
+
className: "font-medium text-muted-foreground uppercase tracking-wide mb-2",
|
|
109
|
+
children: S
|
|
110
|
+
}),
|
|
111
|
+
!!U && /* @__PURE__ */ u(c, { className: "mb-2" }),
|
|
112
|
+
/* @__PURE__ */ u("dl", {
|
|
113
|
+
className: "divide-y divide-border/50",
|
|
114
|
+
children: L.map((s, c) => {
|
|
115
|
+
let l = _(s, c), p = s.emptyLabel ?? x, m = s.value ?? p, h = s.icon, g = s.tooltip !== null && s.tooltip !== void 0, v = typeof s.render == "function";
|
|
116
|
+
return /* @__PURE__ */ d("div", {
|
|
117
|
+
className: t("grid items-baseline gap-x-4 gap-y-1 grid-cols-[minmax(120px,1fr)_2fr]", e),
|
|
118
|
+
children: [/* @__PURE__ */ d("dt", {
|
|
119
|
+
className: "flex items-center gap-1.5 min-w-0",
|
|
120
|
+
children: [
|
|
121
|
+
!!h && /* @__PURE__ */ u(h, { className: t("flex-shrink-0 text-muted-foreground", b ? "h-3 w-3" : "h-3.5 w-3.5") }),
|
|
122
|
+
/* @__PURE__ */ u(o, {
|
|
123
|
+
type: "secondary",
|
|
124
|
+
className: t("metadata--field truncate tracking-wide", B, E),
|
|
125
|
+
children: s.label
|
|
126
|
+
}),
|
|
127
|
+
!!g && /* @__PURE__ */ d(a, { children: [/* @__PURE__ */ u(r, { render: (e) => /* @__PURE__ */ u(n, {
|
|
128
|
+
...e,
|
|
129
|
+
type: "button",
|
|
130
|
+
variant: "secondary",
|
|
131
|
+
buttonStyle: "ghost",
|
|
132
|
+
size: "icon-xs",
|
|
133
|
+
className: t("inline-flex items-center", e.className),
|
|
134
|
+
"aria-label": typeof s.label == "string" ? I.formatInfoAriaLabel(s.label) : I.infoFallback,
|
|
135
|
+
children: /* @__PURE__ */ u(f, { className: "h-3 w-3 text-muted-foreground cursor-help flex-shrink-0" })
|
|
136
|
+
}) }), /* @__PURE__ */ u(i, {
|
|
137
|
+
side: "top",
|
|
138
|
+
align: "start",
|
|
139
|
+
className: "max-w-xs",
|
|
140
|
+
children: /* @__PURE__ */ u(o, {
|
|
141
|
+
type: "inverse",
|
|
142
|
+
size: "xs",
|
|
143
|
+
children: s.tooltip
|
|
144
|
+
})
|
|
145
|
+
})] })
|
|
146
|
+
]
|
|
147
|
+
}), /* @__PURE__ */ d("dd", {
|
|
148
|
+
className: "min-w-0",
|
|
149
|
+
children: [v ? s.render?.(s) : /* @__PURE__ */ u(o, {
|
|
150
|
+
weight: "medium",
|
|
151
|
+
className: t("break-words", D),
|
|
152
|
+
children: m
|
|
153
|
+
}), !!s.description && /* @__PURE__ */ u(o, {
|
|
154
|
+
size: "xs",
|
|
155
|
+
type: "secondary",
|
|
156
|
+
className: t("mt-0.5", O),
|
|
157
|
+
children: s.description
|
|
158
|
+
})]
|
|
159
|
+
})]
|
|
160
|
+
}, l);
|
|
161
|
+
})
|
|
162
|
+
})
|
|
163
|
+
]
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
return /* @__PURE__ */ d("div", {
|
|
167
|
+
className: t("metadata-list--component", "metadata-list-container", w),
|
|
168
|
+
children: [
|
|
169
|
+
!!H && /* @__PURE__ */ u(s, {
|
|
170
|
+
tag: "h6",
|
|
171
|
+
className: "mb-1.5 font-medium text-muted-foreground uppercase tracking-wide",
|
|
172
|
+
children: S
|
|
173
|
+
}),
|
|
174
|
+
!!U && /* @__PURE__ */ u(c, { className: "mb-2" }),
|
|
175
|
+
/* @__PURE__ */ u("div", {
|
|
176
|
+
className: t("grid", R, z),
|
|
177
|
+
children: L.map((e, s) => {
|
|
178
|
+
let c = _(e, s), l = e.emptyLabel ?? x, p = e.value ?? l, m = e.icon, h = e.tooltip !== null && e.tooltip !== void 0, g = typeof e.render == "function";
|
|
179
|
+
return /* @__PURE__ */ d("div", {
|
|
180
|
+
className: "space-y-0.5",
|
|
181
|
+
children: [
|
|
182
|
+
/* @__PURE__ */ d("div", {
|
|
183
|
+
className: "flex items-center gap-1.5",
|
|
184
|
+
children: [
|
|
185
|
+
!!m && /* @__PURE__ */ u(m, { className: t("flex-shrink-0", b ? "h-3 w-3" : "h-3.5 w-3.5", "text-muted-foreground") }),
|
|
186
|
+
/* @__PURE__ */ u(o, {
|
|
187
|
+
size: "xs",
|
|
188
|
+
type: "secondary",
|
|
189
|
+
className: t("metadata--field tracking-wide", B, E),
|
|
190
|
+
children: e.label
|
|
191
|
+
}),
|
|
192
|
+
!!h && /* @__PURE__ */ d(a, { children: [/* @__PURE__ */ u(r, { render: (r) => /* @__PURE__ */ u(n, {
|
|
193
|
+
...r,
|
|
194
|
+
type: "button",
|
|
195
|
+
variant: "secondary",
|
|
196
|
+
buttonStyle: "ghost",
|
|
197
|
+
size: "icon-xs",
|
|
198
|
+
className: t("inline-flex items-center", r.className),
|
|
199
|
+
"aria-label": typeof e.label == "string" ? I.formatInfoAriaLabel(e.label) : I.infoFallback,
|
|
200
|
+
children: /* @__PURE__ */ u(f, { className: "h-3 w-3 text-muted-foreground cursor-help flex-shrink-0" })
|
|
201
|
+
}) }), /* @__PURE__ */ u(i, {
|
|
202
|
+
side: "top",
|
|
203
|
+
align: "start",
|
|
204
|
+
className: "max-w-xs",
|
|
205
|
+
children: /* @__PURE__ */ u(o, {
|
|
206
|
+
type: "inverse",
|
|
207
|
+
size: "xs",
|
|
208
|
+
children: e.tooltip
|
|
209
|
+
})
|
|
210
|
+
})] })
|
|
211
|
+
]
|
|
212
|
+
}),
|
|
213
|
+
g ? e.render?.(e) : /* @__PURE__ */ u(o, {
|
|
214
|
+
weight: "medium",
|
|
215
|
+
className: t(V, D),
|
|
216
|
+
children: p
|
|
217
|
+
}),
|
|
218
|
+
!!e.description && /* @__PURE__ */ u(o, {
|
|
219
|
+
size: "xs",
|
|
220
|
+
type: "secondary",
|
|
221
|
+
className: t(O),
|
|
222
|
+
children: e.description
|
|
223
|
+
})
|
|
224
|
+
]
|
|
225
|
+
}, c);
|
|
226
|
+
})
|
|
227
|
+
})
|
|
228
|
+
]
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
v.displayName = "MetadataList";
|
|
232
|
+
//#endregion
|
|
233
|
+
export { v as t };
|
|
234
|
+
|
|
235
|
+
//# sourceMappingURL=metadata-Ckcmar8d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-Ckcmar8d.js","names":[],"sources":["../../src/components/base/display/metadata/metadata-list.strings.ts","../../src/components/base/display/metadata/metadata-list.tsx"],"sourcesContent":["/**\n * Default user-facing strings for `<MetadataList>`.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <MetadataList strings={{ infoFallback: t('metadata.info') }} … />\n */\n\nexport interface MetadataListStrings {\n\t/**\n\t * Suffix appended to the label when generating the tooltip-trigger\n\t * `aria-label` (\"<label> info\"). Receives the label as the first arg\n\t * so consumers can localise the full template.\n\t */\n\tformatInfoAriaLabel: (label: string) => string;\n\t/** Fallback `aria-label` used when the field label is not a plain string. */\n\tinfoFallback: string;\n}\n\nexport const defaultMetadataListStrings: MetadataListStrings = {\n\tformatInfoAriaLabel: (label) => `${label} info`,\n\tinfoFallback: 'Info',\n};\n","/**\n * MetadataList — flexible label/value list for entity metadata.\n *\n * Two layouts:\n * - `vertical` (default): grid of label-on-top, value-below cells, ideal for\n * entity detail screens. Honours `columns` (1–4) and `dense` mode.\n * - `horizontal`: inline label/separator/value pairs that wrap, suitable for\n * pill-style summaries (e.g. \"Created Jan 4 · By Alice · v3.2\").\n *\n * Each item supports an optional icon, tooltip, custom `render`, and\n * per-item `emptyLabel`. Falls back to the shared `EMPTY` when both are\n * missing. Returns `null` when the list is empty so callers can render\n * unconditionally.\n */\nimport { Info, type LucideIcon } from 'lucide-react';\nimport React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Separator } from '@/components/base/display/separator';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/base/display/tooltip';\nimport Heading from '@/components/typography/heading';\nimport Text from '@/components/typography/text';\nimport { EMPTY } from '@/lib/format';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultMetadataListStrings,\n\ttype MetadataListStrings,\n} from './metadata-list.strings';\n\nexport type { MetadataListStrings };\nexport { defaultMetadataListStrings };\n\nexport type MetadataListItem = {\n\tid?: string;\n\tlabel: React.ReactNode;\n\tvalue?: React.ReactNode | null;\n\tdescription?: React.ReactNode | null;\n\ttooltip?: React.ReactNode;\n\ticon?: LucideIcon;\n\temptyLabel?: React.ReactNode;\n\trender?: (item: MetadataListItem) => React.ReactNode;\n};\n\nexport type MetadataListProps = {\n\titems: MetadataListItem[];\n\tcolumns?: 1 | 2 | 3 | 4;\n\tdense?: boolean;\n\temptyLabel?: React.ReactNode;\n\ttitle?: React.ReactNode;\n\ttitleSeparator?: boolean;\n\tclassName?: string;\n\tgapClassName?: string;\n\tlabelClassName?: string;\n\tvalueClassName?: string;\n\tdescriptionClassName?: string;\n\tlayout?: 'vertical' | 'horizontal' | 'rows';\n\tjustify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';\n\talign?: 'start' | 'center' | 'end' | 'baseline';\n\tseparator?: string;\n\titemSeparator?: boolean | string;\n\twrap?: boolean;\n\t/** Per-instance string overrides (deep-merged over `defaultMetadataListStrings`). */\n\tstrings?: StringsProp<MetadataListStrings>;\n};\n\nconst columnClassMap: Record<NonNullable<MetadataListProps['columns']>, string> = {\n\t1: 'grid-cols-1',\n\t2: 'grid-cols-1 sm:grid-cols-2',\n\t3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n\t4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',\n};\n\nconst justifyClassMap: Record<NonNullable<MetadataListProps['justify']>, string> = {\n\tstart: 'justify-start',\n\tend: 'justify-end',\n\tcenter: 'justify-center',\n\tbetween: 'justify-between',\n\taround: 'justify-around',\n\tevenly: 'justify-evenly',\n};\n\nconst alignClassMap: Record<NonNullable<MetadataListProps['align']>, string> = {\n\tstart: 'items-start',\n\tcenter: 'items-center',\n\tend: 'items-end',\n\tbaseline: 'items-baseline',\n};\n\nconst resolveKey = (item: MetadataListItem, index: number): string => {\n\tif (item.id) {\n\t\treturn item.id;\n\t}\n\n\tconst rawLabel = typeof item.label === 'string' ? item.label : `${index}`;\n\treturn `metadata-${rawLabel}-${index}`;\n};\n\nexport function MetadataList({\n\titems,\n\tcolumns = 2,\n\tdense = false,\n\temptyLabel = EMPTY,\n\ttitle,\n\ttitleSeparator = false,\n\tclassName,\n\tgapClassName,\n\tlabelClassName,\n\tvalueClassName,\n\tdescriptionClassName,\n\tlayout = 'vertical',\n\tjustify = 'start',\n\talign = 'center',\n\tseparator = ': ',\n\titemSeparator = false,\n\twrap = true,\n\tstrings: stringsProp,\n}: MetadataListProps) {\n\tconst strings = useStrings(defaultMetadataListStrings, stringsProp);\n\tconst list = React.useMemo(() => items.filter(Boolean), [items]);\n\n\tReact.useEffect(() => {\n\t\tif (!import.meta.env.DEV) return;\n\t\tif (layout !== 'horizontal') return;\n\n\t\tconst itemsWithDescriptions = list.filter((item) => Boolean(item.description));\n\t\tif (itemsWithDescriptions.length > 0) {\n\t\t\tconsole.warn(\n\t\t\t\t'[MetadataList] Horizontal layout does not support descriptions. Items with descriptions will not display them.',\n\t\t\t\titemsWithDescriptions,\n\t\t\t);\n\t\t}\n\t}, [layout, list]);\n\n\tif (list.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst gridClass = columnClassMap[columns] ?? columnClassMap[2];\n\tconst gapClass = gapClassName ?? (dense ? 'gap-2' : 'gap-3');\n\tconst labelBase = dense ? 'text-xxs' : 'text-xs';\n\tconst valueBase = 'text-sm';\n\tconst hasTitle = title !== null && title !== undefined;\n\tconst shouldShowSeparator = hasTitle && titleSeparator;\n\n\tif (layout === 'horizontal') {\n\t\tconst justifyClass = justifyClassMap[justify] ?? justifyClassMap.start;\n\t\tconst alignClass = alignClassMap[align] ?? alignClassMap.center;\n\t\tconst itemSeparatorText =\n\t\t\ttypeof itemSeparator === 'string'\n\t\t\t\t? itemSeparator\n\t\t\t\t: itemSeparator\n\t\t\t\t\t? ' | '\n\t\t\t\t\t: '';\n\t\tconst horizontalGapClass = dense ? 'gap-2' : 'gap-3';\n\t\tconst wrapClass = wrap ? 'flex-wrap' : 'flex-nowrap';\n\n\t\treturn (\n\t\t\t<div className={cn('metadata-list--component', 'metadata-list-container', className)}>\n\t\t\t\t{!!hasTitle && (\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\t\tclassName=\"mb-1.5 font-medium text-muted-foreground uppercase tracking-wide\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Heading>\n\t\t\t\t)}\n\n\t\t\t\t{!!shouldShowSeparator && <Separator className=\"mb-2\" />}\n\n\t\t\t\t<div className={cn('flex', wrapClass, justifyClass, alignClass, horizontalGapClass)}>\n\t\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\t\t\t\t\t\tconst showItemSeparator = itemSeparatorText && index < list.length - 1;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment key={key}>\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t<Icon\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'flex-shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\tdense ? 'h-3 w-3' : 'h-3.5 w-3.5',\n\t\t\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\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)}\n\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'metadata--field tracking-wide whitespace-nowrap',\n\t\t\t\t\t\t\t\t\t\t\tlabelBase,\n\t\t\t\t\t\t\t\t\t\t\tlabelClassName,\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{item.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\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\t'inline-flex items-center',\n\t\t\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\t\t\t(triggerProps as { className?: string }).className,\n\t\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\t\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\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\t\t<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\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<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\t\tside=\"top\"\n\t\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-xs\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{separator}\n\t\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\t\t\titem.render?.(item)\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(valueBase, valueClassName)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t{!!showItemSeparator && (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{itemSeparatorText}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</React.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\tif (layout === 'rows') {\n\t\tconst rowPaddingY = dense ? 'py-1.5' : 'py-2.5';\n\t\treturn (\n\t\t\t<div className={cn('metadata-list--component', 'metadata-list-container', className)}>\n\t\t\t\t{!!hasTitle && (\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\t\tclassName=\"font-medium text-muted-foreground uppercase tracking-wide mb-2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Heading>\n\t\t\t\t)}\n\t\t\t\t{!!shouldShowSeparator && <Separator className=\"mb-2\" />}\n\t\t\t\t<dl className=\"divide-y divide-border/50\">\n\t\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={cn('grid items-baseline gap-x-4 gap-y-1 grid-cols-[minmax(120px,1fr)_2fr]', rowPaddingY)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<dt className=\"flex items-center gap-1.5 min-w-0\">\n\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t<Icon className={cn('flex-shrink-0 text-muted-foreground', dense ? 'h-3 w-3' : 'h-3.5 w-3.5')} />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<Text type=\"secondary\" className={cn('metadata--field truncate tracking-wide', labelBase, labelClassName)}>\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\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\t\tclassName={cn('inline-flex items-center', (triggerProps as { className?: string }).className)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\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\t\t<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\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<TooltipContent side=\"top\" align=\"start\" className=\"max-w-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</dt>\n\t\t\t\t\t\t\t\t<dd className=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\t\t\titem.render?.(item)\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" className={cn('break-words', valueClassName)}>\n\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className={cn('mt-0.5', descriptionClassName)}>\n\t\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</dl>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn('metadata-list--component', 'metadata-list-container', className)}>\n\t\t\t{!!hasTitle && (\n\t\t\t\t<Heading\n\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\tclassName=\"mb-1.5 font-medium text-muted-foreground uppercase tracking-wide\"\n\t\t\t\t>\n\t\t\t\t\t{title}\n\t\t\t\t</Heading>\n\t\t\t)}\n\n\t\t\t{!!shouldShowSeparator && <Separator className=\"mb-2\" />}\n\n\t\t\t<div className={cn('grid', gridClass, gapClass)}>\n\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tclassName=\"space-y-0.5\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'flex-shrink-0',\n\t\t\t\t\t\t\t\t\t\t\tdense ? 'h-3 w-3' : 'h-3.5 w-3.5',\n\t\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\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)}\n\n\t\t\t\t\t\t\t\t<Text\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\tclassName={cn('metadata--field tracking-wide', labelBase, labelClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\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'inline-flex items-center',\n\t\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\t\t(triggerProps as { className?: string }).className,\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\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\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<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\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<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\tside=\"top\"\n\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-xs\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\titem.render?.(item)\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\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\tclassName={cn(valueBase, valueClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t<Text\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\tclassName={cn(descriptionClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.description}\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</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nMetadataList.displayName = 'MetadataList';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/strings.cjs"),n=require("../lib/utils.cjs"),r=require("./button-BI347RlM.cjs"),i=require("./tooltip-mvxZV_Lu.cjs"),a=require("./heading-0DYCOrgC.cjs"),o=require("./separator-q42IlFFA.cjs");let s=require("react");s=e.t(s,1);let c=require("react/jsx-runtime"),l=require("lucide-react");var u={formatInfoAriaLabel:e=>`${e} info`,infoFallback:`Info`},d={1:`grid-cols-1`,2:`grid-cols-1 sm:grid-cols-2`,3:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3`,4:`grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4`},f={start:`justify-start`,end:`justify-end`,center:`justify-center`,between:`justify-between`,around:`justify-around`,evenly:`justify-evenly`},p={start:`items-start`,center:`items-center`,end:`items-end`,baseline:`items-baseline`},m=(e,t)=>e.id?e.id:`metadata-${typeof e.label==`string`?e.label:`${t}`}-${t}`;function h({items:e,columns:h=2,dense:g=!1,emptyLabel:_=`—`,title:v,titleSeparator:y=!1,className:b,gapClassName:x,labelClassName:S,valueClassName:C,descriptionClassName:w,layout:T=`vertical`,justify:E=`start`,align:D=`center`,separator:O=`: `,itemSeparator:k=!1,wrap:A=!0,strings:j}){let M=t.useStrings(u,j),N=s.default.useMemo(()=>e.filter(Boolean),[e]);if(s.default.useEffect(()=>{},[T,N]),N.length===0)return null;let P=d[h]??d[2],F=x??(g?`gap-2`:`gap-3`),I=g?`text-xxs`:`text-xs`,L=`text-sm`,R=v!=null,z=R&&y;if(T===`horizontal`){let e=f[E]??f.start,t=p[D]??p.center,u=typeof k==`string`?k:k?` | `:``,d=g?`gap-2`:`gap-3`,h=A?`flex-wrap`:`flex-nowrap`;return(0,c.jsxs)(`div`,{className:n.cn(`metadata-list--component`,`metadata-list-container`,b),children:[!!R&&(0,c.jsx)(a.t,{tag:`h6`,className:`mb-1.5 font-medium text-muted-foreground uppercase tracking-wide`,children:v}),!!z&&(0,c.jsx)(o.t,{className:`mb-2`}),(0,c.jsx)(`div`,{className:n.cn(`flex`,h,e,t,d),children:N.map((e,t)=>{let o=m(e,t),d=e.emptyLabel??_,f=e.value??d,p=e.icon,h=e.tooltip!==null&&e.tooltip!==void 0,v=typeof e.render==`function`,y=u&&t<N.length-1;return(0,c.jsxs)(s.default.Fragment,{children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[!!p&&(0,c.jsx)(p,{className:n.cn(`flex-shrink-0`,g?`h-3 w-3`:`h-3.5 w-3.5`,`text-muted-foreground`)}),(0,c.jsx)(a.n,{size:`xs`,type:`secondary`,className:n.cn(`metadata--field tracking-wide whitespace-nowrap`,I,S),children:e.label}),!!h&&(0,c.jsxs)(i.t,{children:[(0,c.jsx)(i.i,{render:t=>(0,c.jsx)(r.t,{...t,type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,className:n.cn(`inline-flex items-center`,t.className),"aria-label":typeof e.label==`string`?M.formatInfoAriaLabel(e.label):M.infoFallback,children:(0,c.jsx)(l.Info,{className:`h-3 w-3 text-muted-foreground cursor-help flex-shrink-0`})})}),(0,c.jsx)(i.n,{side:`top`,align:`start`,className:`max-w-xs`,children:(0,c.jsx)(a.n,{type:`inverse`,size:`xs`,children:e.tooltip})})]}),(0,c.jsx)(a.n,{size:`xs`,type:`secondary`,children:O}),v?e.render?.(e):(0,c.jsx)(a.n,{weight:`medium`,className:n.cn(L,C),children:f})]}),!!y&&(0,c.jsx)(a.n,{size:`xs`,type:`secondary`,children:u})]},o)})})]})}if(T===`rows`){let e=g?`py-1.5`:`py-2.5`;return(0,c.jsxs)(`div`,{className:n.cn(`metadata-list--component`,`metadata-list-container`,b),children:[!!R&&(0,c.jsx)(a.t,{tag:`h6`,className:`font-medium text-muted-foreground uppercase tracking-wide mb-2`,children:v}),!!z&&(0,c.jsx)(o.t,{className:`mb-2`}),(0,c.jsx)(`dl`,{className:`divide-y divide-border/50`,children:N.map((t,o)=>{let s=m(t,o),u=t.emptyLabel??_,d=t.value??u,f=t.icon,p=t.tooltip!==null&&t.tooltip!==void 0,h=typeof t.render==`function`;return(0,c.jsxs)(`div`,{className:n.cn(`grid items-baseline gap-x-4 gap-y-1 grid-cols-[minmax(120px,1fr)_2fr]`,e),children:[(0,c.jsxs)(`dt`,{className:`flex items-center gap-1.5 min-w-0`,children:[!!f&&(0,c.jsx)(f,{className:n.cn(`flex-shrink-0 text-muted-foreground`,g?`h-3 w-3`:`h-3.5 w-3.5`)}),(0,c.jsx)(a.n,{type:`secondary`,className:n.cn(`metadata--field truncate tracking-wide`,I,S),children:t.label}),!!p&&(0,c.jsxs)(i.t,{children:[(0,c.jsx)(i.i,{render:e=>(0,c.jsx)(r.t,{...e,type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,className:n.cn(`inline-flex items-center`,e.className),"aria-label":typeof t.label==`string`?M.formatInfoAriaLabel(t.label):M.infoFallback,children:(0,c.jsx)(l.Info,{className:`h-3 w-3 text-muted-foreground cursor-help flex-shrink-0`})})}),(0,c.jsx)(i.n,{side:`top`,align:`start`,className:`max-w-xs`,children:(0,c.jsx)(a.n,{type:`inverse`,size:`xs`,children:t.tooltip})})]})]}),(0,c.jsxs)(`dd`,{className:`min-w-0`,children:[h?t.render?.(t):(0,c.jsx)(a.n,{weight:`medium`,className:n.cn(`break-words`,C),children:d}),!!t.description&&(0,c.jsx)(a.n,{size:`xs`,type:`secondary`,className:n.cn(`mt-0.5`,w),children:t.description})]})]},s)})})]})}return(0,c.jsxs)(`div`,{className:n.cn(`metadata-list--component`,`metadata-list-container`,b),children:[!!R&&(0,c.jsx)(a.t,{tag:`h6`,className:`mb-1.5 font-medium text-muted-foreground uppercase tracking-wide`,children:v}),!!z&&(0,c.jsx)(o.t,{className:`mb-2`}),(0,c.jsx)(`div`,{className:n.cn(`grid`,P,F),children:N.map((e,t)=>{let o=m(e,t),s=e.emptyLabel??_,u=e.value??s,d=e.icon,f=e.tooltip!==null&&e.tooltip!==void 0,p=typeof e.render==`function`;return(0,c.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[!!d&&(0,c.jsx)(d,{className:n.cn(`flex-shrink-0`,g?`h-3 w-3`:`h-3.5 w-3.5`,`text-muted-foreground`)}),(0,c.jsx)(a.n,{size:`xs`,type:`secondary`,className:n.cn(`metadata--field tracking-wide`,I,S),children:e.label}),!!f&&(0,c.jsxs)(i.t,{children:[(0,c.jsx)(i.i,{render:t=>(0,c.jsx)(r.t,{...t,type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,className:n.cn(`inline-flex items-center`,t.className),"aria-label":typeof e.label==`string`?M.formatInfoAriaLabel(e.label):M.infoFallback,children:(0,c.jsx)(l.Info,{className:`h-3 w-3 text-muted-foreground cursor-help flex-shrink-0`})})}),(0,c.jsx)(i.n,{side:`top`,align:`start`,className:`max-w-xs`,children:(0,c.jsx)(a.n,{type:`inverse`,size:`xs`,children:e.tooltip})})]})]}),p?e.render?.(e):(0,c.jsx)(a.n,{weight:`medium`,className:n.cn(L,C),children:u}),!!e.description&&(0,c.jsx)(a.n,{size:`xs`,type:`secondary`,className:n.cn(w),children:e.description})]},o)})})]})}h.displayName=`MetadataList`,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return h}});
|
|
2
|
+
//# sourceMappingURL=metadata-DamdYVZL.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-DamdYVZL.cjs","names":[],"sources":["../../src/components/base/display/metadata/metadata-list.strings.ts","../../src/components/base/display/metadata/metadata-list.tsx"],"sourcesContent":["/**\n * Default user-facing strings for `<MetadataList>`.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <MetadataList strings={{ infoFallback: t('metadata.info') }} … />\n */\n\nexport interface MetadataListStrings {\n\t/**\n\t * Suffix appended to the label when generating the tooltip-trigger\n\t * `aria-label` (\"<label> info\"). Receives the label as the first arg\n\t * so consumers can localise the full template.\n\t */\n\tformatInfoAriaLabel: (label: string) => string;\n\t/** Fallback `aria-label` used when the field label is not a plain string. */\n\tinfoFallback: string;\n}\n\nexport const defaultMetadataListStrings: MetadataListStrings = {\n\tformatInfoAriaLabel: (label) => `${label} info`,\n\tinfoFallback: 'Info',\n};\n","/**\n * MetadataList — flexible label/value list for entity metadata.\n *\n * Two layouts:\n * - `vertical` (default): grid of label-on-top, value-below cells, ideal for\n * entity detail screens. Honours `columns` (1–4) and `dense` mode.\n * - `horizontal`: inline label/separator/value pairs that wrap, suitable for\n * pill-style summaries (e.g. \"Created Jan 4 · By Alice · v3.2\").\n *\n * Each item supports an optional icon, tooltip, custom `render`, and\n * per-item `emptyLabel`. Falls back to the shared `EMPTY` when both are\n * missing. Returns `null` when the list is empty so callers can render\n * unconditionally.\n */\nimport { Info, type LucideIcon } from 'lucide-react';\nimport React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Separator } from '@/components/base/display/separator';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/base/display/tooltip';\nimport Heading from '@/components/typography/heading';\nimport Text from '@/components/typography/text';\nimport { EMPTY } from '@/lib/format';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultMetadataListStrings,\n\ttype MetadataListStrings,\n} from './metadata-list.strings';\n\nexport type { MetadataListStrings };\nexport { defaultMetadataListStrings };\n\nexport type MetadataListItem = {\n\tid?: string;\n\tlabel: React.ReactNode;\n\tvalue?: React.ReactNode | null;\n\tdescription?: React.ReactNode | null;\n\ttooltip?: React.ReactNode;\n\ticon?: LucideIcon;\n\temptyLabel?: React.ReactNode;\n\trender?: (item: MetadataListItem) => React.ReactNode;\n};\n\nexport type MetadataListProps = {\n\titems: MetadataListItem[];\n\tcolumns?: 1 | 2 | 3 | 4;\n\tdense?: boolean;\n\temptyLabel?: React.ReactNode;\n\ttitle?: React.ReactNode;\n\ttitleSeparator?: boolean;\n\tclassName?: string;\n\tgapClassName?: string;\n\tlabelClassName?: string;\n\tvalueClassName?: string;\n\tdescriptionClassName?: string;\n\tlayout?: 'vertical' | 'horizontal' | 'rows';\n\tjustify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';\n\talign?: 'start' | 'center' | 'end' | 'baseline';\n\tseparator?: string;\n\titemSeparator?: boolean | string;\n\twrap?: boolean;\n\t/** Per-instance string overrides (deep-merged over `defaultMetadataListStrings`). */\n\tstrings?: StringsProp<MetadataListStrings>;\n};\n\nconst columnClassMap: Record<NonNullable<MetadataListProps['columns']>, string> = {\n\t1: 'grid-cols-1',\n\t2: 'grid-cols-1 sm:grid-cols-2',\n\t3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n\t4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',\n};\n\nconst justifyClassMap: Record<NonNullable<MetadataListProps['justify']>, string> = {\n\tstart: 'justify-start',\n\tend: 'justify-end',\n\tcenter: 'justify-center',\n\tbetween: 'justify-between',\n\taround: 'justify-around',\n\tevenly: 'justify-evenly',\n};\n\nconst alignClassMap: Record<NonNullable<MetadataListProps['align']>, string> = {\n\tstart: 'items-start',\n\tcenter: 'items-center',\n\tend: 'items-end',\n\tbaseline: 'items-baseline',\n};\n\nconst resolveKey = (item: MetadataListItem, index: number): string => {\n\tif (item.id) {\n\t\treturn item.id;\n\t}\n\n\tconst rawLabel = typeof item.label === 'string' ? item.label : `${index}`;\n\treturn `metadata-${rawLabel}-${index}`;\n};\n\nexport function MetadataList({\n\titems,\n\tcolumns = 2,\n\tdense = false,\n\temptyLabel = EMPTY,\n\ttitle,\n\ttitleSeparator = false,\n\tclassName,\n\tgapClassName,\n\tlabelClassName,\n\tvalueClassName,\n\tdescriptionClassName,\n\tlayout = 'vertical',\n\tjustify = 'start',\n\talign = 'center',\n\tseparator = ': ',\n\titemSeparator = false,\n\twrap = true,\n\tstrings: stringsProp,\n}: MetadataListProps) {\n\tconst strings = useStrings(defaultMetadataListStrings, stringsProp);\n\tconst list = React.useMemo(() => items.filter(Boolean), [items]);\n\n\tReact.useEffect(() => {\n\t\tif (!import.meta.env.DEV) return;\n\t\tif (layout !== 'horizontal') return;\n\n\t\tconst itemsWithDescriptions = list.filter((item) => Boolean(item.description));\n\t\tif (itemsWithDescriptions.length > 0) {\n\t\t\tconsole.warn(\n\t\t\t\t'[MetadataList] Horizontal layout does not support descriptions. Items with descriptions will not display them.',\n\t\t\t\titemsWithDescriptions,\n\t\t\t);\n\t\t}\n\t}, [layout, list]);\n\n\tif (list.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst gridClass = columnClassMap[columns] ?? columnClassMap[2];\n\tconst gapClass = gapClassName ?? (dense ? 'gap-2' : 'gap-3');\n\tconst labelBase = dense ? 'text-xxs' : 'text-xs';\n\tconst valueBase = 'text-sm';\n\tconst hasTitle = title !== null && title !== undefined;\n\tconst shouldShowSeparator = hasTitle && titleSeparator;\n\n\tif (layout === 'horizontal') {\n\t\tconst justifyClass = justifyClassMap[justify] ?? justifyClassMap.start;\n\t\tconst alignClass = alignClassMap[align] ?? alignClassMap.center;\n\t\tconst itemSeparatorText =\n\t\t\ttypeof itemSeparator === 'string'\n\t\t\t\t? itemSeparator\n\t\t\t\t: itemSeparator\n\t\t\t\t\t? ' | '\n\t\t\t\t\t: '';\n\t\tconst horizontalGapClass = dense ? 'gap-2' : 'gap-3';\n\t\tconst wrapClass = wrap ? 'flex-wrap' : 'flex-nowrap';\n\n\t\treturn (\n\t\t\t<div className={cn('metadata-list--component', 'metadata-list-container', className)}>\n\t\t\t\t{!!hasTitle && (\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\t\tclassName=\"mb-1.5 font-medium text-muted-foreground uppercase tracking-wide\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Heading>\n\t\t\t\t)}\n\n\t\t\t\t{!!shouldShowSeparator && <Separator className=\"mb-2\" />}\n\n\t\t\t\t<div className={cn('flex', wrapClass, justifyClass, alignClass, horizontalGapClass)}>\n\t\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\t\t\t\t\t\tconst showItemSeparator = itemSeparatorText && index < list.length - 1;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment key={key}>\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t<Icon\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'flex-shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\tdense ? 'h-3 w-3' : 'h-3.5 w-3.5',\n\t\t\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\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)}\n\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'metadata--field tracking-wide whitespace-nowrap',\n\t\t\t\t\t\t\t\t\t\t\tlabelBase,\n\t\t\t\t\t\t\t\t\t\t\tlabelClassName,\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{item.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\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\t'inline-flex items-center',\n\t\t\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\t\t\t(triggerProps as { className?: string }).className,\n\t\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\t\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\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\t\t<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\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<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\t\tside=\"top\"\n\t\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-xs\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{separator}\n\t\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\t\t\titem.render?.(item)\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(valueBase, valueClassName)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t{!!showItemSeparator && (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{itemSeparatorText}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</React.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\tif (layout === 'rows') {\n\t\tconst rowPaddingY = dense ? 'py-1.5' : 'py-2.5';\n\t\treturn (\n\t\t\t<div className={cn('metadata-list--component', 'metadata-list-container', className)}>\n\t\t\t\t{!!hasTitle && (\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\t\tclassName=\"font-medium text-muted-foreground uppercase tracking-wide mb-2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Heading>\n\t\t\t\t)}\n\t\t\t\t{!!shouldShowSeparator && <Separator className=\"mb-2\" />}\n\t\t\t\t<dl className=\"divide-y divide-border/50\">\n\t\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={cn('grid items-baseline gap-x-4 gap-y-1 grid-cols-[minmax(120px,1fr)_2fr]', rowPaddingY)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<dt className=\"flex items-center gap-1.5 min-w-0\">\n\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t<Icon className={cn('flex-shrink-0 text-muted-foreground', dense ? 'h-3 w-3' : 'h-3.5 w-3.5')} />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<Text type=\"secondary\" className={cn('metadata--field truncate tracking-wide', labelBase, labelClassName)}>\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\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\t\tclassName={cn('inline-flex items-center', (triggerProps as { className?: string }).className)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\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\t\t<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\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<TooltipContent side=\"top\" align=\"start\" className=\"max-w-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</dt>\n\t\t\t\t\t\t\t\t<dd className=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\t\t\titem.render?.(item)\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" className={cn('break-words', valueClassName)}>\n\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className={cn('mt-0.5', descriptionClassName)}>\n\t\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</dl>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn('metadata-list--component', 'metadata-list-container', className)}>\n\t\t\t{!!hasTitle && (\n\t\t\t\t<Heading\n\t\t\t\t\ttag=\"h6\"\n\t\t\t\t\tclassName=\"mb-1.5 font-medium text-muted-foreground uppercase tracking-wide\"\n\t\t\t\t>\n\t\t\t\t\t{title}\n\t\t\t\t</Heading>\n\t\t\t)}\n\n\t\t\t{!!shouldShowSeparator && <Separator className=\"mb-2\" />}\n\n\t\t\t<div className={cn('grid', gridClass, gapClass)}>\n\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tclassName=\"space-y-0.5\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'flex-shrink-0',\n\t\t\t\t\t\t\t\t\t\t\tdense ? 'h-3 w-3' : 'h-3.5 w-3.5',\n\t\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\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)}\n\n\t\t\t\t\t\t\t\t<Text\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\tclassName={cn('metadata--field tracking-wide', labelBase, labelClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-xs\"\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'inline-flex items-center',\n\t\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\t\t(triggerProps as { className?: string }).className,\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\taria-label={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\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<Info className=\"h-3 w-3 text-muted-foreground cursor-help flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\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<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\tside=\"top\"\n\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-xs\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{hasCustomRender ? (\n\t\t\t\t\t\t\t\titem.render?.(item)\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\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\tclassName={cn(valueBase, valueClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t<Text\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\tclassName={cn(descriptionClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.description}\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</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nMetadataList.displayName = 'MetadataList';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../lib/strings.cjs"),t=require("../lib/utils.cjs"),n=require("./button-BI347RlM.cjs"),r=require("./heading-0DYCOrgC.cjs"),i=require("./badge-CBof1rbF.cjs"),a=require("./dropdown-menu-CHQzQWUK.cjs"),o=require("./separator-q42IlFFA.cjs");let s=require("react"),c=require("react/jsx-runtime"),l=require("lucide-react");function u({locales:e,onRenderLabel:r,variant:i=`buttons`,onSelect:a}){let o=(0,s.useCallback)((e,t)=>{t||a?.(e)},[a]);return e.length===0?null:i===`inline`?(0,c.jsxs)(`div`,{className:t.cn(`language-switcher--component`,`flex items-center justify-center gap-2.5`),children:[(0,c.jsx)(l.Globe,{className:`size-4 text-muted-foreground/70`,"aria-hidden":`true`}),(0,c.jsx)(`div`,{className:`flex items-center justify-center gap-2.5`,children:e.map((n,i)=>{let a=r?r(n):n.nativeLabel;return(0,c.jsxs)(s.Fragment,{children:[(0,c.jsx)(`button`,{type:`button`,onClick:()=>o(n.value,n.active),className:t.cn(`text-xs transition-colors`,n.active?`text-primary font-medium`:`text-muted-foreground hover:text-foreground`),children:a}),i<e.length-1&&(0,c.jsx)(`span`,{"aria-hidden":`true`,className:`size-1 rounded-full bg-border`})]},n.value)})})]}):(0,c.jsx)(`div`,{className:`flex flex-wrap items-center justify-center gap-2`,children:e.map(e=>{let i=r?r(e):e.nativeLabel;return(0,c.jsx)(n.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:i},e.value)})})}u.displayName=`LanguageSwitcher`;function d(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 f({items:e,currentPath:r,activeClassName:i,itemClassName:a}){let o=d(r??(typeof window<`u`?window.location.pathname:``)),s=typeof i==`string`&&i.length>0?i:`bg-muted`,l=e.map(e=>({item:e,normalizedPath:d(e.href)})),u=l.filter(({normalizedPath:e})=>o===e||o.startsWith(`${e}/`)).sort((e,t)=>t.normalizedPath.length-e.normalizedPath.length)[0]?.normalizedPath??null;return(0,c.jsx)(`nav`,{className:t.cn(`aside-navigation-menu--component`,`flex flex-col space-y-1 space-x-0`),children:l.map(({item:e,normalizedPath:r})=>(0,c.jsx)(n.i,{variant:`secondary`,buttonStyle:`ghost`,size:`sm`,fullWidth:!0,className:t.cn(`justify-start`,a,r===u?s:null),nativeButton:!1,render:t=>(0,c.jsx)(`a`,{...t,href:e.href}),children:e.title},e.href))})}f.displayName=`AsideNavigationMenu`;var p={tabsAria:`Tabs`};function m({items:n,currentUrl:r,strings:i}){let a=e.useStrings(p,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]}},l=s(o);return(0,c.jsx)(`div`,{className:t.cn(`navigation-tabs--component`,`navigation-tabs-container w-full`),children:(0,c.jsx)(`nav`,{className:`inline-flex items-center gap-1 rounded-lg bg-muted/60 p-1`,"aria-label":a.tabsAria,children:n.map(e=>{let n=l===s(e.url);return(0,c.jsx)(`a`,{href:e.url,className:t.cn(`whitespace-nowrap flex items-center gap-1 leading-tight rounded-md border border-transparent px-3 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)})})})}m.displayName=`NavigationTabs`;function h({items:e,currentPath:n,className:r,ariaLabel:i=`Tab navigation`}){let a=n??(typeof window<`u`?window.location.pathname:``),o=(0,s.useMemo)(()=>e.map(e=>{let t=a===e.href,n=null;if(typeof e.icon==`string`)n=(0,c.jsx)(`span`,{className:`text-inherit`,children:e.icon});else if(e.icon){let t=e.icon;n=(0,c.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,c.jsx)(`div`,{className:t.cn(`tab-navigation-menu--component`,`w-full`,r),children:(0,c.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,c.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,c.jsx)(`span`,{className:`text-inherit`,children:i}),n.title,!!n.badge&&(0,c.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))})})}h.displayName=`TabNavigationMenu`;function g({eyebrow:e,title:n,description:a,badge:s,breadcrumbs:l,actions:u,children:d,className:f,withSeparator:p=!0}){return(0,c.jsxs)(`header`,{className:t.cn(`page-header--component`,`w-full`,f),children:[!!l&&(0,c.jsx)(`div`,{className:`mb-3`,children:l}),(0,c.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,c.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[!!e&&(0,c.jsx)(r.n,{size:`xxs`,type:`secondary`,weight:`semibold`,className:`mb-1 uppercase tracking-wider`,children:e}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(r.t,{tag:`h2`,className:`text-2xl border-0 pb-0`,children:n}),!!s&&(0,c.jsx)(i.t,{variant:s.variant??`secondary`,children:s.label})]}),!!a&&(0,c.jsx)(r.n,{type:`secondary`,className:`mt-1 max-w-2xl`,children:a})]}),!!u&&(0,c.jsx)(`div`,{className:`flex shrink-0 items-center gap-2`,children:u})]}),!!d&&(0,c.jsx)(`div`,{className:`mt-4`,children:d}),!!p&&(0,c.jsx)(o.t,{className:`mt-4`})]})}g.displayName=`PageHeader`;function _({items:e,rootMargin:n=`-40% 0px -50% 0px`,className:i,onSelect:a}){let[o,l]=(0,s.useState)(e[0]?.id??null);return(0,s.useEffect)(()=>{let t=new IntersectionObserver(e=>{let t=e.find(e=>e.isIntersecting);t?.target.id&&l(t.target.id)},{rootMargin:n,threshold:0});return e.forEach(e=>{let n=document.getElementById(e.id);n&&t.observe(n)}),()=>t.disconnect()},[e,n]),(0,c.jsx)(`nav`,{className:t.cn(`section-nav--component`,`flex flex-col gap-0.5`,i),"aria-label":`Section navigation`,children:e.map(e=>{let n=e.icon,i=o===e.id;return(0,c.jsxs)(`a`,{href:`#${e.id}`,onClick:t=>{t.preventDefault(),document.getElementById(e.id)?.scrollIntoView({behavior:`smooth`,block:`start`}),l(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:[!!n&&(0,c.jsx)(n,{className:`size-3.5 shrink-0`}),(0,c.jsx)(r.n,{tag:`span`,weight:i?`semibold`:`medium`,children:e.label})]},e.id)})})}_.displayName=`SectionNav`;function v(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 y({groups:e,currentPath:n,className:a,itemClassName:o,activeItemClassName:u,ariaLabel:d=`Side navigation`}){let f=v(n??(typeof window<`u`?window.location.pathname:``)),p=(0,s.useMemo)(()=>e.flatMap(e=>e.items.map(t=>({groupId:e.id,normalizedPath:v(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,s.useState)(()=>Object.fromEntries(e.map(e=>[e.id,!!e.defaultCollapsed]))),g=e=>h(t=>({...t,[e]:!t[e]})),_=u&&u.length>0?u:`bg-primary/5 text-primary`;return(0,c.jsx)(`nav`,{className:t.cn(`side-nav--component`,`flex flex-col gap-4`,a),"aria-label":d,children:e.map(e=>{let n=e.collapsible!==!1&&m[e.id],a=!!e.label,s=!n;return(0,c.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[!!a&&(e.collapsible===!1?(0,c.jsx)(r.n,{tag:`div`,size:`xs`,type:`secondary`,weight:`medium`,className:`px-3 py-1.5 uppercase tracking-wider`,children:e.label}):(0,c.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":!n,children:[(0,c.jsx)(`span`,{children:e.label}),(0,c.jsx)(l.ChevronDown,{className:t.cn(`size-3.5 transition-transform`,n&&`-rotate-90`),"aria-hidden":`true`})]})),!!s&&(0,c.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:e.items.map(e=>{let n=e.icon,r=v(e.href)===p;return(0,c.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,c.jsx)(n,{className:t.cn(`size-4 shrink-0`,r?`text-primary`:`text-muted-foreground`)}),(0,c.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label}),!!e.badge&&(0,c.jsx)(i.t,{variant:r?`primary`:`secondary`,className:`shrink-0`,children:e.badge})]},e.href)})})]},e.id)})})}y.displayName=`SideNav`;var b=`inline-flex shrink-0 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 x({items:e,value:n,onChange:r,className:i,tabClassName:o,activeTabClassName:u,moreLabel:d=`More`,ariaLabel:f=`Tab navigation`}){let p=(0,s.useRef)(null),m=(0,s.useRef)(null),[h,g]=(0,s.useState)(e.length);(0,s.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,s.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),x=e=>{r?.(e.id),e.onClick?.()},S=(e,n)=>{let r=e.icon,i=t.cn(b,n?t.cn(`bg-card text-foreground shadow-sm`,u):`text-muted-foreground hover:bg-muted/60`,o),a=(0,c.jsxs)(c.Fragment,{children:[!!r&&(0,c.jsx)(r,{className:`size-3.5`}),(0,c.jsx)(`span`,{children:e.label}),!!e.badge&&(0,c.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,c.jsx)(`a`,{href:e.href,"data-tab-id":e.id,"aria-current":n?`page`:void 0,onClick:()=>x(e),className:t.cn(`overflow-tab-bar--component`,i),children:a},e.id):(0,c.jsx)(`button`,{type:`button`,"data-tab-id":e.id,"aria-pressed":n,onClick:()=>x(e),className:i,children:a},e.id)};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`div`,{ref:m,"aria-hidden":`true`,className:`pointer-events-none fixed left-0 top-0 z-[-1] flex h-0 w-0 items-center gap-1 overflow-hidden opacity-0`,children:e.map(e=>S(e,!1))}),(0,c.jsxs)(`div`,{ref:p,role:`tablist`,"aria-label":f,className:t.cn(`relative flex w-full min-w-0 max-w-full items-center gap-1 overflow-hidden rounded-lg bg-muted/40 p-1`,i),children:[v.map(e=>S(e,e.id===n)),y.length>0&&(0,c.jsxs)(a.t,{children:[(0,c.jsxs)(a.g,{type:`button`,"aria-label":d,className:t.cn(b,`text-muted-foreground hover:bg-muted/60`),children:[(0,c.jsx)(l.MoreHorizontal,{className:`size-3.5`}),(0,c.jsx)(`span`,{children:d})]}),(0,c.jsx)(a.r,{align:`end`,className:`min-w-[160px]`,children:y.map(e=>{let r=e.icon;return(0,c.jsxs)(a.a,{onClick:()=>x(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,c.jsx)(r,{className:`size-3.5`}),(0,c.jsx)(`span`,{children:e.label})]},e.id)})})]})]})]})}x.displayName=`OverflowTabBar`,Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return x}});
|
|
2
|
+
//# sourceMappingURL=navigation-BemwPPC8.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-BemwPPC8.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-md border border-transparent px-3 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')}>\n\t\t\t<nav className=\"inline-flex items-center gap-1 rounded-lg bg-muted/60 p-1\" 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 shrink-0 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=\"pointer-events-none fixed left-0 top-0 z-[-1] flex h-0 w-0 items-center gap-1 overflow-hidden opacity-0\"\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 flex w-full min-w-0 max-w-full items-center gap-1 overflow-hidden 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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"}
|