@bettercms-ai/kit 0.1.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -16
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/adapters/dock-values.d.ts +28 -0
- package/dist/adapters/dock-values.js +41 -0
- package/dist/adapters/dock-values.js.map +1 -0
- package/dist/adapters/icons.d.ts +15 -0
- package/dist/adapters/icons.js +27 -0
- package/dist/adapters/icons.js.map +1 -0
- package/dist/adapters/lossy.d.ts +326 -0
- package/dist/adapters/lossy.js +414 -0
- package/dist/adapters/lossy.js.map +1 -0
- package/dist/adapters/prod-types.d.ts +546 -0
- package/dist/adapters/prod-types.js +714 -0
- package/dist/adapters/prod-types.js.map +1 -0
- package/dist/adapters/schema.d.ts +154 -0
- package/dist/adapters/schema.js +3020 -0
- package/dist/adapters/schema.js.map +1 -0
- package/dist/adapters/values.d.ts +221 -0
- package/dist/adapters/values.js +623 -0
- package/dist/adapters/values.js.map +1 -0
- package/dist/brand/logo.d.ts +17 -0
- package/dist/brand/logo.js +96 -0
- package/dist/brand/logo.js.map +1 -0
- package/dist/context.d.ts +359 -0
- package/dist/context.js +217 -0
- package/dist/context.js.map +1 -0
- package/dist/controls/button.d.ts +72 -0
- package/dist/controls/button.js +578 -0
- package/dist/controls/button.js.map +1 -0
- package/dist/controls/c1.d.ts +11 -0
- package/dist/controls/c1.js +24 -0
- package/dist/controls/c1.js.map +1 -0
- package/dist/controls/c2.d.ts +10 -0
- package/dist/controls/c2.js +19 -0
- package/dist/controls/c2.js.map +1 -0
- package/dist/controls/choice.d.ts +44 -0
- package/dist/controls/choice.js +463 -0
- package/dist/controls/choice.js.map +1 -0
- package/dist/controls/code-register.d.ts +1 -0
- package/dist/controls/code-register.js +8 -0
- package/dist/controls/code-register.js.map +1 -0
- package/dist/controls/code.d.ts +42 -0
- package/dist/controls/code.js +397 -0
- package/dist/controls/code.js.map +1 -0
- package/dist/controls/color.d.ts +5 -0
- package/dist/controls/color.js +130 -0
- package/dist/controls/color.js.map +1 -0
- package/dist/controls/component-services.d.ts +156 -0
- package/dist/controls/component-services.js +7 -0
- package/dist/controls/component-services.js.map +1 -0
- package/dist/controls/date-register.d.ts +1 -0
- package/dist/controls/date-register.js +9 -0
- package/dist/controls/date-register.js.map +1 -0
- package/dist/controls/date-zone.d.ts +104 -0
- package/dist/controls/date-zone.js +278 -0
- package/dist/controls/date-zone.js.map +1 -0
- package/dist/controls/date.d.ts +7 -0
- package/dist/controls/date.js +466 -0
- package/dist/controls/date.js.map +1 -0
- package/dist/controls/form-picker-register.d.ts +1 -0
- package/dist/controls/form-picker-register.js +19 -0
- package/dist/controls/form-picker-register.js.map +1 -0
- package/dist/controls/form-picker.d.ts +43 -0
- package/dist/controls/form-picker.js +85 -0
- package/dist/controls/form-picker.js.map +1 -0
- package/dist/controls/icon-register.d.ts +1 -0
- package/dist/controls/icon-register.js +8 -0
- package/dist/controls/icon-register.js.map +1 -0
- package/dist/controls/icon.d.ts +40 -0
- package/dist/controls/icon.js +360 -0
- package/dist/controls/icon.js.map +1 -0
- package/dist/controls/index.d.ts +5 -0
- package/dist/controls/index.js +38 -0
- package/dist/controls/index.js.map +1 -0
- package/dist/controls/json-register.d.ts +1 -0
- package/dist/controls/json-register.js +8 -0
- package/dist/controls/json-register.js.map +1 -0
- package/dist/controls/json.d.ts +2 -0
- package/dist/controls/json.js +82 -0
- package/dist/controls/json.js.map +1 -0
- package/dist/controls/link.d.ts +260 -0
- package/dist/controls/link.js +1186 -0
- package/dist/controls/link.js.map +1 -0
- package/dist/controls/location-register.d.ts +1 -0
- package/dist/controls/location-register.js +8 -0
- package/dist/controls/location-register.js.map +1 -0
- package/dist/controls/location.d.ts +16 -0
- package/dist/controls/location.js +221 -0
- package/dist/controls/location.js.map +1 -0
- package/dist/controls/media-register.d.ts +1 -0
- package/dist/controls/media-register.js +12 -0
- package/dist/controls/media-register.js.map +1 -0
- package/dist/controls/media-services.d.ts +46 -0
- package/dist/controls/media-services.js +0 -0
- package/dist/controls/media.d.ts +104 -0
- package/dist/controls/media.js +1396 -0
- package/dist/controls/media.js.map +1 -0
- package/dist/controls/number.d.ts +22 -0
- package/dist/controls/number.js +196 -0
- package/dist/controls/number.js.map +1 -0
- package/dist/controls/reference-register.d.ts +1 -0
- package/dist/controls/reference-register.js +10 -0
- package/dist/controls/reference-register.js.map +1 -0
- package/dist/controls/reference-services.d.ts +58 -0
- package/dist/controls/reference-services.js +0 -0
- package/dist/controls/reference.d.ts +23 -0
- package/dist/controls/reference.js +777 -0
- package/dist/controls/reference.js.map +1 -0
- package/dist/controls/rich-text/blocks.d.ts +49 -0
- package/dist/controls/rich-text/blocks.js +1859 -0
- package/dist/controls/rich-text/blocks.js.map +1 -0
- package/dist/controls/rich-text/catalog.d.ts +101 -0
- package/dist/controls/rich-text/catalog.js +623 -0
- package/dist/controls/rich-text/catalog.js.map +1 -0
- package/dist/controls/rich-text/codec.d.ts +64 -0
- package/dist/controls/rich-text/codec.js +34 -0
- package/dist/controls/rich-text/codec.js.map +1 -0
- package/dist/controls/rich-text/component-card.d.ts +14 -0
- package/dist/controls/rich-text/component-card.js +1024 -0
- package/dist/controls/rich-text/component-card.js.map +1 -0
- package/dist/controls/rich-text/component-panel.d.ts +47 -0
- package/dist/controls/rich-text/component-panel.js +141 -0
- package/dist/controls/rich-text/component-panel.js.map +1 -0
- package/dist/controls/rich-text/control.d.ts +20 -0
- package/dist/controls/rich-text/control.js +296 -0
- package/dist/controls/rich-text/control.js.map +1 -0
- package/dist/controls/rich-text/dom.d.ts +233 -0
- package/dist/controls/rich-text/dom.js +1019 -0
- package/dist/controls/rich-text/dom.js.map +1 -0
- package/dist/controls/rich-text/editor.d.ts +57 -0
- package/dist/controls/rich-text/editor.js +1630 -0
- package/dist/controls/rich-text/editor.js.map +1 -0
- package/dist/controls/rich-text/floating.d.ts +28 -0
- package/dist/controls/rich-text/floating.js +154 -0
- package/dist/controls/rich-text/floating.js.map +1 -0
- package/dist/controls/rich-text/index.d.ts +1 -0
- package/dist/controls/rich-text/index.js +12 -0
- package/dist/controls/rich-text/index.js.map +1 -0
- package/dist/controls/rich-text/link-form.d.ts +13 -0
- package/dist/controls/rich-text/link-form.js +147 -0
- package/dist/controls/rich-text/link-form.js.map +1 -0
- package/dist/controls/rich-text/markdown.d.ts +6 -0
- package/dist/controls/rich-text/markdown.js +181 -0
- package/dist/controls/rich-text/markdown.js.map +1 -0
- package/dist/controls/rich-text/ops.d.ts +35 -0
- package/dist/controls/rich-text/ops.js +316 -0
- package/dist/controls/rich-text/ops.js.map +1 -0
- package/dist/controls/rich-text/plain.d.ts +17 -0
- package/dist/controls/rich-text/plain.js +44 -0
- package/dist/controls/rich-text/plain.js.map +1 -0
- package/dist/controls/rich-text/toolbar.d.ts +89 -0
- package/dist/controls/rich-text/toolbar.js +343 -0
- package/dist/controls/rich-text/toolbar.js.map +1 -0
- package/dist/controls/scale.d.ts +56 -0
- package/dist/controls/scale.js +563 -0
- package/dist/controls/scale.js.map +1 -0
- package/dist/controls/slot-register.d.ts +1 -0
- package/dist/controls/slot-register.js +16 -0
- package/dist/controls/slot-register.js.map +1 -0
- package/dist/controls/slot-services.d.ts +122 -0
- package/dist/controls/slot-services.js +155 -0
- package/dist/controls/slot-services.js.map +1 -0
- package/dist/controls/slot.d.ts +33 -0
- package/dist/controls/slot.js +366 -0
- package/dist/controls/slot.js.map +1 -0
- package/dist/controls/table/index.d.ts +1 -0
- package/dist/controls/table/index.js +12 -0
- package/dist/controls/table/index.js.map +1 -0
- package/dist/controls/table/prod.d.ts +21 -0
- package/dist/controls/table/prod.js +79 -0
- package/dist/controls/table/prod.js.map +1 -0
- package/dist/controls/table/refs.d.ts +50 -0
- package/dist/controls/table/refs.js +79 -0
- package/dist/controls/table/refs.js.map +1 -0
- package/dist/controls/table/stored.d.ts +15 -0
- package/dist/controls/table/stored.js +44 -0
- package/dist/controls/table/stored.js.map +1 -0
- package/dist/controls/table/table-editor.d.ts +103 -0
- package/dist/controls/table/table-editor.js +2725 -0
- package/dist/controls/table/table-editor.js.map +1 -0
- package/dist/controls/table/table-link.d.ts +24 -0
- package/dist/controls/table/table-link.js +180 -0
- package/dist/controls/table/table-link.js.map +1 -0
- package/dist/controls/table/table.d.ts +9 -0
- package/dist/controls/table/table.js +103 -0
- package/dist/controls/table/table.js.map +1 -0
- package/dist/controls/text.d.ts +17 -0
- package/dist/controls/text.js +322 -0
- package/dist/controls/text.js.map +1 -0
- package/dist/controls/unknown-value.d.ts +17 -0
- package/dist/controls/unknown-value.js +66 -0
- package/dist/controls/unknown-value.js.map +1 -0
- package/dist/core/core.d.ts +63 -0
- package/dist/core/core.js +171 -0
- package/dist/core/core.js.map +1 -0
- package/dist/core/facets.d.ts +347 -0
- package/dist/core/facets.js +334 -0
- package/dist/core/facets.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.js +3 -0
- package/dist/engine/array.d.ts +101 -0
- package/dist/engine/array.js +906 -0
- package/dist/engine/array.js.map +1 -0
- package/dist/engine/bits.d.ts +24 -0
- package/dist/engine/bits.js +60 -0
- package/dist/engine/bits.js.map +1 -0
- package/dist/engine/breadcrumb.d.ts +45 -0
- package/dist/engine/breadcrumb.js +63 -0
- package/dist/engine/breadcrumb.js.map +1 -0
- package/dist/engine/expand.d.ts +66 -0
- package/dist/engine/expand.js +153 -0
- package/dist/engine/expand.js.map +1 -0
- package/dist/engine/field-list.d.ts +20 -0
- package/dist/engine/field-list.js +19 -0
- package/dist/engine/field-list.js.map +1 -0
- package/dist/engine/field-shell.d.ts +49 -0
- package/dist/engine/field-shell.js +988 -0
- package/dist/engine/field-shell.js.map +1 -0
- package/dist/engine/frame.d.ts +122 -0
- package/dist/engine/frame.js +601 -0
- package/dist/engine/frame.js.map +1 -0
- package/dist/engine/group-summary.d.ts +5 -0
- package/dist/engine/group-summary.js +70 -0
- package/dist/engine/group-summary.js.map +1 -0
- package/dist/engine/grouping.d.ts +238 -0
- package/dist/engine/grouping.js +996 -0
- package/dist/engine/grouping.js.map +1 -0
- package/dist/engine/item-list.d.ts +99 -0
- package/dist/engine/item-list.js +725 -0
- package/dist/engine/item-list.js.map +1 -0
- package/dist/engine/kit-field.d.ts +72 -0
- package/dist/engine/kit-field.js +558 -0
- package/dist/engine/kit-field.js.map +1 -0
- package/dist/engine/schema-form.d.ts +116 -0
- package/dist/engine/schema-form.js +462 -0
- package/dist/engine/schema-form.js.map +1 -0
- package/dist/engine/slot.d.ts +13 -0
- package/dist/engine/slot.js +216 -0
- package/dist/engine/slot.js.map +1 -0
- package/dist/index.d.ts +45 -3139
- package/dist/index.js +47 -2036
- package/dist/index.js.map +1 -0
- package/dist/kit.css +75 -0
- package/dist/lib/cn.d.ts +4 -0
- package/dist/lib/cn.js +56 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/columns.d.ts +14 -0
- package/dist/lib/columns.js +30 -0
- package/dist/lib/columns.js.map +1 -0
- package/dist/lib/frames.d.ts +36 -0
- package/dist/lib/frames.js +214 -0
- package/dist/lib/frames.js.map +1 -0
- package/dist/lib/icon-image.d.ts +10 -0
- package/dist/lib/icon-image.js +8 -0
- package/dist/lib/icon-image.js.map +1 -0
- package/dist/lib/icons.d.ts +16 -0
- package/dist/lib/icons.js +173 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/input-modality.d.ts +11 -0
- package/dist/lib/input-modality.js +47 -0
- package/dist/lib/input-modality.js.map +1 -0
- package/dist/lib/key-event.d.ts +11 -0
- package/dist/lib/key-event.js +16 -0
- package/dist/lib/key-event.js.map +1 -0
- package/dist/lib/path.d.ts +29 -0
- package/dist/lib/path.js +66 -0
- package/dist/lib/path.js.map +1 -0
- package/dist/lib/schema.d.ts +80 -0
- package/dist/lib/schema.js +384 -0
- package/dist/lib/schema.js.map +1 -0
- package/dist/lib/utils.d.ts +7 -0
- package/dist/lib/utils.js +37 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/validate.d.ts +30 -0
- package/dist/lib/validate.js +224 -0
- package/dist/lib/validate.js.map +1 -0
- package/dist/library/analysis.d.ts +23 -0
- package/dist/library/analysis.js +160 -0
- package/dist/library/analysis.js.map +1 -0
- package/dist/library/catalog.d.ts +57 -0
- package/dist/library/catalog.js +307 -0
- package/dist/library/catalog.js.map +1 -0
- package/dist/library/coreNotes.d.ts +8 -0
- package/dist/library/coreNotes.js +111 -0
- package/dist/library/coreNotes.js.map +1 -0
- package/dist/library/coverage.d.ts +40 -0
- package/dist/library/coverage.js +59 -0
- package/dist/library/coverage.js.map +1 -0
- package/dist/library/entries/advanced.entries.d.ts +2 -0
- package/dist/library/entries/advanced.entries.js +6579 -0
- package/dist/library/entries/advanced.entries.js.map +1 -0
- package/dist/library/entries/commerce.entries.d.ts +2 -0
- package/dist/library/entries/commerce.entries.js +4140 -0
- package/dist/library/entries/commerce.entries.js.map +1 -0
- package/dist/library/entries/company.entries.d.ts +2 -0
- package/dist/library/entries/company.entries.js +2731 -0
- package/dist/library/entries/company.entries.js.map +1 -0
- package/dist/library/entries/conversion.entries.d.ts +2 -0
- package/dist/library/entries/conversion.entries.js +3707 -0
- package/dist/library/entries/conversion.entries.js.map +1 -0
- package/dist/library/entries/data.entries.d.ts +7 -0
- package/dist/library/entries/data.entries.js +4613 -0
- package/dist/library/entries/data.entries.js.map +1 -0
- package/dist/library/entries/events.entries.d.ts +2 -0
- package/dist/library/entries/events.entries.js +3428 -0
- package/dist/library/entries/events.entries.js.map +1 -0
- package/dist/library/entries/features.entries.d.ts +2 -0
- package/dist/library/entries/features.entries.js +3157 -0
- package/dist/library/entries/features.entries.js.map +1 -0
- package/dist/library/entries/heroes.entries.d.ts +2 -0
- package/dist/library/entries/heroes.entries.js +3401 -0
- package/dist/library/entries/heroes.entries.js.map +1 -0
- package/dist/library/entries/index.d.ts +3 -0
- package/dist/library/entries/index.js +35 -0
- package/dist/library/entries/index.js.map +1 -0
- package/dist/library/entries/listings.entries.d.ts +2 -0
- package/dist/library/entries/listings.entries.js +2976 -0
- package/dist/library/entries/listings.entries.js.map +1 -0
- package/dist/library/entries/longform.entries.d.ts +2 -0
- package/dist/library/entries/longform.entries.js +4227 -0
- package/dist/library/entries/longform.entries.js.map +1 -0
- package/dist/library/entries/media.entries.d.ts +2 -0
- package/dist/library/entries/media.entries.js +2781 -0
- package/dist/library/entries/media.entries.js.map +1 -0
- package/dist/library/entries/navigation.entries.d.ts +2 -0
- package/dist/library/entries/navigation.entries.js +4011 -0
- package/dist/library/entries/navigation.entries.js.map +1 -0
- package/dist/library/entries/pricing.entries.d.ts +2 -0
- package/dist/library/entries/pricing.entries.js +2383 -0
- package/dist/library/entries/pricing.entries.js.map +1 -0
- package/dist/library/entries/social-proof.entries.d.ts +2 -0
- package/dist/library/entries/social-proof.entries.js +2297 -0
- package/dist/library/entries/social-proof.entries.js.map +1 -0
- package/dist/library/examples/bento.d.ts +92 -0
- package/dist/library/examples/bento.js +201 -0
- package/dist/library/examples/bento.js.map +1 -0
- package/dist/library/examples/blocks.d.ts +14 -0
- package/dist/library/examples/blocks.js +313 -0
- package/dist/library/examples/blocks.js.map +1 -0
- package/dist/library/examples/faq.d.ts +28 -0
- package/dist/library/examples/faq.js +230 -0
- package/dist/library/examples/faq.js.map +1 -0
- package/dist/library/examples/hero.d.ts +43 -0
- package/dist/library/examples/hero.js +222 -0
- package/dist/library/examples/hero.js.map +1 -0
- package/dist/library/examples/index.d.ts +36 -0
- package/dist/library/examples/index.js +109 -0
- package/dist/library/examples/index.js.map +1 -0
- package/dist/library/examples/journalStory.d.ts +93 -0
- package/dist/library/examples/journalStory.js +338 -0
- package/dist/library/examples/journalStory.js.map +1 -0
- package/dist/library/examples/megaMenu.d.ts +134 -0
- package/dist/library/examples/megaMenu.js +442 -0
- package/dist/library/examples/megaMenu.js.map +1 -0
- package/dist/library/examples/pricing.d.ts +103 -0
- package/dist/library/examples/pricing.js +479 -0
- package/dist/library/examples/pricing.js.map +1 -0
- package/dist/library/examples/tabs.d.ts +87 -0
- package/dist/library/examples/tabs.js +180 -0
- package/dist/library/examples/tabs.js.map +1 -0
- package/dist/library/export.d.ts +42 -0
- package/dist/library/export.js +80 -0
- package/dist/library/export.js.map +1 -0
- package/dist/library/index.d.ts +13 -0
- package/dist/library/index.js +6 -0
- package/dist/library/kit-catalog.json +1510 -0
- package/dist/library/types.d.ts +42 -0
- package/dist/library/types.js +0 -0
- package/dist/schema/adapters.d.ts +28 -0
- package/dist/schema/adapters.js +492 -0
- package/dist/schema/adapters.js.map +1 -0
- package/dist/schema/help.d.ts +27 -0
- package/dist/schema/help.js +56 -0
- package/dist/schema/help.js.map +1 -0
- package/dist/schema/scale.d.ts +69 -0
- package/dist/schema/scale.js +250 -0
- package/dist/schema/scale.js.map +1 -0
- package/dist/schema/sources.d.ts +103 -0
- package/dist/schema/sources.js +65 -0
- package/dist/schema/sources.js.map +1 -0
- package/dist/schema/table.d.ts +319 -0
- package/dist/schema/table.js +1199 -0
- package/dist/schema/table.js.map +1 -0
- package/dist/schema/types.d.ts +297 -0
- package/dist/schema/types.js +14 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/table/table-view.d.ts +14 -0
- package/dist/table/table-view.js +140 -0
- package/dist/table/table-view.js.map +1 -0
- package/dist/table/table.css +73 -0
- package/dist/testing/corpus.d.ts +63 -0
- package/dist/testing/corpus.js +129 -0
- package/dist/testing/corpus.js.map +1 -0
- package/dist/testing/test-form.d.ts +11 -0
- package/dist/testing/test-form.js +38 -0
- package/dist/testing/test-form.js.map +1 -0
- package/dist/theme.css +345 -0
- package/dist/theme.d.ts +20 -1504
- package/dist/theme.js +43 -4126
- package/dist/theme.js.map +1 -0
- package/dist/tokens.css +542 -0
- package/dist/types.d.ts +17 -0
- package/dist/types.js +0 -0
- package/dist/ui/action-tray.d.ts +54 -0
- package/dist/ui/action-tray.js +154 -0
- package/dist/ui/action-tray.js.map +1 -0
- package/dist/ui/autocomplete.d.ts +30 -0
- package/dist/ui/autocomplete.js +139 -0
- package/dist/ui/autocomplete.js.map +1 -0
- package/dist/ui/button.d.ts +57 -0
- package/dist/ui/button.js +201 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/choice-switch.d.ts +36 -0
- package/dist/ui/choice-switch.js +57 -0
- package/dist/ui/choice-switch.js.map +1 -0
- package/dist/ui/controls.d.ts +83 -0
- package/dist/ui/controls.js +331 -0
- package/dist/ui/controls.js.map +1 -0
- package/dist/ui/display.d.ts +163 -0
- package/dist/ui/display.js +455 -0
- package/dist/ui/display.js.map +1 -0
- package/dist/ui/expanded-editor-modal.d.ts +26 -0
- package/dist/ui/expanded-editor-modal.js +140 -0
- package/dist/ui/expanded-editor-modal.js.map +1 -0
- package/dist/ui/field-context.d.ts +12 -0
- package/dist/ui/field-context.js +23 -0
- package/dist/ui/field-context.js.map +1 -0
- package/dist/ui/floating-panel.d.ts +152 -0
- package/dist/ui/floating-panel.js +928 -0
- package/dist/ui/floating-panel.js.map +1 -0
- package/dist/ui/index.d.ts +16 -0
- package/dist/ui/index.js +18 -0
- package/dist/ui/input.d.ts +78 -0
- package/dist/ui/input.js +250 -0
- package/dist/ui/input.js.map +1 -0
- package/dist/ui/mode-bar.d.ts +31 -0
- package/dist/ui/mode-bar.js +65 -0
- package/dist/ui/mode-bar.js.map +1 -0
- package/dist/ui/overlay.d.ts +195 -0
- package/dist/ui/overlay.js +697 -0
- package/dist/ui/overlay.js.map +1 -0
- package/dist/ui/path-crumbs.d.ts +90 -0
- package/dist/ui/path-crumbs.js +566 -0
- package/dist/ui/path-crumbs.js.map +1 -0
- package/dist/ui/presence.d.ts +16 -0
- package/dist/ui/presence.js +65 -0
- package/dist/ui/presence.js.map +1 -0
- package/dist/ui/select.d.ts +66 -0
- package/dist/ui/select.js +407 -0
- package/dist/ui/select.js.map +1 -0
- package/dist/ui/shortcut-hint.d.ts +14 -0
- package/dist/ui/shortcut-hint.js +35 -0
- package/dist/ui/shortcut-hint.js.map +1 -0
- package/dist/ui/spinner.d.ts +24 -0
- package/dist/ui/spinner.js +42 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/ui/split-button.d.ts +32 -0
- package/dist/ui/split-button.js +60 -0
- package/dist/ui/split-button.js.map +1 -0
- package/dist/ui/surfaces.d.ts +23 -0
- package/dist/ui/surfaces.js +26 -0
- package/dist/ui/surfaces.js.map +1 -0
- package/dist/ui/tab.d.ts +38 -0
- package/dist/ui/tab.js +87 -0
- package/dist/ui/tab.js.map +1 -0
- package/dist/ui/toast.d.ts +20 -0
- package/dist/ui/toast.js +115 -0
- package/dist/ui/toast.js.map +1 -0
- package/dist/ui/tooltip-root.d.ts +13 -0
- package/dist/ui/tooltip-root.js +77 -0
- package/dist/ui/tooltip-root.js.map +1 -0
- package/dist/ui/variants.d.ts +15 -0
- package/dist/ui/variants.js +14 -0
- package/dist/ui/variants.js.map +1 -0
- package/package.json +76 -50
- package/LICENSE +0 -21
- package/dist/_chunks-cjs/_visual-editing.js +0 -5898
- package/dist/_chunks-cjs/refractor.js +0 -22
- package/dist/_chunks-es/_visual-editing.mjs +0 -5904
- package/dist/_chunks-es/refractor.mjs +0 -25
- package/dist/_color.d.mts +0 -119
- package/dist/_color.d.ts +0 -119
- package/dist/_color.js +0 -1412
- package/dist/_color.mjs +0 -1411
- package/dist/_visual-editing.d.mts +0 -1126
- package/dist/_visual-editing.d.ts +0 -1126
- package/dist/_visual-editing.js +0 -30
- package/dist/_visual-editing.mjs +0 -30
- package/dist/index.d.mts +0 -3140
- package/dist/index.mjs +0 -2044
- package/dist/theme.d.mts +0 -1506
- package/dist/theme.mjs +0 -4126
- package/exports/_visual-editing.ts +0 -31
- package/exports/index.ts +0 -1
- package/exports/theme.ts +0 -1
- package/src/color/index.d.mts +0 -119
- package/src/color/index.mjs +0 -1411
- package/src/core/__workshop__/constants.ts +0 -293
- package/src/core/_compat.ts +0 -264
- package/src/core/components/autocomplete/__mocks__/apiStore.ts +0 -49
- package/src/core/components/autocomplete/__mocks__/countries.ts +0 -245
- package/src/core/components/autocomplete/__workshop__/async.tsx +0 -156
- package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -137
- package/src/core/components/autocomplete/__workshop__/custom.tsx +0 -89
- package/src/core/components/autocomplete/__workshop__/example.tsx +0 -79
- package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +0 -36
- package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +0 -294
- package/src/core/components/autocomplete/__workshop__/index.ts +0 -39
- package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
- package/src/core/components/autocomplete/autocomplete.styles.tsx +0 -39
- package/src/core/components/autocomplete/autocomplete.tsx +0 -767
- package/src/core/components/autocomplete/autocompleteOption.tsx +0 -45
- package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
- package/src/core/components/autocomplete/constants.ts +0 -28
- package/src/core/components/autocomplete/index.ts +0 -2
- package/src/core/components/autocomplete/types.ts +0 -108
- package/src/core/components/breadcrumbs/__workshop__/example.tsx +0 -62
- package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -14
- package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +0 -18
- package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +0 -51
- package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -133
- package/src/core/components/breadcrumbs/index.ts +0 -1
- package/src/core/components/dialog/__workshop__/activate.tsx +0 -134
- package/src/core/components/dialog/__workshop__/autoFocus.tsx +0 -29
- package/src/core/components/dialog/__workshop__/index.ts +0 -19
- package/src/core/components/dialog/__workshop__/layering.tsx +0 -41
- package/src/core/components/dialog/__workshop__/nested.tsx +0 -72
- package/src/core/components/dialog/__workshop__/onScroll.tsx +0 -39
- package/src/core/components/dialog/__workshop__/panes.tsx +0 -82
- package/src/core/components/dialog/__workshop__/position.tsx +0 -30
- package/src/core/components/dialog/__workshop__/props.tsx +0 -75
- package/src/core/components/dialog/__workshop__/provider.tsx +0 -11
- package/src/core/components/dialog/__workshop__/wrapped.tsx +0 -76
- package/src/core/components/dialog/dialog.tsx +0 -430
- package/src/core/components/dialog/dialogContext.ts +0 -20
- package/src/core/components/dialog/dialogProvider.tsx +0 -35
- package/src/core/components/dialog/index.ts +0 -4
- package/src/core/components/dialog/styles.ts +0 -77
- package/src/core/components/dialog/useDialog.ts +0 -11
- package/src/core/components/hotkeys/__workshop__/index.ts +0 -14
- package/src/core/components/hotkeys/__workshop__/plain.tsx +0 -9
- package/src/core/components/hotkeys/hotkeys.test.tsx +0 -42
- package/src/core/components/hotkeys/hotkeys.tsx +0 -66
- package/src/core/components/hotkeys/index.ts +0 -1
- package/src/core/components/index.ts +0 -9
- package/src/core/components/menu/__workshop__/asComponent.tsx +0 -45
- package/src/core/components/menu/__workshop__/avatarMenu.tsx +0 -51
- package/src/core/components/menu/__workshop__/closableMenuButton.tsx +0 -46
- package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +0 -134
- package/src/core/components/menu/__workshop__/customMenuItem.tsx +0 -45
- package/src/core/components/menu/__workshop__/customSelectedState.tsx +0 -39
- package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +0 -40
- package/src/core/components/menu/__workshop__/groups.tsx +0 -156
- package/src/core/components/menu/__workshop__/index.ts +0 -89
- package/src/core/components/menu/__workshop__/menuButton.tsx +0 -80
- package/src/core/components/menu/__workshop__/menuGroupRight.tsx +0 -58
- package/src/core/components/menu/__workshop__/nestedMenu.tsx +0 -22
- package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +0 -41
- package/src/core/components/menu/__workshop__/selectedItem.tsx +0 -69
- package/src/core/components/menu/__workshop__/shouldFocus.tsx +0 -47
- package/src/core/components/menu/__workshop__/tones.tsx +0 -25
- package/src/core/components/menu/__workshop__/withoutArrow.tsx +0 -32
- package/src/core/components/menu/helpers.ts +0 -82
- package/src/core/components/menu/index.ts +0 -5
- package/src/core/components/menu/menu.spacing.test.tsx +0 -63
- package/src/core/components/menu/menu.test.tsx +0 -125
- package/src/core/components/menu/menu.tsx +0 -178
- package/src/core/components/menu/menuButton.tsx +0 -268
- package/src/core/components/menu/menuContext.ts +0 -18
- package/src/core/components/menu/menuDivider.ts +0 -23
- package/src/core/components/menu/menuGroup.spacing.test.tsx +0 -63
- package/src/core/components/menu/menuGroup.tsx +0 -233
- package/src/core/components/menu/menuItem.spacing.test.tsx +0 -59
- package/src/core/components/menu/menuItem.tsx +0 -197
- package/src/core/components/menu/useMenu.ts +0 -21
- package/src/core/components/menu/useMenuController.ts +0 -231
- package/src/core/components/skeleton/__workshop__/delay.tsx +0 -70
- package/src/core/components/skeleton/__workshop__/index.ts +0 -11
- package/src/core/components/skeleton/__workshop__/skeleton.tsx +0 -64
- package/src/core/components/skeleton/index.ts +0 -2
- package/src/core/components/skeleton/skeleton.tsx +0 -57
- package/src/core/components/skeleton/styles.ts +0 -50
- package/src/core/components/skeleton/textSkeleton.tsx +0 -122
- package/src/core/components/tab/__workshop__/example.tsx +0 -79
- package/src/core/components/tab/__workshop__/index.ts +0 -14
- package/src/core/components/tab/index.ts +0 -3
- package/src/core/components/tab/tab.tsx +0 -101
- package/src/core/components/tab/tabList.test.tsx +0 -48
- package/src/core/components/tab/tabList.tsx +0 -70
- package/src/core/components/tab/tabPanel.tsx +0 -39
- package/src/core/components/toast/__workshop__/hook.tsx +0 -71
- package/src/core/components/toast/__workshop__/index.ts +0 -19
- package/src/core/components/toast/__workshop__/toast.tsx +0 -26
- package/src/core/components/toast/index.ts +0 -4
- package/src/core/components/toast/styles.ts +0 -77
- package/src/core/components/toast/toast.test.tsx +0 -101
- package/src/core/components/toast/toast.tsx +0 -198
- package/src/core/components/toast/toastContext.ts +0 -7
- package/src/core/components/toast/toastLayer.tsx +0 -51
- package/src/core/components/toast/toastProvider.tsx +0 -113
- package/src/core/components/toast/toastState.ts +0 -6
- package/src/core/components/toast/types.ts +0 -26
- package/src/core/components/toast/useToast.ts +0 -25
- package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
- package/src/core/components/tree/__workshop__/basic.tsx +0 -105
- package/src/core/components/tree/__workshop__/index.ts +0 -21
- package/src/core/components/tree/__workshop__/tabFromElement.tsx +0 -84
- package/src/core/components/tree/helpers.ts +0 -105
- package/src/core/components/tree/index.ts +0 -4
- package/src/core/components/tree/style.ts +0 -105
- package/src/core/components/tree/tree.test.tsx +0 -55
- package/src/core/components/tree/tree.tsx +0 -240
- package/src/core/components/tree/treeContext.ts +0 -10
- package/src/core/components/tree/treeGroup.tsx +0 -28
- package/src/core/components/tree/treeItem.test.tsx +0 -65
- package/src/core/components/tree/treeItem.tsx +0 -224
- package/src/core/components/tree/types.ts +0 -25
- package/src/core/components/tree/useTree.ts +0 -17
- package/src/core/constants.ts +0 -79
- package/src/core/helpers/animation.ts +0 -27
- package/src/core/helpers/element.ts +0 -55
- package/src/core/helpers/focus.ts +0 -100
- package/src/core/helpers/index.ts +0 -4
- package/src/core/helpers/scroll.ts +0 -15
- package/src/core/hooks/index.ts +0 -12
- package/src/core/hooks/useArrayProp.ts +0 -17
- package/src/core/hooks/useClickOutside.test.tsx +0 -482
- package/src/core/hooks/useClickOutside.ts +0 -118
- package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -115
- package/src/core/hooks/useClickOutsideEvent.ts +0 -73
- package/src/core/hooks/useCustomValidity.ts +0 -13
- package/src/core/hooks/useDelayed.test.ts +0 -88
- package/src/core/hooks/useDelayedState.ts +0 -36
- package/src/core/hooks/useElementRect/__workshop__/example.tsx +0 -32
- package/src/core/hooks/useElementRect/__workshop__/index.ts +0 -14
- package/src/core/hooks/useElementRect/index.ts +0 -1
- package/src/core/hooks/useElementRect/useElementRect.ts +0 -13
- package/src/core/hooks/useElementSize.ts +0 -19
- package/src/core/hooks/useForwardedRef.ts +0 -19
- package/src/core/hooks/useGlobalKeyDown.ts +0 -24
- package/src/core/hooks/useIsomorphicEffect.ts +0 -7
- package/src/core/hooks/useMatchMedia.ts +0 -28
- package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -14
- package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +0 -14
- package/src/core/hooks/useMediaIndex/index.ts +0 -1
- package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -36
- package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -102
- package/src/core/hooks/useMounted.ts +0 -15
- package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -56
- package/src/core/hooks/usePrefersDark.test.tsx +0 -19
- package/src/core/hooks/usePrefersDark.ts +0 -16
- package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
- package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -19
- package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
- package/src/core/index.ts +0 -10
- package/src/core/lib/createGlobalScopedContext.ts +0 -36
- package/src/core/lib/globalScope.ts +0 -19
- package/src/core/lib/isRecord.ts +0 -3
- package/src/core/middleware/origin.ts +0 -47
- package/src/core/observers/elementSizeObserver.ts +0 -116
- package/src/core/observers/index.ts +0 -2
- package/src/core/observers/resizeObserver.ts +0 -9
- package/src/core/primitives/_selectable/index.ts +0 -1
- package/src/core/primitives/_selectable/selectable.tsx +0 -15
- package/src/core/primitives/_selectable/style.ts +0 -115
- package/src/core/primitives/avatar/__workshop__/asButton.tsx +0 -14
- package/src/core/primitives/avatar/__workshop__/index.ts +0 -29
- package/src/core/primitives/avatar/__workshop__/stack.tsx +0 -25
- package/src/core/primitives/avatar/__workshop__/withinButton.tsx +0 -63
- package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +0 -70
- package/src/core/primitives/avatar/avatar.tsx +0 -200
- package/src/core/primitives/avatar/avatarCounter.tsx +0 -91
- package/src/core/primitives/avatar/avatarStack.tsx +0 -100
- package/src/core/primitives/avatar/index.ts +0 -4
- package/src/core/primitives/avatar/styles.ts +0 -167
- package/src/core/primitives/avatar/types.ts +0 -17
- package/src/core/primitives/badge/__workshop__/index.ts +0 -19
- package/src/core/primitives/badge/__workshop__/props.tsx +0 -30
- package/src/core/primitives/badge/__workshop__/tones.tsx +0 -21
- package/src/core/primitives/badge/badge.test.tsx +0 -16
- package/src/core/primitives/badge/badge.tsx +0 -70
- package/src/core/primitives/badge/index.ts +0 -1
- package/src/core/primitives/badge/styles.ts +0 -20
- package/src/core/primitives/badge/types.ts +0 -8
- package/src/core/primitives/box/__workshop__/asComponent.tsx +0 -31
- package/src/core/primitives/box/__workshop__/index.ts +0 -24
- package/src/core/primitives/box/__workshop__/props.tsx +0 -20
- package/src/core/primitives/box/__workshop__/responsive.tsx +0 -20
- package/src/core/primitives/box/box.test.tsx +0 -142
- package/src/core/primitives/box/box.tsx +0 -154
- package/src/core/primitives/box/index.ts +0 -1
- package/src/core/primitives/button/__workshop__/custom.tsx +0 -51
- package/src/core/primitives/button/__workshop__/customIcons.tsx +0 -30
- package/src/core/primitives/button/__workshop__/disabled.tsx +0 -74
- package/src/core/primitives/button/__workshop__/index.ts +0 -59
- package/src/core/primitives/button/__workshop__/labelUploadButton.tsx +0 -36
- package/src/core/primitives/button/__workshop__/mixedChildren.tsx +0 -12
- package/src/core/primitives/button/__workshop__/props.tsx +0 -55
- package/src/core/primitives/button/__workshop__/stacked.tsx +0 -58
- package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
- package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
- package/src/core/primitives/button/__workshop__/uploadButton.tsx +0 -28
- package/src/core/primitives/button/button.test.tsx +0 -82
- package/src/core/primitives/button/button.tsx +0 -210
- package/src/core/primitives/button/index.ts +0 -1
- package/src/core/primitives/button/styles.ts +0 -117
- package/src/core/primitives/card/__workshop__/allTones.tsx +0 -25
- package/src/core/primitives/card/__workshop__/asButton.tsx +0 -107
- package/src/core/primitives/card/__workshop__/asComponent.tsx +0 -27
- package/src/core/primitives/card/__workshop__/checkered.tsx +0 -26
- package/src/core/primitives/card/__workshop__/index.ts +0 -18
- package/src/core/primitives/card/__workshop__/interactive.tsx +0 -30
- package/src/core/primitives/card/__workshop__/listNavigation.tsx +0 -80
- package/src/core/primitives/card/__workshop__/props.tsx +0 -53
- package/src/core/primitives/card/__workshop__/selected.tsx +0 -94
- package/src/core/primitives/card/__workshop__/styled.tsx +0 -14
- package/src/core/primitives/card/card.tsx +0 -128
- package/src/core/primitives/card/index.ts +0 -2
- package/src/core/primitives/card/styles.ts +0 -147
- package/src/core/primitives/card/types.ts +0 -11
- package/src/core/primitives/checkbox/__workshop__/example.tsx +0 -25
- package/src/core/primitives/checkbox/__workshop__/index.ts +0 -13
- package/src/core/primitives/checkbox/__workshop__/props.tsx +0 -33
- package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +0 -16
- package/src/core/primitives/checkbox/__workshop__/tones.tsx +0 -28
- package/src/core/primitives/checkbox/checkbox.tsx +0 -73
- package/src/core/primitives/checkbox/index.ts +0 -1
- package/src/core/primitives/checkbox/styles.ts +0 -128
- package/src/core/primitives/code/__workshop__/index.ts +0 -19
- package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/code/__workshop__/props.tsx +0 -21
- package/src/core/primitives/code/code.tsx +0 -55
- package/src/core/primitives/code/index.ts +0 -1
- package/src/core/primitives/code/refractor.tsx +0 -20
- package/src/core/primitives/code/styles.ts +0 -77
- package/src/core/primitives/container/__workshop__/example.tsx +0 -20
- package/src/core/primitives/container/__workshop__/index.ts +0 -8
- package/src/core/primitives/container/container.tsx +0 -54
- package/src/core/primitives/container/index.ts +0 -2
- package/src/core/primitives/container/styles.ts +0 -23
- package/src/core/primitives/container/types.ts +0 -6
- package/src/core/primitives/flex/__workshop__/example.tsx +0 -34
- package/src/core/primitives/flex/__workshop__/gap.tsx +0 -25
- package/src/core/primitives/flex/__workshop__/index.ts +0 -11
- package/src/core/primitives/flex/flex.tsx +0 -64
- package/src/core/primitives/flex/index.ts +0 -1
- package/src/core/primitives/grid/__workshop__/index.ts +0 -10
- package/src/core/primitives/grid/__workshop__/responsive.tsx +0 -54
- package/src/core/primitives/grid/grid.test.tsx +0 -80
- package/src/core/primitives/grid/grid.tsx +0 -74
- package/src/core/primitives/grid/index.ts +0 -1
- package/src/core/primitives/heading/__workshop__/index.ts +0 -19
- package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +0 -54
- package/src/core/primitives/heading/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/heading/heading.tsx +0 -88
- package/src/core/primitives/heading/index.ts +0 -1
- package/src/core/primitives/heading/styles.ts +0 -64
- package/src/core/primitives/heading/types.ts +0 -7
- package/src/core/primitives/index.ts +0 -27
- package/src/core/primitives/inline/__workshop__/index.ts +0 -8
- package/src/core/primitives/inline/__workshop__/plain.tsx +0 -27
- package/src/core/primitives/inline/index.ts +0 -1
- package/src/core/primitives/inline/inline.test.tsx +0 -51
- package/src/core/primitives/inline/inline.tsx +0 -63
- package/src/core/primitives/inline/styles.ts +0 -32
- package/src/core/primitives/inline/types.ts +0 -6
- package/src/core/primitives/kbd/__workshop__/index.ts +0 -8
- package/src/core/primitives/kbd/__workshop__/plain.tsx +0 -9
- package/src/core/primitives/kbd/index.ts +0 -1
- package/src/core/primitives/kbd/kbd.tsx +0 -69
- package/src/core/primitives/label/__workshop__/index.ts +0 -19
- package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/label/__workshop__/plain.tsx +0 -24
- package/src/core/primitives/label/index.ts +0 -1
- package/src/core/primitives/label/label.tsx +0 -87
- package/src/core/primitives/label/styles.ts +0 -45
- package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -77
- package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
- package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
- package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
- package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -71
- package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
- package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -89
- package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -97
- package/src/core/primitives/popover/__workshop__/index.ts +0 -49
- package/src/core/primitives/popover/constants.ts +0 -22
- package/src/core/primitives/popover/floating-ui/size.ts +0 -99
- package/src/core/primitives/popover/helpers.ts +0 -31
- package/src/core/primitives/popover/index.ts +0 -2
- package/src/core/primitives/popover/popover.tsx +0 -511
- package/src/core/primitives/popover/popoverCard.tsx +0 -166
- package/src/core/primitives/popover/types.ts +0 -7
- package/src/core/primitives/radio/__workshop__/example.tsx +0 -63
- package/src/core/primitives/radio/__workshop__/index.ts +0 -11
- package/src/core/primitives/radio/__workshop__/plain.tsx +0 -28
- package/src/core/primitives/radio/index.ts +0 -1
- package/src/core/primitives/radio/radio.tsx +0 -51
- package/src/core/primitives/radio/styles.ts +0 -117
- package/src/core/primitives/select/__workshop__/index.ts +0 -11
- package/src/core/primitives/select/__workshop__/plain.tsx +0 -27
- package/src/core/primitives/select/__workshop__/readOnly.tsx +0 -23
- package/src/core/primitives/select/index.ts +0 -1
- package/src/core/primitives/select/select.test.tsx +0 -52
- package/src/core/primitives/select/select.tsx +0 -94
- package/src/core/primitives/select/styles.ts +0 -166
- package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -15
- package/src/core/primitives/spinner/__workshop__/index.ts +0 -14
- package/src/core/primitives/spinner/index.ts +0 -1
- package/src/core/primitives/spinner/spinner.tsx +0 -46
- package/src/core/primitives/stack/__workshop__/index.ts +0 -14
- package/src/core/primitives/stack/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/stack/index.ts +0 -1
- package/src/core/primitives/stack/stack.test.tsx +0 -57
- package/src/core/primitives/stack/stack.tsx +0 -57
- package/src/core/primitives/stack/styles.ts +0 -32
- package/src/core/primitives/switch/__workshop__/example.tsx +0 -23
- package/src/core/primitives/switch/__workshop__/index.ts +0 -11
- package/src/core/primitives/switch/__workshop__/props.tsx +0 -21
- package/src/core/primitives/switch/index.ts +0 -1
- package/src/core/primitives/switch/styles.ts +0 -173
- package/src/core/primitives/switch/switch.tsx +0 -68
- package/src/core/primitives/text/__workshop__/colored.tsx +0 -30
- package/src/core/primitives/text/__workshop__/example.tsx +0 -39
- package/src/core/primitives/text/__workshop__/index.ts +0 -24
- package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/text/index.ts +0 -1
- package/src/core/primitives/text/styles.ts +0 -74
- package/src/core/primitives/text/text.tsx +0 -89
- package/src/core/primitives/textArea/__workshop__/index.ts +0 -14
- package/src/core/primitives/textArea/__workshop__/plain.tsx +0 -50
- package/src/core/primitives/textArea/index.ts +0 -1
- package/src/core/primitives/textArea/textArea.tsx +0 -120
- package/src/core/primitives/textInput/__workshop__/clearButton.tsx +0 -30
- package/src/core/primitives/textInput/__workshop__/customValidity.tsx +0 -17
- package/src/core/primitives/textInput/__workshop__/index.ts +0 -44
- package/src/core/primitives/textInput/__workshop__/plain.tsx +0 -98
- package/src/core/primitives/textInput/__workshop__/readOnly.tsx +0 -9
- package/src/core/primitives/textInput/__workshop__/states.tsx +0 -53
- package/src/core/primitives/textInput/__workshop__/tones.tsx +0 -277
- package/src/core/primitives/textInput/__workshop__/typed.tsx +0 -23
- package/src/core/primitives/textInput/index.ts +0 -1
- package/src/core/primitives/textInput/textInput.test.tsx +0 -48
- package/src/core/primitives/textInput/textInput.tsx +0 -395
- package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +0 -102
- package/src/core/primitives/tooltip/__workshop__/index.ts +0 -29
- package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +0 -74
- package/src/core/primitives/tooltip/__workshop__/props.tsx +0 -107
- package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +0 -86
- package/src/core/primitives/tooltip/constants.ts +0 -23
- package/src/core/primitives/tooltip/index.ts +0 -2
- package/src/core/primitives/tooltip/tooltip.test.tsx +0 -452
- package/src/core/primitives/tooltip/tooltip.tsx +0 -495
- package/src/core/primitives/tooltip/tooltipCard.tsx +0 -109
- package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
- package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -11
- package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -57
- package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -10
- package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
- package/src/core/primitives/types.ts +0 -179
- package/src/core/styles/border/borderStyle.ts +0 -56
- package/src/core/styles/border/index.ts +0 -2
- package/src/core/styles/border/types.ts +0 -10
- package/src/core/styles/box/boxStyle.ts +0 -69
- package/src/core/styles/box/index.ts +0 -2
- package/src/core/styles/box/types.ts +0 -11
- package/src/core/styles/card/_cardColorStyle.ts +0 -108
- package/src/core/styles/card/index.ts +0 -1
- package/src/core/styles/flex/flexItemStyle.ts +0 -27
- package/src/core/styles/flex/flexStyle.ts +0 -70
- package/src/core/styles/flex/index.ts +0 -3
- package/src/core/styles/flex/types.ts +0 -25
- package/src/core/styles/focusRing/index.ts +0 -25
- package/src/core/styles/font/codeFontStyle.ts +0 -13
- package/src/core/styles/font/headingFontStyle.ts +0 -13
- package/src/core/styles/font/index.ts +0 -6
- package/src/core/styles/font/labelFontStyle.ts +0 -13
- package/src/core/styles/font/responsiveFont.ts +0 -103
- package/src/core/styles/font/textAlignStyle.ts +0 -19
- package/src/core/styles/font/textFontStyle.ts +0 -13
- package/src/core/styles/font/types.ts +0 -35
- package/src/core/styles/grid/gridItemStyle.ts +0 -82
- package/src/core/styles/grid/gridStyle.ts +0 -108
- package/src/core/styles/grid/index.ts +0 -3
- package/src/core/styles/grid/types.ts +0 -37
- package/src/core/styles/helpers.ts +0 -72
- package/src/core/styles/index.ts +0 -5
- package/src/core/styles/input/index.ts +0 -2
- package/src/core/styles/input/responsiveInputPaddingStyle.ts +0 -78
- package/src/core/styles/input/textInputStyle.ts +0 -263
- package/src/core/styles/internal.ts +0 -12
- package/src/core/styles/margin/index.ts +0 -2
- package/src/core/styles/margin/marginStyle.ts +0 -21
- package/src/core/styles/margin/marginsStyle.test.ts +0 -33
- package/src/core/styles/margin/types.ts +0 -9
- package/src/core/styles/padding/index.ts +0 -2
- package/src/core/styles/padding/paddingStyle.test.ts +0 -33
- package/src/core/styles/padding/paddingStyle.ts +0 -21
- package/src/core/styles/padding/types.ts +0 -12
- package/src/core/styles/radius/index.ts +0 -2
- package/src/core/styles/radius/radiusStyle.ts +0 -23
- package/src/core/styles/radius/types.ts +0 -8
- package/src/core/styles/shadow/index.ts +0 -2
- package/src/core/styles/shadow/shadowStyle.ts +0 -29
- package/src/core/styles/shadow/types.ts +0 -6
- package/src/core/styles/types.ts +0 -8
- package/src/core/theme/__workshop__/build/Root.tsx +0 -367
- package/src/core/theme/__workshop__/build/helpers.ts +0 -46
- package/src/core/theme/__workshop__/build/story.tsx +0 -465
- package/src/core/theme/__workshop__/canvas.tsx +0 -352
- package/src/core/theme/__workshop__/color.tsx +0 -62
- package/src/core/theme/__workshop__/debug/story.tsx +0 -408
- package/src/core/theme/__workshop__/index.ts +0 -39
- package/src/core/theme/__workshop__/layer.tsx +0 -78
- package/src/core/theme/__workshop__/nestedProvider.tsx +0 -15
- package/src/core/theme/index.ts +0 -5
- package/src/core/theme/theme.test.tsx +0 -73
- package/src/core/theme/themeColorProvider.tsx +0 -29
- package/src/core/theme/themeContext.ts +0 -10
- package/src/core/theme/themeProvider.tsx +0 -62
- package/src/core/theme/types.ts +0 -12
- package/src/core/theme/useRootTheme.ts +0 -17
- package/src/core/theme/useTheme.ts +0 -16
- package/src/core/types/avatar.ts +0 -14
- package/src/core/types/badge.ts +0 -12
- package/src/core/types/box.ts +0 -19
- package/src/core/types/button.ts +0 -21
- package/src/core/types/card.ts +0 -6
- package/src/core/types/component.ts +0 -32
- package/src/core/types/dialog.ts +0 -4
- package/src/core/types/flex.ts +0 -30
- package/src/core/types/grid.ts +0 -14
- package/src/core/types/gridItem.ts +0 -29
- package/src/core/types/index.ts +0 -15
- package/src/core/types/placement.ts +0 -18
- package/src/core/types/popover.ts +0 -4
- package/src/core/types/radius.ts +0 -4
- package/src/core/types/selectable.ts +0 -6
- package/src/core/types/text.ts +0 -4
- package/src/core/utils/arrow/arrow.tsx +0 -123
- package/src/core/utils/arrow/cmds.ts +0 -91
- package/src/core/utils/arrow/index.ts +0 -1
- package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -14
- package/src/core/utils/boundaryElement/__workshop__/plain.tsx +0 -19
- package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -100
- package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -7
- package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -24
- package/src/core/utils/boundaryElement/index.ts +0 -3
- package/src/core/utils/boundaryElement/types.ts +0 -7
- package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -26
- package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -21
- package/src/core/utils/conditionalWrapper/index.ts +0 -1
- package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -30
- package/src/core/utils/elementQuery/__workshop__/index.ts +0 -14
- package/src/core/utils/elementQuery/elementQuery.tsx +0 -53
- package/src/core/utils/elementQuery/helpers.ts +0 -27
- package/src/core/utils/elementQuery/index.ts +0 -1
- package/src/core/utils/errorBoundary.tsx +0 -48
- package/src/core/utils/getElementRef.ts +0 -26
- package/src/core/utils/index.ts +0 -9
- package/src/core/utils/layer/__workshop__/_debug.tsx +0 -17
- package/src/core/utils/layer/__workshop__/index.ts +0 -24
- package/src/core/utils/layer/__workshop__/multipleRoots.tsx +0 -49
- package/src/core/utils/layer/__workshop__/nested.tsx +0 -98
- package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +0 -13
- package/src/core/utils/layer/getLayerContext.test.ts +0 -30
- package/src/core/utils/layer/getLayerContext.ts +0 -21
- package/src/core/utils/layer/index.ts +0 -4
- package/src/core/utils/layer/layer.test.tsx +0 -108
- package/src/core/utils/layer/layer.tsx +0 -98
- package/src/core/utils/layer/layerContext.ts +0 -7
- package/src/core/utils/layer/layerProvider.tsx +0 -111
- package/src/core/utils/layer/types.ts +0 -9
- package/src/core/utils/layer/useLayer.ts +0 -26
- package/src/core/utils/portal/__workshop__/index.ts +0 -14
- package/src/core/utils/portal/__workshop__/named.tsx +0 -63
- package/src/core/utils/portal/index.ts +0 -4
- package/src/core/utils/portal/portal.test.tsx +0 -103
- package/src/core/utils/portal/portal.ts +0 -32
- package/src/core/utils/portal/portalContext.ts +0 -31
- package/src/core/utils/portal/portalProvider.tsx +0 -47
- package/src/core/utils/portal/types.ts +0 -9
- package/src/core/utils/portal/usePortal.ts +0 -25
- package/src/core/utils/spanWithTextOverflow.tsx +0 -10
- package/src/core/utils/srOnly/index.ts +0 -1
- package/src/core/utils/srOnly/srOnly.tsx +0 -36
- package/src/core/utils/virtualList/__workshop__/changingProps.tsx +0 -36
- package/src/core/utils/virtualList/__workshop__/elementScroll.tsx +0 -24
- package/src/core/utils/virtualList/__workshop__/index.ts +0 -29
- package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +0 -48
- package/src/core/utils/virtualList/__workshop__/windowScrolll.tsx +0 -22
- package/src/core/utils/virtualList/index.ts +0 -1
- package/src/core/utils/virtualList/virtualList.tsx +0 -200
- package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -76
- package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +0 -54
- package/src/theme/build/_deprecated/color/button/createButtonModes.ts +0 -22
- package/src/theme/build/_deprecated/color/button/createButtonTones.ts +0 -55
- package/src/theme/build/_deprecated/color/card/createCardStates.ts +0 -60
- package/src/theme/build/_deprecated/color/color.test.ts +0 -63
- package/src/theme/build/_deprecated/color/defaults.ts +0 -390
- package/src/theme/build/_deprecated/color/factory.ts +0 -142
- package/src/theme/build/_deprecated/color/index.ts +0 -1
- package/src/theme/build/_deprecated/color/input/createInputModes.ts +0 -81
- package/src/theme/build/_deprecated/color/muted/createMuted.ts +0 -54
- package/src/theme/build/_deprecated/color/spot/createSpot.ts +0 -20
- package/src/theme/build/buildColorTheme.test.ts +0 -183
- package/src/theme/build/buildColorTheme.ts +0 -499
- package/src/theme/build/buildTheme.test.ts +0 -87
- package/src/theme/build/buildTheme.ts +0 -36
- package/src/theme/build/colorToken/colorToken.ts +0 -19
- package/src/theme/build/colorToken/compileColorToken.ts +0 -21
- package/src/theme/build/colorToken/index.ts +0 -2
- package/src/theme/build/colorToken/types.ts +0 -6
- package/src/theme/build/index.ts +0 -3
- package/src/theme/build/lib/color-fns/blend/index.ts +0 -3
- package/src/theme/build/lib/color-fns/blend/mix.ts +0 -21
- package/src/theme/build/lib/color-fns/blend/multiply.ts +0 -18
- package/src/theme/build/lib/color-fns/blend/screen.ts +0 -18
- package/src/theme/build/lib/color-fns/color-fns.test.ts +0 -68
- package/src/theme/build/lib/color-fns/contrastRatio.ts +0 -31
- package/src/theme/build/lib/color-fns/convert.ts +0 -150
- package/src/theme/build/lib/color-fns/index.ts +0 -6
- package/src/theme/build/lib/color-fns/parse.ts +0 -60
- package/src/theme/build/lib/color-fns/rgba.ts +0 -10
- package/src/theme/build/lib/color-fns/types.ts +0 -28
- package/src/theme/build/lib/isRecord.ts +0 -3
- package/src/theme/build/lib/lazy.ts +0 -30
- package/src/theme/build/lib/utils.ts +0 -19
- package/src/theme/build/merge.ts +0 -26
- package/src/theme/build/mixThemeColor.test.ts +0 -21
- package/src/theme/build/mixThemeColor.ts +0 -53
- package/src/theme/build/renderColorTheme.ts +0 -532
- package/src/theme/build/renderColorValue.ts +0 -85
- package/src/theme/build/resolveColorTokens.ts +0 -268
- package/src/theme/build/theme.test.ts +0 -27
- package/src/theme/config/helpers.ts +0 -55
- package/src/theme/config/index.ts +0 -4
- package/src/theme/config/system.ts +0 -115
- package/src/theme/config/tokens/color/index.ts +0 -1
- package/src/theme/config/tokens/color/types.ts +0 -133
- package/src/theme/config/tokens/index.ts +0 -4
- package/src/theme/config/tokens/parseTokenKey.test.ts +0 -64
- package/src/theme/config/tokens/parseTokenKey.ts +0 -67
- package/src/theme/config/tokens/parseTokenValue.test.ts +0 -42
- package/src/theme/config/tokens/parseTokenValue.ts +0 -133
- package/src/theme/config/tokens/types.ts +0 -53
- package/src/theme/config/types.ts +0 -46
- package/src/theme/defaults/colorPalette.ts +0 -5
- package/src/theme/defaults/colorTokens.ts +0 -648
- package/src/theme/defaults/config.ts +0 -84
- package/src/theme/defaults/fonts.ts +0 -227
- package/src/theme/getScopedTheme.ts +0 -98
- package/src/theme/index.ts +0 -5
- package/src/theme/system/avatar.ts +0 -14
- package/src/theme/system/color/_constants.ts +0 -45
- package/src/theme/system/color/_helpers.ts +0 -24
- package/src/theme/system/color/_system.ts +0 -40
- package/src/theme/system/color/avatar.ts +0 -15
- package/src/theme/system/color/badge.ts +0 -16
- package/src/theme/system/color/button.ts +0 -17
- package/src/theme/system/color/color.ts +0 -34
- package/src/theme/system/color/index.ts +0 -13
- package/src/theme/system/color/input.ts +0 -25
- package/src/theme/system/color/kbd.ts +0 -8
- package/src/theme/system/color/selectable.ts +0 -12
- package/src/theme/system/color/shadow.ts +0 -7
- package/src/theme/system/color/state.ts +0 -43
- package/src/theme/system/color/syntax.ts +0 -41
- package/src/theme/system/css.ts +0 -14
- package/src/theme/system/focusRing.ts +0 -7
- package/src/theme/system/font.ts +0 -52
- package/src/theme/system/index.ts +0 -11
- package/src/theme/system/input.ts +0 -33
- package/src/theme/system/layer.ts +0 -8
- package/src/theme/system/shadow.ts +0 -19
- package/src/theme/system/styles.ts +0 -13
- package/src/theme/system/theme.ts +0 -138
- package/src/theme/system/v0/avatar.ts +0 -10
- package/src/theme/system/v0/color/_generic.ts +0 -35
- package/src/theme/system/v0/color/_system.ts +0 -17
- package/src/theme/system/v0/color/base.ts +0 -21
- package/src/theme/system/v0/color/button.ts +0 -42
- package/src/theme/system/v0/color/card.ts +0 -19
- package/src/theme/system/v0/color/color.ts +0 -40
- package/src/theme/system/v0/color/index.ts +0 -11
- package/src/theme/system/v0/color/input.ts +0 -34
- package/src/theme/system/v0/color/muted.ts +0 -26
- package/src/theme/system/v0/color/selectable.ts +0 -31
- package/src/theme/system/v0/color/solid.ts +0 -26
- package/src/theme/system/v0/color/spot.ts +0 -13
- package/src/theme/system/v0/index.ts +0 -3
- package/src/theme/system/v0/input.ts +0 -23
- package/src/theme/versioning/getTheme_v2.ts +0 -57
- package/src/theme/versioning/index.ts +0 -5
- package/src/theme/versioning/is_v0.ts +0 -6
- package/src/theme/versioning/is_v2.ts +0 -6
- package/src/theme/versioning/themeColor_v0_v2.ts +0 -243
- package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -49
- package/src/theme/versioning/v0_v2.ts +0 -94
- package/src/theme/versioning/v2_v0.ts +0 -135
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/ui/shortcut-hint.tsx
|
|
4
|
+
var ShortcutHintsContext = React.createContext(false);
|
|
5
|
+
var current = false;
|
|
6
|
+
function ShortcutHintsProvider({ on = false, children }) {
|
|
7
|
+
React.useLayoutEffect(() => {
|
|
8
|
+
current = on;
|
|
9
|
+
if (typeof document !== "undefined") document.documentElement.dataset.shortcutHints = on ? "on" : "off";
|
|
10
|
+
}, [on]);
|
|
11
|
+
return /* @__PURE__ */ jsx(ShortcutHintsContext.Provider, {
|
|
12
|
+
value: on,
|
|
13
|
+
children
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
function useShortcutHints() {
|
|
17
|
+
return React.useContext(ShortcutHintsContext);
|
|
18
|
+
}
|
|
19
|
+
/** Non-hook read for toasts and other imperative call sites. */
|
|
20
|
+
function shortcutHintsOn() {
|
|
21
|
+
return current;
|
|
22
|
+
}
|
|
23
|
+
function ShortcutHint({ as = "span", children, ...rest }) {
|
|
24
|
+
if (!useShortcutHints()) return null;
|
|
25
|
+
if (as === "fragment") return /* @__PURE__ */ jsx(Fragment, { children });
|
|
26
|
+
return /* @__PURE__ */ jsx(as, {
|
|
27
|
+
"data-hint": "shortcuts",
|
|
28
|
+
...rest,
|
|
29
|
+
children
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { ShortcutHint, ShortcutHintsProvider, shortcutHintsOn, useShortcutHints };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=shortcut-hint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shortcut-hint.js","names":[],"sources":["../../src/ui/shortcut-hint.tsx"],"sourcesContent":["import * as React from \"react\";\n\n/* D44: keyboard-shortcut hints are OFF by default (founder: \"genuinely irritating\").\n Account > Preferences > \"Show keyboard hints\" turns them back on; the host passes that preference to\n <ShortcutHintsProvider on={...}>.\n - <ShortcutHint>…</ShortcutHint> renders nothing while off (use it for every new inline hint strip).\n - `as` keeps the wrapper element when the hint needs one (span by default; `fragment` for none).\n - For markup you cannot wrap, add data-hint=\"shortcuts\": the provider mirrors the switch on\n <html data-shortcut-hints=\"on|off\"> and the stylesheet hides it while off.\n - For strings (toasts, placeholders) use useShortcutHints() / shortcutHintsOn().\n NOT hints (always shown): menu shortcut columns, the command palette's key labels, the help sheet. */\n\nconst ShortcutHintsContext = React.createContext(false);\nlet current = false;\n\nexport function ShortcutHintsProvider({ on = false, children }: { on?: boolean; children: React.ReactNode }) {\n React.useLayoutEffect(() => {\n current = on;\n if (typeof document !== \"undefined\") document.documentElement.dataset.shortcutHints = on ? \"on\" : \"off\";\n }, [on]);\n return <ShortcutHintsContext.Provider value={on}>{children}</ShortcutHintsContext.Provider>;\n}\n\nexport function useShortcutHints() {\n return React.useContext(ShortcutHintsContext);\n}\n\n/** Non-hook read for toasts and other imperative call sites. */\nexport function shortcutHintsOn() {\n return current;\n}\n\ntype Props = React.HTMLAttributes<HTMLElement> & { as?: \"span\" | \"div\" | \"p\" | \"li\" | \"fragment\"; children: React.ReactNode };\n\nexport function ShortcutHint({ as = \"span\", children, ...rest }: Props) {\n const on = useShortcutHints();\n if (!on) return null;\n if (as === \"fragment\") return <>{children}</>;\n const Tag = as as \"span\";\n return (\n <Tag data-hint=\"shortcuts\" {...rest}>\n {children}\n </Tag>\n );\n}\n"],"mappings":";;;AAYA,IAAM,uBAAuB,MAAM,cAAc,KAAK;AACtD,IAAI,UAAU;AAEd,SAAgB,sBAAsB,EAAE,KAAK,OAAO,YAAyD;CAC3G,MAAM,sBAAsB;EAC1B,UAAU;EACV,IAAI,OAAO,aAAa,aAAa,SAAS,gBAAgB,QAAQ,gBAAgB,KAAK,OAAO;CACpG,GAAG,CAAC,EAAE,CAAC;CACP,OAAO,oBAAC,qBAAqB,UAAtB;EAA+B,OAAO;EAAK;CAAwC,CAAA;AAC5F;AAEA,SAAgB,mBAAmB;CACjC,OAAO,MAAM,WAAW,oBAAoB;AAC9C;;AAGA,SAAgB,kBAAkB;CAChC,OAAO;AACT;AAIA,SAAgB,aAAa,EAAE,KAAK,QAAQ,UAAU,GAAG,QAAe;CAEtE,IAAI,CADO,iBACN,GAAI,OAAO;CAChB,IAAI,OAAO,YAAY,OAAO,oBAAA,UAAA,EAAG,SAAW,CAAA;CAE5C,OACE,oBAAC,IAAD;EAAK,aAAU;EAAY,GAAI;EAC5B;CACE,CAAA;AAET"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const sizes: {
|
|
3
|
+
readonly xs: "size-3";
|
|
4
|
+
readonly sm: "size-3.5";
|
|
5
|
+
readonly md: "size-4";
|
|
6
|
+
readonly lg: "size-5";
|
|
7
|
+
};
|
|
8
|
+
declare const tones: {
|
|
9
|
+
readonly current: "";
|
|
10
|
+
readonly muted: "text-kit-fg-3";
|
|
11
|
+
readonly accent: "text-kit-accent";
|
|
12
|
+
readonly info: "text-kit-info";
|
|
13
|
+
};
|
|
14
|
+
export interface SpinnerProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> {
|
|
15
|
+
/** 12 · 14 · 16 (default) · 20 */
|
|
16
|
+
size?: keyof typeof sizes;
|
|
17
|
+
variant?: "icon" | "ring";
|
|
18
|
+
/** icon colour; the ring keeps V2's line-strong / fg-2 pair */
|
|
19
|
+
tone?: keyof typeof tones;
|
|
20
|
+
/** set → role="status" named by it; unset → aria-hidden */
|
|
21
|
+
label?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function Spinner({ size, variant, tone, label, className, ...rest }: SpinnerProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { IconLoader2 } from "@tabler/icons-react";
|
|
5
|
+
//#region src/ui/spinner.tsx
|
|
6
|
+
var sizes = {
|
|
7
|
+
xs: "size-3",
|
|
8
|
+
sm: "size-3.5",
|
|
9
|
+
md: "size-4",
|
|
10
|
+
lg: "size-5"
|
|
11
|
+
};
|
|
12
|
+
var tones = {
|
|
13
|
+
current: "",
|
|
14
|
+
muted: "text-kit-fg-3",
|
|
15
|
+
accent: "text-kit-accent",
|
|
16
|
+
info: "text-kit-info"
|
|
17
|
+
};
|
|
18
|
+
function Spinner({ size = "md", variant = "icon", tone = "current", label, className, ...rest }) {
|
|
19
|
+
const a11y = label ? {
|
|
20
|
+
role: "status",
|
|
21
|
+
"aria-label": label
|
|
22
|
+
} : { "aria-hidden": true };
|
|
23
|
+
const spin = "animate-spin motion-reduce:animate-none";
|
|
24
|
+
if (variant === "ring") return /* @__PURE__ */ jsx("span", {
|
|
25
|
+
...a11y,
|
|
26
|
+
...rest,
|
|
27
|
+
className: cn("inline-block shrink-0 rounded-full border-2 border-kit-line-strong border-t-kit-fg-2", sizes[size], spin, className)
|
|
28
|
+
});
|
|
29
|
+
return /* @__PURE__ */ jsx("span", {
|
|
30
|
+
...a11y,
|
|
31
|
+
...rest,
|
|
32
|
+
className: cn("inline-flex shrink-0", tones[tone], className),
|
|
33
|
+
children: /* @__PURE__ */ jsx(IconLoader2, {
|
|
34
|
+
"aria-hidden": true,
|
|
35
|
+
className: cn(sizes[size], spin)
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { Spinner };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","names":[],"sources":["../../src/ui/spinner.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { IconLoader2 } from \"@tabler/icons-react\";\nimport { cn } from \"../lib/cn\";\n\n/* ── Spinner ─────────────────────────────────────────────────────────────\n V2 has no Spinner component, only the pattern (kit-ports-spec.md §1):\n • icon: tabler IconLoader2 + animate-spin (button.tsx:73 and ~25 call sites; size-4 text-fg-3 the most common)\n • ring: size-5 border-2 border-line-strong border-t-fg-2 (schema/index.tsx:355, the Suspense panel fallback)\n Decorative by default (the host says what is loading, e.g. Button's aria-busy); `label` makes it a polite status. */\nconst sizes = { xs: \"size-3\", sm: \"size-3.5\", md: \"size-4\", lg: \"size-5\" } as const;\nconst tones = { current: \"\", muted: \"text-kit-fg-3\", accent: \"text-kit-accent\", info: \"text-kit-info\" } as const;\n\nexport interface SpinnerProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n /** 12 · 14 · 16 (default) · 20 */\n size?: keyof typeof sizes;\n variant?: \"icon\" | \"ring\";\n /** icon colour; the ring keeps V2's line-strong / fg-2 pair */\n tone?: keyof typeof tones;\n /** set → role=\"status\" named by it; unset → aria-hidden */\n label?: string;\n}\n\nexport function Spinner({ size = \"md\", variant = \"icon\", tone = \"current\", label, className, ...rest }: SpinnerProps) {\n const a11y = label ? { role: \"status\", \"aria-label\": label } : { \"aria-hidden\": true };\n const spin = \"animate-spin motion-reduce:animate-none\";\n if (variant === \"ring\") {\n return (\n <span\n {...a11y}\n {...rest}\n className={cn(\"inline-block shrink-0 rounded-full border-2 border-kit-line-strong border-t-kit-fg-2\", sizes[size], spin, className)}\n />\n );\n }\n return (\n <span {...a11y} {...rest} className={cn(\"inline-flex shrink-0\", tones[tone], className)}>\n <IconLoader2 aria-hidden className={cn(sizes[size], spin)} />\n </span>\n );\n}\n"],"mappings":";;;;;AASA,IAAM,QAAQ;CAAE,IAAI;CAAU,IAAI;CAAY,IAAI;CAAU,IAAI;AAAS;AACzE,IAAM,QAAQ;CAAE,SAAS;CAAI,OAAO;CAAiB,QAAQ;CAAmB,MAAM;AAAgB;AAYtG,SAAgB,QAAQ,EAAE,OAAO,MAAM,UAAU,QAAQ,OAAO,WAAW,OAAO,WAAW,GAAG,QAAsB;CACpH,MAAM,OAAO,QAAQ;EAAE,MAAM;EAAU,cAAc;CAAM,IAAI,EAAE,eAAe,KAAK;CACrF,MAAM,OAAO;CACb,IAAI,YAAY,QACd,OACE,oBAAC,QAAD;EACE,GAAI;EACJ,GAAI;EACJ,WAAW,GAAG,wFAAwF,MAAM,OAAO,MAAM,SAAS;CACnI,CAAA;CAGL,OACE,oBAAC,QAAD;EAAM,GAAI;EAAM,GAAI;EAAM,WAAW,GAAG,wBAAwB,MAAM,OAAO,SAAS;EACpF,UAAA,oBAAC,aAAD;GAAa,eAAA;GAAY,WAAW,GAAG,MAAM,OAAO,IAAI;EAAI,CAAA;CACxD,CAAA;AAEV"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPLIT BUTTON: one action plus its menu, as ONE visual unit (founder, D57: one element per job).
|
|
3
|
+
*
|
|
4
|
+
* <SplitButton label="Publish" icon={<IconFileUpload />} onClick={publish} menuLabel="More publish options">
|
|
5
|
+
* <MenuItem …>Schedule…</MenuItem>
|
|
6
|
+
* </SplitButton>
|
|
7
|
+
*
|
|
8
|
+
* - Two segments, same height, a 1px divider between them, rounded on the outer edge only.
|
|
9
|
+
* - Each segment is its own button with its own keyboard focus ring (the global :focus-visible outline).
|
|
10
|
+
* - The chevron segment carries aria-haspopup="menu" and `menuLabel`. No children → no chevron (the primary stands alone).
|
|
11
|
+
* - Tokens only (D56): the primary variant is bg-inverse / fg-inverse; secondary is the bordered control.
|
|
12
|
+
*/
|
|
13
|
+
import * as React from "react";
|
|
14
|
+
export interface SplitButtonProps {
|
|
15
|
+
label: React.ReactNode;
|
|
16
|
+
icon?: React.ReactNode;
|
|
17
|
+
onClick?: () => void;
|
|
18
|
+
/** Menu items for the chevron segment. Omit (or pass nothing renderable) to hide the chevron. */
|
|
19
|
+
children?: React.ReactNode;
|
|
20
|
+
/** Accessible name of the chevron segment. */
|
|
21
|
+
menuLabel?: string;
|
|
22
|
+
variant?: "primary" | "secondary";
|
|
23
|
+
size?: "sm" | "md";
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
/** Menu placement (footers open upward). */
|
|
26
|
+
side?: "top" | "bottom";
|
|
27
|
+
menuClassName?: string;
|
|
28
|
+
/** The menu opened or closed (a caller that reads data only while the menu is open). */
|
|
29
|
+
onMenuOpenChange?: (open: boolean) => void;
|
|
30
|
+
className?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare const SplitButton: React.ForwardRefExoticComponent<SplitButtonProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { buttonVariants } from "./button.js";
|
|
3
|
+
import { Menu, MenuContent, MenuTrigger } from "./overlay.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { IconChevronDown } from "@tabler/icons-react";
|
|
7
|
+
//#region src/ui/split-button.tsx
|
|
8
|
+
/**
|
|
9
|
+
* SPLIT BUTTON: one action plus its menu, as ONE visual unit (founder, D57: one element per job).
|
|
10
|
+
*
|
|
11
|
+
* <SplitButton label="Publish" icon={<IconFileUpload />} onClick={publish} menuLabel="More publish options">
|
|
12
|
+
* <MenuItem …>Schedule…</MenuItem>
|
|
13
|
+
* </SplitButton>
|
|
14
|
+
*
|
|
15
|
+
* - Two segments, same height, a 1px divider between them, rounded on the outer edge only.
|
|
16
|
+
* - Each segment is its own button with its own keyboard focus ring (the global :focus-visible outline).
|
|
17
|
+
* - The chevron segment carries aria-haspopup="menu" and `menuLabel`. No children → no chevron (the primary stands alone).
|
|
18
|
+
* - Tokens only (D56): the primary variant is bg-inverse / fg-inverse; secondary is the bordered control.
|
|
19
|
+
*/
|
|
20
|
+
var SplitButton = React.forwardRef(function SplitButton({ label, icon, onClick, children, menuLabel = "More options", variant = "primary", size = "md", disabled, side = "top", menuClassName, onMenuOpenChange, className }, ref) {
|
|
21
|
+
const hasMenu = React.Children.toArray(children).some(Boolean);
|
|
22
|
+
const divider = variant === "primary" ? "before:bg-kit-fg-inverse/25" : "before:bg-kit-line-strong";
|
|
23
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
24
|
+
ref,
|
|
25
|
+
role: "group",
|
|
26
|
+
"data-slot": "split-button",
|
|
27
|
+
className: cn("inline-flex shrink-0 items-stretch", className),
|
|
28
|
+
children: [/* @__PURE__ */ jsxs("button", {
|
|
29
|
+
type: "button",
|
|
30
|
+
disabled,
|
|
31
|
+
onClick,
|
|
32
|
+
className: cn(buttonVariants({
|
|
33
|
+
variant,
|
|
34
|
+
size
|
|
35
|
+
}), hasMenu && "rounded-r-none", "pl-2.5 pr-3"),
|
|
36
|
+
children: [icon, label]
|
|
37
|
+
}), hasMenu ? /* @__PURE__ */ jsxs(Menu, {
|
|
38
|
+
onOpenChange: onMenuOpenChange,
|
|
39
|
+
children: [/* @__PURE__ */ jsx(MenuTrigger, {
|
|
40
|
+
disabled,
|
|
41
|
+
"aria-label": menuLabel,
|
|
42
|
+
"aria-haspopup": "menu",
|
|
43
|
+
className: cn(buttonVariants({
|
|
44
|
+
variant,
|
|
45
|
+
size
|
|
46
|
+
}), "relative rounded-l-none px-0", size === "sm" ? "w-7" : "w-8", variant === "secondary" && "border-l-0", "before:absolute before:inset-y-1.5 before:left-0 before:w-px before:content-['']", divider),
|
|
47
|
+
children: /* @__PURE__ */ jsx(IconChevronDown, { stroke: 1.75 })
|
|
48
|
+
}), /* @__PURE__ */ jsx(MenuContent, {
|
|
49
|
+
align: "end",
|
|
50
|
+
side,
|
|
51
|
+
className: cn("w-60", menuClassName),
|
|
52
|
+
children
|
|
53
|
+
})]
|
|
54
|
+
}) : null]
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
//#endregion
|
|
58
|
+
export { SplitButton };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=split-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-button.js","names":[],"sources":["../../src/ui/split-button.tsx"],"sourcesContent":["/**\n * SPLIT BUTTON: one action plus its menu, as ONE visual unit (founder, D57: one element per job).\n *\n * <SplitButton label=\"Publish\" icon={<IconFileUpload />} onClick={publish} menuLabel=\"More publish options\">\n * <MenuItem …>Schedule…</MenuItem>\n * </SplitButton>\n *\n * - Two segments, same height, a 1px divider between them, rounded on the outer edge only.\n * - Each segment is its own button with its own keyboard focus ring (the global :focus-visible outline).\n * - The chevron segment carries aria-haspopup=\"menu\" and `menuLabel`. No children → no chevron (the primary stands alone).\n * - Tokens only (D56): the primary variant is bg-inverse / fg-inverse; secondary is the bordered control.\n */\nimport * as React from \"react\";\nimport { IconChevronDown } from \"@tabler/icons-react\";\nimport { cn } from \"../lib/cn\";\nimport { buttonVariants } from \"./button\";\nimport { Menu, MenuContent, MenuTrigger } from \"./overlay\";\n\nexport interface SplitButtonProps {\n label: React.ReactNode;\n icon?: React.ReactNode;\n onClick?: () => void;\n /** Menu items for the chevron segment. Omit (or pass nothing renderable) to hide the chevron. */\n children?: React.ReactNode;\n /** Accessible name of the chevron segment. */\n menuLabel?: string;\n variant?: \"primary\" | \"secondary\";\n size?: \"sm\" | \"md\";\n disabled?: boolean;\n /** Menu placement (footers open upward). */\n side?: \"top\" | \"bottom\";\n menuClassName?: string;\n /** The menu opened or closed (a caller that reads data only while the menu is open). */\n onMenuOpenChange?: (open: boolean) => void;\n className?: string;\n}\n\nexport const SplitButton = React.forwardRef<HTMLDivElement, SplitButtonProps>(function SplitButton(\n { label, icon, onClick, children, menuLabel = \"More options\", variant = \"primary\", size = \"md\", disabled, side = \"top\", menuClassName, onMenuOpenChange, className },\n ref,\n) {\n const hasMenu = React.Children.toArray(children).some(Boolean);\n const divider = variant === \"primary\" ? \"before:bg-kit-fg-inverse/25\" : \"before:bg-kit-line-strong\";\n return (\n <div ref={ref} role=\"group\" data-slot=\"split-button\" className={cn(\"inline-flex shrink-0 items-stretch\", className)}>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={onClick}\n className={cn(buttonVariants({ variant, size }), hasMenu && \"rounded-r-none\", \"pl-2.5 pr-3\")}\n >\n {icon}\n {label}\n </button>\n {hasMenu ? (\n <Menu onOpenChange={onMenuOpenChange}>\n <MenuTrigger\n disabled={disabled}\n aria-label={menuLabel}\n aria-haspopup=\"menu\"\n className={cn(\n buttonVariants({ variant, size }),\n \"relative rounded-l-none px-0\",\n size === \"sm\" ? \"w-7\" : \"w-8\",\n variant === \"secondary\" && \"border-l-0\",\n // the 1px divider between the segments (inset top and bottom, like the production control)\n \"before:absolute before:inset-y-1.5 before:left-0 before:w-px before:content-['']\",\n divider,\n )}\n >\n <IconChevronDown stroke={1.75} />\n </MenuTrigger>\n <MenuContent align=\"end\" side={side} className={cn(\"w-60\", menuClassName)}>\n {children}\n </MenuContent>\n </Menu>\n ) : null}\n </div>\n );\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAqCA,IAAa,cAAc,MAAM,WAA6C,SAAS,YACrF,EAAE,OAAO,MAAM,SAAS,UAAU,YAAY,gBAAgB,UAAU,WAAW,OAAO,MAAM,UAAU,OAAO,OAAO,eAAe,kBAAkB,aACzJ,KACA;CACA,MAAM,UAAU,MAAM,SAAS,QAAQ,QAAQ,CAAC,CAAC,KAAK,OAAO;CAC7D,MAAM,UAAU,YAAY,YAAY,gCAAgC;CACxE,OACE,qBAAC,OAAD;EAAU;EAAK,MAAK;EAAQ,aAAU;EAAe,WAAW,GAAG,sCAAsC,SAAS;EAAlH,UAAA,CACE,qBAAC,UAAD;GACE,MAAK;GACK;GACD;GACT,WAAW,GAAG,eAAe;IAAE;IAAS;GAAK,CAAC,GAAG,WAAW,kBAAkB,aAAa;GAJ7F,UAAA,CAMG,MACA,KACK;EACP,CAAA,GAAA,UACC,qBAAC,MAAD;GAAM,cAAc;GAApB,UAAA,CACE,oBAAC,aAAD;IACY;IACV,cAAY;IACZ,iBAAc;IACd,WAAW,GACT,eAAe;KAAE;KAAS;IAAK,CAAC,GAChC,gCACA,SAAS,OAAO,QAAQ,OACxB,YAAY,eAAe,cAE3B,oFACA,OACF;IAEA,UAAA,oBAAC,iBAAD,EAAiB,QAAQ,KAAO,CAAA;GACrB,CAAA,GACb,oBAAC,aAAD;IAAa,OAAM;IAAY;IAAM,WAAW,GAAG,QAAQ,aAAa;IACrE;GACU,CAAA,CACT;EACJ,CAAA,IAAA,IACD;;AAET,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V2's floating-surface recipes (src/styles/index.css .glass, .glass-ink, .bg-tray, --surface-raised, --floating-line),
|
|
3
|
+
* as class strings. kit.css has no tokens for these yet, so the V2 values are written out here, light and dark
|
|
4
|
+
* (`[.dark_&]` = the app is dark). Each one is a single constant so the integrator can swap it for a kit token later.
|
|
5
|
+
*
|
|
6
|
+
* Portalled layers render outside [data-kit-scope], where every --kit-* value is undefined. Every layer root here
|
|
7
|
+
* therefore carries KIT_SCOPE (data-kit-scope) itself.
|
|
8
|
+
*/
|
|
9
|
+
export declare const KIT_SCOPE: {
|
|
10
|
+
readonly "data-kit-scope": "";
|
|
11
|
+
};
|
|
12
|
+
/** .glass: popovers, menus, hover cards. */
|
|
13
|
+
export declare const GLASS = "bg-kit-surface border-kit-line shadow-[0_1px_2px_rgb(16_16_16/0.04),0_8px_24px_-6px_rgb(16_16_16/0.12)] [.dark_&]:bg-[#252528] [.dark_&]:border-kit-line-strong [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.04),0_12px_32px_-8px_oklch(0.12_0.01_286/0.5)]";
|
|
14
|
+
/** .glass-ink: tooltips (ink is dark in both themes). */
|
|
15
|
+
export declare const INK = "bg-[#1c1c1e] text-[#f5f5f5] shadow-[0_10px_28px_-8px_rgb(0_0_0/0.35)] [.dark_&]:bg-[#3d3d40] [.dark_&]:text-[#ececef] [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.06),0_0_0_1px_rgb(255_255_255/0.12),0_14px_36px_-8px_oklch(0.12_0.01_286/0.55)]";
|
|
16
|
+
/** --ink-active: the kbd chip on ink. */
|
|
17
|
+
export declare const INK_ACTIVE = "bg-[rgb(255_255_255/0.15)] [.dark_&]:bg-[rgb(255_255_255/0.13)]";
|
|
18
|
+
/** --surface-raised: dialogs, sheets, expanded editors. */
|
|
19
|
+
export declare const SURFACE_RAISED = "bg-[var(--kit-surface-raised)]";
|
|
20
|
+
/** --floating-line: the edge of modals, sheets, expanded editors (= line; dark = line-strong). */
|
|
21
|
+
export declare const FLOATING_LINE = "border-kit-line [.dark_&]:border-kit-line-strong";
|
|
22
|
+
/** .bg-tray + --tray-line: the action tray under a dialog. */
|
|
23
|
+
export declare const TRAY = "bg-kit-surface bg-[linear-gradient(180deg,rgb(216_216_216/0)_16.105%,rgb(216_216_216/0.6)_123.57%)] border-[#ededed] [.dark_&]:bg-[linear-gradient(180deg,oklch(0.32_0.005_286/0)_16.105%,oklch(0.32_0.005_286/0.6)_123.57%)] [.dark_&]:border-[#3a3a3d]";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/ui/surfaces.ts
|
|
2
|
+
/**
|
|
3
|
+
* V2's floating-surface recipes (src/styles/index.css .glass, .glass-ink, .bg-tray, --surface-raised, --floating-line),
|
|
4
|
+
* as class strings. kit.css has no tokens for these yet, so the V2 values are written out here, light and dark
|
|
5
|
+
* (`[.dark_&]` = the app is dark). Each one is a single constant so the integrator can swap it for a kit token later.
|
|
6
|
+
*
|
|
7
|
+
* Portalled layers render outside [data-kit-scope], where every --kit-* value is undefined. Every layer root here
|
|
8
|
+
* therefore carries KIT_SCOPE (data-kit-scope) itself.
|
|
9
|
+
*/
|
|
10
|
+
var KIT_SCOPE = { "data-kit-scope": "" };
|
|
11
|
+
/** .glass: popovers, menus, hover cards. */
|
|
12
|
+
var GLASS = "bg-kit-surface border-kit-line shadow-[0_1px_2px_rgb(16_16_16/0.04),0_8px_24px_-6px_rgb(16_16_16/0.12)] [.dark_&]:bg-[#252528] [.dark_&]:border-kit-line-strong [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.04),0_12px_32px_-8px_oklch(0.12_0.01_286/0.5)]";
|
|
13
|
+
/** .glass-ink: tooltips (ink is dark in both themes). */
|
|
14
|
+
var INK = "bg-[#1c1c1e] text-[#f5f5f5] shadow-[0_10px_28px_-8px_rgb(0_0_0/0.35)] [.dark_&]:bg-[#3d3d40] [.dark_&]:text-[#ececef] [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.06),0_0_0_1px_rgb(255_255_255/0.12),0_14px_36px_-8px_oklch(0.12_0.01_286/0.55)]";
|
|
15
|
+
/** --ink-active: the kbd chip on ink. */
|
|
16
|
+
var INK_ACTIVE = "bg-[rgb(255_255_255/0.15)] [.dark_&]:bg-[rgb(255_255_255/0.13)]";
|
|
17
|
+
/** --surface-raised: dialogs, sheets, expanded editors. */
|
|
18
|
+
var SURFACE_RAISED = "bg-[var(--kit-surface-raised)]";
|
|
19
|
+
/** --floating-line: the edge of modals, sheets, expanded editors (= line; dark = line-strong). */
|
|
20
|
+
var FLOATING_LINE = "border-kit-line [.dark_&]:border-kit-line-strong";
|
|
21
|
+
/** .bg-tray + --tray-line: the action tray under a dialog. */
|
|
22
|
+
var TRAY = "bg-kit-surface bg-[linear-gradient(180deg,rgb(216_216_216/0)_16.105%,rgb(216_216_216/0.6)_123.57%)] border-[#ededed] [.dark_&]:bg-[linear-gradient(180deg,oklch(0.32_0.005_286/0)_16.105%,oklch(0.32_0.005_286/0.6)_123.57%)] [.dark_&]:border-[#3a3a3d]";
|
|
23
|
+
//#endregion
|
|
24
|
+
export { FLOATING_LINE, GLASS, INK, INK_ACTIVE, KIT_SCOPE, SURFACE_RAISED, TRAY };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=surfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surfaces.js","names":[],"sources":["../../src/ui/surfaces.ts"],"sourcesContent":["/**\n * V2's floating-surface recipes (src/styles/index.css .glass, .glass-ink, .bg-tray, --surface-raised, --floating-line),\n * as class strings. kit.css has no tokens for these yet, so the V2 values are written out here, light and dark\n * (`[.dark_&]` = the app is dark). Each one is a single constant so the integrator can swap it for a kit token later.\n *\n * Portalled layers render outside [data-kit-scope], where every --kit-* value is undefined. Every layer root here\n * therefore carries KIT_SCOPE (data-kit-scope) itself.\n */\nexport const KIT_SCOPE = { \"data-kit-scope\": \"\" } as const;\n\n/** .glass: popovers, menus, hover cards. */\nexport const GLASS =\n \"bg-kit-surface border-kit-line shadow-[0_1px_2px_rgb(16_16_16/0.04),0_8px_24px_-6px_rgb(16_16_16/0.12)] [.dark_&]:bg-[#252528] [.dark_&]:border-kit-line-strong [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.04),0_12px_32px_-8px_oklch(0.12_0.01_286/0.5)]\";\n\n/** .glass-ink: tooltips (ink is dark in both themes). */\nexport const INK =\n \"bg-[#1c1c1e] text-[#f5f5f5] shadow-[0_10px_28px_-8px_rgb(0_0_0/0.35)] [.dark_&]:bg-[#3d3d40] [.dark_&]:text-[#ececef] [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.06),0_0_0_1px_rgb(255_255_255/0.12),0_14px_36px_-8px_oklch(0.12_0.01_286/0.55)]\";\n\n/** --ink-active: the kbd chip on ink. */\nexport const INK_ACTIVE = \"bg-[rgb(255_255_255/0.15)] [.dark_&]:bg-[rgb(255_255_255/0.13)]\";\n\n/** --surface-raised: dialogs, sheets, expanded editors. */\nexport const SURFACE_RAISED = \"bg-[var(--kit-surface-raised)]\";\n\n/** --floating-line: the edge of modals, sheets, expanded editors (= line; dark = line-strong). */\nexport const FLOATING_LINE = \"border-kit-line [.dark_&]:border-kit-line-strong\";\n\n/** .bg-tray + --tray-line: the action tray under a dialog. */\nexport const TRAY =\n \"bg-kit-surface bg-[linear-gradient(180deg,rgb(216_216_216/0)_16.105%,rgb(216_216_216/0.6)_123.57%)] border-[#ededed] [.dark_&]:bg-[linear-gradient(180deg,oklch(0.32_0.005_286/0)_16.105%,oklch(0.32_0.005_286/0.6)_123.57%)] [.dark_&]:border-[#3a3a3d]\";\n"],"mappings":";;;;;;;;;AAQA,IAAa,YAAY,EAAE,kBAAkB,GAAG;;AAGhD,IAAa,QACX;;AAGF,IAAa,MACX;;AAGF,IAAa,aAAa;;AAG1B,IAAa,iBAAiB;;AAG9B,IAAa,gBAAgB;;AAG7B,IAAa,OACX"}
|
package/dist/ui/tab.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface TabsProps<T extends string> {
|
|
3
|
+
value?: T;
|
|
4
|
+
defaultValue?: T;
|
|
5
|
+
onValueChange?: (value: T) => void;
|
|
6
|
+
className?: string;
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export declare function Tabs<T extends string>({ value, defaultValue, onValueChange, className, children }: TabsProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export interface TabListProps {
|
|
11
|
+
"aria-label"?: string;
|
|
12
|
+
size?: "sm" | "md";
|
|
13
|
+
/** draw a hairline under the whole tab row (the underline then sits on it) */
|
|
14
|
+
bordered?: boolean;
|
|
15
|
+
/** framer layoutId for the underline; defaults to one per list */
|
|
16
|
+
layoutId?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
children: React.ReactNode;
|
|
19
|
+
}
|
|
20
|
+
export declare function TabList({ "aria-label": ariaLabel, size, bordered, layoutId, className, children }: TabListProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export interface TabProps<T extends string> {
|
|
22
|
+
value: T;
|
|
23
|
+
icon?: React.ReactNode;
|
|
24
|
+
/** a muted tabular count after the label; pass it here, never baked into the label */
|
|
25
|
+
count?: number;
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
className?: string;
|
|
28
|
+
children?: React.ReactNode;
|
|
29
|
+
}
|
|
30
|
+
export declare function Tab<T extends string>({ value, icon, count, disabled, className, children }: TabProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export interface TabPanelProps<T extends string> {
|
|
32
|
+
value: T;
|
|
33
|
+
/** keep the inactive panel in the DOM (hidden); V2 renders only the active one */
|
|
34
|
+
keepMounted?: boolean;
|
|
35
|
+
className?: string;
|
|
36
|
+
children: React.ReactNode;
|
|
37
|
+
}
|
|
38
|
+
export declare function TabPanel<T extends string>({ value, keepMounted, className, children }: TabPanelProps<T>): import("react/jsx-runtime").JSX.Element;
|
package/dist/ui/tab.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { motion, useReducedMotion } from "framer-motion";
|
|
5
|
+
import { Tabs as Tabs$1 } from "@base-ui/react/tabs";
|
|
6
|
+
//#region src/ui/tab.tsx
|
|
7
|
+
var PILL_SPRING = {
|
|
8
|
+
type: "spring",
|
|
9
|
+
stiffness: 520,
|
|
10
|
+
damping: 42
|
|
11
|
+
};
|
|
12
|
+
var ListLookContext = React.createContext({
|
|
13
|
+
size: "md",
|
|
14
|
+
bordered: false,
|
|
15
|
+
layoutId: "kit-tab"
|
|
16
|
+
});
|
|
17
|
+
function Tabs({ value, defaultValue, onValueChange, className, children }) {
|
|
18
|
+
return /* @__PURE__ */ jsx(Tabs$1.Root, {
|
|
19
|
+
value,
|
|
20
|
+
defaultValue,
|
|
21
|
+
onValueChange: (v) => onValueChange?.(v),
|
|
22
|
+
className,
|
|
23
|
+
children
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function TabList({ "aria-label": ariaLabel, size = "md", bordered = false, layoutId, className, children }) {
|
|
27
|
+
const id = React.useId();
|
|
28
|
+
const look = React.useMemo(() => ({
|
|
29
|
+
size,
|
|
30
|
+
bordered,
|
|
31
|
+
layoutId: layoutId ?? `tab-${id}`
|
|
32
|
+
}), [
|
|
33
|
+
size,
|
|
34
|
+
bordered,
|
|
35
|
+
layoutId,
|
|
36
|
+
id
|
|
37
|
+
]);
|
|
38
|
+
return /* @__PURE__ */ jsx(ListLookContext.Provider, {
|
|
39
|
+
value: look,
|
|
40
|
+
children: /* @__PURE__ */ jsx(Tabs$1.List, {
|
|
41
|
+
"aria-label": ariaLabel,
|
|
42
|
+
activateOnFocus: true,
|
|
43
|
+
loopFocus: true,
|
|
44
|
+
className: cn("inline-flex items-center gap-5", bordered && "border-b border-kit-line", className),
|
|
45
|
+
children
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function Tab({ value, icon, count, disabled, className, children }) {
|
|
50
|
+
const { size, bordered, layoutId } = React.useContext(ListLookContext);
|
|
51
|
+
const reduceMotion = useReducedMotion();
|
|
52
|
+
return /* @__PURE__ */ jsx(Tabs$1.Tab, {
|
|
53
|
+
value,
|
|
54
|
+
disabled,
|
|
55
|
+
className: cn("group relative inline-flex items-center justify-center gap-1.5 whitespace-nowrap font-medium tracking-[-0.01em] transition-colors duration-150 disabled:opacity-40 data-[disabled]:opacity-40 [&_svg]:size-4", size === "sm" ? "h-7 text-kit-xs [&_svg]:size-3.5" : "h-8 text-kit-sm", "text-kit-fg-3 not-data-[active]:hover:text-kit-fg-2 data-[active]:text-kit-fg", className),
|
|
56
|
+
render: (props, state) => /* @__PURE__ */ jsxs("button", {
|
|
57
|
+
...props,
|
|
58
|
+
children: [
|
|
59
|
+
icon,
|
|
60
|
+
props.children,
|
|
61
|
+
typeof count === "number" ? /* @__PURE__ */ jsx("span", {
|
|
62
|
+
className: "text-kit-xs font-normal tabular-nums text-kit-fg-4 group-data-[active]:text-kit-fg-2",
|
|
63
|
+
children: count
|
|
64
|
+
}) : null,
|
|
65
|
+
state.active ? /* @__PURE__ */ jsx(motion.span, {
|
|
66
|
+
layoutId,
|
|
67
|
+
transition: reduceMotion ? { duration: 0 } : PILL_SPRING,
|
|
68
|
+
"data-tab-indicator": "",
|
|
69
|
+
className: cn("absolute inset-x-0 h-[1.5px] rounded-full bg-kit-fg", bordered ? "-bottom-px" : "bottom-0")
|
|
70
|
+
}) : null
|
|
71
|
+
]
|
|
72
|
+
}),
|
|
73
|
+
children
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function TabPanel({ value, keepMounted, className, children }) {
|
|
77
|
+
return /* @__PURE__ */ jsx(Tabs$1.Panel, {
|
|
78
|
+
value,
|
|
79
|
+
keepMounted,
|
|
80
|
+
className,
|
|
81
|
+
children
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
//#endregion
|
|
85
|
+
export { Tab, TabList, TabPanel, Tabs };
|
|
86
|
+
|
|
87
|
+
//# sourceMappingURL=tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab.js","names":[],"sources":["../../src/ui/tab.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { motion, useReducedMotion } from \"framer-motion\";\nimport { cn } from \"../lib/cn\";\n\n/* ── Tabs ────────────────────────────────────────────────────────────────\n Real tabs (tablist + tab + tabpanel with aria-controls / aria-labelledby) in the look of V2's\n Segmented variant=\"tabs\" (controls.tsx:179-273): quiet text tabs, muted tabular count, a 1.5px underline that springs\n between tabs (layoutId, stiffness 520 / damping 42, instant under reduced motion). Selection follows focus and the\n arrows wrap, as V2's onKey does. kit-ports-spec.md §3. Segmented stays the tabs look for rows that have no panels. */\nconst PILL_SPRING = { type: \"spring\", stiffness: 520, damping: 42 } as const;\n\ntype ListLook = { size: \"sm\" | \"md\"; bordered: boolean; layoutId: string };\nconst ListLookContext = React.createContext<ListLook>({ size: \"md\", bordered: false, layoutId: \"kit-tab\" });\n\nexport interface TabsProps<T extends string> {\n value?: T;\n defaultValue?: T;\n onValueChange?: (value: T) => void;\n className?: string;\n children: React.ReactNode;\n}\n\nexport function Tabs<T extends string>({ value, defaultValue, onValueChange, className, children }: TabsProps<T>) {\n return (\n <TabsPrimitive.Root value={value} defaultValue={defaultValue} onValueChange={(v) => onValueChange?.(v as T)} className={className}>\n {children}\n </TabsPrimitive.Root>\n );\n}\n\nexport interface TabListProps {\n \"aria-label\"?: string;\n size?: \"sm\" | \"md\";\n /** draw a hairline under the whole tab row (the underline then sits on it) */\n bordered?: boolean;\n /** framer layoutId for the underline; defaults to one per list */\n layoutId?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nexport function TabList({ \"aria-label\": ariaLabel, size = \"md\", bordered = false, layoutId, className, children }: TabListProps) {\n const id = React.useId();\n const look = React.useMemo(() => ({ size, bordered, layoutId: layoutId ?? `tab-${id}` }), [size, bordered, layoutId, id]);\n return (\n <ListLookContext.Provider value={look}>\n <TabsPrimitive.List\n aria-label={ariaLabel}\n activateOnFocus\n loopFocus\n className={cn(\"inline-flex items-center gap-5\", bordered && \"border-b border-kit-line\", className)}\n >\n {children}\n </TabsPrimitive.List>\n </ListLookContext.Provider>\n );\n}\n\nexport interface TabProps<T extends string> {\n value: T;\n icon?: React.ReactNode;\n /** a muted tabular count after the label; pass it here, never baked into the label */\n count?: number;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function Tab<T extends string>({ value, icon, count, disabled, className, children }: TabProps<T>) {\n const { size, bordered, layoutId } = React.useContext(ListLookContext);\n const reduceMotion = useReducedMotion();\n return (\n <TabsPrimitive.Tab\n value={value}\n disabled={disabled}\n className={cn(\n \"group relative inline-flex items-center justify-center gap-1.5 whitespace-nowrap font-medium tracking-[-0.01em] transition-colors duration-150 disabled:opacity-40 data-[disabled]:opacity-40 [&_svg]:size-4\",\n size === \"sm\" ? \"h-7 text-kit-xs [&_svg]:size-3.5\" : \"h-8 text-kit-sm\",\n \"text-kit-fg-3 not-data-[active]:hover:text-kit-fg-2 data-[active]:text-kit-fg\",\n className,\n )}\n render={(props, state) => (\n <button {...props}>\n {icon}\n {props.children}\n {typeof count === \"number\" ? (\n <span className=\"text-kit-xs font-normal tabular-nums text-kit-fg-4 group-data-[active]:text-kit-fg-2\">{count}</span>\n ) : null}\n {state.active ? (\n <motion.span\n layoutId={layoutId}\n transition={reduceMotion ? { duration: 0 } : PILL_SPRING}\n data-tab-indicator=\"\"\n className={cn(\"absolute inset-x-0 h-[1.5px] rounded-full bg-kit-fg\", bordered ? \"-bottom-px\" : \"bottom-0\")}\n />\n ) : null}\n </button>\n )}\n >\n {children}\n </TabsPrimitive.Tab>\n );\n}\n\nexport interface TabPanelProps<T extends string> {\n value: T;\n /** keep the inactive panel in the DOM (hidden); V2 renders only the active one */\n keepMounted?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nexport function TabPanel<T extends string>({ value, keepMounted, className, children }: TabPanelProps<T>) {\n return (\n <TabsPrimitive.Panel value={value} keepMounted={keepMounted} className={className}>\n {children}\n </TabsPrimitive.Panel>\n );\n}\n"],"mappings":";;;;;;AAUA,IAAM,cAAc;CAAE,MAAM;CAAU,WAAW;CAAK,SAAS;AAAG;AAGlE,IAAM,kBAAkB,MAAM,cAAwB;CAAE,MAAM;CAAM,UAAU;CAAO,UAAU;AAAU,CAAC;AAU1G,SAAgB,KAAuB,EAAE,OAAO,cAAc,eAAe,WAAW,YAA0B;CAChH,OACE,oBAAC,OAAc,MAAf;EAA2B;EAAqB;EAAc,gBAAgB,MAAM,gBAAgB,CAAM;EAAc;EACrH;CACiB,CAAA;AAExB;AAaA,SAAgB,QAAQ,EAAE,cAAc,WAAW,OAAO,MAAM,WAAW,OAAO,UAAU,WAAW,YAA0B;CAC/H,MAAM,KAAK,MAAM,MAAM;CACvB,MAAM,OAAO,MAAM,eAAe;EAAE;EAAM;EAAU,UAAU,YAAY,OAAO;CAAK,IAAI;EAAC;EAAM;EAAU;EAAU;CAAE,CAAC;CACxH,OACE,oBAAC,gBAAgB,UAAjB;EAA0B,OAAO;EAC/B,UAAA,oBAAC,OAAc,MAAf;GACE,cAAY;GACZ,iBAAA;GACA,WAAA;GACA,WAAW,GAAG,kCAAkC,YAAY,4BAA4B,SAAS;GAEhG;EACiB,CAAA;CACI,CAAA;AAE9B;AAYA,SAAgB,IAAsB,EAAE,OAAO,MAAM,OAAO,UAAU,WAAW,YAAyB;CACxG,MAAM,EAAE,MAAM,UAAU,aAAa,MAAM,WAAW,eAAe;CACrE,MAAM,eAAe,iBAAiB;CACtC,OACE,oBAAC,OAAc,KAAf;EACS;EACG;EACV,WAAW,GACT,gNACA,SAAS,OAAO,qCAAqC,mBACrD,iFACA,SACF;EACA,SAAS,OAAO,UACd,qBAAC,UAAD;GAAQ,GAAI;GAAZ,UAAA;IACG;IACA,MAAM;IACN,OAAO,UAAU,WAChB,oBAAC,QAAD;KAAM,WAAU;KAAwF,UAAA;IAAY,CAAA,IAClH;IACH,MAAM,SACL,oBAAC,OAAO,MAAR;KACY;KACV,YAAY,eAAe,EAAE,UAAU,EAAE,IAAI;KAC7C,sBAAmB;KACnB,WAAW,GAAG,uDAAuD,WAAW,eAAe,UAAU;IAC1G,CAAA,IACC;GACE;;EAGT;CACgB,CAAA;AAEvB;AAUA,SAAgB,SAA2B,EAAE,OAAO,aAAa,WAAW,YAA8B;CACxG,OACE,oBAAC,OAAc,OAAf;EAA4B;EAAoB;EAAwB;EACrE;CACkB,CAAA;AAEzB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { KitToast, KitToastOptions } from "../context";
|
|
2
|
+
export declare const kitToastManager: import("@base-ui/react").ToastManager<any>;
|
|
3
|
+
/** KitServices.toast backed by kitToastManager, plus V2's other sonner calls. */
|
|
4
|
+
export declare const kitToast: KitToast & {
|
|
5
|
+
error: (message: string, opts?: KitToastOptions) => void;
|
|
6
|
+
warning: (message: string, opts?: KitToastOptions) => void;
|
|
7
|
+
info: (message: string, opts?: KitToastOptions) => void;
|
|
8
|
+
/** stays until dismissed or updated; returns its id */
|
|
9
|
+
loading: (message: string, opts?: KitToastOptions) => string;
|
|
10
|
+
dismiss: (id?: string) => void;
|
|
11
|
+
};
|
|
12
|
+
export interface KitToasterProps {
|
|
13
|
+
/** toasts kept on screen (sonner visibleToasts) */
|
|
14
|
+
limit?: number;
|
|
15
|
+
/** ms before a toast closes; a toast's own `duration` wins; loading toasts stay */
|
|
16
|
+
timeout?: number;
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
/** Mount once per document, at the root. Its layer carries KIT_SCOPE (a portal sits outside every kit island). */
|
|
20
|
+
export declare function KitToaster({ limit, timeout, className }: KitToasterProps): import("react/jsx-runtime").JSX.Element;
|
package/dist/ui/toast.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { KIT_SCOPE } from "./surfaces.js";
|
|
3
|
+
import { Spinner } from "./spinner.js";
|
|
4
|
+
import "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { Toast } from "@base-ui/react/toast";
|
|
7
|
+
//#region src/ui/toast.tsx
|
|
8
|
+
var kitToastManager = Toast.createToastManager();
|
|
9
|
+
var seq = 0;
|
|
10
|
+
function add(type, message, opts = {}) {
|
|
11
|
+
const id = `kit-toast-${++seq}`;
|
|
12
|
+
const { action } = opts;
|
|
13
|
+
return kitToastManager.add({
|
|
14
|
+
id,
|
|
15
|
+
type,
|
|
16
|
+
title: message,
|
|
17
|
+
description: opts.description,
|
|
18
|
+
timeout: opts.duration,
|
|
19
|
+
priority: type === "error" ? "high" : "low",
|
|
20
|
+
data: { icon: opts.icon },
|
|
21
|
+
actionProps: action ? {
|
|
22
|
+
children: action.label,
|
|
23
|
+
onClick: () => (action.onClick(), kitToastManager.close(id))
|
|
24
|
+
} : void 0
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/** KitServices.toast backed by kitToastManager, plus V2's other sonner calls. */
|
|
28
|
+
var kitToast = Object.assign((message, opts) => void add("default", message, opts), {
|
|
29
|
+
success: (message, opts) => void add("success", message, opts),
|
|
30
|
+
error: (message, opts) => void add("error", message, opts),
|
|
31
|
+
warning: (message, opts) => void add("warning", message, opts),
|
|
32
|
+
info: (message, opts) => void add("info", message, opts),
|
|
33
|
+
loading: (message, opts) => add("loading", message, opts),
|
|
34
|
+
dismiss: (id) => kitToastManager.close(id)
|
|
35
|
+
});
|
|
36
|
+
function SonnerGlyph({ viewBox, d }) {
|
|
37
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
38
|
+
viewBox,
|
|
39
|
+
fill: "currentColor",
|
|
40
|
+
width: "16",
|
|
41
|
+
height: "16",
|
|
42
|
+
"data-toast-glyph": "",
|
|
43
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
44
|
+
fillRule: "evenodd",
|
|
45
|
+
d,
|
|
46
|
+
clipRule: "evenodd"
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
var TYPE_ICON = {
|
|
51
|
+
success: /* @__PURE__ */ jsx(SonnerGlyph, {
|
|
52
|
+
viewBox: "0 0 20 20",
|
|
53
|
+
d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"
|
|
54
|
+
}),
|
|
55
|
+
warning: /* @__PURE__ */ jsx(SonnerGlyph, {
|
|
56
|
+
viewBox: "0 0 24 24",
|
|
57
|
+
d: "M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z"
|
|
58
|
+
}),
|
|
59
|
+
info: /* @__PURE__ */ jsx(SonnerGlyph, {
|
|
60
|
+
viewBox: "0 0 20 20",
|
|
61
|
+
d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z"
|
|
62
|
+
}),
|
|
63
|
+
error: /* @__PURE__ */ jsx(SonnerGlyph, {
|
|
64
|
+
viewBox: "0 0 20 20",
|
|
65
|
+
d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z"
|
|
66
|
+
}),
|
|
67
|
+
loading: /* @__PURE__ */ jsx(Spinner, { size: "md" })
|
|
68
|
+
};
|
|
69
|
+
var VIEWPORT = "fixed bottom-[var(--toast-offset-bottom,16px)] right-4 z-[var(--z-toast,500)] w-[356px] outline-none max-[600px]:left-4 max-[600px]:w-auto";
|
|
70
|
+
var ROOT = cn("[--gap:8px] [--scale:calc(1-var(--toast-index)*0.05)] [--height:var(--toast-frontmost-height,var(--toast-height))]", "[--offset-y:calc(var(--toast-offset-y)*-1+var(--toast-index)*var(--gap)*-1+var(--toast-swipe-movement-y))]", "absolute bottom-0 right-0 z-[calc(1000-var(--toast-index))] w-full origin-bottom select-none", "h-[var(--height)] [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-var(--toast-index)*var(--gap)))_scale(var(--scale))]", "data-[expanded]:h-[var(--toast-height)] data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]", "data-[starting-style]:opacity-0 data-[starting-style]:[transform:translateY(100%)]", "data-[ending-style]:opacity-0 data-[limited]:opacity-0", "[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(100%)]", "data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+100%))]", "data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+100%))_translateY(var(--offset-y))]", "[transition:transform_400ms_ease,opacity_400ms,height_400ms,box-shadow_200ms]", "after:absolute after:left-0 after:top-full after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']", "flex items-center rounded-kit-xl border border-kit-tray-line bg-kit-surface-raised bg-clip-padding p-4 font-sans text-kit-sm text-kit-fg shadow-[0_4px_12px_rgba(0,0,0,0.1)] [.dark_&]:border-kit-line-strong");
|
|
71
|
+
var CONTENT = "flex min-w-0 flex-1 items-center gap-1.5 transition-opacity duration-[400ms] data-[behind]:opacity-0 data-[expanded]:opacity-100";
|
|
72
|
+
var ACTION = "ml-auto inline-flex h-6 shrink-0 cursor-pointer items-center rounded-kit-md bg-kit-inverse px-2 text-kit-xs font-medium text-kit-fg-inverse hover:bg-kit-inverse-hover [transition:opacity_400ms,box-shadow_200ms,background-color_150ms]";
|
|
73
|
+
function KitToastItem({ toast }) {
|
|
74
|
+
const icon = toast.data?.icon ?? TYPE_ICON[toast.type ?? ""];
|
|
75
|
+
return /* @__PURE__ */ jsx(Toast.Root, {
|
|
76
|
+
toast,
|
|
77
|
+
className: ROOT,
|
|
78
|
+
children: /* @__PURE__ */ jsxs(Toast.Content, {
|
|
79
|
+
className: CONTENT,
|
|
80
|
+
children: [
|
|
81
|
+
icon ? /* @__PURE__ */ jsx("span", {
|
|
82
|
+
"aria-hidden": true,
|
|
83
|
+
className: "flex size-4 shrink-0 items-center [&_svg]:size-4",
|
|
84
|
+
children: icon
|
|
85
|
+
}) : null,
|
|
86
|
+
/* @__PURE__ */ jsxs("div", {
|
|
87
|
+
className: "min-w-0 flex-1",
|
|
88
|
+
children: [/* @__PURE__ */ jsx(Toast.Title, { className: "font-medium leading-[1.5]" }), toast.description ? /* @__PURE__ */ jsx(Toast.Description, { className: "leading-[1.4] text-kit-fg-2" }) : null]
|
|
89
|
+
}),
|
|
90
|
+
toast.actionProps ? /* @__PURE__ */ jsx(Toast.Action, { className: ACTION }) : null
|
|
91
|
+
]
|
|
92
|
+
})
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function KitToastList() {
|
|
96
|
+
const { toasts } = Toast.useToastManager();
|
|
97
|
+
return toasts.map((t) => /* @__PURE__ */ jsx(KitToastItem, { toast: t }, t.id));
|
|
98
|
+
}
|
|
99
|
+
/** Mount once per document, at the root. Its layer carries KIT_SCOPE (a portal sits outside every kit island). */
|
|
100
|
+
function KitToaster({ limit = 3, timeout = 4e3, className }) {
|
|
101
|
+
return /* @__PURE__ */ jsx(Toast.Provider, {
|
|
102
|
+
toastManager: kitToastManager,
|
|
103
|
+
limit,
|
|
104
|
+
timeout,
|
|
105
|
+
children: /* @__PURE__ */ jsx(Toast.Portal, { children: /* @__PURE__ */ jsx(Toast.Viewport, {
|
|
106
|
+
...KIT_SCOPE,
|
|
107
|
+
className: cn(VIEWPORT, className),
|
|
108
|
+
children: /* @__PURE__ */ jsx(KitToastList, {})
|
|
109
|
+
}) })
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
113
|
+
export { KitToaster, kitToast, kitToastManager };
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.js","names":[],"sources":["../../src/ui/toast.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Toast } from \"@base-ui/react/toast\";\nimport type { KitToast, KitToastOptions } from \"../context\";\nimport { cn } from \"../lib/cn\";\nimport { Spinner } from \"./spinner\";\nimport { KIT_SCOPE } from \"./surfaces\";\n\n/* ── Toast ───────────────────────────────────────────────────────────────\n V2's toaster (app/root.tsx:24-46: sonner bottom-right, 16px offsets, gap 8, the --toast-offset-bottom lift an\n ActionTray with clearToasts writes) rebuilt on Base UI Toast. kit-ports-spec.md §4.\n Kit code never mounts this on its own: it calls KitServices.toast. A host without a toaster of its own mounts\n <KitToaster /> once and passes `toast: kitToast`; a host with one (the dashboard's sonner) keeps it, so nothing\n renders twice.\n The success / error / warning / info glyphs are sonner's own SVG paths (sonner 2.0.8 dist/index.mjs:43-90), copied\n verbatim. sonner is MIT licensed, Copyright (c) 2023 Emil Kowalski (https://github.com/emilkowalski/sonner). */\n\nexport const kitToastManager = Toast.createToastManager();\n\ntype ToastType = \"default\" | \"success\" | \"error\" | \"warning\" | \"info\" | \"loading\";\nlet seq = 0;\n\nfunction add(type: ToastType, message: string, opts: KitToastOptions = {}): string {\n const id = `kit-toast-${++seq}`;\n const { action } = opts;\n return kitToastManager.add({\n id,\n type,\n title: message,\n description: opts.description,\n timeout: opts.duration,\n priority: type === \"error\" ? \"high\" : \"low\",\n data: { icon: opts.icon },\n // sonner closes the toast when its action runs; so does this\n actionProps: action ? { children: action.label, onClick: () => (action.onClick(), kitToastManager.close(id)) } : undefined,\n });\n}\n\n/** KitServices.toast backed by kitToastManager, plus V2's other sonner calls. */\nexport const kitToast: KitToast & {\n error: (message: string, opts?: KitToastOptions) => void;\n warning: (message: string, opts?: KitToastOptions) => void;\n info: (message: string, opts?: KitToastOptions) => void;\n /** stays until dismissed or updated; returns its id */\n loading: (message: string, opts?: KitToastOptions) => string;\n dismiss: (id?: string) => void;\n} = Object.assign((message: string, opts?: KitToastOptions) => void add(\"default\", message, opts), {\n success: (message: string, opts?: KitToastOptions) => void add(\"success\", message, opts),\n error: (message: string, opts?: KitToastOptions) => void add(\"error\", message, opts),\n warning: (message: string, opts?: KitToastOptions) => void add(\"warning\", message, opts),\n info: (message: string, opts?: KitToastOptions) => void add(\"info\", message, opts),\n loading: (message: string, opts?: KitToastOptions) => add(\"loading\", message, opts),\n dismiss: (id?: string) => kitToastManager.close(id),\n});\n\n/* sonner's type glyphs, drawn in the toast's text colour (V2 runs without richColors), at the 16px icon slot */\nfunction SonnerGlyph({ viewBox, d }: { viewBox: string; d: string }) {\n return (\n <svg viewBox={viewBox} fill=\"currentColor\" width=\"16\" height=\"16\" data-toast-glyph=\"\">\n <path fillRule=\"evenodd\" d={d} clipRule=\"evenodd\" />\n </svg>\n );\n}\nconst TYPE_ICON: Partial<Record<string, React.ReactNode>> = {\n success: (\n <SonnerGlyph\n viewBox=\"0 0 20 20\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n />\n ),\n warning: (\n <SonnerGlyph\n viewBox=\"0 0 24 24\"\n d=\"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\"\n />\n ),\n info: (\n <SonnerGlyph\n viewBox=\"0 0 20 20\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n />\n ),\n error: (\n <SonnerGlyph\n viewBox=\"0 0 20 20\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\"\n />\n ),\n loading: <Spinner size=\"md\" />,\n};\n\n/* Viewport: bottom-right, 16px from the edges; the bottom offset follows an ActionTray's --toast-offset-bottom lift.\n Under 600px it spans the width less 16px a side (sonner's mobile layout). */\nconst VIEWPORT =\n \"fixed bottom-[var(--toast-offset-bottom,16px)] right-4 z-[var(--z-toast,500)] w-[356px] outline-none max-[600px]:left-4 max-[600px]:w-auto\";\n\n/* sonner's motion in Base UI's stacked-toast variables: 400ms transform/opacity/height; enter and exit 100% down;\n collapsed, each toast behind the front lifts gap × index, shrinks 5% per index and takes the front toast's height;\n hovered or focused, the stack opens to full heights 8px apart. Reduced motion collapses it (kit base rule). */\nconst ROOT = cn(\n \"[--gap:8px] [--scale:calc(1-var(--toast-index)*0.05)] [--height:var(--toast-frontmost-height,var(--toast-height))]\",\n \"[--offset-y:calc(var(--toast-offset-y)*-1+var(--toast-index)*var(--gap)*-1+var(--toast-swipe-movement-y))]\",\n \"absolute bottom-0 right-0 z-[calc(1000-var(--toast-index))] w-full origin-bottom select-none\",\n \"h-[var(--height)] [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-var(--toast-index)*var(--gap)))_scale(var(--scale))]\",\n \"data-[expanded]:h-[var(--toast-height)] data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]\",\n \"data-[starting-style]:opacity-0 data-[starting-style]:[transform:translateY(100%)]\",\n \"data-[ending-style]:opacity-0 data-[limited]:opacity-0\",\n \"[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(100%)]\",\n \"data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+100%))]\",\n \"data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+100%))_translateY(var(--offset-y))]\",\n \"[transition:transform_400ms_ease,opacity_400ms,height_400ms,box-shadow_200ms]\",\n // the hover bridge between stacked toasts, so the stack stays open while the pointer crosses a gap\n \"after:absolute after:left-0 after:top-full after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\n // V2's effective look: --surface-raised, tray-line edge (line-strong in dark), 12px radius, sonner's own shadow\n \"flex items-center rounded-kit-xl border border-kit-tray-line bg-kit-surface-raised bg-clip-padding p-4 font-sans text-kit-sm text-kit-fg shadow-[0_4px_12px_rgba(0,0,0,0.1)] [.dark_&]:border-kit-line-strong\",\n);\n/* the toasts behind the front hide their content while the stack is collapsed (sonner data-front=false > * opacity 0) */\nconst CONTENT = \"flex min-w-0 flex-1 items-center gap-1.5 transition-opacity duration-[400ms] data-[behind]:opacity-0 data-[expanded]:opacity-100\";\nconst ACTION =\n \"ml-auto inline-flex h-6 shrink-0 cursor-pointer items-center rounded-kit-md bg-kit-inverse px-2 text-kit-xs font-medium text-kit-fg-inverse hover:bg-kit-inverse-hover [transition:opacity_400ms,box-shadow_200ms,background-color_150ms]\";\n\nfunction KitToastItem({ toast }: { toast: Toast.Root.ToastObject }) {\n const icon = (toast.data as { icon?: React.ReactNode } | undefined)?.icon ?? TYPE_ICON[toast.type ?? \"\"];\n return (\n <Toast.Root toast={toast} className={ROOT}>\n <Toast.Content className={CONTENT}>\n {icon ? (\n <span aria-hidden className=\"flex size-4 shrink-0 items-center [&_svg]:size-4\">\n {icon}\n </span>\n ) : null}\n <div className=\"min-w-0 flex-1\">\n <Toast.Title className=\"font-medium leading-[1.5]\" />\n {toast.description ? <Toast.Description className=\"leading-[1.4] text-kit-fg-2\" /> : null}\n </div>\n {toast.actionProps ? <Toast.Action className={ACTION} /> : null}\n </Toast.Content>\n </Toast.Root>\n );\n}\n\nfunction KitToastList() {\n const { toasts } = Toast.useToastManager();\n return toasts.map((t) => <KitToastItem key={t.id} toast={t} />);\n}\n\nexport interface KitToasterProps {\n /** toasts kept on screen (sonner visibleToasts) */\n limit?: number;\n /** ms before a toast closes; a toast's own `duration` wins; loading toasts stay */\n timeout?: number;\n className?: string;\n}\n\n/** Mount once per document, at the root. Its layer carries KIT_SCOPE (a portal sits outside every kit island). */\nexport function KitToaster({ limit = 3, timeout = 4000, className }: KitToasterProps) {\n return (\n <Toast.Provider toastManager={kitToastManager} limit={limit} timeout={timeout}>\n <Toast.Portal>\n <Toast.Viewport {...KIT_SCOPE} className={cn(VIEWPORT, className)}>\n <KitToastList />\n </Toast.Viewport>\n </Toast.Portal>\n </Toast.Provider>\n );\n}\n"],"mappings":";;;;;;;AAgBA,IAAa,kBAAkB,MAAM,mBAAmB;AAGxD,IAAI,MAAM;AAEV,SAAS,IAAI,MAAiB,SAAiB,OAAwB,CAAC,GAAW;CACjF,MAAM,KAAK,aAAa,EAAE;CAC1B,MAAM,EAAE,WAAW;CACnB,OAAO,gBAAgB,IAAI;EACzB;EACA;EACA,OAAO;EACP,aAAa,KAAK;EAClB,SAAS,KAAK;EACd,UAAU,SAAS,UAAU,SAAS;EACtC,MAAM,EAAE,MAAM,KAAK,KAAK;EAExB,aAAa,SAAS;GAAE,UAAU,OAAO;GAAO,gBAAgB,OAAO,QAAQ,GAAG,gBAAgB,MAAM,EAAE;EAAG,IAAI,KAAA;CACnH,CAAC;AACH;;AAGA,IAAa,WAOT,OAAO,QAAQ,SAAiB,SAA2B,KAAK,IAAI,WAAW,SAAS,IAAI,GAAG;CACjG,UAAU,SAAiB,SAA2B,KAAK,IAAI,WAAW,SAAS,IAAI;CACvF,QAAQ,SAAiB,SAA2B,KAAK,IAAI,SAAS,SAAS,IAAI;CACnF,UAAU,SAAiB,SAA2B,KAAK,IAAI,WAAW,SAAS,IAAI;CACvF,OAAO,SAAiB,SAA2B,KAAK,IAAI,QAAQ,SAAS,IAAI;CACjF,UAAU,SAAiB,SAA2B,IAAI,WAAW,SAAS,IAAI;CAClF,UAAU,OAAgB,gBAAgB,MAAM,EAAE;AACpD,CAAC;AAGD,SAAS,YAAY,EAAE,SAAS,KAAqC;CACnE,OACE,oBAAC,OAAD;EAAc;EAAS,MAAK;EAAe,OAAM;EAAK,QAAO;EAAK,oBAAiB;EACjF,UAAA,oBAAC,QAAD;GAAM,UAAS;GAAa;GAAG,UAAS;EAAW,CAAA;CAChD,CAAA;AAET;AACA,IAAM,YAAsD;CAC1D,SACE,oBAAC,aAAD;EACE,SAAQ;EACR,GAAE;CACH,CAAA;CAEH,SACE,oBAAC,aAAD;EACE,SAAQ;EACR,GAAE;CACH,CAAA;CAEH,MACE,oBAAC,aAAD;EACE,SAAQ;EACR,GAAE;CACH,CAAA;CAEH,OACE,oBAAC,aAAD;EACE,SAAQ;EACR,GAAE;CACH,CAAA;CAEH,SAAS,oBAAC,SAAD,EAAS,MAAK,KAAM,CAAA;AAC/B;AAIA,IAAM,WACJ;AAKF,IAAM,OAAO,GACX,sHACA,8GACA,gGACA,6KACA,6IACA,sFACA,0DACA,uGACA,oHACA,iJACA,iFAEA,6GAEA,+MACF;AAEA,IAAM,UAAU;AAChB,IAAM,SACJ;AAEF,SAAS,aAAa,EAAE,SAA4C;CAClE,MAAM,OAAQ,MAAM,MAAiD,QAAQ,UAAU,MAAM,QAAQ;CACrG,OACE,oBAAC,MAAM,MAAP;EAAmB;EAAO,WAAW;EACnC,UAAA,qBAAC,MAAM,SAAP;GAAe,WAAW;GAA1B,UAAA;IACG,OACC,oBAAC,QAAD;KAAM,eAAA;KAAY,WAAU;KACzB,UAAA;IACG,CAAA,IACJ;IACJ,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,oBAAC,MAAM,OAAP,EAAa,WAAU,4BAA6B,CAAA,GACnD,MAAM,cAAc,oBAAC,MAAM,aAAP,EAAmB,WAAU,8BAA+B,CAAA,IAAI,IAClF;;IACJ,MAAM,cAAc,oBAAC,MAAM,QAAP,EAAc,WAAW,OAAS,CAAA,IAAI;GAC9C;;CACL,CAAA;AAEhB;AAEA,SAAS,eAAe;CACtB,MAAM,EAAE,WAAW,MAAM,gBAAgB;CACzC,OAAO,OAAO,KAAK,MAAM,oBAAC,cAAD,EAAyB,OAAO,EAAI,GAAjB,EAAE,EAAe,CAAC;AAChE;;AAWA,SAAgB,WAAW,EAAE,QAAQ,GAAG,UAAU,KAAM,aAA8B;CACpF,OACE,oBAAC,MAAM,UAAP;EAAgB,cAAc;EAAwB;EAAgB;EACpE,UAAA,oBAAC,MAAM,QAAP,EAAA,UACE,oBAAC,MAAM,UAAP;GAAgB,GAAI;GAAW,WAAW,GAAG,UAAU,SAAS;GAC9D,UAAA,oBAAC,cAAD,CAAe,CAAA;EACD,CAAA,EACJ,CAAA;CACA,CAAA;AAEpB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
|
|
3
|
+
export declare const MODAL_LAYER = "data-kit-modal-layer";
|
|
4
|
+
/** Drop-in for Tooltip.Root (controlled or not) that closes itself when a modal layer opens. */
|
|
5
|
+
export declare function TooltipRoot({ open: openProp, defaultOpen, onOpenChange, ...props }: TooltipPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
/** The ink tooltip surface (V2 overlay.tsx:42: .glass-ink, radius 6, 8×4 padding, 12/500, 1.45 leading, wraps, fades in
|
|
7
|
+
* 160ms on a delayed open). The --kit-z-tooltip layer sits on the positioner, the element Base UI places. */
|
|
8
|
+
export declare const TOOLTIP_POPUP_CLASS = "flex max-w-[min(280px,calc(100vw-16px))] items-start gap-2 rounded-kit-md glass-ink px-2 py-1 text-kit-xs font-medium leading-[1.45] data-[open]:not-data-[instant]:animate-kit-fade-in";
|
|
9
|
+
/** Portal → positioner (6px offset, 8px collision padding, --kit-z-tooltip, its own kit scope) → ink popup (role="tooltip", as V2's). */
|
|
10
|
+
export declare function TooltipLayer({ side, children, }: {
|
|
11
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|