@vamos-ui/react 0.0.0-stage → 0.2.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 +100 -0
- package/dist/blocks/site/_kit-1.js +135 -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 +112 -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 +51 -0
- package/dist/blocks/site/feature-grid.d.ts +46 -0
- package/dist/blocks/site/feature-grid.js +49 -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 +47 -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 +67 -0
- package/dist/blocks/site/logo-strip.d.ts +42 -0
- package/dist/blocks/site/logo-strip.js +26 -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 +55 -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 +82 -0
- package/dist/blocks/site/process.d.ts +36 -0
- package/dist/blocks/site/process.js +41 -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 +97 -0
- package/dist/blocks/site/site-shell.js +227 -0
- package/dist/blocks/site/stats-band.d.ts +40 -0
- package/dist/blocks/site/stats-band.js +41 -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 +65 -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 +11 -0
- package/dist/business/index.js +20 -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/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 +42 -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/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/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 +275 -0
- package/dist/components/command.js +493 -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/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/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/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/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 +86 -0
- package/dist/index.js +87 -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 +22 -0
- package/dist/lib/public.js +33 -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 +138 -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/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 +101 -0
- package/dist/sortable/sortable-tree.js +450 -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/navigation.css +293 -0
- package/dist/styles/overlays.css +244 -0
- package/dist/styles.css +742 -0
- package/package.json +156 -4
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type ProgressTone = "accent" | "success" | "warning" | "danger" | "auto";
|
|
3
|
+
declare const progressLabels: {
|
|
4
|
+
of: string;
|
|
5
|
+
loading: string;
|
|
6
|
+
};
|
|
7
|
+
interface SharedProgressProps {
|
|
8
|
+
/** Current value. `null` / `undefined` → indeterminate. Values above `max` are allowed (quota overrun). */
|
|
9
|
+
value?: number | null;
|
|
10
|
+
/** Default 100. */
|
|
11
|
+
max?: number;
|
|
12
|
+
/**
|
|
13
|
+
* `"accent"` (default; turns success when complete), a status colour, or `"auto"` for quotas:
|
|
14
|
+
* above 80% warning, at or above 100% danger.
|
|
15
|
+
*/
|
|
16
|
+
tone?: ProgressTone;
|
|
17
|
+
/** How the value reads (visible and `aria-valuetext`): `"42%"` or `"1,240 of 5,000"`. Default `"percent"`. */
|
|
18
|
+
display?: "percent" | "fraction";
|
|
19
|
+
/** Override the announced value text entirely. */
|
|
20
|
+
valueText?: string;
|
|
21
|
+
labels?: Partial<typeof progressLabels>;
|
|
22
|
+
}
|
|
23
|
+
export declare const progressTrackVariants: (props?: ({
|
|
24
|
+
size?: "sm" | "md" | "xs" | null | undefined;
|
|
25
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
26
|
+
export interface ProgressProps extends SharedProgressProps, Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
|
|
27
|
+
/** 2 / 4 / 8 px. Default `"sm"`. */
|
|
28
|
+
size?: "xs" | "sm" | "md";
|
|
29
|
+
/** Visible label above the bar (linked with `aria-labelledby`). Without it, pass `aria-label`. */
|
|
30
|
+
label?: React.ReactNode;
|
|
31
|
+
/** Show the value at the end of the label row, or render your own. */
|
|
32
|
+
showValue?: boolean | ((value: number, max: number) => React.ReactNode);
|
|
33
|
+
/** Small text under the bar ("About 2 minutes left"). */
|
|
34
|
+
hint?: React.ReactNode;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Task progress or quota use. `role="progressbar"` with `aria-valuenow/min/max` and a localized
|
|
38
|
+
* `aria-valuetext` ("42%" in English, "%42" in Turkish). Fills from the inline start (right in RTL).
|
|
39
|
+
*
|
|
40
|
+
* ```tsx
|
|
41
|
+
* <Progress label="Uploading 4 files" value={42} showValue />
|
|
42
|
+
* <Progress label="Contacts imported" value={1240} max={5000} display="fraction" showValue />
|
|
43
|
+
* <Progress label="Storage" value={9.2} max={10} tone="auto" />
|
|
44
|
+
* <Progress aria-label="Loading" value={null} />
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare const Progress: React.ForwardRefExoticComponent<ProgressProps & React.RefAttributes<HTMLDivElement>>;
|
|
48
|
+
declare const CIRCLE: {
|
|
49
|
+
readonly sm: {
|
|
50
|
+
readonly px: 18;
|
|
51
|
+
readonly stroke: 2.5;
|
|
52
|
+
};
|
|
53
|
+
readonly md: {
|
|
54
|
+
readonly px: 40;
|
|
55
|
+
readonly stroke: 3.5;
|
|
56
|
+
};
|
|
57
|
+
readonly lg: {
|
|
58
|
+
readonly px: 64;
|
|
59
|
+
readonly stroke: 4.5;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export interface ProgressCircleProps extends SharedProgressProps, Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
|
|
63
|
+
/** 18 / 40 / 64 px. `sm` sits inline next to text. Default `"md"`. */
|
|
64
|
+
size?: keyof typeof CIRCLE;
|
|
65
|
+
/** Show the value in the centre (md and lg). Default `true` for lg. */
|
|
66
|
+
showValue?: boolean;
|
|
67
|
+
/** Content in the centre instead of the value (an icon, "3/5"). */
|
|
68
|
+
children?: React.ReactNode;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Compact circular progress: profile completion, a step ring, an inline upload. Needs an
|
|
72
|
+
* accessible name (`aria-label` or `aria-labelledby`).
|
|
73
|
+
*
|
|
74
|
+
* ```tsx
|
|
75
|
+
* <ProgressCircle aria-label="Profile complete" value={72} size="lg" />
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare const ProgressCircle: React.ForwardRefExoticComponent<ProgressCircleProps & React.RefAttributes<HTMLDivElement>>;
|
|
79
|
+
export {};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { cn } from "../lib/cn.js";
|
|
6
|
+
import { useLabels } from "../lib/labels.js";
|
|
7
|
+
import { useFormat } from "../lib/locale.js";
|
|
8
|
+
const progressLabels = { of: "{value} of {max}", loading: "Loading…" };
|
|
9
|
+
function resolveTone(tone, ratio) {
|
|
10
|
+
if (tone === "auto")
|
|
11
|
+
return ratio == null ? "accent" : ratio >= 1 ? "danger" : ratio > 0.8 ? "warning" : "accent";
|
|
12
|
+
if (tone === "accent" && ratio != null && ratio >= 1)
|
|
13
|
+
return "success";
|
|
14
|
+
return tone;
|
|
15
|
+
}
|
|
16
|
+
function useProgressModel({ value, max = 100, tone = "accent", display = "percent", valueText, labels }) {
|
|
17
|
+
const f = useFormat();
|
|
18
|
+
const t = useLabels("progress", progressLabels, labels);
|
|
19
|
+
const indeterminate = value == null || Number.isNaN(value);
|
|
20
|
+
const safeMax = max > 0 ? max : 100;
|
|
21
|
+
const ratio = indeterminate ? null : Math.max(0, value) / safeMax;
|
|
22
|
+
const fill = ratio == null ? 0 : Math.min(1, ratio);
|
|
23
|
+
const text = indeterminate
|
|
24
|
+
? undefined
|
|
25
|
+
: (valueText ?? (display === "fraction" ? t("of", { value: f.number(value), max: f.number(safeMax) }) : f.percent(ratio, { maximumFractionDigits: 0 })));
|
|
26
|
+
return { indeterminate, ratio, fill, text, max: safeMax, tone: resolveTone(tone, ratio), t };
|
|
27
|
+
}
|
|
28
|
+
const fillColor = {
|
|
29
|
+
accent: "bg-accent",
|
|
30
|
+
success: "bg-success",
|
|
31
|
+
warning: "bg-warning",
|
|
32
|
+
danger: "bg-danger",
|
|
33
|
+
};
|
|
34
|
+
const strokeColor = {
|
|
35
|
+
accent: "stroke-accent-ink",
|
|
36
|
+
success: "stroke-success",
|
|
37
|
+
warning: "stroke-warning",
|
|
38
|
+
danger: "stroke-danger",
|
|
39
|
+
};
|
|
40
|
+
const valueColor = {
|
|
41
|
+
accent: "text-fg",
|
|
42
|
+
success: "text-success",
|
|
43
|
+
warning: "text-warning",
|
|
44
|
+
danger: "text-danger",
|
|
45
|
+
};
|
|
46
|
+
/* ------------------------------------------------------------------ */
|
|
47
|
+
/* Linear */
|
|
48
|
+
/* ------------------------------------------------------------------ */
|
|
49
|
+
export const progressTrackVariants = cva("relative w-full overflow-hidden rounded-full bg-track", {
|
|
50
|
+
variants: {
|
|
51
|
+
size: { xs: "h-0.5", sm: "h-1", md: "h-2" },
|
|
52
|
+
},
|
|
53
|
+
defaultVariants: { size: "sm" },
|
|
54
|
+
});
|
|
55
|
+
/**
|
|
56
|
+
* Task progress or quota use. `role="progressbar"` with `aria-valuenow/min/max` and a localized
|
|
57
|
+
* `aria-valuetext` ("42%" in English, "%42" in Turkish). Fills from the inline start (right in RTL).
|
|
58
|
+
*
|
|
59
|
+
* ```tsx
|
|
60
|
+
* <Progress label="Uploading 4 files" value={42} showValue />
|
|
61
|
+
* <Progress label="Contacts imported" value={1240} max={5000} display="fraction" showValue />
|
|
62
|
+
* <Progress label="Storage" value={9.2} max={10} tone="auto" />
|
|
63
|
+
* <Progress aria-label="Loading" value={null} />
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export const Progress = React.forwardRef(function Progress({ value, max, tone, display, valueText, labels, size, label, showValue, hint, className, id, ...props }, ref) {
|
|
67
|
+
const m = useProgressModel({ value, max, tone, display, valueText, labels });
|
|
68
|
+
const autoId = React.useId();
|
|
69
|
+
const baseId = id ?? `progress${autoId.replace(/:/g, "")}`;
|
|
70
|
+
const labelId = label ? `${baseId}-label` : undefined;
|
|
71
|
+
const hintId = hint ? `${baseId}-hint` : undefined;
|
|
72
|
+
const shownValue = m.indeterminate || !showValue ? null : typeof showValue === "function" ? showValue(value, m.max) : m.text;
|
|
73
|
+
const bar = (_jsx("div", { ref: label || hint ? undefined : ref, id: label || hint ? undefined : id, role: "progressbar", "aria-labelledby": labelId, "aria-describedby": hintId, "aria-valuemin": 0, "aria-valuemax": m.indeterminate ? undefined : m.max, "aria-valuenow": m.indeterminate ? undefined : Math.min(value, m.max), "aria-valuetext": m.indeterminate ? (label ? undefined : m.t("loading")) : m.text, "data-slot": "progress", "data-state": m.indeterminate ? "indeterminate" : m.ratio >= 1 ? "complete" : "loading", "data-tone": m.tone, className: cn("vui-progress", progressTrackVariants({ size }), !(label || hint) && className), ...(label || hint ? {} : props), children: _jsx("div", { "data-slot": "progress-indicator", className: cn("vui-progress-indicator h-full w-full origin-left rounded-full rtl:origin-right", fillColor[m.tone]), style: m.indeterminate ? undefined : { transform: `scaleX(${m.fill})` } }) }));
|
|
74
|
+
if (!label && !hint && !shownValue)
|
|
75
|
+
return bar;
|
|
76
|
+
return (_jsxs("div", { ref: ref, id: id, "data-slot": "progress-field", className: cn("grid w-full gap-1.5", className), ...props, children: [label || shownValue ? (_jsxs("div", { className: "flex items-baseline justify-between gap-3 text-[13px]", children: [label ? (_jsx("span", { id: labelId, className: "min-w-0 truncate font-medium text-fg", children: label })) : (_jsx("span", {})), shownValue ? (_jsx("span", { "aria-hidden": true, className: cn("shrink-0 font-mono text-xs tabular", valueColor[m.tone] === "text-fg" ? "text-fg-muted" : valueColor[m.tone]), children: shownValue })) : null] })) : null, bar, hint ? (_jsx("p", { id: hintId, className: "text-xs text-fg-muted", children: hint })) : null] }));
|
|
77
|
+
});
|
|
78
|
+
/* ------------------------------------------------------------------ */
|
|
79
|
+
/* Circular */
|
|
80
|
+
/* ------------------------------------------------------------------ */
|
|
81
|
+
const CIRCLE = { sm: { px: 18, stroke: 2.5 }, md: { px: 40, stroke: 3.5 }, lg: { px: 64, stroke: 4.5 } };
|
|
82
|
+
/**
|
|
83
|
+
* Compact circular progress: profile completion, a step ring, an inline upload. Needs an
|
|
84
|
+
* accessible name (`aria-label` or `aria-labelledby`).
|
|
85
|
+
*
|
|
86
|
+
* ```tsx
|
|
87
|
+
* <ProgressCircle aria-label="Profile complete" value={72} size="lg" />
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export const ProgressCircle = React.forwardRef(function ProgressCircle({ value, max, tone, display, valueText, labels, size = "md", showValue, children, className, ...props }, ref) {
|
|
91
|
+
const m = useProgressModel({ value, max, tone, display, valueText, labels });
|
|
92
|
+
const { px, stroke } = CIRCLE[size];
|
|
93
|
+
const r = (px - stroke) / 2;
|
|
94
|
+
const showCenter = size !== "sm" && (children != null || (showValue ?? size === "lg"));
|
|
95
|
+
const pct = m.indeterminate ? 26 : m.fill * 100;
|
|
96
|
+
return (_jsxs("div", { ref: ref, role: "progressbar", "aria-valuemin": 0, "aria-valuemax": m.indeterminate ? undefined : m.max, "aria-valuenow": m.indeterminate ? undefined : Math.min(value, m.max), "aria-valuetext": m.indeterminate ? m.t("loading") : m.text, "data-slot": "progress-circle", "data-state": m.indeterminate ? "indeterminate" : m.ratio >= 1 ? "complete" : "loading", "data-tone": m.tone, className: cn("vui-progress-circle relative inline-flex shrink-0 items-center justify-center", className), style: { width: px, height: px }, ...props, children: [_jsxs("svg", { width: px, height: px, viewBox: `0 0 ${px} ${px}`, "aria-hidden": true, focusable: "false", className: "-rotate-90 rtl:-scale-y-100", children: [_jsx("circle", { cx: px / 2, cy: px / 2, r: r, fill: "none", strokeWidth: stroke, className: "stroke-track" }), _jsx("g", { className: "vui-progress-arc", children: _jsx("circle", { cx: px / 2, cy: px / 2, r: r, fill: "none", strokeWidth: stroke, strokeLinecap: "round", pathLength: 100, strokeDasharray: `${pct} 100`, className: cn(strokeColor[m.tone], "transition-[stroke-dasharray] duration-300 motion-reduce:transition-none", pct === 0 && "opacity-0") }) })] }), showCenter ? (_jsx("span", { "aria-hidden": true, className: cn("absolute inset-0 flex items-center justify-center font-mono tabular", size === "lg" ? "text-[13px] font-medium" : "text-[10px]", valueColor[m.tone]), children: children ?? (m.indeterminate ? null : display === "fraction" ? `${value}/${m.max}` : m.text) })) : null] }));
|
|
97
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { RadioGroup as RadioGroupPrimitive } from "radix-ui";
|
|
3
|
+
export interface RadioGroupOption<V extends string = string> {
|
|
4
|
+
value: V;
|
|
5
|
+
label: React.ReactNode;
|
|
6
|
+
description?: React.ReactNode;
|
|
7
|
+
icon?: React.ReactNode;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface RadioGroupProps<V extends string = string> extends Omit<React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>, "value" | "defaultValue" | "onValueChange" | "orientation"> {
|
|
11
|
+
/** Selected value; `null` = nothing selected (controlled). */
|
|
12
|
+
value?: V | null;
|
|
13
|
+
defaultValue?: V | null;
|
|
14
|
+
onValueChange?: (value: V) => void;
|
|
15
|
+
/** Shorthand for the options. Or compose `RadioGroupItem` children. */
|
|
16
|
+
items?: RadioGroupOption<V>[];
|
|
17
|
+
/**
|
|
18
|
+
* `"default"`: circle + label. `"card"`: selectable tiles with icon and description (plans).
|
|
19
|
+
* `"segmented"`: a compact segmented control for short labels (a form value, not a view switch —
|
|
20
|
+
* use `ToggleGroup` for toolbar/view state).
|
|
21
|
+
*/
|
|
22
|
+
variant?: "default" | "card" | "segmented";
|
|
23
|
+
orientation?: "vertical" | "horizontal";
|
|
24
|
+
size?: "sm" | "md";
|
|
25
|
+
invalid?: boolean;
|
|
26
|
+
/** Focusable, but the selection can't change (`aria-readonly`). */
|
|
27
|
+
readOnly?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare const RadioGroup: <V extends string = string>(props: RadioGroupProps<V> & {
|
|
30
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
31
|
+
}) => React.ReactElement;
|
|
32
|
+
export interface RadioGroupItemProps extends Omit<React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, "children"> {
|
|
33
|
+
label?: React.ReactNode;
|
|
34
|
+
description?: React.ReactNode;
|
|
35
|
+
/** Leading icon (card and segmented variants). */
|
|
36
|
+
icon?: React.ReactNode;
|
|
37
|
+
/** Free content for a card (price, badge) under the label. */
|
|
38
|
+
children?: React.ReactNode;
|
|
39
|
+
/** Classes for the radio circle (default variant). */
|
|
40
|
+
controlClassName?: string;
|
|
41
|
+
}
|
|
42
|
+
/** One option inside a `RadioGroup`. */
|
|
43
|
+
export declare const RadioGroupItem: React.ForwardRefExoticComponent<RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { RadioGroup as RadioGroupPrimitive } from "radix-ui";
|
|
5
|
+
import { cn } from "../lib/cn.js";
|
|
6
|
+
import { mergeIds } from "../lib/compose-refs.js";
|
|
7
|
+
import { FieldContextReset, useFieldContext } from "../lib/field-context.js";
|
|
8
|
+
import { useControllableState } from "../lib/use-controllable-state.js";
|
|
9
|
+
const RadioGroupContext = React.createContext({ variant: "default", size: "md", value: null });
|
|
10
|
+
const segmentedTrack = "inline-flex w-fit max-w-full items-stretch gap-0.5 rounded-ui border border-line bg-selected p-[3px] has-[:focus-visible]:border-ring aria-invalid:border-danger";
|
|
11
|
+
/**
|
|
12
|
+
* Pick exactly one of a small set: post visibility, invoice type, plan. WAI-ARIA radio group on
|
|
13
|
+
* Radix (one tab stop, arrow keys move and select). Labelled by the surrounding Field / Fieldset.
|
|
14
|
+
*
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <Field label="Visibility">
|
|
17
|
+
* <RadioGroup name="visibility" defaultValue="public" items={[{ value: "public", label: "Public" }, { value: "private", label: "Private" }]} />
|
|
18
|
+
* </Field>
|
|
19
|
+
* <RadioGroup variant="segmented" items={…} aria-label="Billing period" />
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
function RadioGroupInner({ value: valueProp, defaultValue, onValueChange, items, variant = "default", orientation, size = "md", invalid, readOnly, disabled, required, name, id, className, children, "aria-labelledby": labelledBy, "aria-describedby": describedBy, ...props }, ref) {
|
|
23
|
+
const field = useFieldContext();
|
|
24
|
+
const [value, setValue] = useControllableState({
|
|
25
|
+
value: valueProp,
|
|
26
|
+
defaultValue: defaultValue ?? null,
|
|
27
|
+
onChange: (v) => {
|
|
28
|
+
if (v !== null)
|
|
29
|
+
onValueChange?.(v);
|
|
30
|
+
},
|
|
31
|
+
name: "RadioGroup",
|
|
32
|
+
});
|
|
33
|
+
const dir = orientation ?? (variant === "segmented" ? "horizontal" : "vertical");
|
|
34
|
+
const isInvalid = invalid ?? field?.invalid;
|
|
35
|
+
const isReadOnly = readOnly ?? field?.readOnly;
|
|
36
|
+
const isRequired = required ?? field?.required;
|
|
37
|
+
const ctx = React.useMemo(() => ({ variant, size, value, readOnly: isReadOnly }), [variant, size, value, isReadOnly]);
|
|
38
|
+
return (_jsx(RadioGroupPrimitive.Root, { ...props, ref: ref, "data-slot": "radio-group", "data-variant": variant, id: id ?? field?.id, name: name ?? field?.name, disabled: disabled ?? (field?.disabled || undefined), required: isRequired || undefined, "aria-labelledby": labelledBy ?? (props["aria-label"] ? undefined : field?.labelId), "aria-describedby": mergeIds(field?.describedBy, describedBy), "aria-invalid": isInvalid || undefined, "aria-readonly": isReadOnly || undefined, orientation: dir,
|
|
39
|
+
// Radix treats "" as "no selection".
|
|
40
|
+
value: value ?? "", onValueChange: (v) => {
|
|
41
|
+
if (isReadOnly)
|
|
42
|
+
return;
|
|
43
|
+
setValue(v);
|
|
44
|
+
}, className: cn("group/radio", variant === "segmented"
|
|
45
|
+
? segmentedTrack
|
|
46
|
+
: variant === "card"
|
|
47
|
+
? dir === "horizontal"
|
|
48
|
+
? "grid gap-2.5 sm:grid-cols-[repeat(auto-fit,minmax(12rem,1fr))]"
|
|
49
|
+
: "grid gap-2.5"
|
|
50
|
+
: dir === "horizontal"
|
|
51
|
+
? "flex flex-wrap items-start gap-x-6 gap-y-2.5"
|
|
52
|
+
: "grid gap-2.5", className), children: _jsx(FieldContextReset, { children: _jsxs(RadioGroupContext.Provider, { value: ctx, children: [items?.map((item) => (_jsx(RadioGroupItem, { value: item.value, label: item.label, description: item.description, icon: item.icon, disabled: item.disabled }, item.value))), children] }) }) }));
|
|
53
|
+
}
|
|
54
|
+
export const RadioGroup = React.forwardRef(RadioGroupInner);
|
|
55
|
+
const circle = "peer relative inline-flex shrink-0 items-center justify-center rounded-full border border-field-border-hover bg-field outline-none transition-[border-color,box-shadow,background-color] duration-150 hover:border-fg-subtle focus-visible:border-ring focus-visible:shadow-[0_0_0_3px_var(--accent-soft)] data-[state=checked]:border-accent-ink disabled:cursor-not-allowed disabled:opacity-45 group-aria-invalid/radio:border-danger";
|
|
56
|
+
/** One option inside a `RadioGroup`. */
|
|
57
|
+
export const RadioGroupItem = React.forwardRef(function RadioGroupItem({ label, description, icon, children, className, controlClassName, id: idProp, "aria-describedby": describedBy, onKeyDown, ...props }, ref) {
|
|
58
|
+
const { variant, size, value: selected, readOnly } = React.useContext(RadioGroupContext);
|
|
59
|
+
const autoId = React.useId();
|
|
60
|
+
const id = idProp ?? `rd${autoId.replace(/:/g, "")}`;
|
|
61
|
+
const labelId = `${id}-label`;
|
|
62
|
+
const descId = description ? `${id}-desc` : undefined;
|
|
63
|
+
const checked = selected === props.value;
|
|
64
|
+
const guard = (e) => {
|
|
65
|
+
onKeyDown?.(e);
|
|
66
|
+
if (readOnly && e.key === " ")
|
|
67
|
+
e.preventDefault();
|
|
68
|
+
};
|
|
69
|
+
if (variant === "segmented") {
|
|
70
|
+
return (_jsxs(RadioGroupPrimitive.Item, { ref: ref, id: id, "data-slot": "radio-segment", "aria-describedby": describedBy, onKeyDown: guard, className: cn("relative inline-flex min-w-0 flex-auto items-center justify-center gap-1.5 whitespace-nowrap rounded-[calc(var(--radius)-5px)] font-medium text-fg-muted outline-none", "transition-[background-color,color,box-shadow] duration-150 hover:text-fg", "focus-visible:shadow-[0_0_0_2px_var(--ring)]", "data-[state=checked]:bg-(--segment-thumb) data-[state=checked]:text-fg data-[state=checked]:shadow-(--segment-thumb-shadow)", "disabled:pointer-events-none disabled:opacity-45 [&_svg]:shrink-0", size === "sm" ? "h-[calc(var(--control-h)-0.5rem-8px)] px-2.5 text-xs [&_svg]:size-3.5" : "h-[calc(var(--control-h)-8px)] px-3.5 text-[13px] [&_svg]:size-4", className), ...props, children: [icon, label ?? children] }));
|
|
71
|
+
}
|
|
72
|
+
const dot = (_jsx(RadioGroupPrimitive.Item, { ref: ref, id: id, "data-slot": "radio", "aria-labelledby": label ? labelId : undefined, "aria-describedby": mergeIds(descId, describedBy), onKeyDown: guard, className: cn(circle, size === "sm" ? "size-4" : "size-[18px]", controlClassName, !label && className), ...props, children: _jsx(RadioGroupPrimitive.Indicator, { "data-slot": "radio-indicator", className: cn("ui-radio-dot rounded-full bg-accent-ink", size === "sm" ? "size-1.5" : "size-2") }) }));
|
|
73
|
+
if (!label)
|
|
74
|
+
return dot;
|
|
75
|
+
const textSize = size === "sm" ? "text-[13px]" : "text-sm";
|
|
76
|
+
const descSize = size === "sm" ? "text-[11.5px]" : "text-xs";
|
|
77
|
+
if (variant === "card") {
|
|
78
|
+
return (_jsxs("label", { htmlFor: id, "data-slot": "radio-card", "data-state": checked ? "checked" : "unchecked", "data-disabled": props.disabled ? "" : undefined, className: cn("relative flex cursor-pointer items-start gap-3 rounded-ui border border-field-border bg-field p-3.5 transition-[background-color,border-color,box-shadow] duration-150", "hover:border-field-border-hover glass:border-field-border-hover", "has-[:focus-visible]:border-ring has-[:focus-visible]:shadow-[0_0_0_3px_var(--accent-soft)]", "data-[state=checked]:border-accent-ink data-[state=checked]:bg-[color-mix(in_oklch,var(--accent-base)_11%,transparent)] data-[state=checked]:shadow-[inset_0_0_0_1px_var(--accent-ink)]", "group-aria-invalid/radio:border-danger data-disabled:cursor-not-allowed data-disabled:opacity-50", className), children: [icon ? _jsx("span", { className: "mt-px flex size-8 shrink-0 items-center justify-center rounded-ui-sm bg-surface-2 text-fg-muted [&_svg]:size-4", children: icon }) : null, _jsxs("span", { className: "grid min-w-0 flex-1 gap-0.5", children: [_jsx("span", { id: labelId, className: cn("font-medium text-fg", textSize), children: label }), description ? (_jsx("span", { id: descId, className: cn("text-pretty leading-[1.45] text-fg-muted", descSize), children: description })) : null, children ? _jsx("span", { className: "mt-1.5 block", children: children }) : null] }), _jsx("span", { className: "mt-px", children: dot })] }));
|
|
79
|
+
}
|
|
80
|
+
return (_jsxs("div", { "data-slot": "radio-row", className: cn("flex items-start gap-2.5", className), children: [_jsx("span", { className: cn("flex shrink-0 items-center", size === "sm" ? "h-[19.5px]" : "h-5"), children: dot }), _jsxs("label", { htmlFor: id, className: cn("grid min-w-0 select-none gap-0.5", props.disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"), children: [_jsx("span", { id: labelId, className: cn("leading-5 text-fg", textSize), children: label }), description ? (_jsx("span", { id: descId, className: cn("text-pretty leading-[1.45] text-fg-muted", descSize), children: description })) : null, children] })] }));
|
|
81
|
+
});
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const recordLabels: {
|
|
3
|
+
pager: string;
|
|
4
|
+
pagerLabel: string;
|
|
5
|
+
previous: string;
|
|
6
|
+
next: string;
|
|
7
|
+
details: string;
|
|
8
|
+
facts: string;
|
|
9
|
+
saving: string;
|
|
10
|
+
notFound: string;
|
|
11
|
+
notFoundDescription: string;
|
|
12
|
+
forbidden: string;
|
|
13
|
+
forbiddenDescription: string;
|
|
14
|
+
loading: string;
|
|
15
|
+
resizeAside: string;
|
|
16
|
+
};
|
|
17
|
+
export type RecordLayoutLabels = Partial<typeof recordLabels>;
|
|
18
|
+
export interface SidePaneHandleProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
19
|
+
/** Current pane width in px. */
|
|
20
|
+
value: number;
|
|
21
|
+
min?: number;
|
|
22
|
+
max?: number;
|
|
23
|
+
/** Width restored on double-click. */
|
|
24
|
+
defaultValue?: number;
|
|
25
|
+
onValueChange: (width: number) => void;
|
|
26
|
+
/** Which edge of the pane the handle sits on. A pane at the inline end has its handle on its `start` edge. */
|
|
27
|
+
edge?: "start" | "end";
|
|
28
|
+
/** Keyboard step in px. Default 16 (Shift: ×4). */
|
|
29
|
+
step?: number;
|
|
30
|
+
/** Accessible name. */
|
|
31
|
+
"aria-label": string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The drag edge of a side column (WAI-ARIA window splitter: focusable `separator` with
|
|
35
|
+
* `aria-valuenow`; arrows resize, Shift+arrows in bigger steps, Home/End jump to min/max,
|
|
36
|
+
* double-click resets). Logical: works in RTL.
|
|
37
|
+
*/
|
|
38
|
+
export declare const SidePaneHandle: React.ForwardRefExoticComponent<SidePaneHandleProps & React.RefAttributes<HTMLDivElement>>;
|
|
39
|
+
export type RecordLayoutState = "ready" | "loading" | "not-found" | "forbidden";
|
|
40
|
+
export interface RecordLayoutProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
41
|
+
/** Side column at the inline `end` (default) or `start`. */
|
|
42
|
+
asidePosition?: "end" | "start";
|
|
43
|
+
/** Side column width in px (controlled with `onAsideWidthChange`). */
|
|
44
|
+
asideWidth?: number;
|
|
45
|
+
/** Initial width when uncontrolled. Default 320. */
|
|
46
|
+
defaultAsideWidth?: number;
|
|
47
|
+
onAsideWidthChange?: (width: number) => void;
|
|
48
|
+
/** Lets the user drag (or arrow-key) the side column's edge. */
|
|
49
|
+
resizable?: boolean;
|
|
50
|
+
minAsideWidth?: number;
|
|
51
|
+
maxAsideWidth?: number;
|
|
52
|
+
/** `loading` shows a skeleton page; `not-found` / `forbidden` a full-page empty state. */
|
|
53
|
+
state?: RecordLayoutState;
|
|
54
|
+
/** Replace the default not-found page. */
|
|
55
|
+
notFound?: React.ReactNode;
|
|
56
|
+
/** Replace the default forbidden page. */
|
|
57
|
+
forbidden?: React.ReactNode;
|
|
58
|
+
/** Hides header actions. Pair with read-only fields. */
|
|
59
|
+
readOnly?: boolean;
|
|
60
|
+
labels?: RecordLayoutLabels;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The "show one record" page: record header (media, title, status, key facts, actions, pager),
|
|
64
|
+
* a main column (tabs, overview, activity, related lists) and a side column of details.
|
|
65
|
+
* Below 42rem (672px) of its own width the side column moves under the header and its
|
|
66
|
+
* sections fold, and the key facts become a horizontal strip. It measures itself, not the
|
|
67
|
+
* viewport, so it works the same beside an App shell sidebar or in a split view.
|
|
68
|
+
*
|
|
69
|
+
* ```tsx
|
|
70
|
+
* <RecordLayout>
|
|
71
|
+
* <RecordHeader media={<Avatar name="Jane Doe" size="xl" />} title="Jane Doe" subtitle="Head of Ops · Acme"
|
|
72
|
+
* status={<Badge tone="success">Customer</Badge>} facts={[{ label: "Owner", value: "Meltem Aydın" }]}
|
|
73
|
+
* pager={<RecordPager index={3} total={128} prevHref="/contacts/41" nextHref="/contacts/43" />} />
|
|
74
|
+
* <RecordMain>{tabs}</RecordMain>
|
|
75
|
+
* <RecordAside><RecordAsideSection title="Details"><DescriptionList … /></RecordAsideSection></RecordAside>
|
|
76
|
+
* </RecordLayout>
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export declare const RecordLayout: React.ForwardRefExoticComponent<RecordLayoutProps & React.RefAttributes<HTMLDivElement>>;
|
|
80
|
+
export interface RecordFact {
|
|
81
|
+
label: React.ReactNode;
|
|
82
|
+
value: React.ReactNode;
|
|
83
|
+
}
|
|
84
|
+
export interface RecordHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, "title"> {
|
|
85
|
+
/** Avatar, logo or icon well. */
|
|
86
|
+
media?: React.ReactNode;
|
|
87
|
+
/** The page's `<h1>`. */
|
|
88
|
+
title: React.ReactNode;
|
|
89
|
+
/** "Head of Operations · Acme Corp". */
|
|
90
|
+
subtitle?: React.ReactNode;
|
|
91
|
+
/** Status badge next to the title. */
|
|
92
|
+
status?: React.ReactNode;
|
|
93
|
+
/** Key facts under the title: owner, stage, value, last contact. */
|
|
94
|
+
facts?: RecordFact[];
|
|
95
|
+
/** Header actions. Hidden when the layout is `readOnly`. */
|
|
96
|
+
actions?: React.ReactNode;
|
|
97
|
+
/** "← Contacts" link up a level. */
|
|
98
|
+
back?: {
|
|
99
|
+
href: string;
|
|
100
|
+
label: string;
|
|
101
|
+
};
|
|
102
|
+
/** `RecordPager` (top end). */
|
|
103
|
+
pager?: React.ReactNode;
|
|
104
|
+
/** Shows "Saving…" next to the title while inline edits save. */
|
|
105
|
+
saving?: boolean;
|
|
106
|
+
/** `sm` for nested or compact records. Default `md`. */
|
|
107
|
+
size?: "sm" | "md";
|
|
108
|
+
/** Skeleton for the title and subtitle. */
|
|
109
|
+
loading?: boolean;
|
|
110
|
+
labels?: RecordLayoutLabels;
|
|
111
|
+
}
|
|
112
|
+
/** The record's header: back link + pager, media, h1, status, subtitle, actions and key facts. */
|
|
113
|
+
export declare const RecordHeader: React.ForwardRefExoticComponent<RecordHeaderProps & React.RefAttributes<HTMLElement>>;
|
|
114
|
+
export interface RecordPagerProps extends Omit<React.HTMLAttributes<HTMLElement>, "onChange"> {
|
|
115
|
+
/** 1-based position of this record in the list it came from. */
|
|
116
|
+
index: number;
|
|
117
|
+
total: number;
|
|
118
|
+
prevHref?: string;
|
|
119
|
+
nextHref?: string;
|
|
120
|
+
/** Called instead of (or as well as) navigating. */
|
|
121
|
+
onPrevious?: () => void;
|
|
122
|
+
onNext?: () => void;
|
|
123
|
+
/** Register `k` (previous) and `j` (next). Ignored while typing in a field. Default `true`. */
|
|
124
|
+
shortcuts?: boolean;
|
|
125
|
+
labels?: RecordLayoutLabels;
|
|
126
|
+
}
|
|
127
|
+
/** "3 of 128" with previous/next buttons and `j` / `k` shortcuts. */
|
|
128
|
+
export declare const RecordPager: React.ForwardRefExoticComponent<RecordPagerProps & React.RefAttributes<HTMLElement>>;
|
|
129
|
+
export interface RecordMainProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
130
|
+
/** Route tabs (`TabsLinkList`) above the content. For in-page tabs, put `<Tabs>` in `children`. */
|
|
131
|
+
tabs?: React.ReactNode;
|
|
132
|
+
}
|
|
133
|
+
/** The main column: tabs, overview, activity, related lists. */
|
|
134
|
+
export declare const RecordMain: React.ForwardRefExoticComponent<RecordMainProps & React.RefAttributes<HTMLDivElement>>;
|
|
135
|
+
export interface RecordSectionProps extends Omit<React.HTMLAttributes<HTMLElement>, "title"> {
|
|
136
|
+
title: React.ReactNode;
|
|
137
|
+
description?: React.ReactNode;
|
|
138
|
+
/** Trailing control in the section header ("View all", "Log call"). */
|
|
139
|
+
action?: React.ReactNode;
|
|
140
|
+
/** Body padding. `none` for edge-to-edge tables and timelines. Default `md`. */
|
|
141
|
+
padding?: "none" | "md";
|
|
142
|
+
}
|
|
143
|
+
/** A titled card in the main column: overview, activity, related deals. `<section aria-labelledby>`. */
|
|
144
|
+
export declare const RecordSection: React.ForwardRefExoticComponent<RecordSectionProps & React.RefAttributes<HTMLElement>>;
|
|
145
|
+
export interface RecordAsideProps extends React.HTMLAttributes<HTMLElement> {
|
|
146
|
+
/** Accessible name of the complementary landmark. Default "Details". */
|
|
147
|
+
"aria-label"?: string;
|
|
148
|
+
labels?: RecordLayoutLabels;
|
|
149
|
+
}
|
|
150
|
+
/** The side column (`<aside>`): description lists, owners, tags, related records. */
|
|
151
|
+
export declare const RecordAside: React.ForwardRefExoticComponent<RecordAsideProps & React.RefAttributes<HTMLElement>>;
|
|
152
|
+
export interface RecordAsideSectionProps extends Omit<React.HTMLAttributes<HTMLElement>, "title"> {
|
|
153
|
+
title: React.ReactNode;
|
|
154
|
+
/** Trailing control ("Edit", "+"). */
|
|
155
|
+
action?: React.ReactNode;
|
|
156
|
+
/** Let the user fold the section on wide screens too. On narrow layouts every section folds. */
|
|
157
|
+
collapsible?: boolean;
|
|
158
|
+
/** Default `true` on wide layouts; narrow layouts start folded unless `open` is controlled. */
|
|
159
|
+
defaultOpen?: boolean;
|
|
160
|
+
open?: boolean;
|
|
161
|
+
onOpenChange?: (open: boolean) => void;
|
|
162
|
+
/** Heading level to fit the page outline. Default 2. */
|
|
163
|
+
headingLevel?: 2 | 3;
|
|
164
|
+
}
|
|
165
|
+
/** A titled block in the side column; folds like an accordion item when space is short. */
|
|
166
|
+
export declare const RecordAsideSection: React.ForwardRefExoticComponent<RecordAsideSectionProps & React.RefAttributes<HTMLElement>>;
|
|
167
|
+
export {};
|