@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,51 @@
|
|
|
1
|
+
import { type ResolvedMessages } from "./locale.js";
|
|
2
|
+
import type { MessagesInput } from "../locales/en.js";
|
|
3
|
+
/** A flat map of label keys to English templates. */
|
|
4
|
+
export type LabelValues = Record<string, string>;
|
|
5
|
+
/** Per-instance label overrides (the `labels` prop of a component). */
|
|
6
|
+
export type LabelsProp<T extends LabelValues> = Partial<T>;
|
|
7
|
+
/**
|
|
8
|
+
* A label lookup: call it to get a formatted string, read `.labels` for the raw merged templates.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* t("remove", { label: "Design" }); // "Remove Design"
|
|
12
|
+
* t.labels.remove; // "Remove {label}"
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export interface LabelFn<T extends LabelValues> {
|
|
16
|
+
(key: keyof T & string, vars?: Record<string, unknown>): string;
|
|
17
|
+
readonly labels: T;
|
|
18
|
+
readonly locale: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Merges label sources. Precedence (highest first): per-instance `override` → dictionary
|
|
22
|
+
* `messages[namespace]` → English `defaults`. `undefined` overrides are ignored.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveLabels<T extends LabelValues>(namespace: string, defaults: T, messages?: ResolvedMessages | MessagesInput, override?: Partial<T>): T;
|
|
25
|
+
/**
|
|
26
|
+
* Server-friendly label lookup (no React context): for server components and `createBlocks({ labels })`.
|
|
27
|
+
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* const t = createLabels("footer", { rights: "All rights reserved." }, { locale: "tr-TR", messages: tr });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function createLabels<T extends LabelValues>(namespace: string, defaults: T, options?: {
|
|
33
|
+
locale?: string;
|
|
34
|
+
messages?: ResolvedMessages | MessagesInput;
|
|
35
|
+
override?: Partial<T>;
|
|
36
|
+
}): LabelFn<T>;
|
|
37
|
+
/**
|
|
38
|
+
* Built-in strings for a component. Pass the component's English defaults (a module constant)
|
|
39
|
+
* and its `labels` prop; translations come from `LocaleProvider` messages under `namespace`.
|
|
40
|
+
*
|
|
41
|
+
* ```tsx
|
|
42
|
+
* const badgeLabels = { remove: "Remove {label}" };
|
|
43
|
+
* function Chip({ label, labels }: { label: string; labels?: Partial<typeof badgeLabels> }) {
|
|
44
|
+
* const t = useLabels("badge", badgeLabels, labels);
|
|
45
|
+
* return <button aria-label={t("remove", { label })}>…</button>;
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* Templates support `{name}` and `{count, plural, one {# item} other {# items}}` (Intl.PluralRules).
|
|
50
|
+
*/
|
|
51
|
+
export declare function useLabels<T extends LabelValues>(namespace: string, defaults: T, override?: Partial<T>): LabelFn<T>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useLocale } from "./locale.js";
|
|
3
|
+
import { formatMessage } from "./message-format.js";
|
|
4
|
+
/**
|
|
5
|
+
* Merges label sources. Precedence (highest first): per-instance `override` → dictionary
|
|
6
|
+
* `messages[namespace]` → English `defaults`. `undefined` overrides are ignored.
|
|
7
|
+
*/
|
|
8
|
+
export function resolveLabels(namespace, defaults, messages, override) {
|
|
9
|
+
const dict = messages?.[namespace];
|
|
10
|
+
const out = { ...defaults };
|
|
11
|
+
if (dict)
|
|
12
|
+
for (const k in dict)
|
|
13
|
+
if (typeof dict[k] === "string")
|
|
14
|
+
out[k] = dict[k];
|
|
15
|
+
if (override)
|
|
16
|
+
for (const k in override)
|
|
17
|
+
if (typeof override[k] === "string")
|
|
18
|
+
out[k] = override[k];
|
|
19
|
+
return out;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Server-friendly label lookup (no React context): for server components and `createBlocks({ labels })`.
|
|
23
|
+
*
|
|
24
|
+
* ```ts
|
|
25
|
+
* const t = createLabels("footer", { rights: "All rights reserved." }, { locale: "tr-TR", messages: tr });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function createLabels(namespace, defaults, options = {}) {
|
|
29
|
+
const labels = resolveLabels(namespace, defaults, options.messages, options.override);
|
|
30
|
+
const locale = options.locale ?? "en-US";
|
|
31
|
+
const fn = ((key, vars) => formatMessage(labels[key] ?? String(key), vars, locale));
|
|
32
|
+
Object.defineProperties(fn, { labels: { value: labels }, locale: { value: locale } });
|
|
33
|
+
return fn;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Built-in strings for a component. Pass the component's English defaults (a module constant)
|
|
37
|
+
* and its `labels` prop; translations come from `LocaleProvider` messages under `namespace`.
|
|
38
|
+
*
|
|
39
|
+
* ```tsx
|
|
40
|
+
* const badgeLabels = { remove: "Remove {label}" };
|
|
41
|
+
* function Chip({ label, labels }: { label: string; labels?: Partial<typeof badgeLabels> }) {
|
|
42
|
+
* const t = useLabels("badge", badgeLabels, labels);
|
|
43
|
+
* return <button aria-label={t("remove", { label })}>…</button>;
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* Templates support `{name}` and `{count, plural, one {# item} other {# items}}` (Intl.PluralRules).
|
|
48
|
+
*/
|
|
49
|
+
export function useLabels(namespace, defaults, override) {
|
|
50
|
+
const { locale, messages } = useLocale();
|
|
51
|
+
// Overrides are usually inline objects; key them by content so the result stays stable.
|
|
52
|
+
const overrideKey = override ? JSON.stringify(override) : "";
|
|
53
|
+
return React.useMemo(() => createLabels(namespace, defaults, { locale, messages, override }),
|
|
54
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
55
|
+
[namespace, defaults, locale, messages, overrideKey]);
|
|
56
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Depth of the current floating layer: 0 = page, 1 = first overlay (dialog, popover, menu…),
|
|
4
|
+
* 2 = a popover inside that dialog, and so on. Travels through React context, so it survives portals.
|
|
5
|
+
*/
|
|
6
|
+
export declare function useLayerDepth(): number;
|
|
7
|
+
/**
|
|
8
|
+
* Marks its subtree as one layer deeper. Use when you can't put `Layer` on the content element
|
|
9
|
+
* itself; read the depth with `useLayerDepth()` and set `data-layer-depth` yourself.
|
|
10
|
+
*/
|
|
11
|
+
export declare function LayerProvider({ children }: {
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
}): React.JSX.Element;
|
|
14
|
+
/** Attributes for a layer's content element at `depth`. */
|
|
15
|
+
export declare function layerAttributes(depth: number): {
|
|
16
|
+
readonly "data-layer-depth": string;
|
|
17
|
+
readonly "data-layer-content": "";
|
|
18
|
+
};
|
|
19
|
+
export interface LayerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
20
|
+
/** Merge onto the single child (e.g. `<Layer asChild><Popover.Content/></Layer>`). */
|
|
21
|
+
asChild?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A floating layer's content root. Sets `data-layer-depth` and increments the depth for
|
|
25
|
+
* descendants. In glass mode only depth 1 blurs; deeper layers get `--blur: 0` and the more
|
|
26
|
+
* opaque `--popover-nested` (styles.css), keeping at most one overlay blur on screen.
|
|
27
|
+
*
|
|
28
|
+
* ```tsx
|
|
29
|
+
* <Popover.Portal container={usePortalContainer()}>
|
|
30
|
+
* <Layer asChild>
|
|
31
|
+
* <Popover.Content className="surface-popover ui-pop">…</Popover.Content>
|
|
32
|
+
* </Layer>
|
|
33
|
+
* </Popover.Portal>
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare const Layer: React.ForwardRefExoticComponent<LayerProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Slot } from "radix-ui";
|
|
5
|
+
const LayerDepthContext = React.createContext(0);
|
|
6
|
+
/**
|
|
7
|
+
* Depth of the current floating layer: 0 = page, 1 = first overlay (dialog, popover, menu…),
|
|
8
|
+
* 2 = a popover inside that dialog, and so on. Travels through React context, so it survives portals.
|
|
9
|
+
*/
|
|
10
|
+
export function useLayerDepth() {
|
|
11
|
+
return React.useContext(LayerDepthContext);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Marks its subtree as one layer deeper. Use when you can't put `Layer` on the content element
|
|
15
|
+
* itself; read the depth with `useLayerDepth()` and set `data-layer-depth` yourself.
|
|
16
|
+
*/
|
|
17
|
+
export function LayerProvider({ children }) {
|
|
18
|
+
const depth = useLayerDepth() + 1;
|
|
19
|
+
return _jsx(LayerDepthContext.Provider, { value: depth, children: children });
|
|
20
|
+
}
|
|
21
|
+
/** Attributes for a layer's content element at `depth`. */
|
|
22
|
+
export function layerAttributes(depth) {
|
|
23
|
+
return { "data-layer-depth": String(depth), "data-layer-content": "" };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A floating layer's content root. Sets `data-layer-depth` and increments the depth for
|
|
27
|
+
* descendants. In glass mode only depth 1 blurs; deeper layers get `--blur: 0` and the more
|
|
28
|
+
* opaque `--popover-nested` (styles.css), keeping at most one overlay blur on screen.
|
|
29
|
+
*
|
|
30
|
+
* ```tsx
|
|
31
|
+
* <Popover.Portal container={usePortalContainer()}>
|
|
32
|
+
* <Layer asChild>
|
|
33
|
+
* <Popover.Content className="surface-popover ui-pop">…</Popover.Content>
|
|
34
|
+
* </Layer>
|
|
35
|
+
* </Popover.Portal>
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export const Layer = React.forwardRef(function Layer({ asChild, ...props }, ref) {
|
|
39
|
+
const depth = useLayerDepth() + 1;
|
|
40
|
+
const Comp = asChild ? Slot.Root : "div";
|
|
41
|
+
return (_jsx(LayerDepthContext.Provider, { value: depth, children: _jsx(Comp, { ref: ref, ...layerAttributes(depth), ...props }) }));
|
|
42
|
+
});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type Messages, type MessagesInput } from "../locales/en.js";
|
|
3
|
+
import { type Formatter } from "../format/core.js";
|
|
4
|
+
import * as text from "./text.js";
|
|
5
|
+
/** A merged dictionary: the full `Messages` shape plus any extra component namespaces. */
|
|
6
|
+
export type ResolvedMessages = Messages & Record<string, Record<string, string>>;
|
|
7
|
+
export interface LocaleValue {
|
|
8
|
+
/** BCP 47 tag used for Intl formatting and text rules, e.g. "en-US", "tr-TR". */
|
|
9
|
+
locale: string;
|
|
10
|
+
/** The merged dictionary (base locale + partial overrides). */
|
|
11
|
+
messages: ResolvedMessages;
|
|
12
|
+
dir: "ltr" | "rtl";
|
|
13
|
+
/** IANA time zone for instants. Default "UTC" (explicit, so SSR and client agree). */
|
|
14
|
+
timeZone: string;
|
|
15
|
+
/** Default ISO 4217 currency. Default "USD". */
|
|
16
|
+
currency: string;
|
|
17
|
+
/** Formatter bound to locale, currency and time zone. Same object as `useFormat()`. */
|
|
18
|
+
format: Formatter;
|
|
19
|
+
/** Look up and format a message by path: `t("pagination.range", { from: 1, to: 20, total: 340 })`. */
|
|
20
|
+
t: (key: string, vars?: Record<string, unknown>) => string;
|
|
21
|
+
}
|
|
22
|
+
export interface LocaleProviderProps {
|
|
23
|
+
/** Default "en-US" (or the parent provider's locale). */
|
|
24
|
+
locale?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Full or partial dictionary, deep-merged over the base. The base is the parent provider's
|
|
27
|
+
* dictionary when `locale` is unchanged, otherwise the built-in English `en`.
|
|
28
|
+
*/
|
|
29
|
+
messages?: MessagesInput;
|
|
30
|
+
/** Text direction. Default: derived from the locale (ar, he, fa, ur → "rtl"). */
|
|
31
|
+
dir?: "ltr" | "rtl";
|
|
32
|
+
timeZone?: string;
|
|
33
|
+
currency?: string;
|
|
34
|
+
children: React.ReactNode;
|
|
35
|
+
}
|
|
36
|
+
/** "rtl" for right-to-left languages. */
|
|
37
|
+
export declare function directionOf(locale: string): "ltr" | "rtl";
|
|
38
|
+
/** Deep-merges a partial dictionary over a base dictionary (one level of namespaces). */
|
|
39
|
+
export declare function mergeMessages(base: ResolvedMessages | Messages, override?: MessagesInput): ResolvedMessages;
|
|
40
|
+
/**
|
|
41
|
+
* Locale for built-in strings, text rules and Intl formatting. No i18n library required.
|
|
42
|
+
* Zero config means English (`en-US`, USD, UTC). Nest providers to override a subtree.
|
|
43
|
+
*
|
|
44
|
+
* ```tsx
|
|
45
|
+
* import { tr } from "@vamos-ui/react/locale/tr";
|
|
46
|
+
* <LocaleProvider locale="tr-TR" messages={tr} timeZone="Europe/Istanbul" currency="TRY">…</LocaleProvider>
|
|
47
|
+
*
|
|
48
|
+
* // Rename one string without writing a locale:
|
|
49
|
+
* <LocaleProvider messages={{ common: { remove: "Move to bin" } }}>…</LocaleProvider>
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function LocaleProvider({ locale, messages, dir, timeZone, currency, children }: LocaleProviderProps): React.JSX.Element;
|
|
53
|
+
/** `{ locale, messages, dir, timeZone, currency, format, t }` from the nearest LocaleProvider. */
|
|
54
|
+
export declare const useLocale: () => LocaleValue;
|
|
55
|
+
/** The merged dictionary. Prefer `useLabels()` in components (it supports per-instance overrides). */
|
|
56
|
+
export declare const useMessages: () => ResolvedMessages;
|
|
57
|
+
/**
|
|
58
|
+
* Formatter bound to the provider's locale, currency and time zone.
|
|
59
|
+
*
|
|
60
|
+
* ```ts
|
|
61
|
+
* const f = useFormat();
|
|
62
|
+
* f.currency("1250.50"); // "$1,250.50" (provider currency)
|
|
63
|
+
* f.currency(5, "EUR"); // "€5.00"
|
|
64
|
+
* f.date("2026-11-08"); // "Nov 8, 2026"
|
|
65
|
+
* f.relative(-1, "day"); // "yesterday"
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare const useFormat: () => Formatter;
|
|
69
|
+
/** Text helpers from `lib/text` bound to the provider's locale. */
|
|
70
|
+
export declare function useText(): {
|
|
71
|
+
locale: string;
|
|
72
|
+
fold: (s: string) => string;
|
|
73
|
+
match: (s: string, q: string) => boolean;
|
|
74
|
+
highlight: (s: string, q: string) => [start: number, end: number][];
|
|
75
|
+
highlightParts: (s: string, q: string) => {
|
|
76
|
+
text: string;
|
|
77
|
+
match: boolean;
|
|
78
|
+
}[];
|
|
79
|
+
compare: (a: string, b: string) => number;
|
|
80
|
+
cmdkFilter: (value: string, search: string, keywords?: string[]) => number;
|
|
81
|
+
upper: (s: string) => string;
|
|
82
|
+
lower: (s: string) => string;
|
|
83
|
+
initials: (name: string, max?: 1 | 2) => string;
|
|
84
|
+
slugify: (s: string, o?: Omit<text.SlugifyOptions, "locale">) => string;
|
|
85
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Direction } from "radix-ui";
|
|
5
|
+
import { en } from "../locales/en.js";
|
|
6
|
+
import { createFormatter } from "../format/core.js";
|
|
7
|
+
import { formatMessage } from "./message-format.js";
|
|
8
|
+
import * as text from "./text.js";
|
|
9
|
+
const RTL_LANGS = new Set(["ar", "he", "fa", "ur", "ps", "sd", "ug", "yi", "dv", "ckb"]);
|
|
10
|
+
/** "rtl" for right-to-left languages. */
|
|
11
|
+
export function directionOf(locale) {
|
|
12
|
+
return RTL_LANGS.has(text.baseLanguage(locale)) ? "rtl" : "ltr";
|
|
13
|
+
}
|
|
14
|
+
/** Deep-merges a partial dictionary over a base dictionary (one level of namespaces). */
|
|
15
|
+
export function mergeMessages(base, override) {
|
|
16
|
+
const out = { ...base };
|
|
17
|
+
if (!override)
|
|
18
|
+
return out;
|
|
19
|
+
for (const [ns, values] of Object.entries(override)) {
|
|
20
|
+
if (!values)
|
|
21
|
+
continue;
|
|
22
|
+
const merged = { ...out[ns] };
|
|
23
|
+
for (const [k, v] of Object.entries(values))
|
|
24
|
+
if (typeof v === "string")
|
|
25
|
+
merged[k] = v;
|
|
26
|
+
out[ns] = merged;
|
|
27
|
+
}
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
function lookup(messages, key) {
|
|
31
|
+
const dot = key.indexOf(".");
|
|
32
|
+
if (dot === -1)
|
|
33
|
+
return undefined;
|
|
34
|
+
return messages[key.slice(0, dot)]?.[key.slice(dot + 1)];
|
|
35
|
+
}
|
|
36
|
+
function createValue(locale, messages, dir, timeZone, currency) {
|
|
37
|
+
return {
|
|
38
|
+
locale,
|
|
39
|
+
messages,
|
|
40
|
+
dir,
|
|
41
|
+
timeZone,
|
|
42
|
+
currency,
|
|
43
|
+
format: createFormatter(locale, { currency, timeZone }),
|
|
44
|
+
t: (key, vars) => formatMessage(lookup(messages, key) ?? key, vars, locale),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const defaultValue = createValue("en-US", en, "ltr", "UTC", "USD");
|
|
48
|
+
const LocaleContext = React.createContext(defaultValue);
|
|
49
|
+
/**
|
|
50
|
+
* Locale for built-in strings, text rules and Intl formatting. No i18n library required.
|
|
51
|
+
* Zero config means English (`en-US`, USD, UTC). Nest providers to override a subtree.
|
|
52
|
+
*
|
|
53
|
+
* ```tsx
|
|
54
|
+
* import { tr } from "@vamos-ui/react/locale/tr";
|
|
55
|
+
* <LocaleProvider locale="tr-TR" messages={tr} timeZone="Europe/Istanbul" currency="TRY">…</LocaleProvider>
|
|
56
|
+
*
|
|
57
|
+
* // Rename one string without writing a locale:
|
|
58
|
+
* <LocaleProvider messages={{ common: { remove: "Move to bin" } }}>…</LocaleProvider>
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export function LocaleProvider({ locale, messages, dir, timeZone, currency, children }) {
|
|
62
|
+
const parent = React.useContext(LocaleContext);
|
|
63
|
+
const nextLocale = locale ?? parent.locale;
|
|
64
|
+
const localeChanged = nextLocale !== parent.locale;
|
|
65
|
+
const base = localeChanged ? en : parent.messages;
|
|
66
|
+
const merged = React.useMemo(() => mergeMessages(base, messages), [base, messages]);
|
|
67
|
+
const nextDir = dir ?? (localeChanged ? directionOf(nextLocale) : parent.dir);
|
|
68
|
+
const tz = timeZone ?? parent.timeZone;
|
|
69
|
+
const cur = currency ?? parent.currency;
|
|
70
|
+
const value = React.useMemo(() => createValue(nextLocale, merged, nextDir, tz, cur), [nextLocale, merged, nextDir, tz, cur]);
|
|
71
|
+
return (_jsx(LocaleContext.Provider, { value: value, children: _jsx(Direction.Provider, { dir: nextDir, children: children }) }));
|
|
72
|
+
}
|
|
73
|
+
/** `{ locale, messages, dir, timeZone, currency, format, t }` from the nearest LocaleProvider. */
|
|
74
|
+
export const useLocale = () => React.useContext(LocaleContext);
|
|
75
|
+
/** The merged dictionary. Prefer `useLabels()` in components (it supports per-instance overrides). */
|
|
76
|
+
export const useMessages = () => React.useContext(LocaleContext).messages;
|
|
77
|
+
/**
|
|
78
|
+
* Formatter bound to the provider's locale, currency and time zone.
|
|
79
|
+
*
|
|
80
|
+
* ```ts
|
|
81
|
+
* const f = useFormat();
|
|
82
|
+
* f.currency("1250.50"); // "$1,250.50" (provider currency)
|
|
83
|
+
* f.currency(5, "EUR"); // "€5.00"
|
|
84
|
+
* f.date("2026-11-08"); // "Nov 8, 2026"
|
|
85
|
+
* f.relative(-1, "day"); // "yesterday"
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export const useFormat = () => React.useContext(LocaleContext).format;
|
|
89
|
+
/** Text helpers from `lib/text` bound to the provider's locale. */
|
|
90
|
+
export function useText() {
|
|
91
|
+
const { locale } = useLocale();
|
|
92
|
+
return React.useMemo(() => ({
|
|
93
|
+
locale,
|
|
94
|
+
fold: (s) => text.foldText(s, locale),
|
|
95
|
+
match: (s, q) => text.matchText(s, q, locale),
|
|
96
|
+
highlight: (s, q) => text.highlightText(s, q, locale),
|
|
97
|
+
highlightParts: (s, q) => text.highlightParts(s, q, locale),
|
|
98
|
+
compare: text.compareText(locale),
|
|
99
|
+
cmdkFilter: text.cmdkFilter(locale),
|
|
100
|
+
upper: (s) => text.upperText(s, locale),
|
|
101
|
+
lower: (s) => text.lowerText(s, locale),
|
|
102
|
+
initials: (name, max) => text.initials(name, locale, max),
|
|
103
|
+
slugify: (s, o) => text.slugify(s, { ...o, locale }),
|
|
104
|
+
}), [locale]);
|
|
105
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared internals of Dropdown Menu and Context Menu: classes, the item's inner layout and the
|
|
3
|
+
* `MenuEntry[]` renderer. Both menus build their parts from these, so they look and behave alike.
|
|
4
|
+
*/
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { type MenuEntry } from "./variants.js";
|
|
7
|
+
/** Floating panel of a menu (root content and sub-content). */
|
|
8
|
+
export declare const menuContentVariants: (props?: ({
|
|
9
|
+
size?: "sm" | "md" | null | undefined;
|
|
10
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
|
+
/** Menu items are `--control-h × 0.8` tall, so they follow the density axis. */
|
|
12
|
+
export declare function menuItemClass(opts: {
|
|
13
|
+
size?: "sm" | "md";
|
|
14
|
+
tone?: "default" | "danger";
|
|
15
|
+
inset?: boolean;
|
|
16
|
+
className?: string;
|
|
17
|
+
}): string;
|
|
18
|
+
export declare const menuLabelClass: "px-2 pt-2 pb-1 text-[11px] font-medium tracking-[0.04em] text-fg-subtle";
|
|
19
|
+
export declare const menuSeparatorClass: "-mx-1 my-1 h-px bg-line";
|
|
20
|
+
export declare const menuIndicatorClass: "absolute start-2 flex size-4 items-center justify-center text-fg";
|
|
21
|
+
/** Size context so items pick up the content's `size`. */
|
|
22
|
+
export declare const MenuSizeContext: React.Context<"sm" | "md">;
|
|
23
|
+
export interface MenuItemContentProps {
|
|
24
|
+
icon?: React.ReactNode;
|
|
25
|
+
description?: React.ReactNode;
|
|
26
|
+
/** `"mod+shift+d"` or `["mod", "d"]`. */
|
|
27
|
+
shortcut?: string | string[];
|
|
28
|
+
/** Trailing count or badge. */
|
|
29
|
+
badge?: React.ReactNode;
|
|
30
|
+
children?: React.ReactNode;
|
|
31
|
+
/** Trailing chevron for sub-triggers. */
|
|
32
|
+
chevron?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Icon · label (+ description) · badge · shortcut · chevron. */
|
|
35
|
+
export declare function MenuItemContent({ icon, description, shortcut, badge, chevron, children }: MenuItemContentProps): React.JSX.Element;
|
|
36
|
+
export declare function MenuCheckIcon(): React.JSX.Element;
|
|
37
|
+
export declare function MenuRadioDot(): React.JSX.Element;
|
|
38
|
+
/** The styled parts a menu provides to the entry renderer. */
|
|
39
|
+
export interface MenuParts {
|
|
40
|
+
Item: React.ComponentType<any>;
|
|
41
|
+
CheckboxItem: React.ComponentType<any>;
|
|
42
|
+
RadioGroup: React.ComponentType<any>;
|
|
43
|
+
RadioItem: React.ComponentType<any>;
|
|
44
|
+
Label: React.ComponentType<any>;
|
|
45
|
+
Separator: React.ComponentType<any>;
|
|
46
|
+
Group: React.ComponentType<any>;
|
|
47
|
+
Sub: React.ComponentType<any>;
|
|
48
|
+
SubTrigger: React.ComponentType<any>;
|
|
49
|
+
SubContent: React.ComponentType<any>;
|
|
50
|
+
}
|
|
51
|
+
/** Drops entries the user can't access, then leading/trailing/doubled separators. */
|
|
52
|
+
export declare function useVisibleEntries(entries: MenuEntry[]): MenuEntry[];
|
|
53
|
+
export declare function cleanEntries(entries: MenuEntry[], can: (p: string) => boolean): MenuEntry[];
|
|
54
|
+
/** Renders a `MenuEntry[]` with the given parts. Call `useVisibleEntries` first. */
|
|
55
|
+
export declare function MenuEntries({ entries, parts }: {
|
|
56
|
+
entries: MenuEntry[];
|
|
57
|
+
parts: MenuParts;
|
|
58
|
+
}): React.JSX.Element;
|
package/dist/lib/menu.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Shared internals of Dropdown Menu and Context Menu: classes, the item's inner layout and the
|
|
5
|
+
* `MenuEntry[]` renderer. Both menus build their parts from these, so they look and behave alike.
|
|
6
|
+
*/
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import { cva } from "class-variance-authority";
|
|
9
|
+
import { Check, ChevronRight } from "lucide-react";
|
|
10
|
+
import { cn } from "./cn.js";
|
|
11
|
+
import { itemSlots, itemVariants } from "./variants.js";
|
|
12
|
+
import { useCan, useLink } from "./provider.js";
|
|
13
|
+
import { KbdGroup } from "../components/kbd.js";
|
|
14
|
+
/** Floating panel of a menu (root content and sub-content). */
|
|
15
|
+
export const menuContentVariants = cva([
|
|
16
|
+
"surface-popover ui-pop z-(--z-popover) rounded-ui-lg p-1 outline-none",
|
|
17
|
+
"overflow-x-hidden overflow-y-auto overscroll-contain",
|
|
18
|
+
], {
|
|
19
|
+
variants: {
|
|
20
|
+
size: {
|
|
21
|
+
sm: "min-w-[180px] max-w-[min(20rem,calc(100vw-1.5rem))]",
|
|
22
|
+
md: "min-w-[220px] max-w-[min(24rem,calc(100vw-1.5rem))]",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: { size: "md" },
|
|
26
|
+
});
|
|
27
|
+
/** Menu items are `--control-h × 0.8` tall, so they follow the density axis. */
|
|
28
|
+
export function menuItemClass(opts) {
|
|
29
|
+
return cn(itemVariants({ size: opts.size ?? "md", tone: opts.tone ?? "default", inset: opts.inset }), "min-h-[calc(var(--control-h)*0.8)]", opts.size === "sm" && "min-h-[calc(var(--control-h)*0.7)]", opts.className);
|
|
30
|
+
}
|
|
31
|
+
export const menuLabelClass = itemSlots.groupLabel;
|
|
32
|
+
export const menuSeparatorClass = itemSlots.separator;
|
|
33
|
+
export const menuIndicatorClass = itemSlots.indicator;
|
|
34
|
+
/** Size context so items pick up the content's `size`. */
|
|
35
|
+
export const MenuSizeContext = React.createContext("md");
|
|
36
|
+
/** Icon · label (+ description) · badge · shortcut · chevron. */
|
|
37
|
+
export function MenuItemContent({ icon, description, shortcut, badge, chevron, children }) {
|
|
38
|
+
return (_jsxs(_Fragment, { children: [icon ? (_jsx("span", { "aria-hidden": true, className: cn("flex shrink-0 items-center", description ? "self-start pt-px" : undefined), children: icon })) : null, _jsxs("span", { className: itemSlots.label, children: [children, description ? _jsx("span", { className: cn(itemSlots.description, "mt-0.5 whitespace-normal"), children: description }) : null] }), badge != null ? _jsx("span", { className: "ms-auto shrink-0 ps-3 text-xs tabular text-fg-subtle", children: badge }) : null, shortcut ? _jsx(KbdGroup, { keys: shortcut, size: "sm", variant: "ghost", className: cn("shrink-0 ps-4", badge == null && "ms-auto") }) : null, chevron ? _jsx(ChevronRight, { "aria-hidden": true, className: cn("ms-auto size-3.5! shrink-0 text-fg-subtle rtl:-scale-x-100", (shortcut || badge != null) && "ms-2") }) : null] }));
|
|
39
|
+
}
|
|
40
|
+
export function MenuCheckIcon() {
|
|
41
|
+
return _jsx(Check, { className: "size-3.5! text-fg!", strokeWidth: 2.5 });
|
|
42
|
+
}
|
|
43
|
+
export function MenuRadioDot() {
|
|
44
|
+
return _jsx("span", { className: "size-1.5 rounded-full bg-fg" });
|
|
45
|
+
}
|
|
46
|
+
/** Drops entries the user can't access, then leading/trailing/doubled separators. */
|
|
47
|
+
export function useVisibleEntries(entries) {
|
|
48
|
+
const can = useCan();
|
|
49
|
+
return React.useMemo(() => cleanEntries(entries, can), [entries, can]);
|
|
50
|
+
}
|
|
51
|
+
export function cleanEntries(entries, can) {
|
|
52
|
+
const allowed = entries.filter((e) => !("permission" in e && e.permission) || can(e.permission));
|
|
53
|
+
const out = [];
|
|
54
|
+
for (const e of allowed) {
|
|
55
|
+
if (e.type === "separator" && (out.length === 0 || out[out.length - 1].type === "separator"))
|
|
56
|
+
continue;
|
|
57
|
+
if (e.type === "submenu" || e.type === "group") {
|
|
58
|
+
const items = cleanEntries(e.items, can);
|
|
59
|
+
if (items.length === 0)
|
|
60
|
+
continue;
|
|
61
|
+
out.push({ ...e, items });
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
out.push(e);
|
|
65
|
+
}
|
|
66
|
+
while (out.length && out[out.length - 1].type === "separator")
|
|
67
|
+
out.pop();
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
const keyOf = (e, i) => ("id" in e && e.id ? e.id : `${e.type ?? "item"}-${i}`);
|
|
71
|
+
/** Renders a `MenuEntry[]` with the given parts. Call `useVisibleEntries` first. */
|
|
72
|
+
export function MenuEntries({ entries, parts }) {
|
|
73
|
+
const Link = useLink();
|
|
74
|
+
const P = parts;
|
|
75
|
+
return (_jsx(_Fragment, { children: entries.map((e, i) => {
|
|
76
|
+
const key = keyOf(e, i);
|
|
77
|
+
switch (e.type) {
|
|
78
|
+
case "separator":
|
|
79
|
+
return _jsx(P.Separator, {}, key);
|
|
80
|
+
case "label":
|
|
81
|
+
return _jsx(P.Label, { children: e.label }, key);
|
|
82
|
+
case "group":
|
|
83
|
+
return (_jsxs(P.Group, { children: [e.label ? _jsx(P.Label, { children: e.label }) : null, _jsx(MenuEntries, { entries: e.items, parts: parts })] }, key));
|
|
84
|
+
case "checkbox":
|
|
85
|
+
return (_jsx(P.CheckboxItem, { checked: e.checked, onCheckedChange: e.onCheckedChange, disabled: e.disabled, textValue: e.textValue, shortcut: e.shortcut, children: e.label }, key));
|
|
86
|
+
case "radio":
|
|
87
|
+
return (_jsxs(P.Group, { children: [e.label ? _jsx(P.Label, { children: e.label }) : null, _jsx(P.RadioGroup, { value: e.value, onValueChange: e.onValueChange, children: e.options.map((o) => (_jsx(P.RadioItem, { value: o.value, disabled: o.disabled || e.disabled, textValue: o.textValue, children: o.label }, o.value))) })] }, key));
|
|
88
|
+
case "submenu":
|
|
89
|
+
return (_jsxs(P.Sub, { children: [_jsx(P.SubTrigger, { icon: e.icon, disabled: e.disabled, textValue: e.textValue, children: e.label }), _jsx(P.SubContent, { children: _jsx(MenuEntries, { entries: e.items, parts: parts }) })] }, key));
|
|
90
|
+
default: {
|
|
91
|
+
const content = (_jsx(MenuItemContent, { icon: e.icon, description: e.description, shortcut: e.shortcut, badge: e.badge, children: e.label }));
|
|
92
|
+
if (e.href) {
|
|
93
|
+
return (_jsx(P.Item, { asChild: true, tone: e.tone, disabled: e.disabled, textValue: e.textValue, onSelect: e.onSelect, children: _jsx(Link, { href: e.href, children: content }) }, key));
|
|
94
|
+
}
|
|
95
|
+
return (_jsx(P.Item, { tone: e.tone, disabled: e.disabled, textValue: e.textValue, onSelect: e.onSelect, icon: e.icon, description: e.description, shortcut: e.shortcut, badge: e.badge, children: e.label }, key));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}) }));
|
|
99
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ICU-lite message formatting — React-free, ~no dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Supported syntax:
|
|
5
|
+
* - `{name}` — replaced with `vars.name` (numbers are formatted with the locale: 1250 → "1,250").
|
|
6
|
+
* - `{count, plural, =0 {No files} one {# file} other {# files}}` — `Intl.PluralRules`; `#` is the formatted number.
|
|
7
|
+
* - `{count, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}`.
|
|
8
|
+
* - `{role, select, admin {Administrator} other {Member}}`.
|
|
9
|
+
*
|
|
10
|
+
* Unknown placeholders are left as-is (`{name}`), so a missing variable is visible, not silent.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Formats a message template.
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* formatMessage("Remove {label}", { label: "Design" }); // "Remove Design"
|
|
17
|
+
* formatMessage("{count, plural, one {# reply} other {# replies}}", { count: 1250 }, "en-US"); // "1,250 replies"
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function formatMessage(template: string, vars?: Record<string, unknown>, locale?: string): string;
|