@camstack/ui-library 0.1.57 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/dist/composites/addon-global-settings-form.d.ts +1 -1
  2. package/dist/composites/agent-step-editor.d.ts +1 -1
  3. package/dist/composites/app-shell/app-shell.d.ts +1 -1
  4. package/dist/composites/app-shell/sidebar-item.d.ts +1 -1
  5. package/dist/composites/app-shell/sidebar.d.ts +1 -1
  6. package/dist/composites/audio-classification-list.d.ts +1 -1
  7. package/dist/composites/audio-level-waveform.d.ts +1 -1
  8. package/dist/composites/audio-waveform.d.ts +1 -1
  9. package/dist/composites/battery-badge.d.ts +4 -1
  10. package/dist/composites/breadcrumb.d.ts +2 -1
  11. package/dist/composites/camera-stream-player.d.ts +94 -2
  12. package/dist/composites/cap-settings/AutotrackSection.d.ts +1 -1
  13. package/dist/composites/cap-settings/ConsumablesPanel.d.ts +2 -0
  14. package/dist/composites/cap-settings/CoverageTrack.d.ts +12 -0
  15. package/dist/composites/cap-settings/EventBucketStrip.d.ts +25 -0
  16. package/dist/composites/cap-settings/EventHeatmap.d.ts +10 -0
  17. package/dist/composites/cap-settings/MaskShapeCanvas.d.ts +1 -1
  18. package/dist/composites/cap-settings/MotionZonesSettings.d.ts +1 -1
  19. package/dist/composites/cap-settings/PrivacyMaskSettings.d.ts +1 -1
  20. package/dist/composites/cap-settings/PtzPanel.d.ts +1 -1
  21. package/dist/composites/cap-settings/RecordingPanel.d.ts +2 -0
  22. package/dist/composites/cap-settings/RecordingRulesEditor.d.ts +7 -0
  23. package/dist/composites/cap-settings/RecordingSettings.d.ts +8 -0
  24. package/dist/composites/cap-settings/RecordingTimeline.d.ts +5 -0
  25. package/dist/composites/cap-settings/ScheduleBandsEditor.d.ts +7 -0
  26. package/dist/composites/cap-settings/TimelineControls.d.ts +21 -0
  27. package/dist/composites/cap-settings/event-thumb.d.ts +11 -0
  28. package/dist/composites/cap-settings/index.d.ts +4 -0
  29. package/dist/composites/cap-settings/recording-config-form.d.ts +34 -0
  30. package/dist/composites/cap-settings/recording-spans.d.ts +22 -0
  31. package/dist/composites/cap-settings/recording-timeline-model.d.ts +84 -0
  32. package/dist/composites/code-block.d.ts +1 -1
  33. package/dist/composites/config-form-builder.d.ts +1 -1
  34. package/dist/composites/config-form-field.d.ts +3 -3
  35. package/dist/composites/confirm-action-button.d.ts +1 -1
  36. package/dist/composites/confirm-dialog.d.ts +1 -1
  37. package/dist/composites/data-table/data-table-header.d.ts +1 -1
  38. package/dist/composites/data-table/data-table-pagination.d.ts +1 -1
  39. package/dist/composites/data-table/data-table-row.d.ts +1 -1
  40. package/dist/composites/data-table/data-table.d.ts +1 -1
  41. package/dist/composites/data-table.d.ts +1 -1
  42. package/dist/composites/detection-canvas.d.ts +1 -1
  43. package/dist/composites/detection-overlay.d.ts +1 -1
  44. package/dist/composites/detection-result-tree.d.ts +1 -1
  45. package/dist/composites/dev-shell.d.ts +1 -1
  46. package/dist/composites/device-activity-panel.d.ts +5 -1
  47. package/dist/composites/device-card.d.ts +1 -1
  48. package/dist/composites/device-controls/alarm-hero-card.d.ts +24 -0
  49. package/dist/composites/device-controls/atoms.d.ts +81 -0
  50. package/dist/composites/device-controls/brightness-panel.d.ts +3 -0
  51. package/dist/composites/device-controls/button-control.d.ts +18 -0
  52. package/dist/composites/device-controls/climate-panel.d.ts +16 -0
  53. package/dist/composites/device-controls/container-primary-hero.d.ts +24 -0
  54. package/dist/composites/device-controls/container-primary.d.ts +46 -0
  55. package/dist/composites/device-controls/control-panel.d.ts +10 -0
  56. package/dist/composites/device-controls/control-registry.d.ts +74 -0
  57. package/dist/composites/device-controls/cover-hero-card.d.ts +27 -0
  58. package/dist/composites/device-controls/cover-inline.d.ts +27 -0
  59. package/dist/composites/device-controls/cover-panel.d.ts +3 -0
  60. package/dist/composites/device-controls/dummy-hero-card.d.ts +6 -0
  61. package/dist/composites/device-controls/fan-hero-card.d.ts +21 -0
  62. package/dist/composites/device-controls/fan-panel.d.ts +3 -0
  63. package/dist/composites/device-controls/humidifier-control.d.ts +37 -0
  64. package/dist/composites/device-controls/image-control.d.ts +24 -0
  65. package/dist/composites/device-controls/index.d.ts +33 -0
  66. package/dist/composites/device-controls/lawn-mower-control.d.ts +24 -0
  67. package/dist/composites/device-controls/light-hero-card.d.ts +16 -0
  68. package/dist/composites/device-controls/lock-hero-card.d.ts +15 -0
  69. package/dist/composites/device-controls/lock-panel.d.ts +3 -0
  70. package/dist/composites/device-controls/media-player-hero-card.d.ts +17 -0
  71. package/dist/composites/device-controls/media-player-panel.d.ts +9 -0
  72. package/dist/composites/device-controls/offline-badge.d.ts +11 -0
  73. package/dist/composites/device-controls/panel-controls.d.ts +17 -0
  74. package/dist/composites/device-controls/popover-row-action.d.ts +9 -0
  75. package/dist/composites/device-controls/primary-child.d.ts +18 -0
  76. package/dist/composites/device-controls/radial-gauge.d.ts +20 -0
  77. package/dist/composites/device-controls/sensor-hero-card.d.ts +10 -0
  78. package/dist/composites/device-controls/sensor-inline-control.d.ts +11 -0
  79. package/dist/composites/device-controls/sensor-value-atom.d.ts +106 -0
  80. package/dist/composites/device-controls/switch-hero-card.d.ts +13 -0
  81. package/dist/composites/device-controls/switch-panel.d.ts +3 -0
  82. package/dist/composites/device-controls/tap-toggle.d.ts +17 -0
  83. package/dist/composites/device-controls/thermostat-hero-card.d.ts +17 -0
  84. package/dist/composites/device-controls/types.d.ts +17 -0
  85. package/dist/composites/device-controls/update-control.d.ts +11 -0
  86. package/dist/composites/device-controls/vacuum-control.d.ts +36 -0
  87. package/dist/composites/device-controls/valve-control.d.ts +46 -0
  88. package/dist/composites/device-controls/water-heater-control.d.ts +41 -0
  89. package/dist/composites/device-controls/weather-control.d.ts +41 -0
  90. package/dist/composites/device-export-panel.d.ts +1 -1
  91. package/dist/composites/device-grid.d.ts +1 -1
  92. package/dist/composites/device-item/actions.d.ts +12 -1
  93. package/dist/composites/device-item/child-layout.d.ts +32 -0
  94. package/dist/composites/device-item/child-section-accordion.d.ts +9 -0
  95. package/dist/composites/device-item/children-accordion.d.ts +1 -1
  96. package/dist/composites/device-item/container-children-context.d.ts +15 -0
  97. package/dist/composites/device-item/device-delete-action.d.ts +8 -0
  98. package/dist/composites/device-item/header.d.ts +8 -1
  99. package/dist/composites/device-item/helpers.d.ts +108 -2
  100. package/dist/composites/device-item/index.d.ts +4 -0
  101. package/dist/composites/device-item/preview.d.ts +3 -3
  102. package/dist/composites/device-item/reboot-quick-action.d.ts +9 -0
  103. package/dist/composites/device-item/status-dot.d.ts +4 -1
  104. package/dist/composites/device-list/batch-actions-bar.d.ts +15 -0
  105. package/dist/composites/device-list/batch-toolbar.d.ts +15 -0
  106. package/dist/composites/device-list/cards-layout.d.ts +18 -0
  107. package/dist/composites/device-list/columns.d.ts +68 -0
  108. package/dist/composites/device-list/device-mode.d.ts +115 -0
  109. package/dist/composites/device-list/filter-chips.d.ts +15 -6
  110. package/dist/composites/device-list/fuzzy-match.d.ts +27 -0
  111. package/dist/composites/device-list/generic-mode.d.ts +81 -0
  112. package/dist/composites/device-list/group.d.ts +19 -0
  113. package/dist/composites/device-list/hardware-cell.d.ts +7 -0
  114. package/dist/composites/device-list/hardware.d.ts +26 -0
  115. package/dist/composites/device-list/icon-action.d.ts +17 -0
  116. package/dist/composites/device-list/index.d.ts +23 -39
  117. package/dist/composites/device-list/multi-select.d.ts +22 -0
  118. package/dist/composites/device-list/sort.d.ts +18 -0
  119. package/dist/composites/device-list/sortable-header.d.ts +10 -0
  120. package/dist/composites/device-list/table-layout.d.ts +25 -0
  121. package/dist/composites/device-list/type-filter.d.ts +19 -0
  122. package/dist/composites/device-list/url-state.d.ts +7 -2
  123. package/dist/composites/device-meta.d.ts +38 -0
  124. package/dist/composites/discovery-panel.d.ts +4 -4
  125. package/dist/composites/doorbell-recent-panel.d.ts +1 -1
  126. package/dist/composites/empty-state.d.ts +1 -1
  127. package/dist/composites/error-box.d.ts +1 -1
  128. package/dist/composites/event-stream.d.ts +2 -2
  129. package/dist/composites/filter-bar.d.ts +1 -1
  130. package/dist/composites/form-field.d.ts +1 -1
  131. package/dist/composites/hls-quality.d.ts +35 -0
  132. package/dist/composites/hls-video.d.ts +26 -0
  133. package/dist/composites/hover-zoom-image.d.ts +18 -0
  134. package/dist/composites/image-selector.d.ts +1 -1
  135. package/dist/composites/index.d.ts +15 -4
  136. package/dist/composites/inference-config-selector.d.ts +1 -1
  137. package/dist/composites/kebab-menu.d.ts +1 -1
  138. package/dist/composites/key-value-list.d.ts +1 -1
  139. package/dist/composites/log-stream-scroll.d.ts +32 -0
  140. package/dist/composites/log-stream.d.ts +9 -2
  141. package/dist/composites/login-form.d.ts +1 -1
  142. package/dist/composites/node-picker.d.ts +1 -1
  143. package/dist/composites/page-header.d.ts +1 -1
  144. package/dist/composites/phase-icon.d.ts +1 -1
  145. package/dist/composites/pipeline-builder.d.ts +1 -1
  146. package/dist/composites/pipeline-runtime-selector.d.ts +1 -1
  147. package/dist/composites/pipeline-step.d.ts +3 -3
  148. package/dist/composites/pipeline-tree-matrix.d.ts +1 -1
  149. package/dist/composites/provider-badge.d.ts +1 -1
  150. package/dist/composites/ptz-overlay.d.ts +1 -1
  151. package/dist/composites/qr-code.d.ts +1 -1
  152. package/dist/composites/response-log.d.ts +1 -1
  153. package/dist/composites/scope-picker.d.ts +1 -1
  154. package/dist/composites/slide-over-panel.d.ts +1 -1
  155. package/dist/composites/snapshot-button.d.ts +1 -1
  156. package/dist/composites/stat-card.d.ts +1 -1
  157. package/dist/composites/state-values-stream.d.ts +1 -1
  158. package/dist/composites/status-badge.d.ts +1 -1
  159. package/dist/composites/step-timings.d.ts +1 -1
  160. package/dist/composites/step-tree-master.d.ts +1 -1
  161. package/dist/composites/stream-panel.d.ts +45 -10
  162. package/dist/composites/timezone-selector.d.ts +18 -0
  163. package/dist/composites/version-badge.d.ts +2 -2
  164. package/dist/composites/widget-panel.d.ts +28 -0
  165. package/dist/contexts/custom-field-renderers.d.ts +1 -1
  166. package/dist/contexts/device-context.d.ts +1 -1
  167. package/dist/contexts/player-overlays.d.ts +1 -1
  168. package/dist/contexts/system-context.d.ts +1 -1
  169. package/dist/contexts/vod-playback.d.ts +17 -0
  170. package/dist/contexts/widget-registry.d.ts +1 -1
  171. package/dist/contexts/zone-editing.d.ts +1 -1
  172. package/dist/generated/system-hooks.d.ts +386 -56
  173. package/dist/hooks/index.d.ts +8 -2
  174. package/dist/hooks/use-device-cap-slice.d.ts +19 -0
  175. package/dist/hooks/use-device-capability.d.ts +12 -0
  176. package/dist/hooks/use-device-list-page-size.d.ts +14 -0
  177. package/dist/hooks/use-device-webrtc.d.ts +36 -4
  178. package/dist/hooks/use-optimistic-slice.d.ts +11 -0
  179. package/dist/index.cjs +54834 -11195
  180. package/dist/index.d.ts +1 -0
  181. package/dist/index.js +54483 -11136
  182. package/dist/lib/format-control-datetime.d.ts +18 -0
  183. package/dist/lib/format-last-seen.d.ts +12 -0
  184. package/dist/lib/format-numeric.d.ts +9 -0
  185. package/dist/lib/index.d.ts +3 -0
  186. package/dist/primitives/bottom-sheet.d.ts +1 -1
  187. package/dist/primitives/collapsible-card.d.ts +1 -1
  188. package/dist/primitives/dialog.d.ts +19 -6
  189. package/dist/primitives/dropdown.d.ts +3 -3
  190. package/dist/primitives/floating-panel.d.ts +1 -1
  191. package/dist/primitives/mobile-drawer.d.ts +1 -1
  192. package/dist/primitives/popover.d.ts +3 -3
  193. package/dist/primitives/tabs.d.ts +4 -4
  194. package/dist/primitives/tooltip.d.ts +11 -5
  195. package/dist/theme/index.cjs +0 -3
  196. package/dist/theme/index.js +0 -2
  197. package/dist/theme/theme-provider.d.ts +1 -1
  198. package/package.json +13 -5
  199. package/dist/index.cjs.map +0 -1
  200. package/dist/index.js.map +0 -1
  201. package/dist/theme/index.cjs.map +0 -1
  202. package/dist/theme/index.js.map +0 -1
