@nationaldesignstudio/react 0.5.5 → 0.5.6
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/component-registry.md +1286 -40
- package/dist/index.d.ts +1568 -132
- package/dist/index.js +2172 -188
- package/dist/index.js.map +1 -1
- package/dist/tokens.css +680 -0
- package/package.json +19 -1
- package/src/components/atoms/blurred-video-backdrop/blurred-video-backdrop.tsx +447 -0
- package/src/components/atoms/button/icon-button.tsx +10 -4
- package/src/components/atoms/select/select.tsx +202 -49
- package/src/components/atoms/video-player/caption-overlay.tsx +107 -0
- package/src/components/atoms/video-player/video-player.tsx +811 -0
- package/src/components/molecules/dialog/dialog.tsx +526 -0
- package/src/components/molecules/video-dialog/video-dialog.tsx +272 -0
- package/src/components/molecules/video-with-backdrop/video-with-backdrop.tsx +383 -0
- package/src/hooks/index.ts +16 -0
- package/src/hooks/use-breakpoint.ts +145 -0
- package/src/hooks/use-captions.ts +247 -0
- package/src/hooks/use-video-keyboard.ts +230 -0
- package/src/lib/utils.ts +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { ButtonProps as ButtonProps$1 } from '@base-ui-components/react/button';
|
|
|
10
10
|
import { Popover as Popover$1 } from '@base-ui-components/react/popover';
|
|
11
11
|
import { Select as Select$1 } from '@base-ui-components/react/select';
|
|
12
12
|
import { Tooltip as Tooltip$1 } from '@base-ui-components/react/tooltip';
|
|
13
|
+
import { Dialog as Dialog$1 } from '@base-ui-components/react/dialog';
|
|
13
14
|
import { ClassValue } from 'clsx';
|
|
14
15
|
import { CSSVariableMap, NestedStringRecord, ColorThemeName, SurfaceThemeName } from '@nds-design-system/tokens';
|
|
15
16
|
|
|
@@ -244,6 +245,233 @@ declare const BackgroundCompound: React$1.ForwardRefExoticComponent<BackgroundPr
|
|
|
244
245
|
Gradient: React$1.ForwardRefExoticComponent<BackgroundGradientProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
245
246
|
};
|
|
246
247
|
|
|
248
|
+
type BlurIntensity = "low" | "medium" | "high" | "extreme";
|
|
249
|
+
type OverlayType = "none" | "vignette" | "top-bottom";
|
|
250
|
+
/**
|
|
251
|
+
* Blurred video backdrop wrapper variants.
|
|
252
|
+
*
|
|
253
|
+
* The wrapper extends beyond its bounds (inset: -120px) to cover
|
|
254
|
+
* blur artifacts at the edges.
|
|
255
|
+
*/
|
|
256
|
+
declare const blurredVideoBackdropVariants: tailwind_variants.TVReturnType<{
|
|
257
|
+
/**
|
|
258
|
+
* Blur intensity level.
|
|
259
|
+
* Higher values provide more diffused backgrounds.
|
|
260
|
+
*/
|
|
261
|
+
blur: {
|
|
262
|
+
low: string;
|
|
263
|
+
medium: string;
|
|
264
|
+
high: string;
|
|
265
|
+
extreme: string;
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* Gradient overlay for visual depth.
|
|
269
|
+
*/
|
|
270
|
+
overlay: {
|
|
271
|
+
none: string;
|
|
272
|
+
vignette: string;
|
|
273
|
+
"top-bottom": string;
|
|
274
|
+
};
|
|
275
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
276
|
+
/**
|
|
277
|
+
* Blur intensity level.
|
|
278
|
+
* Higher values provide more diffused backgrounds.
|
|
279
|
+
*/
|
|
280
|
+
blur: {
|
|
281
|
+
low: string;
|
|
282
|
+
medium: string;
|
|
283
|
+
high: string;
|
|
284
|
+
extreme: string;
|
|
285
|
+
};
|
|
286
|
+
/**
|
|
287
|
+
* Gradient overlay for visual depth.
|
|
288
|
+
*/
|
|
289
|
+
overlay: {
|
|
290
|
+
none: string;
|
|
291
|
+
vignette: string;
|
|
292
|
+
"top-bottom": string;
|
|
293
|
+
};
|
|
294
|
+
}, {
|
|
295
|
+
/**
|
|
296
|
+
* Blur intensity level.
|
|
297
|
+
* Higher values provide more diffused backgrounds.
|
|
298
|
+
*/
|
|
299
|
+
blur: {
|
|
300
|
+
low: string;
|
|
301
|
+
medium: string;
|
|
302
|
+
high: string;
|
|
303
|
+
extreme: string;
|
|
304
|
+
};
|
|
305
|
+
/**
|
|
306
|
+
* Gradient overlay for visual depth.
|
|
307
|
+
*/
|
|
308
|
+
overlay: {
|
|
309
|
+
none: string;
|
|
310
|
+
vignette: string;
|
|
311
|
+
"top-bottom": string;
|
|
312
|
+
};
|
|
313
|
+
}>, {
|
|
314
|
+
/**
|
|
315
|
+
* Blur intensity level.
|
|
316
|
+
* Higher values provide more diffused backgrounds.
|
|
317
|
+
*/
|
|
318
|
+
blur: {
|
|
319
|
+
low: string;
|
|
320
|
+
medium: string;
|
|
321
|
+
high: string;
|
|
322
|
+
extreme: string;
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* Gradient overlay for visual depth.
|
|
326
|
+
*/
|
|
327
|
+
overlay: {
|
|
328
|
+
none: string;
|
|
329
|
+
vignette: string;
|
|
330
|
+
"top-bottom": string;
|
|
331
|
+
};
|
|
332
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
333
|
+
/**
|
|
334
|
+
* Blur intensity level.
|
|
335
|
+
* Higher values provide more diffused backgrounds.
|
|
336
|
+
*/
|
|
337
|
+
blur: {
|
|
338
|
+
low: string;
|
|
339
|
+
medium: string;
|
|
340
|
+
high: string;
|
|
341
|
+
extreme: string;
|
|
342
|
+
};
|
|
343
|
+
/**
|
|
344
|
+
* Gradient overlay for visual depth.
|
|
345
|
+
*/
|
|
346
|
+
overlay: {
|
|
347
|
+
none: string;
|
|
348
|
+
vignette: string;
|
|
349
|
+
"top-bottom": string;
|
|
350
|
+
};
|
|
351
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
352
|
+
/**
|
|
353
|
+
* Blur intensity level.
|
|
354
|
+
* Higher values provide more diffused backgrounds.
|
|
355
|
+
*/
|
|
356
|
+
blur: {
|
|
357
|
+
low: string;
|
|
358
|
+
medium: string;
|
|
359
|
+
high: string;
|
|
360
|
+
extreme: string;
|
|
361
|
+
};
|
|
362
|
+
/**
|
|
363
|
+
* Gradient overlay for visual depth.
|
|
364
|
+
*/
|
|
365
|
+
overlay: {
|
|
366
|
+
none: string;
|
|
367
|
+
vignette: string;
|
|
368
|
+
"top-bottom": string;
|
|
369
|
+
};
|
|
370
|
+
}, {
|
|
371
|
+
/**
|
|
372
|
+
* Blur intensity level.
|
|
373
|
+
* Higher values provide more diffused backgrounds.
|
|
374
|
+
*/
|
|
375
|
+
blur: {
|
|
376
|
+
low: string;
|
|
377
|
+
medium: string;
|
|
378
|
+
high: string;
|
|
379
|
+
extreme: string;
|
|
380
|
+
};
|
|
381
|
+
/**
|
|
382
|
+
* Gradient overlay for visual depth.
|
|
383
|
+
*/
|
|
384
|
+
overlay: {
|
|
385
|
+
none: string;
|
|
386
|
+
vignette: string;
|
|
387
|
+
"top-bottom": string;
|
|
388
|
+
};
|
|
389
|
+
}>, unknown, unknown, undefined>>;
|
|
390
|
+
/**
|
|
391
|
+
* Canvas element styles.
|
|
392
|
+
*/
|
|
393
|
+
declare const canvasVariants: tailwind_variants.TVReturnType<{} | {} | {}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, {} | {}, undefined, tailwind_variants.TVReturnType<unknown, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
394
|
+
/**
|
|
395
|
+
* Gradient overlay base styles.
|
|
396
|
+
* Gradient backgrounds are applied via inline styles to avoid arbitrary values.
|
|
397
|
+
*/
|
|
398
|
+
declare const gradientOverlayVariants: tailwind_variants.TVReturnType<{} | {} | {}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, {} | {}, undefined, tailwind_variants.TVReturnType<unknown, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
399
|
+
declare const BLUR_AMOUNTS: Record<BlurIntensity, number>;
|
|
400
|
+
interface UseCanvasBlurOptions {
|
|
401
|
+
/** Ref to the source video element */
|
|
402
|
+
videoRef: React$1.RefObject<HTMLVideoElement | null>;
|
|
403
|
+
/** Blur amount in pixels */
|
|
404
|
+
blurAmount: number;
|
|
405
|
+
/** Whether rendering is enabled */
|
|
406
|
+
enabled?: boolean;
|
|
407
|
+
/** Target FPS (lower = better performance, default: 30) */
|
|
408
|
+
targetFps?: number;
|
|
409
|
+
/** Canvas scale factor (lower = better performance, default: 0.5) */
|
|
410
|
+
scale?: number;
|
|
411
|
+
}
|
|
412
|
+
interface UseCanvasBlurReturn {
|
|
413
|
+
/** Ref to attach to the canvas element */
|
|
414
|
+
canvasRef: React$1.RefObject<HTMLCanvasElement | null>;
|
|
415
|
+
/** Whether the canvas is currently rendering */
|
|
416
|
+
isRendering: boolean;
|
|
417
|
+
/** Performance metrics */
|
|
418
|
+
metrics: {
|
|
419
|
+
fps: number;
|
|
420
|
+
frameTime: number;
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Hook for rendering a blurred video to canvas.
|
|
425
|
+
*
|
|
426
|
+
* Performance optimizations:
|
|
427
|
+
* - Renders at reduced resolution (scale factor)
|
|
428
|
+
* - Throttled to target FPS
|
|
429
|
+
* - Uses CSS scale to fill container
|
|
430
|
+
* - Single video decoder (no sync needed)
|
|
431
|
+
*/
|
|
432
|
+
declare function useCanvasBlur({ videoRef, blurAmount, enabled, targetFps, scale, }: UseCanvasBlurOptions): UseCanvasBlurReturn;
|
|
433
|
+
interface BlurredVideoBackdropProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children">, VariantProps<typeof blurredVideoBackdropVariants> {
|
|
434
|
+
/** Ref to the primary video element to create backdrop from (required) */
|
|
435
|
+
videoRef: React$1.RefObject<HTMLVideoElement | null>;
|
|
436
|
+
/** Opacity of the backdrop (0-1, default: 0.6) */
|
|
437
|
+
opacity?: number;
|
|
438
|
+
/** Extension amount in pixels to cover blur artifacts (default: 120) */
|
|
439
|
+
extension?: number;
|
|
440
|
+
/** Target FPS for canvas rendering (default: 30) */
|
|
441
|
+
targetFps?: number;
|
|
442
|
+
/** Canvas scale factor - lower = better performance (default: 0.5) */
|
|
443
|
+
scale?: number;
|
|
444
|
+
/** Whether to show debug metrics */
|
|
445
|
+
showMetrics?: boolean;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* BlurredVideoBackdrop - A high-performance blurred video backdrop using canvas.
|
|
449
|
+
*
|
|
450
|
+
* Renders a blurred copy of a video element to create an ambient backdrop effect.
|
|
451
|
+
* Uses canvas rendering for optimal performance - no video sync needed.
|
|
452
|
+
*
|
|
453
|
+
* Performance features:
|
|
454
|
+
* - Single video decoder (draws from existing video element)
|
|
455
|
+
* - Reduced resolution rendering (configurable scale)
|
|
456
|
+
* - Throttled frame rate (configurable FPS)
|
|
457
|
+
* - GPU-accelerated canvas scaling
|
|
458
|
+
*
|
|
459
|
+
* @example
|
|
460
|
+
* ```tsx
|
|
461
|
+
* const videoRef = useRef<HTMLVideoElement>(null);
|
|
462
|
+
*
|
|
463
|
+
* <div className="relative">
|
|
464
|
+
* <BlurredVideoBackdrop
|
|
465
|
+
* videoRef={videoRef}
|
|
466
|
+
* blur="high"
|
|
467
|
+
* overlay="vignette"
|
|
468
|
+
* />
|
|
469
|
+
* <VideoPlayer videoRef={videoRef} src="/video.mp4" />
|
|
470
|
+
* </div>
|
|
471
|
+
* ```
|
|
472
|
+
*/
|
|
473
|
+
declare const BlurredVideoBackdrop: React$1.ForwardRefExoticComponent<BlurredVideoBackdropProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
474
|
+
|
|
247
475
|
/**
|
|
248
476
|
* Component-level theming interface
|
|
249
477
|
*
|
|
@@ -771,7 +999,7 @@ declare const iconButtonVariants: tailwind_variants.TVReturnType<{
|
|
|
771
999
|
default: string;
|
|
772
1000
|
full: string;
|
|
773
1001
|
};
|
|
774
|
-
}, undefined, "inline-flex items-center justify-center whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", tailwind_variants_dist_config_js.TVConfig<{
|
|
1002
|
+
}, undefined, "inline-flex items-center justify-center whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&>svg]:shrink-0", tailwind_variants_dist_config_js.TVConfig<{
|
|
775
1003
|
variant: {
|
|
776
1004
|
primary: string;
|
|
777
1005
|
"primary-outline": string;
|
|
@@ -843,7 +1071,7 @@ declare const iconButtonVariants: tailwind_variants.TVReturnType<{
|
|
|
843
1071
|
default: string;
|
|
844
1072
|
full: string;
|
|
845
1073
|
};
|
|
846
|
-
}, undefined, "inline-flex items-center justify-center whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", tailwind_variants_dist_config_js.TVConfig<{
|
|
1074
|
+
}, undefined, "inline-flex items-center justify-center whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&>svg]:shrink-0", tailwind_variants_dist_config_js.TVConfig<{
|
|
847
1075
|
variant: {
|
|
848
1076
|
primary: string;
|
|
849
1077
|
"primary-outline": string;
|
|
@@ -1680,6 +1908,7 @@ declare const PopoverParts: (({ children, ...props }: PopoverRootProps) => react
|
|
|
1680
1908
|
* - Focus/Open: Accent border with focus ring
|
|
1681
1909
|
* - Selected: Has a value selected (darker text)
|
|
1682
1910
|
* - Disabled: Reduced opacity, not interactive
|
|
1911
|
+
* - Invalid: Error border and styling
|
|
1683
1912
|
*/
|
|
1684
1913
|
declare const selectTriggerVariants: tailwind_variants.TVReturnType<{
|
|
1685
1914
|
size: {
|
|
@@ -1754,6 +1983,11 @@ declare const selectTriggerVariants: tailwind_variants.TVReturnType<{
|
|
|
1754
1983
|
}>, unknown, unknown, undefined>>;
|
|
1755
1984
|
/**
|
|
1756
1985
|
* Select popup/menu variants
|
|
1986
|
+
*
|
|
1987
|
+
* Uses overlay tokens for consistent floating panel styling:
|
|
1988
|
+
* - color.overlay.background - Light background
|
|
1989
|
+
* - color.overlay.border - Subtle border
|
|
1990
|
+
* - surface.overlay.radius - Rounded corners
|
|
1757
1991
|
*/
|
|
1758
1992
|
declare const selectPopupVariants: tailwind_variants.TVReturnType<{} | {} | {}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, {} | {}, undefined, tailwind_variants.TVReturnType<unknown, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
1759
1993
|
/**
|
|
@@ -1773,10 +2007,25 @@ declare const SelectRoot: <Value = string>({ children, ...props }: SelectProps<V
|
|
|
1773
2007
|
interface SelectTriggerProps extends Omit<React$1.ComponentProps<typeof Select$1.Trigger>, "className">, VariantProps<typeof selectTriggerVariants> {
|
|
1774
2008
|
className?: string;
|
|
1775
2009
|
placeholder?: string;
|
|
2010
|
+
/**
|
|
2011
|
+
* Accessible label for the select trigger.
|
|
2012
|
+
* Required for accessibility when no visible label is present.
|
|
2013
|
+
*/
|
|
2014
|
+
"aria-label"?: string;
|
|
1776
2015
|
}
|
|
1777
2016
|
declare const SelectTrigger: React$1.ForwardRefExoticComponent<Omit<SelectTriggerProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2017
|
+
interface SelectValueProps extends Omit<React$1.ComponentProps<typeof Select$1.Value>, "className"> {
|
|
2018
|
+
className?: string;
|
|
2019
|
+
placeholder?: string;
|
|
2020
|
+
}
|
|
1778
2021
|
interface SelectPopupProps extends Omit<React$1.ComponentProps<typeof Select$1.Popup>, "className"> {
|
|
1779
2022
|
className?: string;
|
|
2023
|
+
/**
|
|
2024
|
+
* Whether the selected item should align with the trigger.
|
|
2025
|
+
* When true (default), the popup positions so the selected item appears over the trigger.
|
|
2026
|
+
* When false, the popup aligns to the trigger edge.
|
|
2027
|
+
*/
|
|
2028
|
+
alignItemWithTrigger?: boolean;
|
|
1780
2029
|
}
|
|
1781
2030
|
declare const SelectPopup: React$1.ForwardRefExoticComponent<Omit<SelectPopupProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1782
2031
|
interface SelectOptionProps extends Omit<React$1.ComponentProps<typeof Select$1.Item>, "className"> {
|
|
@@ -1791,12 +2040,28 @@ interface SelectGroupLabelProps extends Omit<React$1.ComponentProps<typeof Selec
|
|
|
1791
2040
|
className?: string;
|
|
1792
2041
|
}
|
|
1793
2042
|
declare const SelectGroupLabel: React$1.ForwardRefExoticComponent<Omit<SelectGroupLabelProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2043
|
+
interface SelectSeparatorProps extends Omit<React$1.ComponentProps<typeof Select$1.Separator>, "className"> {
|
|
2044
|
+
className?: string;
|
|
2045
|
+
}
|
|
2046
|
+
interface SelectScrollUpArrowProps extends Omit<React$1.ComponentProps<typeof Select$1.ScrollUpArrow>, "className"> {
|
|
2047
|
+
className?: string;
|
|
2048
|
+
}
|
|
2049
|
+
interface SelectScrollDownArrowProps extends Omit<React$1.ComponentProps<typeof Select$1.ScrollDownArrow>, "className"> {
|
|
2050
|
+
className?: string;
|
|
2051
|
+
}
|
|
1794
2052
|
declare const Select: (<Value = string>({ children, ...props }: SelectProps<Value>) => react_jsx_runtime.JSX.Element) & {
|
|
1795
2053
|
Trigger: React$1.ForwardRefExoticComponent<Omit<SelectTriggerProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2054
|
+
Value: React$1.ForwardRefExoticComponent<Omit<SelectValueProps, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
|
|
1796
2055
|
Popup: React$1.ForwardRefExoticComponent<Omit<SelectPopupProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2056
|
+
Content: React$1.ForwardRefExoticComponent<Omit<SelectPopupProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1797
2057
|
Option: React$1.ForwardRefExoticComponent<Omit<SelectOptionProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2058
|
+
Item: React$1.ForwardRefExoticComponent<Omit<SelectOptionProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1798
2059
|
Group: React$1.ForwardRefExoticComponent<Omit<SelectGroupProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1799
2060
|
GroupLabel: React$1.ForwardRefExoticComponent<Omit<SelectGroupLabelProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2061
|
+
Label: React$1.ForwardRefExoticComponent<Omit<SelectGroupLabelProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2062
|
+
Separator: React$1.ForwardRefExoticComponent<Omit<SelectSeparatorProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2063
|
+
ScrollUpArrow: React$1.ForwardRefExoticComponent<Omit<SelectScrollUpArrowProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2064
|
+
ScrollDownArrow: React$1.ForwardRefExoticComponent<Omit<SelectScrollDownArrowProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1800
2065
|
};
|
|
1801
2066
|
|
|
1802
2067
|
/**
|
|
@@ -1957,157 +2222,1182 @@ declare const TooltipParts: (({ children, ...props }: TooltipRootProps) => react
|
|
|
1957
2222
|
Arrow: React$1.ForwardRefExoticComponent<Omit<TooltipArrowProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1958
2223
|
};
|
|
1959
2224
|
|
|
1960
|
-
|
|
1961
|
-
|
|
2225
|
+
/**
|
|
2226
|
+
* Represents a single caption cue parsed from VTT.
|
|
2227
|
+
*/
|
|
2228
|
+
interface CaptionCue {
|
|
2229
|
+
/** Unique identifier for the cue */
|
|
2230
|
+
id: string;
|
|
2231
|
+
/** Start time in seconds */
|
|
2232
|
+
startTime: number;
|
|
2233
|
+
/** End time in seconds */
|
|
2234
|
+
endTime: number;
|
|
2235
|
+
/** Caption text content */
|
|
2236
|
+
text: string;
|
|
1962
2237
|
}
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
2238
|
+
interface UseCaptionsOptions {
|
|
2239
|
+
/** VTT file URL to fetch */
|
|
2240
|
+
src?: string;
|
|
2241
|
+
/** Pre-loaded VTT content string */
|
|
2242
|
+
content?: string;
|
|
2243
|
+
/** Strip VTT formatting tags from caption text */
|
|
2244
|
+
stripTags?: boolean;
|
|
2245
|
+
/** Current playback time in seconds (alternative to setCurrentTime) */
|
|
2246
|
+
currentTime?: number;
|
|
1969
2247
|
}
|
|
1970
|
-
|
|
2248
|
+
interface UseCaptionsReturn {
|
|
2249
|
+
/** All parsed caption cues */
|
|
2250
|
+
cues: CaptionCue[];
|
|
2251
|
+
/** Currently active cue based on current time */
|
|
2252
|
+
activeCue: CaptionCue | null;
|
|
2253
|
+
/** Update the current playback time to get active cue */
|
|
2254
|
+
setCurrentTime: (time: number) => void;
|
|
2255
|
+
/** Loading state */
|
|
2256
|
+
isLoading: boolean;
|
|
2257
|
+
/** Error state */
|
|
2258
|
+
error: Error | null;
|
|
2259
|
+
}
|
|
2260
|
+
/**
|
|
2261
|
+
* Hook for parsing VTT captions and tracking the active cue.
|
|
2262
|
+
*
|
|
2263
|
+
* @param options - Caption source options
|
|
2264
|
+
* @returns Parsed cues, active cue, and state
|
|
2265
|
+
*
|
|
2266
|
+
* @example
|
|
2267
|
+
* ```tsx
|
|
2268
|
+
* function VideoPlayer() {
|
|
2269
|
+
* const videoRef = React.useRef<HTMLVideoElement>(null);
|
|
2270
|
+
* const { activeCue, setCurrentTime } = useCaptions({
|
|
2271
|
+
* src: '/captions.vtt',
|
|
2272
|
+
* });
|
|
2273
|
+
*
|
|
2274
|
+
* // Sync with video time
|
|
2275
|
+
* React.useEffect(() => {
|
|
2276
|
+
* const video = videoRef.current;
|
|
2277
|
+
* if (!video) return;
|
|
2278
|
+
*
|
|
2279
|
+
* const handleTimeUpdate = () => setCurrentTime(video.currentTime);
|
|
2280
|
+
* video.addEventListener('timeupdate', handleTimeUpdate);
|
|
2281
|
+
* return () => video.removeEventListener('timeupdate', handleTimeUpdate);
|
|
2282
|
+
* }, [setCurrentTime]);
|
|
2283
|
+
*
|
|
2284
|
+
* return (
|
|
2285
|
+
* <div>
|
|
2286
|
+
* <video ref={videoRef} src="/video.mp4" />
|
|
2287
|
+
* {activeCue && <div className="caption">{activeCue.text}</div>}
|
|
2288
|
+
* </div>
|
|
2289
|
+
* );
|
|
2290
|
+
* }
|
|
2291
|
+
* ```
|
|
2292
|
+
*/
|
|
2293
|
+
declare function useCaptions(options?: UseCaptionsOptions): UseCaptionsReturn;
|
|
1971
2294
|
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
*/
|
|
1980
|
-
overlay: string;
|
|
2295
|
+
/**
|
|
2296
|
+
* Caption overlay variants using semantic tokens.
|
|
2297
|
+
*/
|
|
2298
|
+
declare const captionOverlayVariants: tailwind_variants.TVReturnType<{
|
|
2299
|
+
position: {
|
|
2300
|
+
bottom: string;
|
|
2301
|
+
"bottom-sm": string;
|
|
1981
2302
|
};
|
|
1982
|
-
}, undefined,
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
/**
|
|
1987
|
-
* Overlay layout - content sits on top of full-bleed background.
|
|
1988
|
-
* Use with Background components for images/gradients.
|
|
1989
|
-
*/
|
|
1990
|
-
overlay: string;
|
|
2303
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2304
|
+
position: {
|
|
2305
|
+
bottom: string;
|
|
2306
|
+
"bottom-sm": string;
|
|
1991
2307
|
};
|
|
1992
2308
|
}, {
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
/**
|
|
1997
|
-
* Overlay layout - content sits on top of full-bleed background.
|
|
1998
|
-
* Use with Background components for images/gradients.
|
|
1999
|
-
*/
|
|
2000
|
-
overlay: string;
|
|
2309
|
+
position: {
|
|
2310
|
+
bottom: string;
|
|
2311
|
+
"bottom-sm": string;
|
|
2001
2312
|
};
|
|
2002
2313
|
}>, {
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
/**
|
|
2007
|
-
* Overlay layout - content sits on top of full-bleed background.
|
|
2008
|
-
* Use with Background components for images/gradients.
|
|
2009
|
-
*/
|
|
2010
|
-
overlay: string;
|
|
2314
|
+
position: {
|
|
2315
|
+
bottom: string;
|
|
2316
|
+
"bottom-sm": string;
|
|
2011
2317
|
};
|
|
2012
2318
|
}, undefined, tailwind_variants.TVReturnType<{
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
/**
|
|
2017
|
-
* Overlay layout - content sits on top of full-bleed background.
|
|
2018
|
-
* Use with Background components for images/gradients.
|
|
2019
|
-
*/
|
|
2020
|
-
overlay: string;
|
|
2319
|
+
position: {
|
|
2320
|
+
bottom: string;
|
|
2321
|
+
"bottom-sm": string;
|
|
2021
2322
|
};
|
|
2022
|
-
}, undefined,
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
/**
|
|
2027
|
-
* Overlay layout - content sits on top of full-bleed background.
|
|
2028
|
-
* Use with Background components for images/gradients.
|
|
2029
|
-
*/
|
|
2030
|
-
overlay: string;
|
|
2323
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2324
|
+
position: {
|
|
2325
|
+
bottom: string;
|
|
2326
|
+
"bottom-sm": string;
|
|
2031
2327
|
};
|
|
2032
2328
|
}, {
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
/**
|
|
2037
|
-
* Overlay layout - content sits on top of full-bleed background.
|
|
2038
|
-
* Use with Background components for images/gradients.
|
|
2039
|
-
*/
|
|
2040
|
-
overlay: string;
|
|
2329
|
+
position: {
|
|
2330
|
+
bottom: string;
|
|
2331
|
+
"bottom-sm": string;
|
|
2041
2332
|
};
|
|
2042
2333
|
}>, unknown, unknown, undefined>>;
|
|
2043
|
-
interface CardProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {
|
|
2044
|
-
}
|
|
2045
|
-
/**
|
|
2046
|
-
* Card component for displaying content in a contained, scannable format.
|
|
2047
|
-
*
|
|
2048
|
-
* Layouts:
|
|
2049
|
-
* - vertical: Image on top, content below (default)
|
|
2050
|
-
* - horizontal: Image on left, content on right
|
|
2051
|
-
* - overlay: Full-bleed background with content on top
|
|
2052
|
-
*
|
|
2053
|
-
* Use with CardImage, CardContent, CardEyebrow, CardTitle, CardDescription, and CardActions.
|
|
2054
|
-
* For overlay layout, use Background components for full-bleed backgrounds.
|
|
2055
|
-
*/
|
|
2056
|
-
declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2057
|
-
interface CardImageProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2058
|
-
/**
|
|
2059
|
-
* The image source URL
|
|
2060
|
-
*/
|
|
2061
|
-
src?: string;
|
|
2062
|
-
/**
|
|
2063
|
-
* Alt text for the image
|
|
2064
|
-
*/
|
|
2065
|
-
alt?: string;
|
|
2066
|
-
}
|
|
2067
2334
|
/**
|
|
2068
|
-
*
|
|
2069
|
-
* For horizontal layout, takes up ~40% width and stretches to content height.
|
|
2335
|
+
* Caption text box variants.
|
|
2070
2336
|
*/
|
|
2071
|
-
declare const
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
*/
|
|
2077
|
-
justify: {
|
|
2078
|
-
start: string;
|
|
2079
|
-
center: string;
|
|
2080
|
-
end: string;
|
|
2337
|
+
declare const captionTextVariants: tailwind_variants.TVReturnType<{
|
|
2338
|
+
size: {
|
|
2339
|
+
sm: string;
|
|
2340
|
+
md: string;
|
|
2341
|
+
lg: string;
|
|
2081
2342
|
};
|
|
2082
|
-
}, undefined,
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
justify: {
|
|
2088
|
-
start: string;
|
|
2089
|
-
center: string;
|
|
2090
|
-
end: string;
|
|
2343
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2344
|
+
size: {
|
|
2345
|
+
sm: string;
|
|
2346
|
+
md: string;
|
|
2347
|
+
lg: string;
|
|
2091
2348
|
};
|
|
2092
2349
|
}, {
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
justify: {
|
|
2098
|
-
start: string;
|
|
2099
|
-
center: string;
|
|
2100
|
-
end: string;
|
|
2350
|
+
size: {
|
|
2351
|
+
sm: string;
|
|
2352
|
+
md: string;
|
|
2353
|
+
lg: string;
|
|
2101
2354
|
};
|
|
2102
2355
|
}>, {
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2356
|
+
size: {
|
|
2357
|
+
sm: string;
|
|
2358
|
+
md: string;
|
|
2359
|
+
lg: string;
|
|
2360
|
+
};
|
|
2361
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
2362
|
+
size: {
|
|
2363
|
+
sm: string;
|
|
2364
|
+
md: string;
|
|
2365
|
+
lg: string;
|
|
2366
|
+
};
|
|
2367
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2368
|
+
size: {
|
|
2369
|
+
sm: string;
|
|
2370
|
+
md: string;
|
|
2371
|
+
lg: string;
|
|
2372
|
+
};
|
|
2373
|
+
}, {
|
|
2374
|
+
size: {
|
|
2375
|
+
sm: string;
|
|
2376
|
+
md: string;
|
|
2377
|
+
lg: string;
|
|
2378
|
+
};
|
|
2379
|
+
}>, unknown, unknown, undefined>>;
|
|
2380
|
+
interface CaptionOverlayProps extends React$1.HTMLAttributes<HTMLOutputElement>, VariantProps<typeof captionOverlayVariants>, VariantProps<typeof captionTextVariants> {
|
|
2381
|
+
/** Caption cue to display */
|
|
2382
|
+
cue?: CaptionCue | null;
|
|
2383
|
+
/** Caption text to display (alternative to cue) */
|
|
2384
|
+
text?: string;
|
|
2385
|
+
}
|
|
2386
|
+
/**
|
|
2387
|
+
* CaptionOverlay component.
|
|
2388
|
+
*
|
|
2389
|
+
* Displays caption text overlaid on video content.
|
|
2390
|
+
* Styled to match the DGA video player implementation.
|
|
2391
|
+
*
|
|
2392
|
+
* @example
|
|
2393
|
+
* ```tsx
|
|
2394
|
+
* <CaptionOverlay cue={activeCue} />
|
|
2395
|
+
*
|
|
2396
|
+
* // Or with plain text
|
|
2397
|
+
* <CaptionOverlay text="Hello, world!" />
|
|
2398
|
+
* ```
|
|
2399
|
+
*/
|
|
2400
|
+
declare const CaptionOverlay: React$1.ForwardRefExoticComponent<CaptionOverlayProps & React$1.RefAttributes<HTMLOutputElement>>;
|
|
2401
|
+
|
|
2402
|
+
/** Cloudflare Stream configuration */
|
|
2403
|
+
interface CloudflareConfig$1 {
|
|
2404
|
+
/** Cloudflare Stream video ID */
|
|
2405
|
+
videoId: string;
|
|
2406
|
+
/** Cloudflare customer code/subdomain */
|
|
2407
|
+
customerCode: string;
|
|
2408
|
+
}
|
|
2409
|
+
/**
|
|
2410
|
+
* Video player container variants.
|
|
2411
|
+
*/
|
|
2412
|
+
declare const videoPlayerVariants: tailwind_variants.TVReturnType<{
|
|
2413
|
+
aspectRatio: {
|
|
2414
|
+
"16/9": string;
|
|
2415
|
+
"4/3": string;
|
|
2416
|
+
"1/1": string;
|
|
2417
|
+
"9/16": string;
|
|
2418
|
+
auto: string;
|
|
2419
|
+
};
|
|
2420
|
+
rounded: {
|
|
2421
|
+
none: string;
|
|
2422
|
+
sm: string;
|
|
2423
|
+
md: string;
|
|
2424
|
+
lg: string;
|
|
2425
|
+
};
|
|
2426
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2427
|
+
aspectRatio: {
|
|
2428
|
+
"16/9": string;
|
|
2429
|
+
"4/3": string;
|
|
2430
|
+
"1/1": string;
|
|
2431
|
+
"9/16": string;
|
|
2432
|
+
auto: string;
|
|
2433
|
+
};
|
|
2434
|
+
rounded: {
|
|
2435
|
+
none: string;
|
|
2436
|
+
sm: string;
|
|
2437
|
+
md: string;
|
|
2438
|
+
lg: string;
|
|
2439
|
+
};
|
|
2440
|
+
}, {
|
|
2441
|
+
aspectRatio: {
|
|
2442
|
+
"16/9": string;
|
|
2443
|
+
"4/3": string;
|
|
2444
|
+
"1/1": string;
|
|
2445
|
+
"9/16": string;
|
|
2446
|
+
auto: string;
|
|
2447
|
+
};
|
|
2448
|
+
rounded: {
|
|
2449
|
+
none: string;
|
|
2450
|
+
sm: string;
|
|
2451
|
+
md: string;
|
|
2452
|
+
lg: string;
|
|
2453
|
+
};
|
|
2454
|
+
}>, {
|
|
2455
|
+
aspectRatio: {
|
|
2456
|
+
"16/9": string;
|
|
2457
|
+
"4/3": string;
|
|
2458
|
+
"1/1": string;
|
|
2459
|
+
"9/16": string;
|
|
2460
|
+
auto: string;
|
|
2461
|
+
};
|
|
2462
|
+
rounded: {
|
|
2463
|
+
none: string;
|
|
2464
|
+
sm: string;
|
|
2465
|
+
md: string;
|
|
2466
|
+
lg: string;
|
|
2467
|
+
};
|
|
2468
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
2469
|
+
aspectRatio: {
|
|
2470
|
+
"16/9": string;
|
|
2471
|
+
"4/3": string;
|
|
2472
|
+
"1/1": string;
|
|
2473
|
+
"9/16": string;
|
|
2474
|
+
auto: string;
|
|
2475
|
+
};
|
|
2476
|
+
rounded: {
|
|
2477
|
+
none: string;
|
|
2478
|
+
sm: string;
|
|
2479
|
+
md: string;
|
|
2480
|
+
lg: string;
|
|
2481
|
+
};
|
|
2482
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2483
|
+
aspectRatio: {
|
|
2484
|
+
"16/9": string;
|
|
2485
|
+
"4/3": string;
|
|
2486
|
+
"1/1": string;
|
|
2487
|
+
"9/16": string;
|
|
2488
|
+
auto: string;
|
|
2489
|
+
};
|
|
2490
|
+
rounded: {
|
|
2491
|
+
none: string;
|
|
2492
|
+
sm: string;
|
|
2493
|
+
md: string;
|
|
2494
|
+
lg: string;
|
|
2495
|
+
};
|
|
2496
|
+
}, {
|
|
2497
|
+
aspectRatio: {
|
|
2498
|
+
"16/9": string;
|
|
2499
|
+
"4/3": string;
|
|
2500
|
+
"1/1": string;
|
|
2501
|
+
"9/16": string;
|
|
2502
|
+
auto: string;
|
|
2503
|
+
};
|
|
2504
|
+
rounded: {
|
|
2505
|
+
none: string;
|
|
2506
|
+
sm: string;
|
|
2507
|
+
md: string;
|
|
2508
|
+
lg: string;
|
|
2509
|
+
};
|
|
2510
|
+
}>, unknown, unknown, undefined>>;
|
|
2511
|
+
/**
|
|
2512
|
+
* Media controller container styles.
|
|
2513
|
+
* Uses CSS custom properties to configure media-chrome components.
|
|
2514
|
+
* Styled to match DGA video player design with ghost-style buttons.
|
|
2515
|
+
*/
|
|
2516
|
+
declare const mediaControllerVariants: tailwind_variants.TVReturnType<{} | {} | {}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, {} | {}, undefined, tailwind_variants.TVReturnType<unknown, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
2517
|
+
/**
|
|
2518
|
+
* Control bar variants.
|
|
2519
|
+
* Note: Positioning is handled via inline styles to override web component defaults.
|
|
2520
|
+
* Tailwind classes handle background color and visibility transitions.
|
|
2521
|
+
*/
|
|
2522
|
+
declare const controlBarVariants: tailwind_variants.TVReturnType<{
|
|
2523
|
+
visible: {
|
|
2524
|
+
true: string;
|
|
2525
|
+
false: string;
|
|
2526
|
+
};
|
|
2527
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2528
|
+
visible: {
|
|
2529
|
+
true: string;
|
|
2530
|
+
false: string;
|
|
2531
|
+
};
|
|
2532
|
+
}, {
|
|
2533
|
+
visible: {
|
|
2534
|
+
true: string;
|
|
2535
|
+
false: string;
|
|
2536
|
+
};
|
|
2537
|
+
}>, {
|
|
2538
|
+
visible: {
|
|
2539
|
+
true: string;
|
|
2540
|
+
false: string;
|
|
2541
|
+
};
|
|
2542
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
2543
|
+
visible: {
|
|
2544
|
+
true: string;
|
|
2545
|
+
false: string;
|
|
2546
|
+
};
|
|
2547
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2548
|
+
visible: {
|
|
2549
|
+
true: string;
|
|
2550
|
+
false: string;
|
|
2551
|
+
};
|
|
2552
|
+
}, {
|
|
2553
|
+
visible: {
|
|
2554
|
+
true: string;
|
|
2555
|
+
false: string;
|
|
2556
|
+
};
|
|
2557
|
+
}>, unknown, unknown, undefined>>;
|
|
2558
|
+
/**
|
|
2559
|
+
* Control button styles for custom buttons.
|
|
2560
|
+
* Transparent by default, shows background on hover (ghost style).
|
|
2561
|
+
*/
|
|
2562
|
+
declare const controlButtonVariants: tailwind_variants.TVReturnType<{} | {} | {}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, {} | {}, undefined, tailwind_variants.TVReturnType<unknown, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
2563
|
+
/**
|
|
2564
|
+
* Loading overlay variants.
|
|
2565
|
+
*/
|
|
2566
|
+
declare const loadingOverlayVariants: tailwind_variants.TVReturnType<{} | {} | {}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, {} | {}, undefined, tailwind_variants.TVReturnType<unknown, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
2567
|
+
interface VideoPlayerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children" | "onError" | "onPlay" | "onPause" | "onEnded" | "onTimeUpdate">, VariantProps<typeof videoPlayerVariants> {
|
|
2568
|
+
/** Video source URL (HLS .m3u8 or regular video file) */
|
|
2569
|
+
src?: string;
|
|
2570
|
+
/** Cloudflare Stream configuration (takes precedence over src) */
|
|
2571
|
+
cloudflare?: CloudflareConfig$1;
|
|
2572
|
+
/** Poster image URL */
|
|
2573
|
+
poster?: string;
|
|
2574
|
+
/** VTT captions URL */
|
|
2575
|
+
captionsSrc?: string;
|
|
2576
|
+
/** Whether to autoplay (default: false) */
|
|
2577
|
+
autoPlay?: boolean;
|
|
2578
|
+
/** Whether to loop the video (default: false) */
|
|
2579
|
+
loop?: boolean;
|
|
2580
|
+
/** Whether to mute initially (default: false) */
|
|
2581
|
+
muted?: boolean;
|
|
2582
|
+
/** Whether to show controls (default: true) */
|
|
2583
|
+
controls?: boolean;
|
|
2584
|
+
/** Whether to auto-hide controls when not interacting (default: true) */
|
|
2585
|
+
autoHideControls?: boolean;
|
|
2586
|
+
/** Control auto-hide delay in ms (default: 3000) */
|
|
2587
|
+
autoHideDelay?: number;
|
|
2588
|
+
/** Whether captions are enabled by default (default: false) */
|
|
2589
|
+
captionsEnabled?: boolean;
|
|
2590
|
+
/** Callback when video starts playing */
|
|
2591
|
+
onPlay?: () => void;
|
|
2592
|
+
/** Callback when video pauses */
|
|
2593
|
+
onPause?: () => void;
|
|
2594
|
+
/** Callback when video ends */
|
|
2595
|
+
onEnded?: () => void;
|
|
2596
|
+
/** Callback on time update */
|
|
2597
|
+
onTimeUpdate?: (time: number) => void;
|
|
2598
|
+
/** Callback on error */
|
|
2599
|
+
onError?: (error: Error) => void;
|
|
2600
|
+
/** Ref to the video element */
|
|
2601
|
+
videoRef?: React$1.RefObject<HTMLVideoElement | null>;
|
|
2602
|
+
}
|
|
2603
|
+
/**
|
|
2604
|
+
* VideoPlayer - Standalone video player component with media-chrome controls.
|
|
2605
|
+
*
|
|
2606
|
+
* Supports Cloudflare Stream (recommended) or direct video URLs with HLS support.
|
|
2607
|
+
* Works standalone or can be composed with Modal for fullscreen playback.
|
|
2608
|
+
*
|
|
2609
|
+
* @example
|
|
2610
|
+
* ```tsx
|
|
2611
|
+
* // With Cloudflare Stream (recommended)
|
|
2612
|
+
* <VideoPlayer
|
|
2613
|
+
* cloudflare={{ videoId: "abc123", customerCode: "xyz789" }}
|
|
2614
|
+
* poster="/thumbnail.jpg"
|
|
2615
|
+
* captionsSrc="/captions.vtt"
|
|
2616
|
+
* />
|
|
2617
|
+
*
|
|
2618
|
+
* // With direct URL
|
|
2619
|
+
* <VideoPlayer
|
|
2620
|
+
* src="https://example.com/video.mp4"
|
|
2621
|
+
* poster="/thumbnail.jpg"
|
|
2622
|
+
* />
|
|
2623
|
+
*
|
|
2624
|
+
* // With Modal for fullscreen
|
|
2625
|
+
* <Modal trigger={<Button>Watch Video</Button>}>
|
|
2626
|
+
* <VideoPlayer cloudflare={{ videoId: "...", customerCode: "..." }} />
|
|
2627
|
+
* </Modal>
|
|
2628
|
+
* ```
|
|
2629
|
+
*/
|
|
2630
|
+
declare const VideoPlayer: React$1.ForwardRefExoticComponent<VideoPlayerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2631
|
+
|
|
2632
|
+
interface DevToolbarProps {
|
|
2633
|
+
defaultExpanded?: boolean;
|
|
2634
|
+
}
|
|
2635
|
+
declare function DevToolbar({ defaultExpanded }: DevToolbarProps): react_jsx_runtime.JSX.Element;
|
|
2636
|
+
|
|
2637
|
+
interface GridOverlayProps {
|
|
2638
|
+
columnOpacity?: number;
|
|
2639
|
+
borderOpacity?: number;
|
|
2640
|
+
visible?: boolean;
|
|
2641
|
+
}
|
|
2642
|
+
declare function GridOverlay({ columnOpacity, borderOpacity, visible, }: GridOverlayProps): react_jsx_runtime.JSX.Element;
|
|
2643
|
+
|
|
2644
|
+
/**
|
|
2645
|
+
* Dialog backdrop variants
|
|
2646
|
+
*
|
|
2647
|
+
* Semi-transparent overlay behind the dialog content.
|
|
2648
|
+
*/
|
|
2649
|
+
declare const dialogBackdropVariants: tailwind_variants.TVReturnType<{} | {} | {}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, {} | {}, undefined, tailwind_variants.TVReturnType<unknown, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
2650
|
+
/**
|
|
2651
|
+
* Dialog popup variants
|
|
2652
|
+
*
|
|
2653
|
+
* Uses semantic overlay tokens for themeable styling:
|
|
2654
|
+
* - color.overlay.background - Light background
|
|
2655
|
+
* - color.overlay.border - Subtle border
|
|
2656
|
+
* - color.overlay.text - Primary text
|
|
2657
|
+
* - surface.overlay.radius - Rounded corners
|
|
2658
|
+
*/
|
|
2659
|
+
declare const dialogPopupVariants: tailwind_variants.TVReturnType<{
|
|
2660
|
+
size: {
|
|
2661
|
+
sm: string;
|
|
2662
|
+
md: string;
|
|
2663
|
+
lg: string;
|
|
2664
|
+
xl: string;
|
|
2665
|
+
full: string;
|
|
2666
|
+
};
|
|
2667
|
+
variant: {
|
|
2668
|
+
default: string[];
|
|
2669
|
+
minimal: string[];
|
|
2670
|
+
};
|
|
2671
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2672
|
+
size: {
|
|
2673
|
+
sm: string;
|
|
2674
|
+
md: string;
|
|
2675
|
+
lg: string;
|
|
2676
|
+
xl: string;
|
|
2677
|
+
full: string;
|
|
2678
|
+
};
|
|
2679
|
+
variant: {
|
|
2680
|
+
default: string[];
|
|
2681
|
+
minimal: string[];
|
|
2682
|
+
};
|
|
2683
|
+
}, {
|
|
2684
|
+
size: {
|
|
2685
|
+
sm: string;
|
|
2686
|
+
md: string;
|
|
2687
|
+
lg: string;
|
|
2688
|
+
xl: string;
|
|
2689
|
+
full: string;
|
|
2690
|
+
};
|
|
2691
|
+
variant: {
|
|
2692
|
+
default: string[];
|
|
2693
|
+
minimal: string[];
|
|
2694
|
+
};
|
|
2695
|
+
}>, {
|
|
2696
|
+
size: {
|
|
2697
|
+
sm: string;
|
|
2698
|
+
md: string;
|
|
2699
|
+
lg: string;
|
|
2700
|
+
xl: string;
|
|
2701
|
+
full: string;
|
|
2702
|
+
};
|
|
2703
|
+
variant: {
|
|
2704
|
+
default: string[];
|
|
2705
|
+
minimal: string[];
|
|
2706
|
+
};
|
|
2707
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
2708
|
+
size: {
|
|
2709
|
+
sm: string;
|
|
2710
|
+
md: string;
|
|
2711
|
+
lg: string;
|
|
2712
|
+
xl: string;
|
|
2713
|
+
full: string;
|
|
2714
|
+
};
|
|
2715
|
+
variant: {
|
|
2716
|
+
default: string[];
|
|
2717
|
+
minimal: string[];
|
|
2718
|
+
};
|
|
2719
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2720
|
+
size: {
|
|
2721
|
+
sm: string;
|
|
2722
|
+
md: string;
|
|
2723
|
+
lg: string;
|
|
2724
|
+
xl: string;
|
|
2725
|
+
full: string;
|
|
2726
|
+
};
|
|
2727
|
+
variant: {
|
|
2728
|
+
default: string[];
|
|
2729
|
+
minimal: string[];
|
|
2730
|
+
};
|
|
2731
|
+
}, {
|
|
2732
|
+
size: {
|
|
2733
|
+
sm: string;
|
|
2734
|
+
md: string;
|
|
2735
|
+
lg: string;
|
|
2736
|
+
xl: string;
|
|
2737
|
+
full: string;
|
|
2738
|
+
};
|
|
2739
|
+
variant: {
|
|
2740
|
+
default: string[];
|
|
2741
|
+
minimal: string[];
|
|
2742
|
+
};
|
|
2743
|
+
}>, unknown, unknown, undefined>>;
|
|
2744
|
+
interface DialogRootProps extends Dialog$1.Root.Props {
|
|
2745
|
+
children: React$1.ReactNode;
|
|
2746
|
+
}
|
|
2747
|
+
/**
|
|
2748
|
+
* Dialog Root
|
|
2749
|
+
*
|
|
2750
|
+
* Groups all dialog parts and manages open/close state.
|
|
2751
|
+
* Provides focus trap, scroll lock, and escape key handling automatically.
|
|
2752
|
+
*/
|
|
2753
|
+
declare const DialogRoot: ({ children, ...props }: DialogRootProps) => react_jsx_runtime.JSX.Element;
|
|
2754
|
+
interface DialogTriggerProps extends React$1.ComponentProps<typeof Dialog$1.Trigger> {
|
|
2755
|
+
className?: string;
|
|
2756
|
+
}
|
|
2757
|
+
/**
|
|
2758
|
+
* Dialog Trigger
|
|
2759
|
+
*
|
|
2760
|
+
* The element that triggers the dialog to open on click.
|
|
2761
|
+
* When children is a single React element, uses `render` prop to avoid wrapper element.
|
|
2762
|
+
*/
|
|
2763
|
+
declare const DialogTrigger: React$1.ForwardRefExoticComponent<Omit<DialogTriggerProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2764
|
+
interface DialogPortalProps extends Dialog$1.Portal.Props {
|
|
2765
|
+
children: React$1.ReactNode;
|
|
2766
|
+
}
|
|
2767
|
+
/**
|
|
2768
|
+
* Dialog Portal
|
|
2769
|
+
*
|
|
2770
|
+
* Renders the dialog in a portal outside the DOM hierarchy.
|
|
2771
|
+
* This ensures proper stacking context and avoids z-index issues.
|
|
2772
|
+
*/
|
|
2773
|
+
declare const DialogPortal: ({ children, ...props }: DialogPortalProps) => react_jsx_runtime.JSX.Element;
|
|
2774
|
+
interface DialogBackdropProps extends Omit<React$1.ComponentProps<typeof Dialog$1.Backdrop>, "className"> {
|
|
2775
|
+
className?: string;
|
|
2776
|
+
}
|
|
2777
|
+
/**
|
|
2778
|
+
* Dialog Backdrop
|
|
2779
|
+
*
|
|
2780
|
+
* Semi-transparent overlay that covers the page behind the dialog.
|
|
2781
|
+
* Clicking the backdrop closes the dialog by default.
|
|
2782
|
+
*/
|
|
2783
|
+
declare const DialogBackdrop: React$1.ForwardRefExoticComponent<Omit<DialogBackdropProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2784
|
+
interface DialogPopupProps extends Omit<React$1.ComponentProps<typeof Dialog$1.Popup>, "className">, VariantProps<typeof dialogPopupVariants> {
|
|
2785
|
+
className?: string;
|
|
2786
|
+
}
|
|
2787
|
+
/**
|
|
2788
|
+
* Dialog Popup
|
|
2789
|
+
*
|
|
2790
|
+
* The dialog content container. Centered on screen with configurable size.
|
|
2791
|
+
* Use `variant="minimal"` for borderless dialogs (video modals, etc.)
|
|
2792
|
+
*/
|
|
2793
|
+
declare const DialogPopup: React$1.ForwardRefExoticComponent<Omit<DialogPopupProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2794
|
+
interface DialogTitleProps extends Omit<React$1.ComponentProps<typeof Dialog$1.Title>, "className"> {
|
|
2795
|
+
className?: string;
|
|
2796
|
+
}
|
|
2797
|
+
/**
|
|
2798
|
+
* Dialog Title
|
|
2799
|
+
*
|
|
2800
|
+
* Accessible title for the dialog. Should be used for screen reader support.
|
|
2801
|
+
*/
|
|
2802
|
+
declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogTitleProps, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
2803
|
+
interface DialogDescriptionProps extends Omit<React$1.ComponentProps<typeof Dialog$1.Description>, "className"> {
|
|
2804
|
+
className?: string;
|
|
2805
|
+
}
|
|
2806
|
+
/**
|
|
2807
|
+
* Dialog Description
|
|
2808
|
+
*
|
|
2809
|
+
* Accessible description for the dialog content.
|
|
2810
|
+
*/
|
|
2811
|
+
declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogDescriptionProps, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
2812
|
+
interface DialogCloseProps extends Omit<React$1.ComponentProps<typeof Dialog$1.Close>, "className"> {
|
|
2813
|
+
className?: string;
|
|
2814
|
+
}
|
|
2815
|
+
/**
|
|
2816
|
+
* Dialog Close
|
|
2817
|
+
*
|
|
2818
|
+
* Close button for the dialog. Can be placed anywhere within the dialog.
|
|
2819
|
+
*/
|
|
2820
|
+
declare const DialogClose: React$1.ForwardRefExoticComponent<Omit<DialogCloseProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2821
|
+
interface DialogBodyProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2822
|
+
className?: string;
|
|
2823
|
+
}
|
|
2824
|
+
/**
|
|
2825
|
+
* Dialog Body
|
|
2826
|
+
*
|
|
2827
|
+
* Container for the main dialog content. Handles overflow scrolling.
|
|
2828
|
+
*/
|
|
2829
|
+
declare const DialogBody: React$1.ForwardRefExoticComponent<DialogBodyProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2830
|
+
interface DialogFooterProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2831
|
+
className?: string;
|
|
2832
|
+
}
|
|
2833
|
+
/**
|
|
2834
|
+
* Dialog Footer
|
|
2835
|
+
*
|
|
2836
|
+
* Container for dialog actions (buttons, etc.). Typically placed at the bottom.
|
|
2837
|
+
*/
|
|
2838
|
+
declare const DialogFooter: React$1.ForwardRefExoticComponent<DialogFooterProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2839
|
+
interface DialogProps {
|
|
2840
|
+
/** The content to show in the dialog */
|
|
2841
|
+
children: React$1.ReactNode;
|
|
2842
|
+
/** The element that triggers the dialog (optional for controlled mode) */
|
|
2843
|
+
trigger?: React$1.ReactNode;
|
|
2844
|
+
/** Title for the dialog */
|
|
2845
|
+
title?: React$1.ReactNode;
|
|
2846
|
+
/** Description for the dialog */
|
|
2847
|
+
description?: React$1.ReactNode;
|
|
2848
|
+
/** Size of the dialog */
|
|
2849
|
+
size?: "sm" | "md" | "lg" | "xl" | "full";
|
|
2850
|
+
/** Visual variant: "default" for card style, "minimal" for borderless (video modals) */
|
|
2851
|
+
variant?: "default" | "minimal";
|
|
2852
|
+
/** Whether to show a close button */
|
|
2853
|
+
showClose?: boolean;
|
|
2854
|
+
/** Controlled open state */
|
|
2855
|
+
open?: boolean;
|
|
2856
|
+
/** Default open state */
|
|
2857
|
+
defaultOpen?: boolean;
|
|
2858
|
+
/** Callback when open state changes */
|
|
2859
|
+
onOpenChange?: (open: boolean) => void;
|
|
2860
|
+
/** Additional className for the popup */
|
|
2861
|
+
className?: string;
|
|
2862
|
+
}
|
|
2863
|
+
/**
|
|
2864
|
+
* Dialog
|
|
2865
|
+
*
|
|
2866
|
+
* A simple, pre-composed dialog component for common use cases.
|
|
2867
|
+
* For more complex needs, use the compound components directly.
|
|
2868
|
+
*
|
|
2869
|
+
* @example
|
|
2870
|
+
* ```tsx
|
|
2871
|
+
* // With trigger
|
|
2872
|
+
* <Dialog
|
|
2873
|
+
* trigger={<Button>Open Dialog</Button>}
|
|
2874
|
+
* title="Dialog Title"
|
|
2875
|
+
* description="This is the dialog description."
|
|
2876
|
+
* >
|
|
2877
|
+
* <p>Dialog content goes here.</p>
|
|
2878
|
+
* </Dialog>
|
|
2879
|
+
*
|
|
2880
|
+
* // Controlled mode
|
|
2881
|
+
* <Dialog
|
|
2882
|
+
* open={isOpen}
|
|
2883
|
+
* onOpenChange={setIsOpen}
|
|
2884
|
+
* title="Controlled Dialog"
|
|
2885
|
+
* >
|
|
2886
|
+
* <p>Content here</p>
|
|
2887
|
+
* </Dialog>
|
|
2888
|
+
* ```
|
|
2889
|
+
*/
|
|
2890
|
+
declare const Dialog: ({ children, trigger, title, description, size, variant, showClose, open, defaultOpen, onOpenChange, className, }: DialogProps) => react_jsx_runtime.JSX.Element;
|
|
2891
|
+
declare const DialogParts: (({ children, ...props }: DialogRootProps) => react_jsx_runtime.JSX.Element) & {
|
|
2892
|
+
Root: ({ children, ...props }: DialogRootProps) => react_jsx_runtime.JSX.Element;
|
|
2893
|
+
Trigger: React$1.ForwardRefExoticComponent<Omit<DialogTriggerProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2894
|
+
Portal: ({ children, ...props }: DialogPortalProps) => react_jsx_runtime.JSX.Element;
|
|
2895
|
+
Backdrop: React$1.ForwardRefExoticComponent<Omit<DialogBackdropProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2896
|
+
Popup: React$1.ForwardRefExoticComponent<Omit<DialogPopupProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2897
|
+
Title: React$1.ForwardRefExoticComponent<Omit<DialogTitleProps, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
2898
|
+
Description: React$1.ForwardRefExoticComponent<Omit<DialogDescriptionProps, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
2899
|
+
Close: React$1.ForwardRefExoticComponent<Omit<DialogCloseProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2900
|
+
Body: React$1.ForwardRefExoticComponent<DialogBodyProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2901
|
+
Footer: React$1.ForwardRefExoticComponent<DialogFooterProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2902
|
+
};
|
|
2903
|
+
|
|
2904
|
+
/**
|
|
2905
|
+
* Video dialog container variants.
|
|
2906
|
+
* Uses fixed positioning to cover the viewport.
|
|
2907
|
+
*/
|
|
2908
|
+
declare const videoDialogVariants: tailwind_variants.TVReturnType<{} | {} | {}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, {} | {}, undefined, tailwind_variants.TVReturnType<unknown, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
2909
|
+
/**
|
|
2910
|
+
* Close button variants.
|
|
2911
|
+
*/
|
|
2912
|
+
declare const closeButtonVariants: tailwind_variants.TVReturnType<{
|
|
2913
|
+
position: {
|
|
2914
|
+
"top-right": string;
|
|
2915
|
+
"top-left": string;
|
|
2916
|
+
};
|
|
2917
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2918
|
+
position: {
|
|
2919
|
+
"top-right": string;
|
|
2920
|
+
"top-left": string;
|
|
2921
|
+
};
|
|
2922
|
+
}, {
|
|
2923
|
+
position: {
|
|
2924
|
+
"top-right": string;
|
|
2925
|
+
"top-left": string;
|
|
2926
|
+
};
|
|
2927
|
+
}>, {
|
|
2928
|
+
position: {
|
|
2929
|
+
"top-right": string;
|
|
2930
|
+
"top-left": string;
|
|
2931
|
+
};
|
|
2932
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
2933
|
+
position: {
|
|
2934
|
+
"top-right": string;
|
|
2935
|
+
"top-left": string;
|
|
2936
|
+
};
|
|
2937
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
2938
|
+
position: {
|
|
2939
|
+
"top-right": string;
|
|
2940
|
+
"top-left": string;
|
|
2941
|
+
};
|
|
2942
|
+
}, {
|
|
2943
|
+
position: {
|
|
2944
|
+
"top-right": string;
|
|
2945
|
+
"top-left": string;
|
|
2946
|
+
};
|
|
2947
|
+
}>, unknown, unknown, undefined>>;
|
|
2948
|
+
/**
|
|
2949
|
+
* Video container variants.
|
|
2950
|
+
* Expands to fill viewport, constrained by height (maintains aspect ratio).
|
|
2951
|
+
*/
|
|
2952
|
+
declare const videoContainerVariants: tailwind_variants.TVReturnType<{} | {} | {}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, {} | {}, undefined, tailwind_variants.TVReturnType<unknown, undefined, string[], tailwind_variants_dist_config_js.TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
2953
|
+
interface VideoDialogProps extends Omit<VideoPlayerProps, "videoRef" | "className"> {
|
|
2954
|
+
/** Trigger element that opens the dialog */
|
|
2955
|
+
trigger: React$1.ReactNode;
|
|
2956
|
+
/** Blur intensity for backdrop (default: high) */
|
|
2957
|
+
blur?: BlurredVideoBackdropProps["blur"];
|
|
2958
|
+
/** Gradient overlay for backdrop (default: vignette) */
|
|
2959
|
+
overlay?: BlurredVideoBackdropProps["overlay"];
|
|
2960
|
+
/** Backdrop opacity (default: 0.6) */
|
|
2961
|
+
backdropOpacity?: number;
|
|
2962
|
+
/** Whether to show close button (default: true) */
|
|
2963
|
+
showClose?: boolean;
|
|
2964
|
+
/** Close button position (default: top-right) */
|
|
2965
|
+
closePosition?: "top-right" | "top-left";
|
|
2966
|
+
/** Video player rounded corners (default: lg) */
|
|
2967
|
+
rounded?: VideoPlayerProps["rounded"];
|
|
2968
|
+
/** Controlled open state */
|
|
2969
|
+
open?: boolean;
|
|
2970
|
+
/** Default open state */
|
|
2971
|
+
defaultOpen?: boolean;
|
|
2972
|
+
/** Callback when open state changes */
|
|
2973
|
+
onOpenChange?: (open: boolean) => void;
|
|
2974
|
+
/** Additional className for the dialog container */
|
|
2975
|
+
className?: string;
|
|
2976
|
+
}
|
|
2977
|
+
/**
|
|
2978
|
+
* VideoDialog - Fullscreen video modal with blurred video backdrop.
|
|
2979
|
+
*
|
|
2980
|
+
* Creates an immersive video viewing experience where the blurred video
|
|
2981
|
+
* serves as the modal backdrop, with the main video centered on top.
|
|
2982
|
+
* Based on the DGA modal pattern.
|
|
2983
|
+
*
|
|
2984
|
+
* Features:
|
|
2985
|
+
* - Blurred video backdrop that syncs with main video
|
|
2986
|
+
* - Configurable blur intensity and gradient overlays
|
|
2987
|
+
* - Automatic play/pause when dialog opens/closes
|
|
2988
|
+
* - HLS streaming support via Cloudflare Stream
|
|
2989
|
+
* - Accessible dialog with focus trap and escape key handling
|
|
2990
|
+
*
|
|
2991
|
+
* @example
|
|
2992
|
+
* ```tsx
|
|
2993
|
+
* <VideoDialog
|
|
2994
|
+
* trigger={<Button>Watch Video</Button>}
|
|
2995
|
+
* cloudflare={{ videoId: "abc123", customerCode: "xyz789" }}
|
|
2996
|
+
* blur="high"
|
|
2997
|
+
* overlay="vignette"
|
|
2998
|
+
* />
|
|
2999
|
+
* ```
|
|
3000
|
+
*/
|
|
3001
|
+
declare const VideoDialog: React$1.ForwardRefExoticComponent<VideoDialogProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3002
|
+
|
|
3003
|
+
/** Cloudflare Stream configuration */
|
|
3004
|
+
interface CloudflareConfig {
|
|
3005
|
+
/** Cloudflare Stream video ID */
|
|
3006
|
+
videoId: string;
|
|
3007
|
+
/** Cloudflare customer code/subdomain */
|
|
3008
|
+
customerCode: string;
|
|
3009
|
+
}
|
|
3010
|
+
/**
|
|
3011
|
+
* Root container variants.
|
|
3012
|
+
*/
|
|
3013
|
+
declare const videoWithBackdropVariants: tailwind_variants.TVReturnType<{
|
|
3014
|
+
/**
|
|
3015
|
+
* Full-height mode for dialogs.
|
|
3016
|
+
*/
|
|
3017
|
+
fullHeight: {
|
|
3018
|
+
true: string;
|
|
3019
|
+
false: string;
|
|
3020
|
+
};
|
|
3021
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
3022
|
+
/**
|
|
3023
|
+
* Full-height mode for dialogs.
|
|
3024
|
+
*/
|
|
3025
|
+
fullHeight: {
|
|
3026
|
+
true: string;
|
|
3027
|
+
false: string;
|
|
3028
|
+
};
|
|
3029
|
+
}, {
|
|
3030
|
+
/**
|
|
3031
|
+
* Full-height mode for dialogs.
|
|
3032
|
+
*/
|
|
3033
|
+
fullHeight: {
|
|
3034
|
+
true: string;
|
|
3035
|
+
false: string;
|
|
3036
|
+
};
|
|
3037
|
+
}>, {
|
|
3038
|
+
/**
|
|
3039
|
+
* Full-height mode for dialogs.
|
|
3040
|
+
*/
|
|
3041
|
+
fullHeight: {
|
|
3042
|
+
true: string;
|
|
3043
|
+
false: string;
|
|
3044
|
+
};
|
|
3045
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
3046
|
+
/**
|
|
3047
|
+
* Full-height mode for dialogs.
|
|
3048
|
+
*/
|
|
3049
|
+
fullHeight: {
|
|
3050
|
+
true: string;
|
|
3051
|
+
false: string;
|
|
3052
|
+
};
|
|
3053
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
3054
|
+
/**
|
|
3055
|
+
* Full-height mode for dialogs.
|
|
3056
|
+
*/
|
|
3057
|
+
fullHeight: {
|
|
3058
|
+
true: string;
|
|
3059
|
+
false: string;
|
|
3060
|
+
};
|
|
3061
|
+
}, {
|
|
3062
|
+
/**
|
|
3063
|
+
* Full-height mode for dialogs.
|
|
3064
|
+
*/
|
|
3065
|
+
fullHeight: {
|
|
3066
|
+
true: string;
|
|
3067
|
+
false: string;
|
|
3068
|
+
};
|
|
3069
|
+
}>, unknown, unknown, undefined>>;
|
|
3070
|
+
/**
|
|
3071
|
+
* Content container variants.
|
|
3072
|
+
*/
|
|
3073
|
+
declare const contentVariants: tailwind_variants.TVReturnType<{
|
|
3074
|
+
fullHeight: {
|
|
3075
|
+
true: string;
|
|
3076
|
+
false: string;
|
|
3077
|
+
};
|
|
3078
|
+
padding: {
|
|
3079
|
+
none: string;
|
|
3080
|
+
sm: string;
|
|
3081
|
+
md: string;
|
|
3082
|
+
lg: string;
|
|
3083
|
+
};
|
|
3084
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
3085
|
+
fullHeight: {
|
|
3086
|
+
true: string;
|
|
3087
|
+
false: string;
|
|
3088
|
+
};
|
|
3089
|
+
padding: {
|
|
3090
|
+
none: string;
|
|
3091
|
+
sm: string;
|
|
3092
|
+
md: string;
|
|
3093
|
+
lg: string;
|
|
3094
|
+
};
|
|
3095
|
+
}, {
|
|
3096
|
+
fullHeight: {
|
|
3097
|
+
true: string;
|
|
3098
|
+
false: string;
|
|
3099
|
+
};
|
|
3100
|
+
padding: {
|
|
3101
|
+
none: string;
|
|
3102
|
+
sm: string;
|
|
3103
|
+
md: string;
|
|
3104
|
+
lg: string;
|
|
3105
|
+
};
|
|
3106
|
+
}>, {
|
|
3107
|
+
fullHeight: {
|
|
3108
|
+
true: string;
|
|
3109
|
+
false: string;
|
|
3110
|
+
};
|
|
3111
|
+
padding: {
|
|
3112
|
+
none: string;
|
|
3113
|
+
sm: string;
|
|
3114
|
+
md: string;
|
|
3115
|
+
lg: string;
|
|
3116
|
+
};
|
|
3117
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
3118
|
+
fullHeight: {
|
|
3119
|
+
true: string;
|
|
3120
|
+
false: string;
|
|
3121
|
+
};
|
|
3122
|
+
padding: {
|
|
3123
|
+
none: string;
|
|
3124
|
+
sm: string;
|
|
3125
|
+
md: string;
|
|
3126
|
+
lg: string;
|
|
3127
|
+
};
|
|
3128
|
+
}, undefined, string[], tailwind_variants_dist_config_js.TVConfig<{
|
|
3129
|
+
fullHeight: {
|
|
3130
|
+
true: string;
|
|
3131
|
+
false: string;
|
|
3132
|
+
};
|
|
3133
|
+
padding: {
|
|
3134
|
+
none: string;
|
|
3135
|
+
sm: string;
|
|
3136
|
+
md: string;
|
|
3137
|
+
lg: string;
|
|
3138
|
+
};
|
|
3139
|
+
}, {
|
|
3140
|
+
fullHeight: {
|
|
3141
|
+
true: string;
|
|
3142
|
+
false: string;
|
|
3143
|
+
};
|
|
3144
|
+
padding: {
|
|
3145
|
+
none: string;
|
|
3146
|
+
sm: string;
|
|
3147
|
+
md: string;
|
|
3148
|
+
lg: string;
|
|
3149
|
+
};
|
|
3150
|
+
}>, unknown, unknown, undefined>>;
|
|
3151
|
+
interface VideoWithBackdropRootProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof videoWithBackdropVariants> {
|
|
3152
|
+
/** Video source URL (HLS .m3u8 or regular video file) */
|
|
3153
|
+
src?: string;
|
|
3154
|
+
/** Cloudflare Stream configuration (takes precedence over src) */
|
|
3155
|
+
cloudflare?: CloudflareConfig;
|
|
3156
|
+
/** Children to render */
|
|
3157
|
+
children: React$1.ReactNode;
|
|
3158
|
+
}
|
|
3159
|
+
/**
|
|
3160
|
+
* VideoWithBackdrop Root
|
|
3161
|
+
*
|
|
3162
|
+
* Container that provides video context to child components.
|
|
3163
|
+
* Use with VideoWithBackdrop.Backdrop and VideoWithBackdrop.Content.
|
|
3164
|
+
*
|
|
3165
|
+
* @example
|
|
3166
|
+
* ```tsx
|
|
3167
|
+
* <VideoWithBackdrop.Root cloudflare={config}>
|
|
3168
|
+
* <VideoWithBackdrop.Backdrop blur="high" overlay="vignette" />
|
|
3169
|
+
* <VideoWithBackdrop.Content>
|
|
3170
|
+
* <VideoWithBackdrop.Video />
|
|
3171
|
+
* </VideoWithBackdrop.Content>
|
|
3172
|
+
* </VideoWithBackdrop.Root>
|
|
3173
|
+
* ```
|
|
3174
|
+
*/
|
|
3175
|
+
declare const VideoWithBackdropRoot: React$1.ForwardRefExoticComponent<VideoWithBackdropRootProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3176
|
+
interface VideoWithBackdropBackdropProps extends Omit<BlurredVideoBackdropProps, "videoRef"> {
|
|
3177
|
+
}
|
|
3178
|
+
/**
|
|
3179
|
+
* VideoWithBackdrop Backdrop
|
|
3180
|
+
*
|
|
3181
|
+
* Renders the blurred video backdrop layer using canvas.
|
|
3182
|
+
* Automatically draws from the video element in context.
|
|
3183
|
+
*/
|
|
3184
|
+
declare const VideoWithBackdropBackdrop: React$1.ForwardRefExoticComponent<VideoWithBackdropBackdropProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3185
|
+
interface VideoWithBackdropContentProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof contentVariants> {
|
|
3186
|
+
}
|
|
3187
|
+
/**
|
|
3188
|
+
* VideoWithBackdrop Content
|
|
3189
|
+
*
|
|
3190
|
+
* Container for the main video player and any additional content.
|
|
3191
|
+
* Positioned above the backdrop with z-index.
|
|
3192
|
+
*/
|
|
3193
|
+
declare const VideoWithBackdropContent: React$1.ForwardRefExoticComponent<VideoWithBackdropContentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3194
|
+
interface VideoWithBackdropVideoProps extends Omit<VideoPlayerProps, "videoRef"> {
|
|
3195
|
+
/** Max width of the video player container */
|
|
3196
|
+
maxWidth?: string;
|
|
3197
|
+
}
|
|
3198
|
+
/**
|
|
3199
|
+
* VideoWithBackdrop Video
|
|
3200
|
+
*
|
|
3201
|
+
* Convenience wrapper for VideoPlayer that automatically connects
|
|
3202
|
+
* to the backdrop via context.
|
|
3203
|
+
*/
|
|
3204
|
+
declare const VideoWithBackdropVideo: React$1.ForwardRefExoticComponent<VideoWithBackdropVideoProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3205
|
+
interface VideoWithBackdropProps extends Omit<VideoPlayerProps, "videoRef" | "className" | "aspectRatio"> {
|
|
3206
|
+
/** Blur intensity (default: high) */
|
|
3207
|
+
blur?: BlurredVideoBackdropProps["blur"];
|
|
3208
|
+
/** Gradient overlay (default: vignette) */
|
|
3209
|
+
overlay?: BlurredVideoBackdropProps["overlay"];
|
|
3210
|
+
/** Backdrop opacity (default: 0.6) */
|
|
3211
|
+
backdropOpacity?: number;
|
|
3212
|
+
/** Max width of video player (default: 960px) */
|
|
3213
|
+
maxWidth?: string;
|
|
3214
|
+
/** Content padding (default: md) */
|
|
3215
|
+
padding?: "none" | "sm" | "md" | "lg";
|
|
3216
|
+
/** Video player rounded corners */
|
|
3217
|
+
rounded?: VideoPlayerProps["rounded"];
|
|
3218
|
+
/** Additional className for root container */
|
|
3219
|
+
className?: string;
|
|
3220
|
+
/** Target FPS for backdrop canvas (default: 30) */
|
|
3221
|
+
targetFps?: number;
|
|
3222
|
+
/** Canvas scale factor for backdrop (default: 0.5) */
|
|
3223
|
+
scale?: number;
|
|
3224
|
+
}
|
|
3225
|
+
/**
|
|
3226
|
+
* VideoWithBackdrop - Pre-composed video player with blurred backdrop.
|
|
3227
|
+
*
|
|
3228
|
+
* A simple, ready-to-use component that combines VideoPlayer with
|
|
3229
|
+
* BlurredVideoBackdrop for modal video experiences. Uses canvas rendering
|
|
3230
|
+
* for optimal performance.
|
|
3231
|
+
*
|
|
3232
|
+
* For custom layouts, use the compound components:
|
|
3233
|
+
* - VideoWithBackdrop.Root
|
|
3234
|
+
* - VideoWithBackdrop.Backdrop
|
|
3235
|
+
* - VideoWithBackdrop.Content
|
|
3236
|
+
* - VideoWithBackdrop.Video
|
|
3237
|
+
*
|
|
3238
|
+
* @example
|
|
3239
|
+
* ```tsx
|
|
3240
|
+
* // Simple usage (in a full-height container like Dialog)
|
|
3241
|
+
* <VideoWithBackdrop
|
|
3242
|
+
* cloudflare={{ videoId: "...", customerCode: "..." }}
|
|
3243
|
+
* autoPlay
|
|
3244
|
+
* blur="high"
|
|
3245
|
+
* overlay="vignette"
|
|
3246
|
+
* />
|
|
3247
|
+
*
|
|
3248
|
+
* // With Dialog
|
|
3249
|
+
* <Dialog size="full" variant="minimal">
|
|
3250
|
+
* <VideoWithBackdrop cloudflare={config} autoPlay />
|
|
3251
|
+
* </Dialog>
|
|
3252
|
+
* ```
|
|
3253
|
+
*/
|
|
3254
|
+
declare const VideoWithBackdrop: React$1.ForwardRefExoticComponent<VideoWithBackdropProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3255
|
+
declare const VideoWithBackdropParts: React$1.ForwardRefExoticComponent<VideoWithBackdropRootProps & React$1.RefAttributes<HTMLDivElement>> & {
|
|
3256
|
+
Root: React$1.ForwardRefExoticComponent<VideoWithBackdropRootProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3257
|
+
Backdrop: React$1.ForwardRefExoticComponent<VideoWithBackdropBackdropProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3258
|
+
Content: React$1.ForwardRefExoticComponent<VideoWithBackdropContentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3259
|
+
Video: React$1.ForwardRefExoticComponent<VideoWithBackdropVideoProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3260
|
+
};
|
|
3261
|
+
|
|
3262
|
+
declare const cardVariants: tailwind_variants.TVReturnType<{
|
|
3263
|
+
layout: {
|
|
3264
|
+
vertical: string;
|
|
3265
|
+
horizontal: string;
|
|
3266
|
+
/**
|
|
3267
|
+
* Overlay layout - content sits on top of full-bleed background.
|
|
3268
|
+
* Use with Background components for images/gradients.
|
|
3269
|
+
*/
|
|
3270
|
+
overlay: string;
|
|
3271
|
+
};
|
|
3272
|
+
}, undefined, "relative flex overflow-hidden rounded-surface-card bg-card-background stroke-surface-card border-border-subtle border-solid", tailwind_variants_dist_config_js.TVConfig<{
|
|
3273
|
+
layout: {
|
|
3274
|
+
vertical: string;
|
|
3275
|
+
horizontal: string;
|
|
3276
|
+
/**
|
|
3277
|
+
* Overlay layout - content sits on top of full-bleed background.
|
|
3278
|
+
* Use with Background components for images/gradients.
|
|
3279
|
+
*/
|
|
3280
|
+
overlay: string;
|
|
3281
|
+
};
|
|
3282
|
+
}, {
|
|
3283
|
+
layout: {
|
|
3284
|
+
vertical: string;
|
|
3285
|
+
horizontal: string;
|
|
3286
|
+
/**
|
|
3287
|
+
* Overlay layout - content sits on top of full-bleed background.
|
|
3288
|
+
* Use with Background components for images/gradients.
|
|
3289
|
+
*/
|
|
3290
|
+
overlay: string;
|
|
3291
|
+
};
|
|
3292
|
+
}>, {
|
|
3293
|
+
layout: {
|
|
3294
|
+
vertical: string;
|
|
3295
|
+
horizontal: string;
|
|
3296
|
+
/**
|
|
3297
|
+
* Overlay layout - content sits on top of full-bleed background.
|
|
3298
|
+
* Use with Background components for images/gradients.
|
|
3299
|
+
*/
|
|
3300
|
+
overlay: string;
|
|
3301
|
+
};
|
|
3302
|
+
}, undefined, tailwind_variants.TVReturnType<{
|
|
3303
|
+
layout: {
|
|
3304
|
+
vertical: string;
|
|
3305
|
+
horizontal: string;
|
|
3306
|
+
/**
|
|
3307
|
+
* Overlay layout - content sits on top of full-bleed background.
|
|
3308
|
+
* Use with Background components for images/gradients.
|
|
3309
|
+
*/
|
|
3310
|
+
overlay: string;
|
|
3311
|
+
};
|
|
3312
|
+
}, undefined, "relative flex overflow-hidden rounded-surface-card bg-card-background stroke-surface-card border-border-subtle border-solid", tailwind_variants_dist_config_js.TVConfig<{
|
|
3313
|
+
layout: {
|
|
3314
|
+
vertical: string;
|
|
3315
|
+
horizontal: string;
|
|
3316
|
+
/**
|
|
3317
|
+
* Overlay layout - content sits on top of full-bleed background.
|
|
3318
|
+
* Use with Background components for images/gradients.
|
|
3319
|
+
*/
|
|
3320
|
+
overlay: string;
|
|
3321
|
+
};
|
|
3322
|
+
}, {
|
|
3323
|
+
layout: {
|
|
3324
|
+
vertical: string;
|
|
3325
|
+
horizontal: string;
|
|
3326
|
+
/**
|
|
3327
|
+
* Overlay layout - content sits on top of full-bleed background.
|
|
3328
|
+
* Use with Background components for images/gradients.
|
|
3329
|
+
*/
|
|
3330
|
+
overlay: string;
|
|
3331
|
+
};
|
|
3332
|
+
}>, unknown, unknown, undefined>>;
|
|
3333
|
+
interface CardProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {
|
|
3334
|
+
}
|
|
3335
|
+
/**
|
|
3336
|
+
* Card component for displaying content in a contained, scannable format.
|
|
3337
|
+
*
|
|
3338
|
+
* Layouts:
|
|
3339
|
+
* - vertical: Image on top, content below (default)
|
|
3340
|
+
* - horizontal: Image on left, content on right
|
|
3341
|
+
* - overlay: Full-bleed background with content on top
|
|
3342
|
+
*
|
|
3343
|
+
* Use with CardImage, CardContent, CardEyebrow, CardTitle, CardDescription, and CardActions.
|
|
3344
|
+
* For overlay layout, use Background components for full-bleed backgrounds.
|
|
3345
|
+
*/
|
|
3346
|
+
declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3347
|
+
interface CardImageProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3348
|
+
/**
|
|
3349
|
+
* The image source URL
|
|
3350
|
+
*/
|
|
3351
|
+
src?: string;
|
|
3352
|
+
/**
|
|
3353
|
+
* Alt text for the image
|
|
3354
|
+
*/
|
|
3355
|
+
alt?: string;
|
|
3356
|
+
}
|
|
3357
|
+
/**
|
|
3358
|
+
* Card image area. For vertical layout, displays with 16:9 aspect ratio.
|
|
3359
|
+
* For horizontal layout, takes up ~40% width and stretches to content height.
|
|
3360
|
+
*/
|
|
3361
|
+
declare const CardImage: React$1.ForwardRefExoticComponent<CardImageProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3362
|
+
declare const cardContentVariants: tailwind_variants.TVReturnType<{
|
|
3363
|
+
/**
|
|
3364
|
+
* Vertical alignment of content within the card.
|
|
3365
|
+
* Useful for overlay layouts to position content at top/center/bottom.
|
|
3366
|
+
*/
|
|
3367
|
+
justify: {
|
|
3368
|
+
start: string;
|
|
3369
|
+
center: string;
|
|
3370
|
+
end: string;
|
|
3371
|
+
};
|
|
3372
|
+
}, undefined, "flex w-full flex-1 flex-col gap-spatial-card-large-gap p-spatial-card-large-padding", tailwind_variants_dist_config_js.TVConfig<{
|
|
3373
|
+
/**
|
|
3374
|
+
* Vertical alignment of content within the card.
|
|
3375
|
+
* Useful for overlay layouts to position content at top/center/bottom.
|
|
3376
|
+
*/
|
|
3377
|
+
justify: {
|
|
3378
|
+
start: string;
|
|
3379
|
+
center: string;
|
|
3380
|
+
end: string;
|
|
3381
|
+
};
|
|
3382
|
+
}, {
|
|
3383
|
+
/**
|
|
3384
|
+
* Vertical alignment of content within the card.
|
|
3385
|
+
* Useful for overlay layouts to position content at top/center/bottom.
|
|
3386
|
+
*/
|
|
3387
|
+
justify: {
|
|
3388
|
+
start: string;
|
|
3389
|
+
center: string;
|
|
3390
|
+
end: string;
|
|
3391
|
+
};
|
|
3392
|
+
}>, {
|
|
3393
|
+
/**
|
|
3394
|
+
* Vertical alignment of content within the card.
|
|
3395
|
+
* Useful for overlay layouts to position content at top/center/bottom.
|
|
3396
|
+
*/
|
|
3397
|
+
justify: {
|
|
3398
|
+
start: string;
|
|
3399
|
+
center: string;
|
|
3400
|
+
end: string;
|
|
2111
3401
|
};
|
|
2112
3402
|
}, undefined, tailwind_variants.TVReturnType<{
|
|
2113
3403
|
/**
|
|
@@ -3495,6 +4785,152 @@ interface ToutProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<ty
|
|
|
3495
4785
|
*/
|
|
3496
4786
|
declare const Tout: React$1.ForwardRefExoticComponent<ToutProps & React$1.RefAttributes<HTMLElement>>;
|
|
3497
4787
|
|
|
4788
|
+
/**
|
|
4789
|
+
* Design system breakpoint values in pixels.
|
|
4790
|
+
* These match the primitive breakpoint tokens from packages/tokens.
|
|
4791
|
+
*/
|
|
4792
|
+
declare const BREAKPOINTS: {
|
|
4793
|
+
readonly sm: 320;
|
|
4794
|
+
readonly md: 768;
|
|
4795
|
+
readonly lg: 1440;
|
|
4796
|
+
};
|
|
4797
|
+
type Breakpoint = keyof typeof BREAKPOINTS;
|
|
4798
|
+
/**
|
|
4799
|
+
* Hook to get the current responsive breakpoint.
|
|
4800
|
+
* Returns the active breakpoint name based on viewport width.
|
|
4801
|
+
*
|
|
4802
|
+
* @returns The current breakpoint: 'sm' | 'md' | 'lg'
|
|
4803
|
+
*
|
|
4804
|
+
* @example
|
|
4805
|
+
* ```tsx
|
|
4806
|
+
* function Component() {
|
|
4807
|
+
* const breakpoint = useBreakpoint();
|
|
4808
|
+
*
|
|
4809
|
+
* return (
|
|
4810
|
+
* <div>
|
|
4811
|
+
* {breakpoint === 'sm' && <MobileLayout />}
|
|
4812
|
+
* {breakpoint === 'md' && <TabletLayout />}
|
|
4813
|
+
* {breakpoint === 'lg' && <DesktopLayout />}
|
|
4814
|
+
* </div>
|
|
4815
|
+
* );
|
|
4816
|
+
* }
|
|
4817
|
+
* ```
|
|
4818
|
+
*/
|
|
4819
|
+
declare function useBreakpoint(): Breakpoint;
|
|
4820
|
+
/**
|
|
4821
|
+
* Hook to check if viewport is at or above a specific breakpoint.
|
|
4822
|
+
*
|
|
4823
|
+
* @param breakpoint - The minimum breakpoint to check against
|
|
4824
|
+
* @returns boolean indicating if viewport is at or above the breakpoint
|
|
4825
|
+
*
|
|
4826
|
+
* @example
|
|
4827
|
+
* ```tsx
|
|
4828
|
+
* function Component() {
|
|
4829
|
+
* const isDesktop = useMinBreakpoint('lg');
|
|
4830
|
+
* const isTabletUp = useMinBreakpoint('md');
|
|
4831
|
+
*
|
|
4832
|
+
* return isDesktop ? <DesktopView /> : <MobileView />;
|
|
4833
|
+
* }
|
|
4834
|
+
* ```
|
|
4835
|
+
*/
|
|
4836
|
+
declare function useMinBreakpoint(breakpoint: Breakpoint): boolean;
|
|
4837
|
+
/**
|
|
4838
|
+
* Hook to check if viewport is below a specific breakpoint.
|
|
4839
|
+
*
|
|
4840
|
+
* @param breakpoint - The breakpoint to check against
|
|
4841
|
+
* @returns boolean indicating if viewport is below the breakpoint
|
|
4842
|
+
*
|
|
4843
|
+
* @example
|
|
4844
|
+
* ```tsx
|
|
4845
|
+
* function Component() {
|
|
4846
|
+
* const isMobile = useMaxBreakpoint('md'); // Below tablet
|
|
4847
|
+
*
|
|
4848
|
+
* return isMobile ? <MobileNav /> : <DesktopNav />;
|
|
4849
|
+
* }
|
|
4850
|
+
* ```
|
|
4851
|
+
*/
|
|
4852
|
+
declare function useMaxBreakpoint(breakpoint: Breakpoint): boolean;
|
|
4853
|
+
|
|
4854
|
+
type EventMap<T> = T extends Window ? WindowEventMap : T extends Document ? DocumentEventMap : T extends HTMLElement ? HTMLElementEventMap : never;
|
|
4855
|
+
/**
|
|
4856
|
+
* Custom hook that attaches an event listener to a specified element.
|
|
4857
|
+
* Automatically handles cleanup on unmount and when dependencies change.
|
|
4858
|
+
*
|
|
4859
|
+
* @param eventName - The name of the event to listen for
|
|
4860
|
+
* @param handler - The callback function to execute when the event fires
|
|
4861
|
+
* @param element - The element to attach the listener to (defaults to window)
|
|
4862
|
+
* @param options - Optional event listener options
|
|
4863
|
+
*
|
|
4864
|
+
* @example
|
|
4865
|
+
* ```tsx
|
|
4866
|
+
* // Listen to window resize
|
|
4867
|
+
* useEventListener('resize', handleResize);
|
|
4868
|
+
*
|
|
4869
|
+
* // Listen to element scroll
|
|
4870
|
+
* useEventListener('scroll', handleScroll, containerRef.current);
|
|
4871
|
+
*
|
|
4872
|
+
* // With options
|
|
4873
|
+
* useEventListener('scroll', handleScroll, window, { passive: true });
|
|
4874
|
+
* ```
|
|
4875
|
+
*/
|
|
4876
|
+
declare function useEventListener<T extends Window | Document | HTMLElement, K extends keyof EventMap<T>>(eventName: K, handler: (event: EventMap<T>[K]) => void, element?: T | null, options?: boolean | AddEventListenerOptions): void;
|
|
4877
|
+
|
|
4878
|
+
interface UseVideoKeyboardOptions {
|
|
4879
|
+
/** Ref to the video element */
|
|
4880
|
+
videoRef: React$1.RefObject<HTMLVideoElement | null>;
|
|
4881
|
+
/** Whether keyboard handling is enabled (default: true) */
|
|
4882
|
+
enabled?: boolean;
|
|
4883
|
+
/** Seek amount in seconds for arrow keys (default: 5) */
|
|
4884
|
+
seekAmount?: number;
|
|
4885
|
+
/** Volume change amount for arrow keys (default: 0.1) */
|
|
4886
|
+
volumeStep?: number;
|
|
4887
|
+
/** Callback when play/pause is toggled */
|
|
4888
|
+
onTogglePlay?: () => void;
|
|
4889
|
+
/** Callback when fullscreen is toggled */
|
|
4890
|
+
onToggleFullscreen?: () => void;
|
|
4891
|
+
/** Callback when captions are toggled */
|
|
4892
|
+
onToggleCaptions?: () => void;
|
|
4893
|
+
/** Callback when controls should be shown */
|
|
4894
|
+
onShowControls?: () => void;
|
|
4895
|
+
}
|
|
4896
|
+
interface UseVideoKeyboardReturn {
|
|
4897
|
+
/** Key down handler to attach to container element */
|
|
4898
|
+
handleKeyDown: (e: React$1.KeyboardEvent) => void;
|
|
4899
|
+
/** Props to spread on the container element */
|
|
4900
|
+
containerProps: {
|
|
4901
|
+
onKeyDown: (e: React$1.KeyboardEvent) => void;
|
|
4902
|
+
tabIndex: number;
|
|
4903
|
+
role: string;
|
|
4904
|
+
"aria-label": string;
|
|
4905
|
+
};
|
|
4906
|
+
}
|
|
4907
|
+
/**
|
|
4908
|
+
* Hook for handling keyboard shortcuts in a video player.
|
|
4909
|
+
*
|
|
4910
|
+
* Supported shortcuts:
|
|
4911
|
+
* - Space: Play/pause
|
|
4912
|
+
* - Left Arrow: Seek backward
|
|
4913
|
+
* - Right Arrow: Seek forward
|
|
4914
|
+
* - Up Arrow: Volume up
|
|
4915
|
+
* - Down Arrow: Volume down
|
|
4916
|
+
* - M: Toggle mute
|
|
4917
|
+
* - F: Toggle fullscreen
|
|
4918
|
+
* - C: Toggle captions
|
|
4919
|
+
*
|
|
4920
|
+
* @example
|
|
4921
|
+
* ```tsx
|
|
4922
|
+
* const { containerProps } = useVideoKeyboard({
|
|
4923
|
+
* videoRef,
|
|
4924
|
+
* onTogglePlay: () => video.paused ? video.play() : video.pause(),
|
|
4925
|
+
* onToggleFullscreen: () => toggleFullscreen(),
|
|
4926
|
+
* onShowControls: () => setControlsVisible(true),
|
|
4927
|
+
* });
|
|
4928
|
+
*
|
|
4929
|
+
* return <div {...containerProps}>...</div>;
|
|
4930
|
+
* ```
|
|
4931
|
+
*/
|
|
4932
|
+
declare function useVideoKeyboard({ videoRef, enabled, seekAmount, volumeStep, onTogglePlay, onToggleFullscreen, onToggleCaptions, onShowControls, }: UseVideoKeyboardOptions): UseVideoKeyboardReturn;
|
|
4933
|
+
|
|
3498
4934
|
declare function cn(...inputs: ClassValue[]): tailwind_variants.CnReturn;
|
|
3499
4935
|
|
|
3500
4936
|
/**
|
|
@@ -3618,4 +5054,4 @@ declare function mergeCSSVars(...maps: CSSVariableMap[]): CSSVariableMap;
|
|
|
3618
5054
|
*/
|
|
3619
5055
|
declare function filterCSSVars(cssVars: CSSVariableMap, prefix: string): CSSVariableMap;
|
|
3620
5056
|
|
|
3621
|
-
export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, BackgroundCompound as Background, BackgroundGradient, type BackgroundGradientProps, BackgroundImage, type BackgroundImageProps, BackgroundOverlay, type BackgroundOverlayProps, type BackgroundProps, BackgroundStream, type BackgroundStreamProps, BackgroundVideo, type BackgroundVideoProps, Banner, type BannerProps, Button, type ButtonProps, type ButtonTheme, Card, CardActions, type CardActionsProps, CardBody, type CardBodyProps, CardContent, type CardContentProps, CardDescription, type CardDescriptionProps, CardEyebrow, type CardEyebrowProps, CardGrid, type CardGridProps, CardImage, type CardImageProps, type CardProps, CardTitle, type CardTitleProps, type ColorToken, type ComponentTheme, type ComponentThemeColors, type ComponentThemeSpatial, type ComponentThemeSurface, DEFAULT_TITLE_TYPOGRAPHY, DevToolbar, type DevToolbarProps, FONT_SIZES, FaqSection, type FaqSectionProps, type FontSizeToken, GridOverlay, type GridOverlayProps, Hero, BackgroundCompound as HeroBackground, BackgroundImage as HeroBackgroundImage, type BackgroundImageProps as HeroBackgroundImageProps, BackgroundStream as HeroBackgroundStream, type BackgroundStreamProps as HeroBackgroundStreamProps, BackgroundVideo as HeroBackgroundVideo, type BackgroundVideoProps as HeroBackgroundVideoProps, HeroContent, type HeroContentProps, BackgroundGradient as HeroGradient, type BackgroundGradientProps as HeroGradientProps, HeroHeader, type HeroHeaderProps, BackgroundOverlay as HeroOverlay, type BackgroundOverlayProps as HeroOverlayProps, type HeroProps, IconButton, type IconButtonProps, Input, InputGroup, InputGroupAddon, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, InputGroupInput, type InputGroupInputProps, type InputGroupProps, InputGroupText, type InputGroupTextProps, InputGroupTextarea, type InputGroupTextareaProps, type InputProps, Navbar, NavbarActions, type NavbarActionsProps, NavbarBrand, type NavbarBrandProps, NavbarLink, type NavbarLinkProps, NavbarLinks, type NavbarLinksProps, NavbarMobileMenu, NavbarMobileMenuButton, type NavbarMobileMenuButtonProps, NavbarMobileMenuLink, type NavbarMobileMenuLinkProps, type NavbarMobileMenuProps, type NavbarProps, NdstudioFooter, type NdstudioFooterProps, PagerControl, type PagerControlProps, Popover, PopoverArrow, type PopoverArrowProps, PopoverBackdrop, type PopoverBackdropProps, PopoverClose, type PopoverCloseProps, PopoverDescription, type PopoverDescriptionProps, PopoverParts, PopoverPopup, type PopoverPopupProps, PopoverPortal, type PopoverPortalProps, PopoverPositioner, type PopoverPositionerProps, type PopoverProps, PopoverRoot, type PopoverRootProps, PopoverTitle, type PopoverTitleProps, PopoverTrigger, type PopoverTriggerProps, Prose, type ProseProps, ProseSection, type ProseSectionProps, QuoteBlock, type QuoteBlockProps, type RadiusToken, River, type RiverProps, Select, SelectGroup, SelectGroupLabel, type SelectGroupLabelProps, type SelectGroupProps, SelectOption, type SelectOptionProps, SelectPopup, type SelectPopupProps, type SelectProps, SelectRoot, SelectTrigger, type SelectTriggerProps, type SpacingToken, type ThemeContextValue, ThemeProvider, type ThemeProviderProps, Tooltip, TooltipArrow, type TooltipArrowProps, TooltipParts, TooltipPopup, type TooltipPopupProps, TooltipPortal, type TooltipPortalProps, TooltipPositioner, type TooltipPositionerProps, type TooltipProps, TooltipProvider, type TooltipProviderProps, TooltipRoot, type TooltipRootProps, TooltipTrigger, type TooltipTriggerProps, Tout, type ToutProps, TwoColumnSection, type TwoColumnSectionProps, USGovBanner, type USGovBannerProps, applyTheme, backgroundGradientVariants, backgroundImageVariants, backgroundOverlayVariants, backgroundStreamVariants, backgroundVariants, backgroundVideoVariants, bannerVariants, buttonThemeToStyleVars, buttonVariants, cardGridVariants, cardVariants, cn, createThemeStyle, filterCSSVars, fontSizeToClass, getToken, heroContentVariants, heroHeaderVariants, heroVariants, iconButtonVariants, inputGroupAddonVariants, inputGroupVariants, inputVariants, mergeCSSVars, pagerControlVariants, popoverArrowVariants, popoverPopupVariants, quoteBlockVariants, removeTheme, responsiveTypographyClass, riverVariants, selectOptionVariants, selectPopupVariants, selectTriggerVariants, themeToStyleVars, toCSSVars, tooltipArrowVariants, tooltipPopupVariants, twoColumnSectionVariants, useCSSVars, useTheme, useThemeTokens };
|
|
5057
|
+
export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, BLUR_AMOUNTS, BREAKPOINTS, BackgroundCompound as Background, BackgroundGradient, type BackgroundGradientProps, BackgroundImage, type BackgroundImageProps, BackgroundOverlay, type BackgroundOverlayProps, type BackgroundProps, BackgroundStream, type BackgroundStreamProps, BackgroundVideo, type BackgroundVideoProps, Banner, type BannerProps, type BlurIntensity, BlurredVideoBackdrop, type BlurredVideoBackdropProps, type Breakpoint, Button, type ButtonProps, type ButtonTheme, type CaptionCue, CaptionOverlay, type CaptionOverlayProps, Card, CardActions, type CardActionsProps, CardBody, type CardBodyProps, CardContent, type CardContentProps, CardDescription, type CardDescriptionProps, CardEyebrow, type CardEyebrowProps, CardGrid, type CardGridProps, CardImage, type CardImageProps, type CardProps, CardTitle, type CardTitleProps, type ColorToken, type ComponentTheme, type ComponentThemeColors, type ComponentThemeSpatial, type ComponentThemeSurface, DEFAULT_TITLE_TYPOGRAPHY, DevToolbar, type DevToolbarProps, Dialog, DialogBackdrop, type DialogBackdropProps, DialogBody, type DialogBodyProps, DialogClose, type DialogCloseProps, DialogDescription, type DialogDescriptionProps, DialogFooter, type DialogFooterProps, DialogParts, DialogPopup, type DialogPopupProps, DialogPortal, type DialogPortalProps, type DialogProps, DialogRoot, type DialogRootProps, DialogTitle, type DialogTitleProps, DialogTrigger, type DialogTriggerProps, FONT_SIZES, FaqSection, type FaqSectionProps, type FontSizeToken, GridOverlay, type GridOverlayProps, Hero, BackgroundCompound as HeroBackground, BackgroundImage as HeroBackgroundImage, type BackgroundImageProps as HeroBackgroundImageProps, BackgroundStream as HeroBackgroundStream, type BackgroundStreamProps as HeroBackgroundStreamProps, BackgroundVideo as HeroBackgroundVideo, type BackgroundVideoProps as HeroBackgroundVideoProps, HeroContent, type HeroContentProps, BackgroundGradient as HeroGradient, type BackgroundGradientProps as HeroGradientProps, HeroHeader, type HeroHeaderProps, BackgroundOverlay as HeroOverlay, type BackgroundOverlayProps as HeroOverlayProps, type HeroProps, IconButton, type IconButtonProps, Input, InputGroup, InputGroupAddon, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, InputGroupInput, type InputGroupInputProps, type InputGroupProps, InputGroupText, type InputGroupTextProps, InputGroupTextarea, type InputGroupTextareaProps, type InputProps, Navbar, NavbarActions, type NavbarActionsProps, NavbarBrand, type NavbarBrandProps, NavbarLink, type NavbarLinkProps, NavbarLinks, type NavbarLinksProps, NavbarMobileMenu, NavbarMobileMenuButton, type NavbarMobileMenuButtonProps, NavbarMobileMenuLink, type NavbarMobileMenuLinkProps, type NavbarMobileMenuProps, type NavbarProps, NdstudioFooter, type NdstudioFooterProps, type OverlayType, PagerControl, type PagerControlProps, Popover, PopoverArrow, type PopoverArrowProps, PopoverBackdrop, type PopoverBackdropProps, PopoverClose, type PopoverCloseProps, PopoverDescription, type PopoverDescriptionProps, PopoverParts, PopoverPopup, type PopoverPopupProps, PopoverPortal, type PopoverPortalProps, PopoverPositioner, type PopoverPositionerProps, type PopoverProps, PopoverRoot, type PopoverRootProps, PopoverTitle, type PopoverTitleProps, PopoverTrigger, type PopoverTriggerProps, Prose, type ProseProps, ProseSection, type ProseSectionProps, QuoteBlock, type QuoteBlockProps, type RadiusToken, River, type RiverProps, Select, SelectGroup, SelectGroupLabel, type SelectGroupLabelProps, type SelectGroupProps, SelectOption, type SelectOptionProps, SelectPopup, type SelectPopupProps, type SelectProps, SelectRoot, SelectTrigger, type SelectTriggerProps, type SpacingToken, type ThemeContextValue, ThemeProvider, type ThemeProviderProps, Tooltip, TooltipArrow, type TooltipArrowProps, TooltipParts, TooltipPopup, type TooltipPopupProps, TooltipPortal, type TooltipPortalProps, TooltipPositioner, type TooltipPositionerProps, type TooltipProps, TooltipProvider, type TooltipProviderProps, TooltipRoot, type TooltipRootProps, TooltipTrigger, type TooltipTriggerProps, Tout, type ToutProps, TwoColumnSection, type TwoColumnSectionProps, USGovBanner, type USGovBannerProps, type UseCanvasBlurOptions, type UseCanvasBlurReturn, type UseVideoKeyboardOptions, type UseVideoKeyboardReturn, VideoDialog, type VideoDialogProps, VideoPlayer, type VideoPlayerProps, VideoWithBackdrop, VideoWithBackdropBackdrop, type VideoWithBackdropBackdropProps, VideoWithBackdropContent, type VideoWithBackdropContentProps, VideoWithBackdropParts, type VideoWithBackdropProps, VideoWithBackdropRoot, type VideoWithBackdropRootProps, VideoWithBackdropVideo, type VideoWithBackdropVideoProps, applyTheme, backgroundGradientVariants, backgroundImageVariants, backgroundOverlayVariants, backgroundStreamVariants, backgroundVariants, backgroundVideoVariants, bannerVariants, blurredVideoBackdropVariants, buttonThemeToStyleVars, buttonVariants, canvasVariants, captionOverlayVariants, cardGridVariants, cardVariants, closeButtonVariants, cn, controlBarVariants, controlButtonVariants, createThemeStyle, dialogBackdropVariants, dialogPopupVariants, filterCSSVars, fontSizeToClass, getToken, gradientOverlayVariants, heroContentVariants, heroHeaderVariants, heroVariants, iconButtonVariants, inputGroupAddonVariants, inputGroupVariants, inputVariants, loadingOverlayVariants, mediaControllerVariants, mergeCSSVars, pagerControlVariants, popoverArrowVariants, popoverPopupVariants, quoteBlockVariants, removeTheme, responsiveTypographyClass, riverVariants, selectOptionVariants, selectPopupVariants, selectTriggerVariants, themeToStyleVars, toCSSVars, tooltipArrowVariants, tooltipPopupVariants, twoColumnSectionVariants, useBreakpoint, useCSSVars, useCanvasBlur, useCaptions, useEventListener, useMaxBreakpoint, useMinBreakpoint, useTheme, useThemeTokens, useVideoKeyboard, videoContainerVariants, videoDialogVariants, videoPlayerVariants, videoWithBackdropVariants };
|