prime-ui-kit 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/dist/components/accordion/examples/01-faq-marketing.d.ts +5 -0
- package/dist/components/accordion/examples/01-faq-marketing.d.ts.map +1 -0
- package/dist/components/accordion/examples/02-settings-panels.d.ts +6 -0
- package/dist/components/accordion/examples/02-settings-panels.d.ts.map +1 -0
- package/dist/components/accordion/examples/03-checkout-order-summary.d.ts +5 -0
- package/dist/components/accordion/examples/03-checkout-order-summary.d.ts.map +1 -0
- package/dist/components/accordion/examples/04-api-docs-sections.d.ts +6 -0
- package/dist/components/accordion/examples/04-api-docs-sections.d.ts.map +1 -0
- package/dist/components/accordion/examples/05-knowledge-base-categories.d.ts +6 -0
- package/dist/components/accordion/examples/05-knowledge-base-categories.d.ts.map +1 -0
- package/dist/components/avatar/examples/app-header-nav.d.ts +5 -0
- package/dist/components/avatar/examples/app-header-nav.d.ts.map +1 -0
- package/dist/components/avatar/examples/comment-thread.d.ts +5 -0
- package/dist/components/avatar/examples/comment-thread.d.ts.map +1 -0
- package/dist/components/avatar/examples/fallback-variants.d.ts +5 -0
- package/dist/components/avatar/examples/fallback-variants.d.ts.map +1 -0
- package/dist/components/avatar/examples/group-overflow.d.ts +5 -0
- package/dist/components/avatar/examples/group-overflow.d.ts.map +1 -0
- package/dist/components/avatar/examples/team-list.d.ts +5 -0
- package/dist/components/avatar/examples/team-list.d.ts.map +1 -0
- package/dist/components/badge/examples/admin-tags.d.ts +3 -0
- package/dist/components/badge/examples/admin-tags.d.ts.map +1 -0
- package/dist/components/badge/examples/canonical.d.ts +3 -0
- package/dist/components/badge/examples/canonical.d.ts.map +1 -0
- package/dist/components/badge/examples/ecommerce-inventory.d.ts +3 -0
- package/dist/components/badge/examples/ecommerce-inventory.d.ts.map +1 -0
- package/dist/components/badge/examples/inbox-labels.d.ts +3 -0
- package/dist/components/badge/examples/inbox-labels.d.ts.map +1 -0
- package/dist/components/badge/examples/status-presence.d.ts +6 -0
- package/dist/components/badge/examples/status-presence.d.ts.map +1 -0
- package/dist/components/banner/examples/billing-alert.d.ts +3 -0
- package/dist/components/banner/examples/billing-alert.d.ts.map +1 -0
- package/dist/components/banner/examples/cookie-consent-row.d.ts +3 -0
- package/dist/components/banner/examples/cookie-consent-row.d.ts.map +1 -0
- package/dist/components/banner/examples/feature-promo.d.ts +3 -0
- package/dist/components/banner/examples/feature-promo.d.ts.map +1 -0
- package/dist/components/banner/examples/maintenance.d.ts +3 -0
- package/dist/components/banner/examples/maintenance.d.ts.map +1 -0
- package/dist/components/breadcrumb/examples/canonical.d.ts +3 -0
- package/dist/components/breadcrumb/examples/canonical.d.ts.map +1 -0
- package/dist/components/breadcrumb/examples/deep-documentation.d.ts +3 -0
- package/dist/components/breadcrumb/examples/deep-documentation.d.ts.map +1 -0
- package/dist/components/breadcrumb/examples/ecommerce-product.d.ts +3 -0
- package/dist/components/breadcrumb/examples/ecommerce-product.d.ts.map +1 -0
- package/dist/components/breadcrumb/examples/long-path-ellipsis.d.ts +6 -0
- package/dist/components/breadcrumb/examples/long-path-ellipsis.d.ts.map +1 -0
- package/dist/components/breadcrumb/examples/saas-settings.d.ts +3 -0
- package/dist/components/breadcrumb/examples/saas-settings.d.ts.map +1 -0
- package/dist/components/button/examples/canonical-composition.d.ts +5 -0
- package/dist/components/button/examples/canonical-composition.d.ts.map +1 -0
- package/dist/components/button/examples/destructive-confirm.d.ts +5 -0
- package/dist/components/button/examples/destructive-confirm.d.ts.map +1 -0
- package/dist/components/button/examples/form-submit-row.d.ts +5 -0
- package/dist/components/button/examples/form-submit-row.d.ts.map +1 -0
- package/dist/components/button/examples/marketing-cta.d.ts +5 -0
- package/dist/components/button/examples/marketing-cta.d.ts.map +1 -0
- package/dist/components/button/examples/toolbar.d.ts +5 -0
- package/dist/components/button/examples/toolbar.d.ts.map +1 -0
- package/dist/components/button-group/examples/editor-toolbar.d.ts +6 -0
- package/dist/components/button-group/examples/editor-toolbar.d.ts.map +1 -0
- package/dist/components/button-group/examples/form-footer.d.ts +5 -0
- package/dist/components/button-group/examples/form-footer.d.ts.map +1 -0
- package/dist/components/button-group/examples/view-switcher.d.ts +5 -0
- package/dist/components/button-group/examples/view-switcher.d.ts.map +1 -0
- package/dist/components/button-group/examples/wizard-actions.d.ts +5 -0
- package/dist/components/button-group/examples/wizard-actions.d.ts.map +1 -0
- package/dist/components/card/examples/cta-cover.d.ts +5 -0
- package/dist/components/card/examples/cta-cover.d.ts.map +1 -0
- package/dist/components/card/examples/list-card.d.ts +3 -0
- package/dist/components/card/examples/list-card.d.ts.map +1 -0
- package/dist/components/card/examples/media-mini.d.ts +3 -0
- package/dist/components/card/examples/media-mini.d.ts.map +1 -0
- package/dist/components/card/examples/metric-dashboard.d.ts +3 -0
- package/dist/components/card/examples/metric-dashboard.d.ts.map +1 -0
- package/dist/components/card/examples/split-layout.d.ts +3 -0
- package/dist/components/card/examples/split-layout.d.ts.map +1 -0
- package/dist/components/checkbox/examples/bulk-select-rows.d.ts +5 -0
- package/dist/components/checkbox/examples/bulk-select-rows.d.ts.map +1 -0
- package/dist/components/checkbox/examples/feature-flags-list.d.ts +5 -0
- package/dist/components/checkbox/examples/feature-flags-list.d.ts.map +1 -0
- package/dist/components/checkbox/examples/settings-panel.d.ts +5 -0
- package/dist/components/checkbox/examples/settings-panel.d.ts.map +1 -0
- package/dist/components/checkbox/examples/terms-acceptance.d.ts +5 -0
- package/dist/components/checkbox/examples/terms-acceptance.d.ts.map +1 -0
- package/dist/components/code-block/examples/api-response-preview.d.ts +3 -0
- package/dist/components/code-block/examples/api-response-preview.d.ts.map +1 -0
- package/dist/components/code-block/examples/config-snippet.d.ts +3 -0
- package/dist/components/code-block/examples/config-snippet.d.ts.map +1 -0
- package/dist/components/code-block/examples/error-stack.d.ts +3 -0
- package/dist/components/code-block/examples/error-stack.d.ts.map +1 -0
- package/dist/components/code-block/examples/minimal.d.ts +3 -0
- package/dist/components/code-block/examples/minimal.d.ts.map +1 -0
- package/dist/components/code-block/examples/tutorial-step.d.ts +3 -0
- package/dist/components/code-block/examples/tutorial-step.d.ts.map +1 -0
- package/dist/components/color-picker/examples/brand-kit.d.ts +3 -0
- package/dist/components/color-picker/examples/brand-kit.d.ts.map +1 -0
- package/dist/components/color-picker/examples/controlled-form-field.d.ts +3 -0
- package/dist/components/color-picker/examples/controlled-form-field.d.ts.map +1 -0
- package/dist/components/color-picker/examples/minimal-popover.d.ts +3 -0
- package/dist/components/color-picker/examples/minimal-popover.d.ts.map +1 -0
- package/dist/components/color-picker/examples/product-variant-swatch.d.ts +3 -0
- package/dist/components/color-picker/examples/product-variant-swatch.d.ts.map +1 -0
- package/dist/components/color-picker/examples/theme-accent.d.ts +3 -0
- package/dist/components/color-picker/examples/theme-accent.d.ts.map +1 -0
- package/dist/components/command-menu/examples/app-palette.d.ts +5 -0
- package/dist/components/command-menu/examples/app-palette.d.ts.map +1 -0
- package/dist/components/command-menu/examples/disabled-items.d.ts +6 -0
- package/dist/components/command-menu/examples/disabled-items.d.ts.map +1 -0
- package/dist/components/command-menu/examples/file-search.d.ts +5 -0
- package/dist/components/command-menu/examples/file-search.d.ts.map +1 -0
- package/dist/components/command-menu/examples/quick-actions.d.ts +5 -0
- package/dist/components/command-menu/examples/quick-actions.d.ts.map +1 -0
- package/dist/components/data-table/examples/canonical-orders.d.ts +6 -0
- package/dist/components/data-table/examples/canonical-orders.d.ts.map +1 -0
- package/dist/components/data-table/examples/controlled-sort-and-page.d.ts +5 -0
- package/dist/components/data-table/examples/controlled-sort-and-page.d.ts.map +1 -0
- package/dist/components/data-table/examples/infinite-scroll-load-more.d.ts +6 -0
- package/dist/components/data-table/examples/infinite-scroll-load-more.d.ts.map +1 -0
- package/dist/components/data-table/examples/row-selection.d.ts +6 -0
- package/dist/components/data-table/examples/row-selection.d.ts.map +1 -0
- package/dist/components/data-table/examples/sticky-header-first-column.d.ts +6 -0
- package/dist/components/data-table/examples/sticky-header-first-column.d.ts.map +1 -0
- package/dist/components/datepicker/examples/birthdate.d.ts +5 -0
- package/dist/components/datepicker/examples/birthdate.d.ts.map +1 -0
- package/dist/components/datepicker/examples/booking.d.ts +5 -0
- package/dist/components/datepicker/examples/booking.d.ts.map +1 -0
- package/dist/components/datepicker/examples/full-width-form.d.ts +5 -0
- package/dist/components/datepicker/examples/full-width-form.d.ts.map +1 -0
- package/dist/components/datepicker/examples/range-report.d.ts +5 -0
- package/dist/components/datepicker/examples/range-report.d.ts.map +1 -0
- package/dist/components/digit-input/examples/error-state.d.ts +3 -0
- package/dist/components/digit-input/examples/error-state.d.ts.map +1 -0
- package/dist/components/digit-input/examples/otp-login.d.ts +3 -0
- package/dist/components/digit-input/examples/otp-login.d.ts.map +1 -0
- package/dist/components/digit-input/examples/pin.d.ts +3 -0
- package/dist/components/digit-input/examples/pin.d.ts.map +1 -0
- package/dist/components/digit-input/examples/resend-and-clear.d.ts +3 -0
- package/dist/components/digit-input/examples/resend-and-clear.d.ts.map +1 -0
- package/dist/components/digit-input/examples/verification-step.d.ts +3 -0
- package/dist/components/digit-input/examples/verification-step.d.ts.map +1 -0
- package/dist/components/divider/examples/card-splits.d.ts +3 -0
- package/dist/components/divider/examples/card-splits.d.ts.map +1 -0
- package/dist/components/divider/examples/inset-stack.d.ts +6 -0
- package/dist/components/divider/examples/inset-stack.d.ts.map +1 -0
- package/dist/components/divider/examples/line-spacing-column.d.ts +6 -0
- package/dist/components/divider/examples/line-spacing-column.d.ts.map +1 -0
- package/dist/components/divider/examples/list-separators.d.ts +3 -0
- package/dist/components/divider/examples/list-separators.d.ts.map +1 -0
- package/dist/components/divider/examples/section-breaks.d.ts +3 -0
- package/dist/components/divider/examples/section-breaks.d.ts.map +1 -0
- package/dist/components/drawer/examples/cart-preview.d.ts +5 -0
- package/dist/components/drawer/examples/cart-preview.d.ts.map +1 -0
- package/dist/components/drawer/examples/explicit-panel.d.ts +5 -0
- package/dist/components/drawer/examples/explicit-panel.d.ts.map +1 -0
- package/dist/components/drawer/examples/filters-panel.d.ts +5 -0
- package/dist/components/drawer/examples/filters-panel.d.ts.map +1 -0
- package/dist/components/drawer/examples/mobile-nav-sheet.d.ts +5 -0
- package/dist/components/drawer/examples/mobile-nav-sheet.d.ts.map +1 -0
- package/dist/components/drawer/examples/settings-side.d.ts +5 -0
- package/dist/components/drawer/examples/settings-side.d.ts.map +1 -0
- package/dist/components/dropdown/examples/account-menu.d.ts +3 -0
- package/dist/components/dropdown/examples/account-menu.d.ts.map +1 -0
- package/dist/components/dropdown/examples/actions-menu.d.ts +3 -0
- package/dist/components/dropdown/examples/actions-menu.d.ts.map +1 -0
- package/dist/components/dropdown/examples/placement-demo.d.ts +3 -0
- package/dist/components/dropdown/examples/placement-demo.d.ts.map +1 -0
- package/dist/components/dropdown/examples/select-like-list.d.ts +7 -0
- package/dist/components/dropdown/examples/select-like-list.d.ts.map +1 -0
- package/dist/components/file-upload/examples/avatar-upload.d.ts +6 -0
- package/dist/components/file-upload/examples/avatar-upload.d.ts.map +1 -0
- package/dist/components/file-upload/examples/controlled-list.d.ts +5 -0
- package/dist/components/file-upload/examples/controlled-list.d.ts.map +1 -0
- package/dist/components/file-upload/examples/document-attach.d.ts +5 -0
- package/dist/components/file-upload/examples/document-attach.d.ts.map +1 -0
- package/dist/components/file-upload/examples/drag-area.d.ts +5 -0
- package/dist/components/file-upload/examples/drag-area.d.ts.map +1 -0
- package/dist/components/hint/examples/error-hint.d.ts +3 -0
- package/dist/components/hint/examples/error-hint.d.ts.map +1 -0
- package/dist/components/hint/examples/field-help.d.ts +3 -0
- package/dist/components/hint/examples/field-help.d.ts.map +1 -0
- package/dist/components/hint/examples/inline-tip-form.d.ts +3 -0
- package/dist/components/hint/examples/inline-tip-form.d.ts.map +1 -0
- package/dist/components/hint/examples/success-confirmation.d.ts +6 -0
- package/dist/components/hint/examples/success-confirmation.d.ts.map +1 -0
- package/dist/components/hint/examples/with-icon.d.ts +3 -0
- package/dist/components/hint/examples/with-icon.d.ts.map +1 -0
- package/dist/components/input/examples/checkout-full-width.d.ts +5 -0
- package/dist/components/input/examples/checkout-full-width.d.ts.map +1 -0
- package/dist/components/input/examples/login-email.d.ts +5 -0
- package/dist/components/input/examples/login-email.d.ts.map +1 -0
- package/dist/components/input/examples/password-with-hint.d.ts +5 -0
- package/dist/components/input/examples/password-with-hint.d.ts.map +1 -0
- package/dist/components/input/examples/search.d.ts +5 -0
- package/dist/components/input/examples/search.d.ts.map +1 -0
- package/dist/components/kbd/examples/combination-keys.d.ts +3 -0
- package/dist/components/kbd/examples/combination-keys.d.ts.map +1 -0
- package/dist/components/kbd/examples/docs-legend.d.ts +3 -0
- package/dist/components/kbd/examples/docs-legend.d.ts.map +1 -0
- package/dist/components/kbd/examples/inline-doc-hint.d.ts +3 -0
- package/dist/components/kbd/examples/inline-doc-hint.d.ts.map +1 -0
- package/dist/components/kbd/examples/shortcut-row.d.ts +3 -0
- package/dist/components/kbd/examples/shortcut-row.d.ts.map +1 -0
- package/dist/components/kbd/examples/toolbar-hints.d.ts +3 -0
- package/dist/components/kbd/examples/toolbar-hints.d.ts.map +1 -0
- package/dist/components/label/examples/accessibility-pattern.d.ts +6 -0
- package/dist/components/label/examples/accessibility-pattern.d.ts.map +1 -0
- package/dist/components/label/examples/grouped-labels.d.ts +6 -0
- package/dist/components/label/examples/grouped-labels.d.ts.map +1 -0
- package/dist/components/label/examples/optional-field.d.ts +3 -0
- package/dist/components/label/examples/optional-field.d.ts.map +1 -0
- package/dist/components/label/examples/required-field.d.ts +3 -0
- package/dist/components/label/examples/required-field.d.ts.map +1 -0
- package/dist/components/label/examples/with-icon.d.ts +3 -0
- package/dist/components/label/examples/with-icon.d.ts.map +1 -0
- package/dist/components/link-button/examples/disabled.d.ts +6 -0
- package/dist/components/link-button/examples/disabled.d.ts.map +1 -0
- package/dist/components/link-button/examples/external.d.ts +3 -0
- package/dist/components/link-button/examples/external.d.ts.map +1 -0
- package/dist/components/link-button/examples/footer-legal.d.ts +3 -0
- package/dist/components/link-button/examples/footer-legal.d.ts.map +1 -0
- package/dist/components/link-button/examples/inline-text-link.d.ts +3 -0
- package/dist/components/link-button/examples/inline-text-link.d.ts.map +1 -0
- package/dist/components/link-button/examples/navigation-cluster.d.ts +3 -0
- package/dist/components/link-button/examples/navigation-cluster.d.ts.map +1 -0
- package/dist/components/modal/examples/canonical-maximal.d.ts +6 -0
- package/dist/components/modal/examples/canonical-maximal.d.ts.map +1 -0
- package/dist/components/modal/examples/scenario-confirm-delete.d.ts +3 -0
- package/dist/components/modal/examples/scenario-confirm-delete.d.ts.map +1 -0
- package/dist/components/modal/examples/scenario-edit-entity.d.ts +3 -0
- package/dist/components/modal/examples/scenario-edit-entity.d.ts.map +1 -0
- package/dist/components/modal/examples/scenario-legal-consent.d.ts +3 -0
- package/dist/components/modal/examples/scenario-legal-consent.d.ts.map +1 -0
- package/dist/components/modal/examples/scenario-multi-field-form.d.ts +3 -0
- package/dist/components/modal/examples/scenario-multi-field-form.d.ts.map +1 -0
- package/dist/components/notification/examples/action-toast.d.ts +2 -0
- package/dist/components/notification/examples/action-toast.d.ts.map +1 -0
- package/dist/components/notification/examples/error-success.d.ts +2 -0
- package/dist/components/notification/examples/error-success.d.ts.map +1 -0
- package/dist/components/notification/examples/notification-store.d.ts +2 -0
- package/dist/components/notification/examples/notification-store.d.ts.map +1 -0
- package/dist/components/notification/examples/positions.d.ts +2 -0
- package/dist/components/notification/examples/positions.d.ts.map +1 -0
- package/dist/components/notification/examples/toast-queue.d.ts +2 -0
- package/dist/components/notification/examples/toast-queue.d.ts.map +1 -0
- package/dist/components/pagination/examples/canonical-composition.d.ts +5 -0
- package/dist/components/pagination/examples/canonical-composition.d.ts.map +1 -0
- package/dist/components/pagination/examples/compact.d.ts +3 -0
- package/dist/components/pagination/examples/compact.d.ts.map +1 -0
- package/dist/components/pagination/examples/controlled-page.d.ts +3 -0
- package/dist/components/pagination/examples/controlled-page.d.ts.map +1 -0
- package/dist/components/pagination/examples/full-width-list.d.ts +3 -0
- package/dist/components/pagination/examples/full-width-list.d.ts.map +1 -0
- package/dist/components/pagination/examples/table-footer.d.ts +3 -0
- package/dist/components/pagination/examples/table-footer.d.ts.map +1 -0
- package/dist/components/popover/examples/canonical-panel.d.ts +5 -0
- package/dist/components/popover/examples/canonical-panel.d.ts.map +1 -0
- package/dist/components/popover/examples/date-trigger.d.ts +5 -0
- package/dist/components/popover/examples/date-trigger.d.ts.map +1 -0
- package/dist/components/popover/examples/form-in-popover.d.ts +5 -0
- package/dist/components/popover/examples/form-in-popover.d.ts.map +1 -0
- package/dist/components/popover/examples/placement.d.ts +5 -0
- package/dist/components/popover/examples/placement.d.ts.map +1 -0
- package/dist/components/popover/examples/rich-content.d.ts +5 -0
- package/dist/components/popover/examples/rich-content.d.ts.map +1 -0
- package/dist/components/progress-bar/examples/indeterminate-busy-state.d.ts +6 -0
- package/dist/components/progress-bar/examples/indeterminate-busy-state.d.ts.map +1 -0
- package/dist/components/progress-bar/examples/labeled.d.ts +3 -0
- package/dist/components/progress-bar/examples/labeled.d.ts.map +1 -0
- package/dist/components/progress-bar/examples/step-progress.d.ts +3 -0
- package/dist/components/progress-bar/examples/step-progress.d.ts.map +1 -0
- package/dist/components/progress-bar/examples/upload-progress.d.ts +3 -0
- package/dist/components/progress-bar/examples/upload-progress.d.ts.map +1 -0
- package/dist/components/progress-bar/examples/wizard-composition.d.ts +3 -0
- package/dist/components/progress-bar/examples/wizard-composition.d.ts.map +1 -0
- package/dist/components/progress-circle/examples/a11y-label.d.ts +6 -0
- package/dist/components/progress-circle/examples/a11y-label.d.ts.map +1 -0
- package/dist/components/progress-circle/examples/composition.d.ts +3 -0
- package/dist/components/progress-circle/examples/composition.d.ts.map +1 -0
- package/dist/components/progress-circle/examples/controlled.d.ts +3 -0
- package/dist/components/progress-circle/examples/controlled.d.ts.map +1 -0
- package/dist/components/progress-circle/examples/dashboard-ring.d.ts +3 -0
- package/dist/components/progress-circle/examples/dashboard-ring.d.ts.map +1 -0
- package/dist/components/progress-circle/examples/max-scale.d.ts +3 -0
- package/dist/components/progress-circle/examples/max-scale.d.ts.map +1 -0
- package/dist/components/radio/examples/notification-channel.d.ts +3 -0
- package/dist/components/radio/examples/notification-channel.d.ts.map +1 -0
- package/dist/components/radio/examples/plan-picker.d.ts +3 -0
- package/dist/components/radio/examples/plan-picker.d.ts.map +1 -0
- package/dist/components/radio/examples/settings-group.d.ts +3 -0
- package/dist/components/radio/examples/settings-group.d.ts.map +1 -0
- package/dist/components/radio/examples/shipping-method.d.ts +3 -0
- package/dist/components/radio/examples/shipping-method.d.ts.map +1 -0
- package/dist/components/segmented-control/examples/canonical-composition.d.ts +5 -0
- package/dist/components/segmented-control/examples/canonical-composition.d.ts.map +1 -0
- package/dist/components/segmented-control/examples/catalog-filters.d.ts +5 -0
- package/dist/components/segmented-control/examples/catalog-filters.d.ts.map +1 -0
- package/dist/components/segmented-control/examples/pricing-toggle.d.ts +5 -0
- package/dist/components/segmented-control/examples/pricing-toggle.d.ts.map +1 -0
- package/dist/components/segmented-control/examples/view-mode.d.ts +5 -0
- package/dist/components/segmented-control/examples/view-mode.d.ts.map +1 -0
- package/dist/components/segmented-progress-bar/examples/distribution-breakdown.d.ts +3 -0
- package/dist/components/segmented-progress-bar/examples/distribution-breakdown.d.ts.map +1 -0
- package/dist/components/segmented-progress-bar/examples/multi-phase-rollout.d.ts +3 -0
- package/dist/components/segmented-progress-bar/examples/multi-phase-rollout.d.ts.map +1 -0
- package/dist/components/segmented-progress-bar/examples/segment-gaps.d.ts +3 -0
- package/dist/components/segmented-progress-bar/examples/segment-gaps.d.ts.map +1 -0
- package/dist/components/segmented-progress-bar/examples/size-ladder.d.ts +3 -0
- package/dist/components/segmented-progress-bar/examples/size-ladder.d.ts.map +1 -0
- package/dist/components/segmented-progress-bar/examples/storage-mix.d.ts +3 -0
- package/dist/components/segmented-progress-bar/examples/storage-mix.d.ts.map +1 -0
- package/dist/components/select/examples/01-country.d.ts +6 -0
- package/dist/components/select/examples/01-country.d.ts.map +1 -0
- package/dist/components/select/examples/02-controlled.d.ts +5 -0
- package/dist/components/select/examples/02-controlled.d.ts.map +1 -0
- package/dist/components/select/examples/03-groups.d.ts +5 -0
- package/dist/components/select/examples/03-groups.d.ts.map +1 -0
- package/dist/components/select/examples/04-full-width-form.d.ts +6 -0
- package/dist/components/select/examples/04-full-width-form.d.ts.map +1 -0
- package/dist/components/slider/examples/01-volume.d.ts +5 -0
- package/dist/components/slider/examples/01-volume.d.ts.map +1 -0
- package/dist/components/slider/examples/02-price-range.d.ts +5 -0
- package/dist/components/slider/examples/02-price-range.d.ts.map +1 -0
- package/dist/components/slider/examples/03-controlled.d.ts +5 -0
- package/dist/components/slider/examples/03-controlled.d.ts.map +1 -0
- package/dist/components/slider/examples/04-disabled.d.ts +5 -0
- package/dist/components/slider/examples/04-disabled.d.ts.map +1 -0
- package/dist/components/stepper/examples/01-checkout-horizontal.d.ts +5 -0
- package/dist/components/stepper/examples/01-checkout-horizontal.d.ts.map +1 -0
- package/dist/components/stepper/examples/02-onboarding-vertical.d.ts +5 -0
- package/dist/components/stepper/examples/02-onboarding-vertical.d.ts.map +1 -0
- package/dist/components/stepper/examples/03-vertical-primitive-rail.d.ts +5 -0
- package/dist/components/stepper/examples/03-vertical-primitive-rail.d.ts.map +1 -0
- package/dist/components/stepper/examples/04-checkout-step-error.d.ts +6 -0
- package/dist/components/stepper/examples/04-checkout-step-error.d.ts.map +1 -0
- package/dist/components/stepper/examples/05-horizontal-primitive.d.ts +5 -0
- package/dist/components/stepper/examples/05-horizontal-primitive.d.ts.map +1 -0
- package/dist/components/switch/examples/canonical-maximal.d.ts +5 -0
- package/dist/components/switch/examples/canonical-maximal.d.ts.map +1 -0
- package/dist/components/switch/examples/scenario-billing-annual.d.ts +5 -0
- package/dist/components/switch/examples/scenario-billing-annual.d.ts.map +1 -0
- package/dist/components/switch/examples/scenario-feature-flag.d.ts +5 -0
- package/dist/components/switch/examples/scenario-feature-flag.d.ts.map +1 -0
- package/dist/components/switch/examples/scenario-form-consent.d.ts +5 -0
- package/dist/components/switch/examples/scenario-form-consent.d.ts.map +1 -0
- package/dist/components/switch/examples/scenario-settings-toggle.d.ts +5 -0
- package/dist/components/switch/examples/scenario-settings-toggle.d.ts.map +1 -0
- package/dist/components/tabs/examples/01-settings-vertical-rail.d.ts +6 -0
- package/dist/components/tabs/examples/01-settings-vertical-rail.d.ts.map +1 -0
- package/dist/components/tabs/examples/02-dashboard-subviews.d.ts +6 -0
- package/dist/components/tabs/examples/02-dashboard-subviews.d.ts.map +1 -0
- package/dist/components/tabs/examples/03-tab-triggers-with-icons.d.ts +6 -0
- package/dist/components/tabs/examples/03-tab-triggers-with-icons.d.ts.map +1 -0
- package/dist/components/tabs/examples/04-long-labels-narrow.d.ts +6 -0
- package/dist/components/tabs/examples/04-long-labels-narrow.d.ts.map +1 -0
- package/dist/components/tabs/examples/05-controlled-active-tab.d.ts +6 -0
- package/dist/components/tabs/examples/05-controlled-active-tab.d.ts.map +1 -0
- package/dist/components/tag/examples/01-filter-chips.d.ts +5 -0
- package/dist/components/tag/examples/01-filter-chips.d.ts.map +1 -0
- package/dist/components/tag/examples/02-removable-selected-values.d.ts +6 -0
- package/dist/components/tag/examples/02-removable-selected-values.d.ts.map +1 -0
- package/dist/components/tag/examples/03-status-metadata.d.ts +5 -0
- package/dist/components/tag/examples/03-status-metadata.d.ts.map +1 -0
- package/dist/components/tag/examples/04-tag-sizes.d.ts +3 -0
- package/dist/components/tag/examples/04-tag-sizes.d.ts.map +1 -0
- package/dist/components/textarea/examples/01-support-ticket.d.ts +5 -0
- package/dist/components/textarea/examples/01-support-ticket.d.ts.map +1 -0
- package/dist/components/textarea/examples/02-comment.d.ts +5 -0
- package/dist/components/textarea/examples/02-comment.d.ts.map +1 -0
- package/dist/components/textarea/examples/03-controlled.d.ts +5 -0
- package/dist/components/textarea/examples/03-controlled.d.ts.map +1 -0
- package/dist/components/textarea/examples/04-full-width.d.ts +5 -0
- package/dist/components/textarea/examples/04-full-width.d.ts.map +1 -0
- package/dist/components/tooltip/examples/canonical-icon-hint.d.ts +5 -0
- package/dist/components/tooltip/examples/canonical-icon-hint.d.ts.map +1 -0
- package/dist/components/tooltip/examples/scenario-controlled-programmatic.d.ts +5 -0
- package/dist/components/tooltip/examples/scenario-controlled-programmatic.d.ts.map +1 -0
- package/dist/components/tooltip/examples/scenario-delay-provider.d.ts +5 -0
- package/dist/components/tooltip/examples/scenario-delay-provider.d.ts.map +1 -0
- package/dist/components/tooltip/examples/scenario-long-content.d.ts +5 -0
- package/dist/components/tooltip/examples/scenario-long-content.d.ts.map +1 -0
- package/dist/components/tooltip/examples/scenario-side-bottom.d.ts +5 -0
- package/dist/components/tooltip/examples/scenario-side-bottom.d.ts.map +1 -0
- package/dist/components/typography/examples/01-article.d.ts +5 -0
- package/dist/components/typography/examples/01-article.d.ts.map +1 -0
- package/dist/components/typography/examples/02-form-labels-contrast.d.ts +6 -0
- package/dist/components/typography/examples/02-form-labels-contrast.d.ts.map +1 -0
- package/dist/components/typography/examples/03-marketing-hero.d.ts +3 -0
- package/dist/components/typography/examples/03-marketing-hero.d.ts.map +1 -0
- package/dist/components/typography/examples/04-reading-scale.d.ts +3 -0
- package/dist/components/typography/examples/04-reading-scale.d.ts.map +1 -0
- package/dist/components/typography/examples/05-inline-emphasis.d.ts +3 -0
- package/dist/components/typography/examples/05-inline-emphasis.d.ts.map +1 -0
- package/dist/layout/sidebar/examples/01-app-shell-nav.d.ts +5 -0
- package/dist/layout/sidebar/examples/01-app-shell-nav.d.ts.map +1 -0
- package/dist/layout/sidebar/examples/02-collapsible-desktop.d.ts +6 -0
- package/dist/layout/sidebar/examples/02-collapsible-desktop.d.ts.map +1 -0
- package/dist/layout/sidebar/examples/03-controlled-state.d.ts +5 -0
- package/dist/layout/sidebar/examples/03-controlled-state.d.ts.map +1 -0
- package/dist/layout/sidebar/examples/04-router-navigation.d.ts +6 -0
- package/dist/layout/sidebar/examples/04-router-navigation.d.ts.map +1 -0
- package/dist/layout/sidebar/examples/05-responsive-behavior.d.ts +7 -0
- package/dist/layout/sidebar/examples/05-responsive-behavior.d.ts.map +1 -0
- package/package.json +4 -1
- package/src/components/accordion/COMPONENT.md +60 -7
- package/src/components/accordion/examples/01-faq-marketing.tsx +62 -0
- package/src/components/accordion/examples/02-settings-panels.tsx +67 -0
- package/src/components/accordion/examples/03-checkout-order-summary.tsx +87 -0
- package/src/components/accordion/examples/04-api-docs-sections.tsx +86 -0
- package/src/components/accordion/examples/05-knowledge-base-categories.tsx +65 -0
- package/src/components/accordion/examples/examples.module.css +30 -0
- package/src/components/avatar/COMPONENT.md +59 -7
- package/src/components/avatar/examples/app-header-nav.tsx +41 -0
- package/src/components/avatar/examples/comment-thread.tsx +57 -0
- package/src/components/avatar/examples/examples.module.css +72 -0
- package/src/components/avatar/examples/fallback-variants.tsx +33 -0
- package/src/components/avatar/examples/group-overflow.tsx +32 -0
- package/src/components/avatar/examples/team-list.tsx +45 -0
- package/src/components/badge/COMPONENT.md +35 -12
- package/src/components/badge/examples/admin-tags.tsx +35 -0
- package/src/components/badge/examples/canonical.tsx +6 -0
- package/src/components/badge/examples/ecommerce-inventory.tsx +35 -0
- package/src/components/badge/examples/inbox-labels.tsx +36 -0
- package/src/components/badge/examples/status-presence.tsx +32 -0
- package/src/components/banner/COMPONENT.md +56 -29
- package/src/components/banner/examples/billing-alert.tsx +35 -0
- package/src/components/banner/examples/cookie-consent-row.tsx +36 -0
- package/src/components/banner/examples/feature-promo.tsx +36 -0
- package/src/components/banner/examples/maintenance.tsx +23 -0
- package/src/components/breadcrumb/COMPONENT.md +71 -38
- package/src/components/breadcrumb/examples/canonical.tsx +12 -0
- package/src/components/breadcrumb/examples/deep-documentation.tsx +16 -0
- package/src/components/breadcrumb/examples/ecommerce-product.tsx +18 -0
- package/src/components/breadcrumb/examples/long-path-ellipsis.tsx +21 -0
- package/src/components/breadcrumb/examples/saas-settings.tsx +16 -0
- package/src/components/button/COMPONENT.md +33 -12
- package/src/components/button/examples/canonical-composition.tsx +46 -0
- package/src/components/button/examples/destructive-confirm.tsx +36 -0
- package/src/components/button/examples/form-submit-row.tsx +33 -0
- package/src/components/button/examples/marketing-cta.tsx +26 -0
- package/src/components/button/examples/toolbar.tsx +38 -0
- package/src/components/button-group/COMPONENT.md +56 -8
- package/src/components/button-group/examples/editor-toolbar.tsx +46 -0
- package/src/components/button-group/examples/form-footer.tsx +19 -0
- package/src/components/button-group/examples/view-switcher.tsx +25 -0
- package/src/components/button-group/examples/wizard-actions.tsx +30 -0
- package/src/components/card/COMPONENT.md +61 -243
- package/src/components/card/examples/cover-banner.module.css +8 -0
- package/src/components/card/examples/cta-cover.tsx +44 -0
- package/src/components/card/examples/layout.module.css +7 -0
- package/src/components/card/examples/list-card.tsx +20 -0
- package/src/components/card/examples/media-mini.tsx +55 -0
- package/src/components/card/examples/metric-dashboard.tsx +60 -0
- package/src/components/card/examples/sparkline.module.css +10 -0
- package/src/components/card/examples/split-layout.tsx +29 -0
- package/src/components/checkbox/COMPONENT.md +41 -10
- package/src/components/checkbox/examples/bulk-select-rows.tsx +54 -0
- package/src/components/checkbox/examples/feature-flags-list.tsx +43 -0
- package/src/components/checkbox/examples/settings-panel.tsx +50 -0
- package/src/components/checkbox/examples/terms-acceptance.tsx +42 -0
- package/src/components/code-block/COMPONENT.md +60 -30
- package/src/components/code-block/examples/api-response-preview.tsx +21 -0
- package/src/components/code-block/examples/config-snippet.tsx +17 -0
- package/src/components/code-block/examples/error-stack.tsx +19 -0
- package/src/components/code-block/examples/minimal.tsx +6 -0
- package/src/components/code-block/examples/tutorial-step.tsx +28 -0
- package/src/components/color-picker/COMPONENT.md +74 -52
- package/src/components/color-picker/examples/brand-kit.tsx +48 -0
- package/src/components/color-picker/examples/controlled-form-field.tsx +40 -0
- package/src/components/color-picker/examples/minimal-popover.tsx +26 -0
- package/src/components/color-picker/examples/product-variant-swatch.tsx +42 -0
- package/src/components/color-picker/examples/theme-accent.tsx +46 -0
- package/src/components/command-menu/COMPONENT.md +33 -5
- package/src/components/command-menu/examples/app-palette.tsx +129 -0
- package/src/components/command-menu/examples/disabled-items.tsx +73 -0
- package/src/components/command-menu/examples/file-search.tsx +98 -0
- package/src/components/command-menu/examples/quick-actions.tsx +74 -0
- package/src/components/data-table/COMPONENT.md +1 -0
- package/src/components/data-table/examples/canonical-orders.tsx +107 -0
- package/src/components/data-table/examples/controlled-sort-and-page.tsx +66 -0
- package/src/components/data-table/examples/infinite-scroll-load-more.tsx +63 -0
- package/src/components/data-table/examples/row-selection.tsx +90 -0
- package/src/components/data-table/examples/sticky-header-first-column.tsx +55 -0
- package/src/components/datepicker/COMPONENT.md +32 -0
- package/src/components/datepicker/examples/birthdate.tsx +43 -0
- package/src/components/datepicker/examples/booking.tsx +71 -0
- package/src/components/datepicker/examples/full-width-form.tsx +59 -0
- package/src/components/datepicker/examples/range-report.tsx +54 -0
- package/src/components/digit-input/COMPONENT.md +36 -4
- package/src/components/digit-input/examples/error-state.tsx +14 -0
- package/src/components/digit-input/examples/otp-login.tsx +17 -0
- package/src/components/digit-input/examples/pin.tsx +11 -0
- package/src/components/digit-input/examples/resend-and-clear.tsx +23 -0
- package/src/components/digit-input/examples/verification-step.tsx +21 -0
- package/src/components/divider/COMPONENT.md +74 -46
- package/src/components/divider/examples/card-splits.tsx +27 -0
- package/src/components/divider/examples/divider-examples.module.css +137 -0
- package/src/components/divider/examples/inset-stack.tsx +33 -0
- package/src/components/divider/examples/line-spacing-column.tsx +27 -0
- package/src/components/divider/examples/list-separators.tsx +20 -0
- package/src/components/divider/examples/section-breaks.tsx +27 -0
- package/src/components/drawer/examples/cart-preview.tsx +55 -0
- package/src/components/drawer/examples/examples-scenarios.module.css +79 -0
- package/src/components/drawer/examples/explicit-panel.tsx +40 -0
- package/src/components/drawer/examples/filters-panel.tsx +53 -0
- package/src/components/drawer/examples/mobile-nav-sheet.tsx +43 -0
- package/src/components/drawer/examples/settings-side.tsx +54 -0
- package/src/components/dropdown/COMPONENT.md +77 -38
- package/src/components/dropdown/examples/account-menu.tsx +52 -0
- package/src/components/dropdown/examples/actions-menu.tsx +37 -0
- package/src/components/dropdown/examples/placement-demo.tsx +59 -0
- package/src/components/dropdown/examples/select-like-list.tsx +31 -0
- package/src/components/file-upload/COMPONENT.md +32 -3
- package/src/components/file-upload/examples/avatar-upload.tsx +54 -0
- package/src/components/file-upload/examples/controlled-list.tsx +103 -0
- package/src/components/file-upload/examples/document-attach.tsx +70 -0
- package/src/components/file-upload/examples/drag-area.tsx +49 -0
- package/src/components/hint/COMPONENT.md +54 -22
- package/src/components/hint/examples/error-hint.tsx +22 -0
- package/src/components/hint/examples/field-help.tsx +27 -0
- package/src/components/hint/examples/inline-tip-form.tsx +44 -0
- package/src/components/hint/examples/success-confirmation.tsx +30 -0
- package/src/components/hint/examples/with-icon.tsx +13 -0
- package/src/components/input/COMPONENT.md +48 -28
- package/src/components/input/examples/checkout-full-width.module.css +8 -0
- package/src/components/input/examples/checkout-full-width.tsx +39 -0
- package/src/components/input/examples/login-email.tsx +33 -0
- package/src/components/input/examples/password-with-hint.tsx +28 -0
- package/src/components/input/examples/search.tsx +30 -0
- package/src/components/kbd/COMPONENT.md +61 -33
- package/src/components/kbd/examples/combination-keys.tsx +22 -0
- package/src/components/kbd/examples/docs-legend.tsx +44 -0
- package/src/components/kbd/examples/inline-doc-hint.tsx +18 -0
- package/src/components/kbd/examples/shortcut-row.tsx +21 -0
- package/src/components/kbd/examples/toolbar-hints.tsx +31 -0
- package/src/components/label/COMPONENT.md +40 -9
- package/src/components/label/examples/accessibility-pattern.tsx +28 -0
- package/src/components/label/examples/grouped-labels.tsx +30 -0
- package/src/components/label/examples/optional-field.tsx +14 -0
- package/src/components/label/examples/required-field.tsx +20 -0
- package/src/components/label/examples/with-icon.tsx +16 -0
- package/src/components/link-button/COMPONENT.md +43 -24
- package/src/components/link-button/examples/disabled.tsx +18 -0
- package/src/components/link-button/examples/external.tsx +18 -0
- package/src/components/link-button/examples/footer-legal.tsx +22 -0
- package/src/components/link-button/examples/inline-text-link.tsx +14 -0
- package/src/components/link-button/examples/navigation-cluster.tsx +24 -0
- package/src/components/modal/COMPONENT.md +72 -1
- package/src/components/modal/examples/canonical-maximal.tsx +43 -0
- package/src/components/modal/examples/examples.module.css +13 -0
- package/src/components/modal/examples/scenario-confirm-delete.tsx +38 -0
- package/src/components/modal/examples/scenario-edit-entity.tsx +50 -0
- package/src/components/modal/examples/scenario-legal-consent.tsx +36 -0
- package/src/components/modal/examples/scenario-multi-field-form.tsx +75 -0
- package/src/components/notification/COMPONENT.md +45 -15
- package/src/components/notification/examples/action-toast.tsx +84 -0
- package/src/components/notification/examples/error-success.tsx +70 -0
- package/src/components/notification/examples/notification-store.tsx +58 -0
- package/src/components/notification/examples/positions.tsx +73 -0
- package/src/components/notification/examples/toast-queue.tsx +63 -0
- package/src/components/pagination/COMPONENT.md +63 -23
- package/src/components/pagination/examples/canonical-composition.tsx +20 -0
- package/src/components/pagination/examples/compact.tsx +32 -0
- package/src/components/pagination/examples/controlled-page.tsx +57 -0
- package/src/components/pagination/examples/full-width-list.tsx +37 -0
- package/src/components/pagination/examples/table-footer.tsx +74 -0
- package/src/components/popover/COMPONENT.md +67 -3
- package/src/components/popover/examples/canonical-panel.tsx +24 -0
- package/src/components/popover/examples/date-trigger.tsx +33 -0
- package/src/components/popover/examples/form-in-popover.tsx +79 -0
- package/src/components/popover/examples/placement.tsx +42 -0
- package/src/components/popover/examples/rich-content.tsx +39 -0
- package/src/components/progress-bar/COMPONENT.md +49 -24
- package/src/components/progress-bar/examples/indeterminate-busy-state.tsx +21 -0
- package/src/components/progress-bar/examples/labeled.tsx +6 -0
- package/src/components/progress-bar/examples/progress-bar-examples.module.css +22 -0
- package/src/components/progress-bar/examples/step-progress.tsx +23 -0
- package/src/components/progress-bar/examples/upload-progress.tsx +27 -0
- package/src/components/progress-bar/examples/wizard-composition.tsx +18 -0
- package/src/components/progress-circle/COMPONENT.md +58 -28
- package/src/components/progress-circle/examples/a11y-label.tsx +32 -0
- package/src/components/progress-circle/examples/composition.tsx +66 -0
- package/src/components/progress-circle/examples/controlled.tsx +58 -0
- package/src/components/progress-circle/examples/dashboard-ring.tsx +36 -0
- package/src/components/progress-circle/examples/max-scale.tsx +61 -0
- package/src/components/radio/COMPONENT.md +49 -21
- package/src/components/radio/examples/notification-channel.tsx +29 -0
- package/src/components/radio/examples/plan-picker.tsx +53 -0
- package/src/components/radio/examples/radio-examples.module.css +31 -0
- package/src/components/radio/examples/settings-group.tsx +30 -0
- package/src/components/radio/examples/shipping-method.tsx +26 -0
- package/src/components/segmented-control/COMPONENT.md +22 -0
- package/src/components/segmented-control/examples/canonical-composition.tsx +70 -0
- package/src/components/segmented-control/examples/catalog-filters.tsx +41 -0
- package/src/components/segmented-control/examples/pricing-toggle.tsx +40 -0
- package/src/components/segmented-control/examples/segmented-examples.module.css +12 -0
- package/src/components/segmented-control/examples/view-mode.tsx +53 -0
- package/src/components/segmented-progress-bar/COMPONENT.md +54 -25
- package/src/components/segmented-progress-bar/examples/distribution-breakdown.tsx +16 -0
- package/src/components/segmented-progress-bar/examples/multi-phase-rollout.tsx +15 -0
- package/src/components/segmented-progress-bar/examples/segment-gaps.tsx +23 -0
- package/src/components/segmented-progress-bar/examples/size-ladder.tsx +19 -0
- package/src/components/segmented-progress-bar/examples/storage-mix.tsx +16 -0
- package/src/components/select/COMPONENT.md +46 -19
- package/src/components/select/examples/01-country.tsx +37 -0
- package/src/components/select/examples/02-controlled.tsx +35 -0
- package/src/components/select/examples/03-groups.tsx +45 -0
- package/src/components/select/examples/04-full-width-form.tsx +51 -0
- package/src/components/select/examples/examples.module.css +37 -0
- package/src/components/slider/COMPONENT.md +30 -14
- package/src/components/slider/examples/01-volume.tsx +17 -0
- package/src/components/slider/examples/02-price-range.tsx +18 -0
- package/src/components/slider/examples/03-controlled.tsx +30 -0
- package/src/components/slider/examples/04-disabled.tsx +25 -0
- package/src/components/slider/examples/examples.module.css +17 -0
- package/src/components/stepper/COMPONENT.md +40 -15
- package/src/components/stepper/examples/01-checkout-horizontal.tsx +32 -0
- package/src/components/stepper/examples/02-onboarding-vertical.tsx +51 -0
- package/src/components/stepper/examples/03-vertical-primitive-rail.tsx +36 -0
- package/src/components/stepper/examples/04-checkout-step-error.tsx +30 -0
- package/src/components/stepper/examples/05-horizontal-primitive.tsx +37 -0
- package/src/components/stepper/examples/examples.module.css +16 -0
- package/src/components/switch/COMPONENT.md +61 -15
- package/src/components/switch/examples/canonical-maximal.tsx +19 -0
- package/src/components/switch/examples/examples.module.css +56 -0
- package/src/components/switch/examples/scenario-billing-annual.tsx +27 -0
- package/src/components/switch/examples/scenario-feature-flag.tsx +30 -0
- package/src/components/switch/examples/scenario-form-consent.tsx +34 -0
- package/src/components/switch/examples/scenario-settings-toggle.tsx +26 -0
- package/src/components/tabs/COMPONENT.md +44 -17
- package/src/components/tabs/examples/01-settings-vertical-rail.tsx +49 -0
- package/src/components/tabs/examples/02-dashboard-subviews.tsx +42 -0
- package/src/components/tabs/examples/03-tab-triggers-with-icons.tsx +49 -0
- package/src/components/tabs/examples/04-long-labels-narrow.tsx +35 -0
- package/src/components/tabs/examples/05-controlled-active-tab.tsx +48 -0
- package/src/components/tabs/examples/examples.module.css +58 -0
- package/src/components/tag/COMPONENT.md +25 -10
- package/src/components/tag/examples/01-filter-chips.tsx +36 -0
- package/src/components/tag/examples/02-removable-selected-values.tsx +33 -0
- package/src/components/tag/examples/03-status-metadata.tsx +24 -0
- package/src/components/tag/examples/04-tag-sizes.tsx +18 -0
- package/src/components/tag/examples/examples.module.css +20 -0
- package/src/components/textarea/COMPONENT.md +41 -19
- package/src/components/textarea/examples/01-support-ticket.tsx +35 -0
- package/src/components/textarea/examples/02-comment.tsx +35 -0
- package/src/components/textarea/examples/03-controlled.tsx +27 -0
- package/src/components/textarea/examples/04-full-width.tsx +23 -0
- package/src/components/textarea/examples/examples.module.css +21 -0
- package/src/components/tooltip/COMPONENT.md +57 -0
- package/src/components/tooltip/examples/canonical-icon-hint.tsx +19 -0
- package/src/components/tooltip/examples/examples.module.css +6 -0
- package/src/components/tooltip/examples/scenario-controlled-programmatic.tsx +32 -0
- package/src/components/tooltip/examples/scenario-delay-provider.tsx +19 -0
- package/src/components/tooltip/examples/scenario-long-content.tsx +22 -0
- package/src/components/tooltip/examples/scenario-side-bottom.tsx +21 -0
- package/src/components/typography/COMPONENT.md +63 -39
- package/src/components/typography/examples/01-article.tsx +45 -0
- package/src/components/typography/examples/02-form-labels-contrast.tsx +61 -0
- package/src/components/typography/examples/03-marketing-hero.tsx +25 -0
- package/src/components/typography/examples/04-reading-scale.tsx +47 -0
- package/src/components/typography/examples/05-inline-emphasis.tsx +30 -0
- package/src/components/typography/examples/examples.module.css +30 -0
- package/src/layout/sidebar/COMPONENT.md +138 -0
- package/src/layout/sidebar/examples/01-app-shell-nav.tsx +79 -0
- package/src/layout/sidebar/examples/02-collapsible-desktop.tsx +64 -0
- package/src/layout/sidebar/examples/03-controlled-state.tsx +72 -0
- package/src/layout/sidebar/examples/04-router-navigation.tsx +70 -0
- package/src/layout/sidebar/examples/05-responsive-behavior.tsx +46 -0
- package/src/layout/sidebar/examples/examples.module.css +67 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LinkButton } from "prime-ui-kit";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Disabled link is a <code>span</code> with <code>role="link"</code> — no <code>href</code>, anchor props are not applied.
|
|
5
|
+
* Do not use for “still focusable”; use <code>aria-disabled</code> on a real control pattern if that is required.
|
|
6
|
+
*/
|
|
7
|
+
export default function LinkButtonDisabledExample() {
|
|
8
|
+
return (
|
|
9
|
+
<div>
|
|
10
|
+
<LinkButton.Root href="/available" size="m">
|
|
11
|
+
Available route
|
|
12
|
+
</LinkButton.Root>
|
|
13
|
+
<LinkButton.Root href="/ignored-when-disabled" size="m" disabled>
|
|
14
|
+
Coming soon
|
|
15
|
+
</LinkButton.Root>
|
|
16
|
+
</div>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LinkButton } from "prime-ui-kit";
|
|
2
|
+
|
|
3
|
+
/** External URL opened in a new tab: always set <code>rel="noopener noreferrer"</code> with <code>target="_blank"</code>. */
|
|
4
|
+
export default function LinkButtonExternalExample() {
|
|
5
|
+
return (
|
|
6
|
+
<p>
|
|
7
|
+
Documentation in a separate tab:{" "}
|
|
8
|
+
<LinkButton.Root
|
|
9
|
+
href="https://example.com/docs"
|
|
10
|
+
target="_blank"
|
|
11
|
+
rel="noopener noreferrer"
|
|
12
|
+
size="m"
|
|
13
|
+
>
|
|
14
|
+
Open help
|
|
15
|
+
</LinkButton.Root>
|
|
16
|
+
</p>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LinkButton } from "prime-ui-kit";
|
|
2
|
+
|
|
3
|
+
/** Dense footer legal row: smaller control tier keeps the strip compact. */
|
|
4
|
+
export default function LinkButtonFooterLegalExample() {
|
|
5
|
+
return (
|
|
6
|
+
<footer>
|
|
7
|
+
<nav aria-label="Legal">
|
|
8
|
+
<LinkButton.Root href="/privacy" size="s">
|
|
9
|
+
Privacy
|
|
10
|
+
</LinkButton.Root>
|
|
11
|
+
<span aria-hidden> · </span>
|
|
12
|
+
<LinkButton.Root href="/terms" size="s">
|
|
13
|
+
Terms
|
|
14
|
+
</LinkButton.Root>
|
|
15
|
+
<span aria-hidden> · </span>
|
|
16
|
+
<LinkButton.Root href="/cookies" size="s">
|
|
17
|
+
Cookie policy
|
|
18
|
+
</LinkButton.Root>
|
|
19
|
+
</nav>
|
|
20
|
+
</footer>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LinkButton } from "prime-ui-kit";
|
|
2
|
+
|
|
3
|
+
/** Inline link inside body copy: same line as surrounding text, default control tier. */
|
|
4
|
+
export default function LinkButtonInlineTextLinkExample() {
|
|
5
|
+
return (
|
|
6
|
+
<p>
|
|
7
|
+
Need more detail? See{" "}
|
|
8
|
+
<LinkButton.Root href="/docs/billing" size="m">
|
|
9
|
+
billing documentation
|
|
10
|
+
</LinkButton.Root>{" "}
|
|
11
|
+
for proration rules.
|
|
12
|
+
</p>
|
|
13
|
+
);
|
|
14
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { LinkButton } from "prime-ui-kit";
|
|
2
|
+
|
|
3
|
+
/** Horizontal cluster of primary nav targets; named <code>nav</code> + text separators (layout can move to page grid/flex). */
|
|
4
|
+
export default function LinkButtonNavigationClusterExample() {
|
|
5
|
+
return (
|
|
6
|
+
<nav aria-label="Product sections">
|
|
7
|
+
<LinkButton.Root href="/product/overview" size="m">
|
|
8
|
+
Overview
|
|
9
|
+
</LinkButton.Root>
|
|
10
|
+
<span aria-hidden> · </span>
|
|
11
|
+
<LinkButton.Root href="/product/pricing" size="m">
|
|
12
|
+
Pricing
|
|
13
|
+
</LinkButton.Root>
|
|
14
|
+
<span aria-hidden> · </span>
|
|
15
|
+
<LinkButton.Root href="/product/security" size="m">
|
|
16
|
+
Security
|
|
17
|
+
</LinkButton.Root>
|
|
18
|
+
<span aria-hidden> · </span>
|
|
19
|
+
<LinkButton.Root href="/product/changelog" size="m">
|
|
20
|
+
Changelog
|
|
21
|
+
</LinkButton.Root>
|
|
22
|
+
</nav>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
@@ -15,7 +15,7 @@ Centered overlay dialog with a portal, backdrop, focus trap, scroll lock, and op
|
|
|
15
15
|
- **`Modal.Root`** — holds open state (controlled via **`open`** / **`onOpenChange`** or uncontrolled via **`defaultOpen`**), and options **`closeOnEscape`** / **`closeOnOverlayClick`**. Renders **`children`** only (no DOM wrapper).
|
|
16
16
|
- **`Modal.Trigger`** — optional; **`React.Children.only`**: pass **exactly one** React element; its **`onClick`** is merged to call **`onOpen`** when the event is not **`defaultPrevented`**.
|
|
17
17
|
- **`Modal.Panel`** — when open: **`createPortal`** (default container `document.body`), fullscreen **`role="presentation"`** overlay, then **`role="dialog"`** with **`aria-modal="true"`**. If **`title`** is set, renders an internal header (**`h2`**, optional description, optional built-in close icon button), wraps **`children`** in an internal body, and optional **`footer`**. Without **`title`**, **`children`** render directly inside the dialog surface—supply **`aria-label`** or **`aria-labelledby`** (and **`aria-describedby`** when needed).
|
|
18
|
-
- **`Modal.Close`** — same single-child contract as **`Trigger`**; merges **`onClick`** to **`onClose`** when not **`defaultPrevented`**. Typical placement: a control inside **`footer
|
|
18
|
+
- **`Modal.Close`** — same single-child contract as **`Trigger`**; merges **`onClick`** to **`onClose`** when not **`defaultPrevented`**. Typical placement: a control inside **`footer`** (for example **Cancel** or **Save** when saving should dismiss the dialog).
|
|
19
19
|
- **Order:** **`Modal.Root`** → **`Modal.Trigger`** (if any) and **`Modal.Panel`** as siblings (or only **`Modal.Panel`** in controlled flows).
|
|
20
20
|
|
|
21
21
|
### Minimal example
|
|
@@ -37,6 +37,77 @@ export function Example() {
|
|
|
37
37
|
}
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
+
### Canonical example (full shell)
|
|
41
|
+
|
|
42
|
+
Use this when you want the complete header row (**`title`**, **`description`**, **`icon`**), a form field in the body, and a **`footer`** where at least one control is wrapped in **`Modal.Close`** (here: **Cancel**). The header still shows the built-in icon close button by default (`showClose`).
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
import { Button, Icon, Input, Modal } from "prime-ui-kit";
|
|
46
|
+
|
|
47
|
+
export function InviteTeammateModal() {
|
|
48
|
+
return (
|
|
49
|
+
<Modal.Root>
|
|
50
|
+
<Modal.Trigger>
|
|
51
|
+
<Button.Root size="m" variant="neutral" mode="stroke">
|
|
52
|
+
Open workspace invite
|
|
53
|
+
</Button.Root>
|
|
54
|
+
</Modal.Trigger>
|
|
55
|
+
<Modal.Panel
|
|
56
|
+
title="Invite teammate"
|
|
57
|
+
description="We will send one invitation email. The recipient can accept or decline."
|
|
58
|
+
icon={<Icon name="field.email" tone="subtle" />}
|
|
59
|
+
footer={
|
|
60
|
+
<>
|
|
61
|
+
<Modal.Close>
|
|
62
|
+
<Button.Root size="m" variant="neutral" mode="stroke">
|
|
63
|
+
Cancel
|
|
64
|
+
</Button.Root>
|
|
65
|
+
</Modal.Close>
|
|
66
|
+
<Button.Root size="m" variant="primary" type="button">
|
|
67
|
+
Send invite
|
|
68
|
+
</Button.Root>
|
|
69
|
+
</>
|
|
70
|
+
}
|
|
71
|
+
>
|
|
72
|
+
<Input.Root label="Email address" size="m" hint="Work email preferred">
|
|
73
|
+
<Input.Wrapper>
|
|
74
|
+
<Input.Field autoComplete="email" placeholder="name@company.com" type="email" />
|
|
75
|
+
</Input.Wrapper>
|
|
76
|
+
</Input.Root>
|
|
77
|
+
</Modal.Panel>
|
|
78
|
+
</Modal.Root>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Source of truth (stays in sync with the snippet above): `examples/canonical-maximal.tsx`.
|
|
84
|
+
|
|
85
|
+
### Examples (source)
|
|
86
|
+
|
|
87
|
+
Runnable demos live next to this file (workspace imports use `@/`; published consumers use `prime-ui-kit`):
|
|
88
|
+
|
|
89
|
+
| File | Intent |
|
|
90
|
+
|------|--------|
|
|
91
|
+
| `examples/canonical-maximal.tsx` | Full shell: title, description, icon, one field, footer with **`Modal.Close`** + primary |
|
|
92
|
+
| `examples/scenario-confirm-delete.tsx` | Destructive confirmation; **`variant="error"`** on primary action |
|
|
93
|
+
| `examples/scenario-edit-entity.tsx` | Rename / edit field; **Save** wrapped in **`Modal.Close`** to dismiss after save |
|
|
94
|
+
| `examples/scenario-legal-consent.tsx` | Terms-style copy; **`closeOnOverlayClick={false}`**; single **I agree** closes via **`Modal.Close`** |
|
|
95
|
+
| `examples/scenario-multi-field-form.tsx` | **`Input`**, **`Select`**, **`Textarea`** in the body; submit button uses **`form`** |
|
|
96
|
+
|
|
97
|
+
Playground composition demos (Russian copy, broader variants): `playground/snippets/modal/composition.tsx`.
|
|
98
|
+
|
|
99
|
+
### Extended usage
|
|
100
|
+
|
|
101
|
+
- **Controlled dialogs:** omit **`Modal.Trigger`**; pass **`open`** and **`onOpenChange`** to **`Modal.Root`**. Keep **`Modal.Panel`** as a sibling; it portals only when **`open`** is true.
|
|
102
|
+
- **Dismiss on primary action:** wrap the confirming button in **`Modal.Close`** when the action should close the dialog immediately (see **edit entity** example). If you must await an API call, keep the dialog open until success, then call **`onOpenChange(false)`** from the parent.
|
|
103
|
+
- **Consent / wizard steps:** set **`closeOnOverlayClick={false}`** (and optionally **`closeOnEscape={false}`**) when accidental dismiss would lose legal or multi-step state; still provide an explicit **`Modal.Close`** (or header close) path where appropriate.
|
|
104
|
+
- **Long body content:** constrain scroll to the body via **`bodyStyle`** / **`bodyClassName`** (see `playground/snippets/modal/features.tsx`); overlay scroll lock remains active.
|
|
105
|
+
- **Headless dialog surface:** omit **`title`** on **`Modal.Panel`** and supply **`aria-label`** or **`aria-labelledby`** / **`aria-describedby`** yourself; inner body wrapper is not used, so **`bodyClassName`** / **`bodyStyle`** do not apply.
|
|
106
|
+
|
|
107
|
+
### Note for LLMs
|
|
108
|
+
|
|
109
|
+
When generating **Modal** markup for this library: (1) **`Modal.Trigger`** and **`Modal.Close`** each require **exactly one** child element—no fragments or multiple nodes. (2) Prefer **`Modal.Panel`** with **`title`** (and usually **`description`**) so **`aria-labelledby`** / **`aria-describedby`** are wired automatically. (3) Put **Cancel** / **Dismiss** in **`footer`** inside **`Modal.Close`** unless the design relies only on the header icon. (4) Do not wrap kit components to restyle them; use **`size`**, **`variant`**, **`mode`**, and documented props only. (5) For copy-paste starting points, mirror **`examples/canonical-maximal.tsx`** first, then adapt from the scenario files.
|
|
110
|
+
|
|
40
111
|
## Rules
|
|
41
112
|
|
|
42
113
|
- **Shell tokens:** overlay padding, panel padding, gaps between header/body/footer, and max width use **`--prime-sys-size-modal-*`** (semantic `size.modal` in `tokens/semantic.ts`). Title/description text tiers may still follow control typography tokens where the chrome matches **`size`** `m`.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Button } from "@/components/button/Button";
|
|
2
|
+
import { Input } from "@/components/input/Input";
|
|
3
|
+
import { Modal } from "@/components/modal/Modal";
|
|
4
|
+
import { Icon } from "@/icons";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Maximal shell: `title`, `description`, `icon`, body field, `footer` with `Modal.Close` plus primary action.
|
|
8
|
+
* Copy this structure when you need the full header/body/footer pattern.
|
|
9
|
+
*/
|
|
10
|
+
export default function ModalCanonicalMaximalExample() {
|
|
11
|
+
return (
|
|
12
|
+
<Modal.Root>
|
|
13
|
+
<Modal.Trigger>
|
|
14
|
+
<Button.Root size="m" variant="neutral" mode="stroke">
|
|
15
|
+
Open workspace invite
|
|
16
|
+
</Button.Root>
|
|
17
|
+
</Modal.Trigger>
|
|
18
|
+
<Modal.Panel
|
|
19
|
+
description="We will send one invitation email. The recipient can accept or decline."
|
|
20
|
+
footer={
|
|
21
|
+
<>
|
|
22
|
+
<Modal.Close>
|
|
23
|
+
<Button.Root size="m" variant="neutral" mode="stroke">
|
|
24
|
+
Cancel
|
|
25
|
+
</Button.Root>
|
|
26
|
+
</Modal.Close>
|
|
27
|
+
<Button.Root size="m" variant="primary" type="button">
|
|
28
|
+
Send invite
|
|
29
|
+
</Button.Root>
|
|
30
|
+
</>
|
|
31
|
+
}
|
|
32
|
+
icon={<Icon name="field.email" tone="subtle" />}
|
|
33
|
+
title="Invite teammate"
|
|
34
|
+
>
|
|
35
|
+
<Input.Root label="Email address" size="m" hint="Work email preferred">
|
|
36
|
+
<Input.Wrapper>
|
|
37
|
+
<Input.Field autoComplete="email" placeholder="name@company.com" type="email" />
|
|
38
|
+
</Input.Wrapper>
|
|
39
|
+
</Input.Root>
|
|
40
|
+
</Modal.Panel>
|
|
41
|
+
</Modal.Root>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Button } from "@/components/button/Button";
|
|
2
|
+
import { Modal } from "@/components/modal/Modal";
|
|
3
|
+
import { Typography } from "@/components/typography/Typography";
|
|
4
|
+
import { Icon } from "@/icons";
|
|
5
|
+
|
|
6
|
+
/** Blocking confirmation before destructive action; dismiss via header, overlay, Escape, or Cancel. */
|
|
7
|
+
export default function ModalConfirmDeleteExample() {
|
|
8
|
+
return (
|
|
9
|
+
<Modal.Root>
|
|
10
|
+
<Modal.Trigger>
|
|
11
|
+
<Button.Root size="m" variant="error" mode="stroke">
|
|
12
|
+
Delete project
|
|
13
|
+
</Button.Root>
|
|
14
|
+
</Modal.Trigger>
|
|
15
|
+
<Modal.Panel
|
|
16
|
+
description="This removes the project, its boards, and history. Connected integrations will stop receiving events."
|
|
17
|
+
footer={
|
|
18
|
+
<>
|
|
19
|
+
<Modal.Close>
|
|
20
|
+
<Button.Root size="m" variant="neutral" mode="stroke">
|
|
21
|
+
Cancel
|
|
22
|
+
</Button.Root>
|
|
23
|
+
</Modal.Close>
|
|
24
|
+
<Button.Root size="m" variant="error" type="button">
|
|
25
|
+
Delete permanently
|
|
26
|
+
</Button.Root>
|
|
27
|
+
</>
|
|
28
|
+
}
|
|
29
|
+
icon={<Icon name="action.close" tone="subtle" />}
|
|
30
|
+
title="Delete “Northwind rollout”?"
|
|
31
|
+
>
|
|
32
|
+
<Typography.Root as="p" variant="body-default">
|
|
33
|
+
You can export an archive first from Project settings. This action cannot be undone.
|
|
34
|
+
</Typography.Root>
|
|
35
|
+
</Modal.Panel>
|
|
36
|
+
</Modal.Root>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
import { Button } from "@/components/button/Button";
|
|
4
|
+
import { Input } from "@/components/input/Input";
|
|
5
|
+
import { Modal } from "@/components/modal/Modal";
|
|
6
|
+
import { Icon } from "@/icons";
|
|
7
|
+
|
|
8
|
+
/** Short edit flow: pre-filled field, save keeps the dialog open only if you handle state (here: close on save click). */
|
|
9
|
+
export default function ModalEditEntityExample() {
|
|
10
|
+
const [name, setName] = React.useState("Acme Corp");
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<Modal.Root>
|
|
14
|
+
<Modal.Trigger>
|
|
15
|
+
<Button.Root size="m" variant="neutral" mode="stroke">
|
|
16
|
+
Rename account
|
|
17
|
+
</Button.Root>
|
|
18
|
+
</Modal.Trigger>
|
|
19
|
+
<Modal.Panel
|
|
20
|
+
description="The new name appears on invoices and in the member directory."
|
|
21
|
+
footer={
|
|
22
|
+
<>
|
|
23
|
+
<Modal.Close>
|
|
24
|
+
<Button.Root size="m" variant="neutral" mode="stroke">
|
|
25
|
+
Cancel
|
|
26
|
+
</Button.Root>
|
|
27
|
+
</Modal.Close>
|
|
28
|
+
<Modal.Close>
|
|
29
|
+
<Button.Root size="m" variant="primary" type="button">
|
|
30
|
+
Save changes
|
|
31
|
+
</Button.Root>
|
|
32
|
+
</Modal.Close>
|
|
33
|
+
</>
|
|
34
|
+
}
|
|
35
|
+
icon={<Icon name="nav.layoutGrid" tone="subtle" />}
|
|
36
|
+
title="Edit account name"
|
|
37
|
+
>
|
|
38
|
+
<Input.Root label="Account name" size="m">
|
|
39
|
+
<Input.Wrapper>
|
|
40
|
+
<Input.Field
|
|
41
|
+
onChange={(e) => setName(e.target.value)}
|
|
42
|
+
value={name}
|
|
43
|
+
autoComplete="organization"
|
|
44
|
+
/>
|
|
45
|
+
</Input.Wrapper>
|
|
46
|
+
</Input.Root>
|
|
47
|
+
</Modal.Panel>
|
|
48
|
+
</Modal.Root>
|
|
49
|
+
);
|
|
50
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Button } from "@/components/button/Button";
|
|
2
|
+
import { Modal } from "@/components/modal/Modal";
|
|
3
|
+
import { Typography } from "@/components/typography/Typography";
|
|
4
|
+
import { Icon } from "@/icons";
|
|
5
|
+
|
|
6
|
+
/** Disclosure + explicit accept; primary action is wrapped in `Modal.Close` so accepting dismisses the dialog. */
|
|
7
|
+
export default function ModalLegalConsentExample() {
|
|
8
|
+
return (
|
|
9
|
+
<Modal.Root closeOnOverlayClick={false}>
|
|
10
|
+
<Modal.Trigger>
|
|
11
|
+
<Button.Root size="m" variant="neutral" mode="stroke">
|
|
12
|
+
Review terms
|
|
13
|
+
</Button.Root>
|
|
14
|
+
</Modal.Trigger>
|
|
15
|
+
<Modal.Panel
|
|
16
|
+
description="Please read the following before continuing to use the service."
|
|
17
|
+
footer={
|
|
18
|
+
<Modal.Close>
|
|
19
|
+
<Button.Root size="m" variant="primary" type="button">
|
|
20
|
+
I agree
|
|
21
|
+
</Button.Root>
|
|
22
|
+
</Modal.Close>
|
|
23
|
+
}
|
|
24
|
+
icon={<Icon name="status.locked" tone="subtle" />}
|
|
25
|
+
title="Terms and data processing"
|
|
26
|
+
>
|
|
27
|
+
<Typography.Root as="p" variant="body-default">
|
|
28
|
+
By continuing, you agree to our Terms of Service and acknowledge our Privacy Policy. We
|
|
29
|
+
process account data to provide the product, send essential notices, and improve
|
|
30
|
+
reliability. You may withdraw consent where applicable by contacting support or adjusting
|
|
31
|
+
settings.
|
|
32
|
+
</Typography.Root>
|
|
33
|
+
</Modal.Panel>
|
|
34
|
+
</Modal.Root>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
import { Button } from "@/components/button/Button";
|
|
4
|
+
import { Input } from "@/components/input/Input";
|
|
5
|
+
import { Label } from "@/components/label/Label";
|
|
6
|
+
import { Modal } from "@/components/modal/Modal";
|
|
7
|
+
import { Select } from "@/components/select/Select";
|
|
8
|
+
import { Textarea } from "@/components/textarea/Textarea";
|
|
9
|
+
import { Icon } from "@/icons";
|
|
10
|
+
|
|
11
|
+
import styles from "./examples.module.css";
|
|
12
|
+
|
|
13
|
+
/** Several fields in the modal body; footer mirrors the canonical pattern (cancel + submit). */
|
|
14
|
+
export default function ModalMultiFieldFormExample() {
|
|
15
|
+
const messageId = React.useId();
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<Modal.Root>
|
|
19
|
+
<Modal.Trigger>
|
|
20
|
+
<Button.Root size="m" variant="neutral" mode="stroke">
|
|
21
|
+
New support ticket
|
|
22
|
+
</Button.Root>
|
|
23
|
+
</Modal.Trigger>
|
|
24
|
+
<Modal.Panel
|
|
25
|
+
description="Include enough detail for our team to reproduce or route the issue."
|
|
26
|
+
footer={
|
|
27
|
+
<>
|
|
28
|
+
<Modal.Close>
|
|
29
|
+
<Button.Root size="m" variant="neutral" mode="stroke">
|
|
30
|
+
Cancel
|
|
31
|
+
</Button.Root>
|
|
32
|
+
</Modal.Close>
|
|
33
|
+
<Button.Root size="m" variant="primary" type="submit" form="modal-ticket-form">
|
|
34
|
+
Submit ticket
|
|
35
|
+
</Button.Root>
|
|
36
|
+
</>
|
|
37
|
+
}
|
|
38
|
+
icon={<Icon name="nav.itemDot" tone="subtle" />}
|
|
39
|
+
title="Contact support"
|
|
40
|
+
>
|
|
41
|
+
<form
|
|
42
|
+
className={styles.fieldStack}
|
|
43
|
+
id="modal-ticket-form"
|
|
44
|
+
onSubmit={(e) => e.preventDefault()}
|
|
45
|
+
>
|
|
46
|
+
<Input.Root label="Subject" size="m">
|
|
47
|
+
<Input.Wrapper>
|
|
48
|
+
<Input.Field name="subject" placeholder="Short summary" />
|
|
49
|
+
</Input.Wrapper>
|
|
50
|
+
</Input.Root>
|
|
51
|
+
<Select.Root placeholder="Area" size="m">
|
|
52
|
+
<Select.Trigger>
|
|
53
|
+
<Select.Value />
|
|
54
|
+
</Select.Trigger>
|
|
55
|
+
<Select.Content>
|
|
56
|
+
<Select.Item value="billing">Billing</Select.Item>
|
|
57
|
+
<Select.Item value="product">Product bug</Select.Item>
|
|
58
|
+
<Select.Item value="account">Account access</Select.Item>
|
|
59
|
+
</Select.Content>
|
|
60
|
+
</Select.Root>
|
|
61
|
+
<div className={styles.labeledControl}>
|
|
62
|
+
<Label.Root htmlFor={messageId} size="m">
|
|
63
|
+
Message
|
|
64
|
+
</Label.Root>
|
|
65
|
+
<Textarea.Root
|
|
66
|
+
id={messageId}
|
|
67
|
+
placeholder="Steps, expected result, actual result"
|
|
68
|
+
size="m"
|
|
69
|
+
/>
|
|
70
|
+
</div>
|
|
71
|
+
</form>
|
|
72
|
+
</Modal.Panel>
|
|
73
|
+
</Modal.Root>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
@@ -1,23 +1,42 @@
|
|
|
1
1
|
# Notification
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Default `size`:** use **`m`** for the notification card size unless the surface explicitly needs **`s`** or **`l`**.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Canonical
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- **`NotificationProvider`** — wraps the tree that calls hooks; mounts a **portal** with fixed **zones** per viewport corner/edge. Each **`notify`** item is grouped by **`position`** and **`type`** into separate stacks (**`max`** per stack, default **`5`**).
|
|
8
|
+
- **`useNotifications`** — **`notify`**, **`dismiss`**, **`dismissAll`** only; throws outside the provider.
|
|
9
|
+
- **`useNotificationStore`** — same methods plus **`items`** (**`NotificationRecord[]`**, active only, no exit-animation rows).
|
|
10
|
+
- **`NotificationCard`** — **`article`** with live region semantics, icon, title, optional badge/description/**`action`** (neutral stroke **`Button.Root`**), optional close, progress track unless **`persistent`**.
|
|
11
|
+
- **Stacks** — Framer Motion list; hover expands stack and **pauses** countdowns until collapse. **`error`** / **`warning`** → **`role="alert"`**, **`aria-live="assertive"`**; **`success`** / **`info`** → **`status`**, **`polite`**.
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
- **Use** when the message should appear above the page chrome and auto-dismiss or offer a single secondary action.
|
|
11
|
-
- **Use** `useNotificationStore` when the UI must read `items` (e.g. custom lists or bulk dismiss).
|
|
12
|
-
- **Use** `NotificationCard` alone only for static previews or fully custom wiring; live toasts go through the provider and `notify`.
|
|
13
|
-
- **Do not use** for errors that require a blocking decision, long forms, or primary workflow inside the toast—prefer [Modal](../modal/COMPONENT.md), [Drawer](../drawer/COMPONENT.md), or [Banner](../banner/COMPONENT.md).
|
|
14
|
-
- **Do not use** multiple nested `NotificationProvider`s unless you intentionally want several portals and duplicate zones.
|
|
13
|
+
## Extended
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
### About
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
17
|
+
Toast notifications for short, non-blocking feedback after actions (save, send, job finished) when focus must not be trapped.
|
|
18
|
+
|
|
19
|
+
- **When to use** — confirmations or lightweight errors that do not need a blocking dialog.
|
|
20
|
+
- **When to use** — one optional secondary **`action`** (e.g. undo, open detail) alongside auto-dismiss.
|
|
21
|
+
- **When to use** — **`useNotificationStore`** when the UI must reflect **`items`** (counters, bulk dismiss, custom chrome).
|
|
22
|
+
- **When not to use** — blocking decisions, long forms, or primary workflow inside the toast; prefer [Modal](../modal/COMPONENT.md), [Drawer](../drawer/COMPONENT.md), or [Banner](../banner/COMPONENT.md).
|
|
23
|
+
- **When not to use** — multiple nested **`NotificationProvider`**s unless you intentionally want several portals.
|
|
24
|
+
|
|
25
|
+
### Composition
|
|
26
|
+
|
|
27
|
+
- **`NotificationProvider`** → context + **`NotificationToaster`** (portal, zones, **`NotificationStack`** per **`position`** + **`type`**).
|
|
28
|
+
- **`NotificationStack` / `NotificationStackItem`** (internal) — ordered list; peek/collapse behavior and **`paused`** passed to **`NotificationCard`**.
|
|
29
|
+
- **`NotificationCard`** — public for static previews or fully custom wiring; live toasts should use **`notify`**.
|
|
30
|
+
|
|
31
|
+
### Scenarios (see `examples/`)
|
|
32
|
+
|
|
33
|
+
| Scenario | Approach |
|
|
34
|
+
|----------|----------|
|
|
35
|
+
| Toast queue / stack cap | Same **`position`** + **`type`** share one stack; **`max`** drops oldest; stagger **`notify`** with timeouts. Hover expands stack and pauses timers. → [`examples/toast-queue.tsx`](examples/toast-queue.tsx) |
|
|
36
|
+
| Positions | Set **`NotificationProvider`** default **`position`** or pass **`position`** per **`notify`**. Six anchors: **`top-*`** / **`bottom-*`** × **`left` \| `center` \| `right`**. → [`examples/positions.tsx`](examples/positions.tsx) |
|
|
37
|
+
| Action button | **`action: { label, onClick }`** — rendered as kit **`Button.Root`** (neutral stroke). → [`examples/action-toast.tsx`](examples/action-toast.tsx) |
|
|
38
|
+
| Error / success semantics | **`type: "error"`** / **`"warning"`** vs **`"success"`** / **`"info"`** — icons, grouping, and live-region assertiveness differ. → [`examples/error-success.tsx`](examples/error-success.tsx) |
|
|
39
|
+
| Reading the store | **`useNotificationStore`** — **`items`**, **`notify`**, **`dismiss`**, **`dismissAll`** for UI tied to queue length. → [`examples/notification-store.tsx`](examples/notification-store.tsx) |
|
|
21
40
|
|
|
22
41
|
### Minimal example
|
|
23
42
|
|
|
@@ -42,11 +61,11 @@ function Notifier() {
|
|
|
42
61
|
}
|
|
43
62
|
```
|
|
44
63
|
|
|
45
|
-
|
|
64
|
+
### Rules
|
|
46
65
|
|
|
47
66
|
- Call **`useNotifications`** or **`useNotificationStore`** only under **`NotificationProvider`**; both hooks throw if context is missing.
|
|
48
67
|
- **`notify`** returns a string **`id`**; pass it to **`dismiss`** or use **`dismissAll`** for every active toast.
|
|
49
|
-
- **`useNotificationStore`** exposes the same methods plus **`items`**:
|
|
68
|
+
- **`useNotificationStore`** exposes the same methods plus **`items`**: **`NotificationRecord[]`** of non-dismissing entries only (no internal closing-animation flag).
|
|
50
69
|
- Options passed to **`notify`** are merged with defaults: **`size`** `"m"`, **`position`** from the provider, **`duration`** `5000` ms, **`persistent`** `false`, **`closable`** `true`.
|
|
51
70
|
- With **`persistent`**, there is no auto-dismiss, no progress bar, and duration does not drive closing; users or **`dismiss`** / **`dismissAll`** must close the card. Visually, **`persistent`** also turns on the accent-tinted **border** and (unless **`prefers-reduced-motion`**) the **`notification-glow`** shadow pulse — default **`notify()`** uses **`persistent: false`**, so live toasts look flatter unless you opt in.
|
|
52
71
|
- If **`duration <= 0`**, the countdown effect does not run—time-based auto-dismiss does not occur; close via **`dismiss`** or the close button when **`closable`**.
|
|
@@ -118,3 +137,14 @@ Same **`notify`**, **`dismiss`**, and **`dismissAll`** as above, plus **`items`*
|
|
|
118
137
|
- [Button](../button/COMPONENT.md)
|
|
119
138
|
- [Drawer](../drawer/COMPONENT.md)
|
|
120
139
|
- [Modal](../modal/COMPONENT.md)
|
|
140
|
+
|
|
141
|
+
## LLM note
|
|
142
|
+
|
|
143
|
+
- Imports: **`NotificationProvider`**, **`useNotifications`**, **`useNotificationStore`**, **`NotificationCard`**, types **`NotificationOptions`**, **`NotificationRecord`**, **`NotificationPosition`**, **`NotificationType`**, **`NotificationSize`**, **`NotificationAction`** from **`"prime-ui-kit"`**.
|
|
144
|
+
- **`notify`** requires **`type`** and **`title`**; optional **`description`**, **`size`**, **`position`**, **`duration`**, **`persistent`**, **`icon`**, **`badge`**, **`closable`**, **`action`**.
|
|
145
|
+
- **`action`** is not a React node — it is **`{ label: string; onClick: () => void }`**; the kit renders **`Button.Root`** (neutral stroke) inside the card.
|
|
146
|
+
- Stack key = **`position` + `type`**; **`max`** applies per stack, not globally.
|
|
147
|
+
- **`persistent: true`** removes the progress bar and auto-dismiss; closing is manual or via **`dismiss`** / **`dismissAll`**.
|
|
148
|
+
- **`duration <= 0`** disables timer-based dismissal (still closable if **`closable`**).
|
|
149
|
+
- Do not nest **`NotificationProvider`** without a reason; one app root is typical.
|
|
150
|
+
- For static **`NotificationCard`**, build a full **`NotificationRecord`** (including **`id`**, **`position`**, **`size`**, **`duration`**, **`persistent`**, **`closable`**, **`createdAt`**) and wire **`onDismiss`** yourself.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Button,
|
|
3
|
+
LinkButton,
|
|
4
|
+
NotificationProvider,
|
|
5
|
+
Typography,
|
|
6
|
+
useNotifications,
|
|
7
|
+
} from "prime-ui-kit";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* action uses kit Button.Root inside the card; page triggers may use Button or LinkButton.
|
|
11
|
+
*/
|
|
12
|
+
function ActionToastDemo() {
|
|
13
|
+
const { notify } = useNotifications();
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<div
|
|
17
|
+
style={{
|
|
18
|
+
display: "flex",
|
|
19
|
+
flexDirection: "column",
|
|
20
|
+
gap: "var(--prime-sys-spacing-m)",
|
|
21
|
+
alignItems: "flex-start",
|
|
22
|
+
}}
|
|
23
|
+
>
|
|
24
|
+
<Typography.Root variant="body-small" tone="muted">
|
|
25
|
+
Secondary action in the toast is always neutral stroke Button.Root from the kit.
|
|
26
|
+
</Typography.Root>
|
|
27
|
+
<div
|
|
28
|
+
style={{
|
|
29
|
+
display: "flex",
|
|
30
|
+
flexWrap: "wrap",
|
|
31
|
+
gap: "var(--prime-sys-spacing-s)",
|
|
32
|
+
alignItems: "center",
|
|
33
|
+
}}
|
|
34
|
+
>
|
|
35
|
+
<Button.Root
|
|
36
|
+
type="button"
|
|
37
|
+
variant="primary"
|
|
38
|
+
mode="filled"
|
|
39
|
+
size="m"
|
|
40
|
+
onClick={() =>
|
|
41
|
+
notify({
|
|
42
|
+
type: "info",
|
|
43
|
+
title: "Export ready",
|
|
44
|
+
description: "Your CSV is prepared.",
|
|
45
|
+
action: {
|
|
46
|
+
label: "Download",
|
|
47
|
+
onClick: () =>
|
|
48
|
+
notify({
|
|
49
|
+
type: "success",
|
|
50
|
+
title: "Started",
|
|
51
|
+
description: "In a real app, the file would download.",
|
|
52
|
+
}),
|
|
53
|
+
},
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
>
|
|
57
|
+
Toast with action
|
|
58
|
+
</Button.Root>
|
|
59
|
+
<LinkButton.Root
|
|
60
|
+
href="#"
|
|
61
|
+
size="m"
|
|
62
|
+
onClick={(event) => {
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
notify({
|
|
65
|
+
type: "info",
|
|
66
|
+
title: "From LinkButton",
|
|
67
|
+
description: "Any control can call notify under the provider.",
|
|
68
|
+
});
|
|
69
|
+
}}
|
|
70
|
+
>
|
|
71
|
+
Fire via LinkButton
|
|
72
|
+
</LinkButton.Root>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export default function ActionToastExample() {
|
|
79
|
+
return (
|
|
80
|
+
<NotificationProvider>
|
|
81
|
+
<ActionToastDemo />
|
|
82
|
+
</NotificationProvider>
|
|
83
|
+
);
|
|
84
|
+
}
|