admin-ui-starter-kit 0.4.4 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/admin-ui-consumer-migration/SKILL.md +26 -4
- package/.agents/skills/admin-ui-consumer-migration/references/actions-service.md +153 -2
- package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +52 -0
- package/.agents/skills/component-library-rules/references/components/INDEX.json +8 -7
- package/.agents/skills/component-library-rules/references/components/INDEX.md +1 -0
- package/.agents/skills/component-library-rules/references/components/base__combobox.md +37 -1
- package/.agents/skills/component-library-rules/references/components/base__forms.md +56 -1
- package/.agents/skills/component-library-rules/references/components/base__table.md +145 -3
- package/.agents/skills/component-library-rules/references/components/composed__admin.md +66 -0
- package/.agents/skills/component-library-rules/references/components/composed__resource-selector-card.md +85 -0
- package/.agents/skills/component-library-rules/references/components/features__filters.md +69 -0
- package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +35 -0
- package/.agents/skills/component-library-rules/references/components/layout__layout-page.md +170 -7
- package/CHANGELOG.md +30 -3
- package/COMPONENT_SELECTION.md +30 -3
- package/INTEGRATION.md +98 -3
- package/README.md +108 -14
- package/dist/_shared/ai-artifact--vEDQFvM.cjs +3 -0
- package/dist/_shared/ai-artifact--vEDQFvM.cjs.map +1 -0
- package/dist/_shared/ai-artifact-p45wDWWX.js +1099 -0
- package/dist/_shared/ai-artifact-p45wDWWX.js.map +1 -0
- package/dist/_shared/auth-1Fl_2u-c.js +643 -0
- package/dist/_shared/auth-1Fl_2u-c.js.map +1 -0
- package/dist/_shared/auth-CVDNwcge.cjs +2 -0
- package/dist/_shared/auth-CVDNwcge.cjs.map +1 -0
- package/dist/_shared/badge-A8wQRShC.js +108 -0
- package/dist/_shared/badge-A8wQRShC.js.map +1 -0
- package/dist/_shared/badge-D7A2LnSf.cjs +2 -0
- package/dist/_shared/badge-D7A2LnSf.cjs.map +1 -0
- package/dist/_shared/combobox-CEzH533Y.cjs +2 -0
- package/dist/_shared/combobox-CEzH533Y.cjs.map +1 -0
- package/dist/_shared/combobox-Dc4vaeGt.js +927 -0
- package/dist/_shared/combobox-Dc4vaeGt.js.map +1 -0
- package/dist/_shared/comments-BDnq4RPN.js +952 -0
- package/dist/_shared/comments-BDnq4RPN.js.map +1 -0
- package/dist/_shared/comments-C4djB-nG.cjs +2 -0
- package/dist/_shared/comments-C4djB-nG.cjs.map +1 -0
- package/dist/_shared/display-AtPyyUZc.cjs +2 -0
- package/dist/_shared/display-AtPyyUZc.cjs.map +1 -0
- package/dist/_shared/display-CL69dmsv.js +1471 -0
- package/dist/_shared/display-CL69dmsv.js.map +1 -0
- package/dist/_shared/forms-Bi5rUH3t.cjs +2 -0
- package/dist/_shared/forms-Bi5rUH3t.cjs.map +1 -0
- package/dist/_shared/forms-Yd0b-3MQ.js +3556 -0
- package/dist/_shared/forms-Yd0b-3MQ.js.map +1 -0
- package/dist/_shared/header-C4SvsbMn.cjs +2 -0
- package/dist/_shared/header-C4SvsbMn.cjs.map +1 -0
- package/dist/_shared/header-CcnW83Vs.js +447 -0
- package/dist/_shared/header-CcnW83Vs.js.map +1 -0
- package/dist/_shared/hooks-DsDGr8xz.cjs +2 -0
- package/dist/_shared/hooks-DsDGr8xz.cjs.map +1 -0
- package/dist/_shared/hooks-IEM3N4VG.js +95 -0
- package/dist/_shared/hooks-IEM3N4VG.js.map +1 -0
- package/dist/_shared/layout.types-CYuDZ_4h.cjs +2 -0
- package/dist/_shared/layout.types-CYuDZ_4h.cjs.map +1 -0
- package/dist/_shared/layout.types-j7zZAPtg.js +28 -0
- package/dist/_shared/layout.types-j7zZAPtg.js.map +1 -0
- package/dist/_shared/mentions-CqwT7pUL.cjs +2 -0
- package/dist/_shared/mentions-CqwT7pUL.cjs.map +1 -0
- package/dist/_shared/mentions-RxzSRAWE.js +506 -0
- package/dist/_shared/mentions-RxzSRAWE.js.map +1 -0
- package/dist/_shared/navigation-B-TE-HR-.cjs +2 -0
- package/dist/_shared/navigation-B-TE-HR-.cjs.map +1 -0
- package/dist/_shared/navigation-Cg0UqMDP.js +424 -0
- package/dist/_shared/navigation-Cg0UqMDP.js.map +1 -0
- package/dist/_shared/page-Bl_eSGLh.js +262 -0
- package/dist/_shared/page-Bl_eSGLh.js.map +1 -0
- package/dist/_shared/page-DTEqSyEK.cjs +2 -0
- package/dist/_shared/page-DTEqSyEK.cjs.map +1 -0
- package/dist/_shared/resource-Bb7dj-aj.cjs +2 -0
- package/dist/_shared/resource-Bb7dj-aj.cjs.map +1 -0
- package/dist/_shared/resource-DljsYA7W.js +243 -0
- package/dist/_shared/resource-DljsYA7W.js.map +1 -0
- package/dist/_shared/settings-BtNkFHl3.cjs +2 -0
- package/dist/_shared/settings-BtNkFHl3.cjs.map +1 -0
- package/dist/_shared/settings-Do6SuM-H.js +143 -0
- package/dist/_shared/settings-Do6SuM-H.js.map +1 -0
- package/dist/_shared/sidebar-BhcdQ9e9.cjs +2 -0
- package/dist/_shared/sidebar-BhcdQ9e9.cjs.map +1 -0
- package/dist/_shared/sidebar-CMoxtuSw.js +538 -0
- package/dist/_shared/sidebar-CMoxtuSw.js.map +1 -0
- package/dist/_shared/table-BgpL5Yt8.cjs +2 -0
- package/dist/_shared/table-BgpL5Yt8.cjs.map +1 -0
- package/dist/_shared/table-Ct3nl0lV.js +1381 -0
- package/dist/_shared/table-Ct3nl0lV.js.map +1 -0
- package/dist/_shared/workspace-BzTFBkmd.cjs +2 -0
- package/dist/_shared/workspace-BzTFBkmd.cjs.map +1 -0
- package/dist/_shared/workspace-CvUYln5V.js +357 -0
- package/dist/_shared/workspace-CvUYln5V.js.map +1 -0
- package/dist/components/base/badge/badge.d.ts.map +1 -1
- package/dist/components/base/badge/index.cjs +1 -1
- package/dist/components/base/badge/index.js +1 -1
- package/dist/components/base/combobox/async-resource-combobox.d.ts +41 -0
- package/dist/components/base/combobox/async-resource-combobox.d.ts.map +1 -0
- package/dist/components/base/combobox/index.cjs +1 -1
- package/dist/components/base/combobox/index.d.ts +1 -0
- package/dist/components/base/combobox/index.d.ts.map +1 -1
- package/dist/components/base/combobox/index.js +2 -2
- package/dist/components/base/data-view/data-view.d.ts +6 -0
- package/dist/components/base/data-view/data-view.d.ts.map +1 -0
- package/dist/components/base/data-view/data-view.strings.d.ts +7 -0
- package/dist/components/base/data-view/data-view.strings.d.ts.map +1 -0
- package/dist/components/base/data-view/data-view.types.d.ts +57 -0
- package/dist/components/base/data-view/data-view.types.d.ts.map +1 -0
- package/dist/components/base/data-view/index.cjs +2 -0
- package/dist/components/base/data-view/index.cjs.map +1 -0
- package/dist/components/base/data-view/index.d.ts +4 -0
- package/dist/components/base/data-view/index.d.ts.map +1 -0
- package/dist/components/base/data-view/index.js +146 -0
- package/dist/components/base/data-view/index.js.map +1 -0
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.js +5 -5
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.d.ts +1 -0
- package/dist/components/base/forms/index.d.ts.map +1 -1
- package/dist/components/base/forms/index.js +5 -6
- package/dist/components/base/forms/workflow.d.ts +47 -0
- package/dist/components/base/forms/workflow.d.ts.map +1 -0
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/index.js +1 -1
- package/dist/components/base/navigation/overflow-tab-bar.d.ts.map +1 -1
- package/dist/components/base/table/data-table.d.ts +1 -1
- package/dist/components/base/table/data-table.d.ts.map +1 -1
- package/dist/components/base/table/index.cjs +1 -1
- package/dist/components/base/table/index.d.ts +1 -1
- package/dist/components/base/table/index.d.ts.map +1 -1
- package/dist/components/base/table/index.js +2 -2
- package/dist/components/base/table/partials/cell-renderers.d.ts +69 -0
- package/dist/components/base/table/partials/cell-renderers.d.ts.map +1 -1
- package/dist/components/base/table/table.strings.d.ts.map +1 -1
- package/dist/components/base/table/table.types.d.ts +22 -1
- package/dist/components/base/table/table.types.d.ts.map +1 -1
- package/dist/components/composed/admin/action-surfaces/index.d.ts +118 -0
- package/dist/components/composed/admin/action-surfaces/index.d.ts.map +1 -0
- package/dist/components/composed/admin/index.cjs +1 -1
- package/dist/components/composed/admin/index.cjs.map +1 -1
- package/dist/components/composed/admin/index.d.ts +1 -0
- package/dist/components/composed/admin/index.d.ts.map +1 -1
- package/dist/components/composed/admin/index.js +392 -131
- package/dist/components/composed/admin/index.js.map +1 -1
- package/dist/components/composed/ai/index.cjs +1 -1
- package/dist/components/composed/ai/index.js +17 -17
- package/dist/components/composed/cards/index.cjs +1 -1
- package/dist/components/composed/cards/index.js +2 -2
- package/dist/components/composed/commerce/index.cjs +1 -1
- package/dist/components/composed/commerce/index.cjs.map +1 -1
- package/dist/components/composed/commerce/index.js +43 -44
- package/dist/components/composed/commerce/index.js.map +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs +1 -1
- package/dist/components/composed/dark-surfaces/index.js +17 -17
- package/dist/components/composed/data-display/index.cjs +1 -1
- package/dist/components/composed/data-display/index.cjs.map +1 -1
- package/dist/components/composed/data-display/index.d.ts +1 -0
- package/dist/components/composed/data-display/index.d.ts.map +1 -1
- package/dist/components/composed/data-display/index.js +355 -285
- package/dist/components/composed/data-display/index.js.map +1 -1
- package/dist/components/composed/data-display/resource-selector-card.d.ts +43 -0
- package/dist/components/composed/data-display/resource-selector-card.d.ts.map +1 -0
- package/dist/components/composed/navigation/index.cjs +1 -1
- package/dist/components/composed/navigation/index.js +1 -1
- package/dist/components/composed/timelines/index.cjs +1 -1
- package/dist/components/composed/timelines/index.js +1 -1
- package/dist/components/features/activities/index.cjs +1 -1
- package/dist/components/features/activities/index.js +1 -1
- package/dist/components/features/ai-chat/index.cjs +1 -1
- package/dist/components/features/ai-chat/index.js +2 -2
- 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 +2 -2
- package/dist/components/features/filters/filter-query.d.ts +22 -0
- package/dist/components/features/filters/filter-query.d.ts.map +1 -0
- package/dist/components/features/filters/index.cjs +1 -1
- package/dist/components/features/filters/index.cjs.map +1 -1
- package/dist/components/features/filters/index.d.ts +1 -0
- package/dist/components/features/filters/index.d.ts.map +1 -1
- package/dist/components/features/filters/index.js +105 -22
- package/dist/components/features/filters/index.js.map +1 -1
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.js +1 -1
- package/dist/components/features/media-library/index.cjs +1 -1
- package/dist/components/features/media-library/index.cjs.map +1 -1
- package/dist/components/features/media-library/index.js +36 -37
- package/dist/components/features/media-library/index.js.map +1 -1
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/products/index.cjs +1 -1
- package/dist/components/features/products/index.cjs.map +1 -1
- package/dist/components/features/products/index.js +4 -5
- package/dist/components/features/products/index.js.map +1 -1
- package/dist/components/features/schema-form/index.cjs +1 -1
- package/dist/components/features/schema-form/index.cjs.map +1 -1
- package/dist/components/features/schema-form/index.js +20 -20
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.js +1 -1
- package/dist/components/layout/app-shell/index.cjs +1 -1
- package/dist/components/layout/app-shell/index.d.ts +1 -0
- package/dist/components/layout/app-shell/index.d.ts.map +1 -1
- package/dist/components/layout/app-shell/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/header.types.d.ts +40 -4
- package/dist/components/layout/header/header.types.d.ts.map +1 -1
- package/dist/components/layout/header/index.cjs +1 -1
- package/dist/components/layout/header/index.d.ts +5 -1
- package/dist/components/layout/header/index.d.ts.map +1 -1
- package/dist/components/layout/header/index.js +2 -2
- package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +3 -0
- package/dist/components/layout/header/partials/header-global-search-trigger.d.ts.map +1 -0
- package/dist/components/layout/header/partials/header-notifications.d.ts.map +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts.map +1 -1
- package/dist/components/layout/header/partials/header-tool-button.d.ts +5 -0
- package/dist/components/layout/header/partials/header-tool-button.d.ts.map +1 -0
- package/dist/components/layout/header/partials/header-tool-popover.d.ts +3 -0
- package/dist/components/layout/header/partials/header-tool-popover.d.ts.map +1 -0
- package/dist/components/layout/header/partials/header-user-menu.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.d.ts +2 -0
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +13 -10
- package/dist/components/layout/page/index.cjs +1 -1
- package/dist/components/layout/page/index.js +1 -1
- package/dist/components/layout/resource/index.cjs +1 -0
- package/dist/components/layout/resource/index.d.ts +3 -0
- package/dist/components/layout/resource/index.d.ts.map +1 -0
- package/dist/components/layout/resource/index.js +2 -0
- package/dist/components/layout/resource/resource.d.ts +13 -0
- package/dist/components/layout/resource/resource.d.ts.map +1 -0
- package/dist/components/layout/resource/resource.types.d.ts +86 -0
- package/dist/components/layout/resource/resource.types.d.ts.map +1 -0
- package/dist/components/layout/settings/index.cjs +1 -0
- package/dist/components/layout/settings/index.d.ts +2 -0
- package/dist/components/layout/settings/index.d.ts.map +1 -0
- package/dist/components/layout/settings/index.js +2 -0
- package/dist/components/layout/settings/settings.d.ts +47 -0
- package/dist/components/layout/settings/settings.d.ts.map +1 -0
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.d.ts +1 -0
- package/dist/components/layout/sidebar/index.d.ts.map +1 -1
- package/dist/components/layout/sidebar/index.js +3 -3
- package/dist/components/layout/workspace/index.cjs +1 -1
- package/dist/components/layout/workspace/index.js +1 -1
- package/dist/services/actions/action-adapters.d.ts +102 -0
- package/dist/services/actions/action-adapters.d.ts.map +1 -0
- package/dist/services/actions/action-provider.d.ts +1 -1
- package/dist/services/actions/action-provider.d.ts.map +1 -1
- package/dist/services/actions/action-store.d.ts +13 -1
- package/dist/services/actions/action-store.d.ts.map +1 -1
- package/dist/services/actions/actions.types.d.ts +86 -0
- package/dist/services/actions/actions.types.d.ts.map +1 -1
- package/dist/services/actions/hooks.d.ts +2 -1
- package/dist/services/actions/hooks.d.ts.map +1 -1
- package/dist/services/actions/index.cjs +1 -1
- package/dist/services/actions/index.cjs.map +1 -1
- package/dist/services/actions/index.d.ts +4 -3
- package/dist/services/actions/index.d.ts.map +1 -1
- package/dist/services/actions/index.js +412 -112
- package/dist/services/actions/index.js.map +1 -1
- package/dist/showcase/assets/AreaChart-CPs34Emq.js +6 -0
- package/dist/showcase/assets/CompositeItem-CRBdF4lY.js +1 -0
- package/dist/showcase/assets/CompositeRoot-BJL04x4e.js +1 -0
- package/dist/showcase/assets/DialogTrigger-DLTfNVyT.js +1 -0
- package/dist/showcase/assets/LabelableContext-DqxJotB_.js +1 -0
- package/dist/showcase/assets/PreviewLayout-DQIZaXaO.js +1 -0
- package/dist/showcase/assets/RadioGroup-Bd_Zncc1.js +1 -0
- package/dist/showcase/assets/Separator-BP98bGSM.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-CHQj8-IW.js +1 -0
- package/dist/showcase/assets/accordion-C-grh_FX.js +171 -0
- package/dist/showcase/assets/accordion-variants-xiD_mqaf.js +1 -0
- package/dist/showcase/assets/action-menu-BkBav9jX.js +1 -0
- package/dist/showcase/assets/activities-DWhVEoyf.js +501 -0
- package/dist/showcase/assets/activities-feed-card-BW5nKGmZ.js +1 -0
- package/dist/showcase/assets/activity-poGMMgYW.js +1 -0
- package/dist/showcase/assets/admin-Dd5rNbt8.js +140 -0
- package/dist/showcase/assets/ai-B-HxItKA.js +41 -0
- package/dist/showcase/assets/ai-artifact-CakosBY2.js +2 -0
- package/dist/showcase/assets/ai-chat-DdxooReQ.js +568 -0
- package/dist/showcase/assets/ai-elements-D1Vv9_Tw.js +387 -0
- package/dist/showcase/assets/ai-new-nIwh-IOk.js +167 -0
- package/dist/showcase/assets/ai-tool-call-D_D0wP5v.js +1 -0
- package/dist/showcase/assets/alert-BUcCtIUZ.js +1 -0
- package/dist/showcase/assets/alert-Dia0s7JO.js +62 -0
- package/dist/showcase/assets/alert-T1jitthq.js +93 -0
- package/dist/showcase/assets/api-key-list-BH7hCegB.js +1 -0
- package/dist/showcase/assets/api-key-list-DGw5v3TM.js +73 -0
- package/dist/showcase/assets/app-sidebar-C9tjHr7T.js +1 -0
- package/dist/showcase/assets/arrow-down-B6kyPDb5.js +1 -0
- package/dist/showcase/assets/arrow-left-D0CtgCZo.js +1 -0
- package/dist/showcase/assets/arrow-right-KBaOzj0x.js +1 -0
- package/dist/showcase/assets/arrow-up-C4Mo45qq.js +1 -0
- package/dist/showcase/assets/arrow-up-right-DP1T-yaT.js +1 -0
- package/dist/showcase/assets/avatar-D7SDbnVK.js +57 -0
- package/dist/showcase/assets/avatar-Dk78XyHT.js +1 -0
- package/dist/showcase/assets/badge-BynPmAU-.js +28 -0
- package/dist/showcase/assets/badge-check-BLKxMna6.js +1 -0
- package/dist/showcase/assets/bell-YYeVQNAQ.js +1 -0
- package/dist/showcase/assets/bot-DW1y5yQ-.js +1 -0
- package/dist/showcase/assets/box-xRYm3qua.js +1 -0
- package/dist/showcase/assets/brain-D_5EG0Lz.js +1 -0
- package/dist/showcase/assets/brand-Dyp6oyOk.js +36 -0
- package/dist/showcase/assets/breadcrumb-DXvRsHCJ.js +52 -0
- package/dist/showcase/assets/breadcrumb-IsBRcWTe.js +1 -0
- package/dist/showcase/assets/breadcrumbs-BU7Rgcpu.js +1 -0
- package/dist/showcase/assets/briefcase-DNJAkTSQ.js +1 -0
- package/dist/showcase/assets/building-2-ew23uhTO.js +1 -0
- package/dist/showcase/assets/button-Vw1Oyu_k.js +44 -0
- package/dist/showcase/assets/button-group-B-jDeq6X.js +1 -0
- package/dist/showcase/assets/buttons-C51ePl4d.js +270 -0
- package/dist/showcase/assets/calendar-B5HmDXFy.js +16 -0
- package/dist/showcase/assets/calendar-BcfonDWf.js +1 -0
- package/dist/showcase/assets/calendar-C30zoOBE.js +1 -0
- package/dist/showcase/assets/calendar-days-RYOuU9Cg.js +1 -0
- package/dist/showcase/assets/camera-CyHnOpqm.js +1 -0
- package/dist/showcase/assets/card-Btuv-VxD.js +188 -0
- package/dist/showcase/assets/card-BvOjmZEl.js +1 -0
- package/dist/showcase/assets/card-primitives-FJQ8zNnk.js +1 -0
- package/dist/showcase/assets/card-radio-group-CEX1QGZc.js +1 -0
- package/dist/showcase/assets/cards-CL6XfZ22.js +328 -0
- package/dist/showcase/assets/carousel-D9G8bQhs.js +449 -0
- package/dist/showcase/assets/cell-renderers-CFw3ElYS.js +1 -0
- package/dist/showcase/assets/chart-CXAM6h1e.js +358 -0
- package/dist/showcase/assets/chart-column-BAuLvocu.js +1 -0
- package/dist/showcase/assets/checkbox-Bu3lf4gm.js +1 -0
- package/dist/showcase/assets/chevron-down-BbbFJsFU.js +1 -0
- package/dist/showcase/assets/chevron-left-CmperXCk.js +1 -0
- package/dist/showcase/assets/chevron-right-0nQcAzMY.js +1 -0
- package/dist/showcase/assets/chevron-up-BXSFzrxh.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-lvrM2T-O.js +1 -0
- package/dist/showcase/assets/circle-DswWOvJq.js +1 -0
- package/dist/showcase/assets/circle-alert-DM8Q0Da0.js +1 -0
- package/dist/showcase/assets/circle-check-BYi8zv0a.js +1 -0
- package/dist/showcase/assets/circle-check-big-WtxiRvrB.js +1 -0
- package/dist/showcase/assets/circle-dot-MfYw-Dij.js +1 -0
- package/dist/showcase/assets/circle-question-mark-CbXDG7RP.js +1 -0
- package/dist/showcase/assets/circle-x-DeZby2HN.js +1 -0
- package/dist/showcase/assets/clock-3-BxradwSg.js +1 -0
- package/dist/showcase/assets/clock-BBX3LCxu.js +1 -0
- package/dist/showcase/assets/code-xml-ldsBhjwS.js +1 -0
- package/dist/showcase/assets/collapsible-COxB1q4f.js +1 -0
- package/dist/showcase/assets/collapsible-D8iHSi7O.js +27 -0
- package/dist/showcase/assets/combobox-gNdpv0PU.js +726 -0
- package/dist/showcase/assets/command-BNVn6pYm.js +1 -0
- package/dist/showcase/assets/command-Bwp2eLDF.js +1 -0
- package/dist/showcase/assets/comment-composer-eU5HG1ZD.js +1 -0
- package/dist/showcase/assets/comment-item-AKJEHLvt.js +1 -0
- package/dist/showcase/assets/comments-hcLJicNU.js +357 -0
- package/dist/showcase/assets/commerce-C_RgOVxU.js +79 -0
- package/dist/showcase/assets/commerce-extras-CVVnDyB5.js +189 -0
- package/dist/showcase/assets/composite-BW91WkOo.js +1 -0
- package/dist/showcase/assets/contact-card-CE82BDxj.js +65 -0
- package/dist/showcase/assets/content-container-Cc8Vv5Wp.js +1 -0
- package/dist/showcase/assets/copyable-CD9f6sxk.js +96 -0
- package/dist/showcase/assets/copyable-DRvJ9iOu.js +1 -0
- package/dist/showcase/assets/course-card-DYzULN2A.js +77 -0
- package/dist/showcase/assets/cpu-Cc__BewW.js +1 -0
- package/dist/showcase/assets/credit-card-CoIW8_5L.js +1 -0
- package/dist/showcase/assets/currency-DEKUvlFU.js +149 -0
- package/dist/showcase/assets/dark-surfaces-D5WXaLLj.js +90 -0
- package/dist/showcase/assets/database-C8o4g1ov.js +1 -0
- package/dist/showcase/assets/date-block-Aw2riL52.js +1 -0
- package/dist/showcase/assets/date-picker-BrBCLxZ8.js +1 -0
- package/dist/showcase/assets/date-pickers-B84_YAGT.js +73 -0
- package/dist/showcase/assets/dense-info-BaI61NnP.js +106 -0
- package/dist/showcase/assets/dialog-CfKGB1qy.js +1 -0
- package/dist/showcase/assets/dialog-DpfYwJPk.js +1 -0
- package/dist/showcase/assets/display-ZDXpxNSP.js +403 -0
- package/dist/showcase/assets/dist-DRkwLUFP.js +45 -0
- package/dist/showcase/assets/dollar-sign-BTuul0J-.js +1 -0
- package/dist/showcase/assets/download-Nn6XkM9l.js +1 -0
- package/dist/showcase/assets/dropdown-menu-CrcweCup.js +1 -0
- package/dist/showcase/assets/dropzone-MajEhAfA.js +1 -0
- package/dist/showcase/assets/earth-Cv_-EtPW.js +1 -0
- package/dist/showcase/assets/ellipsis-D0y6rUzm.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-B6ICYsU2.js +1 -0
- package/dist/showcase/assets/empty-CWtvDL2Z.js +1 -0
- package/dist/showcase/assets/empty-item-CBdSL5K4.js +49 -0
- package/dist/showcase/assets/empty-state-DpAXXKE_.js +1 -0
- package/dist/showcase/assets/empty-state-x7W66Jff.js +188 -0
- package/dist/showcase/assets/enhanced-activities-BgQBDjph.js +361 -0
- package/dist/showcase/assets/enhanced-combobox-BT-d7sfw.js +1 -0
- package/dist/showcase/assets/event-calendar-Bl3N30L5.js +138 -0
- package/dist/showcase/assets/event-log-BI24HOvx.js +330 -0
- package/dist/showcase/assets/example-CbMg22fx.js +1 -0
- package/dist/showcase/assets/external-link-C4QW5KPr.js +1 -0
- package/dist/showcase/assets/eye-rvb4fYw0.js +1 -0
- package/dist/showcase/assets/feature-announcement-CChQvOnH.js +34 -0
- package/dist/showcase/assets/file-GOMuLez7.js +1 -0
- package/dist/showcase/assets/file-text-B21ZcL9w.js +1 -0
- package/dist/showcase/assets/filters-Crp5EI1q.js +139 -0
- package/dist/showcase/assets/flag-D1iXMqPC.js +1 -0
- package/dist/showcase/assets/folder-open-CjZE_PS8.js +1 -0
- package/dist/showcase/assets/form-field-Dtn_NArM.js +1 -0
- package/dist/showcase/assets/format-Cu09wP-k.js +1 -0
- package/dist/showcase/assets/forms-noSArwvn.js +911 -0
- package/dist/showcase/assets/frame-2DJdBXkw.js +167 -0
- package/dist/showcase/assets/getPseudoElementBounds-DxlN6Yut.js +1 -0
- package/dist/showcase/assets/gift-DBIsZsVg.js +1 -0
- package/dist/showcase/assets/giftcard-cards-B3ffDDjK.js +85 -0
- package/dist/showcase/assets/git-branch-6eIv9W2g.js +1 -0
- package/dist/showcase/assets/global-search-BelZn8mj.js +215 -0
- package/dist/showcase/assets/global-search-DSMNBBiZ.js +1 -0
- package/dist/showcase/assets/globe-B_Lqx3uz.js +1 -0
- package/dist/showcase/assets/gradient-card-D_2eaE6O.js +58 -0
- package/dist/showcase/assets/hash-BC0RnYwr.js +1 -0
- package/dist/showcase/assets/header-CMjgUhtM.js +1 -0
- package/dist/showcase/assets/header-notifications-fOFoqfCR.js +1 -0
- package/dist/showcase/assets/heart-BM6yPMXn.js +1 -0
- package/dist/showcase/assets/house-CnsMNKdQ.js +1 -0
- package/dist/showcase/assets/icon-badge-IP9B3lQm.js +1 -0
- package/dist/showcase/assets/image-B5jt_w43.js +1 -0
- package/dist/showcase/assets/inbox-BcbV9uGN.js +1 -0
- package/dist/showcase/assets/index-Bn8k0P7-.css +2 -0
- package/dist/showcase/assets/index-DNH0y0r-.js +10 -0
- package/dist/showcase/assets/inertValue-B82SGILi.js +1 -0
- package/dist/showcase/assets/info-DO5VmDSw.js +1 -0
- package/dist/showcase/assets/inline-stat-B2s_ozrX.js +1 -0
- package/dist/showcase/assets/input-BCxdburb.js +1 -0
- package/dist/showcase/assets/input-DcQuALxy.js +1 -0
- package/dist/showcase/assets/input-group-DZJrOGbm.js +1 -0
- package/dist/showcase/assets/input-group-PwfoPR94.js +47 -0
- package/dist/showcase/assets/inputs-DetnUcEp.js +155 -0
- package/dist/showcase/assets/invoice-header-BMWL_9sW.js +36 -0
- package/dist/showcase/assets/invoice-items-DLEQR54f.js +36 -0
- package/dist/showcase/assets/invoice-mini-BxO8W_p2.js +14 -0
- package/dist/showcase/assets/invoice-table-ClMTdfvZ.js +30 -0
- package/dist/showcase/assets/isSameDay-B9x5Mpln.js +1 -0
- package/dist/showcase/assets/isToday-CT4NGB5x.js +1 -0
- package/dist/showcase/assets/italic-BiQv-7DA.js +1 -0
- package/dist/showcase/assets/item-CdgzxWcL.js +1 -0
- package/dist/showcase/assets/item-JreKWzkR.js +134 -0
- package/dist/showcase/assets/item-a8FCQMvC.js +1 -0
- package/dist/showcase/assets/kanban-CekpGtlO.js +186 -0
- package/dist/showcase/assets/key-round-CpIUGlhG.js +1 -0
- package/dist/showcase/assets/label-BE1d_Rxi.js +1 -0
- package/dist/showcase/assets/languages-DaFWrOam.js +1 -0
- package/dist/showcase/assets/layers-DDIuTz4-.js +1 -0
- package/dist/showcase/assets/layout-app-shell-BkqOwNe9.js +608 -0
- package/dist/showcase/assets/layout-auth-Bng_0NM0.js +754 -0
- package/dist/showcase/assets/layout-containers-Bk_jSDWd.js +101 -0
- package/dist/showcase/assets/layout-header-CuJVU1Rx.js +203 -0
- package/dist/showcase/assets/layout-page-DHOPox5Z.js +278 -0
- package/dist/showcase/assets/layout-primitives-BnIgANs6.js +34 -0
- package/dist/showcase/assets/layout-sidebar-BUOjQm9-.js +224 -0
- package/dist/showcase/assets/layout-users-DFlJQAuB.js +117 -0
- package/dist/showcase/assets/layout-workspace-Cq63UWwT.js +183 -0
- package/dist/showcase/assets/lock-DTD3z5Vh.js +1 -0
- package/dist/showcase/assets/lock-keyhole-Bbs1Ry2S.js +1 -0
- package/dist/showcase/assets/mail-DAa8myka.js +1 -0
- package/dist/showcase/assets/mail-check-DrmYfqQb.js +1 -0
- package/dist/showcase/assets/map-DfYPJKDx.js +124 -0
- package/dist/showcase/assets/map-pin-Cf_uffQY.js +1 -0
- package/dist/showcase/assets/media-library-Duyf6M0c.js +695 -0
- package/dist/showcase/assets/mention-inline-suggestions-tOlG56Jr.js +1 -0
- package/dist/showcase/assets/mentions-LbZlN995.js +138 -0
- package/dist/showcase/assets/menus-Cs95R125.js +165 -0
- package/dist/showcase/assets/message-square-CjaeUwPc.js +1 -0
- package/dist/showcase/assets/metadata-list-Bcy5s1_q.js +1 -0
- package/dist/showcase/assets/metadata-list-C9L63gMM2.js +288 -0
- package/dist/showcase/assets/metric-D8bF87C1.js +1 -0
- package/dist/showcase/assets/metric-bar-DQF1jEsY.js +1 -0
- package/dist/showcase/assets/metric-grid-DJZjbFrm.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-C9YeKxwe.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-CfGjnKEG.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-C4R2q2ia.js +50 -0
- package/dist/showcase/assets/metrics-comparison-B2FZ-rUG.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-BS4EafAM.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-CyWA0Plw.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-CH_KTuo2.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-Dw1rbkBU.js +42 -0
- package/dist/showcase/assets/metrics-overview-BuLSn0GC.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-Zo4F0-y4.js +54 -0
- package/dist/showcase/assets/minus-COUx_vHQ.js +1 -0
- package/dist/showcase/assets/money-display-prumQLQ2.js +1 -0
- package/dist/showcase/assets/month-year-picker-BDTiuGOD.js +1 -0
- package/dist/showcase/assets/navigation-Bf_sgFei.js +90 -0
- package/dist/showcase/assets/navigation-Dnqq0un0.js +230 -0
- package/dist/showcase/assets/navigation-extras-ydwfzYfj.js +43 -0
- package/dist/showcase/assets/onboarding-checklist-DBLaUqhZ.js +119 -0
- package/dist/showcase/assets/overflow-tab-bar-UXs-T5Fq.js +1 -0
- package/dist/showcase/assets/overlays-C1ET_VvE.js +408 -0
- package/dist/showcase/assets/overlays-dMd0EOT1.js +159 -0
- package/dist/showcase/assets/package-C9EnWNEP.js +1 -0
- package/dist/showcase/assets/package-check-BGT72daQ.js +1 -0
- package/dist/showcase/assets/page-action-button-8faHdFOD.js +1 -0
- package/dist/showcase/assets/page-header-DoZnb9z9.js +1 -0
- package/dist/showcase/assets/pagination-BJ3wQQtL.js +42 -0
- package/dist/showcase/assets/pagination-DJnga08n.js +1 -0
- package/dist/showcase/assets/paperclip-DsQ_IPLp.js +1 -0
- package/dist/showcase/assets/password-input-CLxvZdDC.js +1 -0
- package/dist/showcase/assets/pencil-37DzPmX5.js +1 -0
- package/dist/showcase/assets/phone-CLDh9lYU.js +1 -0
- package/dist/showcase/assets/plus-PKSdX45c.js +1 -0
- package/dist/showcase/assets/popover-BWbBoxN0.js +1 -0
- package/dist/showcase/assets/popover-DoEhmJ7G.js +1 -0
- package/dist/showcase/assets/popover-menu-wt8kWbr1.js +1 -0
- package/dist/showcase/assets/products-Bvl2zRfb.js +407 -0
- package/dist/showcase/assets/progress-BeusdG_D.js +18 -0
- package/dist/showcase/assets/progress-CQr08MPz.js +1 -0
- package/dist/showcase/assets/props-table-DSdjPLVr.js +1 -0
- package/dist/showcase/assets/props.generated-AlskAQY9.json +41579 -0
- package/dist/showcase/assets/quote-D1DrZRcn.js +1 -0
- package/dist/showcase/assets/receipt-CxNJvyC5.js +1 -0
- package/dist/showcase/assets/receipt-text-2YwFjXVP.js +1 -0
- package/dist/showcase/assets/refresh-cw-DlkWEAjG.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-Ctt-9xwK.js +1 -0
- package/dist/showcase/assets/resource-selector-card-C9zM67wN.js +39 -0
- package/dist/showcase/assets/rich-text-editor-DUWBkEdn.js +124 -0
- package/dist/showcase/assets/rich-text-editor-DjsgN-HX.js +143 -0
- package/dist/showcase/assets/rotate-ccw-ZkWMrEMJ.js +1 -0
- package/dist/showcase/assets/save-CQjTFBwm.js +1 -0
- package/dist/showcase/assets/schema-form-yfcV7ZHE.js +325 -0
- package/dist/showcase/assets/scroll-area-D73Zq5No.js +32 -0
- package/dist/showcase/assets/scroll-area-Toa6lE_G.js +1 -0
- package/dist/showcase/assets/select-BQWY3ndy.js +1 -0
- package/dist/showcase/assets/select-x02n3iNp.js +1 -0
- package/dist/showcase/assets/send-L-LNhDVx.js +1 -0
- package/dist/showcase/assets/separator-B57lhXSg.js +28 -0
- package/dist/showcase/assets/separator-kwh2KDqD.js +1 -0
- package/dist/showcase/assets/settings-Mbnp6hDe.js +1 -0
- package/dist/showcase/assets/sheet-DwYghriA.js +1 -0
- package/dist/showcase/assets/shield-D084AWSl.js +1 -0
- package/dist/showcase/assets/shield-alert-h6F2vnr-.js +1 -0
- package/dist/showcase/assets/shield-check-UiN6QwPl.js +1 -0
- package/dist/showcase/assets/shopping-bag-oxYbVKoz.js +1 -0
- package/dist/showcase/assets/sidebar-BWDrvFY1.js +1 -0
- package/dist/showcase/assets/sidebar.context-BhexAjPM.js +1 -0
- package/dist/showcase/assets/skeleton-BIS2X39p.js +29 -0
- package/dist/showcase/assets/skeleton-uyUucxJA.js +1 -0
- package/dist/showcase/assets/slider-DL--Jsf0.js +1 -0
- package/dist/showcase/assets/sliders-horizontal-C6SHwI9f.js +1 -0
- package/dist/showcase/assets/smart-card-DpvRHqI9.js +1 -0
- package/dist/showcase/assets/sonner-CvCutMP9.js +22 -0
- package/dist/showcase/assets/sortable.esm-COtQXiwU.js +5 -0
- package/dist/showcase/assets/sparkles-bMR7rbuC.js +1 -0
- package/dist/showcase/assets/spinner-CBXhPGyW.js +30 -0
- package/dist/showcase/assets/spinner-Dl2u80sI.js +49 -0
- package/dist/showcase/assets/spinner-ULnFdoGj.js +1 -0
- package/dist/showcase/assets/square-pen-3jbmTAqh.js +1 -0
- package/dist/showcase/assets/stacked-avatars-XKXaLCmk.js +1 -0
- package/dist/showcase/assets/star-0BUJBDj_.js +1 -0
- package/dist/showcase/assets/startOfDay-C8cGxdjJ.js +1 -0
- package/dist/showcase/assets/styles-Cl6qvIKS.js +1 -0
- package/dist/showcase/assets/suggestions-EB3TFZpP.js +126 -0
- package/dist/showcase/assets/switch-BbZ7_Rk-.js +1 -0
- package/dist/showcase/assets/switch-C0QtKm5H.js +1 -0
- package/dist/showcase/assets/sync-BAO20Naa.js +107 -0
- package/dist/showcase/assets/table-CnCYxSnD.js +509 -0
- package/dist/showcase/assets/table-DF7x4TGI.js +1 -0
- package/dist/showcase/assets/table-actions-CjaUIKQl.js +1 -0
- package/dist/showcase/assets/tabs-D3YHyrQ5.js +1 -0
- package/dist/showcase/assets/tabs-vUgN5IPn.js +19 -0
- package/dist/showcase/assets/tags-input-jtEAac1b.js +1 -0
- package/dist/showcase/assets/text-button-fiMDoWms.js +1 -0
- package/dist/showcase/assets/text-link-CSzy09hn.js +1 -0
- package/dist/showcase/assets/textarea-DnvQVkFU.js +1 -0
- package/dist/showcase/assets/textarea-mATRsiLJ.js +1 -0
- package/dist/showcase/assets/timelines-fQQIiGc4.js +200 -0
- package/dist/showcase/assets/toggle-group-B0hN7VRz.js +1 -0
- package/dist/showcase/assets/toggles-group-CXm2HDJ1.js +32 -0
- package/dist/showcase/assets/toggles-kwgQf4hQ.js +71 -0
- package/dist/showcase/assets/trash-2-xwHdvAn6.js +1 -0
- package/dist/showcase/assets/trending-up-CKnZUURN.js +1 -0
- package/dist/showcase/assets/truck-8P8-8rHh.js +1 -0
- package/dist/showcase/assets/typography-BP3SCf0c.js +223 -0
- package/dist/showcase/assets/ui-badge-eTC8uxVw.js +28 -0
- package/dist/showcase/assets/ui-card-AQkRKit0.js +30 -0
- package/dist/showcase/assets/ui-table-BTE7t50V.js +42 -0
- package/dist/showcase/assets/upload-tray-DpW8ZnxN.js +138 -0
- package/dist/showcase/assets/use-layout-link-DR4Apqbc.js +1 -0
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CT1urU5D.js +1 -0
- package/dist/showcase/assets/useAriaLabelledBy-DiHf8Ou_.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-NNLPWtyS.js +1 -0
- package/dist/showcase/assets/useCompositeItem-BE0Lg9Iz.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-OwLLy0R3.js +1 -0
- package/dist/showcase/assets/useLabelableId-Y-6YW07q.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-CUTVNS1V.js +1 -0
- package/dist/showcase/assets/useRender-BiaVVD8L.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-DCMcmSgH.js +1 -0
- package/dist/showcase/assets/useValueChanged-kq4oH4So.js +1 -0
- package/dist/showcase/assets/user-BCzeUL5p.js +1 -0
- package/dist/showcase/assets/user-plus-CUbfQtkK.js +1 -0
- package/dist/showcase/assets/users-DOGJZmUN.js +1 -0
- package/dist/showcase/assets/vendor-profile-C7dXfVv_.js +37 -0
- package/dist/showcase/assets/video-DbaCGki8.js +1 -0
- package/dist/showcase/assets/wrench-TbDfItHQ.js +1 -0
- package/dist/showcase/assets/x-BpAEmld2.js +1 -0
- package/dist/showcase/assets/zap-E8G3kjwh.js +1 -0
- package/dist/showcase/index.html +2 -2
- package/dist/style.css +1 -1
- package/package.json +16 -1
- package/dist/_shared/ai-artifact-D4EjKoq6.cjs +0 -3
- package/dist/_shared/ai-artifact-D4EjKoq6.cjs.map +0 -1
- package/dist/_shared/ai-artifact-nlOrSeqT.js +0 -1099
- package/dist/_shared/ai-artifact-nlOrSeqT.js.map +0 -1
- package/dist/_shared/auth-C5HawWvp.cjs +0 -2
- package/dist/_shared/auth-C5HawWvp.cjs.map +0 -1
- package/dist/_shared/auth-DnMEJXP9.js +0 -643
- package/dist/_shared/auth-DnMEJXP9.js.map +0 -1
- package/dist/_shared/badge-6WYAMJwA.js +0 -108
- package/dist/_shared/badge-6WYAMJwA.js.map +0 -1
- package/dist/_shared/badge-CBof1rbF.cjs +0 -2
- package/dist/_shared/badge-CBof1rbF.cjs.map +0 -1
- package/dist/_shared/combobox-B4KmDZK0.cjs +0 -2
- package/dist/_shared/combobox-B4KmDZK0.cjs.map +0 -1
- package/dist/_shared/combobox-YUGi3xSc.js +0 -810
- package/dist/_shared/combobox-YUGi3xSc.js.map +0 -1
- package/dist/_shared/comments-GzXdwpq4.js +0 -952
- package/dist/_shared/comments-GzXdwpq4.js.map +0 -1
- package/dist/_shared/comments-Zj_foV1V.cjs +0 -2
- package/dist/_shared/comments-Zj_foV1V.cjs.map +0 -1
- package/dist/_shared/display-Dhy5ogxC.cjs +0 -2
- package/dist/_shared/display-Dhy5ogxC.cjs.map +0 -1
- package/dist/_shared/display-NBtWdAMl.js +0 -1154
- package/dist/_shared/display-NBtWdAMl.js.map +0 -1
- package/dist/_shared/form-field-B7taMVbC.js +0 -329
- package/dist/_shared/form-field-B7taMVbC.js.map +0 -1
- package/dist/_shared/form-field-rMGPvHFK.cjs +0 -2
- package/dist/_shared/form-field-rMGPvHFK.cjs.map +0 -1
- package/dist/_shared/forms-BweX9Lm8.cjs +0 -2
- package/dist/_shared/forms-BweX9Lm8.cjs.map +0 -1
- package/dist/_shared/forms-L1hyNKpZ.js +0 -3430
- package/dist/_shared/forms-L1hyNKpZ.js.map +0 -1
- package/dist/_shared/header-BSBPtGn4.cjs +0 -2
- package/dist/_shared/header-BSBPtGn4.cjs.map +0 -1
- package/dist/_shared/header-No6GSp4R.js +0 -360
- package/dist/_shared/header-No6GSp4R.js.map +0 -1
- package/dist/_shared/hooks-BkXvZ4py.js +0 -118
- package/dist/_shared/hooks-BkXvZ4py.js.map +0 -1
- package/dist/_shared/hooks-D3SbLBRk.cjs +0 -2
- package/dist/_shared/hooks-D3SbLBRk.cjs.map +0 -1
- package/dist/_shared/mentions-CA1Ka_Bv.cjs +0 -2
- package/dist/_shared/mentions-CA1Ka_Bv.cjs.map +0 -1
- package/dist/_shared/mentions-CdvvLGQG.js +0 -506
- package/dist/_shared/mentions-CdvvLGQG.js.map +0 -1
- package/dist/_shared/navigation-BemwPPC8.cjs +0 -2
- package/dist/_shared/navigation-BemwPPC8.cjs.map +0 -1
- package/dist/_shared/navigation-DY540HB0.js +0 -419
- package/dist/_shared/navigation-DY540HB0.js.map +0 -1
- package/dist/_shared/page-Cg_gNpyK.js +0 -262
- package/dist/_shared/page-Cg_gNpyK.js.map +0 -1
- package/dist/_shared/page-CpFWQuWU.cjs +0 -2
- package/dist/_shared/page-CpFWQuWU.cjs.map +0 -1
- package/dist/_shared/sidebar-BTFfxmNG.cjs +0 -2
- package/dist/_shared/sidebar-BTFfxmNG.cjs.map +0 -1
- package/dist/_shared/sidebar-wmztVpnO.js +0 -538
- package/dist/_shared/sidebar-wmztVpnO.js.map +0 -1
- package/dist/_shared/switch-BBP3u1z5.js +0 -55
- package/dist/_shared/switch-BBP3u1z5.js.map +0 -1
- package/dist/_shared/switch-zFZhhOEP.cjs +0 -2
- package/dist/_shared/switch-zFZhhOEP.cjs.map +0 -1
- package/dist/_shared/table-BItnJ8lG.cjs +0 -2
- package/dist/_shared/table-BItnJ8lG.cjs.map +0 -1
- package/dist/_shared/table-D3349b-v.js +0 -1189
- package/dist/_shared/table-D3349b-v.js.map +0 -1
- package/dist/_shared/workspace-BGVeTeJy.js +0 -357
- package/dist/_shared/workspace-BGVeTeJy.js.map +0 -1
- package/dist/_shared/workspace-CWyzTUmE.cjs +0 -2
- package/dist/_shared/workspace-CWyzTUmE.cjs.map +0 -1
- package/dist/showcase/assets/AreaChart-BYEewdc_.js +0 -6
- package/dist/showcase/assets/CompositeItem-Duekeg4m.js +0 -1
- package/dist/showcase/assets/CompositeRoot-BgNU3T7R.js +0 -1
- package/dist/showcase/assets/DialogTrigger-9xWmoeF5.js +0 -1
- package/dist/showcase/assets/LabelableContext-B3W_70Qk.js +0 -1
- package/dist/showcase/assets/PreviewLayout-nADJqRlP.js +0 -1
- package/dist/showcase/assets/RadioGroup-Bp1VCzxr.js +0 -1
- package/dist/showcase/assets/Separator-9PWX3shz.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-DwELw9xS.js +0 -1
- package/dist/showcase/assets/accordion-CfqHO9_z.js +0 -171
- package/dist/showcase/assets/accordion-variants-pkPHxkLW.js +0 -1
- package/dist/showcase/assets/action-menu-DFzSuDjI.js +0 -1
- package/dist/showcase/assets/activities-Bo97b2-I.js +0 -501
- package/dist/showcase/assets/activities-feed-card-D77gf27B.js +0 -1
- package/dist/showcase/assets/activity-BUlCWLI8.js +0 -1
- package/dist/showcase/assets/admin-CxTV4kZX.js +0 -80
- package/dist/showcase/assets/ai-Bym5H8bn.js +0 -41
- package/dist/showcase/assets/ai-artifact-DZVl1WmK.js +0 -2
- package/dist/showcase/assets/ai-chat-M3X5-PgT.js +0 -568
- package/dist/showcase/assets/ai-elements-DjppcMBD.js +0 -387
- package/dist/showcase/assets/ai-new-CXnrIi5S.js +0 -167
- package/dist/showcase/assets/ai-tool-call-DyMI8DqD.js +0 -1
- package/dist/showcase/assets/alert-D6Pygy2s.js +0 -62
- package/dist/showcase/assets/alert-DCrWLbEx.js +0 -93
- package/dist/showcase/assets/alert-qTNM0vld.js +0 -1
- package/dist/showcase/assets/api-key-list-CCpuHYHc.js +0 -73
- package/dist/showcase/assets/app-sidebar-CxTRNC5L.js +0 -1
- package/dist/showcase/assets/arrow-down--phuskCV.js +0 -1
- package/dist/showcase/assets/arrow-left-B__WWqyA.js +0 -1
- package/dist/showcase/assets/arrow-right-1-EvXxjB.js +0 -1
- package/dist/showcase/assets/arrow-up-lWotnmo7.js +0 -1
- package/dist/showcase/assets/arrow-up-right-IyQ3oeq0.js +0 -1
- package/dist/showcase/assets/avatar-gugtNx4D.js +0 -57
- package/dist/showcase/assets/avatar-n1nywTlx.js +0 -1
- package/dist/showcase/assets/badge-TuE-u3Hv.js +0 -28
- package/dist/showcase/assets/badge-check-CPDvpVzK.js +0 -1
- package/dist/showcase/assets/bell-DeCVddCA.js +0 -1
- package/dist/showcase/assets/bot-B_vzJEJH.js +0 -1
- package/dist/showcase/assets/box-z4O8t_K5.js +0 -1
- package/dist/showcase/assets/brain-DdKBE4Bh.js +0 -1
- package/dist/showcase/assets/brand-CfW7mgTY.js +0 -36
- package/dist/showcase/assets/breadcrumb-B4TBbKv3.js +0 -52
- package/dist/showcase/assets/breadcrumb-bF_sFVBL.js +0 -1
- package/dist/showcase/assets/breadcrumbs-CBv3EaMX.js +0 -1
- package/dist/showcase/assets/briefcase-ClqzeNt3.js +0 -1
- package/dist/showcase/assets/building-2-BQuWgjZj.js +0 -1
- package/dist/showcase/assets/button-CWKNCI82.js +0 -44
- package/dist/showcase/assets/button-group-BYhxtFwV.js +0 -1
- package/dist/showcase/assets/buttons-mBRyBw3Q.js +0 -270
- package/dist/showcase/assets/calendar-BgloJjlW.js +0 -1
- package/dist/showcase/assets/calendar-CJDWspzi.js +0 -1
- package/dist/showcase/assets/calendar-CgML2kJt.js +0 -16
- package/dist/showcase/assets/calendar-days-C0gTLVnY.js +0 -1
- package/dist/showcase/assets/camera-nIlaz4Sn.js +0 -1
- package/dist/showcase/assets/card-1ncRnRvq.js +0 -1
- package/dist/showcase/assets/card-CcgWzFB-.js +0 -188
- package/dist/showcase/assets/card-primitives-By4-RTuP.js +0 -1
- package/dist/showcase/assets/card-radio-group-DeX3qsRg.js +0 -1
- package/dist/showcase/assets/cards-DdqQr8rY.js +0 -328
- package/dist/showcase/assets/carousel-CV8ltDl8.js +0 -449
- package/dist/showcase/assets/chart-BNzHjskC.js +0 -358
- package/dist/showcase/assets/chart-column-CpTxRLEH.js +0 -1
- package/dist/showcase/assets/checkbox-CZTTm4Dv.js +0 -1
- package/dist/showcase/assets/chevron-down-LWBNHe9S.js +0 -1
- package/dist/showcase/assets/chevron-left-BsshO7nf.js +0 -1
- package/dist/showcase/assets/chevron-right-t68um2_G.js +0 -1
- package/dist/showcase/assets/chevron-up-DjhlESJB.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-ZUo0Do59.js +0 -1
- package/dist/showcase/assets/circle-BL52dLr9.js +0 -1
- package/dist/showcase/assets/circle-alert-CXCt6zxc.js +0 -1
- package/dist/showcase/assets/circle-check-CbiRRw7s.js +0 -1
- package/dist/showcase/assets/circle-check-big-BSgn7lyt.js +0 -1
- package/dist/showcase/assets/circle-dot-WEOpGGJf.js +0 -1
- package/dist/showcase/assets/circle-question-mark-C9hLlsD7.js +0 -1
- package/dist/showcase/assets/circle-x-BT9TJbJC.js +0 -1
- package/dist/showcase/assets/clock-3-CfRK8ckc.js +0 -1
- package/dist/showcase/assets/clock-D-3zf0c1.js +0 -1
- package/dist/showcase/assets/code-xml-CQYKKuBU.js +0 -1
- package/dist/showcase/assets/collapsible-BC0hQvat.js +0 -27
- package/dist/showcase/assets/collapsible-CRVtVDCF.js +0 -1
- package/dist/showcase/assets/combobox-D4VYvYCT.js +0 -696
- package/dist/showcase/assets/command-CxeHT4lL.js +0 -1
- package/dist/showcase/assets/command-Do_t_Zou.js +0 -1
- package/dist/showcase/assets/comment-composer-DoFwvVlq.js +0 -1
- package/dist/showcase/assets/comment-item-CT8UbVeg.js +0 -1
- package/dist/showcase/assets/comments-CqdXrjUn.js +0 -357
- package/dist/showcase/assets/commerce-B9V2Wo_q.js +0 -79
- package/dist/showcase/assets/commerce-extras-CNT3QmAT.js +0 -189
- package/dist/showcase/assets/composite-BXLXcagx.js +0 -1
- package/dist/showcase/assets/contact-card-BLcAXepj.js +0 -65
- package/dist/showcase/assets/content-container-DJVD3ZmI.js +0 -1
- package/dist/showcase/assets/copyable-od17NrMu.js +0 -96
- package/dist/showcase/assets/course-card-CdZQr5yy.js +0 -77
- package/dist/showcase/assets/cpu-B8kRNR1R.js +0 -1
- package/dist/showcase/assets/credit-card-BYMQj03s.js +0 -1
- package/dist/showcase/assets/currency-Cxv3Cp6B.js +0 -149
- package/dist/showcase/assets/dark-surfaces-Cfp58iFb.js +0 -90
- package/dist/showcase/assets/database-DuUABvxU.js +0 -1
- package/dist/showcase/assets/date-block-E9qfY7W7.js +0 -1
- package/dist/showcase/assets/date-picker-I8BdaiiU.js +0 -1
- package/dist/showcase/assets/date-pickers-BLJaqhcS.js +0 -73
- package/dist/showcase/assets/dense-info-Bk1K_7Ww.js +0 -106
- package/dist/showcase/assets/dialog-BuatDnQ9.js +0 -1
- package/dist/showcase/assets/dialog-DCx-LydW.js +0 -1
- package/dist/showcase/assets/display-Bt7busw5.js +0 -403
- package/dist/showcase/assets/dist-BPyBHOXU.js +0 -45
- package/dist/showcase/assets/dollar-sign-qXQSS6Gh.js +0 -1
- package/dist/showcase/assets/download-B2JAmHmJ.js +0 -1
- package/dist/showcase/assets/dropdown-menu-DXT3BZLa.js +0 -1
- package/dist/showcase/assets/dropzone-BKIxDJNy.js +0 -1
- package/dist/showcase/assets/earth-7-Z3Gv2v.js +0 -1
- package/dist/showcase/assets/ellipsis-6Krb3RRW.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-DeOMIw1J.js +0 -1
- package/dist/showcase/assets/empty-BSYKaeXQ.js +0 -1
- package/dist/showcase/assets/empty-item-YElgv25f.js +0 -49
- package/dist/showcase/assets/empty-state-D-LrvnKF.js +0 -1
- package/dist/showcase/assets/empty-state-dNh1GtVU.js +0 -188
- package/dist/showcase/assets/enhanced-activities-Bw99ItYl.js +0 -361
- package/dist/showcase/assets/enhanced-combobox-CqLZmU3K.js +0 -1
- package/dist/showcase/assets/event-calendar-CcSi7g5A.js +0 -138
- package/dist/showcase/assets/event-log-2uq-eYxh.js +0 -330
- package/dist/showcase/assets/example-CTJ8AdNR.js +0 -1
- package/dist/showcase/assets/external-link-D0gqSa1q.js +0 -1
- package/dist/showcase/assets/eye-CDMCDLei.js +0 -1
- package/dist/showcase/assets/feature-announcement-BlyNck35.js +0 -34
- package/dist/showcase/assets/file-Y5EbzufX.js +0 -1
- package/dist/showcase/assets/file-text-DH1mBuPi.js +0 -1
- package/dist/showcase/assets/filters-BtHF4GSM.js +0 -78
- package/dist/showcase/assets/flag-CJ08LwLY.js +0 -1
- package/dist/showcase/assets/folder-open-DODo2pjy.js +0 -1
- package/dist/showcase/assets/form-field-CHY7jh1q.js +0 -1
- package/dist/showcase/assets/format-DYJqAuDM.js +0 -1
- package/dist/showcase/assets/forms-DgvQQXHO.js +0 -862
- package/dist/showcase/assets/frame-CdKicP4A.js +0 -167
- package/dist/showcase/assets/getPseudoElementBounds-D9-Hr3mO.js +0 -1
- package/dist/showcase/assets/gift-DD8O7cld.js +0 -1
- package/dist/showcase/assets/giftcard-cards-Dp9eYodY.js +0 -85
- package/dist/showcase/assets/git-branch-DZq1Vo2G.js +0 -1
- package/dist/showcase/assets/global-search-BqDotXql.js +0 -215
- package/dist/showcase/assets/global-search-PH6LXqZw.js +0 -1
- package/dist/showcase/assets/globe-mRTwrUxM.js +0 -1
- package/dist/showcase/assets/gradient-card-CaL88YKv.js +0 -58
- package/dist/showcase/assets/hash-DuqvHQHv.js +0 -1
- package/dist/showcase/assets/header-CiNgDop3.js +0 -1
- package/dist/showcase/assets/header-notifications-B9XMBsK_.js +0 -1
- package/dist/showcase/assets/heart-DsGJfnDx.js +0 -1
- package/dist/showcase/assets/house-B504aFIP.js +0 -1
- package/dist/showcase/assets/icon-badge-DMNu8xb5.js +0 -1
- package/dist/showcase/assets/image-C3DaMxmn.js +0 -1
- package/dist/showcase/assets/inbox-BWKQMLMx.js +0 -1
- package/dist/showcase/assets/index-DN3tqopz.css +0 -2
- package/dist/showcase/assets/index-DaYVSqKu.js +0 -10
- package/dist/showcase/assets/inertValue-DrtTkMGx.js +0 -1
- package/dist/showcase/assets/info-_FrGoCay.js +0 -1
- package/dist/showcase/assets/inline-stat-BYu-tiUU.js +0 -1
- package/dist/showcase/assets/input-C96HMHWR.js +0 -1
- package/dist/showcase/assets/input-fMPi7XxI.js +0 -1
- package/dist/showcase/assets/input-group-BZnSgFCn.js +0 -47
- package/dist/showcase/assets/input-group-CVONNP3T.js +0 -1
- package/dist/showcase/assets/inputs-Blh0LJ8-.js +0 -155
- package/dist/showcase/assets/invoice-header-Bpo4iwX3.js +0 -36
- package/dist/showcase/assets/invoice-items-OVIrbG0k.js +0 -36
- package/dist/showcase/assets/invoice-mini-CaOMTiUO.js +0 -14
- package/dist/showcase/assets/invoice-table-BXd_HhUg.js +0 -30
- package/dist/showcase/assets/isSameDay-NBVO9AKF.js +0 -1
- package/dist/showcase/assets/isToday-Bk5HMXWn.js +0 -1
- package/dist/showcase/assets/italic-BOv5bW4H.js +0 -1
- package/dist/showcase/assets/item-B4rdcVVp.js +0 -134
- package/dist/showcase/assets/item-BVt0zZ12.js +0 -1
- package/dist/showcase/assets/item-C4Xk3DC1.js +0 -1
- package/dist/showcase/assets/kanban-BXbelelR.js +0 -186
- package/dist/showcase/assets/label-Cv6wotdv.js +0 -1
- package/dist/showcase/assets/languages-BofyvcCF.js +0 -1
- package/dist/showcase/assets/layers-DJK0t5px.js +0 -1
- package/dist/showcase/assets/layout-app-shell-D_yMonSl.js +0 -608
- package/dist/showcase/assets/layout-auth-BTvSTwUz.js +0 -754
- package/dist/showcase/assets/layout-containers-PMuo__2O.js +0 -101
- package/dist/showcase/assets/layout-header-DQ3zeCHz.js +0 -170
- package/dist/showcase/assets/layout-page-CbvWdHrK.js +0 -122
- package/dist/showcase/assets/layout-primitives-6nsFFIdE.js +0 -34
- package/dist/showcase/assets/layout-sidebar-CKqeVCSY.js +0 -224
- package/dist/showcase/assets/layout-users-Cypq-42s.js +0 -117
- package/dist/showcase/assets/layout-workspace-DiRR8vDv.js +0 -183
- package/dist/showcase/assets/lock-DXmvLEEx.js +0 -1
- package/dist/showcase/assets/lock-keyhole-Cu6M-jjE.js +0 -1
- package/dist/showcase/assets/mail-CXVFHkzh.js +0 -1
- package/dist/showcase/assets/mail-check-BNEu3j2a.js +0 -1
- package/dist/showcase/assets/map-DnE1pFCQ.js +0 -124
- package/dist/showcase/assets/map-pin-CpOVa8IH.js +0 -1
- package/dist/showcase/assets/media-library-C-KfEvm4.js +0 -695
- package/dist/showcase/assets/mention-inline-suggestions-DlmslsfR.js +0 -1
- package/dist/showcase/assets/mentions-C8ZdNFuC.js +0 -138
- package/dist/showcase/assets/menus-B8yUL75K.js +0 -165
- package/dist/showcase/assets/message-square-DNOTaOFs.js +0 -1
- package/dist/showcase/assets/metadata-list-BQAanxM-.js +0 -1
- package/dist/showcase/assets/metadata-list-DL9qgDAp.js +0 -288
- package/dist/showcase/assets/metric-CYi09Ltx.js +0 -1
- package/dist/showcase/assets/metric-bar-CQH1z8T3.js +0 -1
- package/dist/showcase/assets/metric-grid-H1ixqMCI.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-BBzWzFZ-.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-C7Z2ITl4.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-CZZSWiMn.js +0 -50
- package/dist/showcase/assets/metrics-comparison-BPqz8k30.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-C3NYZAfx.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-RjHfm7um.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-DnBjyDH4.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-CKn405qb.js +0 -42
- package/dist/showcase/assets/metrics-overview-D8YGtdrh.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-Dxh6cAha.js +0 -54
- package/dist/showcase/assets/minus-20OTSSxf.js +0 -1
- package/dist/showcase/assets/money-display-BoiAMxH8.js +0 -1
- package/dist/showcase/assets/month-year-picker-Bl59Ygq9.js +0 -1
- package/dist/showcase/assets/navigation-B8d2CDU6.js +0 -90
- package/dist/showcase/assets/navigation-D16JX3kL.js +0 -230
- package/dist/showcase/assets/navigation-extras-Dm83uT6i.js +0 -43
- package/dist/showcase/assets/onboarding-checklist-DznDpP9M.js +0 -119
- package/dist/showcase/assets/overlays-CzlSqbFz.js +0 -408
- package/dist/showcase/assets/overlays-DUFqbkb9.js +0 -159
- package/dist/showcase/assets/package-BCXIwEPz.js +0 -1
- package/dist/showcase/assets/package-check-Ol-Cw3j-.js +0 -1
- package/dist/showcase/assets/page-action-button-DpzdSYvw.js +0 -1
- package/dist/showcase/assets/page-header-B_b7SqW8.js +0 -1
- package/dist/showcase/assets/pagination-BPDQo9Dl.js +0 -1
- package/dist/showcase/assets/pagination-PvkEX0qs.js +0 -42
- package/dist/showcase/assets/paperclip-CznEsmLN.js +0 -1
- package/dist/showcase/assets/password-input-CWMY5q3b.js +0 -1
- package/dist/showcase/assets/pencil-Cl9qi90g.js +0 -1
- package/dist/showcase/assets/phone-DbvK_QQJ.js +0 -1
- package/dist/showcase/assets/plus-CO8t66Yo.js +0 -1
- package/dist/showcase/assets/popover-3QIVx9lU.js +0 -1
- package/dist/showcase/assets/popover-Cyg9oYIU.js +0 -1
- package/dist/showcase/assets/popover-menu-DJPHeIL1.js +0 -1
- package/dist/showcase/assets/products-WsU-qdMz.js +0 -407
- package/dist/showcase/assets/progress-C61sf-qt.js +0 -1
- package/dist/showcase/assets/progress-PvTl8Fgf.js +0 -18
- package/dist/showcase/assets/props-table-C8la6vcG.js +0 -1
- package/dist/showcase/assets/props.generated-vFrhDrth.json +0 -38618
- package/dist/showcase/assets/quote-N1_lRDnX.js +0 -1
- package/dist/showcase/assets/receipt-C6a_WyLu.js +0 -1
- package/dist/showcase/assets/receipt-text-CDOh8FAv.js +0 -1
- package/dist/showcase/assets/refresh-cw-D4-ECZ1x.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-DqAP3zJd.js +0 -1
- package/dist/showcase/assets/rich-text-editor-CU0IZpwV.js +0 -143
- package/dist/showcase/assets/rich-text-editor-DCU7mMoO.js +0 -124
- package/dist/showcase/assets/rotate-ccw-Dd5zEmr7.js +0 -1
- package/dist/showcase/assets/save-DDmFSQli.js +0 -1
- package/dist/showcase/assets/schema-form-B7naqMvv.js +0 -325
- package/dist/showcase/assets/scroll-area-CdaYm4UK.js +0 -32
- package/dist/showcase/assets/scroll-area-DwWSHYHB.js +0 -1
- package/dist/showcase/assets/select-CNzpb5ug.js +0 -1
- package/dist/showcase/assets/select-DBXZ_Wzf.js +0 -1
- package/dist/showcase/assets/send-eDm7YMmA.js +0 -1
- package/dist/showcase/assets/separator-4IC9ED7s.js +0 -1
- package/dist/showcase/assets/separator-DPGDsZpG.js +0 -28
- package/dist/showcase/assets/settings-IANZGo2i.js +0 -1
- package/dist/showcase/assets/sheet-2oCce5ae.js +0 -1
- package/dist/showcase/assets/shield-CDZhhvFW.js +0 -1
- package/dist/showcase/assets/shield-alert-5hL3sdf3.js +0 -1
- package/dist/showcase/assets/shield-check-CaO2dhVS.js +0 -1
- package/dist/showcase/assets/shopping-bag-Bt3iK-Bv.js +0 -1
- package/dist/showcase/assets/sidebar-Cds60-PS.js +0 -1
- package/dist/showcase/assets/sidebar.context-CdH_DH9M.js +0 -1
- package/dist/showcase/assets/skeleton-2HajJKO4.js +0 -29
- package/dist/showcase/assets/skeleton-CGEJwPdD.js +0 -1
- package/dist/showcase/assets/slider-BjQViBR0.js +0 -1
- package/dist/showcase/assets/sliders-horizontal-C3JH5WQu.js +0 -1
- package/dist/showcase/assets/smart-card-CHouYi8U.js +0 -1
- package/dist/showcase/assets/sonner-Cog559j7.js +0 -22
- package/dist/showcase/assets/sortable.esm-hUEKsxpQ.js +0 -5
- package/dist/showcase/assets/sparkles-B18eTHVN.js +0 -1
- package/dist/showcase/assets/spinner-BSI97i4D.js +0 -1
- package/dist/showcase/assets/spinner-D0WhVyye.js +0 -30
- package/dist/showcase/assets/spinner-DQmJ7k9y.js +0 -49
- package/dist/showcase/assets/square-pen-CLyDWdhj.js +0 -1
- package/dist/showcase/assets/stacked-avatars-ECnU27uV.js +0 -1
- package/dist/showcase/assets/star-C3mhkpSK.js +0 -1
- package/dist/showcase/assets/startOfDay-ECIxhJGC.js +0 -1
- package/dist/showcase/assets/styles-CDD7mDye.js +0 -1
- package/dist/showcase/assets/suggestions-DOW6NBJp.js +0 -126
- package/dist/showcase/assets/switch-D59YKmf6.js +0 -1
- package/dist/showcase/assets/switch-NICmdoPn.js +0 -1
- package/dist/showcase/assets/sync-B8nBZXQ9.js +0 -107
- package/dist/showcase/assets/table-CckompuR.js +0 -382
- package/dist/showcase/assets/table-DtA4-Q0p.js +0 -1
- package/dist/showcase/assets/table-actions-DdoPJTMy.js +0 -1
- package/dist/showcase/assets/tabs-BrC_HxL_.js +0 -1
- package/dist/showcase/assets/tabs-UVxr80vY.js +0 -19
- package/dist/showcase/assets/tags-input-iDfvhzZD.js +0 -1
- package/dist/showcase/assets/text-button-DHFCLCoc.js +0 -1
- package/dist/showcase/assets/text-link-nCLLDcS_.js +0 -1
- package/dist/showcase/assets/textarea-DsSuQHQY.js +0 -1
- package/dist/showcase/assets/textarea-DyGI3Kcn.js +0 -1
- package/dist/showcase/assets/timelines-JmMcH657.js +0 -200
- package/dist/showcase/assets/toggle-group-BZKzMmC8.js +0 -1
- package/dist/showcase/assets/toggles-BSJvy4Tw.js +0 -71
- package/dist/showcase/assets/toggles-group-Bsc6eaWw.js +0 -32
- package/dist/showcase/assets/trash-2-C9AC7Pcv.js +0 -1
- package/dist/showcase/assets/trending-up-CGaDZj0S.js +0 -1
- package/dist/showcase/assets/truck-Dq6heokm.js +0 -1
- package/dist/showcase/assets/typography-ByvwR6Kg.js +0 -223
- package/dist/showcase/assets/ui-badge-BYgJSE_w.js +0 -28
- package/dist/showcase/assets/ui-card-BdueUfow.js +0 -30
- package/dist/showcase/assets/ui-table-CxtCQUsg.js +0 -42
- package/dist/showcase/assets/upload-tray-DKJ8nFZp.js +0 -138
- package/dist/showcase/assets/use-layout-link-CGBQHZon.js +0 -1
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CywAbxVB.js +0 -1
- package/dist/showcase/assets/useAriaLabelledBy-B2bZzE7D.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-SLdY_s6S.js +0 -1
- package/dist/showcase/assets/useCompositeItem-g6aCBp84.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-DK0Tpege.js +0 -1
- package/dist/showcase/assets/useLabelableId-hdKzFCp2.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-CnhifZ1E.js +0 -1
- package/dist/showcase/assets/useRender-QhawWhpb.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-Cht7Sa7e.js +0 -1
- package/dist/showcase/assets/useValueChanged-DURO1kfZ.js +0 -1
- package/dist/showcase/assets/user-plus-DbOuTfr7.js +0 -1
- package/dist/showcase/assets/user-u65Fo7k7.js +0 -1
- package/dist/showcase/assets/users-BUb7CmVp.js +0 -1
- package/dist/showcase/assets/vendor-profile-wfI3PBuO.js +0 -37
- package/dist/showcase/assets/video-e4hDbTQ2.js +0 -1
- package/dist/showcase/assets/wrench-CBUvtxdr.js +0 -1
- package/dist/showcase/assets/x-oVTJnCJn.js +0 -1
- package/dist/showcase/assets/zap-CzABYL3c.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-Cg0UqMDP.js","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\tif (containerWidth === 0) {\n\t\t\t\tsetVisibleCount(items.length);\n\t\t\t\treturn;\n\t\t\t}\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\tif (typeof ResizeObserver === 'undefined') {\n\t\t\treturn;\n\t\t}\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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"}
|
|
@@ -0,0 +1,262 @@
|
|
|
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 { t as r } from "./buttons-PL-TGJ32.js";
|
|
5
|
+
import { n as i, t as a } from "./heading-HeP06nXG.js";
|
|
6
|
+
import { t as o } from "./badge-A8wQRShC.js";
|
|
7
|
+
import { a as s, s as c } from "./dropdown-menu-CoWmrjYX.js";
|
|
8
|
+
import { t as l } from "./separator-B8FBp-7E.js";
|
|
9
|
+
import { t as u } from "./action-menu-CrOJ63Q9.js";
|
|
10
|
+
import { d } from "./hooks-IEM3N4VG.js";
|
|
11
|
+
import { t as f } from "./content-container-Dv8XsAw4.js";
|
|
12
|
+
import { Fragment as p, useEffect as m, useMemo as h, useState as g } from "react";
|
|
13
|
+
import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
14
|
+
import { ArrowLeft as b, MoreHorizontal as x } from "lucide-react";
|
|
15
|
+
//#region src/components/layout/page/partials/page-header.tsx
|
|
16
|
+
var S = {
|
|
17
|
+
h1: "border-0 pb-0 text-xl",
|
|
18
|
+
h2: "border-0 pb-0 text-lg",
|
|
19
|
+
h3: "text-base",
|
|
20
|
+
h4: "text-sm",
|
|
21
|
+
h5: "text-sm",
|
|
22
|
+
h6: "text-sm"
|
|
23
|
+
};
|
|
24
|
+
function C({ title: e, description: r, headingTag: s = "h3", backHref: c, onBack: u, backLabel: f = "Back", titleBadges: p = [], actions: m, slots: h, renderLink: g, LinkComponent: _, className: x, contentClassName: C, actionsClassName: w, titleClassName: T, descriptionClassName: E }) {
|
|
25
|
+
let D = d({
|
|
26
|
+
renderLink: g,
|
|
27
|
+
LinkComponent: _
|
|
28
|
+
}), O = c || u ? /* @__PURE__ */ y("div", {
|
|
29
|
+
className: "flex items-center gap-1.5 pt-1",
|
|
30
|
+
children: [c && !u ? D({
|
|
31
|
+
href: c,
|
|
32
|
+
"aria-label": f,
|
|
33
|
+
children: /* @__PURE__ */ y(n, {
|
|
34
|
+
variant: "secondary",
|
|
35
|
+
buttonStyle: "ghost",
|
|
36
|
+
size: "icon-xs",
|
|
37
|
+
className: "h-7 w-7 rounded p-1",
|
|
38
|
+
children: [/* @__PURE__ */ v(b, {
|
|
39
|
+
className: "size-4",
|
|
40
|
+
"aria-hidden": "true"
|
|
41
|
+
}), /* @__PURE__ */ v("span", {
|
|
42
|
+
className: "sr-only",
|
|
43
|
+
children: f
|
|
44
|
+
})]
|
|
45
|
+
})
|
|
46
|
+
}) : /* @__PURE__ */ v(n, {
|
|
47
|
+
type: "button",
|
|
48
|
+
variant: "secondary",
|
|
49
|
+
buttonStyle: "ghost",
|
|
50
|
+
size: "icon-xs",
|
|
51
|
+
className: "h-7 w-7 rounded p-1",
|
|
52
|
+
onClick: u,
|
|
53
|
+
"aria-label": f,
|
|
54
|
+
children: /* @__PURE__ */ v(b, {
|
|
55
|
+
className: "size-4",
|
|
56
|
+
"aria-hidden": "true"
|
|
57
|
+
})
|
|
58
|
+
}), /* @__PURE__ */ v(l, {
|
|
59
|
+
orientation: "vertical",
|
|
60
|
+
className: "h-7"
|
|
61
|
+
})]
|
|
62
|
+
}) : null;
|
|
63
|
+
return /* @__PURE__ */ y("header", {
|
|
64
|
+
className: t("flex w-full flex-col gap-4 md:flex-row md:items-start md:justify-between", x),
|
|
65
|
+
children: [/* @__PURE__ */ y("div", {
|
|
66
|
+
className: "flex min-w-0 flex-1 items-start gap-3",
|
|
67
|
+
children: [h?.back ?? O, /* @__PURE__ */ y("div", {
|
|
68
|
+
className: "flex min-w-0 flex-1 flex-col gap-0.5",
|
|
69
|
+
children: [h?.beforeTitle, /* @__PURE__ */ y("div", {
|
|
70
|
+
className: t("flex max-w-[475px] flex-col gap-0.5", C),
|
|
71
|
+
children: [
|
|
72
|
+
/* @__PURE__ */ y("div", {
|
|
73
|
+
className: "flex flex-wrap items-center gap-3",
|
|
74
|
+
children: [/* @__PURE__ */ v(a, {
|
|
75
|
+
tag: s,
|
|
76
|
+
containerClassName: "space-y-0",
|
|
77
|
+
className: t(S[s], T),
|
|
78
|
+
children: e
|
|
79
|
+
}), p.length > 0 && /* @__PURE__ */ v("div", {
|
|
80
|
+
className: "flex items-center gap-1.5",
|
|
81
|
+
children: p.map((e, t) => /* @__PURE__ */ v(o, {
|
|
82
|
+
variant: e.variant ?? "secondary",
|
|
83
|
+
children: e.label
|
|
84
|
+
}, e.key ?? t))
|
|
85
|
+
})]
|
|
86
|
+
}),
|
|
87
|
+
!!r && /* @__PURE__ */ v(i, {
|
|
88
|
+
size: "xs",
|
|
89
|
+
type: "secondary",
|
|
90
|
+
className: E,
|
|
91
|
+
children: r
|
|
92
|
+
}),
|
|
93
|
+
h?.afterDescription
|
|
94
|
+
]
|
|
95
|
+
})]
|
|
96
|
+
})]
|
|
97
|
+
}), h?.actions ?? (!!m && /* @__PURE__ */ v("div", {
|
|
98
|
+
className: t("shrink-0", w),
|
|
99
|
+
children: m
|
|
100
|
+
}))]
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
//#endregion
|
|
104
|
+
//#region src/components/layout/page/page.tsx
|
|
105
|
+
function w({ header: e, width: n = "narrow", children: r, className: i, bodyClassName: a, renderLink: o, LinkComponent: s }) {
|
|
106
|
+
return /* @__PURE__ */ y(f, {
|
|
107
|
+
width: n,
|
|
108
|
+
className: i,
|
|
109
|
+
children: [!!e && /* @__PURE__ */ v(C, {
|
|
110
|
+
...e,
|
|
111
|
+
renderLink: e.renderLink ?? o,
|
|
112
|
+
LinkComponent: e.LinkComponent ?? s
|
|
113
|
+
}), !!r && /* @__PURE__ */ v("div", {
|
|
114
|
+
className: t("relative block w-full", a),
|
|
115
|
+
children: r
|
|
116
|
+
})]
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
//#region src/components/layout/page/page-content.tsx
|
|
121
|
+
var T = {
|
|
122
|
+
sm: "max-w-screen-sm",
|
|
123
|
+
md: "max-w-screen-md",
|
|
124
|
+
lg: "max-w-screen-lg",
|
|
125
|
+
xl: "max-w-screen-xl",
|
|
126
|
+
"2xl": "max-w-screen-2xl",
|
|
127
|
+
full: "max-w-full"
|
|
128
|
+
};
|
|
129
|
+
function E({ noPadding: e = !1, maxWidth: n, className: r, children: i, ...a }) {
|
|
130
|
+
return /* @__PURE__ */ v("main", {
|
|
131
|
+
className: t("flex-1", !e && "p-4 md:p-6", n && t("mx-auto w-full", T[n]), r),
|
|
132
|
+
...a,
|
|
133
|
+
children: i
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
//#endregion
|
|
137
|
+
//#region src/components/layout/page/page.types.ts
|
|
138
|
+
var D = { menuLabel: "Page actions" }, O = (e) => e === "destructive" ? "error" : e === "primary" || e === "success" || e === "warning" ? "primary" : "secondary", k = "max-h-[80vh] overflow-y-auto overscroll-contain", A = 4;
|
|
139
|
+
function j(e, t, n) {
|
|
140
|
+
if (e.visible === !1) return null;
|
|
141
|
+
if (e.element) return /* @__PURE__ */ v("div", { children: e.element }, e.id ?? t.index);
|
|
142
|
+
if (n) return n(e, t);
|
|
143
|
+
let i = e.id ?? t.index, a = !!e.disabled || !!e.loading, o = e.icon, s = /* @__PURE__ */ y(r, {
|
|
144
|
+
variant: O(e.variant),
|
|
145
|
+
onClick: e.onClick,
|
|
146
|
+
disabled: a,
|
|
147
|
+
children: [!!o && /* @__PURE__ */ v(o, {
|
|
148
|
+
className: "size-3.5",
|
|
149
|
+
"aria-hidden": "true"
|
|
150
|
+
}), e.label]
|
|
151
|
+
}, i);
|
|
152
|
+
return e.href && !e.onClick ? t.renderLink({
|
|
153
|
+
href: e.href,
|
|
154
|
+
children: s,
|
|
155
|
+
className: "inline-flex",
|
|
156
|
+
target: e.target,
|
|
157
|
+
rel: e.rel,
|
|
158
|
+
external: e.external,
|
|
159
|
+
disabled: a
|
|
160
|
+
}) : s;
|
|
161
|
+
}
|
|
162
|
+
function M(e, n, r) {
|
|
163
|
+
let a = [], o = null;
|
|
164
|
+
return e.forEach(({ action: e, index: u }) => {
|
|
165
|
+
let d = {
|
|
166
|
+
...n,
|
|
167
|
+
index: u,
|
|
168
|
+
isInline: !1
|
|
169
|
+
}, f = e.group ?? null, p = f !== o;
|
|
170
|
+
if (a.length > 0 && p && a.push(/* @__PURE__ */ v(l, { className: "my-1" }, `sep-${o ?? "root"}-${f ?? "root"}-${e.id ?? u}`)), p && (o = f, f && a.push(/* @__PURE__ */ v("div", {
|
|
171
|
+
className: "px-2 pt-1",
|
|
172
|
+
children: /* @__PURE__ */ v(i, {
|
|
173
|
+
size: "xxs",
|
|
174
|
+
weight: "semibold",
|
|
175
|
+
type: "secondary",
|
|
176
|
+
className: "uppercase tracking-wider",
|
|
177
|
+
children: f
|
|
178
|
+
})
|
|
179
|
+
}, `group-${f}-${e.id ?? u}`))), e.element) {
|
|
180
|
+
a.push(/* @__PURE__ */ v("div", { children: e.element }, e.id ?? u));
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (r) {
|
|
184
|
+
a.push(/* @__PURE__ */ v("div", { children: r(e, d) }, e.id ?? u));
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
let m = e.icon, h = !!e.disabled || !!e.loading, g = /* @__PURE__ */ y(_, { children: [!!m && /* @__PURE__ */ v(m, {
|
|
188
|
+
className: "size-3.5",
|
|
189
|
+
"aria-hidden": "true"
|
|
190
|
+
}), typeof e.label == "string" ? /* @__PURE__ */ v(i, {
|
|
191
|
+
tag: "span",
|
|
192
|
+
size: "xs",
|
|
193
|
+
className: "text-inherit",
|
|
194
|
+
children: e.label
|
|
195
|
+
}) : e.label] }), b = t("gap-1.5 px-2 py-1.5 text-xs", e.variant === "destructive" && "text-destructive focus-visible:text-destructive");
|
|
196
|
+
if (e.href && !e.onClick && !h) {
|
|
197
|
+
a.push(/* @__PURE__ */ v(c, {
|
|
198
|
+
href: e.href,
|
|
199
|
+
className: b,
|
|
200
|
+
render: (t) => d.renderLink({
|
|
201
|
+
...t,
|
|
202
|
+
href: e.href,
|
|
203
|
+
children: t.children,
|
|
204
|
+
target: e.target,
|
|
205
|
+
rel: e.rel,
|
|
206
|
+
external: e.external
|
|
207
|
+
}),
|
|
208
|
+
children: g
|
|
209
|
+
}, e.id ?? u));
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
a.push(/* @__PURE__ */ v(s, {
|
|
213
|
+
disabled: h,
|
|
214
|
+
onClick: e.onClick,
|
|
215
|
+
className: b,
|
|
216
|
+
children: g
|
|
217
|
+
}, e.id ?? u));
|
|
218
|
+
}), a;
|
|
219
|
+
}
|
|
220
|
+
function N({ actions: n, display: r = "dropdown", breakpoint: i = 1040, maxInlineActions: a = A, renderLink: o, LinkComponent: s, strings: c, className: l, inlineClassName: f, menuClassName: _, renderAction: b }) {
|
|
221
|
+
let S = e(D, c), C = d({
|
|
222
|
+
renderLink: o,
|
|
223
|
+
LinkComponent: s
|
|
224
|
+
}), w = h(() => (n ?? []).map((e, t) => ({
|
|
225
|
+
action: e,
|
|
226
|
+
index: t
|
|
227
|
+
})).filter(({ action: e }) => e.visible !== !1), [n]), [T, E] = g(!1);
|
|
228
|
+
if (m(() => {
|
|
229
|
+
if (r !== "auto" || typeof window > "u") return;
|
|
230
|
+
let e = () => E(window.innerWidth <= i);
|
|
231
|
+
return e(), window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
|
|
232
|
+
}, [r, i]), w.length === 0) return null;
|
|
233
|
+
let O = { renderLink: C }, N = t("flex items-center gap-2", f, l), P = t(k, _);
|
|
234
|
+
if (r === "dropdown" || r === "auto" && T) return /* @__PURE__ */ v(u, {
|
|
235
|
+
icon: x,
|
|
236
|
+
srText: S.menuLabel,
|
|
237
|
+
align: "end",
|
|
238
|
+
closeOnSelect: !0,
|
|
239
|
+
contentClassName: P,
|
|
240
|
+
children: M(w, O, b)
|
|
241
|
+
});
|
|
242
|
+
let F = Math.max(0, a), I = w.filter(({ action: e }) => (e.placement ?? "auto") !== "menu"), L = I.slice(0, F), R = [...I.slice(F), ...w.filter(({ action: e }) => (e.placement ?? "auto") === "menu")];
|
|
243
|
+
return /* @__PURE__ */ y("div", {
|
|
244
|
+
className: N,
|
|
245
|
+
children: [L.map((e) => /* @__PURE__ */ v(p, { children: j(e.action, {
|
|
246
|
+
...O,
|
|
247
|
+
index: e.index,
|
|
248
|
+
isInline: !0
|
|
249
|
+
}, b) }, e.action.id ?? e.index)), R.length > 0 && /* @__PURE__ */ v(u, {
|
|
250
|
+
icon: x,
|
|
251
|
+
srText: S.menuLabel,
|
|
252
|
+
align: "end",
|
|
253
|
+
closeOnSelect: !0,
|
|
254
|
+
contentClassName: P,
|
|
255
|
+
children: M(R, O, b)
|
|
256
|
+
})]
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
//#endregion
|
|
260
|
+
export { C as a, w as i, D as n, E as r, N as t };
|
|
261
|
+
|
|
262
|
+
//# sourceMappingURL=page-Bl_eSGLh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-Bl_eSGLh.js","names":[],"sources":["../../src/components/layout/page/partials/page-header.tsx","../../src/components/layout/page/page.tsx","../../src/components/layout/page/page-content.tsx","../../src/components/layout/page/page.types.ts","../../src/components/layout/page/partials/page-actions.tsx"],"sourcesContent":["/**\n * PageHeader — page title, back control, title badges, and actions.\n *\n * Navigation goes through `renderLink`; consumer apps wire framework links at\n * the boundary. Slots let consumers replace any structural region without\n * forking the page wrapper.\n */\nimport { ArrowLeft } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Separator } from '@/components/base/display/separator';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { PageHeaderProps, PageHeadingTag } from '../page.types';\n\nconst PAGE_TITLE_CLASS: Record<PageHeadingTag, string> = {\n\th1: 'border-0 pb-0 text-xl',\n\th2: 'border-0 pb-0 text-lg',\n\th3: 'text-base',\n\th4: 'text-sm',\n\th5: 'text-sm',\n\th6: 'text-sm',\n};\n\nexport function PageHeader({\n\ttitle,\n\tdescription,\n\theadingTag = 'h3',\n\tbackHref,\n\tonBack,\n\tbackLabel = 'Back',\n\ttitleBadges = [],\n\tactions,\n\tslots,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tcontentClassName,\n\tactionsClassName,\n\ttitleClassName,\n\tdescriptionClassName,\n}: PageHeaderProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst hasBack = !!backHref || !!onBack;\n\n\tconst defaultBack = hasBack ? (\n\t\t<div className=\"flex items-center gap-1.5 pt-1\">\n\t\t\t{backHref && !onBack ? (\n\t\t\t\tresolvedRenderLink({\n\t\t\t\t\thref: backHref,\n\t\t\t\t\t'aria-label': backLabel,\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\tclassName=\"h-7 w-7 rounded p-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t<span className=\"sr-only\">{backLabel}</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t) : (\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\tclassName=\"h-7 w-7 rounded p-1\"\n\t\t\t\t\tonClick={onBack}\n\t\t\t\t\taria-label={backLabel}\n\t\t\t\t>\n\t\t\t\t\t<ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t<Separator orientation=\"vertical\" className=\"h-7\" />\n\t\t</div>\n\t) : null;\n\n\treturn (\n\t\t<header\n\t\t\tclassName={cn(\n\t\t\t\t'flex w-full flex-col gap-4 md:flex-row md:items-start md:justify-between',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex min-w-0 flex-1 items-start gap-3\">\n\t\t\t\t{slots?.back ?? defaultBack}\n\n\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n\t\t\t\t\t{slots?.beforeTitle}\n\t\t\t\t\t<div className={cn('flex max-w-[475px] flex-col gap-0.5', contentClassName)}>\n\t\t\t\t\t\t<div className=\"flex flex-wrap items-center gap-3\">\n\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\ttag={headingTag}\n\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\tclassName={cn(PAGE_TITLE_CLASS[headingTag], titleClassName)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t{titleBadges.length > 0 && (\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{titleBadges.map((badge, index) => (\n\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\tkey={badge.key ?? index}\n\t\t\t\t\t\t\t\t\t\t\tvariant={badge.variant ?? 'secondary'}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{badge.label}\n\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className={descriptionClassName}>\n\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{slots?.afterDescription}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{slots?.actions ?? (\n\t\t\t\t!!actions && <div className={cn('shrink-0', actionsClassName)}>{actions}</div>\n\t\t\t)}\n\t\t</header>\n\t);\n}\n","/**\n * Page — convenience wrapper that pairs `<PageHeader>` with `<Container>`.\n * For full control, compose `<PageHeader />`, `<PageContent />`, and\n * `<Container />` directly.\n */\nimport { Container } from '../containers/content-container';\nimport { PageHeader } from './partials/page-header';\nimport type { PageProps } from './page.types';\nimport { cn } from '@/lib/utils';\n\nexport function Page({\n\theader,\n\twidth = 'narrow',\n\tchildren,\n\tclassName,\n\tbodyClassName,\n\trenderLink,\n\tLinkComponent,\n}: PageProps) {\n\treturn (\n\t\t<Container width={width} className={className}>\n\t\t\t{!!header && (\n\t\t\t\t<PageHeader\n\t\t\t\t\t{...header}\n\t\t\t\t\trenderLink={header.renderLink ?? renderLink}\n\t\t\t\t\tLinkComponent={header.LinkComponent ?? LinkComponent}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{!!children && (\n\t\t\t\t<div className={cn('relative block w-full', bodyClassName)}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Container>\n\t);\n}\n","/**\n * PageContent — `<main>` wrapper for the body region of an app shell.\n *\n * Provides consistent padding and an optional width clamp. Lighter-weight\n * than `Page` — use directly inside an `AppShell` flexbox where the surrounding\n * structure (header, sidebar) is already in place.\n */\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageContentMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n\nexport interface PageContentProps extends HTMLAttributes<HTMLElement> {\n\t/** Body content. */\n\tchildren?: ReactNode;\n\t/** When true, removes default `p-4 md:p-6` padding. */\n\tnoPadding?: boolean;\n\t/** Optional max-width clamp (centers when set). */\n\tmaxWidth?: PageContentMaxWidth;\n}\n\nconst MAX_WIDTH_CLASS: Record<PageContentMaxWidth, string> = {\n\tsm: 'max-w-screen-sm',\n\tmd: 'max-w-screen-md',\n\tlg: 'max-w-screen-lg',\n\txl: 'max-w-screen-xl',\n\t'2xl': 'max-w-screen-2xl',\n\tfull: 'max-w-full',\n};\n\nexport function PageContent({\n\tnoPadding = false,\n\tmaxWidth,\n\tclassName,\n\tchildren,\n\t...props\n}: PageContentProps) {\n\treturn (\n\t\t<main\n\t\t\tclassName={cn(\n\t\t\t\t'flex-1',\n\t\t\t\t!noPadding && 'p-4 md:p-6',\n\t\t\t\tmaxWidth && cn('mx-auto w-full', MAX_WIDTH_CLASS[maxWidth]),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</main>\n\t);\n}\n","/**\n * Page-level types for `Page`, `PageHeader`, `PageActions`, and exported\n * partials. All navigation is framework-neutral via `renderLink`.\n */\nimport type { ComponentType, JSX, Key, ReactNode } from 'react';\n\nimport type {\n\tLayoutLinkRenderer,\n\tLayoutNavigationAdapter,\n\tLinkComponent,\n} from '../layout.types';\nimport type { ContainerWidth } from '../containers/containers.types';\n\nexport type PageHeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nexport interface PageTitleBadge {\n\tlabel: ReactNode;\n\tvariant?: 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'error';\n\tkey?: Key;\n}\n\nexport interface PageHeaderSlots {\n\t/** Replaces the leading back control entirely. */\n\tback?: ReactNode;\n\t/** Additional content before the title line. */\n\tbeforeTitle?: ReactNode;\n\t/** Additional content after the description. */\n\tafterDescription?: ReactNode;\n\t/** Replaces the trailing actions region. */\n\tactions?: ReactNode;\n}\n\nexport interface PageHeaderProps extends LayoutNavigationAdapter {\n\ttitle: ReactNode;\n\tdescription?: ReactNode;\n\t/** Semantic heading level for the title. Defaults to `h3` for nested app pages. */\n\theadingTag?: PageHeadingTag;\n\tbackHref?: string;\n\tonBack?: () => void;\n\tbackLabel?: string;\n\ttitleBadges?: PageTitleBadge[];\n\tactions?: ReactNode;\n\tslots?: PageHeaderSlots;\n\tclassName?: string;\n\tcontentClassName?: string;\n\tactionsClassName?: string;\n\ttitleClassName?: string;\n\tdescriptionClassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport type PageActionVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'destructive'\n\t| 'success'\n\t| 'warning';\n\nexport interface PageActionContext {\n\tindex: number;\n\tisInline: boolean;\n\trenderLink: LayoutLinkRenderer;\n}\n\nexport interface PageAction {\n\tid?: string;\n\tlabel: ReactNode;\n\tonClick?: () => void;\n\thref?: string;\n\ttarget?: string;\n\trel?: string;\n\texternal?: boolean;\n\tdisabled?: boolean;\n\tloading?: boolean;\n\ticon?: ComponentType<{ className?: string }>;\n\tvariant?: PageActionVariant;\n\tvisible?: boolean;\n\tgroup?: string;\n\tplacement?: 'auto' | 'inline' | 'menu';\n\t/** Escape hatch for one action only. Prefer `renderAction` for consistent customization. */\n\telement?: ReactNode | JSX.Element;\n}\n\nexport type PageActionsDisplay = 'flat' | 'dropdown' | 'auto';\n\nexport interface PageActionsStrings {\n\tmenuLabel: string;\n}\n\nexport const defaultPageActionsStrings: PageActionsStrings = {\n\tmenuLabel: 'Page actions',\n};\n\nexport interface PageActionsProps extends LayoutNavigationAdapter {\n\tactions?: PageAction[];\n\tdisplay?: PageActionsDisplay;\n\tbreakpoint?: number;\n\t/**\n\t * Maximum non-menu actions rendered inline before overflow moves them into\n\t * the dropdown menu. Defaults to 4 for admin header density.\n\t */\n\tmaxInlineActions?: number;\n\tstrings?: Partial<PageActionsStrings>;\n\tclassName?: string;\n\tinlineClassName?: string;\n\tmenuClassName?: string;\n\trenderAction?: (action: PageAction, context: PageActionContext) => ReactNode;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface PageProps extends LayoutNavigationAdapter {\n\theader?: PageHeaderProps;\n\twidth?: ContainerWidth;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tbodyClassName?: string;\n}\n","/**\n * PageActions — composable action ribbon for page headers.\n *\n * Links go through `renderLink`, never router imports or DOM click hacks.\n * Use `renderAction` for app-specific rendering while keeping grouping,\n * filtering, breakpoint, and menu placement logic centralized.\n */\nimport { Fragment, useEffect, useMemo, useState, type ReactNode } from 'react';\nimport { MoreHorizontal } from 'lucide-react';\n\nimport { PageActionButton } from '@/components/base/buttons/page-action-button';\nimport { Separator } from '@/components/base/display/separator';\nimport { ActionMenu } from '@/components/base/navigation/action-menu';\nimport {\n\tDropdownMenuItem,\n\tDropdownMenuLinkItem,\n} from '@/components/base/navigation/dropdown-menu';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultPageActionsStrings,\n\ttype PageAction,\n\ttype PageActionContext,\n\ttype PageActionVariant,\n\ttype PageActionsProps,\n} from '../page.types';\n\nconst resolveBaseVariant = (\n\tvariant: PageActionVariant | undefined,\n): 'primary' | 'secondary' | 'error' => {\n\tif (variant === 'destructive') return 'error';\n\tif (variant === 'primary' || variant === 'success' || variant === 'warning') return 'primary';\n\treturn 'secondary';\n};\n\nconst PAGE_ACTIONS_MENU_CLASS = 'max-h-[80vh] overflow-y-auto overscroll-contain';\nconst DEFAULT_MAX_INLINE_ACTIONS = 4;\n\ntype PageActionEntry = {\n\taction: PageAction;\n\tindex: number;\n};\n\nfunction renderInlineAction(\n\taction: PageAction,\n\tcontext: PageActionContext,\n\trenderAction?: PageActionsProps['renderAction'],\n): ReactNode {\n\tif (action.visible === false) return null;\n\tif (action.element) return <div key={action.id ?? context.index}>{action.element}</div>;\n\tif (renderAction) return renderAction(action, context);\n\n\tconst key = action.id ?? context.index;\n\tconst disabled = !!action.disabled || !!action.loading;\n\tconst Icon = action.icon;\n\tconst button = (\n\t\t<PageActionButton\n\t\t\tkey={key}\n\t\t\tvariant={resolveBaseVariant(action.variant)}\n\t\t\tonClick={action.onClick}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{!!Icon && <Icon className=\"size-3.5\" aria-hidden=\"true\" />}\n\t\t\t{action.label}\n\t\t</PageActionButton>\n\t);\n\n\tif (action.href && !action.onClick) {\n\t\treturn context.renderLink({\n\t\t\thref: action.href,\n\t\t\tchildren: button,\n\t\t\tclassName: 'inline-flex',\n\t\t\ttarget: action.target,\n\t\t\trel: action.rel,\n\t\t\texternal: action.external,\n\t\t\tdisabled,\n\t\t});\n\t}\n\n\treturn button;\n}\n\nfunction renderMenuItems(\n\tentries: PageActionEntry[],\n\tcontextBase: Omit<PageActionContext, 'index' | 'isInline'>,\n\trenderAction?: PageActionsProps['renderAction'],\n): ReactNode[] {\n\tconst items: ReactNode[] = [];\n\tlet currentGroup: string | null = null;\n\n\tentries.forEach(({ action, index }) => {\n\t\tconst context: PageActionContext = { ...contextBase, index, isInline: false };\n\t\tconst nextGroup = action.group ?? null;\n\t\tconst groupChanged = nextGroup !== currentGroup;\n\n\t\tif (items.length > 0 && groupChanged) {\n\t\t\titems.push(\n\t\t\t\t<Separator\n\t\t\t\t\tkey={`sep-${currentGroup ?? 'root'}-${nextGroup ?? 'root'}-${action.id ?? index}`}\n\t\t\t\t\tclassName=\"my-1\"\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\tif (groupChanged) {\n\t\t\tcurrentGroup = nextGroup;\n\t\t\tif (nextGroup) {\n\t\t\t\titems.push(\n\t\t\t\t\t<div key={`group-${nextGroup}-${action.id ?? index}`} className=\"px-2 pt-1\">\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"uppercase tracking-wider\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{nextGroup}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (action.element) {\n\t\t\titems.push(<div key={action.id ?? index}>{action.element}</div>);\n\t\t\treturn;\n\t\t}\n\n\t\tif (renderAction) {\n\t\t\titems.push(<div key={action.id ?? index}>{renderAction(action, context)}</div>);\n\t\t\treturn;\n\t\t}\n\n\t\tconst Icon = action.icon;\n\t\tconst disabled = !!action.disabled || !!action.loading;\n\t\tconst children = (\n\t\t\t<>\n\t\t\t\t{!!Icon && <Icon className=\"size-3.5\" aria-hidden=\"true\" />}\n\t\t\t\t{typeof action.label === 'string' ? (\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">\n\t\t\t\t\t\t{action.label}\n\t\t\t\t\t</Text>\n\t\t\t\t) : action.label}\n\t\t\t</>\n\t\t);\n\n\t\tconst itemClassName = cn(\n\t\t\t'gap-1.5 px-2 py-1.5 text-xs',\n\t\t\taction.variant === 'destructive' && 'text-destructive focus-visible:text-destructive',\n\t\t);\n\n\t\tif (action.href && !action.onClick && !disabled) {\n\t\t\titems.push(\n\t\t\t\t<DropdownMenuLinkItem\n\t\t\t\t\tkey={action.id ?? index}\n\t\t\t\t\thref={action.href}\n\t\t\t\t\tclassName={itemClassName}\n\t\t\t\t\trender={(props) =>\n\t\t\t\t\t\tcontext.renderLink({\n\t\t\t\t\t\t\t...props,\n\t\t\t\t\t\t\thref: action.href,\n\t\t\t\t\t\t\tchildren: props.children,\n\t\t\t\t\t\t\ttarget: action.target,\n\t\t\t\t\t\t\trel: action.rel,\n\t\t\t\t\t\t\texternal: action.external,\n\t\t\t\t\t\t}) as React.ReactElement\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</DropdownMenuLinkItem>,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\titems.push(\n\t\t\t<DropdownMenuItem\n\t\t\t\tkey={action.id ?? index}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonClick={action.onClick}\n\t\t\t\tclassName={itemClassName}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</DropdownMenuItem>,\n\t\t);\n\t});\n\n\treturn items;\n}\n\nexport function PageActions({\n\tactions,\n\tdisplay = 'dropdown',\n\tbreakpoint = 1040,\n\tmaxInlineActions = DEFAULT_MAX_INLINE_ACTIONS,\n\trenderLink,\n\tLinkComponent,\n\tstrings: stringsProp,\n\tclassName,\n\tinlineClassName,\n\tmenuClassName,\n\trenderAction,\n}: PageActionsProps) {\n\tconst strings = useStrings(defaultPageActionsStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\tconst filtered = useMemo<PageActionEntry[]>(\n\t\t() => (actions ?? [])\n\t\t\t.map((action, index) => ({ action, index }))\n\t\t\t.filter(({ action }) => action.visible !== false),\n\t\t[actions],\n\t);\n\n\tconst [isNarrow, setIsNarrow] = useState(false);\n\tuseEffect(() => {\n\t\tif (display !== 'auto' || typeof window === 'undefined') return;\n\n\t\tconst check = () => setIsNarrow(window.innerWidth <= breakpoint);\n\t\tcheck();\n\t\twindow.addEventListener('resize', check);\n\t\treturn () => window.removeEventListener('resize', check);\n\t}, [display, breakpoint]);\n\n\tif (filtered.length === 0) return null;\n\n\tconst inlineContextBase = { renderLink: resolvedRenderLink };\n\tconst inlineClass = cn('flex items-center gap-2', inlineClassName, className);\n\tconst menuContentClass = cn(PAGE_ACTIONS_MENU_CLASS, menuClassName);\n\n\tif (display === 'dropdown' || (display === 'auto' && isNarrow)) {\n\t\treturn (\n\t\t\t<ActionMenu\n\t\t\t\ticon={MoreHorizontal}\n\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\talign=\"end\"\n\t\t\t\tcloseOnSelect\n\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t>\n\t\t\t\t{renderMenuItems(filtered, inlineContextBase, renderAction)}\n\t\t\t</ActionMenu>\n\t\t);\n\t}\n\n\tconst inlineLimit = Math.max(0, maxInlineActions);\n\tconst inlineCandidates = filtered.filter(({ action }) => (action.placement ?? 'auto') !== 'menu');\n\tconst inline = inlineCandidates.slice(0, inlineLimit);\n\tconst overflow = inlineCandidates.slice(inlineLimit);\n\tconst menu = [\n\t\t...overflow,\n\t\t...filtered.filter(({ action }) => (action.placement ?? 'auto') === 'menu'),\n\t];\n\n\treturn (\n\t\t<div className={inlineClass}>\n\t\t\t{inline.map((action) => (\n\t\t\t\t<Fragment key={action.action.id ?? action.index}>\n\t\t\t\t\t{renderInlineAction(\n\t\t\t\t\t\taction.action,\n\t\t\t\t\t\t{ ...inlineContextBase, index: action.index, isInline: true },\n\t\t\t\t\t\trenderAction,\n\t\t\t\t\t)}\n\t\t\t\t</Fragment>\n\t\t\t))}\n\t\t\t{menu.length > 0 && (\n\t\t\t\t<ActionMenu\n\t\t\t\t\ticon={MoreHorizontal}\n\t\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\t\talign=\"end\"\n\t\t\t\t\tcloseOnSelect\n\t\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t\t>\n\t\t\t\t\t{renderMenuItems(menu, inlineContextBase, renderAction)}\n\t\t\t\t</ActionMenu>\n\t\t\t)}\n\t\t</div>\n\t);\n}\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("./buttons-kVvSD_oI.cjs"),i=require("./heading-0DYCOrgC.cjs"),a=require("./badge-D7A2LnSf.cjs"),o=require("./dropdown-menu-CHQzQWUK.cjs"),s=require("./separator-q42IlFFA.cjs"),c=require("./action-menu-D9OowHKx.cjs"),l=require("./hooks-DsDGr8xz.cjs"),u=require("./content-container-CVUJCLhn.cjs");let d=require("react"),f=require("react/jsx-runtime"),p=require("lucide-react");var m={h1:`border-0 pb-0 text-xl`,h2:`border-0 pb-0 text-lg`,h3:`text-base`,h4:`text-sm`,h5:`text-sm`,h6:`text-sm`};function h({title:e,description:r,headingTag:o=`h3`,backHref:c,onBack:u,backLabel:d=`Back`,titleBadges:h=[],actions:g,slots:_,renderLink:v,LinkComponent:y,className:b,contentClassName:x,actionsClassName:S,titleClassName:C,descriptionClassName:w}){let T=l.d({renderLink:v,LinkComponent:y}),E=c||u?(0,f.jsxs)(`div`,{className:`flex items-center gap-1.5 pt-1`,children:[c&&!u?T({href:c,"aria-label":d,children:(0,f.jsxs)(n.t,{variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,className:`h-7 w-7 rounded p-1`,children:[(0,f.jsx)(p.ArrowLeft,{className:`size-4`,"aria-hidden":`true`}),(0,f.jsx)(`span`,{className:`sr-only`,children:d})]})}):(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,className:`h-7 w-7 rounded p-1`,onClick:u,"aria-label":d,children:(0,f.jsx)(p.ArrowLeft,{className:`size-4`,"aria-hidden":`true`})}),(0,f.jsx)(s.t,{orientation:`vertical`,className:`h-7`})]}):null;return(0,f.jsxs)(`header`,{className:t.cn(`flex w-full flex-col gap-4 md:flex-row md:items-start md:justify-between`,b),children:[(0,f.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-3`,children:[_?.back??E,(0,f.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[_?.beforeTitle,(0,f.jsxs)(`div`,{className:t.cn(`flex max-w-[475px] flex-col gap-0.5`,x),children:[(0,f.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,f.jsx)(i.t,{tag:o,containerClassName:`space-y-0`,className:t.cn(m[o],C),children:e}),h.length>0&&(0,f.jsx)(`div`,{className:`flex items-center gap-1.5`,children:h.map((e,t)=>(0,f.jsx)(a.t,{variant:e.variant??`secondary`,children:e.label},e.key??t))})]}),!!r&&(0,f.jsx)(i.n,{size:`xs`,type:`secondary`,className:w,children:r}),_?.afterDescription]})]})]}),_?.actions??(!!g&&(0,f.jsx)(`div`,{className:t.cn(`shrink-0`,S),children:g}))]})}function g({header:e,width:n=`narrow`,children:r,className:i,bodyClassName:a,renderLink:o,LinkComponent:s}){return(0,f.jsxs)(u.t,{width:n,className:i,children:[!!e&&(0,f.jsx)(h,{...e,renderLink:e.renderLink??o,LinkComponent:e.LinkComponent??s}),!!r&&(0,f.jsx)(`div`,{className:t.cn(`relative block w-full`,a),children:r})]})}var _={sm:`max-w-screen-sm`,md:`max-w-screen-md`,lg:`max-w-screen-lg`,xl:`max-w-screen-xl`,"2xl":`max-w-screen-2xl`,full:`max-w-full`};function v({noPadding:e=!1,maxWidth:n,className:r,children:i,...a}){return(0,f.jsx)(`main`,{className:t.cn(`flex-1`,!e&&`p-4 md:p-6`,n&&t.cn(`mx-auto w-full`,_[n]),r),...a,children:i})}var y={menuLabel:`Page actions`},b=e=>e===`destructive`?`error`:e===`primary`||e===`success`||e===`warning`?`primary`:`secondary`,x=`max-h-[80vh] overflow-y-auto overscroll-contain`,S=4;function C(e,t,n){if(e.visible===!1)return null;if(e.element)return(0,f.jsx)(`div`,{children:e.element},e.id??t.index);if(n)return n(e,t);let i=e.id??t.index,a=!!e.disabled||!!e.loading,o=e.icon,s=(0,f.jsxs)(r.t,{variant:b(e.variant),onClick:e.onClick,disabled:a,children:[!!o&&(0,f.jsx)(o,{className:`size-3.5`,"aria-hidden":`true`}),e.label]},i);return e.href&&!e.onClick?t.renderLink({href:e.href,children:s,className:`inline-flex`,target:e.target,rel:e.rel,external:e.external,disabled:a}):s}function w(e,n,r){let a=[],c=null;return e.forEach(({action:e,index:l})=>{let u={...n,index:l,isInline:!1},d=e.group??null,p=d!==c;if(a.length>0&&p&&a.push((0,f.jsx)(s.t,{className:`my-1`},`sep-${c??`root`}-${d??`root`}-${e.id??l}`)),p&&(c=d,d&&a.push((0,f.jsx)(`div`,{className:`px-2 pt-1`,children:(0,f.jsx)(i.n,{size:`xxs`,weight:`semibold`,type:`secondary`,className:`uppercase tracking-wider`,children:d})},`group-${d}-${e.id??l}`))),e.element){a.push((0,f.jsx)(`div`,{children:e.element},e.id??l));return}if(r){a.push((0,f.jsx)(`div`,{children:r(e,u)},e.id??l));return}let m=e.icon,h=!!e.disabled||!!e.loading,g=(0,f.jsxs)(f.Fragment,{children:[!!m&&(0,f.jsx)(m,{className:`size-3.5`,"aria-hidden":`true`}),typeof e.label==`string`?(0,f.jsx)(i.n,{tag:`span`,size:`xs`,className:`text-inherit`,children:e.label}):e.label]}),_=t.cn(`gap-1.5 px-2 py-1.5 text-xs`,e.variant===`destructive`&&`text-destructive focus-visible:text-destructive`);if(e.href&&!e.onClick&&!h){a.push((0,f.jsx)(o.s,{href:e.href,className:_,render:t=>u.renderLink({...t,href:e.href,children:t.children,target:e.target,rel:e.rel,external:e.external}),children:g},e.id??l));return}a.push((0,f.jsx)(o.a,{disabled:h,onClick:e.onClick,className:_,children:g},e.id??l))}),a}function T({actions:n,display:r=`dropdown`,breakpoint:i=1040,maxInlineActions:a=S,renderLink:o,LinkComponent:s,strings:u,className:m,inlineClassName:h,menuClassName:g,renderAction:_}){let v=e.useStrings(y,u),b=l.d({renderLink:o,LinkComponent:s}),T=(0,d.useMemo)(()=>(n??[]).map((e,t)=>({action:e,index:t})).filter(({action:e})=>e.visible!==!1),[n]),[E,D]=(0,d.useState)(!1);if((0,d.useEffect)(()=>{if(r!==`auto`||typeof window>`u`)return;let e=()=>D(window.innerWidth<=i);return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[r,i]),T.length===0)return null;let O={renderLink:b},k=t.cn(`flex items-center gap-2`,h,m),A=t.cn(x,g);if(r===`dropdown`||r===`auto`&&E)return(0,f.jsx)(c.t,{icon:p.MoreHorizontal,srText:v.menuLabel,align:`end`,closeOnSelect:!0,contentClassName:A,children:w(T,O,_)});let j=Math.max(0,a),M=T.filter(({action:e})=>(e.placement??`auto`)!==`menu`),N=M.slice(0,j),P=[...M.slice(j),...T.filter(({action:e})=>(e.placement??`auto`)===`menu`)];return(0,f.jsxs)(`div`,{className:k,children:[N.map(e=>(0,f.jsx)(d.Fragment,{children:C(e.action,{...O,index:e.index,isInline:!0},_)},e.action.id??e.index)),P.length>0&&(0,f.jsx)(c.t,{icon:p.MoreHorizontal,srText:v.menuLabel,align:`end`,closeOnSelect:!0,contentClassName:A,children:w(P,O,_)})]})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return T}});
|
|
2
|
+
//# sourceMappingURL=page-DTEqSyEK.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-DTEqSyEK.cjs","names":[],"sources":["../../src/components/layout/page/partials/page-header.tsx","../../src/components/layout/page/page.tsx","../../src/components/layout/page/page-content.tsx","../../src/components/layout/page/page.types.ts","../../src/components/layout/page/partials/page-actions.tsx"],"sourcesContent":["/**\n * PageHeader — page title, back control, title badges, and actions.\n *\n * Navigation goes through `renderLink`; consumer apps wire framework links at\n * the boundary. Slots let consumers replace any structural region without\n * forking the page wrapper.\n */\nimport { ArrowLeft } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Separator } from '@/components/base/display/separator';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { PageHeaderProps, PageHeadingTag } from '../page.types';\n\nconst PAGE_TITLE_CLASS: Record<PageHeadingTag, string> = {\n\th1: 'border-0 pb-0 text-xl',\n\th2: 'border-0 pb-0 text-lg',\n\th3: 'text-base',\n\th4: 'text-sm',\n\th5: 'text-sm',\n\th6: 'text-sm',\n};\n\nexport function PageHeader({\n\ttitle,\n\tdescription,\n\theadingTag = 'h3',\n\tbackHref,\n\tonBack,\n\tbackLabel = 'Back',\n\ttitleBadges = [],\n\tactions,\n\tslots,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tcontentClassName,\n\tactionsClassName,\n\ttitleClassName,\n\tdescriptionClassName,\n}: PageHeaderProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst hasBack = !!backHref || !!onBack;\n\n\tconst defaultBack = hasBack ? (\n\t\t<div className=\"flex items-center gap-1.5 pt-1\">\n\t\t\t{backHref && !onBack ? (\n\t\t\t\tresolvedRenderLink({\n\t\t\t\t\thref: backHref,\n\t\t\t\t\t'aria-label': backLabel,\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\tclassName=\"h-7 w-7 rounded p-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t<span className=\"sr-only\">{backLabel}</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t) : (\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\tclassName=\"h-7 w-7 rounded p-1\"\n\t\t\t\t\tonClick={onBack}\n\t\t\t\t\taria-label={backLabel}\n\t\t\t\t>\n\t\t\t\t\t<ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t<Separator orientation=\"vertical\" className=\"h-7\" />\n\t\t</div>\n\t) : null;\n\n\treturn (\n\t\t<header\n\t\t\tclassName={cn(\n\t\t\t\t'flex w-full flex-col gap-4 md:flex-row md:items-start md:justify-between',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex min-w-0 flex-1 items-start gap-3\">\n\t\t\t\t{slots?.back ?? defaultBack}\n\n\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n\t\t\t\t\t{slots?.beforeTitle}\n\t\t\t\t\t<div className={cn('flex max-w-[475px] flex-col gap-0.5', contentClassName)}>\n\t\t\t\t\t\t<div className=\"flex flex-wrap items-center gap-3\">\n\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\ttag={headingTag}\n\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\tclassName={cn(PAGE_TITLE_CLASS[headingTag], titleClassName)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t{titleBadges.length > 0 && (\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{titleBadges.map((badge, index) => (\n\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\tkey={badge.key ?? index}\n\t\t\t\t\t\t\t\t\t\t\tvariant={badge.variant ?? 'secondary'}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{badge.label}\n\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className={descriptionClassName}>\n\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{slots?.afterDescription}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{slots?.actions ?? (\n\t\t\t\t!!actions && <div className={cn('shrink-0', actionsClassName)}>{actions}</div>\n\t\t\t)}\n\t\t</header>\n\t);\n}\n","/**\n * Page — convenience wrapper that pairs `<PageHeader>` with `<Container>`.\n * For full control, compose `<PageHeader />`, `<PageContent />`, and\n * `<Container />` directly.\n */\nimport { Container } from '../containers/content-container';\nimport { PageHeader } from './partials/page-header';\nimport type { PageProps } from './page.types';\nimport { cn } from '@/lib/utils';\n\nexport function Page({\n\theader,\n\twidth = 'narrow',\n\tchildren,\n\tclassName,\n\tbodyClassName,\n\trenderLink,\n\tLinkComponent,\n}: PageProps) {\n\treturn (\n\t\t<Container width={width} className={className}>\n\t\t\t{!!header && (\n\t\t\t\t<PageHeader\n\t\t\t\t\t{...header}\n\t\t\t\t\trenderLink={header.renderLink ?? renderLink}\n\t\t\t\t\tLinkComponent={header.LinkComponent ?? LinkComponent}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{!!children && (\n\t\t\t\t<div className={cn('relative block w-full', bodyClassName)}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Container>\n\t);\n}\n","/**\n * PageContent — `<main>` wrapper for the body region of an app shell.\n *\n * Provides consistent padding and an optional width clamp. Lighter-weight\n * than `Page` — use directly inside an `AppShell` flexbox where the surrounding\n * structure (header, sidebar) is already in place.\n */\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageContentMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n\nexport interface PageContentProps extends HTMLAttributes<HTMLElement> {\n\t/** Body content. */\n\tchildren?: ReactNode;\n\t/** When true, removes default `p-4 md:p-6` padding. */\n\tnoPadding?: boolean;\n\t/** Optional max-width clamp (centers when set). */\n\tmaxWidth?: PageContentMaxWidth;\n}\n\nconst MAX_WIDTH_CLASS: Record<PageContentMaxWidth, string> = {\n\tsm: 'max-w-screen-sm',\n\tmd: 'max-w-screen-md',\n\tlg: 'max-w-screen-lg',\n\txl: 'max-w-screen-xl',\n\t'2xl': 'max-w-screen-2xl',\n\tfull: 'max-w-full',\n};\n\nexport function PageContent({\n\tnoPadding = false,\n\tmaxWidth,\n\tclassName,\n\tchildren,\n\t...props\n}: PageContentProps) {\n\treturn (\n\t\t<main\n\t\t\tclassName={cn(\n\t\t\t\t'flex-1',\n\t\t\t\t!noPadding && 'p-4 md:p-6',\n\t\t\t\tmaxWidth && cn('mx-auto w-full', MAX_WIDTH_CLASS[maxWidth]),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</main>\n\t);\n}\n","/**\n * Page-level types for `Page`, `PageHeader`, `PageActions`, and exported\n * partials. All navigation is framework-neutral via `renderLink`.\n */\nimport type { ComponentType, JSX, Key, ReactNode } from 'react';\n\nimport type {\n\tLayoutLinkRenderer,\n\tLayoutNavigationAdapter,\n\tLinkComponent,\n} from '../layout.types';\nimport type { ContainerWidth } from '../containers/containers.types';\n\nexport type PageHeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nexport interface PageTitleBadge {\n\tlabel: ReactNode;\n\tvariant?: 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'error';\n\tkey?: Key;\n}\n\nexport interface PageHeaderSlots {\n\t/** Replaces the leading back control entirely. */\n\tback?: ReactNode;\n\t/** Additional content before the title line. */\n\tbeforeTitle?: ReactNode;\n\t/** Additional content after the description. */\n\tafterDescription?: ReactNode;\n\t/** Replaces the trailing actions region. */\n\tactions?: ReactNode;\n}\n\nexport interface PageHeaderProps extends LayoutNavigationAdapter {\n\ttitle: ReactNode;\n\tdescription?: ReactNode;\n\t/** Semantic heading level for the title. Defaults to `h3` for nested app pages. */\n\theadingTag?: PageHeadingTag;\n\tbackHref?: string;\n\tonBack?: () => void;\n\tbackLabel?: string;\n\ttitleBadges?: PageTitleBadge[];\n\tactions?: ReactNode;\n\tslots?: PageHeaderSlots;\n\tclassName?: string;\n\tcontentClassName?: string;\n\tactionsClassName?: string;\n\ttitleClassName?: string;\n\tdescriptionClassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport type PageActionVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'destructive'\n\t| 'success'\n\t| 'warning';\n\nexport interface PageActionContext {\n\tindex: number;\n\tisInline: boolean;\n\trenderLink: LayoutLinkRenderer;\n}\n\nexport interface PageAction {\n\tid?: string;\n\tlabel: ReactNode;\n\tonClick?: () => void;\n\thref?: string;\n\ttarget?: string;\n\trel?: string;\n\texternal?: boolean;\n\tdisabled?: boolean;\n\tloading?: boolean;\n\ticon?: ComponentType<{ className?: string }>;\n\tvariant?: PageActionVariant;\n\tvisible?: boolean;\n\tgroup?: string;\n\tplacement?: 'auto' | 'inline' | 'menu';\n\t/** Escape hatch for one action only. Prefer `renderAction` for consistent customization. */\n\telement?: ReactNode | JSX.Element;\n}\n\nexport type PageActionsDisplay = 'flat' | 'dropdown' | 'auto';\n\nexport interface PageActionsStrings {\n\tmenuLabel: string;\n}\n\nexport const defaultPageActionsStrings: PageActionsStrings = {\n\tmenuLabel: 'Page actions',\n};\n\nexport interface PageActionsProps extends LayoutNavigationAdapter {\n\tactions?: PageAction[];\n\tdisplay?: PageActionsDisplay;\n\tbreakpoint?: number;\n\t/**\n\t * Maximum non-menu actions rendered inline before overflow moves them into\n\t * the dropdown menu. Defaults to 4 for admin header density.\n\t */\n\tmaxInlineActions?: number;\n\tstrings?: Partial<PageActionsStrings>;\n\tclassName?: string;\n\tinlineClassName?: string;\n\tmenuClassName?: string;\n\trenderAction?: (action: PageAction, context: PageActionContext) => ReactNode;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface PageProps extends LayoutNavigationAdapter {\n\theader?: PageHeaderProps;\n\twidth?: ContainerWidth;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tbodyClassName?: string;\n}\n","/**\n * PageActions — composable action ribbon for page headers.\n *\n * Links go through `renderLink`, never router imports or DOM click hacks.\n * Use `renderAction` for app-specific rendering while keeping grouping,\n * filtering, breakpoint, and menu placement logic centralized.\n */\nimport { Fragment, useEffect, useMemo, useState, type ReactNode } from 'react';\nimport { MoreHorizontal } from 'lucide-react';\n\nimport { PageActionButton } from '@/components/base/buttons/page-action-button';\nimport { Separator } from '@/components/base/display/separator';\nimport { ActionMenu } from '@/components/base/navigation/action-menu';\nimport {\n\tDropdownMenuItem,\n\tDropdownMenuLinkItem,\n} from '@/components/base/navigation/dropdown-menu';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultPageActionsStrings,\n\ttype PageAction,\n\ttype PageActionContext,\n\ttype PageActionVariant,\n\ttype PageActionsProps,\n} from '../page.types';\n\nconst resolveBaseVariant = (\n\tvariant: PageActionVariant | undefined,\n): 'primary' | 'secondary' | 'error' => {\n\tif (variant === 'destructive') return 'error';\n\tif (variant === 'primary' || variant === 'success' || variant === 'warning') return 'primary';\n\treturn 'secondary';\n};\n\nconst PAGE_ACTIONS_MENU_CLASS = 'max-h-[80vh] overflow-y-auto overscroll-contain';\nconst DEFAULT_MAX_INLINE_ACTIONS = 4;\n\ntype PageActionEntry = {\n\taction: PageAction;\n\tindex: number;\n};\n\nfunction renderInlineAction(\n\taction: PageAction,\n\tcontext: PageActionContext,\n\trenderAction?: PageActionsProps['renderAction'],\n): ReactNode {\n\tif (action.visible === false) return null;\n\tif (action.element) return <div key={action.id ?? context.index}>{action.element}</div>;\n\tif (renderAction) return renderAction(action, context);\n\n\tconst key = action.id ?? context.index;\n\tconst disabled = !!action.disabled || !!action.loading;\n\tconst Icon = action.icon;\n\tconst button = (\n\t\t<PageActionButton\n\t\t\tkey={key}\n\t\t\tvariant={resolveBaseVariant(action.variant)}\n\t\t\tonClick={action.onClick}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{!!Icon && <Icon className=\"size-3.5\" aria-hidden=\"true\" />}\n\t\t\t{action.label}\n\t\t</PageActionButton>\n\t);\n\n\tif (action.href && !action.onClick) {\n\t\treturn context.renderLink({\n\t\t\thref: action.href,\n\t\t\tchildren: button,\n\t\t\tclassName: 'inline-flex',\n\t\t\ttarget: action.target,\n\t\t\trel: action.rel,\n\t\t\texternal: action.external,\n\t\t\tdisabled,\n\t\t});\n\t}\n\n\treturn button;\n}\n\nfunction renderMenuItems(\n\tentries: PageActionEntry[],\n\tcontextBase: Omit<PageActionContext, 'index' | 'isInline'>,\n\trenderAction?: PageActionsProps['renderAction'],\n): ReactNode[] {\n\tconst items: ReactNode[] = [];\n\tlet currentGroup: string | null = null;\n\n\tentries.forEach(({ action, index }) => {\n\t\tconst context: PageActionContext = { ...contextBase, index, isInline: false };\n\t\tconst nextGroup = action.group ?? null;\n\t\tconst groupChanged = nextGroup !== currentGroup;\n\n\t\tif (items.length > 0 && groupChanged) {\n\t\t\titems.push(\n\t\t\t\t<Separator\n\t\t\t\t\tkey={`sep-${currentGroup ?? 'root'}-${nextGroup ?? 'root'}-${action.id ?? index}`}\n\t\t\t\t\tclassName=\"my-1\"\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\tif (groupChanged) {\n\t\t\tcurrentGroup = nextGroup;\n\t\t\tif (nextGroup) {\n\t\t\t\titems.push(\n\t\t\t\t\t<div key={`group-${nextGroup}-${action.id ?? index}`} className=\"px-2 pt-1\">\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"uppercase tracking-wider\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{nextGroup}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (action.element) {\n\t\t\titems.push(<div key={action.id ?? index}>{action.element}</div>);\n\t\t\treturn;\n\t\t}\n\n\t\tif (renderAction) {\n\t\t\titems.push(<div key={action.id ?? index}>{renderAction(action, context)}</div>);\n\t\t\treturn;\n\t\t}\n\n\t\tconst Icon = action.icon;\n\t\tconst disabled = !!action.disabled || !!action.loading;\n\t\tconst children = (\n\t\t\t<>\n\t\t\t\t{!!Icon && <Icon className=\"size-3.5\" aria-hidden=\"true\" />}\n\t\t\t\t{typeof action.label === 'string' ? (\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">\n\t\t\t\t\t\t{action.label}\n\t\t\t\t\t</Text>\n\t\t\t\t) : action.label}\n\t\t\t</>\n\t\t);\n\n\t\tconst itemClassName = cn(\n\t\t\t'gap-1.5 px-2 py-1.5 text-xs',\n\t\t\taction.variant === 'destructive' && 'text-destructive focus-visible:text-destructive',\n\t\t);\n\n\t\tif (action.href && !action.onClick && !disabled) {\n\t\t\titems.push(\n\t\t\t\t<DropdownMenuLinkItem\n\t\t\t\t\tkey={action.id ?? index}\n\t\t\t\t\thref={action.href}\n\t\t\t\t\tclassName={itemClassName}\n\t\t\t\t\trender={(props) =>\n\t\t\t\t\t\tcontext.renderLink({\n\t\t\t\t\t\t\t...props,\n\t\t\t\t\t\t\thref: action.href,\n\t\t\t\t\t\t\tchildren: props.children,\n\t\t\t\t\t\t\ttarget: action.target,\n\t\t\t\t\t\t\trel: action.rel,\n\t\t\t\t\t\t\texternal: action.external,\n\t\t\t\t\t\t}) as React.ReactElement\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</DropdownMenuLinkItem>,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\titems.push(\n\t\t\t<DropdownMenuItem\n\t\t\t\tkey={action.id ?? index}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonClick={action.onClick}\n\t\t\t\tclassName={itemClassName}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</DropdownMenuItem>,\n\t\t);\n\t});\n\n\treturn items;\n}\n\nexport function PageActions({\n\tactions,\n\tdisplay = 'dropdown',\n\tbreakpoint = 1040,\n\tmaxInlineActions = DEFAULT_MAX_INLINE_ACTIONS,\n\trenderLink,\n\tLinkComponent,\n\tstrings: stringsProp,\n\tclassName,\n\tinlineClassName,\n\tmenuClassName,\n\trenderAction,\n}: PageActionsProps) {\n\tconst strings = useStrings(defaultPageActionsStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\tconst filtered = useMemo<PageActionEntry[]>(\n\t\t() => (actions ?? [])\n\t\t\t.map((action, index) => ({ action, index }))\n\t\t\t.filter(({ action }) => action.visible !== false),\n\t\t[actions],\n\t);\n\n\tconst [isNarrow, setIsNarrow] = useState(false);\n\tuseEffect(() => {\n\t\tif (display !== 'auto' || typeof window === 'undefined') return;\n\n\t\tconst check = () => setIsNarrow(window.innerWidth <= breakpoint);\n\t\tcheck();\n\t\twindow.addEventListener('resize', check);\n\t\treturn () => window.removeEventListener('resize', check);\n\t}, [display, breakpoint]);\n\n\tif (filtered.length === 0) return null;\n\n\tconst inlineContextBase = { renderLink: resolvedRenderLink };\n\tconst inlineClass = cn('flex items-center gap-2', inlineClassName, className);\n\tconst menuContentClass = cn(PAGE_ACTIONS_MENU_CLASS, menuClassName);\n\n\tif (display === 'dropdown' || (display === 'auto' && isNarrow)) {\n\t\treturn (\n\t\t\t<ActionMenu\n\t\t\t\ticon={MoreHorizontal}\n\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\talign=\"end\"\n\t\t\t\tcloseOnSelect\n\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t>\n\t\t\t\t{renderMenuItems(filtered, inlineContextBase, renderAction)}\n\t\t\t</ActionMenu>\n\t\t);\n\t}\n\n\tconst inlineLimit = Math.max(0, maxInlineActions);\n\tconst inlineCandidates = filtered.filter(({ action }) => (action.placement ?? 'auto') !== 'menu');\n\tconst inline = inlineCandidates.slice(0, inlineLimit);\n\tconst overflow = inlineCandidates.slice(inlineLimit);\n\tconst menu = [\n\t\t...overflow,\n\t\t...filtered.filter(({ action }) => (action.placement ?? 'auto') === 'menu'),\n\t];\n\n\treturn (\n\t\t<div className={inlineClass}>\n\t\t\t{inline.map((action) => (\n\t\t\t\t<Fragment key={action.action.id ?? action.index}>\n\t\t\t\t\t{renderInlineAction(\n\t\t\t\t\t\taction.action,\n\t\t\t\t\t\t{ ...inlineContextBase, index: action.index, isInline: true },\n\t\t\t\t\t\trenderAction,\n\t\t\t\t\t)}\n\t\t\t\t</Fragment>\n\t\t\t))}\n\t\t\t{menu.length > 0 && (\n\t\t\t\t<ActionMenu\n\t\t\t\t\ticon={MoreHorizontal}\n\t\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\t\talign=\"end\"\n\t\t\t\t\tcloseOnSelect\n\t\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t\t>\n\t\t\t\t\t{renderMenuItems(menu, inlineContextBase, renderAction)}\n\t\t\t\t</ActionMenu>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../lib/utils.cjs"),t=require("./heading-0DYCOrgC.cjs"),n=require("./icon-badge-BAWl1oOe.cjs"),r=require("./smart-card-B6m7tmt0.cjs"),i=require("./display-AtPyyUZc.cjs"),a=require("./avatar-0spfQEHG.cjs"),o=require("./skeleton-D1c5OHXa.cjs"),s=require("./metadata-DamdYVZL.cjs"),c=require("./navigation-B-TE-HR-.cjs");let l=require("react/jsx-runtime");function u(e){return e.split(/\s+/).filter(Boolean).slice(0,2).map(e=>e[0]?.toUpperCase()).join(``)}function d({title:r,description:i,eyebrow:o,media:s,avatarUrl:c,avatarAlt:d,avatarFallback:f,icon:p,iconTone:m=`muted`,badges:h,metadata:g,actions:_,className:v,contentClassName:y,mediaClassName:b}){let x=p,S=typeof r==`string`?r:``,C=s??(c||f?(0,l.jsxs)(a.t,{size:`lg`,className:e.cn(`resource-header--avatar size-11`,b),children:[!!c&&(0,l.jsx)(a.o,{src:c,alt:d??S}),(0,l.jsx)(a.r,{children:f??u(S)})]}):x?(0,l.jsx)(n.t,{icon:x,size:`lg`,shape:`square`,tone:m,className:e.cn(`resource-header--icon`,b)}):null);return(0,l.jsxs)(`header`,{"data-component":`resource-header`,"data-slot":`resource-header`,className:e.cn(`resource-header--component flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,v),children:[(0,l.jsxs)(`div`,{"data-slot":`resource-header-main`,className:`resource-header--main flex min-w-0 flex-1 items-start gap-3`,children:[C,(0,l.jsxs)(`div`,{"data-slot":`resource-header-content`,className:e.cn(`resource-header--content min-w-0 flex-1`,y),children:[!!o&&(0,l.jsx)(t.n,{size:`xxs`,type:`secondary`,weight:`medium`,className:`resource-header--eyebrow mb-1 uppercase tracking-normal`,children:o}),(0,l.jsxs)(`div`,{"data-slot":`resource-header-title-row`,className:`resource-header--title-row flex min-w-0 flex-wrap items-center gap-2`,children:[(0,l.jsx)(t.t,{tag:`h2`,className:`resource-header--title truncate border-0 pb-0`,children:r}),!!h&&(0,l.jsx)(`div`,{"data-slot":`resource-header-badges`,className:`resource-header--badges flex shrink-0 flex-wrap items-center gap-1.5`,children:h})]}),!!i&&(0,l.jsx)(t.n,{type:`secondary`,className:`resource-header--description mt-1 max-w-3xl`,children:i}),!!g&&(0,l.jsx)(`div`,{"data-slot":`resource-header-metadata`,className:`resource-header--metadata mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:g})]})]}),!!_&&(0,l.jsx)(`div`,{"data-slot":`resource-header-actions`,className:`resource-header--actions flex shrink-0 flex-wrap items-center gap-2`,children:_})]})}function f({children:t,leading:n,trailing:r,sticky:i=!1,className:a}){return(0,l.jsxs)(`div`,{"data-component":`resource-action-bar`,"data-slot":`resource-action-bar`,className:e.cn(`resource-action-bar--component flex min-w-0 flex-col gap-3 rounded-lg border border-border/70 bg-card px-3 py-2.5 shadow-sm sm:flex-row sm:items-center sm:justify-between`,i&&`sticky top-[calc(var(--topbar-height)_+_0.5rem)] z-30`,a),children:[(0,l.jsx)(`div`,{"data-slot":`resource-action-leading`,className:`resource-action-bar--leading flex min-w-0 flex-1 flex-wrap items-center gap-2`,children:n??t}),!!r&&(0,l.jsx)(`div`,{"data-slot":`resource-action-trailing`,className:`resource-action-bar--trailing flex shrink-0 flex-wrap items-center gap-2`,children:r})]})}function p(t){return(0,l.jsx)(i.p,{...t,"data-component":`resource-empty-state`,"data-slot":`resource-empty-state`,className:e.cn(`resource-empty-state--component`,t.className)})}function m({children:t,title:n,description:r,actions:i,toolbar:a,empty:s,isEmpty:c=!1,isLoading:u=!1,error:f,slots:p,className:m,headerClassName:h,contentClassName:g,asideClassName:_,variant:v}){let y=p?.header??(n?(0,l.jsx)(d,{title:n,description:r,actions:i,className:h}):null),b=p?.toolbar??a,x=u?p?.loading??(0,l.jsxs)(`div`,{className:`resource-shell--loading grid gap-3`,children:[(0,l.jsx)(o.t,{className:`h-10 w-full`}),(0,l.jsx)(o.t,{className:`h-28 w-full`})]}):f?p?.error??f:c?s:t;return(0,l.jsxs)(`section`,{"data-component":`resource-${v}-shell`,"data-slot":`resource-${v}-shell`,className:e.cn(`resource-${v}-shell--component grid min-w-0 gap-4`,p?.aside&&`lg:grid-cols-[minmax(0,1fr)_var(--resource-aside-width,20rem)]`,m),children:[(0,l.jsxs)(`div`,{className:`min-w-0 space-y-4`,children:[!!y&&(0,l.jsx)(`div`,{"data-slot":`resource-${v}-header`,className:`resource-${v}-shell--header`,children:y}),!!b&&(0,l.jsx)(`div`,{"data-slot":`resource-${v}-toolbar`,className:`resource-${v}-shell--toolbar`,children:b}),(0,l.jsx)(`div`,{"data-slot":`resource-${v}-content`,className:e.cn(`resource-${v}-shell--content min-w-0`,g),children:x}),!!p?.footer&&(0,l.jsx)(`div`,{"data-slot":`resource-${v}-footer`,className:`resource-${v}-shell--footer`,children:p.footer})]}),!!p?.aside&&(0,l.jsx)(`aside`,{"data-slot":`resource-${v}-aside`,className:e.cn(`resource-${v}-shell--aside min-w-0`,_),children:p.aside})]})}function h(e){return(0,l.jsx)(m,{...e,variant:`index`})}function g(e){return(0,l.jsx)(m,{...e,variant:`show`})}function _({tabs:e,activeTab:t,onTabChange:n,tabsClassName:r,moreLabel:i,tabsAriaLabel:a,toolbar:o,slots:s,...u}){let d=(0,l.jsxs)(`div`,{"data-slot":`tabbed-resource-toolbar`,className:`tabbed-resource-shell--toolbar grid gap-3`,children:[(0,l.jsx)(c.t,{items:e,value:t,onChange:n,className:r,moreLabel:i,ariaLabel:a}),o]});return(0,l.jsx)(g,{...u,toolbar:d,slots:{...s,toolbar:s?.toolbar??d}})}function v({title:t,description:n,actions:i,headerAction:a,children:o,footer:s,padding:c=`sm`,surface:u=`card`,className:d,contentClassName:f,name:p}){return(0,l.jsx)(r.t,{"data-component":p,"data-slot":p,title:t,description:n,actions:i,headerAction:a,footerSlot:s,padding:c,surface:u,className:e.cn(`${p}--component`,d),contentClassName:f,children:o})}function y(e){return(0,l.jsx)(v,{...e,name:`resource-details-card`})}function b({metadata:n,metadataColumns:r=2,metadataDense:i=!1,body:a,help:o,children:c,contentClassName:u,...d}){return(0,l.jsxs)(v,{...d,name:`resource-details-section`,contentClassName:e.cn(`resource-details-section--content grid gap-4`,u),children:[!!n?.length&&(0,l.jsx)(s.t,{items:n,columns:r,dense:i}),a,c,!!o&&(0,l.jsx)(t.n,{size:`xs`,type:`secondary`,className:`resource-details-section--help`,children:o})]})}var x=d;function S(e){return(0,l.jsx)(v,{...e,name:`resource-related-card`})}function C(e){return(0,l.jsx)(v,{...e,name:`resource-activity-card`})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return g}});
|
|
2
|
+
//# sourceMappingURL=resource-Bb7dj-aj.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-Bb7dj-aj.cjs","names":[],"sources":["../../src/components/layout/resource/resource.tsx"],"sourcesContent":["/** Resource page primitives — generic resource index/show chrome. */\nimport {\n\tAvatar,\n\tAvatarFallback,\n\tAvatarImage,\n\tEmptyState,\n\tIconBadge,\n\tMetadataList,\n\tSkeleton,\n} from '@/components/base/display';\nimport { SmartCard } from '@/components/base/cards';\nimport { OverflowTabBar } from '@/components/base/navigation';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n\tResourceActionBarProps,\n\tResourceCardProps,\n\tResourceDetailsSectionProps,\n\tResourceEmptyStateProps,\n\tResourceHeaderProps,\n\tResourceIndexShellProps,\n\tResourceShowShellProps,\n\tTabbedResourceShellProps,\n} from './resource.types';\n\nfunction getInitials(value: string): string {\n\treturn value\n\t\t.split(/\\s+/)\n\t\t.filter(Boolean)\n\t\t.slice(0, 2)\n\t\t.map((part) => part[0]?.toUpperCase())\n\t\t.join('');\n}\n\nexport function ResourceHeader({\n\ttitle,\n\tdescription,\n\teyebrow,\n\tmedia,\n\tavatarUrl,\n\tavatarAlt,\n\tavatarFallback,\n\ticon,\n\ticonTone = 'muted',\n\tbadges,\n\tmetadata,\n\tactions,\n\tclassName,\n\tcontentClassName,\n\tmediaClassName,\n}: ResourceHeaderProps) {\n\tconst Icon = icon;\n\tconst titleText = typeof title === 'string' ? title : '';\n\tconst resolvedMedia = media ?? (\n\t\tavatarUrl || avatarFallback ? (\n\t\t\t<Avatar size=\"lg\" className={cn('resource-header--avatar size-11', mediaClassName)}>\n\t\t\t\t{!!avatarUrl && <AvatarImage src={avatarUrl} alt={avatarAlt ?? titleText} />}\n\t\t\t\t<AvatarFallback>\n\t\t\t\t\t{avatarFallback ?? getInitials(titleText)}\n\t\t\t\t</AvatarFallback>\n\t\t\t</Avatar>\n\t\t) : Icon ? (\n\t\t\t<IconBadge\n\t\t\t\ticon={Icon}\n\t\t\t\tsize=\"lg\"\n\t\t\t\tshape=\"square\"\n\t\t\t\ttone={iconTone}\n\t\t\t\tclassName={cn('resource-header--icon', mediaClassName)}\n\t\t\t/>\n\t\t) : null\n\t);\n\n\treturn (\n\t\t<header\n\t\t\tdata-component=\"resource-header\"\n\t\t\tdata-slot=\"resource-header\"\n\t\t\tclassName={cn(\n\t\t\t\t'resource-header--component flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div data-slot=\"resource-header-main\" className=\"resource-header--main flex min-w-0 flex-1 items-start gap-3\">\n\t\t\t\t{resolvedMedia}\n\t\t\t\t<div data-slot=\"resource-header-content\" className={cn('resource-header--content min-w-0 flex-1', contentClassName)}>\n\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\tclassName=\"resource-header--eyebrow mb-1 uppercase tracking-normal\"\n\t\t\t\t\t\t>\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 data-slot=\"resource-header-title-row\" className=\"resource-header--title-row flex min-w-0 flex-wrap items-center gap-2\">\n\t\t\t\t\t\t<Heading tag=\"h2\" className=\"resource-header--title truncate border-0 pb-0\">\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t{!!badges && (\n\t\t\t\t\t\t\t<div data-slot=\"resource-header-badges\" className=\"resource-header--badges flex shrink-0 flex-wrap items-center gap-1.5\">\n\t\t\t\t\t\t\t\t{badges}\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\t{!!description && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"resource-header--description mt-1 max-w-3xl\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!metadata && (\n\t\t\t\t\t\t<div data-slot=\"resource-header-metadata\" className=\"resource-header--metadata mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t{metadata}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{!!actions && (\n\t\t\t\t<div data-slot=\"resource-header-actions\" className=\"resource-header--actions flex shrink-0 flex-wrap items-center gap-2\">\n\t\t\t\t\t{actions}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</header>\n\t);\n}\n\nexport function ResourceActionBar({\n\tchildren,\n\tleading,\n\ttrailing,\n\tsticky = false,\n\tclassName,\n}: ResourceActionBarProps) {\n\treturn (\n\t\t<div\n\t\t\tdata-component=\"resource-action-bar\"\n\t\t\tdata-slot=\"resource-action-bar\"\n\t\t\tclassName={cn(\n\t\t\t\t'resource-action-bar--component flex min-w-0 flex-col gap-3 rounded-lg border border-border/70 bg-card px-3 py-2.5 shadow-sm sm:flex-row sm:items-center sm:justify-between',\n\t\t\t\tsticky && 'sticky top-[calc(var(--topbar-height)_+_0.5rem)] z-30',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div data-slot=\"resource-action-leading\" className=\"resource-action-bar--leading flex min-w-0 flex-1 flex-wrap items-center gap-2\">\n\t\t\t\t{leading ?? children}\n\t\t\t</div>\n\t\t\t{!!trailing && (\n\t\t\t\t<div data-slot=\"resource-action-trailing\" className=\"resource-action-bar--trailing flex shrink-0 flex-wrap items-center gap-2\">\n\t\t\t\t\t{trailing}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport function ResourceEmptyState(props: ResourceEmptyStateProps) {\n\treturn (\n\t\t<EmptyState\n\t\t\t{...props}\n\t\t\tdata-component=\"resource-empty-state\"\n\t\t\tdata-slot=\"resource-empty-state\"\n\t\t\tclassName={cn('resource-empty-state--component', props.className)}\n\t\t/>\n\t);\n}\n\nfunction ResourceShellFrame({\n\tchildren,\n\ttitle,\n\tdescription,\n\tactions,\n\ttoolbar,\n\tempty,\n\tisEmpty = false,\n\tisLoading = false,\n\terror,\n\tslots,\n\tclassName,\n\theaderClassName,\n\tcontentClassName,\n\tasideClassName,\n\tvariant,\n}: (ResourceIndexShellProps & { asideClassName?: string; variant: 'index' | 'show' })) {\n\tconst header = slots?.header ?? (\n\t\ttitle ? (\n\t\t\t<ResourceHeader\n\t\t\t\ttitle={title}\n\t\t\t\tdescription={description}\n\t\t\t\tactions={actions}\n\t\t\t\tclassName={headerClassName}\n\t\t\t/>\n\t\t) : null\n\t);\n\tconst toolbarNode = slots?.toolbar ?? toolbar;\n\tconst body = isLoading\n\t\t? (slots?.loading ?? (\n\t\t\t<div className=\"resource-shell--loading grid gap-3\">\n\t\t\t\t<Skeleton className=\"h-10 w-full\" />\n\t\t\t\t<Skeleton className=\"h-28 w-full\" />\n\t\t\t</div>\n\t\t))\n\t\t: error\n\t\t\t? (slots?.error ?? error)\n\t\t\t: isEmpty\n\t\t\t\t? empty\n\t\t\t\t: children;\n\n\treturn (\n\t\t<section\n\t\t\tdata-component={`resource-${variant}-shell`}\n\t\t\tdata-slot={`resource-${variant}-shell`}\n\t\t\tclassName={cn(\n\t\t\t\t`resource-${variant}-shell--component grid min-w-0 gap-4`,\n\t\t\t\tslots?.aside && 'lg:grid-cols-[minmax(0,1fr)_var(--resource-aside-width,20rem)]',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"min-w-0 space-y-4\">\n\t\t\t\t{!!header && <div data-slot={`resource-${variant}-header`} className={`resource-${variant}-shell--header`}>{header}</div>}\n\t\t\t\t{!!toolbarNode && <div data-slot={`resource-${variant}-toolbar`} className={`resource-${variant}-shell--toolbar`}>{toolbarNode}</div>}\n\t\t\t\t<div data-slot={`resource-${variant}-content`} className={cn(`resource-${variant}-shell--content min-w-0`, contentClassName)}>\n\t\t\t\t\t{body}\n\t\t\t\t</div>\n\t\t\t\t{!!slots?.footer && (\n\t\t\t\t\t<div data-slot={`resource-${variant}-footer`} className={`resource-${variant}-shell--footer`}>{slots.footer}</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{!!slots?.aside && (\n\t\t\t\t<aside data-slot={`resource-${variant}-aside`} className={cn(`resource-${variant}-shell--aside min-w-0`, asideClassName)}>\n\t\t\t\t\t{slots.aside}\n\t\t\t\t</aside>\n\t\t\t)}\n\t\t</section>\n\t);\n}\n\nexport function ResourceIndexShell(props: ResourceIndexShellProps) {\n\treturn <ResourceShellFrame {...props} variant=\"index\" />;\n}\n\nexport function ResourceShowShell(props: ResourceShowShellProps) {\n\treturn <ResourceShellFrame {...props} variant=\"show\" />;\n}\n\nexport function TabbedResourceShell({\n\ttabs,\n\tactiveTab,\n\tonTabChange,\n\ttabsClassName,\n\tmoreLabel,\n\ttabsAriaLabel,\n\ttoolbar,\n\tslots,\n\t...props\n}: TabbedResourceShellProps) {\n\tconst toolbarNode = (\n\t\t<div data-slot=\"tabbed-resource-toolbar\" className=\"tabbed-resource-shell--toolbar grid gap-3\">\n\t\t\t<OverflowTabBar\n\t\t\t\titems={tabs}\n\t\t\t\tvalue={activeTab}\n\t\t\t\tonChange={onTabChange}\n\t\t\t\tclassName={tabsClassName}\n\t\t\t\tmoreLabel={moreLabel}\n\t\t\t\tariaLabel={tabsAriaLabel}\n\t\t\t/>\n\t\t\t{toolbar}\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<ResourceShowShell\n\t\t\t{...props}\n\t\t\ttoolbar={toolbarNode}\n\t\t\tslots={{ ...slots, toolbar: slots?.toolbar ?? toolbarNode }}\n\t\t/>\n\t);\n}\n\nfunction ResourceCard({\n\ttitle,\n\tdescription,\n\tactions,\n\theaderAction,\n\tchildren,\n\tfooter,\n\tpadding = 'sm',\n\tsurface = 'card',\n\tclassName,\n\tcontentClassName,\n\tname,\n}: ResourceCardProps & { name: string }) {\n\treturn (\n\t\t<SmartCard\n\t\t\tdata-component={name}\n\t\t\tdata-slot={name}\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footer}\n\t\t\tpadding={padding}\n\t\t\tsurface={surface}\n\t\t\tclassName={cn(`${name}--component`, className)}\n\t\t\tcontentClassName={contentClassName}\n\t\t>\n\t\t\t{children}\n\t\t</SmartCard>\n\t);\n}\n\nexport function ResourceDetailsCard(props: ResourceCardProps) {\n\treturn <ResourceCard {...props} name=\"resource-details-card\" />;\n}\n\nexport function ResourceDetailsSection({\n\tmetadata,\n\tmetadataColumns = 2,\n\tmetadataDense = false,\n\tbody,\n\thelp,\n\tchildren,\n\tcontentClassName,\n\t...props\n}: ResourceDetailsSectionProps) {\n\treturn (\n\t\t<ResourceCard\n\t\t\t{...props}\n\t\t\tname=\"resource-details-section\"\n\t\t\tcontentClassName={cn('resource-details-section--content grid gap-4', contentClassName)}\n\t\t>\n\t\t\t{!!metadata?.length && (\n\t\t\t\t<MetadataList\n\t\t\t\t\titems={metadata}\n\t\t\t\t\tcolumns={metadataColumns}\n\t\t\t\t\tdense={metadataDense}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{body}\n\t\t\t{children}\n\t\t\t{!!help && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"resource-details-section--help\">\n\t\t\t\t\t{help}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</ResourceCard>\n\t);\n}\n\nexport const PersonHeader = ResourceHeader;\n\nexport function ResourceRelatedCard(props: ResourceCardProps) {\n\treturn <ResourceCard {...props} name=\"resource-related-card\" />;\n}\n\nexport function ResourceActivityCard(props: ResourceCardProps) {\n\treturn <ResourceCard {...props} name=\"resource-activity-card\" />;\n}\n"],"mappings":"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"}
|