themelia-react-ui 2.0.0 → 2.0.1
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 +351 -0
- package/README.md +26 -13
- package/dist/{accordion-CQXVcd7Q.js → accordion-B6a3vVgA.js} +84 -82
- package/dist/accordion-B6a3vVgA.js.map +1 -0
- package/dist/action-menu-TzCoSlwL.js +280 -0
- package/dist/action-menu-TzCoSlwL.js.map +1 -0
- package/dist/{affordance-geometry.generated-CCIXb2A1.js → affordance-geometry.generated-B5iu-Mkr.js} +3 -2
- package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +1 -0
- package/dist/{ai-artifact-2PQ2fItc.js → ai-artifact-BMJdv-6q.js} +379 -376
- package/dist/ai-artifact-BMJdv-6q.js.map +1 -0
- package/dist/{app-shell-BE_j8-AT.js → app-shell-ZK5RWdo6.js} +4 -4
- package/dist/{app-shell-BE_j8-AT.js.map → app-shell-ZK5RWdo6.js.map} +1 -1
- package/dist/attachment-BtfhGm8i.js +245 -0
- package/dist/attachment-BtfhGm8i.js.map +1 -0
- package/dist/{auth-M3vGMgDR.js → auth-CYxKfo69.js} +237 -235
- package/dist/auth-CYxKfo69.js.map +1 -0
- package/dist/{avatar-djdaaQ_s.js → avatar-BBnEJIx8.js} +66 -65
- package/dist/avatar-BBnEJIx8.js.map +1 -0
- package/dist/badge-MrKVNzW9.js +93 -0
- package/dist/badge-MrKVNzW9.js.map +1 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +1 -1
- package/dist/base/batch-action-bar.js +3 -0
- package/dist/base/buttons.js +2 -3
- package/dist/base/cards.js +2 -2
- package/dist/base/carousel.js +13 -13
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +103 -115
- package/dist/base/cascader.js.map +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +3 -3
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +7 -7
- package/dist/base/feedback.js +3 -3
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +17 -17
- package/dist/base/inline-edit.js.map +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +1 -1
- package/dist/base/metadata-list.js +3 -0
- package/dist/base/navigation.js +7 -7
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +1 -1
- package/dist/base/repeaters.js +171 -170
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/signature-pad.js +147 -137
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +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 +2 -2
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +2 -2
- package/dist/batch-action-bar-BZGDG-Si.js +104 -0
- package/dist/batch-action-bar-BZGDG-Si.js.map +1 -0
- package/dist/blocks/admin.js +173 -171
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +266 -263
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +440 -438
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +1 -1
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +1945 -1266
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +3 -2
- package/dist/blocks/onboarding.js +50 -49
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +25 -25
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +1 -1
- package/dist/breadcrumbs-D5t7I023.js +129 -0
- package/dist/breadcrumbs-D5t7I023.js.map +1 -0
- package/dist/{button-R9CCoH7A.js → button-QYwiyhD2.js} +15 -14
- package/dist/button-QYwiyhD2.js.map +1 -0
- package/dist/{button-BS3KDg00.js → buttons-SbIcm1HJ.js} +200 -213
- package/dist/buttons-SbIcm1HJ.js.map +1 -0
- package/dist/{cards-QoJ4syG9.js → cards-CiiHpKYd.js} +8 -8
- package/dist/cards-CiiHpKYd.js.map +1 -0
- package/dist/{chart-DwYRKKc-.js → chart-QfrARkXl.js} +5 -5
- package/dist/{chart-DwYRKKc-.js.map → chart-QfrARkXl.js.map} +1 -1
- package/dist/checkbox-DhB6K0bK.js +36 -0
- package/dist/checkbox-DhB6K0bK.js.map +1 -0
- package/dist/choice-inputs-t6w3ATNz.js +766 -0
- package/dist/choice-inputs-t6w3ATNz.js.map +1 -0
- package/dist/code-block-Dgbu-CU3.js +185 -0
- package/dist/code-block-Dgbu-CU3.js.map +1 -0
- package/dist/{collapsible-oMUGM4tr.js → collapsible-D8AEGU1-.js} +4 -4
- package/dist/{collapsible-oMUGM4tr.js.map → collapsible-D8AEGU1-.js.map} +1 -1
- package/dist/{collection-content-Ys-OZOkY.js → collection-content-uK16Grv0.js} +3 -3
- package/dist/{collection-content-Ys-OZOkY.js.map → collection-content-uK16Grv0.js.map} +1 -1
- package/dist/{combobox-6dvVny2q.js → combobox-2Ic8N9bL.js} +74 -68
- package/dist/combobox-2Ic8N9bL.js.map +1 -0
- package/dist/{combobox-CB7039j7.js → combobox-DLl0bfiq.js} +307 -305
- package/dist/combobox-DLl0bfiq.js.map +1 -0
- package/dist/{command-kPMPjIxJ.js → command-kNR20o7x.js} +7 -7
- package/dist/{command-kPMPjIxJ.js.map → command-kNR20o7x.js.map} +1 -1
- package/dist/{comments-You0Bzbr.js → comments-BpDuCUUu.js} +341 -339
- package/dist/comments-BpDuCUUu.js.map +1 -0
- package/dist/components/base/action-menu/action-menu.d.ts +21 -4
- package/dist/components/base/action-menu/action-menu.recipes.d.ts +21 -0
- package/dist/components/base/action-menu/index.d.ts +1 -0
- package/dist/components/base/badge/badge.recipes.d.ts +4 -4
- package/dist/components/base/batch-action-bar/batch-action-bar.d.ts +50 -0
- package/dist/components/base/batch-action-bar/batch-action-bar.strings.d.ts +20 -0
- package/dist/components/base/batch-action-bar/index.d.ts +8 -0
- package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
- package/dist/components/base/buttons/button.recipes.d.ts +2 -2
- package/dist/components/base/choice-inputs/checkbox.d.ts +2 -2
- package/dist/components/base/choice-inputs/choice-types.d.ts +18 -6
- package/dist/components/base/display/alert-dialog.d.ts +6 -5
- package/dist/components/base/display/dialog.d.ts +4 -8
- package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
- package/dist/components/base/forms/form-sizing.d.ts +15 -12
- package/dist/components/base/metadata-list/index.d.ts +12 -0
- package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.d.ts +28 -25
- package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-value.d.ts +2 -2
- package/dist/components/base/navigation/index.d.ts +1 -1
- package/dist/components/base/navigation/page-header/index.d.ts +1 -0
- package/dist/components/base/navigation/page-header/page-header-commands.d.ts +73 -0
- package/dist/components/base/navigation/page-header/page-header.d.ts +26 -3
- package/dist/components/base/sheet/sheet.d.ts +4 -8
- package/dist/components/base/signature-pad/signature-pad.types.d.ts +5 -1
- package/dist/components/base/signature-pad/signature-pad.utils.d.ts +11 -3
- package/dist/components/base/text-inputs/field-clear-button.d.ts +6 -0
- package/dist/components/base/upload/upload.recipes.d.ts +25 -3
- package/dist/components/base/value-inputs/index.d.ts +5 -5
- package/dist/components/base/value-inputs/tags-input.d.ts +36 -12
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/blocks/commerce/address-card/types.d.ts +2 -1
- package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +3 -1
- package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
- package/dist/components/blocks/commerce/cart-summary/types.d.ts +6 -1
- package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +3 -1
- package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +16 -4
- package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +5 -0
- package/dist/components/blocks/commerce/fulfillment-group/index.d.ts +2 -0
- package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +43 -0
- package/dist/components/blocks/commerce/index.d.ts +13 -5
- package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
- package/dist/components/blocks/commerce/invoice-header/types.d.ts +4 -2
- package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +1 -1
- package/dist/components/blocks/commerce/invoice-mini/types.d.ts +2 -1
- package/dist/components/blocks/commerce/order-customer/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +5 -0
- package/dist/components/blocks/commerce/order-customer/types.d.ts +48 -0
- package/dist/components/blocks/commerce/order-header/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-header/order-header.d.ts +5 -0
- package/dist/components/blocks/commerce/order-header/types.d.ts +37 -0
- package/dist/components/blocks/commerce/order-line-item/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-line-item/order-line-item.d.ts +5 -0
- package/dist/components/blocks/commerce/order-line-item/types.d.ts +46 -0
- package/dist/components/blocks/commerce/order-summary/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-summary/order-summary.d.ts +5 -0
- package/dist/components/blocks/commerce/order-summary/types.d.ts +42 -0
- package/dist/components/blocks/commerce/order-transactions/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-transactions/order-transactions.d.ts +5 -0
- package/dist/components/blocks/commerce/order-transactions/types.d.ts +46 -0
- package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +9 -1
- package/dist/components/blocks/commerce/payment-method/types.d.ts +12 -1
- package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
- package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +3 -1
- package/dist/components/blocks/commerce/refund-status/types.d.ts +6 -3
- package/dist/components/blocks/commerce/shared/address-lines.d.ts +21 -0
- package/dist/components/blocks/commerce/shared/line-thumbnail.d.ts +9 -0
- package/dist/components/blocks/commerce/shared/order-status.d.ts +51 -0
- package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
- package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +27 -6
- package/dist/components/blocks/commerce/summary-panel/amount-row.d.ts +2 -0
- package/dist/components/blocks/commerce/summary-panel/index.d.ts +3 -0
- package/dist/components/blocks/commerce/summary-panel/summary-panel.d.ts +2 -0
- package/dist/components/blocks/commerce/summary-panel/types.d.ts +26 -0
- package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
- package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +2 -1
- package/dist/components/blocks/data-display/metadata/index.d.ts +30 -4
- package/dist/components/features/activities/partials/activity-row.d.ts +6 -2
- package/dist/components/features/activities/partials/tone-tokens.d.ts +0 -6
- package/dist/components/features/global-search/partials/global-search-group-heading.d.ts +15 -0
- package/dist/components/features/global-search/partials/tone-palettes.d.ts +0 -5
- package/dist/components/features/kanban/kanban.d.ts +1 -1
- package/dist/components/features/kanban/kanban.strings.d.ts +1 -1
- package/dist/components/features/kanban/kanban.types.d.ts +2 -2
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
- package/dist/components/features/media-library/index.d.ts +1 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +4 -0
- package/dist/components/features/media-library/media-library.types.d.ts +74 -1
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
- package/dist/components/features/mentions/partials/mention-kind-toggles.d.ts +16 -0
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/dialog.d.ts +1 -1
- package/dist/components/features/overlays/index.d.ts +1 -1
- package/dist/components/features/overlays/overlay-tone-icon.d.ts +3 -3
- package/dist/components/features/overlays/overlays.types.d.ts +20 -0
- package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
- package/dist/components/features/products/components/product-details-card.d.ts +5 -0
- package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
- package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
- package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
- package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
- package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
- package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
- package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
- package/dist/components/features/products/components/product-variant-action-menu.d.ts +23 -1
- package/dist/components/features/products/products.types.d.ts +9 -2
- package/dist/components/features/resource/index.d.ts +1 -1
- package/dist/components/features/resource/resource.d.ts +1 -1
- package/dist/components/features/resource/resource.types.d.ts +34 -6
- package/dist/components/features/rich-text-editor/index.d.ts +2 -1
- package/dist/components/features/rich-text-editor/partials/image-nodes.d.ts +13 -0
- package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +66 -0
- package/dist/components/features/rich-text-editor/partials/inline-reference-node.d.ts +19 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +14 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +45 -0
- package/dist/components/features/rich-text-editor/use-rich-text-images.d.ts +18 -0
- package/dist/components/features/sync/index.d.ts +26 -3
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/table.types.d.ts +32 -7
- package/dist/components/layout/page/index.d.ts +1 -1
- package/dist/components/layout/page/page.types.d.ts +33 -36
- package/dist/components/layout/page/partials/page-actions.d.ts +1 -0
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/settings/settings.d.ts +16 -2
- package/dist/components/layout/workspace/workspace.types.d.ts +21 -4
- package/dist/components/typography/rich-text/index.d.ts +1 -1
- package/dist/components/typography/rich-text/rich-text-tree.d.ts +19 -0
- package/dist/components/typography/rich-text/rich-text.d.ts +16 -0
- package/dist/components/typography/text-link.d.ts +4 -3
- package/dist/components/ui/checkbox.d.ts +4 -3
- package/dist/components/ui/overlay.recipes.d.ts +0 -9
- package/dist/components/ui/switch.d.ts +2 -2
- package/dist/{containers-D_L4mTVb.js → containers-DmWiJa2I.js} +36 -35
- package/dist/containers-DmWiJa2I.js.map +1 -0
- package/dist/{copyable-DDjTeW_j.js → copyable-B3Gwgdqc.js} +6 -6
- package/dist/{copyable-DDjTeW_j.js.map → copyable-B3Gwgdqc.js.map} +1 -1
- package/dist/data-display-DafIvCl5.js +960 -0
- package/dist/data-display-DafIvCl5.js.map +1 -0
- package/dist/{date-uf3z37Nm.js → date-BgK3bTdo.js} +5 -5
- package/dist/{date-uf3z37Nm.js.map → date-BgK3bTdo.js.map} +1 -1
- package/dist/date-picker-CF-DtUpF.js +1529 -0
- package/dist/date-picker-CF-DtUpF.js.map +1 -0
- package/dist/{date-pickers-CnFCb0n2.js → date-pickers-BmzxJl5l.js} +19 -19
- package/dist/{date-pickers-CnFCb0n2.js.map → date-pickers-BmzxJl5l.js.map} +1 -1
- package/dist/{display-DrdvPwF0.js → display-DsQTVzMz.js} +88 -87
- package/dist/display-DsQTVzMz.js.map +1 -0
- package/dist/{dropdown-menu-CURh59jb.js → dropdown-menu-E2qmdC7o.js} +7 -7
- package/dist/{dropdown-menu-CURh59jb.js.map → dropdown-menu-E2qmdC7o.js.map} +1 -1
- package/dist/features/activities.js +414 -501
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +170 -169
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/async-preview.js +8 -8
- 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 +139 -138
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer/engine.js +1 -1
- package/dist/features/email-composer.js +73 -71
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +278 -275
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +307 -310
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +95 -97
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +56 -57
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +918 -825
- 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 +1115 -1122
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +202 -194
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +25 -25
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +77 -69
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +30 -11
- package/dist/features/rich-text-editor.js.map +1 -1
- package/dist/features/schema-form.js +33 -33
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +3 -3
- package/dist/features/sync.js +3 -3
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +397 -396
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/{feedback-C7nR0UtT.js → feedback-qNuMBtRH.js} +84 -83
- package/dist/feedback-qNuMBtRH.js.map +1 -0
- package/dist/{field-affordance-recipes-CkOCdE2y.js → field-affordance-recipes-qQeIf4lG.js} +8 -6
- package/dist/field-affordance-recipes-qQeIf4lG.js.map +1 -0
- package/dist/field-state-recipes-BVA2CWHo.js +12 -0
- package/dist/field-state-recipes-BVA2CWHo.js.map +1 -0
- package/dist/{filters-Da-gNPsE.js → filters-BkHH53uv.js} +565 -563
- package/dist/filters-BkHH53uv.js.map +1 -0
- package/dist/focus-recipes-B653VaLq.js +12 -0
- package/dist/focus-recipes-B653VaLq.js.map +1 -0
- package/dist/{form-field-VZRULhUK.js → form-field-DUt4UxSV.js} +4 -4
- package/dist/{form-field-VZRULhUK.js.map → form-field-DUt4UxSV.js.map} +1 -1
- package/dist/{form-sizing-uWP4lzVh.js → form-sizing-By94KzXE.js} +19 -15
- package/dist/form-sizing-By94KzXE.js.map +1 -0
- package/dist/{forms-DDeEnXSY.js → forms-Bzha-Y3B.js} +22 -22
- package/dist/{forms-DDeEnXSY.js.map → forms-Bzha-Y3B.js.map} +1 -1
- package/dist/{forms-numeric-D3CO60IF.js → forms-numeric-C0bvjRPZ.js} +265 -264
- package/dist/forms-numeric-C0bvjRPZ.js.map +1 -0
- package/dist/{header-2ycNqGOR.js → header-BOefOKd1.js} +47 -51
- package/dist/header-BOefOKd1.js.map +1 -0
- package/dist/{hooks-DQ5SPwZw.js → hooks-9k_TtmKh.js} +2 -2
- package/dist/{hooks-DQ5SPwZw.js.map → hooks-9k_TtmKh.js.map} +1 -1
- package/dist/{http-CdEIHyQf.js → http-D_6rOnzU.js} +2 -2
- package/dist/{http-CdEIHyQf.js.map → http-D_6rOnzU.js.map} +1 -1
- package/dist/icon-badge-CAuKupo9.js +55 -0
- package/dist/icon-badge-CAuKupo9.js.map +1 -0
- package/dist/index.js +7 -7
- package/dist/input-DWhBBBww.js +262 -0
- package/dist/input-DWhBBBww.js.map +1 -0
- package/dist/{input-BoLm9Hks.js → input-Ddi_LSYv.js} +3 -3
- package/dist/{input-BoLm9Hks.js.map → input-Ddi_LSYv.js.map} +1 -1
- package/dist/interaction-recipes-CHr0dJUs.js +24 -0
- package/dist/interaction-recipes-CHr0dJUs.js.map +1 -0
- package/dist/{item-xzh8Df65.js → item-DEmDiTlD.js} +98 -97
- package/dist/item-DEmDiTlD.js.map +1 -0
- package/dist/layer-recipes-CCpklYME.js +13 -0
- package/dist/layer-recipes-CCpklYME.js.map +1 -0
- package/dist/layout/app-shell.js +1 -1
- package/dist/layout/auth.js +1 -1
- package/dist/layout/containers.js +1 -1
- package/dist/layout/header.js +1 -1
- package/dist/layout/hooks.js +1 -1
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +1 -1
- package/dist/layout/settings.js +1 -1
- package/dist/layout/sidebar.js +2 -2
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +10 -10
- package/dist/lib/affordance-geometry.generated.d.ts +1 -0
- package/dist/lib/field-affordance-recipes.d.ts +6 -1
- package/dist/lib/field-state-recipes.d.ts +9 -8
- package/dist/lib/focus-recipes.d.ts +24 -0
- package/dist/lib/interaction-recipes.d.ts +35 -0
- package/dist/lib/layer-recipes.d.ts +19 -0
- package/dist/lib/motion-recipes.d.ts +1 -0
- package/dist/lib/overlay-anatomy-recipes.d.ts +1 -0
- package/dist/lib/safe-image-src.d.ts +10 -0
- package/dist/lib/sanitize-html.d.ts +15 -3
- package/dist/lib/surface-recipes.d.ts +47 -7
- package/dist/lib/token-merge.generated.d.ts +9 -6
- package/dist/lib/tone-recipes.d.ts +79 -0
- package/dist/lib/ui-provider/hooks.d.ts +2 -1
- package/dist/lib/ui-provider/index.d.ts +2 -2
- package/dist/lib/ui-provider/types.d.ts +9 -0
- package/dist/lib/utils.js +1 -1
- package/dist/media-gallery-DcTtAaeC.js +203 -0
- package/dist/media-gallery-DcTtAaeC.js.map +1 -0
- package/dist/mentions-D-uyCh01.js +568 -0
- package/dist/mentions-D-uyCh01.js.map +1 -0
- package/dist/{message-YfFmbXNP.js → message-CdHgIWKf.js} +5 -5
- package/dist/{message-YfFmbXNP.js.map → message-CdHgIWKf.js.map} +1 -1
- package/dist/metadata-list-X5rYAKSB.js +394 -0
- package/dist/metadata-list-X5rYAKSB.js.map +1 -0
- package/dist/{motion-recipes-B6jKXEcN.js → motion-recipes-ChBg4HBq.js} +3 -2
- package/dist/{motion-recipes-B6jKXEcN.js.map → motion-recipes-ChBg4HBq.js.map} +1 -1
- package/dist/navigation-D3KwXmaq.js +145 -0
- package/dist/navigation-D3KwXmaq.js.map +1 -0
- package/dist/navigation-HJf5zxlH.js +268 -0
- package/dist/navigation-HJf5zxlH.js.map +1 -0
- package/dist/{navigation-row-recipes-DlU-4QYO.js → navigation-row-recipes-BVowojQw.js} +2 -2
- package/dist/{navigation-row-recipes-DlU-4QYO.js.map → navigation-row-recipes-BVowojQw.js.map} +1 -1
- package/dist/{number-CKRBYmZK.js → number-DMhe-Vsk.js} +5 -5
- package/dist/{number-CKRBYmZK.js.map → number-DMhe-Vsk.js.map} +1 -1
- package/dist/overflow-tab-bar-sQHXLlwQ.js +280 -0
- package/dist/overflow-tab-bar-sQHXLlwQ.js.map +1 -0
- package/dist/overlay.recipes-8GHqmlb4.js +6 -0
- package/dist/overlay.recipes-8GHqmlb4.js.map +1 -0
- package/dist/overlays-I0axtYA6.js +999 -0
- package/dist/overlays-I0axtYA6.js.map +1 -0
- package/dist/page-B5dTH9gE.js +224 -0
- package/dist/page-B5dTH9gE.js.map +1 -0
- package/dist/page-header-commands-DjzFEq3E.js +126 -0
- package/dist/page-header-commands-DjzFEq3E.js.map +1 -0
- package/dist/{pagination-Cm0jqa3I.js → pagination-3bPA_a6K.js} +15 -15
- package/dist/{pagination-Cm0jqa3I.js.map → pagination-3bPA_a6K.js.map} +1 -1
- package/dist/{popover-Dcv_9jxr.js → popover-Di55PyAI.js} +8 -8
- package/dist/popover-Di55PyAI.js.map +1 -0
- package/dist/{popover-menu-DnRFKnHP.js → popover-menu-B71Tn2Qz.js} +6 -6
- package/dist/{popover-menu-DnRFKnHP.js.map → popover-menu-B71Tn2Qz.js.map} +1 -1
- package/dist/{popover.recipes-wmbvL8Ah.js → popover.recipes-Bdyhj2db.js} +2 -2
- package/dist/{popover.recipes-wmbvL8Ah.js.map → popover.recipes-Bdyhj2db.js.map} +1 -1
- package/dist/{primitives-BHrwQXFC.js → primitives-B-CkiEMU.js} +5 -5
- package/dist/{primitives-BHrwQXFC.js.map → primitives-B-CkiEMU.js.map} +1 -1
- package/dist/primitives.js +4 -4
- package/dist/{progress-Br9WTFya.js → progress-rnS8-uAW.js} +9 -9
- package/dist/{progress-Br9WTFya.js.map → progress-rnS8-uAW.js.map} +1 -1
- package/dist/{receipt-CV89q1fs.js → receipt-D0oswZ0p.js} +6 -6
- package/dist/{receipt-CV89q1fs.js.map → receipt-D0oswZ0p.js.map} +1 -1
- package/dist/rich-text-DvGulsNJ.js +78 -0
- package/dist/rich-text-DvGulsNJ.js.map +1 -0
- package/dist/rich-text-editor-sMU_Scqm.js +1204 -0
- package/dist/rich-text-editor-sMU_Scqm.js.map +1 -0
- package/dist/rich-text-editor.recipes-CadiF_Uu.js +88 -0
- package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +1 -0
- package/dist/rich-text-editor.strings-CB59ekH2.js +38 -0
- package/dist/rich-text-editor.strings-CB59ekH2.js.map +1 -0
- package/dist/safe-image-src-C6kQSMBZ.js +17 -0
- package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
- package/dist/sanitize-html-DsQmI48u.js +92 -0
- package/dist/sanitize-html-DsQmI48u.js.map +1 -0
- package/dist/scroll-area-Bt_vXY2b.js +48 -0
- package/dist/scroll-area-Bt_vXY2b.js.map +1 -0
- package/dist/{separator-Do5GWDYi.js → separator-C8DlRGwF.js} +3 -3
- package/dist/{separator-Do5GWDYi.js.map → separator-C8DlRGwF.js.map} +1 -1
- package/dist/{separator-BMEvwnSX.js → separator-CYHnjsAb.js} +2 -2
- package/dist/{separator-BMEvwnSX.js.map → separator-CYHnjsAb.js.map} +1 -1
- package/dist/services/actions/action-adapters.d.ts +18 -0
- package/dist/services/actions/index.d.ts +1 -1
- package/dist/services/actions.js +16 -4
- package/dist/services/actions.js.map +1 -1
- package/dist/settings-CQW3b-Cu.js +170 -0
- package/dist/settings-CQW3b-Cu.js.map +1 -0
- package/dist/sheet-4SEvVYzA.js +210 -0
- package/dist/sheet-4SEvVYzA.js.map +1 -0
- package/dist/{sidebar-Crc9M9JV.js → sidebar-C7WWR29L.js} +180 -179
- package/dist/sidebar-C7WWR29L.js.map +1 -0
- package/dist/{sidebar-Cb8WzOvE.js → sidebar-d7Dg80ln.js} +16 -16
- package/dist/sidebar-d7Dg80ln.js.map +1 -0
- package/dist/{skeleton-DVMXr15h.js → skeleton-Cz890JZF.js} +9 -9
- package/dist/{skeleton-DVMXr15h.js.map → skeleton-Cz890JZF.js.map} +1 -1
- package/dist/smart-card-lFKxn5Hu.js +595 -0
- package/dist/smart-card-lFKxn5Hu.js.map +1 -0
- package/dist/{spinner-CmTAbEp0.js → spinner-fa3h1Aif.js} +7 -7
- package/dist/{spinner-CmTAbEp0.js.map → spinner-fa3h1Aif.js.map} +1 -1
- package/dist/{structure-hzCW-XsV.js → structure-DC2dygdA.js} +2 -2
- package/dist/{structure-hzCW-XsV.js.map → structure-DC2dygdA.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/surface-recipes-BKRVW8Os.js +43 -0
- package/dist/surface-recipes-BKRVW8Os.js.map +1 -0
- package/dist/{table-D6zKeYQX.js → table-CIKyLUsy.js} +59 -58
- package/dist/table-CIKyLUsy.js.map +1 -0
- package/dist/table-CrcLN9Io.js +1458 -0
- package/dist/table-CrcLN9Io.js.map +1 -0
- package/dist/{tabs-Dk8E_knt.js → tabs-DwBJfjxX.js} +58 -57
- package/dist/tabs-DwBJfjxX.js.map +1 -0
- package/dist/{text-inputs-BFpku0Qd.js → text-inputs-aaK9wcDT.js} +74 -79
- package/dist/text-inputs-aaK9wcDT.js.map +1 -0
- package/dist/theme.css +3 -3
- package/dist/{timelines-CxuAFIc2.js → timelines-C_SBwHNP.js} +153 -150
- package/dist/timelines-C_SBwHNP.js.map +1 -0
- package/dist/tone-recipes-CPoExcTE.js +70 -0
- package/dist/tone-recipes-CPoExcTE.js.map +1 -0
- package/dist/tooltip-CsfgrfS7.js +111 -0
- package/dist/tooltip-CsfgrfS7.js.map +1 -0
- package/dist/{tree-BotPlyiD.js → tree-BiKhg8AY.js} +68 -66
- package/dist/tree-BiKhg8AY.js.map +1 -0
- package/dist/typography/rich-text.js +1 -1
- package/dist/typography-DTRkE9zL.js +117 -0
- package/dist/typography-DTRkE9zL.js.map +1 -0
- package/dist/typography.js +1 -1
- package/dist/{ui-provider-D2_TeLqw.js → ui-provider-1D_NSYzO.js} +11 -3
- package/dist/ui-provider-1D_NSYzO.js.map +1 -0
- package/dist/ui-provider.js +3 -3
- package/dist/{upload-B0WHW7ak.js → upload-BO8-CLN6.js} +209 -209
- package/dist/upload-BO8-CLN6.js.map +1 -0
- package/dist/{upload-queue-BHZ_wBfd.js → upload-queue-EOC8g1gf.js} +109 -111
- package/dist/upload-queue-EOC8g1gf.js.map +1 -0
- package/dist/upload.recipes-BbxTqrCT.js +61 -0
- package/dist/upload.recipes-BbxTqrCT.js.map +1 -0
- package/dist/{usage-card-U0YBLTNT.js → usage-card-obRaBskq.js} +46 -46
- package/dist/{usage-card-U0YBLTNT.js.map → usage-card-obRaBskq.js.map} +1 -1
- package/dist/{utils-Cospvlj1.js → utils-l5LpDw2z.js} +56 -24
- package/dist/utils-l5LpDw2z.js.map +1 -0
- package/dist/value-inputs-TAYMX111.js +947 -0
- package/dist/value-inputs-TAYMX111.js.map +1 -0
- package/dist/{value-typography-Deb3yQZg.js → value-typography-b8wpz1eX.js} +2 -2
- package/dist/{value-typography-Deb3yQZg.js.map → value-typography-b8wpz1eX.js.map} +1 -1
- package/dist/workspace-DH0v0KcB.js +407 -0
- package/dist/workspace-DH0v0KcB.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +19 -20
- package/docs/consumer-skill/examples/app-layout.tsx +1 -1
- package/docs/consumer-skill/examples/composition.tsx +3 -3
- package/docs/consumer-skill/examples/detail.tsx +59 -12
- package/docs/consumer-skill/examples/edit.tsx +1 -1
- package/docs/consumer-skill/examples/receipt.tsx +2 -2
- package/docs/consumer-skill/examples/scoped-directory.tsx +1 -1
- package/docs/consumer-skill/examples/website.tsx +1 -1
- package/docs/consumer-skill/references/agents-md.md +33 -0
- package/docs/consumer-skill/references/analytics.md +1 -1
- package/docs/consumer-skill/references/composition.md +51 -8
- package/docs/consumer-skill/references/design-contract.md +12 -3
- package/docs/consumer-skill/references/installation.md +11 -1
- package/docs/consumer-skill/references/public-api.json +847 -447
- package/docs/consumer-skill/references/review.md +25 -5
- package/docs/consumer-skill/references/theming.md +8 -4
- package/docs/consumer-skill/references/tokens.json +1 -1
- package/docs/consumer-skill/references/workflows.md +29 -10
- package/docs/consumer-skill/scripts/composition-policy.mjs +41 -11
- package/docs/consumer-skill/scripts/surface-policy.mjs +139 -5
- package/package.json +10 -2
- package/dist/accordion-CQXVcd7Q.js.map +0 -1
- package/dist/action-menu-BTpyPWJ2.js +0 -264
- package/dist/action-menu-BTpyPWJ2.js.map +0 -1
- package/dist/affordance-geometry.generated-CCIXb2A1.js.map +0 -1
- package/dist/ai-artifact-2PQ2fItc.js.map +0 -1
- package/dist/attachment-q69dlt5Y.js +0 -244
- package/dist/attachment-q69dlt5Y.js.map +0 -1
- package/dist/auth-M3vGMgDR.js.map +0 -1
- package/dist/avatar-djdaaQ_s.js.map +0 -1
- package/dist/badge-0tATj-tW.js +0 -92
- package/dist/badge-0tATj-tW.js.map +0 -1
- package/dist/breadcrumbs-BG_FfMK4.js +0 -128
- package/dist/breadcrumbs-BG_FfMK4.js.map +0 -1
- package/dist/button-BS3KDg00.js.map +0 -1
- package/dist/button-R9CCoH7A.js.map +0 -1
- package/dist/buttons-DS0ZIwJ_.js +0 -99
- package/dist/buttons-DS0ZIwJ_.js.map +0 -1
- package/dist/cards-QoJ4syG9.js.map +0 -1
- package/dist/checkbox-B7ygNTYp.js +0 -35
- package/dist/checkbox-B7ygNTYp.js.map +0 -1
- package/dist/choice-inputs-DrJ17tpL.js +0 -752
- package/dist/choice-inputs-DrJ17tpL.js.map +0 -1
- package/dist/code-block-CD0B7M93.js +0 -183
- package/dist/code-block-CD0B7M93.js.map +0 -1
- package/dist/combobox-6dvVny2q.js.map +0 -1
- package/dist/combobox-CB7039j7.js.map +0 -1
- package/dist/comments-You0Bzbr.js.map +0 -1
- package/dist/components/layout/page/partials/page-header-commands.d.ts +0 -13
- package/dist/containers-D_L4mTVb.js.map +0 -1
- package/dist/data-display-3xWQUnMA.js +0 -1335
- package/dist/data-display-3xWQUnMA.js.map +0 -1
- package/dist/date-picker-DrDFj8Lo.js +0 -1527
- package/dist/date-picker-DrDFj8Lo.js.map +0 -1
- package/dist/display-DrdvPwF0.js.map +0 -1
- package/dist/feedback-C7nR0UtT.js.map +0 -1
- package/dist/field-affordance-recipes-CkOCdE2y.js.map +0 -1
- package/dist/field-state-recipes-C-MFBX_8.js +0 -11
- package/dist/field-state-recipes-C-MFBX_8.js.map +0 -1
- package/dist/filters-Da-gNPsE.js.map +0 -1
- package/dist/form-sizing-uWP4lzVh.js.map +0 -1
- package/dist/forms-numeric-D3CO60IF.js.map +0 -1
- package/dist/header-2ycNqGOR.js.map +0 -1
- package/dist/icon-badge-DKlaKXoo.js +0 -53
- package/dist/icon-badge-DKlaKXoo.js.map +0 -1
- package/dist/input-DhQdBnV3.js +0 -255
- package/dist/input-DhQdBnV3.js.map +0 -1
- package/dist/item-xzh8Df65.js.map +0 -1
- package/dist/media-gallery-DQUQ0m3O.js +0 -201
- package/dist/media-gallery-DQUQ0m3O.js.map +0 -1
- package/dist/mentions-DwnO1hh4.js +0 -564
- package/dist/mentions-DwnO1hh4.js.map +0 -1
- package/dist/navigation-Cbp5V8gG.js +0 -264
- package/dist/navigation-Cbp5V8gG.js.map +0 -1
- package/dist/navigation-Cs1npsPm.js +0 -300
- package/dist/navigation-Cs1npsPm.js.map +0 -1
- package/dist/overlay.recipes-CNO2S9V6.js +0 -34
- package/dist/overlay.recipes-CNO2S9V6.js.map +0 -1
- package/dist/overlays-DhZO7N-I.js +0 -994
- package/dist/overlays-DhZO7N-I.js.map +0 -1
- package/dist/page-C6R_8jFt.js +0 -325
- package/dist/page-C6R_8jFt.js.map +0 -1
- package/dist/page-header-hUTzcRZX.js +0 -112
- package/dist/page-header-hUTzcRZX.js.map +0 -1
- package/dist/popover-Dcv_9jxr.js.map +0 -1
- package/dist/rich-text-editor-CF8QYt5p.js +0 -574
- package/dist/rich-text-editor-CF8QYt5p.js.map +0 -1
- package/dist/rich-text-editor.recipes-CnrbmTS1.js +0 -81
- package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +0 -1
- package/dist/rich-text-editor.strings-BpnIQgMl.js +0 -25
- package/dist/rich-text-editor.strings-BpnIQgMl.js.map +0 -1
- package/dist/rich-text-j-FGAeZW.js +0 -32
- package/dist/rich-text-j-FGAeZW.js.map +0 -1
- package/dist/sanitize-html-BG9FGe-j.js +0 -64
- package/dist/sanitize-html-BG9FGe-j.js.map +0 -1
- package/dist/scroll-area-DRdr16Pt.js +0 -47
- package/dist/scroll-area-DRdr16Pt.js.map +0 -1
- package/dist/settings-DHk0L2MF.js +0 -161
- package/dist/settings-DHk0L2MF.js.map +0 -1
- package/dist/sheet-DRFNY1_D.js +0 -207
- package/dist/sheet-DRFNY1_D.js.map +0 -1
- package/dist/sidebar-Cb8WzOvE.js.map +0 -1
- package/dist/sidebar-Crc9M9JV.js.map +0 -1
- package/dist/smart-card-Bek-TwUp.js +0 -599
- package/dist/smart-card-Bek-TwUp.js.map +0 -1
- package/dist/surface-recipes-DOdoBXGm.js +0 -28
- package/dist/surface-recipes-DOdoBXGm.js.map +0 -1
- package/dist/table-D6zKeYQX.js.map +0 -1
- package/dist/table-Dn4XSrSB.js +0 -1444
- package/dist/table-Dn4XSrSB.js.map +0 -1
- package/dist/tabs-Dk8E_knt.js.map +0 -1
- package/dist/text-inputs-BFpku0Qd.js.map +0 -1
- package/dist/timelines-CxuAFIc2.js.map +0 -1
- package/dist/tree-BotPlyiD.js.map +0 -1
- package/dist/typography-CAr3dQhX.js +0 -116
- package/dist/typography-CAr3dQhX.js.map +0 -1
- package/dist/ui-provider-D2_TeLqw.js.map +0 -1
- package/dist/upload-B0WHW7ak.js.map +0 -1
- package/dist/upload-queue-BHZ_wBfd.js.map +0 -1
- package/dist/use-file-drop-target-BX7GnhoQ.js +0 -39
- package/dist/use-file-drop-target-BX7GnhoQ.js.map +0 -1
- package/dist/utils-Cospvlj1.js.map +0 -1
- package/dist/value-inputs-CjfzGMsN.js +0 -854
- package/dist/value-inputs-CjfzGMsN.js.map +0 -1
- package/dist/workspace-YoFjXi6i.js +0 -394
- package/dist/workspace-YoFjXi6i.js.map +0 -1
- /package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.strings.d.ts +0 -0
package/dist/sheet-DRFNY1_D.js
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { r as e } from "./theme-scope-kStaAer0.js";
|
|
3
|
-
import { t } from "./utils-Cospvlj1.js";
|
|
4
|
-
import { t as n } from "./affordance-geometry.generated-CCIXb2A1.js";
|
|
5
|
-
import { s as r } from "./typography-CAr3dQhX.js";
|
|
6
|
-
import { a as i, i as a, s as o } from "./text.styles-g4He6UIW.js";
|
|
7
|
-
import { t as s } from "./motion-recipes-B6jKXEcN.js";
|
|
8
|
-
import { t as c } from "./slot-CLF9kLrS.js";
|
|
9
|
-
import { t as l } from "./button-R9CCoH7A.js";
|
|
10
|
-
import { n as u, t as d } from "./surface-recipes-DOdoBXGm.js";
|
|
11
|
-
import { n as f, t as p } from "./overlay.recipes-CNO2S9V6.js";
|
|
12
|
-
import * as m from "react";
|
|
13
|
-
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
14
|
-
import { XIcon as _ } from "lucide-react";
|
|
15
|
-
import { Dialog as v } from "@base-ui/react/dialog";
|
|
16
|
-
//#region src/lib/overlay-anatomy-recipes.ts
|
|
17
|
-
var y = {
|
|
18
|
-
close: n.overlayClose,
|
|
19
|
-
header: n.overlayHeader
|
|
20
|
-
};
|
|
21
|
-
//#endregion
|
|
22
|
-
//#region src/components/ui/sheet.tsx
|
|
23
|
-
function b({ ...e }) {
|
|
24
|
-
return /* @__PURE__ */ h(v.Root, {
|
|
25
|
-
"data-slot": "sheet",
|
|
26
|
-
modal: "trap-focus",
|
|
27
|
-
...e
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
function x({ asChild: e = !1, ...t }) {
|
|
31
|
-
let n = e ? /* @__PURE__ */ h(c, {}) : void 0;
|
|
32
|
-
return /* @__PURE__ */ h(v.Trigger, {
|
|
33
|
-
"data-slot": "sheet-trigger",
|
|
34
|
-
render: n,
|
|
35
|
-
...t
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
function S({ asChild: e = !1, ...t }) {
|
|
39
|
-
let n = e ? /* @__PURE__ */ h(c, {}) : void 0;
|
|
40
|
-
return /* @__PURE__ */ h(v.Close, {
|
|
41
|
-
"data-slot": "sheet-close",
|
|
42
|
-
render: n,
|
|
43
|
-
...t
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
function C({ container: t, ...n }) {
|
|
47
|
-
let r = e(t);
|
|
48
|
-
return /* @__PURE__ */ h(v.Portal, {
|
|
49
|
-
container: r,
|
|
50
|
-
"data-slot": "sheet-portal",
|
|
51
|
-
...n
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
function w({ className: e, ...n }) {
|
|
55
|
-
return /* @__PURE__ */ h(v.Backdrop, {
|
|
56
|
-
"data-slot": "sheet-overlay",
|
|
57
|
-
className: t(p, s.backdrop, e),
|
|
58
|
-
...n
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
function T({ className: n, container: r, children: i, side: a = "right", showCloseButton: o = !0, ...c }) {
|
|
62
|
-
let u = e(r);
|
|
63
|
-
return /* @__PURE__ */ g(C, {
|
|
64
|
-
container: u,
|
|
65
|
-
children: [/* @__PURE__ */ h(w, {}), /* @__PURE__ */ g(v.Popup, {
|
|
66
|
-
"data-slot": "sheet-content",
|
|
67
|
-
"data-side": a,
|
|
68
|
-
className: t(s.drawer, "border-border bg-background fixed z-50 flex flex-col gap-space-xl bg-clip-padding text-sm shadow-lg data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm", n),
|
|
69
|
-
...c,
|
|
70
|
-
children: [i, !!o && /* @__PURE__ */ g(v.Close, {
|
|
71
|
-
"data-slot": "sheet-close",
|
|
72
|
-
render: /* @__PURE__ */ h(l, {
|
|
73
|
-
variant: "ghost",
|
|
74
|
-
"data-overlay-close": "",
|
|
75
|
-
className: y.close,
|
|
76
|
-
size: "icon-sm"
|
|
77
|
-
}),
|
|
78
|
-
children: [/* @__PURE__ */ h(_, {}), /* @__PURE__ */ h("span", {
|
|
79
|
-
className: "sr-only",
|
|
80
|
-
children: "Close"
|
|
81
|
-
})]
|
|
82
|
-
})]
|
|
83
|
-
})]
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
function E({ className: e, ...n }) {
|
|
87
|
-
return /* @__PURE__ */ h("div", {
|
|
88
|
-
"data-slot": "sheet-header",
|
|
89
|
-
className: t("flex flex-col", e),
|
|
90
|
-
...n
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
function D({ className: e, ...n }) {
|
|
94
|
-
return /* @__PURE__ */ h("div", {
|
|
95
|
-
"data-slot": "sheet-footer",
|
|
96
|
-
className: t("mt-auto flex flex-col", e),
|
|
97
|
-
...n
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
function O({ className: e, asChild: n = !1, ...r }) {
|
|
101
|
-
let i = n ? /* @__PURE__ */ h(c, {}) : void 0;
|
|
102
|
-
return /* @__PURE__ */ h(v.Title, {
|
|
103
|
-
"data-slot": "sheet-title",
|
|
104
|
-
render: i,
|
|
105
|
-
className: t("text-foreground font-medium", e),
|
|
106
|
-
...r
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
function k({ className: e, asChild: n = !1, ...r }) {
|
|
110
|
-
let i = n ? /* @__PURE__ */ h(c, {}) : void 0;
|
|
111
|
-
return /* @__PURE__ */ h(v.Description, {
|
|
112
|
-
"data-slot": "sheet-description",
|
|
113
|
-
render: i,
|
|
114
|
-
className: t("text-muted-foreground text-sm", e),
|
|
115
|
-
...r
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
//#endregion
|
|
119
|
-
//#region src/components/base/sheet/sheet.tsx
|
|
120
|
-
function A(e) {
|
|
121
|
-
return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
|
|
122
|
-
}
|
|
123
|
-
var j = t(i.base, o.semibold, a.snug), M = b, N = m.forwardRef(function({ className: e, ...n }, r) {
|
|
124
|
-
return /* @__PURE__ */ h(x, {
|
|
125
|
-
ref: r,
|
|
126
|
-
className: t("sheet-trigger--component", e),
|
|
127
|
-
...n
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
N.displayName = "SheetTrigger";
|
|
131
|
-
var P = m.forwardRef(function({ className: e, ...n }, r) {
|
|
132
|
-
return /* @__PURE__ */ h(S, {
|
|
133
|
-
ref: r,
|
|
134
|
-
className: t("sheet-close--component active:translate-y-0!", e),
|
|
135
|
-
...n
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
P.displayName = "SheetClose";
|
|
139
|
-
var F = m.forwardRef(function({ className: e, ...n }, r) {
|
|
140
|
-
return /* @__PURE__ */ h(T, {
|
|
141
|
-
ref: r,
|
|
142
|
-
className: t("sheet-content--component min-h-0 gap-space-xl overflow-hidden bg-popover p-0 py-surface text-popover-foreground [&_[data-slot=sheet-close]]:active:translate-y-0!", u.modal.edge, "data-[side=top]:max-h-[85vh] data-[side=bottom]:max-h-[85vh]", e),
|
|
143
|
-
...n
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
F.displayName = "SheetContent";
|
|
147
|
-
var I = m.forwardRef(function({ className: e, textGap: n = "normal", ...r }, i) {
|
|
148
|
-
return /* @__PURE__ */ h(E, {
|
|
149
|
-
ref: i,
|
|
150
|
-
className: t("sheet-header--component", d.header, y.header, n === "dense" ? "gap-dense" : "gap-normal", e),
|
|
151
|
-
...r
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
I.displayName = "SheetHeader";
|
|
155
|
-
var L = m.forwardRef(function({ className: e, ...n }, r) {
|
|
156
|
-
let i = f(r);
|
|
157
|
-
return /* @__PURE__ */ h("div", {
|
|
158
|
-
ref: i,
|
|
159
|
-
"data-slot": "sheet-body",
|
|
160
|
-
className: t("sheet-body--component", d.body, e),
|
|
161
|
-
...n
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
L.displayName = "SheetBody";
|
|
165
|
-
var R = m.forwardRef(function({ className: e, ...n }, r) {
|
|
166
|
-
return /* @__PURE__ */ h(D, {
|
|
167
|
-
ref: r,
|
|
168
|
-
className: t("sheet-footer--component mt-auto flex-row items-center justify-end", d.footer, e),
|
|
169
|
-
...n
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
R.displayName = "SheetFooter";
|
|
173
|
-
var z = m.forwardRef(function({ children: e, className: n, ...i }, a) {
|
|
174
|
-
return /* @__PURE__ */ h(O, {
|
|
175
|
-
ref: a,
|
|
176
|
-
className: t("sheet-title--component m-0", j, n),
|
|
177
|
-
...i,
|
|
178
|
-
children: A(e) ? /* @__PURE__ */ h(r, {
|
|
179
|
-
tag: "span",
|
|
180
|
-
size: "base",
|
|
181
|
-
weight: "semibold",
|
|
182
|
-
lineHeight: "snug",
|
|
183
|
-
className: "sheet-title--text",
|
|
184
|
-
children: e
|
|
185
|
-
}) : e
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
z.displayName = "SheetTitle";
|
|
189
|
-
var B = m.forwardRef(function({ children: e, className: n, ...i }, a) {
|
|
190
|
-
return /* @__PURE__ */ h(k, {
|
|
191
|
-
ref: a,
|
|
192
|
-
className: t("sheet-description--component m-0", n),
|
|
193
|
-
...i,
|
|
194
|
-
children: A(e) ? /* @__PURE__ */ h(r, {
|
|
195
|
-
tag: "span",
|
|
196
|
-
type: "secondary",
|
|
197
|
-
lineHeight: "relaxed",
|
|
198
|
-
className: "sheet-description--text",
|
|
199
|
-
children: e
|
|
200
|
-
}) : e
|
|
201
|
-
});
|
|
202
|
-
});
|
|
203
|
-
B.displayName = "SheetDescription";
|
|
204
|
-
//#endregion
|
|
205
|
-
export { B as a, z as c, F as i, N as l, L as n, R as o, P as r, I as s, M as t, y as u };
|
|
206
|
-
|
|
207
|
-
//# sourceMappingURL=sheet-DRFNY1_D.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sheet-DRFNY1_D.js","names":["Sheet","SheetPrimitive","SheetTrigger","SheetClose","SheetContent","SheetHeader","SheetFooter","SheetTitle","SheetDescription","SheetPrimitive","React","SheetTriggerPrimitive","SheetClosePrimitive","SheetContentPrimitive","SheetHeaderPrimitive","SheetFooterPrimitive","SheetTitlePrimitive","SheetDescriptionPrimitive","useThemePortalContainer","affordanceGeometry","Text","textSizes","textLineHeights","textWeights","motionRecipes","Slot","Button","surfaceDividerRecipes","modalRegionRecipes","useScrollEdges","modalBackdropRecipe","React$1","overlayAnatomyRecipes","Sheet$1","props","Dialog","SheetTrigger$1","renderSlot","asChild","SheetClose$1","SheetPortal","resolvedContainer","container","SheetOverlay","cn","className","SheetContent$1","side","children","showCloseButton","XIcon","SheetHeader$1","SheetFooter$1","SheetTitle$1","SheetDescription$1","isSimpleText","value","titleTypography","Sheet","SheetTrigger","SheetClose","SheetContent","SheetHeader","textGap","SheetBody","scrollRef","ref","SheetFooter","SheetTitle","SheetDescription"],"sources":["../src/lib/overlay-anatomy-recipes.ts","../src/components/ui/sheet.tsx","../src/components/base/sheet/sheet.tsx"],"sourcesContent":["import { affordanceGeometry } from './affordance-geometry.generated';\n/** Dismiss controls follow the surface's logical inset; headers reserve the\n * actual small-action width plus an action gap only when a close control exists.\n * These are derived recipes, not additional theme settings.\n */\nexport const overlayAnatomyRecipes = {\n\tclose: affordanceGeometry.overlayClose,\n\theader: affordanceGeometry.overlayHeader,\n} as const;\n","\"use client\";\n\nimport { overlayAnatomyRecipes } from '../../lib/overlay-anatomy-recipes';\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\n\nimport { useThemePortalContainer, type ThemePortalContainer } from '../../lib/theme-scope';\n\nimport { Dialog as SheetPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"./button\"\nimport { Slot } from \"./slot\"\nimport { cn } from \"../../lib/utils\"\n\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\n return <SheetPrimitive.Root data-slot=\"sheet\" modal=\"trap-focus\" {...props} />\n}\n\nfunction SheetTrigger({\n asChild = false,\n ...props\n}: SheetPrimitive.Trigger.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Trigger\n data-slot=\"sheet-trigger\"\n render={renderSlot}\n {...props}\n />\n )\n}\n\nfunction SheetClose({\n asChild = false,\n ...props\n}: SheetPrimitive.Close.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Close\n data-slot=\"sheet-close\"\n render={renderSlot}\n {...props}\n />\n )\n}\n\nfunction SheetPortal({ container, ...props }: SheetPrimitive.Portal.Props) {\n const resolvedContainer = useThemePortalContainer(container)\n return <SheetPrimitive.Portal container={resolvedContainer} data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\n return (\n <SheetPrimitive.Backdrop\n data-slot=\"sheet-overlay\"\n className={cn(modalBackdropRecipe, motionRecipes.backdrop, className)}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n container,\n children,\n side = \"right\",\n showCloseButton = true,\n ...props\n}: SheetPrimitive.Popup.Props & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n showCloseButton?: boolean\n} & { container?: ThemePortalContainer }) {\n const resolvedContainer = useThemePortalContainer(container)\n return (\n <SheetPortal container={resolvedContainer}>\n <SheetOverlay />\n <SheetPrimitive.Popup\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\n motionRecipes.drawer,\n \"border-border bg-background fixed z-50 flex flex-col gap-space-xl bg-clip-padding text-sm shadow-lg data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\",\n className\n )}\n {...props}\n >\n {children}\n {!!showCloseButton && (\n <SheetPrimitive.Close\n data-slot=\"sheet-close\"\n render={\n <Button\n variant=\"ghost\"\n data-overlay-close=\"\"\n className={overlayAnatomyRecipes.close}\n size=\"icon-sm\"\n />\n }\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Popup>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n asChild = false,\n ...props\n}: SheetPrimitive.Title.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n render={renderSlot}\n className={cn(\"text-foreground font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n asChild = false,\n ...props\n}: SheetPrimitive.Description.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n render={renderSlot}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","import { modalRegionRecipes, surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport { useScrollEdges } from '../../ui/overlay.recipes';\nimport type { TextGap } from '../structure';\n/**\n * Sheet — internal edge-anchored modal anatomy behind `ActionDrawer` and the\n * mobile sidebar drawer.\n *\n * Applications use `ActionDrawer` from `themelia-react-ui/features/overlays`,\n * which owns the lifecycle, focus, dismissal and action contract; the\n * `themelia-react-ui/base/sheet` entrypoint remains only as a deprecated\n * compatibility surface. The panel shares the modal geometry of the internal\n * Dialog wrapper: the shell owns the block inset and the gap between header,\n * scrolling body and footer, regions own their inline inset, and one edge rule\n * separates the panel from the page.\n */\nimport * as React from 'react';\n\nimport {\n\tSheet as SheetPrimitive,\n\tSheetClose as SheetClosePrimitive,\n\tSheetContent as SheetContentPrimitive,\n\tSheetDescription as SheetDescriptionPrimitive,\n\tSheetFooter as SheetFooterPrimitive,\n\tSheetHeader as SheetHeaderPrimitive,\n\tSheetTitle as SheetTitlePrimitive,\n\tSheetTrigger as SheetTriggerPrimitive,\n} from '../../ui/sheet';\nimport { Text } from '../../typography';\nimport { textLineHeights, textSizes, textWeights } from '../../typography/text.styles';\nimport { cn } from '../../../lib/utils';\n\nfunction isSimpleText(value: React.ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\n/** Same title role as Dialog, set on the element so its line box matches the Text inside. */\nconst titleTypography = cn(textSizes.base, textWeights.semibold, textLineHeights.snug);\n\nexport const Sheet = SheetPrimitive;\n\nexport const SheetTrigger = React.forwardRef<\n\tReact.ElementRef<typeof SheetTriggerPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof SheetTriggerPrimitive>\n>(function SheetTrigger({ className, ...props }, ref) {\n\treturn (\n\t\t<SheetTriggerPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('sheet-trigger--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSheetTrigger.displayName = 'SheetTrigger';\n\nexport const SheetClose = React.forwardRef<\n\tReact.ElementRef<typeof SheetClosePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof SheetClosePrimitive>\n>(function SheetClose({ className, ...props }, ref) {\n\treturn (\n\t\t<SheetClosePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('sheet-close--component active:translate-y-0!', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSheetClose.displayName = 'SheetClose';\n\nexport const SheetContent = React.forwardRef<\n\tReact.ElementRef<typeof SheetContentPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof SheetContentPrimitive>\n>(function SheetContent({ className, ...props }, ref) {\n\treturn (\n\t\t<SheetContentPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t// The shell owns the block inset and the gap between regions; each\n\t\t\t\t// region owns its inline inset once. One rule marks the open edge.\n\t\t\t\t'sheet-content--component min-h-0 gap-space-xl overflow-hidden bg-popover p-0 py-surface text-popover-foreground [&_[data-slot=sheet-close]]:active:translate-y-0!',\n\t\t\t\tsurfaceDividerRecipes.modal.edge,\n\t\t\t\t'data-[side=top]:max-h-[85vh] data-[side=bottom]:max-h-[85vh]',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSheetContent.displayName = 'SheetContent';\n\nexport const SheetHeader = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof SheetHeaderPrimitive> & { textGap?: TextGap }\n>(function SheetHeader({ className, textGap = 'normal', ...props }, ref) {\n\treturn (\n\t\t<SheetHeaderPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'sheet-header--component', modalRegionRecipes.header,\n\t\t\t\toverlayAnatomyRecipes.header,\n\t\t\t\ttextGap === 'dense' ? 'gap-dense' : 'gap-normal',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSheetHeader.displayName = 'SheetHeader';\n\n/**\n * Scroll-owning content region between the pinned sheet header and footer.\n * A rule appears on its top or bottom edge only while content is scrolled out\n * of view there.\n */\nexport const SheetBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\tfunction SheetBody({ className, ...props }, ref) {\n\t\tconst scrollRef = useScrollEdges(ref);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={scrollRef}\n\t\t\t\tdata-slot=\"sheet-body\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'sheet-body--component', modalRegionRecipes.body,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nSheetBody.displayName = 'SheetBody';\n\nexport const SheetFooter = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof SheetFooterPrimitive>\n>(function SheetFooter({ className, ...props }, ref) {\n\treturn (\n\t\t<SheetFooterPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'sheet-footer--component mt-auto flex-row items-center justify-end', modalRegionRecipes.footer,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSheetFooter.displayName = 'SheetFooter';\n\nexport const SheetTitle = React.forwardRef<\n\tReact.ElementRef<typeof SheetTitlePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof SheetTitlePrimitive>\n>(function SheetTitle({ children, className, ...props }, ref) {\n\treturn (\n\t\t<SheetTitlePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('sheet-title--component m-0', titleTypography, className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"base\"\n\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\tlineHeight=\"snug\"\n\t\t\t\t\tclassName=\"sheet-title--text\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</SheetTitlePrimitive>\n\t);\n});\n\nSheetTitle.displayName = 'SheetTitle';\n\nexport const SheetDescription = React.forwardRef<\n\tReact.ElementRef<typeof SheetDescriptionPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof SheetDescriptionPrimitive>\n>(function SheetDescription({ children, className, ...props }, ref) {\n\treturn (\n\t\t<SheetDescriptionPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('sheet-description--component m-0', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\tclassName=\"sheet-description--text\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</SheetDescriptionPrimitive>\n\t);\n});\n\nSheetDescription.displayName = 'SheetDescription';\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-Cb8WzOvE.js","names":["BaseSidebar","PrimitiveSidebarProvider","React","_Fragment","_Fragment","React","React","_Fragment","_Fragment","Text","TooltipProvider","Stack","DropdownMenuTrigger","DropdownMenuContent","DropdownMenu","ActionMenu","Skeleton","formatInitials","AvatarFallback","Avatar","AvatarImage","CollapsibleContent","CollapsibleTrigger","Collapsible","ScrollArea","useBaseSidebarMenuDensity","useBaseSidebarContext","SidebarMenuSub","SidebarHeader","SidebarMenu","SidebarMenuAction","SidebarMenuItem","SidebarGroup","SidebarInput","SidebarMenuButton","SidebarContent","SidebarGroupContent","SidebarFooter","SidebarGroupLabel","Sidebar","SidebarMenuSubButton","SidebarMenuSubItem","getNavKey","renderSidebarLink","useLayoutLinkRenderer","NavBadge","resolveNavBadge","getNavLabel","DynamicIcon","isPathMatch","toPath","React$1","Fragment$1","LayoutSidebar","props","cn","surfaceClassName","useLayoutSidebar","LayoutSidebarProvider","SidebarProvider","className","defaultSidebarNavigationStrings","label","defaultSidebarWorkspaceDropdownStrings","filterNavigation","query","items","item","children","SidebarGroupedNavigation","stringsProp","inheritedMenuDensity","density","menuDensity","resolvedRenderLink","strings","useStrings","overrides","setOverrides","defaultExpandedItems","key","currentUrl","searchValue","isActive","href","hasActiveChild","isExpanded","expandedItems","allBranchKeys","index","branchItems","navigationByGroups","findBranch","nested","setExpanded","keys","candidate","open","previous","onExpandedItemsChange","renderNode","disabled","ancestorDisabled","branch","active","expanded","badge","showBadges","liveBadges","renderChildren","child","depth","childIndex","context","renderItem","labelText","content","ChevronRight","Row","Item","row","target","details","setOpen","groupEntries","group","name","emptySlot","SidebarLogo","state","collapsedLogo","logo","SidebarNavigationFooter","resolvedMenuDensity","labelNode","ExternalLink","SidebarWorkspaceDropdown","isCollapsed","visibleLogo","actions","workspaceLinks","link","triggerElement","ChevronsUpDown","isMobile","contentClassName","linkProps","AppSidebar","localSearch","setLocalSearch","defaultSearchValue","hasFooter","footerNavItems","slots","isLoading","loading","navigationGroups","hasWorkspaceLinks","headerClassName","workspaceStrings","workspaceContentClassName","logoClassName","searchable","event","onSearchValueChange","AppSidebarSkeleton","footerLabel","count","groupIdx","i","NavLabel","SidebarNavigation","defaultSidebarNavigationUserStrings","SidebarNavigationUser","dropdownSide","initials","user","onProfile","User","onSettings","Settings","onLogout","LogOut","renderTrigger","contentClasses","customContent"],"sources":["../src/components/layout/sidebar/sidebar.tsx","../src/components/layout/sidebar/sidebar.context.tsx","../src/components/layout/sidebar/sidebar.types.ts","../src/components/layout/sidebar/components/sidebar-grouped-navigation.tsx","../src/components/layout/sidebar/components/sidebar-logo.tsx","../src/components/layout/sidebar/components/sidebar-navigation-footer.tsx","../src/components/layout/sidebar/components/sidebar-workspace-dropdown.tsx","../src/components/layout/sidebar/app-sidebar.tsx","../src/components/layout/sidebar/components/sidebar-navigation.tsx","../src/components/layout/sidebar/components/sidebar-navigation-user.tsx"],"sourcesContent":["/** Sidebar — application-layout composition of the tokenized Base sidebar. */\nimport {\n\tSidebar as BaseSidebar,\n\ttype SidebarProps as BaseSidebarProps,\n} from '../../base/sidebar';\nimport { cn } from '../../../lib/utils';\n\nexport type LayoutSidebarProps = Omit<BaseSidebarProps, 'contained' | 'rootClassName'>;\n\n/**\n * Layout Sidebar keeps the shell inside its parent application frame while\n * delegating responsive behavior, strings, dimensions, and surface tokens to\n * the public Base compound primitive.\n */\nexport function LayoutSidebar({ className, surfaceClassName, ...props }: LayoutSidebarProps) {\n\treturn (\n\t\t<BaseSidebar\n\t\t\tcontained\n\t\t\trootClassName=\"layout-sidebar--component\"\n\t\t\tclassName={className}\n\t\t\tsurfaceClassName={cn('layout-sidebar--surface', surfaceClassName)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"," \n/** SidebarProvider — layout-scoped wrapper around the shadcn sidebar context. */\nimport * as React from 'react';\n\nimport { TooltipProvider } from '../../base/display/tooltip';\nimport {\n\tSidebarProvider as PrimitiveSidebarProvider,\n\tuseBaseSidebarContext,\n\ttype SidebarMenuDensity,\n} from '../../base/sidebar/sidebar';\nimport { cn } from '../../../lib/utils';\n\nexport const useLayoutSidebar = useBaseSidebarContext;\nexport type LayoutSidebarContext = ReturnType<typeof useBaseSidebarContext>;\n\nexport type LayoutSidebarProviderProps = React.ComponentProps<'div'> & {\n\t/** Parent-driven drawer adaptation for embedded shells; defaults to viewport. */\n\tadaptTo?: 'viewport' | 'container';\n\t/** Whether the surface starts open, for uncontrolled use. */\n\tdefaultOpen?: boolean;\n\t/** Default row and child-list rhythm. @default 'compact' */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Whether the surface is showing. Controlled. */\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n};\n\nexport function LayoutSidebarProvider({\n\tdefaultOpen = true,\n\tmenuDensity = 'compact',\n\topen,\n\tonOpenChange,\n\tclassName,\n\tstyle,\n\tchildren,\n\t...props\n}: LayoutSidebarProviderProps) {\n\treturn (\n\t\t<TooltipProvider delayDuration={0}>\n\t\t\t<PrimitiveSidebarProvider\n\t\t\t\tdefaultOpen={defaultOpen}\n\t\t\t\tmenuDensity={menuDensity}\n\t\t\t\topen={open}\n\t\t\t\tonOpenChange={onOpenChange}\n\t\t\t\tstyle={style}\n\t\t\t\tclassName={cn('layout-sidebar-provider--component min-h-svh', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</PrimitiveSidebarProvider>\n\t\t</TooltipProvider>\n\t);\n}\n","/**\n * Sidebar types — framework-neutral navigation tree, render contexts, slots,\n * strings, and composition props.\n */\nimport type { ComponentType, ReactNode } from 'react';\n\nimport type {\n\tLayoutIconSource,\n\tLayoutLinkRenderer,\n\tLayoutNavigationAdapter,\n} from '../layout.types';\nimport type { SidebarMenuDensity } from '../../base/sidebar';\nimport type { StringsProp } from '../../../lib/strings';\n\nexport interface SidebarNavItem {\n\t/** Display label. */\n\tlabel: ReactNode;\n\t/** Destination for the entry, when it navigates. */\n\thref?: string;\n\thandle?: string;\n\t/** Leading glyph. */\n\ticon?: LayoutIconSource;\n\t/** Disables this entry and every descendant, including branches exposed by search. */\n\tdisabled?: boolean;\n\t/** Chip rendered beside the label. */\n\tbadge?: string | number;\n\tchildren?: SidebarNavItem[];\n\tgroup?: string;\n\texternal?: boolean;\n}\n\nexport type SidebarFlatNavItem = Omit<SidebarNavItem, 'children' | 'group'>;\n\nexport interface SidebarRenderItemContext {\n\tdepth: number;\n\t/** Marks the control as currently engaged. */\n\tactive: boolean;\n\texpanded: boolean;\n\t/** Effective disabled state, including any disabled ancestor. */\n\tdisabled?: boolean;\n\t/** Library-owned child list when this branch is expanded. Place it after the custom row. */\n\tchildren?: ReactNode;\n\t/** Available for custom branch renderers. */\n\tsetExpanded?: (expanded: boolean) => void;\n\t/** Chip rendered beside the label. */\n\tbadge?: string | number;\n\trenderLink: LayoutLinkRenderer;\n}\n\nexport interface SidebarSlots {\n\t/** Header region of the shell. */\n\theader?: ReactNode;\n\t/** Pinned content before the standard logo/workspace region, inside its padded header. */\n\theaderStart?: ReactNode;\n\t/** Pinned content after the standard logo/workspace region. Full header replacement wins. */\n\theaderEnd?: ReactNode;\n\tbeforeNavigation?: ReactNode;\n\tafterNavigation?: ReactNode;\n\t/** Content below the body. */\n\tfooter?: ReactNode;\n\tempty?: ReactNode;\n\t/** Shows the pending indicator. */\n\tloading?: ReactNode;\n}\n\nexport interface SidebarExpansionProps {\n\t/** Expanded branch keys from handle, href, or a plain-text label. Controlled. */\n\texpandedItems?: readonly string[];\n\t/** Initially expanded branches. Active ancestors also open automatically. */\n\tdefaultExpandedItems?: readonly string[];\n\t/** Called after a disclosure changes; navigation remains independent. */\n\tonExpandedItemsChange?: (keys: string[]) => void;\n}\n\nexport interface SidebarNavigationStrings {\n\tsearch: string;\n\tnoResults: string;\n\texpand: (label: string) => string;\n\tcollapse: (label: string) => string;\n}\nexport const defaultSidebarNavigationStrings: SidebarNavigationStrings = {\n\tsearch: 'Search navigation…',\n\tnoResults: 'No matching pages.',\n\texpand: label => `Expand ${label}`,\n\tcollapse: label => `Collapse ${label}`,\n};\n\nexport interface AppSidebarProps extends LayoutNavigationAdapter, SidebarExpansionProps {\n\t/** Enables the library input and local navigation filtering. */\n\tsearchable?: boolean;\n\t/** Search text. Controlled; renderNode labels use their handle as searchable text. */\n\tsearchValue?: string;\n\tdefaultSearchValue?: string;\n\tonSearchValueChange?: (value: string) => void;\n\t/** Navigation search and disclosure copy. */\n\tstrings?: StringsProp<SidebarNavigationStrings>;\n\t/** Row and child-list rhythm. Inherits the sidebar provider. */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Navigation items grouped by section heading. */\n\tnavigationGroups?: Record<string, SidebarNavItem[]>;\n\t/** Navigation items pinned to the sidebar footer. */\n\tfooterNavItems?: SidebarFlatNavItem[];\n\t/** Heading above the footer navigation. */\n\tfooterLabel?: ReactNode;\n\t/** Full product mark, shown when expanded. */\n\tlogo?: ReactNode;\n\t/** Compact mark, shown when the sidebar collapses to icons. */\n\tcollapsedLogo?: ReactNode;\n\t/** Links offered in the workspace switcher. */\n\tworkspaceLinks?: WorkspaceLink[];\n\t/** Copy overrides for the workspace switcher. */\n\tworkspaceStrings?: StringsProp<SidebarWorkspaceDropdownStrings>;\n\t/** Merged onto the workspace switcher content. */\n\tworkspaceContentClassName?: string;\n\t/** Merged onto the header region. */\n\theaderClassName?: string;\n\t/** Merged onto the logo. */\n\tlogoClassName?: string;\n\t/** Resolves an item's icon name to a component, keeping navigation data serialisable. */\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\t/** URL of the active route, used to mark the current item. */\n\tcurrentUrl?: string;\n\t/** Render item badges and live counts. @default true */\n\tshowBadges?: boolean;\n\t/** Live counts keyed by item id — unread totals and similar. */\n\tliveBadges?: Record<string, string | number>;\n\t/** Shows the pending indicator. */\n\tloading?: boolean;\n\t/** Whether the sidebar can collapse to icons. */\n\tcollapsible?: 'offcanvas' | 'icon' | 'none';\n\t/** Shell treatment. */\n\tvariant?: 'sidebar' | 'floating' | 'inset';\n\t/** Which side of the trigger the surface opens on. */\n\tside?: 'left' | 'right';\n\tclassName?: string;\n\t/** Merged onto the sidebar surface. */\n\tsurfaceClassName?: string;\n\t/** Merged onto the content region. */\n\tcontentClassName?: string;\n\t/** Replaces individual regions of the shell. */\n\tslots?: SidebarSlots;\n\t/** Renders one item through the consumer's router. */\n\trenderItem?: (item: SidebarNavItem, context: SidebarRenderItemContext) => ReactNode;\n}\n\nexport interface SidebarGroupedNavigationProps extends LayoutNavigationAdapter, SidebarExpansionProps {\n\t/** Optional local filter. Matching ancestors stay visible and open. */\n\tsearchValue?: string;\n\tstrings?: StringsProp<SidebarNavigationStrings>;\n\t/** Row and child-list rhythm. Inherits the sidebar provider. */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Navigation items grouped by section heading. */\n\tnavigationByGroups: Record<string, SidebarNavItem[]>;\n\t/** URL of the active route, used to mark the current item. */\n\tcurrentUrl?: string;\n\t/** Resolves an item's icon name to a component, keeping navigation data serialisable. */\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\t/** Render item badges and live counts. @default true */\n\tshowBadges?: boolean;\n\t/** Live counts keyed by item id — unread totals and similar. */\n\tliveBadges?: Record<string, string | number>;\n\t/** Shown when a group has no items. */\n\temptySlot?: ReactNode;\n\t/** Renders one item through the consumer's router. */\n\trenderItem?: (item: SidebarNavItem, context: SidebarRenderItemContext) => ReactNode;\n\tclassName?: string;\n}\n\nexport interface SidebarFlatNavigationProps extends LayoutNavigationAdapter {\n\t/** Row and child-list rhythm. Inherits the sidebar provider. */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Entries to render, in order. */\n\titems: SidebarFlatNavItem[];\n\t/** Display label. */\n\tlabel?: ReactNode;\n\t/** URL of the active route, used to mark the current item. */\n\tcurrentUrl?: string;\n\t/** Resolves an item's icon name to a component, keeping navigation data serialisable. */\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\t/** Render item badges and live counts. @default true */\n\tshowBadges?: boolean;\n\t/** Live counts keyed by item id — unread totals and similar. */\n\tliveBadges?: Record<string, string | number>;\n\t/** Renders one item through the consumer's router. */\n\trenderItem?: (item: SidebarFlatNavItem, context: SidebarRenderItemContext) => ReactNode;\n\tclassName?: string;\n}\n\nexport interface WorkspaceLink {\n\t/** Display label. */\n\tlabel: ReactNode;\n\turl: string;\n\t/** Leading glyph. */\n\ticon?: ComponentType<{ className?: string }>;\n\texternal?: boolean;\n}\n\nexport interface SidebarWorkspaceDropdownStrings {\n\t/** Display label. */\n\tlabel: string;\n\tselect: string;\n}\n\nexport const defaultSidebarWorkspaceDropdownStrings: SidebarWorkspaceDropdownStrings = {\n\tlabel: 'Workspace',\n\tselect: 'Select workspace',\n};\n\nexport interface SidebarWorkspaceDropdownProps extends LayoutNavigationAdapter {\n\t/** Full product mark, shown when expanded. */\n\tlogo: ReactNode;\n\t/** Compact mark, shown when the sidebar collapses to icons. */\n\tcollapsedLogo?: ReactNode;\n\t/** Links offered in the workspace switcher. */\n\tworkspaceLinks: WorkspaceLink[];\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<SidebarWorkspaceDropdownStrings>;\n\t/** Merged onto the content region. */\n\tcontentClassName?: string;\n}\n\nexport type SidebarFooterNavigationItem = SidebarFlatNavItem;\n\nexport interface SidebarNavigationFooterProps extends LayoutNavigationAdapter {\n\t/** Row and child-list rhythm. Inherits the sidebar provider. */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Entries to render, in order. */\n\titems: SidebarFooterNavigationItem[];\n\t/** Display label. */\n\tlabel?: ReactNode;\n\t/** URL of the active route, used to mark the current item. */\n\tcurrentUrl?: string;\n\t/** Resolves an item's icon name to a component, keeping navigation data serialisable. */\n\ticonMap?: Record<string, ComponentType<{ className?: string }>>;\n\t/** Render item badges and live counts. @default true */\n\tshowBadges?: boolean;\n\t/** Live counts keyed by item id — unread totals and similar. */\n\tliveBadges?: Record<string, string | number>;\n\tclassName?: string;\n}\n","/** Grouped navigation uses public disclosure and sidebar anatomy; routing stays app-owned. */\nimport * as React from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../../base/display/collapsible';\nimport {\n\tSidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuAction,\n\tSidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton,\n\tSidebarMenuSubItem,\n} from '../../../base/sidebar';\nimport { Text } from '../../../typography';\nimport { useBaseSidebarMenuDensity } from '../../../base/sidebar/sidebar';\nimport { cn } from '../../../../lib/utils';\nimport { useStrings } from '../../../../lib/strings';\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport { useLayoutSidebar } from '../sidebar.context';\nimport { defaultSidebarNavigationStrings, type SidebarGroupedNavigationProps, type SidebarNavItem, type SidebarRenderItemContext } from '../sidebar.types';\nimport { DynamicIcon, getNavKey, getNavLabel, isPathMatch, NavBadge, renderSidebarLink, resolveNavBadge, toPath } from '../sidebar.utils';\n\nfunction filterNavigation(items: SidebarNavItem[], query: string): SidebarNavItem[] {\n\tif (!query) return items;\n\treturn items.flatMap(item => {\n\t\tconst label = typeof item.label === 'string' || typeof item.label === 'number' ? String(item.label) : item.handle ?? '';\n\t\tif (`${label} ${item.handle ?? ''}`.toLocaleLowerCase().includes(query)) return [item];\n\t\tconst children = filterNavigation(item.children ?? [], query);\n\t\treturn children.length ? [{ ...item, children }] : [];\n\t});\n}\n\nexport function SidebarGroupedNavigation({\n\tnavigationByGroups, currentUrl = '/', iconMap = {}, liveBadges,\n\tshowBadges = true, renderLink, emptySlot, renderItem, className, menuDensity,\n\texpandedItems, defaultExpandedItems = [], onExpandedItemsChange, searchValue = '', strings: stringsProp,\n}: SidebarGroupedNavigationProps) {\n\tconst inheritedMenuDensity = useBaseSidebarMenuDensity();\n\tconst { setOpen } = useLayoutSidebar();\n\tconst density = menuDensity ?? inheritedMenuDensity ?? 'default';\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst strings = useStrings(defaultSidebarNavigationStrings, stringsProp);\n\tconst [overrides, setOverrides] = React.useState<Record<string, { open: boolean; route: string }>>(() => Object.fromEntries(defaultExpandedItems.map(key => [key, { open: true, route: currentUrl }])));\n\tconst query = searchValue.trim().toLocaleLowerCase();\n\tconst isActive = (href?: string): boolean => !!href && isPathMatch(currentUrl, toPath(href));\n\tconst hasActiveChild = (items?: SidebarNavItem[]): boolean => !!items?.some(item => isActive(item.href) || hasActiveChild(item.children));\n\tconst isExpanded = (item: SidebarNavItem, key: string) => expandedItems !== undefined\n\t\t? expandedItems.includes(key)\n\t\t: overrides[key]?.route === currentUrl ? overrides[key]!.open : !!overrides[key]?.open || isActive(item.href) || hasActiveChild(item.children);\n\tconst allBranchKeys = (items: SidebarNavItem[]): string[] => items.flatMap((item, index) => item.children?.length ? [String(getNavKey(item, index)), ...allBranchKeys(item.children)] : []);\n\tconst branchItems = Object.values(navigationByGroups).flat();\n\tconst findBranch = (key: string, items: SidebarNavItem[]): SidebarNavItem | undefined => {\n\t\tfor (const [index, item] of items.entries()) {\n\t\t\tif (String(getNavKey(item, index)) === key) return item;\n\t\t\tconst nested = findBranch(key, item.children ?? []);\n\t\t\tif (nested) return nested;\n\t\t}\n\t};\n\tconst setExpanded = (key: string, open: boolean) => {\n\t\tif (query) return;\n\t\tconst keys = new Set(expandedItems ?? allBranchKeys(branchItems).filter(candidate => {\n\t\t\tconst item = findBranch(candidate, branchItems);\n\t\t\treturn item && isExpanded(item, candidate);\n\t\t}));\n\t\tif (open) keys.add(key); else keys.delete(key);\n\t\tif (expandedItems === undefined) setOverrides(previous => ({ ...previous, [key]: { open, route: currentUrl } }));\n\t\tonExpandedItemsChange?.([...keys]);\n\t};\n\n\tconst renderNode = (item: SidebarNavItem, depth: number, index: number, ancestorDisabled = false): React.ReactNode => {\n\t\tconst key = String(getNavKey(item, index));\n\t\tconst disabled = ancestorDisabled || !!item.disabled;\n\t\tconst children = item.children ?? [];\n\t\tconst branch = children.length > 0;\n\t\tconst active = isActive(item.href);\n\t\tconst expanded = branch && (!!query || isExpanded(item, key));\n\t\tconst badge = showBadges ? resolveNavBadge(item.handle, item.badge, liveBadges) : undefined;\n\t\tconst renderChildren = () => <SidebarMenuSub>{children.map((child, childIndex) => renderNode(child, depth + 1, childIndex, disabled))}</SidebarMenuSub>;\n\t\tconst context: SidebarRenderItemContext = {\n\t\t\tdepth, active, expanded, disabled, badge, renderLink: resolvedRenderLink,\n\t\t\tsetExpanded: branch ? open => { if (!disabled) setExpanded(key, open); } : undefined,\n\t\t\t// A complete row override may intentionally omit descendants. Resolve\n\t\t\t// their renderers only when the consumer requests the child-list seam.\n\t\t\tget children() { return branch && expanded ? renderChildren() : undefined; },\n\t\t};\n\t\tif (renderItem) return <React.Fragment key={key}>{renderItem(item, context)}</React.Fragment>;\n\t\tconst label = getNavLabel(item);\n\t\tconst labelText = typeof label === 'string' || typeof label === 'number' ? String(label) : item.handle ?? '';\n\t\tconst content = <>\n\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-icon\" aria-hidden=\"true\" />}\n\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"min-w-0 flex-1 truncate text-start text-inherit\">{label}</Text>\n\t\t\t{badge !== undefined && <NavBadge value={badge} size={depth ? 'sm' : 'md'} />}\n\t\t\t{branch && !item.href && <ChevronRight className={cn('size-icon shrink-0 transition-transform rtl:rotate-180', expanded && 'rotate-90 rtl:rotate-90')} aria-hidden=\"true\" />}\n\t\t</>;\n\t\tconst Row = depth ? SidebarMenuSubButton : SidebarMenuButton;\n\t\tconst Item = depth ? SidebarMenuSubItem : SidebarMenuItem;\n\t\tconst row = <Row\n\t\t\t{...(depth === 0 ? { tooltip: { children: label } } : {})}\n\t\t\tactive={active || (branch && hasActiveChild(children))}\n\t\t\trender={item.href && !disabled ? renderSidebarLink(resolvedRenderLink, item, content, undefined, active && !hasActiveChild(children)) as React.ReactElement : <button type=\"button\" disabled={disabled} />}\n\t\t\taria-disabled={disabled || undefined}\n\t\t\tclassName={cn('w-full font-medium', depth > 0 && active && 'bg-transparent text-primary-accent hover:text-primary-accent active:text-primary-accent data-active:text-primary-accent data-[active=true]:text-primary-accent', disabled && 'cursor-not-allowed opacity-50')}\n\t\t>{content}</Row>;\n\t\tif (!branch) return <Item key={key}>{row}</Item>;\n\t\treturn <Collapsible key={key} open={expanded} onOpenChange={(open, details) => {\n\t\t\t// Icon rails hide child lists. Reveal the shell and retain an open\n\t\t\t// branch rather than toggling descendants that remain inaccessible.\n\t\t\tconst target = details.event.target;\n\t\t\tif (depth === 0 && !item.href && target instanceof Element && target.closest('[data-collapsible=\"icon\"]')) {\n\t\t\t\tsetOpen(true);\n\t\t\t\tsetExpanded(key, true);\n\t\t\t} else setExpanded(key, open);\n\t\t}} disabled={disabled || !!query} render={<Item />}>\n\t\t\t{item.href ? <>\n\t\t\t\t{row}\n\t\t\t\t<CollapsibleTrigger render={<SidebarMenuAction />} aria-label={expanded ? strings.collapse(labelText) : strings.expand(labelText)}>\n\t\t\t\t\t<ChevronRight className={cn('size-icon shrink-0 transition-transform rtl:rotate-180', expanded && 'rotate-90 rtl:rotate-90')} aria-hidden=\"true\" />\n\t\t\t\t</CollapsibleTrigger>\n\t\t\t</> : <CollapsibleTrigger render={row} />}\n\t\t\t<CollapsibleContent>{renderChildren()}</CollapsibleContent>\n\t\t</Collapsible>;\n\t};\n\tconst groupEntries = Object.entries(navigationByGroups).map(([group, items]) => [group, filterNavigation(items, query)] as const).filter(([, items]) => items.length);\n\tif (!groupEntries.length) return emptySlot ?? (query ? <SidebarGroup><Text type=\"secondary\">{strings.noResults}</Text></SidebarGroup> : null);\n\t// Group labels and one shared gap separate groups; no rule between them.\n\treturn <div className={cn('sidebar-grouped-navigation--component flex flex-col gap-space-xl', className)}>\n\t\t{groupEntries.map(([name, items]) => <SidebarGroup key={name} className=\"py-0\">\n\t\t\t{!name.startsWith('_') && <SidebarGroupLabel>{name}</SidebarGroupLabel>}\n\t\t\t<SidebarMenu menuDensity={density}>{items.map((item, index) => renderNode(item, 0, index))}</SidebarMenu>\n\t\t</SidebarGroup>)}\n\t</div>;\n}\n","/** SidebarLogo — hides its logo content when the sidebar is icon-collapsed. */\nimport type { ReactNode } from 'react';\n\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutSidebar } from '../sidebar.context';\n\nexport interface SidebarLogoProps {\n\t/** Full product mark, shown when expanded. */\n\tlogo: ReactNode;\n\t/** Compact mark, shown when the sidebar collapses to icons. */\n\tcollapsedLogo?: ReactNode;\n\tclassName?: string;\n}\n\nexport function SidebarLogo({ logo, collapsedLogo = null, className }: SidebarLogoProps) {\n\tconst { state } = useLayoutSidebar();\n\tconst isCollapsed = state === 'collapsed';\n\tconst content = isCollapsed ? collapsedLogo : logo;\n\tif (!content) return null;\n\treturn <div className={cn('sidebar-logo--component min-w-0', className)}>{content}</div>;\n}\n","/** SidebarNavigationFooter — secondary footer navigation using renderLink. */\nimport { ExternalLink } from 'lucide-react';\n\nimport {\n\tSidebarGroup,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '../../../base/sidebar';\nimport { Text } from '../../../typography';\nimport { useBaseSidebarMenuDensity } from '../../../base/sidebar/sidebar';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { SidebarNavigationFooterProps } from '../sidebar.types';\nimport {\n\tDynamicIcon,\n\tgetNavKey,\n\tgetNavLabel,\n\tisPathMatch,\n\tNavBadge,\n\trenderSidebarLink,\n\tresolveNavBadge,\n\ttoPath,\n} from '../sidebar.utils';\n\nexport function SidebarNavigationFooter({\n\titems,\n\tlabel,\n\tcurrentUrl = '/',\n\ticonMap = {},\n\tliveBadges,\n\tshowBadges = true,\n\trenderLink,\n\tclassName,\n\tmenuDensity,\n}: SidebarNavigationFooterProps) {\n\tconst inheritedMenuDensity = useBaseSidebarMenuDensity();\n\tconst resolvedMenuDensity = menuDensity ?? inheritedMenuDensity ?? 'default';\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\n\treturn (\n\t\t<SidebarGroup className={cn('sidebar-navigation-footer--component group-data-[collapsible=icon]:p-0', className)}>\n\t\t\t{!!label && <SidebarGroupLabel>{label}</SidebarGroupLabel>}\n\t\t\t<SidebarGroupContent>\n\t\t\t\t<SidebarMenu menuDensity={resolvedMenuDensity}>\n\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\tconst active = !!item.href && isPathMatch(currentUrl, toPath(item.href));\n\t\t\t\t\t\tconst badge = showBadges ? resolveNavBadge(item.handle, item.badge, liveBadges) : undefined;\n\t\t\t\t\t\tconst labelNode = getNavLabel(item);\n\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-icon\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t\t{typeof labelNode === 'string' || typeof labelNode === 'number' ? (\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"truncate text-inherit\">{labelNode}</Text>\n\t\t\t\t\t\t\t\t) : labelNode}\n\t\t\t\t\t\t\t\t{badge !== undefined && <NavBadge value={badge} />}\n\t\t\t\t\t\t\t\t{!!item.external && <ExternalLink className=\"ml-auto size-icon-sm opacity-50\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, active) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'font-medium text-sidebar-foreground/70 hover:text-sidebar-accent-foreground',\n\t\t\t\t\t\t\t\t\t\tactive && 'bg-sidebar-accent text-sidebar-accent-foreground',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\ttooltip={{ children: labelNode }}\n\t\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t\t</SidebarMenuButton>\n\t\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</SidebarMenu>\n\t\t\t</SidebarGroupContent>\n\t\t</SidebarGroup>\n\t);\n}\n","/** SidebarWorkspaceDropdown — workspace selector using consumer link rendering. */\nimport { ChevronsUpDown, ExternalLink } from 'lucide-react';\n\nimport { ActionMenu, type ActionMenuAction } from '../../../base/action-menu';\n\nimport { Text } from '../../../typography';\nimport {\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '../../../base/sidebar';\nimport { useStrings } from '../../../../lib/strings';\nimport { Stack } from '../../../base/structure';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultSidebarWorkspaceDropdownStrings,\n\ttype SidebarWorkspaceDropdownProps,\n} from '../sidebar.types';\nimport { useLayoutSidebar } from '../sidebar.context';\n\nexport function SidebarWorkspaceDropdown({\n\tlogo,\n\tcollapsedLogo,\n\tworkspaceLinks,\n\trenderLink,\n\tstrings: stringsProp,\n\tcontentClassName,\n}: SidebarWorkspaceDropdownProps) {\n\tconst strings = useStrings(defaultSidebarWorkspaceDropdownStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst { state, isMobile } = useLayoutSidebar();\n\tconst isCollapsed = state === 'collapsed';\n\tconst visibleLogo = isCollapsed ? (collapsedLogo ?? logo) : logo;\n\n\t// Every entry is an external workspace link, captioned as one group.\n\tconst actions: ActionMenuAction[] = workspaceLinks.map((link) => ({\n\t\tid: link.url,\n\t\tlabel: link.label,\n\t\ticon: link.icon ?? ExternalLink,\n\t\thref: link.url,\n\t\texternal: link.external ?? true,\n\t\tgroup: strings.label,\n\t}));\n\n\tconst triggerElement = (\n\t\t<SidebarMenuButton\n\t\t\tsize=\"lg\"\n\t\t\taria-label={strings.select}\n\t\t\tclassName=\"group-data-[collapsible=icon]:p-0! data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n\t\t>\n\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"md\" wrap={false} className=\"min-w-0 flex-1\">\n\t\t\t\t{visibleLogo}\n\t\t\t\t{!isCollapsed && (\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"sr-only\">\n\t\t\t\t\t\t{strings.select}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t\t{!isCollapsed && <ChevronsUpDown className=\"ml-auto size-icon shrink-0\" aria-hidden=\"true\" />}\n\t\t</SidebarMenuButton>\n\t);\n\n\treturn (\n\t\t<SidebarMenu className=\"sidebar-workspace-dropdown--component\">\n\t\t\t<SidebarMenuItem>\n\t\t\t\t<ActionMenu\n\t\t\t\t\tactions={actions}\n\t\t\t\t\talign=\"start\"\n\t\t\t\t\tside={isMobile ? \"bottom\" : \"right\"}\n\t\t\t\t\tcontentClassName={cn('min-w-56', contentClassName)}\n\t\t\t\t\twidth=\"w-auto\"\n\t\t\t\t\tcloseOnSelect\n\t\t\t\t\tpreserveOrder\n\t\t\t\t\trenderTrigger={triggerElement}\n\t\t\t\t\trenderLink={({ children, ...linkProps }) =>\n\t\t\t\t\t\tresolvedRenderLink({ ...linkProps, children: children ?? null }) as React.ReactElement\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</SidebarMenuItem>\n\t\t</SidebarMenu>\n\t);\n}\n","/**\n * AppSidebar — opinionated assembly of logo/header, grouped navigation, and\n * footer links. Consumers still own framework routing through `renderLink`.\n */\nimport * as React from 'react';\n\nimport { ScrollArea } from '../../base/display/scroll-area';\nimport { Skeleton } from '../../base/skeleton';\nimport {\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarHeader,\n\tSidebarInput,\n\tSidebarMenu,\n\tSidebarMenuItem,\n} from '../../base/sidebar';\nimport { cn } from '../../../lib/utils';\nimport { useStrings } from '../../../lib/strings';\nimport { defaultSidebarNavigationStrings } from './sidebar.types';\n\nimport { SidebarGroupedNavigation } from './components/sidebar-grouped-navigation';\nimport { SidebarLogo } from './components/sidebar-logo';\nimport { SidebarNavigationFooter } from './components/sidebar-navigation-footer';\nimport { SidebarWorkspaceDropdown } from './components/sidebar-workspace-dropdown';\nimport { LayoutSidebar } from './sidebar';\nimport type { AppSidebarProps } from './sidebar.types';\n\nexport function AppSidebar({\n\tnavigationGroups,\n\tfooterNavItems = [],\n\tfooterLabel,\n\tlogo,\n\tcollapsedLogo,\n\tworkspaceLinks = [],\n\tworkspaceStrings,\n\tworkspaceContentClassName,\n\theaderClassName,\n\tlogoClassName,\n\ticonMap,\n\tcurrentUrl = '/',\n\tliveBadges,\n\tshowBadges = true,\n\tmenuDensity,\n\trenderLink,\n\tloading,\n\tcollapsible = 'icon',\n\tvariant = 'sidebar',\n\tside = 'left',\n\tclassName,\n\tsurfaceClassName,\n\tcontentClassName,\n\tslots,\n\trenderItem,\n\tsearchable = false,\n\tsearchValue,\n\tdefaultSearchValue = '',\n\tonSearchValueChange,\n\tstrings: stringsProp,\n\texpandedItems,\n\tdefaultExpandedItems,\n\tonExpandedItemsChange,\n}: AppSidebarProps) {\n\tconst strings = useStrings(defaultSidebarNavigationStrings, stringsProp);\n\tconst [localSearch, setLocalSearch] = React.useState(defaultSearchValue);\n\tconst query = searchValue ?? localSearch;\n\tconst hasFooter = footerNavItems.length > 0 || !!slots?.footer;\n\tconst isLoading = loading || !navigationGroups;\n\tconst hasWorkspaceLinks = workspaceLinks.length > 0;\n\n\treturn (\n\t\t<LayoutSidebar collapsible={collapsible} variant={variant} side={side} className={cn('app-sidebar--component h-svh', className)} surfaceClassName={surfaceClassName}>\n\t\t\t{slots?.header ?? ((!!logo || !!slots?.headerStart || !!slots?.headerEnd) && (\n\t\t\t\t<SidebarHeader className={headerClassName}>\n\t\t\t\t\t{slots?.headerStart}\n\t\t\t\t\t{!!logo && (hasWorkspaceLinks ? (\n\t\t\t\t\t\t<SidebarWorkspaceDropdown\n\t\t\t\t\t\t\tlogo={logo}\n\t\t\t\t\t\t\tcollapsedLogo={collapsedLogo}\n\t\t\t\t\t\t\tworkspaceLinks={workspaceLinks}\n\t\t\t\t\t\t\tstrings={workspaceStrings}\n\t\t\t\t\t\t\tcontentClassName={workspaceContentClassName}\n\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SidebarLogo logo={logo} collapsedLogo={collapsedLogo} className={logoClassName} />\n\t\t\t\t\t))}\n\t\t\t\t\t{slots?.headerEnd}\n\t\t\t\t</SidebarHeader>\n\t\t\t))}\n\n\t\t\t{searchable && <SidebarHeader className=\"group-data-[collapsible=icon]:hidden\">\n\t\t\t\t<SidebarInput aria-label={strings.search} placeholder={strings.search} value={query} disabled={isLoading} onChange={event => {\n\t\t\t\t\tif (searchValue === undefined) setLocalSearch(event.target.value);\n\t\t\t\t\tonSearchValueChange?.(event.target.value);\n\t\t\t\t}} />\n\t\t\t</SidebarHeader>}\n\n\t\t\t<SidebarContent className={cn(\"overflow-hidden\", contentClassName)}>\n\t\t\t\t<ScrollArea className=\"min-h-0 flex-1 pt-space-sm\">\n\t\t\t\t\t{/* One group gap separates slot groups and navigation groups alike. */}\n\t\t\t\t\t<div className=\"app-sidebar--navigation flex flex-col gap-space-xl\">\n\t\t\t\t\t\t{slots?.beforeNavigation}\n\t\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t\tslots?.loading ?? <AppSidebarSkeleton />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<SidebarGroupedNavigation\n\t\t\t\t\t\t\t\tnavigationByGroups={navigationGroups}\n\t\t\t\t\t\t\t\tcurrentUrl={currentUrl}\n\t\t\t\t\t\t\t\tsearchValue={query}\n\t\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t\t\texpandedItems={expandedItems}\n\t\t\t\t\t\t\t\tdefaultExpandedItems={defaultExpandedItems}\n\t\t\t\t\t\t\t\tonExpandedItemsChange={onExpandedItemsChange}\n\t\t\t\t\t\t\t\ticonMap={iconMap}\n\t\t\t\t\t\t\t\tliveBadges={liveBadges}\n\t\t\t\t\t\t\t\tshowBadges={showBadges}\n\t\t\t\t\t\t\t\tmenuDensity={menuDensity}\n\t\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t\t\temptySlot={slots?.empty}\n\t\t\t\t\t\t\t\trenderItem={renderItem}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{slots?.afterNavigation}\n\t\t\t\t\t</div>\n\t\t\t\t</ScrollArea>\n\t\t\t</SidebarContent>\n\n\t\t\t{hasFooter && (\n\t\t\t\t<SidebarFooter>\n\t\t\t\t\t{slots?.footer ?? (\n\t\t\t\t\t\t<SidebarNavigationFooter\n\t\t\t\t\t\t\tclassName=\"p-0\"\n\t\t\t\t\t\t\titems={footerNavItems}\n\t\t\t\t\t\t\tlabel={footerLabel}\n\t\t\t\t\t\t\tcurrentUrl={currentUrl}\n\t\t\t\t\t\t\ticonMap={iconMap}\n\t\t\t\t\t\t\tliveBadges={liveBadges}\n\t\t\t\t\t\t\tshowBadges={showBadges}\n\t\t\t\t\t\t\tmenuDensity={menuDensity}\n\t\t\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</SidebarFooter>\n\t\t\t)}\n\t\t</LayoutSidebar>\n\t);\n}\n\nfunction AppSidebarSkeleton() {\n\tconst groups = [9, 3, 4, 2, 1];\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-space-xl\">\n\t\t\t{groups.map((count, groupIdx) => (\n\t\t\t\t<SidebarGroup key={groupIdx} className=\"py-0\">\n\t\t\t\t\t<SidebarMenu>\n\t\t\t\t\t\t{Array.from({ length: count }, (_, i) => (\n\t\t\t\t\t\t\t<SidebarMenuItem key={i}>\n\t\t\t\t\t\t\t\t<div className=\"flex h-action-sm items-center gap-space-md px-control-sm\">\n\t\t\t\t\t\t\t\t\t<Skeleton className=\"size-icon shrink-0 rounded\" />\n\t\t\t\t\t\t\t\t\t<Skeleton\n\t\t\t\t\t\t\t\t\t\tclassName=\"h-3.5 rounded\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ width: `${60 + ((groupIdx * 7 + i * 13) % 40)}px` }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</SidebarMenu>\n\t\t\t\t</SidebarGroup>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","/** SidebarNavigation — flat, framework-neutral sidebar nav list. */\nimport * as React from 'react';\n\nimport {\n\tSidebarGroup,\n\tSidebarGroupLabel,\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '../../../base/sidebar';\nimport { Text } from '../../../typography';\nimport { useBaseSidebarMenuDensity } from '../../../base/sidebar/sidebar';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { SidebarFlatNavigationProps, SidebarFlatNavItem, SidebarRenderItemContext } from '../sidebar.types';\nimport {\n\tDynamicIcon,\n\tgetNavKey,\n\tgetNavLabel,\n\tisPathMatch,\n\tNavBadge,\n\trenderSidebarLink,\n\tresolveNavBadge,\n\ttoPath,\n} from '../sidebar.utils';\n\nfunction NavLabel({ item }: { item: SidebarFlatNavItem }) {\n\tconst label = getNavLabel(item);\n\treturn (\n\t\t<Text tag=\"span\" weight=\"medium\" className=\"truncate text-inherit\">\n\t\t\t{label}\n\t\t</Text>\n\t);\n}\n\nexport function SidebarNavigation({\n\titems,\n\tlabel = 'Platform',\n\tcurrentUrl = '/',\n\ticonMap = {},\n\tliveBadges,\n\tshowBadges = true,\n\trenderLink,\n\trenderItem,\n\tclassName,\n\tmenuDensity,\n}: SidebarFlatNavigationProps) {\n\tconst inheritedMenuDensity = useBaseSidebarMenuDensity();\n\tconst resolvedMenuDensity = menuDensity ?? inheritedMenuDensity ?? 'default';\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\n\treturn (\n\t\t<SidebarGroup className={cn('sidebar-navigation--component py-0', className)}>\n\t\t\t{!!label && <SidebarGroupLabel>{label}</SidebarGroupLabel>}\n\t\t\t<SidebarMenu menuDensity={resolvedMenuDensity}>\n\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\tconst active = !!item.href && isPathMatch(currentUrl, toPath(item.href));\n\t\t\t\t\tconst badge = showBadges ? resolveNavBadge(item.handle, item.badge, liveBadges) : undefined;\n\t\t\t\t\tconst context: SidebarRenderItemContext = {\n\t\t\t\t\t\tdepth: 0,\n\t\t\t\t\t\tactive,\n\t\t\t\t\t\texpanded: false,\n\t\t\t\t\t\tdisabled: !!item.disabled,\n\t\t\t\t\t\tbadge,\n\t\t\t\t\t\trenderLink: resolvedRenderLink,\n\t\t\t\t\t};\n\t\t\t\t\tconst labelNode = getNavLabel(item);\n\n\t\t\t\t\tif (renderItem) {\n\t\t\t\t\t\treturn <React.Fragment key={getNavKey(item, index)}>{renderItem(item, context)}</React.Fragment>;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst content = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{!!item.icon && <DynamicIcon icon={item.icon} iconMap={iconMap} className=\"size-icon\" aria-hidden=\"true\" />}\n\t\t\t\t\t\t\t<NavLabel item={item} />\n\t\t\t\t\t\t\t{badge !== undefined && <NavBadge value={badge} />}\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SidebarMenuItem key={getNavKey(item, index)}>\n\t\t\t\t\t\t\t<SidebarMenuButton\n\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\titem.href && !item.disabled\n\t\t\t\t\t\t\t\t\t\t? renderSidebarLink(resolvedRenderLink, item, content, undefined, active) as React.ReactElement\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttooltip={{ children: labelNode }}\n\t\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'font-medium',\n\t\t\t\t\t\t\t\t\tactive && 'bg-sidebar-accent text-sidebar-foreground',\n\t\t\t\t\t\t\t\t\titem.disabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</SidebarMenuButton>\n\t\t\t\t\t\t</SidebarMenuItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</SidebarMenu>\n\t\t</SidebarGroup>\n\t);\n}\n"," \n/** SidebarNavigationUser — user profile dropdown for sidebar footer. */\nimport { ChevronsUpDown, LogOut, Settings, User } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { ActionMenu, type ActionMenuAction } from '../../../base/action-menu';\nimport { Avatar, AvatarFallback, AvatarImage } from '../../../base/avatar';\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuTrigger,\n} from '../../../base/navigation/dropdown-menu';\nimport { formatInitials } from '../../../primitives/initials-format';\nimport { Text } from '../../../typography';\nimport {\n\tSidebarMenu,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n} from '../../../base/sidebar';\nimport { useStrings, type StringsProp } from '../../../../lib/strings';\n\nimport type { LayoutUser } from '../../layout.types';\nimport { useLayoutSidebar } from '../sidebar.context';\nimport { Stack } from '../../../base/structure';\n\nexport interface SidebarNavigationUserStrings {\n\tprofile: string;\n\tsettings: string;\n\tlogout: string;\n}\n\nexport const defaultSidebarNavigationUserStrings: SidebarNavigationUserStrings = {\n\tprofile: 'Profile',\n\tsettings: 'Settings',\n\tlogout: 'Log out',\n};\n\nexport interface SidebarNavigationUserProps {\n\t/** The signed-in user shown in the menu. */\n\tuser: LayoutUser;\n\t/** Extra content appended inside the menu. */\n\tcustomContent?: ReactNode;\n\tonProfile?: () => void;\n\tonSettings?: () => void;\n\tonLogout?: () => void;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<SidebarNavigationUserStrings>;\n\t/** Replaces the default trigger element. */\n\trenderTrigger?: (user: LayoutUser) => ReactNode;\n}\n\nexport function SidebarNavigationUser({\n\tuser,\n\tcustomContent,\n\tonProfile,\n\tonSettings,\n\tonLogout,\n\tstrings: stringsProp,\n\trenderTrigger,\n}: SidebarNavigationUserProps) {\n\tconst strings = useStrings(defaultSidebarNavigationUserStrings, stringsProp);\n\tconst { state, isMobile } = useLayoutSidebar();\n\tconst dropdownSide = isMobile || state !== 'collapsed' ? 'bottom' : 'right';\n\tconst initials = formatInitials(user.name, { strategy: 'first-words' });\n\n\t// Profile and settings together; sign-out held apart by a captionless rule.\n\tconst actions: ActionMenuAction[] = [\n\t\t...(onProfile ? [{ id: 'profile', label: strings.profile, icon: User, onClick: onProfile }] : []),\n\t\t...(onSettings ? [{ id: 'settings', label: strings.settings, icon: Settings, onClick: onSettings }] : []),\n\t\t...(onLogout\n\t\t\t? [{\n\t\t\t\tid: 'logout',\n\t\t\t\tlabel: strings.logout,\n\t\t\t\ticon: LogOut,\n\t\t\t\tonClick: onLogout,\n\t\t\t\t...(onProfile || onSettings ? { group: true as const } : null),\n\t\t\t}]\n\t\t\t: []),\n\t];\n\n\tconst triggerElement = (\n\t\t<SidebarMenuButton\n\t\t\tsize=\"lg\"\n\t\t\tclassName=\"group text-sidebar-accent-foreground data-[state=open]:bg-sidebar-accent\"\n\t\t>\n\t\t\t{renderTrigger?.(user) ?? (\n\t\t\t\t<>\n\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"md\" className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t<Avatar className=\"size-avatar rounded-full\">\n\t\t\t\t\t\t\t{!!user.avatar && <AvatarImage src={user.avatar} alt={user.name} />}\n\t\t\t\t\t\t\t<AvatarFallback className=\"bg-sidebar-accent text-xs text-sidebar-accent-foreground\">\n\t\t\t\t\t\t\t\t{initials}\n\t\t\t\t\t\t\t</AvatarFallback>\n\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t<div className=\"flex flex-1 flex-col items-start justify-center overflow-hidden\">\n\t\t\t\t\t\t\t<Text weight=\"medium\" className=\"w-full truncate\">{user.name}</Text>\n\t\t\t\t\t\t\t{!!user.email && <Text size=\"xs\" type=\"secondary\" className=\"w-full truncate\">{user.email}</Text>}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<ChevronsUpDown className=\"ml-auto size-icon shrink-0\" aria-hidden=\"true\" />\n\t\t\t\t</>\n\t\t\t)}\n\t\t</SidebarMenuButton>\n\t);\n\n\tconst contentClasses = 'w-(--anchor-width) min-w-56 rounded-radius';\n\n\treturn (\n\t\t<SidebarMenu className=\"sidebar-navigation-user--component\">\n\t\t\t<SidebarMenuItem>\n\t\t\t\t{customContent ? (\n\t\t\t\t\t// A replaced body is a plain dropdown, not a command list, so it\n\t\t\t\t\t// keeps the primitive rather than bending ActionMenu around it.\n\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t<DropdownMenuTrigger render={triggerElement} />\n\t\t\t\t\t\t<DropdownMenuContent\n\t\t\t\t\t\t\tclassName={contentClasses}\n\t\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\t\tside={dropdownSide}\n\t\t\t\t\t\t\tsideOffset={4}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{customContent}\n\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) : (\n\t\t\t\t\t<ActionMenu\n\t\t\t\t\t\tactions={actions}\n\t\t\t\t\t\talign=\"end\"\n\t\t\t\t\t\tside={dropdownSide}\n\t\t\t\t\t\tcontentClassName={contentClasses}\n\t\t\t\t\t\twidth=\"w-auto\"\n\t\t\t\t\t\tcloseOnSelect\n\t\t\t\t\t\trenderTrigger={triggerElement}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</SidebarMenuItem>\n\t\t</SidebarMenu>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-Crc9M9JV.js","names":["React","SidebarProvider","SidebarTrigger","SidebarRail","SidebarInset","SidebarInput","SidebarHeader","SidebarFooter","SidebarSeparator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","SidebarMenuButton","SidebarMenuAction","SidebarMenuBadge","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","React","SidebarProviderPrimitive","useSidebarPrimitive","SidebarHeaderPrimitive","SidebarFooterPrimitive","SidebarContentPrimitive","SidebarGroupPrimitive","SidebarGroupContentPrimitive","SidebarGroupActionPrimitive","SidebarInputPrimitive","SidebarSeparatorPrimitive","SidebarMenuPrimitive","SidebarMenuItemPrimitive","SidebarMenuActionPrimitive","SidebarMenuBadgePrimitive","SidebarMenuSubPrimitive","SidebarMenuSubItemPrimitive","SidebarInsetPrimitive","SidebarRailPrimitive","SidebarTriggerPrimitive","SidebarMenuButtonPrimitive","SidebarMenuSubButtonPrimitive","SidebarGroupLabelPrimitive","SheetDescription","SheetTitle","SheetHeader","Sheet","Separator","DisplayLabel","Text","TooltipTrigger","Tooltip","TooltipContent","Button","surfaceDividerRecipes","Skeleton","Input","useIsMobile","navigationRowDensityRecipes","navigationRowInlineClasses","navigationChildInsetClasses","React$1","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider$1","forwardedRef","openProp","setOpenProp","props","viewportMobile","hostRef","containerMobile","setContainerMobile","host","adaptTo","update","observer","isMobile","openMobile","setOpenMobile","_open","_setOpen","defaultOpen","open","setOpen","openState","value","toggleSidebar","handleKeyDown","event","state","contextValue","useRender","style","cn","className","SidebarTrigger$1","onClick","PanelLeftIcon","SidebarRail$1","SidebarInset$1","SidebarInput$1","SidebarHeader$1","SidebarFooter$1","SidebarSeparator$1","SidebarContent$1","SidebarGroup$1","SidebarGroupLabel$1","mergeProps","SidebarGroupAction$1","SidebarGroupContent$1","SidebarMenu$1","SidebarMenuItem$1","sidebarMenuButtonVariants","cva","SidebarMenuButton$1","isDisabled","disabled","comp","isActive","target","preventDisabledSidebarActivation","preventDisabledSidebarKey","tooltip","SidebarMenuAction$1","showOnHover","SidebarMenuBadge$1","SidebarMenuSub$1","SidebarMenuSubItem$1","SidebarMenuSubButton$1","defaultSidebarStrings","sidebarMenuButtonStateClasses","sidebarMenuSubButtonStateClasses","SidebarMenuDensityContext","sidebarMenuDensityRecipes","paddedCollapsedSidebarWidthClass","renderSidebarMenuText","children","renderSidebarTooltipText","normalizeSidebarMenuTooltip","getSidebarMenuButtonHeightClass","size","SidebarProvider","menuDensity","Sidebar","stringsProp","strings","useStrings","collapsible","surfaceClassName","rootClassName","SheetContent","contained","variant","side","SidebarHeader","SidebarFooter","SidebarContent","SidebarGroup","SidebarGroupContent","SidebarGroupAction","SidebarInput","SidebarSeparator","SidebarMenu","inheritedDensity","density","recipe","SidebarMenuItem","SidebarMenuAction","SidebarMenuBadge","content","inline","SidebarMenuSkeleton","resolvedWidth","width","showIcon","SidebarMenuSub","SidebarMenuSubItem","SidebarInset","SidebarRail","SidebarTrigger","SidebarMenuButton","normalizedRender","render","normalizedTooltip","resolvedSize","primitiveSize","active","SidebarMenuSubButton","SidebarGroupLabel","useBaseSidebarContext","useBaseSidebarMenuDensity"],"sources":["../src/components/ui/sidebar.tsx","../src/components/base/sidebar/sidebar.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { PanelLeftIcon } from \"lucide-react\"\nimport * as React from \"react\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Separator } from \"./separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\"\nimport { Skeleton } from \"./skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"./tooltip\"\nimport { MOBILE_BREAKPOINT, useIsMobile } from \"../../hooks/use-mobile\"\nimport { cn } from \"../../lib/utils\"\nimport { navigationRowInlineClasses } from \"../../lib/navigation-row-recipes\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n adaptTo = \"viewport\",\n ref: forwardedRef,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n adaptTo?: \"viewport\" | \"container\"\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const viewportMobile = useIsMobile()\n const hostRef = React.useRef<HTMLDivElement>(null)\n const [containerMobile, setContainerMobile] = React.useState<boolean>()\n React.useEffect(() => {\n const host = hostRef.current\n if (adaptTo !== \"container\" || !host || typeof ResizeObserver === \"undefined\") return\n const update = () => setContainerMobile(host.getBoundingClientRect().width < MOBILE_BREAKPOINT)\n update()\n const observer = new ResizeObserver(update)\n observer.observe(host)\n return () => observer.disconnect()\n }, [adaptTo])\n const isMobile = viewportMobile || (adaptTo === \"container\" && (containerMobile ?? false))\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n const host = useRender({\n defaultTagName: \"div\",\n ref: forwardedRef ? [hostRef, forwardedRef] : hostRef,\n props: {\n ...props,\n \"data-slot\": \"sidebar-wrapper\",\n \"data-mobile\": isMobile,\n style: {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties,\n className: cn(\"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\", className),\n children,\n },\n })\n return <SidebarContext.Provider value={contextValue}>{host}</SidebarContext.Provider>\n\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n dir,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n dir={dir}\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"transition-[width] duration-200 ease-linear relative w-(--sidebar-width) bg-transparent\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-shell-sidebar-icon-padded\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n data-side={side}\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-space-md group-data-[collapsible=icon]:w-shell-sidebar-icon-padded\"\n : \"border-border group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 flex size-full flex-col\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className={cn(className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background md:peer-data-[variant=inset]:m-space-md md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-space-md relative flex w-full flex-1 flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-space-md w-auto\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"gap-space-md flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\n \"relative flex w-full min-w-0 flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & React.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 flex shrink-0 items-center outline-hidden [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-label\",\n sidebar: \"group-label\",\n },\n })\n}\n\nfunction SidebarGroupAction({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"button\"> & React.ComponentProps<\"button\">) {\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"box-border border-0 bg-transparent font-sans text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-inner p-0 focus-visible:ring-2 [&>svg]:size-4 flex aspect-square items-center justify-center outline-hidden transition-transform [&>svg]:shrink-0 after:absolute after:-inset-2 md:after:hidden group-data-[collapsible=icon]:hidden\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-action\",\n sidebar: \"group-action\",\n },\n })\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"text-sm w-full\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"m-0 p-0 list-none flex w-full min-w-0 flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n cn(\"box-border border-0 bg-transparent py-0 font-sans no-underline ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground text-left transition-[width,height,padding] group-data-[collapsible=icon]:size-action! focus-visible:ring-2 data-active:font-medium peer/menu-button flex w-full items-center overflow-hidden outline-hidden group/menu-button disabled:opacity-50 aria-disabled:opacity-50 [&>span:last-child]:truncate [&_svg]:size-4 [&_svg]:shrink-0\", navigationRowInlineClasses),\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline: \"bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground ring-1 ring-sidebar-border hover:ring-sidebar-accent\",\n },\n size: {\n default: \"h-action\",\n sm: \"h-action-sm\",\n lg: \"h-action-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n render,\n disabled = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: useRender.ComponentProps<\"button\"> &\n React.ComponentProps<\"button\"> & {\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>) {\n const { isMobile, state } = useSidebar()\n const isDisabled = disabled || props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\"\n\n const comp = useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-button\",\n sidebar: \"menu-button\",\n size,\n active: isActive,\n },\n })\n\n // Tooltip.Trigger's disabled prop disables the tooltip, not its DOM target.\n // Own the target state after render composition so a render element cannot\n // re-enable the row; links retain their native role and destination.\n const target = isDisabled ? React.cloneElement(comp as React.ReactElement<React.HTMLAttributes<HTMLElement> & { disabled?: boolean }>, {\n disabled: comp.type === \"a\" ? undefined : true,\n \"aria-disabled\": true,\n tabIndex: -1,\n onClickCapture: preventDisabledSidebarActivation,\n onClick: preventDisabledSidebarActivation,\n onPointerDownCapture: preventDisabledSidebarActivation,\n onKeyDownCapture: preventDisabledSidebarKey,\n onKeyUpCapture: preventDisabledSidebarKey,\n }) : comp\n\n if (!tooltip) {\n return target\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip disabled={isDisabled || state !== \"collapsed\" || isMobile}>\n <TooltipTrigger disabled={isDisabled} render={target} />\n <TooltipContent\n side=\"right\"\n align=\"center\"\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction preventDisabledSidebarActivation(event: React.SyntheticEvent) {\n event.preventDefault()\n event.stopPropagation()\n}\n\nfunction preventDisabledSidebarKey(event: React.KeyboardEvent) {\n if (event.key === \"Enter\" || event.key === \" \") preventDisabledSidebarActivation(event)\n}\n\nfunction SidebarMenuAction({\n className,\n render,\n showOnHover = false,\n ...props\n}: useRender.ComponentProps<\"button\"> &\n React.ComponentProps<\"button\"> & {\n showOnHover?: boolean\n }) {\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"box-border border-0 bg-transparent font-sans text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-inner p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4 flex items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&_svg]:shrink-0\",\n showOnHover &&\n \"peer-data-active/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-open:opacity-100 md:opacity-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-action\",\n sidebar: \"menu-action\",\n },\n })\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-md px-space-xs text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 flex items-center justify-center tabular-nums select-none group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const [width] = React.useState(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n })\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"h-action flex items-center\", navigationRowInlineClasses, className)}\n {...props}\n >\n {!!showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\"m-0 p-0 list-none border-sidebar-border mx-space-lg translate-x-px gap-space-xs border-l px-row-x py-row-y group-data-[collapsible=icon]:hidden flex min-w-0 flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n render,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: useRender.ComponentProps<\"a\"> &\n React.ComponentProps<\"a\"> & {\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-action-xs focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4 flex -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0\",\n navigationRowInlineClasses,\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-sub-button\",\n sidebar: \"menu-sub-button\",\n size,\n active: isActive,\n },\n })\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","/**\n * base/sidebar — tokenized wrapper around the shadcn `Sidebar` compound component.\n *\n * The shadcn source stays untouched. This layer applies the package shell,\n * density, spacing, typography, focus, and stable DOM-hook contracts while\n * preserving every compound part and polymorphic `render` seam.\n */\nimport * as React from 'react';\n\nimport {\n\tSidebarContent as SidebarContentPrimitive,\n\tSidebarFooter as SidebarFooterPrimitive,\n\tSidebarGroup as SidebarGroupPrimitive,\n\tSidebarGroupAction as SidebarGroupActionPrimitive,\n\tSidebarGroupContent as SidebarGroupContentPrimitive,\n\tSidebarGroupLabel as SidebarGroupLabelPrimitive,\n\tSidebarHeader as SidebarHeaderPrimitive,\n\tSidebarInput as SidebarInputPrimitive,\n\tSidebarInset as SidebarInsetPrimitive,\n\tSidebarMenu as SidebarMenuPrimitive,\n\tSidebarMenuAction as SidebarMenuActionPrimitive,\n\tSidebarMenuBadge as SidebarMenuBadgePrimitive,\n\tSidebarMenuButton as SidebarMenuButtonPrimitive,\n\tSidebarMenuItem as SidebarMenuItemPrimitive,\n\tSidebarMenuSub as SidebarMenuSubPrimitive,\n\tSidebarMenuSubButton as SidebarMenuSubButtonPrimitive,\n\tSidebarMenuSubItem as SidebarMenuSubItemPrimitive,\n\tSidebarProvider as SidebarProviderPrimitive,\n\tSidebarRail as SidebarRailPrimitive,\n\tSidebarSeparator as SidebarSeparatorPrimitive,\n\tSidebarTrigger as SidebarTriggerPrimitive,\n\tuseSidebar as useSidebarPrimitive,\n} from '../../ui/sidebar';\nimport {\n\tSheet,\n\tSheetContent,\n\tSheetDescription,\n\tSheetHeader,\n\tSheetTitle,\n} from '../sheet/sheet';\nimport { Skeleton } from '../skeleton';\nimport { DisplayLabel, Text } from '../../typography';\nimport type { ComponentScale } from '../../../lib/component-vocabulary';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport { navigationChildInsetClasses, navigationRowDensityRecipes, navigationRowInlineClasses } from '../../../lib/navigation-row-recipes';\n\nexport interface SidebarStrings {\n\tmobileTitle: string;\n\tmobileDescription: string;\n}\n\nexport const defaultSidebarStrings: SidebarStrings = {\n\tmobileTitle: 'Sidebar',\n\tmobileDescription: 'Displays the mobile sidebar.',\n};\n\nexport interface SidebarProps extends React.ComponentProps<'div'> {\n\t/** Edge where the desktop rail and mobile sheet are anchored. */\n\tside?: 'left' | 'right';\n\t/** Surface treatment and inset behavior for the desktop shell. */\n\tvariant?: 'sidebar' | 'floating' | 'inset';\n\t/** Desktop collapse mode. `none` renders a permanently expanded panel. */\n\tcollapsible?: 'offcanvas' | 'icon' | 'none';\n\t/** Keeps the desktop sidebar in its parent layout instead of fixing it to the viewport. */\n\tcontained?: boolean;\n\t/** Classes for the visible sidebar surface, separate from the positioning container. */\n\tsurfaceClassName?: string;\n\t/** Classes for the responsive positioning root. */\n\trootClassName?: string;\n\t/** Copy for the visually hidden mobile sheet title and description. */\n\tstrings?: StringsProp<SidebarStrings>;\n}\ntype SidebarContentProps = React.ComponentProps<typeof SidebarContentPrimitive>;\ntype SidebarFooterProps = React.ComponentProps<typeof SidebarFooterPrimitive>;\ntype SidebarGroupProps = React.ComponentProps<typeof SidebarGroupPrimitive>;\ntype SidebarGroupActionProps = React.ComponentProps<typeof SidebarGroupActionPrimitive>;\ntype SidebarGroupContentProps = React.ComponentProps<typeof SidebarGroupContentPrimitive>;\ntype SidebarGroupLabelProps = React.ComponentProps<typeof SidebarGroupLabelPrimitive>;\ntype SidebarHeaderProps = React.ComponentProps<typeof SidebarHeaderPrimitive>;\nexport interface SidebarInputProps extends React.ComponentProps<typeof SidebarInputPrimitive> {\n\t/** Accessible name when no visible label is associated with the navigation search. */\n\t'aria-label'?: string;\n\t/** Search or filter hint. */\n\tplaceholder?: string;\n\t/** Controlled input value. */\n\tvalue?: React.InputHTMLAttributes<HTMLInputElement>['value'];\n\t/** Disables the navigation input. */\n\tdisabled?: boolean;\n\t/** Native input change callback. */\n\tonChange?: React.ChangeEventHandler<HTMLInputElement>;\n\t/** Additional classes merged with the tokenized control defaults. */\n\tclassName?: string;\n}\ntype SidebarInsetProps = React.ComponentProps<typeof SidebarInsetPrimitive>;\nexport type SidebarMenuDensity = 'compact' | 'default' | 'comfortable';\n\nexport interface SidebarMenuProps extends React.ComponentProps<typeof SidebarMenuPrimitive> {\n\t/** Row and child-list rhythm. Inherits the nearest sidebar menu/provider. */\n\tmenuDensity?: SidebarMenuDensity;\n}\ntype SidebarMenuActionProps = React.ComponentProps<typeof SidebarMenuActionPrimitive>;\nexport interface SidebarMenuBadgeProps extends React.ComponentProps<typeof SidebarMenuBadgePrimitive> {\n\t/** Render in normal flow, for example inside a nested menu button. */\n\tinline?: boolean;\n\t/** Count-bubble size. @default \"md\" */\n\tsize?: ComponentScale;\n}\nexport interface SidebarMenuButtonProps extends Omit<React.ComponentProps<typeof SidebarMenuButtonPrimitive>, 'size' | 'isActive'> {\n\t/** Explicit row scale. Otherwise follows menuDensity, or md in an unconfigured base menu. */\n\tsize?: ComponentScale;\n\t/** Marks the navigation item as current. */\n\tactive?: boolean;\n}\ntype SidebarMenuItemProps = React.ComponentProps<typeof SidebarMenuItemPrimitive>;\nexport interface SidebarMenuSkeletonProps extends React.ComponentProps<'div'> {\n\t/** Show the leading icon placeholder. */\n\tshowIcon?: boolean;\n\t/** Deterministic text-bar width. @default \"72%\" */\n\twidth?: string;\n}\ntype SidebarMenuSubProps = React.ComponentProps<typeof SidebarMenuSubPrimitive>;\nexport interface SidebarMenuSubButtonProps extends Omit<React.ComponentProps<typeof SidebarMenuSubButtonPrimitive>, 'isActive'> {\n\t/** Marks the nested navigation item as current. */\n\tactive?: boolean;\n}\ntype SidebarMenuSubItemProps = React.ComponentProps<typeof SidebarMenuSubItemPrimitive>;\nexport interface SidebarProviderProps extends React.ComponentProps<'div'> {\n\t/** Use the provider width for drawers in embedded workspaces; viewport remains the default. */\n\tadaptTo?: 'viewport' | 'container';\n\t/** Initial expanded state for uncontrolled sidebars. @default true */\n\tdefaultOpen?: boolean;\n\t/** Controlled expanded state. */\n\topen?: boolean;\n\t/** Controlled state callback. */\n\tonOpenChange?: (open: boolean) => void;\n\t/** Default menu rhythm; individual menus may override it. */\n\tmenuDensity?: SidebarMenuDensity;\n\t/** Sidebar shell contents. */\n\tchildren?: React.ReactNode;\n\t/** Scoped shell token overrides and other root styles. */\n\tstyle?: React.CSSProperties;\n\t/** Additional classes merged with the provider root. */\n\tclassName?: string;\n}\ntype SidebarRailProps = React.ComponentProps<typeof SidebarRailPrimitive>;\ntype SidebarSeparatorProps = React.ComponentProps<typeof SidebarSeparatorPrimitive>;\ntype SidebarTriggerProps = React.ComponentProps<typeof SidebarTriggerPrimitive>;\n\nconst sidebarMenuButtonStateClasses =\n\t'font-medium text-sidebar-foreground transition-[background-color,color] hover:bg-sidebar-accent hover:text-sidebar-foreground focus-visible:ring-2 focus-visible:ring-sidebar-ring data-active:bg-sidebar-accent data-active:text-sidebar-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-foreground';\n\nconst sidebarMenuSubButtonStateClasses =\n\t'font-medium text-sidebar-foreground/80 transition-[background-color,color] hover:bg-transparent hover:text-sidebar-foreground focus-visible:ring-2 focus-visible:ring-sidebar-ring data-active:bg-transparent data-active:text-primary-accent data-[active=true]:bg-transparent data-[active=true]:text-primary-accent';\n\n// One token-backed recipe covers both composed navigation and raw menu anatomy.\n// No density configured preserves the raw menu button's established md scale.\nconst SidebarMenuDensityContext = React.createContext<SidebarMenuDensity | undefined>(undefined);\nconst sidebarMenuDensityRecipes = navigationRowDensityRecipes;\n\nconst paddedCollapsedSidebarWidthClass =\n\t'group-data-[collapsible=icon]:w-shell-sidebar-icon-padded';\n\nfunction renderSidebarMenuText(children: React.ReactNode) {\n\tif (typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint') {\n\t\treturn (\n\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t);\n\t}\n\treturn children;\n}\n\nfunction renderSidebarTooltipText(children: React.ReactNode) {\n\tif (typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint') {\n\t\treturn (\n\t\t\t<Text\n\t\t\t\ttag=\"span\"\n\t\t\t\tsize=\"inherit\"\n\t\t\t\tlineHeight=\"snug\"\n\t\t\t\tclassName=\"sidebar-menu-button--tooltip-text text-inherit\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t);\n\t}\n\treturn children;\n}\n\nfunction normalizeSidebarMenuTooltip(tooltip: SidebarMenuButtonProps['tooltip']) {\n\tif (!tooltip) return tooltip;\n\n\tif (typeof tooltip === 'string') {\n\t\treturn { children: renderSidebarTooltipText(tooltip) };\n\t}\n\n\treturn {\n\t\t...tooltip,\n\t\tchildren: renderSidebarTooltipText(tooltip.children),\n\t};\n}\n\nfunction getSidebarMenuButtonHeightClass(size: SidebarMenuButtonProps['size']) {\n\tif (size === 'sm') {\n\t\treturn 'h-action-sm group-data-[collapsible=icon]:size-action-sm!';\n\t}\n\tif (size === 'lg') {\n\t\treturn 'h-action-lg group-data-[collapsible=icon]:size-action-lg!';\n\t}\n\treturn 'h-action group-data-[collapsible=icon]:size-action!';\n}\n\nfunction SidebarProvider({ className, style, menuDensity, ...props }: SidebarProviderProps) {\n\treturn (\n\t\t<SidebarMenuDensityContext.Provider value={menuDensity}>\n\t\t\t<SidebarProviderPrimitive\n\t\t\t\tclassName={cn('sidebar-provider--component shell-sidebar-vars', className)}\n\t\t\t\tstyle={{\n\t\t\t\t\t'--sidebar-width': 'var(--shell-sidebar-width)',\n\t\t\t\t\t'--sidebar-width-icon': 'calc(3.75rem * var(--density-scale))',\n\t\t\t\t\t...style,\n\t\t\t\t} as React.CSSProperties}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</SidebarMenuDensityContext.Provider>\n\t);\n}\n\n/** Tokenized responsive sidebar shell with contained and viewport-fixed modes. */\nfunction Sidebar({\n\tside = 'left',\n\tvariant = 'sidebar',\n\tcollapsible = 'offcanvas',\n\tcontained = false,\n\tclassName,\n\tsurfaceClassName,\n\trootClassName,\n\tchildren,\n\tdir,\n\tstrings: stringsProp,\n\t...props\n}: SidebarProps) {\n\tconst { isMobile, state, openMobile, setOpenMobile } = useSidebarPrimitive();\n\tconst strings = useStrings(defaultSidebarStrings, stringsProp);\n\n\tif (collapsible === 'none') {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-slot=\"sidebar\"\n\t\t\t\tdir={dir}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'sidebar--component shell-sidebar-vars flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground',\n\t\t\t\t\tsurfaceClassName,\n\t\t\t\t\trootClassName,\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{children}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (isMobile) {\n\t\treturn (\n\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile}>\n\t\t\t\t<SheetContent\n\t\t\t\t\tdir={dir}\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tdata-slot=\"sidebar\"\n\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t// Side-qualified so the drawer width replaces the sheet's own 3/4 default.\n\t\t\t\t\t\t'sidebar--component shell-sidebar-vars data-[side=left]:w-(--sidebar-width) data-[side=right]:w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden',\n\t\t\t\t\t\tsurfaceClassName,\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\trootClassName,\n\t\t\t\t\t)}\n\t\t\t\t\tstyle={{ '--sidebar-width': 'min(20rem, calc(100vw - 2rem))' } as React.CSSProperties}\n\t\t\t\t\tside={side}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t<SheetTitle>{strings.mobileTitle}</SheetTitle>\n\t\t\t\t\t\t<SheetDescription>{strings.mobileDescription}</SheetDescription>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t<div className=\"sidebar--surface flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t</SheetContent>\n\t\t\t</Sheet>\n\t\t);\n\t}\n\n\tif (contained) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'sidebar--component shell-sidebar-vars group peer sticky top-0 hidden h-full w-(--sidebar-width) shrink-0 text-sidebar-foreground transition-[width] duration-200 ease-linear md:block',\n\t\t\t\t\t'data-[collapsible=offcanvas]:w-0',\n\t\t\t\t\tvariant === 'floating' || variant === 'inset'\n\t\t\t\t\t\t? 'data-[collapsible=icon]:w-shell-sidebar-icon-padded'\n\t\t\t\t\t\t: 'data-[collapsible=icon]:w-(--sidebar-width-icon)',\n\t\t\t\t\trootClassName,\n\t\t\t\t)}\n\t\t\t\tdata-state={state}\n\t\t\t\tdata-collapsible={state === 'collapsed' ? collapsible : ''}\n\t\t\t\tdata-variant={variant}\n\t\t\t\tdata-side={side}\n\t\t\t\tdata-slot=\"sidebar\"\n\t\t\t\tdir={dir}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'absolute inset-y-0 z-10 hidden h-full w-(--sidebar-width) transition-[transform,width] duration-200 ease-linear md:flex',\n\t\t\t\t\t\tside === 'left'\n\t\t\t\t\t\t\t? 'left-0 group-data-[collapsible=offcanvas]:-translate-x-full'\n\t\t\t\t\t\t\t: 'right-0 group-data-[collapsible=offcanvas]:translate-x-full',\n\t\t\t\t\t\tvariant === 'floating' || variant === 'inset'\n\t\t\t\t\t\t\t? cn('px-space-md py-space-lg', paddedCollapsedSidebarWidthClass)\n\t\t\t\t\t\t\t: 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\t\tdata-slot=\"sidebar-inner\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'sidebar--surface flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-radius group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border',\n\t\t\t\t\t\t\tsurfaceClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('sidebar--component shell-sidebar-vars group peer hidden text-sidebar-foreground md:block', rootClassName)}\n\t\t\tdata-state={state}\n\t\t\tdata-collapsible={state === 'collapsed' ? collapsible : ''}\n\t\t\tdata-variant={variant}\n\t\t\tdata-side={side}\n\t\t\tdata-slot=\"sidebar\"\n\t\t\tdir={dir}\n\t\t>\n\t\t\t<div\n\t\t\t\tdata-slot=\"sidebar-gap\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n\t\t\t\t\t'group-data-[collapsible=offcanvas]:w-0',\n\t\t\t\t\t'group-data-[side=right]:rotate-180',\n\t\t\t\t\tvariant === 'floating' || variant === 'inset'\n\t\t\t\t\t\t? paddedCollapsedSidebarWidthClass\n\t\t\t\t\t\t: 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tdata-slot=\"sidebar-container\"\n\t\t\t\tdata-side={side}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex',\n\t\t\t\t\tvariant === 'floating' || variant === 'inset'\n\t\t\t\t\t\t? cn('p-space-md', paddedCollapsedSidebarWidthClass)\n\t\t\t\t\t\t: 'border-border group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\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<div\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tdata-slot=\"sidebar-inner\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'sidebar--surface flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-radius group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border',\n\t\t\t\t\t\tsurfaceClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction SidebarHeader({ className, ...props }: SidebarHeaderProps) {\n\treturn <SidebarHeaderPrimitive className={cn('sidebar-header--component gap-space-sm px-surface-xs pt-surface-xs', className)} {...props} />;\n}\n\nfunction SidebarFooter({ className, ...props }: SidebarFooterProps) {\n\treturn <SidebarFooterPrimitive className={cn('sidebar-footer--component gap-space-sm p-surface-xs', surfaceDividerRecipes.sidebar.footer, className)} {...props} />;\n}\n\nfunction SidebarContent({ className, ...props }: SidebarContentProps) {\n\treturn <SidebarContentPrimitive className={cn('sidebar-content--component min-w-0 gap-space-sm overflow-x-hidden', className)} {...props} />;\n}\n\nfunction SidebarGroup({ className, ...props }: SidebarGroupProps) {\n\treturn <SidebarGroupPrimitive className={cn('sidebar-group--component px-surface-xs py-space-2xs', className)} {...props} />;\n}\n\nfunction SidebarGroupContent({ className, ...props }: SidebarGroupContentProps) {\n\treturn <SidebarGroupContentPrimitive className={cn('sidebar-group-content--component', className)} {...props} />;\n}\n\nfunction SidebarGroupAction({ className, ...props }: SidebarGroupActionProps) {\n\treturn <SidebarGroupActionPrimitive className={cn('sidebar-group-action--component top-space-xs size-action-xs', className)} {...props} />;\n}\n\nfunction SidebarInput({ className, ...props }: SidebarInputProps) {\n\treturn <SidebarInputPrimitive className={cn('sidebar-input--component h-control-sm px-control-sm text-pxs', className)} {...props} />;\n}\n\nfunction SidebarSeparator({ className, ...props }: SidebarSeparatorProps) {\n\treturn <SidebarSeparatorPrimitive className={cn('sidebar-separator--component mx-space-lg', className)} {...props} />;\n}\n\nfunction SidebarMenu({ className, menuDensity, ...props }: SidebarMenuProps) {\n\tconst inheritedDensity = React.useContext(SidebarMenuDensityContext);\n\tconst density = menuDensity ?? inheritedDensity;\n\tconst recipe = sidebarMenuDensityRecipes[density ?? 'default'];\n\treturn (\n\t\t<SidebarMenuDensityContext.Provider value={density}>\n\t\t\t<SidebarMenuPrimitive className={cn('sidebar-menu--component', recipe.gap, className)} {...props} />\n\t\t</SidebarMenuDensityContext.Provider>\n\t);\n}\n\nfunction SidebarMenuItem({ className, ...props }: SidebarMenuItemProps) {\n\treturn <SidebarMenuItemPrimitive className={cn('sidebar-menu-item--component', className)} {...props} />;\n}\n\nfunction SidebarMenuAction({ className, ...props }: SidebarMenuActionProps) {\n\tconst density = React.useContext(SidebarMenuDensityContext) ?? 'default';\n\treturn <SidebarMenuActionPrimitive className={cn(\n\t\t'sidebar-menu-action--component size-action-xs right-auto end-space-2xs! top-action-center! -translate-y-1/2 peer-data-[size=sm]/menu-button:top-action-sm-center! peer-data-[size=lg]/menu-button:top-action-lg-center!',\n\t\tdensity === 'comfortable'\n\t\t\t? 'peer-data-[sidebar=menu-sub-button]/menu-sub-button:top-action-sm-center!'\n\t\t\t: 'peer-data-[sidebar=menu-sub-button]/menu-sub-button:top-action-xs-center!',\n\t\tclassName,\n\t)} {...props} />;\n}\n\n\nfunction SidebarMenuBadge({ className, inline = false, size = 'md', children, ...props }: SidebarMenuBadgeProps) {\n\tconst content = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint'\n\t\t? (\n\t\t\t<Text tag=\"span\" size=\"xxs\" weight=\"semibold\" lineHeight=\"none\" className=\"text-inherit tabular-nums\">\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t)\n\t\t: children;\n\n\treturn (\n\t\t<SidebarMenuBadgePrimitive\n\t\t\tclassName={cn(\n\t\t\t\t'sidebar-menu-badge--component shrink-0 text-sidebar-foreground',\n\t\t\t\tsize === 'sm' ? 'h-4 min-w-4' : size === 'lg' ? 'h-6 min-w-6' : 'h-5 min-w-5',\n\t\t\t\tinline\n\t\t\t\t\t? 'static ms-auto translate-y-0'\n\t\t\t\t\t: 'top-action-center! -translate-y-1/2 peer-data-[size=sm]/menu-button:top-action-sm-center! peer-data-[size=lg]/menu-button:top-action-lg-center!',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{content}\n\t\t</SidebarMenuBadgePrimitive>\n\t);\n}\n\n\nfunction SidebarMenuSkeleton({ className, showIcon = false, style, width, ...props }: SidebarMenuSkeletonProps) {\n\tconst resolvedWidth = width ?? '72%';\n\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"sidebar-menu-skeleton\"\n\t\t\tdata-sidebar=\"menu-skeleton\"\n\t\t\tclassName={cn(\n\t\t\t\t'sidebar-menu-skeleton--component flex h-action items-center gap-space-md rounded-inner px-control-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tstyle={style}\n\t\t\t{...props}\n\t\t>\n\t\t\t{showIcon ? (\n\t\t\t\t<Skeleton\n\t\t\t\t\tclassName=\"size-icon rounded-radius-sm\"\n\t\t\t\t\tdata-sidebar=\"menu-skeleton-icon\"\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t<Skeleton\n\t\t\t\tclassName=\"h-icon-sm flex-1\"\n\t\t\t\tdata-sidebar=\"menu-skeleton-text\"\n\t\t\t\tstyle={{ maxWidth: resolvedWidth }}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction SidebarMenuSub({ className, ...props }: SidebarMenuSubProps) {\n\tconst density = React.useContext(SidebarMenuDensityContext) ?? 'default';\n\treturn <SidebarMenuSubPrimitive className={cn('sidebar-menu-sub--component border-l-0 border-s! border-sidebar-border', navigationChildInsetClasses, sidebarMenuDensityRecipes[density].childGap, className)} {...props} />;\n}\n\nfunction SidebarMenuSubItem({ className, ...props }: SidebarMenuSubItemProps) {\n\treturn <SidebarMenuSubItemPrimitive className={cn('sidebar-menu-sub-item--component', className)} {...props} />;\n}\n\nfunction SidebarInset({ className, ...props }: SidebarInsetProps) {\n\treturn <SidebarInsetPrimitive className={cn('sidebar-inset--component', className)} {...props} />;\n}\n\nfunction SidebarRail({ className, ...props }: SidebarRailProps) {\n\treturn <SidebarRailPrimitive className={cn('sidebar-rail--component', className)} {...props} />;\n}\n\nfunction SidebarTrigger({ className, ...props }: SidebarTriggerProps) {\n\treturn <SidebarTriggerPrimitive className={cn('sidebar-trigger--component size-action-sm active:translate-y-0!', className)} {...props} />;\n}\n\nfunction SidebarMenuButton({\n\tclassName,\n\trender,\n\tsize,\n\ttooltip,\n\tchildren,\n\tactive = false,\n\t...props\n}: SidebarMenuButtonProps) {\n\tconst normalizedRender = tooltip && !render\n\t\t? <button type=\"button\" />\n\t\t: render;\n\tconst normalizedTooltip = normalizeSidebarMenuTooltip(tooltip);\n\tconst density = React.useContext(SidebarMenuDensityContext);\n\tconst resolvedSize = size ?? (density ? sidebarMenuDensityRecipes[density].size : 'md');\n\tconst primitiveSize = resolvedSize === 'md' ? 'default' : resolvedSize;\n\n\treturn (\n\t\t<SidebarMenuButtonPrimitive\n\t\t\tclassName={cn(\n\t\t\t\t'sidebar-menu-button--component group-data-[collapsible=icon]:size-action-sm! group-data-[collapsible=icon]:p-space-sm!',\n\t\t\t\tnavigationRowInlineClasses,\n\t\t\t\t// Reserve the trailing action (action-xs) plus the control inset. Written\n\t\t\t\t// from the root knobs: the derived --spacing-* aliases are fixed at :root,\n\t\t\t\t// so a scoped density would otherwise resolve with the root scale.\n\t\t\t\t'group-has-data-[sidebar=menu-action]/menu-item:px-control-sm! group-has-[>[data-sidebar=menu-action]]/menu-item:pe-[calc(var(--height-action)*7/9*var(--density-scale)+var(--control-x)*var(--space-scale))]!',\n\t\t\t\tgetSidebarMenuButtonHeightClass(resolvedSize),\n\t\t\t\tsidebarMenuButtonStateClasses,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\trender={normalizedRender}\n\t\t\tsize={primitiveSize}\n\t\t\ttooltip={normalizedTooltip}\n\t\t\tisActive={active}\n\t\t\t{...props}\n\t\t>\n\t\t\t{renderSidebarMenuText(children)}\n\t\t</SidebarMenuButtonPrimitive>\n\t);\n}\n\nfunction SidebarMenuSubButton({\n\tclassName,\n\tchildren,\n\tactive = false,\n\t...props\n}: SidebarMenuSubButtonProps) {\n\tconst density = React.useContext(SidebarMenuDensityContext) ?? 'default';\n\treturn (\n\t\t<SidebarMenuSubButtonPrimitive\n\t\t\tclassName={cn(\n\t\t\t\t'sidebar-menu-sub-button--component peer/menu-sub-button translate-x-0 group-has-[>[data-sidebar=menu-action]]/menu-sub-item:pe-[calc(var(--height-action)*7/9*var(--density-scale)+var(--control-x)*var(--space-scale))]!',\n\t\t\t\tnavigationRowInlineClasses,\n\t\t\t\tsidebarMenuDensityRecipes[density].childHeight,\n\t\t\t\tsidebarMenuSubButtonStateClasses,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tisActive={active}\n\t\t\t{...props}\n\t\t>\n\t\t\t{renderSidebarMenuText(children)}\n\t\t</SidebarMenuSubButtonPrimitive>\n\t);\n}\n\nfunction SidebarGroupLabel({\n\tclassName,\n\tchildren,\n\t...props\n}: SidebarGroupLabelProps) {\n\tconst content =\n\t\ttypeof children === 'string' || typeof children === 'number' || typeof children === 'bigint'\n\t\t\t? <DisplayLabel>{children}</DisplayLabel>\n\t\t\t: children;\n\n\treturn (\n\t\t<SidebarGroupLabelPrimitive\n\t\t\tclassName={cn('sidebar-group-label--component h-action-sm px-control-sm group-data-[collapsible=icon]:pointer-events-none', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{content}\n\t\t</SidebarGroupLabelPrimitive>\n\t);\n}\n\nexport {\n\tSidebar,\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarGroupAction,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarHeader,\n\tSidebarInput,\n\tSidebarInset,\n\tSidebarMenu,\n\tSidebarMenuAction,\n\tSidebarMenuBadge,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n\tSidebarMenuSkeleton,\n\tSidebarMenuSub,\n\tSidebarMenuSubButton,\n\tSidebarMenuSubItem,\n\tSidebarProvider,\n\tSidebarRail,\n\tSidebarSeparator,\n\tSidebarTrigger,\n};\n\n/** Internal bridge for the layout layer; not part of the base package entrypoint. */\nexport const useBaseSidebarContext = useSidebarPrimitive;\n\n/** Internal density bridge for composed navigation; not a base entrypoint export. */\nexport function useBaseSidebarMenuDensity() {\n\treturn React.useContext(SidebarMenuDensityContext);\n}\n"],"mappings":"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"}
|