@passui/react 0.1.17 → 0.1.19
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 +102 -1
- package/dist/types/src/appearance/index.d.ts +2 -0
- package/dist/types/src/appearance/platform.d.ts +9 -0
- package/dist/types/src/appearance/theme.d.ts +71 -0
- package/dist/types/src/components/ambient/ambient.d.ts +12 -0
- package/dist/types/src/components/ambient/index.d.ts +1 -0
- package/dist/types/src/components/button/button-styles.d.ts +12 -0
- package/dist/types/src/components/button/button.d.ts +30 -0
- package/dist/types/src/components/button/icon-button.d.ts +10 -0
- package/dist/types/src/components/button/pending-spinner.d.ts +5 -0
- package/dist/types/src/components/button/use-pending-indicator.d.ts +2 -0
- package/dist/types/src/components/chip/chip.d.ts +7 -0
- package/dist/types/src/components/compact-date-picker/calendar-month.d.ts +25 -0
- package/dist/types/src/components/compact-date-picker/compact-date-picker.d.ts +27 -0
- package/dist/types/src/components/compact-time-picker/compact-time-picker.d.ts +26 -0
- package/dist/types/src/components/compact-time-picker/time-value.d.ts +18 -0
- package/dist/types/src/components/content-view/content-view.d.ts +48 -0
- package/dist/types/src/components/content-view/index.d.ts +1 -0
- package/dist/types/src/components/context-menu/conceal-menu-source.d.ts +2 -0
- package/dist/types/src/components/context-menu/context-menu-host.d.ts +2 -0
- package/dist/types/src/components/context-menu/context-menu-store.d.ts +57 -0
- package/dist/types/src/components/context-menu/menu-navigation.d.ts +6 -0
- package/dist/types/src/components/context-menu/menu-position.d.ts +21 -0
- package/dist/types/src/components/context-menu/menu-reveal.d.ts +22 -0
- package/dist/types/src/components/context-menu/use-context-menu.d.ts +14 -0
- package/dist/types/src/components/conversation/conversation.d.ts +43 -0
- package/dist/types/src/components/conversation/index.d.ts +1 -0
- package/dist/types/src/components/date-picker/date-picker.d.ts +16 -0
- package/dist/types/src/components/date-picker/date-value.d.ts +2 -0
- package/dist/types/src/components/dialog/dialog-host.d.ts +6 -0
- package/dist/types/src/components/dialog/dialog-store.d.ts +21 -0
- package/dist/types/src/components/dialog/dialog.d.ts +30 -0
- package/dist/types/src/components/dialog/index.d.ts +1 -0
- package/dist/types/src/components/disclosure-group/disclosure-group.d.ts +13 -0
- package/dist/types/src/components/divider/divider.d.ts +9 -0
- package/dist/types/src/components/inline-disclosure/inline-disclosure.d.ts +15 -0
- package/dist/types/src/components/labeled-content/labeled-content.d.ts +19 -0
- package/dist/types/src/components/locale-switcher/index.d.ts +1 -0
- package/dist/types/src/components/locale-switcher/locale-switcher.d.ts +10 -0
- package/dist/types/src/components/menu/menu.d.ts +16 -0
- package/dist/types/src/components/picker/picker-trigger.d.ts +2 -0
- package/dist/types/src/components/picker/picker.d.ts +37 -0
- package/dist/types/src/components/popover/popover-fit.d.ts +21 -0
- package/dist/types/src/components/popover/popover.d.ts +14 -0
- package/dist/types/src/components/profile-image/profile-image.d.ts +4 -0
- package/dist/types/src/components/progress-view/progress-view.d.ts +13 -0
- package/dist/types/src/components/search-field/search-field.d.ts +2 -0
- package/dist/types/src/components/search-list/search-list.d.ts +19 -0
- package/dist/types/src/components/section/section.d.ts +15 -0
- package/dist/types/src/components/secure-field/secure-field.d.ts +4 -0
- package/dist/types/src/components/segmented-control/segmented-control.d.ts +20 -0
- package/dist/types/src/components/sheet/modal-environment.d.ts +2 -0
- package/dist/types/src/components/sheet/sheet-portal.d.ts +5 -0
- package/dist/types/src/components/sheet/sheet.d.ts +21 -0
- package/dist/types/src/components/sheet/use-sheet-focus.d.ts +3 -0
- package/dist/types/src/components/sidebar/sidebar.d.ts +18 -0
- package/dist/types/src/components/slider/slider.d.ts +14 -0
- package/dist/types/src/components/stat-tile/index.d.ts +1 -0
- package/dist/types/src/components/stat-tile/stat-tile.d.ts +15 -0
- package/dist/types/src/components/status-indicator/status-indicator.d.ts +14 -0
- package/dist/types/src/components/stepper/stepper.d.ts +19 -0
- package/dist/types/src/components/swatch-picker/swatch-picker.d.ts +17 -0
- package/dist/types/src/components/tab-bar/tab-bar.d.ts +40 -0
- package/dist/types/src/components/tab-view/tab-view.d.ts +24 -0
- package/dist/types/src/components/table/table.d.ts +10 -0
- package/dist/types/src/components/text-editor/text-editor.d.ts +2 -0
- package/dist/types/src/components/text-field/text-field.d.ts +18 -0
- package/dist/types/src/components/toast/toast-store.d.ts +47 -0
- package/dist/types/src/components/toast/toaster.d.ts +10 -0
- package/dist/types/src/components/toggle/toggle.d.ts +17 -0
- package/dist/types/src/components/tooltip/tooltip-host.d.ts +6 -0
- package/dist/types/src/components/view-controller/index.d.ts +1 -0
- package/dist/types/src/components/view-controller/view-controller.d.ts +21 -0
- package/dist/types/src/hooks/scroll/minimize-decision.d.ts +2 -0
- package/dist/types/src/hooks/use-anchored-placement.d.ts +7 -0
- package/dist/types/src/hooks/use-dismiss.d.ts +9 -0
- package/dist/types/src/hooks/use-floating-dismiss.d.ts +3 -0
- package/dist/types/src/hooks/use-media-query.d.ts +21 -0
- package/dist/types/src/hooks/use-minimize-on-scroll.d.ts +6 -0
- package/dist/types/src/hooks/use-visual-viewport.d.ts +4 -0
- package/dist/types/src/hooks/viewport/types.d.ts +19 -0
- package/dist/types/src/hooks/viewport/viewport-metrics.d.ts +3 -0
- package/dist/types/src/icons/icons.d.ts +612 -0
- package/dist/types/src/index.d.ts +58 -0
- package/dist/types/src/lib/anchored-placement.d.ts +39 -0
- package/dist/types/src/lib/class-names.d.ts +2 -0
- package/dist/types/src/lib/clipboard.d.ts +6 -0
- package/dist/types/src/lib/date.d.ts +50 -0
- package/dist/types/src/lib/floating-layers.d.ts +8 -0
- package/dist/types/src/lib/haptics.d.ts +8 -0
- package/dist/types/src/lib/language.d.ts +4 -0
- package/dist/types/src/lib/range-value.d.ts +4 -0
- package/dist/types/src/lib/screen-edges.d.ts +12 -0
- package/dist/types/src/lib/shapes.d.ts +17 -0
- package/dist/types/src/motion/transitions.d.ts +97 -0
- package/dist/types/src/tokens.d.ts +1 -0
- package/package.json +192 -40
- package/src/appearance/platform.tsx +10 -47
- package/src/appearance/theme.tsx +42 -142
- package/src/components/ambient/ambient.tsx +2 -10
- package/src/components/button/button-styles.ts +13 -31
- package/src/components/button/button.tsx +19 -14
- package/src/components/button/icon-button.tsx +14 -56
- package/src/components/button/use-pending-indicator.ts +2 -7
- package/src/components/chip/chip.tsx +8 -13
- package/src/components/compact-date-picker/calendar-month.ts +13 -57
- package/src/components/compact-date-picker/compact-date-picker.tsx +44 -123
- package/src/components/compact-time-picker/compact-time-picker.tsx +46 -130
- package/src/components/compact-time-picker/time-value.ts +4 -16
- package/src/components/content-view/content-view.tsx +13 -56
- package/src/components/context-menu/conceal-menu-source.ts +1 -4
- package/src/components/context-menu/context-menu-host.tsx +125 -195
- package/src/components/context-menu/context-menu-store.ts +3 -11
- package/src/components/context-menu/menu-navigation.ts +29 -0
- package/src/components/context-menu/menu-position.ts +6 -27
- package/src/components/context-menu/menu-reveal.ts +13 -54
- package/src/components/context-menu/use-context-menu.ts +6 -30
- package/src/components/conversation/conversation.tsx +26 -72
- package/src/components/date-picker/date-picker.tsx +8 -37
- package/src/components/date-picker/date-value.ts +5 -30
- package/src/components/dialog/dialog-host.tsx +31 -76
- package/src/components/dialog/dialog-store.ts +1 -3
- package/src/components/dialog/dialog.tsx +23 -80
- package/src/components/disclosure-group/disclosure-group.tsx +70 -0
- package/src/components/divider/divider.tsx +31 -0
- package/src/components/inline-disclosure/inline-disclosure.tsx +49 -0
- package/src/components/labeled-content/labeled-content.tsx +24 -18
- package/src/components/locale-switcher/locale-switcher.tsx +20 -70
- package/src/components/menu/menu.tsx +68 -0
- package/src/components/picker/picker-trigger.ts +10 -0
- package/src/components/picker/picker.tsx +72 -203
- package/src/components/popover/popover-fit.ts +69 -0
- package/src/components/popover/popover.tsx +94 -77
- package/src/components/profile-image/profile-image.tsx +6 -28
- package/src/components/progress-view/progress-view.tsx +65 -0
- package/src/components/search-field/search-field.tsx +27 -25
- package/src/components/search-list/search-list.tsx +43 -69
- package/src/components/section/section.tsx +18 -17
- package/src/components/secure-field/secure-field.tsx +5 -7
- package/src/components/segmented-control/segmented-control.tsx +20 -29
- package/src/components/sheet/modal-environment.ts +16 -54
- package/src/components/sheet/sheet-portal.tsx +10 -42
- package/src/components/sheet/sheet.tsx +17 -25
- package/src/components/sheet/use-sheet-focus.ts +15 -51
- package/src/components/sidebar/sidebar.tsx +27 -30
- package/src/components/slider/slider.tsx +76 -0
- package/src/components/stat-tile/stat-tile.tsx +9 -30
- package/src/components/status-indicator/status-indicator.tsx +12 -19
- package/src/components/stepper/stepper.tsx +80 -0
- package/src/components/swatch-picker/swatch-picker.tsx +19 -15
- package/src/components/tab-bar/tab-bar.tsx +59 -59
- package/src/components/tab-view/tab-view.tsx +52 -57
- package/src/components/table/table.tsx +14 -62
- package/src/components/text-editor/text-editor.tsx +2 -12
- package/src/components/text-field/text-field.tsx +11 -40
- package/src/components/toast/toast-store.ts +9 -30
- package/src/components/toast/toaster.tsx +90 -104
- package/src/components/toggle/toggle.tsx +28 -24
- package/src/components/tooltip/tooltip-host.tsx +70 -67
- package/src/components/view-controller/view-controller.tsx +4 -21
- package/src/hooks/scroll/minimize-decision.ts +1 -5
- package/src/hooks/use-anchored-placement.ts +4 -14
- package/src/hooks/use-dismiss.ts +5 -23
- package/src/hooks/use-floating-dismiss.ts +28 -0
- package/src/hooks/use-media-query.ts +12 -31
- package/src/hooks/use-minimize-on-scroll.ts +10 -34
- package/src/hooks/use-visual-viewport.ts +5 -14
- package/src/hooks/viewport/viewport-metrics.ts +4 -16
- package/src/icons/icons.tsx +167 -121
- package/src/index.ts +9 -1
- package/src/lib/anchored-placement.ts +5 -15
- package/src/lib/class-names.ts +1 -2
- package/src/lib/clipboard.ts +14 -0
- package/src/lib/date.ts +4 -15
- package/src/lib/floating-layers.ts +18 -8
- package/src/lib/haptics.ts +1 -3
- package/src/lib/language.ts +2 -7
- package/src/lib/range-value.ts +32 -0
- package/src/lib/screen-edges.ts +2 -6
- package/src/lib/shapes.ts +5 -20
- package/src/motion/transitions.ts +18 -12
- package/src/components/ambient/ambient.docs.tsx +0 -68
- package/src/components/ambient/examples/ambient-images.tsx +0 -30
- package/src/components/ambient/examples/ambient-now-playing.tsx +0 -55
- package/src/components/ambient/examples/ambient-showcase.tsx +0 -33
- package/src/components/ambient/examples/ambient-usage.tsx +0 -19
- package/src/components/button/button.docs.tsx +0 -116
- package/src/components/button/examples/button-disabled.tsx +0 -19
- package/src/components/button/examples/button-icon.tsx +0 -39
- package/src/components/button/examples/button-link.tsx +0 -12
- package/src/components/button/examples/button-pending.tsx +0 -27
- package/src/components/button/examples/button-showcase.tsx +0 -115
- package/src/components/button/examples/button-sizes.tsx +0 -12
- package/src/components/button/examples/button-usage.tsx +0 -12
- package/src/components/button/examples/button-variants.tsx +0 -15
- package/src/components/button/examples/button-with-icon.tsx +0 -32
- package/src/components/button/examples/icon-button-player.tsx +0 -38
- package/src/components/button/examples/icon-button-showcase.tsx +0 -83
- package/src/components/button/examples/icon-button-usage.tsx +0 -11
- package/src/components/button/examples/icon-button-variants.tsx +0 -39
- package/src/components/button/icon-button.docs.tsx +0 -68
- package/src/components/chip/chip.docs.tsx +0 -37
- package/src/components/chip/examples/chip-in-rows.tsx +0 -19
- package/src/components/chip/examples/chip-showcase.tsx +0 -51
- package/src/components/chip/examples/chip-tones.tsx +0 -13
- package/src/components/chip/examples/chip-usage.tsx +0 -5
- package/src/components/compact-date-picker/compact-date-picker.docs.tsx +0 -81
- package/src/components/compact-date-picker/examples/compact-date-picker-showcase.tsx +0 -35
- package/src/components/compact-date-picker/examples/compact-date-picker-usage.tsx +0 -22
- package/src/components/compact-time-picker/compact-time-picker.docs.tsx +0 -80
- package/src/components/compact-time-picker/examples/compact-time-picker-showcase.tsx +0 -31
- package/src/components/compact-time-picker/examples/compact-time-picker-usage.tsx +0 -21
- package/src/components/content-view/content-view.docs.tsx +0 -61
- package/src/components/content-view/examples/content-view-header-action.tsx +0 -33
- package/src/components/content-view/examples/content-view-showcase.tsx +0 -65
- package/src/components/content-view/examples/content-view-stats.tsx +0 -35
- package/src/components/content-view/examples/content-view-usage.tsx +0 -14
- package/src/components/context-menu/context-menu.docs.tsx +0 -92
- package/src/components/context-menu/examples/context-menu-checked.tsx +0 -37
- package/src/components/context-menu/examples/context-menu-list.tsx +0 -85
- package/src/components/context-menu/examples/context-menu-showcase.tsx +0 -56
- package/src/components/context-menu/examples/context-menu-toolbar.tsx +0 -63
- package/src/components/context-menu/examples/context-menu-usage.tsx +0 -24
- package/src/components/conversation/conversation.docs.tsx +0 -88
- package/src/components/conversation/examples/conversation-composer.tsx +0 -36
- package/src/components/conversation/examples/conversation-days.tsx +0 -48
- package/src/components/conversation/examples/conversation-showcase.tsx +0 -71
- package/src/components/conversation/examples/conversation-usage.tsx +0 -28
- package/src/components/date-picker/date-picker.docs.tsx +0 -88
- package/src/components/date-picker/examples/date-picker-locales.tsx +0 -41
- package/src/components/date-picker/examples/date-picker-past-only.tsx +0 -29
- package/src/components/date-picker/examples/date-picker-showcase.tsx +0 -49
- package/src/components/date-picker/examples/date-picker-usage.tsx +0 -22
- package/src/components/dialog/dialog.docs.tsx +0 -114
- package/src/components/dialog/examples/dialog-confirm.tsx +0 -24
- package/src/components/dialog/examples/dialog-form.tsx +0 -46
- package/src/components/dialog/examples/dialog-inline.tsx +0 -48
- package/src/components/dialog/examples/dialog-showcase.tsx +0 -53
- package/src/components/dialog/examples/dialog-usage.tsx +0 -31
- package/src/components/labeled-content/examples/labeled-content-descriptions.tsx +0 -37
- package/src/components/labeled-content/examples/labeled-content-showcase.tsx +0 -54
- package/src/components/labeled-content/examples/labeled-content-usage.tsx +0 -22
- package/src/components/labeled-content/examples/labeled-content-values.tsx +0 -26
- package/src/components/labeled-content/examples/labeled-content-wide.tsx +0 -46
- package/src/components/labeled-content/labeled-content.docs.tsx +0 -69
- package/src/components/locale-switcher/examples/locale-switcher-native-names.tsx +0 -30
- package/src/components/locale-switcher/examples/locale-switcher-showcase.tsx +0 -46
- package/src/components/locale-switcher/examples/locale-switcher-translated-page.tsx +0 -35
- package/src/components/locale-switcher/examples/locale-switcher-usage.tsx +0 -20
- package/src/components/locale-switcher/locale-switcher.docs.tsx +0 -91
- package/src/components/picker/examples/picker-details.tsx +0 -44
- package/src/components/picker/examples/picker-searchable.tsx +0 -48
- package/src/components/picker/examples/picker-showcase.tsx +0 -66
- package/src/components/picker/examples/picker-usage.tsx +0 -20
- package/src/components/picker/picker.docs.tsx +0 -68
- package/src/components/popover/examples/popover-help.tsx +0 -57
- package/src/components/popover/examples/popover-menu.tsx +0 -51
- package/src/components/popover/examples/popover-showcase.tsx +0 -61
- package/src/components/popover/examples/popover-usage.tsx +0 -31
- package/src/components/popover/popover.docs.tsx +0 -84
- package/src/components/profile-image/examples/profile-image-fallbacks.tsx +0 -29
- package/src/components/profile-image/examples/profile-image-group.tsx +0 -34
- package/src/components/profile-image/examples/profile-image-showcase.tsx +0 -30
- package/src/components/profile-image/examples/profile-image-usage.tsx +0 -14
- package/src/components/profile-image/profile-image.docs.tsx +0 -81
- package/src/components/search-field/examples/search-field-filter.tsx +0 -53
- package/src/components/search-field/examples/search-field-showcase.tsx +0 -56
- package/src/components/search-field/examples/search-field-toolbar.tsx +0 -27
- package/src/components/search-field/examples/search-field-usage.tsx +0 -18
- package/src/components/search-field/search-field.docs.tsx +0 -58
- package/src/components/search-list/examples/search-list-dropdown.tsx +0 -53
- package/src/components/search-list/examples/search-list-groups.tsx +0 -64
- package/src/components/search-list/examples/search-list-showcase.tsx +0 -67
- package/src/components/search-list/examples/search-list-usage.tsx +0 -27
- package/src/components/search-list/search-list.docs.tsx +0 -87
- package/src/components/section/examples/section-actions.tsx +0 -35
- package/src/components/section/examples/section-groups.tsx +0 -41
- package/src/components/section/examples/section-showcase.tsx +0 -63
- package/src/components/section/examples/section-usage.tsx +0 -19
- package/src/components/section/section.docs.tsx +0 -51
- package/src/components/secure-field/examples/secure-field-new-password.tsx +0 -56
- package/src/components/secure-field/examples/secure-field-reveal.tsx +0 -20
- package/src/components/secure-field/examples/secure-field-showcase.tsx +0 -62
- package/src/components/secure-field/examples/secure-field-usage.tsx +0 -19
- package/src/components/secure-field/secure-field.docs.tsx +0 -72
- package/src/components/segmented-control/examples/segmented-control-overflow.tsx +0 -28
- package/src/components/segmented-control/examples/segmented-control-showcase.tsx +0 -59
- package/src/components/segmented-control/examples/segmented-control-usage.tsx +0 -20
- package/src/components/segmented-control/examples/segmented-control-views.tsx +0 -32
- package/src/components/segmented-control/segmented-control.docs.tsx +0 -61
- package/src/components/sheet/examples/sheet-choices.tsx +0 -58
- package/src/components/sheet/examples/sheet-share.tsx +0 -51
- package/src/components/sheet/examples/sheet-showcase.tsx +0 -74
- package/src/components/sheet/examples/sheet-usage.tsx +0 -32
- package/src/components/sheet/sheet.docs.tsx +0 -75
- package/src/components/sidebar/examples/sidebar-groups.tsx +0 -133
- package/src/components/sidebar/examples/sidebar-showcase.tsx +0 -123
- package/src/components/sidebar/examples/sidebar-unread.tsx +0 -66
- package/src/components/sidebar/examples/sidebar-usage.tsx +0 -52
- package/src/components/sidebar/sidebar.docs.tsx +0 -135
- package/src/components/stat-tile/examples/stat-tile-filters.tsx +0 -32
- package/src/components/stat-tile/examples/stat-tile-grid.tsx +0 -21
- package/src/components/stat-tile/examples/stat-tile-showcase.tsx +0 -52
- package/src/components/stat-tile/examples/stat-tile-usage.tsx +0 -13
- package/src/components/stat-tile/stat-tile.docs.tsx +0 -60
- package/src/components/status-indicator/examples/status-indicator-live.tsx +0 -34
- package/src/components/status-indicator/examples/status-indicator-showcase.tsx +0 -39
- package/src/components/status-indicator/examples/status-indicator-states.tsx +0 -17
- package/src/components/status-indicator/examples/status-indicator-usage.tsx +0 -9
- package/src/components/status-indicator/status-indicator.docs.tsx +0 -43
- package/src/components/swatch-picker/examples/swatch-picker-accents.tsx +0 -42
- package/src/components/swatch-picker/examples/swatch-picker-labels.tsx +0 -45
- package/src/components/swatch-picker/examples/swatch-picker-showcase.tsx +0 -70
- package/src/components/swatch-picker/examples/swatch-picker-usage.tsx +0 -39
- package/src/components/swatch-picker/swatch-picker.docs.tsx +0 -60
- package/src/components/tab-bar/examples/tab-bar-five-tabs.tsx +0 -66
- package/src/components/tab-bar/examples/tab-bar-minimize.tsx +0 -71
- package/src/components/tab-bar/examples/tab-bar-showcase.tsx +0 -82
- package/src/components/tab-bar/examples/tab-bar-usage.tsx +0 -54
- package/src/components/tab-bar/tab-bar.docs.tsx +0 -136
- package/src/components/tab-view/examples/tab-view-keyboard.tsx +0 -39
- package/src/components/tab-view/examples/tab-view-settings.tsx +0 -56
- package/src/components/tab-view/examples/tab-view-showcase.tsx +0 -53
- package/src/components/tab-view/examples/tab-view-usage.tsx +0 -23
- package/src/components/tab-view/tab-view.docs.tsx +0 -77
- package/src/components/table/examples/table-empty.tsx +0 -53
- package/src/components/table/examples/table-invoices.tsx +0 -102
- package/src/components/table/examples/table-selection.tsx +0 -150
- package/src/components/table/examples/table-showcase.tsx +0 -115
- package/src/components/table/examples/table-usage.tsx +0 -67
- package/src/components/table/examples/table-wide.tsx +0 -75
- package/src/components/table/table.docs.tsx +0 -131
- package/src/components/text-editor/examples/text-editor-comment.tsx +0 -48
- package/src/components/text-editor/examples/text-editor-count.tsx +0 -38
- package/src/components/text-editor/examples/text-editor-showcase.tsx +0 -58
- package/src/components/text-editor/examples/text-editor-usage.tsx +0 -25
- package/src/components/text-editor/text-editor.docs.tsx +0 -61
- package/src/components/text-field/examples/text-field-icons.tsx +0 -72
- package/src/components/text-field/examples/text-field-showcase.tsx +0 -50
- package/src/components/text-field/examples/text-field-usage.tsx +0 -18
- package/src/components/text-field/examples/text-field-validation.tsx +0 -27
- package/src/components/text-field/text-field.docs.tsx +0 -118
- package/src/components/toast/examples/toast-action.tsx +0 -32
- package/src/components/toast/examples/toast-promise.tsx +0 -45
- package/src/components/toast/examples/toast-showcase.tsx +0 -49
- package/src/components/toast/examples/toast-usage.tsx +0 -13
- package/src/components/toast/toast.docs.tsx +0 -79
- package/src/components/toggle/examples/toggle-checkboxes.tsx +0 -43
- package/src/components/toggle/examples/toggle-settings.tsx +0 -31
- package/src/components/toggle/examples/toggle-showcase.tsx +0 -59
- package/src/components/toggle/examples/toggle-usage.tsx +0 -13
- package/src/components/toggle/toggle.docs.tsx +0 -69
- package/src/components/tooltip/examples/tooltip-icon-buttons.tsx +0 -27
- package/src/components/tooltip/examples/tooltip-shortcuts.tsx +0 -38
- package/src/components/tooltip/examples/tooltip-showcase.tsx +0 -44
- package/src/components/tooltip/examples/tooltip-usage.tsx +0 -13
- package/src/components/tooltip/tooltip.docs.tsx +0 -56
- package/src/components/view-controller/examples/view-controller-action.tsx +0 -27
- package/src/components/view-controller/examples/view-controller-settings.tsx +0 -31
- package/src/components/view-controller/examples/view-controller-showcase.tsx +0 -45
- package/src/components/view-controller/examples/view-controller-usage.tsx +0 -19
- package/src/components/view-controller/view-controller.docs.tsx +0 -71
- package/src/docs/index.ts +0 -3
- package/src/docs/registry.ts +0 -113
- package/src/docs/snippet.ts +0 -17
- package/src/docs/types.ts +0 -180
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders confirmation dialogs: a glass card that springs up over blurred
|
|
3
|
+
* content. Escape or a click outside cancels; Enter confirms unless the
|
|
4
|
+
* action is destructive, where the safe choice has focus.
|
|
5
|
+
*/
|
|
6
|
+
export declare function DialogHost(): import("react").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App-wide confirmation dialogs, replacing the browser's `confirm`.
|
|
3
|
+
* `await confirmDialog({...})` resolves true when confirmed. Render one
|
|
4
|
+
* `<DialogHost />`.
|
|
5
|
+
*/
|
|
6
|
+
export interface ConfirmOptions {
|
|
7
|
+
title: string;
|
|
8
|
+
message?: string;
|
|
9
|
+
confirmLabel?: string;
|
|
10
|
+
cancelLabel?: string;
|
|
11
|
+
/** Destructive actions are shown in red and are not the default button. */
|
|
12
|
+
destructive?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface PendingDialog extends ConfirmOptions {
|
|
15
|
+
id: number;
|
|
16
|
+
resolve: (confirmed: boolean) => void;
|
|
17
|
+
}
|
|
18
|
+
export declare function confirmDialog(options: ConfirmOptions): Promise<boolean>;
|
|
19
|
+
export declare function settleDialog(confirmed: boolean): void;
|
|
20
|
+
export declare function subscribeDialogs(listener: () => void): () => void;
|
|
21
|
+
export declare function getDialog(): PendingDialog | null;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type FormEvent, type ReactNode } from "react";
|
|
2
|
+
export type DialogPresentation = "drawer" | "center" | "inline";
|
|
3
|
+
export type DialogTone = "default" | "destructive";
|
|
4
|
+
export type DialogProps = {
|
|
5
|
+
open: boolean;
|
|
6
|
+
onOpenChange: (open: boolean) => void;
|
|
7
|
+
title: ReactNode;
|
|
8
|
+
description?: ReactNode;
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
footer?: ReactNode;
|
|
11
|
+
/** `drawer` (responsive sheet), `center` (floating panel), or `inline`. @default "drawer" */
|
|
12
|
+
presentation?: DialogPresentation;
|
|
13
|
+
className?: string;
|
|
14
|
+
onSubmit?: (event: FormEvent<HTMLFormElement>) => void;
|
|
15
|
+
};
|
|
16
|
+
type ActionsProps = {
|
|
17
|
+
submitLabel: ReactNode;
|
|
18
|
+
cancelLabel: ReactNode;
|
|
19
|
+
pending?: boolean;
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
tone?: DialogTone;
|
|
22
|
+
onConfirm?: () => void;
|
|
23
|
+
};
|
|
24
|
+
export declare function Dialog({ open, onOpenChange, title, description, children, footer, presentation, className, onSubmit, }: DialogProps): import("react").JSX.Element;
|
|
25
|
+
export declare namespace Dialog {
|
|
26
|
+
export { Actions };
|
|
27
|
+
}
|
|
28
|
+
/** The standard footer: a primary action and a cancel that closes the dialog. */
|
|
29
|
+
declare function Actions({ submitLabel, cancelLabel, pending, disabled, tone, onConfirm, }: ActionsProps): import("react").JSX.Element;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./dialog";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface DisclosureGroupProps {
|
|
3
|
+
label: string;
|
|
4
|
+
open: boolean;
|
|
5
|
+
onOpenChange: (open: boolean) => void;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
/** Supporting text beneath the title. */
|
|
10
|
+
description?: string;
|
|
11
|
+
}
|
|
12
|
+
/** A controlled, accessible disclosure row with the shared inline reveal. */
|
|
13
|
+
export declare function DisclosureGroup({ label, open, onOpenChange, children, disabled, className, description, }: DisclosureGroupProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { HTMLAttributes } from "react";
|
|
2
|
+
export type DividerOrientation = "horizontal" | "vertical";
|
|
3
|
+
export interface DividerProps extends HTMLAttributes<HTMLHRElement> {
|
|
4
|
+
orientation?: DividerOrientation;
|
|
5
|
+
/** Decorative separators are omitted from the accessibility tree. @default true */
|
|
6
|
+
decorative?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** A semantic separator using the shared surface color. */
|
|
9
|
+
export declare function Divider({ orientation, decorative, className, ...props }: DividerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface InlineDisclosureProps {
|
|
3
|
+
/** Whether the content is expanded. */
|
|
4
|
+
open: boolean;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* An inline, spring-driven reveal for settings editors and small details.
|
|
10
|
+
*
|
|
11
|
+
* Height and opacity animate together so following rows move continuously
|
|
12
|
+
* instead of jumping. Motion is disabled when the user requests less motion.
|
|
13
|
+
* The content unmounts after its exit animation completes.
|
|
14
|
+
*/
|
|
15
|
+
export declare function InlineDisclosure({ open, children, className }: InlineDisclosureProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
export interface LabeledContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/** The visible name of the row. */
|
|
4
|
+
label: string;
|
|
5
|
+
/** Supporting text below the label. */
|
|
6
|
+
description?: string;
|
|
7
|
+
/** The row's control or value. */
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
/** Places the control below the label at every width. @default false */
|
|
10
|
+
stacked?: boolean;
|
|
11
|
+
/** Places a wide control below its label on phones. @default false */
|
|
12
|
+
wide?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A row: a label, an optional description, and its control at the trailing
|
|
16
|
+
* end, as SwiftUI's `LabeledContent`. Wide controls move under the label
|
|
17
|
+
* when there is no room beside it, rather than squeezing.
|
|
18
|
+
*/
|
|
19
|
+
export declare function LabeledContent({ label, description, children, stacked, wide, className, ...props }: LabeledContentProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./locale-switcher";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type LocaleSwitcherProps<L extends string> = {
|
|
2
|
+
locales: readonly L[];
|
|
3
|
+
locale: L;
|
|
4
|
+
onSelect: (locale: L) => void;
|
|
5
|
+
/** localStorage key for where the person dragged it. */
|
|
6
|
+
storageKey: string;
|
|
7
|
+
label: string;
|
|
8
|
+
};
|
|
9
|
+
/** A draggable floating language picker that snaps to the nearest corner. */
|
|
10
|
+
export declare function LocaleSwitcher<L extends string>({ locales, locale, onSelect, storageKey, label, }: LocaleSwitcherProps<L>): import("react").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type ButtonProps } from "../button/button";
|
|
3
|
+
import { type ContextMenuEdge, type ContextMenuItem } from "../context-menu/context-menu-store";
|
|
4
|
+
export interface MenuProps extends Omit<ButtonProps, "onClick" | "children"> {
|
|
5
|
+
/** Accessible name for the menu trigger. */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Items are rendered by the app's existing ContextMenuHost. */
|
|
8
|
+
items: readonly ContextMenuItem[];
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
/** Logical edge used to align the menu, including RTL. @default "leading" */
|
|
11
|
+
edge?: ContextMenuEdge;
|
|
12
|
+
/** Open above the trigger instead of below it. @default false */
|
|
13
|
+
above?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** A declarative menu button using the same native host as context menus. */
|
|
16
|
+
export declare const Menu: import("react").ForwardRefExoticComponent<MenuProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface PickerOption<T extends string> {
|
|
2
|
+
value: T;
|
|
3
|
+
label: string;
|
|
4
|
+
/** A quieter second line or trailing note, such as "Free" or a region. */
|
|
5
|
+
detail?: string;
|
|
6
|
+
/** The option's own language, so it is spoken and shaped right. */
|
|
7
|
+
lang?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Values and callbacks share the option value type, including literal unions. */
|
|
10
|
+
export interface PickerProps<T extends string> {
|
|
11
|
+
/** The selected option's value. */
|
|
12
|
+
value: T;
|
|
13
|
+
/** Available choices. Use a literal union for a fixed set of values. */
|
|
14
|
+
options: ReadonlyArray<PickerOption<T>>;
|
|
15
|
+
/** Called with the selected option value. */
|
|
16
|
+
onChange: (value: NoInfer<T>) => void;
|
|
17
|
+
/** Accessible name for the trigger. */
|
|
18
|
+
label: string;
|
|
19
|
+
/** Shown when the selected value has no matching option. */
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
/** Defaults to on for lists of ten or more options. */
|
|
22
|
+
searchable?: boolean;
|
|
23
|
+
/** Label for the filter field. @default "Search" */
|
|
24
|
+
searchPlaceholder?: string;
|
|
25
|
+
/** Shown when the filter matches nothing. @default "No matches" */
|
|
26
|
+
emptyLabel?: string;
|
|
27
|
+
className?: string;
|
|
28
|
+
/** Prevents opening or choosing an option. @default false */
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A pop-up button: shows the chosen value and opens a list that floats
|
|
33
|
+
* above everything, flips upward near the bottom edge and filters long
|
|
34
|
+
* lists. Replaces the browser's own select, which looks foreign on every
|
|
35
|
+
* platform.
|
|
36
|
+
*/
|
|
37
|
+
export declare function Picker<T extends string>({ value, options, onChange, label, placeholder, searchable, searchPlaceholder, emptyLabel, className, disabled, }: PickerProps<T>): import("react").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type PlacementFrame } from "../../lib/anchored-placement";
|
|
2
|
+
interface PanelRect {
|
|
3
|
+
left: number;
|
|
4
|
+
top: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
interface AnchorRect {
|
|
9
|
+
top: number;
|
|
10
|
+
bottom: number;
|
|
11
|
+
}
|
|
12
|
+
export interface PopoverFit {
|
|
13
|
+
shiftX: number;
|
|
14
|
+
shiftY: number;
|
|
15
|
+
maxWidth: number;
|
|
16
|
+
maxHeight?: number;
|
|
17
|
+
above: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Keep an absolutely positioned popover visible without scaling its contents. */
|
|
20
|
+
export declare function fitPopover(panel: PanelRect, anchor: AnchorRect | undefined, frame: Pick<PlacementFrame, "viewport" | "edges">, gap?: number, origin?: "top-left" | "top-right"): PopoverFit;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type HTMLMotionProps } from "motion/react";
|
|
2
|
+
export type PopoverOrigin = "top-left" | "top-right";
|
|
3
|
+
export interface PopoverProps extends HTMLMotionProps<"div"> {
|
|
4
|
+
open: boolean;
|
|
5
|
+
/** Which corner the popover grows from. */
|
|
6
|
+
origin?: PopoverOrigin;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A glass surface that springs open from its anchor. Position it with
|
|
10
|
+
* `className` (it is absolutely positioned within a relative parent); it
|
|
11
|
+
* flips above its relative parent when the bottom edge is short, and
|
|
12
|
+
* stays inside the visible viewport as it resizes or scrolls.
|
|
13
|
+
*/
|
|
14
|
+
export declare function Popover({ open, ...props }: PopoverProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ComponentProps } from "react";
|
|
2
|
+
export declare function ProfileImage({ className, ...props }: ComponentProps<"span">): import("react").JSX.Element;
|
|
3
|
+
export declare function ProfileImageContent({ src, className, onLoad, onError, ...props }: ComponentProps<"img">): import("react").JSX.Element | null;
|
|
4
|
+
export declare function ProfileImageFallback({ className, ...props }: ComponentProps<"span">): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { HTMLAttributes } from "react";
|
|
2
|
+
export type ProgressViewSize = "sm" | "md" | "lg";
|
|
3
|
+
export interface ProgressViewProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
4
|
+
label: string;
|
|
5
|
+
/** Omit for an indeterminate operation. */
|
|
6
|
+
value?: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
size?: ProgressViewSize;
|
|
9
|
+
/** Secondary text, such as bytes uploaded. */
|
|
10
|
+
detail?: string;
|
|
11
|
+
}
|
|
12
|
+
/** A determinate or indeterminate progress track respecting reduced motion. */
|
|
13
|
+
export declare function ProgressView({ label, value, max, size, detail, className, ...props }: ProgressViewProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ComponentProps } from "react";
|
|
2
|
+
export declare function SearchList({ loop, open, onKeyDown, className, ...props }: ComponentProps<"div"> & {
|
|
3
|
+
loop?: boolean;
|
|
4
|
+
open?: boolean;
|
|
5
|
+
}): import("react").JSX.Element;
|
|
6
|
+
export declare function SearchListField({ value, onValueChange, className, ...props }: Omit<ComponentProps<"input">, "value" | "onChange"> & {
|
|
7
|
+
value?: string;
|
|
8
|
+
onValueChange?: (value: string) => void;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
10
|
+
export declare function SearchListResults({ className, ...props }: ComponentProps<"div">): import("react").JSX.Element;
|
|
11
|
+
export declare function SearchListEmpty(props: ComponentProps<"div">): import("react").JSX.Element | null;
|
|
12
|
+
export declare function SearchListGroup({ heading, children, className, ...props }: ComponentProps<"div"> & {
|
|
13
|
+
heading?: React.ReactNode;
|
|
14
|
+
}): import("react").JSX.Element;
|
|
15
|
+
export declare function SearchListItem({ value, keywords, onSelect, className, ...props }: Omit<ComponentProps<"button">, "value" | "onSelect"> & {
|
|
16
|
+
value: string;
|
|
17
|
+
keywords?: string[];
|
|
18
|
+
onSelect?: (value: string) => void;
|
|
19
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
export interface SectionProps extends HTMLAttributes<HTMLElement> {
|
|
3
|
+
/** Optional group heading and accessible name. */
|
|
4
|
+
title?: string;
|
|
5
|
+
/** Supporting text below the grouped rows. */
|
|
6
|
+
footer?: ReactNode;
|
|
7
|
+
/** Rows, typically LabeledContent. */
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A titled, inset group of rows with an optional footer, as in iOS Settings
|
|
12
|
+
* and SwiftUI's grouped `List` with `Section(header:footer:)`. Rows are
|
|
13
|
+
* usually `LabeledContent`; dividers between them come for free.
|
|
14
|
+
*/
|
|
15
|
+
export declare function Section({ title, footer, children, className, ...props }: SectionProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type TextFieldProps } from "../text-field/text-field";
|
|
2
|
+
/** TextField's native input props, with the password type managed by SecureField. */
|
|
3
|
+
export type SecureFieldProps = Omit<TextFieldProps, "type">;
|
|
4
|
+
export declare function SecureField(props: SecureFieldProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface SegmentedControlProps<T extends string> {
|
|
2
|
+
/** Value of the selected segment. */
|
|
3
|
+
value: T;
|
|
4
|
+
/** The choices, in display order. */
|
|
5
|
+
options: ReadonlyArray<{
|
|
6
|
+
value: T;
|
|
7
|
+
label: string;
|
|
8
|
+
}>;
|
|
9
|
+
/** Called with the selected segment's value. */
|
|
10
|
+
onChange: (value: NoInfer<T>) => void;
|
|
11
|
+
/** Accessible name for the group and its compact picker. */
|
|
12
|
+
label: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Mutually exclusive choices with a sliding selection, as on Apple
|
|
16
|
+
* platforms. When the labels can't all fit the space it is given (a long
|
|
17
|
+
* translation, a narrow pane) it becomes a pop-up button instead of
|
|
18
|
+
* squeezing or spilling its text.
|
|
19
|
+
*/
|
|
20
|
+
export declare function SegmentedControl<T extends string>({ value, options, onChange, label, }: SegmentedControlProps<T>): import("react").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export type SheetPlacement = "adaptive" | "center";
|
|
3
|
+
export interface SheetProps {
|
|
4
|
+
/** Controls whether the sheet is presented. */
|
|
5
|
+
open: boolean;
|
|
6
|
+
/** Called on Escape or an outside press. */
|
|
7
|
+
onClose: () => void;
|
|
8
|
+
/** Read out by screen readers as the sheet's name. */
|
|
9
|
+
label: string;
|
|
10
|
+
/** ID of a visible heading to use instead of label for the accessible name. */
|
|
11
|
+
labelledBy?: string;
|
|
12
|
+
/** `adaptive` rises from the bottom on phones; `center` always floats. @default "adaptive" */
|
|
13
|
+
placement?: SheetPlacement;
|
|
14
|
+
className?: string;
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A modal card: rises from the bottom edge on phones and floats in the
|
|
19
|
+
* middle on larger screens. Escape or a tap outside closes it.
|
|
20
|
+
*/
|
|
21
|
+
export declare function Sheet({ open, ...props }: SheetProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface SidebarSectionProps {
|
|
3
|
+
/** Visible heading for this group of navigation rows. */
|
|
4
|
+
title: string;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export interface SidebarItemContentProps {
|
|
8
|
+
icon: ReactNode;
|
|
9
|
+
/** Optional trailing count. */
|
|
10
|
+
count?: number;
|
|
11
|
+
/** Matches the router link's active state. */
|
|
12
|
+
active?: boolean;
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
export declare function SidebarSection({ title, children }: SidebarSectionProps): import("react").JSX.Element;
|
|
16
|
+
/** Classes for a sidebar row; apply to the app's router link. */
|
|
17
|
+
export declare function sidebarItemClass(active?: boolean): string;
|
|
18
|
+
export declare function SidebarItemContent({ icon, count, active, children }: SidebarItemContentProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ComponentProps } from "react";
|
|
2
|
+
export interface SliderProps extends Omit<ComponentProps<"input">, "type" | "value" | "defaultValue" | "onChange" | "min" | "max" | "step"> {
|
|
3
|
+
value: number;
|
|
4
|
+
onChange: (value: number) => void;
|
|
5
|
+
label: string;
|
|
6
|
+
min?: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
step?: number;
|
|
9
|
+
description?: string;
|
|
10
|
+
/** Provides a localized, spoken description of the current value. */
|
|
11
|
+
formatValue?: (value: number) => string;
|
|
12
|
+
}
|
|
13
|
+
/** Native keyboard, touch and pointer behavior with Passui's control treatment. */
|
|
14
|
+
export declare function Slider({ value, onChange, label, min, max, step, description, formatValue, id: suppliedId, className, disabled, ...props }: SliderProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./stat-tile";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type StatTileTone = "critical";
|
|
3
|
+
export interface StatTileProps {
|
|
4
|
+
label: string;
|
|
5
|
+
value: number;
|
|
6
|
+
/** A quiet line under the number, like "3 signed in now". */
|
|
7
|
+
caption?: ReactNode;
|
|
8
|
+
/** Turns the number red once it's above zero. */
|
|
9
|
+
tone?: StatTileTone;
|
|
10
|
+
/** Makes the tile a toggle, e.g. a filter. */
|
|
11
|
+
onClick?: () => void;
|
|
12
|
+
active?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** One number with its label, optionally a toggle. */
|
|
15
|
+
export declare function StatTile({ label, value, caption, tone, onClick, active }: StatTileProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
declare const dots: {
|
|
3
|
+
readonly saved: "bg-success";
|
|
4
|
+
readonly syncing: "bg-warning animate-pulse";
|
|
5
|
+
readonly offline: "bg-label-tertiary";
|
|
6
|
+
};
|
|
7
|
+
export type StatusIndicatorState = keyof typeof dots;
|
|
8
|
+
export interface StatusIndicatorProps extends HTMLAttributes<HTMLSpanElement> {
|
|
9
|
+
/** Visual treatment of the status dot. */
|
|
10
|
+
state: StatusIndicatorState;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
export declare function StatusIndicator({ state, children, className, ...props }: StatusIndicatorProps): import("react").JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface StepperProps {
|
|
2
|
+
value: number;
|
|
3
|
+
onChange: (value: number) => void;
|
|
4
|
+
label: string;
|
|
5
|
+
/** Localized accessible names for each action. */
|
|
6
|
+
labels: {
|
|
7
|
+
decrement: string;
|
|
8
|
+
increment: string;
|
|
9
|
+
};
|
|
10
|
+
min?: number;
|
|
11
|
+
max?: number;
|
|
12
|
+
step?: number;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
className?: string;
|
|
15
|
+
/** Formats the displayed value. */
|
|
16
|
+
formatValue?: (value: number) => string;
|
|
17
|
+
}
|
|
18
|
+
/** Discrete increments with disabled boundary actions and a spoken value. */
|
|
19
|
+
export declare function Stepper({ value, onChange, label, labels, min, max, step, disabled, className, formatValue, }: StepperProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface SwatchPickerOption<T extends string> {
|
|
2
|
+
value: T;
|
|
3
|
+
label: string;
|
|
4
|
+
/** Swatch background color. */
|
|
5
|
+
color: string;
|
|
6
|
+
/** Color of the selected checkmark. */
|
|
7
|
+
ink: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SwatchPickerProps<T extends string> {
|
|
10
|
+
value: T;
|
|
11
|
+
options: ReadonlyArray<SwatchPickerOption<T>>;
|
|
12
|
+
onChange: (value: T) => void;
|
|
13
|
+
/** Accessible name for the group. */
|
|
14
|
+
label: string;
|
|
15
|
+
}
|
|
16
|
+
/** Colour swatches with a check on the chosen one. */
|
|
17
|
+
export declare function SwatchPicker<T extends string>({ value, options, onChange, label, }: SwatchPickerProps<T>): import("react").JSX.Element;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface TabBarTab<Id extends string = string> {
|
|
3
|
+
id: Id;
|
|
4
|
+
label: string;
|
|
5
|
+
icon: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
/** What a tab's link receives; spread it onto the router's own link. */
|
|
8
|
+
export interface TabBarLinkProps {
|
|
9
|
+
className: string;
|
|
10
|
+
"aria-current": "page" | undefined;
|
|
11
|
+
onClick: () => void;
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export type TabBarMinimizeBehavior = "platform" | "scroll" | "never";
|
|
15
|
+
export interface TabBarProps<Tab extends TabBarTab> {
|
|
16
|
+
/** `platform` follows the platform, `scroll` always minimizes, `never` stays expanded. @default "platform" */
|
|
17
|
+
minimizeBehavior?: TabBarMinimizeBehavior;
|
|
18
|
+
tabs: readonly Tab[];
|
|
19
|
+
/** Active tab ID, or null for a destination outside the bar. */
|
|
20
|
+
active: Tab["id"] | null;
|
|
21
|
+
/** Renders your router's link with the supplied appearance and accessibility props. */
|
|
22
|
+
renderLink: (tab: Tab, props: TabBarLinkProps) => ReactNode;
|
|
23
|
+
search?: {
|
|
24
|
+
label: string;
|
|
25
|
+
onPress: () => void;
|
|
26
|
+
};
|
|
27
|
+
/** Accessible name for the navigation. */
|
|
28
|
+
label: string;
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The app's main places a thumb's reach away, drawn as iOS 26 draws them: a
|
|
33
|
+
* floating glass capsule of tabs, with Search as its own round button at the
|
|
34
|
+
* trailing end. Scrolling down through content shrinks the capsule to the
|
|
35
|
+
* current tab; scrolling back up, or a tap, restores it. Android shares the
|
|
36
|
+
* glass, but its bar stays full size, as Android's own bars do.
|
|
37
|
+
*
|
|
38
|
+
* Links stay the app's own (`renderLink`), so the bar works with any router.
|
|
39
|
+
*/
|
|
40
|
+
export declare function TabBar<Tab extends TabBarTab>({ tabs, active, renderLink, search, label, className, minimizeBehavior, }: TabBarProps<Tab>): import("react").JSX.Element;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export type TabViewAlign = "start" | "center";
|
|
3
|
+
export interface TabViewProps<Value extends string> {
|
|
4
|
+
/** Available tabs, in keyboard navigation order. */
|
|
5
|
+
options: readonly {
|
|
6
|
+
value: Value;
|
|
7
|
+
label: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}[];
|
|
10
|
+
/** Initial selection when value is not controlled. */
|
|
11
|
+
defaultValue: Value;
|
|
12
|
+
/** Controlled selection; omit to keep selection inside TabView. */
|
|
13
|
+
value?: Value;
|
|
14
|
+
onValueChange?: (value: Value) => void;
|
|
15
|
+
/** Tab alignment: `start` or `center`. @default "center" */
|
|
16
|
+
align?: TabViewAlign;
|
|
17
|
+
/** Accessible name for the tab list. */
|
|
18
|
+
label: string;
|
|
19
|
+
/** Renders the selected tab's panel. */
|
|
20
|
+
children: (value: Value) => ReactNode;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Content tabs with native buttons, roving focus and automatic keyboard activation. */
|
|
24
|
+
export declare function TabView<Value extends string>({ options, defaultValue, value: controlledValue, onValueChange, align, label, children, className, }: TabViewProps<Value>): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
declare function Table({ className, ...props }: React.ComponentProps<"table">): React.JSX.Element;
|
|
3
|
+
declare function TableHeader({ className, ...props }: React.ComponentProps<"thead">): React.JSX.Element;
|
|
4
|
+
declare function TableBody({ className, ...props }: React.ComponentProps<"tbody">): React.JSX.Element;
|
|
5
|
+
declare function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">): React.JSX.Element;
|
|
6
|
+
declare function TableRow({ className, ...props }: React.ComponentProps<"tr">): React.JSX.Element;
|
|
7
|
+
declare function TableHead({ className, ...props }: React.ComponentProps<"th">): React.JSX.Element;
|
|
8
|
+
declare function TableCell({ className, ...props }: React.ComponentProps<"td">): React.JSX.Element;
|
|
9
|
+
declare function TableCaption({ className, ...props }: React.ComponentProps<"caption">): React.JSX.Element;
|
|
10
|
+
export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ComponentProps, type ReactNode } from "react";
|
|
2
|
+
export declare const textControlClasses: string;
|
|
3
|
+
export type TextFieldProps = ComponentProps<"input"> & {
|
|
4
|
+
label: string;
|
|
5
|
+
description?: ReactNode;
|
|
6
|
+
errors?: string[];
|
|
7
|
+
/** A decorative icon before the text, such as a mail glyph. */
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
/** A decorative icon after the text, such as a unit or a check. */
|
|
10
|
+
trailingIcon?: ReactNode;
|
|
11
|
+
/** An interactive control after the text, such as a clear button. Size it to the field: an `xs` or `icon-xs` button, never the default. */
|
|
12
|
+
action?: ReactNode;
|
|
13
|
+
revealLabels?: {
|
|
14
|
+
show: string;
|
|
15
|
+
hide: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export declare function TextField({ label, description, errors, icon, trailingIcon, action, revealLabels, type, id: suppliedId, className, ...props }: TextFieldProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App-wide toasts: short messages that confirm, report progress or explain
|
|
3
|
+
* a failure. Call `toast` from anywhere; render one `<Toaster />`.
|
|
4
|
+
*/
|
|
5
|
+
export type ToastTone = "neutral" | "success" | "error" | "loading";
|
|
6
|
+
export interface ToastAction {
|
|
7
|
+
label: string;
|
|
8
|
+
onClick: () => void;
|
|
9
|
+
}
|
|
10
|
+
export interface Toast {
|
|
11
|
+
id: number;
|
|
12
|
+
tone: ToastTone;
|
|
13
|
+
title: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
action?: ToastAction;
|
|
16
|
+
/** Milliseconds before it leaves on its own; `null` stays until dismissed. */
|
|
17
|
+
duration: number | null;
|
|
18
|
+
createdAt: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ToastOptions {
|
|
21
|
+
description?: string;
|
|
22
|
+
action?: ToastAction;
|
|
23
|
+
duration?: number | null;
|
|
24
|
+
}
|
|
25
|
+
/** Changes a toast in place; it morphs to its new state. */
|
|
26
|
+
declare function update(id: number, tone: ToastTone, title: string, options?: ToastOptions): number;
|
|
27
|
+
declare function dismiss(id: number): void;
|
|
28
|
+
interface PromiseMessages<T> {
|
|
29
|
+
loading: string;
|
|
30
|
+
success: string | ((value: T) => string);
|
|
31
|
+
error: string | ((error: unknown) => string);
|
|
32
|
+
}
|
|
33
|
+
export declare const toast: ((title: string, options?: ToastOptions) => number) & {
|
|
34
|
+
success: (title: string, options?: ToastOptions) => number;
|
|
35
|
+
error: (title: string, options?: ToastOptions) => number;
|
|
36
|
+
loading: (title: string, options?: ToastOptions) => number;
|
|
37
|
+
update: typeof update;
|
|
38
|
+
dismiss: typeof dismiss;
|
|
39
|
+
/** Shows progress, then morphs into the outcome. Returns the promise. */
|
|
40
|
+
promise<T>(promise: Promise<T>, messages: PromiseMessages<T>): Promise<T>;
|
|
41
|
+
};
|
|
42
|
+
export declare function subscribeToasts(listener: () => void): () => void;
|
|
43
|
+
export declare function getToasts(): Toast[];
|
|
44
|
+
export declare const toastLimits: {
|
|
45
|
+
readonly visible: 3;
|
|
46
|
+
};
|
|
47
|
+
export {};
|