themelia-react-ui 1.0.1 → 2.0.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/CHANGELOG.md +417 -0
- package/README.md +67 -16
- package/dist/{accordion-B-5Focs8.js → accordion-CQXVcd7Q.js} +15 -15
- package/dist/accordion-CQXVcd7Q.js.map +1 -0
- package/dist/action-menu-BTpyPWJ2.js +264 -0
- package/dist/action-menu-BTpyPWJ2.js.map +1 -0
- package/dist/affordance-geometry.generated-CCIXb2A1.js +68 -0
- package/dist/affordance-geometry.generated-CCIXb2A1.js.map +1 -0
- package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-2PQ2fItc.js} +206 -215
- package/dist/ai-artifact-2PQ2fItc.js.map +1 -0
- package/dist/{app-shell-at8Kt4l_.js → app-shell-BE_j8-AT.js} +11 -10
- package/dist/app-shell-BE_j8-AT.js.map +1 -0
- package/dist/{attachment-BO2R47wn.js → attachment-q69dlt5Y.js} +14 -14
- package/dist/attachment-q69dlt5Y.js.map +1 -0
- package/dist/auth-M3vGMgDR.js +723 -0
- package/dist/auth-M3vGMgDR.js.map +1 -0
- package/dist/{avatar-Bpzty83c.js → avatar-djdaaQ_s.js} +15 -13
- package/dist/avatar-djdaaQ_s.js.map +1 -0
- package/dist/{badge-BZXZT9wd.js → badge-0tATj-tW.js} +9 -9
- package/dist/badge-0tATj-tW.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/buttons.js +3 -2
- package/dist/base/cards.js +3 -3
- package/dist/base/carousel.js +33 -35
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +246 -222
- package/dist/base/cascader.js.map +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +3 -3
- package/dist/base/display.js +7 -7
- package/dist/base/feedback.js +4 -4
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +94 -92
- 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/navigation.js +6 -6
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +7 -4
- package/dist/base/qr-code.js.map +1 -1
- package/dist/base/repeaters.js +53 -53
- 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 +84 -82
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +1 -1
- 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 +7 -7
- 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 +1 -1
- package/dist/blocks/admin.js +228 -219
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +182 -212
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +665 -620
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +2 -2
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +1439 -1553
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +1 -1
- package/dist/blocks/onboarding.js +6 -6
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +88 -97
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BG_FfMK4.js} +10 -9
- package/dist/breadcrumbs-BG_FfMK4.js.map +1 -0
- package/dist/button-BS3KDg00.js +674 -0
- package/dist/button-BS3KDg00.js.map +1 -0
- package/dist/{button-BS6l5JUw.js → button-R9CCoH7A.js} +3 -3
- package/dist/button-R9CCoH7A.js.map +1 -0
- package/dist/buttons-DS0ZIwJ_.js +99 -0
- package/dist/buttons-DS0ZIwJ_.js.map +1 -0
- package/dist/{cards-Cum56XOF.js → cards-QoJ4syG9.js} +12 -12
- package/dist/{cards-Cum56XOF.js.map → cards-QoJ4syG9.js.map} +1 -1
- package/dist/chart-DwYRKKc-.js +152 -0
- package/dist/chart-DwYRKKc-.js.map +1 -0
- package/dist/checkbox-B7ygNTYp.js +35 -0
- package/dist/checkbox-B7ygNTYp.js.map +1 -0
- package/dist/choice-inputs-DrJ17tpL.js +752 -0
- package/dist/choice-inputs-DrJ17tpL.js.map +1 -0
- package/dist/{code-block-xHKbAJDj.js → code-block-CD0B7M93.js} +27 -27
- package/dist/code-block-CD0B7M93.js.map +1 -0
- package/dist/{collapsible-DsnktFNv.js → collapsible-oMUGM4tr.js} +3 -3
- package/dist/{collapsible-DsnktFNv.js.map → collapsible-oMUGM4tr.js.map} +1 -1
- package/dist/{collection-content-C4fthJV_.js → collection-content-Ys-OZOkY.js} +3 -3
- package/dist/{collection-content-C4fthJV_.js.map → collection-content-Ys-OZOkY.js.map} +1 -1
- package/dist/combobox-6dvVny2q.js +272 -0
- package/dist/combobox-6dvVny2q.js.map +1 -0
- package/dist/combobox-CB7039j7.js +865 -0
- package/dist/combobox-CB7039j7.js.map +1 -0
- package/dist/{command-C0xe7u9B.js → command-kPMPjIxJ.js} +35 -31
- package/dist/command-kPMPjIxJ.js.map +1 -0
- package/dist/{comments-DviPLnwy.js → comments-You0Bzbr.js} +434 -409
- package/dist/comments-You0Bzbr.js.map +1 -0
- package/dist/components/base/accordion/accordion-variants.d.ts +3 -3
- package/dist/components/base/action-menu/action-menu.d.ts +7 -2
- package/dist/components/base/avatar/stacked-avatars.d.ts +5 -4
- package/dist/components/base/badge/badge.d.ts +1 -1
- package/dist/components/base/badge/badge.recipes.d.ts +4 -4
- package/dist/components/base/buttons/base-button.d.ts +7 -0
- package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
- package/dist/components/base/buttons/button.recipes.d.ts +10 -19
- package/dist/components/base/buttons/button.variants.d.ts +1 -0
- package/dist/components/base/buttons/loader-button.d.ts +3 -1
- package/dist/components/base/buttons/text-button.d.ts +2 -2
- package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
- package/dist/components/base/cards/card.recipes.d.ts +13 -5
- package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
- package/dist/components/base/cards/smart-card.types.d.ts +1 -1
- package/dist/components/base/carousel/carousel.d.ts +3 -1
- package/dist/components/base/chart/chart.d.ts +7 -7
- package/dist/components/base/choice-inputs/checkbox.d.ts +6 -7
- package/dist/components/base/choice-inputs/choice-types.d.ts +10 -1
- package/dist/components/base/choice-inputs/pill-radio-group.d.ts +9 -0
- package/dist/components/base/choice-inputs/select-popup.d.ts +9 -1
- package/dist/components/base/choice-inputs/switch-card.d.ts +1 -1
- package/dist/components/base/date-pickers/date-picker-field.d.ts +23 -0
- package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
- package/dist/components/base/date-pickers/datepicker.types.d.ts +16 -3
- package/dist/components/base/display/alert-dialog.d.ts +8 -2
- package/dist/components/base/display/content-block.d.ts +4 -2
- package/dist/components/base/display/date-block.d.ts +1 -1
- package/dist/components/base/display/dialog.d.ts +12 -5
- package/dist/components/base/display/surface-title.d.ts +6 -1
- package/dist/components/base/feedback/alert.d.ts +1 -1
- package/dist/components/base/feedback/state-display.d.ts +5 -4
- package/dist/components/base/forms/form-field.d.ts +1 -0
- package/dist/components/base/forms/form-sizing.d.ts +35 -3
- package/dist/components/base/forms/workflow.d.ts +2 -0
- package/dist/components/base/forms-numeric/coordinates-input.d.ts +3 -0
- package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +4 -1
- package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
- package/dist/components/base/navigation/language-switcher.d.ts +4 -1
- package/dist/components/base/navigation/overflow-tab-bar.d.ts +7 -0
- package/dist/components/base/navigation/page-header/page-header.d.ts +4 -1
- package/dist/components/base/navigation/tabs.d.ts +3 -5
- package/dist/components/base/popover/popover.recipes.d.ts +3 -3
- package/dist/components/base/qr-code/qr-code.d.ts +2 -0
- package/dist/components/base/sheet/index.d.ts +29 -1
- package/dist/components/base/sheet/sheet.d.ts +14 -5
- package/dist/components/base/spinner/spinner.d.ts +3 -2
- package/dist/components/base/structure/structure.types.d.ts +1 -1
- package/dist/components/base/table/index.d.ts +1 -1
- package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
- package/dist/components/base/text-inputs/input-group.d.ts +2 -2
- package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
- package/dist/components/base/upload/upload.recipes.d.ts +11 -0
- package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
- package/dist/components/base/value-inputs/tags-input.d.ts +2 -0
- package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +1 -1
- package/dist/components/blocks/analytics/format-metric-value.d.ts +11 -1
- package/dist/components/blocks/analytics/index.d.ts +1 -1
- package/dist/components/blocks/analytics/types.d.ts +1 -1
- package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
- package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/blocks/commerce/address-card/types.d.ts +3 -1
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +4 -0
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +2 -2
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +1 -1
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
- package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
- package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +1 -1
- package/dist/components/blocks/commerce/payment-method/types.d.ts +3 -1
- package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +1 -1
- package/dist/components/blocks/commerce/seo-listing/types.d.ts +3 -1
- package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -1
- package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +4 -1
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
- package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
- package/dist/components/features/combobox/components/error-message.d.ts +1 -1
- package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
- package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
- package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.types.d.ts +9 -1
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +2 -2
- package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +11 -4
- package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
- package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
- package/dist/components/features/overlays/overlays.types.d.ts +46 -22
- package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
- package/dist/components/features/products/partials/index.d.ts +1 -1
- package/dist/components/features/products/partials/product-metric-tile.d.ts +6 -0
- package/dist/components/features/products/partials/product-tone.d.ts +11 -1
- package/dist/components/features/products/products.types.d.ts +2 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
- package/dist/components/features/table/table.types.d.ts +1 -1
- package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
- package/dist/components/layout/auth/auth.types.d.ts +1 -0
- package/dist/components/layout/page/index.d.ts +1 -1
- package/dist/components/layout/page/page.d.ts +0 -1
- package/dist/components/layout/page/page.types.d.ts +62 -6
- package/dist/components/layout/page/partials/page-header-commands.d.ts +13 -0
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
- package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
- package/dist/components/primitives/date.d.ts +16 -3
- package/dist/components/primitives/dimensions.d.ts +6 -0
- package/dist/components/primitives/duration.d.ts +6 -0
- package/dist/components/primitives/file-size.d.ts +6 -0
- package/dist/components/primitives/index.d.ts +1 -1
- package/dist/components/primitives/initials.d.ts +11 -2
- package/dist/components/primitives/link.d.ts +7 -0
- package/dist/components/primitives/money.d.ts +29 -7
- package/dist/components/primitives/number.d.ts +17 -0
- package/dist/components/primitives/value-typography.d.ts +54 -0
- package/dist/components/primitives/value.d.ts +31 -6
- package/dist/components/typography/heading.d.ts +13 -2
- package/dist/components/typography/index.d.ts +1 -1
- package/dist/components/typography/label.d.ts +3 -0
- package/dist/components/typography/running-text.d.ts +12 -0
- package/dist/components/typography/text-link.d.ts +23 -1
- package/dist/components/typography/text.d.ts +12 -0
- package/dist/components/typography/text.styles.d.ts +37 -5
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/checkbox.d.ts +5 -0
- package/dist/components/ui/overlay.recipes.d.ts +15 -2
- package/dist/components/ui/popover.d.ts +1 -1
- package/dist/components/ui/select.d.ts +3 -1
- package/dist/components/ui/sidebar.d.ts +1 -1
- package/dist/components/ui/switch.d.ts +5 -0
- package/dist/components/ui/table.d.ts +2 -1
- package/dist/container.recipes-D9t8MHR3.js +27 -0
- package/dist/container.recipes-D9t8MHR3.js.map +1 -0
- package/dist/{containers-6s-ucRQQ.js → containers-D_L4mTVb.js} +34 -57
- package/dist/containers-D_L4mTVb.js.map +1 -0
- package/dist/control-group-recipes-DBXmfh2E.js +21 -0
- package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
- package/dist/{copyable-B7SBXJMr.js → copyable-DDjTeW_j.js} +6 -6
- package/dist/{copyable-B7SBXJMr.js.map → copyable-DDjTeW_j.js.map} +1 -1
- package/dist/data-display-3xWQUnMA.js +1335 -0
- package/dist/data-display-3xWQUnMA.js.map +1 -0
- package/dist/date-picker-DrDFj8Lo.js +1527 -0
- package/dist/date-picker-DrDFj8Lo.js.map +1 -0
- package/dist/date-pickers-CnFCb0n2.js +174 -0
- package/dist/date-pickers-CnFCb0n2.js.map +1 -0
- package/dist/date-uf3z37Nm.js +144 -0
- package/dist/date-uf3z37Nm.js.map +1 -0
- package/dist/{display-CFM5myut.js → display-DrdvPwF0.js} +25 -25
- package/dist/display-DrdvPwF0.js.map +1 -0
- package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-CURh59jb.js} +22 -15
- package/dist/dropdown-menu-CURh59jb.js.map +1 -0
- package/dist/features/activities.js +177 -163
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +187 -183
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/async-preview.js +9 -9
- 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 +25 -23
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer/engine.js +1 -1
- package/dist/features/email-composer.js +353 -355
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +346 -354
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +225 -227
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +29 -29
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +59 -58
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +898 -900
- 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 +1412 -1444
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +51 -49
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +103 -97
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +13 -13
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +187 -183
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +3 -3
- package/dist/features/sync.js +7 -7
- package/dist/features/sync.js.map +1 -1
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +508 -503
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/{feedback-DWUkgEjR.js → feedback-C7nR0UtT.js} +30 -31
- package/dist/feedback-C7nR0UtT.js.map +1 -0
- package/dist/field-affordance-recipes-CkOCdE2y.js +46 -0
- package/dist/field-affordance-recipes-CkOCdE2y.js.map +1 -0
- package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-C-MFBX_8.js} +5 -5
- package/dist/field-state-recipes-C-MFBX_8.js.map +1 -0
- package/dist/{filters-BhsUtsxW.js → filters-Da-gNPsE.js} +760 -765
- package/dist/filters-Da-gNPsE.js.map +1 -0
- package/dist/{form-field-Bn7ZH1rA.js → form-field-VZRULhUK.js} +20 -12
- package/dist/form-field-VZRULhUK.js.map +1 -0
- package/dist/form-sizing-uWP4lzVh.js +126 -0
- package/dist/form-sizing-uWP4lzVh.js.map +1 -0
- package/dist/{forms-B7pzS25o.js → forms-DDeEnXSY.js} +38 -38
- package/dist/forms-DDeEnXSY.js.map +1 -0
- package/dist/forms-numeric-D3CO60IF.js +905 -0
- package/dist/forms-numeric-D3CO60IF.js.map +1 -0
- package/dist/{header-C59QZyxV.js → header-2ycNqGOR.js} +42 -37
- package/dist/header-2ycNqGOR.js.map +1 -0
- package/dist/{hooks-CM1Vp9Pe.js → hooks-DQ5SPwZw.js} +2 -2
- package/dist/{hooks-CM1Vp9Pe.js.map → hooks-DQ5SPwZw.js.map} +1 -1
- package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
- package/dist/http-CdEIHyQf.js.map +1 -0
- package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-DKlaKXoo.js} +4 -4
- package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-DKlaKXoo.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/input-BoLm9Hks.js +20 -0
- package/dist/input-BoLm9Hks.js.map +1 -0
- package/dist/input-DhQdBnV3.js +255 -0
- package/dist/input-DhQdBnV3.js.map +1 -0
- package/dist/item-xzh8Df65.js +264 -0
- package/dist/item-xzh8Df65.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 +46 -10
- package/dist/lib/control-group-recipes.d.ts +22 -0
- package/dist/lib/field-affordance-recipes.d.ts +70 -2
- package/dist/lib/field-state-recipes.d.ts +6 -4
- package/dist/lib/format.d.ts +9 -0
- package/dist/lib/money-format.d.ts +30 -0
- package/dist/lib/navigation-row-recipes.d.ts +3 -2
- package/dist/lib/overlay-anatomy-recipes.d.ts +2 -2
- package/dist/lib/surface-recipes.d.ts +13 -8
- package/dist/lib/token-merge.generated.d.ts +144 -2
- package/dist/lib/track-recipes.d.ts +1 -1
- package/dist/lib/ui-provider/provider.d.ts +7 -2
- package/dist/lib/ui-provider/store.d.ts +6 -2
- package/dist/lib/ui-provider/types.d.ts +9 -4
- package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
- package/dist/lib/utils.js +1 -1
- package/dist/media-gallery-DQUQ0m3O.js +201 -0
- package/dist/media-gallery-DQUQ0m3O.js.map +1 -0
- package/dist/{mentions-B8Ko-fhS.js → mentions-DwnO1hh4.js} +40 -39
- package/dist/{mentions-B8Ko-fhS.js.map → mentions-DwnO1hh4.js.map} +1 -1
- package/dist/message-YfFmbXNP.js +127 -0
- package/dist/message-YfFmbXNP.js.map +1 -0
- package/dist/{navigation-BUIn2Qxx.js → navigation-Cbp5V8gG.js} +27 -28
- package/dist/navigation-Cbp5V8gG.js.map +1 -0
- package/dist/navigation-Cs1npsPm.js +300 -0
- package/dist/navigation-Cs1npsPm.js.map +1 -0
- package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DlU-4QYO.js} +3 -3
- package/dist/navigation-row-recipes-DlU-4QYO.js.map +1 -0
- package/dist/number-CKRBYmZK.js +352 -0
- package/dist/number-CKRBYmZK.js.map +1 -0
- package/dist/overlay.recipes-CNO2S9V6.js +34 -0
- package/dist/overlay.recipes-CNO2S9V6.js.map +1 -0
- package/dist/overlays-DhZO7N-I.js +994 -0
- package/dist/overlays-DhZO7N-I.js.map +1 -0
- package/dist/page-C6R_8jFt.js +325 -0
- package/dist/page-C6R_8jFt.js.map +1 -0
- package/dist/{page-header-DQRa0jug.js → page-header-hUTzcRZX.js} +12 -12
- package/dist/page-header-hUTzcRZX.js.map +1 -0
- package/dist/{pagination-C29vvt3I.js → pagination-Cm0jqa3I.js} +21 -21
- package/dist/pagination-Cm0jqa3I.js.map +1 -0
- package/dist/{popover-CoLDEg19.js → popover-Dcv_9jxr.js} +23 -22
- package/dist/popover-Dcv_9jxr.js.map +1 -0
- package/dist/{popover-menu-GLIQTJTx.js → popover-menu-DnRFKnHP.js} +6 -6
- package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-DnRFKnHP.js.map} +1 -1
- package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-wmbvL8Ah.js} +5 -5
- package/dist/popover.recipes-wmbvL8Ah.js.map +1 -0
- package/dist/primitives-BHrwQXFC.js +379 -0
- package/dist/primitives-BHrwQXFC.js.map +1 -0
- package/dist/primitives.js +5 -5
- package/dist/{progress-BOe8l_FZ.js → progress-Br9WTFya.js} +12 -11
- package/dist/progress-Br9WTFya.js.map +1 -0
- package/dist/{receipt-BM8xsGFy.js → receipt-CV89q1fs.js} +8 -8
- package/dist/{receipt-BM8xsGFy.js.map → receipt-CV89q1fs.js.map} +1 -1
- package/dist/rich-text-editor-CF8QYt5p.js +574 -0
- package/dist/rich-text-editor-CF8QYt5p.js.map +1 -0
- package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-CnrbmTS1.js} +35 -26
- package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +1 -0
- package/dist/{rich-text-B7sBAdDG.js → rich-text-j-FGAeZW.js} +4 -4
- package/dist/{rich-text-B7sBAdDG.js.map → rich-text-j-FGAeZW.js.map} +1 -1
- package/dist/{scroll-area-BheMQ270.js → scroll-area-DRdr16Pt.js} +3 -3
- package/dist/scroll-area-DRdr16Pt.js.map +1 -0
- package/dist/{separator-DO0EbCEm.js → separator-BMEvwnSX.js} +2 -2
- package/dist/{separator-DO0EbCEm.js.map → separator-BMEvwnSX.js.map} +1 -1
- package/dist/{separator-Gk_WXH-l.js → separator-Do5GWDYi.js} +4 -4
- package/dist/separator-Do5GWDYi.js.map +1 -0
- package/dist/services/actions/action-adapters.d.ts +4 -0
- package/dist/services/actions.js +8 -3
- package/dist/services/actions.js.map +1 -1
- package/dist/{settings-BnCyyPOJ.js → settings-DHk0L2MF.js} +20 -19
- package/dist/settings-DHk0L2MF.js.map +1 -0
- package/dist/sheet-DRFNY1_D.js +207 -0
- package/dist/sheet-DRFNY1_D.js.map +1 -0
- package/dist/sidebar-Cb8WzOvE.js +511 -0
- package/dist/sidebar-Cb8WzOvE.js.map +1 -0
- package/dist/{sidebar-DPR7fmqN.js → sidebar-Crc9M9JV.js} +220 -201
- package/dist/sidebar-Crc9M9JV.js.map +1 -0
- package/dist/{skeleton-CmT1ppqb.js → skeleton-DVMXr15h.js} +5 -5
- package/dist/{skeleton-CmT1ppqb.js.map → skeleton-DVMXr15h.js.map} +1 -1
- package/dist/smart-card-Bek-TwUp.js +599 -0
- package/dist/smart-card-Bek-TwUp.js.map +1 -0
- package/dist/{spinner-BY9HbUEh.js → spinner-CmTAbEp0.js} +8 -6
- package/dist/spinner-CmTAbEp0.js.map +1 -0
- package/dist/{structure-MvKVq-oL.js → structure-hzCW-XsV.js} +3 -3
- package/dist/{structure-MvKVq-oL.js.map → structure-hzCW-XsV.js.map} +1 -1
- package/dist/{structure.recipes-Bqhf9oIh.js → structure.recipes-EPz60cU8.js} +37 -19
- package/dist/structure.recipes-EPz60cU8.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/surface-recipes-DOdoBXGm.js +28 -0
- package/dist/surface-recipes-DOdoBXGm.js.map +1 -0
- package/dist/table-D6zKeYQX.js +162 -0
- package/dist/table-D6zKeYQX.js.map +1 -0
- package/dist/table-Dn4XSrSB.js +1444 -0
- package/dist/table-Dn4XSrSB.js.map +1 -0
- package/dist/tabs-Dk8E_knt.js +189 -0
- package/dist/tabs-Dk8E_knt.js.map +1 -0
- package/dist/text-inputs-BFpku0Qd.js +331 -0
- package/dist/text-inputs-BFpku0Qd.js.map +1 -0
- package/dist/{text.styles-BwB7vAF2.js → text.styles-g4He6UIW.js} +26 -15
- package/dist/text.styles-g4He6UIW.js.map +1 -0
- package/dist/theme.css +90 -124
- package/dist/themes/green.css +24 -0
- package/dist/{timelines-B9ICkQcV.js → timelines-CxuAFIc2.js} +97 -104
- package/dist/timelines-CxuAFIc2.js.map +1 -0
- package/dist/track-recipes-CDcKmndW.js +10 -0
- package/dist/track-recipes-CDcKmndW.js.map +1 -0
- package/dist/{tree-BdWSaoFT.js → tree-BotPlyiD.js} +13 -13
- package/dist/{tree-BdWSaoFT.js.map → tree-BotPlyiD.js.map} +1 -1
- package/dist/typography/rich-text.js +1 -1
- package/dist/typography-CAr3dQhX.js +116 -0
- package/dist/typography-CAr3dQhX.js.map +1 -0
- package/dist/typography.js +2 -2
- package/dist/{ui-provider-CftIB6TY.js → ui-provider-D2_TeLqw.js} +22 -22
- package/dist/ui-provider-D2_TeLqw.js.map +1 -0
- package/dist/ui-provider.js +1 -1
- package/dist/{upload-D8Za5x_c.js → upload-B0WHW7ak.js} +278 -274
- package/dist/upload-B0WHW7ak.js.map +1 -0
- package/dist/{upload-queue-hIIYBLS7.js → upload-queue-BHZ_wBfd.js} +72 -75
- package/dist/upload-queue-BHZ_wBfd.js.map +1 -0
- package/dist/{usage-card-DnmnJ58D.js → usage-card-U0YBLTNT.js} +31 -33
- package/dist/usage-card-U0YBLTNT.js.map +1 -0
- package/dist/utils-Cospvlj1.js +4445 -0
- package/dist/utils-Cospvlj1.js.map +1 -0
- package/dist/value-inputs-CjfzGMsN.js +854 -0
- package/dist/value-inputs-CjfzGMsN.js.map +1 -0
- package/dist/value-typography-Deb3yQZg.js +116 -0
- package/dist/value-typography-Deb3yQZg.js.map +1 -0
- package/dist/{workspace-C1PZmk8L.js → workspace-YoFjXi6i.js} +97 -105
- package/dist/workspace-YoFjXi6i.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +123 -119
- package/docs/consumer-skill/examples/analytics.tsx +34 -0
- package/docs/consumer-skill/examples/app-layout.tsx +42 -14
- package/docs/consumer-skill/examples/detail.tsx +20 -5
- package/docs/consumer-skill/examples/edit.tsx +1 -1
- package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
- package/docs/consumer-skill/examples/manifest.json +37 -3
- package/docs/consumer-skill/examples/scoped-directory.tsx +2 -2
- package/docs/consumer-skill/examples/website.tsx +56 -0
- package/docs/consumer-skill/references/analytics.md +70 -0
- package/docs/consumer-skill/references/composition.md +195 -9
- package/docs/consumer-skill/references/design-contract.md +33 -7
- package/docs/consumer-skill/references/discovery.md +80 -5
- package/docs/consumer-skill/references/installation.md +22 -0
- package/docs/consumer-skill/references/integration.md +46 -1
- package/docs/consumer-skill/references/public-api.json +2083 -237
- package/docs/consumer-skill/references/review.md +74 -6
- package/docs/consumer-skill/references/theming.md +59 -8
- package/docs/consumer-skill/references/tokens.json +180 -9
- package/docs/consumer-skill/references/workflows.md +34 -0
- package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
- package/docs/consumer-skill/scripts/composition-policy.mjs +271 -18
- package/docs/consumer-skill/scripts/discovery.mjs +69 -9
- package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
- package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
- package/package.json +11 -6
- package/dist/accordion-B-5Focs8.js.map +0 -1
- package/dist/action-menu-Cx3SdfbN.js +0 -265
- package/dist/action-menu-Cx3SdfbN.js.map +0 -1
- package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
- package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
- package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
- package/dist/app-shell-at8Kt4l_.js.map +0 -1
- package/dist/attachment-BO2R47wn.js.map +0 -1
- package/dist/auth-OFwWSAap.js +0 -704
- package/dist/auth-OFwWSAap.js.map +0 -1
- package/dist/avatar-Bpzty83c.js.map +0 -1
- package/dist/badge-BZXZT9wd.js.map +0 -1
- package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
- package/dist/button-BS6l5JUw.js.map +0 -1
- package/dist/buttons-Co6GavvM.js +0 -674
- package/dist/buttons-Co6GavvM.js.map +0 -1
- package/dist/chart-DVfcwQu6.js +0 -149
- package/dist/chart-DVfcwQu6.js.map +0 -1
- package/dist/checkbox-BavDRjF7.js +0 -34
- package/dist/checkbox-BavDRjF7.js.map +0 -1
- package/dist/choice-inputs-CC7XqPQO.js +0 -619
- package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
- package/dist/code-block-xHKbAJDj.js.map +0 -1
- package/dist/combobox-DEbdr-3u.js +0 -273
- package/dist/combobox-DEbdr-3u.js.map +0 -1
- package/dist/combobox-xv3yJbzl.js +0 -850
- package/dist/combobox-xv3yJbzl.js.map +0 -1
- package/dist/command-C0xe7u9B.js.map +0 -1
- package/dist/comments-DviPLnwy.js.map +0 -1
- package/dist/containers-6s-ucRQQ.js.map +0 -1
- package/dist/data-display-cWIRdeaf.js +0 -1129
- package/dist/data-display-cWIRdeaf.js.map +0 -1
- package/dist/date-BFNMnrS5.js +0 -140
- package/dist/date-BFNMnrS5.js.map +0 -1
- package/dist/date-picker-CA6ogMQB.js +0 -1521
- package/dist/date-picker-CA6ogMQB.js.map +0 -1
- package/dist/date-pickers-BPIKLdsD.js +0 -224
- package/dist/date-pickers-BPIKLdsD.js.map +0 -1
- package/dist/display-CFM5myut.js.map +0 -1
- package/dist/dropdown-menu-BlnyHr-9.js.map +0 -1
- package/dist/feedback-DWUkgEjR.js.map +0 -1
- package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
- package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
- package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
- package/dist/filters-BhsUtsxW.js.map +0 -1
- package/dist/form-field-Bn7ZH1rA.js.map +0 -1
- package/dist/form-sizing-BWs70_a2.js +0 -100
- package/dist/form-sizing-BWs70_a2.js.map +0 -1
- package/dist/format-iamDSqs2.js +0 -110
- package/dist/format-iamDSqs2.js.map +0 -1
- package/dist/forms-B7pzS25o.js.map +0 -1
- package/dist/forms-numeric-BUBxELBv.js +0 -867
- package/dist/forms-numeric-BUBxELBv.js.map +0 -1
- package/dist/header-C59QZyxV.js.map +0 -1
- package/dist/http-CLTVJc5I.js.map +0 -1
- package/dist/input-WwYQZJzG.js +0 -202
- package/dist/input-WwYQZJzG.js.map +0 -1
- package/dist/input-ci9fIgFH.js +0 -20
- package/dist/input-ci9fIgFH.js.map +0 -1
- package/dist/item-pJ0GsOiJ.js +0 -257
- package/dist/item-pJ0GsOiJ.js.map +0 -1
- package/dist/media-gallery-DhDRgnVZ.js +0 -200
- package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
- package/dist/message-COsdEvXT.js +0 -108
- package/dist/message-COsdEvXT.js.map +0 -1
- package/dist/navigation-BUIn2Qxx.js.map +0 -1
- package/dist/navigation-DBEu4POU.js +0 -267
- package/dist/navigation-DBEu4POU.js.map +0 -1
- package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
- package/dist/number-BNT_BIzJ.js +0 -269
- package/dist/number-BNT_BIzJ.js.map +0 -1
- package/dist/overlay.recipes-BxW5FIfK.js +0 -6
- package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
- package/dist/overlays-B11wZka6.js +0 -982
- package/dist/overlays-B11wZka6.js.map +0 -1
- package/dist/page-BV6ioQg3.js +0 -202
- package/dist/page-BV6ioQg3.js.map +0 -1
- package/dist/page-header-DQRa0jug.js.map +0 -1
- package/dist/pagination-C29vvt3I.js.map +0 -1
- package/dist/popover-CoLDEg19.js.map +0 -1
- package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
- package/dist/primitives-DKPOGVpj.js +0 -330
- package/dist/primitives-DKPOGVpj.js.map +0 -1
- package/dist/progress-BOe8l_FZ.js.map +0 -1
- package/dist/rich-text-editor-CoVrTiSv.js +0 -575
- package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
- package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
- package/dist/scroll-area-BheMQ270.js.map +0 -1
- package/dist/select-B2mb-qN2.js +0 -108
- package/dist/select-B2mb-qN2.js.map +0 -1
- package/dist/separator-Gk_WXH-l.js.map +0 -1
- package/dist/settings-BnCyyPOJ.js.map +0 -1
- package/dist/sheet-B-q914Ad.js +0 -205
- package/dist/sheet-B-q914Ad.js.map +0 -1
- package/dist/sidebar-C_2p3Tfj.js +0 -501
- package/dist/sidebar-C_2p3Tfj.js.map +0 -1
- package/dist/sidebar-DPR7fmqN.js.map +0 -1
- package/dist/smart-card-CYLn46e6.js +0 -578
- package/dist/smart-card-CYLn46e6.js.map +0 -1
- package/dist/spinner-BY9HbUEh.js.map +0 -1
- package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
- package/dist/surface-recipes-CQfRr-VL.js +0 -27
- package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
- package/dist/table-BS39xnlq.js +0 -1424
- package/dist/table-BS39xnlq.js.map +0 -1
- package/dist/table-DnlAJ-xR.js +0 -146
- package/dist/table-DnlAJ-xR.js.map +0 -1
- package/dist/tabs-B5cNMWiP.js +0 -187
- package/dist/tabs-B5cNMWiP.js.map +0 -1
- package/dist/text-inputs-Dh9XGyiS.js +0 -331
- package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
- package/dist/text.styles-BwB7vAF2.js.map +0 -1
- package/dist/timelines-B9ICkQcV.js.map +0 -1
- package/dist/track-recipes-LLPNVwFg.js +0 -10
- package/dist/track-recipes-LLPNVwFg.js.map +0 -1
- package/dist/typography-Cv8MT-82.js +0 -96
- package/dist/typography-Cv8MT-82.js.map +0 -1
- package/dist/ui-provider-CftIB6TY.js.map +0 -1
- package/dist/upload-D8Za5x_c.js.map +0 -1
- package/dist/upload-queue-hIIYBLS7.js.map +0 -1
- package/dist/usage-card-DnmnJ58D.js.map +0 -1
- package/dist/utils-C2EKeIw3.js +0 -72
- package/dist/utils-C2EKeIw3.js.map +0 -1
- package/dist/value-inputs-DX2dbxjj.js +0 -824
- package/dist/value-inputs-DX2dbxjj.js.map +0 -1
- package/dist/workspace-C1PZmk8L.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-OFwWSAap.js","names":["_Fragment","_Fragment","React","_Fragment","Text","DisplayLabel","Grid","Stack","CardContent","CardFooter","ItemMedia","ItemDescription","ItemGroup","ItemContent","Item","ItemTitle","useLayoutLinkRenderer","React$1","Fragment$1","AuthCard","props","hasHeader","eyebrow","title","description","headerEnd","CardShell","surface","cn","className","media","mediaClassName","headerClassName","Heading","contentClassName","banner","children","footer","footerClassName","isAuthBrandConfig","brand","isValidElement","useAuthLinks","resolvedRenderLink","useMemo","links","link","useAuthShell","visibleFooterLinks","footerLinks","visiblePolicyLinks","policyLinks","visibleLanguageLinks","languageLinks","visibleSocialProviders","socialProviders","provider","hasBrand","hasAfterCard","postCard","languageSwitcher","hasSplitPanel","splitPanel","variant","defaultAuthShellStrings","defaultAuthFooterLinksStrings","defaultAuthSocialProvidersStrings","defaultAuthMethodSwitchStrings","AuthFooterLinks","stringsProp","strings","useStrings","visibleLinks","leadingIcon","linkNode","Fragment","index","separator","PROVIDER_BUTTON_CLASS","GoogleMark","MicrosoftMark","GithubMark","AppleMark","ProviderIcon","KeyRound","AuthSocialProviderButton","content","buttonClassName","Button","event","AuthSocialProviders","visibleProviders","providers","layout","SURFACE_CLASS","AuthSplitPanel","hasIntro","visibleFeatures","features","feature","SIZE_CLASS","isSplitPanelProps","panel","renderBrandContent","hasText","renderBrand","renderLink","renderSplitPanel","AuthShell","variantProp","isSplit","panelFirst","splitSide","showStackedPanel","splitMobile","brandNode","main","align","mainClassName","size","stackClassName","cardMedia","cardMediaClassName","cardFooter","cardClassName","cardContentClassName","hasSocialProviders","socialProvidersLayout","socialDivider","Globe2","splitGridClassName","splitPanelClassName","AuthForm","formProps","renderProps","AuthFormRow","firstEnabledOption","options","option","useAuthMethodSwitch","visibleOptions","fallbackValue","defaultValue","internalValue","setInternalValue","isControlled","value","selectedValue","selectedOption","setValue","nextOption","nextValue","onValueChange","AuthMethodSwitch","ariaLabel","rootProps","segmented","optionButtons","selected","optionContent","divider"],"sources":["../src/components/layout/auth/auth-card.tsx","../src/components/layout/auth/auth-hooks.tsx","../src/components/layout/auth/auth.strings.ts","../src/components/layout/auth/auth-footer-links.tsx","../src/components/layout/auth/auth-social-providers.tsx","../src/components/layout/auth/auth-split-panel.tsx","../src/components/layout/auth/auth-shell.tsx","../src/components/layout/auth/auth-form.tsx","../src/components/layout/auth/auth-method-switch.tsx"],"sourcesContent":["import { CardContent, CardFooter, CardShell } from '../../base/cards';\nimport { Stack } from '../../base/structure';\nimport { DisplayLabel, Heading, Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nimport type { AuthCardProps } from './auth.types';\n\nexport function AuthCard({\n\tsurface = 'card',\n\teyebrow,\n\ttitle,\n\tdescription,\n\theaderEnd,\n\tbanner,\n\tmedia,\n\tfooter,\n\tchildren,\n\tclassName,\n\theaderClassName,\n\tmediaClassName,\n\tcontentClassName,\n\tfooterClassName,\n\t...props\n}: AuthCardProps) {\n\tconst hasHeader = Boolean(eyebrow || title || description || headerEnd);\n\n\treturn (\n\t\t<CardShell\n\t\t\tdata-slot=\"auth-card\"\n\t\t\tdata-surface={surface}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-card--component',\n\t\t\t\t'w-full min-w-0 gap-0 py-0',\n\t\t\t\t// `bare` keeps the header/body/footer rhythm and drops only the\n\t\t\t\t// framing, so the same composition works on a page that is itself\n\t\t\t\t// the surface. Padding goes too — without a frame it reads as drift.\n\t\t\t\tsurface === 'card'\n\t\t\t\t\t? 'overflow-hidden rounded-radius border border-border/70 bg-card shadow-sm'\n\t\t\t\t\t: 'border-0 bg-transparent shadow-none',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!media && (\n\t\t\t\t<div className={cn('auth-card--media', 'min-h-12 border-b border-border/60 bg-muted/50', mediaClassName)}>\n\t\t\t\t\t{media}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{!!hasHeader && (\n\t\t\t\t<header className={cn('auth-card--header min-w-0', surface === 'card' ? 'p-surface pb-0' : 'p-0', headerClassName)}>\n\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"xl\" align=\"start\" justify=\"between\" className=\"auth-card--header-layout min-w-0\">\n\t\t\t\t\t\t<Stack gap=\"normal\" className=\"min-w-0\">\n\t\t\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t\t\t<DisplayLabel tag=\"div\" className=\"auth-card--eyebrow\">\n\t\t\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!title && (\n\t\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\t\ttag=\"h1\"\n\t\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\t\tclassName=\"auth-card--title border-0 pb-0 text-base leading-tight\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t\t<Text tag=\"div\" type=\"secondary\" lineHeight=\"relaxed\" className=\"auth-card--description max-w-prose\">\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t{!!headerEnd && <div className=\"auth-card--header-end shrink-0\">{headerEnd}</div>}\n\t\t\t\t\t</Stack>\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<CardContent\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-card--content',\n\t\t\t\t\t'min-w-0',\n\t\t\t\t\tsurface === 'card' ? 'p-surface' : 'px-0 py-space-xl',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!banner && <div className=\"auth-card--banner mb-5 min-w-0\">{banner}</div>}\n\t\t\t\t{children}\n\t\t\t</CardContent>\n\n\t\t\t{!!footer && (\n\t\t\t\t<CardFooter\n\t\t\t\t\tclassName={cn('auth-card--footer', 'min-w-0 flex-wrap border-t border-border/60 p-surface', footerClassName)}\n\t\t\t\t>\n\t\t\t\t\t{footer}\n\t\t\t\t</CardFooter>\n\t\t\t)}\n\t\t</CardShell>\n\t);\n}\n","import { isValidElement, useMemo } from 'react';\n\nimport { useLayoutLinkRenderer } from '../hooks';\nimport type {\n\tAuthBrand,\n\tAuthBrandConfig,\n\tUseAuthLinksOptions,\n\tUseAuthLinksReturn,\n\tUseAuthShellOptions,\n\tUseAuthShellReturn,\n} from './auth.types';\n\nexport function isAuthBrandConfig(brand: AuthBrand | undefined): brand is AuthBrandConfig {\n\treturn Boolean(\n\t\tbrand &&\n\t\t\ttypeof brand === 'object' &&\n\t\t\t!isValidElement(brand) &&\n\t\t\t('logo' in brand || 'label' in brand || 'description' in brand || 'href' in brand),\n\t);\n}\n\nexport function useAuthLinks({\n\tlinks = [],\n\trenderLink,\n}: UseAuthLinksOptions = {}): UseAuthLinksReturn {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst visibleLinks = useMemo(\n\t\t() => links.filter((link) => link.visible !== false),\n\t\t[links],\n\t);\n\n\treturn {\n\t\tlinks: visibleLinks,\n\t\trenderLink: resolvedRenderLink,\n\t};\n}\n\nexport function useAuthShell({\n\tvariant = 'card',\n\tbrand,\n\tfooter,\n\tfooterLinks = [],\n\tpolicyLinks = [],\n\tlanguageLinks = [],\n\tlanguageSwitcher,\n\tpostCard,\n\tsocialProviders = [],\n\tsplitPanel,\n\trenderLink,\n}: UseAuthShellOptions = {}): UseAuthShellReturn {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst visibleFooterLinks = useMemo(\n\t\t() => footerLinks.filter((link) => link.visible !== false),\n\t\t[footerLinks],\n\t);\n\tconst visiblePolicyLinks = useMemo(\n\t\t() => policyLinks.filter((link) => link.visible !== false),\n\t\t[policyLinks],\n\t);\n\tconst visibleLanguageLinks = useMemo(\n\t\t() => languageLinks.filter((link) => link.visible !== false),\n\t\t[languageLinks],\n\t);\n\tconst visibleSocialProviders = useMemo(\n\t\t() => socialProviders.filter((provider) => provider.visible !== false),\n\t\t[socialProviders],\n\t);\n\tconst hasBrand = Boolean(\n\t\tbrand &&\n\t\t\t(isAuthBrandConfig(brand)\n\t\t\t\t? brand.logo || brand.label || brand.description\n\t\t\t\t: brand),\n\t);\n\tconst hasAfterCard = Boolean(\n\t\tpostCard ||\n\t\t\tfooter ||\n\t\t\tlanguageSwitcher ||\n\t\t\tvisibleFooterLinks.length > 0 ||\n\t\t\tvisiblePolicyLinks.length > 0 ||\n\t\t\tvisibleLanguageLinks.length > 0,\n\t);\n\tconst hasSplitPanel = Boolean(splitPanel);\n\n\treturn {\n\t\t// Only `split` depends on a panel being supplied; falling back to `card`\n\t\t// for every other variant would silently flatten them. `bare` in\n\t\t// particular has nothing to do with the split panel, so clamping on\n\t\t// `hasSplitPanel` alone discarded it.\n\t\tvariant: variant === 'split' && !hasSplitPanel ? 'card' : variant,\n\t\thasBrand,\n\t\thasAfterCard,\n\t\thasSplitPanel,\n\t\thasSocialProviders: visibleSocialProviders.length > 0,\n\t\trenderLink: resolvedRenderLink,\n\t\tfooterLinks: visibleFooterLinks,\n\t\tpolicyLinks: visiblePolicyLinks,\n\t\tlanguageLinks: visibleLanguageLinks,\n\t\tsocialProviders: visibleSocialProviders,\n\t};\n}\n","export interface AuthShellStrings {\n\tsocialDivider: string;\n\tsocialProvidersLabel: string;\n\tfooterLinksLabel: string;\n\tpolicyLinksLabel: string;\n\tlanguageLinksLabel: string;\n}\n\nexport const defaultAuthShellStrings: AuthShellStrings = {\n\tsocialDivider: 'or continue with email',\n\tsocialProvidersLabel: 'Social sign-in options',\n\tfooterLinksLabel: 'Authentication links',\n\tpolicyLinksLabel: 'Policies',\n\tlanguageLinksLabel: 'Language options',\n};\n\nexport interface AuthFooterLinksStrings {\n\tlabel: string;\n}\n\nexport const defaultAuthFooterLinksStrings: AuthFooterLinksStrings = {\n\tlabel: 'Authentication links',\n};\n\nexport interface AuthSocialProvidersStrings {\n\tlabel: string;\n}\n\nexport const defaultAuthSocialProvidersStrings: AuthSocialProvidersStrings = {\n\tlabel: 'Social sign-in options',\n};\n\nexport interface AuthMethodSwitchStrings {\n\tlabel: string;\n\tdivider: string;\n}\n\nexport const defaultAuthMethodSwitchStrings: AuthMethodSwitchStrings = {\n\tlabel: 'Authentication method',\n\tdivider: 'or',\n};\n","import { Fragment } from 'react';\n\nimport { Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { useAuthLinks } from './auth-hooks';\nimport { defaultAuthFooterLinksStrings } from './auth.strings';\nimport type { AuthFooterLinksProps } from './auth.types';\n\nexport function AuthFooterLinks({\n\tlinks,\n\tleadingIcon,\n\tseparator = '·',\n\trenderLink,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthFooterLinksProps) {\n\tconst strings = useStrings(defaultAuthFooterLinksStrings, stringsProp);\n\tconst { links: visibleLinks, renderLink: resolvedRenderLink } = useAuthLinks({\n\t\tlinks,\n\t\trenderLink,\n\t});\n\n\tif (visibleLinks.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<nav\n\t\t\taria-label={props['aria-label'] ?? strings.label}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-footer-links--component',\n\t\t\t\t'flex flex-wrap items-center justify-center gap-x-space-md gap-y-space-xs text-center',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!leadingIcon && (\n\t\t\t\t<span className=\"auth-footer-links--icon flex shrink-0 items-center text-muted-foreground\" aria-hidden=\"true\">\n\t\t\t\t\t{leadingIcon}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t{visibleLinks.map((link, index) => {\n\t\t\t\tconst linkNode = resolvedRenderLink({\n\t\t\t\t\thref: link.href,\n\t\t\t\t\ttarget: link.target,\n\t\t\t\t\trel: link.rel,\n\t\t\t\t\texternal: link.external,\n\t\t\t\t\tdisabled: link.disabled,\n\t\t\t\t\tonClick: link.onClick,\n\t\t\t\t\tclassName: cn(\n\t\t\t\t\t\t'auth-footer-links--item',\n\t\t\t\t\t\t'text-muted-foreground transition-colors hover:text-foreground',\n\t\t\t\t\t\tlink.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t),\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">\n\t\t\t\t\t\t\t{link.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t),\n\t\t\t\t});\n\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={link.id ?? index}>\n\t\t\t\t\t\t{index > 0 && (\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=\"xs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName=\"auth-footer-links--separator\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{separator}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{linkNode}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</nav>\n\t);\n}\n","/* oxlint-disable shadcn/no-raw-colors -- Official provider logos are external brand artwork, not themeable UI states. */\nimport { KeyRound } from 'lucide-react';\n\nimport { Button } from '../../base/buttons';\nimport { Grid } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../hooks';\nimport { defaultAuthSocialProvidersStrings } from './auth.strings';\nimport type {\n\tAuthSocialProvider,\n\tAuthSocialProviderButtonProps,\n\tAuthSocialProvidersProps,\n} from './auth.types';\n\nconst PROVIDER_BUTTON_CLASS = 'auth-social-provider-button--component inline-flex h-action w-full items-center justify-center gap-space-md rounded-radius border border-input bg-background px-control text-pxs font-medium text-foreground shadow-xs transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50';\n\nfunction GoogleMark() {\n\treturn (\n\t\t<svg data-artwork=\"auth-provider-logo\"\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName=\"size-icon\"\n\t\t\tviewBox=\"0 0 256 262\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t>\n\t\t\t<path fill=\"#4285F4\" d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\" />\n\t\t\t<path fill=\"#34A853\" d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\" />\n\t\t\t<path fill=\"#FBBC05\" d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782\" />\n\t\t\t<path fill=\"#EB4335\" d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\" />\n\t\t</svg>\n\t);\n}\n\nfunction MicrosoftMark() {\n\treturn (\n\t\t<svg data-artwork=\"auth-provider-logo\" aria-hidden=\"true\" className=\"size-icon\" viewBox=\"0 0 23 23\">\n\t\t\t<path fill=\"#f25022\" d=\"M1 1h10v10H1z\" />\n\t\t\t<path fill=\"#7fba00\" d=\"M12 1h10v10H12z\" />\n\t\t\t<path fill=\"#00a4ef\" d=\"M1 12h10v10H1z\" />\n\t\t\t<path fill=\"#ffb900\" d=\"M12 12h10v10H12z\" />\n\t\t</svg>\n\t);\n}\n\nfunction GithubMark() {\n\treturn (\n\t\t<svg data-artwork=\"auth-provider-logo\" aria-hidden=\"true\" className=\"size-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t<path d=\"M12 2C6.48 2 2 6.58 2 12.24c0 4.53 2.87 8.37 6.84 9.73.5.09.68-.22.68-.49 0-.24-.01-.88-.01-1.73-2.78.62-3.37-1.37-3.37-1.37-.45-1.18-1.11-1.5-1.11-1.5-.91-.64.07-.63.07-.63 1 .07 1.53 1.06 1.53 1.06.9 1.57 2.36 1.12 2.93.86.09-.67.35-1.12.64-1.38-2.22-.26-4.56-1.14-4.56-5.07 0-1.12.39-2.04 1.03-2.76-.1-.26-.45-1.31.1-2.72 0 0 .84-.28 2.75 1.05A9.32 9.32 0 0 1 12 6.95c.85 0 1.7.12 2.5.35 1.9-1.33 2.74-1.05 2.74-1.05.55 1.41.2 2.46.1 2.72.64.72 1.03 1.64 1.03 2.76 0 3.94-2.34 4.8-4.57 5.06.36.32.68.95.68 1.91 0 1.38-.01 2.49-.01 2.83 0 .27.18.59.69.49A10.12 10.12 0 0 0 22 12.24C22 6.58 17.52 2 12 2Z\" />\n\t\t</svg>\n\t);\n}\n\nfunction AppleMark() {\n\treturn (\n\t\t<svg data-artwork=\"auth-provider-logo\" aria-hidden=\"true\" className=\"size-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t<path d=\"M16.37 12.05c-.02-2.26 1.85-3.35 1.94-3.4-1.06-1.55-2.69-1.76-3.26-1.78-1.37-.14-2.7.82-3.39.82-.71 0-1.78-.8-2.93-.78-1.5.02-2.9.89-3.67 2.25-1.57 2.72-.4 6.72 1.1 8.92.76 1.08 1.64 2.29 2.79 2.25 1.13-.05 1.55-.72 2.91-.72 1.35 0 1.75.72 2.93.69 1.21-.02 1.98-1.09 2.71-2.18.87-1.24 1.22-2.46 1.23-2.52-.03-.01-2.34-.9-2.36-3.55ZM14.16 5.42c.61-.76 1.03-1.8.91-2.85-.88.04-1.98.61-2.62 1.35-.57.65-1.08 1.73-.95 2.74.99.08 2.02-.5 2.66-1.24Z\" />\n\t\t</svg>\n\t);\n}\n\nfunction ProviderIcon({ provider }: { provider: AuthSocialProvider }) {\n\tif (provider.icon) return <>{provider.icon}</>;\n\tswitch (provider.provider) {\n\t\tcase 'google':\n\t\t\treturn <GoogleMark />;\n\t\tcase 'github':\n\t\t\treturn <GithubMark />;\n\t\tcase 'microsoft':\n\t\t\treturn <MicrosoftMark />;\n\t\tcase 'apple':\n\t\t\treturn <AppleMark />;\n\t\tdefault:\n\t\t\treturn <KeyRound className=\"size-icon\" aria-hidden=\"true\" />;\n\t}\n}\n\nexport function AuthSocialProviderButton({\n\tprovider,\n\trenderLink,\n\tclassName,\n}: AuthSocialProviderButtonProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst content = (\n\t\t<>\n\t\t\t<ProviderIcon provider={provider} />\n\t\t\t<Text tag=\"span\" className=\"text-inherit\">\n\t\t\t\t{provider.label}\n\t\t\t</Text>\n\t\t</>\n\t);\n\tconst buttonClassName = cn(\n\t\tPROVIDER_BUTTON_CLASS,\n\t\tprovider.disabled && 'pointer-events-none opacity-50',\n\t\tclassName,\n\t);\n\n\tif (provider.href) {\n\t\treturn resolvedRenderLink({\n\t\t\thref: provider.href,\n\t\t\ttarget: provider.target,\n\t\t\trel: provider.rel,\n\t\t\texternal: provider.external,\n\t\t\tdisabled: provider.disabled,\n\t\t\tonClick: provider.onClick,\n\t\t\tclassName: buttonClassName,\n\t\t\tchildren: content,\n\t\t});\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\ttone=\"secondary\"\n\t\t\tbuttonStyle=\"outline\"\n\t\t\tfullWidth\n\t\t\tdisabled={provider.disabled}\n\t\t\tclassName={cn('auth-social-provider-button--component', className)}\n\t\t\tonClick={(event) => provider.onClick?.(event)}\n\t\t>\n\t\t\t{content}\n\t\t</Button>\n\t);\n}\n\nexport function AuthSocialProviders({\n\tproviders,\n\tlayout = 'stack',\n\trenderLink,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthSocialProvidersProps) {\n\tconst strings = useStrings(defaultAuthSocialProvidersStrings, stringsProp);\n\tconst visibleProviders = providers?.filter((provider) => provider.visible !== false) ?? [];\n\n\tif (visibleProviders.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Grid\n\t\t\tcolumns={layout === 'grid' ? { base: 1, sm: 2 } : 1}\n\t\t\tgap=\"md\"\n\t\t\trole=\"group\"\n\t\t\taria-label={props['aria-label'] ?? strings.label}\n\t\t\tdata-layout={layout}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-social-providers--component',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{visibleProviders.map((provider) => (\n\t\t\t\t<AuthSocialProviderButton\n\t\t\t\t\tkey={provider.id ?? String(provider.label)}\n\t\t\t\t\tprovider={provider}\n\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</Grid>\n\t);\n}\n","import {\n\tItem,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '../../base/item';\nimport { Stack } from '../../base/structure';\nimport { DisplayLabel, Heading, Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nimport type { AuthSplitPanelProps } from './auth.types';\n\nconst SURFACE_CLASS: Record<NonNullable<AuthSplitPanelProps['surface']>, string> = {\n\tcard: 'border-border/70 bg-card',\n\tmuted: 'border-border/60 bg-muted/40',\n};\n\nexport function AuthSplitPanel({\n\teyebrow,\n\ttitle,\n\tdescription,\n\tmedia,\n\tfeatures,\n\tfooter,\n\tchildren,\n\tsurface = 'muted',\n\tclassName,\n\tcontentClassName,\n\t...props\n}: AuthSplitPanelProps) {\n\tconst hasIntro = Boolean(eyebrow || title || description);\n\tconst visibleFeatures = features?.filter((feature) => feature.title) ?? [];\n\n\treturn (\n\t\t<Stack\n\t\t\trender={<aside />}\n\t\t\tgap=\"none\"\n\t\t\tjustify=\"between\"\n\t\t\tdata-slot=\"auth-split-panel\"\n\t\t\tdata-surface={surface}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-split-panel--component',\n\t\t\t\t'min-h-full w-full overflow-hidden border',\n\t\t\t\tSURFACE_CLASS[surface],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Stack\n\t\t\t\tgap=\"2xl\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-split-panel--content',\n\t\t\t\t\t'min-h-full p-6 md:p-8 lg:p-10',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!media && (\n\t\t\t\t\t<div className=\"auth-split-panel--media overflow-hidden rounded-radius border border-border/60 bg-background/70\">\n\t\t\t\t\t\t{media}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasIntro && (\n\t\t\t\t\t<Stack gap=\"md\" className=\"auth-split-panel--intro max-w-xl\">\n\t\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t\t<DisplayLabel tag=\"div\" className=\"auth-split-panel--eyebrow\">\n\t\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!title && (\n\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\ttag=\"h2\"\n\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--title border-0 pb-0 text-base leading-tight\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--description max-w-prose\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\n\t\t\t\t{visibleFeatures.length > 0 && (\n\t\t\t\t\t<ItemGroup className=\"auth-split-panel--features\">\n\t\t\t\t\t\t{visibleFeatures.map((feature, index) => (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={feature.id ?? index}\n\t\t\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--feature bg-background/70\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!feature.icon && (\n\t\t\t\t\t\t\t\t\t<ItemMedia variant=\"icon\" className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{feature.icon}\n\t\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t\t\t\t\t\t<ItemTitle>{feature.title}</ItemTitle>\n\t\t\t\t\t\t\t\t\t{!!feature.description && (\n\t\t\t\t\t\t\t\t\t\t<ItemDescription clamp=\"none\">{feature.description}</ItemDescription>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ItemGroup>\n\t\t\t\t)}\n\n\t\t\t\t{children}\n\n\t\t\t\t{!!footer && (\n\t\t\t\t\t<div className=\"auth-split-panel--footer\">\n\t\t\t\t\t\t{footer}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n","import { Globe2 } from 'lucide-react';\nimport { isValidElement, type ReactNode } from 'react';\n\nimport { Text } from '../../typography';\nimport { Stack } from '../../base/structure';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { AuthCard } from './auth-card';\nimport { AuthFooterLinks } from './auth-footer-links';\nimport { isAuthBrandConfig, useAuthShell } from './auth-hooks';\nimport { defaultAuthShellStrings } from './auth.strings';\nimport { AuthSocialProviders } from './auth-social-providers';\nimport { AuthSplitPanel } from './auth-split-panel';\nimport type {\n\tAuthBrand,\n\tAuthBrandConfig,\n\tAuthShellProps,\n\tAuthSplitPanelProps,\n} from './auth.types';\n\nconst SIZE_CLASS: Record<NonNullable<AuthShellProps['size']>, string> = {\n\tsm: 'max-w-sm',\n\tmd: 'max-w-md',\n\tlg: 'max-w-lg',\n};\n\nfunction isSplitPanelProps(panel: AuthShellProps['splitPanel']): panel is AuthSplitPanelProps {\n\treturn Boolean(panel && typeof panel === 'object' && !isValidElement(panel));\n}\n\nfunction renderBrandContent(brand: AuthBrandConfig): ReactNode {\n\tconst hasText = Boolean(brand.label || brand.description);\n\n\treturn (\n\t\t<>\n\t\t\t{!!brand.logo && (\n\t\t\t\t<div className=\"auth-shell--brand-logo shrink-0\">\n\t\t\t\t\t{brand.logo}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!hasText && (\n\t\t\t\t<div className=\"auth-shell--brand-text min-w-0\">\n\t\t\t\t\t{!!brand.label && (\n\t\t\t\t\t\t<Text tag=\"div\" weight=\"semibold\" className=\"auth-shell--brand-label\">\n\t\t\t\t\t\t\t{brand.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!brand.description && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"auth-shell--brand-description\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{brand.description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nfunction renderBrand({\n\tbrand,\n\trenderLink,\n}: {\n\t/** Logo, name, and href for the product mark. */\n\tbrand?: AuthBrand;\n\trenderLink: NonNullable<AuthShellProps['renderLink']>;\n}) {\n\tif (!brand) return null;\n\n\tif (!isAuthBrandConfig(brand)) {\n\t\treturn (\n\t\t\t<div className=\"auth-shell--brand flex items-center justify-center\">\n\t\t\t\t{brand}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst content = renderBrandContent(brand);\n\tconst className = cn(\n\t\t'auth-shell--brand',\n\t\t'inline-flex items-center justify-center gap-2.5 self-center rounded-radius-md text-foreground',\n\t\tbrand.href && 'transition-opacity hover:opacity-80',\n\t);\n\n\tif (brand.href) {\n\t\treturn renderLink({\n\t\t\thref: brand.href,\n\t\t\t'aria-label': brand.ariaLabel,\n\t\t\tclassName,\n\t\t\tchildren: content,\n\t\t});\n\t}\n\n\treturn <div className={className}>{content}</div>;\n}\n\nfunction renderSplitPanel(panel: AuthShellProps['splitPanel']) {\n\tif (!panel) return null;\n\tif (isValidElement(panel)) return panel;\n\tif (isSplitPanelProps(panel)) return <AuthSplitPanel {...panel} />;\n\treturn null;\n}\n\nexport function AuthShell({\n\tchildren,\n\tvariant: variantProp = 'card',\n\tsize = 'md',\n\talign = 'center',\n\tbrand,\n\teyebrow,\n\ttitle,\n\tdescription,\n\theaderEnd,\n\tbanner,\n\tcardMedia,\n\tcardMediaClassName,\n\tcardFooter,\n\tpostCard,\n\tfooter,\n\tfooterLinks,\n\tpolicyLinks,\n\tlanguageLinks,\n\tlanguageSwitcher,\n\tsocialProviders,\n\tsocialProvidersLayout = 'stack',\n\tsocialDivider,\n\tsplitPanel,\n\tsplitSide = 'left',\n\tsplitMobile = 'hidden',\n\trenderLink,\n\tclassName,\n\tmainClassName,\n\tstackClassName,\n\tcardClassName,\n\tcardContentClassName,\n\tsplitGridClassName,\n\tsplitPanelClassName,\n\tfooterClassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthShellProps) {\n\tconst strings = useStrings(defaultAuthShellStrings, stringsProp);\n\tconst {\n\t\tvariant,\n\t\thasBrand,\n\t\thasAfterCard,\n\t\thasSplitPanel,\n\t\thasSocialProviders,\n\t\trenderLink: resolvedRenderLink,\n\t\tfooterLinks: visibleFooterLinks,\n\t\tpolicyLinks: visiblePolicyLinks,\n\t\tlanguageLinks: visibleLanguageLinks,\n\t\tsocialProviders: visibleSocialProviders,\n\t} = useAuthShell({\n\t\tvariant: variantProp,\n\t\tbrand,\n\t\tfooter,\n\t\tfooterLinks,\n\t\tpolicyLinks,\n\t\tlanguageLinks,\n\t\tlanguageSwitcher,\n\t\tpostCard,\n\t\tsocialProviders,\n\t\tsplitPanel,\n\t\trenderLink,\n\t});\n\tconst isSplit = variant === 'split' && hasSplitPanel;\n\tconst panel = renderSplitPanel(splitPanel);\n\tconst panelFirst = splitSide === 'left';\n\tconst showStackedPanel = splitMobile === 'stacked';\n\tconst brandNode = hasBrand ? renderBrand({ brand, renderLink: resolvedRenderLink }) : null;\n\n\tconst main = (\n\t\t<Stack\n\t\t\trender={<main />}\n\t\t\tgap=\"none\"\n\t\t\talign={align === 'start' ? 'start' : 'center'}\n\t\t\tjustify=\"center\"\n\t\t\tclassName={cn(\n\t\t\t\t'auth-shell--main',\n\t\t\t\t'min-h-svh w-full px-4 py-8 sm:px-6 md:px-8',\n\t\t\t\talign === 'start' && 'pt-12',\n\t\t\t\tisSplit && 'lg:min-h-svh',\n\t\t\t\tmainClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Stack\n\t\t\t\tgap=\"xl\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--stack',\n\t\t\t\t\t'w-full',\n\t\t\t\t\tSIZE_CLASS[size],\n\t\t\t\t\tstackClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{brandNode}\n\n\t\t\t\t<AuthCard\n\t\t\t\t\tsurface={variant === 'bare' ? 'bare' : 'card'}\n\t\t\t\t\teyebrow={eyebrow}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\theaderEnd={headerEnd}\n\t\t\t\t\tbanner={banner}\n\t\t\t\t\tmedia={cardMedia}\n\t\t\t\t\tmediaClassName={cardMediaClassName}\n\t\t\t\t\tfooter={cardFooter}\n\t\t\t\t\tclassName={cardClassName}\n\t\t\t\t\tcontentClassName={cardContentClassName}\n\t\t\t\t>\n\t\t\t\t\t{!!hasSocialProviders && (\n\t\t\t\t\t\t<Stack gap=\"xl\" className=\"auth-shell--social mb-space-xl\">\n\t\t\t\t\t\t\t<AuthSocialProviders\n\t\t\t\t\t\t\t\tproviders={visibleSocialProviders}\n\t\t\t\t\t\t\t\tlayout={socialProvidersLayout}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.socialProvidersLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"auth-shell--social-divider flex items-center gap-space-lg\">\n\t\t\t\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t{socialDivider ?? strings.socialDivider}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t)}\n\t\t\t\t\t{children}\n\t\t\t\t</AuthCard>\n\n\t\t\t\t{!!hasAfterCard && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tgap=\"lg\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--after-card',\n\t\t\t\t\t\t\t'text-center',\n\t\t\t\t\t\t\tfooterClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!postCard && <div className=\"auth-shell--post-card\">{postCard}</div>}\n\t\t\t\t\t\t{!!languageSwitcher && (\n\t\t\t\t\t\t\t<div className=\"auth-shell--language-switcher\">\n\t\t\t\t\t\t\t\t{languageSwitcher}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visibleLanguageLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--language-links\"\n\t\t\t\t\t\t\t\tlinks={visibleLanguageLinks}\n\t\t\t\t\t\t\t\tleadingIcon={<Globe2 className=\"size-icon-md\" />}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.languageLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visibleFooterLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--footer-links\"\n\t\t\t\t\t\t\t\tlinks={visibleFooterLinks}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.footerLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visiblePolicyLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--policy-links\"\n\t\t\t\t\t\t\t\tlinks={visiblePolicyLinks}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.policyLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!footer && <div className=\"auth-shell--footer\">{footer}</div>}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n\n\tif (!isSplit) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-slot=\"auth-shell\"\n\t\t\t\tdata-variant={variant === 'bare' ? 'bare' : 'card'}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--component',\n\t\t\t\t\t'min-h-svh bg-background text-foreground',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{main}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"auth-shell\"\n\t\t\tdata-variant=\"split\"\n\t\t\tdata-split-side={splitSide}\n\t\t\tdata-split-mobile={splitMobile}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-shell--component',\n\t\t\t\t'min-h-svh bg-background text-foreground',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--split-grid min-h-svh lg:grid',\n\t\t\t\t\tpanelFirst\n\t\t\t\t\t\t? 'lg:grid-cols-[minmax(0,1fr)_minmax(24rem,34rem)]'\n\t\t\t\t\t\t: 'lg:grid-cols-[minmax(24rem,34rem)_minmax(0,1fr)]',\n\t\t\t\t\tsplitGridClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!panelFirst && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--split-panel',\n\t\t\t\t\t\t\tshowStackedPanel ? 'block' : 'hidden lg:block',\n\t\t\t\t\t\t\tsplitPanelClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{panel}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{main}\n\t\t\t\t{!panelFirst && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--split-panel',\n\t\t\t\t\t\t\tshowStackedPanel ? 'block' : 'hidden lg:block',\n\t\t\t\t\t\t\tsplitPanelClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{panel}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { cn } from '../../../lib/utils';\nimport { Grid } from '../../base/structure';\n\nimport type { AuthFormProps, AuthFormRowProps } from './auth.types';\n\n/**\n * Canonical auth form track. The explicit minmax(0, 1fr) column prevents\n * nowrap controls from widening a narrow auth card through grid min-content.\n */\nexport function AuthForm({ className, ...props }: AuthFormProps) {\n\tconst { children, ...formProps } = props;\n\n\treturn (\n\t\t<Grid\n\t\t\trender={(renderProps) => <form {...formProps} {...renderProps} />}\n\t\t\tcolumns={1}\n\t\t\tgap=\"xl\"\n\t\t\tdata-slot=\"auth-form\"\n\t\t\tclassName={cn('auth-form--component', className)}\n\t\t>\n\t\t\t{children}\n\t\t</Grid>\n\t);\n}\n\n/**\n * Auxiliary auth row for controls such as \"remember me\" and recovery links.\n * Items remain side by side when they fit and wrap without widening the card.\n */\nexport function AuthFormRow({ className, ...props }: AuthFormRowProps) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"auth-form-row\"\n\t\t\tclassName={cn(\n\t\t\t\t'auth-form-row--component',\n\t\t\t\t'flex min-w-0 flex-wrap items-center justify-between gap-x-space-lg gap-y-space-md',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n","import * as React from 'react';\n\nimport { Button } from '../../base/buttons';\nimport { Grid, Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { defaultAuthMethodSwitchStrings } from './auth.strings';\nimport type {\n\tAuthMethodOption,\n\tAuthMethodSwitchProps,\n\tUseAuthMethodSwitchOptions,\n\tUseAuthMethodSwitchReturn,\n} from './auth.types';\n\nfunction firstEnabledOption(options: AuthMethodOption[]) {\n\treturn options.find((option) => !option.disabled);\n}\n\nexport function useAuthMethodSwitch({\n\toptions = [],\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n}: UseAuthMethodSwitchOptions = {}): UseAuthMethodSwitchReturn {\n\tconst visibleOptions = React.useMemo(() => options.filter((option) => option.visible !== false), [options]);\n\tconst fallbackValue = defaultValue ?? firstEnabledOption(visibleOptions)?.id;\n\tconst [internalValue, setInternalValue] = React.useState<string | undefined>(fallbackValue);\n\tconst isControlled = value !== undefined;\n\tconst selectedValue = isControlled ? value : internalValue;\n\tconst selectedOption = visibleOptions.find((option) => option.id === selectedValue);\n\n\tconst setValue = React.useCallback(\n\t\t(nextValue: string) => {\n\t\t\tconst nextOption = visibleOptions.find((option) => option.id === nextValue);\n\t\t\tif (!nextOption || nextOption.disabled) return;\n\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalValue(nextValue);\n\t\t\t}\n\n\t\t\tonValueChange?.(nextValue, nextOption);\n\t\t},\n\t\t[isControlled, onValueChange, visibleOptions],\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (isControlled || selectedOption || visibleOptions.length === 0) return;\n\t\tsetInternalValue(firstEnabledOption(visibleOptions)?.id);\n\t}, [isControlled, selectedOption, visibleOptions]);\n\n\treturn {\n\t\tvalue: selectedValue,\n\t\tselectedOption,\n\t\toptions: visibleOptions,\n\t\tsetValue,\n\t};\n}\n\nexport function AuthMethodSwitch({\n\toptions = [],\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tlayout = 'stack',\n\tdivider,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthMethodSwitchProps) {\n\tconst strings = useStrings(defaultAuthMethodSwitchStrings, stringsProp);\n\tconst { ['aria-label']: ariaLabel, ...rootProps } = props;\n\tconst {\n\t\tvalue: selectedValue,\n\t\toptions: visibleOptions,\n\t\tsetValue,\n\t} = useAuthMethodSwitch({\n\t\toptions,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t});\n\n\tif (visibleOptions.length === 0) {\n\t\treturn null;\n\t}\n\tconst segmented = layout === 'segmented';\n\tconst optionButtons = visibleOptions.map((option) => {\n\t\tconst selected = option.id === selectedValue;\n\t\tconst optionContent = (\n\t\t\t<>\n\t\t\t\t{!!option.icon && (\n\t\t\t\t\t<span className=\"auth-method-switch--option-icon shrink-0\" aria-hidden=\"true\">\n\t\t\t\t\t\t{option.icon}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<Stack render={<span />} gap=\"dense\" className=\"auth-method-switch--option-copy w-full\">\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'max-w-full whitespace-normal break-words text-inherit leading-tight',\n\t\t\t\t\t\t\tsegmented ? 'text-center min-[480px]:truncate min-[480px]:text-start' : 'text-start',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!option.description && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'whitespace-normal break-words',\n\t\t\t\t\t\t\t\tsegmented ? 'hidden min-[480px]:block min-[480px]:truncate' : 'text-start leading-snug',\n\t\t\t\t\t\t\t\tselected ? 'text-inherit opacity-75' : 'text-muted-foreground',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t</>\n\t\t);\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tkey={option.id}\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-pressed={selected}\n\t\t\t\tdisabled={option.disabled}\n\t\t\t\ttone={selected ? 'neutral' : 'secondary'}\n\t\t\t\tbuttonStyle={selected ? 'solid' : segmented ? 'ghost' : 'outline'}\n\t\t\t\tfullWidth\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-method-switch--option',\n\t\t\t\t\t'h-auto min-h-action-lg min-w-0 justify-start whitespace-normal rounded-radius-md px-control py-row-y-lg text-start',\n\t\t\t\t\tsegmented &&\n\t\t\t\t\t\t'min-h-action justify-center border-0 px-control-sm py-row-y text-center shadow-none min-[480px]:px-control min-[480px]:text-start',\n\t\t\t\t\tselected && 'auth-method-switch--option-selected',\n\t\t\t\t)}\n\t\t\t\tonClick={() => setValue(option.id)}\n\t\t\t>\n\t\t\t\t{segmented ? (\n\t\t\t\t\t<span className=\"auth-method-switch--option-inner flex w-full flex-col justify-center gap-space-xs min-[480px]:w-auto min-[480px]:flex-row min-[480px]:justify-start min-[480px]:gap-space-md\">\n\t\t\t\t\t\t{optionContent}\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\t<Stack render={<span />} direction=\"horizontal\" gap=\"md\" wrap={false} className=\"auth-method-switch--option-inner w-full\">\n\t\t\t\t\t\t{optionContent}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Button>\n\t\t);\n\t});\n\n\treturn (\n\t\t<Stack gap=\"lg\" className={cn('auth-method-switch--component', className)} {...rootProps}>\n\t\t\t{divider !== null && divider !== false && (\n\t\t\t\t<div className=\"auth-method-switch--divider flex items-center gap-space-lg\">\n\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t{divider ?? strings.divider}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{layout === 'segmented' ? (\n\t\t\t\t<div\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\taria-label={ariaLabel ?? strings.label}\n\t\t\t\t\tdata-layout={layout}\n\t\t\t\t\tclassName=\"auth-method-switch--options grid min-w-0 grid-cols-[repeat(auto-fit,minmax(0,1fr))] gap-space-xs rounded-radius border border-border bg-muted/40 p-space-xs\"\n\t\t\t\t>\n\t\t\t\t\t{optionButtons}\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<Grid\n\t\t\t\t\tcolumns={layout === 'grid' ? { base: 1, sm: 2 } : 1}\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\taria-label={ariaLabel ?? strings.label}\n\t\t\t\t\tdata-layout={layout}\n\t\t\t\t\tclassName=\"auth-method-switch--options\"\n\t\t\t\t>\n\t\t\t\t\t{optionButtons}\n\t\t\t\t</Grid>\n\t\t\t)}\n\t\t</Stack>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"avatar-Bpzty83c.js","names":["Avatar","AvatarPrimitive","AvatarImage","AvatarFallback","AvatarBadge","AvatarGroup","AvatarGroupCount","Avatar","React","PrimitiveAvatar","PrimitiveAvatarImage","PrimitiveAvatarFallback","PrimitiveAvatarBadge","PrimitiveAvatarGroup","PrimitiveAvatarGroupCount","Avatar","resolveComponentScale","useDensityConfig","cn","affordanceGeometry","Text","formatInitials","React$1","Avatar$2","props","Avatar","size","className","AvatarImage$1","AvatarFallback$1","AvatarBadge$1","AvatarGroup$1","AvatarGroupCount$1","AVATAR_SIZE_CLASSNAMES","getPrimitiveSize","Avatar$1","sizeProp","defaultScale","AvatarImage","AvatarFallback","children","AvatarBadge","AvatarGroup","AvatarGroupCount","FALLBACK_TONES","FALLBACK_TONE_CLASSNAMES","pickFallbackTone","override","seed","s","c","StackedAvatars","visible","users","max","overflow","overflowContent","overflowFormatter","initials","user","fallbackTone","index","avatarClassName","showOverflow"],"sources":["../src/components/ui/avatar.tsx","../src/components/base/avatar/avatar.tsx","../src/components/base/avatar/stacked-avatars.tsx"],"sourcesContent":["import { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6 after:border-border group/avatar relative flex shrink-0 select-none after:absolute after:inset-0 after:border after:mix-blend-darken dark:after:mix-blend-lighten\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\n \"rounded-full aspect-square size-full object-cover\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted text-muted-foreground rounded-full flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\"bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 ring-background relative flex shrink-0 items-center justify-center ring-2\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n}\n","/**\n * Avatar — tokenized base wrapper around the shadcn/Base UI avatar primitive.\n * Public sizing uses the shared component scale.\n */\nimport * as React from 'react';\n\nimport {\n\tAvatar as PrimitiveAvatar,\n\tAvatarBadge as PrimitiveAvatarBadge,\n\tAvatarFallback as PrimitiveAvatarFallback,\n\tAvatarGroup as PrimitiveAvatarGroup,\n\tAvatarGroupCount as PrimitiveAvatarGroupCount,\n\tAvatarImage as PrimitiveAvatarImage,\n} from '../../ui/avatar';\nimport { useDensityConfig, type ComponentScale } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\nimport { affordanceGeometry } from '../../../lib/affordance-geometry.generated';\n\nexport type AvatarSize = ComponentScale;\n\nexport interface AvatarProps\n\textends Omit<React.ComponentPropsWithoutRef<typeof PrimitiveAvatar>, 'size'> {\n\t/** Size preset. */\n\tsize?: AvatarSize;\n}\n\nexport type AvatarImageProps = React.ComponentPropsWithoutRef<typeof PrimitiveAvatarImage>;\nexport type AvatarFallbackProps = React.ComponentPropsWithoutRef<typeof PrimitiveAvatarFallback>;\nexport type AvatarBadgeProps = React.ComponentPropsWithoutRef<typeof PrimitiveAvatarBadge>;\nexport type AvatarGroupProps = React.ComponentPropsWithoutRef<typeof PrimitiveAvatarGroup>;\nexport type AvatarGroupCountProps = React.ComponentPropsWithoutRef<typeof PrimitiveAvatarGroupCount>;\n\nconst AVATAR_SIZE_CLASSNAMES: Record<AvatarSize, string> = {\n\tsm: 'size-avatar-sm data-[size=sm]:size-avatar-sm',\n\tmd: 'size-avatar',\n\tlg: 'size-avatar-lg data-[size=lg]:size-avatar-lg',\n};\n\nfunction getPrimitiveSize(size: AvatarSize): NonNullable<React.ComponentPropsWithoutRef<typeof PrimitiveAvatar>['size']> {\n\tif (size === 'sm') return 'sm';\n\tif (size === 'lg') return 'lg';\n\treturn 'default';\n}\n\nconst Avatar = React.forwardRef<React.ElementRef<typeof PrimitiveAvatar>, AvatarProps>(\n\t({ size: sizeProp, className, ...props }, ref) => {\n\t\tconst { defaultScale } = useDensityConfig();\n\t\tconst size = resolveComponentScale(sizeProp, defaultScale);\n\t\treturn (\n\t\t\t<PrimitiveAvatar\n\t\t\t\tref={ref}\n\t\t\t\tsize={getPrimitiveSize(size)}\n\t\t\t\tdata-scale={size}\n\t\t\t\tclassName={cn('avatar--component', AVATAR_SIZE_CLASSNAMES[size], className)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nAvatar.displayName = 'Avatar';\n\nconst AvatarImage = React.forwardRef<React.ElementRef<typeof PrimitiveAvatarImage>, AvatarImageProps>(\n\t({ className, ...props }, ref) => (\n\t\t<PrimitiveAvatarImage\n\t\t\tref={ref}\n\t\t\tclassName={cn('avatar--image', className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nAvatarImage.displayName = 'AvatarImage';\n\nconst AvatarFallback = React.forwardRef<React.ElementRef<typeof PrimitiveAvatarFallback>, AvatarFallbackProps>(\n\t({ className, children, ...props }, ref) => (\n\t\t<PrimitiveAvatarFallback\n\t\t\tref={ref}\n\t\t\tclassName={cn('avatar--fallback text-xs font-medium leading-none', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint' ? (\n\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"none\" className=\"text-inherit\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</PrimitiveAvatarFallback>\n\t),\n);\nAvatarFallback.displayName = 'AvatarFallback';\n\nconst AvatarBadge = React.forwardRef<React.ElementRef<typeof PrimitiveAvatarBadge>, AvatarBadgeProps>(\n\t({ className, ...props }, ref) => (\n\t\t<PrimitiveAvatarBadge\n\t\t\tref={ref}\n\t\t\tclassName={cn('avatar--badge', className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nAvatarBadge.displayName = 'AvatarBadge';\n\nconst AvatarGroup = React.forwardRef<React.ElementRef<typeof PrimitiveAvatarGroup>, AvatarGroupProps>(\n\t({ className, ...props }, ref) => (\n\t\t<PrimitiveAvatarGroup\n\t\t\tref={ref}\n\t\t\tclassName={cn('avatar-group--component isolate items-center', affordanceGeometry.avatarOverlap.md, affordanceGeometry.avatarOverlap.sm, affordanceGeometry.avatarOverlap.lg, className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nAvatarGroup.displayName = 'AvatarGroup';\n\nconst AvatarGroupCount = React.forwardRef<React.ElementRef<typeof PrimitiveAvatarGroupCount>, AvatarGroupCountProps>(\n\t({ className, children, ...props }, ref) => (\n\t\t<PrimitiveAvatarGroupCount\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'avatar-group-count--component size-avatar text-xs',\n\t\t\t\t'group-has-data-[size=sm]/avatar-group:size-avatar-sm',\n\t\t\t\t'group-has-data-[size=lg]/avatar-group:size-avatar-lg',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint' ? (\n\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"none\" className=\"text-inherit\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</PrimitiveAvatarGroupCount>\n\t),\n);\nAvatarGroupCount.displayName = 'AvatarGroupCount';\n\nexport {\n\tAvatar,\n\tAvatarImage,\n\tAvatarFallback,\n\tAvatarGroup,\n\tAvatarGroupCount,\n\tAvatarBadge,\n};\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 './avatar';\nimport { formatInitials } from '../../primitives/initials-format';\nimport { Text } from '../../typography';\nimport { useDensityConfig, type ComponentScale } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { cn } from '../../../lib/utils';\nimport type { SemanticTone } from '../../../lib/component-vocabulary';\n\nexport type StackedAvatarsSize = ComponentScale;\nexport type StackedAvatarTone = SemanticTone;\n\nexport interface StackedAvatarUser {\n\t/** Stable identity for this entry. */\n\tid?: string;\n\t/** Form field name, forwarded for native submits. */\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\t/** Size preset. */\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'neutral',\n\t'primary',\n\t'secondary',\n\t'info',\n\t'success',\n];\n\nconst FALLBACK_TONE_CLASSNAMES: Record<StackedAvatarTone, string> = {\n\tneutral: 'bg-muted text-muted-foreground',\n\tprimary: 'bg-primary/10 text-primary-accent',\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 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: sizeProp,\n\tclassName,\n\tshowOverflow = true,\n\toverflowFormatter,\n\tavatarClassName,\n}: StackedAvatarsProps) {\n\tconst { defaultScale } = useDensityConfig();\n\tconst size = resolveComponentScale(sizeProp, defaultScale);\n\tconst visible = users.slice(0, max);\n\tconst overflow = Math.max(0, users.length - max);\n\tconst overflowContent = overflowFormatter ? overflowFormatter(overflow) : `+${overflow}`;\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 = formatInitials(user.name, {\n\t\t\t\t\tmaxCharacters: size === 'sm' ? 1 : 2,\n\t\t\t\t\tfallback: '?',\n\t\t\t\t});\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 data-scale={size} data-size={size === 'md' ? 'default' : size}>\n\t\t\t\t\t{typeof overflowContent === 'string' || typeof overflowContent === 'number' || typeof overflowContent === 'bigint' ? (\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\">\n\t\t\t\t\t\t\t{overflowContent}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : overflowContent}\n\t\t\t\t</AvatarGroupCount>\n\t\t\t)}\n\t\t</AvatarGroup>\n\t);\n}\n\nStackedAvatars.displayName = 'StackedAvatars';\n"],"mappings":";;;;;;;;;;AAKA,SAASA,EAAO,EACd,cACA,UAAO,WACP,GAAGwB,KAGF;CACD,OACE,kBAACvB,EAAgB,MAAjB;EACE,aAAU;EACV,aAAWyB;EACX,WAAWR,EACT,yPACAS,CACF;EACA,GAAIH;CACL,CAAA;AAEL;AAEA,SAAStB,EAAY,EAAE,cAAW,GAAGsB,KAAsC;CACzE,OACE,kBAACvB,EAAgB,OAAjB;EACE,aAAU;EACV,WAAWiB,EACT,qDACAS,CACF;EACA,GAAIH;CACL,CAAA;AAEL;AAEA,SAASrB,EAAe,EACtB,cACA,GAAGqB,KAC8B;CACjC,OACE,kBAACvB,EAAgB,UAAjB;EACE,aAAU;EACV,WAAWiB,EACT,sIACAS,CACF;EACA,GAAIH;CACL,CAAA;AAEL;AAEA,SAASpB,EAAY,EAAE,cAAW,GAAGoB,KAAuC;CAC1E,OACE,kBAAC,QAAD;EACE,aAAU;EACV,WAAWN,EACT,4KACA,iFACA,6FACA,iFACAS,CACF;EACA,GAAIH;CACL,CAAA;AAEL;AAEA,SAASnB,EAAY,EAAE,cAAW,GAAGmB,KAAsC;CACzE,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAWN,EACT,uGACAS,CACF;EACA,GAAIH;CACL,CAAA;AAEL;AAEA,SAASlB,EAAiB,EACxB,cACA,GAAGkB,KAC2B;CAC9B,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAWN,EAAG,4VAA4VS,CAAS;EACnX,GAAIH;CACL,CAAA;AAEL;;;AC5DA,IAAMS,IAAqD;CAC1D,IAAI;CACJ,IAAI;CACJ,IAAI;AACL;AAEA,SAASC,EAAiB,GAA+F;CAGxH,OAFIR,MAAS,OAAa,OACtBA,MAAS,OAAa,OACnB;AACR;AAEA,IAAMnB,IAASC,EAAM,YACnB,EAAE,MAAM4B,GAAU,cAAW,GAAGZ,KAAS,MAAQ;CACjD,IAAM,EAAE,oBAAiBP,EAAiB,GACpCS,IAAOV,EAAsBoB,GAAUC,CAAY;CACzD,OACC,kBAAC5B,GAAD;EACM;EACL,MAAMyB,EAAiBR,CAAI;EAC3B,cAAYA;EACZ,WAAWR,EAAG,qBAAqBe,EAAuBP,IAAOC,CAAS;EAC1E,GAAIH;CACJ,CAAA;AAEH,CACD;AACA,EAAO,cAAc;AAErB,IAAMc,IAAc9B,EAAM,YACxB,EAAE,cAAW,GAAGgB,KAAS,MACzB,kBAACd,GAAD;CACM;CACL,WAAWQ,EAAG,iBAAiBS,CAAS;CACxC,GAAIH;AACJ,CAAA,CAEH;AACA,EAAY,cAAc;AAE1B,IAAMe,IAAiB/B,EAAM,YAC3B,EAAE,cAAW,aAAU,GAAGgB,KAAS,MACnC,kBAACb,GAAD;CACM;CACL,WAAWO,EAAG,qDAAqDS,CAAS;CAC5E,GAAIH;CAEH,UAAA,OAAOgB,KAAa,YAAY,OAAOA,KAAa,YAAY,OAAOA,KAAa,WACpF,kBAACpB,GAAD;EAAM,KAAI;EAAO,MAAK;EAAU,QAAO;EAAS,YAAW;EAAO,WAAU;EAC1E;CACI,CAAA,IACHoB;AACoB,CAAA,CAE3B;AACA,EAAe,cAAc;AAE7B,IAAMC,IAAcjC,EAAM,YACxB,EAAE,cAAW,GAAGgB,KAAS,MACzB,kBAACZ,GAAD;CACM;CACL,WAAWM,EAAG,iBAAiBS,CAAS;CACxC,GAAIH;AACJ,CAAA,CAEH;AACA,EAAY,cAAc;AAE1B,IAAMkB,IAAclC,EAAM,YACxB,EAAE,cAAW,GAAGgB,KAAS,MACzB,kBAACX,GAAD;CACM;CACL,WAAWK,EAAG,gDAAgDC,EAAmB,cAAc,IAAIA,EAAmB,cAAc,IAAIA,EAAmB,cAAc,IAAIQ,CAAS;CACtL,GAAIH;AACJ,CAAA,CAEH;AACA,EAAY,cAAc;AAE1B,IAAMmB,IAAmBnC,EAAM,YAC7B,EAAE,cAAW,aAAU,GAAGgB,KAAS,MACnC,kBAACV,GAAD;CACM;CACL,WAAWI,EACV,qDACA,wDACA,wDACAS,CACD;CACA,GAAIH;CAEH,UAAA,OAAOgB,KAAa,YAAY,OAAOA,KAAa,YAAY,OAAOA,KAAa,WACpF,kBAACpB,GAAD;EAAM,KAAI;EAAO,MAAK;EAAU,QAAO;EAAS,YAAW;EAAO,WAAU;EAC1E;CACI,CAAA,IACHoB;AACsB,CAAA,CAE7B;AACA,EAAiB,cAAc;;;ACnF/B,IAAMI,IAAsC;CAC3C;CACA;CACA;CACA;CACA;AACD,GAEMC,IAA8D;CACnE,SAAS;CACT,SAAS;CACT,WAAW;CACX,MAAM;CACN,SAAS;CACT,SAAS;CACT,aAAa;AACd;AAEA,SAASC,EAAiB,GAAuB,GAAuC;CAQvF,OAPI,OAAOC,KAAa,WAChBA,IAEJ,OAAOA,KAAa,WAChBH,EAAe,KAAK,IAAIG,CAAQ,IAAIH,EAAe,UAGpDA,GADK,OAAOI,KAAS,WAAWA,IAAO,MAAM,KAAKA,CAAI,CAAC,CAAC,QAAQ,GAAG,MAAMC,IAAIC,EAAE,WAAW,CAAC,GAAG,CAAC,KAC1EN,EAAe;AAC5C;AAEA,SAAgBO,EAAe,EAC9B,UACA,SAAM,GACN,MAAMf,GACN,cACA,kBAAe,IACf,sBACA,sBACuB;CACvB,IAAM,EAAE,oBAAiBnB,EAAiB,GACpCS,IAAOV,EAAsBoB,GAAUC,CAAY,GACnDe,IAAUC,EAAM,MAAM,GAAGC,CAAG,GAC5BC,IAAW,KAAK,IAAI,GAAGF,EAAM,SAASC,CAAG,GACzCE,IAAkBC,IAAoBA,EAAkBF,CAAQ,IAAI,IAAIA;CAE9E,OACC,kBAACb,GAAD;EAAa,WAAWxB,EAAG,8BAA8BS,CAAS;EAAlE,UAAA,CACEyB,EAAQ,KAAK,GAAM,MAAU;GAC7B,IAAMM,IAAWrC,EAAesC,EAAK,MAAM;IAC1C,eAAejC,MAAS,OAAO,IAAI;IACnC,UAAU;GACX,CAAC,GACKkC,IAAed,EAAiBa,EAAK,MAAMA,EAAK,QAAQE,GAAOF,EAAK,IAAI;GAC9E,OACC,kBAAC5C,GAAD;IAEO;IACN,WAAWG,EAAG,mBAAmB4C,CAAe;IAChD,OAAOH,EAAK;IAJb,UAAA,CAMEA,EAAK,WACL,kBAACrB,GAAD;KAAa,KAAKqB,EAAK;KAAU,KAAKA,EAAK;IAAO,CAAA,IAC/C,MACJ,kBAACpB,GAAD;KACC,WAAWrB,EACV,iBACA2B,EAAyBe,EAC1B;KAEC,UAAAF;IACc,CAAA,CACT;GAhBF,GAAAC,EAAK,MAAM,GAAGA,EAAK,KAAK,GAAGE,GAgBzB;EAEV,CAAC,GACA,CAAC,CAACE,KAAgBR,IAAW,KAC7B,kBAACZ,GAAD;GAAkB,cAAYjB;GAAM,aAAWA,MAAS,OAAO,YAAYA;GACzE,UAAA,OAAO8B,KAAoB,YAAY,OAAOA,KAAoB,YAAY,OAAOA,KAAoB,WACzG,kBAACpC,GAAD;IAAM,KAAI;IAAO,MAAK;IAAK,QAAO;IAChC,UAAAoC;GACI,CAAA,IACHA;EACa,CAAA,CAEP;;AAEf;AAEA,EAAe,cAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge-BZXZT9wd.js","names":["Badge","React","styles","React","BaseBadge","resolveComponentScale","useBadgeConfig","useDensityConfig","cn","Text","React$1","Badge$1","props","useRender","asChild","children","className","badgeRecipes","toneClassMap","sizeClassMap","Badge","toneProp","sizeProp","resolvedSize","defaultScale","tone","defaultTone","isSimpleText","inline","pending","pulse","dot","important","TriangleAlert"],"sources":["../src/components/ui/badge.tsx","../src/components/base/badge/badge.recipes.ts","../src/components/base/badge/badge.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useRender } from '@base-ui/react/use-render';\nimport { cn } from '../../lib/utils';\n\nfunction Badge({ className, asChild = false, children, ...props }:\n\tReact.ComponentProps<'span'> & { asChild?: boolean }) {\n\treturn useRender({\n\t\tdefaultTagName: 'span',\n\t\trender: asChild && React.isValidElement(children) ? children : undefined,\n\t\tprops: { ...props, 'data-slot': 'badge', className: cn(className), ...(asChild ? {} : { children }) },\n\t});\n}\n\nexport { Badge };\n","/** Private Tailwind recipes; public props and DOM hooks remain owned by the component. */\nexport const badgeRecipes = {\n\troot: \"inline-flex items-center justify-center shrink-0 self-center rounded-radius font-sans font-medium border border-transparent w-fit max-w-full whitespace-nowrap overflow-visible box-border align-middle\",\n\tsizeSm: \"h-auto min-h-0 py-space-2xs px-control-xs gap-space-xs text-xs leading-none\",\n\tsizeMd: \"h-auto min-h-0 py-space-2xs px-control-xs gap-space-xs text-xs leading-tight\",\n\tsizeLg: \"h-auto min-h-0 py-space-xs px-control-sm gap-space-sm text-sm leading-tight\",\n\tisInline: \"inline-flex align-baseline text-xs py-space-2xs px-control-xs leading-none\",\n\tisPending: \"[&_.badge-dot]:bg-transparent [&_.badge-dot]:border-[1.5px] [&_.badge-dot]:border-current\",\n\tisPulse: \"[&_.badge-dot]:animate-badge-pulse motion-reduce:[&_.badge-dot]:animate-none\",\n\tdot: \"badge-dot size-1.5 rounded-full shrink-0 bg-current\",\n\ticon: \"size-icon-sm shrink-0\",\n\tlabel: \"inline-flex min-w-0 max-w-full items-center gap-space-xs overflow-hidden text-ellipsis whitespace-nowrap\",\n\ttonePrimary: \"bg-primary text-primary-foreground border-primary\",\n\ttoneNeutral: \"bg-foreground/8 text-foreground border-transparent\",\n\ttoneSecondary: \"bg-foreground/8 text-foreground border-transparent\",\n\ttoneSuccess: \"bg-success/20 text-success border-success/30\",\n\ttoneInfo: \"bg-info/10 text-info border-info/30\",\n\ttoneWarning: \"bg-warning/20 text-warning-accent border-warning/35\",\n\ttoneDestructive: \"bg-destructive/10 text-destructive border-destructive/30\",\n} as const satisfies Record<string, string>;\n","/**\n * Badge — blocks badge with canonical semantic tones, package display scale, optional dot indicator\n * (with pulse + pending states), inline mode, and an `important` flag that swaps in a warning icon.\n */\nimport { TriangleAlert } from 'lucide-react';\nimport * as React from \"react\"\n\nimport { Badge as BaseBadge } from \"../../ui/badge\"\nimport { Text } from '../../typography';\nimport {\n\tuseBadgeConfig,\n\tuseDensityConfig,\n\ttype BadgeSize,\n\ttype BadgeTone,\n} from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { cn } from '../../../lib/utils';\nimport { badgeRecipes as styles } from './badge.recipes';\n\nexport interface BadgeProps extends Omit<React.ComponentProps<'span'>, 'content'> {\n\t/** Semantic tone. Falls back to `UIProvider.badge.defaultTone`, then `primary`. */\n\ttone?: BadgeTone\n\t/** Display scale. Falls back to `UIProvider.density.defaultScale`. */\n\tsize?: BadgeSize\n\t/** Renders inline with surrounding text rather than as a standalone chip. */\n\tinline?: boolean;\n\t/** Shows a status dot before the label. */\n\tdot?: boolean;\n\t/** Animates the dot, for live or in-progress states. Requires `dot`. */\n\tpulse?: boolean;\n\t/** Draws the dot hollow, marking a state that has not started. Requires `dot`. */\n\tpending?: boolean;\n\t/** Swaps in a warning icon ahead of the label. */\n\timportant?: boolean;\n}\n\nconst toneClassMap: Record<BadgeTone, string> = {\n\tneutral: styles.toneNeutral,\n\tprimary: styles.tonePrimary,\n\tsecondary: styles.toneSecondary,\n\tdestructive: styles.toneDestructive,\n\tsuccess: styles.toneSuccess,\n\twarning: styles.toneWarning,\n\tinfo: styles.toneInfo,\n};\n\nconst sizeClassMap: Record<BadgeSize, string> = {\n\tsm: styles.sizeSm,\n\tmd: styles.sizeMd,\n\tlg: styles.sizeLg,\n};\n\n/**\n * Blocks Badge using shared Tailwind recipes and stable semantic BEM hooks.\n */\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(function Badge({\n\ttone: toneProp,\n\tclassName,\n\tsize: sizeProp,\n\tinline = false,\n\tdot = false,\n\tpending = false,\n\tpulse = false,\n\timportant = false,\n\tchildren,\n\t...props\n}: BadgeProps, ref) {\n\tconst { defaultTone } = useBadgeConfig();\n\tconst { defaultScale } = useDensityConfig();\n\tconst resolvedSize = resolveComponentScale(sizeProp, defaultScale);\n\tconst tone = toneProp ?? defaultTone ?? 'primary';\n\tconst isSimpleText = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint';\n\n\treturn (\n\t\t<BaseBadge\n\t\t\tref={ref}\n\t\t\tdata-slot=\"badge\"\n\t\t\tdata-tone={tone}\n\t\t\tdata-size={resolvedSize}\n\t\t\tdata-inline={inline || undefined}\n\t\t\tdata-pending={pending || undefined}\n\t\t\tclassName={cn(\n\t\t\t\t'badge--component',\n\t\t\t\tstyles.root,\n\t\t\t\ttoneClassMap[tone],\n\t\t\t\tsizeClassMap[resolvedSize],\n\t\t\t\tinline && styles.isInline,\n\t\t\t\tpending && styles.isPending,\n\t\t\t\tpulse && styles.isPulse,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!dot && <span aria-hidden=\"true\" className={styles.dot} />}\n\t\t\t{!!important && !dot && <TriangleAlert aria-hidden=\"true\" className={styles.icon} />}\n\t\t\t<span className={styles.label}>\n\t\t\t\t{isSimpleText ? (\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight={resolvedSize === 'sm' || inline ? 'none' : 'tight'} className=\"text-inherit\">\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Text>\n\t\t\t\t) : children}\n\t\t\t</span>\n\t\t</BaseBadge>\n\t);\n});\n\nBadge.displayName = 'Badge';\n"],"mappings":";;;;;;;;;AAIA,SAASA,EAAM,EAAE,cAAW,aAAU,IAAO,aAAU,GAAGY,KACH;CACtD,OAAOC,EAAU;EAChB,gBAAgB;EAChB,QAAQC,KAAWb,EAAM,eAAec,CAAQ,IAAIA,IAAW,KAAA;EAC/D,OAAO;GAAE,GAAGH;GAAO,aAAa;GAAS,WAAWJ,EAAGQ,CAAS;GAAG,GAAIF,IAAU,CAAC,IAAI,EAAE,YAAS;EAAG;CACrG,CAAC;AACF;;;ACVA,IAAaG,IAAe;CAC3B,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,UAAU;CACV,WAAW;CACX,SAAS;CACT,KAAK;CACL,MAAM;CACN,OAAO;CACP,aAAa;CACb,aAAa;CACb,eAAe;CACf,aAAa;CACb,UAAU;CACV,aAAa;CACb,iBAAiB;AAClB,GCiBMC,IAA0C;CAC/C,SAAShB,EAAO;CAChB,SAASA,EAAO;CAChB,WAAWA,EAAO;CAClB,aAAaA,EAAO;CACpB,SAASA,EAAO;CAChB,SAASA,EAAO;CAChB,MAAMA,EAAO;AACd,GAEMiB,IAA0C;CAC/C,IAAIjB,EAAO;CACX,IAAIA,EAAO;CACX,IAAIA,EAAO;AACZ,GAKakB,IAAQjB,EAAM,WAAwC,SAAe,EACjF,MAAMkB,GACN,cACA,MAAMC,GACN,YAAS,IACT,SAAM,IACN,aAAU,IACV,WAAQ,IACR,eAAY,IACZ,aACA,GAAGV,KACW,GAAK;CACnB,IAAM,EAAE,mBAAgBN,EAAe,GACjC,EAAE,oBAAiBC,EAAiB,GACpCgB,IAAelB,EAAsBiB,GAAUE,CAAY,GAC3DC,IAAOJ,KAAYK,KAAe,WAClCC,IAAe,OAAOZ,KAAa,YAAY,OAAOA,KAAa,YAAY,OAAOA,KAAa;CAEzG,OACC,kBAACX,GAAD;EACM;EACL,aAAU;EACV,aAAWqB;EACX,aAAWF;EACX,eAAaK,KAAU,KAAA;EACvB,gBAAcC,KAAW,KAAA;EACzB,WAAWrB,EACV,oBACAN,EAAO,MACPgB,EAAaO,IACbN,EAAaI,IACbK,KAAU1B,EAAO,UACjB2B,KAAW3B,EAAO,WAClB4B,KAAS5B,EAAO,SAChBc,CACD;EACA,GAAIJ;EAjBL,UAAA;GAmBE,CAAC,CAACmB,KAAO,kBAAC,QAAD;IAAM,eAAY;IAAO,WAAW7B,EAAO;GAAM,CAAA;GAC1D,CAAC,CAAC8B,KAAa,CAACD,KAAO,kBAACE,GAAD;IAAe,eAAY;IAAO,WAAW/B,EAAO;GAAO,CAAA;GACnF,kBAAC,QAAD;IAAM,WAAWA,EAAO;IACtB,UAAAyB,IACA,kBAAClB,GAAD;KAAM,KAAI;KAAO,MAAK;KAAU,QAAO;KAAS,YAAYc,MAAiB,QAAQK,IAAS,SAAS;KAAS,WAAU;KACxH;IACI,CAAA,IACHb;GACC,CAAA;EACI;;AAEb,CAAC;AAED,EAAM,cAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumbs-DdQ_I5ra.js","names":["resolveComponentScale","useDensityConfig","cn","Text","Slot","BreadcrumbList","props","className","BreadcrumbItem","BreadcrumbLink","asChild","BreadcrumbPage","BreadcrumbSeparator","children","ChevronRight","defaultBreadcrumbsStrings","hashString","hash","i","value","labelToKey","label","defaultRenderLink","BreadcrumbLabel","sizeConfig","Breadcrumbs","forwardRef","sizeProp","stringsProp","ariaLabel","size","defaultScale","strings","useStrings","breadcrumbs","itemSizeClass","listSpacingClass","separatorSpacingClass","baseColorClass","isLast","index","itemKey","item","renderedLabel","Fragment","renderLink"],"sources":["../src/components/ui/breadcrumb.tsx","../src/components/base/navigation/breadcrumbs.tsx"],"sourcesContent":["import { ChevronRight, MoreHorizontal } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Slot } from './slot';\nimport { cn } from '../../lib/utils';\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<'nav'>) {\n\treturn (\n\t\t<nav\n\t\t\taria-label=\"breadcrumb\"\n\t\t\tdata-slot=\"breadcrumb\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>) {\n\treturn (\n\t\t<ol\n\t\t\tdata-slot=\"breadcrumb-list\"\n\t\t\tclassName={cn(\n\t\t\t\t'text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>) {\n\treturn (\n\t\t<li\n\t\t\tdata-slot=\"breadcrumb-item\"\n\t\t\tclassName={cn('inline-flex items-center gap-1.5', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction BreadcrumbLink({\n\tasChild,\n\tclassName,\n\t...props\n}: React.ComponentProps<'a'> & {\n\tasChild?: boolean;\n}) {\n\tconst Comp = asChild ? Slot : 'a';\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-slot=\"breadcrumb-link\"\n\t\t\tclassName={cn('hover:text-foreground transition-colors', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n\treturn (\n\t\t<span\n\t\t\tdata-slot=\"breadcrumb-page\"\n\t\t\trole=\"link\"\n\t\t\taria-disabled=\"true\"\n\t\t\taria-current=\"page\"\n\t\t\tclassName={cn('text-foreground font-normal', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction BreadcrumbSeparator({\n\tchildren,\n\tclassName,\n\t...props\n}: React.ComponentProps<'li'>) {\n\treturn (\n\t\t<li\n\t\t\tdata-slot=\"breadcrumb-separator\"\n\t\t\trole=\"presentation\"\n\t\t\tclassName={cn('[&>svg]:size-3.5', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children ?? <ChevronRight />}\n\t\t</li>\n\t);\n}\n\nfunction BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<'span'>) {\n\treturn (\n\t\t<span\n\t\t\tdata-slot=\"breadcrumb-ellipsis\"\n\t\t\trole=\"presentation\"\n\t\t\tclassName={cn('flex size-9 items-center justify-center', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<MoreHorizontal className=\"size-4\" />\n\t\t\t<span className=\"sr-only\">More</span>\n\t\t</span>\n\t);\n}\n\nexport {\n\tBreadcrumb,\n\tBreadcrumbList,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n\tBreadcrumbEllipsis,\n};\n\n","/**\n * Breadcrumbs — page hierarchy trail. Last item is rendered as the current\n * page (non-link); preceding items become links when an `href` is provided.\n * The public scale follows the shared component scale; CSS variables control\n * display spacing and typography across the library.\n */\nimport { forwardRef, Fragment, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport {\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbList,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n} from '../../ui/breadcrumb';\nimport { useDensityConfig, type ComponentScale } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nexport interface BreadcrumbItemType {\n\tlabel: ReactNode;\n\thref?: string;\n\thandle?: string;\n}\n\nexport type BreadcrumbSize = ComponentScale;\n\nexport interface BreadcrumbsStrings {\n\tnavigationLabel: string;\n}\n\nexport const defaultBreadcrumbsStrings: BreadcrumbsStrings = {\n\tnavigationLabel: 'Breadcrumb',\n};\n\ntype BreadcrumbLinkRenderer = (props: {\n\thref?: string;\n\tchildren: ReactNode;\n\tclassName?: string;\n\t'aria-label'?: string;\n}) => ReactNode;\n\nexport interface BreadcrumbsProps extends Omit<ComponentPropsWithoutRef<'nav'>, 'children'> {\n\t/** Trail entries, root first. */\n\tbreadcrumbs: BreadcrumbItemType[];\n\t/** Typography scale for the trail. */\n\tsize?: BreadcrumbSize;\n\t/** Renders entries carrying an `href` through the consumer's router. */\n\trenderLink?: BreadcrumbLinkRenderer;\n\t/** Overrides the trail's own copy. */\n\tstrings?: StringsProp<BreadcrumbsStrings>;\n}\n\nconst hashString = (value: string): string => {\n\tlet hash = 0;\n\tfor (let i = 0; i < value.length; i += 1) {\n\t\thash = (hash << 5) - hash + value.charCodeAt(i);\n\t\thash |= 0;\n\t}\n\n\treturn Math.abs(hash).toString(36);\n};\n\nconst labelToKey = (label: ReactNode): string => {\n\tif (typeof label === 'string' || typeof label === 'number') return String(label);\n\treturn 'breadcrumb';\n};\n\nconst defaultRenderLink: BreadcrumbLinkRenderer = ({ href, children, ...props }) => (\n\t<a href={href} {...props}>{children}</a>\n);\n\nfunction BreadcrumbLabel({ children }: { children: ReactNode }) {\n\tif (\n\t\ttypeof children !== 'string' &&\n\t\ttypeof children !== 'number' &&\n\t\ttypeof children !== 'bigint'\n\t) {\n\t\treturn children;\n\t}\n\n\treturn (\n\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nconst sizeConfig: Record<BreadcrumbSize, { item: string; list: string; separator: string; color: string }> = {\n\tsm: {\n\t\titem: 'text-pxs',\n\t\tlist: '!gap-space-sm',\n\t\tseparator: '!mx-space-2xs',\n\t\tcolor: 'text-muted-foreground/70',\n\t},\n\tmd: {\n\t\titem: 'text-sm',\n\t\tlist: '!gap-space-md',\n\t\tseparator: '!mx-space-sm',\n\t\tcolor: 'text-muted-foreground',\n\t},\n\tlg: {\n\t\titem: 'text-base',\n\t\tlist: '!gap-space-lg',\n\t\tseparator: '!mx-space-md',\n\t\tcolor: 'text-muted-foreground',\n\t},\n};\n\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(function Breadcrumbs({\n\tbreadcrumbs,\n\tsize: sizeProp,\n\tclassName,\n\trenderLink = defaultRenderLink,\n\tstrings: stringsProp,\n\t'aria-label': ariaLabel,\n\t...props\n}, ref) {\n\tconst { defaultScale } = useDensityConfig();\n\tconst size = resolveComponentScale(sizeProp, defaultScale);\n\tconst strings = useStrings(defaultBreadcrumbsStrings, stringsProp);\n\tif (breadcrumbs.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst { item: itemSizeClass, list: listSpacingClass, separator: separatorSpacingClass, color: baseColorClass } =\n\t\tsizeConfig[size];\n\n\treturn (\n\t\t<nav\n\t\t\tref={ref}\n\t\t\taria-label={ariaLabel ?? strings.navigationLabel}\n\t\t\tdata-slot=\"breadcrumb\"\n\t\t\tclassName={cn('breadcrumbs--component', baseColorClass, className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<BreadcrumbList className={cn('flex flex-wrap items-center break-words', listSpacingClass)}>\n\t\t\t\t{breadcrumbs.map((item, index) => {\n\t\t\t\t\tconst isLast = index === breadcrumbs.length - 1;\n\t\t\t\t\tconst itemKey = item.handle ?? item.href ?? `crumb-${hashString(labelToKey(item.label))}-${index}`;\n\t\t\t\t\tconst renderedLabel = <BreadcrumbLabel>{item.label}</BreadcrumbLabel>;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Fragment key={itemKey}>\n\t\t\t\t\t\t\t<BreadcrumbItem className={cn(itemSizeClass, 'font-medium')}>\n\t\t\t\t\t\t\t\t{isLast || !item.href ? (\n\t\t\t\t\t\t\t\t\t<BreadcrumbPage>\n\t\t\t\t\t\t\t\t\t\t<BreadcrumbLabel>{item.label}</BreadcrumbLabel>\n\t\t\t\t\t\t\t\t\t</BreadcrumbPage>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<BreadcrumbLink asChild>\n\t\t\t\t\t\t\t\t\t\t{renderLink({ href: item.href, children: renderedLabel })}\n\t\t\t\t\t\t\t\t\t</BreadcrumbLink>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</BreadcrumbItem>\n\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t<BreadcrumbSeparator\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\tclassName={cn(separatorSpacingClass)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</BreadcrumbList>\n\t\t</nav>\n\t);\n});\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button-BS6l5JUw.js","names":["Button","React","ButtonPrimitive","cn","React$1","buttonVariants","cva","Button$1","props","Button","variant","size","className","state"],"sources":["../src/components/ui/button.tsx"],"sourcesContent":["import { Button as ButtonPrimitive } from '@base-ui/react/button';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\n\n/** Internal presentation only; public buttons own the stable tone/style API. */\nexport const buttonVariants = cva('inline-flex items-center justify-center gap-space-md whitespace-nowrap rounded-radius-sm text-sm font-medium shrink-0 border border-transparent transition-colors outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-icon', {\n variants: {\n variant: {default:'bg-primary text-primary-foreground hover:bg-primary/90', destructive:'bg-destructive text-destructive-foreground hover:bg-destructive/90', outline:'border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground', secondary:'bg-secondary text-secondary-foreground hover:bg-secondary/80', ghost:'hover:bg-accent hover:text-accent-foreground', link:'text-link-color underline-offset-4 hover:underline'},\n size: {default:'h-action px-control', xs:'h-action-xs px-control-xs', sm:'h-action-sm px-control-sm', lg:'h-action-lg px-control', icon:'size-action p-0', 'icon-xs':'size-action-xs p-0', 'icon-sm':'size-action-sm p-0', 'icon-lg':'size-action-lg p-0'},\n }, defaultVariants:{variant:'default',size:'default'},\n});\nexport namespace Button { export type Props = ButtonPrimitive.Props & VariantProps<typeof buttonVariants>; }\nexport const Button = React.forwardRef<HTMLElement, Button.Props>(function Button({className,variant,size,...props},ref) {\n // Unspecified recipe props leave presentation ownership with the public wrapper.\n return <ButtonPrimitive {...props} ref={ref} data-slot=\"button\" className={state => cn(variant != null || size != null ? buttonVariants({variant,size}) : undefined, typeof className === 'function' ? className(state) : className)} />;\n});\n"],"mappings":";;;;;;;AAMA,IAAaK,IAAiBC,EAAI,2bAA2b;CAC5d,UAAU;EACT,SAAS;GAAC,SAAQ;GAA0D,aAAY;GAAsE,SAAQ;GAA4F,WAAU;GAAgE,OAAM;GAAgD,MAAK;EAAoD;EAC3b,MAAM;GAAC,SAAQ;GAAuB,IAAG;GAA6B,IAAG;GAA6B,IAAG;GAA0B,MAAK;GAAmB,WAAU;GAAsB,WAAU;GAAsB,WAAU;EAAoB;CAC1P;CAAG,iBAAgB;EAAC,SAAQ;EAAU,MAAK;CAAS;AACrD,CAAC,GAEYN,IAASC,EAAM,WAAsC,SAAgB,EAAC,cAAU,YAAQ,SAAK,GAAGO,KAAO,GAAK;CAExH,OAAO,kBAACN,GAAD;EAAiB,GAAIM;EAAY;EAAK,aAAU;EAAS,YAAW,MAASL,EAAGO,KAAW,QAAQC,KAAQ,OAAON,EAAe;GAAC;GAAQ;EAAI,CAAC,IAAI,KAAA,GAAW,OAAOO,KAAc,aAAaA,EAAUC,CAAK,IAAID,CAAS;CAAI,CAAA;AACxO,CAAC"}
|