@accelint/design-toolkit 9.4.1 → 9.6.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.
- package/catalog-info.yaml +2 -2
- package/dist/components/accordion/group.d.ts +2 -2
- package/dist/components/accordion/header.d.ts +2 -2
- package/dist/components/accordion/index.d.ts +2 -2
- package/dist/components/accordion/panel.d.ts +2 -2
- package/dist/components/accordion/styles.module.css +1 -1
- package/dist/components/accordion/trigger.d.ts +2 -2
- package/dist/components/action-bar/index.d.ts +2 -2
- package/dist/components/audio/index.d.ts +104 -0
- package/dist/components/audio/index.js +242 -0
- package/dist/components/audio/index.js.map +1 -0
- package/dist/components/audio/styles.module.css +77 -0
- package/dist/components/audio/types.d.ts +45 -0
- package/dist/components/audio/types.js +12 -0
- package/dist/components/avatar/context.d.ts +4 -4
- package/dist/components/avatar/index.d.ts +2 -2
- package/dist/components/badge/context.d.ts +4 -4
- package/dist/components/badge/index.d.ts +2 -2
- package/dist/components/breadcrumbs/index.d.ts +2 -2
- package/dist/components/breadcrumbs/item.d.ts +2 -2
- package/dist/components/breadcrumbs/styles.module.css +1 -0
- package/dist/components/button/__internal__/clear.js +42 -0
- package/dist/components/button/__internal__/clear.js.map +1 -0
- package/dist/components/button/__internal__/styles.module.css +23 -0
- package/dist/components/button/context.d.ts +8 -8
- package/dist/components/button/index.d.ts +2 -2
- package/dist/components/button/link.d.ts +2 -2
- package/dist/components/button/styles.module.css +1 -1
- package/dist/components/button/toggle.d.ts +2 -2
- package/dist/components/checkbox/context.d.ts +3 -3
- package/dist/components/checkbox/group.d.ts +2 -2
- package/dist/components/checkbox/index.d.ts +2 -2
- package/dist/components/chip/context.d.ts +4 -4
- package/dist/components/chip/deletable.d.ts +2 -2
- package/dist/components/chip/index.d.ts +2 -2
- package/dist/components/chip/list.d.ts +4 -4
- package/dist/components/chip/selectable.d.ts +2 -2
- package/dist/components/chip/styles.module.css +4 -4
- package/dist/components/classification-badge/context.d.ts +4 -4
- package/dist/components/classification-badge/index.d.ts +2 -2
- package/dist/components/classification-banner/context.d.ts +4 -4
- package/dist/components/classification-banner/index.d.ts +2 -2
- package/dist/components/clock/index.d.ts +2 -2
- package/dist/components/clock/index.js +1 -0
- package/dist/components/clock/index.js.map +1 -1
- package/dist/components/color-picker/index.d.ts +2 -2
- package/dist/components/combobox-field/context.d.ts +4 -4
- package/dist/components/combobox-field/index.d.ts +2 -2
- package/dist/components/combobox-field/index.js +42 -14
- package/dist/components/combobox-field/index.js.map +1 -1
- package/dist/components/combobox-field/styles.module.css +15 -3
- package/dist/components/combobox-field/types.d.ts +4 -0
- package/dist/components/coordinate-field/context.d.ts +6 -6
- package/dist/components/coordinate-field/index.d.ts +2 -2
- package/dist/components/coordinate-field/segment.d.ts +2 -2
- package/dist/components/date-field/index.d.ts +2 -2
- package/dist/components/deferred-collection/index.d.ts +2 -2
- package/dist/components/details-list/context.d.ts +4 -4
- package/dist/components/details-list/index.d.ts +2 -2
- package/dist/components/details-list/label.d.ts +2 -2
- package/dist/components/details-list/value.d.ts +2 -2
- package/dist/components/dialog/content.d.ts +2 -2
- package/dist/components/dialog/context.d.ts +2 -2
- package/dist/components/dialog/footer.d.ts +2 -2
- package/dist/components/dialog/index.d.ts +2 -2
- package/dist/components/dialog/title.d.ts +2 -2
- package/dist/components/divider/context.d.ts +4 -4
- package/dist/components/divider/index.d.ts +2 -2
- package/dist/components/drawer/back.d.ts +2 -2
- package/dist/components/drawer/close.d.ts +2 -2
- package/dist/components/drawer/content.d.ts +2 -2
- package/dist/components/drawer/context.d.ts +2 -2
- package/dist/components/drawer/footer.d.ts +2 -2
- package/dist/components/drawer/header-title.d.ts +2 -2
- package/dist/components/drawer/header.d.ts +2 -2
- package/dist/components/drawer/header.js +1 -1
- package/dist/components/drawer/index.d.ts +2 -2
- package/dist/components/drawer/layout-main.d.ts +2 -2
- package/dist/components/drawer/layout.d.ts +2 -2
- package/dist/components/drawer/menu-item.d.ts +2 -2
- package/dist/components/drawer/menu.d.ts +2 -2
- package/dist/components/drawer/panel.d.ts +2 -2
- package/dist/components/drawer/trigger.d.ts +2 -2
- package/dist/components/drawer/view.d.ts +2 -2
- package/dist/components/flashcard/index.d.ts +9 -9
- package/dist/components/hero/context.d.ts +2 -2
- package/dist/components/hero/index.d.ts +2 -2
- package/dist/components/hero/subtitle.d.ts +2 -2
- package/dist/components/hero/title.d.ts +3 -3
- package/dist/components/hotkey/context.d.ts +2 -2
- package/dist/components/hotkey/index.d.ts +2 -2
- package/dist/components/hotkey/set.d.ts +2 -2
- package/dist/components/icon/context.d.ts +4 -4
- package/dist/components/icon/index.d.ts +2 -2
- package/dist/components/input/context.d.ts +2 -2
- package/dist/components/input/index.d.ts +2 -2
- package/dist/components/input/index.js +10 -14
- package/dist/components/input/index.js.map +1 -1
- package/dist/components/kanban/card-body.d.ts +2 -2
- package/dist/components/kanban/card-header-actions.d.ts +2 -2
- package/dist/components/kanban/card-header-title.d.ts +2 -2
- package/dist/components/kanban/card-header.d.ts +2 -2
- package/dist/components/kanban/card.d.ts +2 -2
- package/dist/components/kanban/column-actions.d.ts +2 -2
- package/dist/components/kanban/column-container.d.ts +2 -2
- package/dist/components/kanban/column-content.d.ts +2 -2
- package/dist/components/kanban/column-header-actions.d.ts +2 -2
- package/dist/components/kanban/column-header-drag-handle.d.ts +2 -2
- package/dist/components/kanban/column-header-title.d.ts +2 -2
- package/dist/components/kanban/column-header.d.ts +2 -2
- package/dist/components/kanban/column.d.ts +2 -2
- package/dist/components/kanban/context.d.ts +2 -2
- package/dist/components/kanban/header-actions.d.ts +2 -2
- package/dist/components/kanban/header-search.d.ts +2 -2
- package/dist/components/kanban/header-title.d.ts +2 -2
- package/dist/components/kanban/header.d.ts +2 -2
- package/dist/components/kanban/kanban.d.ts +4 -4
- package/dist/components/kanban/styles.module.css +1 -1
- package/dist/components/label/context.d.ts +4 -4
- package/dist/components/label/index.d.ts +2 -2
- package/dist/components/lines/index.d.ts +2 -2
- package/dist/components/link/context.d.ts +2 -2
- package/dist/components/link/index.d.ts +2 -2
- package/dist/components/list/context.d.ts +2 -2
- package/dist/components/list/index.d.ts +2 -2
- package/dist/components/list/item-content.d.ts +2 -2
- package/dist/components/list/item-description.d.ts +2 -2
- package/dist/components/list/item-title.d.ts +2 -2
- package/dist/components/list/item.d.ts +2 -2
- package/dist/components/list/styles.module.css +1 -1
- package/dist/components/media-controls/context.d.ts +66 -0
- package/dist/components/media-controls/context.js +77 -0
- package/dist/components/media-controls/context.js.map +1 -0
- package/dist/components/media-controls/fullscreen-button.d.ts +55 -0
- package/dist/components/media-controls/fullscreen-button.js +80 -0
- package/dist/components/media-controls/fullscreen-button.js.map +1 -0
- package/dist/components/media-controls/index.d.ts +68 -0
- package/dist/components/media-controls/index.js +78 -0
- package/dist/components/media-controls/index.js.map +1 -0
- package/dist/components/media-controls/mute-button.d.ts +47 -0
- package/dist/components/media-controls/mute-button.js +73 -0
- package/dist/components/media-controls/mute-button.js.map +1 -0
- package/dist/components/media-controls/play-button.d.ts +47 -0
- package/dist/components/media-controls/play-button.js +71 -0
- package/dist/components/media-controls/play-button.js.map +1 -0
- package/dist/components/media-controls/playback-rate.d.ts +58 -0
- package/dist/components/media-controls/playback-rate.js +114 -0
- package/dist/components/media-controls/playback-rate.js.map +1 -0
- package/dist/components/media-controls/seek-button.d.ts +60 -0
- package/dist/components/media-controls/seek-button.js +116 -0
- package/dist/components/media-controls/seek-button.js.map +1 -0
- package/dist/components/media-controls/styles.module.css +145 -0
- package/dist/components/media-controls/time-display.d.ts +69 -0
- package/dist/components/media-controls/time-display.js +95 -0
- package/dist/components/media-controls/time-display.js.map +1 -0
- package/dist/components/media-controls/time-range.d.ts +46 -0
- package/dist/components/media-controls/time-range.js +63 -0
- package/dist/components/media-controls/time-range.js.map +1 -0
- package/dist/components/media-controls/types.d.ts +127 -0
- package/dist/components/media-controls/types.js +12 -0
- package/dist/components/media-controls/volume-slider.d.ts +54 -0
- package/dist/components/media-controls/volume-slider.js +70 -0
- package/dist/components/media-controls/volume-slider.js.map +1 -0
- package/dist/components/menu/context.d.ts +2 -2
- package/dist/components/menu/index.d.ts +2 -2
- package/dist/components/menu/item-description.d.ts +2 -2
- package/dist/components/menu/item-label.d.ts +2 -2
- package/dist/components/menu/item.d.ts +2 -2
- package/dist/components/menu/section.d.ts +2 -2
- package/dist/components/menu/separator.d.ts +2 -2
- package/dist/components/menu/styles.module.css +1 -1
- package/dist/components/menu/submenu.d.ts +3 -3
- package/dist/components/notice/index.d.ts +2 -2
- package/dist/components/notice/list.d.ts +2 -2
- package/dist/components/notice/notice-icon.d.ts +2 -2
- package/dist/components/options/context.d.ts +2 -2
- package/dist/components/options/index.d.ts +2 -2
- package/dist/components/options/item-content.d.ts +2 -2
- package/dist/components/options/item-description.d.ts +2 -2
- package/dist/components/options/item-label.d.ts +2 -2
- package/dist/components/options/item.d.ts +2 -2
- package/dist/components/options/section.d.ts +2 -2
- package/dist/components/options/styles.module.css +1 -1
- package/dist/components/pagination/context.d.ts +2 -2
- package/dist/components/pagination/index.d.ts +2 -2
- package/dist/components/pagination/next.d.ts +2 -2
- package/dist/components/pagination/pages.d.ts +2 -2
- package/dist/components/pagination/prev.d.ts +2 -2
- package/dist/components/popover/content.d.ts +2 -2
- package/dist/components/popover/footer.d.ts +2 -2
- package/dist/components/popover/index.d.ts +2 -2
- package/dist/components/popover/title.d.ts +2 -2
- package/dist/components/popover/trigger.d.ts +2 -2
- package/dist/components/query-builder/action-element.d.ts +2 -2
- package/dist/components/query-builder/actions.d.ts +4 -4
- package/dist/components/query-builder/combinator-selector.d.ts +2 -2
- package/dist/components/query-builder/combinator-selector.js +5 -4
- package/dist/components/query-builder/combinator-selector.js.map +1 -1
- package/dist/components/query-builder/index.d.ts +2 -2
- package/dist/components/query-builder/rule-group.d.ts +4 -4
- package/dist/components/query-builder/rule.d.ts +2 -2
- package/dist/components/query-builder/value-editor.d.ts +2 -2
- package/dist/components/query-builder/value-selector.d.ts +2 -2
- package/dist/components/radio/context.d.ts +2 -2
- package/dist/components/radio/group.d.ts +2 -2
- package/dist/components/radio/index.d.ts +2 -2
- package/dist/components/search-field/context.d.ts +4 -4
- package/dist/components/search-field/index.d.ts +2 -2
- package/dist/components/search-field/styles.module.css +1 -1
- package/dist/components/select-field/context.d.ts +4 -4
- package/dist/components/select-field/index.d.ts +2 -2
- package/dist/components/sidenav/avatar.d.ts +2 -2
- package/dist/components/sidenav/content.d.ts +2 -2
- package/dist/components/sidenav/context.d.ts +2 -2
- package/dist/components/sidenav/footer.d.ts +2 -2
- package/dist/components/sidenav/header.d.ts +2 -2
- package/dist/components/sidenav/index.d.ts +2 -2
- package/dist/components/sidenav/item.d.ts +2 -2
- package/dist/components/sidenav/link.d.ts +2 -2
- package/dist/components/sidenav/menu-item.d.ts +2 -2
- package/dist/components/sidenav/menu.d.ts +2 -2
- package/dist/components/sidenav/trigger.d.ts +2 -2
- package/dist/components/skeleton/index.d.ts +2 -2
- package/dist/components/slider/index.d.ts +2 -2
- package/dist/components/status-indicator/index.d.ts +41 -0
- package/dist/components/status-indicator/index.js +49 -0
- package/dist/components/status-indicator/index.js.map +1 -0
- package/dist/components/status-indicator/styles.module.css +34 -0
- package/dist/components/status-indicator/types.d.ts +21 -0
- package/dist/components/status-indicator/types.js +12 -0
- package/dist/components/switch/context.d.ts +4 -4
- package/dist/components/switch/index.d.ts +2 -2
- package/dist/components/table/body.d.ts +2 -2
- package/dist/components/table/cell.d.ts +2 -2
- package/dist/components/table/context.d.ts +2 -2
- package/dist/components/table/header-cell.d.ts +2 -2
- package/dist/components/table/header.d.ts +2 -2
- package/dist/components/table/index.d.ts +2 -2
- package/dist/components/table/row.d.ts +2 -2
- package/dist/components/table/styles.module.css +5 -1
- package/dist/components/tabs/context.d.ts +4 -4
- package/dist/components/tabs/index.d.ts +2 -2
- package/dist/components/tabs/list.d.ts +2 -2
- package/dist/components/tabs/panel.d.ts +2 -2
- package/dist/components/tabs/styles.module.css +1 -1
- package/dist/components/tabs/tab.d.ts +2 -2
- package/dist/components/text-area-field/context.d.ts +4 -4
- package/dist/components/text-area-field/index.d.ts +2 -2
- package/dist/components/text-field/context.d.ts +4 -4
- package/dist/components/text-field/index.d.ts +2 -2
- package/dist/components/time-field/index.d.ts +2 -2
- package/dist/components/tooltip/context.d.ts +2 -2
- package/dist/components/tooltip/index.d.ts +2 -2
- package/dist/components/tooltip/styles.module.css +1 -1
- package/dist/components/tooltip/trigger.d.ts +2 -2
- package/dist/components/tree/index.d.ts +2 -2
- package/dist/components/tree/item-actions.d.ts +2 -2
- package/dist/components/tree/item-content.d.ts +2 -2
- package/dist/components/tree/item-description.d.ts +2 -2
- package/dist/components/tree/item-label.d.ts +2 -2
- package/dist/components/tree/item-prefix-icon.d.ts +2 -2
- package/dist/components/tree/lines.d.ts +2 -2
- package/dist/components/tree/styles.module.css +1 -1
- package/dist/components/video/index.d.ts +97 -0
- package/dist/components/video/index.js +261 -0
- package/dist/components/video/index.js.map +1 -0
- package/dist/components/video/styles.module.css +99 -0
- package/dist/components/video/types.d.ts +52 -0
- package/dist/components/video/types.js +12 -0
- package/dist/components/view-stack/index.d.ts +2 -2
- package/dist/components/view-stack/trigger.d.ts +2 -2
- package/dist/components/view-stack/view.d.ts +2 -2
- package/dist/index.d.ts +18 -1
- package/dist/index.js +14 -1
- package/dist/providers/portal.d.ts +2 -2
- package/dist/providers/theme-provider.d.ts +2 -2
- package/package.json +29 -11
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at https://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
'use client';
|
|
15
|
+
|
|
16
|
+
import { Icon } from "../icon/index.js";
|
|
17
|
+
import { MediaControlsProvider } from "../media-controls/context.js";
|
|
18
|
+
import { MuteButton } from "../media-controls/mute-button.js";
|
|
19
|
+
import { PlayButton } from "../media-controls/play-button.js";
|
|
20
|
+
import { PlaybackRateButton } from "../media-controls/playback-rate.js";
|
|
21
|
+
import { SeekButton } from "../media-controls/seek-button.js";
|
|
22
|
+
import { TimeDisplay } from "../media-controls/time-display.js";
|
|
23
|
+
import { TimeRange } from "../media-controls/time-range.js";
|
|
24
|
+
import { VolumeSlider } from "../media-controls/volume-slider.js";
|
|
25
|
+
import { FullscreenButton } from "../media-controls/fullscreen-button.js";
|
|
26
|
+
import "client-only";
|
|
27
|
+
import { useCallback, useEffect, useState } from "react";
|
|
28
|
+
import { clsx } from "@accelint/design-foundation/lib/utils";
|
|
29
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
30
|
+
import { getLogger } from "@accelint/logger/default";
|
|
31
|
+
import { formatError } from "media-chrome/dist/labels/labels.js";
|
|
32
|
+
import { MediaController } from "media-chrome/react";
|
|
33
|
+
import { MediaProvider, useMediaRef, useMediaSelector } from "media-chrome/react/media-store";
|
|
34
|
+
import { Loop, Problem } from "@accelint/icons";
|
|
35
|
+
import styles from "./styles.module.css";
|
|
36
|
+
|
|
37
|
+
//#region src/components/video/index.tsx
|
|
38
|
+
const logger = getLogger({
|
|
39
|
+
enabled: true,
|
|
40
|
+
level: "error",
|
|
41
|
+
prefix: "[Video]",
|
|
42
|
+
pretty: true
|
|
43
|
+
});
|
|
44
|
+
const selectMediaLoading = (state) => state.mediaLoading;
|
|
45
|
+
const selectMediaDuration = (state) => state.mediaDuration;
|
|
46
|
+
/**
|
|
47
|
+
* Internal component that renders within MediaProvider context.
|
|
48
|
+
*
|
|
49
|
+
* This component is separated from the main Video component to allow use of
|
|
50
|
+
* media-chrome hooks (useMediaRef) that require MediaProvider context.
|
|
51
|
+
* The outer Video component wraps everything in MediaProvider, then VideoInner
|
|
52
|
+
* handles the actual video element and controls rendering.
|
|
53
|
+
*
|
|
54
|
+
* @param props - The component props.
|
|
55
|
+
* @param props.src - Video source URL.
|
|
56
|
+
* @param props.poster - Poster image URL displayed before playback.
|
|
57
|
+
* @param props.classNames - Class names for sub-elements.
|
|
58
|
+
* @param props.children - Custom controls (replaces default layout).
|
|
59
|
+
* @param props.autoPlay - Whether to autoplay the video.
|
|
60
|
+
* @param props.loop - Whether to loop the video.
|
|
61
|
+
* @param props.muted - Whether the video starts muted.
|
|
62
|
+
* @param props.preload - Video preload strategy.
|
|
63
|
+
* @param props.crossOrigin - CORS setting for the video element.
|
|
64
|
+
* @param props.isDisabled - Whether to disable all video controls.
|
|
65
|
+
* @param props.onEnded - Callback when video ends.
|
|
66
|
+
* @param props.onTimeUpdate - Callback when playback time updates.
|
|
67
|
+
* @param props.onError - Callback when an error occurs.
|
|
68
|
+
* @param props.playbackRates - Custom playback rate options.
|
|
69
|
+
* @returns The video element with controls.
|
|
70
|
+
*/
|
|
71
|
+
function VideoInner({ src, poster, children, classNames, autoPlay, loop, muted, preload = "metadata", crossOrigin, isDisabled: isDisabledProp, onEnded, onTimeUpdate, onError, playbackRates }) {
|
|
72
|
+
const mediaRef = useMediaRef();
|
|
73
|
+
const [errorMessage, setErrorMessage] = useState("");
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
setErrorMessage("");
|
|
76
|
+
}, [src]);
|
|
77
|
+
const mediaLoading = useMediaSelector(selectMediaLoading);
|
|
78
|
+
const mediaDuration = useMediaSelector(selectMediaDuration);
|
|
79
|
+
const isMetadataLoaded = mediaDuration !== null && mediaDuration !== void 0 && mediaDuration > 0;
|
|
80
|
+
const hasError = errorMessage !== "";
|
|
81
|
+
const showLoading = !hasError && (mediaLoading || !isMetadataLoaded);
|
|
82
|
+
const isDisabled = isDisabledProp === true || hasError;
|
|
83
|
+
const handleEnded = useCallback(() => {
|
|
84
|
+
onEnded?.();
|
|
85
|
+
}, [onEnded]);
|
|
86
|
+
const handleTimeUpdate = useCallback((e) => {
|
|
87
|
+
onTimeUpdate?.(e.currentTarget.currentTime);
|
|
88
|
+
}, [onTimeUpdate]);
|
|
89
|
+
const handleError = useCallback((e) => {
|
|
90
|
+
const mediaError = e.currentTarget.error;
|
|
91
|
+
logger.withContext({ src }).withError(mediaError).error("Failed to load video");
|
|
92
|
+
setErrorMessage((mediaError && formatError(mediaError)?.message) ?? "Unable to load video file");
|
|
93
|
+
if (mediaError) onError?.(mediaError);
|
|
94
|
+
}, [src, onError]);
|
|
95
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
96
|
+
/* @__PURE__ */ jsx("video", {
|
|
97
|
+
ref: mediaRef,
|
|
98
|
+
slot: "media",
|
|
99
|
+
className: clsx(styles.video, classNames?.video),
|
|
100
|
+
"data-testid": "video-element",
|
|
101
|
+
autoPlay,
|
|
102
|
+
loop,
|
|
103
|
+
muted,
|
|
104
|
+
preload,
|
|
105
|
+
crossOrigin,
|
|
106
|
+
poster,
|
|
107
|
+
playsInline: true,
|
|
108
|
+
onEnded: handleEnded,
|
|
109
|
+
onTimeUpdate: handleTimeUpdate,
|
|
110
|
+
onError: handleError,
|
|
111
|
+
children: /* @__PURE__ */ jsx("source", { src })
|
|
112
|
+
}),
|
|
113
|
+
showLoading && /* @__PURE__ */ jsx("output", {
|
|
114
|
+
className: styles.loadingOverlay,
|
|
115
|
+
"aria-label": "Loading video",
|
|
116
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
117
|
+
size: "medium",
|
|
118
|
+
className: styles.loadingSpinner,
|
|
119
|
+
children: /* @__PURE__ */ jsx(Loop, {})
|
|
120
|
+
})
|
|
121
|
+
}),
|
|
122
|
+
errorMessage && /* @__PURE__ */ jsxs("div", {
|
|
123
|
+
className: styles.errorOverlay,
|
|
124
|
+
role: "alert",
|
|
125
|
+
children: [/* @__PURE__ */ jsx(Icon, {
|
|
126
|
+
size: "medium",
|
|
127
|
+
children: /* @__PURE__ */ jsx(Problem, {})
|
|
128
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
129
|
+
className: styles.errorText,
|
|
130
|
+
children: errorMessage
|
|
131
|
+
})]
|
|
132
|
+
}),
|
|
133
|
+
/* @__PURE__ */ jsx(MediaControlsProvider, {
|
|
134
|
+
isDisabled,
|
|
135
|
+
children: children ?? /* @__PURE__ */ jsx("div", {
|
|
136
|
+
className: styles.controlsOverlay,
|
|
137
|
+
noautohide: "",
|
|
138
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
139
|
+
className: clsx(styles.controls, classNames?.mediaControls),
|
|
140
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
141
|
+
className: clsx(styles.timeRow, classNames?.timeRow),
|
|
142
|
+
children: [
|
|
143
|
+
/* @__PURE__ */ jsx(TimeDisplay, { mode: "current" }),
|
|
144
|
+
/* @__PURE__ */ jsx(TimeRange, {}),
|
|
145
|
+
/* @__PURE__ */ jsx(TimeDisplay, { mode: "duration" })
|
|
146
|
+
]
|
|
147
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
148
|
+
className: clsx(styles.controlsRow, classNames?.controlsRow),
|
|
149
|
+
children: [
|
|
150
|
+
/* @__PURE__ */ jsx("div", {
|
|
151
|
+
className: styles.leftGroup,
|
|
152
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
153
|
+
className: styles.volumeGroup,
|
|
154
|
+
children: [/* @__PURE__ */ jsx(MuteButton, {}), /* @__PURE__ */ jsx(VolumeSlider, {})]
|
|
155
|
+
})
|
|
156
|
+
}),
|
|
157
|
+
/* @__PURE__ */ jsxs("div", {
|
|
158
|
+
className: styles.playbackGroup,
|
|
159
|
+
children: [
|
|
160
|
+
/* @__PURE__ */ jsx(SeekButton, { direction: "backward" }),
|
|
161
|
+
/* @__PURE__ */ jsx(PlayButton, {}),
|
|
162
|
+
/* @__PURE__ */ jsx(SeekButton, { direction: "forward" })
|
|
163
|
+
]
|
|
164
|
+
}),
|
|
165
|
+
/* @__PURE__ */ jsxs("div", {
|
|
166
|
+
className: styles.rightGroup,
|
|
167
|
+
children: [/* @__PURE__ */ jsx(PlaybackRateButton, { rates: playbackRates }), /* @__PURE__ */ jsx(FullscreenButton, {})]
|
|
168
|
+
})
|
|
169
|
+
]
|
|
170
|
+
})]
|
|
171
|
+
})
|
|
172
|
+
})
|
|
173
|
+
})
|
|
174
|
+
] });
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* A complete video player component.
|
|
178
|
+
*
|
|
179
|
+
* Combines an HTML video element with MediaControls to provide a fully-featured
|
|
180
|
+
* video player with play/pause, seek, volume control, playback rate adjustment,
|
|
181
|
+
* and fullscreen support.
|
|
182
|
+
*
|
|
183
|
+
* Uses media-chrome under the hood for state management and MediaController
|
|
184
|
+
* for the accessible media chrome elements.
|
|
185
|
+
*
|
|
186
|
+
* @param props - The component props.
|
|
187
|
+
* @param props.src - Video source URL. Must be accessible to the browser - if loading
|
|
188
|
+
* from a different origin, ensure the server sends appropriate CORS headers
|
|
189
|
+
* (Access-Control-Allow-Origin) or use the crossOrigin prop.
|
|
190
|
+
* @param props.poster - Poster image URL displayed before playback starts.
|
|
191
|
+
* @param props.classNames - Class names for sub-elements.
|
|
192
|
+
* @param props.isDisabled - Disable all video controls.
|
|
193
|
+
* @param props.crossOrigin - CORS setting ('anonymous' | 'use-credentials'). Required when
|
|
194
|
+
* loading video from a different origin that requires credentials.
|
|
195
|
+
* @param props.playbackRates - Array of playback speed multipliers (default: [1, 2, 3]).
|
|
196
|
+
* Only positive finite numbers are accepted; invalid values are filtered out.
|
|
197
|
+
* @param props.children - Custom controls to render instead of the default layout.
|
|
198
|
+
* @param props.onEnded - Callback invoked when video playback finishes.
|
|
199
|
+
* @param props.onTimeUpdate - Callback invoked during playback with current time in seconds.
|
|
200
|
+
* @param props.onError - Callback invoked when video fails to load or encounters an error.
|
|
201
|
+
* @param props.noHotkeys - Disable all keyboard shortcuts for media control.
|
|
202
|
+
* @param props.hotkeys - Custom keyboard shortcuts configuration for media control.
|
|
203
|
+
* @param props.noVolumePref - Disable automatic saving/restoring of volume preference.
|
|
204
|
+
* @param props.noMutedPref - Disable automatic saving/restoring of muted state preference.
|
|
205
|
+
* @param props.lang - Language code for localized media control labels.
|
|
206
|
+
* @returns The rendered video player component.
|
|
207
|
+
*
|
|
208
|
+
* @example
|
|
209
|
+
* ```tsx
|
|
210
|
+
* // Basic usage
|
|
211
|
+
* <Video src="video.mp4" />
|
|
212
|
+
* ```
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* ```tsx
|
|
216
|
+
* // With poster image
|
|
217
|
+
* <Video
|
|
218
|
+
* src="video.mp4"
|
|
219
|
+
* poster="thumbnail.jpg"
|
|
220
|
+
* />
|
|
221
|
+
* ```
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```tsx
|
|
225
|
+
* // With event callbacks
|
|
226
|
+
* <Video
|
|
227
|
+
* src="video.mp4"
|
|
228
|
+
* onEnded={() => console.log('Ended')}
|
|
229
|
+
* onTimeUpdate={(time) => console.log('Current time:', time)}
|
|
230
|
+
* />
|
|
231
|
+
* ```
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```tsx
|
|
235
|
+
* // Custom controls layout
|
|
236
|
+
* <Video src="video.mp4">
|
|
237
|
+
* <PlayButton />
|
|
238
|
+
* <TimeRange />
|
|
239
|
+
* </Video>
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
function Video({ classNames, isDisabled, noHotkeys, hotkeys, noVolumePref, noMutedPref, lang, ...rest }) {
|
|
243
|
+
return /* @__PURE__ */ jsx(MediaProvider, { children: /* @__PURE__ */ jsx(MediaController, {
|
|
244
|
+
className: clsx("group/video", styles.container, classNames?.container),
|
|
245
|
+
"data-disabled": isDisabled || void 0,
|
|
246
|
+
noHotkeys,
|
|
247
|
+
hotkeys,
|
|
248
|
+
noVolumePref,
|
|
249
|
+
noMutedPref,
|
|
250
|
+
lang,
|
|
251
|
+
children: /* @__PURE__ */ jsx(VideoInner, {
|
|
252
|
+
...rest,
|
|
253
|
+
classNames,
|
|
254
|
+
isDisabled
|
|
255
|
+
})
|
|
256
|
+
}) });
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
//#endregion
|
|
260
|
+
export { Video };
|
|
261
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/video/index.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport 'client-only';\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport { Loop, Problem } from '@accelint/icons';\nimport { getLogger } from '@accelint/logger/default';\nimport { formatError } from 'media-chrome/dist/labels/labels.js';\nimport { MediaController } from 'media-chrome/react';\nimport {\n MediaProvider,\n useMediaRef,\n useMediaSelector,\n} from 'media-chrome/react/media-store';\nimport type { MediaState } from 'media-chrome/react/media-store';\nimport { useCallback, useEffect, useState } from 'react';\nimport { Icon } from '../icon';\nimport { FullscreenButton } from '../media-controls/fullscreen-button';\nimport { MediaControlsProvider } from '../media-controls/context';\nimport { MuteButton } from '../media-controls/mute-button';\nimport { PlayButton } from '../media-controls/play-button';\nimport { PlaybackRateButton } from '../media-controls/playback-rate';\nimport { SeekButton } from '../media-controls/seek-button';\nimport { TimeDisplay } from '../media-controls/time-display';\nimport { TimeRange } from '../media-controls/time-range';\nimport { VolumeSlider } from '../media-controls/volume-slider';\nimport styles from './styles.module.css';\nimport type { VideoProps } from './types';\n\nconst logger = getLogger({\n enabled: true,\n level: 'error',\n prefix: '[Video]',\n pretty: true,\n});\n\nconst selectMediaLoading = (state: MediaState) => state.mediaLoading;\nconst selectMediaDuration = (state: MediaState) => state.mediaDuration;\n\n/**\n * Internal component that renders within MediaProvider context.\n *\n * This component is separated from the main Video component to allow use of\n * media-chrome hooks (useMediaRef) that require MediaProvider context.\n * The outer Video component wraps everything in MediaProvider, then VideoInner\n * handles the actual video element and controls rendering.\n *\n * @param props - The component props.\n * @param props.src - Video source URL.\n * @param props.poster - Poster image URL displayed before playback.\n * @param props.classNames - Class names for sub-elements.\n * @param props.children - Custom controls (replaces default layout).\n * @param props.autoPlay - Whether to autoplay the video.\n * @param props.loop - Whether to loop the video.\n * @param props.muted - Whether the video starts muted.\n * @param props.preload - Video preload strategy.\n * @param props.crossOrigin - CORS setting for the video element.\n * @param props.isDisabled - Whether to disable all video controls.\n * @param props.onEnded - Callback when video ends.\n * @param props.onTimeUpdate - Callback when playback time updates.\n * @param props.onError - Callback when an error occurs.\n * @param props.playbackRates - Custom playback rate options.\n * @returns The video element with controls.\n */\nfunction VideoInner({\n src,\n poster,\n children,\n classNames,\n autoPlay,\n loop,\n muted,\n preload = 'metadata',\n crossOrigin,\n isDisabled: isDisabledProp,\n onEnded,\n onTimeUpdate,\n onError,\n playbackRates,\n}: VideoProps) {\n const mediaRef = useMediaRef();\n const [errorMessage, setErrorMessage] = useState<string>('');\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: src is intentionally used as a trigger to reset error state when video source changes\n useEffect(() => {\n setErrorMessage('');\n }, [src]);\n\n const mediaLoading = useMediaSelector(selectMediaLoading);\n const mediaDuration = useMediaSelector(selectMediaDuration);\n const isMetadataLoaded =\n mediaDuration !== null && mediaDuration !== undefined && mediaDuration > 0;\n const hasError = errorMessage !== '';\n const showLoading = !hasError && (mediaLoading || !isMetadataLoaded);\n const isDisabled = isDisabledProp === true || hasError;\n\n const handleEnded = useCallback(() => {\n onEnded?.();\n }, [onEnded]);\n\n const handleTimeUpdate = useCallback(\n (e: React.SyntheticEvent<HTMLVideoElement>) => {\n onTimeUpdate?.(e.currentTarget.currentTime);\n },\n [onTimeUpdate],\n );\n\n const handleError = useCallback(\n (e: React.SyntheticEvent<HTMLVideoElement>) => {\n const mediaError = e.currentTarget.error;\n logger\n .withContext({ src })\n .withError(mediaError)\n .error('Failed to load video');\n setErrorMessage(\n (mediaError && formatError(mediaError)?.message) ??\n 'Unable to load video file',\n );\n if (mediaError) {\n onError?.(mediaError);\n }\n },\n [src, onError],\n );\n\n return (\n <>\n <video\n ref={mediaRef}\n slot='media'\n className={clsx(styles.video, classNames?.video)}\n data-testid='video-element'\n autoPlay={autoPlay}\n loop={loop}\n muted={muted}\n preload={preload}\n crossOrigin={crossOrigin}\n poster={poster}\n playsInline\n onEnded={handleEnded}\n onTimeUpdate={handleTimeUpdate}\n onError={handleError}\n >\n <source src={src} />\n </video>\n\n {showLoading && (\n <output className={styles.loadingOverlay} aria-label='Loading video'>\n <Icon size='medium' className={styles.loadingSpinner}>\n <Loop />\n </Icon>\n </output>\n )}\n\n {errorMessage && (\n <div className={styles.errorOverlay} role='alert'>\n <Icon size='medium'>\n <Problem />\n </Icon>\n <span className={styles.errorText}>{errorMessage}</span>\n </div>\n )}\n\n <MediaControlsProvider isDisabled={isDisabled}>\n {/* noautohide tells MediaController (web component) to keep this element visible */}\n {children ?? (\n // @ts-expect-error noautohide is a valid attribute for media-chrome's MediaController but not recognized by React typings\n <div className={styles.controlsOverlay} noautohide=''>\n <div className={clsx(styles.controls, classNames?.mediaControls)}>\n <div className={clsx(styles.timeRow, classNames?.timeRow)}>\n <TimeDisplay mode='current' />\n <TimeRange />\n <TimeDisplay mode='duration' />\n </div>\n\n <div\n className={clsx(styles.controlsRow, classNames?.controlsRow)}\n >\n <div className={styles.leftGroup}>\n <div className={styles.volumeGroup}>\n <MuteButton />\n <VolumeSlider />\n </div>\n </div>\n <div className={styles.playbackGroup}>\n <SeekButton direction='backward' />\n <PlayButton />\n <SeekButton direction='forward' />\n </div>\n <div className={styles.rightGroup}>\n <PlaybackRateButton rates={playbackRates} />\n <FullscreenButton />\n </div>\n </div>\n </div>\n </div>\n )}\n </MediaControlsProvider>\n </>\n );\n}\n\n/**\n * A complete video player component.\n *\n * Combines an HTML video element with MediaControls to provide a fully-featured\n * video player with play/pause, seek, volume control, playback rate adjustment,\n * and fullscreen support.\n *\n * Uses media-chrome under the hood for state management and MediaController\n * for the accessible media chrome elements.\n *\n * @param props - The component props.\n * @param props.src - Video source URL. Must be accessible to the browser - if loading\n * from a different origin, ensure the server sends appropriate CORS headers\n * (Access-Control-Allow-Origin) or use the crossOrigin prop.\n * @param props.poster - Poster image URL displayed before playback starts.\n * @param props.classNames - Class names for sub-elements.\n * @param props.isDisabled - Disable all video controls.\n * @param props.crossOrigin - CORS setting ('anonymous' | 'use-credentials'). Required when\n * loading video from a different origin that requires credentials.\n * @param props.playbackRates - Array of playback speed multipliers (default: [1, 2, 3]).\n * Only positive finite numbers are accepted; invalid values are filtered out.\n * @param props.children - Custom controls to render instead of the default layout.\n * @param props.onEnded - Callback invoked when video playback finishes.\n * @param props.onTimeUpdate - Callback invoked during playback with current time in seconds.\n * @param props.onError - Callback invoked when video fails to load or encounters an error.\n * @param props.noHotkeys - Disable all keyboard shortcuts for media control.\n * @param props.hotkeys - Custom keyboard shortcuts configuration for media control.\n * @param props.noVolumePref - Disable automatic saving/restoring of volume preference.\n * @param props.noMutedPref - Disable automatic saving/restoring of muted state preference.\n * @param props.lang - Language code for localized media control labels.\n * @returns The rendered video player component.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Video src=\"video.mp4\" />\n * ```\n *\n * @example\n * ```tsx\n * // With poster image\n * <Video\n * src=\"video.mp4\"\n * poster=\"thumbnail.jpg\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With event callbacks\n * <Video\n * src=\"video.mp4\"\n * onEnded={() => console.log('Ended')}\n * onTimeUpdate={(time) => console.log('Current time:', time)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Custom controls layout\n * <Video src=\"video.mp4\">\n * <PlayButton />\n * <TimeRange />\n * </Video>\n * ```\n */\nexport function Video({\n classNames,\n isDisabled,\n noHotkeys,\n hotkeys,\n noVolumePref,\n noMutedPref,\n lang,\n ...rest\n}: VideoProps) {\n return (\n <MediaProvider>\n <MediaController\n className={clsx('group/video', styles.container, classNames?.container)}\n data-disabled={isDisabled || undefined}\n noHotkeys={noHotkeys}\n hotkeys={hotkeys}\n noVolumePref={noVolumePref}\n noMutedPref={noMutedPref}\n lang={lang}\n >\n <VideoInner {...rest} classNames={classNames} isDisabled={isDisabled} />\n </MediaController>\n </MediaProvider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAM,SAAS,UAAU;CACvB,SAAS;CACT,OAAO;CACP,QAAQ;CACR,QAAQ;CACT,CAAC;AAEF,MAAM,sBAAsB,UAAsB,MAAM;AACxD,MAAM,uBAAuB,UAAsB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BzD,SAAS,WAAW,EAClB,KACA,QACA,UACA,YACA,UACA,MACA,OACA,UAAU,YACV,aACA,YAAY,gBACZ,SACA,cACA,SACA,iBACa;CACb,MAAM,WAAW,aAAa;CAC9B,MAAM,CAAC,cAAc,mBAAmB,SAAiB,GAAG;AAG5D,iBAAgB;AACd,kBAAgB,GAAG;IAClB,CAAC,IAAI,CAAC;CAET,MAAM,eAAe,iBAAiB,mBAAmB;CACzD,MAAM,gBAAgB,iBAAiB,oBAAoB;CAC3D,MAAM,mBACJ,kBAAkB,QAAQ,kBAAkB,UAAa,gBAAgB;CAC3E,MAAM,WAAW,iBAAiB;CAClC,MAAM,cAAc,CAAC,aAAa,gBAAgB,CAAC;CACnD,MAAM,aAAa,mBAAmB,QAAQ;CAE9C,MAAM,cAAc,kBAAkB;AACpC,aAAW;IACV,CAAC,QAAQ,CAAC;CAEb,MAAM,mBAAmB,aACtB,MAA8C;AAC7C,iBAAe,EAAE,cAAc,YAAY;IAE7C,CAAC,aAAa,CACf;CAED,MAAM,cAAc,aACjB,MAA8C;EAC7C,MAAM,aAAa,EAAE,cAAc;AACnC,SACG,YAAY,EAAE,KAAK,CAAC,CACpB,UAAU,WAAW,CACrB,MAAM,uBAAuB;AAChC,mBACG,cAAc,YAAY,WAAW,EAAE,YACtC,4BACH;AACD,MAAI,WACF,WAAU,WAAW;IAGzB,CAAC,KAAK,QAAQ,CACf;AAED,QACE;EACE,oBAAC;GACC,KAAK;GACL,MAAK;GACL,WAAW,KAAK,OAAO,OAAO,YAAY,MAAM;GAChD,eAAY;GACF;GACJ;GACC;GACE;GACI;GACL;GACR;GACA,SAAS;GACT,cAAc;GACd,SAAS;aAET,oBAAC,YAAY,MAAO;IACd;EAEP,eACC,oBAAC;GAAO,WAAW,OAAO;GAAgB,cAAW;aACnD,oBAAC;IAAK,MAAK;IAAS,WAAW,OAAO;cACpC,oBAAC,SAAO;KACH;IACA;EAGV,gBACC,qBAAC;GAAI,WAAW,OAAO;GAAc,MAAK;cACxC,oBAAC;IAAK,MAAK;cACT,oBAAC,YAAU;KACN,EACP,oBAAC;IAAK,WAAW,OAAO;cAAY;KAAoB;IACpD;EAGR,oBAAC;GAAkC;aAEhC,YAEC,oBAAC;IAAI,WAAW,OAAO;IAAiB,YAAW;cACjD,qBAAC;KAAI,WAAW,KAAK,OAAO,UAAU,YAAY,cAAc;gBAC9D,qBAAC;MAAI,WAAW,KAAK,OAAO,SAAS,YAAY,QAAQ;;OACvD,oBAAC,eAAY,MAAK,YAAY;OAC9B,oBAAC,cAAY;OACb,oBAAC,eAAY,MAAK,aAAa;;OAC3B,EAEN,qBAAC;MACC,WAAW,KAAK,OAAO,aAAa,YAAY,YAAY;;OAE5D,oBAAC;QAAI,WAAW,OAAO;kBACrB,qBAAC;SAAI,WAAW,OAAO;oBACrB,oBAAC,eAAa,EACd,oBAAC,iBAAe;UACZ;SACF;OACN,qBAAC;QAAI,WAAW,OAAO;;SACrB,oBAAC,cAAW,WAAU,aAAa;SACnC,oBAAC,eAAa;SACd,oBAAC,cAAW,WAAU,YAAY;;SAC9B;OACN,qBAAC;QAAI,WAAW,OAAO;mBACrB,oBAAC,sBAAmB,OAAO,gBAAiB,EAC5C,oBAAC,qBAAmB;SAChB;;OACF;MACF;KACF;IAEc;KACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEP,SAAgB,MAAM,EACpB,YACA,YACA,WACA,SACA,cACA,aACA,MACA,GAAG,QACU;AACb,QACE,oBAAC,2BACC,oBAAC;EACC,WAAW,KAAK,eAAe,OAAO,WAAW,YAAY,UAAU;EACvE,iBAAe,cAAc;EAClB;EACF;EACK;EACD;EACP;YAEN,oBAAC;GAAW,GAAI;GAAkB;GAAwB;IAAc;GACxD,GACJ"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at https://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
@reference '@accelint/design-foundation/styles';
|
|
14
|
+
|
|
15
|
+
@layer components.l1 {
|
|
16
|
+
.container {
|
|
17
|
+
@apply bg-surface-raised rounded-medium relative flex w-full flex-col;
|
|
18
|
+
min-width: 270px;
|
|
19
|
+
--video-controls-height: 84px;
|
|
20
|
+
padding-bottom: var(--video-controls-height);
|
|
21
|
+
|
|
22
|
+
/* Media Chrome theming - maps design tokens to media-chrome CSS variables */
|
|
23
|
+
--media-primary-color: var(--fg-primary-bold);
|
|
24
|
+
--media-secondary-color: transparent;
|
|
25
|
+
--media-icon-color: var(--fg-primary-muted);
|
|
26
|
+
--media-text-color: var(--fg-accent-primary-bold);
|
|
27
|
+
--media-control-background: transparent;
|
|
28
|
+
--media-control-hover-background: transparent;
|
|
29
|
+
|
|
30
|
+
@variant disabled {
|
|
31
|
+
@apply opacity-50;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.video {
|
|
36
|
+
@apply rounded-t-medium aspect-video w-full;
|
|
37
|
+
object-fit: contain;
|
|
38
|
+
background: black;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.controlsOverlay {
|
|
42
|
+
@apply space-y-s p-s;
|
|
43
|
+
border-radius: 0 0 var(--radius-medium) var(--radius-medium);
|
|
44
|
+
align-self: stretch;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.loadingOverlay {
|
|
48
|
+
@apply rounded-t-medium fg-primary-muted pointer-events-none absolute top-0 right-0 left-0 flex items-center justify-center;
|
|
49
|
+
bottom: var(--video-controls-height);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.loadingSpinner {
|
|
53
|
+
@variant motion-safe {
|
|
54
|
+
@apply animate-spin;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.errorOverlay {
|
|
59
|
+
@apply rounded-t-medium fg-serious-bold gap-s pointer-events-none absolute top-0 right-0 left-0 flex items-center justify-center;
|
|
60
|
+
bottom: var(--video-controls-height);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.errorText {
|
|
64
|
+
@apply text-body-m;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.timeRow {
|
|
68
|
+
@apply gap-s flex items-center;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.controls {
|
|
72
|
+
@apply space-y-s p-s;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.controlsRow {
|
|
76
|
+
@apply flex items-center;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.leftGroup,
|
|
80
|
+
.rightGroup {
|
|
81
|
+
@apply flex flex-1 items-center;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.leftGroup {
|
|
85
|
+
@apply justify-start;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.rightGroup {
|
|
89
|
+
@apply gap-xs justify-end;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.volumeGroup {
|
|
93
|
+
@apply gap-s flex;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.playbackGroup {
|
|
97
|
+
@apply gap-xs flex items-center justify-center;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at https://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { ComponentProps, ComponentPropsWithRef, ReactNode } from "react";
|
|
14
|
+
import { MediaController } from "media-chrome/react";
|
|
15
|
+
|
|
16
|
+
//#region src/components/video/types.d.ts
|
|
17
|
+
type VideoProps = Omit<ComponentPropsWithRef<'video'>, 'children' | 'onEnded' | 'onTimeUpdate' | 'onError' | 'src' | 'className'> & Pick<ComponentProps<typeof MediaController>, 'noHotkeys' | 'hotkeys' | 'noVolumePref' | 'noMutedPref' | 'lang'> & {
|
|
18
|
+
/** Video source URL */
|
|
19
|
+
src: string;
|
|
20
|
+
/** Poster image URL displayed before playback */
|
|
21
|
+
poster?: string;
|
|
22
|
+
/** Disable all video controls */
|
|
23
|
+
isDisabled?: boolean;
|
|
24
|
+
/** Custom controls (replaces default layout) */
|
|
25
|
+
children?: ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Class names for sub-elements.
|
|
28
|
+
* @property container - The outer MediaController wrapper element.
|
|
29
|
+
* @property video - The native HTML video element.
|
|
30
|
+
* @property mediaControls - The controls overlay container.
|
|
31
|
+
* @property timeRow - The row containing time display and seek bar.
|
|
32
|
+
* @property controlsRow - The row containing playback and volume controls.
|
|
33
|
+
*/
|
|
34
|
+
classNames?: {
|
|
35
|
+
container?: string;
|
|
36
|
+
video?: string;
|
|
37
|
+
mediaControls?: string;
|
|
38
|
+
timeRow?: string;
|
|
39
|
+
controlsRow?: string;
|
|
40
|
+
};
|
|
41
|
+
/** Callback when video ends */
|
|
42
|
+
onEnded?: () => void;
|
|
43
|
+
/** Callback when playback time updates */
|
|
44
|
+
onTimeUpdate?: (currentTime: number) => void;
|
|
45
|
+
/** Callback when video fails to load or encounters an error */
|
|
46
|
+
onError?: (error: MediaError) => void;
|
|
47
|
+
/** Custom playback rate options (default: [1, 2, 3]) */
|
|
48
|
+
playbackRates?: number[];
|
|
49
|
+
};
|
|
50
|
+
//#endregion
|
|
51
|
+
export { VideoProps };
|
|
52
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at https://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { ViewStackProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime183 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/view-stack/index.d.ts
|
|
18
18
|
|
|
@@ -47,7 +47,7 @@ declare function ViewStack({
|
|
|
47
47
|
children,
|
|
48
48
|
defaultView,
|
|
49
49
|
onChange
|
|
50
|
-
}: ViewStackProps):
|
|
50
|
+
}: ViewStackProps): react_jsx_runtime183.JSX.Element;
|
|
51
51
|
//#endregion
|
|
52
52
|
export { ViewStack };
|
|
53
53
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { ViewStackTriggerProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime185 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/view-stack/trigger.d.ts
|
|
18
18
|
|
|
@@ -45,7 +45,7 @@ import * as react_jsx_runtime188 from "react/jsx-runtime";
|
|
|
45
45
|
declare function ViewStackTrigger({
|
|
46
46
|
children,
|
|
47
47
|
for: types
|
|
48
|
-
}: ViewStackTriggerProps):
|
|
48
|
+
}: ViewStackTriggerProps): react_jsx_runtime185.JSX.Element;
|
|
49
49
|
//#endregion
|
|
50
50
|
export { ViewStackTrigger };
|
|
51
51
|
//# sourceMappingURL=trigger.d.ts.map
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { ViewStackViewProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime186 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/view-stack/view.d.ts
|
|
18
18
|
|
|
@@ -43,7 +43,7 @@ import * as react_jsx_runtime175 from "react/jsx-runtime";
|
|
|
43
43
|
declare function ViewStackView({
|
|
44
44
|
id,
|
|
45
45
|
children
|
|
46
|
-
}: ViewStackViewProps):
|
|
46
|
+
}: ViewStackViewProps): react_jsx_runtime186.JSX.Element | null;
|
|
47
47
|
//#endregion
|
|
48
48
|
export { ViewStackView };
|
|
49
49
|
//# sourceMappingURL=view.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ import { AccordionPanel } from "./components/accordion/panel.js";
|
|
|
20
20
|
import { AccordionTrigger } from "./components/accordion/trigger.js";
|
|
21
21
|
import { ActionBarProps } from "./components/action-bar/types.js";
|
|
22
22
|
import { ActionBar } from "./components/action-bar/index.js";
|
|
23
|
+
import { AudioProps } from "./components/audio/types.js";
|
|
24
|
+
import { Audio } from "./components/audio/index.js";
|
|
23
25
|
import { AvatarProps } from "./components/avatar/types.js";
|
|
24
26
|
import { AvatarContext, AvatarProvider } from "./components/avatar/context.js";
|
|
25
27
|
import { Avatar } from "./components/avatar/index.js";
|
|
@@ -156,6 +158,17 @@ import { ListItemContent } from "./components/list/item-content.js";
|
|
|
156
158
|
import { ListItemDescription } from "./components/list/item-description.js";
|
|
157
159
|
import { ListItemTitle } from "./components/list/item-title.js";
|
|
158
160
|
import { ListItem } from "./components/list/item.js";
|
|
161
|
+
import { FullscreenButtonProps, MediaControlsContextValue, MediaControlsProps, MuteButtonProps, PlayButtonProps, PlaybackRateButtonProps, SeekButtonProps, TimeDisplayMode, TimeDisplayProps, TimeRangeProps, VolumeSliderProps } from "./components/media-controls/types.js";
|
|
162
|
+
import { MediaControlsContext, MediaControlsProvider, useMediaControlsDisabled, useMediaProviderGuard } from "./components/media-controls/context.js";
|
|
163
|
+
import { FullscreenButton } from "./components/media-controls/fullscreen-button.js";
|
|
164
|
+
import { MediaControls } from "./components/media-controls/index.js";
|
|
165
|
+
import { MuteButton } from "./components/media-controls/mute-button.js";
|
|
166
|
+
import { PlayButton } from "./components/media-controls/play-button.js";
|
|
167
|
+
import { PlaybackRateButton } from "./components/media-controls/playback-rate.js";
|
|
168
|
+
import { SeekButton } from "./components/media-controls/seek-button.js";
|
|
169
|
+
import { TimeDisplay } from "./components/media-controls/time-display.js";
|
|
170
|
+
import { TimeRange } from "./components/media-controls/time-range.js";
|
|
171
|
+
import { VolumeSlider } from "./components/media-controls/volume-slider.js";
|
|
159
172
|
import { MenuItemProps, MenuProps, MenuSectionProps } from "./components/menu/types.js";
|
|
160
173
|
import { MenuContext } from "./components/menu/context.js";
|
|
161
174
|
import { Menu } from "./components/menu/index.js";
|
|
@@ -221,6 +234,8 @@ import { SkeletonProps } from "./components/skeleton/types.js";
|
|
|
221
234
|
import { Skeleton } from "./components/skeleton/index.js";
|
|
222
235
|
import { SliderMarker, SliderMarkersConfig, SliderProps } from "./components/slider/types.js";
|
|
223
236
|
import { Slider } from "./components/slider/index.js";
|
|
237
|
+
import { StatusIndicatorProps } from "./components/status-indicator/types.js";
|
|
238
|
+
import { StatusIndicator } from "./components/status-indicator/index.js";
|
|
224
239
|
import { SwitchProps } from "./components/switch/types.js";
|
|
225
240
|
import { SwitchContext, SwitchProvider } from "./components/switch/context.js";
|
|
226
241
|
import { Switch } from "./components/switch/index.js";
|
|
@@ -257,6 +272,8 @@ import { TreeItemLabel } from "./components/tree/item-label.js";
|
|
|
257
272
|
import { TreeItemPrefixIcon } from "./components/tree/item-prefix-icon.js";
|
|
258
273
|
import { TreeItem } from "./components/tree/item.js";
|
|
259
274
|
import { TreeLines } from "./components/tree/lines.js";
|
|
275
|
+
import { VideoProps } from "./components/video/types.js";
|
|
276
|
+
import { Video } from "./components/video/index.js";
|
|
260
277
|
import { ViewStackContext, ViewStackEventHandlers, useViewStackEmit } from "./components/view-stack/context.js";
|
|
261
278
|
import { ViewStack } from "./components/view-stack/index.js";
|
|
262
279
|
import { ViewStackTrigger } from "./components/view-stack/trigger.js";
|
|
@@ -274,4 +291,4 @@ import { useTreeState } from "./hooks/use-tree/state/index.js";
|
|
|
274
291
|
import { isSlottedContextValue } from "./lib/utils.js";
|
|
275
292
|
import { PortalProvider } from "./providers/portal.js";
|
|
276
293
|
import { ThemeMode, ThemeProvider, useTheme } from "./providers/theme-provider.js";
|
|
277
|
-
export { Accordion, AccordionContext, AccordionGroup, type AccordionGroupProps, AccordionHeader, type AccordionHeaderProps, AccordionPanel, type AccordionPanelProps, type AccordionProps, type AccordionStyleVariants, AccordionTrigger, type AccordionTriggerProps, ActionBar, type ActionBarProps, type AriaAttributes, type AriaAttributesWithRef, Avatar, AvatarContext, type AvatarProps, AvatarProvider, Badge, BadgeContext, type BadgeProps, BadgeProvider, BreadcrumbItem, type BreadcrumbItemProps, Breadcrumbs, Button, ButtonContext, type ButtonProps, ButtonProvider, type ButtonStyleVariants, COORDINATE_EPSILON, COORDINATE_ERROR_MESSAGES, COORDINATE_FORMAT_LABELS, COORDINATE_FORMAT_NAMES, COORDINATE_SYSTEMS, type ChainedEvents, Checkbox, CheckboxContext, CheckboxGroup, CheckboxGroupContext, type CheckboxGroupProps, type CheckboxProps, type ChildrenRenderProps, Chip, ChipContext, type ChipContextValue, ChipList, type ChipListProps, ChipListRenderingContext, type ChipProps, ChipProvider, type ClassNameRenderProps, type ClassNames, ClassificationBadge, ClassificationBadgeContext, type ClassificationBadgeProps, ClassificationBadgeProvider, ClassificationBanner, ClassificationBannerContext, type ClassificationBannerProps, ClassificationBannerProvider, Clock, type ClockProps, CloneAction, ColorPicker, type ColorPickerProps, CombinatorSelector, ComboBoxField, ComboBoxFieldContext, type ComboBoxFieldProps, ComboBoxFieldProvider, CoordinateField, CoordinateFieldContext, type CoordinateFieldProps, CoordinateFieldProvider, type CoordinateFieldState, CoordinateFieldStateContext, CoordinateFieldStateProvider, type CoordinateFormatResult, CoordinateSegment, type CoordinateSegmentProps, type CoordinateSystem, type CoordinateValue, DateField, type DateFieldProps, type DefaultRQBProps, DeferredCollection, type DeferredCollectionProps, DeletableChip, type DeletableChipProps, DetailsList, DetailsListContext, DetailsListLabel, type DetailsListLabelProps, type DetailsListProps, DetailsListProvider, DetailsListValue, type DetailsListValueProps, Dialog, DialogContent, DialogContext, DialogFooter, type DialogProps, DialogTitle, DialogTrigger, type DialogTriggerProps, Divider, DividerContext, type DividerProps, DividerProvider, type DragAndDropConfig, DragContext, Drawer, DrawerBack, DrawerClose, type DrawerCloseEvent, type DrawerCloseProps, DrawerContent, DrawerContext, type DrawerContextValue, type DrawerEvent, DrawerEventHandlers, DrawerEventNamespace, DrawerEventTypes, DrawerFooter, DrawerHeader, DrawerHeaderTitle, DrawerLayout, DrawerLayoutMain, type DrawerLayoutProps, DrawerMenu, DrawerMenuItem, type DrawerMenuItemProps, type DrawerMenuProps, type DrawerOpenEvent, DrawerPanel, type DrawerProps, type DrawerTitleProps, type DrawerToggleEvent, DrawerTrigger, type DrawerTriggerProps, DrawerView, type DropTargetInfo, EXPECTED_SEGMENT_COUNTS, type Field, Flashcard, FlashcardAdditionalData, type FlashcardComponentProps, FlashcardContext, FlashcardDetailsLabel, FlashcardDetailsList, type FlashcardDetailsListProps, FlashcardDetailsValue, FlashcardHero, type FlashcardProps, GROUP_SEPARATOR, HeaderColumnAction, type HeaderColumnActionKey, Hero, HeroContext, type HeroProps, HeroSubtitle, HeroTitle, Hotkey, HotkeyContext, type HotkeyProps, HotkeyProvider, HotkeySet, Icon, IconContext, type IconProps, IconProvider, Input, InputContext, type InputProps, Kanban, KanbanCard, KanbanCardBody, type KanbanCardData, KanbanCardHeader, KanbanCardHeaderActions, KanbanCardHeaderTitle, type KanbanCardProps, type KanbanColContentActionProps, type KanbanColContentProps, type KanbanColProps, KanbanColumn, KanbanColumnActions, KanbanColumnContainer, KanbanColumnContent, type KanbanColumnData, KanbanColumnHeader, KanbanColumnHeaderActions, KanbanColumnHeaderDragHandle, KanbanColumnHeaderTitle, type KanbanComponentProps, type KanbanContextData, KanbanHeader, KanbanHeaderActions, KanbanHeaderSearch, KanbanHeaderTitle, type KanbanMenuProps, type KanbanProps, KanbanProvider, type KanbanProviderProps, type KanbanSearchProps, Label, LabelContext, type LabelProps, LabelProvider, Lines, type LinesProps, Link, LinkButton, LinkButtonContext, type LinkButtonProps, LinkButtonProvider, type LinkProps, LinkProvider, List, ListContext, ListItem, ListItemContent, type ListItemContentProps, ListItemDescription, type ListItemDescriptionProps, type ListItemProps, ListItemTitle, type ListItemTitleProps, type ListItemVariant, type ListProps, LockAction, Menu, MenuContext, MenuItem, MenuItemDescription, MenuItemLabel, type MenuItemProps, type MenuProps, MenuSection, type MenuSectionProps, MenuSeparator, MenuSubmenu, MenuTrigger, type MoveCard, type MoveCardValidationParams, type MoveCardValidationResult, Notice, type NoticeActionEvent, type NoticeColor, type NoticeContent, type NoticeDequeueEvent, NoticeEventNamespace, NoticeEventTypes, NoticeIcon, type NoticeIconProps, NoticeList, type NoticeListProps, type NoticeProps, type NoticeQueueEvent, Options, OptionsContext, type OptionsDataItem, OptionsItem, OptionsItemContent, OptionsItemDescription, OptionsItemLabel, type OptionsItemProps, type OptionsProps, OptionsSection, type OptionsSectionProps, Pagination, PaginationContext, type PaginationContextValue, PaginationNext, type PaginationNextProps, PaginationPages, type PaginationPagesProps, PaginationPrev, type PaginationPrevProps, type PaginationProps, type ParsedCoordinateMatch, Popover, PopoverContent, PopoverFooter, type PopoverProps, PopoverTitle, PopoverTrigger, type PopoverTriggerProps, PortalProvider, type ProviderProps, QueryBuilder, type QueryBuilderContextType, type QueryBuilderProps, type QueryBuilderValueEditors, Radio, RadioContext, RadioGroup, type RadioGroupProps, type RadioProps, RemoveRuleAction, type RenderProps, type RenderPropsChildren, type RenderPropsClassName, type RenderPropsStyle, type RuleGroupType, SearchField, SearchFieldContext, type SearchFieldProps, SearchFieldProvider, type SegmentConfig, type SegmentType, SelectField, SelectFieldContext, type SelectFieldProps, SelectFieldProvider, SelectableChip, type SelectableChipProps, Sidenav, SidenavAvatar, type SidenavAvatarProps, type SidenavCloseEvent, SidenavContent, type SidenavContentProps, SidenavContext, type SidenavContextValue, type SidenavDividerProps, type SidenavEvent, SidenavEventNamespace, SidenavEventTypes, SidenavFooter, type SidenavFooterProps, SidenavHeader, type SidenavHeaderProps, SidenavItem, type SidenavItemProps, SidenavLink, type SidenavLinkProps, SidenavMenu, SidenavMenuItem, type SidenavMenuItemProps, type SidenavMenuProps, type SidenavOpenEvent, type SidenavProps, type SidenavToggleEvent, SidenavTrigger, type SidenavTriggerProps, type SimpleEvents, Skeleton, type SkeletonProps, Slider, type SliderMarker, type SliderMarkersConfig, type SliderProps, type SlottedValue, SortDirection, type SortDirectionState, type StylePropRenderProps, type StyleRenderProps, Switch, SwitchContext, type SwitchProps, SwitchProvider, Tab, TabList, TabPanel, Table, type TableBodyProps, type TableCellProps, TableContext, type TableContextValue, type TableHeaderCellProps, type TableHeaderProps, type TableProps, type TableRowProps, Tabs, TabsContext, type TabsProps, TabsProvider, type TargetedEvents, TextAreaField, TextAreaFieldContext, type TextAreaFieldProps, TextAreaFieldProvider, TextField, TextFieldContext, type TextFieldProps, TextFieldProvider, type ThemeMode, ThemeProvider, TimeField, type TimeFieldProps, ToggleButton, ToggleButtonContext, type ToggleButtonProps, ToggleButtonProvider, type ToggleButtonStyleVariants, Tooltip, TooltipContext, type TooltipProps, TooltipTrigger, type TooltipTriggerProps, Tree, type TreeActions, TreeContext, type TreeContextValue, type TreeData, TreeItem, TreeItemActions, TreeItemContent, type TreeItemContentProps, type TreeItemContentRenderProps, TreeItemContext, type TreeItemContextValue, TreeItemDescription, TreeItemLabel, TreeItemPrefixIcon, type TreeItemProps, TreeLines, type TreeNode, type TreeNodeBase, type TreeProps, type TreeStyleVariant, type UseCoordinateCopyOptions, type UseCoordinateCopyResult, type UseCoordinateFieldResult, type UseCoordinateFieldStateOptions, type UseCoordinateFieldStateResult, type UseCoordinateFocusOptions, type UseCoordinateFocusResult, type UseCoordinatePasteOptions, type UseCoordinatePasteResult, type UseFrameDelayOptions, type UseFrameDelayResult, type UseTimeoutCleanupResult, type UseTreeActionsOptions, type UseTreeState, type UseTreeStateOptions, ViewStack, type ViewStackBackEvent, type ViewStackClearEvent, ViewStackContext, type ViewStackContextValue, type ViewStackEvent, ViewStackEventHandlers, ViewStackEventNamespace, ViewStackEventTypes, type ViewStackProps, type ViewStackPushEvent, type ViewStackResetEvent, ViewStackTrigger, type ViewStackTriggerProps, ViewStackView, type ViewStackViewProps, areAllSegmentsFilled, areCoordinatesEqual, bus, calculateClosestEdge, columnData, convertDDToDisplaySegments, convertDisplaySegmentsToDD, ddSegmentConfigs, ddmSegmentConfigs, deduplicateMatchesByLocation, dmsSegmentConfigs, formatSegmentsToCoordinateString, getAllCoordinateFormats, getEditableSegmentCount, getFormatDescription, getInsertIndex, getSegmentConfigs, getSegmentLabel, hasAnySegmentValue, headerColumnActionValues, isCompleteCoordinate, isSlottedContextValue, matchesMetadata, mgrsSegmentConfigs, parseCoordinatePaste, parseCoordinateStringToSegments, parseDropTarget, sortDirectionValues, useCardInteractions, useColumnInteractions, useCoordinateCopy, useCoordinateField, useCoordinateFieldState, useCoordinateFieldStateContext, useCoordinateFocus, useCoordinatePaste, useDragContext, useDrawerEmit, useFrameDelay, useKanban, useListItemVariant, useTheme, useTimeoutCleanup, useTreeActions, useTreeState, useViewStackEmit, utmSegmentConfigs, validateCoordinateSegments, validateMoveCard };
|
|
294
|
+
export { Accordion, AccordionContext, AccordionGroup, type AccordionGroupProps, AccordionHeader, type AccordionHeaderProps, AccordionPanel, type AccordionPanelProps, type AccordionProps, type AccordionStyleVariants, AccordionTrigger, type AccordionTriggerProps, ActionBar, type ActionBarProps, type AriaAttributes, type AriaAttributesWithRef, Audio, type AudioProps, Avatar, AvatarContext, type AvatarProps, AvatarProvider, Badge, BadgeContext, type BadgeProps, BadgeProvider, BreadcrumbItem, type BreadcrumbItemProps, Breadcrumbs, Button, ButtonContext, type ButtonProps, ButtonProvider, type ButtonStyleVariants, COORDINATE_EPSILON, COORDINATE_ERROR_MESSAGES, COORDINATE_FORMAT_LABELS, COORDINATE_FORMAT_NAMES, COORDINATE_SYSTEMS, type ChainedEvents, Checkbox, CheckboxContext, CheckboxGroup, CheckboxGroupContext, type CheckboxGroupProps, type CheckboxProps, type ChildrenRenderProps, Chip, ChipContext, type ChipContextValue, ChipList, type ChipListProps, ChipListRenderingContext, type ChipProps, ChipProvider, type ClassNameRenderProps, type ClassNames, ClassificationBadge, ClassificationBadgeContext, type ClassificationBadgeProps, ClassificationBadgeProvider, ClassificationBanner, ClassificationBannerContext, type ClassificationBannerProps, ClassificationBannerProvider, Clock, type ClockProps, CloneAction, ColorPicker, type ColorPickerProps, CombinatorSelector, ComboBoxField, ComboBoxFieldContext, type ComboBoxFieldProps, ComboBoxFieldProvider, CoordinateField, CoordinateFieldContext, type CoordinateFieldProps, CoordinateFieldProvider, type CoordinateFieldState, CoordinateFieldStateContext, CoordinateFieldStateProvider, type CoordinateFormatResult, CoordinateSegment, type CoordinateSegmentProps, type CoordinateSystem, type CoordinateValue, DateField, type DateFieldProps, type DefaultRQBProps, DeferredCollection, type DeferredCollectionProps, DeletableChip, type DeletableChipProps, DetailsList, DetailsListContext, DetailsListLabel, type DetailsListLabelProps, type DetailsListProps, DetailsListProvider, DetailsListValue, type DetailsListValueProps, Dialog, DialogContent, DialogContext, DialogFooter, type DialogProps, DialogTitle, DialogTrigger, type DialogTriggerProps, Divider, DividerContext, type DividerProps, DividerProvider, type DragAndDropConfig, DragContext, Drawer, DrawerBack, DrawerClose, type DrawerCloseEvent, type DrawerCloseProps, DrawerContent, DrawerContext, type DrawerContextValue, type DrawerEvent, DrawerEventHandlers, DrawerEventNamespace, DrawerEventTypes, DrawerFooter, DrawerHeader, DrawerHeaderTitle, DrawerLayout, DrawerLayoutMain, type DrawerLayoutProps, DrawerMenu, DrawerMenuItem, type DrawerMenuItemProps, type DrawerMenuProps, type DrawerOpenEvent, DrawerPanel, type DrawerProps, type DrawerTitleProps, type DrawerToggleEvent, DrawerTrigger, type DrawerTriggerProps, DrawerView, type DropTargetInfo, EXPECTED_SEGMENT_COUNTS, type Field, Flashcard, FlashcardAdditionalData, type FlashcardComponentProps, FlashcardContext, FlashcardDetailsLabel, FlashcardDetailsList, type FlashcardDetailsListProps, FlashcardDetailsValue, FlashcardHero, type FlashcardProps, FullscreenButton, type FullscreenButtonProps, GROUP_SEPARATOR, HeaderColumnAction, type HeaderColumnActionKey, Hero, HeroContext, type HeroProps, HeroSubtitle, HeroTitle, Hotkey, HotkeyContext, type HotkeyProps, HotkeyProvider, HotkeySet, Icon, IconContext, type IconProps, IconProvider, Input, InputContext, type InputProps, Kanban, KanbanCard, KanbanCardBody, type KanbanCardData, KanbanCardHeader, KanbanCardHeaderActions, KanbanCardHeaderTitle, type KanbanCardProps, type KanbanColContentActionProps, type KanbanColContentProps, type KanbanColProps, KanbanColumn, KanbanColumnActions, KanbanColumnContainer, KanbanColumnContent, type KanbanColumnData, KanbanColumnHeader, KanbanColumnHeaderActions, KanbanColumnHeaderDragHandle, KanbanColumnHeaderTitle, type KanbanComponentProps, type KanbanContextData, KanbanHeader, KanbanHeaderActions, KanbanHeaderSearch, KanbanHeaderTitle, type KanbanMenuProps, type KanbanProps, KanbanProvider, type KanbanProviderProps, type KanbanSearchProps, Label, LabelContext, type LabelProps, LabelProvider, Lines, type LinesProps, Link, LinkButton, LinkButtonContext, type LinkButtonProps, LinkButtonProvider, type LinkProps, LinkProvider, List, ListContext, ListItem, ListItemContent, type ListItemContentProps, ListItemDescription, type ListItemDescriptionProps, type ListItemProps, ListItemTitle, type ListItemTitleProps, type ListItemVariant, type ListProps, LockAction, MediaControls, MediaControlsContext, type MediaControlsContextValue, type MediaControlsProps, MediaControlsProvider, Menu, MenuContext, MenuItem, MenuItemDescription, MenuItemLabel, type MenuItemProps, type MenuProps, MenuSection, type MenuSectionProps, MenuSeparator, MenuSubmenu, MenuTrigger, type MoveCard, type MoveCardValidationParams, type MoveCardValidationResult, MuteButton, type MuteButtonProps, Notice, type NoticeActionEvent, type NoticeColor, type NoticeContent, type NoticeDequeueEvent, NoticeEventNamespace, NoticeEventTypes, NoticeIcon, type NoticeIconProps, NoticeList, type NoticeListProps, type NoticeProps, type NoticeQueueEvent, Options, OptionsContext, type OptionsDataItem, OptionsItem, OptionsItemContent, OptionsItemDescription, OptionsItemLabel, type OptionsItemProps, type OptionsProps, OptionsSection, type OptionsSectionProps, Pagination, PaginationContext, type PaginationContextValue, PaginationNext, type PaginationNextProps, PaginationPages, type PaginationPagesProps, PaginationPrev, type PaginationPrevProps, type PaginationProps, type ParsedCoordinateMatch, PlayButton, type PlayButtonProps, PlaybackRateButton, type PlaybackRateButtonProps, Popover, PopoverContent, PopoverFooter, type PopoverProps, PopoverTitle, PopoverTrigger, type PopoverTriggerProps, PortalProvider, type ProviderProps, QueryBuilder, type QueryBuilderContextType, type QueryBuilderProps, type QueryBuilderValueEditors, Radio, RadioContext, RadioGroup, type RadioGroupProps, type RadioProps, RemoveRuleAction, type RenderProps, type RenderPropsChildren, type RenderPropsClassName, type RenderPropsStyle, type RuleGroupType, SearchField, SearchFieldContext, type SearchFieldProps, SearchFieldProvider, SeekButton, type SeekButtonProps, type SegmentConfig, type SegmentType, SelectField, SelectFieldContext, type SelectFieldProps, SelectFieldProvider, SelectableChip, type SelectableChipProps, Sidenav, SidenavAvatar, type SidenavAvatarProps, type SidenavCloseEvent, SidenavContent, type SidenavContentProps, SidenavContext, type SidenavContextValue, type SidenavDividerProps, type SidenavEvent, SidenavEventNamespace, SidenavEventTypes, SidenavFooter, type SidenavFooterProps, SidenavHeader, type SidenavHeaderProps, SidenavItem, type SidenavItemProps, SidenavLink, type SidenavLinkProps, SidenavMenu, SidenavMenuItem, type SidenavMenuItemProps, type SidenavMenuProps, type SidenavOpenEvent, type SidenavProps, type SidenavToggleEvent, SidenavTrigger, type SidenavTriggerProps, type SimpleEvents, Skeleton, type SkeletonProps, Slider, type SliderMarker, type SliderMarkersConfig, type SliderProps, type SlottedValue, SortDirection, type SortDirectionState, StatusIndicator, type StatusIndicatorProps, type StylePropRenderProps, type StyleRenderProps, Switch, SwitchContext, type SwitchProps, SwitchProvider, Tab, TabList, TabPanel, Table, type TableBodyProps, type TableCellProps, TableContext, type TableContextValue, type TableHeaderCellProps, type TableHeaderProps, type TableProps, type TableRowProps, Tabs, TabsContext, type TabsProps, TabsProvider, type TargetedEvents, TextAreaField, TextAreaFieldContext, type TextAreaFieldProps, TextAreaFieldProvider, TextField, TextFieldContext, type TextFieldProps, TextFieldProvider, type ThemeMode, ThemeProvider, TimeDisplay, type TimeDisplayMode, type TimeDisplayProps, TimeField, type TimeFieldProps, TimeRange, type TimeRangeProps, ToggleButton, ToggleButtonContext, type ToggleButtonProps, ToggleButtonProvider, type ToggleButtonStyleVariants, Tooltip, TooltipContext, type TooltipProps, TooltipTrigger, type TooltipTriggerProps, Tree, type TreeActions, TreeContext, type TreeContextValue, type TreeData, TreeItem, TreeItemActions, TreeItemContent, type TreeItemContentProps, type TreeItemContentRenderProps, TreeItemContext, type TreeItemContextValue, TreeItemDescription, TreeItemLabel, TreeItemPrefixIcon, type TreeItemProps, TreeLines, type TreeNode, type TreeNodeBase, type TreeProps, type TreeStyleVariant, type UseCoordinateCopyOptions, type UseCoordinateCopyResult, type UseCoordinateFieldResult, type UseCoordinateFieldStateOptions, type UseCoordinateFieldStateResult, type UseCoordinateFocusOptions, type UseCoordinateFocusResult, type UseCoordinatePasteOptions, type UseCoordinatePasteResult, type UseFrameDelayOptions, type UseFrameDelayResult, type UseTimeoutCleanupResult, type UseTreeActionsOptions, type UseTreeState, type UseTreeStateOptions, Video, type VideoProps, ViewStack, type ViewStackBackEvent, type ViewStackClearEvent, ViewStackContext, type ViewStackContextValue, type ViewStackEvent, ViewStackEventHandlers, ViewStackEventNamespace, ViewStackEventTypes, type ViewStackProps, type ViewStackPushEvent, type ViewStackResetEvent, ViewStackTrigger, type ViewStackTriggerProps, ViewStackView, type ViewStackViewProps, VolumeSlider, type VolumeSliderProps, areAllSegmentsFilled, areCoordinatesEqual, bus, calculateClosestEdge, columnData, convertDDToDisplaySegments, convertDisplaySegmentsToDD, ddSegmentConfigs, ddmSegmentConfigs, deduplicateMatchesByLocation, dmsSegmentConfigs, formatSegmentsToCoordinateString, getAllCoordinateFormats, getEditableSegmentCount, getFormatDescription, getInsertIndex, getSegmentConfigs, getSegmentLabel, hasAnySegmentValue, headerColumnActionValues, isCompleteCoordinate, isSlottedContextValue, matchesMetadata, mgrsSegmentConfigs, parseCoordinatePaste, parseCoordinateStringToSegments, parseDropTarget, sortDirectionValues, useCardInteractions, useColumnInteractions, useCoordinateCopy, useCoordinateField, useCoordinateFieldState, useCoordinateFieldStateContext, useCoordinateFocus, useCoordinatePaste, useDragContext, useDrawerEmit, useFrameDelay, useKanban, useListItemVariant, useMediaControlsDisabled, useMediaProviderGuard, useTheme, useTimeoutCleanup, useTreeActions, useTreeState, useViewStackEmit, utmSegmentConfigs, validateCoordinateSegments, validateMoveCard };
|