@vamos-ui/react 0.0.0-stage → 0.3.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/LICENSE +21 -0
- package/README.md +27 -2
- package/dist/blocks/block-heading.d.ts +29 -0
- package/dist/blocks/block-heading.js +39 -0
- package/dist/blocks/block-image.d.ts +52 -0
- package/dist/blocks/block-image.js +48 -0
- package/dist/blocks/block-link.d.ts +30 -0
- package/dist/blocks/block-link.js +36 -0
- package/dist/blocks/create-blocks.d.ts +54 -0
- package/dist/blocks/create-blocks.js +52 -0
- package/dist/blocks/index.d.ts +55 -0
- package/dist/blocks/index.js +59 -0
- package/dist/blocks/json-ld.d.ts +18 -0
- package/dist/blocks/json-ld.js +44 -0
- package/dist/blocks/labels.d.ts +20 -0
- package/dist/blocks/labels.js +43 -0
- package/dist/blocks/rich-text.d.ts +36 -0
- package/dist/blocks/rich-text.js +106 -0
- package/dist/blocks/schema/define-block.d.ts +151 -0
- package/dist/blocks/schema/define-block.js +120 -0
- package/dist/blocks/schema/emphasis.d.ts +17 -0
- package/dist/blocks/schema/emphasis.js +69 -0
- package/dist/blocks/schema/fields.d.ts +497 -0
- package/dist/blocks/schema/fields.js +240 -0
- package/dist/blocks/schema/icons.d.ts +2 -0
- package/dist/blocks/schema/icons.js +26 -0
- package/dist/blocks/schema/index.d.ts +18 -0
- package/dist/blocks/schema/index.js +21 -0
- package/dist/blocks/schema/lint-types.d.ts +16 -0
- package/dist/blocks/schema/lint-types.js +2 -0
- package/dist/blocks/schema/lint.d.ts +32 -0
- package/dist/blocks/schema/lint.js +164 -0
- package/dist/blocks/schema/localize.d.ts +20 -0
- package/dist/blocks/schema/localize.js +29 -0
- package/dist/blocks/schema/localized.d.ts +25 -0
- package/dist/blocks/schema/localized.js +53 -0
- package/dist/blocks/schema/migrate.d.ts +24 -0
- package/dist/blocks/schema/migrate.js +75 -0
- package/dist/blocks/schema/nodes.d.ts +196 -0
- package/dist/blocks/schema/nodes.js +78 -0
- package/dist/blocks/schema/rich-doc-schema.d.ts +32 -0
- package/dist/blocks/schema/rich-doc-schema.js +66 -0
- package/dist/blocks/schema/rich-doc.d.ts +90 -0
- package/dist/blocks/schema/rich-doc.js +62 -0
- package/dist/blocks/schema/safety.d.ts +20 -0
- package/dist/blocks/schema/safety.js +49 -0
- package/dist/blocks/schema/types.d.ts +172 -0
- package/dist/blocks/schema/types.js +3 -0
- package/dist/blocks/schema/validate.d.ts +17 -0
- package/dist/blocks/schema/validate.js +32 -0
- package/dist/blocks/schema/walk.d.ts +22 -0
- package/dist/blocks/schema/walk.js +60 -0
- package/dist/blocks/section-header.d.ts +38 -0
- package/dist/blocks/section-header.js +22 -0
- package/dist/blocks/section.d.ts +59 -0
- package/dist/blocks/section.js +66 -0
- package/dist/blocks/site/_kit-1.d.ts +101 -0
- package/dist/blocks/site/_kit-1.js +137 -0
- package/dist/blocks/site/_site-icon-1.d.ts +6 -0
- package/dist/blocks/site/_site-icon-1.js +15 -0
- package/dist/blocks/site/announcement-bar.d.ts +42 -0
- package/dist/blocks/site/announcement-bar.js +38 -0
- package/dist/blocks/site/announcement-dismiss.d.ts +18 -0
- package/dist/blocks/site/announcement-dismiss.js +28 -0
- package/dist/blocks/site/article-layout.d.ts +65 -0
- package/dist/blocks/site/article-layout.js +88 -0
- package/dist/blocks/site/blog-list.d.ts +79 -0
- package/dist/blocks/site/blog-list.js +78 -0
- package/dist/blocks/site/comparison-table.d.ts +54 -0
- package/dist/blocks/site/comparison-table.js +38 -0
- package/dist/blocks/site/consent-banner.d.ts +52 -0
- package/dist/blocks/site/consent-banner.js +33 -0
- package/dist/blocks/site/contact-dock.d.ts +52 -0
- package/dist/blocks/site/contact-dock.js +55 -0
- package/dist/blocks/site/contact-form.d.ts +60 -0
- package/dist/blocks/site/contact-form.js +45 -0
- package/dist/blocks/site/cta-booking.d.ts +43 -0
- package/dist/blocks/site/cta-booking.js +69 -0
- package/dist/blocks/site/cta.d.ts +74 -0
- package/dist/blocks/site/cta.js +113 -0
- package/dist/blocks/site/embed-facade.d.ts +20 -0
- package/dist/blocks/site/embed-facade.js +21 -0
- package/dist/blocks/site/faq.d.ts +48 -0
- package/dist/blocks/site/faq.js +52 -0
- package/dist/blocks/site/feature-grid.d.ts +46 -0
- package/dist/blocks/site/feature-grid.js +50 -0
- package/dist/blocks/site/feature-tabs.d.ts +22 -0
- package/dist/blocks/site/feature-tabs.js +11 -0
- package/dist/blocks/site/footer.d.ts +68 -0
- package/dist/blocks/site/footer.js +61 -0
- package/dist/blocks/site/gallery-section.d.ts +42 -0
- package/dist/blocks/site/gallery-section.js +48 -0
- package/dist/blocks/site/hero-video.d.ts +15 -0
- package/dist/blocks/site/hero-video.js +31 -0
- package/dist/blocks/site/hero.d.ts +64 -0
- package/dist/blocks/site/hero.js +73 -0
- package/dist/blocks/site/logo-strip.d.ts +44 -0
- package/dist/blocks/site/logo-strip.js +27 -0
- package/dist/blocks/site/map-hours.d.ts +83 -0
- package/dist/blocks/site/map-hours.js +125 -0
- package/dist/blocks/site/media-text.d.ts +45 -0
- package/dist/blocks/site/media-text.js +56 -0
- package/dist/blocks/site/menu-list.d.ts +74 -0
- package/dist/blocks/site/menu-list.js +84 -0
- package/dist/blocks/site/navbar-submenu.d.ts +18 -0
- package/dist/blocks/site/navbar-submenu.js +51 -0
- package/dist/blocks/site/navbar.d.ts +67 -0
- package/dist/blocks/site/navbar.js +64 -0
- package/dist/blocks/site/not-found.d.ts +40 -0
- package/dist/blocks/site/not-found.js +38 -0
- package/dist/blocks/site/page-intro.d.ts +46 -0
- package/dist/blocks/site/page-intro.js +44 -0
- package/dist/blocks/site/pricing-table.d.ts +67 -0
- package/dist/blocks/site/pricing-table.js +83 -0
- package/dist/blocks/site/process.d.ts +36 -0
- package/dist/blocks/site/process.js +42 -0
- package/dist/blocks/site/registry-1.d.ts +720 -0
- package/dist/blocks/site/registry-1.js +783 -0
- package/dist/blocks/site/registry-2.d.ts +914 -0
- package/dist/blocks/site/registry-2.js +563 -0
- package/dist/blocks/site/rich-text-section.d.ts +34 -0
- package/dist/blocks/site/rich-text-section.js +32 -0
- package/dist/blocks/site/shared/brand-icons.d.ts +21 -0
- package/dist/blocks/site/shared/brand-icons.js +56 -0
- package/dist/blocks/site/shared/consent-gate.d.ts +41 -0
- package/dist/blocks/site/shared/consent-gate.js +43 -0
- package/dist/blocks/site/shared/consent-island.d.ts +38 -0
- package/dist/blocks/site/shared/consent-island.js +63 -0
- package/dist/blocks/site/shared/consent.d.ts +49 -0
- package/dist/blocks/site/shared/consent.js +130 -0
- package/dist/blocks/site/shared/contact-form-island.d.ts +41 -0
- package/dist/blocks/site/shared/contact-form-island.js +100 -0
- package/dist/blocks/site/shared/copy-link.d.ts +10 -0
- package/dist/blocks/site/shared/copy-link.js +25 -0
- package/dist/blocks/site/shared/dock-avoid.d.ts +15 -0
- package/dist/blocks/site/shared/dock-avoid.js +107 -0
- package/dist/blocks/site/shared/dock-hours.d.ts +13 -0
- package/dist/blocks/site/shared/dock-hours.js +25 -0
- package/dist/blocks/site/shared/gallery-lightbox.d.ts +12 -0
- package/dist/blocks/site/shared/gallery-lightbox.js +10 -0
- package/dist/blocks/site/shared/island-keys.d.ts +10 -0
- package/dist/blocks/site/shared/island-keys.js +44 -0
- package/dist/blocks/site/shared/kit-2.d.ts +55 -0
- package/dist/blocks/site/shared/kit-2.js +84 -0
- package/dist/blocks/site/shared/labels-2.d.ts +209 -0
- package/dist/blocks/site/shared/labels-2.js +427 -0
- package/dist/blocks/site/shared/open-now.d.ts +22 -0
- package/dist/blocks/site/shared/open-now.js +27 -0
- package/dist/blocks/site/shared/opening-hours.d.ts +117 -0
- package/dist/blocks/site/shared/opening-hours.js +245 -0
- package/dist/blocks/site/shared/site-accent.d.ts +48 -0
- package/dist/blocks/site/shared/site-accent.js +249 -0
- package/dist/blocks/site/shared/site-form.d.ts +79 -0
- package/dist/blocks/site/shared/site-form.js +111 -0
- package/dist/blocks/site/shared/site-routing.d.ts +54 -0
- package/dist/blocks/site/shared/site-routing.js +86 -0
- package/dist/blocks/site/shared/testimonials-carousel.d.ts +17 -0
- package/dist/blocks/site/shared/testimonials-carousel.js +64 -0
- package/dist/blocks/site/site-shell.d.ts +108 -0
- package/dist/blocks/site/site-shell.js +254 -0
- package/dist/blocks/site/stats-band.d.ts +42 -0
- package/dist/blocks/site/stats-band.js +45 -0
- package/dist/blocks/site/team.d.ts +44 -0
- package/dist/blocks/site/team.js +48 -0
- package/dist/blocks/site/testimonials.d.ts +68 -0
- package/dist/blocks/site/testimonials.js +66 -0
- package/dist/blocks/types.d.ts +63 -0
- package/dist/blocks/types.js +2 -0
- package/dist/business/approval-flow.d.ts +152 -0
- package/dist/business/approval-flow.js +221 -0
- package/dist/business/export-core.d.ts +55 -0
- package/dist/business/export-core.js +101 -0
- package/dist/business/export.d.ts +148 -0
- package/dist/business/export.js +264 -0
- package/dist/business/import-core.d.ts +104 -0
- package/dist/business/import-core.js +281 -0
- package/dist/business/import-wizard.d.ts +186 -0
- package/dist/business/import-wizard.js +401 -0
- package/dist/business/index.d.ts +12 -0
- package/dist/business/index.js +22 -0
- package/dist/business/line-items-core.d.ts +129 -0
- package/dist/business/line-items-core.js +183 -0
- package/dist/business/line-items.d.ts +119 -0
- package/dist/business/line-items.js +299 -0
- package/dist/business/multi-step-form.d.ts +131 -0
- package/dist/business/multi-step-form.js +337 -0
- package/dist/business/permission-core.d.ts +59 -0
- package/dist/business/permission-core.js +99 -0
- package/dist/business/permission-matrix.d.ts +158 -0
- package/dist/business/permission-matrix.js +341 -0
- package/dist/business/setup-checklist.d.ts +80 -0
- package/dist/business/setup-checklist.js +92 -0
- package/dist/business/signer-status.d.ts +53 -0
- package/dist/business/signer-status.js +76 -0
- package/dist/charts/area-chart.d.ts +35 -0
- package/dist/charts/area-chart.js +33 -0
- package/dist/charts/bar-chart.d.ts +27 -0
- package/dist/charts/bar-chart.js +46 -0
- package/dist/charts/bar-list.d.ts +47 -0
- package/dist/charts/bar-list.js +60 -0
- package/dist/charts/chart-shell.d.ts +173 -0
- package/dist/charts/chart-shell.js +205 -0
- package/dist/charts/chart.d.ts +73 -0
- package/dist/charts/chart.js +106 -0
- package/dist/charts/combo-chart.d.ts +29 -0
- package/dist/charts/combo-chart.js +47 -0
- package/dist/charts/donut-chart.d.ts +33 -0
- package/dist/charts/donut-chart.js +113 -0
- package/dist/charts/funnel.d.ts +51 -0
- package/dist/charts/funnel.js +69 -0
- package/dist/charts/gauge.d.ts +62 -0
- package/dist/charts/gauge.js +104 -0
- package/dist/charts/heatmap.d.ts +81 -0
- package/dist/charts/heatmap.js +338 -0
- package/dist/charts/index.d.ts +12 -0
- package/dist/charts/index.js +14 -0
- package/dist/charts/line-chart.d.ts +21 -0
- package/dist/charts/line-chart.js +36 -0
- package/dist/charts/test-utils.d.ts +2 -0
- package/dist/charts/test-utils.js +38 -0
- package/dist/charts/utils.d.ts +130 -0
- package/dist/charts/utils.js +262 -0
- package/dist/components/_qr-core.d.ts +26 -0
- package/dist/components/_qr-core.js +376 -0
- package/dist/components/accordion.d.ts +47 -0
- package/dist/components/accordion.js +70 -0
- package/dist/components/activity-timeline.d.ts +149 -0
- package/dist/components/activity-timeline.js +122 -0
- package/dist/components/address-field.d.ts +116 -0
- package/dist/components/address-field.js +219 -0
- package/dist/components/alert-dialog.d.ts +99 -0
- package/dist/components/alert-dialog.js +192 -0
- package/dist/components/alert.d.ts +42 -0
- package/dist/components/alert.js +82 -0
- package/dist/components/app-shell.d.ts +159 -0
- package/dist/components/app-shell.js +289 -0
- package/dist/components/attachment-list.d.ts +96 -0
- package/dist/components/attachment-list.js +196 -0
- package/dist/components/audit-log.d.ts +150 -0
- package/dist/components/audit-log.js +205 -0
- package/dist/components/avatar.d.ts +87 -0
- package/dist/components/avatar.js +126 -0
- package/dist/components/backup-codes.d.ts +42 -0
- package/dist/components/backup-codes.js +67 -0
- package/dist/components/badge.d.ts +41 -0
- package/dist/components/badge.js +68 -0
- package/dist/components/breadcrumb.d.ts +78 -0
- package/dist/components/breadcrumb.js +106 -0
- package/dist/components/button-group.d.ts +52 -0
- package/dist/components/button-group.js +77 -0
- package/dist/components/button.d.ts +58 -0
- package/dist/components/button.js +107 -0
- package/dist/components/calendar.d.ts +240 -0
- package/dist/components/calendar.js +483 -0
- package/dist/components/card.d.ts +66 -0
- package/dist/components/card.js +76 -0
- package/dist/components/carousel.d.ts +170 -0
- package/dist/components/carousel.js +348 -0
- package/dist/components/checkbox.d.ts +78 -0
- package/dist/components/checkbox.js +138 -0
- package/dist/components/color-picker.d.ts +112 -0
- package/dist/components/color-picker.js +235 -0
- package/dist/components/combobox.d.ts +136 -0
- package/dist/components/combobox.js +294 -0
- package/dist/components/command.d.ts +281 -0
- package/dist/components/command.js +498 -0
- package/dist/components/comment-thread.d.ts +252 -0
- package/dist/components/comment-thread.js +449 -0
- package/dist/components/context-menu.d.ts +77 -0
- package/dist/components/context-menu.js +82 -0
- package/dist/components/currency-input.d.ts +43 -0
- package/dist/components/currency-input.js +85 -0
- package/dist/components/date-picker.d.ts +141 -0
- package/dist/components/date-picker.js +241 -0
- package/dist/components/date-range-picker.d.ts +91 -0
- package/dist/components/date-range-picker.js +251 -0
- package/dist/components/description-list.d.ts +92 -0
- package/dist/components/description-list.js +42 -0
- package/dist/components/dialog.d.ts +139 -0
- package/dist/components/dialog.js +185 -0
- package/dist/components/dropdown-menu.d.ts +100 -0
- package/dist/components/dropdown-menu.js +102 -0
- package/dist/components/editor-layout.d.ts +166 -0
- package/dist/components/editor-layout.js +237 -0
- package/dist/components/empty-state.d.ts +49 -0
- package/dist/components/empty-state.js +68 -0
- package/dist/components/entity-card.d.ts +83 -0
- package/dist/components/entity-card.js +92 -0
- package/dist/components/file-upload.d.ts +256 -0
- package/dist/components/file-upload.js +490 -0
- package/dist/components/formatted-input.d.ts +177 -0
- package/dist/components/formatted-input.js +399 -0
- package/dist/components/hierarchy-chart.d.ts +190 -0
- package/dist/components/hierarchy-chart.js +890 -0
- package/dist/components/hover-card.d.ts +21 -0
- package/dist/components/hover-card.js +32 -0
- package/dist/components/iban-input.d.ts +38 -0
- package/dist/components/iban-input.js +112 -0
- package/dist/components/id-input.d.ts +65 -0
- package/dist/components/id-input.js +130 -0
- package/dist/components/image.d.ts +130 -0
- package/dist/components/image.js +168 -0
- package/dist/components/input-otp.d.ts +62 -0
- package/dist/components/input-otp.js +73 -0
- package/dist/components/input.d.ts +141 -0
- package/dist/components/input.js +187 -0
- package/dist/components/item.d.ts +96 -0
- package/dist/components/item.js +113 -0
- package/dist/components/kbd.d.ts +64 -0
- package/dist/components/kbd.js +119 -0
- package/dist/components/list-layout.d.ts +144 -0
- package/dist/components/list-layout.js +210 -0
- package/dist/components/native-select.d.ts +33 -0
- package/dist/components/native-select.js +48 -0
- package/dist/components/navigation-menu.d.ts +127 -0
- package/dist/components/navigation-menu.js +129 -0
- package/dist/components/notification-center.d.ts +164 -0
- package/dist/components/notification-center.js +399 -0
- package/dist/components/page-header.d.ts +60 -0
- package/dist/components/page-header.js +60 -0
- package/dist/components/pagination.d.ts +121 -0
- package/dist/components/pagination.js +174 -0
- package/dist/components/phone-input.d.ts +49 -0
- package/dist/components/phone-input.js +266 -0
- package/dist/components/pin-map.d.ts +58 -0
- package/dist/components/pin-map.js +167 -0
- package/dist/components/popover.d.ts +38 -0
- package/dist/components/popover.js +69 -0
- package/dist/components/progress.d.ts +79 -0
- package/dist/components/progress.js +97 -0
- package/dist/components/qr-code.d.ts +36 -0
- package/dist/components/qr-code.js +27 -0
- package/dist/components/radio-group.d.ts +43 -0
- package/dist/components/radio-group.js +81 -0
- package/dist/components/record-detail-layout.d.ts +167 -0
- package/dist/components/record-detail-layout.js +233 -0
- package/dist/components/record-picker.d.ts +199 -0
- package/dist/components/record-picker.js +650 -0
- package/dist/components/resizable.d.ts +50 -0
- package/dist/components/resizable.js +88 -0
- package/dist/components/scroll-area.d.ts +40 -0
- package/dist/components/scroll-area.js +56 -0
- package/dist/components/select.d.ts +126 -0
- package/dist/components/select.js +137 -0
- package/dist/components/separator.d.ts +31 -0
- package/dist/components/separator.js +41 -0
- package/dist/components/settings-layout.d.ts +134 -0
- package/dist/components/settings-layout.js +180 -0
- package/dist/components/sheet.d.ts +103 -0
- package/dist/components/sheet.js +165 -0
- package/dist/components/sidebar.d.ts +171 -0
- package/dist/components/sidebar.js +421 -0
- package/dist/components/signature-pad.d.ts +85 -0
- package/dist/components/signature-pad.js +283 -0
- package/dist/components/skeleton.d.ts +64 -0
- package/dist/components/skeleton.js +53 -0
- package/dist/components/sla-timer.d.ts +75 -0
- package/dist/components/sla-timer.js +142 -0
- package/dist/components/slider.d.ts +57 -0
- package/dist/components/slider.js +133 -0
- package/dist/components/slug-input.d.ts +69 -0
- package/dist/components/slug-input.js +201 -0
- package/dist/components/sparkline.d.ts +54 -0
- package/dist/components/sparkline.js +122 -0
- package/dist/components/spinner.d.ts +34 -0
- package/dist/components/spinner.js +34 -0
- package/dist/components/stat.d.ts +135 -0
- package/dist/components/stat.js +130 -0
- package/dist/components/status-picker.d.ts +107 -0
- package/dist/components/status-picker.js +175 -0
- package/dist/components/stepper.d.ts +86 -0
- package/dist/components/stepper.js +103 -0
- package/dist/components/switch.d.ts +34 -0
- package/dist/components/switch.js +70 -0
- package/dist/components/table.d.ts +101 -0
- package/dist/components/table.js +72 -0
- package/dist/components/tabs.d.ts +103 -0
- package/dist/components/tabs.js +173 -0
- package/dist/components/tag-input.d.ts +77 -0
- package/dist/components/tag-input.js +305 -0
- package/dist/components/task-list.d.ts +89 -0
- package/dist/components/task-list.js +238 -0
- package/dist/components/time-picker.d.ts +119 -0
- package/dist/components/time-picker.js +399 -0
- package/dist/components/toast.d.ts +87 -0
- package/dist/components/toast.js +142 -0
- package/dist/components/toggle.d.ts +77 -0
- package/dist/components/toggle.js +109 -0
- package/dist/components/tooltip.d.ts +69 -0
- package/dist/components/tooltip.js +105 -0
- package/dist/components/top-bar.d.ts +87 -0
- package/dist/components/top-bar.js +99 -0
- package/dist/components/tour.d.ts +60 -0
- package/dist/components/tour.js +139 -0
- package/dist/components/tree-select.d.ts +89 -0
- package/dist/components/tree-select.js +243 -0
- package/dist/components/tree-view.d.ts +109 -0
- package/dist/components/tree-view.js +170 -0
- package/dist/components/typography.d.ts +107 -0
- package/dist/components/typography.js +128 -0
- package/dist/components/user-picker.d.ts +89 -0
- package/dist/components/user-picker.js +162 -0
- package/dist/components/version-history.d.ts +191 -0
- package/dist/components/version-history.js +431 -0
- package/dist/data-table/csv.d.ts +27 -0
- package/dist/data-table/csv.js +68 -0
- package/dist/data-table/data-table.d.ts +423 -0
- package/dist/data-table/data-table.js +1259 -0
- package/dist/data-table/filter-bar.d.ts +146 -0
- package/dist/data-table/filter-bar.js +569 -0
- package/dist/data-table/filter-fns.d.ts +65 -0
- package/dist/data-table/filter-fns.js +382 -0
- package/dist/data-table/index.d.ts +8 -0
- package/dist/data-table/index.js +9 -0
- package/dist/data-table/saved-views.d.ts +100 -0
- package/dist/data-table/saved-views.js +251 -0
- package/dist/data-table/types.d.ts +168 -0
- package/dist/data-table/types.js +87 -0
- package/dist/data-table/url-state.d.ts +94 -0
- package/dist/data-table/url-state.js +303 -0
- package/dist/data-table/view-state.d.ts +16 -0
- package/dist/data-table/view-state.js +81 -0
- package/dist/editor/_test-setup.d.ts +1 -0
- package/dist/editor/_test-setup.js +33 -0
- package/dist/editor/block-editor.d.ts +137 -0
- package/dist/editor/block-editor.js +280 -0
- package/dist/editor/commands.d.ts +31 -0
- package/dist/editor/commands.js +150 -0
- package/dist/editor/context.d.ts +108 -0
- package/dist/editor/context.js +30 -0
- package/dist/editor/convert.d.ts +66 -0
- package/dist/editor/convert.js +567 -0
- package/dist/editor/drag-handle.d.ts +10 -0
- package/dist/editor/drag-handle.js +69 -0
- package/dist/editor/extensions.d.ts +34 -0
- package/dist/editor/extensions.js +239 -0
- package/dist/editor/index.d.ts +14 -0
- package/dist/editor/index.js +17 -0
- package/dist/editor/inserter.d.ts +12 -0
- package/dist/editor/inserter.js +88 -0
- package/dist/editor/inspector.d.ts +17 -0
- package/dist/editor/inspector.js +65 -0
- package/dist/editor/items.d.ts +62 -0
- package/dist/editor/items.js +195 -0
- package/dist/editor/labels.d.ts +119 -0
- package/dist/editor/labels.js +130 -0
- package/dist/editor/markdown.d.ts +14 -0
- package/dist/editor/markdown.js +209 -0
- package/dist/editor/menus.d.ts +20 -0
- package/dist/editor/menus.js +236 -0
- package/dist/editor/nodes.d.ts +14 -0
- package/dist/editor/nodes.js +201 -0
- package/dist/editor/outline.d.ts +11 -0
- package/dist/editor/outline.js +52 -0
- package/dist/editor/schema-form.d.ts +64 -0
- package/dist/editor/schema-form.js +290 -0
- package/dist/editor/slash-menu.d.ts +15 -0
- package/dist/editor/slash-menu.js +119 -0
- package/dist/fonts/catalog.d.ts +53 -0
- package/dist/fonts/catalog.js +121 -0
- package/dist/fonts/font-picker.d.ts +70 -0
- package/dist/fonts/font-picker.js +225 -0
- package/dist/fonts/index.d.ts +6 -0
- package/dist/fonts/index.js +7 -0
- package/dist/fonts/loader.d.ts +66 -0
- package/dist/fonts/loader.js +161 -0
- package/dist/fonts/pairing-picker.d.ts +31 -0
- package/dist/fonts/pairing-picker.js +81 -0
- package/dist/fonts/pairings.d.ts +84 -0
- package/dist/fonts/pairings.js +149 -0
- package/dist/fonts/provider.d.ts +34 -0
- package/dist/fonts/provider.js +51 -0
- package/dist/form/index.d.ts +1 -0
- package/dist/form/index.js +1 -0
- package/dist/format/core.d.ts +149 -0
- package/dist/format/core.js +357 -0
- package/dist/format/index.d.ts +4 -0
- package/dist/format/index.js +5 -0
- package/dist/format/use-format.d.ts +1 -0
- package/dist/format/use-format.js +3 -0
- package/dist/index.d.ts +91 -0
- package/dist/index.js +92 -0
- package/dist/lib/cn.d.ts +3 -0
- package/dist/lib/cn.js +16 -0
- package/dist/lib/color.d.ts +64 -0
- package/dist/lib/color.js +177 -0
- package/dist/lib/compose-refs.d.ts +24 -0
- package/dist/lib/compose-refs.js +45 -0
- package/dist/lib/data-islands.d.ts +194 -0
- package/dist/lib/data-islands.js +368 -0
- package/dist/lib/date.d.ts +129 -0
- package/dist/lib/date.js +386 -0
- package/dist/lib/field-context.d.ts +64 -0
- package/dist/lib/field-context.js +62 -0
- package/dist/lib/floating-arrow.d.ts +18 -0
- package/dist/lib/floating-arrow.js +15 -0
- package/dist/lib/islands.d.ts +38 -0
- package/dist/lib/islands.js +40 -0
- package/dist/lib/labels.d.ts +51 -0
- package/dist/lib/labels.js +56 -0
- package/dist/lib/layer.d.ts +36 -0
- package/dist/lib/layer.js +42 -0
- package/dist/lib/locale.d.ts +85 -0
- package/dist/lib/locale.js +105 -0
- package/dist/lib/menu.d.ts +58 -0
- package/dist/lib/menu.js +99 -0
- package/dist/lib/message-format.d.ts +20 -0
- package/dist/lib/message-format.js +116 -0
- package/dist/lib/nav.d.ts +132 -0
- package/dist/lib/nav.js +178 -0
- package/dist/lib/provider.d.ts +100 -0
- package/dist/lib/provider.js +105 -0
- package/dist/lib/public.d.ts +23 -0
- package/dist/lib/public.js +34 -0
- package/dist/lib/sr-name.d.ts +18 -0
- package/dist/lib/sr-name.js +17 -0
- package/dist/lib/text.d.ts +100 -0
- package/dist/lib/text.js +233 -0
- package/dist/lib/theme-scope.d.ts +58 -0
- package/dist/lib/theme-scope.js +59 -0
- package/dist/lib/use-async-list.d.ts +60 -0
- package/dist/lib/use-async-list.js +119 -0
- package/dist/lib/use-container-width.d.ts +19 -0
- package/dist/lib/use-container-width.js +39 -0
- package/dist/lib/use-controllable-state.d.ts +33 -0
- package/dist/lib/use-controllable-state.js +56 -0
- package/dist/lib/use-edge-fade.d.ts +13 -0
- package/dist/lib/use-edge-fade.js +43 -0
- package/dist/lib/use-formatted-input.d.ts +69 -0
- package/dist/lib/use-formatted-input.js +152 -0
- package/dist/lib/use-hotkeys.d.ts +80 -0
- package/dist/lib/use-hotkeys.js +221 -0
- package/dist/lib/use-hover-intent.d.ts +44 -0
- package/dist/lib/use-hover-intent.js +119 -0
- package/dist/lib/use-media-query.d.ts +21 -0
- package/dist/lib/use-media-query.js +28 -0
- package/dist/lib/use-reduced-motion.d.ts +8 -0
- package/dist/lib/use-reduced-motion.js +13 -0
- package/dist/lib/use-tree.d.ts +153 -0
- package/dist/lib/use-tree.js +534 -0
- package/dist/lib/value-format.d.ts +25 -0
- package/dist/lib/value-format.js +56 -0
- package/dist/lib/variants.d.ts +131 -0
- package/dist/lib/variants.js +109 -0
- package/dist/locale-data/core/date.d.ts +24 -0
- package/dist/locale-data/core/date.js +68 -0
- package/dist/locale-data/core/decimal.d.ts +19 -0
- package/dist/locale-data/core/decimal.js +79 -0
- package/dist/locale-data/core/holidays.d.ts +30 -0
- package/dist/locale-data/core/holidays.js +79 -0
- package/dist/locale-data/core/iban.d.ts +29 -0
- package/dist/locale-data/core/iban.js +74 -0
- package/dist/locale-data/core/index.d.ts +7 -0
- package/dist/locale-data/core/index.js +6 -0
- package/dist/locale-data/core/types.d.ts +173 -0
- package/dist/locale-data/core/types.js +6 -0
- package/dist/locale-data/core/week-info.d.ts +23 -0
- package/dist/locale-data/core/week-info.js +85 -0
- package/dist/locale-data/core/working-days.d.ts +27 -0
- package/dist/locale-data/core/working-days.js +133 -0
- package/dist/locale-data/index.d.ts +2 -0
- package/dist/locale-data/index.js +4 -0
- package/dist/locale-data/tr/address-tr.json +1 -0
- package/dist/locale-data/tr/address.d.ts +23 -0
- package/dist/locale-data/tr/address.js +52 -0
- package/dist/locale-data/tr/holidays.d.ts +31 -0
- package/dist/locale-data/tr/holidays.js +81 -0
- package/dist/locale-data/tr/iban.d.ts +21 -0
- package/dist/locale-data/tr/iban.js +45 -0
- package/dist/locale-data/tr/id.d.ts +36 -0
- package/dist/locale-data/tr/id.js +120 -0
- package/dist/locale-data/tr/index.d.ts +12 -0
- package/dist/locale-data/tr/index.js +33 -0
- package/dist/locale-data/tr/kdv.d.ts +91 -0
- package/dist/locale-data/tr/kdv.js +222 -0
- package/dist/locales/en.d.ts +2102 -0
- package/dist/locales/en.js +2088 -0
- package/dist/locales/tr.d.ts +2086 -0
- package/dist/locales/tr.js +2087 -0
- package/dist/media/focal-point.d.ts +42 -0
- package/dist/media/focal-point.js +96 -0
- package/dist/media/gallery-layout.d.ts +19 -0
- package/dist/media/gallery-layout.js +61 -0
- package/dist/media/gallery.d.ts +64 -0
- package/dist/media/gallery.js +140 -0
- package/dist/media/image-cropper.d.ts +86 -0
- package/dist/media/image-cropper.js +170 -0
- package/dist/media/image-field.d.ts +115 -0
- package/dist/media/image-field.js +212 -0
- package/dist/media/index.d.ts +19 -0
- package/dist/media/index.js +23 -0
- package/dist/media/lightbox.d.ts +82 -0
- package/dist/media/lightbox.js +171 -0
- package/dist/media/link-preview.d.ts +97 -0
- package/dist/media/link-preview.js +177 -0
- package/dist/media/media-library.d.ts +244 -0
- package/dist/media/media-library.js +776 -0
- package/dist/media/media-picker.d.ts +96 -0
- package/dist/media/media-picker.js +209 -0
- package/dist/media/media-provider.d.ts +23 -0
- package/dist/media/media-provider.js +44 -0
- package/dist/media/media-utils.d.ts +39 -0
- package/dist/media/media-utils.js +145 -0
- package/dist/media/memory-adapter.d.ts +22 -0
- package/dist/media/memory-adapter.js +162 -0
- package/dist/media/rest-adapter.d.ts +90 -0
- package/dist/media/rest-adapter.js +208 -0
- package/dist/media/serp.d.ts +62 -0
- package/dist/media/serp.js +108 -0
- package/dist/media/test-fixtures.d.ts +3 -0
- package/dist/media/test-fixtures.js +37 -0
- package/dist/media/types.d.ts +183 -0
- package/dist/media/types.js +3 -0
- package/dist/media/use-pan-zoom.d.ts +51 -0
- package/dist/media/use-pan-zoom.js +156 -0
- package/dist/media/use-upload-queue.d.ts +64 -0
- package/dist/media/use-upload-queue.js +115 -0
- package/dist/media/video-player.d.ts +135 -0
- package/dist/media/video-player.js +319 -0
- package/dist/motion/core.d.ts +32 -0
- package/dist/motion/core.js +77 -0
- package/dist/motion/count-up.d.ts +29 -0
- package/dist/motion/count-up.js +92 -0
- package/dist/motion/index.d.ts +11 -0
- package/dist/motion/index.js +13 -0
- package/dist/motion/motion-scope.d.ts +17 -0
- package/dist/motion/motion-scope.js +16 -0
- package/dist/motion/page-transition.d.ts +33 -0
- package/dist/motion/page-transition.js +61 -0
- package/dist/motion/parallax.d.ts +37 -0
- package/dist/motion/parallax.js +90 -0
- package/dist/motion/pointer.d.ts +38 -0
- package/dist/motion/pointer.js +117 -0
- package/dist/motion/reveal.d.ts +72 -0
- package/dist/motion/reveal.js +133 -0
- package/dist/motion/scroll-shrink.d.ts +18 -0
- package/dist/motion/scroll-shrink.js +47 -0
- package/dist/motion/skeleton-swap.d.ts +17 -0
- package/dist/motion/skeleton-swap.js +43 -0
- package/dist/motion/text-reveal.d.ts +30 -0
- package/dist/motion/text-reveal.js +29 -0
- package/dist/motion/ticker.d.ts +35 -0
- package/dist/motion/ticker.js +16 -0
- package/dist/next/index.d.ts +42 -0
- package/dist/next/index.js +36 -0
- package/dist/render/block-renderer.d.ts +56 -0
- package/dist/render/block-renderer.js +137 -0
- package/dist/render/index.d.ts +6 -0
- package/dist/render/index.js +7 -0
- package/dist/render/prepare.d.ts +61 -0
- package/dist/render/prepare.js +119 -0
- package/dist/scheduler/core/duration.d.ts +83 -0
- package/dist/scheduler/core/duration.js +174 -0
- package/dist/scheduler/core/gantt.d.ts +63 -0
- package/dist/scheduler/core/gantt.js +226 -0
- package/dist/scheduler/core/index.d.ts +6 -0
- package/dist/scheduler/core/index.js +7 -0
- package/dist/scheduler/core/layout.d.ts +97 -0
- package/dist/scheduler/core/layout.js +249 -0
- package/dist/scheduler/core/time-scale.d.ts +89 -0
- package/dist/scheduler/core/time-scale.js +173 -0
- package/dist/scheduler/gantt.d.ts +125 -0
- package/dist/scheduler/gantt.js +532 -0
- package/dist/scheduler/index.d.ts +6 -0
- package/dist/scheduler/index.js +7 -0
- package/dist/scheduler/resource-calendar.d.ts +218 -0
- package/dist/scheduler/resource-calendar.js +661 -0
- package/dist/scheduler/scheduler.d.ts +168 -0
- package/dist/scheduler/scheduler.js +768 -0
- package/dist/scheduler/shared.d.ts +63 -0
- package/dist/scheduler/shared.js +145 -0
- package/dist/scheduler/time-tracker.d.ts +138 -0
- package/dist/scheduler/time-tracker.js +403 -0
- package/dist/sortable/core.d.ts +67 -0
- package/dist/sortable/core.js +167 -0
- package/dist/sortable/index.d.ts +8 -0
- package/dist/sortable/index.js +10 -0
- package/dist/sortable/kanban-core.d.ts +70 -0
- package/dist/sortable/kanban-core.js +67 -0
- package/dist/sortable/kanban.d.ts +147 -0
- package/dist/sortable/kanban.js +472 -0
- package/dist/sortable/sortable-list.d.ts +71 -0
- package/dist/sortable/sortable-list.js +76 -0
- package/dist/sortable/sortable-tree.d.ts +105 -0
- package/dist/sortable/sortable-tree.js +462 -0
- package/dist/sortable/sortable.d.ts +188 -0
- package/dist/sortable/sortable.js +485 -0
- package/dist/sortable/use-pointer-drag.d.ts +75 -0
- package/dist/sortable/use-pointer-drag.js +173 -0
- package/dist/sortable/use-time-scale.d.ts +11 -0
- package/dist/sortable/use-time-scale.js +19 -0
- package/dist/styles/base.css +51 -0
- package/dist/styles/blocks.css +949 -0
- package/dist/styles/calendar.css +642 -0
- package/dist/styles/charts.css +264 -0
- package/dist/styles/data.css +474 -0
- package/dist/styles/editors.css +1022 -0
- package/dist/styles/forms.css +406 -0
- package/dist/styles/media.css +515 -0
- package/dist/styles/motion.css +389 -0
- package/dist/styles/navigation.css +293 -0
- package/dist/styles/overlays.css +244 -0
- package/dist/styles.css +743 -0
- package/package.json +160 -4
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { ArrowDown, ArrowUp, ChevronsUpDown } from "lucide-react";
|
|
4
|
+
import { cn } from "../lib/cn.js";
|
|
5
|
+
import { DataLabel } from "../lib/data-islands.js";
|
|
6
|
+
import { EmptyState } from "./empty-state.js";
|
|
7
|
+
const alignClass = { start: "text-start", center: "text-center", end: "text-end" };
|
|
8
|
+
/**
|
|
9
|
+
* Scroll wrapper for a Table: horizontal (and optional vertical) scrolling with soft edge fades
|
|
10
|
+
* that show there is more content. It is a focusable, named region so keyboard users can scroll.
|
|
11
|
+
*/
|
|
12
|
+
export const TableContainer = React.forwardRef(function TableContainer({ className, maxHeight, style, ...props }, ref) {
|
|
13
|
+
return (_jsx("div", { ref: ref, role: "region", tabIndex: 0, "data-slot": "table-container", className: cn("ui-table-scroll relative w-full overflow-auto overscroll-x-contain rounded-[inherit] focus-ring", className), style: maxHeight ? { maxHeight, ...style } : style, ...props }));
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Styled semantic table for small and static data: line items, settings lists, chart data.
|
|
17
|
+
* Server-component compatible. Give it a `<TableCaption>` or `aria-label`.
|
|
18
|
+
*
|
|
19
|
+
* ```tsx
|
|
20
|
+
* <TableContainer aria-label="Invoice lines">
|
|
21
|
+
* <Table>
|
|
22
|
+
* <TableCaption>Invoice INV-2041</TableCaption>
|
|
23
|
+
* <TableHeader><TableRow><TableHead>Item</TableHead><TableHead numeric>Amount</TableHead></TableRow></TableHeader>
|
|
24
|
+
* <TableBody><TableRow><TableCell>Design retainer</TableCell><TableCell numeric>$4,500.00</TableCell></TableRow></TableBody>
|
|
25
|
+
* </Table>
|
|
26
|
+
* </TableContainer>
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export const Table = React.forwardRef(function Table({ className, density = "inherit", striped, hover = true, bordered = "rows", stickyHeader, stickyFirstColumn, layout = "auto", children, ...props }, ref) {
|
|
30
|
+
if (process.env.NODE_ENV !== "production" && !props["aria-label"] && !props["aria-labelledby"]) {
|
|
31
|
+
const hasCaption = React.Children.toArray(children).some((c) => React.isValidElement(c) && c.type === TableCaption);
|
|
32
|
+
if (!hasCaption)
|
|
33
|
+
console.warn("[vamos-ui] <Table> needs a <TableCaption>, aria-label or aria-labelledby.");
|
|
34
|
+
}
|
|
35
|
+
return (_jsx("table", { ref: ref, "data-slot": "table", "data-density": density === "inherit" ? undefined : density, "data-striped": striped ? "" : undefined, "data-hover": hover ? "" : undefined, "data-bordered": bordered, "data-sticky-header": stickyHeader ? "" : undefined, "data-sticky-column": stickyFirstColumn ? "" : undefined, className: cn("ui-table w-full caption-bottom border-separate border-spacing-0 text-[13px] text-fg", layout === "fixed" && "table-fixed", className), ...props, children: children }));
|
|
36
|
+
});
|
|
37
|
+
/** Names the table. Visible under the table by default; `visuallyHidden` keeps it for screen readers. */
|
|
38
|
+
export const TableCaption = React.forwardRef(function TableCaption({ className, visuallyHidden, side = "bottom", ...props }, ref) {
|
|
39
|
+
return (_jsx("caption", { ref: ref, "data-slot": "table-caption", className: cn(visuallyHidden ? "sr-only" : "px-(--cell-px) py-3 text-start text-xs text-fg-subtle", side === "top" && "caption-top pt-0", className), ...props }));
|
|
40
|
+
});
|
|
41
|
+
export const TableHeader = React.forwardRef(function TableHeader({ className, ...props }, ref) {
|
|
42
|
+
return _jsx("thead", { ref: ref, "data-slot": "table-header", className: className, ...props });
|
|
43
|
+
});
|
|
44
|
+
export const TableBody = React.forwardRef(function TableBody({ className, ...props }, ref) {
|
|
45
|
+
return _jsx("tbody", { ref: ref, "data-slot": "table-body", className: className, ...props });
|
|
46
|
+
});
|
|
47
|
+
export const TableFooter = React.forwardRef(function TableFooter({ className, ...props }, ref) {
|
|
48
|
+
return _jsx("tfoot", { ref: ref, "data-slot": "table-footer", className: cn("font-medium", className), ...props });
|
|
49
|
+
});
|
|
50
|
+
export const TableRow = React.forwardRef(function TableRow({ className, selected, disabled, highlighted, ...props }, ref) {
|
|
51
|
+
return (_jsx("tr", { ref: ref, "data-slot": "table-row", "data-state": selected ? "selected" : undefined, "data-disabled": disabled ? "" : undefined, "data-highlighted": highlighted ? "" : undefined, "aria-selected": selected === undefined ? undefined : selected, "aria-disabled": disabled || undefined, className: className, ...props }));
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* Column header (`<th scope="col">`). With `onSort` the label becomes a button and the cell
|
|
55
|
+
* gets `aria-sort`.
|
|
56
|
+
*/
|
|
57
|
+
export const TableHead = React.forwardRef(function TableHead({ className, align, numeric, sort, onSort, scope = "col", children, ...props }, ref) {
|
|
58
|
+
const a = align ?? (numeric ? "end" : "start");
|
|
59
|
+
const sortable = sort !== undefined || onSort !== undefined;
|
|
60
|
+
const SortIcon = sort === "asc" ? ArrowUp : sort === "desc" ? ArrowDown : ChevronsUpDown;
|
|
61
|
+
return (_jsx("th", { ref: ref, scope: scope, "data-slot": "table-head", "data-numeric": numeric ? "" : undefined, "aria-sort": sortable ? (sort === "asc" ? "ascending" : sort === "desc" ? "descending" : "none") : undefined, className: cn("h-[calc(var(--row-h)*0.78)] px-(--cell-px) align-middle text-xs font-medium whitespace-nowrap text-fg-muted", alignClass[a], className), ...props, children: sortable ? (_jsxs("button", { type: "button", onClick: onSort, "data-sorted": sort ? "" : undefined, className: cn("-mx-1.5 inline-flex items-center gap-1 rounded-ui-sm px-1.5 py-1 font-medium transition-colors hover:bg-hover hover:text-fg focus-ring data-sorted:text-fg", a === "end" && "flex-row-reverse"), children: [children, _jsx(SortIcon, { "aria-hidden": true, className: cn("size-3.5 shrink-0", sort ? "text-fg" : "text-fg-subtle") })] })) : (children) }));
|
|
62
|
+
});
|
|
63
|
+
export const TableCell = React.forwardRef(function TableCell({ className, align, numeric, truncate, rowHeader, children, ...props }, ref) {
|
|
64
|
+
const a = align ?? (numeric ? "end" : "start");
|
|
65
|
+
const Comp = rowHeader ? "th" : "td";
|
|
66
|
+
const clamp = typeof truncate === "number" && truncate > 1;
|
|
67
|
+
return (_jsx(Comp, { ref: ref, ...(rowHeader ? { scope: "row" } : {}), "data-slot": "table-cell", "data-numeric": numeric ? "" : undefined, className: cn("h-(--row-h) px-(--cell-px) py-2 align-middle", alignClass[a], numeric && "font-mono text-[12.5px] whitespace-nowrap tabular", rowHeader && "font-medium", truncate === true || truncate === 1 ? "max-w-0 truncate" : null, className), ...props, children: clamp ? (_jsx("span", { className: "line-clamp-(--lines)", style: { ["--lines"]: truncate }, children: children })) : (children) }));
|
|
68
|
+
});
|
|
69
|
+
/** A single full-width row for an empty table body. */
|
|
70
|
+
export const TableEmpty = React.forwardRef(function TableEmpty({ colSpan, icon, title, description, className, children, ...props }, ref) {
|
|
71
|
+
return (_jsx("tr", { ref: ref, "data-slot": "table-empty", className: className, ...props, children: _jsx("td", { colSpan: colSpan, className: "px-(--cell-px) py-8", children: _jsx(EmptyState, { kind: "no-results", size: "sm", icon: icon, title: title ?? _jsx(DataLabel, { ns: "table", id: "empty" }), description: description, actions: children }) }) }));
|
|
72
|
+
});
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Tabs as RadixTabs } from "radix-ui";
|
|
3
|
+
import { type VariantProps } from "class-variance-authority";
|
|
4
|
+
import { type BadgeProps } from "./badge.js";
|
|
5
|
+
export declare const tabsListVariants: (props?: ({
|
|
6
|
+
variant?: "underline" | "pill" | "segmented" | null | undefined;
|
|
7
|
+
fill?: boolean | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
export declare const tabsTriggerVariants: (props?: ({
|
|
10
|
+
variant?: "underline" | "pill" | "segmented" | null | undefined;
|
|
11
|
+
size?: "sm" | "md" | null | undefined;
|
|
12
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
13
|
+
type TabsVariant = NonNullable<VariantProps<typeof tabsListVariants>["variant"]>;
|
|
14
|
+
type TabsSize = "sm" | "md";
|
|
15
|
+
type TabsOrientation = "horizontal" | "vertical";
|
|
16
|
+
export interface TabsProps extends Omit<React.ComponentPropsWithoutRef<typeof RadixTabs.Root>, "value" | "defaultValue" | "onValueChange"> {
|
|
17
|
+
value?: string;
|
|
18
|
+
defaultValue?: string;
|
|
19
|
+
onValueChange?: (value: string) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Switches between views of the same context (WAI-ARIA Tabs: arrows, Home/End).
|
|
23
|
+
* Inactive panels unmount by default; pass `forceMount` on a `TabsContent` to keep it.
|
|
24
|
+
*
|
|
25
|
+
* ```tsx
|
|
26
|
+
* <Tabs defaultValue="overview">
|
|
27
|
+
* <TabsList>
|
|
28
|
+
* <TabsTrigger value="overview">Overview</TabsTrigger>
|
|
29
|
+
* <TabsTrigger value="deals" count={4}>Deals</TabsTrigger>
|
|
30
|
+
* </TabsList>
|
|
31
|
+
* <TabsContent value="overview">…</TabsContent>
|
|
32
|
+
* </Tabs>
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* `activationMode="manual"` for heavy panels (focus moves with arrows, Enter/Space selects).
|
|
36
|
+
* For route-based tabs use `TabsLinkList` — that is navigation, not the Tabs pattern.
|
|
37
|
+
*/
|
|
38
|
+
export declare const Tabs: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
39
|
+
export interface TabsListProps extends React.ComponentPropsWithoutRef<typeof RadixTabs.List> {
|
|
40
|
+
/** `underline` (pages, records) · `pill` (status filters) · `segmented` (view switch). Default `underline`. */
|
|
41
|
+
variant?: TabsVariant;
|
|
42
|
+
size?: TabsSize;
|
|
43
|
+
/** Equal-width tabs that fill the row. */
|
|
44
|
+
fill?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* `"scroll"`: when tabs don't fit, the strip scrolls with edge fade masks and the selected tab
|
|
47
|
+
* is kept in view. Default `"scroll"` for horizontal lists. `"none"` lets the list wrap/clip.
|
|
48
|
+
*/
|
|
49
|
+
overflow?: "scroll" | "none";
|
|
50
|
+
}
|
|
51
|
+
/** The row (or column) of tab triggers. */
|
|
52
|
+
export declare const TabsList: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
|
|
53
|
+
export interface TabsTriggerProps extends React.ComponentPropsWithoutRef<typeof RadixTabs.Trigger> {
|
|
54
|
+
/** Leading icon. */
|
|
55
|
+
icon?: React.ReactNode;
|
|
56
|
+
/** Trailing count (locale-formatted, 99+). Announced as part of the name: "Draft, 12". */
|
|
57
|
+
count?: number;
|
|
58
|
+
/** Badge tone for `count`. Default `neutral` (the selected tab uses `accent`). */
|
|
59
|
+
badgeTone?: BadgeProps["tone"];
|
|
60
|
+
}
|
|
61
|
+
/** One tab. `value` must match a `TabsContent`. */
|
|
62
|
+
export declare const TabsTrigger: React.ForwardRefExoticComponent<TabsTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
63
|
+
export interface TabsContentProps extends React.ComponentPropsWithoutRef<typeof RadixTabs.Content> {
|
|
64
|
+
}
|
|
65
|
+
/** The panel for one tab. Unmounted while inactive unless `forceMount`. */
|
|
66
|
+
export declare const TabsContent: React.ForwardRefExoticComponent<TabsContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
67
|
+
export interface TabsLinkListProps extends React.HTMLAttributes<HTMLElement> {
|
|
68
|
+
/** Accessible name of the `nav`, e.g. "Contact sections". Required when the page has more than one nav. */
|
|
69
|
+
"aria-label"?: string;
|
|
70
|
+
variant?: TabsVariant;
|
|
71
|
+
size?: TabsSize;
|
|
72
|
+
fill?: boolean;
|
|
73
|
+
orientation?: TabsOrientation;
|
|
74
|
+
overflow?: "scroll" | "none";
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Route-based tabs: a `<nav>` of links with `aria-current="page"` on the active one. Links use the
|
|
78
|
+
* app's router `Link` from `VamosProvider`, and the active tab is derived from `currentPath`
|
|
79
|
+
* unless a `TabsLink` sets `active`.
|
|
80
|
+
*
|
|
81
|
+
* ```tsx
|
|
82
|
+
* <TabsLinkList aria-label="Contact sections">
|
|
83
|
+
* <TabsLink href="/contacts/42" exact>Overview</TabsLink>
|
|
84
|
+
* <TabsLink href="/contacts/42/deals" count={4}>Deals</TabsLink>
|
|
85
|
+
* </TabsLinkList>
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare const TabsLinkList: React.ForwardRefExoticComponent<TabsLinkListProps & React.RefAttributes<HTMLElement>>;
|
|
89
|
+
export interface TabsLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href"> {
|
|
90
|
+
href: string;
|
|
91
|
+
/** Force the active state. Default: derived from `currentPath` (`exact` for an index route). */
|
|
92
|
+
active?: boolean;
|
|
93
|
+
/** Match only this exact path (use for the first, "Overview" tab). */
|
|
94
|
+
exact?: boolean;
|
|
95
|
+
icon?: React.ReactNode;
|
|
96
|
+
count?: number;
|
|
97
|
+
badgeTone?: BadgeProps["tone"];
|
|
98
|
+
/** Dims the link and removes it from the tab order. */
|
|
99
|
+
disabled?: boolean;
|
|
100
|
+
}
|
|
101
|
+
/** One route tab. Renders the app's `Link`. */
|
|
102
|
+
export declare const TabsLink: React.ForwardRefExoticComponent<TabsLinkProps & React.RefAttributes<HTMLAnchorElement>>;
|
|
103
|
+
export {};
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Tabs as RadixTabs } from "radix-ui";
|
|
5
|
+
import { cva } from "class-variance-authority";
|
|
6
|
+
import { cn } from "../lib/cn.js";
|
|
7
|
+
import { useControllableState } from "../lib/use-controllable-state.js";
|
|
8
|
+
import { useComposedRefs } from "../lib/compose-refs.js";
|
|
9
|
+
import { useEdgeFade } from "../lib/use-edge-fade.js";
|
|
10
|
+
import { useLink, useNavigation } from "../lib/provider.js";
|
|
11
|
+
import { Badge } from "./badge.js";
|
|
12
|
+
/* ------------------------------------------------------------------ */
|
|
13
|
+
/* Variants (shared by Radix tabs and link tabs) */
|
|
14
|
+
/* ------------------------------------------------------------------ */
|
|
15
|
+
export const tabsListVariants = cva("relative flex min-w-max", {
|
|
16
|
+
variants: {
|
|
17
|
+
variant: {
|
|
18
|
+
/** Pages and records: hairline rule with an accent underline on the selected tab. */
|
|
19
|
+
underline: "gap-5 border-b border-line data-[orientation=vertical]:min-w-0 data-[orientation=vertical]:flex-col data-[orientation=vertical]:gap-0.5 data-[orientation=vertical]:border-b-0 data-[orientation=vertical]:border-s",
|
|
20
|
+
/** Status filters: quiet pills. */
|
|
21
|
+
pill: "gap-1 data-[orientation=vertical]:min-w-0 data-[orientation=vertical]:flex-col",
|
|
22
|
+
/** 2–4 option view switch (List / Grid). */
|
|
23
|
+
segmented: "inline-flex w-max gap-0.5 rounded-ui border border-line bg-surface-2 p-0.5 data-[orientation=vertical]:flex-col",
|
|
24
|
+
},
|
|
25
|
+
fill: { true: "w-full min-w-0 [&>*]:flex-1" },
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: { variant: "underline" },
|
|
28
|
+
});
|
|
29
|
+
export const tabsTriggerVariants = cva([
|
|
30
|
+
"group/tab relative inline-flex shrink-0 select-none items-center gap-2 whitespace-nowrap font-medium text-fg-muted outline-none",
|
|
31
|
+
"transition-[color,background-color,box-shadow] duration-150 focus-ring",
|
|
32
|
+
"hover:text-fg data-selected:text-fg",
|
|
33
|
+
"disabled:pointer-events-none disabled:opacity-45 aria-disabled:pointer-events-none aria-disabled:opacity-45",
|
|
34
|
+
"[&_svg]:shrink-0",
|
|
35
|
+
], {
|
|
36
|
+
variants: {
|
|
37
|
+
variant: {
|
|
38
|
+
underline: [
|
|
39
|
+
"justify-center rounded-ui-sm px-0.5 focus-visible:outline-offset-0",
|
|
40
|
+
// indicator: a 2px accent rule that grows in from the centre
|
|
41
|
+
"after:pointer-events-none after:absolute after:inset-x-0 after:-bottom-px after:h-0.5 after:rounded-full after:bg-accent-ink",
|
|
42
|
+
"after:origin-center after:scale-x-0 after:transition-transform after:duration-200 motion-reduce:after:transition-none data-selected:after:scale-x-100",
|
|
43
|
+
// vertical: indicator on the start edge
|
|
44
|
+
"data-[orientation=vertical]:justify-start data-[orientation=vertical]:px-3 data-[orientation=vertical]:hover:bg-hover",
|
|
45
|
+
"data-[orientation=vertical]:after:inset-x-auto data-[orientation=vertical]:after:inset-y-1.5 data-[orientation=vertical]:after:-start-px data-[orientation=vertical]:after:bottom-auto",
|
|
46
|
+
"data-[orientation=vertical]:after:h-auto data-[orientation=vertical]:after:w-0.5 data-[orientation=vertical]:after:scale-x-100 data-[orientation=vertical]:after:scale-y-0 data-[orientation=vertical]:data-selected:after:scale-y-100",
|
|
47
|
+
],
|
|
48
|
+
pill: "justify-center rounded-full px-3 hover:bg-hover data-selected:bg-selected data-[orientation=vertical]:justify-start data-[orientation=vertical]:rounded-ui-sm",
|
|
49
|
+
segmented: "justify-center rounded-[calc(var(--radius)-3px)] px-3 data-selected:bg-surface data-selected:shadow-[0_1px_2px_rgb(0_0_0/0.1),0_0_0_1px_var(--line)] glass:data-selected:bg-field",
|
|
50
|
+
},
|
|
51
|
+
size: { sm: "text-[13px] [&_svg]:size-3.5", md: "text-sm [&_svg]:size-4" },
|
|
52
|
+
},
|
|
53
|
+
compoundVariants: [
|
|
54
|
+
{ variant: "underline", size: "sm", className: "h-9" },
|
|
55
|
+
{ variant: "underline", size: "md", className: "h-11" },
|
|
56
|
+
{ variant: "pill", size: "sm", className: "h-7" },
|
|
57
|
+
{ variant: "pill", size: "md", className: "h-8" },
|
|
58
|
+
{ variant: "segmented", size: "sm", className: "h-[calc(var(--control-h)-0.75rem)]" },
|
|
59
|
+
{ variant: "segmented", size: "md", className: "h-[calc(var(--control-h)-0.375rem)]" },
|
|
60
|
+
],
|
|
61
|
+
defaultVariants: { variant: "underline", size: "md" },
|
|
62
|
+
});
|
|
63
|
+
const TabsContext = React.createContext({ value: "", orientation: "horizontal" });
|
|
64
|
+
const TabsListContext = React.createContext({ variant: "underline", size: "md" });
|
|
65
|
+
/**
|
|
66
|
+
* Switches between views of the same context (WAI-ARIA Tabs: arrows, Home/End).
|
|
67
|
+
* Inactive panels unmount by default; pass `forceMount` on a `TabsContent` to keep it.
|
|
68
|
+
*
|
|
69
|
+
* ```tsx
|
|
70
|
+
* <Tabs defaultValue="overview">
|
|
71
|
+
* <TabsList>
|
|
72
|
+
* <TabsTrigger value="overview">Overview</TabsTrigger>
|
|
73
|
+
* <TabsTrigger value="deals" count={4}>Deals</TabsTrigger>
|
|
74
|
+
* </TabsList>
|
|
75
|
+
* <TabsContent value="overview">…</TabsContent>
|
|
76
|
+
* </Tabs>
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* `activationMode="manual"` for heavy panels (focus moves with arrows, Enter/Space selects).
|
|
80
|
+
* For route-based tabs use `TabsLinkList` — that is navigation, not the Tabs pattern.
|
|
81
|
+
*/
|
|
82
|
+
export const Tabs = React.forwardRef(function Tabs({ value: valueProp, defaultValue, onValueChange, orientation = "horizontal", className, ...props }, ref) {
|
|
83
|
+
const [value, setValue] = useControllableState({ value: valueProp, defaultValue: defaultValue ?? "", onChange: onValueChange, name: "Tabs" });
|
|
84
|
+
const ctx = React.useMemo(() => ({ value, orientation }), [value, orientation]);
|
|
85
|
+
return (_jsx(TabsContext.Provider, { value: ctx, children: _jsx(RadixTabs.Root, { ref: ref, "data-slot": "tabs", value: value, onValueChange: setValue, orientation: orientation, className: cn("flex flex-col gap-4 data-[orientation=vertical]:flex-row data-[orientation=vertical]:gap-6", className), ...props }) }));
|
|
86
|
+
});
|
|
87
|
+
/** The row (or column) of tab triggers. */
|
|
88
|
+
export const TabsList = React.forwardRef(function TabsList({ variant = "underline", size = "md", fill, overflow = "scroll", className, children, ...props }, ref) {
|
|
89
|
+
const { value, orientation } = React.useContext(TabsContext);
|
|
90
|
+
const scrollRef = React.useRef(null);
|
|
91
|
+
const scrolls = overflow === "scroll" && orientation === "horizontal" && !fill;
|
|
92
|
+
useEdgeFade(scrollRef, "x", scrolls);
|
|
93
|
+
// Keep the selected tab visible when it changes (or on mount).
|
|
94
|
+
React.useEffect(() => {
|
|
95
|
+
const scroller = scrollRef.current;
|
|
96
|
+
if (!scrolls || !scroller)
|
|
97
|
+
return;
|
|
98
|
+
const active = scroller.querySelector("[data-selected]");
|
|
99
|
+
if (!active)
|
|
100
|
+
return;
|
|
101
|
+
const s = scroller.getBoundingClientRect();
|
|
102
|
+
const a = active.getBoundingClientRect();
|
|
103
|
+
if (a.left < s.left || a.right > s.right) {
|
|
104
|
+
scroller.scrollTo?.({ left: scroller.scrollLeft + (a.left - s.left) - s.width / 2 + a.width / 2, behavior: "smooth" });
|
|
105
|
+
}
|
|
106
|
+
}, [value, scrolls]);
|
|
107
|
+
const ctx = React.useMemo(() => ({ variant, size }), [variant, size]);
|
|
108
|
+
const list = (_jsx(RadixTabs.List, { ref: ref, "data-slot": "tabs-list", "data-variant": variant, className: cn(tabsListVariants({ variant, fill }), className), ...props, children: children }));
|
|
109
|
+
return (_jsx(TabsListContext.Provider, { value: ctx, children: scrolls ? (_jsx("div", { ref: scrollRef, "data-slot": "tabs-scroller", "data-edge-fade": "x", className: "min-w-0 scrollbar-none overflow-x-auto overscroll-x-contain", children: list })) : (list) }));
|
|
110
|
+
});
|
|
111
|
+
/** One tab. `value` must match a `TabsContent`. */
|
|
112
|
+
export const TabsTrigger = React.forwardRef(function TabsTrigger({ value, icon, count, badgeTone, className, children, ...props }, ref) {
|
|
113
|
+
const { variant, size } = React.useContext(TabsListContext);
|
|
114
|
+
const selected = React.useContext(TabsContext).value === value;
|
|
115
|
+
// Tabs used as a filter (no TabsContent) would point aria-controls at a panel that never
|
|
116
|
+
// exists — an invalid ARIA reference. Drop it when the selected tab has no panel in the DOM.
|
|
117
|
+
const innerRef = React.useRef(null);
|
|
118
|
+
const composedRef = useComposedRefs(ref, innerRef);
|
|
119
|
+
const controlsId = React.useRef(null);
|
|
120
|
+
const [noPanel, setNoPanel] = React.useState(false);
|
|
121
|
+
React.useEffect(() => {
|
|
122
|
+
const el = innerRef.current;
|
|
123
|
+
if (!el)
|
|
124
|
+
return;
|
|
125
|
+
controlsId.current ??= el.getAttribute("aria-controls");
|
|
126
|
+
if (!selected)
|
|
127
|
+
return;
|
|
128
|
+
const id = controlsId.current;
|
|
129
|
+
setNoPanel(!!id && !el.ownerDocument.getElementById(id));
|
|
130
|
+
}, [selected]);
|
|
131
|
+
return (_jsx(RadixTabs.Trigger, { ref: composedRef, value: value, "data-slot": "tabs-trigger", "data-selected": selected ? "" : undefined, className: cn(tabsTriggerVariants({ variant, size }), className), ...props, ...(noPanel && props["aria-controls"] === undefined ? { "aria-controls": undefined } : {}), children: _jsx(TabContent, { icon: icon, count: count, badgeTone: badgeTone ?? (selected && variant !== "underline" ? "accent" : undefined), children: children }) }));
|
|
132
|
+
});
|
|
133
|
+
function TabContent({ icon, count, badgeTone, children }) {
|
|
134
|
+
return (_jsxs(_Fragment, { children: [icon ? (_jsx("span", { "aria-hidden": true, className: "inline-flex text-fg-subtle transition-colors group-hover/tab:text-fg-muted group-data-selected/tab:text-current", children: icon })) : null, _jsx("span", { className: "truncate", children: children }), count !== undefined ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "sr-only", children: ", " }), _jsx(Badge, { count: count, tone: badgeTone ?? "neutral", className: "-me-0.5" })] })) : null] }));
|
|
135
|
+
}
|
|
136
|
+
/** The panel for one tab. Unmounted while inactive unless `forceMount`. */
|
|
137
|
+
export const TabsContent = React.forwardRef(function TabsContent({ className, ...props }, ref) {
|
|
138
|
+
return _jsx(RadixTabs.Content, { ref: ref, "data-slot": "tabs-content", className: cn("min-w-0 flex-1 rounded-ui outline-none focus-ring", className), ...props });
|
|
139
|
+
});
|
|
140
|
+
/**
|
|
141
|
+
* Route-based tabs: a `<nav>` of links with `aria-current="page"` on the active one. Links use the
|
|
142
|
+
* app's router `Link` from `VamosProvider`, and the active tab is derived from `currentPath`
|
|
143
|
+
* unless a `TabsLink` sets `active`.
|
|
144
|
+
*
|
|
145
|
+
* ```tsx
|
|
146
|
+
* <TabsLinkList aria-label="Contact sections">
|
|
147
|
+
* <TabsLink href="/contacts/42" exact>Overview</TabsLink>
|
|
148
|
+
* <TabsLink href="/contacts/42/deals" count={4}>Deals</TabsLink>
|
|
149
|
+
* </TabsLinkList>
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
export const TabsLinkList = React.forwardRef(function TabsLinkList({ variant = "underline", size = "md", fill, orientation = "horizontal", overflow = "scroll", className, children, ...props }, ref) {
|
|
153
|
+
const scrollRef = React.useRef(null);
|
|
154
|
+
const composed = useComposedRefs(ref, scrollRef);
|
|
155
|
+
const scrolls = overflow === "scroll" && orientation === "horizontal" && !fill;
|
|
156
|
+
useEdgeFade(scrollRef, "x", scrolls);
|
|
157
|
+
React.useEffect(() => {
|
|
158
|
+
const el = scrollRef.current;
|
|
159
|
+
if (!scrolls || !el)
|
|
160
|
+
return;
|
|
161
|
+
el.querySelector("[aria-current=page]")?.scrollIntoView?.({ block: "nearest", inline: "nearest" });
|
|
162
|
+
}, [scrolls]);
|
|
163
|
+
const ctx = React.useMemo(() => ({ variant, size }), [variant, size]);
|
|
164
|
+
return (_jsx(TabsListContext.Provider, { value: ctx, children: _jsx("nav", { ref: composed, "data-slot": "tabs-link-list", "data-edge-fade": scrolls ? "x" : undefined, className: cn(scrolls && "min-w-0 scrollbar-none overflow-x-auto overscroll-x-contain", className), ...props, children: _jsx("div", { "data-orientation": orientation, "data-variant": variant, className: tabsListVariants({ variant, fill }), children: React.Children.map(children, (child) => React.isValidElement(child) ? React.cloneElement(child, { "data-orientation": orientation }) : child) }) }) }));
|
|
165
|
+
});
|
|
166
|
+
/** One route tab. Renders the app's `Link`. */
|
|
167
|
+
export const TabsLink = React.forwardRef(function TabsLink({ href, active, exact, icon, count, badgeTone, disabled, className, children, ...props }, ref) {
|
|
168
|
+
const Link = useLink();
|
|
169
|
+
const { isActive } = useNavigation();
|
|
170
|
+
const { variant, size } = React.useContext(TabsListContext);
|
|
171
|
+
const current = active ?? isActive(href, { exact });
|
|
172
|
+
return (_jsx(Link, { ref: ref, href: href, "data-slot": "tabs-link", "data-selected": current ? "" : undefined, "aria-current": current ? "page" : undefined, "aria-disabled": disabled || undefined, tabIndex: disabled ? -1 : undefined, className: cn(tabsTriggerVariants({ variant, size }), className), ...props, children: _jsx(TabContent, { icon: icon, count: count, badgeTone: badgeTone ?? (current && variant !== "underline" ? "accent" : undefined), children: children }) }));
|
|
173
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type BadgeProps } from "./badge.js";
|
|
3
|
+
declare const tagInputLabels: {
|
|
4
|
+
placeholder: string;
|
|
5
|
+
list: string;
|
|
6
|
+
suggestions: string;
|
|
7
|
+
added: string;
|
|
8
|
+
removed: string;
|
|
9
|
+
duplicate: string;
|
|
10
|
+
max: string;
|
|
11
|
+
notAllowed: string;
|
|
12
|
+
tooLong: string;
|
|
13
|
+
invalid: string;
|
|
14
|
+
remove: string;
|
|
15
|
+
loading: string;
|
|
16
|
+
};
|
|
17
|
+
export type TagInputLabels = typeof tagInputLabels;
|
|
18
|
+
export type TagDelimiter = "Enter" | "Tab" | "," | ";" | " " | (string & {});
|
|
19
|
+
export interface TagInputProps {
|
|
20
|
+
/** Current tags (controlled). */
|
|
21
|
+
value?: string[];
|
|
22
|
+
defaultValue?: string[];
|
|
23
|
+
onValueChange?: (tags: string[]) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Suggestions under the input: a static list (filtered with locale folding), or a loader
|
|
26
|
+
* `(query, signal) => Promise<string[]>` — debounced and aborted for you.
|
|
27
|
+
*/
|
|
28
|
+
suggestions?: string[] | ((query: string, signal: AbortSignal) => Promise<string[]>);
|
|
29
|
+
/** `false`: only suggestions can be added. Default `true`. */
|
|
30
|
+
allowCustom?: boolean;
|
|
31
|
+
/** Keys that commit the typed text. Default `["Enter", "Tab", ","]`. Paste always splits on comma, semicolon and newline. */
|
|
32
|
+
delimiters?: TagDelimiter[];
|
|
33
|
+
/** Maximum number of tags. */
|
|
34
|
+
max?: number;
|
|
35
|
+
/** Maximum characters per tag. */
|
|
36
|
+
maxLength?: number;
|
|
37
|
+
/** Return an error message for an invalid tag; it is kept, shown in the danger tone and makes the field invalid. */
|
|
38
|
+
validate?: (tag: string) => string | true;
|
|
39
|
+
/** Normalise before adding. Default: trim and collapse inner whitespace. */
|
|
40
|
+
transform?: (tag: string) => string;
|
|
41
|
+
/** Duplicate check: `"fold"` (default) treats "İstanbul" and "istanbul" as the same tag. */
|
|
42
|
+
dedupe?: "fold" | "exact";
|
|
43
|
+
/** Badge tone per tag (segment colours, status). */
|
|
44
|
+
tagTone?: (tag: string) => BadgeProps["tone"];
|
|
45
|
+
/** Commit the typed text when the input loses focus. Default `false`. */
|
|
46
|
+
addOnBlur?: boolean;
|
|
47
|
+
/** Each tag submits one entry under this name (`formData.getAll(name)`). */
|
|
48
|
+
name?: string;
|
|
49
|
+
placeholder?: string;
|
|
50
|
+
size?: "sm" | "md";
|
|
51
|
+
/** `"ghost"`: borderless until hover/focus. */
|
|
52
|
+
variant?: "default" | "ghost";
|
|
53
|
+
disabled?: boolean;
|
|
54
|
+
invalid?: boolean;
|
|
55
|
+
readOnly?: boolean;
|
|
56
|
+
required?: boolean;
|
|
57
|
+
id?: string;
|
|
58
|
+
"aria-label"?: string;
|
|
59
|
+
"aria-labelledby"?: string;
|
|
60
|
+
"aria-describedby"?: string;
|
|
61
|
+
className?: string;
|
|
62
|
+
/** Built-in string overrides (`tagInput` namespace). */
|
|
63
|
+
labels?: Partial<TagInputLabels>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Free-form multi-value entry: post tags, contact segments, skills, recipients, keywords.
|
|
67
|
+
* Chips live inside the box with a trailing text input. Enter, Tab or comma add; paste splits a
|
|
68
|
+
* comma- or newline-separated list; Backspace on the empty input moves to the last chip, and a
|
|
69
|
+
* second Backspace removes it; ←/→ move between chips. Adds and removals are announced.
|
|
70
|
+
*
|
|
71
|
+
* ```tsx
|
|
72
|
+
* <Field label="Tags"><TagInput name="tags" suggestions={existingTags} max={10} /></Field>
|
|
73
|
+
* <TagInput validate={(v) => /^\S+@\S+\.\S+$/.test(v) || "Not an email address"} />
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare const TagInput: React.ForwardRefExoticComponent<TagInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
77
|
+
export {};
|