themelia-react-ui 2.0.3 → 2.0.4
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 +50 -0
- package/README.md +65 -28
- package/dist/{accordion-Cjb6sx0G.js → accordion-96o0pN62.js} +5 -5
- package/dist/{accordion-Cjb6sx0G.js.map → accordion-96o0pN62.js.map} +1 -1
- package/dist/action-menu-CHgs8vmj.js +281 -0
- package/dist/action-menu-CHgs8vmj.js.map +1 -0
- package/dist/{affordance-geometry.generated-tF36bREk.js → affordance-geometry.generated-B8yGOr8-.js} +7 -1
- package/dist/affordance-geometry.generated-B8yGOr8-.js.map +1 -0
- package/dist/{ai-artifact-DvTwDVyL.js → ai-artifact-BZUGwBq6.js} +277 -276
- package/dist/ai-artifact-BZUGwBq6.js.map +1 -0
- package/dist/{app-shell-C4FhvCqF.js → app-shell-D63ATkIK.js} +84 -83
- package/dist/app-shell-D63ATkIK.js.map +1 -0
- package/dist/{attachment-BxDfL2mw.js → attachment-DkoqHPPl.js} +7 -7
- package/dist/{attachment-BxDfL2mw.js.map → attachment-DkoqHPPl.js.map} +1 -1
- package/dist/{auth-BGua8ouh.js → auth-D2FVZ1MH.js} +10 -10
- package/dist/{auth-BGua8ouh.js.map → auth-D2FVZ1MH.js.map} +1 -1
- package/dist/{avatar-DAPlDvhJ.js → avatar-DWO_HHhB.js} +5 -5
- package/dist/{avatar-DAPlDvhJ.js.map → avatar-DWO_HHhB.js.map} +1 -1
- package/dist/{badge-HpFqoqSY.js → badge-DErMA7ul.js} +4 -4
- package/dist/{badge-HpFqoqSY.js.map → badge-DErMA7ul.js.map} +1 -1
- 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 +1 -1
- package/dist/base/buttons.js +1 -1
- package/dist/base/cards.js +2 -2
- package/dist/base/carousel.js +3 -3
- package/dist/base/cascader.js +13 -13
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +6 -6
- package/dist/base/feedback.js +3 -3
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +3 -3
- package/dist/base/inline-edit.js +10 -10
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +1 -1
- package/dist/base/metadata-list.js +1 -1
- package/dist/base/navigation.js +6 -6
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +1 -1
- package/dist/base/repeaters.js +9 -9
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/signature-pad.js +6 -6
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +4 -4
- 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 +3 -3
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-DnUJ21NQ.js → batch-action-bar-CdfIkCsV.js} +4 -4
- package/dist/{batch-action-bar-DnUJ21NQ.js.map → batch-action-bar-CdfIkCsV.js.map} +1 -1
- package/dist/blocks/admin.js +20 -20
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +15 -15
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +17 -17
- 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 +570 -567
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +2 -2
- package/dist/blocks/onboarding.js +5 -5
- package/dist/blocks/planning.js +11 -11
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-C-oqs1sQ.js → breadcrumbs-B-WFKecD.js} +4 -4
- package/dist/{breadcrumbs-C-oqs1sQ.js.map → breadcrumbs-B-WFKecD.js.map} +1 -1
- package/dist/{button-DVzspB_G.js → button-DkmK-z8E.js} +2 -2
- package/dist/{button-DVzspB_G.js.map → button-DkmK-z8E.js.map} +1 -1
- package/dist/{buttons-DPZekJFu.js → buttons-BbfzgczK.js} +8 -8
- package/dist/{buttons-DPZekJFu.js.map → buttons-BbfzgczK.js.map} +1 -1
- package/dist/{cards-BaBZR-AU.js → cards-4JTWqvVe.js} +10 -10
- package/dist/cards-4JTWqvVe.js.map +1 -0
- package/dist/{chart-ZOYyK2xG.js → chart-C19flDQb.js} +4 -4
- package/dist/{chart-ZOYyK2xG.js.map → chart-C19flDQb.js.map} +1 -1
- package/dist/{checkbox-AWIhNhmo.js → checkbox-CzYUTPeJ.js} +9 -5
- package/dist/checkbox-CzYUTPeJ.js.map +1 -0
- package/dist/{choice-inputs-CNHvARCJ.js → choice-inputs-JLtij2y4.js} +182 -176
- package/dist/choice-inputs-JLtij2y4.js.map +1 -0
- package/dist/{code-block-DeneBJR_.js → code-block-CGNaUtAE.js} +7 -7
- package/dist/{code-block-DeneBJR_.js.map → code-block-CGNaUtAE.js.map} +1 -1
- package/dist/{collapsible-C-_l4hpy.js → collapsible-Do4G0zcC.js} +3 -3
- package/dist/{collapsible-C-_l4hpy.js.map → collapsible-Do4G0zcC.js.map} +1 -1
- package/dist/{collection-content-By56pLog.js → collection-content-C0e8SsTm.js} +3 -3
- package/dist/{collection-content-By56pLog.js.map → collection-content-C0e8SsTm.js.map} +1 -1
- package/dist/{combobox-Dxo2fAYQ.js → combobox-CBJDs6w_.js} +12 -12
- package/dist/{combobox-Dxo2fAYQ.js.map → combobox-CBJDs6w_.js.map} +1 -1
- package/dist/{combobox-DaHESuiL.js → combobox-hbhSS18O.js} +7 -7
- package/dist/{combobox-DaHESuiL.js.map → combobox-hbhSS18O.js.map} +1 -1
- package/dist/{command-C25VMRII.js → command-D8NrBj-b.js} +7 -7
- package/dist/{command-C25VMRII.js.map → command-D8NrBj-b.js.map} +1 -1
- package/dist/{comments-DD0DUPwJ.js → comments-Di4w0H_S.js} +383 -382
- package/dist/comments-Di4w0H_S.js.map +1 -0
- package/dist/components/base/action-menu/action-menu.d.ts +2 -0
- package/dist/components/base/cards/card.recipes.d.ts +12 -5
- package/dist/components/base/cards/smart-card.types.d.ts +12 -7
- package/dist/components/base/choice-inputs/checkbox.d.ts +7 -2
- package/dist/components/base/choice-inputs/switch-card.d.ts +7 -0
- package/dist/components/base/choice-inputs/toggle-field.d.ts +7 -0
- package/dist/components/base/date-pickers/datepicker.types.d.ts +7 -0
- package/dist/components/base/forms/controlled-form-field.d.ts +6 -6
- package/dist/components/base/forms/form-field.d.ts +5 -3
- package/dist/components/base/forms/index.d.ts +1 -0
- package/dist/components/base/forms/server-errors.d.ts +16 -0
- package/dist/components/base/forms/workflow.d.ts +5 -2
- package/dist/components/base/metadata-list/metadata-list.d.ts +3 -1
- package/dist/components/base/navigation/page-header/page-header.d.ts +4 -2
- package/dist/components/base/structure/composition.recipes.d.ts +17 -0
- package/dist/components/base/text-inputs/hooks/use-form-field-state.d.ts +7 -2
- package/dist/components/base/text-inputs/input.d.ts +4 -2
- package/dist/components/base/text-inputs/textarea.d.ts +4 -2
- package/dist/components/base/value-inputs/date-time-input.d.ts +2 -1
- package/dist/components/base/value-inputs/slider.d.ts +5 -1
- package/dist/components/base/value-inputs/tags-input.d.ts +5 -1
- package/dist/components/typography/text.styles.d.ts +26 -1
- package/dist/composition.recipes-COdiFhxB.js +19 -0
- package/dist/composition.recipes-COdiFhxB.js.map +1 -0
- package/dist/containers-CRmHf7GP.js +104 -0
- package/dist/containers-CRmHf7GP.js.map +1 -0
- package/dist/{copyable-ClBuk_UK.js → copyable-CnGCZdX4.js} +4 -4
- package/dist/{copyable-ClBuk_UK.js.map → copyable-CnGCZdX4.js.map} +1 -1
- package/dist/{data-display-DT_khPl_.js → data-display-D4oujtx0.js} +239 -238
- package/dist/data-display-D4oujtx0.js.map +1 -0
- package/dist/{date-DCrsDTZc.js → date-Q7jnXxpk.js} +5 -5
- package/dist/{date-DCrsDTZc.js.map → date-Q7jnXxpk.js.map} +1 -1
- package/dist/{date-picker-B2K3ucWn.js → date-picker-zOt1oNss.js} +102 -90
- package/dist/date-picker-zOt1oNss.js.map +1 -0
- package/dist/date-pickers-cj8IXbDC.js +179 -0
- package/dist/date-pickers-cj8IXbDC.js.map +1 -0
- package/dist/{display-hAc1HjpI.js → display-BB4BL_-K.js} +8 -8
- package/dist/{display-hAc1HjpI.js.map → display-BB4BL_-K.js.map} +1 -1
- package/dist/{dropdown-menu-Cl4X7L5S.js → dropdown-menu-CjY8Vt7W.js} +8 -8
- package/dist/{dropdown-menu-Cl4X7L5S.js.map → dropdown-menu-CjY8Vt7W.js.map} +1 -1
- package/dist/features/activities.js +11 -11
- package/dist/features/ai-chat.js +9 -9
- package/dist/features/appointment-calendar.js +222 -220
- package/dist/features/appointment-calendar.js.map +1 -1
- package/dist/features/async-preview.js +8 -8
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +10 -10
- package/dist/features/email-composer.js +275 -274
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +199 -198
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +12 -12
- package/dist/features/kanban.js +4 -4
- package/dist/features/map.js +7 -7
- package/dist/features/media-library.js +623 -622
- 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 +973 -969
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +12 -12
- package/dist/features/resource-assignment.js +8 -8
- package/dist/features/resource.js +113 -112
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +254 -253
- 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 +19 -19
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/{feedback-BYIhtitP.js → feedback-DZNL5Lg1.js} +9 -9
- package/dist/{feedback-BYIhtitP.js.map → feedback-DZNL5Lg1.js.map} +1 -1
- package/dist/{field-affordance-recipes-DZhnIL_Y.js → field-affordance-recipes-DjwGx8eM.js} +2 -2
- package/dist/{field-affordance-recipes-DZhnIL_Y.js.map → field-affordance-recipes-DjwGx8eM.js.map} +1 -1
- package/dist/{filters-DJVAveHA.js → filters-BcT-uoFy.js} +19 -19
- package/dist/{filters-DJVAveHA.js.map → filters-BcT-uoFy.js.map} +1 -1
- package/dist/{form-field-CwH9y77i.js → form-field-CsgRmdit.js} +14 -8
- package/dist/form-field-CsgRmdit.js.map +1 -0
- package/dist/{form-sizing-BdP_Mf5p.js → form-sizing-NXgjkmBG.js} +3 -3
- package/dist/{form-sizing-BdP_Mf5p.js.map → form-sizing-NXgjkmBG.js.map} +1 -1
- package/dist/{forms-B9G_xwzi.js → forms-BV5m5aQF.js} +83 -65
- package/dist/forms-BV5m5aQF.js.map +1 -0
- package/dist/{forms-numeric-B_jraJaQ.js → forms-numeric-Cd33AKbD.js} +288 -288
- package/dist/forms-numeric-Cd33AKbD.js.map +1 -0
- package/dist/{header-BSfIEWbI.js → header-BA697l4a.js} +14 -14
- package/dist/{header-BSfIEWbI.js.map → header-BA697l4a.js.map} +1 -1
- package/dist/hooks/useFormErrors.d.ts +1 -1
- package/dist/{hooks-ClH9thn4.js → hooks-BQ-L7Uu2.js} +2 -2
- package/dist/{hooks-ClH9thn4.js.map → hooks-BQ-L7Uu2.js.map} +1 -1
- package/dist/{icon-badge-DYKIwvOV.js → icon-badge-COWbCCWu.js} +3 -3
- package/dist/{icon-badge-DYKIwvOV.js.map → icon-badge-COWbCCWu.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/input-Cdw4k0fb.js +289 -0
- package/dist/input-Cdw4k0fb.js.map +1 -0
- package/dist/{input-CZw8iU99.js → input-DOPL5_QE.js} +3 -3
- package/dist/{input-CZw8iU99.js.map → input-DOPL5_QE.js.map} +1 -1
- package/dist/item-BvZ2DR_x.js +277 -0
- package/dist/item-BvZ2DR_x.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 +6 -0
- package/dist/lib/ui-provider/types.d.ts +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/{media-gallery-3zIVLMWH.js → media-gallery-CSl5W1Fy.js} +6 -6
- package/dist/{media-gallery-3zIVLMWH.js.map → media-gallery-CSl5W1Fy.js.map} +1 -1
- package/dist/{mentions-CGlEJ15c.js → mentions-RKOQaaIB.js} +8 -8
- package/dist/{mentions-CGlEJ15c.js.map → mentions-RKOQaaIB.js.map} +1 -1
- package/dist/{message-DZ_ruyUV.js → message-INU2xsxu.js} +4 -4
- package/dist/{message-DZ_ruyUV.js.map → message-INU2xsxu.js.map} +1 -1
- package/dist/metadata-list-qVV7AVxa.js +443 -0
- package/dist/metadata-list-qVV7AVxa.js.map +1 -0
- package/dist/{navigation-BzhHI3lo.js → navigation-BQNcg1jT.js} +8 -8
- package/dist/{navigation-BzhHI3lo.js.map → navigation-BQNcg1jT.js.map} +1 -1
- package/dist/{navigation-Bnotn4AQ.js → navigation-DLF3E1IC.js} +7 -7
- package/dist/{navigation-Bnotn4AQ.js.map → navigation-DLF3E1IC.js.map} +1 -1
- package/dist/{navigation-row-recipes-BFLCk_Aq.js → navigation-row-recipes-WZEs-hYo.js} +2 -2
- package/dist/{navigation-row-recipes-BFLCk_Aq.js.map → navigation-row-recipes-WZEs-hYo.js.map} +1 -1
- package/dist/{number-DbV1Dija.js → number-E_OiIfJz.js} +5 -5
- package/dist/{number-DbV1Dija.js.map → number-E_OiIfJz.js.map} +1 -1
- package/dist/{overflow-tab-bar-CWY7Nogn.js → overflow-tab-bar-CrbqMteP.js} +107 -105
- package/dist/overflow-tab-bar-CrbqMteP.js.map +1 -0
- package/dist/{overlays-tMkF-VAN.js → overlays-BlKynmde.js} +228 -227
- package/dist/overlays-BlKynmde.js.map +1 -0
- package/dist/page-CIwNUtGr.js +227 -0
- package/dist/page-CIwNUtGr.js.map +1 -0
- package/dist/page-header-commands-DFMlNYzN.js +128 -0
- package/dist/page-header-commands-DFMlNYzN.js.map +1 -0
- package/dist/{pagination-BL25hu2s.js → pagination-Ch8X_47u.js} +5 -5
- package/dist/{pagination-BL25hu2s.js.map → pagination-Ch8X_47u.js.map} +1 -1
- package/dist/{popover-menu-Cn9rUkdc.js → popover-menu-BYaCdFhf.js} +6 -6
- package/dist/{popover-menu-Cn9rUkdc.js.map → popover-menu-BYaCdFhf.js.map} +1 -1
- package/dist/{popover-gnTOhbFM.js → popover-uwzX2vo7.js} +4 -4
- package/dist/{popover-gnTOhbFM.js.map → popover-uwzX2vo7.js.map} +1 -1
- package/dist/{primitives-BFK08r9M.js → primitives-Du64iDbb.js} +6 -6
- package/dist/{primitives-BFK08r9M.js.map → primitives-Du64iDbb.js.map} +1 -1
- package/dist/primitives.js +4 -4
- package/dist/{progress-B1VnCT0K.js → progress-BvF2oCdV.js} +5 -5
- package/dist/{progress-B1VnCT0K.js.map → progress-BvF2oCdV.js.map} +1 -1
- package/dist/{receipt-BVSOH3Xo.js → receipt-D789Jwyy.js} +6 -6
- package/dist/{receipt-BVSOH3Xo.js.map → receipt-D789Jwyy.js.map} +1 -1
- package/dist/{rich-text-GOUyKQ-s.js → rich-text-CLJEf76s.js} +4 -4
- package/dist/{rich-text-GOUyKQ-s.js.map → rich-text-CLJEf76s.js.map} +1 -1
- package/dist/{rich-text-editor-cRLC-eBK.js → rich-text-editor-Cm1dpUpQ.js} +10 -10
- package/dist/{rich-text-editor-cRLC-eBK.js.map → rich-text-editor-Cm1dpUpQ.js.map} +1 -1
- package/dist/{rich-text-editor-toolbar-DfXg0-VC.js → rich-text-editor-toolbar-L__e4x47.js} +4 -4
- package/dist/{rich-text-editor-toolbar-DfXg0-VC.js.map → rich-text-editor-toolbar-L__e4x47.js.map} +1 -1
- package/dist/{scroll-area-DcI-M1UT.js → scroll-area-La5RXsEk.js} +2 -2
- package/dist/{scroll-area-DcI-M1UT.js.map → scroll-area-La5RXsEk.js.map} +1 -1
- package/dist/{separator-Bom7NsGO.js → separator-DAEV0w65.js} +2 -2
- package/dist/{separator-Bom7NsGO.js.map → separator-DAEV0w65.js.map} +1 -1
- package/dist/{separator-BDV-Y648.js → separator-GNfPG-90.js} +3 -3
- package/dist/{separator-BDV-Y648.js.map → separator-GNfPG-90.js.map} +1 -1
- package/dist/services/actions.js +1 -1
- package/dist/settings-BA2iboic.js +174 -0
- package/dist/settings-BA2iboic.js.map +1 -0
- package/dist/{sheet-ijlsjq-n.js → sheet-DoAxTb2J.js} +7 -7
- package/dist/{sheet-ijlsjq-n.js.map → sheet-DoAxTb2J.js.map} +1 -1
- package/dist/{sidebar-DkTO4VTO.js → sidebar-ByqKR_W5.js} +13 -13
- package/dist/{sidebar-DkTO4VTO.js.map → sidebar-ByqKR_W5.js.map} +1 -1
- package/dist/{sidebar-Db6gkh3U.js → sidebar-D2iSnGJ7.js} +11 -11
- package/dist/{sidebar-Db6gkh3U.js.map → sidebar-D2iSnGJ7.js.map} +1 -1
- package/dist/{skeleton-Byjnt7qr.js → skeleton-CUj8O5Bd.js} +3 -3
- package/dist/{skeleton-Byjnt7qr.js.map → skeleton-CUj8O5Bd.js.map} +1 -1
- package/dist/smart-card-CqkzQsK-.js +614 -0
- package/dist/smart-card-CqkzQsK-.js.map +1 -0
- package/dist/{structure-BmisBK-3.js → structure-C0V0_Fyf.js} +3 -3
- package/dist/{structure-BmisBK-3.js.map → structure-C0V0_Fyf.js.map} +1 -1
- package/dist/{structure.recipes-EPz60cU8.js → structure.recipes-BB4-n58V.js} +2 -2
- package/dist/{structure.recipes-EPz60cU8.js.map → structure.recipes-BB4-n58V.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/{table-DsfzoUia.js → table-CpvnzJn9.js} +3 -3
- package/dist/{table-DsfzoUia.js.map → table-CpvnzJn9.js.map} +1 -1
- package/dist/{table-BweFy_P9.js → table-DH7rozUv.js} +19 -19
- package/dist/{table-BweFy_P9.js.map → table-DH7rozUv.js.map} +1 -1
- package/dist/{tabs-CDocW5D1.js → tabs-eqVsJZWO.js} +7 -7
- package/dist/{tabs-CDocW5D1.js.map → tabs-eqVsJZWO.js.map} +1 -1
- package/dist/{text-inputs-f9Ia-aCi.js → text-inputs-DXItiR0O.js} +101 -98
- package/dist/text-inputs-DXItiR0O.js.map +1 -0
- package/dist/{text.styles-g4He6UIW.js → text.styles-B64My8RZ.js} +25 -10
- package/dist/text.styles-B64My8RZ.js.map +1 -0
- package/dist/theme.css +152 -112
- package/dist/{timelines-CwM_9IhD.js → timelines-DmtztAY_.js} +10 -10
- package/dist/{timelines-CwM_9IhD.js.map → timelines-DmtztAY_.js.map} +1 -1
- package/dist/{tooltip-yiRJUFjp.js → tooltip-B4hjKtoV.js} +3 -3
- package/dist/{tooltip-yiRJUFjp.js.map → tooltip-B4hjKtoV.js.map} +1 -1
- package/dist/{tree-WnKQzwbq.js → tree-CV11PURP.js} +8 -8
- package/dist/{tree-WnKQzwbq.js.map → tree-CV11PURP.js.map} +1 -1
- package/dist/typography/rich-text.js +1 -1
- package/dist/typography-CSyJrh28.js +117 -0
- package/dist/typography-CSyJrh28.js.map +1 -0
- package/dist/typography.js +1 -1
- package/dist/{ui-provider-C_U0Xma4.js → ui-provider-CQCuCBcy.js} +3 -3
- package/dist/ui-provider-CQCuCBcy.js.map +1 -0
- package/dist/ui-provider.js +1 -1
- package/dist/{upload-CXyxmQBP.js → upload-C9SA0X-8.js} +11 -11
- package/dist/{upload-CXyxmQBP.js.map → upload-C9SA0X-8.js.map} +1 -1
- package/dist/{upload-queue-Boscubn9.js → upload-queue-DhQJiSRc.js} +9 -9
- package/dist/{upload-queue-Boscubn9.js.map → upload-queue-DhQJiSRc.js.map} +1 -1
- package/dist/{usage-card-BhO5eqkX.js → usage-card-DVTRDmGz.js} +134 -133
- package/dist/usage-card-DVTRDmGz.js.map +1 -0
- package/dist/{utils-BRhFDwuU.js → utils-CF3c95Io.js} +68 -5
- package/dist/utils-CF3c95Io.js.map +1 -0
- package/dist/value-inputs-C0o70p-U.js +980 -0
- package/dist/value-inputs-C0o70p-U.js.map +1 -0
- package/dist/{value-typography-BP8OG6h5.js → value-typography-ClupF0Gz.js} +2 -2
- package/dist/{value-typography-BP8OG6h5.js.map → value-typography-ClupF0Gz.js.map} +1 -1
- package/dist/workspace-9EFVXUyk.js +410 -0
- package/dist/workspace-9EFVXUyk.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +14 -129
- package/docs/consumer-skill/examples/app-layout.tsx +22 -12
- package/docs/consumer-skill/examples/authentication.tsx +77 -0
- package/docs/consumer-skill/examples/edit.tsx +30 -38
- package/docs/consumer-skill/examples/manifest.json +51 -1
- package/docs/consumer-skill/examples/rhf-bindings.tsx +86 -0
- package/docs/consumer-skill/examples/rhf-edit-page.tsx +141 -0
- package/docs/consumer-skill/examples/rhf-overlay-form.tsx +92 -0
- package/docs/consumer-skill/examples/rhf-transport.tsx +28 -0
- package/docs/consumer-skill/references/agents-md.md +17 -7
- package/docs/consumer-skill/references/authentication.md +42 -0
- package/docs/consumer-skill/references/component-contracts.json +319824 -0
- package/docs/consumer-skill/references/composition-mapping.md +92 -0
- package/docs/consumer-skill/references/composition.md +43 -19
- package/docs/consumer-skill/references/design-contract.md +32 -0
- package/docs/consumer-skill/references/discovery.md +84 -7
- package/docs/consumer-skill/references/installation.md +40 -36
- package/docs/consumer-skill/references/integration.md +6 -2
- package/docs/consumer-skill/references/public-api.json +1519 -65
- package/docs/consumer-skill/references/review.md +9 -4
- package/docs/consumer-skill/references/rhf-workflows.md +86 -0
- package/docs/consumer-skill/references/screen-archetypes.md +22 -0
- package/docs/consumer-skill/references/theming.md +8 -9
- package/docs/consumer-skill/references/tokens.json +12 -3
- package/docs/consumer-skill/references/workflows.md +2 -1
- package/docs/consumer-skill/scripts/composition-schema.d.mts +2 -0
- package/docs/consumer-skill/scripts/composition-schema.mjs +32 -0
- package/docs/consumer-skill/scripts/composition.mjs +198 -0
- package/docs/consumer-skill/scripts/discovery.mjs +42 -10
- package/docs/consumer-skill/scripts/inspect-component.mjs +11 -0
- package/docs/consumer-skill/scripts/inspect-tokens.mjs +11 -0
- package/docs/consumer-skill/scripts/inspection.mjs +138 -0
- package/docs/consumer-skill/scripts/map-composition.mjs +12 -0
- package/docs/consumer-skill/scripts/setup-skills.mjs +76 -0
- package/docs/consumer-skills/themelia-components/SKILL.md +30 -0
- package/docs/consumer-skills/themelia-composition/SKILL.md +35 -0
- package/docs/consumer-skills/themelia-forms/SKILL.md +12 -0
- package/docs/consumer-skills/themelia-foundation/SKILL.md +14 -0
- package/docs/consumer-skills/themelia-tokenization/SKILL.md +35 -0
- package/package.json +4 -2
- package/templates/README.md +39 -0
- package/templates/admin-shell-template.tsx +382 -0
- package/templates/analytics-operations-template.tsx +376 -0
- package/templates/customers-template.tsx +509 -0
- package/templates/index.ts +29 -0
- package/templates/orders-template.tsx +1102 -0
- package/templates/products-template.tsx +834 -0
- package/templates/user-permissions-template.tsx +450 -0
- package/dist/action-menu-CllU52Mm.js +0 -280
- package/dist/action-menu-CllU52Mm.js.map +0 -1
- package/dist/affordance-geometry.generated-tF36bREk.js.map +0 -1
- package/dist/ai-artifact-DvTwDVyL.js.map +0 -1
- package/dist/app-shell-C4FhvCqF.js.map +0 -1
- package/dist/cards-BaBZR-AU.js.map +0 -1
- package/dist/checkbox-AWIhNhmo.js.map +0 -1
- package/dist/choice-inputs-CNHvARCJ.js.map +0 -1
- package/dist/comments-DD0DUPwJ.js.map +0 -1
- package/dist/containers-Mu1LMGV1.js +0 -103
- package/dist/containers-Mu1LMGV1.js.map +0 -1
- package/dist/data-display-DT_khPl_.js.map +0 -1
- package/dist/date-picker-B2K3ucWn.js.map +0 -1
- package/dist/date-pickers-Ds8gLaoP.js +0 -175
- package/dist/date-pickers-Ds8gLaoP.js.map +0 -1
- package/dist/form-field-CwH9y77i.js.map +0 -1
- package/dist/forms-B9G_xwzi.js.map +0 -1
- package/dist/forms-numeric-B_jraJaQ.js.map +0 -1
- package/dist/input-DQdEd0YD.js +0 -263
- package/dist/input-DQdEd0YD.js.map +0 -1
- package/dist/item-K5_ghvze.js +0 -275
- package/dist/item-K5_ghvze.js.map +0 -1
- package/dist/metadata-list-8N16ZMW_.js +0 -405
- package/dist/metadata-list-8N16ZMW_.js.map +0 -1
- package/dist/overflow-tab-bar-CWY7Nogn.js.map +0 -1
- package/dist/overlays-tMkF-VAN.js.map +0 -1
- package/dist/page-CL9YeH_V.js +0 -224
- package/dist/page-CL9YeH_V.js.map +0 -1
- package/dist/page-header-commands-DOb6WsfD.js +0 -126
- package/dist/page-header-commands-DOb6WsfD.js.map +0 -1
- package/dist/settings-ybnjVwbd.js +0 -171
- package/dist/settings-ybnjVwbd.js.map +0 -1
- package/dist/smart-card-DiC5aac3.js +0 -604
- package/dist/smart-card-DiC5aac3.js.map +0 -1
- package/dist/text-inputs-f9Ia-aCi.js.map +0 -1
- package/dist/text.styles-g4He6UIW.js.map +0 -1
- package/dist/typography-UTnveOEy.js +0 -117
- package/dist/typography-UTnveOEy.js.map +0 -1
- package/dist/ui-provider-C_U0Xma4.js.map +0 -1
- package/dist/usage-card-BhO5eqkX.js.map +0 -1
- package/dist/utils-BRhFDwuU.js.map +0 -1
- package/dist/value-inputs-TaX4OjNk.js +0 -963
- package/dist/value-inputs-TaX4OjNk.js.map +0 -1
- package/dist/workspace-B-OEm3Kf.js +0 -408
- package/dist/workspace-B-OEm3Kf.js.map +0 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* on it.
|
|
8
8
|
*/
|
|
9
9
|
import type { Key, ReactNode } from 'react';
|
|
10
|
-
import { type HeadingTag } from '../../../typography';
|
|
10
|
+
import { type HeadingSize, type HeadingTag } from '../../../typography';
|
|
11
11
|
import { type BadgeTone } from '../../badge';
|
|
12
12
|
import { type TextGap } from '../../structure';
|
|
13
13
|
import { type PageHeaderAction, type PageHeaderLinkRenderer } from './page-header-commands';
|
|
@@ -41,6 +41,8 @@ export interface PageHeadingProps {
|
|
|
41
41
|
textGap?: TextGap;
|
|
42
42
|
/** Heading level for a plain-text `title`. Default: `'h2'`. Set for correct document outline. */
|
|
43
43
|
headingTag?: HeadingTag;
|
|
44
|
+
/** Visual title scale, independent of heading level. Defaults to the subject role (`base`). */
|
|
45
|
+
titleSize?: HeadingSize;
|
|
44
46
|
/** Convenience for a single badge beside the title. Ignored when `badges` is set. */
|
|
45
47
|
badge?: PageHeadingBadge;
|
|
46
48
|
/** Badges beside the title, in order. Takes precedence over `badge`. */
|
|
@@ -108,7 +110,7 @@ export interface PageHeadingProps {
|
|
|
108
110
|
*/
|
|
109
111
|
withSeparator?: boolean;
|
|
110
112
|
}
|
|
111
|
-
export declare function PageHeading({ eyebrow, title, description, textGap, headingTag, badge, badges, breadcrumbs, leading, beforeTitle, titlePrefix, titleSuffix, afterDescription, actions, primaryAction, secondaryActions, moreActionsLabel, renderLink, children, className, contentClassName, eyebrowClassName, titleClassName, titleRowClassName, descriptionClassName, actionsClassName, withSeparator, }: PageHeadingProps): import("react").JSX.Element;
|
|
113
|
+
export declare function PageHeading({ eyebrow, title, description, textGap, headingTag, titleSize, badge, badges, breadcrumbs, leading, beforeTitle, titlePrefix, titleSuffix, afterDescription, actions, primaryAction, secondaryActions, moreActionsLabel, renderLink, children, className, contentClassName, eyebrowClassName, titleClassName, titleRowClassName, descriptionClassName, actionsClassName, withSeparator, }: PageHeadingProps): import("react").JSX.Element;
|
|
112
114
|
export declare namespace PageHeading {
|
|
113
115
|
var displayName: string;
|
|
114
116
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Private relationship defaults. Generic Stack/Grid retain their own defaults;
|
|
2
|
+
* surface regions and collection rows keep their independent recipe owners. */
|
|
3
|
+
export declare const compositionRhythm: {
|
|
4
|
+
readonly commands: "md";
|
|
5
|
+
readonly compactActions: "xs";
|
|
6
|
+
readonly related: "xl";
|
|
7
|
+
readonly subjects: "2xl";
|
|
8
|
+
readonly page: "3xl";
|
|
9
|
+
};
|
|
10
|
+
/** Native layout owners use the same vocabulary as Stack/Grid. */
|
|
11
|
+
export declare const compositionClasses: {
|
|
12
|
+
readonly commands: string;
|
|
13
|
+
readonly compactActions: string;
|
|
14
|
+
readonly related: string;
|
|
15
|
+
readonly subjects: string;
|
|
16
|
+
readonly page: string;
|
|
17
|
+
};
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
1
2
|
export interface UseFormFieldStateOptions {
|
|
2
3
|
/** Controlled value from parent */
|
|
3
|
-
controlledValue?: string;
|
|
4
|
+
controlledValue?: string | null;
|
|
5
|
+
/** Presence of the value prop, including an explicitly empty value. */
|
|
6
|
+
hasControlledValue?: boolean;
|
|
7
|
+
/** Native field whose value may be assigned by registration or reset. */
|
|
8
|
+
nativeRef?: RefObject<HTMLInputElement | HTMLTextAreaElement | null>;
|
|
4
9
|
/** Default value for uncontrolled mode */
|
|
5
10
|
defaultValue?: string;
|
|
6
11
|
/** Maximum character length */
|
|
@@ -45,4 +50,4 @@ export interface UseFormFieldStateReturn {
|
|
|
45
50
|
* - React Hook Form compatibility detection
|
|
46
51
|
* - ID generation
|
|
47
52
|
*/
|
|
48
|
-
export declare function useFormFieldState({ controlledValue, defaultValue, maxLength, showCharacterCount, providedId, idPrefix, hasOnChange, }: UseFormFieldStateOptions): UseFormFieldStateReturn;
|
|
53
|
+
export declare function useFormFieldState({ controlledValue, hasControlledValue, nativeRef, defaultValue, maxLength, showCharacterCount, providedId, idPrefix, hasOnChange, }: UseFormFieldStateOptions): UseFormFieldStateReturn;
|
|
@@ -7,7 +7,7 @@ export interface InputStrings {
|
|
|
7
7
|
clear: string;
|
|
8
8
|
}
|
|
9
9
|
export declare const defaultInputStrings: InputStrings;
|
|
10
|
-
export interface InputProps extends Omit<React.ComponentProps<'input'>, 'onChange' | 'size'> {
|
|
10
|
+
export interface InputProps extends Omit<React.ComponentProps<'input'>, 'onChange' | 'size' | 'value'> {
|
|
11
11
|
/** Decorative or semantic icon rendered before the value. */
|
|
12
12
|
startIcon?: LucideIcon;
|
|
13
13
|
/** Decorative or semantic icon rendered after the value. */
|
|
@@ -34,8 +34,10 @@ export interface InputProps extends Omit<React.ComponentProps<'input'>, 'onChang
|
|
|
34
34
|
size?: FormControlSize;
|
|
35
35
|
/** Native-style value callback for the controlled raw string. */
|
|
36
36
|
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
37
|
+
/** Raw string callback, emitted alongside the native change event. */
|
|
38
|
+
onValueChange?: (value: string) => void;
|
|
37
39
|
/** Controlled raw string value. */
|
|
38
|
-
value?: string;
|
|
40
|
+
value?: string | null;
|
|
39
41
|
/** Initial raw string value for uncontrolled usage. */
|
|
40
42
|
defaultValue?: string;
|
|
41
43
|
/** Accessible copy overrides for input-owned actions. */
|
|
@@ -5,7 +5,7 @@ export interface TextareaStrings {
|
|
|
5
5
|
clear: string;
|
|
6
6
|
}
|
|
7
7
|
export declare const defaultTextareaStrings: TextareaStrings;
|
|
8
|
-
export interface TextareaProps extends Omit<React.ComponentProps<'textarea'>, 'onChange'> {
|
|
8
|
+
export interface TextareaProps extends Omit<React.ComponentProps<'textarea'>, 'onChange' | 'value'> {
|
|
9
9
|
/** Overrides the character-count and clear copy. */
|
|
10
10
|
strings?: StringsProp<TextareaStrings>;
|
|
11
11
|
/** Character cap, also used as the denominator of the count. */
|
|
@@ -28,8 +28,10 @@ export interface TextareaProps extends Omit<React.ComponentProps<'textarea'>, 'o
|
|
|
28
28
|
/** Height at which the field stops growing and starts scrolling. */
|
|
29
29
|
maxRows?: number;
|
|
30
30
|
onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
|
|
31
|
+
/** Raw string callback, emitted alongside the native change event. */
|
|
32
|
+
onValueChange?: (value: string) => void;
|
|
31
33
|
/** Current text. Controlled. */
|
|
32
|
-
value?: string;
|
|
34
|
+
value?: string | null;
|
|
33
35
|
/** Initial text for uncontrolled use. */
|
|
34
36
|
defaultValue?: string;
|
|
35
37
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DatePickerBaseProps } from '../date-pickers/datepicker.types';
|
|
2
|
+
export interface DateTimeInputProps extends Pick<DatePickerBaseProps, 'triggerRef' | 'onBlur' | 'aria-describedby' | 'aria-invalid'> {
|
|
2
3
|
/** Controlled value (ISO string) */
|
|
3
4
|
value?: string;
|
|
4
5
|
/** Change handler */
|
|
@@ -12,9 +12,13 @@ export interface SliderImitationEvent {
|
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
export interface SliderProps {
|
|
15
|
+
/** Native range input ref; the forwarded ref continues to name the slider root. */
|
|
16
|
+
inputRef?: React.Ref<HTMLInputElement>;
|
|
17
|
+
/** Blur callback from the native range input. */
|
|
18
|
+
onBlur?: React.FocusEventHandler<HTMLInputElement>;
|
|
15
19
|
/** Field name for form integration */
|
|
16
20
|
name?: string;
|
|
17
|
-
/**
|
|
21
|
+
/** Slider group id; use aria-labelledby to associate visible copy with its native range input. */
|
|
18
22
|
id?: string;
|
|
19
23
|
/** Accessible name when a visible label is not associated with the slider. */
|
|
20
24
|
'aria-label'?: string;
|
|
@@ -21,6 +21,10 @@ export interface TagsInputStrings {
|
|
|
21
21
|
}
|
|
22
22
|
export declare const defaultTagsInputStrings: TagsInputStrings;
|
|
23
23
|
export interface TagsInputProps<T = string> {
|
|
24
|
+
/** Ref to the editable input, for focus and form registration. */
|
|
25
|
+
inputRef?: React.Ref<HTMLInputElement>;
|
|
26
|
+
/** Native blur callback, emitted even when there is no draft to commit. */
|
|
27
|
+
onBlur?: React.FocusEventHandler<HTMLInputElement>;
|
|
24
28
|
/** ID of the editable input, for an external field label. */
|
|
25
29
|
id?: string;
|
|
26
30
|
/** Names the editable input when no visible label points at it. */
|
|
@@ -87,7 +91,7 @@ export interface TagsInputProps<T = string> {
|
|
|
87
91
|
/** Additional class names */
|
|
88
92
|
className?: string;
|
|
89
93
|
}
|
|
90
|
-
export declare function TagsInput<T = string>({ id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, 'aria-required': ariaRequired, value, defaultValue, onValueChange, name, placeholder, recommendations, maxTags, showMaxTags, allowDuplicates, validate, disabled, showClearAll, renderTag, delimiter, addOnBlur, minLength, maxLength, sortTags, caseSensitive, field, invalid, className, strings: stringsProp, }: TagsInputProps<T>): React.JSX.Element;
|
|
94
|
+
export declare function TagsInput<T = string>({ id, inputRef: forwardedInputRef, onBlur, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, 'aria-required': ariaRequired, value, defaultValue, onValueChange, name, placeholder, recommendations, maxTags, showMaxTags, allowDuplicates, validate, disabled, showClearAll, renderTag, delimiter, addOnBlur, minLength, maxLength, sortTags, caseSensitive, field, invalid, className, strings: stringsProp, }: TagsInputProps<T>): React.JSX.Element;
|
|
91
95
|
export declare namespace TagsInput {
|
|
92
96
|
var displayName: string;
|
|
93
97
|
}
|
|
@@ -38,6 +38,31 @@ export declare const headingSizes: {
|
|
|
38
38
|
readonly '3xl': "text-3xl leading-tight tracking-tight";
|
|
39
39
|
readonly '4xl': "text-4xl leading-tight tracking-tight";
|
|
40
40
|
};
|
|
41
|
+
/** Library-owned title responsibilities; semantic heading tags remain separate.
|
|
42
|
+
* A nested record title is a subject, even when its component is called a header. */
|
|
43
|
+
export declare const headingRoleSizes: {
|
|
44
|
+
readonly route: "xl";
|
|
45
|
+
readonly subject: "base";
|
|
46
|
+
readonly subsection: "sm";
|
|
47
|
+
};
|
|
48
|
+
/** Shared copy intent without fixing the provider's ordinary text size.
|
|
49
|
+
* Compact supporting copy deliberately uses the smaller secondary role. */
|
|
50
|
+
export declare const copyRoleProps: {
|
|
51
|
+
readonly primary: {
|
|
52
|
+
readonly type: "inherit";
|
|
53
|
+
};
|
|
54
|
+
readonly structuralDescription: {
|
|
55
|
+
readonly type: "secondary";
|
|
56
|
+
};
|
|
57
|
+
readonly supporting: {
|
|
58
|
+
readonly type: "secondary";
|
|
59
|
+
readonly size: "xs";
|
|
60
|
+
};
|
|
61
|
+
readonly subsection: {
|
|
62
|
+
readonly type: "inherit";
|
|
63
|
+
readonly weight: "semibold";
|
|
64
|
+
};
|
|
65
|
+
};
|
|
41
66
|
export declare const textWeights: {
|
|
42
67
|
readonly normal: "font-normal";
|
|
43
68
|
readonly regular: "font-normal";
|
|
@@ -72,7 +97,7 @@ export declare const textLineHeights: {
|
|
|
72
97
|
export declare const textVariants: (props?: ({
|
|
73
98
|
type?: "primary" | "secondary" | "success" | "inherit" | "main" | "inverse" | "discrete" | "error" | null | undefined;
|
|
74
99
|
size?: "sm" | "lg" | "inherit" | "xxs" | "xs" | "pxs" | "base" | "xl" | null | undefined;
|
|
75
|
-
weight?: "inherit" | "bold" | "normal" | "medium" | "
|
|
100
|
+
weight?: "inherit" | "bold" | "normal" | "medium" | "semibold" | "regular" | null | undefined;
|
|
76
101
|
align?: "center" | "left" | "right" | null | undefined;
|
|
77
102
|
lineHeight?: "inherit" | "none" | "normal" | "loose" | "relaxed" | "tight" | "snug" | null | undefined;
|
|
78
103
|
numeric?: boolean | null | undefined;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { n as e } from "./structure.recipes-BB4-n58V.js";
|
|
2
|
+
//#region src/components/base/structure/composition.recipes.ts
|
|
3
|
+
var t = {
|
|
4
|
+
commands: "md",
|
|
5
|
+
compactActions: "xs",
|
|
6
|
+
related: "xl",
|
|
7
|
+
subjects: "2xl",
|
|
8
|
+
page: "3xl"
|
|
9
|
+
}, n = {
|
|
10
|
+
commands: e({ gap: t.commands }).join(" "),
|
|
11
|
+
compactActions: e({ gap: t.compactActions }).join(" "),
|
|
12
|
+
related: e({ gap: t.related }).join(" "),
|
|
13
|
+
subjects: e({ gap: t.subjects }).join(" "),
|
|
14
|
+
page: e({ gap: t.page }).join(" ")
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { t as n, n as t };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=composition.recipes-COdiFhxB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition.recipes-COdiFhxB.js","names":["gapRecipe","compositionRhythm","compositionClasses"],"sources":["../src/components/base/structure/composition.recipes.ts"],"sourcesContent":["import {gapRecipe} from './structure.recipes';\nimport type {StructureGap} from './structure.types';\n\n/** Private relationship defaults. Generic Stack/Grid retain their own defaults;\n * surface regions and collection rows keep their independent recipe owners. */\nexport const compositionRhythm = {\n commands: 'md',\n compactActions: 'xs',\n related: 'xl',\n subjects: '2xl',\n page: '3xl',\n} as const satisfies Record<string, StructureGap>;\n\n/** Native layout owners use the same vocabulary as Stack/Grid. */\nexport const compositionClasses = {\n commands: gapRecipe({gap: compositionRhythm.commands}).join(' '),\n compactActions: gapRecipe({gap: compositionRhythm.compactActions}).join(' '),\n related: gapRecipe({gap: compositionRhythm.related}).join(' '),\n subjects: gapRecipe({gap: compositionRhythm.subjects}).join(' '),\n page: gapRecipe({gap: compositionRhythm.page}).join(' '),\n} as const satisfies Record<keyof typeof compositionRhythm, string>;\n"],"mappings":";;AAKA,IAAaC,IAAoB;CAChC,UAAU;CACV,gBAAgB;CAChB,SAAS;CACT,UAAU;CACV,MAAM;AACP,GAGaC,IAAqB;CACjC,UAAUF,EAAU,EAAC,KAAKC,EAAkB,SAAQ,CAAC,CAAC,CAAC,KAAK,GAAG;CAC/D,gBAAgBD,EAAU,EAAC,KAAKC,EAAkB,eAAc,CAAC,CAAC,CAAC,KAAK,GAAG;CAC3E,SAASD,EAAU,EAAC,KAAKC,EAAkB,QAAO,CAAC,CAAC,CAAC,KAAK,GAAG;CAC7D,UAAUD,EAAU,EAAC,KAAKC,EAAkB,SAAQ,CAAC,CAAC,CAAC,KAAK,GAAG;CAC/D,MAAMD,EAAU,EAAC,KAAKC,EAAkB,KAAI,CAAC,CAAC,CAAC,KAAK,GAAG;AACxD"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as e } from "./utils-CF3c95Io.js";
|
|
3
|
+
import { t } from "./focus-recipes-B653VaLq.js";
|
|
4
|
+
import { o as n } from "./structure.recipes-BB4-n58V.js";
|
|
5
|
+
import { n as r, t as i } from "./composition.recipes-COdiFhxB.js";
|
|
6
|
+
import { t as a } from "./container.recipes-D9t8MHR3.js";
|
|
7
|
+
import { forwardRef as o } from "react";
|
|
8
|
+
import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
9
|
+
import { useRender as u } from "@base-ui/react/use-render";
|
|
10
|
+
//#region src/components/layout/containers/content-container.tsx
|
|
11
|
+
var d = o(function({ className: t, maxWidth: n, gutter: r, render: i, ...o }, s) {
|
|
12
|
+
return u({
|
|
13
|
+
defaultTagName: "div",
|
|
14
|
+
ref: s,
|
|
15
|
+
render: i,
|
|
16
|
+
props: {
|
|
17
|
+
...o,
|
|
18
|
+
className: e("container--component @container/content", a({
|
|
19
|
+
maxWidth: n,
|
|
20
|
+
gutter: r
|
|
21
|
+
}), t)
|
|
22
|
+
},
|
|
23
|
+
state: {}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
d.displayName = "Container";
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/components/layout/containers/page-viewport.tsx
|
|
29
|
+
var f = o(function({ className: n, render: r, tabIndex: i = 0, ...a }, o) {
|
|
30
|
+
return u({
|
|
31
|
+
defaultTagName: "div",
|
|
32
|
+
ref: o,
|
|
33
|
+
render: r,
|
|
34
|
+
props: {
|
|
35
|
+
...a,
|
|
36
|
+
tabIndex: i,
|
|
37
|
+
className: e(`page-viewport--component min-h-0 min-w-0 flex-1 overflow-auto overscroll-contain [scrollbar-gutter:stable] @container/page focus-visible:outline-none ${t.inset}`, n)
|
|
38
|
+
},
|
|
39
|
+
state: {}
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
f.displayName = "PageViewport";
|
|
43
|
+
//#endregion
|
|
44
|
+
//#region src/components/layout/containers/section.tsx
|
|
45
|
+
var p = o(function({ className: t, gap: i, render: a, ...o }, s) {
|
|
46
|
+
return u({
|
|
47
|
+
defaultTagName: "section",
|
|
48
|
+
ref: s,
|
|
49
|
+
render: a,
|
|
50
|
+
props: {
|
|
51
|
+
...o,
|
|
52
|
+
className: e("section--component", n({ gap: i ?? r.related }), t)
|
|
53
|
+
},
|
|
54
|
+
state: {}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
p.displayName = "Section";
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region src/components/layout/containers/two-column-layout.tsx
|
|
60
|
+
var m = o(function({ header: t, main: n, aside: r, footer: a, stickyAside: o = !1, adaptTo: d = "viewport", slotProps: f, className: p, render: m, ...h }, g) {
|
|
61
|
+
let { className: _, ...v } = f?.header ?? {}, { className: y, ...b } = f?.main ?? {}, { className: x, ...S } = f?.aside ?? {}, { className: C, ...w } = f?.footer ?? {};
|
|
62
|
+
return u({
|
|
63
|
+
defaultTagName: "div",
|
|
64
|
+
ref: g,
|
|
65
|
+
render: m,
|
|
66
|
+
props: {
|
|
67
|
+
...h,
|
|
68
|
+
"data-slot": "two-column-layout",
|
|
69
|
+
className: e("two-column-layout--component grid min-w-0 grid-cols-1", i.subjects, d === "container" ? "@3xl:grid-cols-[minmax(0,2fr)_minmax(18rem,1fr)]" : "lg:grid-cols-[minmax(0,2fr)_minmax(18rem,1fr)]", p),
|
|
70
|
+
children: /* @__PURE__ */ l(s, { children: [
|
|
71
|
+
t == null ? null : /* @__PURE__ */ c("div", {
|
|
72
|
+
...v,
|
|
73
|
+
"data-slot": "two-column-layout-header",
|
|
74
|
+
className: e("two-column-layout--header col-span-full min-w-0", _),
|
|
75
|
+
children: t
|
|
76
|
+
}),
|
|
77
|
+
/* @__PURE__ */ c("div", {
|
|
78
|
+
...b,
|
|
79
|
+
"data-slot": "two-column-layout-main",
|
|
80
|
+
className: e("two-column-layout--main flex min-h-0 min-w-0 flex-col", i.subjects, y),
|
|
81
|
+
children: n
|
|
82
|
+
}),
|
|
83
|
+
/* @__PURE__ */ c("aside", {
|
|
84
|
+
...S,
|
|
85
|
+
"data-slot": "two-column-layout-aside",
|
|
86
|
+
className: e("two-column-layout--aside flex min-h-0 min-w-0 flex-col", i.subjects, o && (d === "container" ? "@3xl:sticky @3xl:top-space-2xl @3xl:self-start" : "lg:sticky lg:top-space-2xl lg:self-start"), x),
|
|
87
|
+
children: r
|
|
88
|
+
}),
|
|
89
|
+
a == null ? null : /* @__PURE__ */ c("div", {
|
|
90
|
+
...w,
|
|
91
|
+
"data-slot": "two-column-layout-footer",
|
|
92
|
+
className: e("two-column-layout--footer col-span-full min-w-0", C),
|
|
93
|
+
children: a
|
|
94
|
+
})
|
|
95
|
+
] })
|
|
96
|
+
},
|
|
97
|
+
state: {}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
m.displayName = "TwoColumnLayout";
|
|
101
|
+
//#endregion
|
|
102
|
+
export { d as i, p as n, f as r, m as t };
|
|
103
|
+
|
|
104
|
+
//# sourceMappingURL=containers-CRmHf7GP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containers-CRmHf7GP.js","names":["_Fragment","cn","stackRecipe","compositionRhythm","compositionClasses","containerRecipe","Fragment$1","Container","forwardRef","props","useRender","className","PageViewport","focusRecipes","Section","gap","TwoColumnLayout","headerClassName","headerProps","slotProps","mainClassName","mainProps","asideClassName","asideProps","footerClassName","footerProps","adaptTo","header","main","stickyAside","aside","footer"],"sources":["../src/components/layout/containers/content-container.tsx","../src/components/layout/containers/page-viewport.tsx","../src/components/layout/containers/section.tsx","../src/components/layout/containers/two-column-layout.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render';\nimport { forwardRef } from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nimport { containerRecipe } from './container.recipes';\nimport type { ContainerProps } from './containers.types';\n\n/** Container — one centered content-width and inline-gutter owner. */\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(function Container(\n\t{ className, maxWidth, gutter, render, ...props },\n\tref,\n) {\n\treturn useRender({\n\t\tdefaultTagName: 'div',\n\t\tref,\n\t\trender,\n\t\tprops: {\n\t\t\t...props,\n\t\t\tclassName: cn('container--component @container/content', containerRecipe({ maxWidth, gutter }), className),\n\t\t},\n\t\tstate: {},\n\t});\n});\n\nContainer.displayName = 'Container';\n","import { useRender } from '@base-ui/react/use-render';\nimport { forwardRef } from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nimport type { PageViewportProps } from './containers.types';\nimport { focusRecipes } from '../../../lib/focus-recipes';\n\n/** PageViewport — the single page-scroll and page-container-query owner. */\nexport const PageViewport = forwardRef<HTMLDivElement, PageViewportProps>(function PageViewport(\n\t{ className, render, tabIndex = 0, ...props },\n\tref,\n) {\n\treturn useRender({\n\t\tdefaultTagName: 'div',\n\t\tref,\n\t\trender,\n\t\tprops: {\n\t\t\t...props,\n\t\t\ttabIndex,\n\t\t\tclassName: cn(\n\t\t\t\t`page-viewport--component min-h-0 min-w-0 flex-1 overflow-auto overscroll-contain [scrollbar-gutter:stable] @container/page focus-visible:outline-none ${focusRecipes.inset}`,\n\t\t\t\tclassName,\n\t\t\t),\n\t\t},\n\t\tstate: {},\n\t});\n});\n\nPageViewport.displayName = 'PageViewport';\n","import { useRender } from '@base-ui/react/use-render';\nimport { forwardRef } from 'react';\n\nimport { stackRecipe } from '../../base/structure/structure.recipes';\nimport {compositionRhythm} from '../../base/structure/composition.recipes';\nimport { cn } from '../../../lib/utils';\n\nimport type { SectionProps } from './containers.types';\n\n/** Section — a semantic vertical-rhythm owner for page content groups. */\nexport const Section = forwardRef<HTMLElement, SectionProps>(function Section(\n\t{ className, gap, render, ...props },\n\tref,\n) {\n\treturn useRender({\n\t\tdefaultTagName: 'section',\n\t\tref,\n\t\trender,\n\t\tprops: {\n\t\t\t...props,\n\t\t\tclassName: cn('section--component', stackRecipe({ gap: gap ?? compositionRhythm.related }), className),\n\t\t},\n\t\tstate: {},\n\t});\n});\n\nSection.displayName = 'Section';\n","import { useRender } from '@base-ui/react/use-render';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport {compositionClasses} from '../../base/structure/composition.recipes';\nimport type { LayoutSlotAttributes } from '../layout.types';\n\nexport interface TwoColumnLayoutSlotProps {\n\theader?: LayoutSlotAttributes<HTMLDivElement>;\n\tmain?: LayoutSlotAttributes<HTMLDivElement>;\n\taside?: LayoutSlotAttributes<HTMLElement>;\n\tfooter?: LayoutSlotAttributes<HTMLDivElement>;\n}\n\nexport interface TwoColumnLayoutProps extends useRender.ComponentProps<'div'> {\n\t/** Optional content spanning both columns before the work regions. */\n\theader?: ReactNode;\n\t/** Primary detail, form, or index content. */\n\tmain: ReactNode;\n\t/** Secondary summary, support, or action rail. */\n\taside: ReactNode;\n\t/** Optional content spanning both columns after the work regions. */\n\tfooter?: ReactNode;\n\t/** Keep the aside visible while the nearest page viewport scrolls. */\n\tstickyAside?: boolean;\n\t/** Preserve viewport breakpoints by default, or adapt inside Container/PageViewport. */\n\tadaptTo?: 'viewport' | 'container';\n\t/** Native attributes for each stable region. */\n\tslotProps?: TwoColumnLayoutSlotProps;\n}\n\n/** TwoColumnLayout — one truthful, stable-order main/aside grid. */\nexport const TwoColumnLayout = forwardRef<HTMLDivElement, TwoColumnLayoutProps>(\n\tfunction TwoColumnLayout(\n\t\t{\n\t\t\theader,\n\t\t\tmain,\n\t\t\taside,\n\t\t\tfooter,\n\t\t\tstickyAside = false,\n\t\t\tadaptTo = 'viewport',\n\t\t\tslotProps,\n\t\t\tclassName,\n\t\t\trender,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst { className: headerClassName, ...headerProps } = slotProps?.header ?? {};\n\t\tconst { className: mainClassName, ...mainProps } = slotProps?.main ?? {};\n\t\tconst { className: asideClassName, ...asideProps } = slotProps?.aside ?? {};\n\t\tconst { className: footerClassName, ...footerProps } = slotProps?.footer ?? {};\n\n\t\treturn useRender({\n\t\t\tdefaultTagName: 'div',\n\t\t\tref,\n\t\t\trender,\n\t\t\tprops: {\n\t\t\t\t...props,\n\t\t\t\t'data-slot': 'two-column-layout',\n\t\t\t\tclassName: cn(\n\t\t\t\t\t'two-column-layout--component grid min-w-0 grid-cols-1', compositionClasses.subjects,\n\t\t\t\t\tadaptTo === 'container' ? '@3xl:grid-cols-[minmax(0,2fr)_minmax(18rem,1fr)]' : 'lg:grid-cols-[minmax(0,2fr)_minmax(18rem,1fr)]',\n\t\t\t\t\tclassName,\n\t\t\t\t),\n\t\t\t\tchildren: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{header !== undefined && header !== null ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t{...headerProps}\n\t\t\t\t\t\t\t\tdata-slot=\"two-column-layout-header\"\n\t\t\t\t\t\t\t\tclassName={cn('two-column-layout--header col-span-full min-w-0', headerClassName)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t{...mainProps}\n\t\t\t\t\t\t\tdata-slot=\"two-column-layout-main\"\n\t\t\t\t\t\t\tclassName={cn('two-column-layout--main flex min-h-0 min-w-0 flex-col', compositionClasses.subjects, mainClassName)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{main}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<aside\n\t\t\t\t\t\t\t{...asideProps}\n\t\t\t\t\t\t\tdata-slot=\"two-column-layout-aside\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'two-column-layout--aside flex min-h-0 min-w-0 flex-col', compositionClasses.subjects,\n\t\t\t\t\t\t\t\tstickyAside && (adaptTo === 'container' ? '@3xl:sticky @3xl:top-space-2xl @3xl:self-start' : 'lg:sticky lg:top-space-2xl lg:self-start'),\n\t\t\t\t\t\t\t\tasideClassName,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{aside}\n\t\t\t\t\t\t</aside>\n\t\t\t\t\t\t{footer !== undefined && footer !== null ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t{...footerProps}\n\t\t\t\t\t\t\t\tdata-slot=\"two-column-layout-footer\"\n\t\t\t\t\t\t\t\tclassName={cn('two-column-layout--footer col-span-full min-w-0', footerClassName)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{footer}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t},\n\t\t\tstate: {},\n\t\t});\n\t},\n);\n\nTwoColumnLayout.displayName = 'TwoColumnLayout';\n"],"mappings":";;;;;;;;;;AASA,IAAaO,IAAYC,EAA2C,SACnE,EAAE,cAAW,aAAU,WAAQ,WAAQ,GAAGC,KAC1C,GACC;CACD,OAAOC,EAAU;EAChB,gBAAgB;EAChB;EACA;EACA,OAAO;GACN,GAAGD;GACH,WAAWR,EAAG,2CAA2CI,EAAgB;IAAE;IAAU;GAAO,CAAC,GAAGM,CAAS;EAC1G;EACA,OAAO,CAAC;CACT,CAAC;AACF,CAAC;AAED,EAAU,cAAc;;;AChBxB,IAAaC,IAAeJ,EAA8C,SACzE,EAAE,cAAW,WAAQ,cAAW,GAAG,GAAGC,KACtC,GACC;CACD,OAAOC,EAAU;EAChB,gBAAgB;EAChB;EACA;EACA,OAAO;GACN,GAAGD;GACH;GACA,WAAWR,EACV,yJAAyJY,EAAa,SACtKF,CACD;EACD;EACA,OAAO,CAAC;CACT,CAAC;AACF,CAAC;AAED,EAAa,cAAc;;;ACnB3B,IAAaG,IAAUN,EAAsC,SAC5D,EAAE,cAAW,QAAK,WAAQ,GAAGC,KAC7B,GACC;CACD,OAAOC,EAAU;EAChB,gBAAgB;EAChB;EACA;EACA,OAAO;GACN,GAAGD;GACH,WAAWR,EAAG,sBAAsBC,EAAY,EAAE,KAAKa,KAAOZ,EAAkB,QAAQ,CAAC,GAAGQ,CAAS;EACtG;EACA,OAAO,CAAC;CACT,CAAC;AACF,CAAC;AAED,EAAQ,cAAc;;;ACOtB,IAAaK,IAAkBR,EAC9B,SACC,EACC,WACA,SACA,UACA,WACA,iBAAc,IACd,aAAU,YACV,cACA,cACA,WACA,GAAGC,KAEJ,GACC;CACD,IAAM,EAAE,WAAWQ,GAAiB,GAAGC,MAAgBC,GAAW,UAAU,CAAC,GACvE,EAAE,WAAWC,GAAe,GAAGC,MAAcF,GAAW,QAAQ,CAAC,GACjE,EAAE,WAAWG,GAAgB,GAAGC,MAAeJ,GAAW,SAAS,CAAC,GACpE,EAAE,WAAWK,GAAiB,GAAGC,MAAgBN,GAAW,UAAU,CAAC;CAE7E,OAAOT,EAAU;EAChB,gBAAgB;EAChB;EACA;EACA,OAAO;GACN,GAAGD;GACH,aAAa;GACb,WAAWR,EACV,yDAAyDG,EAAmB,UAC5EsB,MAAY,cAAc,qDAAqD,kDAC/Ef,CACD;GACA,UACC,kBAAAX,GAAA,EAAA,UAAA;IACE2B,KAAmC,OAQhC,OAPH,kBAAC,OAAD;KACC,GAAIT;KACJ,aAAU;KACV,WAAWjB,EAAG,mDAAmDgB,CAAe;KAE/E,UAAAU;IACG,CAAA;IAEN,kBAAC,OAAD;KACC,GAAIN;KACJ,aAAU;KACV,WAAWpB,EAAG,yDAAyDG,EAAmB,UAAUgB,CAAa;KAEhH,UAAAQ;IACG,CAAA;IACL,kBAAC,SAAD;KACC,GAAIL;KACJ,aAAU;KACV,WAAWtB,EACV,0DAA0DG,EAAmB,UAC7EyB,MAAgBH,MAAY,cAAc,mDAAmD,6CAC7FJ,CACD;KAEC,UAAAQ;IACK,CAAA;IACNC,KAAmC,OAQhC,OAPH,kBAAC,OAAD;KACC,GAAIN;KACJ,aAAU;KACV,WAAWxB,EAAG,mDAAmDuB,CAAe;KAE/E,UAAAO;IACG,CAAA;GAEL,EAAA,CAAA;EAEJ;EACA,OAAO,CAAC;CACT,CAAC;AACF,CACD;AAEA,EAAgB,cAAc"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
-
import { t } from "./utils-
|
|
4
|
-
import { n } from "./buttons-
|
|
5
|
-
import { c as r } from "./typography-
|
|
3
|
+
import { t } from "./utils-CF3c95Io.js";
|
|
4
|
+
import { n } from "./buttons-BbfzgczK.js";
|
|
5
|
+
import { c as r } from "./typography-CSyJrh28.js";
|
|
6
6
|
import { forwardRef as i, useEffect as a, useState as o } from "react";
|
|
7
7
|
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
8
8
|
import { Check as l, Copy as u } from "lucide-react";
|
|
@@ -62,4 +62,4 @@ p.displayName = "Copyable";
|
|
|
62
62
|
//#endregion
|
|
63
63
|
export { f as n, p as t };
|
|
64
64
|
|
|
65
|
-
//# sourceMappingURL=copyable-
|
|
65
|
+
//# sourceMappingURL=copyable-CnGCZdX4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copyable-
|
|
1
|
+
{"version":3,"file":"copyable-CnGCZdX4.js","names":["Text","defaultCopyableStrings","Copyable","forwardRef","stringsProp","props","strings","useStrings","copied","setCopied","useState","timeout","handleCopy","value","toast","onCopy","error","onError","hasRichDisplayValue","displayValue","buttonClassName","buttonAriaLabel","copyButtonProps","buttonProps","cn","truncate","className","mono","contentClassName","Button","Check","Copy"],"sources":["../src/components/base/copyable/copyable.tsx"],"sourcesContent":["import { Check, Copy } from 'lucide-react';\nimport {\n\tforwardRef,\n\tuseEffect,\n\tuseState,\n\ttype ComponentPropsWithoutRef,\n\ttype ReactNode,\n} from 'react';\n\nimport { toast } from 'sonner';\n\nimport { Button, type ButtonActionProps } from '../buttons';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nexport interface CopyableStrings {\n\tcopyLabel: string;\n\tcopiedLabel: string;\n\tsuccess: string;\n\terror: string;\n}\n\nexport const defaultCopyableStrings: CopyableStrings = {\n\tcopyLabel: 'Copy value',\n\tcopiedLabel: 'Copied',\n\tsuccess: 'Copied to clipboard',\n\terror: 'Failed to copy',\n};\n\nexport interface CopyableProps extends Omit<\n\tComponentPropsWithoutRef<'span'>,\n\t'children' | 'onCopy' | 'onError'\n> {\n\t/** Value written to the clipboard. */\n\tvalue: string;\n\t/** Optional display content when it differs from the copied value. */\n\tdisplayValue?: ReactNode;\n\t/** Use monospace typography for scalar display content. */\n\tmono?: boolean;\n\t/** Truncate scalar display content with an ellipsis at the width the caller allots. */\n\ttruncate?: boolean;\n\t/** Classes for the scalar display-content wrapper. */\n\tcontentClassName?: string;\n\t/** Classes and native action props for the dedicated copy button. */\n\tbuttonProps?: Omit<ButtonActionProps, 'children' | 'onClick' | 'type'>;\n\t/** Localizable copy affordance and toast copy. */\n\tstrings?: StringsProp<CopyableStrings>;\n\t/** Called after the Clipboard API successfully writes the value. */\n\tonCopy?: (value: string) => void;\n\t/** Called when the Clipboard API rejects the write. */\n\tonError?: (error: unknown) => void;\n}\n\n/**\n * Copyable keeps display content passive and renders a sibling copy button.\n * This permits rich display nodes such as Email or Url without nesting one\n * interactive element inside another.\n */\nexport const Copyable = forwardRef<HTMLSpanElement, CopyableProps>(function Copyable({\n\tvalue,\n\tdisplayValue,\n\tmono = false,\n\ttruncate = false,\n\tclassName,\n\tcontentClassName,\n\tbuttonProps,\n\tstrings: stringsProp,\n\tonCopy,\n\tonError,\n\t...props\n}, ref) {\n\tconst strings = useStrings(defaultCopyableStrings, stringsProp);\n\tconst [copied, setCopied] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!copied) return;\n\t\tconst timeout = window.setTimeout(() => setCopied(false), 2000);\n\t\treturn () => window.clearTimeout(timeout);\n\t}, [copied]);\n\n\tconst handleCopy = async () => {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\tsetCopied(true);\n\t\t\ttoast.success(strings.success);\n\t\t\tonCopy?.(value);\n\t\t} catch (error) {\n\t\t\ttoast.error(strings.error);\n\t\t\tonError?.(error);\n\t\t}\n\t};\n\n\tconst isSimpleText =\n\t\ttypeof displayValue === 'string' ||\n\t\ttypeof displayValue === 'number' ||\n\t\ttypeof displayValue === 'bigint';\n\tconst hasRichDisplayValue = displayValue !== undefined && !isSimpleText;\n\tconst {\n\t\tclassName: buttonClassName,\n\t\t'aria-label': buttonAriaLabel,\n\t\t...copyButtonProps\n\t} = buttonProps ?? {};\n\n\treturn (\n\t\t<span\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'copyable--component group inline-flex min-w-0 items-center gap-space-sm',\n\t\t\t\t// An inline-flex root sizes to its content, so without this it grew\n\t\t\t\t// past the width the caller allotted and took the copy button out of\n\t\t\t\t// view with it. Capping the root is what gives the content something\n\t\t\t\t// to truncate against; `block` on the value below is the other half.\n\t\t\t\ttruncate && 'max-w-full',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"copyable--content min-w-0 text-link-color\">\n\t\t\t\t{hasRichDisplayValue ? (\n\t\t\t\t\tdisplayValue\n\t\t\t\t) : (\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tmono && 'font-mono',\n\t\t\t\t\t\t\t// `block` is load-bearing: Text renders a <span>, and overflow\n\t\t\t\t\t\t\t// and max-width do not apply to a non-replaced inline box, so\n\t\t\t\t\t\t\t// `truncate` alone set only white-space and the value ran past\n\t\t\t\t\t\t\t// its container with no ellipsis. Truncating against the width\n\t\t\t\t\t\t\t// the caller allots also retires a hardcoded max-w-[300px],\n\t\t\t\t\t\t\t// which no consumer token could reach.\n\t\t\t\t\t\t\ttruncate && 'block truncate',\n\t\t\t\t\t\t\t'text-link-color',\n\t\t\t\t\t\t\tcontentClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{displayValue ?? value}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t\t<Button\n\t\t\t\t{...copyButtonProps}\n\t\t\t\ttype=\"button\"\n\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\ttone=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\taria-label={buttonAriaLabel ?? (copied ? strings.copiedLabel : strings.copyLabel)}\n\t\t\t\tonClick={() => void handleCopy()}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'copyable--trigger shrink-0 text-link-color opacity-60 transition-opacity hover:opacity-100 focus-visible:opacity-100',\n\t\t\t\t\tbuttonClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{copied ? (\n\t\t\t\t\t<Check className=\"size-icon-sm text-success\" aria-hidden=\"true\" />\n\t\t\t\t) : (\n\t\t\t\t\t<Copy className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t)}\n\t\t\t</Button>\n\t\t</span>\n\t);\n});\n\nCopyable.displayName = 'Copyable';\n"],"mappings":";;;;;;;;;;AAuBA,IAAaC,IAA0C;CACtD,WAAW;CACX,aAAa;CACb,SAAS;CACT,OAAO;AACR,GA+BaC,IAAWC,EAA2C,SAAkB,EACpF,UACA,iBACA,UAAO,IACP,cAAW,IACX,cACA,qBACA,gBACA,SAASC,GACT,WACA,YACA,GAAGC,KACD,GAAK;CACP,IAAMC,IAAUC,EAAWN,GAAwBG,CAAW,GACxD,CAACI,GAAQC,KAAaC,EAAS,EAAK;CAE1C,QAAgB;EACf,IAAI,CAACF,GAAQ;EACb,IAAMG,IAAU,OAAO,iBAAiBF,EAAU,EAAK,GAAG,GAAI;EAC9D,aAAa,OAAO,aAAaE,CAAO;CACzC,GAAG,CAACH,CAAM,CAAC;CAEX,IAAMI,IAAa,YAAY;EAC9B,IAAI;GAIH,AAHA,MAAM,UAAU,UAAU,UAAUC,CAAK,GACzCJ,EAAU,EAAI,GACdK,EAAM,QAAQR,EAAQ,OAAO,GAC7BS,IAASF,CAAK;EACf,SAASG,GAAO;GAEf,AADAF,EAAM,MAAMR,EAAQ,KAAK,GACzBW,IAAUD,CAAK;EAChB;CACD,GAMME,IAAsBC,MAAiB,KAAA,KAH5C,OAAOA,KAAiB,YACxB,OAAOA,KAAiB,YACxB,OAAOA,KAAiB,UAEnB,EACL,WAAWC,GACX,cAAcC,GACd,GAAGC,MACAC,KAAe,CAAC;CAEpB,OACC,kBAAC,QAAD;EACM;EACL,WAAWC,EACV,2EAKAC,KAAY,cACZC,CACD;EACA,GAAIrB;EAXL,UAAA,CAaC,kBAAC,QAAD;GAAM,WAAU;GACd,UAAAa,IACAC,IAEA,kBAACnB,GAAD;IACC,KAAI;IACJ,WAAWwB,EACVG,KAAQ,aAORF,KAAY,kBACZ,mBACAG,CACD;IAEC,UAAAT,KAAgBN;GACZ,CAAA;EAEF,CAAA,GACN,kBAACgB,GAAD;GACC,GAAIP;GACJ,MAAK;GACL,MAAK;GAAK,UAAA;GACV,MAAK;GACL,aAAY;GACZ,cAAYD,MAAoBb,IAASF,EAAQ,cAAcA,EAAQ;GACvE,eAAe,KAAKM,EAAW;GAC/B,WAAWY,EACV,wHACAJ,CACD;GAEC,UAAAZ,IACA,kBAACsB,GAAD;IAAO,WAAU;IAA4B,eAAY;GAAQ,CAAA,IAEjE,kBAACC,GAAD;IAAM,WAAU;IAAe,eAAY;GAAQ,CAAA;EAE7C,CAAA,CACH;;AAER,CAAC;AAED,EAAS,cAAc"}
|