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":"display-CL69dmsv.js","names":[],"sources":["../../src/components/base/forms/fields/decimal-input.tsx","../../src/components/base/forms/fields/currency-input.tsx","../../src/components/base/forms/fields/money-input.tsx","../../src/components/base/forms/form-field.tsx","../../src/components/base/display/notification-banner.tsx","../../src/components/base/display/placeholder-pattern.tsx","../../src/components/base/display/show-if.tsx","../../src/components/base/display/throttle-alert.tsx","../../src/components/base/display/visually-hidden.tsx","../../src/components/base/display/stacked-avatars.tsx","../../src/components/base/display/date-block.tsx","../../src/components/ui/collapsible.tsx","../../src/components/base/display/money-input.tsx","../../src/components/base/display/boolean-indicator.tsx","../../src/components/ui/progress.tsx","../../src/components/base/display/qr-code.tsx","../../src/components/ui/empty.tsx","../../src/components/base/display/empty-state/empty-state.strings.ts","../../src/components/base/display/empty-state/empty-state.tsx","../../src/components/base/display/empty-state/partials/illustrations/document-stack.tsx","../../src/components/base/display/empty-state/partials/illustrations/inbox-clean.tsx","../../src/components/base/display/empty-state/partials/illustrations/search-glass.tsx","../../src/components/base/display/empty-state/partials/illustrations/stacked-cards.tsx","../../src/components/base/display/empty-state/partials/illustrations/users-circle.tsx","../../src/components/base/display/fields/email-display.tsx","../../src/components/base/display/fields/phone-display.tsx","../../src/components/base/display/fields/url-display.tsx","../../src/components/base/display/inline-stat/inline-stat.tsx","../../src/components/base/display/numeric-value/numeric-value.tsx","../../src/components/base/display/user-cell/user-cell.tsx","../../src/components/base/display/section-header/section-header.tsx"],"sourcesContent":["/**\n * DecimalInput — text-based numeric input with decimal-place enforcement,\n * locale-friendly comma → dot normalisation, optional min/max clamping,\n * rounding mode (`round` / `floor` / `ceil` / `half-even`), and optional\n * stepper buttons when `step` is set.\n *\n * Wraps the base `Input` so all add-on / icon / clear / loading features\n * still work. Extra features layered on top:\n *\n * - `step` — when set, renders − / + stepper buttons that snap the value\n * to a multiple of `step` (anchored at `min` if provided, else 0).\n * - `roundingMode` — controls how stepper / blur normalisation rounds\n * half values; default `'round'` (round-half-up).\n * - `normalizeOnBlur` (default `true`) — pads the displayed value to the\n * full `decimalPlaces` count and clamps to `[min, max]` when the field\n * loses focus.\n *\n * The `value` prop is always a plain string (consumers parse it as needed)\n * so RHF / Inertia can treat it like any other input.\n */\nimport * as React from 'react';\nimport { useCallback } from 'react';\nimport { Minus, Plus } from 'lucide-react';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { useFormsConfig, type FormControlSize } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\nimport { resolveFormControlSize } from '../form-sizing';\nimport { Input, type InputProps } from './input';\n\nexport type DecimalRoundingMode = 'round' | 'floor' | 'ceil' | 'half-even';\n\nexport interface DecimalInputStrings {\n\tdecrement: string;\n\tincrement: string;\n}\n\nexport const defaultDecimalInputStrings: DecimalInputStrings = {\n\tdecrement: 'Decrement',\n\tincrement: 'Increment',\n};\n\nexport interface DecimalInputProps extends Omit<InputProps, 'type' | 'inputMode' | 'strings'> {\n\tdecimalPlaces?: number;\n\tmin?: number;\n\tmax?: number;\n\tallowNegative?: boolean;\n\tallowEmpty?: boolean;\n\t/** When set, renders − / + steppers and snaps the value to multiples of `step`. */\n\tstep?: number;\n\t/** How to round when normalising on blur or stepping. Default `'round'`. */\n\troundingMode?: DecimalRoundingMode;\n\t/** Pad to full decimalPlaces and clamp to [min, max] on blur. Default `true`. */\n\tnormalizeOnBlur?: boolean;\n\t/** String overrides for stepper aria-labels. */\n\tstrings?: StringsProp<DecimalInputStrings>;\n}\n\nconst formatDecimalValue = (\n\tvalue: string,\n\tdecimalPlaces: number,\n\tallowNegative: boolean,\n): string => {\n\tif (!value) return '';\n\n\tlet formatted = value;\n\tformatted = formatted.replace(/,/g, '.');\n\n\tif (allowNegative) {\n\t\tformatted = formatted.replace(/[^\\d.-]/g, '');\n\t} else {\n\t\tformatted = formatted.replace(/[^\\d.]/g, '');\n\t}\n\n\tif (allowNegative && formatted.includes('-')) {\n\t\tconst hasLeadingMinus = formatted.startsWith('-');\n\t\tformatted = formatted.replace(/-/g, '');\n\t\tif (hasLeadingMinus) formatted = '-' + formatted;\n\t}\n\n\tconst parts = formatted.split('.');\n\tif (parts.length > 2) {\n\t\tformatted = parts[0] + '.' + parts.slice(1).join('');\n\t}\n\n\tif (parts.length === 2 && parts[1].length > decimalPlaces) {\n\t\tformatted = parts[0] + '.' + parts[1].substring(0, decimalPlaces);\n\t}\n\n\treturn formatted;\n};\n\nconst isWithinBounds = (value: string, min?: number, max?: number): boolean => {\n\tif (!value || value === '-') return true;\n\tconst numValue = parseFloat(value);\n\tif (Number.isNaN(numValue)) return true;\n\tif (min !== undefined && numValue < min) return false;\n\tif (max !== undefined && numValue > max) return false;\n\treturn true;\n};\n\nfunction applyRounding(value: number, decimals: number, mode: DecimalRoundingMode): number {\n\tconst factor = Math.pow(10, decimals);\n\tconst shifted = value * factor;\n\tswitch (mode) {\n\t\tcase 'floor':\n\t\t\treturn Math.floor(shifted) / factor;\n\t\tcase 'ceil':\n\t\t\treturn Math.ceil(shifted) / factor;\n\t\tcase 'half-even': {\n\t\t\tconst floor = Math.floor(shifted);\n\t\t\tconst diff = shifted - floor;\n\t\t\tif (diff > 0.5) return (floor + 1) / factor;\n\t\t\tif (diff < 0.5) return floor / factor;\n\t\t\treturn (floor % 2 === 0 ? floor : floor + 1) / factor;\n\t\t}\n\t\tcase 'round':\n\t\tdefault:\n\t\t\treturn Math.round(shifted) / factor;\n\t}\n}\n\nfunction clamp(n: number, min?: number, max?: number): number {\n\tlet next = n;\n\tif (min !== undefined) next = Math.max(min, next);\n\tif (max !== undefined) next = Math.min(max, next);\n\treturn next;\n}\n\nfunction snapToStep(\n\tcurrent: number,\n\tdelta: number,\n\tstep: number,\n\tmin?: number,\n\tmode: DecimalRoundingMode = 'round',\n): number {\n\tconst anchor = min ?? 0;\n\tconst stepsFromAnchor = (current - anchor) / step;\n\tconst rounded =\n\t\tmode === 'floor'\n\t\t\t? Math.floor(stepsFromAnchor)\n\t\t\t: mode === 'ceil'\n\t\t\t\t? Math.ceil(stepsFromAnchor)\n\t\t\t\t: Math.round(stepsFromAnchor);\n\tconst stepped = anchor + (rounded + delta) * step;\n\treturn Number(stepped.toFixed(12));\n}\n\nfunction fireChange(\n\ttarget: HTMLInputElement,\n\tvalue: string,\n\tonChange?: InputProps['onChange'],\n) {\n\t// Write the value to the DOM first so UNCONTROLLED inputs actually reflect\n\t// stepper clicks and blur-normalisation. (Previously this only called\n\t// onChange, so steppers were a no-op on uncontrolled fields.) Use the native\n\t// value setter so React's input value-tracker stays in sync for controlled\n\t// consumers, which then reconcile through their onChange + re-render.\n\tconst nativeSetter = Object.getOwnPropertyDescriptor(\n\t\twindow.HTMLInputElement.prototype,\n\t\t'value',\n\t)?.set;\n\tif (nativeSetter) nativeSetter.call(target, value);\n\telse target.value = value;\n\n\tif (!onChange) return;\n\tconst event = {\n\t\ttarget,\n\t\tcurrentTarget: target,\n\t\ttype: 'change',\n\t\tbubbles: false,\n\t\tcancelable: false,\n\t} as unknown as React.ChangeEvent<HTMLInputElement>;\n\tonChange(event);\n}\n\nconst STEPPER_SIZE_CLASS: Record<FormControlSize, string> = {\n\tsm: 'w-8',\n\tbase: 'w-9',\n\tlg: 'w-10',\n};\n\nfunction DecimalInputImpl(\n\t{\n\t\tdecimalPlaces = 2,\n\t\tmin,\n\t\tmax,\n\t\tallowNegative = true,\n\t\tallowEmpty = true,\n\t\tstep,\n\t\troundingMode = 'round',\n\t\tnormalizeOnBlur = true,\n\t\tonChange,\n\t\tonBlur,\n\t\tplaceholder,\n\t\tclassName,\n\t\tvalue: controlledValue,\n\t\tdefaultValue,\n\t\tdisabled,\n\t\tsize: sizeProp,\n\t\tstrings: stringsProp,\n\t\t...props\n\t}: DecimalInputProps,\n\tforwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n\tconst { defaultControlSize } = useFormsConfig();\n\tconst size: FormControlSize = resolveFormControlSize(sizeProp, defaultControlSize);\n\tconst strings = useStrings(defaultDecimalInputStrings, stringsProp);\n\tconst validDecimalPlaces = Math.min(12, Math.max(0, decimalPlaces));\n\tconst inputRef = React.useRef<HTMLInputElement | null>(null);\n\n\tconst handleChange = useCallback(\n\t\t(e: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst newValue = e.target.value;\n\n\t\t\tif (!newValue && allowEmpty) {\n\t\t\t\tonChange?.(e);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst formatted = formatDecimalValue(newValue, validDecimalPlaces, allowNegative);\n\t\t\tif (!isWithinBounds(formatted, min, max)) return;\n\n\t\t\tif (formatted !== newValue) {\n\t\t\t\tconst modifiedEvent = {\n\t\t\t\t\t...e,\n\t\t\t\t\ttarget: { ...e.target, value: formatted },\n\t\t\t\t\tcurrentTarget: { ...e.currentTarget, value: formatted },\n\t\t\t\t} as React.ChangeEvent<HTMLInputElement>;\n\t\t\t\tonChange?.(modifiedEvent);\n\t\t\t} else {\n\t\t\t\tonChange?.(e);\n\t\t\t}\n\t\t},\n\t\t[onChange, validDecimalPlaces, allowNegative, allowEmpty, min, max],\n\t);\n\n\tconst handleBlur = useCallback(\n\t\t(e: React.FocusEvent<HTMLInputElement>) => {\n\t\t\tonBlur?.(e);\n\t\t\tif (!normalizeOnBlur) return;\n\t\t\tconst raw = e.target.value;\n\t\t\tif (!raw && allowEmpty) return;\n\t\t\tconst num = Number.parseFloat(raw.replace(',', '.'));\n\t\t\tif (!Number.isFinite(num)) return;\n\t\t\tconst clamped = clamp(num, min, max);\n\t\t\tconst rounded = applyRounding(clamped, validDecimalPlaces, roundingMode);\n\t\t\tconst next = rounded.toFixed(validDecimalPlaces);\n\t\t\tif (next !== raw && inputRef.current) {\n\t\t\t\tfireChange(inputRef.current, next, onChange);\n\t\t\t}\n\t\t},\n\t\t[onBlur, onChange, normalizeOnBlur, allowEmpty, min, max, validDecimalPlaces, roundingMode],\n\t);\n\n\tconst adjust = useCallback(\n\t\t(delta: number) => {\n\t\t\tif (disabled || step === undefined) return;\n\t\t\tconst target = inputRef.current;\n\t\t\tif (!target) return;\n\t\t\tconst raw = target.value;\n\t\t\tconst current = Number.parseFloat(raw.replace(',', '.'));\n\t\t\tconst base = Number.isFinite(current) ? current : (min ?? 0);\n\t\t\tconst snapped = clamp(snapToStep(base, delta, step, min, roundingMode), min, max);\n\t\t\tconst next = applyRounding(snapped, validDecimalPlaces, roundingMode).toFixed(validDecimalPlaces);\n\t\t\tfireChange(target, next, onChange);\n\t\t},\n\t\t[disabled, step, min, max, roundingMode, validDecimalPlaces, onChange],\n\t);\n\n\tconst showSteppers = typeof step === 'number' && step > 0;\n\tconst placeholderResolved =\n\t\tplaceholder ?? (validDecimalPlaces > 0 ? `0.${'0'.repeat(validDecimalPlaces)}` : '0');\n\n\tif (showSteppers) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn('decimal-input--component', \n\t\t\t\t\t// Stepper segmented group — input + adjacent − / + buttons\n\t\t\t\t\t// share a single border radius so the group reads as one\n\t\t\t\t\t// control instead of three loose chips.\n\t\t\t\t\t'flex items-stretch overflow-hidden rounded-radius border border-input bg-transparent',\n\t\t\t\t\t'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]',\n\t\t\t\t\tprops['aria-invalid'] && 'border-destructive ring-destructive/20',\n\t\t\t\t\tdisabled && 'opacity-50 cursor-not-allowed',\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\ttabIndex={-1}\n\t\t\t\t\taria-label={strings.decrement}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonClick={() => adjust(-1)}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'inline-flex shrink-0 items-center justify-center border-r border-input text-muted-foreground transition-colors',\n\t\t\t\t\t\tSTEPPER_SIZE_CLASS[size],\n\t\t\t\t\t\t'hover:bg-muted hover:text-foreground',\n\t\t\t\t\t\t'disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Minus className=\"size-3.5\" />\n\t\t\t\t</button>\n\t\t\t\t<Input\n\t\t\t\t\tsize={size}\n\t\t\t\t\tref={(node) => { inputRef.current = node; if (typeof forwardedRef === \"function\") forwardedRef(node); else if (forwardedRef) forwardedRef.current = node; }}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tinputMode={validDecimalPlaces > 0 ? 'decimal' : 'numeric'}\n\t\t\t\t\tplaceholder={placeholderResolved}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\tvalue={controlledValue}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'flex-1 tabular-nums text-center border-0 shadow-none rounded-none focus-visible:ring-0 focus-visible:border-0',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\taria-label={strings.increment}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonClick={() => adjust(1)}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'inline-flex shrink-0 items-center justify-center border-l border-input text-muted-foreground transition-colors',\n\t\t\t\t\t\tSTEPPER_SIZE_CLASS[size],\n\t\t\t\t\t\t'hover:bg-muted hover:text-foreground',\n\t\t\t\t\t\t'disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Plus className=\"size-3.5\" />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Input\n\t\t\tsize={size}\n\t\t\tref={(node) => { inputRef.current = node; if (typeof forwardedRef === \"function\") forwardedRef(node); else if (forwardedRef) forwardedRef.current = node; }}\n\t\t\ttype=\"text\"\n\t\t\tinputMode={validDecimalPlaces > 0 ? 'decimal' : 'numeric'}\n\t\t\tplaceholder={placeholderResolved}\n\t\t\tonChange={handleChange}\n\t\t\tonBlur={handleBlur}\n\t\t\tvalue={controlledValue}\n\t\t\tdefaultValue={defaultValue}\n\t\t\tdisabled={disabled}\n\t\t\tclassName={cn('tabular-nums text-end', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst DecimalInput = React.forwardRef<HTMLInputElement, DecimalInputProps>(DecimalInputImpl);\nDecimalInput.displayName = 'DecimalInput';\n\nexport { DecimalInput };\n","import { useState, useCallback, useEffect, useMemo, memo, forwardRef, type ForwardedRef } from 'react';\nimport * as baseui from '@/components/ui/select';\nimport { Label } from '@/components/typography';\nimport { useFormsConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\nimport { formControlSizeClasses, resolveFormControlSize } from '../form-sizing';\nimport { DecimalInput, type DecimalInputProps } from './decimal-input';\n\nexport interface CurrencyOption {\n value: string;\n label: string;\n}\n\nexport interface CurrencyInputProps extends Omit<DecimalInputProps, 'label' | 'hint' | 'helperText' | 'error'> {\n /** Current currency value */\n currency?: string;\n\n /** Default currency if uncontrolled */\n defaultCurrency?: string;\n\n /** List of available currencies (simple strings or objects with value/label) */\n currencies?: (string | CurrencyOption)[];\n\n /** Callback when currency changes */\n onCurrencyChange?: (currency: string) => void;\n\n /** Position of currency dropdown */\n currencyPosition?: 'start' | 'end';\n\n /** Disable currency selection */\n disableCurrencySelector?: boolean;\n\n /** Placeholder for currency dropdown */\n currencyPlaceholder?: string;\n\n /** Width of the currency dropdown */\n currencyWidth?: string;\n\n /** Label for currency field (sub-label) */\n currencyLabel?: string;\n\n /** Error state for styling (passed from FormField) */\n invalid?: boolean;\n\n /** Called when the input is misconfigured (mismatched currency/defaultCurrency\n * while the selector is disabled, missing currency, etc.). The library\n * also DEV-logs the same message to the console. */\n onConfigError?: (\n message: string,\n details: { currency?: string; defaultCurrency?: string; disableCurrencySelector?: boolean },\n ) => void;\n}\n\n// Common currency symbols\nconst CURRENCY_SYMBOLS: Record<string, string> = {\n USD: '$',\n EUR: '€',\n GBP: '£',\n BGN: 'лв',\n JPY: '¥',\n CNY: '¥',\n CHF: 'CHF',\n CAD: 'C$',\n AUD: 'A$',\n};\n\nconst normalizeCurrencies = (currencies?: (string | CurrencyOption)[]): CurrencyOption[] => {\n if (!currencies || currencies.length === 0) return [];\n\n return currencies.map((currency) => {\n if (typeof currency === 'string') {\n const symbol = CURRENCY_SYMBOLS[currency] || currency;\n return {\n value: currency,\n label: `${symbol} ${currency}`,\n };\n }\n return currency;\n });\n};\n\nfunction CurrencyInputImpl(\n {\n currency: controlledCurrency,\n defaultCurrency,\n currencies,\n onCurrencyChange,\n currencyPosition = 'start',\n disableCurrencySelector = false,\n currencyPlaceholder,\n currencyWidth = 'w-28',\n currencyLabel,\n invalid,\n disabled,\n onConfigError,\n size: sizeProp,\n ...decimalInputProps\n }: CurrencyInputProps,\n forwardedRef: ForwardedRef<HTMLInputElement>,\n) {\n const { defaultControlSize } = useFormsConfig();\n const size = resolveFormControlSize(sizeProp, defaultControlSize);\n\n // Memoize normalized currencies\n const normalizedCurrencies = useMemo(() => normalizeCurrencies(currencies), [currencies]);\n\n // Internal state for uncontrolled currency\n const [internalCurrency, setInternalCurrency] = useState(\n defaultCurrency ?? normalizedCurrencies[0]?.value ?? ''\n );\n\n // Determine if currency is controlled\n const isCurrencyControlled = controlledCurrency !== undefined;\n const selectedCurrency = isCurrencyControlled ? controlledCurrency : internalCurrency;\n\n useEffect(() => {\n const details = { currency: controlledCurrency, defaultCurrency, disableCurrencySelector };\n if (\n disableCurrencySelector &&\n typeof controlledCurrency === 'string' &&\n typeof defaultCurrency === 'string' &&\n controlledCurrency.trim() !== '' &&\n defaultCurrency.trim() !== '' &&\n controlledCurrency !== defaultCurrency\n ) {\n const message = '[CurrencyInput] currency/defaultCurrency mismatch while selector is disabled.';\n if (import.meta.env?.DEV) {\n console.warn(message, { currency: controlledCurrency, defaultCurrency });\n }\n onConfigError?.(message, details);\n }\n\n if (\n disableCurrencySelector &&\n (typeof selectedCurrency !== 'string' || selectedCurrency.trim().length === 0)\n ) {\n const message = '[CurrencyInput] disableCurrencySelector is enabled but no currency is provided.';\n if (import.meta.env?.DEV) {\n console.warn(message);\n }\n onConfigError?.(message, details);\n }\n }, [controlledCurrency, defaultCurrency, disableCurrencySelector, onConfigError, selectedCurrency]);\n\n // Handle currency change\n const handleCurrencyChange = useCallback(\n (newCurrency: string | null) => {\n if (newCurrency === null) return;\n if (!isCurrencyControlled) {\n setInternalCurrency(newCurrency);\n }\n onCurrencyChange?.(newCurrency);\n },\n [isCurrencyControlled, onCurrencyChange]\n );\n\n // Memoize trigger class names. Size flows through `formControlSizeClasses[size]`\n // so the trigger height matches the inner DecimalInput when a consumer sets\n // `<UIProvider forms={{ defaultControlSize }}>`.\n const triggerClassName = useMemo(\n () =>\n cn(\n 'border-input bg-transparent !shadow-none',\n formControlSizeClasses[size],\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n currencyWidth,\n disabled && 'opacity-50 cursor-not-allowed'\n ),\n [size, currencyWidth, disabled]\n );\n\n // Currency selector component\n const currencySelector = (\n <div className=\"space-y-2\">\n {!!currencyLabel && <Label className=\"leading-6\">{currencyLabel}</Label>}\n <baseui.Select\n value={selectedCurrency}\n onValueChange={(value) => handleCurrencyChange(value)}\n disabled={disabled || disableCurrencySelector}\n >\n <baseui.SelectTrigger aria-invalid={invalid || undefined} className={triggerClassName}>\n <baseui.SelectValue placeholder={currencyPlaceholder ?? ''} />\n </baseui.SelectTrigger>\n <baseui.SelectContent>\n <baseui.SelectGroup>\n {normalizedCurrencies.map((curr) => (\n <baseui.SelectItem key={curr.value} value={curr.value}>\n {curr.label}\n </baseui.SelectItem>\n ))}\n </baseui.SelectGroup>\n </baseui.SelectContent>\n </baseui.Select>\n </div>\n );\n\n return (\n <div className={cn('currency-input--component', 'flex items-start gap-2')}>\n {currencyPosition === 'start' && currencySelector}\n\n <div className=\"flex-1\">\n <DecimalInput\n ref={forwardedRef}\n size={size}\n decimalPlaces={2}\n allowNegative={false}\n disabled={disabled}\n invalid={invalid}\n {...decimalInputProps}\n />\n </div>\n\n {currencyPosition === 'end' && currencySelector}\n </div>\n );\n}\n\n// forwardRef + memo: forward to the underlying decimal input so consumers\n// can focus/measure programmatically.\nexport const CurrencyInput = memo(forwardRef<HTMLInputElement, CurrencyInputProps>(CurrencyInputImpl));\nCurrencyInput.displayName = 'CurrencyInput';\n","/**\n * MoneyInput (forms/fields) — `CurrencyInput` preset with a small default\n * currency list for back-compat and a callback shape that matches the\n * library's `CurrencyCode` typing.\n *\n * For the richer `MoneyInputData`-shaped helper with migration warnings and\n * form-field chrome, use `@/components/base/display/money-input` instead.\n */\nimport { forwardRef, useCallback } from 'react';\n\nimport { CurrencyInput, type CurrencyInputProps } from './currency-input';\nimport type { CurrencyCode } from '@/lib/ui-provider';\n\nexport interface MoneyInputProps extends Omit<CurrencyInputProps, 'currency' | 'defaultCurrency' | 'currencies' | 'onCurrencyChange'> {\n /** Current currency value (ISO 4217 code, e.g. 'USD'). */\n currency?: CurrencyCode;\n /** Default currency if uncontrolled. */\n defaultCurrency?: CurrencyCode;\n /** Available currencies for the inline picker. Defaults to `['USD', 'EUR']`\n * — pass your own list or wire `useMoneyConfig` at the consumer site for\n * real production use. */\n currencies?: CurrencyCode[];\n /** Callback when the user changes the currency in the inline picker. */\n onCurrencyChange?: (currency: CurrencyCode) => void;\n}\n\nconst DEFAULT_CURRENCIES: CurrencyCode[] = ['USD', 'EUR'];\n\nexport const MoneyInput = forwardRef<HTMLInputElement, MoneyInputProps>(function MoneyInput(\n { currencies = DEFAULT_CURRENCIES, onCurrencyChange, currency, defaultCurrency, ...props },\n ref,\n) {\n const handleCurrencyChange = useCallback(\n (nextCurrency: string) => {\n onCurrencyChange?.(nextCurrency);\n },\n [onCurrencyChange]\n );\n\n return (\n <CurrencyInput className=\"money-input--component\"\n ref={ref}\n currencies={currencies}\n currency={currency}\n defaultCurrency={defaultCurrency}\n onCurrencyChange={handleCurrencyChange}\n {...props}\n />\n );\n});\n\nMoneyInput.displayName = 'MoneyInput';\n","/**\n * Unified Form Field Components\n * =============================\n *\n * Two components sharing the same visual structure for field chrome:\n *\n * 1. `FormField` - Pure presentation wrapper (label, hint, error, required indicator)\n * 2. `ControlledFormField` - FormField + react-hook-form Controller integration\n *\n * ## FormField\n * Use for custom components or non-controlled inputs.\n *\n * ```tsx\n * <FormField label={t('label')} error={error} required hint={t('hint')}>\n * <CustomAutocomplete value={value} onSelect={onSelect} />\n * </FormField>\n * ```\n *\n * ## ControlledFormField\n * Use with react-hook-form. Auto-merges backend (Inertia) + validation errors.\n *\n * ```tsx\n * <ControlledFormField\n * name=\"email\"\n * control={control}\n * error={getError}\n * label={t('fields.email.label')}\n * required\n * rules={{ required: true, pattern: /^\\\\S+@\\\\S+$/i }}\n * >\n * {(field, error, invalid) => (\n * <Input\n * placeholder={t('fields.email.placeholder')}\n * value={field.value ?? ''}\n * onChange={field.onChange}\n * onBlur={field.onBlur}\n * invalid={invalid}\n * />\n * )}\n * </ControlledFormField>\n * ```\n *\n * ## Render Function Parameters\n * - `field` - Controller props: value, onChange, onBlur, name, ref\n * - `error` - Merged error string (backend || validation) or undefined\n * - `invalid` - Boolean for input styling (border color, etc.)\n * - `fieldState` - Escape hatch: touched, dirty, isTouched, isDirty, etc.\n *\n * ## Error Priority\n * Backend errors (via `error` getter) take priority over validation errors.\n * This ensures server-side validation is authoritative.\n *\n * ## Chrome Props (shared by both components)\n * - `label` - Field label text\n * - `required` - Shows red asterisk after label\n * - `hint` - Secondary text shown below the field when there is no error\n * - `error` - Error message (red text below input)\n * - `helperText` - Helper text (shown when no error)\n * - `className` - Additional wrapper classes\n */\n\nimport * as React from 'react';\nimport { type ReactNode } from 'react';\nimport {\n\tController,\n\ttype Control,\n\ttype ControllerFieldState,\n\ttype ControllerRenderProps,\n\ttype FieldPath,\n\ttype FieldValues,\n\ttype RegisterOptions,\n} from 'react-hook-form';\n\nimport { Label, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\ninterface FieldChromeProps {\n\tlabel?: string;\n\tisRequired?: boolean;\n\trequired?: boolean;\n\thint?: string;\n\terror?: string;\n\thelperText?: string;\n\tclassName?: string;\n}\n\ninterface FormFieldProps extends FieldChromeProps {\n\tchildren: ReactNode;\n\thtmlFor?: string;\n}\n\nexport function FormField({\n\tchildren,\n\tlabel,\n\tisRequired,\n\trequired,\n\thint,\n\terror,\n\thelperText,\n\thtmlFor,\n\tclassName,\n}: FormFieldProps) {\n\tconst hasError = Boolean(error);\n\tconst supportingText = error || helperText || (!hasError ? hint : undefined);\n\tconst showBottomText = Boolean(supportingText);\n\tconst resolvedRequired = isRequired ?? required;\n\tconst generatedId = React.useId();\n\tconst childId =\n\t\tReact.isValidElement(children)\n\t\t\t? (children.props as { id?: string }).id\n\t\t\t: undefined;\n\tconst resolvedHtmlFor = htmlFor ?? childId ?? (label && React.isValidElement(children) ? `form-field-${generatedId}` : undefined);\n\tconst resolvedChildren =\n\t\tresolvedHtmlFor && React.isValidElement(children) && !childId\n\t\t\t? React.cloneElement(children as React.ReactElement<{ id?: string }>, { id: resolvedHtmlFor })\n\t\t\t: children;\n\n\treturn (\n\t\t<div className={cn('form-field--component', 'space-y-1', className)}>\n\t\t\t{!!label && (\n\t\t\t\t<Label htmlFor={resolvedHtmlFor} className=\"flex items-center leading-6\">\n\t\t\t\t\t{label}\n\t\t\t\t\t{!!resolvedRequired && (\n\t\t\t\t\t\t<span className=\"ml-1 text-destructive\">*</span>\n\t\t\t\t\t)}\n\t\t\t\t</Label>\n\t\t\t)}\n\n\t\t\t{resolvedChildren}\n\n\t\t\t{!!showBottomText && (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"p\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\ttype={hasError ? 'error' : 'secondary'}\n\t\t\t\t\t{...(hasError ? { role: 'alert', 'aria-live': 'polite' } : {})}\n\t\t\t\t>\n\t\t\t\t\t{supportingText}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\ntype ErrorGetter<TName extends string> = (field: TName) => string | undefined;\n\ninterface ControlledFormFieldProps<\n\tTFieldValues extends FieldValues,\n\tTName extends FieldPath<TFieldValues>,\n> extends Omit<FieldChromeProps, 'error'> {\n\tname: TName;\n\tcontrol: Control<TFieldValues>;\n\trules?: RegisterOptions<TFieldValues, TName>;\n\terror?: ErrorGetter<TName>;\n\tchildren: (\n\t\tfield: ControllerRenderProps<TFieldValues, TName>,\n\t\terror: string | undefined,\n\t\tinvalid: boolean,\n\t\tfieldState: ControllerFieldState,\n\t) => ReactNode;\n}\n\nexport function ControlledFormField<\n\tTFieldValues extends FieldValues,\n\tTName extends FieldPath<TFieldValues>,\n>({\n\tname,\n\tcontrol,\n\trules,\n\terror: errorGetter,\n\tchildren,\n\t...chromeProps\n}: ControlledFormFieldProps<TFieldValues, TName>) {\n\treturn (\n\t\t<Controller\n\t\t\tname={name}\n\t\t\tcontrol={control}\n\t\t\trules={rules}\n\t\t\trender={({ field, fieldState }) => {\n\t\t\t\tconst validationError = fieldState.error?.message\n\t\t\t\t\t|| (fieldState.error ? (fieldState.error.type === 'required' ? (chromeProps.label ? `${chromeProps.label} is required` : 'This field is required') : 'Invalid value') : undefined);\n\t\t\t\tconst resolvedError = errorGetter?.(name) || validationError || undefined;\n\t\t\t\tconst invalid = Boolean(resolvedError);\n\n\t\t\t\treturn (\n\t\t\t\t\t<FormField {...chromeProps} error={resolvedError} htmlFor={name}>\n\t\t\t\t\t\t{children(field, resolvedError, invalid, fieldState)}\n\t\t\t\t\t</FormField>\n\t\t\t\t);\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nFormField.displayName = 'FormField';\nControlledFormField.displayName = 'ControlledFormField';\n","/**\n * NotificationBanner — full-width inline notification with type-specific\n * styling (info / success / error / warning). The icon sits in a soft circle\n * for clear hierarchy, the title (when present) reads at full strength, and\n * the message uses the muted secondary tone so the type colour highlights\n * without overwhelming. Optional dismiss button on the trailing edge.\n *\n * Use inside page bodies for non-blocking notices; reach for `Alert` when\n * the affordance is structural (e.g. inside a form), and Toast for transient\n * feedback.\n */\nimport { AlertTriangle, BadgeCheck, CircleAlert, Info, X } from 'lucide-react';\nimport React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { sanitizeHtml } from '@/lib/sanitize-html';\nimport { cn } from '@/lib/utils';\n\nexport type NotificationType = 'info' | 'success' | 'error' | 'warning';\n\nexport interface NotificationBannerProps {\n\ttype?: NotificationType;\n\tdismissible?: boolean;\n\ttitle?: string;\n\tmessage?: string;\n\tonDismiss?: () => void;\n\tchildren?: React.ReactNode;\n\tasHTML?: boolean;\n\tdismissAriaLabel?: string;\n\tclassName?: string;\n}\n\ninterface BannerTone {\n\twrapper: string;\n\ticonRing: string;\n\ticonColor: string;\n\ttitle: string;\n\tclose: string;\n}\n\nconst TONES: Record<NotificationType, BannerTone> = {\n\tinfo: {\n\t\twrapper: 'border-info/30 bg-info/5',\n\t\ticonRing: 'bg-info/15',\n\t\ticonColor: 'text-info',\n\t\ttitle: 'text-info',\n\t\tclose: 'text-info/70 hover:text-info hover:bg-info/10',\n\t},\n\tsuccess: {\n\t\twrapper: 'border-success/30 bg-success/5',\n\t\ticonRing: 'bg-success/15',\n\t\ticonColor: 'text-success',\n\t\ttitle: 'text-success',\n\t\tclose: 'text-success/70 hover:text-success hover:bg-success/10',\n\t},\n\terror: {\n\t\twrapper: 'border-destructive/30 bg-destructive/5',\n\t\ticonRing: 'bg-destructive/15',\n\t\ticonColor: 'text-destructive',\n\t\ttitle: 'text-destructive',\n\t\tclose: 'text-destructive/70 hover:text-destructive hover:bg-destructive/10',\n\t},\n\twarning: {\n\t\twrapper: 'border-warning/40 bg-warning/10',\n\t\ticonRing: 'bg-warning/20',\n\t\ticonColor: 'text-warning-foreground',\n\t\ttitle: 'text-warning-foreground',\n\t\tclose: 'text-warning-foreground/70 hover:text-warning-foreground hover:bg-warning/20',\n\t},\n};\n\nconst ICONS: Record<NotificationType, React.ElementType> = {\n\tinfo: Info,\n\tsuccess: BadgeCheck,\n\terror: CircleAlert,\n\twarning: AlertTriangle,\n};\n\nfunction SanitizedSpan({ html }: { html: string }) {\n\treturn React.createElement('span', { dangerouslySetInnerHTML: { __html: html } });\n}\n\nexport function NotificationBanner({\n\ttype = 'info',\n\tdismissible = false,\n\ttitle,\n\tmessage,\n\tonDismiss,\n\tchildren,\n\tasHTML = false,\n\tdismissAriaLabel = 'Dismiss notification',\n\tclassName,\n}: NotificationBannerProps) {\n\tconst tone = TONES[type];\n\tconst IconComponent = ICONS[type];\n\tconst sanitizedHtml = React.useMemo(\n\t\t() => sanitizeHtml(message ?? (typeof children === 'string' ? children : '')),\n\t\t[children, message],\n\t);\n\tconst hasTitle = !!title;\n\n\treturn (\n\t\t<div\n\t\t\trole=\"status\"\n\t\t\tclassName={cn('notification-banner--component', \n\t\t\t\t'flex w-full items-start gap-3 rounded-lg border px-4 py-3',\n\t\t\t\t'animate-in fade-in-0 slide-in-from-bottom-1 duration-200',\n\t\t\t\ttone.wrapper,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'mt-0.5 inline-flex size-8 shrink-0 items-center justify-center rounded-full',\n\t\t\t\t\ttone.iconRing,\n\t\t\t\t\ttone.iconColor,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<IconComponent className=\"size-4\" />\n\t\t\t</span>\n\n\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t{hasTitle && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\tclassName=\"leading-snug text-foreground\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"div\"\n\t\t\t\t\ttype={hasTitle ? 'secondary' : 'main'}\n\t\t\t\t\tclassName={cn('break-words leading-snug', hasTitle && 'mt-0.5')}\n\t\t\t\t>\n\t\t\t\t\t{!!asHTML && <SanitizedSpan html={sanitizedHtml} />}\n\t\t\t\t\t{!asHTML && (message ?? children)}\n\t\t\t\t</Text>\n\t\t\t</div>\n\n\t\t\t{!!dismissible && (\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\taria-label={dismissAriaLabel}\n\t\t\t\t\tonClick={onDismiss}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'-mr-1 inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-colors',\n\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\ttone.close,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<X className=\"size-4\" />\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nNotificationBanner.displayName = 'NotificationBanner';\n\nexport default NotificationBanner;\n","/**\n * PlaceholderPattern — diagonal-stripe SVG fill suitable as a skeleton or\n * empty-region indicator. Uses a unique pattern id per instance so multiple\n * copies on the same page don't collide.\n */\nimport { useId } from 'react';\n\nimport { cn } from '@/lib/utils';\nexport interface PlaceholderPatternProps {\n\tclassName?: string;\n}\n\nexport function PlaceholderPattern({ className }: PlaceholderPatternProps) {\n\tconst patternId = useId();\n\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn('placeholder-pattern--component', className)}\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<defs>\n\t\t\t\t<pattern\n\t\t\t\t\tid={patternId}\n\t\t\t\t\tx=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"10\"\n\t\t\t\t\theight=\"10\"\n\t\t\t\t\tpatternUnits=\"userSpaceOnUse\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M-3 13 15-5M-5 5l18-18M-1 21 17 3\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth=\"0.75\"\n\t\t\t\t\t\tstrokeLinecap=\"square\"\n\t\t\t\t\t\tvectorEffect=\"non-scaling-stroke\"\n\t\t\t\t\t/>\n\t\t\t\t</pattern>\n\t\t\t</defs>\n\t\t\t<rect\n\t\t\t\tstroke=\"none\"\n\t\t\t\tfill={`url(#${patternId})`}\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"100%\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n\nPlaceholderPattern.displayName = 'PlaceholderPattern';\n\n","/**\n * ShowIf — conditional render gate. Returns `children` when `when` is truthy,\n * otherwise the optional `fallback`. Useful for inline presentation logic\n * where a ternary would be noisier than a self-explanatory tag.\n */\nimport type { ReactNode } from 'react';\n\nexport type ShowIfProps = { when: boolean; children: ReactNode; fallback?: ReactNode };\n\nexport function ShowIf({ when, children, fallback = null }: ShowIfProps) {\n\tif (when) return children;\n\tif (fallback) return fallback;\n\treturn null;\n}\n\nShowIf.displayName = 'ShowIf';\n\nexport default ShowIf;\n\n","/**\n * ThrottleAlert — destructive alert for rate-limit / throttling errors.\n *\n * Single header icon, primary message, and a tight inline meta row showing\n * `attempts` and `remaining`. Use as a banner above a form when a request\n * has been blocked and the user must wait. Strings overridable for i18n.\n */\nimport { ShieldAlert, Clock, RotateCcw } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nexport interface ThrottleAlertStrings {\n\tmaxAttempts: string;\n\ttryAgainIn: string;\n}\n\nexport const defaultThrottleAlertStrings: ThrottleAlertStrings = {\n\tmaxAttempts: 'Max attempts',\n\ttryAgainIn: 'Try again in',\n};\n\nexport interface ThrottleAlertProps {\n\tmessage: string;\n\tattempts: number;\n\tremaining: string;\n\tclassName?: string;\n\tstrings?: Partial<ThrottleAlertStrings>;\n}\n\nexport function ThrottleAlert({\n\tmessage,\n\tattempts,\n\tremaining,\n\tclassName,\n\tstrings: stringsProp,\n}: ThrottleAlertProps) {\n\tconst strings = useStrings(defaultThrottleAlertStrings, stringsProp);\n\n\treturn (\n\t\t<div\n\t\t\trole=\"alert\"\n\t\t\tclassName={cn('throttle-alert--component', \n\t\t\t\t'flex items-start gap-3 rounded-lg border border-destructive/30 bg-destructive/5 px-4 py-3',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName=\"mt-0.5 inline-flex size-8 shrink-0 items-center justify-center rounded-full bg-destructive/15 text-destructive\"\n\t\t\t>\n\t\t\t\t<ShieldAlert className=\"size-4\" />\n\t\t\t</span>\n\t\t\t<div className=\"min-w-0 flex-1 space-y-1.5\">\n\t\t\t\t<Text weight=\"medium\" className=\"text-destructive leading-snug\">\n\t\t\t\t\t{message}\n\t\t\t\t</Text>\n\t\t\t\t<div className=\"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-destructive/80\">\n\t\t\t\t\t<span className=\"inline-flex items-center gap-1.5\">\n\t\t\t\t\t\t<RotateCcw className=\"size-3\" aria-hidden=\"true\" />\n\t\t\t\t\t\t<span>{strings.maxAttempts}</span>\n\t\t\t\t\t\t<span className=\"font-semibold tabular-nums text-destructive\">{attempts}</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"inline-flex items-center gap-1.5\">\n\t\t\t\t\t\t<Clock className=\"size-3\" aria-hidden=\"true\" />\n\t\t\t\t\t\t<span>{strings.tryAgainIn}</span>\n\t\t\t\t\t\t<span className=\"font-semibold tabular-nums text-destructive\">{remaining}</span>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nThrottleAlert.displayName = 'ThrottleAlert';\n","/**\n * VisuallyHidden — hides content from sighted users while keeping it readable\n * by assistive tech (screen readers, voice). Use to label icon-only buttons,\n * give context to status changes, or expose extra structure for AT users.\n */\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface VisuallyHiddenProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport function VisuallyHidden({ children, className }: VisuallyHiddenProps) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn('visually-hidden--component', \n\t\t\t\t'absolute w-px h-px p-0 -m-px overflow-hidden whitespace-nowrap border-0',\n\t\t\t\t'[clip:rect(0,0,0,0)]',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{children}\n\t\t</span>\n\t);\n}\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n","/**\n * StackedAvatars — overlapping avatar group with optional `+N` overflow chip,\n * configurable size, and an optional semantic `tone` for fallbacks (initials)\n * when the consumer hasn't passed `imageUrl`.\n *\n * Wraps the shadcn AvatarGroup primitive with library-default sizes and a\n * deterministic tone picker so fallbacks stay stable without raw hue utilities.\n */\nimport * as React from 'react';\nimport {\n\tAvatar,\n\tAvatarFallback,\n\tAvatarGroup,\n\tAvatarGroupCount,\n\tAvatarImage,\n} from '@/components/ui/avatar';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport type StackedAvatarsSize = 'sm' | 'default' | 'lg';\nexport type StackedAvatarTone =\n\t| 'muted'\n\t| 'primary'\n\t| 'secondary'\n\t| 'info'\n\t| 'success'\n\t| 'warning'\n\t| 'destructive';\n\nexport interface StackedAvatarUser {\n\tid?: string;\n\tname: string;\n\timageUrl?: string;\n\t/** Optional semantic tone override for this user's fallback. Numeric values map to the token set. */\n\ttone?: StackedAvatarTone | number;\n}\n\nexport interface StackedAvatarsProps {\n\tusers: StackedAvatarUser[];\n\tmax?: number;\n\tsize?: StackedAvatarsSize;\n\tclassName?: string;\n\t/** Whether to render a `+N` count when `users.length > max`. Default `true`. */\n\tshowOverflow?: boolean;\n\t/** Provide custom overflow text (e.g. \"+12 more\"). Default `+N`. */\n\toverflowFormatter?: (overflow: number) => React.ReactNode;\n\t/** Extra class names applied to each avatar root. */\n\tavatarClassName?: string;\n}\n\nconst FALLBACK_TONES: StackedAvatarTone[] = [\n\t'muted',\n\t'primary',\n\t'secondary',\n\t'info',\n\t'success',\n];\n\nconst FALLBACK_TONE_CLASSNAMES: Record<StackedAvatarTone, string> = {\n\tmuted: 'bg-muted text-muted-foreground',\n\tprimary: 'bg-primary/10 text-primary',\n\tsecondary: 'bg-secondary text-secondary-foreground',\n\tinfo: 'bg-info/10 text-info',\n\tsuccess: 'bg-success/10 text-success',\n\twarning: 'bg-warning/15 text-warning',\n\tdestructive: 'bg-destructive/10 text-destructive',\n};\n\nfunction getInitials(name: string, compact = false): string {\n\tconst parts = name.trim().split(/\\s+/);\n\tif (parts.length === 0) return '?';\n\tif (compact) return parts[0].slice(0, 1).toUpperCase();\n\tif (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n\treturn (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n}\n\nfunction pickFallbackTone(seed: string | number, override?: StackedAvatarTone | number) {\n\tif (typeof override === 'string') {\n\t\treturn override;\n\t}\n\tif (typeof override === 'number') {\n\t\treturn FALLBACK_TONES[Math.abs(override) % FALLBACK_TONES.length];\n\t}\n\tconst key = typeof seed === 'number' ? seed : Array.from(seed).reduce((s, c) => s + c.charCodeAt(0), 0);\n\treturn FALLBACK_TONES[key % FALLBACK_TONES.length];\n}\n\nexport function StackedAvatars({\n\tusers,\n\tmax = 4,\n\tsize = 'default',\n\tclassName,\n\tshowOverflow = true,\n\toverflowFormatter,\n\tavatarClassName,\n}: StackedAvatarsProps) {\n\tconst visible = users.slice(0, max);\n\tconst overflow = Math.max(0, users.length - max);\n\n\treturn (\n\t\t<AvatarGroup className={cn('stacked-avatars--component', className)}>\n\t\t\t{visible.map((user, index) => {\n\t\t\t\tconst initials = getInitials(user.name, size === 'sm');\n\t\t\t\tconst fallbackTone = pickFallbackTone(user.id ?? user.name ?? index, user.tone);\n\t\t\t\treturn (\n\t\t\t\t\t<Avatar\n\t\t\t\t\t\tkey={user.id ?? `${user.name}-${index}`}\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\tclassName={cn('ring-background', avatarClassName)}\n\t\t\t\t\t\ttitle={user.name}\n\t\t\t\t\t>\n\t\t\t\t\t\t{user.imageUrl ? (\n\t\t\t\t\t\t\t<AvatarImage src={user.imageUrl} alt={user.name} />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<AvatarFallback\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'font-semibold',\n\t\t\t\t\t\t\t\tFALLBACK_TONE_CLASSNAMES[fallbackTone],\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{initials}\n\t\t\t\t\t\t</AvatarFallback>\n\t\t\t\t\t</Avatar>\n\t\t\t\t);\n\t\t\t})}\n\t\t\t{!!showOverflow && overflow > 0 && (\n\t\t\t\t<AvatarGroupCount>\n\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\">\n\t\t\t\t\t\t{overflowFormatter ? overflowFormatter(overflow) : `+${overflow}`}\n\t\t\t\t\t</Text>\n\t\t\t\t</AvatarGroupCount>\n\t\t\t)}\n\t\t</AvatarGroup>\n\t);\n}\n\nStackedAvatars.displayName = 'StackedAvatars';\n","/**\n * DateBlock — compact \"boxed\" date display showing weekday + day-of-month\n * + optional month and time. Built on `date-fns` so locales propagate\n * naturally (`enGB`, `bg`, …).\n *\n * Two layouts:\n * - `stacked` (default) — three lines: weekday / day / month\n * - `inline` — single row: weekday + day + month + optional time\n *\n * Time can render `inline` (right of the date), `below` (under the date\n * block), or `hidden`. Compact rooms (booking lists) typically use\n * `stacked` with `time=\"below\"`.\n */\nimport { format, type Locale } from 'date-fns';\n\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nexport type DateBlockLayout = 'stacked' | 'inline';\nexport type DateBlockTimePlacement = 'inline' | 'below' | 'hidden';\nexport type DateBlockTone = 'default' | 'muted' | 'primary' | 'inverse' | 'success' | 'warning' | 'destructive' | 'info';\n\nexport interface DateBlockStrings {\n\t/** Used by `inline` layout when month is hidden (e.g. \"Apr 30 · 14:00\"). */\n\tseparator: string;\n}\n\nexport const defaultDateBlockStrings: DateBlockStrings = {\n\tseparator: '·',\n};\n\nexport interface DateBlockProps {\n\t/** Date instance, ISO string, or unix timestamp. */\n\tdate: Date | string | number;\n\t/** ISO time string (`HH:mm`) or already-formatted time string. */\n\ttime?: string | null;\n\t/** date-fns `Locale` (e.g. `enGB`, `bg`). Defaults to user-agent. */\n\tlocale?: Locale;\n\t/** Layout. Default `stacked`. */\n\tlayout?: DateBlockLayout;\n\t/** Where to place the time. Default `inline` for `inline` layout, `below` for `stacked`. */\n\ttimePlacement?: DateBlockTimePlacement;\n\t/** Tone of the boxed block. Default `default` (card surface). */\n\ttone?: DateBlockTone;\n\t/** Whether to render a card-like box around the block. Default `true` for stacked, `false` for inline. */\n\tboxed?: boolean;\n\t/** Show month label. Default `true`. */\n\tshowMonth?: boolean;\n\t/** Custom format for the day-of-month token (date-fns format). Default `'d'`. */\n\tdayFormat?: string;\n\t/** Custom format for the weekday token. Default `'EEE'`. */\n\tweekdayFormat?: string;\n\t/** Custom format for the month token. Default `'MMM'`. */\n\tmonthFormat?: string;\n\tclassName?: string;\n\tstrings?: Partial<DateBlockStrings>;\n}\n\nconst toneClassMap: Record<DateBlockTone, { bg: string; text: string; border: string; accent: string; subtle: string }> = {\n\tdefault: { bg: 'bg-card', text: 'text-foreground', border: 'border-border', accent: 'text-foreground', subtle: 'text-muted-foreground' },\n\tinverse: { bg: 'bg-primary', text: 'text-background', border: 'border-primary', accent: 'text-background/80', subtle: 'text-background/65' },\n\tmuted: { bg: 'bg-muted/50', text: 'text-foreground', border: 'border-border', accent: 'text-foreground', subtle: 'text-muted-foreground' },\n\tprimary: { bg: 'bg-primary/10', text: 'text-foreground', border: 'border-primary/30', accent: 'text-primary', subtle: 'text-muted-foreground' },\n\tsuccess: { bg: 'bg-success/10', text: 'text-foreground', border: 'border-success/30', accent: 'text-success', subtle: 'text-muted-foreground' },\n\twarning: { bg: 'bg-warning/15', text: 'text-foreground', border: 'border-warning/40', accent: 'text-warning-foreground', subtle: 'text-muted-foreground' },\n\tdestructive: { bg: 'bg-destructive/10', text: 'text-foreground', border: 'border-destructive/30', accent: 'text-destructive', subtle: 'text-muted-foreground' },\n\tinfo: { bg: 'bg-info/10', text: 'text-foreground', border: 'border-info/30', accent: 'text-info', subtle: 'text-muted-foreground' },\n};\n\nfunction resolveDate(input: Date | string | number): Date {\n\tif (input instanceof Date) return input;\n\tconst d = typeof input === 'number' ? new Date(input) : new Date(input);\n\treturn d;\n}\n\nexport function DateBlock({\n\tdate,\n\ttime,\n\tlocale,\n\tlayout = 'stacked',\n\ttimePlacement,\n\ttone = 'default',\n\tboxed,\n\tshowMonth = true,\n\tdayFormat = 'd',\n\tweekdayFormat = 'EEE',\n\tmonthFormat = 'MMM',\n\tclassName,\n\tstrings: stringsProp,\n}: DateBlockProps) {\n\tconst resolved = resolveDate(date);\n\tconst strings = useStrings(defaultDateBlockStrings, stringsProp);\n\tconst tones = toneClassMap[tone];\n\tconst dateValid = !Number.isNaN(resolved.getTime());\n\n\tconst weekday = dateValid ? format(resolved, weekdayFormat, locale ? { locale } : undefined) : '';\n\tconst day = dateValid ? format(resolved, dayFormat, locale ? { locale } : undefined) : '';\n\tconst month = dateValid ? format(resolved, monthFormat, locale ? { locale } : undefined) : '';\n\n\tconst resolvedTimePlacement: DateBlockTimePlacement =\n\t\ttimePlacement ?? (layout === 'inline' ? 'inline' : 'below');\n\tconst useBox = boxed ?? layout === 'stacked';\n\n\tif (layout === 'inline') {\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclassName={cn('date-block--component', \n\t\t\t\t\t'inline-flex items-center gap-1.5 tabular-nums',\n\t\t\t\t\tuseBox && cn('rounded-md border px-2 py-1', tones.bg, tones.border),\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<Text size=\"xs\" weight=\"semibold\" className={cn(tones.accent, 'uppercase tracking-wide')}>\n\t\t\t\t\t{weekday}\n\t\t\t\t</Text>\n\t\t\t\t<Text weight=\"semibold\">{day}</Text>\n\t\t\t\t{!!showMonth && (\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t{month}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t\t{!!time && resolvedTimePlacement === 'inline' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Text size=\"xs\" type=\"discrete\" aria-hidden>\n\t\t\t\t\t\t\t{strings.separator}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{time}</Text>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn('inline-flex flex-col items-center gap-0.5', className)}>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'flex flex-col items-center justify-center gap-1 tabular-nums',\n\t\t\t\t\tuseBox && cn('w-14 min-h-14 rounded-md border px-1.5 py-1.5', tones.bg, tones.border),\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\tstyle={{ lineHeight: 1 }}\n\t\t\t\t\tclassName={cn(tones.accent, 'uppercase tracking-wider')}\n\t\t\t\t>\n\t\t\t\t\t{weekday}\n\t\t\t\t</Text>\n\t\t\t\t<Text size=\"lg\" weight=\"bold\" style={{ lineHeight: 1 }} className={tones.text}>\n\t\t\t\t\t{day}\n\t\t\t\t</Text>\n\t\t\t\t{!!showMonth && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\tstyle={{ lineHeight: 1 }}\n\t\t\t\t\t\tclassName={cn(tones.subtle, 'uppercase tracking-wider')}\n\t\t\t\t\t>\n\t\t\t\t\t\t{month}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{!!time && resolvedTimePlacement === 'below' && (\n\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t{time}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{!!time && resolvedTimePlacement === 'inline' && (\n\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t{time}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nDateBlock.displayName = 'DateBlock';\n","import { Collapsible as CollapsiblePrimitive } from \"@base-ui/react/collapsible\"\nimport * as React from \"react\"\n\nimport { Slot } from \"@/components/ui/slot\"\n\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n asChild = false,\n nativeButton,\n render,\n children,\n ...props\n}: CollapsiblePrimitive.Trigger.Props & { asChild?: boolean; nativeButton?: boolean }) {\n const slotRender = asChild ? <Slot /> : undefined\n const safeRender: CollapsiblePrimitive.Trigger.Props[\"render\"] = typeof render === \"function\"\n ? ((renderProps, state) => {\n const { nativeButton: _nativeButton, ...rest } = renderProps as Record<string, unknown>\n void _nativeButton\n return render(rest as typeof renderProps, state)\n })\n : render\n let inferredNativeButton = true\n if (asChild && React.isValidElement(children)) {\n if (typeof children.type === \"string\") {\n inferredNativeButton = children.type === \"button\"\n } else {\n const childProps = (children.props ?? {}) as Record<string, unknown>\n inferredNativeButton = !(\"href\" in childProps)\n }\n }\n const resolvedNativeButton = nativeButton ?? (asChild ? inferredNativeButton : true)\n return (\n <CollapsiblePrimitive.Trigger\n data-slot=\"collapsible-trigger\"\n render={slotRender ?? safeRender}\n nativeButton={resolvedNativeButton}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Trigger>\n )\n}\n\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\n return (\n <CollapsiblePrimitive.Panel data-slot=\"collapsible-content\" {...props} />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","import { AlertTriangle, Info } from 'lucide-react';\nimport { useCallback, useMemo, type ReactNode } from 'react';\n\nimport { MoneyInput as BaseMoneyInput, type MoneyInputProps as BaseMoneyInputProps } from '@/components/base/forms/fields/money-input';\nimport { FormField } from '@/components/base/forms/form-field';\nimport { Text } from '@/components/typography';\nimport { Alert, AlertDescription } from '@/components/base/display/alert';\nimport { cn } from '@/lib/utils';\nimport type { CurrencyCode } from '@/lib/ui-provider';\n\n/** Optional money payload for migration hints. Consumers map their domain\n * shape into this — `formatted` is the consumer's pre-rendered display\n * string for the alternate currency leg. */\nexport interface MoneyData {\n amount?: number | string | null;\n currency?: string | null;\n /** Optional original/record currency that triggered a migration warning. */\n recordCurrency?: string | null;\n /** Optional secondary leg the consumer formatted for display. */\n pair?: { formatted?: string | null } | null;\n}\n\nexport interface MoneyInputData {\n amount: number;\n currency: CurrencyCode;\n}\n\nexport interface MoneyInputProps extends Omit<BaseMoneyInputProps, 'invalid'> {\n /** Optional money payload for migration hints */\n money?: MoneyData | null;\n /** Display label */\n label?: string;\n /** Hint next to label */\n hint?: string;\n /** Helper text below input */\n helperText?: string;\n /** Error message */\n error?: string;\n /** Required indicator */\n required?: boolean;\n /** Invalid state override */\n invalid?: boolean;\n /** Optional change handler for combined data */\n onChangeData?: (data: MoneyInputData) => void;\n /** Record currency for migration detection */\n recordCurrency?: CurrencyCode;\n /** Show migration warning block */\n showMigrationWarning?: boolean;\n /** Custom migration warning message */\n migrationWarningMessage?: ReactNode;\n /** Show original currency hint */\n showOriginalHint?: boolean;\n}\n\nconst defaultEmptyFormatted = '—';\n\nconst resolveFormatted = (formatted: unknown): string =>\n typeof formatted === 'string' ? formatted.trim() : '';\n\nexport function MoneyInput({\n money,\n currency = 'EUR',\n onChangeData,\n recordCurrency: recordCurrencyProp,\n label,\n hint,\n helperText,\n error,\n required,\n invalid,\n showMigrationWarning = true,\n migrationWarningMessage,\n showOriginalHint = true,\n className,\n onChange,\n onCurrencyChange,\n ...props\n}: MoneyInputProps) {\n const recordCurrency = recordCurrencyProp ?? money?.recordCurrency ?? undefined;\n\n const willMigrate = useMemo(\n () => recordCurrency !== undefined && recordCurrency !== currency,\n [recordCurrency, currency],\n );\n\n const otherFormatted = useMemo(() => {\n if (!showOriginalHint) return '';\n return resolveFormatted(money?.pair?.formatted);\n }, [showOriginalHint, money?.pair?.formatted]);\n\n const showOriginalHintBlock = otherFormatted.length > 0 && !error;\n const showMigrationBlock = willMigrate && showMigrationWarning;\n\n const handleAmountChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e);\n const parsed = Number.parseFloat(e.target.value);\n const safeAmount = Number.isFinite(parsed) ? parsed : 0;\n onChangeData?.({ amount: safeAmount, currency });\n },\n [onChange, onChangeData, currency],\n );\n\n const handleCurrencyChange = useCallback(\n (nextCurrency: CurrencyCode) => {\n onCurrencyChange?.(nextCurrency);\n const parsedValue = Number.parseFloat(String(props.value ?? ''));\n const safeAmount = Number.isFinite(parsedValue) ? parsedValue : 0;\n onChangeData?.({ amount: safeAmount, currency: nextCurrency });\n },\n [onCurrencyChange, onChangeData, props.value],\n );\n\n const isInvalid = invalid ?? Boolean(error);\n\n const inputNode = (\n <BaseMoneyInput\n {...props}\n currency={currency}\n onChange={handleAmountChange}\n onCurrencyChange={handleCurrencyChange}\n invalid={isInvalid}\n />\n );\n\n const hasChrome = Boolean(label || hint || helperText || error || required);\n const renderedInput = hasChrome ? (\n <FormField\n label={label}\n hint={hint}\n helperText={helperText}\n error={error}\n required={required}\n >\n {inputNode}\n </FormField>\n ) : inputNode;\n\n return (\n <div className={cn('money-input--component', 'space-y-2', className)}>\n {renderedInput}\n\n {!!showOriginalHintBlock && (\n <div className=\"flex items-center gap-1.5 text-muted-foreground\">\n <Info className=\"h-3.5 w-3.5 shrink-0\" />\n <Text size=\"xs\" type=\"secondary\">\n {otherFormatted || defaultEmptyFormatted}\n </Text>\n </div>\n )}\n\n {!!showMigrationBlock && (\n <Alert className=\"border-warning/50 bg-warning/5 py-2\">\n <AlertTriangle className=\"h-4 w-4 text-warning\" />\n <AlertDescription className=\"text-warning-foreground text-xs\">\n {migrationWarningMessage ??\n `Currency will be converted from ${recordCurrency ?? ''} to ${currency}.`}\n </AlertDescription>\n </Alert>\n )}\n </div>\n );\n}\n\nMoneyInput.displayName = 'MoneyInput';\n","/**\n * BooleanIndicator — labelled yes/no chip showing the truth of a value with an\n * optional check/cross icon. Use for compact metadata grids where each row\n * answers a single boolean question. Strings overridable for i18n.\n */\nimport { CheckCircle2, XCircle } from 'lucide-react';\nimport React from 'react';\nimport { Badge, type ComposedBadgeVariant } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nexport interface BooleanIndicatorStrings {\n\ttrue: string;\n\tfalse: string;\n}\n\nexport const defaultBooleanIndicatorStrings: BooleanIndicatorStrings = {\n\ttrue: 'Yes',\n\tfalse: 'No',\n};\n\nexport type BooleanIndicatorProps = {\n\tlabel: React.ReactNode;\n\tvalue?: boolean | null;\n\tshowIcon?: boolean;\n\ttrueVariant?: ComposedBadgeVariant;\n\tfalseVariant?: ComposedBadgeVariant;\n\tclassName?: string;\n\tbadgeClassName?: string;\n\tstrings?: Partial<BooleanIndicatorStrings>;\n\t/** @deprecated Use `strings.true` instead. */\n\ttrueLabel?: React.ReactNode;\n\t/** @deprecated Use `strings.false` instead. */\n\tfalseLabel?: React.ReactNode;\n};\n\nexport function BooleanIndicator({\n\tlabel,\n\tvalue = false,\n\ttrueLabel,\n\tfalseLabel,\n\tshowIcon = true,\n\ttrueVariant = 'success',\n\tfalseVariant = 'secondary',\n\tclassName,\n\tbadgeClassName,\n\tstrings: stringsProp,\n}: BooleanIndicatorProps) {\n\tconst strings = useStrings(defaultBooleanIndicatorStrings, stringsProp);\n\tconst isTrue = Boolean(value);\n\tconst Icon = isTrue ? CheckCircle2 : XCircle;\n\tconst badgeVariant = isTrue ? trueVariant : falseVariant;\n\tconst fallback = isTrue ? trueLabel : falseLabel;\n\tconst content = fallback ?? (isTrue ? strings.true : strings.false);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('boolean-indicator--component', \n\t\t\t\t'flex items-center justify-between rounded-md border border-border/60 bg-muted/30 px-3 py-2',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"uppercase tracking-wide\">\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t\t<Badge\n\t\t\t\tvariant={badgeVariant}\n\t\t\t\tsize=\"sm\"\n\t\t\t\tclassName={cn('whitespace-nowrap', badgeClassName)}\n\t\t\t>\n\t\t\t\t{!!showIcon && <Icon className=\"h-3.5 w-3.5\" />}\n\t\t\t\t{content}\n\t\t\t</Badge>\n\t\t</div>\n\t);\n}\n\nBooleanIndicator.displayName = 'BooleanIndicator';\n\nexport default BooleanIndicator;\n","import { Progress as ProgressPrimitive } from \"@base-ui/react/progress\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Progress({\n className,\n children,\n value,\n ...props\n}: ProgressPrimitive.Root.Props) {\n return (\n <ProgressPrimitive.Root\n value={value}\n data-slot=\"progress\"\n className={cn(\"flex flex-wrap gap-3\", className)}\n {...props}\n >\n {children}\n <ProgressTrack>\n <ProgressIndicator />\n </ProgressTrack>\n </ProgressPrimitive.Root>\n )\n}\n\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\n return (\n <ProgressPrimitive.Track\n className={cn(\n \"bg-muted h-1.5 rounded-full relative flex w-full items-center overflow-x-hidden\",\n className\n )}\n data-slot=\"progress-track\"\n {...props}\n />\n )\n}\n\nfunction ProgressIndicator({\n className,\n ...props\n}: ProgressPrimitive.Indicator.Props) {\n return (\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className={cn(\"bg-primary h-full transition-all\", className)}\n {...props}\n />\n )\n}\n\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\n return (\n <ProgressPrimitive.Label\n className={cn(\"text-sm font-medium\", className)}\n data-slot=\"progress-label\"\n {...props}\n />\n )\n}\n\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\n return (\n <ProgressPrimitive.Value\n className={cn(\"text-muted-foreground ml-auto text-sm tabular-nums\", className)}\n data-slot=\"progress-value\"\n {...props}\n />\n )\n}\n\nexport {\n Progress,\n ProgressTrack,\n ProgressIndicator,\n ProgressLabel,\n ProgressValue,\n}\n","import { formatHex, oklch } from 'culori';\nimport QR from 'qrcode';\nimport type { HTMLAttributes } from 'react';\nimport { useEffect, useState } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type QRCodeProps = HTMLAttributes<HTMLDivElement> & {\n\tdata: string;\n\tforeground?: string;\n\tbackground?: string;\n\trobustness?: 'L' | 'M' | 'Q' | 'H';\n};\n\nconst oklchRegex = /oklch\\\\(([.\\\\d-]+)\\\\s+([.\\\\d]+)\\\\s+([.\\\\d]+)\\\\)/;\n\nfunction getOklch(color: string, fallback: [number, number, number]) {\n\tconst oklchMatch = color.match(oklchRegex);\n\n\tif (!oklchMatch) {\n\t\treturn { l: fallback[0], c: fallback[1], h: fallback[2] };\n\t}\n\n\treturn {\n\t\tl: Number.parseFloat(oklchMatch[1]),\n\t\tc: Number.parseFloat(oklchMatch[2]),\n\t\th: Number.parseFloat(oklchMatch[3]),\n\t};\n}\n\nexport function QRCode({\n\tdata,\n\tforeground,\n\tbackground,\n\trobustness = 'M',\n\tclassName,\n\t...props\n}: QRCodeProps) {\n\tconst [svg, setSvg] = useState<string | null>(null);\n\n\tuseEffect(() => {\n\t\tconst generateQR = async () => {\n\t\t\ttry {\n\t\t\t\tconst text = String(data ?? '').trim();\n\t\t\t\tif (!text) {\n\t\t\t\t\tsetSvg(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst styles = getComputedStyle(document.documentElement);\n\t\t\t\tconst foregroundColor =\n\t\t\t\t\tforeground ?? styles.getPropertyValue('--foreground');\n\t\t\t\tconst backgroundColor =\n\t\t\t\t\tbackground ?? styles.getPropertyValue('--background');\n\n\t\t\t\tconst foregroundOklch = getOklch(foregroundColor, [\n\t\t\t\t\t0.21, 0.006, 285.885,\n\t\t\t\t]);\n\t\t\t\tconst backgroundOklch = getOklch(backgroundColor, [0.985, 0, 0]);\n\n\t\t\t\tconst newSvg = await QR.toString(text, {\n\t\t\t\t\ttype: 'svg',\n\t\t\t\t\tcolor: {\n\t\t\t\t\t\tdark: formatHex(\n\t\t\t\t\t\t\toklch({ mode: 'oklch', ...foregroundOklch }),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tlight: formatHex(\n\t\t\t\t\t\t\toklch({ mode: 'oklch', ...backgroundOklch }),\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\twidth: 200,\n\t\t\t\t\terrorCorrectionLevel: robustness,\n\t\t\t\t\tmargin: 0,\n\t\t\t\t});\n\n\t\t\t\tsetSvg(newSvg);\n\t\t\t} catch {\n\t\t\t\t// QR generation failure (invalid data, oversized payload) — render falls\n\t\t\t\t// back to empty SVG; consumer can surface their own error from the parent.\n\t\t\t\tsetSvg('');\n\t\t\t}\n\t\t};\n\n\t\tvoid generateQR();\n\t}, [data, foreground, background, robustness]);\n\n\tif (!svg) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('qr-code--component', 'size-full', '[&_svg]:size-full', className)}\n\t\t\tdangerouslySetInnerHTML={{ __html: svg }}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport default QRCode;\n\nQRCode.displayName = 'QRCode';\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"gap-4 rounded-lg border-dashed p-12 flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\n \"gap-2 flex max-w-sm flex-col items-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-lg font-medium tracking-tight\", className)}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"gap-4 text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n}\n","/**\n * Strings for `<EmptyState>`. English defaults — every piece of copy is\n * deep-merge-overridable per rule 8.\n *\n * `title`/`description` here are the *fallback* defaults the component\n * renders when neither the prop nor a per-illustration preset supplies\n * its own copy. In practice, the consumer usually passes an explicit\n * `title` / `description` per resource (\"No products\", \"No invoices yet\")\n * — these defaults exist so a bare `<EmptyState />` still renders\n * sensibly during scaffolding.\n */\nexport interface EmptyStateStrings {\n\ttitle: string;\n\tdescription: string;\n\tariaLabel: string;\n}\n\nexport const defaultEmptyStateStrings: EmptyStateStrings = {\n\ttitle: 'Nothing here yet',\n\tdescription: 'Once data lands, it will show up in this view.',\n\tariaLabel: 'Empty state',\n};\n","/**\n * EmptyState — the canonical zero-data surface for any list, table, or\n * collection in the library. Wraps the shadcn `ui/empty` primitive\n * (rule 1, rule 12) and applies our typography, density, and tokens:\n *\n * - Headline through `<Heading tag=\"h3\">` (admin scale, no marketing inflation)\n * - Description through `<Text size=\"xs\" type=\"secondary\">` — matches\n * the four sibling empty-states across the library\n * - Padding presets driven by props, not arbitrary literals\n * - Optional dashed-border affordance for \"this slot is a drop zone\"\n *\n * Composability:\n * - Slots: `media`, `actions`, `footer`\n * - Render-prop: `renderMedia(ctx)` for fully custom illustrations\n * - Strings: every piece of copy is overridable via `strings`\n *\n * The library ships a small illustration set under\n * `./partials/illustrations/*` — import explicitly per resource:\n *\n * import { StackedCardsIllustration } from\n * '@/components/base/display/empty-state/partials/illustrations';\n *\n * Adaptive shape per resource: pass a different `media` per surface.\n * Don't fork the component.\n */\nimport { forwardRef } from 'react';\n\nimport { Heading, Text } from '@/components/typography';\nimport {\n\tEmpty,\n\tEmptyContent,\n\tEmptyHeader,\n\tEmptyMedia,\n} from '@/components/ui/empty';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultEmptyStateStrings } from './empty-state.strings';\nimport type {\n\tEmptyStateMediaVariant,\n\tEmptyStatePadding,\n\tEmptyStateProps,\n} from './empty-state.types';\n\nconst PADDING_CLASS: Record<EmptyStatePadding, string> = {\n\tcompact: 'py-6',\n\tbase: 'py-12',\n\tloose: 'py-16',\n};\n\nconst MEDIA_VARIANT_TO_PRIMITIVE: Record<EmptyStateMediaVariant, 'default' | 'icon'> = {\n\tnone: 'default',\n\ticon: 'icon',\n\t'icon-soft': 'icon',\n\tillustration: 'default',\n};\n\nconst MEDIA_EXTRA_CLASS: Record<EmptyStateMediaVariant, string | undefined> = {\n\tnone: undefined,\n\ticon: undefined,\n\t'icon-soft': 'bg-muted/40 text-muted-foreground',\n\tillustration: 'mb-4',\n};\n\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState({\n\ttitle,\n\tdescription,\n\tmedia,\n\tmediaVariant = 'none',\n\trenderMedia,\n\tactions,\n\tfooter,\n\tpadding = 'base',\n\tborder = false,\n\tclassName,\n\tstrings: stringsProp,\n\tariaLabel,\n}, ref) {\n\tconst strings = useStrings(defaultEmptyStateStrings, stringsProp);\n\n\tconst resolvedTitle = title ?? strings.title;\n\tconst resolvedDescription =\n\t\tdescription === false ? null : description ?? strings.description;\n\tconst mediaNode = renderMedia ? renderMedia({ mediaVariant }) : media;\n\tconst showMedia = !!mediaNode;\n\n\treturn (\n\t\t<Empty\n\t\t\tref={ref}\n\t\t\trole=\"status\"\n\t\t\taria-label={ariaLabel ?? strings.ariaLabel}\n\t\t\tclassName={cn('empty-state--component', \n\t\t\t\tPADDING_CLASS[padding],\n\t\t\t\tborder ? 'border border-dashed' : 'border-0',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<EmptyHeader>\n\t\t\t\t{!!showMedia && (\n\t\t\t\t\t<EmptyMedia\n\t\t\t\t\t\tvariant={MEDIA_VARIANT_TO_PRIMITIVE[mediaVariant]}\n\t\t\t\t\t\tclassName={MEDIA_EXTRA_CLASS[mediaVariant]}\n\t\t\t\t\t>\n\t\t\t\t\t\t{mediaNode}\n\t\t\t\t\t</EmptyMedia>\n\t\t\t\t)}\n\t\t\t\t<Heading tag=\"h3\" className=\"border-0 pb-0 text-base\" data-slot=\"empty-title\">\n\t\t\t\t\t{resolvedTitle}\n\t\t\t\t</Heading>\n\t\t\t\t{!!resolvedDescription && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\tclassName=\"leading-relaxed [&>a]:text-primary [&>a]:underline [&>a]:underline-offset-4 hover:[&>a]:no-underline\"\n\t\t\t\t\t\tdata-slot=\"empty-description\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{resolvedDescription}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</EmptyHeader>\n\t\t\t{(!!actions || !!footer) && (\n\t\t\t\t<EmptyContent>\n\t\t\t\t\t{!!actions && (\n\t\t\t\t\t\t<div className=\"flex flex-wrap items-center justify-center gap-2\">\n\t\t\t\t\t\t\t{actions}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!footer && <div className=\"text-xs text-muted-foreground\">{footer}</div>}\n\t\t\t\t</EmptyContent>\n\t\t\t)}\n\t\t</Empty>\n\t);\n});\n\nEmptyState.displayName = 'EmptyState';\n","import { cn } from '@/lib/utils';\n\n/**\n * Two staggered document silhouettes — for \"no documents\", \"no\n * invoices\", \"no reports\" surfaces.\n */\nexport function DocumentStackIllustration({ className }: { className?: string }) {\n\treturn (\n\t\t<div className={cn('relative h-24 w-32', className)} aria-hidden=\"true\">\n\t\t\t<div className=\"bg-muted/70 dark:bg-muted/40 border-border/50 absolute left-1 top-1 flex h-20 w-20 -rotate-6 flex-col gap-1.5 rounded-md border p-2 shadow-sm\">\n\t\t\t\t<div className=\"bg-muted h-2 w-12 rounded\" />\n\t\t\t\t<div className=\"bg-muted/60 h-1.5 w-10 rounded\" />\n\t\t\t\t<div className=\"bg-muted/60 h-1.5 w-9 rounded\" />\n\t\t\t</div>\n\t\t\t<div className=\"bg-background border-border absolute right-1 top-2 flex h-20 w-20 rotate-3 flex-col gap-1.5 rounded-md border p-2 shadow-sm\">\n\t\t\t\t<div className=\"bg-muted h-2 w-12 rounded\" />\n\t\t\t\t<div className=\"bg-muted/60 h-1.5 w-10 rounded\" />\n\t\t\t\t<div className=\"bg-muted/60 h-1.5 w-9 rounded\" />\n\t\t\t\t<div className=\"mt-auto flex items-center gap-1\">\n\t\t\t\t\t<div className=\"bg-success size-1.5 rounded-full\" />\n\t\t\t\t\t<div className=\"bg-muted/60 h-1.5 w-8 rounded\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nDocumentStackIllustration.displayName = 'DocumentStackIllustration';\n","import { cn } from '@/lib/utils';\n\n/**\n * Open inbox tray with a soft check above — for \"all caught up\",\n * \"no notifications\", \"inbox zero\" surfaces.\n */\nexport function InboxCleanIllustration({ className }: { className?: string }) {\n\treturn (\n\t\t<div className={cn('relative h-24 w-32', className)} aria-hidden=\"true\">\n\t\t\t<div className=\"bg-success/12 border-success/30 absolute left-1/2 top-0 flex size-8 -translate-x-1/2 items-center justify-center rounded-full border\">\n\t\t\t\t<svg\n\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\tclassName=\"text-success size-3.5\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M3 8l3 3 7-7\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t\t<div className=\"bg-background border-border absolute inset-x-0 bottom-0 flex h-14 flex-col rounded-lg border shadow-sm\">\n\t\t\t\t<div className=\"bg-muted/30 h-3 rounded-t-lg\" />\n\t\t\t\t<div className=\"flex flex-1 items-center justify-between px-3\">\n\t\t\t\t\t<div className=\"flex flex-col gap-1\">\n\t\t\t\t\t\t<div className=\"bg-muted/60 h-1.5 w-12 rounded\" />\n\t\t\t\t\t\t<div className=\"bg-muted/40 h-1.5 w-8 rounded\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"bg-muted/40 size-3 rounded-full\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nInboxCleanIllustration.displayName = 'InboxCleanIllustration';\n","import { Search } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\n/**\n * Magnifying-glass illustration centered on a soft tinted disk — for\n * \"no search results\", \"nothing matches your filters\" surfaces.\n */\nexport function SearchGlassIllustration({ className }: { className?: string }) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flex size-20 items-center justify-center rounded-full bg-muted/40 ring-8 ring-muted/20',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<Search className=\"size-8 text-muted-foreground\" />\n\t\t</div>\n\t);\n}\n\nSearchGlassIllustration.displayName = 'SearchGlassIllustration';\n","import { cn } from '@/lib/utils';\n\n/**\n * Three stacked card silhouettes with a fade-out at the bottom — the\n * generic \"no records\" illustration. Token-driven so it adapts to any\n * theme (uses `bg-muted`, `bg-background`, `border-border`, no raw\n * palette).\n */\nexport function StackedCardsIllustration({ className }: { className?: string }) {\n\treturn (\n\t\t<div className={cn('relative h-24 w-52', className)} aria-hidden=\"true\">\n\t\t\t<div className=\"bg-muted/60 dark:bg-muted/30 border-border/50 absolute inset-x-6 top-0 h-6 rounded-t-lg border\" />\n\t\t\t<div className=\"bg-muted/80 dark:bg-muted/50 border-border/60 absolute inset-x-3 top-3 h-6 rounded-t-lg border\" />\n\t\t\t<div className=\"bg-background border-border absolute inset-x-0 top-6 flex h-16 items-center gap-3 rounded-lg border px-4 shadow-sm\">\n\t\t\t\t<div className=\"bg-muted size-8 shrink-0 rounded\" />\n\t\t\t\t<div className=\"flex flex-1 flex-col gap-1.5\">\n\t\t\t\t\t<div className=\"bg-muted h-2.5 w-3/4 rounded\" />\n\t\t\t\t\t<div className=\"bg-muted/60 h-2 w-1/2 rounded\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"from-background/0 via-background/60 to-background pointer-events-none absolute inset-x-0 bottom-0 h-8 bg-linear-to-b\" />\n\t\t</div>\n\t);\n}\n\nStackedCardsIllustration.displayName = 'StackedCardsIllustration';\n","import { cn } from '@/lib/utils';\n\n/**\n * Three overlapping avatar circles — for \"no team members\", \"no\n * customers\", \"no contributors\" surfaces.\n */\nexport function UsersCircleIllustration({ className }: { className?: string }) {\n\treturn (\n\t\t<div className={cn('relative flex h-24 w-32 items-center justify-center', className)} aria-hidden=\"true\">\n\t\t\t<div className=\"bg-muted/70 border-border absolute left-2 size-12 rounded-full border-2\" />\n\t\t\t<div className=\"bg-muted border-border z-10 size-14 rounded-full border-2 shadow-sm\" />\n\t\t\t<div className=\"bg-muted/60 border-border absolute right-2 size-10 rounded-full border-2\" />\n\t\t</div>\n\t);\n}\n\nUsersCircleIllustration.displayName = 'UsersCircleIllustration';\n","/**\n * EmailDisplay — formats an email address as a copyable, optional `mailto:`\n * link. Falls back to the shared EMPTY placeholder when no value is provided.\n * Strings are overridable for i18n via the `strings` prop.\n */\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Copyable } from '@/components/base/copyable';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { EMPTY } from '@/lib/format';\nimport { cn } from '@/lib/utils';\nimport { useTypographyConfig } from '@/lib/ui-provider';\n\ntype BaseTextProps = ComponentProps<typeof Text>;\n\nexport interface EmailDisplayStrings {\n\tcopySuccess: string;\n}\n\nexport const defaultEmailDisplayStrings: EmailDisplayStrings = {\n\tcopySuccess: 'Email copied to clipboard',\n};\n\nexport interface EmailDisplayProps extends Omit<BaseTextProps, 'children' | 'content'> {\n\temail: string | null | undefined;\n\tcopyable?: boolean;\n\temptyLabel?: ReactNode;\n\tclickable?: boolean;\n\tstrings?: Partial<EmailDisplayStrings>;\n\t/** @deprecated Use `strings.copySuccess` instead. */\n\tcopySuccessMessage?: string;\n}\n\nexport function EmailDisplay({\n\temail,\n\tcopyable = true,\n\tcopySuccessMessage,\n\temptyLabel = EMPTY,\n\tclickable = true,\n\tstrings: stringsProp,\n\tsize: sizeProp,\n\ttype = 'main',\n\ttag = 'span',\n\tclassName,\n\t...props\n}: EmailDisplayProps) {\n\tconst { defaultTextSize } = useTypographyConfig();\n\tconst size = sizeProp ?? defaultTextSize ?? 'sm';\n\n\tconst strings = useStrings(defaultEmailDisplayStrings, {\n\t\t...(copySuccessMessage ? { copySuccess: copySuccessMessage } : {}),\n\t\t...stringsProp,\n\t});\n\tif (!email || email.trim().length === 0) {\n\t\treturn (\n\t\t\t<Text size={size} type=\"secondary\" tag={tag} className={cn('email-display--component', className)} {...props}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tconst emailText = (\n\t\t<Text\n\t\t\tsize={size}\n\t\t\ttype={type}\n\t\t\ttag=\"span\"\n\t\t\tclassName={cn(\n\t\t\t\t'font-medium',\n\t\t\t\t'decoration-dotted decoration-border underline underline-offset-4',\n\t\t\t\t'transition-colors duration-200',\n\t\t\t\tclickable ? 'hover:decoration-current' : null,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{email}\n\t\t</Text>\n\t);\n\n\tif (copyable) {\n\t\tconst copyableContent = (\n\t\t\t<Copyable\n\t\t\t\tvalue={email}\n\t\t\t\tdisplayValue={emailText}\n\t\t\t\tsuccessMessage={strings.copySuccess}\n\t\t\t\tclassName=\"-mx-0\"\n\t\t\t/>\n\t\t);\n\n\t\tif (clickable) {\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\thref={`mailto:${email}`}\n\t\t\t\t\tclassName=\"inline-flex items-center no-underline\"\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t{copyableContent}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\treturn copyableContent;\n\t}\n\n\tif (clickable) {\n\t\treturn (\n\t\t\t<a href={`mailto:${email}`} className=\"inline-flex items-center no-underline\">\n\t\t\t\t{emailText}\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn emailText;\n}\n\nEmailDisplay.displayName = 'EmailDisplay';\n","/**\n * PhoneDisplay — formats a phone number as a copyable, optional `tel:` link.\n * Strips visual separators when generating the `tel:` href; falls back to the\n * shared EMPTY placeholder when no value is provided. Strings overridable.\n */\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Copyable } from '@/components/base/copyable';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { EMPTY } from '@/lib/format';\nimport { cn } from '@/lib/utils';\nimport { useTypographyConfig } from '@/lib/ui-provider';\n\ntype BaseTextProps = ComponentProps<typeof Text>;\n\nexport interface PhoneDisplayStrings {\n\tcopySuccess: string;\n}\n\nexport const defaultPhoneDisplayStrings: PhoneDisplayStrings = {\n\tcopySuccess: 'Phone number copied to clipboard',\n};\n\nexport interface PhoneDisplayProps extends Omit<BaseTextProps, 'children' | 'content'> {\n\tphone: string | null | undefined;\n\tcopyable?: boolean;\n\temptyLabel?: ReactNode;\n\tclickable?: boolean;\n\tstrings?: Partial<PhoneDisplayStrings>;\n\t/** @deprecated Use `strings.copySuccess` instead. */\n\tcopySuccessMessage?: string;\n}\n\nfunction formatPhoneForTel(phone: string): string {\n\treturn phone.replace(/[\\s().-]/g, '');\n}\n\nexport function PhoneDisplay({\n\tphone,\n\tcopyable = true,\n\tcopySuccessMessage,\n\temptyLabel = EMPTY,\n\tclickable = true,\n\tstrings: stringsProp,\n\tsize: sizeProp,\n\ttype = 'main',\n\ttag = 'span',\n\tclassName,\n\t...props\n}: PhoneDisplayProps) {\n\tconst { defaultTextSize } = useTypographyConfig();\n\tconst size = sizeProp ?? defaultTextSize ?? 'sm';\n\n\tconst strings = useStrings(defaultPhoneDisplayStrings, {\n\t\t...(copySuccessMessage ? { copySuccess: copySuccessMessage } : {}),\n\t\t...stringsProp,\n\t});\n\tif (!phone || phone.trim().length === 0) {\n\t\treturn (\n\t\t\t<Text size={size} type=\"secondary\" tag={tag} className={cn('phone-display--component', className)} {...props}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tconst phoneText = (\n\t\t<Text\n\t\t\tsize={size}\n\t\t\ttype={type}\n\t\t\ttag=\"span\"\n\t\t\tclassName={cn(\n\t\t\t\t'font-medium',\n\t\t\t\t'decoration-dotted decoration-border underline underline-offset-4',\n\t\t\t\t'transition-colors duration-200',\n\t\t\t\tclickable ? 'hover:decoration-current' : null,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{phone}\n\t\t</Text>\n\t);\n\n\tif (copyable) {\n\t\tconst copyableContent = (\n\t\t\t<Copyable\n\t\t\t\tvalue={phone}\n\t\t\t\tdisplayValue={phoneText}\n\t\t\t\tsuccessMessage={strings.copySuccess}\n\t\t\t\tclassName=\"-mx-0\"\n\t\t\t/>\n\t\t);\n\n\t\tif (clickable) {\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\thref={`tel:${formatPhoneForTel(phone)}`}\n\t\t\t\t\tclassName=\"inline-flex items-center no-underline\"\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t{copyableContent}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\treturn copyableContent;\n\t}\n\n\tif (clickable) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\thref={`tel:${formatPhoneForTel(phone)}`}\n\t\t\t\tclassName=\"inline-flex items-center no-underline\"\n\t\t\t>\n\t\t\t\t{phoneText}\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn phoneText;\n}\n\nPhoneDisplay.displayName = 'PhoneDisplay';\n","/**\n * UrlDisplay — formats a URL as a copyable, optional external link.\n * Detects insecure (http://) URLs and renders an inline tooltip warning. The\n * link can be truncated by hostname/path heuristic with a tooltip showing the\n * full URL on hover. Strings overridable for i18n.\n */\nimport { ExternalLink, ShieldAlert } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Copyable } from '@/components/base/copyable';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/base/display/tooltip';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { EMPTY } from '@/lib/format';\nimport { cn } from '@/lib/utils';\nimport { useTypographyConfig } from '@/lib/ui-provider';\n\ntype BaseTextProps = ComponentProps<typeof Text>;\n\nexport interface UrlDisplayStrings {\n\tcopySuccess: string;\n\thttpWarning: string;\n}\n\nexport const defaultUrlDisplayStrings: UrlDisplayStrings = {\n\tcopySuccess: 'URL copied to clipboard',\n\thttpWarning: 'This URL uses HTTP which is not secure',\n};\n\nexport interface UrlDisplayProps extends Omit<BaseTextProps, 'children' | 'content'> {\n\turl: string | null | undefined;\n\tcopyable?: boolean;\n\temptyLabel?: ReactNode;\n\tclickable?: boolean;\n\ttruncate?: boolean;\n\tmaxLength?: number;\n\tshowExternalIcon?: boolean;\n\tstrings?: Partial<UrlDisplayStrings>;\n\t/** @deprecated Use `strings.copySuccess` instead. */\n\tcopySuccessMessage?: string;\n\t/** @deprecated Use `strings.httpWarning` instead. */\n\thttpWarningMessage?: string;\n}\n\nfunction isHttpUrl(url: string): boolean {\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\treturn parsed.protocol === 'http:';\n\t} catch {\n\t\treturn url.toLowerCase().startsWith('http://');\n\t}\n}\n\nfunction formatUrlForDisplay(url: string, truncate: boolean, maxLength: number): string {\n\tif (!truncate || url.length <= maxLength) {\n\t\treturn url;\n\t}\n\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\tconst domain = parsed.hostname;\n\t\tconst remaining = maxLength - domain.length - 5;\n\n\t\tif (remaining > 10) {\n\t\t\tconst pathStart = parsed.pathname.slice(0, remaining);\n\t\t\treturn `${domain}${pathStart}...`;\n\t\t}\n\n\t\treturn `${url.slice(0, maxLength - 3)}...`;\n\t} catch {\n\t\treturn `${url.slice(0, maxLength - 3)}...`;\n\t}\n}\n\nexport function UrlDisplay({\n\turl,\n\tcopyable = true,\n\tcopySuccessMessage,\n\temptyLabel = EMPTY,\n\tclickable = true,\n\ttruncate = false,\n\tmaxLength = 50,\n\tshowExternalIcon = true,\n\thttpWarningMessage,\n\tstrings: stringsProp,\n\tsize: sizeProp,\n\ttype = 'main',\n\ttag = 'span',\n\tclassName,\n\t...props\n}: UrlDisplayProps) {\n\tconst { defaultTextSize } = useTypographyConfig();\n\tconst size = sizeProp ?? defaultTextSize ?? 'sm';\n\n\tconst strings = useStrings(defaultUrlDisplayStrings, {\n\t\t...(copySuccessMessage ? { copySuccess: copySuccessMessage } : {}),\n\t\t...(httpWarningMessage ? { httpWarning: httpWarningMessage } : {}),\n\t\t...stringsProp,\n\t});\n\n\tif (!url || url.trim().length === 0) {\n\t\treturn (\n\t\t\t<Text size={size} type=\"secondary\" tag={tag} className={cn('url-display--component', className)} {...props}>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tconst isInsecure = isHttpUrl(url);\n\tconst displayUrl = formatUrlForDisplay(url, truncate, maxLength);\n\tconst shouldShowTitle = truncate && url.length > maxLength;\n\n\tconst urlContent = (\n\t\t<Text size={size} type={type} tag=\"span\" className=\"inline-flex items-center gap-1.5\">\n\t\t\t{!!isInsecure && (\n\t\t\t\t<Tooltip>\n\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\trender={(triggerProps) => {\n\t\t\t\t\t\t\t// Tooltip triggers are `<button>` by default; we render a non-button to avoid nested\n\t\t\t\t\t\t\t// interactive elements when UrlDisplay is wrapped in an `<a>`.\n\t\t\t\t\t\t\tconst { type, disabled, className: triggerClassName, ...rest } =\n\t\t\t\t\t\t\t\ttriggerProps as Record<string, unknown> & {\n\t\t\t\t\t\t\t\t\tclassName?: string;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tvoid type;\n\t\t\t\t\t\t\tvoid disabled;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\t\t\trole=\"img\"\n\t\t\t\t\t\t\t\t\taria-label={strings.httpWarning}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'inline-flex items-center text-warning',\n\t\t\t\t\t\t\t\t\t\ttriggerClassName,\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<ShieldAlert className=\"size-3.5\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<TooltipContent side=\"top\" className=\"max-w-xs\">\n\t\t\t\t\t\t<Text size=\"xs\">{strings.httpWarning}</Text>\n\t\t\t\t\t</TooltipContent>\n\t\t\t\t</Tooltip>\n\t\t\t)}\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'decoration-dotted underline underline-offset-4',\n\t\t\t\t\t'transition-colors duration-200',\n\t\t\t\t\tisInsecure ? 'decoration-warning' : 'decoration-border',\n\t\t\t\t\tclickable ? 'hover:decoration-current' : null,\n\t\t\t\t)}\n\t\t\t\ttitle={(shouldShowTitle && url) || undefined}\n\t\t\t>\n\t\t\t\t{displayUrl}\n\t\t\t</span>\n\t\t\t{!!clickable && !!showExternalIcon && (\n\t\t\t\t<ExternalLink className=\"size-3 text-muted-foreground\" />\n\t\t\t)}\n\t\t</Text>\n\t);\n\n\tif (copyable) {\n\t\tconst copyableContent = (\n\t\t\t<Copyable\n\t\t\t\tvalue={url}\n\t\t\t\tdisplayValue={urlContent}\n\t\t\t\tsuccessMessage={strings.copySuccess}\n\t\t\t\tclassName={cn('-mx-0', className)}\n\t\t\t/>\n\t\t);\n\n\t\tif (clickable) {\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\thref={url}\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\tclassName=\"inline-flex items-center no-underline\"\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t{copyableContent}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\treturn copyableContent;\n\t}\n\n\tif (clickable) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\thref={url}\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\tclassName=\"inline-flex items-center no-underline\"\n\t\t\t>\n\t\t\t\t{urlContent}\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn urlContent;\n}\n\nUrlDisplay.displayName = 'UrlDisplay';\n","/**\n * InlineStat — label + value pair, the workhorse of detail panels and card\n * footers. Three layouts:\n *\n * - `between` (default): label and value pushed to opposite ends of the row.\n * - `inline`: label sits immediately before the value, separator-style.\n * - `stacked`: label above (xxs secondary), value below (sm).\n *\n * `mono` toggles `tabular-nums` on the value side for amounts and counters.\n * Use `valueClassName` for one-off colour/weight overrides; the surrounding\n * row is intentionally plain so consumers can stack many of these without\n * visual clutter.\n */\nimport type { ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport type InlineStatLayout = 'between' | 'inline' | 'stacked';\n\nexport interface InlineStatProps {\n\tlabel: ReactNode;\n\tvalue: ReactNode;\n\tlayout?: InlineStatLayout;\n\tmono?: boolean;\n\tclassName?: string;\n\tlabelClassName?: string;\n\tvalueClassName?: string;\n}\n\nexport function InlineStat({\n\tlabel,\n\tvalue,\n\tlayout = 'between',\n\tmono = false,\n\tclassName,\n\tlabelClassName,\n\tvalueClassName,\n}: InlineStatProps) {\n\tif (layout === 'stacked') {\n\t\treturn (\n\t\t\t<div className={cn('inline-stat--component', 'flex flex-col gap-0.5', className)}>\n\t\t\t\t<Text tag=\"span\" size=\"xxs\" type=\"secondary\" className={labelClassName}>\n\t\t\t\t\t{label}\n\t\t\t\t</Text>\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tclassName={cn(mono && 'tabular-nums', valueClassName)}\n\t\t\t\t>\n\t\t\t\t\t{value}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst justify = layout === 'between' ? 'justify-between' : 'justify-start';\n\n\treturn (\n\t\t<div className={cn('flex items-center gap-2', justify, className)}>\n\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className={labelClassName}>\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t\t<Text\n\t\t\t\ttag=\"span\"\n\t\t\t\tclassName={cn(mono && 'tabular-nums', valueClassName)}\n\t\t\t>\n\t\t\t\t{value}\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n\nInlineStat.displayName = 'InlineStat';\n","/**\n * NumericValue — displays a number with `tabular-nums` and a chosen alignment.\n * Use for amounts, counters, percentages, durations — anywhere the value\n * benefits from monospace digits and consistent column alignment.\n *\n * Pass `value` as a primitive (auto-formatted via `Intl.NumberFormat`) or\n * pre-format upstream and pass a string. When `currency` is set, the value\n * is rendered with a currency symbol via `formatAmount` from `useCurrency()`\n * — defer to `MoneyDisplay` for richer money rendering (pair display, empty\n * fallback, large display sizes); this component is the leaf primitive.\n */\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\nimport { useTypographyConfig } from '@/lib/ui-provider';\n\nexport type NumericValueAlign = 'left' | 'right' | 'center';\n\ntype TextProps = ComponentProps<typeof Text>;\ntype TextSize = NonNullable<TextProps['size']>;\ntype TextWeight = NonNullable<TextProps['weight']>;\ntype TextType = NonNullable<TextProps['type']>;\n\nexport interface NumericValueProps extends Omit<TextProps, 'children' | 'content' | 'align'> {\n\tvalue: number | string | null | undefined;\n\talign?: NumericValueAlign;\n\t/** When set, formats `value` via `Intl.NumberFormat`; ignored if `value` is already a string. */\n\tlocale?: string;\n\t/** Forwarded to `Intl.NumberFormat` when `value` is numeric. */\n\tformatOptions?: Intl.NumberFormatOptions;\n\t/** Rendered when `value` is `null`/`undefined`/empty. Defaults to `'—'`. */\n\temptyLabel?: ReactNode;\n\tsize?: TextSize;\n\tweight?: TextWeight;\n\ttype?: TextType;\n}\n\nconst DEFAULT_EMPTY = '—';\n\nconst formatValue = (\n\tvalue: NumericValueProps['value'],\n\tlocale: string | undefined,\n\toptions: Intl.NumberFormatOptions | undefined,\n): string | null => {\n\tif (value === null || value === undefined || value === '') return null;\n\tif (typeof value === 'string') return value;\n\tif (Number.isNaN(value)) return null;\n\ttry {\n\t\treturn new Intl.NumberFormat(locale, options).format(value);\n\t} catch {\n\t\treturn String(value);\n\t}\n};\n\nexport function NumericValue({\n\tvalue,\n\talign = 'right',\n\tlocale,\n\tformatOptions,\n\temptyLabel = DEFAULT_EMPTY,\n\tsize: sizeProp,\n\tweight,\n\ttype,\n\tclassName,\n\t...props\n}: NumericValueProps) {\n\tconst { defaultTextSize } = useTypographyConfig();\n\tconst size = sizeProp ?? defaultTextSize ?? 'sm';\n\n\tconst formatted = formatValue(value, locale, formatOptions);\n\tconst alignClass =\n\t\talign === 'right' ? 'text-right' : align === 'center' ? 'text-center' : 'text-left';\n\n\tif (formatted === null) {\n\t\treturn (\n\t\t\t<Text\n\t\t\t\tsize={size}\n\t\t\t\tweight={weight}\n\t\t\t\ttype={type ?? 'secondary'}\n\t\t\t\tclassName={cn('numeric-value--component', 'tabular-nums', alignClass, className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{emptyLabel}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\tsize={size}\n\t\t\tweight={weight}\n\t\t\ttype={type}\n\t\t\tclassName={cn('tabular-nums', alignClass, className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{formatted}\n\t\t</Text>\n\t);\n}\n\nNumericValue.displayName = 'NumericValue';\n","/**\n * UserCell — avatar + name + optional subtitle list-item row, the canonical\n * shape for team rosters, conversation lists, comment authors, and search\n * result rows. Three sizes match the surrounding row density (sm/base/lg).\n *\n * Pass `avatarUrl` for an image, `initials` for a fallback, or `avatar` for\n * a full custom Avatar tree (e.g. with a status badge). The `trailing` slot\n * sits on the right edge — use it for badges, action buttons, or timestamps.\n *\n * Avatar primitives come from `base/display/avatar` (shadcn-backed) so they\n * match the rest of the system without configuration.\n */\nimport type { ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { cn } from '@/lib/utils';\n\nexport type UserCellSize = 'sm' | 'base' | 'lg';\n\nexport interface UserCellProps {\n\tname: ReactNode;\n\tsubtitle?: ReactNode;\n\tavatarUrl?: string;\n\tavatarAlt?: string;\n\tinitials?: string;\n\t/** Fully custom avatar element (overrides `avatarUrl` / `initials`). */\n\tavatar?: ReactNode;\n\ttrailing?: ReactNode;\n\tsize?: UserCellSize;\n\tclassName?: string;\n}\n\nconst SIZE_MAP: Record<UserCellSize, { avatar: string; gap: string; nameSize: 'sm' | 'base'; subtitleSize: 'xs' | 'sm' }> = {\n\tsm: { avatar: 'size-7', gap: 'gap-2', nameSize: 'sm', subtitleSize: 'xs' },\n\tbase: { avatar: 'size-9', gap: 'gap-3', nameSize: 'sm', subtitleSize: 'xs' },\n\tlg: { avatar: 'size-11', gap: 'gap-3', nameSize: 'base', subtitleSize: 'sm' },\n};\n\nexport function UserCell({\n\tname,\n\tsubtitle,\n\tavatarUrl,\n\tavatarAlt,\n\tinitials,\n\tavatar,\n\ttrailing,\n\tsize = 'base',\n\tclassName,\n}: UserCellProps) {\n\tconst sizes = SIZE_MAP[size];\n\n\tconst avatarNode = avatar ?? (\n\t\t<Avatar className={sizes.avatar}>\n\t\t\t{!!avatarUrl && <AvatarImage src={avatarUrl} alt={avatarAlt ?? (typeof name === 'string' ? name : undefined)} />}\n\t\t\t{!!initials && <AvatarFallback>{initials}</AvatarFallback>}\n\t\t</Avatar>\n\t);\n\n\treturn (\n\t\t<div className={cn('user-cell--component', 'flex items-center', sizes.gap, className)}>\n\t\t\t{avatarNode}\n\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t<Text size={sizes.nameSize} weight=\"semibold\" className=\"truncate\">\n\t\t\t\t\t{name}\n\t\t\t\t</Text>\n\t\t\t\t{!!subtitle && (\n\t\t\t\t\t<Text size={sizes.subtitleSize} type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t{subtitle}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{!!trailing && <div className=\"shrink-0\">{trailing}</div>}\n\t\t</div>\n\t);\n}\n\nUserCell.displayName = 'UserCell';\n","/**\n * SectionHeader — title row for in-card sections and standalone groupings:\n *\n * <Text weight=\"semibold\">{title}</Text>\n * {optional Badge | description on the next line}\n * {optional trailing action button on the right}\n *\n * Distinct from `SmartCard.title` (which is the *card's* primary header) —\n * use SectionHeader for nested sections inside a card body, or for grouping\n * blocks on a page that aren't full cards.\n *\n * `dense` tightens vertical spacing and sizes the title down to `xs` for\n * sub-section labels (e.g. \"Recent activity\" stripes inside a longer card).\n */\nimport type { ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface SectionHeaderProps {\n\ttitle: ReactNode;\n\tdescription?: ReactNode;\n\tbadge?: ReactNode;\n\taction?: ReactNode;\n\tdense?: boolean;\n\tclassName?: string;\n}\n\nexport function SectionHeader({\n\ttitle,\n\tdescription,\n\tbadge,\n\taction,\n\tdense = false,\n\tclassName,\n}: SectionHeaderProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('section-header--component', \n\t\t\t\t'flex items-start justify-between',\n\t\t\t\tdense ? 'gap-2' : 'gap-3',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t<div className={cn('flex items-center', dense ? 'gap-1.5' : 'gap-2')}>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tsize={dense ? 'xs' : 'sm'}\n\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\tclassName=\"truncate\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!badge && <span className=\"shrink-0\">{badge}</span>}\n\t\t\t\t</div>\n\t\t\t\t{!!description && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tsize={dense ? 'xxs' : 'xs'}\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\tclassName={dense ? 'mt-0.5' : 'mt-1'}\n\t\t\t\t\t>\n\t\t\t\t\t\t{description}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{!!action && <div className=\"shrink-0\">{action}</div>}\n\t\t</div>\n\t);\n}\n\nSectionHeader.displayName = 'SectionHeader';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/strings.cjs"),n=require("./ui-provider-BF4m2cR0.cjs"),r=require("../lib/utils.cjs"),i=require("./button-BI347RlM.cjs"),a=require("./buttons-kVvSD_oI.cjs"),o=require("./heading-0DYCOrgC.cjs"),s=require("./typography-Bzsl7aTu.cjs"),c=require("./badge-D7A2LnSf.cjs"),l=require("./smart-card-B6m7tmt0.cjs"),u=require("./alert-CuIIKJC-.cjs"),d=require("./input-COMcb1WY.cjs"),f=require("./checkbox-D1n-nfLP.cjs"),p=require("./form-sizing-aVwVuF-w.cjs"),m=require("./textarea-C4SOrh0z.cjs"),h=require("./select-CG5Yq-6A.cjs"),g=require("./display-AtPyyUZc.cjs"),_=require("./card-radio-group-Bna2uZs1.cjs"),v=require("./date-picker-zFOqtmAS.cjs"),y=require("./popover-CaHvG8Vj.cjs");let b=require("react");b=e.t(b,1);let x=require("react/jsx-runtime"),S=require("lucide-react"),C=require("@base-ui/react/switch"),w=require("@base-ui/react/slider"),T=require("@base-ui/react/radio"),E=require("@base-ui/react/radio-group"),D=require("@dnd-kit/core"),O=require("@dnd-kit/sortable"),k=require("@dnd-kit/utilities"),A=require("react-hook-form");var j={showPassword:`Show password`,hidePassword:`Hide password`},M=b.forwardRef(function({visible:e,defaultVisible:n=!1,onVisibilityChange:i,revealable:a=!0,wrapperClassName:o,visibilityButtonClassName:s,className:c,disabled:l,isLoading:u,inputStrings:f,strings:p,...m},h){let g=t.useStrings(j,p),[_,v]=b.useState(n),y=e!==void 0,C=y?e:_,w=l||u,T=b.useCallback(()=>{let e=!C;y||v(e),i?.(e)},[y,C,i]);return(0,x.jsxs)(`div`,{className:r.cn(`password-input--component`,`relative`,o),children:[(0,x.jsx)(d.t,{ref:h,type:C?`text`:`password`,disabled:l,isLoading:u,className:r.cn(a&&`pe-10`,c),strings:f,...m}),!!a&&(0,x.jsx)(`button`,{type:`button`,className:r.cn(`password-input--toggle`,`text-muted-foreground/80 hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-md transition-[color,box-shadow] outline-none focus-visible:z-10 focus-visible:ring-[3px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,s),"aria-label":C?g.hidePassword:g.showPassword,"aria-pressed":C,disabled:w,onMouseDown:e=>e.preventDefault(),onClick:T,children:C?(0,x.jsx)(S.EyeOff,{className:`size-4`,"aria-hidden":`true`}):(0,x.jsx)(S.Eye,{className:`size-4`,"aria-hidden":`true`})})]})});M.displayName=`PasswordInput`;function N(e,{separator:t=`-`,lowercase:n=!0,trim:r=!0}={}){let i=t||`-`,a=i.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),o=String(e??``).normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``).replace(/&/g,` and `).replace(/['’]/g,``);return n&&(o=o.toLowerCase()),o=o.replace(/[^\p{Letter}\p{Number}]+/gu,i).replace(RegExp(`${a}{2,}`,`g`),i),r&&(o=o.replace(RegExp(`^${a}|${a}$`,`g`),``)),o}var P=b.forwardRef(function({value:e,slugify:t,separator:n=`-`,lowercase:i=!0,trim:a=!0,wrapperClassName:o,className:s,...c},l){let u=b.useMemo(()=>t?.(e)??N(e,{separator:n,lowercase:i,trim:a}),[i,n,t,a,e]);return(0,x.jsx)(`div`,{className:r.cn(`slug-field--component`,o),children:(0,x.jsx)(d.t,{ref:l,...c,type:`text`,value:u,readOnly:!0,className:s})})});P.displayName=`SlugField`;var F={placeholder:`Select an option`},I=`__select_empty__`,L=e=>e===``||e===null?I:e??void 0,R=e=>{if(e!==I)return e},z=(0,b.memo)((0,b.forwardRef)(({options:e,placeholder:i,strings:a,allowClear:o=!1,invalid:s,size:c,className:l,onChange:u,disabled:d,defaultOpen:f,open:m,onOpenChange:g,name:_,required:v,"aria-label":y,value:S,defaultValue:C},w)=>{let T=t.useStrings(F,a),{defaultControlSize:E}=n.s(),D=p.i(c,E),O=i??T.placeholder,k=(0,b.useMemo)(()=>{let t=e.map(e=>({...e,value:L(e.value)??``}));return o&&(t.some(e=>e.value===I)||t.unshift({label:O,value:I})),t},[e,o,O]),A=(0,b.useMemo)(()=>L(S),[S]),j=(0,b.useMemo)(()=>L(C),[C]),M=(0,b.useMemo)(()=>{let e=A??j;if(e!==void 0)return k.find(t=>t.value===e)?.label},[j,k,A]),N=(0,b.useCallback)(e=>{e!==null&&u?.(R(e))},[u]),P=!!s;return(0,x.jsxs)(h.t,{onValueChange:e=>N(e),disabled:d,defaultOpen:f,open:m,onOpenChange:g,name:_,required:v,value:A,defaultValue:j,children:[(0,x.jsx)(h.a,{ref:w,"aria-label":y,"aria-invalid":P||void 0,className:r.cn(`select--component`,`flex w-full items-center justify-between rounded-radius border px-3 py-1 !shadow-none`,`transition-[color,box-shadow] outline-none`,p.n[D],`bg-transparent dark:bg-input/30`,`data-[placeholder]:text-muted-foreground`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,`disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,l),children:(0,x.jsx)(h.o,{placeholder:O,children:M})}),(0,x.jsx)(h.n,{children:(0,x.jsx)(h.r,{children:k.map(e=>(0,x.jsxs)(h.i,{value:e.value,disabled:e.disabled,children:[!!e.icon&&(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`h-4 w-4 shrink-0`,children:e.icon}),e.label]}),!e.icon&&e.label]},e.value))})})]})}));z.displayName=`Select`;function B({className:e,size:t=`default`,...n}){return(0,x.jsx)(C.Switch.Root,{"data-slot":`switch`,"data-size":t,className:r.cn(`data-checked:bg-primary data-unchecked:bg-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 aria-invalid:border-destructive shrink-0 rounded-full border border-transparent focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-5 data-[size=default]:w-9 data-[size=sm]:h-4 data-[size=sm]:w-7 peer group/switch relative inline-flex items-center transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 data-disabled:cursor-not-allowed data-disabled:opacity-50`,e),...n,children:(0,x.jsx)(C.Switch.Thumb,{"data-slot":`switch-thumb`,className:`bg-background rounded-full shadow-sm group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[16px] group-data-[size=sm]/switch:data-checked:translate-x-[12px] group-data-[size=default]/switch:data-unchecked:translate-x-0.5 group-data-[size=sm]/switch:data-unchecked:translate-x-0.5 pointer-events-none block ring-0 transition-transform`})})}var V=(0,b.forwardRef)(function({onCheckedChange:e,invalid:t,className:n,...i},a){let o=(0,b.useId)(),s=(0,b.useMemo)(()=>i.name?String(i.name):i.id?String(i.id):`switch-${o}`,[o,i.id,i.name]),c=i.id??s,l=(0,b.useCallback)(t=>{e?.({target:{name:s,value:t}})},[s,e]);return(0,x.jsx)(B,{ref:a,...i,onCheckedChange:l,id:c,name:s,"aria-invalid":t||void 0,className:r.cn(`switch--component`,t&&`data-[state=unchecked]:border-destructive`,n)})});V.displayName=`Switch`;var H=(0,b.forwardRef)(function({onCheckedChange:e,invalid:t,className:n,...i},a){return(0,x.jsx)(B,{ref:a,...i,onCheckedChange:t=>e?.(t),"aria-invalid":t||void 0,className:r.cn(t&&`data-[state=unchecked]:border-destructive`,n)})});H.displayName=`ToggleSwitch`;function U({label:e,description:t,hint:n,icon:i,name:a,value:c,defaultValue:l,onChange:u,disabled:d=!1,invalid:f,className:p}){let m=c!==void 0,[h,g]=(0,b.useState)(l??!1),_=m?c??!1:h,v=(0,b.useId)(),y=(0,b.useMemo)(()=>a??v,[a,v]),S=typeof t==`string`&&t.trim()!==``,C=S?`${y}-description`:void 0,w=(0,b.useCallback)(e=>{d||(m||g(e),u?.(e))},[d,m,u]),T=(0,b.useCallback)(e=>{e.target.closest(`[role="switch"]`)||w(!_)},[_,w]);return(0,x.jsxs)(`div`,{"aria-invalid":f||void 0,onClick:T,className:r.cn(`switch-card--component`,`group relative flex items-start gap-3 rounded-lg border bg-card p-4 transition-[background,border-color,box-shadow] duration-150`,`border-border`,_&&`border-primary bg-primary/[0.04]`,`aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20`,!d&&`cursor-pointer hover:border-foreground/20 hover:bg-muted/30`,d&&`cursor-not-allowed opacity-50`,p),children:[!!a&&(0,x.jsx)(`input`,{type:`hidden`,name:a,value:_?`1`:`0`,"aria-hidden":`true`}),!!i&&(0,x.jsx)(`span`,{className:r.cn(`mt-0.5 inline-flex size-9 shrink-0 items-center justify-center rounded-md transition-colors`,_?`bg-primary/10 text-primary`:`bg-muted/50 text-muted-foreground group-hover:bg-muted group-hover:text-foreground`),children:(0,x.jsx)(i,{className:`size-4`})}),(0,x.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,x.jsx)(s.a,{htmlFor:y,className:r.cn(`block font-semibold tracking-tight`,d?`cursor-not-allowed`:`cursor-pointer`),children:e}),!!S&&(0,x.jsx)(o.n,{type:`secondary`,className:`leading-snug`,children:t}),!!n&&(0,x.jsx)(o.n,{size:`xs`,type:`discrete`,className:`leading-snug`,children:n})]}),(0,x.jsx)(`div`,{className:`mt-1 flex shrink-0 items-center`,children:(0,x.jsx)(B,{id:y,checked:_,onCheckedChange:e=>w(e),disabled:d,"aria-label":e,"aria-describedby":C})}),!!S&&(0,x.jsx)(`span`,{id:`${y}-description`,className:`sr-only`,children:t})]})}U.displayName=`SwitchCard`;function W({label:e,description:t,kind:n=`switch`,value:i,defaultValue:a,onChange:c,disabled:l=!1,invalid:u=!1,name:d,className:p,controlPosition:m=`trailing`}){let h=i!==void 0,[g,_]=(0,b.useState)(a??!1),v=h?i??!1:g,y=(0,b.useId)(),S=(0,b.useCallback)(e=>{l||(h||_(e),c?.(e))},[l,h,c]),C=e=>{e.target.closest(`[role="switch"], [role="checkbox"], input[type="checkbox"]`)||S(!v)},w=n===`switch`?(0,x.jsx)(B,{id:y,name:d,checked:v,onCheckedChange:e=>S(e),disabled:l,"aria-invalid":u||void 0}):(0,x.jsx)(f.t,{id:y,name:d,checked:v,onCheckedChange:e=>S(e===!0),disabled:l,"aria-invalid":u||void 0}),T=(0,x.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,x.jsx)(s.a,{htmlFor:y,className:r.cn(`block leading-snug`,l?`cursor-not-allowed opacity-50`:`cursor-pointer`),children:e}),!!t&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,className:`mt-0.5 leading-snug`,children:t})]});return(0,x.jsxs)(`div`,{role:`group`,onClick:C,className:r.cn(`toggle-field--component`,`flex items-start gap-3 rounded-md py-1`,l&&`pointer-events-none`,p),children:[m===`leading`&&(0,x.jsx)(`div`,{className:`mt-0.5 flex shrink-0`,children:w}),T,m===`trailing`&&(0,x.jsx)(`div`,{className:`mt-0.5 flex shrink-0`,children:w})]})}W.displayName=`ToggleField`;var ee={placeholder:`Add a tag…`,emptyRecommendations:`No recommendations found.`,clearAll:`Clear all`,summary:(e,t)=>`${e} / ${t} tags`};function G({value:e=[],onChange:n,placeholder:i,recommendations:s,maxTags:l,showMaxTags:u=!1,allowDuplicates:f=!1,validate:p,disabled:m=!1,showClearAll:h=!1,renderTag:g,delimiter:_=/[\n,]/,addOnBlur:v=!0,minLength:y=1,maxLength:C,emptyMessage:w,sortTags:T=!1,caseSensitive:E=!1,field:D,invalid:O,className:k,strings:A}){let j=t.useStrings(ee,{...i?{placeholder:i}:{},...w?{emptyRecommendations:w}:{},...A}),[M,N]=(0,b.useState)(``),[P,F]=(0,b.useState)(!1),[I,L]=(0,b.useState)(-1),R=(0,b.useRef)(null),z=(0,b.useCallback)(e=>{if(typeof e==`string`)return e;if(D&&typeof e==`object`&&e){let t=e[D];return typeof t==`string`?t:t==null?``:String(t)}return String(e)},[D]),B=(0,b.useCallback)(t=>typeof e[0]==`string`||e.length===0?t:D?{[D]:t}:t,[D,e]),V=(0,b.useMemo)(()=>s?s.map(e=>e&&typeof e==`object`&&`value`in e&&`label`in e?e:{value:e,label:z(e)}):[],[s,z]),H=(0,b.useMemo)(()=>{if(!V.length||!M)return V;let t=E?M:M.toLowerCase(),n=new Set(e.map(e=>{let t=z(e);return E?t:t.toLowerCase()}));return V.filter(e=>{let r=E?e.label:e.label.toLowerCase(),i=z(e.value),a=E?i:i.toLowerCase();return(r.includes(t)||a.includes(t))&&(f||!n.has(a))})},[V,M,e,f,E,z]),U=(0,b.useMemo)(()=>T?[...e].sort((e,t)=>{let n=z(e),r=z(t);return n.localeCompare(r)}):e,[e,T,z]),W=(0,b.useCallback)(t=>{let r=typeof t==`string`?B(t):t,i=z(r).trim();if(!i||i.length<y||C&&i.length>C||l&&e.length>=l||!f&&e.some(e=>{let t=z(e);return E?t===i:t.toLowerCase()===i.toLowerCase()})||p&&!p(r))return;let a=[...e,r];n?.(a),N(``),F(!1),L(-1)},[e,n,l,f,p,y,C,E,z,B]),G=(0,b.useCallback)(t=>{let r=e.filter((e,n)=>n!==t);n?.(r)},[e,n]),K=(0,b.useCallback)(e=>{let t=e.target.value;N(t),L(-1),s&&s.length>0&&F(!0)},[s]),te=(0,b.useCallback)(t=>{m||(t.key===`Enter`?(t.preventDefault(),P&&I>=0&&I<H.length?(W(H[I].value),L(-1)):M.trim()&&W(M)):t.key===`Tab`?M&&(t.preventDefault(),W(M)):t.key===`ArrowDown`?(t.preventDefault(),P&&L(e=>e<H.length-1?e+1:e)):t.key===`ArrowUp`?(t.preventDefault(),P&&L(e=>e>0?e-1:0)):t.key===`Escape`?(F(!1),L(-1)):t.key===`Backspace`&&!M&&e.length>0&&G(e.length-1))},[m,P,I,H,M,W,G,e.length]),ne=(0,b.useCallback)(e=>{m||(e.preventDefault(),e.clipboardData.getData(`text`).split(_).map(e=>e.trim()).filter(Boolean).forEach(e=>W(e)))},[m,_,W]),re=(0,b.useCallback)(()=>{setTimeout(()=>{F(!1),v&&M&&W(M)},200)},[v,M,W]),ie=(0,b.useCallback)(()=>{n?.([]),N(``)},[n]),ae=(0,b.useCallback)((e,t,n)=>{let i=`${z(e)}-${t}`;return(0,x.jsxs)(c.t,{variant:`secondary`,className:r.cn(`tags-input--component`,`gap-1 pr-1 font-normal`),children:[z(e),(0,x.jsx)(`button`,{type:`button`,"aria-label":`Remove ${z(e)}`,className:r.cn(`inline-flex size-3.5 items-center justify-center rounded-full`,`text-muted-foreground/70 hover:bg-foreground/10 hover:text-foreground`,`outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,`disabled:opacity-50 disabled:pointer-events-none`),onClick:()=>n(t),disabled:m,children:(0,x.jsx)(S.X,{className:`size-3`,"aria-hidden":`true`})})]},i)},[z,m]),q=!!O;return(0,x.jsxs)(`div`,{className:r.cn(`w-full relative`,k),children:[(0,x.jsxs)(`div`,{className:`relative`,children:[(0,x.jsx)(d.t,{ref:R,type:`text`,placeholder:j.placeholder,value:M,onChange:K,onKeyDown:te,onPaste:ne,onBlur:re,onFocus:()=>{s&&H.length>0&&F(!0)},disabled:m||l!==void 0&&e.length>=l,invalid:q,maxLength:C,className:`w-full`}),!!s&&!!P&&(0,x.jsx)(`div`,{className:`absolute top-full left-0 right-0 z-50 mt-1 max-h-[200px] overflow-y-auto rounded-md bg-popover text-popover-foreground p-1 text-sm shadow-md ring-1 ring-foreground/10`,children:H.length>0?H.map((t,n)=>{let i=z(t.value),a=e.some(e=>z(e)===z(t.value));return(0,x.jsxs)(`button`,{type:`button`,onMouseDown:e=>{e.preventDefault(),W(t.value),L(-1),R.current?.focus()},onMouseEnter:()=>L(n),className:r.cn(`relative flex w-full cursor-pointer items-center justify-between gap-2 rounded-md px-2 py-(--row-py) text-[length:var(--text-xs)]`,`hover:bg-accent hover:text-accent-foreground`,`focus-visible:outline-none`,I===n&&`bg-accent text-accent-foreground`),children:[(0,x.jsx)(`span`,{children:t.label}),(0,x.jsx)(S.Check,{className:r.cn(`ml-auto size-4`,a?`opacity-100`:`opacity-0`)})]},i)}):(0,x.jsx)(o.n,{tag:`div`,size:`xs`,type:`secondary`,className:`px-2 py-(--row-py)`,children:j.emptyRecommendations})})]}),U.length>0&&(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 mt-2`,children:[U.map((e,t)=>g?g(e,t,G):ae(e,t,G)),!!h&&e.length>0&&!m&&(0,x.jsx)(a.n,{type:`button`,size:`sm`,onClick:ie,className:`ml-auto`,children:j.clearAll})]}),!!l&&!!u&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,className:`mt-1`,children:j.summary(e.length,l)})]})}G.displayName=`TagsInput`;var K={prefixPlaceholder:`Prefix`},te={US:{value:`+1`,label:`United States`,iso:`US`},CA:{value:`+1`,label:`Canada`,iso:`CA`},AU:{value:`+61`,label:`Australia`,iso:`AU`},BG:{value:`+359`,label:`Bulgaria`,iso:`BG`},GR:{value:`+30`,label:`Greece`,iso:`GR`},GB:{value:`+44`,label:`United Kingdom`,iso:`GB`},DE:{value:`+49`,label:`Germany`,iso:`DE`},FR:{value:`+33`,label:`France`,iso:`FR`},IT:{value:`+39`,label:`Italy`,iso:`IT`},ES:{value:`+34`,label:`Spain`,iso:`ES`},NL:{value:`+31`,label:`Netherlands`,iso:`NL`},BE:{value:`+32`,label:`Belgium`,iso:`BE`},AT:{value:`+43`,label:`Austria`,iso:`AT`},CH:{value:`+41`,label:`Switzerland`,iso:`CH`},PL:{value:`+48`,label:`Poland`,iso:`PL`},RO:{value:`+40`,label:`Romania`,iso:`RO`},RS:{value:`+381`,label:`Serbia`,iso:`RS`},HR:{value:`+385`,label:`Croatia`,iso:`HR`},SI:{value:`+386`,label:`Slovenia`,iso:`SI`},MK:{value:`+389`,label:`North Macedonia`,iso:`MK`},TR:{value:`+90`,label:`Turkey`,iso:`TR`},RU:{value:`+7`,label:`Russia`,iso:`RU`},UA:{value:`+380`,label:`Ukraine`,iso:`UA`},SK:{value:`+421`,label:`Slovakia`,iso:`SK`},CZ:{value:`+420`,label:`Czech Republic`,iso:`CZ`},HU:{value:`+36`,label:`Hungary`,iso:`HU`},PT:{value:`+351`,label:`Portugal`,iso:`PT`},IE:{value:`+353`,label:`Ireland`,iso:`IE`},SE:{value:`+46`,label:`Sweden`,iso:`SE`},NO:{value:`+47`,label:`Norway`,iso:`NO`},DK:{value:`+45`,label:`Denmark`,iso:`DK`},FI:{value:`+358`,label:`Finland`,iso:`FI`},CY:{value:`+357`,label:`Cyprus`,iso:`CY`},AL:{value:`+355`,label:`Albania`,iso:`AL`},ME:{value:`+382`,label:`Montenegro`,iso:`ME`},BA:{value:`+387`,label:`Bosnia and Herzegovina`,iso:`BA`},XK:{value:`+383`,label:`Kosovo`,iso:`XK`},MD:{value:`+373`,label:`Moldova`,iso:`MD`},BY:{value:`+375`,label:`Belarus`,iso:`BY`},LT:{value:`+370`,label:`Lithuania`,iso:`LT`},LV:{value:`+371`,label:`Latvia`,iso:`LV`},EE:{value:`+372`,label:`Estonia`,iso:`EE`}},ne=[`US`,`CA`,`GB`,`DE`,`FR`,`IT`,`ES`,`AU`],re=e=>typeof e==`string`?te[e.toUpperCase()]??null:e,ie=e=>e.map(re).filter(e=>e!==null),ae=(e,t)=>{let n=e.trim().replace(/\s+/g,` `).replace(/[^\d ()+-]/g,``);return t&&n.startsWith(t)&&(n=n.slice(t.length).replace(/^[\s-]+/,``)),t&&n.startsWith(`0`)&&(n=n.slice(1)),n},q=(e,t)=>e?e.startsWith(`+`)?e:te[e.toUpperCase()]?.value??e:t[0]?.value??``;function oe({normalizeOnBlur:e=!0,onBlur:i,onChange:a,prefix:s,defaultPrefix:c,prefixes:l=ne,onPrefixChange:u,disablePrefixSelector:f=!1,prefixPlaceholder:m,prefixWidth:g=`w-[120px]`,showCountryName:_=!0,showPrefixInDropdown:v=!0,invalid:y,disabled:S,className:C,size:w,strings:T,...E},D){let{defaultControlSize:O}=n.s(),k=p.i(w,O),A=t.useStrings(K,T),j=(0,b.useMemo)(()=>ie(l),[l]),[M,N]=(0,b.useState)((0,b.useMemo)(()=>q(c,j),[c,j])),P=s!==void 0,F=P?q(s,j):M,I=(0,b.useMemo)(()=>j.find(e=>e.value===F),[j,F]),L=(0,b.useCallback)(e=>{e!==null&&(P||N(e),u?.(e))},[P,u]),R=(0,b.useCallback)(e=>{if(!a)return;let t=e.target.value;if(F&&t.startsWith(F)){let n=t.slice(F.length).replace(/^[\s-]+/,``),r=n.startsWith(`0`)?n.slice(1):n;if(r!==t){a({...e,target:{...e.target,value:r},currentTarget:{...e.currentTarget,value:r}});return}}a(e)},[a,F]),z=(0,b.useCallback)(t=>{if(e&&typeof a==`function`){let e=ae(t.target.value,F);e!==t.target.value&&a({...t,target:{...t.target,value:e},currentTarget:{...t.currentTarget,value:e}})}i?.(t)},[e,a,i,F]);if(j.length===0||f){let e=F||c;return e?(0,x.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,x.jsx)(`div`,{"aria-invalid":y||void 0,className:r.cn(`flex items-center justify-center rounded-md border border-input bg-muted px-3`,p.n[k],S&&`opacity-50`,`aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20`),children:(0,x.jsx)(o.n,{tag:`span`,type:`secondary`,weight:`medium`,children:e})}),(0,x.jsx)(`div`,{className:`flex-1`,children:(0,x.jsx)(d.t,{ref:D,size:k,type:`tel`,autoComplete:`tel`,inputMode:`tel`,onChange:R,onBlur:z,invalid:y,disabled:S,className:C,...E})})]}):(0,x.jsx)(d.t,{ref:D,size:k,type:`tel`,autoComplete:`tel`,inputMode:`tel`,onChange:R,onBlur:z,invalid:y,disabled:S,className:r.cn(`phone-input--component`,C),...E})}return(0,x.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,x.jsxs)(h.t,{value:F,onValueChange:e=>L(e),disabled:S,children:[(0,x.jsx)(h.a,{"aria-invalid":y||void 0,className:r.cn(`border-input bg-transparent shrink-0 !shadow-none`,p.n[k],`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,g,S&&`opacity-50 cursor-not-allowed`),children:(0,x.jsx)(h.o,{placeholder:m??A.prefixPlaceholder,children:!!I&&(0,x.jsx)(o.n,{tag:`span`,children:I.value})})}),(0,x.jsx)(h.n,{children:(0,x.jsx)(h.r,{children:j.map(e=>(0,x.jsx)(h.i,{value:e.value,children:(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[!!v&&(0,x.jsx)(o.n,{tag:`span`,weight:`medium`,className:`min-w-[50px]`,children:e.value}),!!_&&(0,x.jsx)(o.n,{tag:`span`,type:`secondary`,lineHeight:`tight`,children:e.label})]})},e.value))})})]}),(0,x.jsx)(`div`,{className:`flex-1`,children:(0,x.jsx)(d.t,{ref:D,size:k,type:`tel`,autoComplete:`tel`,inputMode:`tel`,onChange:R,onBlur:z,invalid:y,disabled:S,className:C,...E})})]})}var se=(0,b.memo)(b.forwardRef(oe));se.displayName=`PhoneInput`;var ce=(0,b.forwardRef)(function({decimalPlaces:e=2,min:t=0,max:n=100,step:r,...i},a){return(0,x.jsx)(g.R,{className:`percentage-input--component`,ref:a,decimalPlaces:e,allowNegative:!1,min:t,max:n,step:r,endAddon:`%`,...i})});ce.displayName=`PercentageInput`;function le({className:e,defaultValue:t,value:n,min:i=0,max:a=100,...o}){let s=b.useMemo(()=>Array.isArray(n)?n:Array.isArray(t)?t:[i,a],[n,t,i,a]);return(0,x.jsx)(w.Slider.Root,{className:r.cn(`data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full`,e),"data-slot":`slider`,defaultValue:t,value:n,min:i,max:a,thumbAlignment:`edge`,...o,children:(0,x.jsxs)(w.Slider.Control,{className:`relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col`,children:[(0,x.jsx)(w.Slider.Track,{"data-slot":`slider-track`,className:`relative grow overflow-hidden rounded-full bg-muted select-none data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5`,children:(0,x.jsx)(w.Slider.Indicator,{"data-slot":`slider-range`,className:`absolute bg-primary select-none data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full`})}),Array.from({length:s.length},(e,t)=>(0,x.jsx)(w.Slider.Thumb,{"data-slot":`slider-thumb`,className:`block size-4 shrink-0 rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50`},t))]})})}function ue({name:e,id:t,value:n,defaultValue:i,min:a=0,max:s=100,step:c=1,disabled:l=!1,invalid:u=!1,onChange:d,onValueChange:f,onValueCommitted:p,showValue:m=!1,formatValue:h,unit:g,className:_,orientation:v=`horizontal`},y){let S=(0,b.useId)(),C=t??`slider-${S}`,w=e??C,T=(0,b.useCallback)(e=>{let t=Array.isArray(e)?e[0]:e;f?.(t),d?.({target:{name:w,value:t}})},[w,d,f]),E=(0,b.useCallback)(e=>{let t=Array.isArray(e)?e[0]:e;p?.(t)},[p]),D=(0,b.useMemo)(()=>{if(!m)return null;let e=n??i??a;return h?h(e):g?`${e}${g}`:String(e)},[m,n,i,a,h,g]),O=n===void 0?void 0:[n],k=i===void 0?[a]:[i];return(0,x.jsxs)(`div`,{className:r.cn(`slider--component`,`flex items-center gap-3`,_),children:[(0,x.jsx)(le,{ref:y,id:C,value:O,defaultValue:k,min:a,max:s,step:c,disabled:l,orientation:v,onValueChange:T,onValueCommitted:E,"aria-invalid":u||void 0,className:r.cn(`min-w-0 flex-1`,u&&`[&_[data-slot=slider-range]]:bg-destructive [&_[data-slot=slider-thumb]]:border-destructive`)}),!!m&&D!==null&&(0,x.jsx)(o.n,{tag:`span`,type:u?`error`:`secondary`,className:`min-w-[3ch] shrink-0 text-right tabular-nums`,children:D})]})}var de=b.forwardRef(ue);de.displayName=`SliderField`;function fe({options:e,value:t,defaultValue:i,onChange:a,name:s,invalid:c,disabled:l,size:u,className:d}){let{defaultControlSize:f}=n.s(),m=_.r[p.i(u,f)];return(0,x.jsx)(E.RadioGroup,{value:t,defaultValue:i,onValueChange:e=>e&&a?.(e),name:s,disabled:l,"aria-invalid":c||void 0,className:r.cn(`list-radio-group--component`,`overflow-hidden rounded-md border [&>[role=radio]~[role=radio]]:border-t`,`aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20`,l&&`pointer-events-none opacity-50`,d),children:e.map(e=>(0,x.jsxs)(T.Radio.Root,{value:e.value,disabled:l||e.disabled,className:r.cn(`group flex w-full items-start gap-3 text-start outline-none cursor-pointer`,`transition-colors hover:bg-muted/40 focus-visible:bg-muted/40`,`data-[checked]:bg-primary/10`,`disabled:cursor-not-allowed disabled:opacity-50`,m),children:[(0,x.jsx)(`div`,{className:`mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-primary group-data-[checked]:border-primary group-not-data-[checked]:border-muted-foreground/50`,children:(0,x.jsx)(T.Radio.Indicator,{render:(0,x.jsx)(S.Circle,{className:`h-2.5 w-2.5 fill-primary text-primary`})})}),(0,x.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,x.jsx)(o.n,{tag:`span`,weight:`medium`,lineHeight:`tight`,className:`block`,children:e.label}),!!e.description&&(0,x.jsx)(o.n,{tag:`span`,size:`xs`,type:`secondary`,className:`block mt-0.5`,children:e.description})]})]},e.value))})}fe.displayName=`ListRadioGroup`;var pe=[`floor`,`half_up`,`ceil`];function me({value:e,onChange:t,labels:n,placeholder:r,...i}){return(0,x.jsx)(z,{className:`rounding-mode-select--component`,options:(0,b.useMemo)(()=>pe.map(e=>({value:e,label:n?.[e]??e})),[n]),value:e,onChange:(0,b.useCallback)(e=>{t?.(e)},[t]),placeholder:r,...i})}me.displayName=`RoundingModeSelect`;var he={placeholder:`Select an item`},J=`__rich_select_empty__`,ge=(0,b.forwardRef)(({options:e,placeholder:i,strings:a,onChange:s,className:c,disabled:l,defaultOpen:u,open:d,onOpenChange:f,name:m,required:g,value:_,defaultValue:v,allowClear:y=!1,invalid:S,size:C},w)=>{let{defaultControlSize:T}=n.s(),E=p.i(C,T),D=t.useStrings(he,a),O=i??D.placeholder,k=(0,b.useCallback)(e=>{if(e!==J)return e===``||e==null?y?J:void 0:e},[y]),A=(0,b.useCallback)(e=>{if(e!==J)return e},[]),j=(0,b.useMemo)(()=>{let t=e.map(e=>({...e,value:k(e.value)??``}));return y&&(t.some(e=>e.label===O)||t.unshift({label:O,value:J})),t},[e,y,O,k]),M=(0,b.useMemo)(()=>k(_??void 0),[_,k]),N=(0,b.useMemo)(()=>k(v??void 0),[v,k]),P=_!==void 0,[F,I]=(0,b.useState)(N),L=P?M:F,R=(0,b.useMemo)(()=>j.find(e=>e.value===L),[L,j]),z=(0,b.useCallback)(e=>{e!=null&&(P||I(e),s?.(A(e)))},[P,s,A]),B=r.cn(`border-input bg-transparent w-full rounded-radius border outline-none transition-[color,box-shadow] !shadow-none`,p.n[E],p.t[E],`h-auto py-2`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive aria-invalid:text-destructive`,`disabled:cursor-not-allowed disabled:opacity-50`,c),V=P?{value:M}:{};return(0,x.jsxs)(h.t,{onValueChange:e=>z(e),disabled:l,defaultOpen:u,open:d,onOpenChange:f,name:m,required:g,defaultValue:N,...V,children:[(0,x.jsx)(h.a,{ref:w,className:r.cn(`rich-select--component`,B),"aria-invalid":S,children:R?(0,x.jsx)(o.n,{tag:`span`,className:`text-left break-words whitespace-normal`,children:R.label}):(0,x.jsx)(h.o,{placeholder:O})}),(0,x.jsx)(h.n,{children:(0,x.jsx)(h.r,{children:j.map(e=>(0,x.jsx)(h.i,{value:e.value,disabled:e.disabled,children:(0,x.jsxs)(`div`,{className:`flex w-full items-center gap-2`,children:[!!e.icon&&(0,x.jsx)(`span`,{className:`w-4 h-4 shrink-0 flex items-center justify-center self-start mt-0.5`,children:e.icon}),(0,x.jsxs)(`div`,{className:`flex flex-col min-w-0 text-left flex-1`,children:[(0,x.jsx)(o.n,{tag:`span`,weight:`medium`,children:e.label}),!!e.description&&(0,x.jsx)(o.n,{tag:`span`,size:`xs`,type:`secondary`,lineHeight:`tight`,className:`mt-0.5 line-clamp-2`,children:e.description})]})]})},e.value))})})]})});ge.displayName=`RichSelect`;var _e={width:`Width`,height:`Height`,depth:`Depth`,unit:`Unit`,widthPlaceholder:`0.00`,heightPlaceholder:`0.00`,depthPlaceholder:`0.00`},ve=[{value:`g`,label:`g (grams)`},{value:`kg`,label:`kg (kilograms)`}],ye=(e,t)=>{if(!e)return{width:``,height:``,depth:``};if(t===`string`&&typeof e==`string`){let t=e.split(`x`).map(e=>e.trim());return{width:t[0]||``,height:t[1]||``,depth:t[2]||``}}return t===`object`&&typeof e==`object`?{width:e.width||``,height:e.height||``,depth:e.depth||``}:{width:``,height:``,depth:``}},be=(e,t,n,r)=>r===`string`?`${e}x${t}x${n}`:{width:e,height:t,depth:n};function xe({value:e,defaultValue:i,format:a=`string`,unit:c,defaultUnit:l=`g`,widthLabel:u,heightLabel:d,depthLabel:f,unitLabel:m,unitPlaceholder:_,widthPlaceholder:v,heightPlaceholder:y,depthPlaceholder:S,onChange:C,onUnitChange:w,decimalPlaces:T=2,min:E=0,max:D,showUnitSelector:O=!0,disableUnitSelector:k=!1,layout:A=`horizontal`,invalid:j,disabled:M=!1,className:N,size:P,strings:F}){let{defaultControlSize:I}=n.s(),L=p.i(P,I),R=t.useStrings(_e,F),z=u??R.width,B=d??R.height,V=f??R.depth,H=_??R.unit,U=v??R.widthPlaceholder,W=y??R.heightPlaceholder,ee=S??R.depthPlaceholder,G=A===`horizontal`,K=A===`vertical`,te=O===!0,ne=(m??``).length>0,re=K?z:``,ie=K?B:``,ae=K?V:``,q=e!==void 0,oe=c!==void 0,se=ye(q?e:i,a),[ce,le]=(0,b.useState)(se.width),[ue,de]=(0,b.useState)(se.height),[fe,pe]=(0,b.useState)(se.depth),[me,he]=(0,b.useState)(c||l),J=ye(e,a),ge=q?J.width:ce,xe=q?J.height:ue,Se=q?J.depth:fe,Ce=oe?c:me;(0,b.useEffect)(()=>{if(q){let t=ye(e,a);le(t.width),de(t.height),pe(t.depth)}},[e,a,q]);let we=(0,b.useCallback)((e,t)=>{let n=ge,r=xe,i=Se;e===`width`&&(n=t),e===`height`&&(r=t),e===`depth`&&(i=t),q||(le(n),de(r),pe(i));let o=be(n,r,i,a);C?.({target:{value:o}})},[ge,xe,Se,q,a,C]),Te=(0,b.useCallback)(e=>{if(e===null)return;let t=e;oe||he(t),w?.(t)},[oe,w]),Ee=(0,x.jsxs)(`div`,{className:`space-y-2`,children:[!!ne&&(0,x.jsx)(s.a,{className:`leading-6`,children:m}),(0,x.jsxs)(h.t,{value:Ce,onValueChange:e=>Te(e),disabled:M||k,children:[(0,x.jsx)(h.a,{"aria-invalid":j||void 0,className:r.cn(`border-input bg-transparent !shadow-none`,p.n[L],`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,`w-32`,M&&`opacity-50 cursor-not-allowed`),children:(0,x.jsx)(h.o,{placeholder:H})}),(0,x.jsx)(h.n,{children:(0,x.jsx)(h.r,{children:ve.map(e=>(0,x.jsx)(h.i,{value:e.value,children:e.label},e.value))})})]})]});return(0,x.jsx)(`div`,{className:r.cn(`dimensions-input--component`,`space-y-2`,N),children:(0,x.jsxs)(`div`,{className:r.cn(`flex gap-2`,A===`vertical`?`flex-col`:`flex-row items-start`),children:[(0,x.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[!!K&&!!re&&(0,x.jsx)(s.a,{children:re}),(0,x.jsx)(g.R,{size:L,value:ge,onChange:e=>we(`width`,e.target.value),placeholder:U,decimalPlaces:T,min:E,max:D,disabled:M,invalid:j,"aria-label":z}),!!G&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,className:`text-center`,children:z})]}),A===`horizontal`&&(0,x.jsx)(`div`,{className:`flex items-center pt-2`,children:(0,x.jsx)(o.n,{tag:`span`,type:`secondary`,children:`×`})}),(0,x.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[!!K&&!!ie&&(0,x.jsx)(s.a,{children:ie}),(0,x.jsx)(g.R,{size:L,value:xe,onChange:e=>we(`height`,e.target.value),placeholder:W,decimalPlaces:T,min:E,max:D,disabled:M,invalid:j,"aria-label":B}),!!G&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,className:`text-center`,children:B})]}),A===`horizontal`&&(0,x.jsx)(`div`,{className:`flex items-center pt-2`,children:(0,x.jsx)(o.n,{tag:`span`,type:`secondary`,children:`×`})}),(0,x.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[!!K&&!!ae&&(0,x.jsx)(s.a,{children:ae}),(0,x.jsx)(g.R,{size:L,value:Se,onChange:e=>we(`depth`,e.target.value),placeholder:ee,decimalPlaces:T,min:E,max:D,disabled:M,invalid:j,"aria-label":V}),!!G&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,className:`text-center`,children:V})]}),!!te&&(0,x.jsxs)(`div`,{className:r.cn(A===`vertical`?`w-full`:`w-32 pt-0`),children:[Ee,!!G&&!ne&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,className:`mt-1 text-center`,children:H})]})]})})}xe.displayName=`DimensionsInput`;var Se={unitLabel:``,unitPlaceholder:``},Ce=[{value:`g`,label:`g`},{value:`kg`,label:`kg`},{value:`lb`,label:`lb`},{value:`oz`,label:`oz`}];function we({value:e,defaultValue:i,unit:a,defaultUnit:o=`g`,onChange:c,onUnitChange:l,decimalPlaces:u=2,min:d=0,max:f,showUnitSelector:m=!0,disableUnitSelector:_=!1,unitLabel:v,unitPlaceholder:y,unitWidth:S=`w-24`,strings:C,invalid:w,disabled:T=!1,size:E,className:D}){let{defaultControlSize:O}=n.s(),k=p.i(E,O),A=t.useStrings(Se,{...v===void 0?{}:{unitLabel:v},...y===void 0?{}:{unitPlaceholder:y},...C}),j=e!==void 0,M=a!==void 0,[N,P]=(0,b.useState)(i??``),[F,I]=(0,b.useState)(a??o),L=j?e??``:N,R=M?a??o:F,z=(0,b.useCallback)(e=>{j||P(e.target.value),c?.({target:{value:e.target.value}})},[j,c]),B=(0,b.useCallback)(e=>{if(e===null)return;let t=e;M||I(t),l?.(t)},[M,l]),V=(0,b.useMemo)(()=>Ce,[]),H=A.unitLabel!==``;return(0,x.jsxs)(`div`,{className:r.cn(`weight-input--component`,`flex items-start gap-2`,D),children:[(0,x.jsx)(`div`,{className:`flex-1`,children:(0,x.jsx)(g.R,{size:k,value:L,onChange:z,decimalPlaces:u,allowNegative:!1,min:d,max:f,disabled:T,invalid:w})}),!!m&&(0,x.jsxs)(`div`,{className:`space-y-2`,children:[!!H&&(0,x.jsx)(s.a,{className:`leading-6`,children:A.unitLabel}),(0,x.jsxs)(h.t,{value:R,onValueChange:e=>B(e),disabled:T||_,children:[(0,x.jsx)(h.a,{"aria-invalid":w||void 0,className:r.cn(`border-input bg-transparent !shadow-none`,p.n[k],`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,(T||_)&&`opacity-50 cursor-not-allowed`,S),children:(0,x.jsx)(h.o,{placeholder:A.unitPlaceholder||void 0})}),(0,x.jsx)(h.n,{children:(0,x.jsx)(h.r,{children:V.map(e=>(0,x.jsx)(h.i,{value:e.value,children:e.label},e.value))})})]})]})]})}we.displayName=`WeightInput`;var Te={latLabel:``,lngLabel:``,latPlaceholder:``,lngPlaceholder:``,previewLinkLabel:``},Ee=(e,t)=>{if(!e)return{lat:``,lng:``};if(t===`string`&&typeof e==`string`){let[t,n]=e.split(`,`).map(e=>e.trim());return{lat:t??``,lng:n??``}}return t===`object`&&typeof e==`object`?{lat:e.lat??``,lng:e.lng??``}:{lat:``,lng:``}},De=(e,t,n)=>n===`string`?`${e},${t}`:{lat:e,lng:t},Oe=(e,t,n)=>{if(!e)return!1;let r=Number(e);return Number.isFinite(r)&&r>=t&&r<=n};function ke({value:e,defaultValue:n,format:i=`object`,onChange:a,latLabel:o,lngLabel:c,latPlaceholder:l,lngPlaceholder:u,decimalPlaces:d=6,showPreviewLink:f=!0,previewLinkLabel:p,strings:m,invalid:h,className:_,disabled:v}){let y=t.useStrings(Te,{...o===void 0?{}:{latLabel:o},...c===void 0?{}:{lngLabel:c},...l===void 0?{}:{latPlaceholder:l},...u===void 0?{}:{lngPlaceholder:u},...p===void 0?{}:{previewLinkLabel:p},...m}),S=e!==void 0,C=Ee(S?e:n,i),[w,T]=(0,b.useState)(C.lat),[E,D]=(0,b.useState)(C.lng),O=Ee(e,i),k=S?O.lat:w,A=S?O.lng:E;(0,b.useEffect)(()=>{S&&(T(O.lat),D(O.lng))},[S,O.lat,O.lng]);let j=(0,b.useCallback)((e,t)=>{S||(T(e),D(t)),a?.({target:{value:De(e,t,i)}})},[S,a,i]),M=(0,b.useMemo)(()=>{let e=Oe(k,-90,90),t=Oe(A,-180,180);return!e||!t?null:`https://www.google.com/maps?q=${encodeURIComponent(`${k},${A}`)}`},[k,A]);return(0,x.jsxs)(`div`,{className:r.cn(`coordinates-input--component`,`space-y-3`,_),children:[(0,x.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 md:grid-cols-2`,children:[(0,x.jsxs)(`div`,{className:`space-y-2`,children:[!!y.latLabel&&(0,x.jsx)(s.a,{children:y.latLabel}),(0,x.jsx)(g.R,{placeholder:y.latPlaceholder||void 0,value:k,onChange:e=>j(e.target.value,A),decimalPlaces:d,allowNegative:!0,min:-90,max:90,invalid:h,disabled:v})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[!!y.lngLabel&&(0,x.jsx)(s.a,{children:y.lngLabel}),(0,x.jsx)(g.R,{placeholder:y.lngPlaceholder||void 0,value:A,onChange:e=>j(k,e.target.value),decimalPlaces:d,allowNegative:!0,min:-180,max:180,invalid:h,disabled:v})]})]}),!!f&&!!M&&!!y.previewLinkLabel&&(0,x.jsx)(s.i,{href:M,type:`secondary`,underline:!1,children:y.previewLinkLabel})]})}ke.displayName=`CoordinatesInput`;function Ae({value:e,onChange:t,placeholder:n,readableFormat:r=`dd-MM-yyyy HH:mm`,stepMinutes:i=30,modal:a=!0,invalid:o,disabled:s}){let c=e?new Date(e):void 0;return(0,x.jsx)(v.t,{className:`date-time-input--component`,mode:`single`,disabled:s,error:o?` `:void 0,placeholder:n,value:c,onChange:(0,b.useCallback)(e=>{t?.(e.date?e.date.toISOString():void 0)},[t]),readableFormat:r,withTime:{enabled:!0,format:`24`,step:i},modal:a})}Ae.displayName=`DateTimeInput`;var je={placeholder:`Select time`,dialogTitle:`Select Time`,hours:`Hours`,minutes:`Minutes`,seconds:`Seconds`,now:`Now`,done:`Done`,hoursPlaceholder:`HH`,minutesPlaceholder:`MM`,secondsPlaceholder:`SS`,am:`AM`,pm:`PM`},Y=e=>String(e).padStart(2,`0`),X=e=>{let t=e.trim();if(t===``)return null;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:null},Z=(e,t,n)=>Math.min(Math.max(e,t),n),Me=e=>(e??``).replace(/\D/g,``).slice(0,2),Ne=(e,t)=>{if(!Number.isFinite(t)||t<=0||t===1)return e;let n=e%t,r=n>=Math.max(1,Math.floor(t*.8)),i=e-n,a=r?i+t:i;return a>=60?0:a};function Pe({className:e,value:n=`00:00:00`,onChange:a,invalid:c,disabled:l,placeholder:u,dialogTitle:f,hoursLabel:p,minutesLabel:m,secondsLabel:h,nowLabel:g,doneLabel:_,format:C=`24`,minuteStep:w=5,showSeconds:T=!0,strings:E}){let D=(0,b.useId)(),O=t.useStrings(je,{...u===void 0?{}:{placeholder:u},...f===void 0?{}:{dialogTitle:f},...p===void 0?{}:{hours:p},...m===void 0?{}:{minutes:m},...h===void 0?{}:{seconds:h},...g===void 0?{}:{now:g},..._===void 0?{}:{done:_},...E??{}}),k=(0,b.useCallback)((e,t)=>{let n=X(e??``)??0;return C===`12`?{hours:Y(n>12?12:Z(n===0?12:n,1,12)),meridiem:t}:{hours:Y(n>24?24:Z(n,0,24)),meridiem:t}},[C]),A=(0,b.useCallback)(e=>{let t=X(e??``)??0;return t>59&&(t=0),t=Ne(Z(t,0,59),w),Y(t)},[w]),j=(0,b.useCallback)(e=>{let t=X(e??``)??0;return t>59&&(t=0),t=Z(t,0,59),Y(t)},[]),M=(0,b.useCallback)((e,t,n,r)=>{let i=X(e)??0,a=X(t)??0;a>59&&(a=0),a=Ne(Z(a,0,59),w);let o=T?X(n)??0:0;if(o>59&&(o=0),o=T?Z(o,0,59):0,C===`12`){let e=i>12?12:Z(i===0?12:i,1,12);return`${Y(r===`AM`?e===12?0:e:e===12?12:e+12)}:${Y(a)}:${Y(o)}`}return`${Y(i>24?24:Z(i,0,24))}:${Y(a)}:${Y(o)}`},[C,w,T]),N=(0,b.useCallback)(e=>{let[t=`00`,n=`00`,r=`00`]=(e??``).split(`:`),i=T?r:`00`;return{hours:Me(t),minutes:Me(n),seconds:Me(i)}},[T]),[P,F]=(0,b.useState)(!1),[I,L]=(0,b.useState)(()=>N(n)),[R,z]=(0,b.useState)(()=>{let[e=`00`]=(n??``).split(`:`);return(X(e)??0)>=12?`PM`:`AM`}),B=(0,b.useRef)({});(0,b.useEffect)(()=>{if(P)return;L(N(n));let[e=`00`]=(n??``).split(`:`);z((X(e)??0)>=12?`PM`:`AM`)},[P,N,n]);let V=(e,t)=>{let n=Me(t);L(t=>({...t,[e]:n})),B.current[e]&&window.clearTimeout(B.current[e]),B.current[e]=window.setTimeout(()=>{L(t=>{let n={...t};if(e===`hours`){let e=(n.hours??``).trim();e.length===1&&(n.hours=`0${e}`),(n.hours??``).trim().length===2&&(n.hours=k(n.hours,R).hours)}if(e===`minutes`){let e=(n.minutes??``).trim();e.length===1&&(n.minutes=`0${e}`),(n.minutes??``).trim().length===2&&(n.minutes=A(n.minutes))}if(e===`seconds`){let e=(n.seconds??``).trim();e.length===1&&(n.seconds=`0${e}`),(n.seconds??``).trim().length===2&&(n.seconds=j(n.seconds))}let r=M(n.hours,n.minutes,n.seconds,R);a?.(r);let[i=`00`,o=`00`,s=`00`]=r.split(`:`);return C===`12`?n.hours=Y((X(i)??0)%12||12):n.hours=i,n.minutes=o,n.seconds=s,n})},400)},H=e=>{B.current[e]&&window.clearTimeout(B.current[e]),L(e=>{let t={...e};t.hours=k(t.hours,R).hours,t.minutes=A(t.minutes),t.seconds=j(t.seconds);let n=M(t.hours,t.minutes,t.seconds,R);a?.(n);let[r=`00`,i=`00`,o=`00`]=n.split(`:`);return{hours:C===`12`?Me(String((X(r)??0)%12||12)):r,minutes:i,seconds:o}})},U=(0,b.useMemo)(()=>{let e=M(I.hours,I.minutes,I.seconds,R);if(!T){let[t=`00`,n=`00`]=e.split(`:`);return`${t}:${n}`}return e},[R,M,T,I.hours,I.minutes,I.seconds]);return(0,x.jsxs)(y.n,{open:P,onOpenChange:F,children:[(0,x.jsx)(y.s,{render:t=>(0,x.jsx)(i.t,{...t,id:D,variant:`secondary`,buttonStyle:`outline`,"aria-expanded":P,"aria-invalid":c,disabled:l,className:r.cn(`time-picker--component`,v.n,`w-full justify-between text-left`,!n&&`!text-muted-foreground`,t.className,e),children:t.children}),children:(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(S.Clock,{className:`h-4 w-4`}),(0,x.jsx)(`span`,{children:U||O.placeholder})]})}),(0,x.jsx)(y.t,{className:`w-auto p-4`,align:`start`,children:(0,x.jsxs)(`div`,{className:`space-y-4`,children:[(0,x.jsx)(o.n,{tag:`div`,weight:`medium`,align:`center`,children:O.dialogTitle}),(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsxs)(`div`,{className:`text-center`,children:[(0,x.jsx)(s.a,{size:`xs`,className:`text-muted-foreground`,children:O.hours}),(0,x.jsx)(d.t,{inputMode:`numeric`,value:I.hours,onChange:e=>V(`hours`,e.target.value),onFocus:e=>e.currentTarget.select(),onClick:e=>e.currentTarget.select(),onBlur:()=>H(`hours`),placeholder:O.hoursPlaceholder,className:`w-16 text-center`})]}),(0,x.jsx)(o.n,{tag:`div`,className:`text-2xl`,children:`:`}),(0,x.jsxs)(`div`,{className:`text-center`,children:[(0,x.jsx)(s.a,{size:`xs`,className:`text-muted-foreground`,children:O.minutes}),(0,x.jsx)(d.t,{inputMode:`numeric`,value:I.minutes,onChange:e=>V(`minutes`,e.target.value),onFocus:e=>e.currentTarget.select(),onClick:e=>e.currentTarget.select(),onBlur:()=>H(`minutes`),placeholder:O.minutesPlaceholder,className:`w-16 text-center`})]}),!!T&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(o.n,{tag:`div`,className:`text-2xl`,children:`:`}),(0,x.jsxs)(`div`,{className:`text-center`,children:[(0,x.jsx)(s.a,{size:`xs`,className:`text-muted-foreground`,children:O.seconds}),(0,x.jsx)(d.t,{inputMode:`numeric`,value:I.seconds,onChange:e=>V(`seconds`,e.target.value),onFocus:e=>e.currentTarget.select(),onClick:e=>e.currentTarget.select(),onBlur:()=>H(`seconds`),placeholder:O.secondsPlaceholder,className:`w-16 text-center`})]})]}),C===`12`&&(0,x.jsxs)(`div`,{className:`flex items-end gap-1 pb-0.5`,children:[(0,x.jsx)(i.t,{type:`button`,variant:R===`AM`?`primary`:`secondary`,buttonStyle:R===`AM`?`solid`:`outline`,onClick:()=>z(`AM`),children:O.am}),(0,x.jsx)(i.t,{type:`button`,variant:R===`PM`?`primary`:`secondary`,buttonStyle:R===`PM`?`solid`:`outline`,onClick:()=>z(`PM`),children:O.pm})]})]}),(0,x.jsxs)(`div`,{className:`flex gap-2`,children:[(0,x.jsx)(i.t,{variant:`secondary`,buttonStyle:`outline`,className:`flex-1`,onClick:()=>{let e=new Date,t={hours:String(C===`12`?e.getHours()%12||12:e.getHours()),minutes:String(e.getMinutes()),seconds:``};L(t),z(e.getHours()>=12?`PM`:`AM`),a?.(M(t.hours,t.minutes,t.seconds,e.getHours()>=12?`PM`:`AM`))},children:O.now}),(0,x.jsx)(i.t,{variant:`primary`,buttonStyle:`solid`,className:`flex-1`,onClick:()=>{a?.(M(I.hours,I.minutes,I.seconds,R)),F(!1)},children:O.done})]})]})})]})}Pe.displayName=`TimePicker`;var Fe=e=>{if(e===0)return`0 Bytes`;let t=1024,n=[`Bytes`,`KB`,`MB`,`GB`,`TB`],r=Math.floor(Math.log(e)/Math.log(t));return`${(e/t**r).toFixed(2)} ${n[r]}`},Ie=0,Le=()=>`${Date.now().toString(36)}-${(Ie++).toString(36)}`,Re=e=>{let[t,n]=(0,b.useState)([]),[r,i]=(0,b.useState)({}),a=(0,b.useCallback)(Fe,[]),o=(0,b.useCallback)(t=>{if(e?.minSize!==void 0&&t.size<e.minSize)return`Size (${Fe(t.size)}) is smaller than minimum (${Fe(e.minSize)}).`;if(e?.maxSize!==void 0&&t.size>e.maxSize)return`Size (${Fe(t.size)}) exceeds maximum (${Fe(e.maxSize)}).`;let n=t.name.split(`.`).pop()?.toLowerCase()||``;if(e?.allowedExtensions&&!e.allowedExtensions.map(e=>e.toLowerCase()).includes(n))return`Extension (.${n}) is not allowed.`;if(e?.customValidator){let n=e.customValidator(t);if(n!==!0)return typeof n==`string`?n:`Custom validation failed.`}return null},[e]),s=(0,b.useCallback)((t,r=!1)=>{let a=Array.isArray(t)?t:Array.from(t),s={};n(t=>{let n=r?[]:[...t];return a.forEach(t=>{let r=t.name.split(`.`).pop()?.toLowerCase()||``;if(n.some(e=>e.name===t.name&&e.size===t.size&&e.extension===r))return;let i=o(t);if(i){s[t.name]=i;return}if(e?.maxFiles!==void 0&&n.length+1>e.maxFiles){s[t.name]=`Cannot exceed max files limit of ${e.maxFiles}.`;return}let a={id:Le(),file:t,name:t.name,size:t.size,formattedSize:Fe(t.size),type:t.type,extension:r,lastModified:t.lastModified};n.push(a)}),n}),i(s)},[e?.maxFiles,o]);return{files:t,addFiles:(0,b.useCallback)(e=>s(e,!1),[s]),setFiles:(0,b.useCallback)(e=>s(e,!0),[s]),remove:(0,b.useCallback)(e=>{n(t=>t.filter(t=>t.id!==e))},[]),removeAll:(0,b.useCallback)(()=>{n(e=>e.length===0?e:[]),i({})},[]),formatSize:a,validationErrors:r}},ze={instruction:`Drag a file here or click to browse`,helper:``,browse:`Browse files`,remove:`Remove`};function Be({accept:e,multiple:n=!1,value:a,onChange:s,onChangeFiles:c,disabled:l,invalid:u,instructionText:d,browseButtonText:f,removeButtonText:p,helperText:m,strings:h},g){let _=t.useStrings(ze,{...d===void 0?{}:{instruction:d},...m===void 0?{}:{helper:m},...f===void 0?{}:{browse:f},...p===void 0?{}:{remove:p},...h}),{files:v,setFiles:y,remove:C,removeAll:w,validationErrors:T}=Re({maxFiles:n?void 0:1}),E=(0,b.useRef)(null),[D,O]=(0,b.useState)(!1);(0,b.useEffect)(()=>{if(n){Array.isArray(a)&&a.length>0?y(a):a||w();return}a instanceof File?y([a]):a||w()},[a,n]);let k=v[0],A=k?.name??(a instanceof File?a.name:``),j=k?.formattedSize??(a instanceof File?`${Math.round(a.size/1024*100)/100} KB`:``),M=n&&v.length>0,N=!n&&A.length>0,P=(0,b.useCallback)(()=>{l||E.current?.click()},[l]),F=(0,b.useCallback)(e=>{if(!e||e.length===0){w(),n?c?.([]):s?.(void 0);return}let t=Array.from(e);y(e),n?c?.(t):s?.(t[0])},[n,s,c,w,y]),I=(0,b.useCallback)(e=>{let t=e.target.files;if(!t||t.length===0){E.current&&(E.current.value=``);return}F(t),E.current&&(E.current.value=``)},[F]),L=(0,b.useCallback)(()=>{k&&C(k.id),E.current&&(E.current.value=``),s?.(void 0)},[s,C,k]),R=(0,b.useCallback)(e=>{let t=v.filter(t=>t.id!==e).map(e=>e.file);C(e),c?.(t),E.current&&(E.current.value=``)},[v,c,C]),z=(0,b.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),B=(0,b.useCallback)(e=>{z(e),l||O(!0)},[l,z]),V=(0,b.useCallback)(e=>{z(e),O(!1)},[z]),H=(0,b.useCallback)(e=>{if(z(e),O(!1),l)return;let t=e.dataTransfer?.files;!t||t.length===0||(F(t),E.current&&(E.current.value=``))},[l,F,z]),U=(0,b.useMemo)(()=>r.cn(`relative flex min-h-[180px] flex-col items-center justify-center gap-4 rounded-xl border border-dashed px-6 py-10 text-center transition-colors duration-150`,u?`border-destructive`:`border-muted-foreground/60`,`bg-muted/40`,`hover:border-primary hover:bg-primary/5 hover:text-primary`,l?`cursor-not-allowed opacity-50 hover:border-muted-foreground/60 hover:bg-muted/40 hover:text-muted-foreground`:``,!l&&D?`border-primary bg-primary/10 text-primary`:``),[l,D,u]);return(0,x.jsxs)(`div`,{className:r.cn(`file-upload--component`,`space-y-3`),children:[(0,x.jsxs)(`div`,{role:`button`,tabIndex:l?-1:0,className:U,onClick:e=>{e.defaultPrevented||P()},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),P())},onDragEnter:B,onDragOver:B,onDragLeave:V,onDrop:H,"aria-disabled":l,"aria-invalid":u||void 0,children:[(0,x.jsx)(`input`,{ref:e=>{E.current=e,typeof g==`function`?g(e):g&&(g.current=e)},type:`file`,className:`hidden`,accept:e,multiple:n,onChange:I,onClick:e=>{e.stopPropagation()},disabled:l}),(0,x.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-primary/10 text-primary`,children:(0,x.jsx)(S.UploadIcon,{className:`h-6 w-6`,"aria-hidden":`true`})}),(0,x.jsxs)(`div`,{className:`space-y-1`,children:[(0,x.jsx)(o.n,{weight:`medium`,children:_.instruction}),!!_.helper&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,children:_.helper})]}),(0,x.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,onClick:e=>{e.preventDefault(),e.stopPropagation(),P()},disabled:l,children:_.browse})]}),!!M&&(0,x.jsx)(`div`,{className:`space-y-2`,children:v.map(e=>(0,x.jsxs)(`div`,{className:`flex items-center gap-3 border rounded-md p-3 bg-card`,children:[(0,x.jsx)(`div`,{className:`shrink-0 h-10 w-10 rounded bg-muted flex items-center justify-center`,children:(0,x.jsx)(S.File,{className:`h-5 w-5 text-muted-foreground`})}),(0,x.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,x.jsx)(o.n,{tag:`div`,weight:`medium`,className:`truncate`,title:e.name,children:e.name}),(0,x.jsx)(o.n,{tag:`div`,size:`xs`,type:`secondary`,children:e.formattedSize})]}),(0,x.jsx)(i.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,size:`xs`,icon:S.Trash2Icon,onClick:()=>R(e.id),children:_.remove})]},e.id))}),!!N&&(0,x.jsxs)(`div`,{className:`flex items-center gap-3 border rounded-md p-3 bg-card`,children:[(0,x.jsx)(`div`,{className:`shrink-0 h-10 w-10 rounded bg-muted flex items-center justify-center`,children:(0,x.jsx)(S.File,{className:`h-5 w-5 text-muted-foreground`})}),(0,x.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,x.jsx)(o.n,{tag:`div`,weight:`medium`,className:`truncate`,title:A,children:A}),(0,x.jsx)(o.n,{tag:`div`,size:`xs`,type:`secondary`,children:j})]}),(0,x.jsx)(i.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,size:`xs`,icon:S.Trash2Icon,onClick:L,children:_.remove})]}),Object.keys(T).length>0&&(0,x.jsx)(`ul`,{className:`space-y-1.5`,children:Object.entries(T).map(([e,t])=>(0,x.jsxs)(`li`,{role:`alert`,className:`flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2`,children:[(0,x.jsx)(`span`,{"aria-hidden":`true`,className:`mt-0.5 inline-flex size-4 shrink-0 items-center justify-center rounded-full bg-destructive/15 text-destructive`,children:(0,x.jsx)(`span`,{className:`size-1.5 rounded-full bg-destructive`})}),(0,x.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,x.jsx)(o.n,{size:`xs`,weight:`medium`,className:`truncate text-destructive`,children:e}),(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,className:`text-destructive/80`,children:t})]})]},e))})]})}var Ve=b.default.forwardRef(Be);Ve.displayName=`FileUpload`;var He=2,Ue={square:`aspect-square`,standard:`aspect-[4/3]`,widescreen:`aspect-[16/9]`,portrait:`aspect-[9/16]`},We={select:`Select image`,change:`Change image`,remove:`Remove`,noSelection:`No file selected yet.`,keepCurrent:`Current image stays until you upload a new one.`,supportsTemplate:`Supports {ext} files up to {size} MB.`,moreFiles:e=>`+ ${e} more file${e===1?``:`s`}`};function Ge({accept:e=`.png,.jpg,.jpeg,.gif,.svg`,multiple:n=!1,value:a,onChange:s,disabled:c,defaultPreviewUrl:l,aspectRatio:u=`square`,fit:d=`cover`,maxWidth:f,layout:p=`stacked`,invalid:m,selectButtonText:h,changeButtonText:g,removeButtonText:_,strings:v},y){let C=t.useStrings(We,{...h===void 0?{}:{select:h},...g===void 0?{}:{change:g},..._===void 0?{}:{remove:_},...v}),w=(0,b.useId)(),T=(0,b.useRef)(null),E=(0,b.useMemo)(()=>{if(!e)return[`png`,`jpg`,`jpeg`,`gif`,`svg`];let t=e.split(`,`).map(e=>e.trim()).map(e=>{if(!e)return null;if(e.startsWith(`.`))return e.slice(1).toLowerCase();if(e.includes(`/`)){let t=e.split(`/`)[1]??``;return t===`*`||t.length===0?null:t.replace(/\+.*/,``).toLowerCase()}return e.toLowerCase()}).filter(e=>!!e);if(t.length!==0)return Array.from(new Set(t))},[e]),{files:D,setFiles:O,remove:k,removeAll:A,validationErrors:j}=Re((0,b.useMemo)(()=>({maxFiles:n?void 0:1,allowedExtensions:E}),[n,E]));(0,b.useEffect)(()=>{a?O([a]):(A(),T.current&&(T.current.value=``))},[a,O,A]);let M=D[0],N=M?C.change:C.select,[P,F]=(0,b.useState)(void 0),I=(0,b.useMemo)(()=>!E||E.length===0?null:E.map(e=>e.toUpperCase()).join(`, `),[E]);(0,b.useEffect)(()=>{let e=M?.file??a;if(!e){F(void 0);return}let t=URL.createObjectURL(e);return F(t),()=>URL.revokeObjectURL(t)},[M,a]);let L=P??l,R=!!L,z=Ue[u]??Ue.square,B=d===`contain`?`object-contain p-3`:`object-cover`,V=f?typeof f==`number`?`${f}px`:f:`240px`,H=p===`inline`?void 0:{maxWidth:V},U=p===`inline`?{maxWidth:f?V:`185px`,width:`100%`}:void 0,W=(0,b.useCallback)(e=>{let t=e.target.files;if(!t||t.length===0){A(),s?.(void 0),T.current&&(T.current.value=``);return}O(t),s?.(t[0])},[A,O,s]),ee=(0,b.useCallback)(()=>{c||T.current?.click()},[c]),G=(0,b.useCallback)(()=>{M&&k(M.id),s?.(void 0),T.current&&(T.current.value=``)},[M,k,s]);return(0,x.jsxs)(`div`,{className:r.cn(`image-upload--component`,`space-y-3`),style:H,children:[(0,x.jsx)(`input`,{ref:e=>{T.current=e,typeof y==`function`?y(e):y&&(y.current=e)},id:w,type:`file`,className:`sr-only`,accept:e,multiple:n,disabled:c,onChange:W}),(0,x.jsxs)(`div`,{className:r.cn(p===`inline`?`flex items-start gap-4`:`space-y-3`),children:[(0,x.jsx)(`div`,{className:r.cn(`relative overflow-hidden rounded-md border transition-colors`,p===`inline`?`flex-shrink-0 w-full`:`w-full`,z,R?`border-border bg-muted/20`:r.cn(`border-dashed bg-background text-muted-foreground dark:bg-foreground`,m?`border-destructive`:`border-muted-foreground/60`)),style:U,children:R&&L?(0,x.jsx)(`img`,{src:L,alt:M?.name||`Selected image`,className:r.cn(`absolute inset-0 h-full w-full`,B)}):(0,x.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:(0,x.jsx)(S.ImageIcon,{"aria-hidden":!0,className:`h-8 w-8`})})}),(0,x.jsxs)(`div`,{className:r.cn(`space-y-2`,p===`inline`&&`flex-1 min-w-0`),children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,x.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,onClick:ee,disabled:c,children:N}),!M&&!!R&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,children:C.keepCurrent})]}),!!I&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,children:C.supportsTemplate.replace(`{ext}`,I).replace(`{size}`,String(He))}),!!M&&(0,x.jsxs)(`div`,{className:`space-y-1`,children:[(0,x.jsx)(o.n,{weight:`medium`,title:M.name,className:`truncate`,children:M.name}),(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,children:M.formattedSize}),!!n&&D.length>1&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,children:C.moreFiles(D.length-1)}),(0,x.jsx)(i.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,size:`xs`,icon:S.Trash2,onClick:G,children:C.remove})]}),!M&&!R&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,children:C.noSelection})]})]}),Object.keys(j).length>0&&(0,x.jsx)(`div`,{className:`space-y-1`,children:Object.entries(j).map(([e,t])=>(0,x.jsxs)(o.n,{size:`xs`,type:`error`,children:[e,`: `,t]},e))})]})}var Ke=b.default.forwardRef(Ge);Ke.displayName=`ImageUpload`;var qe={instruction:`Drag files here or click to browse`,helper:``,dragOver:`Release to upload`},Je={compact:{padding:`px-4 py-4`,minH:`min-h-[112px]`,iconBox:`h-9 w-9`,iconSize:`size-4`},base:{padding:`px-6 py-8`,minH:`min-h-[180px]`,iconBox:`h-12 w-12`,iconSize:`size-6`},lg:{padding:`px-8 py-12`,minH:`min-h-[260px]`,iconBox:`h-14 w-14`,iconSize:`size-7`}};function Ye({onDrop:e,accept:n,multiple:i=!1,disabled:a=!1,invalid:s=!1,size:c=`base`,icon:l,className:u,children:d,strings:f},p){let m=t.useStrings(qe,f),h=(0,b.useRef)(null),[g,_]=(0,b.useState)(!1),v=Je[c],y=(0,b.useCallback)(()=>{a||h.current?.click()},[a]),C=(0,b.useCallback)(t=>{let n=t.target.files;!n||n.length===0||(e(Array.from(n)),h.current&&(h.current.value=``))},[e]),w=(0,b.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),a||_(!0)},[a]),T=(0,b.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),_(!1)},[]),E=(0,b.useCallback)(t=>{if(t.preventDefault(),t.stopPropagation(),_(!1),a)return;let n=t.dataTransfer?.files;!n||n.length===0||e(Array.from(n))},[a,e]);return(0,x.jsxs)(`div`,{role:`button`,tabIndex:a?-1:0,"aria-disabled":a||void 0,"aria-invalid":s||void 0,onClick:e=>{e.defaultPrevented||y()},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),y())},onDragEnter:w,onDragOver:w,onDragLeave:T,onDrop:E,className:r.cn(`dropzone--component`,`relative flex flex-col items-center justify-center gap-3 rounded-xl border border-dashed text-center transition-colors duration-150`,v.minH,v.padding,s?`border-destructive`:`border-muted-foreground/40`,`bg-muted/30 hover:border-primary hover:bg-primary/5 hover:text-primary`,a&&`cursor-not-allowed opacity-50 hover:border-muted-foreground/40 hover:bg-muted/30 hover:text-muted-foreground`,!a&&g&&`border-primary bg-primary/10 text-primary`,u),children:[(0,x.jsx)(`input`,{ref:e=>{h.current=e,typeof p==`function`?p(e):p&&(p.current=e)},type:`file`,className:`hidden`,accept:n,multiple:i,disabled:a,onChange:C,onClick:e=>e.stopPropagation()}),(0,x.jsx)(`span`,{className:r.cn(`inline-flex items-center justify-center rounded-full bg-primary/10 text-primary`,v.iconBox),"aria-hidden":`true`,children:l??(0,x.jsx)(S.UploadCloud,{className:v.iconSize})}),(0,x.jsxs)(`div`,{className:`space-y-1`,children:[(0,x.jsx)(o.n,{size:c===`compact`?`xs`:`sm`,weight:`medium`,children:g?m.dragOver:m.instruction}),!!m.helper&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,children:m.helper})]}),!!d&&(0,x.jsx)(`div`,{onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:d})]})}var Xe=b.forwardRef(Ye);Xe.displayName=`Dropzone`;var Ze={change:`Change photo`,remove:`Remove photo`,hint:`Click or drop an image`,dragOver:`Drop image to upload`},Qe={sm:{box:`size-16`,icon:`size-4`,remove:`size-5`},base:{box:`size-24`,icon:`size-5`,remove:`size-6`},lg:{box:`size-32`,icon:`size-6`,remove:`size-7`}};function $e({value:e,onChange:n,defaultPreviewUrl:i,accept:a=`.png,.jpg,.jpeg,.gif,.webp`,disabled:s=!1,invalid:c=!1,size:l=`base`,className:u,strings:d,initials:f},p){let m=t.useStrings(Ze,d),h=(0,b.useId)(),g=(0,b.useRef)(null),[_,v]=(0,b.useState)(!1),y=Qe[l],{files:C,setFiles:w,removeAll:T}=Re({maxFiles:1,allowedExtensions:(0,b.useMemo)(()=>a.split(`,`).map(e=>e.trim().replace(/^\./,``).toLowerCase()).filter(Boolean),[a])});(0,b.useEffect)(()=>{e?w([e]):T()},[e]);let E=C[0],[D,O]=(0,b.useState)(void 0);(0,b.useEffect)(()=>{let t=E?.file??e;if(!t){O(void 0);return}let n=URL.createObjectURL(t);return O(n),()=>URL.revokeObjectURL(n)},[E,e]);let k=D??i,A=!!k,j=(0,b.useCallback)(e=>{let t=e.target.files;!t||t.length===0||(w(t),n?.(t[0]),g.current&&(g.current.value=``))},[n,w]),M=(0,b.useCallback)(()=>{s||g.current?.click()},[s]),N=(0,b.useCallback)(()=>{T(),n?.(void 0),g.current&&(g.current.value=``)},[n,T]),P=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),M())},F=(0,b.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),s||v(!0)},[s]),I=(0,b.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),v(!1)},[]),L=(0,b.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),v(!1),s)return;let t=e.dataTransfer?.files;!t||t.length===0||(w(t),n?.(t[0]))},[s,n,w]);return(0,x.jsxs)(`div`,{className:r.cn(`avatar-upload--component`,`inline-flex flex-col items-center gap-2`,u),children:[(0,x.jsxs)(`div`,{role:`button`,tabIndex:s?-1:0,"aria-label":m.change,"aria-disabled":s||void 0,"aria-invalid":c||void 0,onClick:M,onKeyDown:P,onDragEnter:F,onDragOver:F,onDragLeave:I,onDrop:L,className:r.cn(`group relative flex shrink-0 items-center justify-center overflow-hidden rounded-full`,`border border-dashed transition-colors duration-150 outline-none`,`focus-visible:ring-2 focus-visible:ring-ring/50`,A?`border-border/60 bg-muted/20`:r.cn(`bg-muted/30 hover:border-primary hover:bg-primary/5`,c?`border-destructive`:`border-muted-foreground/40`),s&&`cursor-not-allowed opacity-50`,!s&&_&&`border-primary bg-primary/10`,y.box),children:[(0,x.jsx)(`input`,{id:h,ref:e=>{g.current=e,typeof p==`function`?p(e):p&&(p.current=e)},type:`file`,className:`sr-only`,"aria-label":m.change,accept:a,disabled:s,onChange:j}),A&&k?(0,x.jsx)(`img`,{src:k,alt:m.change,className:`absolute inset-0 size-full object-cover`}):f?(0,x.jsx)(o.n,{size:l===`lg`?`lg`:`base`,weight:`bold`,className:`leading-none`,children:f}):(0,x.jsx)(S.Camera,{className:r.cn(y.icon,`text-muted-foreground`),"aria-hidden":`true`}),!s&&A&&(0,x.jsx)(`div`,{className:`pointer-events-none absolute inset-0 hidden items-center justify-center bg-foreground/50 text-background backdrop-blur-[1px] group-hover:flex`,"aria-hidden":`true`,children:(0,x.jsx)(S.Camera,{className:y.icon})}),!s&&A&&(0,x.jsx)(`button`,{type:`button`,"aria-label":m.remove,onClick:e=>{e.stopPropagation(),N()},className:r.cn(`absolute right-0.5 top-0.5 inline-flex items-center justify-center rounded-full bg-card text-foreground shadow ring-1 ring-border`,`opacity-0 transition-opacity group-hover:opacity-100 focus-visible:opacity-100`,y.remove),children:(0,x.jsx)(S.X,{className:`size-3`})}),!s&&!A&&_&&(0,x.jsx)(o.n,{size:`xxs`,weight:`medium`,className:`absolute inset-x-0 bottom-1.5 text-center text-primary`,children:m.dragOver})]}),!A&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,children:m.hint})]})}var et=b.forwardRef($e);et.displayName=`AvatarUpload`;var tt={addInstruction:`Drop or click to add images`,helper:``,dragOver:`Release to upload`,cover:`Cover`,removeAria:`Remove image`,maxReached:`You have reached the maximum number of images.`},nt=0,rt=()=>`media-${Date.now().toString(36)}-${(nt++).toString(36)}`;function it({item:e,isFirst:t,disabled:n,onRemove:i,strings:a,tileClassName:o}){let{attributes:s,listeners:c,setNodeRef:l,transform:u,transition:d,isDragging:f}=(0,O.useSortable)({id:e.id,disabled:n});return(0,x.jsxs)(`div`,{ref:l,style:{transform:k.CSS.Transform.toString(u),transition:d},className:r.cn(`media-gallery--component`,`group relative aspect-square overflow-hidden rounded-lg border border-border/60 bg-muted/30`,`cursor-grab active:cursor-grabbing`,f&&`z-10 shadow-lg ring-2 ring-primary/40`,n&&`pointer-events-none opacity-50`,o),...s,...c,children:[(0,x.jsx)(`img`,{src:e.previewUrl,alt:e.file.name,className:`absolute inset-0 size-full object-cover`,draggable:!1}),t&&(0,x.jsx)(`span`,{className:`absolute left-1.5 top-1.5 rounded-full bg-card/90 px-1.5 py-0.5 text-xxs font-semibold text-foreground shadow ring-1 ring-border`,children:a.cover}),(0,x.jsx)(`button`,{type:`button`,"aria-label":a.removeAria,onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),i()},className:r.cn(`absolute right-1.5 top-1.5 inline-flex size-6 items-center justify-center rounded-full bg-card text-foreground shadow ring-1 ring-border`,`opacity-0 transition-opacity group-hover:opacity-100 focus-visible:opacity-100`),children:(0,x.jsx)(S.X,{className:`size-3.5`})})]})}function at({value:e,onChange:n,accept:i=`.png,.jpg,.jpeg,.gif,.webp`,maxFiles:a,disabled:s=!1,invalid:c=!1,className:l,tileClassName:u,strings:d}){let f=t.useStrings(tt,d),p=(0,b.useId)(),m=(0,b.useRef)(null),[h,g]=(0,b.useState)([]),[_,v]=(0,b.useState)(!1),y=(0,D.useSensors)((0,D.useSensor)(D.PointerSensor,{activationConstraint:{distance:6}})),C=(0,b.useRef)([]);C.current=h,(0,b.useEffect)(()=>{e&&g(t=>t.length===e.length&&t.every((t,n)=>t.file===e[n])?t:(t.forEach(e=>URL.revokeObjectURL(e.previewUrl)),e.map(e=>({id:rt(),file:e,previewUrl:URL.createObjectURL(e)}))))},[e]),(0,b.useEffect)(()=>()=>{C.current.forEach(e=>URL.revokeObjectURL(e.previewUrl))},[]);let w=(0,b.useCallback)(e=>{n?.(e.map(e=>e.file))},[n]),T=(0,b.useCallback)(e=>{s||g(t=>{let n=a===void 0?e.length:Math.max(0,a-t.length),r=e.slice(0,n).map(e=>({id:rt(),file:e,previewUrl:URL.createObjectURL(e)})),i=[...t,...r];return w(i),i})},[s,w,a]),E=(0,b.useCallback)(e=>{g(t=>{let n=t.find(t=>t.id===e);n&&URL.revokeObjectURL(n.previewUrl);let r=t.filter(t=>t.id!==e);return w(r),r})},[w]),k=(0,b.useCallback)(e=>{let t=e.target.files;!t||t.length===0||(T(Array.from(t)),m.current&&(m.current.value=``))},[T]),A=(0,b.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),s||v(!0)},[s]),j=(0,b.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),v(!1)},[]),M=(0,b.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),v(!1),s)return;let t=e.dataTransfer?.files;!t||t.length===0||T(Array.from(t))},[T,s]),N=(0,b.useCallback)(e=>{let{active:t,over:n}=e;!n||t.id===n.id||g(e=>{let r=e.findIndex(e=>e.id===t.id),i=e.findIndex(e=>e.id===n.id);if(r===-1||i===-1)return e;let a=[...e],[o]=a.splice(r,1);return a.splice(i,0,o),w(a),a})},[w]),P=(0,b.useMemo)(()=>h.map(e=>e.id),[h]),F=a!==void 0&&h.length>=a;return(0,x.jsxs)(`div`,{className:r.cn(`space-y-3`,l),children:[(0,x.jsx)(D.DndContext,{sensors:y,onDragEnd:N,children:(0,x.jsx)(O.SortableContext,{items:P,strategy:O.rectSortingStrategy,children:(0,x.jsxs)(`div`,{className:r.cn(`grid grid-cols-2 gap-2`,`sm:grid-cols-3 md:grid-cols-4`),children:[h.map((e,t)=>(0,x.jsx)(it,{item:e,isFirst:t===0,disabled:s,onRemove:()=>E(e.id),strings:f,tileClassName:u},e.id)),!F&&(0,x.jsxs)(`div`,{role:`button`,tabIndex:s?-1:0,"aria-disabled":s||void 0,"aria-invalid":c||void 0,onClick:()=>!s&&m.current?.click(),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),m.current?.click())},onDragEnter:A,onDragOver:A,onDragLeave:j,onDrop:M,className:r.cn(`flex aspect-square items-center justify-center rounded-lg border border-dashed text-center outline-none transition-colors`,`hover:border-primary hover:bg-primary/5 hover:text-primary focus-visible:ring-2 focus-visible:ring-ring/50`,c?`border-destructive`:`border-muted-foreground/40`,s&&`cursor-not-allowed opacity-50`,!s&&_&&`border-primary bg-primary/10 text-primary`),children:[(0,x.jsx)(`input`,{id:p,ref:m,type:`file`,className:`sr-only`,accept:i,multiple:!0,disabled:s,onChange:k}),(0,x.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-2`,children:[(0,x.jsx)(S.ImagePlus,{className:`size-5 text-muted-foreground`,"aria-hidden":`true`}),(0,x.jsx)(o.n,{size:`xs`,weight:`medium`,children:_?f.dragOver:f.addInstruction})]})]})]})})}),!!F&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,children:f.maxReached}),!F&&!!f.helper&&(0,x.jsx)(o.n,{size:`xs`,type:`secondary`,children:f.helper})]})}at.displayName=`MediaGallery`;var ot={queued:`Queued`,uploading:`Uploading`,done:`Uploaded`,error:`Failed`,cancelled:`Cancelled`,cancel:`Cancel`,retry:`Retry`,remove:`Remove`},st={queued:{icon:S.Clock,bg:`bg-muted`,fg:`text-muted-foreground`,bar:`bg-muted-foreground/30`},uploading:{icon:S.UploadCloud,bg:`bg-primary/15`,fg:`text-primary`,bar:`bg-primary`},done:{icon:S.Check,bg:`bg-success/15`,fg:`text-success`,bar:`bg-success`},error:{icon:S.AlertCircle,bg:`bg-destructive/15`,fg:`text-destructive`,bar:`bg-destructive`},cancelled:{icon:S.X,bg:`bg-muted`,fg:`text-muted-foreground`,bar:`bg-muted-foreground/30`}};function ct({items:e,onCancel:n,onRetry:a,onRemove:s,className:c,strings:l}){let u=t.useStrings(ot,l),d={queued:u.queued,uploading:u.uploading,done:u.done,error:u.error,cancelled:u.cancelled};return e.length===0?null:(0,x.jsx)(`ul`,{className:r.cn(`upload-progress-list--component`,`space-y-2`,c),children:e.map(e=>{let t=st[e.status],c=t.icon,l=e.status===`done`?100:e.status===`cancelled`||e.status===`error`?e.progress??0:Math.max(0,Math.min(100,e.progress??0)),f=e.status===`uploading`||e.status===`queued`;return(0,x.jsx)(`li`,{className:`rounded-md border border-border/60 bg-card px-3 py-2`,children:(0,x.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,x.jsx)(`span`,{className:r.cn(`inline-flex size-7 shrink-0 items-center justify-center rounded-md`,t.bg,t.fg),children:(0,x.jsx)(c,{className:r.cn(`size-3.5`,e.status===`uploading`&&`animate-pulse`)})}),(0,x.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,x.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2`,children:[(0,x.jsx)(o.n,{weight:`medium`,className:`truncate`,children:e.name}),(0,x.jsx)(o.n,{size:`xxs`,type:`secondary`,className:`shrink-0 tabular-nums`,children:e.size})]}),f?(0,x.jsx)(`div`,{className:`mt-1.5 h-1 w-full overflow-hidden rounded-full bg-muted`,children:(0,x.jsx)(`div`,{className:r.cn(`h-full rounded-full transition-[width] duration-200`,t.bar),style:{width:`${l}%`}})}):(0,x.jsxs)(o.n,{size:`xxs`,type:e.status===`error`?`error`:`secondary`,children:[d[e.status],e.status===`error`&&!!e.error&&` — ${e.error}`]})]}),(0,x.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[e.status===`uploading`&&!!n&&(0,x.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,"aria-label":u.cancel,onClick:()=>n(e.id),children:(0,x.jsx)(S.X,{className:`size-3.5`})}),e.status===`error`&&!!a&&(0,x.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,"aria-label":u.retry,onClick:()=>a(e.id),children:(0,x.jsx)(S.RefreshCw,{className:`size-3.5`})}),(e.status===`done`||e.status===`error`||e.status===`cancelled`)&&!!s&&(0,x.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,"aria-label":u.remove,onClick:()=>s(e.id),children:(0,x.jsx)(S.X,{className:`size-3.5`})})]})]})},e.id)})})}ct.displayName=`UploadProgressList`;var lt={heading:`Upload progress`,completedLabel:`Completed`,failedLabel:`Failed`,uploadingLabel:`Uploading`,queuedLabel:`Queued`,clearAll:`Clear all`};function ut(e){let t=0,n=0,r=0,i=0;for(let a of e)a.status===`done`?t+=1:a.status===`error`?n+=1:a.status===`uploading`?r+=1:a.status===`queued`&&(i+=1);return{completed:t,failed:n,uploading:r,queued:i}}var dt=(0,b.forwardRef)(function({items:e,onAddFiles:n,onCancel:a,onRetry:s,onRemove:l,onClearAll:u,dropzone:d,className:f,strings:p,listStrings:m},h){let g=t.useStrings(lt,p),{completed:_,failed:v,uploading:y,queued:S}=ut(e),C=(0,b.useCallback)(e=>{e.length>0&&n(e)},[n]),w=e.length>0;return(0,x.jsxs)(`div`,{ref:h,className:r.cn(`upload-tray--component`,`flex flex-col gap-4`,f),children:[(0,x.jsx)(Xe,{onDrop:C,accept:d?.accept,multiple:d?.multiple,size:d?.size,disabled:d?.disabled,invalid:d?.invalid,strings:d?.strings}),!!w&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,x.jsx)(o.n,{tag:`span`,weight:`semibold`,children:g.heading}),_>0&&(0,x.jsxs)(c.t,{variant:`success`,children:[g.completedLabel,`: `,_]}),v>0&&(0,x.jsxs)(c.t,{variant:`destructive`,children:[g.failedLabel,`: `,v]}),y>0&&(0,x.jsxs)(c.t,{variant:`info`,children:[g.uploadingLabel,`: `,y]}),S>0&&(0,x.jsxs)(c.t,{variant:`secondary`,children:[g.queuedLabel,`: `,S]})]}),!!u&&(0,x.jsx)(i.t,{variant:`secondary`,buttonStyle:`ghost`,onClick:u,children:g.clearAll})]}),(0,x.jsx)(ct,{items:e,onCancel:a,onRetry:s,onRemove:l,strings:m})]})]})});dt.displayName=`UploadTray`;var Q={emptyState:`No items added yet.`,addItem:`Add item`,removeAriaLabel:`Remove item`},ft={emptyState:Q.emptyState,addButton:Q.addItem,removeAriaLabel:Q.removeAriaLabel,dragHandleAriaLabel:`Drag to reorder`};function pt({item:e,index:t,sortable:n,rowVariant:a,removeVariant:o,hideRemove:s,disabled:c,strings:l,onRemove:u,renderRow:d}){let f=(0,O.useSortable)({id:e.id,disabled:c||!n}),p=n?f.isDragging:!1,m=n?{transform:k.CSS.Transform.toString(f.transform),transition:f.transition,opacity:p?.6:1}:void 0,h=n?f.setNodeRef:void 0,g=n?f.attributes:{},_=n?f.listeners:void 0,v=n?(0,x.jsx)(`button`,{type:`button`,"aria-label":l.dragHandleAriaLabel,className:r.cn(`inline-flex size-9 shrink-0 items-center justify-center rounded-md`,`text-muted-foreground/50 hover:text-foreground hover:bg-muted`,`cursor-grab active:cursor-grabbing`,`outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,`transition-colors`,c&&`pointer-events-none opacity-50`),...g,..._,children:(0,x.jsx)(S.GripVertical,{className:`size-4`,"aria-hidden":`true`})}):null,y=s?null:o===`icon-button`?(0,x.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,size:`sm`,"aria-label":l.removeAriaLabel,disabled:c,onClick:()=>u(t),className:`shrink-0`,children:(0,x.jsx)(S.Trash2,{className:`size-4`,"aria-hidden":`true`})}):(0,x.jsx)(`button`,{type:`button`,"aria-label":l.removeAriaLabel,disabled:c,onClick:()=>u(t),className:r.cn(`inline-flex size-9 shrink-0 items-center justify-center rounded-md`,`text-muted-foreground/70 hover:bg-destructive/10 hover:text-destructive`,`outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,`transition-colors`,`disabled:pointer-events-none disabled:opacity-50`),children:(0,x.jsx)(S.X,{className:`size-4`,"aria-hidden":`true`})});return a===`card`?(0,x.jsx)(`div`,{ref:h,style:m,className:r.cn(`repeater--component`,`relative rounded-md border border-input bg-card p-4`,n&&`pl-2`),children:(0,x.jsxs)(`div`,{className:`flex items-start gap-2`,children:[v,(0,x.jsx)(`div`,{className:`min-w-0 flex-1`,children:d(e,{index:t,isDragging:p})}),y]})}):(0,x.jsxs)(`div`,{ref:h,style:m,className:`flex items-start gap-2`,children:[v,(0,x.jsx)(`div`,{className:`min-w-0 flex-1`,children:d(e,{index:t,isDragging:p})}),y]})}function $({items:e,renderRow:n,onAdd:a,onRemove:s,onMove:c,sortable:l=!1,rowVariant:u=`inline`,removeVariant:d=`ghost`,hideRemove:f=!1,hideAdd:p=!1,disabled:m=!1,strings:h,className:g}){let _=t.useStrings(ft,h),v=(0,D.useSensors)((0,D.useSensor)(D.PointerSensor,{activationConstraint:{distance:4}}),(0,D.useSensor)(D.KeyboardSensor,{coordinateGetter:O.sortableKeyboardCoordinates})),y=(0,b.useCallback)(t=>{let{active:n,over:r}=t;if(!r||n.id===r.id)return;let i=e.findIndex(e=>e.id===n.id),a=e.findIndex(e=>e.id===r.id);i<0||a<0||c?.(i,a)},[e,c]),C=(0,b.useMemo)(()=>e.map(e=>e.id),[e]),w=(0,x.jsx)(`div`,{className:`space-y-2`,children:e.map((e,t)=>(0,x.jsx)(pt,{item:e,index:t,sortable:l,rowVariant:u,removeVariant:d,hideRemove:f,disabled:m,strings:_,onRemove:s,renderRow:n},e.id))});return(0,x.jsxs)(`div`,{className:r.cn(`space-y-3`,g),children:[e.length===0?(0,x.jsx)(`div`,{className:`rounded-md border border-dashed border-input p-4`,children:(0,x.jsx)(o.n,{type:`secondary`,children:_.emptyState})}):l?(0,x.jsx)(D.DndContext,{sensors:v,collisionDetection:D.closestCenter,onDragEnd:y,children:(0,x.jsx)(O.SortableContext,{items:C,strategy:O.verticalListSortingStrategy,children:w})}):w,!p&&(0,x.jsxs)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,size:`sm`,disabled:m,onClick:a,children:[(0,x.jsx)(S.Plus,{className:`size-4 mr-1.5`}),_.addButton]})]})}$.displayName=`Repeater`;var mt={keyLabel:`Key`,valueLabel:`Value`,keyPlaceholder:`key`,valuePlaceholder:`value`,addButton:`Add row`,removeRowAriaLabel:`Remove row`,emptyState:`No rows yet.`},ht=()=>typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():Math.random().toString(36).slice(2,10),gt=(0,b.memo)(function({row:e,keyPlaceholder:t,valuePlaceholder:n,invalid:i,onKeyChange:a,onValueChange:o}){let{id:s,key:c,value:l}=e;return(0,x.jsxs)(`div`,{className:r.cn(`key-value-editor--component`,`grid grid-cols-1 md:grid-cols-2 gap-2`),children:[(0,x.jsx)(d.t,{value:c??``,placeholder:t,onChange:e=>a(s,e.target.value),invalid:i}),(0,x.jsx)(d.t,{value:l??``,placeholder:n,onChange:e=>o(s,e.target.value),invalid:i})]})});function _t({value:e,onChange:n,invalid:i,sortable:a=!1,keyPlaceholder:o,valuePlaceholder:c,keyLabel:l,valueLabel:u,addButtonText:d,strings:f}){let p=t.useStrings(mt,{...o===void 0?{}:{keyPlaceholder:o},...c===void 0?{}:{valuePlaceholder:c},...l===void 0?{}:{keyLabel:l},...u===void 0?{}:{valueLabel:u},...d===void 0?{}:{addButton:d},...f}),m=(0,b.useRef)(!1),[h,g]=(0,b.useState)(()=>e&&Object.keys(e).length>0?Object.entries(e).map(([e,t])=>({id:ht(),key:e,value:String(t??``)})):[{id:ht(),key:``,value:``}]),_=(0,b.useCallback)(e=>{let t={};e.forEach(({key:e,value:n})=>{e.trim()!==``&&(t[e]=n??``)}),m.current=!0,n?.(t),queueMicrotask(()=>{m.current=!1})},[n]),v=(0,b.useCallback)((e,t)=>{g(n=>{let r=n.map(n=>n.id===e?{...n,key:t}:n);return _(r),r})},[_]),y=(0,b.useCallback)((e,t)=>{g(n=>{let r=n.map(n=>n.id===e?{...n,value:t}:n);return _(r),r})},[_]),S=(0,b.useCallback)(()=>{g(e=>{let t=[...e,{id:ht(),key:``,value:``}];return _(t),t})},[_]),C=(0,b.useCallback)(e=>{g(t=>{let n=t.filter((t,n)=>n!==e),r=n.length?n:[{id:ht(),key:``,value:``}];return _(r),r})},[_]),w=(0,b.useCallback)((e,t)=>{g(n=>{let r=[...n],[i]=r.splice(e,1);return r.splice(t,0,i),_(r),r})},[_]);return(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(!!p.keyLabel||!!p.valueLabel)&&(0,x.jsxs)(`div`,{className:r.cn(`grid grid-cols-1 md:grid-cols-2 gap-2`,a?`pl-11`:``,`pr-11`),children:[!!p.keyLabel&&(0,x.jsx)(s.a,{className:`flex items-center`,children:p.keyLabel}),!!p.valueLabel&&(0,x.jsx)(s.a,{className:`flex items-center`,children:p.valueLabel})]}),(0,x.jsx)($,{items:h,sortable:a,onAdd:S,onRemove:C,onMove:w,strings:{emptyState:p.emptyState,addButton:p.addButton,removeAriaLabel:p.removeRowAriaLabel},renderRow:e=>(0,x.jsx)(gt,{row:e,keyPlaceholder:p.keyPlaceholder,valuePlaceholder:p.valuePlaceholder,invalid:i,onKeyChange:v,onValueChange:y})})]})}_t.displayName=`KeyValueEditor`;var vt={placeholder:`Enter value`,addButton:`Add item`,...Q};function yt({name:e,placeholder:n,addButtonText:r,emptyMessage:i,invalid:a,sortable:o=!1,strings:s}){let c=t.useStrings(vt,{...n===void 0?{}:{placeholder:n},...r===void 0?{}:{addButton:r},...i===void 0?{}:{emptyState:i},...s}),{control:l,register:u}=(0,A.useFormContext)(),{fields:f,append:p,remove:m,move:h}=(0,A.useFieldArray)({control:l,name:e});return(0,x.jsx)($,{className:`string-repeater--component`,items:f,sortable:o,onAdd:()=>p(``),onRemove:e=>m(e),onMove:(e,t)=>h(e,t),strings:{emptyState:c.emptyState,addButton:c.addButton,removeAriaLabel:c.removeAriaLabel},renderRow:(t,{index:n})=>(0,x.jsx)(d.t,{...u(`${e}.${n}`),placeholder:c.placeholder,invalid:a})})}yt.displayName=`StringRepeater`;var bt={addButton:`Add item`,...Q};function xt({name:e,fields:n,addButtonText:i,emptyMessage:a,invalid:o,sortable:s=!1,strings:c}){let l=t.useStrings(bt,{...i===void 0?{}:{addButton:i},...a===void 0?{}:{emptyState:a},...c}),{control:u,register:f}=(0,A.useFormContext)(),{fields:p,append:h,remove:_,move:v}=(0,A.useFieldArray)({control:u,name:e}),y=(0,b.useCallback)(()=>n.reduce((e,t)=>(e[t.name]=``,e),{}),[n]);return(0,x.jsx)($,{items:p,sortable:s,rowVariant:`card`,removeVariant:`ghost`,onAdd:()=>h(y()),onRemove:e=>_(e),onMove:(e,t)=>v(e,t),strings:{emptyState:l.emptyState,addButton:l.addButton,removeAriaLabel:l.removeAriaLabel},renderRow:(t,{index:i})=>(0,x.jsx)(`div`,{className:r.cn(`object-repeater--component`,`space-y-3`),children:n.map(t=>{let n=`${e}.${i}.${t.name}`;return(0,x.jsx)(g.F,{label:t.label,required:t.required,hint:t.hint,htmlFor:n,children:t.type===`textarea`?(0,x.jsx)(m.t,{...f(n),id:n,placeholder:t.placeholder,minRows:3,invalid:o}):(0,x.jsx)(d.t,{...f(n),id:n,type:t.type||`text`,placeholder:t.placeholder,invalid:o})},t.name)})})})}xt.displayName=`ObjectRepeater`;var St={addButton:`Add item`,emptyState:Q.emptyState,dragHandle:`Drag to reorder`,removeAriaLabel:Q.removeAriaLabel};function Ct({name:e,placeholder:n,addButtonText:r,emptyMessage:i,disableSort:a=!1,invalid:o,strings:s}){let c=t.useStrings(St,{...r===void 0?{}:{addButton:r},...i===void 0?{}:{emptyState:i},...s??{}}),{control:l,register:u}=(0,A.useFormContext)(),{fields:f,append:p,remove:m,move:h}=(0,A.useFieldArray)({control:l,name:e});return(0,x.jsx)($,{className:`list--component`,items:f,sortable:!a,onAdd:()=>p(``),onRemove:e=>m(e),onMove:(e,t)=>h(e,t),strings:{emptyState:c.emptyState,addButton:c.addButton,removeAriaLabel:c.removeAriaLabel,dragHandleAriaLabel:c.dragHandle},renderRow:(t,{index:r})=>(0,x.jsx)(d.t,{...u(`${e}.${r}`),placeholder:n,invalid:o})})}Ct.displayName=`List`;function wt({name:e,value:t,options:i,onChange:a,allowClear:o=!1,size:s,fullWidth:c=!1,disabled:l=!1,invalid:u=!1,className:d}){let{defaultControlSize:f}=n.s(),m=p.i(s,f),h=b.useCallback(e=>{e===t?o&&a(null):a(e)},[o,a,t]);return(0,x.jsx)(`div`,{"data-name":e,role:`radiogroup`,"aria-invalid":u||void 0,className:r.cn(`pill-radio-group--component`,`border-input inline-flex items-center overflow-hidden rounded-lg border`,c&&`w-full`,`aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20`,l&&`pointer-events-none opacity-50`,d),children:i.map((e,n)=>{let i=e.value===t,a=e.icon;return(0,x.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":i,"aria-label":(typeof e.label==`string`?e.label:void 0)||e.value,disabled:l||e.disabled,onClick:()=>h(e.value),className:r.cn(`inline-flex select-none items-center justify-center font-medium transition-colors`,`focus-visible:ring-ring/50 outline-none focus-visible:z-10 focus-visible:ring-2`,`disabled:pointer-events-none disabled:opacity-50`,_.i[m],c&&`flex-1`,n>0&&`border-input border-l`,i?`bg-primary text-primary-foreground`:`bg-background text-foreground hover:bg-muted`),children:[!!a&&(0,x.jsx)(a,{className:r.cn(`size-3.5`,e.label&&`mr-1.5`)}),e.label]},e.value)})})}wt.displayName=`PillRadioGroup`;function Tt({name:e,type:t=`text`,placeholder:n,primaryLocale:i,secondaryLocale:a,activeLocale:o,invalid:s,className:c}){let{register:l}=(0,A.useFormContext)(),u=`${e}.${o===`primary`?i:a}`;return t===`textarea`?(0,x.jsx)(m.t,{...l(u),placeholder:n,minRows:3,invalid:s,className:r.cn(`localized-string-field--component`,c)}):(0,x.jsx)(d.t,{...l(u),type:t===`number`?`number`:`text`,placeholder:n,invalid:s,className:c})}Tt.displayName=`LocalizedStringField`;function Et({name:e,fields:t,primaryLocale:n,secondaryLocale:r,activeLocale:i,invalid:a,className:o}){let{register:c}=(0,A.useFormContext)(),l=i===`primary`?n:r;return(0,x.jsx)(`div`,{className:`w-full space-y-3 rounded-md border p-4 ${o??``}`,children:t.map(t=>{let n=`${e}.${l}.${t.name}`;return(0,x.jsxs)(`div`,{className:`w-full space-y-1.5`,children:[(0,x.jsxs)(s.a,{htmlFor:n,children:[t.label,!!t.required&&(0,x.jsx)(`span`,{className:`text-destructive ml-1`,children:`*`})]}),t.type===`textarea`?(0,x.jsx)(m.t,{...c(n),id:n,placeholder:t.placeholder,minRows:3,invalid:a}):(0,x.jsx)(d.t,{...c(n),id:n,type:t.type===`number`?`number`:`text`,placeholder:t.placeholder,invalid:a})]},t.name)})})}Et.displayName=`LocalizedObjectField`;var Dt={placeholder:`Enter value`,addButton:Q.addItem,emptyState:Q.emptyState,removeAriaLabel:Q.removeAriaLabel};function Ot({name:e,placeholder:n,addButtonText:r,emptyMessage:i,primaryLocale:a,secondaryLocale:o,activeLocale:s,invalid:c,sortable:l=!1,strings:u}){let d=t.useStrings(Dt,{...n===void 0?{}:{placeholder:n},...r===void 0?{}:{addButton:r},...i===void 0?{}:{emptyState:i},...u??{}}),{control:f,register:p}=(0,A.useFormContext)(),h=`${e}.${s===`primary`?a:o}`,{fields:g,append:_,remove:v,move:y}=(0,A.useFieldArray)({control:f,name:h});return(0,x.jsx)($,{className:`localized-string-repeater--component`,items:g,sortable:l,onAdd:()=>_(``),onRemove:e=>v(e),onMove:(e,t)=>y(e,t),strings:{emptyState:d.emptyState,addButton:d.addButton,removeAriaLabel:d.removeAriaLabel},renderRow:(e,{index:t})=>(0,x.jsx)(m.t,{...p(`${h}.${t}`),placeholder:d.placeholder,minRows:2,invalid:c})})}Ot.displayName=`LocalizedStringRepeater`;function kt({title:e,description:t,actions:n,children:i,footer:a,padding:o=`sm`,surface:s=`card`,className:c,contentClassName:u}){return(0,x.jsx)(l.t,{"data-component":`form-section`,"data-slot":`form-section`,title:e,description:t,headerAction:n,footerSlot:a,padding:o,surface:s,className:r.cn(`form-section--component`,c),contentClassName:r.cn(`form-section--content grid gap-4`,u),children:i})}function At({children:e,leading:t,trailing:n,sticky:i=!1,className:a}){return(0,x.jsxs)(`div`,{"data-component":`form-actions-bar`,"data-slot":`form-actions-bar`,className:r.cn(`form-actions-bar--component flex min-w-0 flex-col gap-3 border-t border-border bg-background/95 px-4 py-3 backdrop-blur sm:flex-row sm:items-center sm:justify-between`,i&&`sticky bottom-0 z-30`,a),children:[(0,x.jsx)(`div`,{"data-slot":`form-actions-leading`,className:`form-actions-bar--leading min-w-0 flex-1`,children:t}),(0,x.jsx)(`div`,{"data-slot":`form-actions-trailing`,className:`form-actions-bar--trailing flex shrink-0 flex-wrap items-center gap-2`,children:n??e})]})}function jt({title:e,description:t,errors:n=[],action:i,className:a}){return(0,x.jsxs)(u.t,{"data-component":`error-summary`,"data-slot":`error-summary`,variant:`destructive`,className:r.cn(`error-summary--component`,a),children:[(0,x.jsx)(u.i,{children:e}),!!t&&(0,x.jsx)(u.r,{children:t}),n.length>0&&(0,x.jsx)(`ul`,{"data-slot":`error-summary-list`,className:`error-summary--list col-start-2 m-0 list-disc space-y-1 pl-4 text-xs text-muted-foreground`,children:n.map((e,t)=>(0,x.jsx)(`li`,{children:e},t))}),!!i&&(0,x.jsx)(u.n,{children:i})]})}function Mt({title:e,description:t,actions:n,variant:i=`warning`,className:a}){return(0,x.jsxs)(u.t,{"data-component":`dirty-state-banner`,"data-slot":`dirty-state-banner`,variant:i,className:r.cn(`dirty-state-banner--component`,a),children:[(0,x.jsx)(u.i,{children:e}),!!t&&(0,x.jsx)(u.r,{children:t}),!!n&&(0,x.jsx)(u.n,{children:n})]})}function Nt({isSubmitting:e=!1,isDirty:t=!0,disableWhenPristine:n=!1,disabled:a,children:o,...s}){return(0,x.jsx)(i.t,{...s,"data-component":`submit-state-button`,"data-slot":`submit-state-button`,type:s.type??`submit`,loading:e,disabled:a||n&&!t,className:r.cn(`submit-state-button--component`,s.className),children:o})}function Pt(e){let{formId:t,onSubmit:n,errors:i,isLoading:a,label:s}=e,c=(e=>{let t=i?.[e];return Array.isArray(t)?t[0]:t})(`password`),l=c?()=>c:void 0,u=(Array.isArray(i?.general)?i.general[0]:i?.general)||(Array.isArray(i?.server)?i.server[0]:i?.server),{handleSubmit:f,control:p}=(0,A.useForm)({defaultValues:(0,b.useMemo)(()=>({password:``}),[])}),m=async e=>{await n({password:e.password})},h=!!a;return(0,x.jsxs)(`form`,{id:t,onSubmit:f(m),className:r.cn(`operation-password-form--component`,`space-y-4`),children:[!!u&&(0,x.jsx)(o.n,{type:`error`,children:u}),(0,x.jsx)(g.P,{name:`password`,control:p,error:l,label:s,required:!0,children:(e,t,n)=>(0,x.jsx)(d.t,{type:`password`,value:e.value??``,onChange:e.onChange,onBlur:e.onBlur,name:e.name,invalid:n,disabled:h,autoFocus:!0})})]})}Pt.displayName=`OperationPasswordForm`,Object.defineProperty(exports,"$",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"J",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return ke}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"Q",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"X",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"Y",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"Z",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return kt}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return ot}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Et}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Ct}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return xt}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return At}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Tt}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return _t}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Nt}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return yt}}),Object.defineProperty(exports,"q",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return jt}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Ot}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Pt}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return wt}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return at}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return ct}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return de}});
|
|
2
|
+
//# sourceMappingURL=forms-Bi5rUH3t.cjs.map
|