diff --git a/packages/react/src/presets/video/minimal-skin.tailwind.tsx b/packages/react/src/presets/video/minimal-skin.tailwind.tsx
index 8104d7f8..02a156d6 100644
--- a/packages/react/src/presets/video/minimal-skin.tailwind.tsx
+++ b/packages/react/src/presets/video/minimal-skin.tailwind.tsx
@@ -330,14 +330,6 @@ export function MinimalVideoSkinTailwind(props: MinimalVideoSkinProps): ReactNod
- {/*
-
-
- An example cue
-
-
-
*/}
-
);
diff --git a/packages/react/src/presets/video/minimal-skin.tsx b/packages/react/src/presets/video/minimal-skin.tsx
index a1661986..a8164899 100644
--- a/packages/react/src/presets/video/minimal-skin.tsx
+++ b/packages/react/src/presets/video/minimal-skin.tsx
@@ -257,15 +257,6 @@ export function MinimalVideoSkin(props: MinimalVideoSkinProps): ReactNode {
- {/*
-
-
An example cue
-
- Another example cue with HTML
-
-
-
*/}
-
);
diff --git a/packages/react/src/presets/video/skin.tailwind.tsx b/packages/react/src/presets/video/skin.tailwind.tsx
index 638836a9..98c067b3 100644
--- a/packages/react/src/presets/video/skin.tailwind.tsx
+++ b/packages/react/src/presets/video/skin.tailwind.tsx
@@ -324,14 +324,6 @@ export function VideoSkinTailwind(props: VideoSkinProps): ReactNode {
- {/*
-
-
- An example cue
-
-
-
*/}
-
);
diff --git a/packages/react/src/presets/video/skin.tsx b/packages/react/src/presets/video/skin.tsx
index 5e3fcd5e..3a7596e9 100644
--- a/packages/react/src/presets/video/skin.tsx
+++ b/packages/react/src/presets/video/skin.tsx
@@ -251,15 +251,6 @@ export function VideoSkin(props: VideoSkinProps): ReactNode {
- {/*
-
-
An example cue
-
- Another example cue with HTML
-
-
-
*/}
-
);
diff --git a/packages/skins/src/default/css/components/captions.css b/packages/skins/src/default/css/components/captions.css
index 624f8f4d..2befb520 100644
--- a/packages/skins/src/default/css/components/captions.css
+++ b/packages/skins/src/default/css/components/captions.css
@@ -1,60 +1,7 @@
/* ==========================================================================
- Captions
+ Native Caption Track
========================================================================== */
-.media-default-skin .media-captions {
- position: absolute;
- inset: auto 1rem 1.5rem 1rem;
- z-index: 20;
- font-size: 1rem;
- text-wrap: balance;
- pointer-events: none;
-
- @container media-root (width > 20rem) {
- font-size: 1.5rem;
- }
-
- @container media-root (width > 48rem) {
- font-size: 1.875rem;
- }
-
- @container media-root (width > 80rem) {
- font-size: 2.25rem;
- }
-}
-
-.media-default-skin .media-captions__container {
- display: flex;
- flex-direction: column;
- align-items: center;
- max-width: 42ch;
- margin: 0 auto;
- text-align: center;
-}
-
-.media-default-skin .media-captions__text {
- display: block;
- padding: 0.125rem 0.5rem;
- color: oklch(1 0 0);
- text-shadow:
- 0 0 1px oklch(0 0 0 / 0.7),
- 0 0 8px oklch(0 0 0 / 0.7);
- text-align: center;
- white-space: pre-wrap;
- line-height: 1.2;
-
- @media (prefers-contrast: more) {
- background: oklch(0 0 0 / 0.7);
- text-shadow: none;
- box-decoration-break: clone;
- }
-
- & > * {
- display: inline;
- }
-}
-
-/* Caption shifting styles (custom and native) */
.media-default-skin {
--media-caption-track-delay: 600ms;
--media-caption-track-y: -0.5rem;
@@ -65,26 +12,16 @@
}
}
-.media-default-skin .media-captions,
.media-default-skin video::-webkit-media-text-track-container {
/* NOTE: The delay must account for the controls delay/duration */
transition: transform 150ms ease-out;
transition-delay: var(--media-caption-track-delay);
-}
-
-.media-default-skin video::-webkit-media-text-track-container {
transform: translateY(var(--media-caption-track-y)) scale(0.98);
z-index: 1;
font-family: inherit;
}
-/* When controls are visible, shift captions up to avoid overlap */
-.media-default-skin .media-controls[data-visible] ~ .media-captions {
- transform: translateY(calc(var(--media-caption-track-y) - 0.5rem));
-}
-
@media (prefers-reduced-motion: reduce) {
- .media-default-skin .media-captions,
.media-default-skin video::-webkit-media-text-track-container {
transition-duration: 50ms;
}
diff --git a/packages/skins/src/default/tailwind/components/captions.ts b/packages/skins/src/default/tailwind/components/captions.ts
deleted file mode 100644
index f04d69e0..00000000
--- a/packages/skins/src/default/tailwind/components/captions.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { cn } from '@videojs/utils/style';
-
-export const captions = {
- root: cn(
- 'absolute z-20 pointer-events-none text-balance text-base',
- 'inset-x-4 bottom-6',
- 'transition-transform duration-150 ease-out delay-600',
- 'motion-reduce:duration-50',
- // Responsive font sizes
- '@xs/media-root:text-2xl',
- '@3xl/media-root:text-3xl',
- '@7xl/media-root:text-4xl',
- // Shift up when controls visible
- 'peer-data-visible/controls:-translate-y-12 peer-data-visible/controls:delay-25'
- ),
- container: 'max-w-[42ch] mx-auto text-center flex flex-col items-center',
- cue: cn(
- 'block py-0.5 px-2 text-white text-center whitespace-pre-wrap leading-1.2',
- '[text-shadow:0_0_1px_oklab(0_0_0_/_0.7),0_0_8px_oklab(0_0_0_/_0.7)]',
- 'contrast-more:[text-shadow:none] contrast-more:[box-decoration-break:clone] contrast-more:bg-black/70',
- '*:inline'
- ),
-};
diff --git a/packages/skins/src/default/tailwind/video.tailwind.ts b/packages/skins/src/default/tailwind/video.tailwind.ts
index 03aaf857..ee281fc2 100644
--- a/packages/skins/src/default/tailwind/video.tailwind.ts
+++ b/packages/skins/src/default/tailwind/video.tailwind.ts
@@ -136,7 +136,6 @@ export const error = {
========================================================================== */
export { button } from './components/button';
-export { captions } from './components/captions';
export { icon, iconContainer, iconFlipped, iconHidden } from './components/icon';
export { iconState } from './components/icon-state';
export { overlay } from './components/overlay';
diff --git a/packages/skins/src/minimal/css/components/captions.css b/packages/skins/src/minimal/css/components/captions.css
index f57b061a..b80450b2 100644
--- a/packages/skins/src/minimal/css/components/captions.css
+++ b/packages/skins/src/minimal/css/components/captions.css
@@ -1,60 +1,7 @@
/* ==========================================================================
- Captions
+ Native Caption Track
========================================================================== */
-.media-minimal-skin .media-captions {
- position: absolute;
- inset: auto 1rem 1.5rem 1rem;
- z-index: 20;
- font-size: 1rem;
- text-wrap: balance;
- pointer-events: none;
-
- @container media-root (width > 20rem) {
- font-size: 1.5rem;
- }
-
- @container media-root (width > 48rem) {
- font-size: 1.875rem;
- }
-
- @container media-root (width > 80rem) {
- font-size: 2.25rem;
- }
-}
-
-.media-minimal-skin .media-captions__container {
- display: flex;
- flex-direction: column;
- align-items: center;
- max-width: 42ch;
- margin: 0 auto;
- text-align: center;
-}
-
-.media-minimal-skin .media-captions__text {
- display: block;
- padding: 0.125rem 0.5rem;
- color: oklch(1 0 0);
- text-shadow:
- 0 0 1px oklch(0 0 0 / 0.7),
- 0 0 8px oklch(0 0 0 / 0.7);
- text-align: center;
- white-space: pre-wrap;
- line-height: 1.2;
-
- @media (prefers-contrast: more) {
- background: oklch(0 0 0 / 0.7);
- text-shadow: none;
- box-decoration-break: clone;
- }
-
- & > * {
- display: inline;
- }
-}
-
-/* Caption shifting styles (custom and native) */
.media-minimal-skin {
--media-caption-track-delay: 600ms;
--media-caption-track-y: -0.5rem;
@@ -65,26 +12,16 @@
}
}
-.media-minimal-skin .media-captions,
.media-minimal-skin video::-webkit-media-text-track-container {
/* NOTE: The delay must account for the controls delay/duration */
transition: transform 150ms ease-out;
transition-delay: var(--media-caption-track-delay);
-}
-
-.media-minimal-skin video::-webkit-media-text-track-container {
transform: translateY(var(--media-caption-track-y)) scale(0.98);
z-index: 1;
font-family: inherit;
}
-/* When controls are visible, shift captions up to avoid overlap */
-.media-minimal-skin .media-controls[data-visible] ~ .media-captions {
- transform: translateY(calc(var(--media-caption-track-y) - 0.5rem));
-}
-
@media (prefers-reduced-motion: reduce) {
- .media-minimal-skin .media-captions,
.media-minimal-skin video::-webkit-media-text-track-container {
transition-duration: 50ms;
}
diff --git a/packages/skins/src/minimal/tailwind/components/captions.ts b/packages/skins/src/minimal/tailwind/components/captions.ts
deleted file mode 100644
index 15043fb7..00000000
--- a/packages/skins/src/minimal/tailwind/components/captions.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { cn } from '@videojs/utils/style';
-
-export const captions = {
- root: cn(
- 'absolute z-20 pointer-events-none text-balance text-base',
- 'inset-x-4 bottom-6',
- 'transition-transform duration-150 ease-out delay-600',
- 'motion-reduce:duration-50',
- // Responsive font sizes
- '@xs/media-root:text-2xl',
- '@3xl/media-root:text-3xl',
- '@7xl/media-root:text-4xl',
- // Shift up when controls visible
- 'peer-data-visible/controls:-translate-y-10 peer-data-visible/controls:delay-25'
- ),
- container: 'max-w-[42ch] mx-auto text-center flex flex-col items-center',
- cue: cn(
- 'block py-0.5 px-2 text-white text-center whitespace-pre-wrap leading-1.2',
- '[text-shadow:0_0_1px_oklab(0_0_0_/_0.7),0_0_8px_oklab(0_0_0_/_0.7)]',
- 'contrast-more:[text-shadow:none] contrast-more:[box-decoration-break:clone] contrast-more:bg-black/70',
- '*:inline'
- ),
-};
diff --git a/packages/skins/src/minimal/tailwind/video.tailwind.ts b/packages/skins/src/minimal/tailwind/video.tailwind.ts
index 25ac610b..7d638243 100644
--- a/packages/skins/src/minimal/tailwind/video.tailwind.ts
+++ b/packages/skins/src/minimal/tailwind/video.tailwind.ts
@@ -102,7 +102,6 @@ export const popup = {
export { bufferingIndicator } from './components/buffering';
export { button } from './components/button';
export { buttonGroup } from './components/button-group';
-export { captions } from './components/captions';
export { error } from './components/error';
export { icon, iconContainer, iconFlipped, iconHidden } from './components/icon';
export { iconState } from './components/icon-state';