themelia-react-ui 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +527 -0
- package/README.md +47 -14
- package/THIRD_PARTY_NOTICES.md +13 -0
- package/dist/accordion-Cjb6sx0G.js +208 -0
- package/dist/accordion-Cjb6sx0G.js.map +1 -0
- package/dist/action-menu-CllU52Mm.js +280 -0
- package/dist/action-menu-CllU52Mm.js.map +1 -0
- package/dist/affordance-geometry.generated-tF36bREk.js +140 -0
- package/dist/affordance-geometry.generated-tF36bREk.js.map +1 -0
- package/dist/ai-artifact-DvTwDVyL.js +1148 -0
- package/dist/ai-artifact-DvTwDVyL.js.map +1 -0
- package/dist/{app-shell-BE_j8-AT.js → app-shell-C4FhvCqF.js} +5 -5
- package/dist/{app-shell-BE_j8-AT.js.map → app-shell-C4FhvCqF.js.map} +1 -1
- package/dist/attachment-BxDfL2mw.js +246 -0
- package/dist/attachment-BxDfL2mw.js.map +1 -0
- package/dist/{auth-M3vGMgDR.js → auth-ax2BqjrI.js} +241 -235
- package/dist/auth-ax2BqjrI.js.map +1 -0
- package/dist/{avatar-djdaaQ_s.js → avatar-DAPlDvhJ.js} +67 -66
- package/dist/avatar-DAPlDvhJ.js.map +1 -0
- package/dist/badge-HpFqoqSY.js +93 -0
- package/dist/badge-HpFqoqSY.js.map +1 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +1 -1
- package/dist/base/batch-action-bar.js +3 -0
- package/dist/base/buttons.js +2 -3
- package/dist/base/cards.js +2 -2
- package/dist/base/carousel.js +50 -46
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +69 -81
- package/dist/base/cascader.js.map +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +3 -3
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +2 -2
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +7 -7
- package/dist/base/feedback.js +3 -3
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +20 -20
- package/dist/base/inline-edit.js.map +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +1 -1
- package/dist/base/metadata-list.js +3 -0
- package/dist/base/navigation.js +7 -7
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +1 -1
- package/dist/base/repeaters.js +216 -220
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/signature-pad.js +147 -137
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +79 -2
- package/dist/base/spinner.js.map +1 -0
- package/dist/base/structure.js +1 -1
- package/dist/base/table.js +1 -1
- package/dist/base/text-inputs.js +2 -2
- package/dist/base/toaster.js +46 -45
- package/dist/base/toaster.js.map +1 -1
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +2 -2
- package/dist/batch-action-bar-DnUJ21NQ.js +105 -0
- package/dist/batch-action-bar-DnUJ21NQ.js.map +1 -0
- package/dist/blocks/admin.js +171 -169
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +308 -285
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +626 -589
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +1 -1
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +2051 -1329
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +3 -2
- package/dist/blocks/onboarding.js +68 -58
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +27 -26
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +1 -1
- package/dist/breadcrumbs-C-oqs1sQ.js +129 -0
- package/dist/breadcrumbs-C-oqs1sQ.js.map +1 -0
- package/dist/{button-R9CCoH7A.js → button-DVzspB_G.js} +15 -14
- package/dist/button-DVzspB_G.js.map +1 -0
- package/dist/{button-BS3KDg00.js → buttons-DPZekJFu.js} +208 -216
- package/dist/buttons-DPZekJFu.js.map +1 -0
- package/dist/cards-BaBZR-AU.js +68 -0
- package/dist/cards-BaBZR-AU.js.map +1 -0
- package/dist/{chart-DwYRKKc-.js → chart-ZOYyK2xG.js} +58 -55
- package/dist/chart-ZOYyK2xG.js.map +1 -0
- package/dist/checkbox-AWIhNhmo.js +36 -0
- package/dist/checkbox-AWIhNhmo.js.map +1 -0
- package/dist/choice-inputs-CNHvARCJ.js +770 -0
- package/dist/choice-inputs-CNHvARCJ.js.map +1 -0
- package/dist/code-block-DeneBJR_.js +185 -0
- package/dist/code-block-DeneBJR_.js.map +1 -0
- package/dist/{collapsible-oMUGM4tr.js → collapsible-C-_l4hpy.js} +4 -4
- package/dist/{collapsible-oMUGM4tr.js.map → collapsible-C-_l4hpy.js.map} +1 -1
- package/dist/{collection-content-Ys-OZOkY.js → collection-content-By56pLog.js} +3 -3
- package/dist/{collection-content-Ys-OZOkY.js.map → collection-content-By56pLog.js.map} +1 -1
- package/dist/combobox-C0EQW6dr.js +875 -0
- package/dist/combobox-C0EQW6dr.js.map +1 -0
- package/dist/combobox-xCQ2RMNE.js +309 -0
- package/dist/combobox-xCQ2RMNE.js.map +1 -0
- package/dist/{command-kPMPjIxJ.js → command-C25VMRII.js} +7 -7
- package/dist/{command-kPMPjIxJ.js.map → command-C25VMRII.js.map} +1 -1
- package/dist/{comments-You0Bzbr.js → comments-BYYlTA8E.js} +390 -379
- package/dist/comments-BYYlTA8E.js.map +1 -0
- package/dist/components/base/action-menu/action-menu.d.ts +21 -4
- package/dist/components/base/action-menu/action-menu.recipes.d.ts +21 -0
- package/dist/components/base/action-menu/index.d.ts +1 -0
- package/dist/components/base/badge/badge.recipes.d.ts +5 -5
- package/dist/components/base/batch-action-bar/batch-action-bar.d.ts +50 -0
- package/dist/components/base/batch-action-bar/batch-action-bar.strings.d.ts +20 -0
- package/dist/components/base/batch-action-bar/index.d.ts +8 -0
- package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
- package/dist/components/base/buttons/button.recipes.d.ts +2 -2
- package/dist/components/base/buttons/loader-button.d.ts +2 -1
- package/dist/components/base/cards/card.recipes.d.ts +2 -3
- package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +3 -13
- package/dist/components/base/cards/smart-card.types.d.ts +11 -4
- package/dist/components/base/chart/chart.d.ts +2 -5
- package/dist/components/base/choice-inputs/checkbox.d.ts +2 -2
- package/dist/components/base/choice-inputs/choice-types.d.ts +18 -6
- package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
- package/dist/components/base/combobox/index.d.ts +30 -4
- package/dist/components/base/display/alert-dialog.d.ts +6 -5
- package/dist/components/base/display/dialog.d.ts +4 -8
- package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
- package/dist/components/base/forms/form-sizing.d.ts +26 -15
- package/dist/components/base/metadata-list/index.d.ts +12 -0
- package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.d.ts +28 -25
- package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-value.d.ts +2 -2
- package/dist/components/base/navigation/index.d.ts +1 -1
- package/dist/components/base/navigation/page-header/index.d.ts +1 -0
- package/dist/components/base/navigation/page-header/page-header-commands.d.ts +73 -0
- package/dist/components/base/navigation/page-header/page-header.d.ts +26 -3
- package/dist/components/base/navigation/pagination.d.ts +5 -2
- package/dist/components/base/popover/popover.recipes.d.ts +15 -1
- package/dist/components/base/sheet/sheet.d.ts +4 -8
- package/dist/components/base/signature-pad/signature-pad.types.d.ts +5 -1
- package/dist/components/base/signature-pad/signature-pad.utils.d.ts +11 -3
- package/dist/components/base/table/index.d.ts +9 -2
- package/dist/components/base/text-inputs/field-clear-button.d.ts +6 -0
- package/dist/components/base/text-inputs/input-group.d.ts +2 -2
- package/dist/components/base/upload/upload.recipes.d.ts +25 -3
- package/dist/components/base/value-inputs/index.d.ts +5 -5
- package/dist/components/base/value-inputs/tags-input.d.ts +36 -12
- package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
- package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/blocks/commerce/address-card/types.d.ts +2 -1
- package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +3 -1
- package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
- package/dist/components/blocks/commerce/cart-summary/types.d.ts +6 -1
- package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +3 -1
- package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +16 -4
- package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +5 -0
- package/dist/components/blocks/commerce/fulfillment-group/index.d.ts +2 -0
- package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +45 -0
- package/dist/components/blocks/commerce/index.d.ts +13 -5
- package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
- package/dist/components/blocks/commerce/invoice-header/types.d.ts +4 -2
- package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +1 -1
- package/dist/components/blocks/commerce/invoice-mini/types.d.ts +2 -1
- package/dist/components/blocks/commerce/order-customer/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +5 -0
- package/dist/components/blocks/commerce/order-customer/types.d.ts +48 -0
- package/dist/components/blocks/commerce/order-header/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-header/order-header.d.ts +5 -0
- package/dist/components/blocks/commerce/order-header/types.d.ts +37 -0
- package/dist/components/blocks/commerce/order-line-item/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-line-item/order-line-item.d.ts +5 -0
- package/dist/components/blocks/commerce/order-line-item/types.d.ts +46 -0
- package/dist/components/blocks/commerce/order-summary/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-summary/order-summary.d.ts +5 -0
- package/dist/components/blocks/commerce/order-summary/types.d.ts +42 -0
- package/dist/components/blocks/commerce/order-transactions/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-transactions/order-transactions.d.ts +5 -0
- package/dist/components/blocks/commerce/order-transactions/types.d.ts +46 -0
- package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +9 -1
- package/dist/components/blocks/commerce/payment-method/types.d.ts +12 -1
- package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
- package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +3 -1
- package/dist/components/blocks/commerce/refund-status/types.d.ts +6 -3
- package/dist/components/blocks/commerce/shared/address-lines.d.ts +21 -0
- package/dist/components/blocks/commerce/shared/line-thumbnail.d.ts +9 -0
- package/dist/components/blocks/commerce/shared/order-status.d.ts +51 -0
- package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
- package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +27 -6
- package/dist/components/blocks/commerce/summary-panel/amount-row.d.ts +2 -0
- package/dist/components/blocks/commerce/summary-panel/index.d.ts +3 -0
- package/dist/components/blocks/commerce/summary-panel/summary-panel.d.ts +2 -0
- package/dist/components/blocks/commerce/summary-panel/types.d.ts +26 -0
- package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
- package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +2 -1
- package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
- package/dist/components/blocks/data-display/metadata/index.d.ts +30 -4
- package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
- package/dist/components/features/activities/partials/activity-row.d.ts +6 -2
- package/dist/components/features/activities/partials/tone-tokens.d.ts +0 -6
- package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
- package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
- package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
- package/dist/components/features/appointment-calendar/index.d.ts +3 -0
- package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
- package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
- package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
- package/dist/components/features/combobox/types.d.ts +4 -0
- package/dist/components/features/global-search/partials/global-search-group-heading.d.ts +15 -0
- package/dist/components/features/global-search/partials/tone-palettes.d.ts +0 -5
- package/dist/components/features/kanban/kanban.d.ts +1 -1
- package/dist/components/features/kanban/kanban.strings.d.ts +1 -1
- package/dist/components/features/kanban/kanban.types.d.ts +2 -2
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
- package/dist/components/features/media-library/index.d.ts +1 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +6 -0
- package/dist/components/features/media-library/media-library.types.d.ts +74 -1
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
- package/dist/components/features/mentions/partials/mention-kind-toggles.d.ts +16 -0
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/dialog.d.ts +1 -1
- package/dist/components/features/overlays/index.d.ts +1 -1
- package/dist/components/features/overlays/overlay-tone-icon.d.ts +3 -3
- package/dist/components/features/overlays/overlays.types.d.ts +20 -0
- package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
- package/dist/components/features/products/components/product-details-card.d.ts +5 -0
- package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
- package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
- package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
- package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
- package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
- package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
- package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
- package/dist/components/features/products/components/product-variant-action-menu.d.ts +23 -1
- package/dist/components/features/products/products.types.d.ts +9 -2
- package/dist/components/features/resource/index.d.ts +1 -1
- package/dist/components/features/resource/resource.d.ts +1 -1
- package/dist/components/features/resource/resource.types.d.ts +34 -6
- package/dist/components/features/rich-text-editor/index.d.ts +2 -1
- package/dist/components/features/rich-text-editor/partials/image-nodes.d.ts +13 -0
- package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +66 -0
- package/dist/components/features/rich-text-editor/partials/inline-reference-node.d.ts +19 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +7 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +14 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +54 -1
- package/dist/components/features/rich-text-editor/use-rich-text-images.d.ts +18 -0
- package/dist/components/features/sync/index.d.ts +26 -3
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/table-header.d.ts +1 -1
- package/dist/components/features/table/table.strings.d.ts +55 -1
- package/dist/components/features/table/table.types.d.ts +49 -11
- package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
- package/dist/components/layout/page/index.d.ts +1 -1
- package/dist/components/layout/page/page.types.d.ts +33 -36
- package/dist/components/layout/page/partials/page-actions.d.ts +1 -0
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/settings/settings.d.ts +16 -2
- package/dist/components/layout/workspace/workspace.types.d.ts +21 -4
- package/dist/components/primitives/number.d.ts +4 -2
- package/dist/components/primitives/value.d.ts +3 -1
- package/dist/components/typography/rich-text/index.d.ts +1 -1
- package/dist/components/typography/rich-text/rich-text-tree.d.ts +19 -0
- package/dist/components/typography/rich-text/rich-text.d.ts +16 -0
- package/dist/components/typography/text-link.d.ts +8 -3
- package/dist/components/ui/checkbox.d.ts +4 -3
- package/dist/components/ui/combobox.d.ts +6 -2
- package/dist/components/ui/item.d.ts +8 -8
- package/dist/components/ui/overlay.recipes.d.ts +0 -9
- package/dist/components/ui/switch.d.ts +2 -2
- package/dist/components/ui/tabs.d.ts +1 -1
- package/dist/{containers-D_L4mTVb.js → containers-Mu1LMGV1.js} +36 -35
- package/dist/containers-Mu1LMGV1.js.map +1 -0
- package/dist/{copyable-DDjTeW_j.js → copyable-ClBuk_UK.js} +6 -6
- package/dist/{copyable-DDjTeW_j.js.map → copyable-ClBuk_UK.js.map} +1 -1
- package/dist/data-display-DT_khPl_.js +971 -0
- package/dist/data-display-DT_khPl_.js.map +1 -0
- package/dist/{date-uf3z37Nm.js → date-DCrsDTZc.js} +5 -5
- package/dist/{date-uf3z37Nm.js.map → date-DCrsDTZc.js.map} +1 -1
- package/dist/date-picker-ay0Pha_a.js +1530 -0
- package/dist/date-picker-ay0Pha_a.js.map +1 -0
- package/dist/date-pickers-Ccw8DL2b.js +175 -0
- package/dist/date-pickers-Ccw8DL2b.js.map +1 -0
- package/dist/display-hAc1HjpI.js +344 -0
- package/dist/display-hAc1HjpI.js.map +1 -0
- package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
- package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
- package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
- package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
- package/dist/features/activities.js +478 -542
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +209 -199
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/appointment-calendar.js +683 -0
- package/dist/features/appointment-calendar.js.map +1 -0
- package/dist/features/async-preview.js +109 -107
- package/dist/features/async-preview.js.map +1 -1
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +30 -29
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer/engine.js +1 -1
- package/dist/features/email-composer.js +285 -283
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +282 -273
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +318 -318
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +146 -147
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +269 -268
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +970 -863
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +1 -1
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +1137 -1124
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +206 -194
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +24 -21
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +77 -69
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +30 -11
- package/dist/features/rich-text-editor.js.map +1 -1
- package/dist/features/schema-form.js +35 -33
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +3 -3
- package/dist/features/sync.js +11 -5
- package/dist/features/sync.js.map +1 -1
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +501 -496
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/feedback-BYIhtitP.js +239 -0
- package/dist/feedback-BYIhtitP.js.map +1 -0
- package/dist/field-affordance-recipes-DZhnIL_Y.js +41 -0
- package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
- package/dist/field-state-recipes-BVA2CWHo.js +12 -0
- package/dist/field-state-recipes-BVA2CWHo.js.map +1 -0
- package/dist/{filters-Da-gNPsE.js → filters-BGfvjP4d.js} +483 -472
- package/dist/filters-BGfvjP4d.js.map +1 -0
- package/dist/focus-recipes-B653VaLq.js +12 -0
- package/dist/focus-recipes-B653VaLq.js.map +1 -0
- package/dist/{form-field-VZRULhUK.js → form-field-CwH9y77i.js} +6 -5
- package/dist/form-field-CwH9y77i.js.map +1 -0
- package/dist/{form-sizing-uWP4lzVh.js → form-sizing-BdP_Mf5p.js} +45 -46
- package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
- package/dist/{forms-DDeEnXSY.js → forms-B9G_xwzi.js} +22 -22
- package/dist/{forms-DDeEnXSY.js.map → forms-B9G_xwzi.js.map} +1 -1
- package/dist/forms-numeric-B_jraJaQ.js +906 -0
- package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
- package/dist/{header-2ycNqGOR.js → header-CGXuhcRm.js} +164 -161
- package/dist/header-CGXuhcRm.js.map +1 -0
- package/dist/{hooks-DQ5SPwZw.js → hooks-Dkz0K2WT.js} +2 -2
- package/dist/{hooks-DQ5SPwZw.js.map → hooks-Dkz0K2WT.js.map} +1 -1
- package/dist/{http-CdEIHyQf.js → http-D_6rOnzU.js} +2 -2
- package/dist/{http-CdEIHyQf.js.map → http-D_6rOnzU.js.map} +1 -1
- package/dist/icon-badge-DYKIwvOV.js +55 -0
- package/dist/icon-badge-DYKIwvOV.js.map +1 -0
- package/dist/index.js +7 -7
- package/dist/input-CZw8iU99.js +21 -0
- package/dist/input-CZw8iU99.js.map +1 -0
- package/dist/input-DQdEd0YD.js +263 -0
- package/dist/input-DQdEd0YD.js.map +1 -0
- package/dist/interaction-recipes-XR9ZpVYL.js +25 -0
- package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
- package/dist/item-K5_ghvze.js +275 -0
- package/dist/item-K5_ghvze.js.map +1 -0
- package/dist/layer-recipes-CCpklYME.js +13 -0
- package/dist/layer-recipes-CCpklYME.js.map +1 -0
- package/dist/layout/app-shell.js +1 -1
- package/dist/layout/auth.js +1 -1
- package/dist/layout/containers.js +1 -1
- package/dist/layout/header.js +1 -1
- package/dist/layout/hooks.js +1 -1
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +1 -1
- package/dist/layout/settings.js +1 -1
- package/dist/layout/sidebar.js +2 -2
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +10 -10
- package/dist/lib/affordance-geometry.generated.d.ts +72 -0
- package/dist/lib/editable-text-recipe.d.ts +4 -4
- package/dist/lib/field-affordance-recipes.d.ts +8 -3
- package/dist/lib/field-state-recipes.d.ts +9 -8
- package/dist/lib/focus-recipes.d.ts +24 -0
- package/dist/lib/interaction-recipes.d.ts +40 -0
- package/dist/lib/layer-recipes.d.ts +19 -0
- package/dist/lib/motion-recipes.d.ts +1 -0
- package/dist/lib/overlay-anatomy-recipes.d.ts +1 -0
- package/dist/lib/safe-image-src.d.ts +10 -0
- package/dist/lib/sanitize-html.d.ts +15 -3
- package/dist/lib/surface-recipes.d.ts +47 -7
- package/dist/lib/theme-mode-css.d.ts +7 -0
- package/dist/lib/token-merge.generated.d.ts +9 -6
- package/dist/lib/tone-recipes.d.ts +87 -0
- package/dist/lib/ui-provider/hooks.d.ts +2 -1
- package/dist/lib/ui-provider/index.d.ts +2 -2
- package/dist/lib/ui-provider/types.d.ts +11 -2
- package/dist/lib/utils.js +1 -1
- package/dist/media-gallery-3zIVLMWH.js +203 -0
- package/dist/media-gallery-3zIVLMWH.js.map +1 -0
- package/dist/mentions-utuUvH1K.js +570 -0
- package/dist/mentions-utuUvH1K.js.map +1 -0
- package/dist/{message-YfFmbXNP.js → message-DZ_ruyUV.js} +7 -6
- package/dist/message-DZ_ruyUV.js.map +1 -0
- package/dist/metadata-list-8N16ZMW_.js +405 -0
- package/dist/metadata-list-8N16ZMW_.js.map +1 -0
- package/dist/{motion-recipes-B6jKXEcN.js → motion-recipes-ChBg4HBq.js} +3 -2
- package/dist/{motion-recipes-B6jKXEcN.js.map → motion-recipes-ChBg4HBq.js.map} +1 -1
- package/dist/navigation-Bnotn4AQ.js +145 -0
- package/dist/navigation-Bnotn4AQ.js.map +1 -0
- package/dist/navigation-BzhHI3lo.js +269 -0
- package/dist/navigation-BzhHI3lo.js.map +1 -0
- package/dist/{navigation-row-recipes-DlU-4QYO.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
- package/dist/{navigation-row-recipes-DlU-4QYO.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
- package/dist/{number-CKRBYmZK.js → number-DbV1Dija.js} +36 -34
- package/dist/{number-CKRBYmZK.js.map → number-DbV1Dija.js.map} +1 -1
- package/dist/overflow-tab-bar-CWY7Nogn.js +282 -0
- package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
- package/dist/overlay.recipes-8GHqmlb4.js +6 -0
- package/dist/overlay.recipes-8GHqmlb4.js.map +1 -0
- package/dist/overlays-DNWmZrJ4.js +1001 -0
- package/dist/overlays-DNWmZrJ4.js.map +1 -0
- package/dist/page-Bgl1F560.js +224 -0
- package/dist/page-Bgl1F560.js.map +1 -0
- package/dist/page-header-commands-DOb6WsfD.js +126 -0
- package/dist/page-header-commands-DOb6WsfD.js.map +1 -0
- package/dist/pagination-BL25hu2s.js +158 -0
- package/dist/pagination-BL25hu2s.js.map +1 -0
- package/dist/{popover-Dcv_9jxr.js → popover-7_m66eYW.js} +11 -10
- package/dist/popover-7_m66eYW.js.map +1 -0
- package/dist/popover-menu-B9WWygpa.js +100 -0
- package/dist/popover-menu-B9WWygpa.js.map +1 -0
- package/dist/{popover.recipes-wmbvL8Ah.js → popover.recipes-D3j8R8Yp.js} +18 -11
- package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
- package/dist/{primitives-BHrwQXFC.js → primitives-BFK08r9M.js} +45 -44
- package/dist/primitives-BFK08r9M.js.map +1 -0
- package/dist/primitives.js +4 -4
- package/dist/{progress-Br9WTFya.js → progress-B1VnCT0K.js} +9 -9
- package/dist/{progress-Br9WTFya.js.map → progress-B1VnCT0K.js.map} +1 -1
- package/dist/{receipt-CV89q1fs.js → receipt-BVSOH3Xo.js} +9 -6
- package/dist/{receipt-CV89q1fs.js.map → receipt-BVSOH3Xo.js.map} +1 -1
- package/dist/rich-text-GOUyKQ-s.js +78 -0
- package/dist/rich-text-GOUyKQ-s.js.map +1 -0
- package/dist/rich-text-editor-cRLC-eBK.js +1196 -0
- package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
- package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
- package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
- package/dist/rich-text-editor.strings-CB59ekH2.js +38 -0
- package/dist/rich-text-editor.strings-CB59ekH2.js.map +1 -0
- package/dist/safe-image-src-C6kQSMBZ.js +17 -0
- package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
- package/dist/sanitize-html-DsQmI48u.js +92 -0
- package/dist/sanitize-html-DsQmI48u.js.map +1 -0
- package/dist/scroll-area-DcI-M1UT.js +48 -0
- package/dist/scroll-area-DcI-M1UT.js.map +1 -0
- package/dist/{separator-Do5GWDYi.js → separator-BDV-Y648.js} +3 -3
- package/dist/{separator-Do5GWDYi.js.map → separator-BDV-Y648.js.map} +1 -1
- package/dist/{separator-BMEvwnSX.js → separator-Bom7NsGO.js} +2 -2
- package/dist/{separator-BMEvwnSX.js.map → separator-Bom7NsGO.js.map} +1 -1
- package/dist/services/actions/action-adapters.d.ts +18 -0
- package/dist/services/actions/index.d.ts +1 -1
- package/dist/services/actions.js +16 -4
- package/dist/services/actions.js.map +1 -1
- package/dist/settings-ybnjVwbd.js +171 -0
- package/dist/settings-ybnjVwbd.js.map +1 -0
- package/dist/sheet-CGpB3omz.js +211 -0
- package/dist/sheet-CGpB3omz.js.map +1 -0
- package/dist/{sidebar-Cb8WzOvE.js → sidebar-A0ElHINE.js} +17 -16
- package/dist/sidebar-A0ElHINE.js.map +1 -0
- package/dist/{sidebar-Crc9M9JV.js → sidebar-CPx_7YBa.js} +205 -203
- package/dist/sidebar-CPx_7YBa.js.map +1 -0
- package/dist/{skeleton-DVMXr15h.js → skeleton-Byjnt7qr.js} +9 -9
- package/dist/{skeleton-DVMXr15h.js.map → skeleton-Byjnt7qr.js.map} +1 -1
- package/dist/smart-card-DiC5aac3.js +604 -0
- package/dist/smart-card-DiC5aac3.js.map +1 -0
- package/dist/{structure-hzCW-XsV.js → structure-BmisBK-3.js} +2 -2
- package/dist/{structure-hzCW-XsV.js.map → structure-BmisBK-3.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/surface-recipes-BKRVW8Os.js +43 -0
- package/dist/surface-recipes-BKRVW8Os.js.map +1 -0
- package/dist/table-BweFy_P9.js +1530 -0
- package/dist/table-BweFy_P9.js.map +1 -0
- package/dist/table-DsfzoUia.js +175 -0
- package/dist/table-DsfzoUia.js.map +1 -0
- package/dist/tabs-CDocW5D1.js +191 -0
- package/dist/tabs-CDocW5D1.js.map +1 -0
- package/dist/text-inputs-f9Ia-aCi.js +353 -0
- package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
- package/dist/theme-mode-css-BB-_RYab.js +14 -0
- package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
- package/dist/theme-scope-BJ6eE2xt.js +50 -0
- package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
- package/dist/theme.css +285 -228
- package/dist/themes/green.css +16 -12
- package/dist/timelines-CwM_9IhD.js +457 -0
- package/dist/timelines-CwM_9IhD.js.map +1 -0
- package/dist/tone-recipes-BPsRAvhu.js +73 -0
- package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
- package/dist/tooltip-yiRJUFjp.js +111 -0
- package/dist/tooltip-yiRJUFjp.js.map +1 -0
- package/dist/{tree-BotPlyiD.js → tree-WnKQzwbq.js} +69 -67
- package/dist/tree-WnKQzwbq.js.map +1 -0
- package/dist/typography/rich-text.js +1 -1
- package/dist/typography-UTnveOEy.js +117 -0
- package/dist/typography-UTnveOEy.js.map +1 -0
- package/dist/typography.js +2 -2
- package/dist/{ui-provider-D2_TeLqw.js → ui-provider-C_U0Xma4.js} +13 -5
- package/dist/ui-provider-C_U0Xma4.js.map +1 -0
- package/dist/ui-provider.js +3 -3
- package/dist/{upload-B0WHW7ak.js → upload-CXyxmQBP.js} +210 -209
- package/dist/upload-CXyxmQBP.js.map +1 -0
- package/dist/{upload-queue-BHZ_wBfd.js → upload-queue-Boscubn9.js} +111 -111
- package/dist/upload-queue-Boscubn9.js.map +1 -0
- package/dist/upload.recipes-BbxTqrCT.js +61 -0
- package/dist/upload.recipes-BbxTqrCT.js.map +1 -0
- package/dist/{usage-card-U0YBLTNT.js → usage-card-BhO5eqkX.js} +45 -29
- package/dist/usage-card-BhO5eqkX.js.map +1 -0
- package/dist/{utils-Cospvlj1.js → utils-BRhFDwuU.js} +114 -67
- package/dist/utils-BRhFDwuU.js.map +1 -0
- package/dist/value-inputs-DXPDjvBU.js +963 -0
- package/dist/value-inputs-DXPDjvBU.js.map +1 -0
- package/dist/{value-typography-Deb3yQZg.js → value-typography-BP8OG6h5.js} +2 -2
- package/dist/{value-typography-Deb3yQZg.js.map → value-typography-BP8OG6h5.js.map} +1 -1
- package/dist/workspace-Cdrg7k9f.js +408 -0
- package/dist/workspace-Cdrg7k9f.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +21 -22
- package/docs/consumer-skill/examples/app-layout.tsx +1 -1
- package/docs/consumer-skill/examples/composition.tsx +3 -3
- package/docs/consumer-skill/examples/detail.tsx +59 -12
- package/docs/consumer-skill/examples/edit.tsx +1 -1
- package/docs/consumer-skill/examples/receipt.tsx +2 -2
- package/docs/consumer-skill/examples/scoped-directory.tsx +1 -1
- package/docs/consumer-skill/examples/website.tsx +1 -1
- package/docs/consumer-skill/references/agents-md.md +33 -0
- package/docs/consumer-skill/references/analytics.md +1 -1
- package/docs/consumer-skill/references/composition.md +58 -13
- package/docs/consumer-skill/references/design-contract.md +12 -3
- package/docs/consumer-skill/references/installation.md +11 -1
- package/docs/consumer-skill/references/integration.md +4 -3
- package/docs/consumer-skill/references/public-api.json +956 -453
- package/docs/consumer-skill/references/review.md +32 -5
- package/docs/consumer-skill/references/theming.md +78 -9
- package/docs/consumer-skill/references/tokens.json +1 -1
- package/docs/consumer-skill/references/workflows.md +54 -10
- package/docs/consumer-skill/scripts/composition-policy.mjs +42 -11
- package/docs/consumer-skill/scripts/surface-policy.mjs +150 -5
- package/package.json +17 -5
- package/dist/accordion-CQXVcd7Q.js +0 -205
- package/dist/accordion-CQXVcd7Q.js.map +0 -1
- package/dist/action-menu-BTpyPWJ2.js +0 -264
- package/dist/action-menu-BTpyPWJ2.js.map +0 -1
- package/dist/affordance-geometry.generated-CCIXb2A1.js +0 -68
- package/dist/affordance-geometry.generated-CCIXb2A1.js.map +0 -1
- package/dist/ai-artifact-2PQ2fItc.js +0 -1112
- package/dist/ai-artifact-2PQ2fItc.js.map +0 -1
- package/dist/attachment-q69dlt5Y.js +0 -244
- package/dist/attachment-q69dlt5Y.js.map +0 -1
- package/dist/auth-M3vGMgDR.js.map +0 -1
- package/dist/avatar-djdaaQ_s.js.map +0 -1
- package/dist/badge-0tATj-tW.js +0 -92
- package/dist/badge-0tATj-tW.js.map +0 -1
- package/dist/breadcrumbs-BG_FfMK4.js +0 -128
- package/dist/breadcrumbs-BG_FfMK4.js.map +0 -1
- package/dist/button-BS3KDg00.js.map +0 -1
- package/dist/button-R9CCoH7A.js.map +0 -1
- package/dist/buttons-DS0ZIwJ_.js +0 -99
- package/dist/buttons-DS0ZIwJ_.js.map +0 -1
- package/dist/cards-QoJ4syG9.js +0 -66
- package/dist/cards-QoJ4syG9.js.map +0 -1
- package/dist/chart-DwYRKKc-.js.map +0 -1
- package/dist/checkbox-B7ygNTYp.js +0 -35
- package/dist/checkbox-B7ygNTYp.js.map +0 -1
- package/dist/choice-inputs-DrJ17tpL.js +0 -752
- package/dist/choice-inputs-DrJ17tpL.js.map +0 -1
- package/dist/code-block-CD0B7M93.js +0 -183
- package/dist/code-block-CD0B7M93.js.map +0 -1
- package/dist/combobox-6dvVny2q.js +0 -272
- package/dist/combobox-6dvVny2q.js.map +0 -1
- package/dist/combobox-CB7039j7.js +0 -865
- package/dist/combobox-CB7039j7.js.map +0 -1
- package/dist/comments-You0Bzbr.js.map +0 -1
- package/dist/components/layout/page/partials/page-header-commands.d.ts +0 -13
- package/dist/containers-D_L4mTVb.js.map +0 -1
- package/dist/data-display-3xWQUnMA.js +0 -1335
- package/dist/data-display-3xWQUnMA.js.map +0 -1
- package/dist/date-picker-DrDFj8Lo.js +0 -1527
- package/dist/date-picker-DrDFj8Lo.js.map +0 -1
- package/dist/date-pickers-CnFCb0n2.js +0 -174
- package/dist/date-pickers-CnFCb0n2.js.map +0 -1
- package/dist/display-DrdvPwF0.js +0 -343
- package/dist/display-DrdvPwF0.js.map +0 -1
- package/dist/dropdown-menu-CURh59jb.js +0 -193
- package/dist/dropdown-menu-CURh59jb.js.map +0 -1
- package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
- package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
- package/dist/feedback-C7nR0UtT.js +0 -232
- package/dist/feedback-C7nR0UtT.js.map +0 -1
- package/dist/field-affordance-recipes-CkOCdE2y.js +0 -46
- package/dist/field-affordance-recipes-CkOCdE2y.js.map +0 -1
- package/dist/field-state-recipes-C-MFBX_8.js +0 -11
- package/dist/field-state-recipes-C-MFBX_8.js.map +0 -1
- package/dist/filters-Da-gNPsE.js.map +0 -1
- package/dist/form-field-VZRULhUK.js.map +0 -1
- package/dist/form-sizing-uWP4lzVh.js.map +0 -1
- package/dist/forms-numeric-D3CO60IF.js +0 -905
- package/dist/forms-numeric-D3CO60IF.js.map +0 -1
- package/dist/header-2ycNqGOR.js.map +0 -1
- package/dist/icon-badge-DKlaKXoo.js +0 -53
- package/dist/icon-badge-DKlaKXoo.js.map +0 -1
- package/dist/input-BoLm9Hks.js +0 -20
- package/dist/input-BoLm9Hks.js.map +0 -1
- package/dist/input-DhQdBnV3.js +0 -255
- package/dist/input-DhQdBnV3.js.map +0 -1
- package/dist/item-xzh8Df65.js +0 -264
- package/dist/item-xzh8Df65.js.map +0 -1
- package/dist/media-gallery-DQUQ0m3O.js +0 -201
- package/dist/media-gallery-DQUQ0m3O.js.map +0 -1
- package/dist/mentions-DwnO1hh4.js +0 -564
- package/dist/mentions-DwnO1hh4.js.map +0 -1
- package/dist/message-YfFmbXNP.js.map +0 -1
- package/dist/navigation-Cbp5V8gG.js +0 -264
- package/dist/navigation-Cbp5V8gG.js.map +0 -1
- package/dist/navigation-Cs1npsPm.js +0 -300
- package/dist/navigation-Cs1npsPm.js.map +0 -1
- package/dist/overlay.recipes-CNO2S9V6.js +0 -34
- package/dist/overlay.recipes-CNO2S9V6.js.map +0 -1
- package/dist/overlays-DhZO7N-I.js +0 -994
- package/dist/overlays-DhZO7N-I.js.map +0 -1
- package/dist/page-C6R_8jFt.js +0 -325
- package/dist/page-C6R_8jFt.js.map +0 -1
- package/dist/page-header-hUTzcRZX.js +0 -112
- package/dist/page-header-hUTzcRZX.js.map +0 -1
- package/dist/pagination-Cm0jqa3I.js +0 -149
- package/dist/pagination-Cm0jqa3I.js.map +0 -1
- package/dist/popover-Dcv_9jxr.js.map +0 -1
- package/dist/popover-menu-DnRFKnHP.js +0 -99
- package/dist/popover-menu-DnRFKnHP.js.map +0 -1
- package/dist/popover.recipes-wmbvL8Ah.js.map +0 -1
- package/dist/primitives-BHrwQXFC.js.map +0 -1
- package/dist/rich-text-editor-CF8QYt5p.js +0 -574
- package/dist/rich-text-editor-CF8QYt5p.js.map +0 -1
- package/dist/rich-text-editor.recipes-CnrbmTS1.js +0 -81
- package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +0 -1
- package/dist/rich-text-editor.strings-BpnIQgMl.js +0 -25
- package/dist/rich-text-editor.strings-BpnIQgMl.js.map +0 -1
- package/dist/rich-text-j-FGAeZW.js +0 -32
- package/dist/rich-text-j-FGAeZW.js.map +0 -1
- package/dist/sanitize-html-BG9FGe-j.js +0 -64
- package/dist/sanitize-html-BG9FGe-j.js.map +0 -1
- package/dist/scroll-area-DRdr16Pt.js +0 -47
- package/dist/scroll-area-DRdr16Pt.js.map +0 -1
- package/dist/settings-DHk0L2MF.js +0 -161
- package/dist/settings-DHk0L2MF.js.map +0 -1
- package/dist/sheet-DRFNY1_D.js +0 -207
- package/dist/sheet-DRFNY1_D.js.map +0 -1
- package/dist/sidebar-Cb8WzOvE.js.map +0 -1
- package/dist/sidebar-Crc9M9JV.js.map +0 -1
- package/dist/smart-card-Bek-TwUp.js +0 -599
- package/dist/smart-card-Bek-TwUp.js.map +0 -1
- package/dist/spinner-CmTAbEp0.js +0 -80
- package/dist/spinner-CmTAbEp0.js.map +0 -1
- package/dist/surface-recipes-DOdoBXGm.js +0 -28
- package/dist/surface-recipes-DOdoBXGm.js.map +0 -1
- package/dist/table-D6zKeYQX.js +0 -162
- package/dist/table-D6zKeYQX.js.map +0 -1
- package/dist/table-Dn4XSrSB.js +0 -1444
- package/dist/table-Dn4XSrSB.js.map +0 -1
- package/dist/tabs-Dk8E_knt.js +0 -189
- package/dist/tabs-Dk8E_knt.js.map +0 -1
- package/dist/text-inputs-BFpku0Qd.js +0 -331
- package/dist/text-inputs-BFpku0Qd.js.map +0 -1
- package/dist/theme-scope-kStaAer0.js +0 -39
- package/dist/theme-scope-kStaAer0.js.map +0 -1
- package/dist/timelines-CxuAFIc2.js +0 -439
- package/dist/timelines-CxuAFIc2.js.map +0 -1
- package/dist/tree-BotPlyiD.js.map +0 -1
- package/dist/typography-CAr3dQhX.js +0 -116
- package/dist/typography-CAr3dQhX.js.map +0 -1
- package/dist/ui-provider-D2_TeLqw.js.map +0 -1
- package/dist/upload-B0WHW7ak.js.map +0 -1
- package/dist/upload-queue-BHZ_wBfd.js.map +0 -1
- package/dist/usage-card-U0YBLTNT.js.map +0 -1
- package/dist/use-file-drop-target-BX7GnhoQ.js +0 -39
- package/dist/use-file-drop-target-BX7GnhoQ.js.map +0 -1
- package/dist/utils-Cospvlj1.js.map +0 -1
- package/dist/value-inputs-CjfzGMsN.js +0 -854
- package/dist/value-inputs-CjfzGMsN.js.map +0 -1
- package/dist/workspace-YoFjXi6i.js +0 -394
- package/dist/workspace-YoFjXi6i.js.map +0 -1
- /package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.strings.d.ts +0 -0
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
-
import { t } from "./utils-Cospvlj1.js";
|
|
4
|
-
import { s as n } from "./typography-CAr3dQhX.js";
|
|
5
|
-
import { t as r } from "./button-BS3KDg00.js";
|
|
6
|
-
import { t as i } from "./structure-hzCW-XsV.js";
|
|
7
|
-
import { n as a } from "./action-menu-BTpyPWJ2.js";
|
|
8
|
-
import { t as o } from "./badge-0tATj-tW.js";
|
|
9
|
-
import { a as s } from "./tabs-Dk8E_knt.js";
|
|
10
|
-
import { Fragment as c, forwardRef as l, useCallback as u, useLayoutEffect as d, useMemo as f, useRef as p, useState as m } from "react";
|
|
11
|
-
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
12
|
-
import { Globe as v, MoreHorizontal as y } from "lucide-react";
|
|
13
|
-
//#region src/components/base/navigation/language-switcher.tsx
|
|
14
|
-
function b({ locales: e, onRenderLabel: a, variant: o = "buttons", onSelect: s }) {
|
|
15
|
-
let l = u((e, t) => {
|
|
16
|
-
t || s?.(e);
|
|
17
|
-
}, [s]);
|
|
18
|
-
return e.length === 0 ? null : o === "inline" ? /* @__PURE__ */ _(i, {
|
|
19
|
-
direction: "horizontal",
|
|
20
|
-
align: "center",
|
|
21
|
-
justify: "center",
|
|
22
|
-
gap: "md",
|
|
23
|
-
wrap: !1,
|
|
24
|
-
className: "language-switcher--component",
|
|
25
|
-
children: [/* @__PURE__ */ g(v, {
|
|
26
|
-
className: "size-icon shrink-0 text-muted-foreground",
|
|
27
|
-
"aria-hidden": "true"
|
|
28
|
-
}), /* @__PURE__ */ g(i, {
|
|
29
|
-
direction: "horizontal",
|
|
30
|
-
align: "center",
|
|
31
|
-
justify: "center",
|
|
32
|
-
gap: "md",
|
|
33
|
-
wrap: !0,
|
|
34
|
-
className: "min-w-0",
|
|
35
|
-
children: e.map((r, i) => {
|
|
36
|
-
let o = a ? a(r) : r.nativeLabel;
|
|
37
|
-
return /* @__PURE__ */ _(c, { children: [/* @__PURE__ */ g("button", {
|
|
38
|
-
type: "button",
|
|
39
|
-
"aria-current": r.active ? "true" : void 0,
|
|
40
|
-
onClick: () => l(r.value, r.active),
|
|
41
|
-
className: t("cursor-pointer rounded-inner border-0 bg-transparent p-0 font-sans text-pxs outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", r.active ? "text-primary-accent font-medium" : "text-muted-foreground hover:text-foreground"),
|
|
42
|
-
children: /* @__PURE__ */ g(n, {
|
|
43
|
-
tag: "span",
|
|
44
|
-
size: "pxs",
|
|
45
|
-
weight: r.active ? "medium" : "regular",
|
|
46
|
-
className: "text-inherit",
|
|
47
|
-
children: o
|
|
48
|
-
})
|
|
49
|
-
}), i < e.length - 1 && /* @__PURE__ */ g("span", {
|
|
50
|
-
"aria-hidden": "true",
|
|
51
|
-
className: "size-1 rounded-full bg-border"
|
|
52
|
-
})] }, r.value);
|
|
53
|
-
})
|
|
54
|
-
})]
|
|
55
|
-
}) : /* @__PURE__ */ g(i, {
|
|
56
|
-
direction: "horizontal",
|
|
57
|
-
align: "center",
|
|
58
|
-
justify: "center",
|
|
59
|
-
wrap: !0,
|
|
60
|
-
gap: "md",
|
|
61
|
-
children: e.map((e) => {
|
|
62
|
-
let n = a ? a(e) : e.nativeLabel;
|
|
63
|
-
return /* @__PURE__ */ g(r, {
|
|
64
|
-
type: "button",
|
|
65
|
-
tone: "secondary",
|
|
66
|
-
buttonStyle: e.active ? "solid" : "ghost",
|
|
67
|
-
"aria-current": e.active ? "true" : void 0,
|
|
68
|
-
onClick: () => l(e.value, e.active),
|
|
69
|
-
className: t("min-w-18 justify-center transition-colors", e.active ? "text-primary-accent" : "text-muted-foreground"),
|
|
70
|
-
children: n
|
|
71
|
-
}, e.value);
|
|
72
|
-
})
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
b.displayName = "LanguageSwitcher";
|
|
76
|
-
//#endregion
|
|
77
|
-
//#region src/components/base/navigation/navigation-tabs.tsx
|
|
78
|
-
var x = { tabsAria: "Tab navigation" };
|
|
79
|
-
function S(e) {
|
|
80
|
-
let t = e.indexOf("#/");
|
|
81
|
-
if (t >= 0) return e.slice(t).split("?")[0]?.replace(/\/+$/, "") || "#/";
|
|
82
|
-
try {
|
|
83
|
-
let t = typeof window < "u" ? window.location.origin : "http://localhost";
|
|
84
|
-
return new URL(e, t).pathname.replace(/\/+$/, "") || "/";
|
|
85
|
-
} catch {
|
|
86
|
-
return e.split("?")[0]?.replace(/\/+$/, "") || "/";
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
var C = l(function({ items: a, currentPath: c, variant: l = "default", scrollable: u = !0, scrollStrings: d, strings: f, className: p }, m) {
|
|
90
|
-
let h = e(x, f), v = S(c ?? (typeof window < "u" ? window.location.pathname : "/")), y = l === "prominent", b = /* @__PURE__ */ g(i, {
|
|
91
|
-
render: /* @__PURE__ */ g("nav", { "aria-label": h.tabsAria }),
|
|
92
|
-
direction: "horizontal",
|
|
93
|
-
gap: "2xs",
|
|
94
|
-
wrap: !1,
|
|
95
|
-
className: t("navigation-tabs--list w-max rounded-inner bg-muted p-space-2xs", y && "rounded-inner bg-muted/60"),
|
|
96
|
-
children: a.map((e) => {
|
|
97
|
-
let i = e.active ?? v === S(e.href), a = typeof e.icon == "string" ? void 0 : e.icon;
|
|
98
|
-
return /* @__PURE__ */ _(r, {
|
|
99
|
-
href: e.href,
|
|
100
|
-
disabled: e.disabled,
|
|
101
|
-
size: "sm",
|
|
102
|
-
tone: i && y ? "primary" : "secondary",
|
|
103
|
-
buttonStyle: i ? "solid" : "ghost",
|
|
104
|
-
icon: a,
|
|
105
|
-
"aria-current": i ? "page" : void 0,
|
|
106
|
-
className: t("navigation-tabs--item shrink-0", "rounded-inner", !y && i && "bg-card text-foreground shadow-sm hover:bg-card", !y && !i && "text-muted-foreground hover:bg-card/60 hover:text-foreground"),
|
|
107
|
-
children: [
|
|
108
|
-
typeof e.icon == "string" && /* @__PURE__ */ g("span", {
|
|
109
|
-
className: "navigation-tabs--icon text-inherit",
|
|
110
|
-
"aria-hidden": "true",
|
|
111
|
-
children: e.icon
|
|
112
|
-
}),
|
|
113
|
-
/* @__PURE__ */ g(n, {
|
|
114
|
-
tag: "span",
|
|
115
|
-
size: "inherit",
|
|
116
|
-
weight: "medium",
|
|
117
|
-
lineHeight: "none",
|
|
118
|
-
className: "navigation-tabs--title text-inherit",
|
|
119
|
-
children: e.title
|
|
120
|
-
}),
|
|
121
|
-
e.badge !== void 0 && e.badge !== null && /* @__PURE__ */ g(o, {
|
|
122
|
-
size: "sm",
|
|
123
|
-
tone: "secondary",
|
|
124
|
-
className: "navigation-tabs--badge",
|
|
125
|
-
children: e.badge
|
|
126
|
-
})
|
|
127
|
-
]
|
|
128
|
-
}, e.href);
|
|
129
|
-
})
|
|
130
|
-
});
|
|
131
|
-
return /* @__PURE__ */ g("div", {
|
|
132
|
-
ref: m,
|
|
133
|
-
className: t("navigation-tabs--component", "w-full min-w-0", !u && "overflow-x-auto", p),
|
|
134
|
-
children: u ? /* @__PURE__ */ g(s, {
|
|
135
|
-
strings: d,
|
|
136
|
-
children: b
|
|
137
|
-
}) : b
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
C.displayName = "NavigationTabs";
|
|
141
|
-
//#endregion
|
|
142
|
-
//#region src/components/base/navigation/overflow-tab-bar.tsx
|
|
143
|
-
var w = {
|
|
144
|
-
more: "More",
|
|
145
|
-
navigationLabel: "Tab navigation"
|
|
146
|
-
}, T = "box-border inline-flex h-action-sm shrink-0 cursor-pointer items-center gap-space-sm rounded-inner border-0 bg-transparent px-control-sm font-sans text-sm font-medium whitespace-nowrap no-underline outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring [&_svg]:size-icon [&_svg]:shrink-0", E = "text-muted-foreground hover:bg-card/60 hover:text-foreground", D = "bg-card text-foreground shadow-sm";
|
|
147
|
-
function O(e) {
|
|
148
|
-
return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
|
|
149
|
-
}
|
|
150
|
-
function k(e, t, n, r) {
|
|
151
|
-
if (e.reduce((e, t) => e + t, 0) + n * Math.max(0, e.length - 1) <= t) return e.length;
|
|
152
|
-
let i = 0, a = 0;
|
|
153
|
-
for (let o of e) {
|
|
154
|
-
let e = i + (a > 0 ? n : 0) + o;
|
|
155
|
-
if (e + n + r > t) break;
|
|
156
|
-
i = e, a += 1;
|
|
157
|
-
}
|
|
158
|
-
return Math.max(1, a);
|
|
159
|
-
}
|
|
160
|
-
var A = l(function({ items: r, value: i, onValueChange: s, className: c, tabClassName: l, activeTabClassName: v, strings: b, ...x }, S) {
|
|
161
|
-
let C = e(w, b), A = p(null), j = p(null), M = p(null), [N, P] = m(r.length), F = u((e) => {
|
|
162
|
-
A.current = e, typeof S == "function" ? S(e) : S && (S.current = e);
|
|
163
|
-
}, [S]);
|
|
164
|
-
d(() => {
|
|
165
|
-
let e = A.current, t = j.current, n = M.current;
|
|
166
|
-
if (!e || !t || !n) return;
|
|
167
|
-
let i = () => {
|
|
168
|
-
let i = getComputedStyle(t), a = (parseFloat(i.paddingLeft) || 0) + (parseFloat(i.paddingRight) || 0), o = e.clientWidth - a;
|
|
169
|
-
if (o <= 0) {
|
|
170
|
-
P(r.length);
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
let s = parseFloat(getComputedStyle(n).columnGap) || 0, c = Array.from(n.querySelectorAll("[data-tab-id]")).map((e) => e.offsetWidth), l = n.querySelector("[data-more-measure]")?.offsetWidth ?? 0;
|
|
174
|
-
P(k(c, o, s, l));
|
|
175
|
-
};
|
|
176
|
-
if (i(), typeof ResizeObserver > "u") return;
|
|
177
|
-
let a = new ResizeObserver(i);
|
|
178
|
-
return a.observe(e), () => a.disconnect();
|
|
179
|
-
}, [r, C.more]);
|
|
180
|
-
let I = f(() => {
|
|
181
|
-
if (!i) return r;
|
|
182
|
-
let e = r.findIndex((e) => e.id === i);
|
|
183
|
-
if (e < 0 || e < N) return r;
|
|
184
|
-
let t = [...r], n = Math.max(0, N - 1);
|
|
185
|
-
return [t[e], t[n]] = [t[n], t[e]], t;
|
|
186
|
-
}, [
|
|
187
|
-
r,
|
|
188
|
-
i,
|
|
189
|
-
N
|
|
190
|
-
]), L = I.slice(0, N), R = I.slice(N), z = (e) => {
|
|
191
|
-
s?.(e.id), e.onClick?.();
|
|
192
|
-
}, B = (e) => {
|
|
193
|
-
if (![
|
|
194
|
-
"ArrowLeft",
|
|
195
|
-
"ArrowRight",
|
|
196
|
-
"Home",
|
|
197
|
-
"End"
|
|
198
|
-
].includes(e.key)) return;
|
|
199
|
-
let t = Array.from(e.currentTarget.querySelectorAll("[role=\"tab\"]")), n = t.indexOf(e.target);
|
|
200
|
-
if (n < 0 || t.length === 0) return;
|
|
201
|
-
let r = getComputedStyle(e.currentTarget).direction === "rtl" ? "ArrowLeft" : "ArrowRight", i = e.key === "Home" ? 0 : e.key === "End" ? t.length - 1 : e.key === r ? (n + 1) % t.length : (n - 1 + t.length) % t.length;
|
|
202
|
-
e.preventDefault(), t[i]?.focus();
|
|
203
|
-
}, V = (e, r, a) => {
|
|
204
|
-
let s = e.icon, c = t(T, r ? t(D, v) : E, l), u = /* @__PURE__ */ _(h, { children: [
|
|
205
|
-
!!s && /* @__PURE__ */ g(s, { "aria-hidden": "true" }),
|
|
206
|
-
O(e.label) ? /* @__PURE__ */ g(n, {
|
|
207
|
-
tag: "span",
|
|
208
|
-
size: "inherit",
|
|
209
|
-
weight: "medium",
|
|
210
|
-
lineHeight: "tight",
|
|
211
|
-
className: "text-inherit",
|
|
212
|
-
children: e.label
|
|
213
|
-
}) : e.label,
|
|
214
|
-
e.badge !== void 0 && e.badge !== null && e.badge !== !1 && /* @__PURE__ */ g(o, {
|
|
215
|
-
size: "sm",
|
|
216
|
-
tone: "secondary",
|
|
217
|
-
className: "overflow-tab-bar--badge",
|
|
218
|
-
children: e.badge
|
|
219
|
-
})
|
|
220
|
-
] });
|
|
221
|
-
if (a?.measure) return /* @__PURE__ */ g("span", {
|
|
222
|
-
"data-tab-id": e.id,
|
|
223
|
-
className: t("overflow-tab-bar--measure", c),
|
|
224
|
-
children: u
|
|
225
|
-
}, e.id);
|
|
226
|
-
let d = {
|
|
227
|
-
"data-tab-id": e.id,
|
|
228
|
-
role: "tab",
|
|
229
|
-
"aria-selected": r,
|
|
230
|
-
tabIndex: r || !i ? 0 : -1,
|
|
231
|
-
onClick: () => z(e),
|
|
232
|
-
className: t("overflow-tab-bar--tab", c)
|
|
233
|
-
};
|
|
234
|
-
return e.href ? /* @__PURE__ */ g("a", {
|
|
235
|
-
href: e.href,
|
|
236
|
-
...d,
|
|
237
|
-
children: u
|
|
238
|
-
}, e.id) : /* @__PURE__ */ g("button", {
|
|
239
|
-
type: "button",
|
|
240
|
-
...d,
|
|
241
|
-
children: u
|
|
242
|
-
}, e.id);
|
|
243
|
-
}, H = /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(y, { "aria-hidden": "true" }), /* @__PURE__ */ g(n, {
|
|
244
|
-
tag: "span",
|
|
245
|
-
size: "inherit",
|
|
246
|
-
weight: "medium",
|
|
247
|
-
lineHeight: "tight",
|
|
248
|
-
className: "text-inherit",
|
|
249
|
-
children: C.more
|
|
250
|
-
})] });
|
|
251
|
-
return /* @__PURE__ */ _("div", {
|
|
252
|
-
ref: F,
|
|
253
|
-
className: t("overflow-tab-bar--component relative w-full min-w-0 max-w-full", c),
|
|
254
|
-
...x,
|
|
255
|
-
children: [/* @__PURE__ */ _("div", {
|
|
256
|
-
ref: M,
|
|
257
|
-
"aria-hidden": "true",
|
|
258
|
-
className: "pointer-events-none invisible fixed left-0 top-0 z-[-1] flex h-0 w-0 items-center gap-space-2xs overflow-hidden",
|
|
259
|
-
children: [r.map((e) => V(e, !1, { measure: !0 })), /* @__PURE__ */ g("span", {
|
|
260
|
-
"data-more-measure": "",
|
|
261
|
-
className: t(T, E),
|
|
262
|
-
children: H
|
|
263
|
-
})]
|
|
264
|
-
}), /* @__PURE__ */ _("div", {
|
|
265
|
-
ref: j,
|
|
266
|
-
className: "overflow-tab-bar--viewport inline-flex max-w-full min-w-0 items-center gap-space-2xs overflow-hidden rounded-inner bg-muted p-space-2xs align-top",
|
|
267
|
-
children: [/* @__PURE__ */ g("div", {
|
|
268
|
-
role: "tablist",
|
|
269
|
-
"aria-label": C.navigationLabel,
|
|
270
|
-
"aria-orientation": "horizontal",
|
|
271
|
-
onKeyDown: B,
|
|
272
|
-
className: "overflow-tab-bar--tablist flex min-w-0 items-center gap-space-2xs overflow-hidden",
|
|
273
|
-
children: L.map((e) => V(e, e.id === i))
|
|
274
|
-
}), R.length > 0 && /* @__PURE__ */ g(a, {
|
|
275
|
-
actions: R.map((e) => ({
|
|
276
|
-
id: e.id,
|
|
277
|
-
label: e.label,
|
|
278
|
-
icon: e.icon,
|
|
279
|
-
onClick: () => z(e)
|
|
280
|
-
})),
|
|
281
|
-
align: "end",
|
|
282
|
-
contentClassName: "min-w-40",
|
|
283
|
-
width: "w-auto",
|
|
284
|
-
closeOnSelect: !0,
|
|
285
|
-
preserveOrder: !0,
|
|
286
|
-
renderTrigger: /* @__PURE__ */ g("button", {
|
|
287
|
-
type: "button",
|
|
288
|
-
"aria-label": C.more,
|
|
289
|
-
className: t(T, E, "overflow-tab-bar--more"),
|
|
290
|
-
children: H
|
|
291
|
-
})
|
|
292
|
-
})]
|
|
293
|
-
})]
|
|
294
|
-
});
|
|
295
|
-
});
|
|
296
|
-
A.displayName = "OverflowTabBar";
|
|
297
|
-
//#endregion
|
|
298
|
-
export { b as a, x as i, w as n, C as r, A as t };
|
|
299
|
-
|
|
300
|
-
//# sourceMappingURL=navigation-Cs1npsPm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-Cs1npsPm.js","names":["_Fragment","Text","Button","Stack","ActionMenu","Badge","TabScrollViewport","Fragment$1","LanguageSwitcher","handleSelect","useCallback","isActive","onSelect","value","locales","variant","Globe","label","onRenderLabel","locale","Fragment","cn","index","defaultNavigationTabsStrings","normalizePath","hashRouteIndex","rawUrl","origin","NavigationTabs","forwardRef","stringsProp","strings","useStrings","activePath","currentPath","prominent","list","items","item","Icon","scrollable","className","scrollStrings","defaultOverflowTabBarStrings","TAB_BUTTON_BASE","TAB_INACTIVE","TAB_ACTIVE","isSimpleText","fitOverflowTabs","widths","sum","width","gap","available","used","count","next","moreWidth","OverflowTabBar","rootProps","rootRef","useRef","trackRef","measureRef","visibleCount","setVisibleCount","useState","setRootRef","node","ref","root","track","measure","compute","trackStyle","inset","tab","observer","orderedItems","useMemo","activeIdx","i","lastVisibleIdx","visibleItems","overflowItems","onValueChange","handleKeyDown","event","tabs","forward","renderTab","tabClasses","activeTabClassName","tabClassName","inner","options","shared","moreContent","MoreHorizontal"],"sources":["../src/components/base/navigation/language-switcher.tsx","../src/components/base/navigation/navigation-tabs.tsx","../src/components/base/navigation/overflow-tab-bar.tsx"],"sourcesContent":["/**\n * LanguageSwitcher — locale picker with two layouts: `buttons` (chunky\n * primary buttons) and `inline` (small text links separated by dots, prefixed\n * with a globe icon). Defaults to `buttons`.\n *\n * The library never navigates on its own. The consumer wires routing /\n * locale switching by passing `onSelect` (e.g. a Tanstack Router\n * `navigate(...)` or Inertia `router.visit(...)`). When `onSelect` is\n * absent the click is a no-op.\n */\nimport { Globe } from 'lucide-react';\nimport { Fragment, useCallback } from 'react';\n\nimport { Button } from '../buttons';\nimport { Text } from '../../typography';\nimport { Stack } from '../structure';\nimport { cn } from '../../../lib/utils';\nimport type { LocaleOption } from '../../../types/locale.types';\n\nexport interface LanguageSwitcherProps {\n\t/** Locales to offer, in order. The entry with `active: true` is marked as current. */\n\tlocales: LocaleOption[];\n\t/** Custom label for each locale. Defaults to `nativeLabel`. */\n\tonRenderLabel?: (options: LocaleOption) => string;\n\t/** Layout: `buttons` (default) for a row of buttons, `inline` for compact dot-separated text links. */\n\tvariant?: 'buttons' | 'inline';\n\t/** Called with the chosen locale's value. Not called for the current locale. */\n\tonSelect?: (value: string) => void;\n}\n\nexport function LanguageSwitcher({\n\tlocales,\n\tonRenderLabel,\n\tvariant = 'buttons',\n\tonSelect,\n}: LanguageSwitcherProps) {\n\tconst handleSelect = useCallback((value: string, isActive: boolean) => {\n\t\tif (isActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tonSelect?.(value);\n\t}, [onSelect]);\n\n\tif (locales.length === 0) {\n\t\treturn null;\n\t}\n\n\tif (variant === 'inline') {\n\t\treturn (\n\t\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"center\" gap=\"md\" wrap={false} className=\"language-switcher--component\">\n\t\t\t\t<Globe className=\"size-icon shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"center\" gap=\"md\" wrap className=\"min-w-0\">\n\t\t\t\t\t{locales.map((locale, index) => {\n\t\t\t\t\t\tconst label = onRenderLabel\n\t\t\t\t\t\t\t? onRenderLabel(locale)\n\t\t\t\t\t\t\t: locale.nativeLabel;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Fragment key={locale.value}>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\taria-current={locale.active ? 'true' : undefined}\n\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\thandleSelect(locale.value, locale.active)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'cursor-pointer rounded-inner border-0 bg-transparent p-0 font-sans text-pxs outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n\t\t\t\t\t\t\t\t\t\tlocale.active\n\t\t\t\t\t\t\t\t\t\t\t? 'text-primary-accent font-medium'\n\t\t\t\t\t\t\t\t\t\t\t: 'text-muted-foreground hover:text-foreground',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"pxs\" weight={locale.active ? 'medium' : 'regular'} className=\"text-inherit\">\n\t\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t{index < locales.length - 1 && (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"size-1 rounded-full bg-border\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"center\" wrap gap=\"md\">\n\t\t\t{locales.map((locale) => {\n\t\t\t\tconst label = onRenderLabel ? onRenderLabel(locale) : locale.nativeLabel;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={locale.value}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle={locale.active ? 'solid' : 'ghost'}\n\t\t\t\t\t\taria-current={locale.active ? 'true' : undefined}\n\t\t\t\t\t\tonClick={() => handleSelect(locale.value, locale.active)}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'min-w-18 justify-center transition-colors',\n\t\t\t\t\t\t\tlocale.active ? 'text-primary-accent' : 'text-muted-foreground',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Stack>\n\t);\n}\n\nLanguageSwitcher.displayName = 'LanguageSwitcher';\n","/**\n * NavigationTabs — canonical route-tab navigation.\n *\n * The default compact treatment works for ordinary application navigation;\n * `variant=\"prominent\"` provides the stronger filled treatment without\n * introducing a second component or item vocabulary.\n */\nimport { forwardRef, type ReactNode } from 'react';\nimport type { LucideIcon } from 'lucide-react';\n\nimport { Badge } from '../badge';\nimport { Button } from '../buttons';\nimport { Stack } from '../structure';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { TabScrollViewport, type TabsScrollStrings } from './tab-scroll-viewport';\n\nexport interface NavigationTabItem {\n\ttitle: string;\n\thref: string;\n\ticon?: LucideIcon | string;\n\tbadge?: ReactNode;\n\tactive?: boolean;\n\tdisabled?: boolean;\n}\n\nexport interface NavigationTabsStrings {\n\ttabsAria: string;\n}\n\nexport const defaultNavigationTabsStrings: NavigationTabsStrings = {\n\ttabsAria: 'Tab navigation',\n};\n\nexport type NavigationTabsVariant = 'default' | 'prominent';\n\nexport interface NavigationTabsProps {\n\t/** Tabs to render, in order. */\n\titems: readonly NavigationTabItem[];\n\t/** Path of the active route, used to mark the current tab. */\n\tcurrentPath?: string;\n\t/** Visual treatment of the tab row. */\n\tvariant?: NavigationTabsVariant;\n\t/** Show previous/next controls when route tabs overflow. Defaults to true. */\n\tscrollable?: boolean;\n\t/** Accessible labels for the previous/next scroll controls. */\n\tscrollStrings?: StringsProp<TabsScrollStrings>;\n\t/** Overrides the tab row's own copy. */\n\tstrings?: StringsProp<NavigationTabsStrings>;\n\tclassName?: string;\n}\n\nfunction normalizePath(rawUrl: string): string {\n\tconst hashRouteIndex = rawUrl.indexOf('#/');\n\tif (hashRouteIndex >= 0) {\n\t\treturn rawUrl.slice(hashRouteIndex).split('?')[0]?.replace(/\\/+$/, '') || '#/';\n\t}\n\n\ttry {\n\t\tconst origin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, origin);\n\t\treturn parsed.pathname.replace(/\\/+$/, '') || '/';\n\t} catch {\n\t\treturn rawUrl.split('?')[0]?.replace(/\\/+$/, '') || '/';\n\t}\n}\n\nexport const NavigationTabs = forwardRef<HTMLDivElement, NavigationTabsProps>(function NavigationTabs({\n\titems,\n\tcurrentPath,\n\tvariant = 'default',\n\tscrollable = true,\n\tscrollStrings,\n\tstrings: stringsProp,\n\tclassName,\n}: NavigationTabsProps, ref) {\n\tconst strings = useStrings(defaultNavigationTabsStrings, stringsProp);\n\tconst activePath = normalizePath(\n\t\tcurrentPath ?? (typeof window !== 'undefined' ? window.location.pathname : '/'),\n\t);\n\tconst prominent = variant === 'prominent';\n\n\tconst list = <Stack\n\t\t\t\trender={<nav aria-label={strings.tabsAria} />}\n\t\t\t\tdirection=\"horizontal\"\n\t\t\t\tgap=\"2xs\"\n\t\t\t\twrap={false}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'navigation-tabs--list w-max rounded-inner bg-muted p-space-2xs',\n\t\t\t\t\tprominent && 'rounded-inner bg-muted/60',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{items.map((item) => {\n\t\t\t\t\tconst isActive = item.active ?? activePath === normalizePath(item.href);\n\t\t\t\t\tconst Icon = typeof item.icon === 'string' ? undefined : item.icon;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={item.href}\n\t\t\t\t\t\t\thref={item.href}\n\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\ttone={isActive && prominent ? 'primary' : 'secondary'}\n\t\t\t\t\t\t\tbuttonStyle={isActive ? 'solid' : 'ghost'}\n\t\t\t\t\t\t\ticon={Icon}\n\t\t\t\t\t\t\taria-current={isActive ? 'page' : undefined}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'navigation-tabs--item shrink-0',\n\t\t\t\t\t\t\t\t'rounded-inner',\n\t\t\t\t\t\t\t\t// Shared segmented recipe (Tabs, OverflowTabBar): a lifted card-coloured\n\t\t\t\t\t\t\t\t// active tab on the muted track, in light and dark alike.\n\t\t\t\t\t\t\t\t!prominent && isActive && 'bg-card text-foreground shadow-sm hover:bg-card',\n\t\t\t\t\t\t\t\t!prominent && !isActive && 'text-muted-foreground hover:bg-card/60 hover:text-foreground',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{typeof item.icon === 'string' && (\n\t\t\t\t\t\t\t\t<span className=\"navigation-tabs--icon text-inherit\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t{item.icon}\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\t<Text\n\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\tlineHeight=\"none\"\n\t\t\t\t\t\t\t\tclassName=\"navigation-tabs--title text-inherit\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{item.badge !== undefined && item.badge !== null && (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\tclassName=\"navigation-tabs--badge\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</Stack>;\n\treturn <div ref={ref} className={cn('navigation-tabs--component', 'w-full min-w-0', !scrollable && 'overflow-x-auto', className)}>\n\t\t{scrollable ? <TabScrollViewport strings={scrollStrings}>{list}</TabScrollViewport> : list}\n\t</div>;\n});\n\nNavigationTabs.displayName = 'NavigationTabs';\n","/**\n * OverflowTabBar — horizontal tab strip that gracefully degrades on narrow\n * containers. Tabs that would overflow are moved into a trailing \"More\"\n * dropdown so the strip never wraps. Uses a ResizeObserver to recompute on\n * container resize; the active tab is always kept visible by being moved\n * out of the overflow set when needed.\n *\n * The strip shares the segmented-tab recipe of `NavigationTabs` and `Tabs`:\n * a muted track, small action-height tabs with default-size labels, and a\n * lifted card-coloured active tab. Arrow keys, Home and End move focus between\n * tabs; Enter or Space activates the focused tab.\n *\n * Use `NavigationTabs` instead when a fixed route set cannot overflow.\n */\nimport { MoreHorizontal, type LucideIcon } from 'lucide-react';\nimport {\n\tforwardRef,\n\tuseCallback,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\ttype ComponentPropsWithoutRef,\n\ttype KeyboardEvent,\n\ttype ReactNode,\n} from 'react';\n\nimport { ActionMenu } from '../action-menu';\nimport { Badge } from '../badge';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nexport interface OverflowTabBarStrings {\n\tmore: string;\n\tnavigationLabel: string;\n}\n\nexport const defaultOverflowTabBarStrings: OverflowTabBarStrings = {\n\tmore: 'More',\n\tnavigationLabel: 'Tab navigation',\n};\n\nexport interface OverflowTabItem {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Display label. */\n\tlabel: ReactNode;\n\t/** Destination for the entry, when it navigates. */\n\thref?: string;\n\t/** Leading glyph. */\n\ticon?: LucideIcon;\n\t/** Chip rendered beside the label. */\n\tbadge?: ReactNode;\n\tonClick?: () => void;\n}\n\nexport interface OverflowTabBarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n\t/** Entries to render, in order. */\n\titems: OverflowTabItem[];\n\t/** Currently active tab id. */\n\tvalue?: string;\n\t/** Fired with the id of the newly active tab. */\n\tonValueChange?: (id: string) => void;\n\ttabClassName?: string;\n\tactiveTabClassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<OverflowTabBarStrings>;\n}\n\n// Native buttons and anchors are reset explicitly: the package ships no preflight.\nconst TAB_BUTTON_BASE =\n\t'box-border inline-flex h-action-sm shrink-0 cursor-pointer items-center gap-space-sm rounded-inner border-0 bg-transparent px-control-sm font-sans text-sm font-medium whitespace-nowrap no-underline outline-none transition-colors ' +\n\t'focus-visible:ring-2 focus-visible:ring-ring [&_svg]:size-icon [&_svg]:shrink-0';\nconst TAB_INACTIVE = 'text-muted-foreground hover:bg-card/60 hover:text-foreground';\nconst TAB_ACTIVE = 'bg-card text-foreground shadow-sm';\n\nfunction isSimpleText(value: ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\n/** How many tabs fit, reserving room for the \"More\" trigger only when something overflows. */\nexport function fitOverflowTabs(widths: readonly number[], available: number, gap: number, moreWidth: number): number {\n\tconst total = widths.reduce((sum, width) => sum + width, 0) + gap * Math.max(0, widths.length - 1);\n\tif (total <= available) return widths.length;\n\tlet used = 0;\n\tlet count = 0;\n\tfor (const width of widths) {\n\t\tconst next = used + (count > 0 ? gap : 0) + width;\n\t\tif (next + gap + moreWidth > available) break;\n\t\tused = next;\n\t\tcount += 1;\n\t}\n\treturn Math.max(1, count);\n}\n\nexport const OverflowTabBar = forwardRef<HTMLDivElement, OverflowTabBarProps>(function OverflowTabBar({\n\titems,\n\tvalue,\n\tonValueChange,\n\tclassName,\n\ttabClassName,\n\tactiveTabClassName,\n\tstrings: stringsProp,\n\t...rootProps\n}, ref) {\n\tconst strings = useStrings(defaultOverflowTabBarStrings, stringsProp);\n\tconst rootRef = useRef<HTMLDivElement | null>(null);\n\tconst trackRef = useRef<HTMLDivElement | null>(null);\n\tconst measureRef = useRef<HTMLDivElement | null>(null);\n\tconst [visibleCount, setVisibleCount] = useState(items.length);\n\n\tconst setRootRef = useCallback((node: HTMLDivElement | null) => {\n\t\trootRef.current = node;\n\t\tif (typeof ref === 'function') ref(node);\n\t\telse if (ref) ref.current = node;\n\t}, [ref]);\n\n\t// Recompute how many tabs fit when the available width or the items change.\n\tuseLayoutEffect(() => {\n\t\tconst root = rootRef.current;\n\t\tconst track = trackRef.current;\n\t\tconst measure = measureRef.current;\n\t\tif (!root || !track || !measure) return;\n\n\t\tconst compute = () => {\n\t\t\tconst trackStyle = getComputedStyle(track);\n\t\t\tconst inset = (parseFloat(trackStyle.paddingLeft) || 0) + (parseFloat(trackStyle.paddingRight) || 0);\n\t\t\tconst available = root.clientWidth - inset;\n\t\t\tif (available <= 0) {\n\t\t\t\tsetVisibleCount(items.length);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst gap = parseFloat(getComputedStyle(measure).columnGap) || 0;\n\t\t\tconst widths = Array.from(measure.querySelectorAll<HTMLElement>('[data-tab-id]')).map((tab) => tab.offsetWidth);\n\t\t\tconst moreWidth = measure.querySelector<HTMLElement>('[data-more-measure]')?.offsetWidth ?? 0;\n\t\t\tsetVisibleCount(fitOverflowTabs(widths, available, gap, moreWidth));\n\t\t};\n\n\t\tcompute();\n\t\tif (typeof ResizeObserver === 'undefined') return;\n\t\tconst observer = new ResizeObserver(compute);\n\t\tobserver.observe(root);\n\t\treturn () => observer.disconnect();\n\t}, [items, strings.more]);\n\n\t// Ensure the active tab is always visible; if it falls into the overflow set,\n\t// swap it with the last visible tab.\n\tconst orderedItems = useMemo(() => {\n\t\tif (!value) return items;\n\t\tconst activeIdx = items.findIndex((i) => i.id === value);\n\t\tif (activeIdx < 0 || activeIdx < visibleCount) return items;\n\t\tconst next = [...items];\n\t\tconst lastVisibleIdx = Math.max(0, visibleCount - 1);\n\t\t[next[activeIdx], next[lastVisibleIdx]] = [next[lastVisibleIdx], next[activeIdx]];\n\t\treturn next;\n\t}, [items, value, visibleCount]);\n\n\tconst visibleItems = orderedItems.slice(0, visibleCount);\n\tconst overflowItems = orderedItems.slice(visibleCount);\n\n\tconst handleSelect = (item: OverflowTabItem) => {\n\t\tonValueChange?.(item.id);\n\t\titem.onClick?.();\n\t};\n\n\t// Roving focus: arrows, Home and End move between tabs; activation stays on\n\t// Enter/Space so moving focus never navigates a link tab by itself.\n\tconst handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) return;\n\t\tconst tabs = Array.from(event.currentTarget.querySelectorAll<HTMLElement>('[role=\"tab\"]'));\n\t\tconst index = tabs.indexOf(event.target as HTMLElement);\n\t\tif (index < 0 || tabs.length === 0) return;\n\t\tconst rtl = getComputedStyle(event.currentTarget).direction === 'rtl';\n\t\tconst forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n\t\tconst next = event.key === 'Home'\n\t\t\t? 0\n\t\t\t: event.key === 'End'\n\t\t\t\t? tabs.length - 1\n\t\t\t\t: event.key === forward\n\t\t\t\t\t? (index + 1) % tabs.length\n\t\t\t\t\t: (index - 1 + tabs.length) % tabs.length;\n\t\tevent.preventDefault();\n\t\ttabs[next]?.focus();\n\t};\n\n\tconst renderTab = (item: OverflowTabItem, isActive: boolean, options?: { measure?: boolean }) => {\n\t\tconst Icon = item.icon;\n\t\tconst tabClasses = cn(\n\t\t\tTAB_BUTTON_BASE,\n\t\t\tisActive ? cn(TAB_ACTIVE, activeTabClassName) : TAB_INACTIVE,\n\t\t\ttabClassName,\n\t\t);\n\t\tconst inner = (\n\t\t\t<>\n\t\t\t\t{!!Icon && <Icon aria-hidden=\"true\" />}\n\t\t\t\t{isSimpleText(item.label) ? (\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t\t\t\t{item.label}\n\t\t\t\t\t</Text>\n\t\t\t\t) : item.label}\n\t\t\t\t{item.badge !== undefined && item.badge !== null && item.badge !== false && (\n\t\t\t\t\t<Badge size=\"sm\" tone=\"secondary\" className=\"overflow-tab-bar--badge\">\n\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t</Badge>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t\tif (options?.measure) {\n\t\t\treturn (\n\t\t\t\t<span key={item.id} data-tab-id={item.id} className={cn('overflow-tab-bar--measure', tabClasses)}>\n\t\t\t\t\t{inner}\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\t\tconst shared = {\n\t\t\t'data-tab-id': item.id,\n\t\t\trole: 'tab',\n\t\t\t'aria-selected': isActive,\n\t\t\ttabIndex: isActive || !value ? 0 : -1,\n\t\t\tonClick: () => handleSelect(item),\n\t\t\tclassName: cn('overflow-tab-bar--tab', tabClasses),\n\t\t} as const;\n\t\tif (item.href) {\n\t\t\treturn <a key={item.id} href={item.href} {...shared}>{inner}</a>;\n\t\t}\n\t\treturn <button key={item.id} type=\"button\" {...shared}>{inner}</button>;\n\t};\n\n\tconst moreContent = (\n\t\t<>\n\t\t\t<MoreHorizontal aria-hidden=\"true\" />\n\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t\t{strings.more}\n\t\t\t</Text>\n\t\t</>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={setRootRef}\n\t\t\tclassName={cn('overflow-tab-bar--component relative w-full min-w-0 max-w-full', className)}\n\t\t\t{...rootProps}\n\t\t>\n\t\t\t{/* Hidden measure row: every tab plus the More trigger at native width,\n\t\t\t laid out but invisible, so the visible strip never has to guess. */}\n\t\t\t<div\n\t\t\t\tref={measureRef}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName=\"pointer-events-none invisible fixed left-0 top-0 z-[-1] flex h-0 w-0 items-center gap-space-2xs overflow-hidden\"\n\t\t\t>\n\t\t\t\t{items.map((i) => renderTab(i, false, { measure: true }))}\n\t\t\t\t<span data-more-measure=\"\" className={cn(TAB_BUTTON_BASE, TAB_INACTIVE)}>{moreContent}</span>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tref={trackRef}\n\t\t\t\tclassName=\"overflow-tab-bar--viewport inline-flex max-w-full min-w-0 items-center gap-space-2xs overflow-hidden rounded-inner bg-muted p-space-2xs align-top\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\trole=\"tablist\"\n\t\t\t\t\taria-label={strings.navigationLabel}\n\t\t\t\t\taria-orientation=\"horizontal\"\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tclassName=\"overflow-tab-bar--tablist flex min-w-0 items-center gap-space-2xs overflow-hidden\"\n\t\t\t\t>\n\t\t\t\t\t{visibleItems.map((item) => renderTab(item, item.id === value))}\n\t\t\t\t</div>\n\t\t\t\t{overflowItems.length > 0 && (\n\t\t\t\t\t<ActionMenu\n\t\t\t\t\t\tactions={overflowItems.map((item) => ({\n\t\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\t\tlabel: item.label,\n\t\t\t\t\t\t\ticon: item.icon,\n\t\t\t\t\t\t\tonClick: () => handleSelect(item),\n\t\t\t\t\t\t}))}\n\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\tcontentClassName=\"min-w-40\"\n\t\t\t\t\t\twidth=\"w-auto\"\n\t\t\t\t\t\tcloseOnSelect\n\t\t\t\t\t\tpreserveOrder\n\t\t\t\t\t\trenderTrigger={\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\taria-label={strings.more}\n\t\t\t\t\t\t\t\tclassName={cn(TAB_BUTTON_BASE, TAB_INACTIVE, 'overflow-tab-bar--more')}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{moreContent}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n});\n\nOverflowTabBar.displayName = 'OverflowTabBar';\n"],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as e from "react";
|
|
2
|
-
//#region src/components/ui/overlay.recipes.ts
|
|
3
|
-
var t = "fixed inset-0 z-50 bg-(--overlay-backdrop)";
|
|
4
|
-
function n(e, t) {
|
|
5
|
-
typeof e == "function" ? e(t) : e && (e.current = t);
|
|
6
|
-
}
|
|
7
|
-
function r(e) {
|
|
8
|
-
let t = e.scrollTop > 1, n = e.scrollTop + e.clientHeight < e.scrollHeight - 1;
|
|
9
|
-
e.hasAttribute("data-scroll-start") !== t && e.toggleAttribute("data-scroll-start", t), e.hasAttribute("data-scroll-end") !== n && e.toggleAttribute("data-scroll-end", n);
|
|
10
|
-
}
|
|
11
|
-
function i(t) {
|
|
12
|
-
return e.useCallback((e) => {
|
|
13
|
-
if (n(t, e), !e) return;
|
|
14
|
-
let i = () => r(e);
|
|
15
|
-
i(), e.addEventListener("scroll", i, { passive: !0 });
|
|
16
|
-
let a = typeof ResizeObserver > "u" ? null : new ResizeObserver(i), o = () => {
|
|
17
|
-
if (a) {
|
|
18
|
-
a.disconnect(), a.observe(e);
|
|
19
|
-
for (let t of Array.from(e.children)) a.observe(t);
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
o();
|
|
23
|
-
let s = typeof MutationObserver > "u" ? null : new MutationObserver(() => {
|
|
24
|
-
o(), i();
|
|
25
|
-
});
|
|
26
|
-
return s?.observe(e, { childList: !0 }), () => {
|
|
27
|
-
e.removeEventListener("scroll", i), a?.disconnect(), s?.disconnect(), n(t, null);
|
|
28
|
-
};
|
|
29
|
-
}, [t]);
|
|
30
|
-
}
|
|
31
|
-
//#endregion
|
|
32
|
-
export { i as n, t };
|
|
33
|
-
|
|
34
|
-
//# sourceMappingURL=overlay.recipes-CNO2S9V6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.recipes-CNO2S9V6.js","names":["React","React$1","modalBackdropRecipe","assignRef","ref","value","syncScrollEdges","start","node","end","useScrollEdges","forwardedRef","update","resize","observe","child","mutation"],"sources":["../src/components/ui/overlay.recipes.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * One modal scrim recipe: a plain tint from the shared semantic token. No\n * backdrop blur — the page behind a modal stays recognisable and the tint alone\n * separates the surface.\n */\nexport const modalBackdropRecipe = 'fixed inset-0 z-50 bg-(--overlay-backdrop)';\n\nfunction assignRef<T>(ref: React.Ref<T> | undefined, value: T | null) {\n\tif (typeof ref === 'function') ref(value);\n\telse if (ref) (ref as React.RefObject<T | null>).current = value;\n}\n\nfunction syncScrollEdges(node: HTMLElement) {\n\t// One pixel of tolerance absorbs fractional scroll positions under zoom.\n\tconst start = node.scrollTop > 1;\n\tconst end = node.scrollTop + node.clientHeight < node.scrollHeight - 1;\n\tif (node.hasAttribute('data-scroll-start') !== start) node.toggleAttribute('data-scroll-start', start);\n\tif (node.hasAttribute('data-scroll-end') !== end) node.toggleAttribute('data-scroll-end', end);\n}\n\n/**\n * Marks which edges of a scrolling modal region are hiding content:\n * `data-scroll-start` while content is scrolled out above, `data-scroll-end`\n * while more content remains below. The modal region recipe draws a rule only\n * on those edges, so a body that fits draws none. Attributes are written to the\n * node directly, so scrolling never re-renders the region.\n */\nexport function useScrollEdges<T extends HTMLElement>(forwardedRef?: React.Ref<T>): React.RefCallback<T> {\n\treturn React.useCallback((node: T | null) => {\n\t\tassignRef(forwardedRef, node);\n\t\tif (!node) return;\n\t\tconst update = () => syncScrollEdges(node);\n\t\tupdate();\n\t\tnode.addEventListener('scroll', update, { passive: true });\n\t\t// Content growth resizes a child rather than the region, so observe both.\n\t\tconst resize = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(update);\n\t\tconst observe = () => {\n\t\t\tif (!resize) return;\n\t\t\tresize.disconnect();\n\t\t\tresize.observe(node);\n\t\t\tfor (const child of Array.from(node.children)) resize.observe(child);\n\t\t};\n\t\tobserve();\n\t\tconst mutation = typeof MutationObserver === 'undefined' ? null : new MutationObserver(() => { observe(); update(); });\n\t\tmutation?.observe(node, { childList: true });\n\t\treturn () => {\n\t\t\tnode.removeEventListener('scroll', update);\n\t\t\tresize?.disconnect();\n\t\t\tmutation?.disconnect();\n\t\t\tassignRef(forwardedRef, null);\n\t\t};\n\t}, [forwardedRef]);\n}\n"],"mappings":";;AAOA,IAAaE,IAAsB;AAEnC,SAASC,EAAa,GAA+B,GAAiB;CACrE,AAAI,OAAOC,KAAQ,aAAYA,EAAIC,CAAK,IAC/BD,MAAK,EAAmC,UAAUC;AAC5D;AAEA,SAASC,EAAgB,GAAmB;CAE3C,IAAMC,IAAQC,EAAK,YAAY,GACzBC,IAAMD,EAAK,YAAYA,EAAK,eAAeA,EAAK,eAAe;CAErE,AADIA,EAAK,aAAa,mBAAmB,MAAMD,KAAOC,EAAK,gBAAgB,qBAAqBD,CAAK,GACjGC,EAAK,aAAa,iBAAiB,MAAMC,KAAKD,EAAK,gBAAgB,mBAAmBC,CAAG;AAC9F;AASA,SAAgBC,EAAsC,GAAmD;CACxG,OAAOV,EAAM,aAAa,MAAmB;EAE5C,IADAG,EAAUQ,GAAcH,CAAI,GACxB,CAACA,GAAM;EACX,IAAMI,UAAeN,EAAgBE,CAAI;EAEzC,AADAI,EAAO,GACPJ,EAAK,iBAAiB,UAAUI,GAAQ,EAAE,SAAS,GAAK,CAAC;EAEzD,IAAMC,IAAS,OAAO,iBAAmB,MAAc,OAAO,IAAI,eAAeD,CAAM,GACjFE,UAAgB;GACrB,IAAKD,GAEL;IADAA,EAAO,WAAW,GAClBA,EAAO,QAAQL,CAAI;IACnB,KAAK,IAAMO,KAAS,MAAM,KAAKP,EAAK,QAAQ,GAAG,EAAO,QAAQO,CAAK;GADhD;EAEpB;EACA,EAAQ;EACR,IAAMC,IAAW,OAAO,mBAAqB,MAAc,OAAO,IAAI,uBAAuB;GAAa,AAAXF,EAAQ,GAAGF,EAAO;EAAG,CAAC;EAErH,OADAI,GAAU,QAAQR,GAAM,EAAE,WAAW,GAAK,CAAC,SAC9B;GAIZ,AAHAA,EAAK,oBAAoB,UAAUI,CAAM,GACzCC,GAAQ,WAAW,GACnBG,GAAU,WAAW,GACrBb,EAAUQ,GAAc,IAAI;EAC7B;CACD,GAAG,CAACA,CAAY,CAAC;AAClB"}
|