@camstack/ui-library 1.2.256 → 1.2.258
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/dist/composites/accelerator-label.d.ts +9 -9
- package/dist/composites/adaptive-downlink.d.ts +141 -143
- package/dist/composites/addon-global-settings-form.d.ts +73 -60
- package/dist/composites/addon-page-props.d.ts +34 -10
- package/dist/composites/agent-step-editor.d.ts +48 -47
- package/dist/composites/app-shell/app-shell.d.ts +17 -17
- package/dist/composites/app-shell/index.d.ts +3 -3
- package/dist/composites/app-shell/sidebar-item.d.ts +9 -8
- package/dist/composites/app-shell/sidebar.d.ts +10 -10
- package/dist/composites/audio-classification-list.d.ts +16 -15
- package/dist/composites/audio-level-waveform.d.ts +31 -30
- package/dist/composites/audio-waveform.d.ts +18 -17
- package/dist/composites/battery-badge.d.ts +27 -13
- package/dist/composites/breadcrumb.d.ts +21 -21
- package/dist/composites/camera-stream-player.d.ts +309 -309
- package/dist/composites/cap-settings/AutotrackSection.d.ts +19 -2
- package/dist/composites/cap-settings/CameraGridLayoutEditor.d.ts +24 -2
- package/dist/composites/cap-settings/ConsumablesPanel.d.ts +21 -2
- package/dist/composites/cap-settings/CoverageTrack.d.ts +21 -20
- package/dist/composites/cap-settings/EventBucketStrip.d.ts +21 -20
- package/dist/composites/cap-settings/EventHeatmap.d.ts +8 -7
- package/dist/composites/cap-settings/HomePresetPicker.d.ts +2 -2
- package/dist/composites/cap-settings/MaskShapeCanvas.d.ts +143 -41
- package/dist/composites/cap-settings/MotionZonesSettings.d.ts +41 -2
- package/dist/composites/cap-settings/NavigationPanel.d.ts +14 -2
- package/dist/composites/cap-settings/PrivacyMaskSettings.d.ts +3 -2
- package/dist/composites/cap-settings/PtzPanel.d.ts +15 -2
- package/dist/composites/cap-settings/RecordingBandsEditor.d.ts +33 -32
- package/dist/composites/cap-settings/RecordingPanel.d.ts +3 -2
- package/dist/composites/cap-settings/RecordingSettings.d.ts +11 -10
- package/dist/composites/cap-settings/RecordingTimeline.d.ts +3 -2
- package/dist/composites/cap-settings/SceneMonitorEditor.d.ts +3 -51
- package/dist/composites/cap-settings/SceneReferenceGallery.d.ts +62 -23
- package/dist/composites/cap-settings/SceneSettingsForm.d.ts +52 -16
- package/dist/composites/cap-settings/TimelineControls.d.ts +21 -20
- package/dist/composites/cap-settings/camera-grid-layout.d.ts +95 -95
- package/dist/composites/cap-settings/event-thumb.d.ts +9 -8
- package/dist/composites/cap-settings/index.d.ts +20 -20
- package/dist/composites/cap-settings/privacy-mask-audio.d.ts +47 -47
- package/dist/composites/cap-settings/recording-config-form.d.ts +25 -25
- package/dist/composites/cap-settings/recording-spans.d.ts +14 -14
- package/dist/composites/cap-settings/recording-timeline-model.d.ts +57 -57
- package/dist/composites/cap-settings/scene-monitor-copy.d.ts +58 -49
- package/dist/composites/client-network-sample.d.ts +41 -41
- package/dist/composites/clips/ClipBandBar.d.ts +44 -14
- package/dist/composites/clips/ClipPanel.d.ts +30 -6
- package/dist/composites/clips/ClipTile.d.ts +26 -5
- package/dist/composites/clips/ClipsSection.d.ts +107 -2
- package/dist/composites/clips/clip-band.d.ts +72 -38
- package/dist/composites/clips/clip-day-window.d.ts +7 -30
- package/dist/composites/clips/clip-source-state.d.ts +55 -26
- package/dist/composites/clips/clip-still-retry.d.ts +39 -39
- package/dist/composites/clips/clip-thumbnail-fetch.d.ts +9 -9
- package/dist/composites/clips/clip-tile-media.d.ts +64 -32
- package/dist/composites/clips/clip-view-state.d.ts +76 -46
- package/dist/composites/code-block.d.ts +5 -4
- package/dist/composites/config-form-builder.d.ts +14 -13
- package/dist/composites/config-form-field.d.ts +63 -62
- package/dist/composites/config-icon-field.d.ts +10 -9
- package/dist/composites/config-secret-field.d.ts +51 -27
- package/dist/composites/confirm-action-button.d.ts +52 -39
- package/dist/composites/confirm-dialog.d.ts +110 -48
- package/dist/composites/copy-button.d.ts +25 -19
- package/dist/composites/data-table/data-table-header.d.ts +8 -7
- package/dist/composites/data-table/data-table-pagination.d.ts +7 -6
- package/dist/composites/data-table/data-table-row.d.ts +8 -7
- package/dist/composites/data-table/data-table.d.ts +3 -2
- package/dist/composites/data-table/index.d.ts +2 -2
- package/dist/composites/data-table/types.d.ts +29 -29
- package/dist/composites/data-table-filter-bar.d.ts +30 -29
- package/dist/composites/data-table-filter.d.ts +34 -34
- package/dist/composites/data-table-layout.d.ts +24 -24
- package/dist/composites/data-table-pager.d.ts +5 -5
- package/dist/composites/data-table-pagination.d.ts +23 -23
- package/dist/composites/data-table-selection.d.ts +10 -10
- package/dist/composites/data-table.d.ts +167 -118
- package/dist/composites/detection-canvas.d.ts +34 -25
- package/dist/composites/detection-colors.d.ts +9 -9
- package/dist/composites/detection-overlay.d.ts +33 -32
- package/dist/composites/detection-result-tree.d.ts +22 -9
- package/dist/composites/dev-shell.d.ts +15 -14
- package/dist/composites/device-activity-panel.d.ts +37 -31
- package/dist/composites/device-card.d.ts +32 -32
- package/dist/composites/device-controls/ac-panel.d.ts +2 -2
- package/dist/composites/device-controls/alarm-hero-card.d.ts +42 -42
- package/dist/composites/device-controls/atoms.d.ts +50 -50
- package/dist/composites/device-controls/brightness-panel.d.ts +3 -3
- package/dist/composites/device-controls/button-control.d.ts +14 -14
- package/dist/composites/device-controls/climate-panel.d.ts +12 -12
- package/dist/composites/device-controls/container-primary-hero.d.ts +33 -16
- package/dist/composites/device-controls/container-primary.d.ts +68 -39
- package/dist/composites/device-controls/control-panel.d.ts +4 -4
- package/dist/composites/device-controls/control-registry.d.ts +81 -70
- package/dist/composites/device-controls/cover-hero-card.d.ts +26 -26
- package/dist/composites/device-controls/cover-inline.d.ts +20 -20
- package/dist/composites/device-controls/cover-panel.d.ts +2 -2
- package/dist/composites/device-controls/dummy-hero-card.d.ts +2 -2
- package/dist/composites/device-controls/fan-hero-card.d.ts +20 -20
- package/dist/composites/device-controls/fan-panel.d.ts +3 -3
- package/dist/composites/device-controls/humidifier-control.d.ts +46 -29
- package/dist/composites/device-controls/image-control.d.ts +41 -27
- package/dist/composites/device-controls/index.d.ts +34 -34
- package/dist/composites/device-controls/lawn-mower-control.d.ts +30 -16
- package/dist/composites/device-controls/light-hero-card.d.ts +15 -15
- package/dist/composites/device-controls/lock-hero-card.d.ts +14 -14
- package/dist/composites/device-controls/lock-panel.d.ts +3 -3
- package/dist/composites/device-controls/media-player-hero-card.d.ts +16 -16
- package/dist/composites/device-controls/media-player-panel.d.ts +7 -7
- package/dist/composites/device-controls/offline-badge.d.ts +23 -8
- package/dist/composites/device-controls/panel-controls.d.ts +39 -20
- package/dist/composites/device-controls/pet-feeder-panel.d.ts +27 -9
- package/dist/composites/device-controls/popover-row-action.d.ts +18 -6
- package/dist/composites/device-controls/primary-child-picker.d.ts +31 -15
- package/dist/composites/device-controls/primary-child.d.ts +14 -25
- package/dist/composites/device-controls/radial-gauge.d.ts +17 -17
- package/dist/composites/device-controls/script-automation-controls.d.ts +9 -9
- package/dist/composites/device-controls/sensor-hero-card.d.ts +26 -8
- package/dist/composites/device-controls/sensor-inline-control.d.ts +21 -9
- package/dist/composites/device-controls/sensor-value-atom.d.ts +97 -76
- package/dist/composites/device-controls/switch-hero-card.d.ts +11 -11
- package/dist/composites/device-controls/switch-panel.d.ts +2 -2
- package/dist/composites/device-controls/tap-toggle.d.ts +13 -13
- package/dist/composites/device-controls/thermostat-hero-card.d.ts +16 -16
- package/dist/composites/device-controls/types.d.ts +11 -11
- package/dist/composites/device-controls/update-control.d.ts +20 -7
- package/dist/composites/device-controls/vacuum-control.d.ts +41 -25
- package/dist/composites/device-controls/valve-control.d.ts +51 -35
- package/dist/composites/device-controls/water-heater-control.d.ts +48 -31
- package/dist/composites/device-controls/weather-control.d.ts +46 -28
- package/dist/composites/device-export-panel.d.ts +34 -34
- package/dist/composites/device-grid.d.ts +10 -10
- package/dist/composites/device-item/actions.d.ts +40 -18
- package/dist/composites/device-item/admin-link-quick-action.d.ts +66 -26
- package/dist/composites/device-item/child-layout.d.ts +43 -26
- package/dist/composites/device-item/child-section-accordion.d.ts +20 -6
- package/dist/composites/device-item/children-accordion.d.ts +11 -11
- package/dist/composites/device-item/container-children-context.d.ts +28 -11
- package/dist/composites/device-item/device-delete-action.d.ts +23 -5
- package/dist/composites/device-item/features.d.ts +33 -15
- package/dist/composites/device-item/header.d.ts +53 -31
- package/dist/composites/device-item/helpers.d.ts +291 -274
- package/dist/composites/device-item/index.d.ts +18 -9
- package/dist/composites/device-item/preview.d.ts +41 -21
- package/dist/composites/device-item/quick-detail-action.d.ts +4 -4
- package/dist/composites/device-item/reboot-quick-action.d.ts +28 -7
- package/dist/composites/device-item/role-display-defaults-context.d.ts +28 -12
- package/dist/composites/device-item/status-dot.d.ts +24 -6
- package/dist/composites/device-list/batch-actions-bar.d.ts +23 -12
- package/dist/composites/device-list/batch-toolbar.d.ts +13 -13
- package/dist/composites/device-list/columns.d.ts +108 -108
- package/dist/composites/device-list/device-integration.d.ts +48 -58
- package/dist/composites/device-list/device-mode.d.ts +121 -121
- package/dist/composites/device-list/empty-state.d.ts +14 -3
- package/dist/composites/device-list/filter-chips.d.ts +42 -29
- package/dist/composites/device-list/fuzzy-match.d.ts +22 -22
- package/dist/composites/device-list/generic-mode.d.ts +88 -88
- package/dist/composites/device-list/group.d.ts +62 -35
- package/dist/composites/device-list/hardware-cell.d.ts +14 -3
- package/dist/composites/device-list/hardware.d.ts +29 -11
- package/dist/composites/device-list/icon-action.d.ts +27 -15
- package/dist/composites/device-list/index.d.ts +46 -23
- package/dist/composites/device-list/multi-select.d.ts +17 -17
- package/dist/composites/device-list/page-size-select.d.ts +13 -7
- package/dist/composites/device-list/pagination.d.ts +19 -12
- package/dist/composites/device-list/sort.d.ts +28 -15
- package/dist/composites/device-list/sortable-header.d.ts +20 -7
- package/dist/composites/device-list/table-layout.d.ts +44 -44
- package/dist/composites/device-list/type-filter.d.ts +16 -16
- package/dist/composites/device-list/url-state.d.ts +35 -35
- package/dist/composites/device-meta.d.ts +43 -43
- package/dist/composites/device-picker/DevicePicker.d.ts +72 -33
- package/dist/composites/device-picker/SelectedChip.d.ts +10 -9
- package/dist/composites/device-picker/device-filter-bar.d.ts +19 -18
- package/dist/composites/device-picker/device-fleet-view.d.ts +11 -3
- package/dist/composites/device-picker/device-parent.d.ts +27 -27
- package/dist/composites/device-picker/device-picker-grouping.d.ts +3 -3
- package/dist/composites/device-picker/device-picker-model.d.ts +140 -140
- package/dist/composites/device-picker/device-selection-rows.d.ts +31 -24
- package/dist/composites/device-picker/device-selection.d.ts +43 -43
- package/dist/composites/device-picker/index.d.ts +9 -9
- package/dist/composites/device-select-field.d.ts +17 -16
- package/dist/composites/device-select-filter.d.ts +78 -78
- package/dist/composites/device-selector-picker.d.ts +25 -25
- package/dist/composites/device-step-matrix.d.ts +54 -28
- package/dist/composites/discovery-panel.d.ts +22 -22
- package/dist/composites/doorbell-recent-panel.d.ts +9 -8
- package/dist/composites/empty-state.d.ts +8 -8
- package/dist/composites/error-box.d.ts +32 -17
- package/dist/composites/event-kind-visuals.d.ts +29 -18
- package/dist/composites/event-stream.d.ts +59 -42
- package/dist/composites/extensions/AssociationSlotCard.d.ts +45 -24
- package/dist/composites/extensions/ExtensionsPanel.d.ts +41 -18
- package/dist/composites/extensions/extensions-view-state.d.ts +71 -53
- package/dist/composites/filter-bar.d.ts +22 -21
- package/dist/composites/form-field.d.ts +9 -9
- package/dist/composites/format-state-value.d.ts +23 -51
- package/dist/composites/grouped-model-selector.d.ts +7 -6
- package/dist/composites/hls-quality.d.ts +26 -26
- package/dist/composites/hls-video.d.ts +62 -39
- package/dist/composites/hover-zoom-image.d.ts +35 -16
- package/dist/composites/icon-picker.d.ts +86 -50
- package/dist/composites/image-selector.d.ts +21 -20
- package/dist/composites/index.d.ts +204 -204
- package/dist/composites/inference-config-selector.d.ts +36 -35
- package/dist/composites/kebab-menu.d.ts +53 -35
- package/dist/composites/key-value-list.d.ts +14 -14
- package/dist/composites/log-stream-scroll.d.ts +24 -24
- package/dist/composites/log-stream.d.ts +81 -70
- package/dist/composites/login-form.d.ts +7 -6
- package/dist/composites/model-bound-slider.d.ts +46 -26
- package/dist/composites/model-picker.d.ts +20 -19
- package/dist/composites/mount-addon-page.d.ts +12 -12
- package/dist/composites/network-link-badge.d.ts +7 -6
- package/dist/composites/node-picker.d.ts +14 -13
- package/dist/composites/notification-targets-field.d.ts +76 -58
- package/dist/composites/notification-targets-options.d.ts +9 -6
- package/dist/composites/option-select/OptionSelect.d.ts +23 -22
- package/dist/composites/option-select/index.d.ts +4 -4
- package/dist/composites/option-select/option-select-model.d.ts +35 -35
- package/dist/composites/page-header.d.ts +6 -6
- package/dist/composites/peer-connection-config.d.ts +9 -9
- package/dist/composites/phase-icon.d.ts +10 -3
- package/dist/composites/pipeline-builder.d.ts +21 -13
- package/dist/composites/pipeline-matrix-shared.d.ts +159 -150
- package/dist/composites/pipeline-runtime-selector.d.ts +12 -11
- package/dist/composites/pipeline-step.d.ts +39 -31
- package/dist/composites/placeholder-field/PlaceholderChipField.d.ts +23 -22
- package/dist/composites/placeholder-field/index.d.ts +1 -1
- package/dist/composites/provider-badge.d.ts +6 -5
- package/dist/composites/ptz-overlay.d.ts +38 -18
- package/dist/composites/qr-code.d.ts +24 -10
- package/dist/composites/reconnect-schedule.d.ts +22 -22
- package/dist/composites/resolve-step-default-model.d.ts +94 -94
- package/dist/composites/response-log.d.ts +7 -6
- package/dist/composites/root-model-source.d.ts +21 -10
- package/dist/composites/scope-picker.d.ts +49 -25
- package/dist/composites/section-card.d.ts +19 -11
- package/dist/composites/setting-row.d.ts +39 -21
- package/dist/composites/snapshot-button.d.ts +23 -19
- package/dist/composites/sort-header-button.d.ts +25 -8
- package/dist/composites/stat-card.d.ts +20 -8
- package/dist/composites/state-values-stream.d.ts +49 -24
- package/dist/composites/status-badge.d.ts +10 -8
- package/dist/composites/step-inspector/gate-control.d.ts +13 -12
- package/dist/composites/step-inspector/index.d.ts +8 -8
- package/dist/composites/step-inspector/layered-settings-form.d.ts +41 -30
- package/dist/composites/step-inspector/segmented-choice.d.ts +8 -7
- package/dist/composites/step-inspector/setting-values.d.ts +13 -8
- package/dist/composites/step-inspector/step-detail-dock.d.ts +39 -23
- package/dist/composites/step-inspector/step-inspector-panel.d.ts +34 -28
- package/dist/composites/step-inspector/step-model-row.d.ts +29 -24
- package/dist/composites/step-inspector/step-search.d.ts +11 -11
- package/dist/composites/step-timings.d.ts +7 -6
- package/dist/composites/step-tree.d.ts +17 -12
- package/dist/composites/stream-broker-selector.d.ts +29 -8
- package/dist/composites/stream-debug/stream-debug-overlay.d.ts +40 -40
- package/dist/composites/stream-debug/webrtc-debug-stats.d.ts +144 -129
- package/dist/composites/stream-panel.d.ts +212 -201
- package/dist/composites/table-sort.d.ts +61 -61
- package/dist/composites/timezone-selector.d.ts +15 -13
- package/dist/composites/training/send-frame-to-training.d.ts +5 -4
- package/dist/composites/training/training-collection-picker.d.ts +4 -3
- package/dist/composites/training/training-refusal-text.d.ts +6 -6
- package/dist/composites/unit-picker/UnitPicker.d.ts +19 -14
- package/dist/composites/unit-picker/index.d.ts +1 -1
- package/dist/composites/use-data-table-filter.d.ts +19 -19
- package/dist/composites/version-badge.d.ts +19 -18
- package/dist/composites/webrtc-diagnostics/EndpointTestCard.d.ts +7 -7
- package/dist/composites/webrtc-diagnostics/HubSessionTestCard.d.ts +14 -14
- package/dist/composites/webrtc-diagnostics/RunReport.d.ts +10 -5
- package/dist/composites/webrtc-diagnostics/endpoint-probe.d.ts +41 -21
- package/dist/composites/webrtc-diagnostics/endpoint-test.d.ts +37 -32
- package/dist/composites/webrtc-diagnostics/format.d.ts +3 -3
- package/dist/composites/webrtc-diagnostics/ice-candidates.d.ts +49 -49
- package/dist/composites/webrtc-diagnostics/nat-mapping.d.ts +36 -36
- package/dist/composites/webrtc-diagnostics/session-run.d.ts +108 -95
- package/dist/composites/webrtc-diagnostics/session-verdict.d.ts +29 -20
- package/dist/composites/widget-panel.d.ts +23 -23
- package/dist/composites/widget-slot.d.ts +35 -17
- package/dist/contexts/custom-field-renderers.d.ts +53 -17
- package/dist/contexts/device-context.d.ts +32 -12
- package/dist/contexts/device-quick-detail.d.ts +13 -4
- package/dist/contexts/player-overlays.d.ts +82 -42
- package/dist/contexts/recorded-playback.d.ts +40 -18
- package/dist/contexts/system-context.d.ts +28 -13
- package/dist/contexts/vod-playback.d.ts +39 -22
- package/dist/contexts/widget-registry.d.ts +139 -102
- package/dist/contexts/zone-editing.d.ts +69 -46
- package/dist/generated/system-hooks.d.ts +17 -1
- package/dist/hooks/index.d.ts +43 -43
- package/dist/hooks/turn-server-cache.d.ts +69 -69
- package/dist/hooks/use-capability-presence.d.ts +65 -28
- package/dist/hooks/use-cluster-nodes.d.ts +54 -27
- package/dist/hooks/use-device-autotrack.d.ts +7 -7
- package/dist/hooks/use-device-battery.d.ts +24 -11
- package/dist/hooks/use-device-cap-slice.d.ts +15 -15
- package/dist/hooks/use-device-capability.d.ts +61 -27
- package/dist/hooks/use-device-detections.d.ts +32 -32
- package/dist/hooks/use-device-features.d.ts +18 -18
- package/dist/hooks/use-device-list-page-size.d.ts +19 -6
- package/dist/hooks/use-device-network-link.d.ts +15 -7
- package/dist/hooks/use-device-proxy.d.ts +98 -92
- package/dist/hooks/use-device-snapshot.d.ts +23 -23
- package/dist/hooks/use-device-webrtc.d.ts +211 -205
- package/dist/hooks/use-devices.d.ts +9 -9
- package/dist/hooks/use-doorbell-events.d.ts +13 -13
- package/dist/hooks/use-event-stream.d.ts +6 -3
- package/dist/hooks/use-is-mobile.d.ts +5 -5
- package/dist/hooks/use-live-buffer.d.ts +5 -5
- package/dist/hooks/use-live-event.d.ts +1 -1
- package/dist/hooks/use-navigation.d.ts +20 -20
- package/dist/hooks/use-optimistic-slice.d.ts +13 -13
- package/dist/hooks/use-persisted-page-size.d.ts +10 -10
- package/dist/hooks/use-ptz.d.ts +108 -108
- package/dist/hooks/use-stationary-overlay.d.ts +37 -37
- package/dist/hooks/use-system-query.d.ts +33 -10
- package/dist/hooks/use-url-query.d.ts +3 -3
- package/dist/icons/index.d.ts +2 -2
- package/dist/icons/provider-icons.d.ts +2 -2
- package/dist/icons/status-icons.d.ts +2 -2
- package/dist/index.cjs +123 -69
- package/dist/index.d.ts +31 -27
- package/dist/index.js +123 -69
- package/dist/lib/cap-error.d.ts +18 -39
- package/dist/lib/cn.d.ts +1 -1
- package/dist/lib/fleet-query-defaults.d.ts +68 -34
- package/dist/lib/format-control-datetime.d.ts +16 -16
- package/dist/lib/format-duration.d.ts +12 -12
- package/dist/lib/format-last-seen.d.ts +5 -18
- package/dist/lib/format-numeric.d.ts +7 -7
- package/dist/lib/hub-mount.d.ts +8 -42
- package/dist/lib/index.d.ts +21 -21
- package/dist/lib/phase-config.d.ts +24 -11
- package/dist/lib/pipeline-mirror.d.ts +16 -16
- package/dist/lib/recorded-control-protocol.d.ts +41 -43
- package/dist/lib/resolve-sensor-display.d.ts +36 -20
- package/dist/lib/responsive.d.ts +54 -54
- package/dist/lib/scrub-controller.d.ts +75 -78
- package/dist/lib/shared-context.d.ts +27 -2
- package/dist/lib/tailwind-variants.d.ts +20 -20
- package/dist/primitives/badge.d.ts +5 -10
- package/dist/primitives/bottom-sheet.d.ts +7 -7
- package/dist/primitives/button.d.ts +5 -9
- package/dist/primitives/card.d.ts +4 -8
- package/dist/primitives/checkbox.d.ts +3 -4
- package/dist/primitives/collapsible-card.d.ts +23 -13
- package/dist/primitives/dialog.d.ts +33 -59
- package/dist/primitives/dropdown.d.ts +13 -13
- package/dist/primitives/floating-panel.d.ts +41 -20
- package/dist/primitives/icon-button.d.ts +8 -12
- package/dist/primitives/index.d.ts +22 -22
- package/dist/primitives/input.d.ts +6 -16
- package/dist/primitives/label.d.ts +3 -4
- package/dist/primitives/mobile-drawer.d.ts +8 -8
- package/dist/primitives/password-input.d.ts +18 -18
- package/dist/primitives/popover.d.ts +7 -7
- package/dist/primitives/scroll-area.d.ts +3 -4
- package/dist/primitives/select.d.ts +20 -20
- package/dist/primitives/separator.d.ts +4 -8
- package/dist/primitives/skeleton.d.ts +3 -4
- package/dist/primitives/switch.d.ts +6 -6
- package/dist/primitives/tabs.d.ts +26 -26
- package/dist/primitives/tooltip.d.ts +12 -12
- package/dist/theme/create-theme.d.ts +1 -1
- package/dist/theme/defaults.d.ts +1 -1
- package/dist/theme/index.d.ts +6 -6
- package/dist/theme/theme-provider.d.ts +8 -7
- package/dist/theme/theme-to-css.d.ts +1 -1
- package/dist/theme/types.d.ts +98 -100
- package/dist/theme/use-theme-mode.d.ts +1 -1
- package/dist/trpc-react.d.ts +23 -3
- package/dist/widgets/host-widgets.d.ts +4 -4
- package/package.json +8 -4
- package/src/tailwind/camstack-theme.css +11 -0
- package/dist/composites/unit-picker/UnitPicker.spec.d.ts +0 -1
|
@@ -1,53 +1,115 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The ONE modal dialog of the product — confirm, alert and prompt.
|
|
3
|
+
*
|
|
4
|
+
* ## Why all three live here
|
|
5
|
+
*
|
|
6
|
+
* The admin UI used to reach for `window.confirm` / `window.alert` /
|
|
7
|
+
* `window.prompt` wherever a `useConfirm()` call was inconvenient. A native
|
|
8
|
+
* dialog is wrong on three counts, and the operator hit the worst one on
|
|
9
|
+
* Identity → Users: resetting a password opened `window.prompt`, which
|
|
10
|
+
* **cannot mask its input**. A new password was typed in clear text, into a
|
|
11
|
+
* box the browser may offer to remember. On top of that a native dialog
|
|
12
|
+
* matches none of the product's visual language and the host can neither style
|
|
13
|
+
* nor test it.
|
|
14
|
+
*
|
|
15
|
+
* So the fix is not "a password modal" — a second dialog component is the
|
|
16
|
+
* defect, not the cure. The provider that already served every confirm in the
|
|
17
|
+
* admin UI (and in the viewer, which documents its own copy as "deliberately
|
|
18
|
+
* the same one `@camstack/ui-library` exposes to the admin UI") grew two more
|
|
19
|
+
* intents. One provider, one backdrop, one visual language, one set of
|
|
20
|
+
* keyboard rules.
|
|
21
|
+
*
|
|
22
|
+
* ## The three intents are NOT one control
|
|
23
|
+
*
|
|
24
|
+
* - `confirm` — a destructive yes/no. It names what is destroyed, and for the
|
|
25
|
+
* `danger` variant the destructive button is the NON-default: opening focus
|
|
26
|
+
* lands on Cancel, so a reflexive Enter cancels.
|
|
27
|
+
* - `alert` — an error/notice with a single acknowledge.
|
|
28
|
+
* - `prompt` — one text input with OK/Cancel. `inputType: 'password'` masks it
|
|
29
|
+
* (and opts out of autofill/remember); `readOnly` turns it into a readable,
|
|
30
|
+
* select-all-on-open field, which is the shape the copy-to-clipboard
|
|
31
|
+
* fallback needs — a password box would be actively wrong there.
|
|
32
|
+
*
|
|
33
|
+
* ## Why the surface is a native `<dialog>`
|
|
34
|
+
*
|
|
35
|
+
* These dialogs open OVER surfaces that are themselves native `<dialog>`s
|
|
36
|
+
* opened with `showModal()` — the event detail panel, the similar-groups
|
|
37
|
+
* modal. A `showModal()` dialog is promoted to the TOP LAYER and everything
|
|
38
|
+
* outside it is inert, so a plain `fixed inset-0` overlay rendered at the app
|
|
39
|
+
* root would be drawn behind that backdrop and could not be clicked at all.
|
|
40
|
+
* Confirming a track delete from the detail panel would have been impossible.
|
|
41
|
+
* So this surface is a `<dialog>` of its own: the top layer stacks, the newest
|
|
42
|
+
* `showModal()` wins, and the confirm sits above the panel that asked for it.
|
|
43
|
+
*
|
|
44
|
+
* jsdom implements `<dialog>` but not `showModal()`, so the open falls back to
|
|
45
|
+
* the `open` attribute there. Everything this component does — focus, keys,
|
|
46
|
+
* resolution — is identical on both paths; only the top-layer promotion, which
|
|
47
|
+
* jsdom cannot model at all, is missing. The fallback is asserted below.
|
|
48
|
+
*
|
|
49
|
+
* ## Focus, and why there is NO focus trap
|
|
50
|
+
*
|
|
51
|
+
* A `showModal()` dialog already scopes the tab ring to itself, and the
|
|
52
|
+
* surfaces underneath (`SlideOverPanel`) implement no trap of their own. A
|
|
53
|
+
* second, hand-rolled focus trap on top of that is how a page becomes
|
|
54
|
+
* unescapable, so this component deliberately does not trap. What it does do:
|
|
55
|
+
*
|
|
56
|
+
* - focuses the input (prompt) or the DEFAULT button on open,
|
|
57
|
+
* - restores focus to the previously focused element on close,
|
|
58
|
+
* - handles Escape/Enter from a `keydown` on the dialog itself and calls
|
|
59
|
+
* `stopPropagation()`. React attaches its listeners at the root container, so
|
|
60
|
+
* stopping there keeps the event from reaching the `window` Escape listener
|
|
61
|
+
* of whatever modal is underneath: one Escape closes ONE dialog.
|
|
62
|
+
*/
|
|
63
|
+
import { type JSX, type ReactNode } from "react";
|
|
64
|
+
export type DialogVariant = "danger" | "warning" | "default";
|
|
3
65
|
export interface ConfirmOptions {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
66
|
+
readonly title: string;
|
|
67
|
+
readonly message: string;
|
|
68
|
+
readonly confirmLabel?: string;
|
|
69
|
+
readonly cancelLabel?: string;
|
|
70
|
+
readonly variant?: DialogVariant;
|
|
9
71
|
}
|
|
10
72
|
export interface AlertOptions {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
73
|
+
readonly title: string;
|
|
74
|
+
readonly message: string;
|
|
75
|
+
readonly acknowledgeLabel?: string;
|
|
76
|
+
readonly variant?: DialogVariant;
|
|
15
77
|
}
|
|
16
|
-
export type PromptInputType =
|
|
78
|
+
export type PromptInputType = "text" | "password";
|
|
17
79
|
export interface PromptOptions {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
80
|
+
readonly title: string;
|
|
81
|
+
/** Explanatory paragraph above the field. */
|
|
82
|
+
readonly message?: string;
|
|
83
|
+
/** Label rendered against the input. Defaults to the title. */
|
|
84
|
+
readonly label?: string;
|
|
85
|
+
readonly defaultValue?: string;
|
|
86
|
+
/** `password` masks the value and opts out of autofill/remember. */
|
|
87
|
+
readonly inputType?: PromptInputType;
|
|
88
|
+
readonly placeholder?: string;
|
|
89
|
+
readonly confirmLabel?: string;
|
|
90
|
+
readonly cancelLabel?: string;
|
|
91
|
+
/**
|
|
92
|
+
* A field the operator reads/copies rather than edits (the clipboard
|
|
93
|
+
* fallback). Rendered unmasked, selected on open, with no validation.
|
|
94
|
+
*/
|
|
95
|
+
readonly readOnly?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Returns an error message to REFUSE the value and keep the dialog open, or
|
|
98
|
+
* `null` to accept. Runs on submit — the dialog is the validation surface, so
|
|
99
|
+
* a refusal never needs a second `alert`.
|
|
100
|
+
*/
|
|
101
|
+
readonly validate?: (value: string) => string | null;
|
|
102
|
+
/**
|
|
103
|
+
* `danger` paints the affirmative button as destructive — a typed
|
|
104
|
+
* confirmation ("type 17 to revoke 17 links") is a prompt whose OK destroys.
|
|
105
|
+
* Focus still opens on the field. Default: `default`.
|
|
106
|
+
*/
|
|
107
|
+
readonly variant?: DialogVariant;
|
|
46
108
|
}
|
|
47
109
|
export interface DialogContextValue {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
110
|
+
readonly confirm: (options: ConfirmOptions) => Promise<boolean>;
|
|
111
|
+
readonly alert: (options: AlertOptions) => Promise<void>;
|
|
112
|
+
readonly prompt: (options: PromptOptions) => Promise<string | null>;
|
|
51
113
|
}
|
|
52
114
|
export declare function useConfirm(): (options: ConfirmOptions) => Promise<boolean>;
|
|
53
115
|
/** An error/notice with a single acknowledge. Replaces `window.alert`. */
|
|
@@ -55,10 +117,10 @@ export declare function useAlert(): (options: AlertOptions) => Promise<void>;
|
|
|
55
117
|
/** One text input with OK/Cancel. Replaces `window.prompt`. */
|
|
56
118
|
export declare function usePrompt(): (options: PromptOptions) => Promise<string | null>;
|
|
57
119
|
export declare function ConfirmDialogProvider({ children }: {
|
|
58
|
-
|
|
59
|
-
}):
|
|
120
|
+
children: ReactNode;
|
|
121
|
+
}): JSX.Element;
|
|
60
122
|
/**
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
123
|
+
* Promotes `el` to the top layer. jsdom has `<dialog>` but no `showModal`, so
|
|
124
|
+
* the attribute is the fallback — see the file docblock.
|
|
125
|
+
*/
|
|
64
126
|
export declare function openTopLayer(el: HTMLDialogElement): void;
|
|
@@ -1,21 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `CopyButton` — a compact button that copies a string `value` to the
|
|
3
|
+
* clipboard via `navigator.clipboard.writeText`, showing a brief
|
|
4
|
+
* "copied" check state. Addon-agnostic; used wherever a secret / URL
|
|
5
|
+
* needs a one-click copy affordance (export setup panels, etc.).
|
|
6
|
+
*/
|
|
7
|
+
import { type ReactElement } from "react";
|
|
2
8
|
export interface CopyButtonProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
/** String copied to the clipboard when the button is pressed. */
|
|
10
|
+
readonly value: string;
|
|
11
|
+
/** Optional visible label rendered next to the icon. Icon-only when omitted.
|
|
12
|
+
*
|
|
13
|
+
* Do NOT pass the name of the field the button sits next to: the row
|
|
14
|
+
* already shows it, and the repeat is what overlapped the value on a phone
|
|
15
|
+
* (a token row rendered its own name on top of the masked secret). Use
|
|
16
|
+
* {@link CopyButtonProps.srLabel} for that — it names the target for screen
|
|
17
|
+
* readers without spending horizontal space. */
|
|
18
|
+
readonly label?: string;
|
|
19
|
+
/** Names what is copied, for assistive tech only — never rendered. Falls back
|
|
20
|
+
* to `label`, then to a generic word. */
|
|
21
|
+
readonly srLabel?: string;
|
|
22
|
+
/** Extra classes merged onto the button. */
|
|
23
|
+
readonly className?: string;
|
|
24
|
+
/** Disable the button (e.g. nothing to copy). */
|
|
25
|
+
readonly disabled?: boolean;
|
|
20
26
|
}
|
|
21
|
-
export declare function CopyButton({ value, label, srLabel, className, disabled
|
|
27
|
+
export declare function CopyButton({ value, label, srLabel, className, disabled }: CopyButtonProps): ReactElement;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { HeaderGroup, flexRender } from
|
|
2
|
-
import { SortingState } from
|
|
1
|
+
import type { HeaderGroup, flexRender } from "@tanstack/react-table";
|
|
2
|
+
import type { SortingState } from "./types";
|
|
3
|
+
import { type JSX } from "react";
|
|
3
4
|
interface DataTableHeaderProps<T> {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
headerGroups: HeaderGroup<T>[];
|
|
6
|
+
onSortingChange?: (sorting: SortingState) => void;
|
|
7
|
+
stickyHeader?: boolean;
|
|
8
|
+
flexRender: typeof flexRender;
|
|
8
9
|
}
|
|
9
|
-
export declare function DataTableHeader<T>({ headerGroups, onSortingChange, stickyHeader, flexRender: render
|
|
10
|
+
export declare function DataTableHeader<T>({ headerGroups, onSortingChange, stickyHeader, flexRender: render }: DataTableHeaderProps<T>): JSX.Element;
|
|
10
11
|
export {};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { PaginationState } from
|
|
1
|
+
import type { PaginationState } from "./types";
|
|
2
|
+
import { type JSX } from "react";
|
|
2
3
|
interface DataTablePaginationProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
page: number;
|
|
5
|
+
pageSize: number;
|
|
6
|
+
total: number;
|
|
7
|
+
onPaginationChange?: (pagination: PaginationState) => void;
|
|
7
8
|
}
|
|
8
|
-
export declare function DataTablePagination({ page, pageSize, total, onPaginationChange
|
|
9
|
+
export declare function DataTablePagination({ page, pageSize, total, onPaginationChange }: DataTablePaginationProps): JSX.Element;
|
|
9
10
|
export {};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Row, flexRender } from
|
|
2
|
-
import {
|
|
1
|
+
import type { Row, flexRender } from "@tanstack/react-table";
|
|
2
|
+
import type { JSX } from "react";
|
|
3
|
+
import type { DataTableAction } from "./types";
|
|
3
4
|
interface DataTableRowProps<T> {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
row: Row<T>;
|
|
6
|
+
onRowClick?: (row: T) => void;
|
|
7
|
+
rowActions?: (row: T) => DataTableAction[];
|
|
8
|
+
flexRender: typeof flexRender;
|
|
8
9
|
}
|
|
9
|
-
export declare function DataTableRow<T>({ row, onRowClick, rowActions, flexRender: render
|
|
10
|
+
export declare function DataTableRow<T>({ row, onRowClick, rowActions, flexRender: render }: DataTableRowProps<T>): JSX.Element;
|
|
10
11
|
export {};
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { type JSX } from "react";
|
|
2
|
+
import type { DataTableProps } from "./types";
|
|
3
|
+
export declare function DataTable<T>({ data, columns: userColumns, sorting, onSortingChange, filtering, onFilteringChange, pagination, onPaginationChange, loading, emptyState, rowActions, onRowClick, selectable, compact, stickyHeader, className, mobileMode }: DataTableProps<T>): JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { DataTable } from
|
|
2
|
-
export type { DataTableProps, ColumnDef, SortingState, ColumnFiltersState, PaginationState, DataTableAction
|
|
1
|
+
export { DataTable } from "./data-table";
|
|
2
|
+
export type { DataTableProps, ColumnDef, SortingState, ColumnFiltersState, PaginationState, DataTableAction } from "./types";
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { ColumnDef, SortingState, ColumnFiltersState, PaginationState } from
|
|
2
|
-
import { ReactNode } from
|
|
3
|
-
import { LucideIcon } from
|
|
1
|
+
import type { ColumnDef, SortingState, ColumnFiltersState, PaginationState } from "@tanstack/react-table";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
import type { LucideIcon } from "lucide-react";
|
|
4
4
|
export type { ColumnDef, SortingState, ColumnFiltersState, PaginationState };
|
|
5
5
|
export interface DataTableAction {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
label: string;
|
|
7
|
+
icon?: LucideIcon;
|
|
8
|
+
onClick: () => void;
|
|
9
|
+
variant?: "danger" | "default";
|
|
10
10
|
}
|
|
11
11
|
export interface DataTableProps<T> {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
12
|
+
data: T[];
|
|
13
|
+
columns: ColumnDef<T, unknown>[];
|
|
14
|
+
sorting?: SortingState;
|
|
15
|
+
onSortingChange?: (sorting: SortingState) => void;
|
|
16
|
+
filtering?: ColumnFiltersState;
|
|
17
|
+
onFilteringChange?: (filtering: ColumnFiltersState) => void;
|
|
18
|
+
pagination?: {
|
|
19
|
+
page: number;
|
|
20
|
+
pageSize: number;
|
|
21
|
+
total: number;
|
|
22
|
+
};
|
|
23
|
+
onPaginationChange?: (pagination: PaginationState) => void;
|
|
24
|
+
loading?: boolean;
|
|
25
|
+
emptyState?: ReactNode;
|
|
26
|
+
rowActions?: (row: T) => DataTableAction[];
|
|
27
|
+
onRowClick?: (row: T) => void;
|
|
28
|
+
selectable?: boolean;
|
|
29
|
+
compact?: boolean;
|
|
30
|
+
stickyHeader?: boolean;
|
|
31
|
+
className?: string;
|
|
32
|
+
/** How to render on mobile. 'scroll' keeps table with horizontal scroll. 'cards' renders each row as a card. Default: 'scroll' */
|
|
33
|
+
mobileMode?: "scroll" | "cards";
|
|
34
34
|
}
|
|
@@ -1,36 +1,37 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { JSX } from "react";
|
|
2
|
+
import { type DataTableFacet, type DataTableFilterState } from "./data-table-filter";
|
|
2
3
|
/** One facet group as the bar draws it. */
|
|
3
4
|
export interface DataTableFilterBarGroup {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
readonly id: string;
|
|
6
|
+
/** Visible caption AND the chip group's accessible name ("Status"). */
|
|
7
|
+
readonly label: string;
|
|
8
|
+
readonly facets: readonly DataTableFacet[];
|
|
9
|
+
readonly selected: readonly string[];
|
|
10
|
+
/** Render a chip's caption. Default: the raw value. */
|
|
11
|
+
readonly facetLabel?: (value: string) => string;
|
|
11
12
|
}
|
|
12
13
|
export interface DataTableFilterBarLabels {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
/** Placeholder of the search box. */
|
|
15
|
+
readonly searchPlaceholder: string;
|
|
16
|
+
/** Accessible name of the search box — say WHICH table, two of them on one
|
|
17
|
+
* page are otherwise indistinguishable to a screen reader. */
|
|
18
|
+
readonly searchLabel: string;
|
|
19
|
+
/** Accessible name of the chip group. */
|
|
20
|
+
readonly facetsLabel: string;
|
|
21
|
+
/** The clear-filters button. */
|
|
22
|
+
readonly clearLabel: string;
|
|
22
23
|
}
|
|
23
24
|
export interface DataTableFilterBarProps {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
readonly state: DataTableFilterState;
|
|
26
|
+
readonly facets: readonly DataTableFacet[];
|
|
27
|
+
readonly labels: DataTableFilterBarLabels;
|
|
28
|
+
readonly onSearch: (search: string) => void;
|
|
29
|
+
readonly onToggleFacet: (value: string) => void;
|
|
30
|
+
readonly onClear: () => void;
|
|
31
|
+
/** Render a chip's caption. Default: the raw value. */
|
|
32
|
+
readonly facetLabel?: (value: string) => string;
|
|
33
|
+
/** Further chip rows (status, owner, kind…), each its own group. */
|
|
34
|
+
readonly groups?: readonly DataTableFilterBarGroup[];
|
|
35
|
+
readonly onToggleGroupFacet?: (groupId: string, value: string) => void;
|
|
35
36
|
}
|
|
36
|
-
export declare function DataTableFilterBar({ state, facets, labels, onSearch, onToggleFacet, onClear, facetLabel, groups, onToggleGroupFacet
|
|
37
|
+
export declare function DataTableFilterBar({ state, facets, labels, onSearch, onToggleFacet, onClear, facetLabel, groups, onToggleGroupFacet }: DataTableFilterBarProps): JSX.Element;
|
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
export interface DataTableFilterState {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
/** Case- and separator-insensitive substring, see `fuzzyMatch`. */
|
|
3
|
+
readonly search: string;
|
|
4
|
+
/** Selected facet values. Empty = every row. */
|
|
5
|
+
readonly facets: readonly string[];
|
|
6
|
+
/**
|
|
7
|
+
* Selected chips per facet GROUP (`facetGroups[].id` → values). OR inside a
|
|
8
|
+
* group, AND across groups. Absent or empty = the group does not filter.
|
|
9
|
+
*/
|
|
10
|
+
readonly groups?: Readonly<Record<string, readonly string[]>>;
|
|
11
11
|
}
|
|
12
12
|
export declare const EMPTY_DATA_TABLE_FILTER: DataTableFilterState;
|
|
13
13
|
/** One independent chip row — status, owner, kind… */
|
|
14
14
|
export interface DataTableFacetGroupConfig<T> {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
/** Stable id; the key of `DataTableFilterState.groups`. */
|
|
16
|
+
readonly id: string;
|
|
17
|
+
/** The value this row contributes to THIS group's chips. */
|
|
18
|
+
readonly value: (row: T) => string;
|
|
19
19
|
}
|
|
20
20
|
/** A group's chips, derived from the rows. */
|
|
21
21
|
export interface DataTableFacetGroup {
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
readonly id: string;
|
|
23
|
+
readonly facets: readonly DataTableFacet[];
|
|
24
24
|
}
|
|
25
25
|
/** One facet chip, with how many of the rows carry it. */
|
|
26
26
|
export interface DataTableFacet {
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
readonly value: string;
|
|
28
|
+
readonly count: number;
|
|
29
29
|
}
|
|
30
30
|
export interface DataTableFilterConfig<T> {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
/** Every text the search is matched against for this row — a name, and
|
|
32
|
+
* whatever else an operator would type to find it (a nested accessory's
|
|
33
|
+
* name, an id). */
|
|
34
|
+
readonly searchText: (row: T) => readonly string[];
|
|
35
|
+
/** The value this row contributes to the facet chips. Omit for a table
|
|
36
|
+
* with a search box only. */
|
|
37
|
+
readonly facetValue?: (row: T) => string;
|
|
38
|
+
/** Further chip rows, each filtering on its own dimension. */
|
|
39
|
+
readonly facetGroups?: readonly DataTableFacetGroupConfig<T>[];
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
* The facet chips for these rows: one per distinct value, most common first,
|
|
43
|
+
* ties by value.
|
|
44
|
+
*/
|
|
45
45
|
export declare function dataTableFacets<T>(rows: readonly T[], facetValue: ((row: T) => string) | undefined): readonly DataTableFacet[];
|
|
46
46
|
/** One chip row per configured group, each derived like {@link dataTableFacets}. */
|
|
47
47
|
export declare function dataTableFacetGroups<T>(rows: readonly T[], groups: readonly DataTableFacetGroupConfig<T>[] | undefined): readonly DataTableFacetGroup[];
|
|
@@ -51,9 +51,9 @@ export declare function toggleDataTableGroupFacet(state: DataTableFilterState, g
|
|
|
51
51
|
/** A new state with `value` added to, or removed from, the selected facets. */
|
|
52
52
|
export declare function toggleDataTableFacet(state: DataTableFilterState, value: string): DataTableFilterState;
|
|
53
53
|
/**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
* The rows that survive the filter, in their incoming order.
|
|
55
|
+
*
|
|
56
|
+
* A selected facet that none of `rows` carries is dropped from the effective
|
|
57
|
+
* selection (see the header), so a chip that is not on screen never filters.
|
|
58
|
+
*/
|
|
59
59
|
export declare function filterDataTableRows<T>(rows: readonly T[], state: DataTableFilterState, config: DataTableFilterConfig<T>): readonly T[];
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
2
|
+
* The one decision a shared table has to make on a phone.
|
|
3
|
+
*
|
|
4
|
+
* A wide table has no good phone rendering. There are exactly two honest
|
|
5
|
+
* answers — become a list of cards, or scroll horizontally INSIDE its own
|
|
6
|
+
* container while the page body never moves sideways — and shrinking the font
|
|
7
|
+
* is not one of them. `DataTable` supports both; this module decides which, so
|
|
8
|
+
* the choice is a pure, testable rule instead of per-page CSS.
|
|
9
|
+
*
|
|
10
|
+
* The default is a table that scrolls horizontally inside its own container.
|
|
11
|
+
* Cards exist as an explicit `mobileMode="cards"` opt-in. `auto` still
|
|
12
|
+
* applies a column-count rule for surfaces that want the old behaviour.
|
|
13
|
+
*
|
|
14
|
+
* Pass an explicit `mobileMode` to override per table.
|
|
15
|
+
*/
|
|
16
16
|
/** Per-table override. `auto` applies the column-count rule below. */
|
|
17
|
-
export type TableMobileMode =
|
|
17
|
+
export type TableMobileMode = "auto" | "scroll" | "cards";
|
|
18
18
|
/** How the table renders once the decision is made. */
|
|
19
|
-
export type TableLayoutKind =
|
|
19
|
+
export type TableLayoutKind = "table" | "cards";
|
|
20
20
|
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
* At this many columns and above, `auto` switches a narrow viewport to cards.
|
|
22
|
+
* Three columns still fit a phone at a readable size; four do not.
|
|
23
|
+
*/
|
|
24
24
|
export declare const CARD_MODE_MIN_COLUMNS = 4;
|
|
25
25
|
export interface ResolveTableLayoutInput {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
readonly mode: TableMobileMode;
|
|
27
|
+
readonly columnCount: number;
|
|
28
|
+
/** Viewport below the card breakpoint (`useIsMobile`). */
|
|
29
|
+
readonly isNarrow: boolean;
|
|
30
30
|
}
|
|
31
|
-
export declare function resolveTableLayout({ mode, columnCount, isNarrow
|
|
31
|
+
export declare function resolveTableLayout({ mode, columnCount, isNarrow }: ResolveTableLayoutInput): TableLayoutKind;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { DataTablePage, DataTablePaginationLabels } from
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { DataTablePage, DataTablePaginationLabels } from "./data-table-pagination";
|
|
3
3
|
export interface DataTablePagerProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
readonly page: DataTablePage<unknown>;
|
|
5
|
+
readonly labels: DataTablePaginationLabels;
|
|
6
|
+
readonly onPageChange: (page: number) => void;
|
|
7
7
|
}
|
|
8
8
|
export declare function DataTablePager({ page, labels, onPageChange }: DataTablePagerProps): ReactNode;
|