diff --git a/.gitignore b/.gitignore index c06d5c272b..40ba40b325 100644 --- a/.gitignore +++ b/.gitignore @@ -51,8 +51,12 @@ packages/html/vjsc/entries.generated.ts packages/icons/vjsc/schema.generated.ts packages/react/vjsc/entries.generated.ts packages/skins/vjsc/registry/ -packages/html/src/__generated__/skins/ -packages/react/src/__generated__/skins/ +# Framework Skin sources are generated from the canonical VJSC component graph. +packages/react/src/internal/skins/ +packages/react/src/presets/*/skin.tsx +packages/react/src/presets/*/skin.css +packages/react/src/presets/*/minimal-skin.tsx +packages/react/src/presets/*/minimal-skin.css # ------------------------- # Merge & Patch Backups diff --git a/package.json b/package.json index 6426832e0e..e4eedcc903 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "test:size": "node --test .github/scripts/tests/*.test.js", "format": "vp fmt --write", "format:astro": "vp fmt 'site/src/**/*.astro' --write", - "typecheck": "tsgo --build", + "typecheck": "vp run typecheck:workspace", "changelog": "git-cliff --config cliff.toml --output CHANGELOG.md", "check:workspace": "node build/scripts/check-workspace.mjs" }, diff --git a/packages/react/src/internal/skin-primitives.ts b/packages/react/src/internal/skin-primitives.ts new file mode 100644 index 0000000000..244b187965 --- /dev/null +++ b/packages/react/src/internal/skin-primitives.ts @@ -0,0 +1,36 @@ +/** Private acyclic facade used by generated package Skins. */ +export type { ClassValue } from '@videojs/utils/style'; +export { Text } from '../i18n'; +export { Container } from '../player/container'; +export { AirPlayButton } from '../ui/airplay-button'; +export { AudioTrackRadioGroup } from '../ui/audio-track-radio-group'; +export { BufferingIndicator } from '../ui/buffering-indicator'; +export { CaptionsButton } from '../ui/captions-button'; +export { CaptionsRadioGroup } from '../ui/captions-radio-group'; +export { CastButton } from '../ui/cast-button'; +export { Controls } from '../ui/controls'; +export { ErrorDialog } from '../ui/error-dialog'; +export { FullscreenButton } from '../ui/fullscreen-button'; +export { Gesture } from '../ui/gesture'; +export { Hotkey } from '../ui/hotkey'; +export { LiveButton } from '../ui/live-button'; +export { Menu } from '../ui/menu'; +export { MuteButton } from '../ui/mute-button'; +export { PiPButton } from '../ui/pip-button'; +export { PlayButton } from '../ui/play-button'; +export { PlaybackRateButton } from '../ui/playback-rate-button'; +export { PlaybackRateRadioGroup } from '../ui/playback-rate-radio-group'; +export { Popover } from '../ui/popover'; +export { Poster } from '../ui/poster'; +export { QualityRadioGroup } from '../ui/quality-radio-group'; +export { SeekButton } from '../ui/seek-button'; +export { SeekIndicator } from '../ui/seek-indicator'; +export { Slider } from '../ui/slider'; +export { StatusAnnouncer } from '../ui/status-announcer'; +export { StatusIndicator } from '../ui/status-indicator'; +export { Time } from '../ui/time'; +export { TimeSlider } from '../ui/time-slider'; +export { Tooltip } from '../ui/tooltip'; +export { VolumeIndicator } from '../ui/volume-indicator'; +export { VolumePopover } from '../ui/volume-popover'; +export { VolumeSlider } from '../ui/volume-slider'; diff --git a/packages/react/src/presets/audio/index.ts b/packages/react/src/presets/audio/index.ts index 3cd8eb3ac6..f0038c23d6 100644 --- a/packages/react/src/presets/audio/index.ts +++ b/packages/react/src/presets/audio/index.ts @@ -4,7 +4,5 @@ export { audioFeatures } from '@videojs/core/dom'; export { Audio, type AudioProps } from '@/media/audio'; export * from './minimal-skin'; -export * from './minimal-skin.tailwind'; export { AudioPlayer, type AudioPlayerProps, usePlayer } from './player'; export * from './skin'; -export * from './skin.tailwind'; diff --git a/packages/react/src/presets/audio/minimal-skin.css b/packages/react/src/presets/audio/minimal-skin.css deleted file mode 100644 index f7064f3098..0000000000 --- a/packages/react/src/presets/audio/minimal-skin.css +++ /dev/null @@ -1 +0,0 @@ -@import "@videojs/skins/minimal/css/audio.css"; diff --git a/packages/react/src/presets/audio/minimal-skin.tsx b/packages/react/src/presets/audio/minimal-skin.tsx deleted file mode 100644 index 940c37fab6..0000000000 --- a/packages/react/src/presets/audio/minimal-skin.tsx +++ /dev/null @@ -1,275 +0,0 @@ -'use client'; - -import { playbackRateText } from '@videojs/core/i18n/text/menu'; -import { cn } from '@videojs/utils/style'; -import { type ComponentProps, forwardRef, type ReactNode } from 'react'; - -import { DEFAULT_SEEK_STEP } from '@/constants'; -import { useTranslator } from '@/i18n/context'; -import { - CheckIcon, - PauseIcon, - PlayIcon, - RestartIcon, - SeekIcon, - SpinnerIcon, - VolumeHighIcon, - VolumeLowIcon, - VolumeOffIcon, -} from '@/icons/minimal'; -import { Container } from '@/player/container'; -import { usePlayer } from '@/player/context'; -import { BufferingIndicator } from '@/ui/buffering-indicator'; -import { ErrorDialog } from '@/ui/error-dialog'; -import { Hotkey } from '@/ui/hotkey'; -import { Menu } from '@/ui/menu'; -import { MuteButton } from '@/ui/mute-button'; -import { PlayButton } from '@/ui/play-button'; -import { usePlaybackRateOptions } from '@/ui/playback-rate'; -import { PlaybackRateButton } from '@/ui/playback-rate-button'; -import { PlaybackRateRadioGroupLegacy as PlaybackRateRadioGroupComponent } from '@/ui/playback-rate-radio-group'; -import { Popover } from '@/ui/popover'; -import { SeekButton } from '@/ui/seek-button'; -import { StatusAnnouncer } from '@/ui/status-announcer'; -import { Time } from '@/ui/time'; -import { TimeSlider } from '@/ui/time-slider'; -import { Tooltip } from '@/ui/tooltip'; -import { VolumeSlider } from '@/ui/volume-slider'; - -import type { BaseSkinProps } from '../types'; - -export type MinimalAudioSkinProps = BaseSkinProps; - -const Button = forwardRef>(function Button({ className, ...props }, ref) { - return ( -