@flamingo-stack/openframe-frontend-core 0.0.387 → 0.0.388
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/{chunk-DU2X2MH2.js → chunk-23BJ64AY.js} +2 -2
- package/dist/{chunk-OGNKGDHT.js → chunk-35C3PUUN.js} +4 -4
- package/dist/{chunk-RUHE3RJK.cjs → chunk-6ZAQOYW4.cjs} +62 -67
- package/dist/chunk-6ZAQOYW4.cjs.map +1 -0
- package/dist/{chunk-MVY4ZKQR.js → chunk-7CEJO3FE.js} +2 -2
- package/dist/{chunk-EHVRW3WB.js → chunk-7UQ74ZJN.js} +2 -2
- package/dist/{chunk-EULRZYQH.js → chunk-ATKRYY4U.js} +9 -14
- package/dist/chunk-ATKRYY4U.js.map +1 -0
- package/dist/{chunk-SOAWTQXO.cjs → chunk-B4JRV4FB.cjs} +31 -28
- package/dist/chunk-B4JRV4FB.cjs.map +1 -0
- package/dist/{chunk-GPTS2NXW.js → chunk-BGYWTU2E.js} +12 -9
- package/dist/chunk-BGYWTU2E.js.map +1 -0
- package/dist/{chunk-3BPVTHOW.js → chunk-DM3JIOFA.js} +4 -4
- package/dist/{chunk-XGLZK25V.js → chunk-EQKTBIKH.js} +2 -2
- package/dist/{chunk-SGULN3RX.cjs → chunk-EYQESL6X.cjs} +7 -7
- package/dist/{chunk-SGULN3RX.cjs.map → chunk-EYQESL6X.cjs.map} +1 -1
- package/dist/{chunk-N2LW5NHS.js → chunk-FS4FVNOU.js} +2 -2
- package/dist/{chunk-OLCNA32C.cjs → chunk-HIODHJCJ.cjs} +15 -15
- package/dist/{chunk-OLCNA32C.cjs.map → chunk-HIODHJCJ.cjs.map} +1 -1
- package/dist/{chunk-44ENRZZJ.cjs → chunk-HQG5AY64.cjs} +12 -12
- package/dist/{chunk-44ENRZZJ.cjs.map → chunk-HQG5AY64.cjs.map} +1 -1
- package/dist/{chunk-3L4B7MBD.cjs → chunk-KYN2GYUI.cjs} +31 -31
- package/dist/{chunk-3L4B7MBD.cjs.map → chunk-KYN2GYUI.cjs.map} +1 -1
- package/dist/{chunk-CIH2LZI7.cjs → chunk-ONXN77KP.cjs} +62 -62
- package/dist/{chunk-CIH2LZI7.cjs.map → chunk-ONXN77KP.cjs.map} +1 -1
- package/dist/{chunk-OX75ZFN6.js → chunk-SENYQRPF.js} +2 -2
- package/dist/{chunk-SECF2KWQ.cjs → chunk-SNFSLYVA.cjs} +5 -5
- package/dist/{chunk-SECF2KWQ.cjs.map → chunk-SNFSLYVA.cjs.map} +1 -1
- package/dist/{chunk-3KA5L7LC.js → chunk-UCQWQ7LM.js} +2 -2
- package/dist/{chunk-ANPV7GZT.js → chunk-VCRUAKOJ.js} +5701 -5281
- package/dist/chunk-VCRUAKOJ.js.map +1 -0
- package/dist/{chunk-DKN425XR.cjs → chunk-VOPTCR5I.cjs} +1604 -1184
- package/dist/chunk-VOPTCR5I.cjs.map +1 -0
- package/dist/{chunk-DO7LOWFE.cjs → chunk-WIKFWION.cjs} +9 -9
- package/dist/{chunk-DO7LOWFE.cjs.map → chunk-WIKFWION.cjs.map} +1 -1
- package/dist/{chunk-ADEP6E3Z.cjs → chunk-YKPQINSZ.cjs} +26 -26
- package/dist/{chunk-ADEP6E3Z.cjs.map → chunk-YKPQINSZ.cjs.map} +1 -1
- package/dist/{chunk-POJRURML.cjs → chunk-ZVFDJ35S.cjs} +37 -37
- package/dist/{chunk-POJRURML.cjs.map → chunk-ZVFDJ35S.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/entity-video-section.d.ts +15 -3
- package/dist/components/features/entity-video-section.d.ts.map +1 -1
- package/dist/components/features/index.cjs +8 -2
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.d.ts +2 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +11 -5
- package/dist/components/features/video-bites-display.d.ts +12 -26
- package/dist/components/features/video-bites-display.d.ts.map +1 -1
- package/dist/components/features/video-bites-shared.cjs +24 -0
- package/dist/components/features/video-bites-shared.cjs.map +1 -0
- package/dist/components/features/video-bites-shared.d.ts +47 -0
- package/dist/components/features/video-bites-shared.d.ts.map +1 -0
- package/dist/components/features/video-bites-shared.js +20 -0
- package/dist/components/features/video-bites-shared.js.map +1 -0
- package/dist/components/features/video-bites-strip.d.ts +75 -0
- package/dist/components/features/video-bites-strip.d.ts.map +1 -0
- package/dist/components/features/video-ratio-tabs.d.ts +6 -9
- package/dist/components/features/video-ratio-tabs.d.ts.map +1 -1
- package/dist/components/features/video.d.ts +19 -0
- package/dist/components/features/video.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +20 -20
- package/dist/components/help-center-pages/index.js +11 -11
- package/dist/components/index.cjs +128 -165
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +333 -370
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/shared/product-release/release-detail-page.d.ts +6 -7
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/square-avatar.d.ts +3 -1
- package/dist/components/square-avatar.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +5 -5
- package/dist/components/tickets/index.js +4 -4
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/components/user-display.d.ts +5 -1
- package/dist/components/user-display.d.ts.map +1 -1
- package/dist/index.cjs +8 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +11 -5
- package/dist/types/case-study.d.ts +18 -0
- package/dist/types/case-study.d.ts.map +1 -1
- package/dist/types/video-processing.d.ts +11 -0
- package/dist/types/video-processing.d.ts.map +1 -1
- package/package.json +7 -1
- package/src/components/features/entity-video-section.tsx +26 -5
- package/src/components/features/index.ts +6 -3
- package/src/components/features/video-bites-display.tsx +17 -189
- package/src/components/features/video-bites-shared.ts +62 -0
- package/src/components/features/video-bites-strip.tsx +494 -0
- package/src/components/features/video-ratio-tabs.tsx +15 -19
- package/src/components/features/video.tsx +134 -3
- package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +10 -9
- package/src/components/shared/product-release/release-detail-page.tsx +12 -18
- package/src/components/square-avatar.tsx +5 -2
- package/src/components/user-display.tsx +14 -4
- package/src/stories/VideoBitesStrip.stories.tsx +82 -0
- package/src/types/case-study.ts +23 -0
- package/src/types/video-processing.ts +11 -0
- package/dist/chunk-ANPV7GZT.js.map +0 -1
- package/dist/chunk-DKN425XR.cjs.map +0 -1
- package/dist/chunk-EULRZYQH.js.map +0 -1
- package/dist/chunk-GPTS2NXW.js.map +0 -1
- package/dist/chunk-RUHE3RJK.cjs.map +0 -1
- package/dist/chunk-SOAWTQXO.cjs.map +0 -1
- /package/dist/{chunk-DU2X2MH2.js.map → chunk-23BJ64AY.js.map} +0 -0
- /package/dist/{chunk-OGNKGDHT.js.map → chunk-35C3PUUN.js.map} +0 -0
- /package/dist/{chunk-MVY4ZKQR.js.map → chunk-7CEJO3FE.js.map} +0 -0
- /package/dist/{chunk-EHVRW3WB.js.map → chunk-7UQ74ZJN.js.map} +0 -0
- /package/dist/{chunk-3BPVTHOW.js.map → chunk-DM3JIOFA.js.map} +0 -0
- /package/dist/{chunk-XGLZK25V.js.map → chunk-EQKTBIKH.js.map} +0 -0
- /package/dist/{chunk-N2LW5NHS.js.map → chunk-FS4FVNOU.js.map} +0 -0
- /package/dist/{chunk-OX75ZFN6.js.map → chunk-SENYQRPF.js.map} +0 -0
- /package/dist/{chunk-3KA5L7LC.js.map → chunk-UCQWQ7LM.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-bites-shared.d.ts","sourceRoot":"","sources":["../../../src/components/features/video-bites-shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAE/D,uEAAuE;AACvE,eAAO,MAAM,yBAAyB,gBAAgB,CAAA;AAEtD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,CAAC,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,EAC/F,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,qBAAqB,GAAG,IAAI,CAO9B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,MAAM,CAK/E"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// src/components/features/video-bites-shared.ts
|
|
2
|
+
var DEFAULT_VIDEO_BITES_TITLE = "Key Moments";
|
|
3
|
+
function toStripProfile(p, fallbackSubtitle) {
|
|
4
|
+
if (!p?.full_name) return null;
|
|
5
|
+
return {
|
|
6
|
+
name: p.full_name,
|
|
7
|
+
avatarUrl: p.avatar_url ?? null,
|
|
8
|
+
subtitle: p.job_title ?? fallbackSubtitle ?? null
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function sortBitesByCreatedAtDesc(a, b) {
|
|
12
|
+
if (!a.created_at && !b.created_at) return 0;
|
|
13
|
+
if (!a.created_at) return 1;
|
|
14
|
+
if (!b.created_at) return -1;
|
|
15
|
+
return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { DEFAULT_VIDEO_BITES_TITLE, sortBitesByCreatedAtDesc, toStripProfile };
|
|
19
|
+
//# sourceMappingURL=video-bites-shared.js.map
|
|
20
|
+
//# sourceMappingURL=video-bites-shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/features/video-bites-shared.ts"],"names":[],"mappings":";AAiBO,IAAM,yBAAA,GAA4B;AAsBlC,SAAS,cAAA,CACd,GACA,gBAAA,EAC8B;AAC9B,EAAA,IAAI,CAAC,CAAA,EAAG,SAAA,EAAW,OAAO,IAAA;AAC1B,EAAA,OAAO;AAAA,IACL,MAAM,CAAA,CAAE,SAAA;AAAA,IACR,SAAA,EAAW,EAAE,UAAA,IAAc,IAAA;AAAA,IAC3B,QAAA,EAAU,CAAA,CAAE,SAAA,IAAa,gBAAA,IAAoB;AAAA,GAC/C;AACF;AAOO,SAAS,wBAAA,CAAyB,GAAgB,CAAA,EAAwB;AAC/E,EAAA,IAAI,CAAC,CAAA,CAAE,UAAA,IAAc,CAAC,CAAA,CAAE,YAAY,OAAO,CAAA;AAC3C,EAAA,IAAI,CAAC,CAAA,CAAE,UAAA,EAAY,OAAO,CAAA;AAC1B,EAAA,IAAI,CAAC,CAAA,CAAE,UAAA,EAAY,OAAO,EAAA;AAC1B,EAAA,OAAO,IAAI,IAAA,CAAK,CAAA,CAAE,UAAU,CAAA,CAAE,OAAA,EAAQ,GAAI,IAAI,IAAA,CAAK,CAAA,CAAE,UAAU,CAAA,CAAE,OAAA,EAAQ;AAC3E","file":"video-bites-shared.js","sourcesContent":["/**\n * video-bites-shared — SERVER-SAFE leaf for the video-bites surface.\n *\n * No React imports, no 'use client'. Published as its own subpath\n * (`@flamingo-stack/openframe-frontend-core/components/features/video-bites-shared`)\n * so server-side consumers (the hub's featured-video-bites DAL) can import the\n * title constant, profile adapter, and sort comparator WITHOUT pulling the\n * 'use client' strip/MuxPlayer module graph into a server bundle — same\n * pattern (and reason) as `mux-origins.ts`.\n *\n * Client components (`<VideoBitesStrip>`, the features barrel) re-export from\n * here; there must never be a second definition of any of these.\n */\n\nimport type { VideoTeaser } from '../../types/video-processing'\n\n/** Single exported home for the unified public bites-section title. */\nexport const DEFAULT_VIDEO_BITES_TITLE = 'Key Moments'\n\n/**\n * Profile rendered in the strip's hover overlay. Structurally identical to\n * `UserDisplayProps` — the overlay renders it via `<UserDisplay>` 1:1.\n */\nexport interface VideoBiteStripProfile {\n name: string\n avatarUrl?: string | null\n subtitle?: string | null\n}\n\n/**\n * Adapter SSoT: builds a strip profile from the repo-wide author/user shape\n * (`profiles` rows and hydrated authors all expose full_name / avatar_url /\n * job_title). ALL strip call sites and the featured DAL's mapProfile route\n * through this — never hand-roll the mapping.\n *\n * Returns NULL (never `{name: ''}`) when `full_name` is null/empty: callers\n * rely on `profile ?? fallback` chains, and some producers (e.g. the release\n * kit) pass null-field author stubs.\n */\nexport function toStripProfile(\n p?: { full_name?: string | null; avatar_url?: string | null; job_title?: string | null } | null,\n fallbackSubtitle?: string | null,\n): VideoBiteStripProfile | null {\n if (!p?.full_name) return null\n return {\n name: p.full_name,\n avatarUrl: p.avatar_url ?? null,\n subtitle: p.job_title ?? fallbackSubtitle ?? null,\n }\n}\n\n/**\n * Null-safe created_at-desc COMPARATOR (missing dates sort last).\n * Call as `[...arr].sort(sortBitesByCreatedAtDesc)` — shared by the strip,\n * the hub admin editor, and the hub featured DAL.\n */\nexport function sortBitesByCreatedAtDesc(a: VideoTeaser, b: VideoTeaser): number {\n if (!a.created_at && !b.created_at) return 0\n if (!a.created_at) return 1\n if (!b.created_at) return -1\n return new Date(b.created_at).getTime() - new Date(a.created_at).getTime()\n}\n"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <VideoBitesStrip> — THE unified public video-bites surface (Figma
|
|
3
|
+
* "Hero Section" node 4033-90364). Replaces the old aspect-ratio grid
|
|
4
|
+
* (`<VideoBitesDisplay>` is now a deprecated shim over this).
|
|
5
|
+
*
|
|
6
|
+
* One horizontal strip of uniform-height cards:
|
|
7
|
+
* - continuous marquee auto-scroll (rAF over native `scrollLeft` so the
|
|
8
|
+
* position stays scrubbable for chevrons + mid-track pause; the CSS
|
|
9
|
+
* keyframe engine in `quick-action-marquee.tsx` can't do either — we
|
|
10
|
+
* reuse ONLY its WCAG clone pattern: track rendered twice, clone copy
|
|
11
|
+
* `aria-hidden` with no focusable descendants)
|
|
12
|
+
* - hover = bottom-docked detail overlay + muted chromeless autoplay
|
|
13
|
+
* preview + marquee pause
|
|
14
|
+
* - profile / description-slot / navigation injection via props
|
|
15
|
+
* - the `<Video>` Mux SSoT is the only player primitive used
|
|
16
|
+
*
|
|
17
|
+
* Perf contract: each card renders the REAL player (first frame + center
|
|
18
|
+
* play control — every card looks and behaves like any other video surface)
|
|
19
|
+
* while the card is within ~500px of the viewport, via a TWO-WAY
|
|
20
|
+
* IntersectionObserver: players mount as cards approach and UNMOUNT again
|
|
21
|
+
* once the marquee carries them far off-screen. Live player count is
|
|
22
|
+
* therefore bounded by the visible strip width (+margin), not by list
|
|
23
|
+
* length or clone count. Playback itself starts only on hover
|
|
24
|
+
* (`<Video playOnHover>` — sound at 50%, muted fallback).
|
|
25
|
+
*
|
|
26
|
+
* Marquee state model (explicit — do not "simplify" into one timer):
|
|
27
|
+
* the rAF advances only when the pause-reason set {hover, offViewport,
|
|
28
|
+
* tabHidden, reducedMotion} is empty AND `now > max(chevronSuppressUntil,
|
|
29
|
+
* userScrollSuppressUntil)`. Chevron clicks and manual wheel/touch each set
|
|
30
|
+
* their own suppress-until timestamp; the player leave-grace is a separate
|
|
31
|
+
* concern that never touches marquee state.
|
|
32
|
+
*/
|
|
33
|
+
import React from 'react';
|
|
34
|
+
import type { VideoTeaserWithRatio } from './video-ratio-tabs';
|
|
35
|
+
import { type VideoBiteStripProfile } from './video-bites-shared';
|
|
36
|
+
/** Extends VideoTeaserWithRatio — aspect_ratio is INHERITED, never re-declared. */
|
|
37
|
+
export interface VideoBiteStripItem extends VideoTeaserWithRatio {
|
|
38
|
+
/** Per-bite profile override (falls back to the section-level `profile`). */
|
|
39
|
+
profile?: VideoBiteStripProfile | null;
|
|
40
|
+
/** Navigation target — overlay chevron renders an anchor. */
|
|
41
|
+
href?: string;
|
|
42
|
+
/** Navigation callback — used when `href` is absent (overlay chevron = button). */
|
|
43
|
+
onNavigate?: () => void;
|
|
44
|
+
}
|
|
45
|
+
export interface VideoBitesStripProps {
|
|
46
|
+
bites: ReadonlyArray<VideoBiteStripItem>;
|
|
47
|
+
/** Section heading. Default: DEFAULT_VIDEO_BITES_TITLE ('Key Moments'). */
|
|
48
|
+
title?: string;
|
|
49
|
+
showTitle?: boolean;
|
|
50
|
+
/** Filter to `published === true` bites. Default true. */
|
|
51
|
+
filterPublished?: boolean;
|
|
52
|
+
/** Section-level profile applied to bites without their own. */
|
|
53
|
+
profile?: VideoBiteStripProfile | null;
|
|
54
|
+
/** Section-level navigation target applied to bites without their own
|
|
55
|
+
* `href` — the hover overlay links to the entity the bites originated from. */
|
|
56
|
+
href?: string;
|
|
57
|
+
/** Custom node rendered between the heading and the strip (description slot). */
|
|
58
|
+
headerSlot?: React.ReactNode;
|
|
59
|
+
/** Marquee auto-scroll. Auto-disabled on no-overflow and prefers-reduced-motion. */
|
|
60
|
+
autoScroll?: boolean;
|
|
61
|
+
/** Marquee speed in px/s. */
|
|
62
|
+
autoScrollSpeed?: number;
|
|
63
|
+
/** Pause the marquee while the pointer is anywhere over the strip. */
|
|
64
|
+
pauseOnHover?: boolean;
|
|
65
|
+
/** Card height in px per breakpoint (Figma: 416 desktop). */
|
|
66
|
+
cardHeightDesktop?: number;
|
|
67
|
+
cardHeightMobile?: number;
|
|
68
|
+
/** Floating prev/next buttons. Hidden automatically when nothing overflows. */
|
|
69
|
+
showChevrons?: boolean;
|
|
70
|
+
/** Section-level navigation fallback (per-bite `href`/`onNavigate` win). */
|
|
71
|
+
onBiteNavigate?: (bite: VideoBiteStripItem, index: number) => void;
|
|
72
|
+
className?: string;
|
|
73
|
+
}
|
|
74
|
+
export declare function VideoBitesStrip({ bites, title, showTitle, filterPublished, profile, href, headerSlot, autoScroll, autoScrollSpeed, pauseOnHover, cardHeightDesktop, cardHeightMobile, showChevrons, onBiteNavigate, className, }: VideoBitesStripProps): React.ReactElement | null;
|
|
75
|
+
//# sourceMappingURL=video-bites-strip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-bites-strip.d.ts","sourceRoot":"","sources":["../../../src/components/features/video-bites-strip.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AAKjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAe9B,mFAAmF;AACnF,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,6EAA6E;IAC7E,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACzC,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gEAAgE;IAChE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC;oFACgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAiC,EACjC,SAAgB,EAChB,eAAsB,EACtB,OAAc,EACd,IAAI,EACJ,UAAU,EACV,UAAiB,EACjB,eAAoB,EACpB,YAAmB,EACnB,iBAAuB,EACvB,gBAAsB,EACtB,YAAmB,EACnB,cAAc,EACd,SAAS,GACV,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAoNlD"}
|
|
@@ -7,23 +7,20 @@ import type { VideoTeaser } from '../../types/video-processing';
|
|
|
7
7
|
export type VizardAspectRatio = '9:16' | '16:9' | '1:1';
|
|
8
8
|
/**
|
|
9
9
|
* Extended VideoTeaser with aspect_ratio metadata from Vizard.
|
|
10
|
-
* The
|
|
11
|
-
*
|
|
12
|
-
* Import this when you need the ratio at compile time
|
|
10
|
+
* The base `VideoTeaser` carries every other persisted bite field
|
|
11
|
+
* (timing/confidence/viral_reason live there); this adds ONLY the
|
|
12
|
+
* ratio. Import this when you need the ratio at compile time —
|
|
13
|
+
* it is the canonical type display/aggregation code extends.
|
|
13
14
|
*/
|
|
14
15
|
export interface VideoTeaserWithRatio extends VideoTeaser {
|
|
15
16
|
aspect_ratio?: VizardAspectRatio;
|
|
16
|
-
confidence?: number;
|
|
17
|
-
viral_reason?: string;
|
|
18
|
-
start_time_ms?: number;
|
|
19
|
-
end_time_ms?: number;
|
|
20
17
|
}
|
|
21
18
|
/** Ratio category used for grid layout and tab grouping. */
|
|
22
19
|
export type RatioCategory = 'portrait' | 'square' | 'landscape';
|
|
23
20
|
/** Grid class for each aspect ratio (admin editors — narrower columns). */
|
|
24
21
|
export declare const RATIO_GRID_CLASS: Record<RatioCategory, string>;
|
|
25
|
-
/**
|
|
26
|
-
export declare const
|
|
22
|
+
/** CSS `aspect-ratio` value per category — sizing for strip cards + placeholders. */
|
|
23
|
+
export declare const RATIO_TO_CSS_ASPECT: Record<RatioCategory, string>;
|
|
27
24
|
interface RatioTabsProps {
|
|
28
25
|
groups: Record<RatioCategory, {
|
|
29
26
|
count: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-ratio-tabs.d.ts","sourceRoot":"","sources":["../../../src/components/features/video-ratio-tabs.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"video-ratio-tabs.d.ts","sourceRoot":"","sources":["../../../src/components/features/video-ratio-tabs.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;AAMhE,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAI1D,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAI7D,CAAC;AAQF,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;IAChF,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,UAAU,EACV,SAAc,GACf,EAAE,cAAc,sCAiChB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,iBAAiB,CASnB;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,aAAa,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,KAAK,EAAE,CAAC,EAAE,EACV,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,iBAAiB,GAC7C;IACD,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC,EAAE,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB,CAYA"}
|
|
@@ -76,6 +76,19 @@ interface VideoFileProps extends VideoCommonProps {
|
|
|
76
76
|
srtContent?: string | null;
|
|
77
77
|
/** HTTPS URL to a VTT captions file. Rendered as a native `<track>`. */
|
|
78
78
|
captionsUrl?: string | null;
|
|
79
|
+
/** Autoplay muted on mount (forwarded as MuxPlayer `autoPlay="muted"`) — hover-preview surfaces. */
|
|
80
|
+
autoPlay?: boolean;
|
|
81
|
+
/** Loop playback — short bite previews. */
|
|
82
|
+
loop?: boolean;
|
|
83
|
+
/** Hide all player chrome (MuxPlayer `--controls: none`) — chromeless preview mode. */
|
|
84
|
+
chromeless?: boolean;
|
|
85
|
+
/** Play while the pointer hovers the player, pause on leave. Tries WITH
|
|
86
|
+
* sound at 50% volume first (bite-strip behavior); falls back to muted when
|
|
87
|
+
* the browser's autoplay policy rejects unmuted hover playback. */
|
|
88
|
+
playOnHover?: boolean;
|
|
89
|
+
/** Hide the bottom control bar, keep only the CENTER play/pause control
|
|
90
|
+
* (bite-strip cards per Figma). */
|
|
91
|
+
centerControlsOnly?: boolean;
|
|
79
92
|
}
|
|
80
93
|
interface VideoYouTubeProps extends VideoCommonProps {
|
|
81
94
|
kind: 'youtube';
|
|
@@ -87,6 +100,12 @@ interface VideoAutoProps extends VideoCommonProps {
|
|
|
87
100
|
url: string;
|
|
88
101
|
srtContent?: string | null;
|
|
89
102
|
captionsUrl?: string | null;
|
|
103
|
+
/** See VideoFileProps — no-ops when the URL resolves to the YouTube branch. */
|
|
104
|
+
autoPlay?: boolean;
|
|
105
|
+
loop?: boolean;
|
|
106
|
+
chromeless?: boolean;
|
|
107
|
+
playOnHover?: boolean;
|
|
108
|
+
centerControlsOnly?: boolean;
|
|
90
109
|
}
|
|
91
110
|
export type VideoProps = VideoFileProps | VideoYouTubeProps | VideoAutoProps;
|
|
92
111
|
export declare function Video(props: VideoProps): React.ReactElement | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../src/components/features/video.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAA+C,MAAM,OAAO,CAAC;AAqGpE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsB3D;AAMD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEzD,UAAU,gBAAgB;IACxB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,cAAe,SAAQ,gBAAgB;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../src/components/features/video.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAA+C,MAAM,OAAO,CAAC;AAqGpE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsB3D;AAMD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEzD,UAAU,gBAAgB;IACxB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,cAAe,SAAQ,gBAAgB;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oGAAoG;IACpG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uFAAuF;IACvF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;wEAEoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;wCACoC;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,UAAU,iBAAkB,SAAQ,gBAAgB;IAClD,IAAI,EAAE,SAAS,CAAC;IAChB,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,cAAe,SAAQ,gBAAgB;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAM7E,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAiClE"}
|
|
@@ -6,30 +6,30 @@
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunk6ZAQOYW4cjs = require('../../chunk-6ZAQOYW4.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
13
|
-
require('../../chunk-
|
|
12
|
+
var _chunkKYN2GYUIcjs = require('../../chunk-KYN2GYUI.cjs');
|
|
13
|
+
require('../../chunk-EYQESL6X.cjs');
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunkHQG5AY64cjs = require('../../chunk-HQG5AY64.cjs');
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
20
|
-
require('../../chunk-
|
|
19
|
+
var _chunkONXN77KPcjs = require('../../chunk-ONXN77KP.cjs');
|
|
20
|
+
require('../../chunk-YKPQINSZ.cjs');
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var _chunkHIODHJCJcjs = require('../../chunk-HIODHJCJ.cjs');
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
var
|
|
28
|
-
require('../../chunk-
|
|
29
|
-
require('../../chunk-
|
|
27
|
+
var _chunkB4JRV4FBcjs = require('../../chunk-B4JRV4FB.cjs');
|
|
28
|
+
require('../../chunk-SNFSLYVA.cjs');
|
|
29
|
+
require('../../chunk-WIKFWION.cjs');
|
|
30
30
|
require('../../chunk-2U3YPWHG.cjs');
|
|
31
31
|
require('../../chunk-VFKQMAUF.cjs');
|
|
32
|
-
require('../../chunk-
|
|
32
|
+
require('../../chunk-VOPTCR5I.cjs');
|
|
33
33
|
require('../../chunk-743FCO64.cjs');
|
|
34
34
|
require('../../chunk-BGD345ZV.cjs');
|
|
35
35
|
require('../../chunk-3KEBI6TP.cjs');
|
|
@@ -60,9 +60,9 @@ function RoadmapPage({
|
|
|
60
60
|
belowContent,
|
|
61
61
|
shell
|
|
62
62
|
}) {
|
|
63
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
63
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHIODHJCJcjs.DevSectionPage, { sectionKey: "roadmap", backButton, title, subtitle, shell, children: [
|
|
64
64
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
65
|
-
|
|
65
|
+
_chunk6ZAQOYW4cjs.RoadmapView,
|
|
66
66
|
{
|
|
67
67
|
endpoint: roadmapEndpoint,
|
|
68
68
|
initialItems,
|
|
@@ -88,9 +88,9 @@ function ProductReleasesListPage({
|
|
|
88
88
|
belowContent,
|
|
89
89
|
shell
|
|
90
90
|
}) {
|
|
91
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
91
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHIODHJCJcjs.DevSectionPage, { sectionKey: "releases", backButton, title, subtitle, shell, children: [
|
|
92
92
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
93
|
-
|
|
93
|
+
_chunk6ZAQOYW4cjs.ProductReleasesView,
|
|
94
94
|
{
|
|
95
95
|
endpoint: releasesEndpoint,
|
|
96
96
|
basePath,
|
|
@@ -113,8 +113,8 @@ function DeliveryPage({
|
|
|
113
113
|
belowContent,
|
|
114
114
|
shell
|
|
115
115
|
}) {
|
|
116
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
117
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
116
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHIODHJCJcjs.DevSectionPage, { sectionKey: "delivery", backButton, title, subtitle, shell, children: [
|
|
117
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6ZAQOYW4cjs.DeliveryLists, { completedApiEndpoint: completedEndpoint, inProgressApiEndpoint: inProgressEndpoint }),
|
|
118
118
|
belowContent
|
|
119
119
|
] });
|
|
120
120
|
}
|
|
@@ -134,9 +134,9 @@ function OnboardingGuidesCatalogPage({
|
|
|
134
134
|
belowContent,
|
|
135
135
|
shell
|
|
136
136
|
}) {
|
|
137
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
137
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHIODHJCJcjs.DevSectionPage, { sectionKey: "onboarding", backButton, title, subtitle, shell, children: [
|
|
138
138
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
139
|
-
|
|
139
|
+
_chunkB4JRV4FBcjs.OnboardingGuidesCatalogView,
|
|
140
140
|
{
|
|
141
141
|
guidesEndpoint,
|
|
142
142
|
sectionsEndpoint,
|
|
@@ -160,5 +160,5 @@ function OnboardingGuidesCatalogPage({
|
|
|
160
160
|
|
|
161
161
|
|
|
162
162
|
|
|
163
|
-
exports.DeliveryPage = DeliveryPage; exports.DocsHubPage =
|
|
163
|
+
exports.DeliveryPage = DeliveryPage; exports.DocsHubPage = _chunkKYN2GYUIcjs.DocsHubPage; exports.FaqDocumentPage = _chunkHQG5AY64cjs.FaqDocumentPage; exports.HelpCenterList = _chunkONXN77KPcjs.HelpCenterList; exports.LegalDocumentPage = _chunk6ZAQOYW4cjs.LegalDocumentPage; exports.OnboardingGuideDetailView = _chunkB4JRV4FBcjs.OnboardingGuideDetailView; exports.OnboardingGuidesCatalogPage = OnboardingGuidesCatalogPage; exports.ProductReleasesListPage = ProductReleasesListPage; exports.ReleaseDetailPage = _chunk6ZAQOYW4cjs.ReleaseDetailPage; exports.RoadmapPage = RoadmapPage;
|
|
164
164
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -6,30 +6,30 @@ import {
|
|
|
6
6
|
ProductReleasesView,
|
|
7
7
|
ReleaseDetailPage,
|
|
8
8
|
RoadmapView
|
|
9
|
-
} from "../../chunk-
|
|
9
|
+
} from "../../chunk-ATKRYY4U.js";
|
|
10
10
|
import {
|
|
11
11
|
DocsHubPage
|
|
12
|
-
} from "../../chunk-
|
|
13
|
-
import "../../chunk-
|
|
12
|
+
} from "../../chunk-DM3JIOFA.js";
|
|
13
|
+
import "../../chunk-7CEJO3FE.js";
|
|
14
14
|
import {
|
|
15
15
|
FaqDocumentPage
|
|
16
|
-
} from "../../chunk-
|
|
16
|
+
} from "../../chunk-UCQWQ7LM.js";
|
|
17
17
|
import {
|
|
18
18
|
HelpCenterList
|
|
19
|
-
} from "../../chunk-
|
|
20
|
-
import "../../chunk-
|
|
19
|
+
} from "../../chunk-35C3PUUN.js";
|
|
20
|
+
import "../../chunk-EQKTBIKH.js";
|
|
21
21
|
import {
|
|
22
22
|
DevSectionPage
|
|
23
|
-
} from "../../chunk-
|
|
23
|
+
} from "../../chunk-23BJ64AY.js";
|
|
24
24
|
import {
|
|
25
25
|
OnboardingGuideDetailView,
|
|
26
26
|
OnboardingGuidesCatalogView
|
|
27
|
-
} from "../../chunk-
|
|
28
|
-
import "../../chunk-
|
|
29
|
-
import "../../chunk-
|
|
27
|
+
} from "../../chunk-BGYWTU2E.js";
|
|
28
|
+
import "../../chunk-SENYQRPF.js";
|
|
29
|
+
import "../../chunk-7UQ74ZJN.js";
|
|
30
30
|
import "../../chunk-WWHPTP4B.js";
|
|
31
31
|
import "../../chunk-4XLJWX2N.js";
|
|
32
|
-
import "../../chunk-
|
|
32
|
+
import "../../chunk-VCRUAKOJ.js";
|
|
33
33
|
import "../../chunk-KQESCGVG.js";
|
|
34
34
|
import "../../chunk-OYGFWWLQ.js";
|
|
35
35
|
import "../../chunk-NA7XJRWB.js";
|