@@ -56,5 +56,5 @@ interface AddonGlobalSettingsFormProps {
56
56
  */
57
57
  readonly onOverrideChange?: (patch: Record<string, unknown>, effective: Record<string, unknown>) => void;
58
58
  }
59
- export declare function AddonGlobalSettingsForm({ trpc, addonId, nodeId, title, disabled, onAfterChange, refreshToken, collapsible, defaultOpen, mode, onOverrideChange, }: AddonGlobalSettingsFormProps): import("react/jsx-runtime").JSX.Element;
59
+ export declare function AddonGlobalSettingsForm({ trpc, addonId, nodeId, title, disabled, onAfterChange, refreshToken, collapsible, defaultOpen, mode, onOverrideChange, }: AddonGlobalSettingsFormProps): import("react").JSX.Element;
60
60
  export {};
@@ -12,4 +12,4 @@ export interface AgentStepEditorProps {
12
12
  readonly onChangePatch?: (next: CameraStepOverridePatch | null) => void;
13
13
  readonly engineFormat: string;
14
14
  }
15
- export declare function AgentStepEditor(props: AgentStepEditorProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function AgentStepEditor(props: AgentStepEditorProps): import("react").JSX.Element;
@@ -16,4 +16,4 @@ export interface AppShellProps {
16
16
  children: ReactNode;
17
17
  className?: string;
18
18
  }
19
- export declare function AppShell({ sidebar, header, mobileLogo, mobileActions, children, className }: AppShellProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function AppShell({ sidebar, header, mobileLogo, mobileActions, children, className, }: AppShellProps): import("react").JSX.Element;
@@ -7,4 +7,4 @@ export interface SidebarItemProps {
7
7
  active?: boolean;
8
8
  className?: string;
9
9
  }
10
- export declare function SidebarItem({ label, icon: Icon, href, badge, active, className, }: SidebarItemProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function SidebarItem({ label, icon: Icon, href, badge, active, className, }: SidebarItemProps): import("react").JSX.Element;
@@ -11,4 +11,4 @@ export interface SidebarProps {
11
11
  onNavigate?: () => void;
12
12
  className?: string;
13
13
  }
14
- export declare function Sidebar({ logo, sections, footer, onNavigate, className }: SidebarProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function Sidebar({ logo, sections, footer, onNavigate, className }: SidebarProps): import("react").JSX.Element;
@@ -17,4 +17,4 @@ export interface AudioClassificationListProps {
17
17
  /**
18
18
  * Displays audio classification results as a ranked list with score bars.
19
19
  */
20
- export declare function AudioClassificationList({ classifications, processing, inferenceMs, maxItems, className, }: AudioClassificationListProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function AudioClassificationList({ classifications, processing, inferenceMs, maxItems, className, }: AudioClassificationListProps): import("react").JSX.Element;
@@ -32,4 +32,4 @@ export interface AudioLevelWaveformProps {
32
32
  * Designed to be fed from the `pipeline.audio-inference-result` event
33
33
  * (each chunk, ~0.5s, produces one sample via `frame.level.dbfs`).
34
34
  */
35
- export declare function AudioLevelWaveform({ currentDbfs, durationSec, maxSamples, height, className, color, clipColor, clipThreshold, minDbfs, }: AudioLevelWaveformProps): import("react/jsx-runtime").JSX.Element;
35
+ export declare function AudioLevelWaveform({ currentDbfs, durationSec, maxSamples, height, className, color, clipColor, clipThreshold, minDbfs, }: AudioLevelWaveformProps): import("react").JSX.Element;
@@ -17,4 +17,4 @@ export interface AudioWaveformProps {
17
17
  * Renders a waveform from Float32Array audio samples.
18
18
  * Downsamples to pixel resolution for performance.
19
19
  */
20
- export declare function AudioWaveform({ samples, sampleRate, height, className, color, bgColor, }: AudioWaveformProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function AudioWaveform({ samples, sampleRate, height, className, color, bgColor, }: AudioWaveformProps): import("react").JSX.Element;
@@ -2,6 +2,9 @@ export interface BatteryStatusLike {
2
2
  readonly percentage: number;
3
3
  readonly charging: 'dc' | 'solar' | 'none';
4
4
  readonly sleeping: boolean;
5
+ /** True for a binary LOW_BAT source with no real % — render "Normal"/"Low"
6
+ * instead of a misleading exact percentage. */
7
+ readonly binary?: boolean;
5
8
  }
6
9
  export interface BatteryBadgeProps {
7
10
  readonly status: BatteryStatusLike | null | undefined;
@@ -9,4 +12,4 @@ export interface BatteryBadgeProps {
9
12
  readonly variant?: 'compact' | 'full';
10
13
  readonly className?: string;
11
14
  }
12
- export declare function BatteryBadge({ status, variant, className }: BatteryBadgeProps): import("react/jsx-runtime").JSX.Element | null;
15
+ export declare function BatteryBadge({ status, variant, className }: BatteryBadgeProps): import("react").JSX.Element | null;
@@ -1,3 +1,4 @@
1
+ import { default as React } from 'react';
1
2
  export interface BreadcrumbItem {
2
3
  /** Display label */
3
4
  label: string;
@@ -22,4 +23,4 @@ export interface BreadcrumbProps {
22
23
  * ]} />
23
24
  * ```
24
25
  */
25
- export declare function Breadcrumb({ items, className }: BreadcrumbProps): import("react/jsx-runtime").JSX.Element;
26
+ export declare function Breadcrumb({ items, className }: BreadcrumbProps): React.JSX.Element;
@@ -1,5 +1,35 @@
1
1
  import { ReactNode } from 'react';
2
+ import { CamProfile } from '@camstack/types';
3
+ type WebkitPresentationMode = 'inline' | 'picture-in-picture' | 'fullscreen';
4
+ declare global {
5
+ interface HTMLVideoElement {
6
+ webkitSetPresentationMode?: (mode: WebkitPresentationMode) => void;
7
+ readonly webkitPresentationMode?: WebkitPresentationMode;
8
+ }
9
+ }
2
10
  export type PlayerConnectionState = 'connecting' | 'playing' | 'error' | 'disconnected' | 'idle';
11
+ /**
12
+ * Discriminated WebRTC target — same shape as `WebrtcStreamTarget` on the
13
+ * backend cap; the `profile` tier uses the canonical `CamProfile` enum.
14
+ * Carried by `getSessionState`'s `pendingRenegotiation` and handed back to
15
+ * `reoffer` verbatim during an adaptive re-offer.
16
+ */
17
+ export type PlayerWebrtcTarget = {
18
+ readonly kind: 'adaptive';
19
+ } | {
20
+ readonly kind: 'profile';
21
+ readonly profile: CamProfile;
22
+ } | {
23
+ readonly kind: 'cam-stream';
24
+ readonly camStreamId: string;
25
+ };
26
+ /** Live signaling state polled mid-stream — the adaptive re-offer signal. */
27
+ export interface SessionSignalingState {
28
+ readonly pendingRenegotiation: {
29
+ readonly target: PlayerWebrtcTarget;
30
+ readonly epoch: number;
31
+ } | null;
32
+ }
3
33
  /**
4
34
  * Signaling function for WebRTC connection.
5
35
  * Called by the player to establish the WebRTC session.
@@ -72,6 +102,15 @@ export interface CameraStreamPlayerProps {
72
102
  muted?: boolean;
73
103
  /** Show toolbar controls (default: true) */
74
104
  showControls?: boolean;
105
+ /** Show a live client-side WebRTC stats overlay (bitrate/fps/res/RTT),
106
+ * computed from the PeerConnection's getStats(). Default: false. */
107
+ showStats?: boolean;
108
+ /** DEBUG: when provided, polls inbound-video getStats() ~1 Hz during playback
109
+ * and reports per-window health metrics (frames received/decoded/dropped,
110
+ * freezes, jitter, playback-clock advance). The embed forwards these over the
111
+ * existing host log bridge (`{type:'log'}`), so they respect the app's
112
+ * debug-mode flag. Used to diagnose recorded VOD-over-WebRTC stutter. */
113
+ onPlaybackStats?: (data: Record<string, unknown>) => void;
75
114
  /** Additional CSS classes for the root container */
76
115
  className?: string;
77
116
  /** Called on connection state change */
@@ -101,7 +140,7 @@ export interface CameraStreamPlayerProps {
101
140
  * Main/High (incl. 4K) source pass through with NO transcode — the only
102
141
  * path that lets iOS decode High. The caller closes over the target.
103
142
  */
104
- handleOffer?: (sdpOffer: string) => Promise<ClientOfferResult>;
143
+ handleOffer?: (sdpOffer: string, sessionId?: string) => Promise<ClientOfferResult>;
105
144
  /**
106
145
  * Fetch the browser-side ICE servers (STUN + TURN) for client-offer mode.
107
146
  * Called BEFORE the offer is built so a remote/CGNAT viewer can gather a
@@ -117,11 +156,64 @@ export interface CameraStreamPlayerProps {
117
156
  }>;
118
157
  /** Explicitly close the WebRTC session on server (cleanup on unmount). */
119
158
  closeSession?: (sessionId: string) => Promise<void>;
159
+ /**
160
+ * Poll the live signaling state of a session (client-offer mode only).
161
+ * After the server swaps the broker source to a different tier (adaptive
162
+ * downgrade), this returns a non-null `pendingRenegotiation` with the new
163
+ * target + a monotonic `epoch`. The player then transparently re-offers
164
+ * on the SAME sessionId — building a fresh PeerConnection in the
165
+ * background and only swapping the live `<video>` to the new stream once
166
+ * it delivers media, so the last decoded frame stays on screen with no
167
+ * loader. Best-effort: omit it to disable adaptive re-offer entirely.
168
+ */
169
+ getSessionState?: (sessionId: string) => Promise<SessionSignalingState>;
170
+ /**
171
+ * Re-offer signaling for an adaptive tier switch (client-offer mode).
172
+ * Posts a fresh browser-built offer for an EXISTING `sessionId` against
173
+ * the new `target` (from `getSessionState`'s `pendingRenegotiation`). The
174
+ * server closes the stale session and creates a fresh one under the same
175
+ * id, bound to the new tier's source. Distinct from `handleOffer`, whose
176
+ * target is fixed at the player's selected stream — a re-offer must carry
177
+ * the server-chosen downgrade target instead. Required (alongside
178
+ * `getSessionState`) for adaptive re-offer to run.
179
+ */
180
+ reoffer?: (sessionId: string, sdpOffer: string, target: PlayerWebrtcTarget) => Promise<ClientOfferResult>;
181
+ /**
182
+ * Optional poster image (snapshot data-URL) shown by the <video> before
183
+ * the FIRST-EVER frame is decoded. Only a cold-start fallback — once a
184
+ * frame is showing, the player keeps the last decoded frame across
185
+ * renegotiations and never falls back to the poster. Caller-supplied.
186
+ */
187
+ posterUrl?: string;
120
188
  /**
121
189
  * Override client hints sent to the server at session creation.
122
190
  * Values provided here replace the auto-computed browser values.
123
191
  * Use for network simulation (benchmark) or manual tier forcing.
124
192
  */
125
193
  hintsOverride?: Partial<ClientStreamHints>;
194
+ /**
195
+ * Host-driven fast reconnect. Bump this number (monotonic) to force a
196
+ * full reconnect WITHOUT remounting the player — used by the embed when
197
+ * the native shell detects a network change (Wi-Fi↔cellular) or returns
198
+ * from background. Because `cleanup()` no longer clears `srcObject`, the
199
+ * LAST DECODED FRAME stays on screen across the reconnect (no black
200
+ * flash, no covering loader). The initial value is ignored — only
201
+ * changes trigger a reconnect. Distinct from remounting via `streamKey`,
202
+ * which blanks the element.
203
+ */
204
+ reconnectSignal?: number;
205
+ /**
206
+ * Optional control data-channel hook (client-offer mode only). When
207
+ * provided, the player opens a `camstack-control` `RTCDataChannel` on the
208
+ * PeerConnection BEFORE building the offer (so it is negotiated into the
209
+ * m=application section) and hands the channel to this callback for each new
210
+ * connection. Used by the recorded-playback timeline embed to drive the
211
+ * broker's `TimelineSession` (seek / scrub-commit / play-rate / go-live) and
212
+ * receive server state/position over the SAME WebRTC session that carries the
213
+ * unified live-or-recorded `<video>` track. Omit it (the default) for a plain
214
+ * live player — no data channel is created and behaviour is unchanged.
215
+ */
216
+ onControlChannel?: (channel: RTCDataChannel) => void;
126
217
  }
127
- export declare function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay, muted: initialMuted, showControls, className, onStateChange, onError, overlay, createSession, sendAnswer, handleOffer, getIceServers, addIceCandidate, getIceCandidates, closeSession, hintsOverride, }: CameraStreamPlayerProps): import("react/jsx-runtime").JSX.Element;
218
+ export declare function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay, muted: initialMuted, showControls, showStats, onPlaybackStats, className, onStateChange, onError, overlay, createSession, sendAnswer, handleOffer, getIceServers, addIceCandidate, getIceCandidates, closeSession, getSessionState, reoffer, posterUrl, hintsOverride, reconnectSignal, onControlChannel, }: CameraStreamPlayerProps): import("react").JSX.Element;
219
+ export {};
@@ -1,5 +1,5 @@
1
1
  interface AutotrackSectionProps {
2
2
  readonly deviceId: number;
3
3
  }
4
- export declare function AutotrackSection({ deviceId }: AutotrackSectionProps): import("react/jsx-runtime").JSX.Element;
4
+ export declare function AutotrackSection({ deviceId }: AutotrackSectionProps): import("react").JSX.Element;
5
5
  export {};
@@ -0,0 +1,2 @@
1
+ import { CapSettingsComponentProps } from './index';
2
+ export declare function ConsumablesPanel({ deviceId }: CapSettingsComponentProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { PlaybackSpan } from './recording-spans';
2
+ interface CoverageTrackProps {
3
+ readonly windowFrom: number;
4
+ readonly windowTo: number;
5
+ readonly spans: readonly PlaybackSpan[];
6
+ /** Last-seeked position to mark with the playhead, or null. */
7
+ readonly playheadMs: number | null;
8
+ /** Called with the absolute ms a click maps to within the window. */
9
+ readonly onSeek: (clickMs: number) => void;
10
+ }
11
+ export declare function CoverageTrack({ windowFrom, windowTo, spans, playheadMs, onSeek, }: CoverageTrackProps): import("react").JSX.Element;
12
+ export {};
@@ -0,0 +1,25 @@
1
+ import { ClipKind } from './event-thumb';
2
+ export interface BucketClip {
3
+ readonly id: string;
4
+ readonly timestamp: number;
5
+ readonly kind: ClipKind;
6
+ readonly label: string;
7
+ readonly mediaUrl?: string;
8
+ }
9
+ interface EventBucketStripProps {
10
+ readonly clips: readonly BucketClip[];
11
+ readonly loading: boolean;
12
+ /** Key of the clip whose manifest is resolving, for the spinner. */
13
+ readonly busyKey: string | null;
14
+ readonly onPlay: (clip: BucketClip) => void;
15
+ /** Which kinds are currently enabled for display. */
16
+ readonly enabledKinds: ReadonlySet<ClipKind>;
17
+ /** Called when the user toggles a kind checkbox. */
18
+ readonly onToggleKind: (kind: ClipKind) => void;
19
+ /** True when more results may exist beyond the current page. */
20
+ readonly hasMore: boolean;
21
+ /** Called when the user clicks "Load more". */
22
+ readonly onLoadMore: () => void;
23
+ }
24
+ export declare function EventBucketStrip({ clips, loading, busyKey, onPlay, enabledKinds, onToggleKind, hasMore, onLoadMore, }: EventBucketStripProps): import("react").JSX.Element;
25
+ export {};
@@ -0,0 +1,10 @@
1
+ import { DensityBucket } from './recording-timeline-model';
2
+ interface EventHeatmapProps {
3
+ readonly windowFrom: number;
4
+ readonly windowTo: number;
5
+ readonly buckets: readonly DensityBucket[];
6
+ readonly selectedIndex: number | null;
7
+ readonly onSelectBucket: (index: number) => void;
8
+ }
9
+ export declare function EventHeatmap({ windowFrom, windowTo, buckets, selectedIndex, onSelectBucket, }: EventHeatmapProps): import("react").JSX.Element;
10
+ export {};
@@ -38,7 +38,7 @@ export interface MaskShapeCanvasProps {
38
38
  readonly height: number;
39
39
  };
40
40
  }
41
- declare function MaskShapeCanvasImpl({ items, selectedId, onSelect, onShapeChange, onDrawComplete, drawingKind, supportedShapes, transparent, backdrop, polygonVertices, grid, }: MaskShapeCanvasProps): import("react/jsx-runtime").JSX.Element;
41
+ declare function MaskShapeCanvasImpl({ items, selectedId, onSelect, onShapeChange, onDrawComplete, drawingKind, supportedShapes, transparent, backdrop, polygonVertices, grid, }: MaskShapeCanvasProps): import("react").JSX.Element;
42
42
  /**
43
43
  * Memoised export. The Konva scene is expensive to re-evaluate (many nodes per
44
44
  * item + per-item drag-bound closures) and overlay parents re-render on every
@@ -1,2 +1,2 @@
1
1
  import { CapSettingsComponentProps } from './index';
2
- export declare function MotionZonesSettings({ deviceId }: CapSettingsComponentProps): import("react/jsx-runtime").JSX.Element | null;
2
+ export declare function MotionZonesSettings({ deviceId }: CapSettingsComponentProps): import("react").JSX.Element | null;
@@ -1,2 +1,2 @@
1
1
  import { CapSettingsComponentProps } from './index';
2
- export declare function PrivacyMaskSettings({ deviceId }: CapSettingsComponentProps): import("react/jsx-runtime").JSX.Element | null;
2
+ export declare function PrivacyMaskSettings({ deviceId }: CapSettingsComponentProps): import("react").JSX.Element | null;
@@ -1,2 +1,2 @@
1
1
  import { CapSettingsComponentProps } from './index';
2
- export declare function PtzPanel({ deviceId }: CapSettingsComponentProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function PtzPanel({ deviceId }: CapSettingsComponentProps): import("react").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { HostWidgetProps } from '../../widgets/host-widgets';
2
+ export declare function RecordingPanel({ deviceId }: HostWidgetProps): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { RecordingRule } from '@camstack/types';
2
+ interface RecordingRulesEditorProps {
3
+ readonly rules: readonly RecordingRule[];
4
+ readonly onChange: (rules: RecordingRule[]) => void;
5
+ }
6
+ export declare function RecordingRulesEditor({ rules, onChange }: RecordingRulesEditorProps): import("react").JSX.Element;
7
+ export {};
@@ -0,0 +1,8 @@
1
+ import { RecordingConfig } from '@camstack/types';
2
+ interface RecordingSettingsProps {
3
+ readonly initial: RecordingConfig;
4
+ readonly saving: boolean;
5
+ readonly onSave: (config: RecordingConfig) => void;
6
+ }
7
+ export declare function RecordingSettings({ initial, saving, onSave }: RecordingSettingsProps): import("react").JSX.Element;
8
+ export {};
@@ -0,0 +1,5 @@
1
+ interface RecordingTimelineProps {
2
+ readonly deviceId: number;
3
+ }
4
+ export declare function RecordingTimeline({ deviceId }: RecordingTimelineProps): import("react").JSX.Element;
5
+ export {};
@@ -0,0 +1,7 @@
1
+ import { RecordingSchedule } from '@camstack/types';
2
+ interface ScheduleBandsEditorProps {
3
+ readonly schedules: readonly RecordingSchedule[];
4
+ readonly onChange: (schedules: RecordingSchedule[]) => void;
5
+ }
6
+ export declare function ScheduleBandsEditor({ schedules, onChange }: ScheduleBandsEditorProps): import("react").JSX.Element;
7
+ export {};
@@ -0,0 +1,21 @@
1
+ import { DayWindow } from './recording-timeline-model';
2
+ interface TimelineControlsProps {
3
+ /** Currently selected calendar day. */
4
+ readonly day: Date;
5
+ /** Called when the user picks a new day. */
6
+ readonly onDayChange: (d: Date) => void;
7
+ /** Current zoom+pan view window. */
8
+ readonly view: DayWindow;
9
+ /** Full day bounds (used for zoom/pan clamping). */
10
+ readonly dayBounds: DayWindow;
11
+ /** Called when zoom changes the view. */
12
+ readonly onViewChange: (w: DayWindow) => void;
13
+ }
14
+ /**
15
+ * Date selector + zoom-in / zoom-out buttons for the recording timeline.
16
+ * Zoom cycles through ZOOM_LEVELS (widest → narrowest), centred on the
17
+ * current view midpoint. Horizontal pan is wired via wheel events in
18
+ * RecordingTimeline directly.
19
+ */
20
+ export declare function TimelineControls({ day, onDayChange, view, dayBounds, onViewChange, }: TimelineControlsProps): import("react").JSX.Element;
21
+ export {};
@@ -0,0 +1,11 @@
1
+ export type ClipKind = 'motion' | 'object' | 'audio';
2
+ interface EventThumbProps {
3
+ readonly mediaUrl?: string;
4
+ readonly kind: ClipKind;
5
+ }
6
+ export declare function EventThumb({ mediaUrl, kind }: EventThumbProps): import("react").JSX.Element;
7
+ export declare function EventKindIcon({ kind, large, }: {
8
+ readonly kind: ClipKind;
9
+ readonly large?: boolean;
10
+ }): import("react").JSX.Element;
11
+ export {};
@@ -1,7 +1,11 @@
1
1
  export { PtzPanel } from './PtzPanel';
2
+ export { ConsumablesPanel } from './ConsumablesPanel';
2
3
  export { AutotrackSection } from './AutotrackSection';
3
4
  export { MotionZonesSettings } from './MotionZonesSettings';
4
5
  export { PrivacyMaskSettings } from './PrivacyMaskSettings';
6
+ export { RecordingPanel } from './RecordingPanel';
7
+ export { RecordingSettings } from './RecordingSettings';
8
+ export { RecordingRulesEditor } from './RecordingRulesEditor';
5
9
  export { MaskShapeCanvas } from './MaskShapeCanvas';
6
10
  export type { MaskShapeItem, MaskShapeCanvasProps } from './MaskShapeCanvas';
7
11
  /**
@@ -0,0 +1,34 @@
1
+ import { RecordingRule, RecordingMode, RecordingConfig, RecordingStorageMode, RecordingSchedule, RecordingTriggers, RecordingRetention, CamProfile } from '@camstack/types';
2
+ export declare function emptyRule(): RecordingRule;
3
+ export declare function isTriggerMode(mode: RecordingMode): boolean;
4
+ export declare function withRuleAt(rules: readonly RecordingRule[], index: number, patch: Partial<RecordingRule>): RecordingRule[];
5
+ export declare function removeRuleAt(rules: readonly RecordingRule[], index: number): RecordingRule[];
6
+ /**
7
+ * The editable shape of the Basic recording form: the authoritative `mode` plus
8
+ * its mode-specific parameters. `schedules` are the recording time-bands (empty
9
+ * = always); `triggers`/buffers apply to `events`. Never carries `rules` — Base
10
+ * is mode-authoritative and the backend compiles `rules` from `mode`.
11
+ */
12
+ export interface RecordingFormState {
13
+ readonly mode: RecordingStorageMode;
14
+ readonly profiles?: readonly CamProfile[];
15
+ readonly segmentSeconds?: number;
16
+ readonly schedules: readonly RecordingSchedule[];
17
+ readonly triggers: RecordingTriggers;
18
+ readonly preBufferSec?: number;
19
+ readonly postBufferSec?: number;
20
+ readonly retention?: RecordingRetention;
21
+ }
22
+ /** Read a persisted/migrated config into the Basic form state. `mode` is read
23
+ * directly; a legacy mode-less config falls back to continuous/off by `enabled`. */
24
+ export declare function formStateFromConfig(cfg: RecordingConfig): RecordingFormState;
25
+ /** Serialize the Basic form state back to the wire config. `enabled` is derived
26
+ * from `mode`; `rules`/singular `schedule` are never emitted. Schedules,
27
+ * triggers and buffers are preserved even when off so they survive a re-enable. */
28
+ export declare function configFromFormState(state: RecordingFormState): RecordingConfig;
29
+ /**
30
+ * A config is "advanced" when it carries `rules[]` that the backend could NOT
31
+ * cleanly collapse to a `mode` (the non-destructive `migrateRulesToMode` leaves
32
+ * `mode` absent). The settings UI opens such a config in the Advanced rules tab.
33
+ */
34
+ export declare function isAdvancedConfig(cfg: RecordingConfig): boolean;
@@ -0,0 +1,22 @@
1
+ export interface AvailabilityRange {
2
+ readonly profile: string;
3
+ readonly startMs: number;
4
+ readonly endMs: number;
5
+ }
6
+ export interface PlaybackSpan {
7
+ readonly startMs: number;
8
+ readonly endMs: number;
9
+ }
10
+ /**
11
+ * Merge availability ranges (across every profile) into the union of distinct
12
+ * time windows, ascending by start. Overlapping or touching intervals coalesce;
13
+ * zero/negative-length inputs are dropped. Newest-first ordering is the caller's
14
+ * concern (it reverses for display).
15
+ */
16
+ export declare function mergeAvailabilitySpans(ranges: readonly AvailabilityRange[]): PlaybackSpan[];
17
+ /**
18
+ * Pick the right unit for a byte count and render it with a sensible number of
19
+ * significant digits (binary prefixes, matching recording sizes elsewhere).
20
+ * KB and up render one decimal under 100, none above; bytes never get a decimal.
21
+ */
22
+ export declare function formatBytes(bytes: number): string;
@@ -0,0 +1,84 @@
1
+ import { PlaybackSpan } from './recording-spans';
2
+ /** Fixed heatmap bucket size: 15 minutes → 96 buckets over 24h. */
3
+ export declare const BUCKET_MS: number;
4
+ /** Event kinds the timeline understands. */
5
+ export type TimelineKind = 'motion' | 'object' | 'audio';
6
+ export interface DensityBucket {
7
+ readonly index: number;
8
+ readonly startMs: number;
9
+ readonly endMs: number;
10
+ readonly counts: Readonly<Record<TimelineKind, number>>;
11
+ readonly total: number;
12
+ /** Highest-count kind, or null when the bucket is empty. */
13
+ readonly dominant: TimelineKind | null;
14
+ }
15
+ /** Row returned by the server `getEventDensity` call (one per non-empty bucket). */
16
+ export interface EventDensityRow {
17
+ readonly bucketStart: number;
18
+ readonly motion: number;
19
+ readonly object: number;
20
+ readonly audio: number;
21
+ }
22
+ /**
23
+ * Convert server-side density rows into `DensityBucket[]` for the timeline
24
+ * heatmap. Rows with total === 0 are skipped (defensive; server already omits
25
+ * them). Returns a sparse, ascending-by-index array — EventHeatmap positions
26
+ * each bar by `b.startMs` rather than array index, so gaps are fine.
27
+ */
28
+ export declare function densityRowsToBuckets(rows: readonly EventDensityRow[], windowFrom: number, bucketMs: number): DensityBucket[];
29
+ export interface SeekTarget {
30
+ readonly fromMs: number;
31
+ readonly toMs: number;
32
+ }
33
+ /**
34
+ * Resolve a playback window for a click at `clickMs` against recorded `spans`.
35
+ * Inside a span → play from the click to that span's end. In a gap / outside →
36
+ * snap to the WHOLE nearest span. No spans → null (nothing to play).
37
+ * `spans` are expected ascending by start (as `mergeAvailabilitySpans` returns).
38
+ */
39
+ export declare function seekTargetForSpans(clickMs: number, spans: readonly PlaybackSpan[]): SeekTarget | null;
40
+ /**
41
+ * Position `ms` inside the window `[fromMs, toMs]` as a clamped percentage
42
+ * (0–100). A zero/negative-width window yields 0. Callers use this for `left:`.
43
+ */
44
+ export declare function pctForMs(ms: number, fromMs: number, toMs: number): number;
45
+ /** A [fromMs, toMs) window spanning (at most) one calendar day. */
46
+ export interface DayWindow {
47
+ readonly fromMs: number;
48
+ readonly toMs: number;
49
+ }
50
+ /**
51
+ * Build a DayWindow for the given calendar `date` using local time.
52
+ * For any day strictly in the past: `fromMs` = local midnight, `toMs` =
53
+ * next local midnight (exactly 24 h).
54
+ * For today (or any future day that contains `nowMs`): `toMs = nowMs` so the
55
+ * window never extends into the future.
56
+ */
57
+ export declare function dayWindow(date: Date, nowMs: number): DayWindow;
58
+ /** Available zoom levels in ms, from widest (24h) to narrowest (15 min). */
59
+ export declare const ZOOM_LEVELS: readonly number[];
60
+ /**
61
+ * Produce a `levelMs`-wide DayWindow centred on `centerMs`, clamped within
62
+ * `dayBounds`. If `levelMs >= dayBounds span`, returns `dayBounds` unchanged.
63
+ */
64
+ export declare function zoomWindow(_current: DayWindow, dayBounds: DayWindow, levelMs: number, centerMs: number): DayWindow;
65
+ /**
66
+ * Shift `win` by `deltaMs`, preserving width, clamped within `dayBounds`.
67
+ */
68
+ export declare function panWindow(win: DayWindow, dayBounds: DayWindow, deltaMs: number): DayWindow;
69
+ /**
70
+ * Choose a sensible heatmap bucket size for a visible span of `spanMs`,
71
+ * targeting ~96-120 buckets. Always picks from `BUCKET_CANDIDATES`.
72
+ */
73
+ export declare function bucketMsForSpan(spanMs: number): number;
74
+ /** One labelled tick on the time axis. */
75
+ export interface AxisTick {
76
+ readonly pct: number;
77
+ readonly label: string;
78
+ }
79
+ /**
80
+ * Produce `count` evenly-spaced axis ticks spanning [fromMs, toMs].
81
+ * - `pct` is via pctForMs (first=0, last=100).
82
+ * - `label` is a localised HH:MM clock string.
83
+ */
84
+ export declare function axisTicks(fromMs: number, toMs: number, count: number): AxisTick[];
@@ -3,4 +3,4 @@ export interface CodeBlockProps {
3
3
  maxHeight?: number;
4
4
  className?: string;
5
5
  }
6
- export declare function CodeBlock({ children, maxHeight, className }: CodeBlockProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function CodeBlock({ children, maxHeight, className }: CodeBlockProps): import("react").JSX.Element;
@@ -14,5 +14,5 @@ interface FormBuilderProps {
14
14
  /** Callback to clear a probe result when a field value changes */
15
15
  onClearProbe?: (key: string) => void;
16
16
  }
17
- export declare function ConfigFormBuilder({ schema, values, onChange, disabled, translationFn, onTestField, probeResults, onClearProbe }: FormBuilderProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function ConfigFormBuilder({ schema, values, onChange, disabled, translationFn, onTestField, probeResults, onClearProbe, }: FormBuilderProps): import("react").JSX.Element;
18
18
  export {};
@@ -44,14 +44,14 @@ export declare function NodeSelectField({ field, value, onChange, disabled, tran
44
44
  onChange: (v: unknown) => void;
45
45
  disabled?: boolean;
46
46
  translationFn?: TranslationFn;
47
- }): import("react/jsx-runtime").JSX.Element;
47
+ }): import("react").JSX.Element;
48
48
  export declare function NodeMultiSelectField({ field, value, onChange, disabled, translationFn, }: {
49
49
  field: ConfigNodeMultiSelectField;
50
50
  value: unknown;
51
51
  onChange: (v: unknown) => void;
52
52
  disabled?: boolean;
53
53
  translationFn?: TranslationFn;
54
- }): import("react/jsx-runtime").JSX.Element;
54
+ }): import("react").JSX.Element;
55
55
  /**
56
56
  * Resolve a `ConfigCondition` against the form's flat values bag and the
57
57
  * sibling-field list (used to recover schema defaults when the
@@ -66,5 +66,5 @@ export declare function NodeMultiSelectField({ field, value, onChange, disabled,
66
66
  * rendered without instantiating a React subtree.
67
67
  */
68
68
  export declare function isFieldVisible(field: ConfigField, values: Record<string, unknown>, allFields?: readonly ConfigField[]): boolean;
69
- export declare function FormField({ field, values, onChange, disabled, translationFn, onTestField, externalProbe, allFields, onAction }: FormFieldProps): import("react/jsx-runtime").JSX.Element | null;
69
+ export declare function FormField({ field, values, onChange, disabled, translationFn, onTestField, externalProbe, allFields, onAction, }: FormFieldProps): import("react").JSX.Element | null;
70
70
  export { FormField as ConfigFormField };
@@ -38,4 +38,4 @@ export interface ConfirmActionButtonProps<TResult> {
38
38
  /** Called after `action` resolves, with the result. */
39
39
  readonly onSuccess?: (result: TResult) => void;
40
40
  }
41
- export declare function ConfirmActionButton<TResult>({ label, icon: Icon, title, description, confirmLabel, triggerVariant, confirmVariant, size, disabled, className, action, onSuccess, }: ConfirmActionButtonProps<TResult>): import("react/jsx-runtime").JSX.Element;
41
+ export declare function ConfirmActionButton<TResult>({ label, icon: Icon, title, description, confirmLabel, triggerVariant, confirmVariant, size, disabled, className, action, onSuccess, }: ConfirmActionButtonProps<TResult>): import("react").JSX.Element;
@@ -9,5 +9,5 @@ interface ConfirmOptions {
9
9
  export declare function useConfirm(): (options: ConfirmOptions) => Promise<boolean>;
10
10
  export declare function ConfirmDialogProvider({ children }: {
11
11
  children: ReactNode;
12
- }): import("react/jsx-runtime").JSX.Element;
12
+ }): import("react").JSX.Element;
13
13
  export {};
@@ -6,5 +6,5 @@ interface DataTableHeaderProps<T> {
6
6
  stickyHeader?: boolean;
7
7
  flexRender: typeof flexRender;
8
8
  }
9
- export declare function DataTableHeader<T>({ headerGroups, onSortingChange, stickyHeader, flexRender: render, }: DataTableHeaderProps<T>): import("react/jsx-runtime").JSX.Element;
9
+ export declare function DataTableHeader<T>({ headerGroups, onSortingChange, stickyHeader, flexRender: render, }: DataTableHeaderProps<T>): import("react").JSX.Element;
10
10
  export {};
@@ -5,5 +5,5 @@ interface DataTablePaginationProps {
5
5
  total: number;
6
6
  onPaginationChange?: (pagination: PaginationState) => void;
7
7
  }
8
- export declare function DataTablePagination({ page, pageSize, total, onPaginationChange, }: DataTablePaginationProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function DataTablePagination({ page, pageSize, total, onPaginationChange, }: DataTablePaginationProps): import("react").JSX.Element;
9
9
  export {};
@@ -6,5 +6,5 @@ interface DataTableRowProps<T> {
6
6
  rowActions?: (row: T) => DataTableAction[];
7
7
  flexRender: typeof flexRender;
8
8
  }
9
- export declare function DataTableRow<T>({ row, onRowClick, rowActions, flexRender: render, }: DataTableRowProps<T>): import("react/jsx-runtime").JSX.Element;
9
+ export declare function DataTableRow<T>({ row, onRowClick, rowActions, flexRender: render, }: DataTableRowProps<T>): import("react").JSX.Element;
10
10
  export {};
@@ -1,2 +1,2 @@
1
1
  import { DataTableProps } from './types';
2
- 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>): import("react/jsx-runtime").JSX.Element;
2
+ 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>): import("react").JSX.Element;