@mieweb/ui 0.11.0-dev.36 → 0.11.0-dev.37
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/agent/skills/mieweb-ui-catalog/SKILL.md +5 -3
- package/agent/skills/mieweb-ui-catalog/selection-guidance.md +6 -3
- package/dist/{chunk-TUYWCUKH.js → chunk-4LKAZW2W.js} +7 -3
- package/dist/chunk-4LKAZW2W.js.map +1 -0
- package/dist/{chunk-MNXIN4MS.js → chunk-5WA6IYZD.js} +60 -2
- package/dist/chunk-5WA6IYZD.js.map +1 -0
- package/dist/{chunk-DT3X3RBM.js → chunk-7U7SONM5.js} +3 -3
- package/dist/{chunk-DT3X3RBM.js.map → chunk-7U7SONM5.js.map} +1 -1
- package/dist/{chunk-OGFSFUIX.cjs → chunk-AHYDJN4H.cjs} +501 -120
- package/dist/chunk-AHYDJN4H.cjs.map +1 -0
- package/dist/{chunk-C4GEPUE7.js → chunk-CKECOCYJ.js} +2 -2
- package/dist/{chunk-C4GEPUE7.js.map → chunk-CKECOCYJ.js.map} +1 -1
- package/dist/{chunk-V5VPECJI.js → chunk-CRR7AE5D.js} +11 -7
- package/dist/chunk-CRR7AE5D.js.map +1 -0
- package/dist/chunk-D3FNZMOB.cjs +4 -0
- package/dist/{chunk-GLXTVCHN.cjs.map → chunk-D3FNZMOB.cjs.map} +1 -1
- package/dist/{chunk-ZK2R6UGF.cjs → chunk-DCV34MEF.cjs} +4 -4
- package/dist/{chunk-ZK2R6UGF.cjs.map → chunk-DCV34MEF.cjs.map} +1 -1
- package/dist/chunk-G4VQEQGW.js +3 -0
- package/dist/{chunk-RISZWWEQ.js.map → chunk-G4VQEQGW.js.map} +1 -1
- package/dist/{chunk-S3LTUSO5.cjs → chunk-GG3IK5TL.cjs} +7 -7
- package/dist/{chunk-S3LTUSO5.cjs.map → chunk-GG3IK5TL.cjs.map} +1 -1
- package/dist/{chunk-QHCAWDMG.cjs → chunk-HDZQLTBP.cjs} +7 -3
- package/dist/chunk-HDZQLTBP.cjs.map +1 -0
- package/dist/chunk-JCIQIR5V.js +546 -0
- package/dist/chunk-JCIQIR5V.js.map +1 -0
- package/dist/{chunk-AIO2GCTL.js → chunk-JUY2JLFL.js} +501 -120
- package/dist/chunk-JUY2JLFL.js.map +1 -0
- package/dist/{chunk-2S76TRBJ.cjs → chunk-JUYBJLPI.cjs} +4 -4
- package/dist/{chunk-2S76TRBJ.cjs.map → chunk-JUYBJLPI.cjs.map} +1 -1
- package/dist/{chunk-UDUYZDTA.js → chunk-JWMMWNTT.js} +3 -3
- package/dist/{chunk-UDUYZDTA.js.map → chunk-JWMMWNTT.js.map} +1 -1
- package/dist/{chunk-RM4CBS7Y.js → chunk-LQ22CY7X.js} +4 -4
- package/dist/{chunk-RM4CBS7Y.js.map → chunk-LQ22CY7X.js.map} +1 -1
- package/dist/{chunk-AKMTPCLC.cjs → chunk-LTCHD3K5.cjs} +2 -2
- package/dist/{chunk-AKMTPCLC.cjs.map → chunk-LTCHD3K5.cjs.map} +1 -1
- package/dist/{chunk-GDKOYVX3.cjs → chunk-NZUQL42A.cjs} +11 -7
- package/dist/chunk-NZUQL42A.cjs.map +1 -0
- package/dist/chunk-QAEAC7HO.cjs +4 -0
- package/dist/chunk-QAEAC7HO.cjs.map +1 -0
- package/dist/chunk-SCGXD334.js +3 -0
- package/dist/chunk-SCGXD334.js.map +1 -0
- package/dist/chunk-TZKBW4GA.cjs +578 -0
- package/dist/chunk-TZKBW4GA.cjs.map +1 -0
- package/dist/{chunk-47AOS5EC.cjs → chunk-XX6PNPF2.cjs} +60 -2
- package/dist/chunk-XX6PNPF2.cjs.map +1 -0
- package/dist/components/AudioPlayer/index.cjs +7 -6
- package/dist/components/AudioPlayer/index.js +2 -1
- package/dist/components/MediaEditor/index.cjs +10 -9
- package/dist/components/MediaEditor/index.js +5 -4
- package/dist/components/MediaFeed/index.cjs +8 -5
- package/dist/components/MediaFeed/index.d.cts +33 -0
- package/dist/components/MediaFeed/index.d.ts +33 -0
- package/dist/components/MediaFeed/index.js +7 -4
- package/dist/components/MediaPlayer/index.cjs +13 -6
- package/dist/components/MediaPlayer/index.d.cts +103 -5
- package/dist/components/MediaPlayer/index.d.ts +103 -5
- package/dist/components/MediaPlayer/index.js +6 -3
- package/dist/components/Slider/index.cjs +5 -5
- package/dist/components/Slider/index.d.cts +6 -0
- package/dist/components/Slider/index.d.ts +6 -0
- package/dist/components/Slider/index.js +1 -1
- package/dist/components/SliderCalculator/index.cjs +4 -4
- package/dist/components/SliderCalculator/index.js +2 -2
- package/dist/components/SuperChat/index.cjs +16 -14
- package/dist/components/SuperChat/index.cjs.map +1 -1
- package/dist/components/SuperChat/index.d.cts +2 -2
- package/dist/components/SuperChat/index.d.ts +2 -2
- package/dist/components/SuperChat/index.js +8 -6
- package/dist/components/SuperChat/index.js.map +1 -1
- package/dist/components/SuperChat/plugins/index.d.cts +2 -2
- package/dist/components/SuperChat/plugins/index.d.ts +2 -2
- package/dist/hooks/index.cjs +2 -2
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +73 -68
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +187 -90
- package/dist/index.d.ts +187 -90
- package/dist/index.js +14 -13
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/{types-DSWbrVkM.d.cts → types-BfVolads.d.cts} +33 -0
- package/dist/{types-DSWbrVkM.d.ts → types-BfVolads.d.ts} +33 -0
- package/package.json +1 -1
- package/dist/chunk-47AOS5EC.cjs.map +0 -1
- package/dist/chunk-AIO2GCTL.js.map +0 -1
- package/dist/chunk-ECKIFQSD.cjs +0 -183
- package/dist/chunk-ECKIFQSD.cjs.map +0 -1
- package/dist/chunk-GDKOYVX3.cjs.map +0 -1
- package/dist/chunk-GLXTVCHN.cjs +0 -4
- package/dist/chunk-MNXIN4MS.js.map +0 -1
- package/dist/chunk-OGFSFUIX.cjs.map +0 -1
- package/dist/chunk-QHCAWDMG.cjs.map +0 -1
- package/dist/chunk-R5P7NAJQ.js +0 -159
- package/dist/chunk-R5P7NAJQ.js.map +0 -1
- package/dist/chunk-RISZWWEQ.js +0 -3
- package/dist/chunk-TUYWCUKH.js.map +0 -1
- package/dist/chunk-V5VPECJI.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/MediaPlayer/overlayButton.ts","../src/components/MediaPlayer/pictureInPicture.ts","../src/components/MediaPlayer/MediaControls.tsx","../src/components/MediaPlayer/MediaPlayer.tsx"],"names":["formatTime","React","MediaControls","className","jsx","Button","cn","jsxs","Play","Pause","Slider","Captions","CaptionsOff","VolumeX","Volume2","PictureInPicture2","Minimize","Maximize","cva","React2","useMediaTransport"],"mappings":"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","file":"chunk-TZKBW4GA.cjs","sourcesContent":["// Internal to the media components; not part of the public API.\n\n/**\n * The round, translucent icon button over a video (the feed's Previous/Next,\n * its inactive item's Play). Pass it to `<Button variant=\"ghost\" size=\"icon\">`;\n * it sets the `dark:` colours too, because these buttons sit inside a\n * `data-theme=\"dark\"` surface. Add `bg-transparent` where the button sits on a\n * scrim already, as the player's bar does. The scrim is black on purpose: it\n * has to read over any frame of the video.\n */\nexport const overlayButtonClass = [\n 'rounded-full bg-black/45 text-white backdrop-blur-sm',\n 'hover:bg-black/65 hover:text-white active:bg-black/75',\n 'dark:text-white dark:hover:bg-black/65 dark:active:bg-black/75',\n 'focus-visible:ring-white focus-visible:ring-offset-0',\n 'pointer-fine:h-9 pointer-fine:w-9',\n].join(' ');\n\n/** The large round ▶ in the middle of a paused video, and its glyph. */\nexport const playBadgeClass =\n 'flex h-14 w-14 items-center justify-center rounded-full bg-black/60 text-white';\n// Optical centring; media glyphs don't flip in RTL.\nexport const playBadgeIconClass = 'h-6 w-6 translate-x-0.5 fill-current';\n","// Internal to the media components (MediaControls, MediaFeed); not part of\n// the public API.\n\n/** Safari's own full screen and picture in picture, beside the standard APIs. */\nexport type WebKitVideo = HTMLVideoElement & {\n webkitEnterFullscreen?: () => void;\n webkitSupportsFullscreen?: boolean;\n webkitSupportsPresentationMode?: (mode: string) => boolean;\n webkitSetPresentationMode?: (mode: string) => void;\n webkitPresentationMode?: string;\n};\n\n/** The events that say a video went into or out of picture in picture. */\nexport const PIP_EVENTS: readonly string[] = [\n 'enterpictureinpicture',\n 'leavepictureinpicture',\n 'webkitpresentationmodechanged',\n];\n\n/**\n * How long to wait for Safari to say a video left picture in picture before\n * carrying on: the event may never come.\n */\nconst PIP_EXIT_TIMEOUT_MS = 1000;\n\n/** Whether `video` is floating in picture in picture (either API). */\nexport function isInPictureInPicture(\n video: HTMLMediaElement | null | undefined\n): boolean {\n if (!video || typeof document === 'undefined') return false;\n return (\n document.pictureInPictureElement === video ||\n (video as WebKitVideo).webkitPresentationMode === 'picture-in-picture'\n );\n}\n\n/**\n * Bring `video` back from picture in picture (either API). Resolves once it is\n * back inline, or straight away when it wasn't floating.\n */\nexport function exitPictureInPicture(\n video: HTMLMediaElement | null | undefined\n): Promise<void> {\n if (!video || !isInPictureInPicture(video)) return Promise.resolve();\n if (document.pictureInPictureElement === video)\n return document.exitPictureInPicture().catch(() => {});\n return new Promise((resolve) => {\n // Whichever comes first, the event or the timeout, cleans up the other.\n const done = () => {\n clearTimeout(timer);\n video.removeEventListener('webkitpresentationmodechanged', done);\n resolve();\n };\n const timer = setTimeout(done, PIP_EXIT_TIMEOUT_MS);\n video.addEventListener('webkitpresentationmodechanged', done, {\n once: true,\n });\n (video as WebKitVideo).webkitSetPresentationMode?.('inline');\n });\n}\n\n/** Whether this browser can float `video` in picture in picture. */\nexport function canPictureInPicture(video: WebKitVideo | null): boolean {\n if (!video || typeof document === 'undefined') return false;\n if (video.disablePictureInPicture) return false;\n return (\n document.pictureInPictureEnabled ||\n !!video.webkitSupportsPresentationMode?.('picture-in-picture')\n );\n}\n","import * as React from 'react';\nimport {\n Captions,\n CaptionsOff,\n Maximize,\n Minimize,\n Pause,\n PictureInPicture2,\n Play,\n Volume2,\n VolumeX,\n} from 'lucide-react';\n\nimport { cn } from '../../utils/cn';\nimport type { UseMediaTransportReturn } from '../../hooks/useMediaTransport';\nimport { formatTime } from '../AudioPlayer/AudioPlayer';\nimport { Button } from '../Button';\nimport { Slider } from '../Slider';\nimport {\n overlayButtonClass,\n playBadgeClass,\n playBadgeIconClass,\n} from './overlayButton';\nimport {\n canPictureInPicture,\n exitPictureInPicture,\n isInPictureInPicture,\n PIP_EVENTS,\n type WebKitVideo,\n} from './pictureInPicture';\n\n/** Every string the controls show or announce, for the host to localize. */\nexport interface MediaControlsLabels {\n play: string;\n pause: string;\n mute: string;\n unmute: string;\n seek: string;\n fullscreen: string;\n exitFullscreen: string;\n pictureInPicture: string;\n exitPictureInPicture: string;\n /** The elapsed and total time, already formatted (`1:05`, `4:30`). */\n time: (current: string, duration: string) => string;\n /** The speed button's text for a rate (`1.5×`). */\n rate: (rate: number) => string;\n /** The speed button's accessible name, given its text. */\n speed: (rate: string) => string;\n showCaptions: string;\n hideCaptions: string;\n}\n\n/** The English defaults; MediaFeed reuses them for its player labels. */\nexport const defaultMediaControlsLabels: MediaControlsLabels = {\n play: 'Play',\n pause: 'Pause',\n mute: 'Mute',\n unmute: 'Unmute',\n seek: 'Seek',\n fullscreen: 'Full screen',\n exitFullscreen: 'Exit full screen',\n pictureInPicture: 'Picture in picture',\n exitPictureInPicture: 'Exit picture in picture',\n time: (current, duration) => `${current} / ${duration}`,\n rate: (rate) => `${rate}×`,\n speed: (rate) => `Playback speed ${rate}`,\n showCaptions: 'Show captions',\n hideCaptions: 'Hide captions',\n};\n\nexport interface MediaControlsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The transport attached to the `<video>` these controls drive. */\n transport: UseMediaTransportReturn;\n /**\n * The box that goes full screen with the controls (the video and these\n * controls' shared parent). Where the browser can't take an element full\n * screen (an iPhone), the video opens in the system's own player instead.\n */\n fullscreenTarget?: React.RefObject<HTMLElement | null>;\n /** Localized text for every control; English by default. */\n labels?: Partial<MediaControlsLabels>;\n /** The speeds the speed button cycles through (default `[1, 1.5, 2]`). */\n playbackRates?: readonly number[];\n}\n\nconst defaultPlaybackRates = [1, 1.5, 2] as const;\n\n/** Controls a small player (under 20rem wide) leaves out: speed and picture in picture. */\nconst SMALL_PLAYER_HIDDEN = '@max-xs:hidden';\n\n/** Where a tap or drag on the seek bar lands: to the tenth of a second. */\nconst SEEK_STEP_MS = 100;\n\n/**\n * How far an arrow key seeks, as a share of the clip (2%): a few presses cross\n * a short clip, and a long one isn't hundreds of presses long.\n */\nconst KEYBOARD_SEEK_FRACTION = 0.02;\n\n/**\n * Browsers size caption text at about 5% of the video's height, and step a\n * cue's `line` by its line box, so this approximates one line's height.\n */\nconst CUE_LINE_HEIGHT_FRACTION = 0.05;\n\n/** The line a cue is lifted to before the video has a size to measure. */\nconst DEFAULT_CUE_LINE = -4;\n\nconst formatMs = (ms: number) => formatTime(ms / 1000);\n\n/**\n * The cue line just above the bar's controls. Lines count up from -1 (the\n * bottom one), so a cue on line -(n + 1) clears n lines. The bar's top padding\n * is the transparent start of its scrim, which captions may cover.\n */\nfunction cueLineAboveBar(\n video: HTMLVideoElement,\n bar: HTMLElement | null\n): number {\n const lineHeight =\n video.getBoundingClientRect().height * CUE_LINE_HEIGHT_FRACTION;\n if (!bar || lineHeight <= 0) return DEFAULT_CUE_LINE;\n const controls =\n bar.getBoundingClientRect().height -\n (parseFloat(getComputedStyle(bar).paddingTop) || 0);\n return -(Math.ceil(Math.max(controls, 0) / lineHeight) + 1);\n}\n\n/** Whether `video` is in picture in picture, following every change. */\nfunction useInPictureInPicture(video: HTMLVideoElement | null): boolean {\n const [inPip, setInPip] = React.useState(false);\n React.useEffect(() => {\n if (!video) return;\n const update = () => setInPip(isInPictureInPicture(video));\n update();\n for (const event of PIP_EVENTS) video.addEventListener(event, update);\n return () => {\n for (const event of PIP_EVENTS) video.removeEventListener(event, update);\n };\n }, [video]);\n return inPip;\n}\n\n/**\n * The video's caption and subtitle tracks, and whether one is showing,\n * following tracks the host adds, removes or switches itself.\n */\nfunction useCaptionTracks(\n video: HTMLVideoElement | null,\n barRef: React.RefObject<HTMLElement | null>\n) {\n const [tracks, setTracks] = React.useState<globalThis.TextTrack[]>([]);\n const [showing, setShowing] = React.useState(false);\n React.useEffect(() => {\n const list = video?.textTracks;\n if (!list) {\n setTracks([]);\n setShowing(false);\n return;\n }\n // Browsers draw cues at the very bottom, under the bar: lift any cue the\n // host left on the default line to just above it. A fixed line count\n // isn't enough, since lines scale with the video and the bar doesn't (it\n // takes two rows in a small card). Cues load lazily, and the player can\n // change size, so this runs again as cues become active and as the video\n // or bar is resized. `lifted` keeps\n // the line each cue was lifted to: a cue still on it is ours to move, and\n // goes back to the default line when these controls unmount (the video\n // may stay, with no bar to clear). One the host has moved since is theirs.\n const lifted = new Map<globalThis.VTTCue, number>();\n const place = (\n track: globalThis.TextTrack | null,\n cue: globalThis.VTTCue,\n line: number | 'auto'\n ) => {\n cue.line = line;\n // A cue already on screen keeps its old place until it's re-added.\n if (track && Array.from(track.activeCues ?? []).includes(cue)) {\n track.removeCue(cue);\n track.addCue(cue);\n }\n };\n const liftCues = (track: globalThis.TextTrack) => {\n const line = video\n ? cueLineAboveBar(video, barRef.current)\n : DEFAULT_CUE_LINE;\n for (const each of Array.from(track.cues ?? [])) {\n if (!('line' in each)) continue;\n const cue = each as globalThis.VTTCue;\n if (cue.line !== 'auto' && lifted.get(cue) !== cue.line) continue;\n if (cue.line === line) continue;\n lifted.set(cue, line);\n place(track, cue, line);\n }\n };\n const lift = (event: Event) =>\n liftCues(event.target as globalThis.TextTrack);\n let watched: globalThis.TextTrack[] = [];\n const update = () => {\n const captions = Array.from(list).filter(\n (track) => track.kind === 'captions' || track.kind === 'subtitles'\n );\n for (const track of watched)\n track.removeEventListener?.('cuechange', lift);\n for (const track of captions) track.addEventListener?.('cuechange', lift);\n watched = captions;\n setTracks(captions);\n setShowing(captions.some((track) => track.mode === 'showing'));\n };\n update();\n const events = ['addtrack', 'removetrack', 'change'];\n for (const name of events) list.addEventListener?.(name, update);\n // A new size (a phone turned, full screen left) needs a new line but\n // brings no cuechange, so the cues move then too, paused or playing.\n const resize =\n typeof ResizeObserver === 'undefined'\n ? null\n : new ResizeObserver(() => watched.forEach(liftCues));\n for (const element of [video, barRef.current])\n if (element) resize?.observe(element);\n return () => {\n resize?.disconnect();\n for (const name of events) list.removeEventListener?.(name, update);\n for (const track of watched)\n track.removeEventListener?.('cuechange', lift);\n for (const [cue, line] of lifted)\n if (cue.line === line) place(cue.track, cue, 'auto');\n };\n }, [video, barRef]);\n return { tracks, showing };\n}\n\n/** Whether `element`'s audio is muted, following every change to it. */\nfunction useMuted(element: HTMLMediaElement | null): boolean {\n const [muted, setMuted] = React.useState(element?.muted ?? false);\n React.useEffect(() => {\n if (!element) return;\n const update = () => setMuted(element.muted);\n update();\n element.addEventListener('volumechange', update);\n return () => element.removeEventListener('volumechange', update);\n }, [element]);\n return muted;\n}\n\n/** Whether `target` is the page's full-screen element. */\nfunction useIsFullscreen(\n target: React.RefObject<HTMLElement | null> | undefined\n): boolean {\n const [fullscreen, setFullscreen] = React.useState(false);\n React.useEffect(() => {\n if (typeof document === 'undefined') return;\n const update = () =>\n setFullscreen(\n !!target?.current && document.fullscreenElement === target.current\n );\n // Controls that mount while their box is already full screen say so.\n update();\n document.addEventListener('fullscreenchange', update);\n return () => document.removeEventListener('fullscreenchange', update);\n }, [target]);\n return fullscreen;\n}\n\n/**\n * Touch-first controls laid over a `<video>`, in place of the browser's own.\n * A tap on the picture plays or pauses it, a round ▶ shows while it's paused,\n * and a bar along the bottom has play/pause, the time, a seek bar, playback\n * speed, captions on/off when the video has a caption track, mute, and\n * picture in picture and full screen where the browser supports them.\n *\n * `MediaPlayer` renders it for `controlsStyle=\"overlay\"`. To use it directly,\n * render it in a positioned box with the video, attach\n * `transport.setMediaElement` to the video's `ref` and give the video\n * `playsInline` (without it, an iPhone plays it in the system player, away\n * from these controls).\n */\nexport const MediaControls = React.forwardRef<\n HTMLDivElement,\n MediaControlsProps\n>(function MediaControls(\n {\n transport,\n fullscreenTarget,\n labels: labelOverrides,\n playbackRates = defaultPlaybackRates,\n className,\n ...rest\n },\n ref\n) {\n const labels = { ...defaultMediaControlsLabels, ...labelOverrides };\n const video = transport.mediaElement as WebKitVideo | null;\n const muted = useMuted(video);\n const isFullscreen = useIsFullscreen(fullscreenTarget);\n const inPip = useInPictureInPicture(video);\n const barRef = React.useRef<HTMLDivElement>(null);\n const captions = useCaptionTracks(video, barRef);\n // What this browser can do is read once mounted: the server can't know it,\n // and markup that differs from the server's breaks hydration. Safari only\n // says a video can float once its metadata is in, so read again then (and\n // on each new source).\n const [support, setSupport] = React.useState({ box: false, pip: false });\n React.useEffect(() => {\n const read = () =>\n setSupport({\n box: document.fullscreenEnabled && !!fullscreenTarget,\n pip: canPictureInPicture(video),\n });\n read();\n video?.addEventListener('loadedmetadata', read);\n return () => video?.removeEventListener('loadedmetadata', read);\n }, [video, fullscreenTarget]);\n const playing = transport.isPlaying;\n const durationMs = transport.durationMs;\n\n const togglePlay = transport.togglePlay;\n const toggleMuted = () => {\n if (video) video.muted = !video.muted;\n };\n // The iPhone fallback only where it works: Chromium has the method too, but\n // it does nothing in a frame that isn't allowed full screen.\n const canFullscreen =\n support.box ||\n (!!video?.webkitEnterFullscreen && !!video.webkitSupportsFullscreen);\n // Leaves only a full screen these controls entered: a page that is full\n // screen itself (a kiosk, a presentation) stays that way.\n const toggleFullscreen = () => {\n if (isFullscreen) {\n void document.exitFullscreen?.()?.catch(() => {});\n } else if (support.box && fullscreenTarget?.current) {\n void fullscreenTarget.current.requestFullscreen?.()?.catch(() => {});\n } else {\n video?.webkitEnterFullscreen?.();\n }\n };\n // Each press moves to the next speed, and from the last back to the first.\n const rate = transport.playbackRate;\n const cycleSpeed = () => {\n const index = playbackRates.indexOf(rate);\n transport.setPlaybackRate(\n playbackRates[(index + 1) % playbackRates.length] ?? 1\n );\n };\n // Shows the first caption track, or hides whichever is showing.\n const toggleCaptions = () => {\n const [first] = captions.tracks;\n for (const track of captions.tracks)\n track.mode =\n !captions.showing && track === first ? 'showing' : 'disabled';\n };\n // The standard API, else Safari's presentation mode on an iPhone.\n const togglePictureInPicture = () => {\n if (!video) return;\n if (isInPictureInPicture(video)) {\n void exitPictureInPicture(video);\n } else if (document.pictureInPictureEnabled) {\n void video.requestPictureInPicture().catch(() => {});\n } else {\n video.webkitSetPresentationMode?.('picture-in-picture');\n }\n };\n\n const barButton = (\n label: string,\n onClick: () => void,\n icon: React.ReactElement,\n className?: string\n ) => (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n aria-label={label}\n title={label}\n onClick={onClick}\n className={cn(overlayButtonClass, 'shrink-0 bg-transparent', className)}\n >\n {icon}\n </Button>\n );\n\n return (\n <div\n ref={ref}\n data-slot=\"media-controls\"\n className={cn(\n // A container query: a narrow player (a portrait clip) gives the seek\n // bar a row of its own, so it's always long enough to drag.\n '@container pointer-events-none absolute inset-0 flex flex-col justify-end',\n className\n )}\n {...rest}\n >\n {/* A pointer convenience over the picture, as in every video app. The\n bar's Play is the keyboard and screen-reader control. */}\n <div\n data-slot=\"media-controls-surface\"\n aria-hidden=\"true\"\n className=\"pointer-events-auto absolute inset-0 flex cursor-pointer items-center justify-center\"\n onClick={togglePlay}\n >\n {!playing && (\n <span className={playBadgeClass}>\n <Play className={playBadgeIconClass} />\n </span>\n )}\n </div>\n {/* Left to right in every language: a media timeline follows the\n media, not the reading direction (Material: don't mirror playback\n controls or their progress bar). Labels keep their own direction. */}\n <div\n ref={barRef}\n data-slot=\"media-controls-bar\"\n dir=\"ltr\"\n // A small player (a card in a chat, under 20rem wide) keeps play,\n // time, seek, mute and full screen on two short rows and leaves speed\n // and picture in picture to the larger view, as in-chat players do;\n // its gradient starts lower so the picture stays visible.\n className=\"pointer-events-auto relative flex flex-wrap items-center gap-x-1 bg-gradient-to-t from-black/75 via-black/40 to-transparent px-1 pt-6 pb-1 text-white sm:px-2 @max-xs:pt-2\"\n >\n {barButton(\n playing ? labels.pause : labels.play,\n togglePlay,\n playing ? (\n <Pause className=\"h-5 w-5 fill-current\" aria-hidden=\"true\" />\n ) : (\n <Play className=\"h-5 w-5 fill-current\" aria-hidden=\"true\" />\n )\n )}\n <span\n data-slot=\"media-controls-time\"\n className=\"shrink-0 px-1 text-xs whitespace-nowrap tabular-nums @max-md:me-auto\"\n >\n {/* The label may be RTL text (\"0:01 من 0:04\"): isolate its\n direction without turning the bar's layout around. */}\n <bdi>\n {labels.time(\n formatMs(transport.currentTimeMs),\n formatMs(durationMs)\n )}\n </bdi>\n </span>\n <Slider\n // Taller to grab on a touch screen; the track itself stays thin.\n className=\"mx-1 min-w-0 flex-1 @max-md:order-first @max-md:mx-2 @max-md:basis-full pointer-coarse:[&_[data-slot=slider-track-wrapper]]:py-4\"\n // dark: too, or the dark surface's own track colour wins.\n trackClassName=\"bg-white/30 dark:bg-white/30\"\n size=\"sm\"\n min={0}\n max={durationMs > 0 ? durationMs : 1}\n step={SEEK_STEP_MS}\n keyboardStep={Math.max(\n SEEK_STEP_MS,\n Math.round(durationMs * KEYBOARD_SEEK_FRACTION)\n )}\n value={transport.currentTimeMs}\n onValueChange={transport.seekToMs}\n formatValue={formatMs}\n disabled={durationMs <= 0}\n aria-label={labels.seek}\n />\n {playbackRates.length > 1 &&\n barButton(\n labels.speed(labels.rate(rate)),\n cycleSpeed,\n <span className=\"text-xs font-semibold tabular-nums\">\n {labels.rate(rate)}\n </span>,\n SMALL_PLAYER_HIDDEN\n )}\n {/* The label says what a press does, so it carries the state: no\n aria-pressed as well, or it would read \"Hide captions, pressed\". */}\n {captions.tracks.length > 0 &&\n barButton(\n captions.showing ? labels.hideCaptions : labels.showCaptions,\n toggleCaptions,\n // The icon shows the state, as mute's does.\n captions.showing ? (\n <Captions className=\"h-5 w-5\" aria-hidden=\"true\" />\n ) : (\n <CaptionsOff className=\"h-5 w-5\" aria-hidden=\"true\" />\n )\n )}\n {barButton(\n muted ? labels.unmute : labels.mute,\n toggleMuted,\n muted ? (\n <VolumeX className=\"h-5 w-5\" aria-hidden=\"true\" />\n ) : (\n <Volume2 className=\"h-5 w-5\" aria-hidden=\"true\" />\n )\n )}\n {support.pip &&\n barButton(\n inPip ? labels.exitPictureInPicture : labels.pictureInPicture,\n togglePictureInPicture,\n <PictureInPicture2 className=\"h-5 w-5\" aria-hidden=\"true\" />,\n SMALL_PLAYER_HIDDEN\n )}\n {canFullscreen &&\n barButton(\n isFullscreen ? labels.exitFullscreen : labels.fullscreen,\n toggleFullscreen,\n isFullscreen ? (\n <Minimize className=\"h-5 w-5\" aria-hidden=\"true\" />\n ) : (\n <Maximize className=\"h-5 w-5\" aria-hidden=\"true\" />\n )\n )}\n </div>\n </div>\n );\n});\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { Button } from '../Button';\nimport { useMediaTransport } from '../../hooks/useMediaTransport';\nimport { MediaControls, type MediaControlsLabels } from './MediaControls';\n\n// ============================================================================\n// Types & Interfaces\n// ============================================================================\n\nexport type MediaPlayerState =\n | 'idle'\n | 'loading'\n | 'playing'\n | 'paused'\n | 'error';\n\nexport type MediaKind = 'video' | 'audio';\n\n/** Ref handle for controlling {@link MediaPlayer} programmatically. */\nexport interface MediaPlayerRef {\n /** Seek to a specific time in milliseconds. */\n seekToMs: (timeMs: number) => void;\n /** Start playback. */\n play: () => void;\n /** Pause playback. */\n pause: () => void;\n /** Get current playback time in milliseconds. */\n getCurrentTimeMs: () => number;\n /** Get total duration in milliseconds. */\n getDurationMs: () => number;\n /** Whether playback is currently paused. */\n isPaused: () => boolean;\n /** Set playback speed multiplier. */\n setPlaybackRate: (rate: number) => void;\n /**\n * The underlying media element.\n * Escape hatch for host integrations (e.g. thumbnail capture); prefer the\n * typed methods above for playback control.\n */\n mediaElement: HTMLVideoElement | HTMLAudioElement | null;\n}\n\nexport interface MediaPlayerProps extends VariantProps<\n typeof mediaPlayerVariants\n> {\n /** Media source URL. */\n src: string;\n /** Force the media kind; when omitted it is inferred from the src extension. */\n kind?: MediaKind;\n /** Whether to show controls (default `true`). */\n controls?: boolean;\n /**\n * Which controls a video gets (default `'native'`, the browser's own).\n * `'overlay'` lays touch-first controls over it ({@link MediaControls}),\n * the same in every browser and in a mobile app's web view. Audio always uses\n * the browser's.\n */\n controlsStyle?: 'native' | 'overlay';\n /** Begin muted; the controls can still unmute it. */\n muted?: boolean;\n /** Repeat playback when the media ends. */\n loop?: boolean;\n /** Video thumbnail displayed before playback. */\n poster?: string;\n /** Browser preload hint (default browser behavior when omitted). */\n preload?: 'none' | 'metadata' | 'auto';\n /** Caption/subtitle `<track>` elements. The `src` attribute is always set\n * on the media element, so alternative `<source>` children are ignored. */\n children?: React.ReactNode;\n /** The speeds the overlay controls' speed button cycles through (default `[1, 1.5, 2]`). */\n playbackRates?: readonly number[];\n /** Localized load-error and retry text, and the overlay controls' labels. */\n labels?: { error?: string; retry?: string } & Partial<MediaControlsLabels>;\n /** Callback when playback state changes. */\n onStateChange?: (state: MediaPlayerState) => void;\n /** Callback when playback ends. */\n onEnded?: () => void;\n /** Callback when an error occurs. */\n onError?: (error: Error) => void;\n /** Callback after the user requests a fresh media load on the error surface. */\n onRetry?: () => void;\n /** Callback on time updates (milliseconds). */\n onTimeUpdate?: (currentTimeMs: number, durationMs: number) => void;\n /** Additional class name. */\n className?: string;\n /** Accessible label for the media element. */\n 'aria-label'?: string;\n /**\n * Transitional: exposes the raw media element to legacy consumers.\n * Prefer {@link MediaPlayerRef} for playback control.\n */\n mediaElementRef?: React.RefObject<HTMLVideoElement | HTMLAudioElement | null>;\n}\n\n// ============================================================================\n// Variants\n// ============================================================================\n\nconst mediaPlayerVariants = cva(\n 'flex h-full w-full items-center justify-center',\n {\n variants: {\n variant: {\n plain: '',\n card: 'rounded-xl border border-border bg-card text-card-foreground p-2',\n },\n },\n defaultVariants: {\n variant: 'plain',\n },\n }\n);\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst VIDEO_EXTENSIONS = /\\.(mp4|mov|avi|webm|mkv|m4v)$/i;\n\n/** Infer media kind from a URL's file extension; defaults to audio. */\nexport function inferMediaKind(src: string): MediaKind {\n // Strip any query string / fragment before matching. Testing the extension\n // against the full URL required a trailing `.*`, which backtracks\n // polynomially on crafted inputs (ReDoS); splitting first is linear.\n const path = src.split(/[?#]/, 1)[0];\n return VIDEO_EXTENSIONS.test(path) ? 'video' : 'audio';\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Media playback surface for audio and video with a shared imperative handle.\n *\n * Renders a native `<video>` or `<audio>` element (kind inferred from the src\n * extension unless forced) with themed error/retry handling. Playback state and\n * controls come from the shared {@link useMediaTransport} hook and are exposed\n * through {@link MediaPlayerRef} (all times in milliseconds) — consumers should\n * not reach into the DOM element directly.\n */\nexport const MediaPlayer = React.forwardRef<MediaPlayerRef, MediaPlayerProps>(\n (\n {\n src,\n kind,\n controls = true,\n controlsStyle = 'native',\n muted,\n loop,\n poster,\n preload,\n children,\n playbackRates,\n labels,\n variant,\n onStateChange,\n onEnded,\n onError,\n onRetry,\n onTimeUpdate,\n className,\n 'aria-label': ariaLabel,\n mediaElementRef,\n },\n ref\n ) => {\n const [error, setError] = React.useState<string | null>(null);\n\n // A failed load must not outlive its src: clearing on change lets a host\n // swap in a corrected URL without being trapped on the error surface\n // (which unmounts the media element, so the new src would never load).\n React.useEffect(() => {\n setError(null);\n }, [src]);\n const resolvedKind = kind ?? inferMediaKind(src);\n\n const transport = useMediaTransport({\n onTimeUpdate,\n onStateChange,\n onEnded,\n onError: (err) => {\n setError(\n labels?.error ??\n 'Unable to load media. The server may be unavailable.'\n );\n onError?.(err);\n },\n endedState: 'paused',\n errorLabel: `media: ${src}`,\n });\n\n const { setMediaElement, mediaElement } = transport;\n\n const setElement = React.useCallback(\n (el: HTMLVideoElement | HTMLAudioElement | null) => {\n setMediaElement(el);\n if (mediaElementRef) {\n (mediaElementRef as React.MutableRefObject<typeof el>).current = el;\n }\n },\n [setMediaElement, mediaElementRef]\n );\n\n React.useImperativeHandle(\n ref,\n (): MediaPlayerRef => ({\n seekToMs: transport.seekToMs,\n play: transport.play,\n pause: transport.pause,\n getCurrentTimeMs: transport.getCurrentTimeMs,\n getDurationMs: transport.getDurationMs,\n isPaused: transport.isPaused,\n setPlaybackRate: transport.setPlaybackRate,\n get mediaElement() {\n return mediaElement;\n },\n }),\n [transport, mediaElement]\n );\n\n const handleRetry = React.useCallback(() => {\n setError(null);\n mediaElement?.load();\n onRetry?.();\n }, [mediaElement, onRetry]);\n\n const overlay = controlsStyle === 'overlay' && resolvedKind === 'video';\n const boxRef = React.useRef<HTMLDivElement>(null);\n const sharedMediaProps = {\n src,\n controls: controls && !overlay,\n muted,\n loop,\n preload,\n 'aria-label': ariaLabel,\n };\n\n // Tracks belong to the caller's media resource and can be supplied as\n // children. The feed also supports a custom renderer for captions.\n const video = (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n ref={setElement as React.Ref<HTMLVideoElement>}\n playsInline\n poster={poster}\n className={\n overlay\n ? 'h-full w-full object-contain'\n : 'h-auto max-h-full w-auto max-w-full object-contain'\n }\n {...sharedMediaProps}\n >\n {children}\n </video>\n );\n\n if (error) {\n return (\n <div className={mediaPlayerVariants({ variant, className })}>\n <div\n role=\"alert\"\n className=\"border-destructive/30 bg-destructive/10 flex min-h-36 flex-col items-center justify-center gap-3 rounded-lg border p-8 text-center\"\n >\n {/* destructive-700/300 instead of the base token: #dc2626 on the\n destructive/10 tint is 4.14:1 — below WCAG AA (axe: color-contrast). */}\n <p className=\"text-destructive-700 dark:text-destructive-300 m-0 text-sm\">\n {error}\n </p>\n {/* bg-background: the outline button is transparent, and its text on\n the destructive/10 tint sits exactly at the 4.5:1 AA boundary. */}\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"bg-background\"\n onClick={handleRetry}\n >\n {labels?.retry ?? 'Retry'}\n </Button>\n </div>\n </div>\n );\n }\n\n return (\n <div className={mediaPlayerVariants({ variant, className })}>\n {resolvedKind === 'video' ? (\n // The controls cover the player's box, so the video fills it at its\n // own shape and the bar spans the box. The box is a dark surface in\n // every theme (black letterboxing, as on VideoCard), so library\n // controls inside it take their dark-theme colours. With the\n // browser's controls the box is `contents`, leaving the video laid\n // out as before; it stays in the tree either way, so changing\n // `controlsStyle` keeps the same video, its time and playback.\n <div\n ref={boxRef}\n data-slot={overlay ? 'media-player-box' : undefined}\n data-theme={overlay ? 'dark' : undefined}\n className={overlay ? 'relative h-full w-full bg-black' : 'contents'}\n >\n {video}\n {overlay && controls && (\n <MediaControls\n transport={transport}\n fullscreenTarget={boxRef}\n labels={labels}\n playbackRates={playbackRates}\n />\n )}\n </div>\n ) : (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <audio\n ref={setElement as React.Ref<HTMLAudioElement>}\n className=\"my-4 w-[90%] max-w-lg\"\n {...sharedMediaProps}\n >\n {children}\n </audio>\n )}\n </div>\n );\n }\n);\n\nMediaPlayer.displayName = 'MediaPlayer';\n\nexport { mediaPlayerVariants };\n"]}
|
|
@@ -89,6 +89,64 @@ var miewebUISafelist = [
|
|
|
89
89
|
// MediaFeed vertical snapping, bounded captions, fullscreen viewport and
|
|
90
90
|
// SuperChat attachment previews for consumers that do not scan package code.
|
|
91
91
|
"h-[min(48rem,80dvh)]",
|
|
92
|
+
// MediaPlayer overlay controls and MediaFeed's overlay layout: scrims,
|
|
93
|
+
// round overlay buttons, pointer-aware sizes and the narrow-player
|
|
94
|
+
// container query and pointer variants (these need Tailwind 4.1).
|
|
95
|
+
"@container",
|
|
96
|
+
"w-fit",
|
|
97
|
+
// Previous/Next at the top end on a short screen (a phone held sideways).
|
|
98
|
+
"[@media(max-height:30rem)]:top-2",
|
|
99
|
+
"[@media(max-height:30rem)]:translate-y-0",
|
|
100
|
+
"via-black/30",
|
|
101
|
+
"pb-3",
|
|
102
|
+
"max-w-xl",
|
|
103
|
+
"px-14",
|
|
104
|
+
"dark:bg-white/30",
|
|
105
|
+
"@max-md:basis-full",
|
|
106
|
+
"@max-md:me-auto",
|
|
107
|
+
"@max-md:mx-2",
|
|
108
|
+
"@max-md:order-first",
|
|
109
|
+
"@max-xs:hidden",
|
|
110
|
+
"@max-xs:pt-2",
|
|
111
|
+
"[text-shadow:0_1px_2px_rgb(0_0_0/0.6)]",
|
|
112
|
+
"active:bg-black/75",
|
|
113
|
+
"backdrop-blur-sm",
|
|
114
|
+
"bg-black",
|
|
115
|
+
"bg-black/45",
|
|
116
|
+
"bg-gradient-to-b",
|
|
117
|
+
"dark:active:bg-black/75",
|
|
118
|
+
"dark:hover:bg-black/65",
|
|
119
|
+
"fill-current",
|
|
120
|
+
"focus-visible:-outline-offset-2",
|
|
121
|
+
"focus-visible:outline-2",
|
|
122
|
+
"focus-visible:outline-white/70",
|
|
123
|
+
"focus-visible:ring-offset-0",
|
|
124
|
+
"focus-visible:ring-white",
|
|
125
|
+
"from-black/75",
|
|
126
|
+
"from-black/55",
|
|
127
|
+
"via-black/55",
|
|
128
|
+
"gap-x-1",
|
|
129
|
+
"hover:bg-black/65",
|
|
130
|
+
"leading-5",
|
|
131
|
+
"mx-1",
|
|
132
|
+
"pb-10",
|
|
133
|
+
"pointer-coarse:[&_[data-slot=slider-track-wrapper]]:py-4",
|
|
134
|
+
"pointer-events-auto",
|
|
135
|
+
"pointer-fine:h-14",
|
|
136
|
+
"pointer-fine:h-9",
|
|
137
|
+
"pointer-fine:w-14",
|
|
138
|
+
"pointer-fine:w-9",
|
|
139
|
+
"sm:px-2",
|
|
140
|
+
"snap-always",
|
|
141
|
+
"via-black/40",
|
|
142
|
+
"[&_[data-slot=media-controls-bar]]:bg-none",
|
|
143
|
+
"[&_[data-slot=media-controls-bar]]:bg-black/55",
|
|
144
|
+
"pt-16",
|
|
145
|
+
"ring-white/70",
|
|
146
|
+
"self-stretch",
|
|
147
|
+
// MediaPlayer's box with the browser's controls: the video lays out as
|
|
148
|
+
// if it weren't there.
|
|
149
|
+
"contents",
|
|
92
150
|
"h-dvh",
|
|
93
151
|
"sm:h-[calc(100dvh-2rem)]",
|
|
94
152
|
"max-h-[40%]",
|
|
@@ -1923,5 +1981,5 @@ var tailwind_preset_default = miewebUIPreset;
|
|
|
1923
1981
|
exports.miewebUIPreset = miewebUIPreset;
|
|
1924
1982
|
exports.miewebUISafelist = miewebUISafelist;
|
|
1925
1983
|
exports.tailwind_preset_default = tailwind_preset_default;
|
|
1926
|
-
//# sourceMappingURL=chunk-
|
|
1927
|
-
//# sourceMappingURL=chunk-
|
|
1984
|
+
//# sourceMappingURL=chunk-XX6PNPF2.cjs.map
|
|
1985
|
+
//# sourceMappingURL=chunk-XX6PNPF2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tailwind-preset.ts"],"names":[],"mappings":";;;AAwCO,IAAM,gBAAA,GAAmB;AAAA;AAAA,EAE9B,MAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,gDAAA;AAAA,EACA,8CAAA;AAAA,EACA,wCAAA;AAAA,EACA,oBAAA;AAAA,EACA,4BAAA;AAAA,EACA,oCAAA;AAAA,EACA,QAAA;AAAA,EACA,mBAAA;AAAA,EACA,qDAAA;AAAA,EACA,+CAAA;AAAA,EACA,2CAAA;AAAA,EACA,kCAAA;AAAA,EACA,wCAAA;AAAA,EACA,mCAAA;AAAA,EACA,6BAAA;AAAA,EACA,wBAAA;AAAA,EACA,iCAAA;AAAA,EACA,uBAAA;AAAA,EACA,+BAAA;AAAA,EACA,iCAAA;AAAA,EACA,gDAAA;AAAA,EACA,4CAAA;AAAA,EACA,4CAAA;AAAA,EACA,6CAAA;AAAA,EACA,yCAAA;AAAA,EACA,iDAAA;AAAA,EACA,kEAAA;AAAA,EACA,sDAAA;AAAA,EACA,sDAAA;AAAA,EACA,yDAAA;AAAA,EACA,mDAAA;AAAA,EACA,iDAAA;AAAA,EACA,8CAAA;AAAA,EACA,iDAAA;AAAA,EACA,mCAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,8BAAA;AAAA,EACA,6BAAA;AAAA,EACA,qCAAA;AAAA,EACA,yBAAA;AAAA,EACA,2BAAA;AAAA,EACA,8BAAA;AAAA,EACA,oCAAA;AAAA,EACA,wCAAA;AAAA,EACA,4BAAA;AAAA,EACA,4BAAA;AAAA,EACA,2BAAA;AAAA,EACA,4BAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,4DAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,kBAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA;AAAA;AAAA,EAGA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA;AAAA;AAAA,EAGA,sBAAA;AAAA;AAAA;AAAA;AAAA,EAIA,YAAA;AAAA,EACA,OAAA;AAAA;AAAA,EAEA,kCAAA;AAAA,EACA,0CAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,wCAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,kBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,cAAA;AAAA,EACA,iCAAA;AAAA,EACA,yBAAA;AAAA,EACA,gCAAA;AAAA,EACA,6BAAA;AAAA,EACA,0BAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,mBAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,0DAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,4CAAA;AAAA,EACA,gDAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA;AAAA;AAAA,EAGA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,0BAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,0BAAA;AAAA,EACA,4BAAA;AAAA,EACA,sBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,SAAA;AAAA,EACA,oBAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,gDAAA;AAAA,EACA,6CAAA;AAAA,EACA,4CAAA;AAAA;AAAA,EAEA,kCAAA;AAAA,EACA,oCAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,wBAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,4BAAA;AAAA,EACA,+BAAA;AAAA,EACA,kCAAA;AAAA,EACA,oCAAA;AAAA,EACA,MAAA;AAAA;AAAA;AAAA,EAGA,sGAAA;AAAA,EACA,uBAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA,2BAAA;AAAA,EACA,wBAAA;AAAA,EACA,6BAAA;AAAA,EACA,kCAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,2BAAA;AAAA,EACA,iBAAA;AAAA,EACA,YAAA;AAAA,EACA,qBAAA;AAAA,EACA,aAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,qBAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA;AAAA;AAAA,EAGA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA;AAAA;AAAA,EAGA,oEAAA;AAAA,EACA,0DAAA;AAAA,EACA,2EAAA;AAAA,EACA,iEAAA;AAAA;AAAA;AAAA,EAGA,qFAAA;AAAA,EACA,wFAAA;AAAA,EACA,UAAA;AAAA,EACA,kBAAA;AAAA,EACA,yCAAA;AAAA,EACA,+CAAA;AAAA;AAAA;AAAA,EAGA,yCAAA;AAAA;AAAA;AAAA;AAAA,EAIA,yBAAA;AAAA,EACA,eAAA;AAAA,EACA,qCAAA;AAAA,EACA,qCAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,8BAAA;AAAA,EACA,gCAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,mCAAA;AAAA,EACA,4CAAA;AAAA,EACA,oCAAA;AAAA,EACA,oCAAA;AAAA,EACA,oCAAA;AAAA,EACA,2CAAA;AAAA,EACA,8CAAA;AAAA,EACA,0CAAA;AAAA,EACA,qDAAA;AAAA,EACA,uDAAA;AAAA,EACA,sFAAA;AAAA,EACA,uCAAA;AAAA,EACA,8CAAA;AAAA,EACA,kCAAA;AAAA,EACA,+BAAA;AAAA,EACA,kCAAA;AAAA,EACA,2BAAA;AAAA,EACA,mCAAA;AAAA;AAAA;AAAA,EAGA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,qBAAA;AAAA,EACA,wBAAA;AAAA;AAAA;AAAA;AAAA,EAIA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA;AAAA,EAEA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,qBAAA;AAAA,EACA,4BAAA;AAAA,EACA,iCAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,SAAA;AAAA;AAAA,EAEA,WAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,wBAAA;AAAA,EACA,eAAA;AAAA,EACA,2BAAA;AAAA,EACA,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA,uBAAA;AAAA,EACA,cAAA;AAAA,EACA,yBAAA;AAAA,EACA,cAAA;AAAA,EACA,yBAAA;AAAA,EACA,cAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,6BAAA;AAAA,EACA,WAAA;AAAA,EACA,sBAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,0BAAA;AAAA,EACA,wBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,gBAAA;AAAA,EACA,uBAAA;AAAA,EACA,2BAAA;AAAA,EACA,WAAA;AAAA;AAAA,EAEA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,wBAAA;AAAA,EACA,2DAAA;AAAA,EACA,4DAAA;AAAA,EACA,yBAAA;AAAA,EACA,mBAAA;AAAA,EACA,gDAAA;AAAA,EACA,oDAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,+BAAA;AAAA,EACA,sBAAA;AAAA,EACA,wBAAA;AAAA,EACA,sBAAA;AAAA,EACA,4BAAA;AAAA,EACA,yBAAA;AAAA,EACA,qBAAA;AAAA,EACA,oBAAA;AAAA,EACA,wBAAA;AAAA,EACA,kCAAA;AAAA,EACA,wBAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,kCAAA;AAAA,EACA,0BAAA;AAAA,EACA,iCAAA;AAAA,EACA,wCAAA;AAAA,EACA,gCAAA;AAAA,EACA,iCAAA;AAAA,EACA,yBAAA;AAAA,EACA,uCAAA;AAAA,EACA,+BAAA;AAAA,EACA,8CAAA;AAAA,EACA,sCAAA;AAAA,EACA,uCAAA;AAAA,EACA,+BAAA;AAAA,EACA,wCAAA;AAAA,EACA,gCAAA;AAAA,EACA,+CAAA;AAAA,EACA,uCAAA;AAAA;AAAA,EAEA,oBAAA;AAAA;AAAA,EAEA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,gBAAA;AAAA,EACA,4BAAA;AAAA,EACA,4BAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,yBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,wBAAA;AAAA,EACA,kCAAA;AAAA,EACA,2BAAA;AAAA,EACA,uBAAA;AAAA,EACA,0BAAA;AAAA,EACA,0BAAA;AAAA,EACA,0BAAA;AAAA,EACA,0BAAA;AAAA,EACA,0BAAA;AAAA,EACA,iBAAA;AAAA,EACA,4BAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA;AAAA,EAEA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA;AAAA;AAAA,EAGA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,2BAAA;AAAA,EACA,kBAAA;AAAA,EACA,sBAAA;AAAA;AAAA,EAEA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA;AAAA,EAEA,kBAAA;AAAA,EACA,uBAAA;AAAA,EACA,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,uBAAA;AAAA,EACA,4BAAA;AAAA;AAAA,EAEA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,0BAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,2BAAA;AAAA,EACA,2BAAA;AAAA;AAAA,EAEA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA;AAAA,EAEA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA;AAAA,EAEA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA;AAAA,EAEA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA;AAAA,EAEA,gBAAA;AAAA;AAAA,EAEA,kBAAA;AAAA,EACA,uBAAA;AAAA;AAAA,EAEA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA;AAAA;AAAA,EAGA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,oCAAA;AAAA,EACA,oCAAA;AAAA,EACA,oCAAA;AAAA,EACA,sBAAA;AAAA,EACA,yCAAA;AAAA,EACA,yCAAA;AAAA,EACA,yCAAA;AAAA;AAAA;AAAA,EAGA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA;AAAA,EAEA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,sBAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,+BAAA;AAAA;AAAA;AAAA,EAGA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,qBAAA;AAAA;AAAA;AAAA,EAGA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,sBAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA;AAAA;AAAA,EAGA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA;AAAA;AAAA,EAGA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA;AAAA,EAEA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA;AAAA,EAEA,sBAAA;AAAA;AAAA,EAEA,wBAAA;AAAA,EACA,2BAAA;AAAA;AAAA;AAAA,EAGA,qBAAA;AAAA,EACA,6BAAA;AAAA,EACA,iBAAA;AAAA,EACA,yBAAA;AAAA,EACA,oBAAA;AAAA;AAAA;AAAA,EAGA,iBAAA;AAAA;AAAA,EAEA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA;AAAA,EAEA,kBAAA;AAAA;AAAA,EAEA,qBAAA;AAAA,EACA,oBAAA;AAAA;AAAA,EAEA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,oBAAA;AAAA,EACA,sBAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,SAAA;AAAA;AAAA,EAEA,iBAAA;AAAA,EACA,iBAAA;AAAA;AAAA,EAEA,eAAA;AAAA;AAAA,EAEA,UAAA;AAAA;AAAA,EAEA,kBAAA;AAAA,EACA,uBAAA;AAAA,EACA,oBAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,wBAAA;AAAA,EACA,kBAAA;AAAA,EACA,uBAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,wBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,QAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA;AAAA,EAEA,kBAAA;AAAA;AAAA,EAEA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,yBAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA,EACA,YAAA;AAAA,EACA,uBAAA;AAAA;AAAA,EAEA,WAAA;AAAA,EACA,0BAAA;AAAA,EACA,sBAAA;AAAA,EACA,2BAAA;AAAA;AAAA,EAEA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,wBAAA;AAAA,EACA,kBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,0BAAA;AAAA,EACA,0BAAA;AAAA,EACA,wBAAA;AAAA,EACA,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,sCAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,oBAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA;AAAA,EAEA,qCAAA;AAAA;AAAA;AAAA,EAGA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,qBAAA;AAAA,EACA,wBAAA;AAAA,EACA,gCAAA;AAAA,EACA,2BAAA;AAAA,EACA,6BAAA;AAAA;AAAA;AAAA,EAGA,gBAAA;AAAA,EACA,oBAAA;AAAA;AAAA,EAEA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,iCAAA;AAAA,EACA,iBAAA;AAAA,EACA,yBAAA;AAAA,EACA,6BAAA;AAAA;AAAA,EAEA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,qBAAA;AAAA,EACA,+BAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,uBAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,6BAAA;AAAA,EACA,sBAAA;AAAA;AAAA,EAEA,aAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,uBAAA;AAAA,EACA,qBAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,uBAAA;AAAA,EACA,eAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AAAA,EACA,uBAAA;AAAA,EACA,YAAA;AAAA;AAAA,EAEA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA;AAAA,EAEA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,6BAAA;AAAA,EACA,6BAAA;AAAA;AAAA;AAAA,EAGA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,8BAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA;AAAA,EAEA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA,EACA,iBAAA;AAAA;AAAA,EAEA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA;AAAA,EACA,uBAAA;AAAA;AAAA,EAEA,iCAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,qBAAA;AAAA,EACA,8BAAA;AAAA,EACA,UAAA;AAAA,EACA,oBAAA;AAAA,EACA,4BAAA;AAAA,EACA,0BAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,sBAAA;AAAA;AAAA,EAEA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,6BAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,0BAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA;AAAA,EAGA,aAAA;AAAA,EACA,wBAAA;AAAA,EACA,6BAAA;AAAA,EACA,MAAA;AAAA,EACA,mBAAA;AAAA,EACA,2BAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,oBAAA;AAAA,EACA,QAAA;AAAA,EACA,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA,UAAA;AAAA,EACA,qBAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA;AAAA,EAEA,KAAA;AAAA;AAAA,EAGA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA;AAAA,EAGA,YAAA;AAAA,EACA,8BAAA;AAAA;AAAA,EAGA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,wBAAA;AAAA,EACA,+BAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,mBAAA;AAAA;AAAA;AAAA,EAGA,sBAAA;AAAA,EACA,sBAAA;AAAA;AAAA;AAAA,EAGA,wBAAA;AAAA;AAAA;AAAA,EAGA,2BAAA;AAAA,EACA,4BAAA;AAAA,EACA,8BAAA;AAAA;AAAA,EAEA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA;AAAA,EACA,yBAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA,EAGA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,wBAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,iCAAA;AAAA,EACA,2BAAA;AAAA,EACA,kCAAA;AAAA,EACA,eAAA;AAAA,EACA,2BAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,mBAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,uBAAA;AAAA,EACA,gBAAA;AAAA,EACA,qBAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,8BAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA;AAAA;AAAA,EAGA,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,wBAAA;AAAA,EACA,iCAAA;AAAA;AAAA,EAEA,+BAAA;AAAA,EACA,iCAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,qBAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,iCAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,2BAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,0BAAA;AAAA,EACA,yCAAA;AAAA,EACA,uCAAA;AAAA,EACA,yCAAA;AAAA,EACA,uCAAA;AAAA,EACA,gDAAA;AAAA,EACA,yCAAA;AAAA,EACA,yCAAA;AAAA,EACA,+CAAA;AAAA,EACA,uBAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA,EACA,qBAAA;AAAA,EACA,8BAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,6BAAA;AAAA;AAAA;AAAA,EAGA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,0BAAA;AAAA,EACA,eAAA;AAAA,EACA,2BAAA;AAAA,EACA,sBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,8CAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA;AAAA;AAAA,EAGA,qCAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,mBAAA;AAAA,EACA,uBAAA;AAAA;AAAA;AAAA,EAGA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA;AAAA,EAEA,sBAAA;AAAA;AAAA,EAEA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,mJAAA;AAAA,EACA,uBAAA;AAAA,EACA,iCAAA;AAAA,EACA,iCAAA;AAAA,EACA,gCAAA;AAAA,EACA,iDAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,yBAAA;AAAA,EACA,sBAAA;AAAA,EACA,0BAAA;AAAA,EACA,oBAAA;AAAA,EACA,4BAAA;AAAA,EACA,8BAAA;AAAA,EACA,wBAAA;AAAA,EACA,mCAAA;AAAA,EACA,iCAAA;AAAA;AAAA,EAEA,8FAAA;AAAA,EACA,sFAAA;AAAA,EACA,8KAAA;AAAA,EACA,oFAAA;AAAA,EACA,aAAA;AAAA,EACA,yBAAA;AAAA,EACA,uBAAA;AAAA,EACA,iCAAA;AAAA,EACA,qDAAA;AAAA;AAAA,EAEA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,oCAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA,EACA,iBAAA;AAAA,EACA,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,yBAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA,EACA,cAAA;AAAA,EACA,0MAAA;AAAA,EACA,6HAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,yCAAA;AAAA,EACA,aAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA;AAAA,EAEA,8GAAA;AAAA,EACA,4GAAA;AAAA,EACA,0BAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA;AAAA,EAEA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,uBAAA;AAAA,EACA,2DAAA;AAAA,EACA,iDAAA;AAAA,EACA,wDAAA;AAAA,EACA,wNAAA;AAAA,EACA,uOAAA;AAAA,EACA,8NAAA;AAAA,EACA,yBAAA;AAAA;AAAA,EAEA,kDAAA;AAAA,EACA,aAAA;AAAA,EACA,mBAAA;AAAA;AAAA,EAEA,mCAAA;AAAA,EACA,+CAAA;AAAA,EACA,mBAAA;AAAA,EACA,wBAAA;AAAA,EACA,8CAAA;AAAA;AAAA,EAEA,mBAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,+BAAA;AAAA,EACA,iFAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,8BAAA;AAAA,EACA,mCAAA;AAAA;AAAA,EAEA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,4BAAA;AAAA;AAAA,EAEA,2DAAA;AAAA,EACA,iEAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,wBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,0BAAA;AAAA,EACA,0BAAA;AAAA,EACA,uBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA;AAAA,EAEA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,uBAAA;AAAA;AAAA,EAEA,oCAAA;AAAA,EACA,iFAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,mBAAA;AAAA,EACA,uBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,+BAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA;AAAA,EAEA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,0BAAA;AAAA,EACA,sBAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,sCAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,2BAAA;AAAA,EACA,oCAAA;AAAA,EACA,mEAAA;AAAA,EACA,+CAAA;AAAA,EACA,4BAAA;AAAA,EACA,0BAAA;AAAA,EACA,4BAAA;AAAA,EACA,sBAAA;AAAA,EACA,qCAAA;AAAA,EACA,6CAAA;AAAA,EACA,gCAAA;AAAA,EACA,kCAAA;AAAA,EACA,kCAAA;AAAA,EACA,0BAAA;AAAA,EACA,2BAAA;AAAA,EACA,kCAAA;AAAA,EACA,8BAAA;AAAA,EACA,gBAAA;AAAA,EACA,0BAAA;AAAA,EACA,yCAAA;AAAA,EACA,gBAAA;AAAA,EACA,+CAAA;AAAA,EACA,oCAAA;AAAA,EACA,0CAAA;AAAA,EACA,oCAAA;AAAA;AAAA,EAEA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,uBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,yBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,yBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,qCAAA;AAAA,EACA,SAAA;AAAA,EACA,6BAAA;AAAA,EACA,6BAAA;AAAA,EACA,0BAAA;AAAA,EACA,mCAAA;AAAA,EACA,iDAAA;AAAA,EACA,4DAAA;AAAA,EACA,iDAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,8CAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA;AAAA,EAEA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,yBAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,kCAAA;AAAA,EACA,2BAAA;AAAA,EACA,8BAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA;AAAA,EAEA,gBAAA;AAAA,EACA,kCAAA;AAAA;AAAA,EAEA,gBAAA;AAAA,EACA,kCAAA;AAAA,EACA,4BAAA;AAAA,EACA,mCAAA;AAAA,EACA,4BAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA;AAAA;AAAA,EAGA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA,EACA,2BAAA;AAAA,EACA,8BAAA;AAAA,EACA,qBAAA;AAAA,EACA;AACF;AAUO,IAAM,cAAA,GAAiC;AAAA,EAC5C,QAAA,EAAU,CAAC,OAAA,EAAS,qBAAqB,CAAA;AAAA,EACzC,QAAA,EAAU,gBAAA;AAAA,EACV,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ;AAAA;AAAA,QAEN,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,2DAAA;AAAA,UACT,EAAA,EAAI,mCAAA;AAAA,UACJ,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,UAAA,EAAY;AAAA,SACd;AAAA;AAAA,QAEA,MAAA,EAAQ;AAAA,UACN,OAAA,EAAS,+BAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,MAAA,EAAQ,iDAAA;AAAA;AAAA,QAER,SAAA,EAAW;AAAA,UACT,OAAA,EAAS,sCAAA;AAAA,UACT,EAAA,EAAI,qCAAA;AAAA,UACJ,GAAA,EAAK,sCAAA;AAAA,UACL,GAAA,EAAK,sCAAA;AAAA,UACL,GAAA,EAAK,sCAAA;AAAA,UACL,GAAA,EAAK,sCAAA;AAAA,UACL,GAAA,EAAK,sCAAA;AAAA,UACL,GAAA,EAAK,sCAAA;AAAA,UACL,GAAA,EAAK,sCAAA;AAAA,UACL,GAAA,EAAK,sCAAA;AAAA,UACL,GAAA,EAAK,sCAAA;AAAA,UACL,GAAA,EAAK,sCAAA;AAAA,UACL,UAAA,EAAY;AAAA,SACd;AAAA;AAAA,QAEA,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,oCAAA;AAAA,UACT,EAAA,EAAI,mCAAA;AAAA,UACJ,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA;AAAA,QAEA,MAAA,EAAQ,8CAAA;AAAA,QACR,KAAA,EAAO,6CAAA;AAAA,QACP,IAAA,EAAM,4CAAA;AAAA,QACN,UAAA,EAAY,0CAAA;AAAA,QACZ,UAAA,EAAY,+CAAA;AAAA;AAAA,QAEZ,IAAA,EAAM;AAAA,UACJ,OAAA,EAAS,oCAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,yCAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA;AAAA,QAEA,WAAA,EAAa;AAAA,UACX,OAAA,EACE,mEAAA;AAAA,UACF,EAAA,EAAI,uCAAA;AAAA,UACJ,GAAA,EAAK,wCAAA;AAAA,UACL,GAAA,EAAK,wCAAA;AAAA,UACL,GAAA,EAAK,wCAAA;AAAA,UACL,GAAA,EAAK,wCAAA;AAAA,UACL,GAAA,EAAK,wCAAA;AAAA,UACL,GAAA,EAAK,wCAAA;AAAA,UACL,GAAA,EAAK,wCAAA;AAAA,UACL,GAAA,EAAK,wCAAA;AAAA,UACL,GAAA,EAAK,wCAAA;AAAA,UACL,GAAA,EAAK,wCAAA;AAAA,UACL,UAAA,EAAY;AAAA,SACd;AAAA;AAAA,QAEA,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,oCAAA;AAAA,UACT,EAAA,EAAI,mCAAA;AAAA,UACJ,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,UAAA,EAAY;AAAA,SACd;AAAA;AAAA,QAEA,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,oCAAA;AAAA,UACT,EAAA,EAAI,mCAAA;AAAA,UACJ,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,GAAA,EAAK,oCAAA;AAAA,UACL,UAAA,EAAY;AAAA,SACd;AAAA;AAAA,QAEA,IAAA,EAAM;AAAA,UACJ,OAAA,EAAS,iCAAA;AAAA,UACT,EAAA,EAAI,gCAAA;AAAA,UACJ,GAAA,EAAK,iCAAA;AAAA,UACL,GAAA,EAAK,iCAAA;AAAA,UACL,GAAA,EAAK,iCAAA;AAAA,UACL,GAAA,EAAK,iCAAA;AAAA,UACL,GAAA,EAAK,iCAAA;AAAA,UACL,GAAA,EAAK,iCAAA;AAAA,UACL,GAAA,EAAK,iCAAA;AAAA,UACL,GAAA,EAAK,iCAAA;AAAA,UACL,GAAA,EAAK,iCAAA;AAAA,UACL,GAAA,EAAK,iCAAA;AAAA,UACL,UAAA,EAAY;AAAA,SACd;AAAA;AAAA,QAEA,KAAA,EAAO;AAAA,UACL,CAAA,EAAG,gCAAA;AAAA,UACH,CAAA,EAAG,gCAAA;AAAA,UACH,CAAA,EAAG,gCAAA;AAAA,UACH,CAAA,EAAG,gCAAA;AAAA,UACH,CAAA,EAAG;AAAA;AACL,OACF;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM;AAAA,UACJ,wCAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,MACA,YAAA,EAAc;AAAA,QACZ,KAAA,EAAO,gCAAA;AAAA,QACP,EAAA,EAAI,kCAAA;AAAA,QACJ,EAAA,EAAI,iCAAA;AAAA,QACJ,EAAA,EAAI,kCAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM;AAAA,OACR;AAAA,MACA,SAAA,EAAW;AAAA,QACT,SAAA,EAAW;AAAA,UACT,IAAA,EAAM,EAAE,OAAA,EAAS,GAAA,EAAI;AAAA,UACrB,MAAA,EAAQ,EAAE,OAAA,EAAS,GAAA;AAAI,SACzB;AAAA,QACA,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,EAAE,OAAA,EAAS,GAAA,EAAI;AAAA,UACrB,MAAA,EAAQ,EAAE,OAAA,EAAS,GAAA;AAAI,SACzB;AAAA,QACA,mBAAA,EAAqB;AAAA,UACnB,IAAA,EAAM,EAAE,SAAA,EAAW,qBAAA,EAAuB,SAAS,GAAA,EAAI;AAAA,UACvD,MAAA,EAAQ,EAAE,SAAA,EAAW,eAAA,EAAiB,SAAS,GAAA;AAAI,SACrD;AAAA,QACA,sBAAA,EAAwB;AAAA,UACtB,IAAA,EAAM,EAAE,SAAA,EAAW,oBAAA,EAAsB,SAAS,GAAA,EAAI;AAAA,UACtD,MAAA,EAAQ,EAAE,SAAA,EAAW,eAAA,EAAiB,SAAS,GAAA;AAAI,SACrD;AAAA,QACA,gBAAA,EAAkB;AAAA,UAChB,IAAA,EAAM,EAAE,SAAA,EAAW,kBAAA,EAAoB,SAAS,GAAA,EAAI;AAAA,UACpD,MAAA,EAAQ,EAAE,SAAA,EAAW,eAAA,EAAiB,SAAS,GAAA;AAAI,SACrD;AAAA,QACA,eAAA,EAAiB;AAAA,UACf,IAAA,EAAM,EAAE,SAAA,EAAW,mBAAA,EAAqB,SAAS,GAAA,EAAI;AAAA,UACrD,MAAA,EAAQ,EAAE,SAAA,EAAW,eAAA,EAAiB,SAAS,GAAA;AAAI,SACrD;AAAA,QACA,aAAA,EAAe;AAAA,UACb,IAAA,EAAM,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,UACvC,MAAA,EAAQ,EAAE,SAAA,EAAW,kBAAA;AAAmB,SAC1C;AAAA,QACA,iBAAA,EAAmB;AAAA,UACjB,IAAA,EAAM,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,UACtC,MAAA,EAAQ,EAAE,SAAA,EAAW,mBAAA;AAAoB,SAC3C;AAAA,QACA,OAAA,EAAS;AAAA,UACP,IAAA,EAAM,EAAE,kBAAA,EAAoB,QAAA,EAAS;AAAA,UACrC,MAAA,EAAQ,EAAE,kBAAA,EAAoB,SAAA;AAAU,SAC1C;AAAA,QACA,aAAA,EAAe;AAAA,UACb,IAAA,EAAM,EAAE,kBAAA,EAAoB,SAAA,EAAU;AAAA,UACtC,MAAA,EAAQ,EAAE,kBAAA,EAAoB,QAAA;AAAS,SACzC;AAAA,QACA,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,EAAE,SAAA,EAAW,aAAA,EAAe,SAAS,GAAA,EAAI;AAAA,UAC/C,MAAA,EAAQ,EAAE,SAAA,EAAW,UAAA,EAAY,SAAS,GAAA;AAAI,SAChD;AAAA,QACA,sBAAA,EAAwB;AAAA,UACtB,IAAA,EAAM;AAAA,YACJ,SAAA,EACE;AAAA,WACJ;AAAA,UACA,KAAA,EAAO;AAAA,YACL,SAAA,EACE;AAAA,WACJ;AAAA,UACA,MAAA,EAAQ;AAAA,YACN,SAAA,EACE;AAAA;AACJ;AACF,OACF;AAAA,MACA,SAAA,EAAW;AAAA,QACT,SAAA,EAAW,wBAAA;AAAA,QACX,UAAA,EAAY,wBAAA;AAAA,QACZ,mBAAA,EAAqB,kCAAA;AAAA,QACrB,sBAAA,EAAwB,qCAAA;AAAA,QACxB,gBAAA,EAAkB,+BAAA;AAAA,QAClB,eAAA,EAAiB,8BAAA;AAAA,QACjB,aAAA,EAAe,gCAAA;AAAA,QACf,iBAAA,EAAmB,oCAAA;AAAA,QACnB,OAAA,EAAS,4BAAA;AAAA,QACT,aAAA,EAAe,gCAAA;AAAA,QACf,UAAA,EAAY,yBAAA;AAAA,QACZ,sBAAA,EAAwB;AAAA,OAC1B;AAAA;AAAA,MAEA,SAAA,EAAW;AAAA,QACT,CAAA,EAAG,GAAA;AAAA,QACH,CAAA,EAAG;AAAA;AACL;AACF;AAEJ;AAEA,IAAO,uBAAA,GAAQ","file":"chunk-XX6PNPF2.cjs","sourcesContent":["/**\n * @mieweb/ui Tailwind CSS Preset\n *\n * This preset provides the default theme configuration for @mieweb/ui components.\n * Consumers can extend or override these values in their own tailwind.config.js\n *\n * Usage:\n * ```js\n * // tailwind.config.js\n * module.exports = {\n * presets: [require('@mieweb/ui/tailwind-preset')],\n * theme: {\n * extend: {\n * colors: {\n * primary: {\n * 500: '#your-brand-color',\n * },\n * },\n * },\n * },\n * };\n * ```\n */\n\n/**\n * Safelist of classes used by @mieweb/ui components.\n *\n * **Tailwind CSS 3**: These must be safelisted because Tailwind may not detect\n * them when components are imported from node_modules.\n *\n * **Tailwind CSS 4**: The safelist is NOT needed if you add the `@source`\n * directive to your CSS. Add this line to your main CSS file:\n *\n * @source \"../node_modules/@mieweb/ui/dist\";\n *\n * This tells Tailwind 4 to scan @mieweb/ui's dist folder for class names,\n * replacing the need for a manual safelist.\n *\n * @deprecated For Tailwind CSS 4 users — use the `@source` directive instead.\n */\nexport const miewebUISafelist = [\n // EncounterVisit: report layout, expanding narratives, and coordinated vitals.\n 'z-40',\n 'sm:inset-8',\n 'sm:rounded-lg',\n 'top-11',\n 'max-w-[50%]',\n '[&_[data-slot=clinical-list-heading]]:border-0',\n '[&_[data-slot=clinical-list-heading]]:hidden',\n '[&_[data-slot=clinical-list-row]]:px-0',\n '[&>span]:text-wrap',\n '[&>span]:whitespace-normal',\n '[&::-webkit-details-marker]:hidden',\n 'h-auto',\n 'whitespace-normal',\n '[&>[data-slot=card-content]>section]:bg-transparent',\n '[&>[data-slot=card-content]>section]:border-0',\n '[&>[data-slot=card-content]>section]:px-0',\n '[&>[data-slot=card-content]]:p-0',\n '[&>[data-slot=card-content]]:space-y-2',\n '[&_.border-dashed]:bg-transparent',\n '[&_.border-dashed]:border-0',\n '[&_.border-dashed]:p-0',\n '[&_.border-dashed]:rounded-none',\n '[&_.min-w-64]:min-w-0',\n '[&_.pointer-events-none]:px-0',\n '[&_.pointer-events-none]:py-1.5',\n '[&_[data-slot=assessment-problem]>ul]:border-0',\n '[&_[data-slot=assessment-problem]>ul]:ms-0',\n '[&_[data-slot=assessment-problem]>ul]:ps-4',\n '[&_[data-slot=assessment-problem]]:border-0',\n '[&_[data-slot=assessment-problem]]:px-0',\n '[&_[data-slot=assessment-problem]]:rounded-none',\n '[&_[data-slot=rich-text-editor-toolbar]>*:nth-child(n+7)]:hidden',\n '[&_[data-slot=rich-text-editor-toolbar]>button]:h-11',\n '[&_[data-slot=rich-text-editor-toolbar]>button]:w-11',\n '[&_[data-slot=rich-text-editor-toolbar]]:bg-transparent',\n '[&_[data-slot=rich-text-editor-toolbar]]:border-0',\n '[&_[data-slot=rich-text-editor-toolbar]]:hidden',\n '[&_[data-slot=rich-text-editor-toolbar]]:p-0',\n '[&_[data-slot=rich-text-editor-toolbar]]:static',\n '[&_[role=textbox]]:bg-transparent',\n '[&_[role=textbox]]:break-words',\n '[&_[role=textbox]]:cursor-text',\n '[&_[role=textbox]]:leading-7',\n '[&_[role=textbox]]:min-h-11',\n '[&_[role=textbox]]:overflow-visible',\n '[&_[role=textbox]]:px-0',\n '[&_[role=textbox]]:py-1.5',\n '[&_[role=textbox]]:text-base',\n '[&_[role=textbox]]:text-foreground',\n '[&_[role=textbox]]:whitespace-pre-wrap',\n '[&_[role=textbox]_li]:my-0',\n '[&_[role=textbox]_ol]:my-1',\n '[&_[role=textbox]_p]:my-0',\n '[&_[role=textbox]_ul]:my-1',\n '[&_button]:min-h-11',\n '[&_button]:min-w-11',\n '[&_input]:min-h-11',\n '[&_select]:min-h-11',\n 'break-all',\n 'col-span-2',\n 'focus-within:[&_[data-slot=rich-text-editor-toolbar]]:flex',\n 'font-sans',\n 'gap-x-3',\n 'gap-y-3',\n 'max-h-48',\n 'mb-4',\n 'mt-6',\n 'overflow-visible',\n 'pt-3',\n 'rounded-none',\n 'shadow-none',\n 'sm:col-span-1',\n 'sm:px-3',\n 'sm:w-auto',\n 'space-y-1',\n 'space-y-3',\n 'top-[2.125rem]',\n 'underline-offset-2',\n // RichTextEsheet document shell: party-header spacing, and the editor's\n // in-flow macro panel that clips its height animation below `md`.\n 'gap-x-1.5',\n 'space-y-0.5',\n 'md:overflow-visible',\n // MediaFeed vertical snapping, bounded captions, fullscreen viewport and\n // SuperChat attachment previews for consumers that do not scan package code.\n 'h-[min(48rem,80dvh)]',\n // MediaPlayer overlay controls and MediaFeed's overlay layout: scrims,\n // round overlay buttons, pointer-aware sizes and the narrow-player\n // container query and pointer variants (these need Tailwind 4.1).\n '@container',\n 'w-fit',\n // Previous/Next at the top end on a short screen (a phone held sideways).\n '[@media(max-height:30rem)]:top-2',\n '[@media(max-height:30rem)]:translate-y-0',\n 'via-black/30',\n 'pb-3',\n 'max-w-xl',\n 'px-14',\n 'dark:bg-white/30',\n '@max-md:basis-full',\n '@max-md:me-auto',\n '@max-md:mx-2',\n '@max-md:order-first',\n '@max-xs:hidden',\n '@max-xs:pt-2',\n '[text-shadow:0_1px_2px_rgb(0_0_0/0.6)]',\n 'active:bg-black/75',\n 'backdrop-blur-sm',\n 'bg-black',\n 'bg-black/45',\n 'bg-gradient-to-b',\n 'dark:active:bg-black/75',\n 'dark:hover:bg-black/65',\n 'fill-current',\n 'focus-visible:-outline-offset-2',\n 'focus-visible:outline-2',\n 'focus-visible:outline-white/70',\n 'focus-visible:ring-offset-0',\n 'focus-visible:ring-white',\n 'from-black/75',\n 'from-black/55',\n 'via-black/55',\n 'gap-x-1',\n 'hover:bg-black/65',\n 'leading-5',\n 'mx-1',\n 'pb-10',\n 'pointer-coarse:[&_[data-slot=slider-track-wrapper]]:py-4',\n 'pointer-events-auto',\n 'pointer-fine:h-14',\n 'pointer-fine:h-9',\n 'pointer-fine:w-14',\n 'pointer-fine:w-9',\n 'sm:px-2',\n 'snap-always',\n 'via-black/40',\n '[&_[data-slot=media-controls-bar]]:bg-none',\n '[&_[data-slot=media-controls-bar]]:bg-black/55',\n 'pt-16',\n 'ring-white/70',\n 'self-stretch',\n // MediaPlayer's box with the browser's controls: the video lays out as\n // if it weren't there.\n 'contents',\n 'h-dvh',\n 'sm:h-[calc(100dvh-2rem)]',\n 'max-h-[40%]',\n 'snap-y',\n 'snap-mandatory',\n 'snap-start',\n 'overscroll-contain',\n 'focus-visible:ring-inset',\n 'focus-visible:outline-none',\n 'focus-visible:ring-2',\n 'border-0',\n 'font-medium',\n 'gap-3',\n 'gap-4',\n 'items-start',\n 'mb-2',\n 'p-3',\n 'p-4',\n 'p-6',\n 'px-2',\n 'py-2',\n 'rounded-xl',\n 'shrink-0',\n 'sm:px-4',\n 'text-center',\n 'max-h-full',\n 'object-contain',\n 'rounded',\n 'underline-offset-4',\n 'max-h-72',\n 'max-w-full',\n 'mt-3',\n 'w-72',\n '[&_video]:h-full',\n '[&_video]:w-full',\n 'min-h-8',\n '[&_[data-slot=button-label]]:whitespace-normal',\n '[&>[data-slot=dropdown-item-label]]:min-w-0',\n '[&>[data-slot=dropdown-item-label]]:flex-1',\n // TranscriptPlayer: timeline grid, transcript/panel layout, overview window and playhead.\n 'grid-cols-[6.5rem_minmax(0,1fr)]',\n 'lg:grid-cols-[minmax(0,1fr)_18rem]',\n '-top-5',\n 'min-w-40',\n 'h-80',\n 'dark:bg-primary-950/40',\n 'ring-inset',\n 'ring-foreground',\n 'ring-foreground/70',\n 'aria-pressed:bg-primary-50',\n 'aria-pressed:text-primary-800',\n 'dark:aria-pressed:bg-primary-950',\n 'dark:aria-pressed:text-primary-200',\n 'mx-9',\n // EmailEditor: block frames, innermost-hover toolbar reveal, email-content\n // spacing in the canvas, and the stacked/side-by-side panel layout.\n '[[data-slot=email-editor-block]:hover:not(:has([data-slot=email-editor-block]:hover))>&]:opacity-100',\n 'outline-offset-[-2px]',\n 'outline',\n 'outline-2',\n 'hover:outline-1',\n 'hover:outline-dashed',\n 'hover:outline-primary-300',\n 'focus-within:outline-1',\n 'focus-within:outline-dashed',\n 'focus-within:outline-primary-300',\n '-top-3.5',\n 'min-h-[640px]',\n '[&_a]:pointer-events-none',\n '[&_a]:underline',\n '[&_p]:my-3',\n '[&_ol]:list-decimal',\n '[&_ol]:ps-6',\n '[&_ul]:list-disc',\n '[&_ul]:ps-6',\n 'w-24',\n 'lg:w-auto',\n 'lg:w-64',\n 'lg:w-80',\n 'lg:flex-row',\n 'lg:grid',\n 'lg:overflow-visible',\n 'lg:pb-0',\n 'lg:border-e',\n 'lg:border-s',\n 'lg:border-b-0',\n 'lg:border-t-0',\n // CaseManagementHeader — logical spacing, details grid, responsive\n // built-in actions (icon-only below md):\n '-ms-2',\n 'gap-x-10',\n 'hidden',\n 'max-w-[60%]',\n 'md:hidden',\n 'md:inline-flex',\n // Assessment nested order toolbars suppress the concern-row toolbar for\n // fine pointers while an order toolbar is active.\n 'pointer-fine:group-has-[[data-order-id]:hover]:pointer-events-none',\n 'pointer-fine:group-has-[[data-order-id]:hover]:opacity-0',\n 'pointer-fine:group-has-[[data-order-id]:focus-within]:pointer-events-none',\n 'pointer-fine:group-has-[[data-order-id]:focus-within]:opacity-0',\n // ConditionEditor coding rows switch from a stacked mobile layout to a\n // shared column grid at the small breakpoint.\n 'grid-cols-[minmax(8rem,1.1fr)_minmax(7rem,0.9fr)_minmax(10rem,1.5fr)_5.5rem_2.5rem]',\n 'sm:grid-cols-[minmax(8rem,1.1fr)_minmax(7rem,0.9fr)_minmax(10rem,1.5fr)_5.5rem_2.5rem]',\n 'sm:!grid',\n 'border-border/70',\n '[&_[data-slot=radio-group-items]]:gap-2',\n 'sm:[&_[data-slot=radio-group-legend]]:sr-only',\n // PatientHeader showCountBadges={false} — hides CountBadge roots in the\n // actions slot (ui#367):\n '[&_[data-slot=count-badge-root]]:hidden',\n // OzwellChat's compact widget shell and portaled menus. These arbitrary\n // utilities must remain available to Tailwind 3 consumers that do not scan\n // package source files.\n 'max-w-[min(160px,44vw)]',\n 'max-w-[190px]',\n 'max-w-[min(248px,calc(100vw-24px))]',\n 'max-w-[min(260px,calc(100vw-24px))]',\n 'rounded-[10px]',\n 'min-h-[30px]',\n 'animate-ozwell-message-flare',\n 'grid-cols-[22px_minmax(0,1fr)]',\n 'h-[22px]',\n 'w-[22px]',\n 'text-[11px]',\n 'leading-[1.35]',\n 'py-[7px]',\n '[&_[data-slot=\"ai-chat\"]]:min-h-0',\n '[&_[data-slot=\"ai-chat-messages\"]]:min-h-0',\n '[&_[data-slot=\"ai-tool-call\"]]:p-2',\n '[&_[data-slot=\"ai-tool-icon\"]]:h-7',\n '[&_[data-slot=\"ai-tool-icon\"]]:w-7',\n '[&_[data-slot=\"ai-tool-content\"]]:text-sm',\n '[&_[data-slot=\"ai-tool-parameters\"]]:text-xs',\n '[&_[data-slot=\"ai-tool-result\"]]:text-xs',\n '[&_[data-slot=\"ai-message-thinking\"]_button]:px-2.5',\n '[&_[data-slot=\"ai-message-thinking\"]_button]:py-[7px]',\n '[&_[data-slot=\"ai-message\"].flex-row-reverse_[data-slot=\"ai-message-avatar\"]]:hidden',\n '[&_[data-slot=toast-message]]:text-xs',\n '[&_[data-slot=toast-message]]:leading-[1.35]',\n '[&_[data-slot=toast]]:max-w-none',\n '[&_[data-slot=toast]]:min-w-0',\n '[&_[data-slot=toast]]:rounded-lg',\n '[&_[data-slot=toast]]:p-2',\n '[&_[data-slot=toast]]:shadow-none',\n // Media stack (MediaEditor / TranscriptView / MediaPlayer) — opacity-modifier\n // and state variants introduced with the media components (ui#323 finding):\n 'bg-muted/20',\n 'bg-primary-50',\n 'bg-primary-500/20',\n 'bg-primary-500/40',\n 'bg-success/15',\n 'bg-warning/20',\n 'bg-warning/40',\n 'border-primary-600',\n 'border-warning/50',\n 'dark:bg-primary-950',\n 'hover:bg-destructive/20',\n 'hover:bg-muted',\n 'hover:bg-muted/70',\n 'hover:bg-primary-500/15',\n 'hover:bg-primary-500/30',\n 'hover:bg-success/25',\n 'hover:text-destructive',\n // MediaEditor media-surface height cap: the small-screen `dvh` cap, and the\n // md variants that hand desktop back its original percentage cap. Purging\n // these uncaps the player on a phone, which is the bug the cap exists for.\n 'max-h-[55dvh]',\n 'md:max-h-[50%]',\n 'md:max-h-none',\n 'outline-destructive',\n 'outline-primary-500',\n 'outline-warning',\n 'text-primary-500',\n // Semantic colors\n 'border-border',\n 'border-input',\n 'ring-ring',\n 'bg-background',\n 'bg-card',\n 'bg-muted',\n 'bg-primary',\n 'bg-primary-800',\n 'dark:bg-primary-500',\n 'checked:border-primary-500',\n 'dark:checked:border-primary-800',\n 'bg-success',\n 'bg-warning',\n 'bg-destructive',\n 'bg-info',\n // Ozwell brand accent (Hey Ozwell voice components)\n 'bg-ozwell',\n 'hover:bg-ozwell',\n 'active:bg-ozwell',\n 'text-ozwell',\n 'text-ozwell-foreground',\n 'border-ozwell',\n 'focus-visible:ring-ozwell',\n 'text-foreground',\n 'text-card-foreground',\n 'text-muted-foreground',\n 'text-primary',\n 'text-primary-foreground',\n 'text-success',\n 'text-success-foreground',\n 'text-warning',\n 'text-warning-foreground',\n 'text-destructive',\n 'text-destructive-foreground',\n 'text-info',\n 'text-info-foreground',\n 'focus:ring-ring',\n 'focus:ring-primary',\n 'focus:border-transparent',\n 'focus:ring-destructive',\n 'border-primary',\n 'border-destructive',\n 'border-success',\n 'focus:ring-success/20',\n 'focus:ring-destructive/20',\n 'opacity-0',\n // Drag & drop (useDragReorder / dragIndicatorClasses)\n 'opacity-40',\n 'cursor-grab',\n 'active:cursor-grabbing',\n 'shadow-[inset_0_2px_0_0_var(--color-primary-500,#3b82f6)]',\n 'shadow-[inset_0_-2px_0_0_var(--color-primary-500,#3b82f6)]',\n 'group-hover:opacity-100',\n 'focus:opacity-100',\n 'has-[[data-slot=superchat-nitro-table]]:w-full',\n 'has-[[data-slot=superchat-nitro-table]]:max-w-full',\n // RowActionToolbar (per-row action toolbars) reveal/overlay. These use the\n // built-in `pointer-fine` variant, named `group/order` scope, and the\n // `.wcdv-tr` (datavis grid row) arbitrary variant — none of which TW3\n // consumers scan from node_modules, so the toolbar would stay hidden\n // without safelisting them.\n 'pointer-fine:absolute',\n 'pointer-fine:top-1/2',\n 'pointer-fine:right-0',\n 'pointer-fine:-translate-y-1/2',\n 'pointer-fine:top-1.5',\n 'pointer-fine:right-1.5',\n 'pointer-fine:bg-card',\n 'pointer-fine:border-border',\n 'pointer-fine:rounded-md',\n 'pointer-fine:border',\n 'pointer-fine:p-0.5',\n 'pointer-fine:shadow-sm',\n 'pointer-fine:pointer-events-none',\n 'pointer-fine:opacity-0',\n 'rounded-md',\n 'border',\n 'p-0.5',\n 'shadow-sm',\n 'focus-within:pointer-events-auto',\n 'focus-within:opacity-100',\n 'group-hover:pointer-events-auto',\n 'group-focus-within:pointer-events-auto',\n 'group-focus-within:opacity-100',\n 'group-focus:pointer-events-auto',\n 'group-focus:opacity-100',\n 'group-hover/order:pointer-events-auto',\n 'group-hover/order:opacity-100',\n 'group-focus-within/order:pointer-events-auto',\n 'group-focus-within/order:opacity-100',\n 'group-focus/order:pointer-events-auto',\n 'group-focus/order:opacity-100',\n '[.wcdv-tr:hover_&]:pointer-events-auto',\n '[.wcdv-tr:hover_&]:opacity-100',\n '[.wcdv-tr:focus-within_&]:pointer-events-auto',\n '[.wcdv-tr:focus-within_&]:opacity-100',\n // Markdown SurveyBlock\n 'accent-primary-500',\n // Opacity-modifier variants for semantic colors used by components\n 'bg-background/60',\n 'bg-background/80',\n 'bg-background/90',\n 'bg-background/95',\n 'bg-card/80',\n 'bg-destructive/5',\n 'bg-destructive/10',\n 'bg-foreground/50',\n 'bg-info/10',\n 'bg-muted/10',\n 'bg-muted/30',\n 'bg-muted/50',\n 'bg-primary/5',\n 'bg-primary/10',\n 'bg-success/10',\n 'bg-warning/10',\n 'border-border/80',\n 'border-destructive/20',\n 'border-destructive/30',\n 'border-destructive/50',\n 'border-info/30',\n 'border-muted-foreground/25',\n 'border-muted-foreground/40',\n 'border-primary/30',\n 'border-primary/50',\n 'border-success/30',\n 'border-success/50',\n 'border-warning/30',\n 'hover:bg-destructive/10',\n 'hover:bg-muted/10',\n 'hover:bg-muted/20',\n 'hover:bg-muted/50',\n 'hover:bg-muted/80',\n 'hover:bg-primary/5',\n 'hover:bg-primary/10',\n 'hover:bg-primary/20',\n 'hover:bg-primary/90',\n 'hover:border-border/80',\n 'hover:border-muted-foreground/50',\n 'hover:text-destructive/80',\n 'hover:text-primary/80',\n 'text-muted-foreground/30',\n 'text-muted-foreground/40',\n 'text-muted-foreground/50',\n 'text-muted-foreground/60',\n 'text-muted-foreground/70',\n 'text-primary/80',\n 'text-primary-foreground/90',\n 'ring-primary',\n 'ring-2',\n 'ring-offset-2',\n // Grid classes for QuickAction and responsive layouts\n 'grid-cols-1',\n 'grid-cols-2',\n 'grid-cols-3',\n 'grid-cols-4',\n 'grid-cols-6',\n 'sm:grid-cols-1',\n 'sm:grid-cols-2',\n 'sm:grid-cols-3',\n 'sm:grid-cols-4',\n 'sm:grid-cols-6',\n 'md:grid-cols-2',\n 'md:grid-cols-3',\n 'md:grid-cols-4',\n 'lg:grid-cols-2',\n 'lg:grid-cols-3',\n 'lg:grid-cols-4',\n // ── Expanded Color Scales ────────────────────────────────────────\n // Secondary scale\n 'bg-secondary',\n 'bg-secondary-50',\n 'bg-secondary-100',\n 'bg-secondary-500',\n 'bg-secondary-600',\n 'text-secondary',\n 'text-secondary-500',\n 'text-secondary-600',\n 'text-secondary-700',\n 'text-secondary-foreground',\n 'border-secondary',\n 'border-secondary-200',\n // Neutral scale\n 'bg-neutral-50',\n 'bg-neutral-100',\n 'bg-neutral-200',\n 'bg-neutral-300',\n 'bg-neutral-800',\n 'bg-neutral-900',\n 'text-neutral-500',\n 'text-neutral-600',\n 'text-neutral-700',\n 'text-neutral-400',\n 'border-neutral-200',\n 'border-neutral-300',\n 'dark:bg-neutral-700',\n 'dark:bg-neutral-800',\n 'dark:text-neutral-300',\n 'dark:text-neutral-400',\n 'dark:border-neutral-600',\n 'dark:border-neutral-700',\n // Indigo (StripeBadge)\n 'bg-indigo-500/10',\n 'dark:bg-indigo-400/20',\n 'text-indigo-700',\n 'dark:text-indigo-300',\n 'border-indigo-500/30',\n 'hover:text-indigo-700',\n 'dark:hover:text-indigo-300',\n // Destructive scale\n 'bg-destructive-50',\n 'bg-destructive-100',\n 'bg-destructive-500',\n 'bg-destructive-600',\n 'bg-destructive-700',\n 'hover:bg-destructive-800',\n 'text-destructive-500',\n 'text-destructive-600',\n 'text-destructive-700',\n 'text-destructive-800',\n 'text-destructive-900',\n 'border-destructive-200',\n 'border-destructive-300',\n 'dark:bg-destructive-900',\n 'dark:bg-destructive-950',\n 'dark:text-destructive-300',\n 'dark:text-destructive-400',\n // Success scale\n 'bg-success-50',\n 'bg-success-100',\n 'bg-success-500',\n 'bg-success-600',\n 'bg-success-700',\n 'hover:bg-success-800',\n 'text-success-500',\n 'text-success-600',\n 'text-success-700',\n 'text-success-800',\n 'text-success-900',\n 'border-success-200',\n 'border-success-300',\n 'dark:bg-success-900',\n 'dark:bg-success-950',\n 'dark:text-success-300',\n 'dark:text-success-400',\n // Warning scale\n 'bg-warning-50',\n 'bg-warning-100',\n 'bg-warning-500',\n 'bg-warning-600',\n 'bg-warning-700',\n 'text-warning-900',\n 'text-warning-500',\n 'text-warning-600',\n 'text-warning-700',\n 'text-warning-800',\n 'text-warning-900',\n 'border-warning-200',\n 'border-warning-300',\n 'dark:bg-warning-900',\n 'dark:bg-warning-950',\n 'dark:text-warning-200',\n 'dark:text-warning-300',\n 'dark:text-warning-400',\n // Info scale\n 'bg-info-50',\n 'bg-info-100',\n 'bg-info-500',\n 'bg-info-600',\n 'text-info-500',\n 'text-info-600',\n 'text-info-700',\n 'text-info-800',\n 'text-info-900',\n 'border-info-200',\n 'border-info-300',\n 'dark:bg-info-900',\n 'dark:bg-info-950',\n 'dark:text-info-300',\n 'dark:text-info-400',\n // Chart colors\n 'bg-chart-1',\n 'bg-chart-2',\n 'bg-chart-3',\n 'bg-chart-4',\n 'bg-chart-5',\n 'text-chart-1',\n 'text-chart-2',\n 'text-chart-3',\n 'text-chart-4',\n 'text-chart-5',\n 'border-chart-1',\n 'border-chart-2',\n 'border-chart-3',\n 'border-chart-4',\n 'border-chart-5',\n // Switch component\n 'bg-primary-500',\n // Primary scale (a11y contrast)\n 'text-primary-800',\n 'dark:text-primary-300',\n // Text decoration\n 'underline',\n 'h-5',\n 'w-9',\n 'h-6',\n 'w-11',\n 'h-7',\n 'w-14',\n 'h-4',\n 'w-4',\n 'w-5',\n 'w-6',\n 'translate-x-0.5',\n 'translate-x-4',\n 'translate-x-5',\n 'translate-x-7',\n // RTL primitives batch: Badge/Input/Label icon+required markers, Text\n // logical alignment, Switch thumb travel (LTR data-state pairs + rtl mirror)\n 'me-1',\n 'ms-0.5',\n 'ms-1',\n 'text-start',\n 'text-end',\n 'data-[state=checked]:translate-x-4',\n 'data-[state=checked]:translate-x-5',\n 'data-[state=checked]:translate-x-7',\n 'rtl:-translate-x-0.5',\n 'rtl:data-[state=checked]:-translate-x-4',\n 'rtl:data-[state=checked]:-translate-x-5',\n 'rtl:data-[state=checked]:-translate-x-7',\n // RTL layout+nav batch: AppHeader alignment, Card accent/badge positions,\n // Sheet sides, Sidebar off-canvas + paddings, Table cell alignment\n 'me-auto',\n 'ms-auto',\n '-end-1',\n 'start-0',\n 'end-0',\n 'ps-4',\n // Badge removable-chip paddings (ps/pe compound variants)\n 'ps-2.5',\n 'pe-0.5',\n 'pe-1',\n 'pe-1.5',\n 'start-2',\n 'end-2',\n 'border-e',\n 'border-s',\n 'me-3',\n 'ms-2',\n 'ps-2',\n '-me-2',\n '-end-3',\n 'start-3',\n 'pe-4',\n 'ps-10',\n 'rtl:translate-x-full',\n 'translate-x-0',\n '-translate-x-full',\n '[&:has([role=checkbox])]:pe-0',\n // RTL messaging+AI batch: bubble tails, composer borders/paddings, corner\n // pins (AIChatModal/AttachmentPicker/MessageList), read-receipt avatar stack\n 'end-1',\n 'end-3',\n 'end-4',\n 'start-4',\n 'me-2',\n 'pe-10',\n 'border-s-4',\n 'rounded-ee-md',\n 'rounded-es-md',\n 'rtl:space-x-reverse',\n // RTL DocScanner+media batch: detection-overlay corner pins, MediaEditor\n // speed-marker accent/pill, ScriptPanel border, transcript alignment\n '-end-0.5',\n '-start-0.5',\n '-start-1',\n 'end-0.5',\n 'rounded-ee',\n 'rounded-ee-lg',\n 'rounded-es',\n 'rounded-es-lg',\n 'rounded-se',\n 'rounded-se-lg',\n 'rounded-ss',\n 'rounded-ss-lg',\n 'border-e-4',\n 'border-s-[3px]',\n 'border-s-warning',\n 'border-s-primary-500',\n 'ps-1.5',\n '-start-px',\n 'md:border-e',\n // RTL billing+invoices batch: invoice tables/headers, search icon inset,\n // button spinners\n '-ms-1',\n 'ps-9',\n 'sm:text-end',\n // RTL services+employer batch: wizard steps, accordion insets, provider\n // selectors, service cards/badges\n 'border-s-0',\n 'border-s-2',\n 'ms-1.5',\n 'ms-3',\n 'ms-4',\n 'ms-6',\n 'pe-3',\n 'pe-8',\n 'pe-16',\n 'ps-0',\n 'ps-3',\n 'ps-7',\n 'ps-8',\n 'rounded-s-md',\n 'rounded-e-md',\n 'bg-right',\n 'rtl:bg-left',\n // RTL scheduling+clinical batch: calendar insets, timeline dots, order forms\n '-start-5',\n 'border-e-0',\n 'md:border-s',\n 'ms-2.5',\n 'pe-2',\n 'ps-1',\n 'ps-6',\n 'rounded-s-none',\n 'start-1',\n 'first:border-s-0',\n 'rtl:origin-right',\n // RTL Phase 2: MegaMenu panel transform origin mirror\n 'rtl:origin-top-right',\n // RTL Phase 2: Toast slide-in animation + RTL mirror\n 'animate-slide-in-right',\n 'rtl:animate-slide-in-left',\n // RTL Phase 2 transforms batch: LoadingPage bar/shimmer + RTL mirrors,\n // BookingDialog consent-switch thumb mirror\n 'animate-loading-bar',\n 'rtl:animate-loading-bar-rtl',\n 'animate-shimmer',\n 'rtl:animate-shimmer-rtl',\n 'rtl:-translate-x-5',\n // Motion CSS fallbacks — applied by `<Animated>` only when no motion runtime\n // is active, so the scanner never sees them on a literal element.\n 'animate-fade-in',\n // Scale origin for anchored menus, picked at runtime from the post-flip side.\n 'origin-top',\n 'origin-bottom',\n 'origin-left',\n 'origin-right',\n // RTL Phase 2: directional icon mirroring (chevrons/arrows)\n 'rtl:-scale-x-100',\n // RTL Phase 5: YearTimeline now-marker centering mirrors\n 'rtl:translate-x-1/2',\n 'rtl:translate-x-px',\n // RTL shell/misc batch: command palette, site chrome, superchat, toolbars\n 'end-12',\n 'md:end-4',\n 'md:start-auto',\n 'md:text-start',\n 'me-1.5',\n 'pe-12',\n 'pointer-fine:end-0',\n 'pointer-fine:end-1.5',\n 'ps-11',\n 'ps-12',\n 'rounded-e-lg',\n 'rounded-s-lg',\n 'sm:text-start',\n 'start-5',\n // SchedulePicker / overflow handling\n 'overflow-x-auto',\n 'overflow-hidden',\n // Scrollable floating panels (DateInput calendar, Autocomplete, Select, Table, ScrollArea, …)\n 'overflow-auto',\n // Select component\n 'truncate',\n // AIReconciliationPanel\n 'ring-primary-200',\n 'dark:ring-primary-900',\n 'border-primary-300',\n 'dark:border-primary-700',\n 'bg-primary-50/60',\n 'dark:bg-primary-950/30',\n 'text-primary-700',\n 'dark:text-primary-400',\n 'border-border/60',\n 'bg-muted/40',\n 'bg-muted/60',\n 'divide-border',\n 'max-h-[60vh]',\n 'bg-success-100',\n 'dark:bg-success-900/30',\n 'bg-amber-100',\n 'bg-amber-200',\n 'text-amber-700',\n 'text-amber-800',\n 'text-amber-200',\n 'text-amber-300',\n 'dark:bg-amber-900/30',\n 'dark:bg-amber-900/40',\n 'dark:text-amber-200',\n 'dark:text-amber-300',\n 'ring-1',\n 'last:border-b-0',\n 'border-dashed',\n 'text-[11px]',\n // CodeLookup memory picklist (frequently-used pick count)\n 'text-primary-600',\n // CodeLookup coding-system toggle (segmented radiogroup pills)\n 'flex',\n 'flex-wrap',\n 'items-center',\n 'gap-1',\n 'rounded-full',\n 'px-2.5',\n 'py-0.5',\n 'text-xs',\n 'transition-colors',\n 'focus:ring-2',\n 'focus:outline-none',\n 'border-primary-800',\n 'dark:border-primary-400',\n 'dark:bg-primary-400',\n 'dark:text-primary-950',\n 'text-white',\n 'hover:text-foreground',\n // CollabStatus debug panel (fixed-width portal, definition grid, log grid)\n 'w-[26rem]',\n 'max-w-[calc(100vw-1rem)]',\n 'grid-cols-[auto_1fr]',\n 'grid-cols-[auto_auto_1fr]',\n // SuperChat (participant chips, unread badge, active/hover states)\n 'bg-primary-100',\n 'bg-primary-600',\n 'hover:bg-primary-700',\n 'dark:bg-primary-900/40',\n 'text-primary-900',\n 'dark:text-primary-100',\n 'dark:text-primary-200',\n 'hover:border-primary-300',\n 'focus:border-primary-500',\n 'focus:ring-primary-500',\n 'text-[10px]',\n // SuperChat message actions (footer bar + sticky overflow menu) — arbitrary\n // touch-pointer variants and stacking above rich content (z-50 internals),\n // plus the standard utilities of the sticky wrapper and its footer handoff\n // (`invisible` keeps the hidden trigger out of the tab order).\n '[@media(pointer:coarse)]:opacity-100',\n 'z-[60]',\n 'z-10',\n 'invisible',\n 'transition-opacity',\n 'bottom-2',\n 'mt-auto',\n // Dropdown submenu flyout — preferred width clamped to the viewport.\n 'min-w-[min(10rem,calc(100vw-1rem))]',\n // SuperChat jump-to-bottom (floating scroll-anchoring affordance) and the\n // thread viewport wrapper / content sizer it positions against.\n 'bottom-3',\n 'z-20',\n 'bg-white',\n 'p-2',\n 'shadow-lg',\n 'space-y-4',\n 'hover:bg-neutral-50',\n 'hover:text-neutral-800',\n 'focus-visible:ring-primary-500',\n 'dark:hover:bg-neutral-700',\n 'dark:hover:text-neutral-100',\n // SuperChat mermaid diagram wrapper — arbitrary variants applied to the\n // injected <svg> so the diagram sizes naturally instead of collapsing.\n '[&_svg]:h-auto',\n '[&_svg]:max-w-none',\n // AI pills — CollapsiblePill / MCPToolCall arbitrary utilities\n 'rounded-[8px]',\n 'rounded-[10px]',\n 'px-[11px]',\n 'max-h-0',\n 'max-h-[500px]',\n 'transition-[max-height,opacity]',\n 'overflow-y-auto',\n 'focus-visible:ring-ring',\n 'focus-visible:ring-offset-1',\n // ThinkingBlock (violet reasoning pill)\n 'bg-violet-50',\n 'bg-violet-500',\n 'border-violet-200',\n 'text-violet-600',\n 'hover:bg-violet-100',\n 'focus-visible:ring-violet-500',\n 'animate-pulse',\n 'text-[13px]',\n 'dark:bg-violet-400',\n 'dark:bg-violet-950/30',\n 'dark:border-violet-700',\n 'dark:border-violet-800',\n 'dark:hover:bg-violet-950/50',\n 'dark:text-violet-400',\n // MCPToolCall status pills (green success / red error kept the same)\n 'bg-green-50',\n 'border-green-200',\n 'text-green-700',\n 'dark:bg-green-900/20',\n 'dark:border-green-800',\n 'dark:text-green-300',\n 'bg-red-50',\n 'border-red-200',\n 'text-red-700',\n 'dark:bg-red-900/20',\n 'dark:border-red-800',\n 'dark:text-red-300',\n 'bg-neutral-100',\n 'border-neutral-200',\n 'text-neutral-600',\n 'text-neutral-400',\n 'dark:bg-neutral-800',\n 'dark:border-neutral-700',\n 'dark:text-neutral-400',\n 'bg-primary-50',\n 'border-primary-200',\n 'text-primary-800',\n 'dark:bg-primary-900/20',\n 'dark:border-primary-800',\n 'dark:text-primary-300',\n 'opacity-60',\n // Kbd / KeyboardShortcutsOverlay — key chips and shortcut rows\n 'px-1.5',\n 'font-mono',\n 'mx-0.5',\n 'list-none',\n // FilterSummaryBar — filtered-grid summary bar and clear action\n 'py-1',\n 'h-2.5',\n 'w-2.5',\n 'dark:hover:text-primary-200',\n 'focus-visible:ring-offset-2',\n // Sparkline — bar sizing, gaps, and hover tints (bg-primary-500/40 and\n // focus-visible:ring-offset-1 are already safelisted above)\n 'min-w-[3px]',\n 'gap-[2px]',\n 'hover:bg-primary-500/70',\n 'hover:bg-primary-500/90',\n 'hover:bg-muted-foreground/20',\n 'items-end',\n 'w-16',\n 'pb-0.5',\n 'leading-tight',\n 'tracking-wider',\n 'rounded-sm',\n 'cursor-pointer',\n // ClampedText — collapsed clamp levels and fade gradient\n 'line-clamp-2',\n 'line-clamp-3',\n 'line-clamp-4',\n 'line-clamp-5',\n 'line-clamp-6',\n 'line-clamp-7',\n 'line-clamp-8',\n 'bg-gradient-to-t',\n 'from-card',\n 'from-background',\n 'to-transparent',\n 'break-words',\n 'whitespace-pre-wrap',\n 'hover:underline',\n // FreshnessBadge / FreshnessDot — tinted level chips and dots\n 'dark:bg-success/20',\n 'bg-warning/15',\n 'dark:bg-warning/20',\n 'dark:text-warning',\n 'dark:bg-destructive/20',\n 'bg-muted-foreground/50',\n 'h-2',\n 'w-2',\n 'inline-block',\n 'dark:text-success',\n 'dark:text-destructive',\n // Accordion — grid-rows height animation (arbitrary values TW3 won't scan)\n 'transition-[grid-template-rows]',\n 'grid-rows-[0fr]',\n 'grid-rows-[1fr]',\n 'disabled:opacity-50',\n 'disabled:pointer-events-none',\n 'divide-y',\n 'first:rounded-t-lg',\n 'focus-visible:outline-none',\n 'focus-visible:ring-inset',\n 'gap-3',\n 'grid',\n 'hover:bg-muted/60',\n 'last:rounded-b-lg',\n 'pb-4',\n 'px-5',\n 'py-4',\n 'rotate-180',\n 'transition-transform',\n // GlossaryTooltip hover card — trigger reset, gradient header, chips, footer links\n '[font:inherit]',\n 'appearance-none',\n 'bg-transparent',\n 'bg-white/15',\n 'block',\n 'border-0',\n 'border-t',\n 'dark:hover:text-primary-400',\n 'font-bold',\n 'font-medium',\n 'font-normal',\n 'gap-1.5',\n 'h-3',\n 'hover:border-primary-400',\n 'hover:text-primary-700',\n 'hover:text-primary-800',\n 'inline',\n 'inline-flex',\n 'items-start',\n 'leading-relaxed',\n 'leading-snug',\n 'mb-1',\n 'mt-2',\n 'normal-case',\n 'outline-none',\n 'p-0',\n 'px-2',\n 'text-inherit',\n 'text-white/70',\n 'tracking-normal',\n 'w-3',\n 'z-50',\n\n // SourceTip hover card — trigger affordance, gradient header, ring, scroll cap\n 'cursor-help',\n 'hover:text-primary-500',\n 'dark:hover:text-primary-300',\n 'w-80',\n 'decoration-dashed',\n 'decoration-primary-400/70',\n 'bg-primary-400',\n 'underline-offset-4',\n 'bg-gradient-to-br',\n 'from-primary-700',\n 'to-primary-600',\n 'ring-black/5',\n 'dark:ring-white/10',\n 'ring-1',\n 'overflow-y-auto',\n 'focus-visible:ring-2',\n 'max-h-52',\n 'text-primary-100/90',\n 'text-[10px]',\n 'text-[11px]',\n 'text-[13px]',\n 'px-3.5',\n 'py-2.5',\n 'mt-2.5',\n 'pt-2.5',\n 'mt-0.5',\n 'mt-1.5',\n 'h-1.5',\n 'w-1.5',\n 'border-dashed',\n 'shadow-xl',\n // CopyButton — inline copy-to-clipboard button\n 'p-1',\n\n // ReadingProgressBar — fixed top rail and width-transition fill\n 'inset-x-0',\n 'h-1',\n 'transition-[width]',\n 'duration-150',\n\n // Sidebar — mobile follows browser chrome; desktop animates inline size only\n 'h-[100dvh]',\n 'transition-[width,min-width]',\n\n // SectionSpyNav — sticky rail, brand tone whites, sliding underline\n 'sticky',\n 'top-0',\n 'z-30',\n 'bg-primary-900',\n 'bg-card/95',\n 'backdrop-blur',\n 'gap-4',\n 'px-4',\n 'shrink-0',\n 'tracking-wide',\n 'uppercase',\n 'text-white/85',\n '[scrollbar-width:none]',\n '[&::-webkit-scrollbar]:hidden',\n 'rounded',\n 'py-2',\n 'whitespace-nowrap',\n // Button label — keep SVG icons passed as children inline (preflight\n // makes SVGs block-level, which would stack them above the label text)\n '[&_svg]:inline-block',\n '[&_svg]:align-middle',\n // Button `effect` variants (sheen/orbit) lift the button on hover; the\n // mie-fx-* classes themselves are plain CSS in styles/effects.css.\n 'hover:-translate-y-0.5',\n // Button outline variant — dark-mode hover/active fill with lightened\n // label for WCAG AA contrast (issue #511).\n 'dark:hover:bg-primary-950',\n 'dark:active:bg-primary-900',\n 'dark:active:text-primary-100',\n // VideoCard hover-preview progress bar rounds its leading-fill edge.\n 'rounded-e-full',\n 'hover:text-white',\n 'h-0.5',\n 'transition-[left,width]',\n 'duration-300',\n 'hover:bg-white/10',\n 'h-3.5',\n 'w-3.5',\n // CustomizableDashboard — responsive column grid, flattened columns,\n // drag handle, drop placeholder\n 'grid-cols-1',\n 'md:grid-cols-2',\n 'lg:grid-cols-3',\n 'max-lg:contents',\n 'max-md:hidden',\n 'min-h-16',\n 'min-h-32',\n 'cursor-grab',\n 'active:cursor-grabbing',\n 'touch-none',\n 'opacity-40',\n 'group-hover/portlet:opacity-100',\n 'focus-visible:opacity-100',\n '[@media(hover:none)]:opacity-100',\n 'group/portlet',\n '[&>:nth-child(2)]:ms-auto',\n 'flex-nowrap',\n 'bg-card/80',\n 'border-dashed',\n 'border-2',\n 'bg-primary-500/10',\n // Modules/Views — accentClasses resolves an Accent token name to a wash, a\n // border and a solid marker, so none of them appear literally in a\n // consumer's own source. The wash and marker classes are listed elsewhere in\n // this file; these borders and the neutral marker are not.\n 'border-primary-500/40',\n 'border-success/40',\n 'border-warning/40',\n 'border-destructive/40',\n 'border-info/40',\n 'bg-muted-foreground',\n 'gap-0.5',\n 'p-0.5',\n // Floating labels (labelVariant=\"floating\" on Input / Textarea / DateInput /\n // Select, ui#406). The peer-* float states, arbitrary font size, and the\n // taller field heights/paddings never appear in consumer markup, so TW3\n // would purge them. (The bare `peer` marker class generates no CSS and\n // needs no safelisting.)\n 'placeholder:text-transparent',\n 'relative',\n 'h-11',\n 'h-14',\n 'h-16',\n 'pt-4',\n 'pt-5',\n 'pt-6',\n 'pt-7',\n 'pb-1',\n 'pb-1.5',\n 'pb-2',\n 'min-h-[76px]',\n 'min-h-[96px]',\n 'min-h-[120px]',\n // Textarea auto-grow default (ui#632) — single-line baselines matching the\n // Input heights, tuned padding so one line + padding + borders equals the\n // Input size token, floating-label single-line minimums, and the resize\n // handle variants. (min-h-8 is safelisted above.)\n 'min-h-10',\n 'min-h-12',\n 'py-[5px]',\n 'py-[7px]',\n 'py-[9px]',\n 'min-h-[50px]',\n 'min-h-[58px]',\n 'min-h-[66px]',\n 'resize-none',\n 'resize-y',\n 'resize-x',\n 'resize',\n // TextAreaRich (ui#639) — chromeless RichTextEditor single-line baseline\n // and the Textarea-matched focus ring on the wrapper.\n 'min-h-[38px]',\n 'focus-within:ring-2',\n 'focus-within:ring-ring',\n 'focus-within:border-transparent',\n // Textarea compat (ui#649) — error styling on the focused rich surface.\n 'focus-within:ring-destructive',\n 'focus-within:border-destructive',\n // Floating-group field boxes (labelVariant=\"floating\" on RadioGroup /\n // CheckboxGroup) share the floating input heights as min-heights. sr-only\n // visually hides the group legend (and the hideLabel input label) while\n // keeping it accessible. mb-1.5 spaces stacked legends (legends ignore\n // fieldset flex gap) and mt-1 spaces floating-group descriptions.\n 'min-h-11',\n 'min-h-14',\n 'min-h-16',\n 'sr-only',\n 'mb-1.5',\n 'mt-1',\n 'absolute',\n 'pointer-events-none',\n 'select-none',\n 'transition-all',\n 'transition-[min-height,padding]',\n 'duration-200',\n 'ease-out',\n 'top-0.5',\n 'top-1',\n 'top-1.5',\n 'top-2',\n 'top-3',\n 'top-4',\n 'top-5',\n 'top-1/2',\n '-translate-y-1/2',\n 'translate-y-0',\n 'text-sm',\n 'text-base',\n 'text-lg',\n 'text-[0.65rem]',\n 'peer-focus:top-0.5',\n 'peer-focus:top-1',\n 'peer-focus:top-1.5',\n 'peer-focus:top-2',\n 'peer-focus:text-[0.65rem]',\n 'peer-focus:text-xs',\n 'peer-focus:text-sm',\n 'peer-focus:translate-y-0',\n 'peer-[:not(:placeholder-shown)]:top-0.5',\n 'peer-[:not(:placeholder-shown)]:top-1',\n 'peer-[:not(:placeholder-shown)]:top-1.5',\n 'peer-[:not(:placeholder-shown)]:top-2',\n 'peer-[:not(:placeholder-shown)]:text-[0.65rem]',\n 'peer-[:not(:placeholder-shown)]:text-xs',\n 'peer-[:not(:placeholder-shown)]:text-sm',\n 'peer-[:not(:placeholder-shown)]:translate-y-0',\n 'peer-autofill:top-0.5',\n 'peer-autofill:top-1',\n 'peer-autofill:top-1.5',\n 'peer-autofill:top-2',\n 'peer-autofill:text-[0.65rem]',\n 'peer-autofill:text-xs',\n 'peer-autofill:text-sm',\n 'peer-autofill:translate-y-0',\n // DockablePanel — full-screen dialog that collapses to a bottom-right dock:\n // scrim, dock geometry, panel chrome, clipped full-width content\n 'fixed',\n 'inset-0',\n 'inset-6',\n 'inset-auto',\n 'bg-slate-900/45',\n 'end-0',\n 'end-6',\n 'bottom-0',\n 'top-full',\n 'w-full',\n 'h-full',\n 'w-[26rem]',\n 'max-w-[calc(100vw-3rem)]',\n 'max-w-[90rem]',\n 'w-[min(90rem,100vw-3rem)]',\n 'h-[calc(100vh-4rem)]',\n 'max-sm:inset-0',\n 'max-sm:inset-x-0',\n 'max-sm:w-full',\n 'max-sm:w-screen',\n 'max-sm:max-w-full',\n 'shadow-[0_1.25rem_2.5rem_rgb(15_23_42/0.22)]',\n 'rounded-lg',\n 'rounded-t-lg',\n 'border',\n 'border-b',\n 'border-b-0',\n 'flex',\n 'flex-1',\n 'flex-col',\n 'relative',\n 'absolute',\n 'items-center',\n 'justify-center',\n 'justify-between',\n 'justify-start',\n 'justify-end',\n 'rtl:rotate-180',\n 'gap-1',\n 'gap-2',\n 'px-3',\n 'py-2.5',\n 'm-0',\n 'min-h-0',\n 'min-w-0',\n 'text-sm',\n 'text-[0.9375rem]',\n 'font-semibold',\n 'capitalize',\n 'sr-only',\n // ChatComposer responsive grid: stacked cells below md, single-row pill\n // (md: overrides) above, plus the card surface\n 'grid-cols-[auto_minmax(0,1fr)_auto]',\n 'col-span-3',\n 'col-start-1',\n 'col-start-3',\n 'row-start-1',\n 'row-start-2',\n 'px-1',\n 'pt-1',\n 'pt-2',\n 'pb-1',\n 'rounded-2xl',\n 'dark:bg-[#1c1c1e]',\n 'dark:border-[#2e2e30]',\n // ChatComposer mobile keyboard: 16px input below sm (no iOS zoom) and\n // tap-to-focus card cursor (text-base is safelisted above)\n 'sm:text-sm',\n 'cursor-text',\n 'md:col-span-1',\n 'md:col-start-2',\n 'md:row-start-1',\n 'md:self-end',\n 'md:p-1.5',\n 'md:py-1.5',\n 'md:px-0',\n 'md:pe-0.5',\n 'md:ps-0.5',\n 'md:gap-0.5',\n // EH frontdoor ports (ui#420) — arbitrary values, opacity modifiers, and\n // variants emitted by MegaMenu / VideoCard / YearTimeline / SliderCalculator /\n // OrbitRing / RadialExplorer / Globe that TW3 consumers can't generate.\n // Shared positioning & typography\n '-translate-x-1/2',\n '-translate-y-1/2',\n 'left-1/2',\n 'top-1/2',\n 'tabular-nums',\n 'aspect-square',\n 'aspect-video',\n 'backdrop-blur-md',\n // SiteHeader mobile drawer — static group labels reuse the link style\n 'hover:bg-transparent',\n // MegaMenu — panel layout, feature column gradient, link states\n '[&_svg]:h-4',\n '[&_svg]:h-5',\n '[&_svg]:h-7',\n '[&_svg]:w-4',\n '[&_svg]:w-5',\n '[&_svg]:w-7',\n '[background:linear-gradient(160deg,color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-700))_70%,#000)_0%,var(--mieweb-primary-950)_100%)]',\n 'grid-cols-[1fr_280px]',\n 'w-[min(600px,calc(100vw-2rem))]',\n 'w-[min(880px,calc(100vw-2rem))]',\n 'transition-[opacity,transform]',\n 'motion-safe:animate-[mie-fade-in_0.2s_ease-out]',\n 'bg-white/10',\n 'border-white/40',\n 'text-foreground/70',\n 'text-foreground/80',\n 'text-white/80',\n 'text-white/90',\n 'hover:bg-primary-500/10',\n 'hover:bg-primary-900',\n 'hover:border-primary-500',\n 'hover:border-white',\n 'group-hover:bg-primary-800',\n 'group-hover:text-primary-800',\n 'group-hover:text-white',\n 'dark:group-hover:text-primary-200',\n 'focus-visible:bg-primary-500/10',\n // VideoCard — hover-preview conic progress ring and play button\n '[-webkit-mask:radial-gradient(farthest-side,transparent_calc(100%-4px),#000_calc(100%-4px))]',\n '[mask:radial-gradient(farthest-side,transparent_calc(100%-4px),#000_calc(100%-4px))]',\n '[background:conic-gradient(from_0deg,transparent_0deg,var(--mieweb-primary-500)_90deg,var(--mieweb-primary-300)_240deg,var(--mieweb-primary-200)_320deg,transparent_360deg)]',\n 'drop-shadow-[0_0_5px_color-mix(in_srgb,var(--mieweb-primary-400)_60%,transparent)]',\n 'bg-white/90',\n 'group-hover:opacity-100',\n 'group-hover:scale-110',\n 'group-focus-visible:opacity-100',\n 'motion-safe:animate-[mie-spin_1.4s_linear_infinite]',\n // YearTimeline — spine gradient, markers, responsive label rail\n 'grid-cols-12',\n 'md:grid',\n 'md:grid-cols-[var(--yt-label)_1fr]',\n 'md:block',\n 'md:inline',\n 'md:pb-4',\n 'md:py-3.5',\n 'md:h-[22px]',\n 'md:border-border/60',\n 'before:absolute',\n 'before:content-[\"\"]',\n 'before:inset-x-0',\n 'before:top-0',\n 'before:left-1/2',\n 'before:-translate-x-1/2',\n 'before:h-1',\n 'before:h-2.5',\n 'before:w-2.5',\n 'before:rounded-full',\n 'before:bg-primary-700',\n 'before:z-[4]',\n 'before:[background:linear-gradient(90deg,var(--mieweb-accent,var(--mieweb-primary-400))_0%,var(--mieweb-primary-500)_50%,var(--mieweb-success)_80%,var(--mieweb-accent,var(--mieweb-primary-400))_100%)]',\n '[background:linear-gradient(180deg,var(--mieweb-primary-700),color-mix(in_srgb,var(--mieweb-primary-700)_15%,transparent))]',\n '[&_svg]:h-3.5',\n '[&_svg]:w-3.5',\n '[text-shadow:0_1px_1px_rgba(0,0,0,0.3)]',\n 'bg-muted/30',\n 'border-border/60',\n 'hover:bg-muted/40',\n 'text-[9px]',\n 'tracking-[0.08em]',\n 'tracking-[0.09em]',\n 'tracking-[0.11em]',\n 'tracking-[0.12em]',\n 'z-[1]',\n 'z-[3]',\n 'z-[5]',\n // SliderCalculator — dark panel gradients and glassy rows\n '[background:linear-gradient(90deg,var(--mieweb-accent,var(--mieweb-primary-300)),var(--mieweb-primary-300))]',\n '[background:radial-gradient(120%_120%_at_100%_0%,var(--mieweb-primary-800),var(--mieweb-primary-950)_70%)]',\n 'lg:grid-cols-[1.1fr_1fr]',\n 'sm:p-8',\n 'sm:text-3xl',\n 'sm:text-6xl',\n 'bg-white/5',\n 'border-white/10',\n 'border-white/15',\n 'text-white/60',\n 'text-white/75',\n 'last:border-0',\n // OrbitRing — attract-loop rotation, pause-on-hover, glow ring\n 'group/orbit',\n 'group/sat',\n '[container-type:size]',\n 'motion-safe:animate-[mie-spin_var(--dur)_linear_infinite]',\n 'group-hover/orbit:[animation-play-state:paused]',\n 'group-focus-within/orbit:[animation-play-state:paused]',\n '[background:radial-gradient(circle_at_50%_38%,#fff_0%,color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-200))_14%,#fff)_52%,color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-200))_30%,#fff)_100%)]',\n '[background:radial-gradient(closest-side,color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-300))_30%,transparent)_0%,color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-300))_12%,transparent)_42%,transparent_78%)]',\n 'shadow-[0_0_0_1px_color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-400))_35%,transparent),0_10px_30px_rgba(0,0,0,0.18),0_0_46px_color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-400))_42%,transparent)]',\n 'dark:border-primary-800',\n // RadialExplorer — dot navigation and reveal animation\n 'motion-safe:animate-[mie-fade-in_0.25s_ease-out]',\n 'text-[15px]',\n 'tracking-[0.14em]',\n // Globe — HTML overlay chrome (TW3 consumers using the /globe entry)\n 'bg-[var(--mieweb-accent,#ffe7b0)]',\n 'shadow-[0_0_8px_var(--mieweb-accent,#ffe7b0)]',\n 'bg-neutral-950/70',\n 'max-w-[min(90%,360px)]',\n 'motion-safe:animate-[mie-fade-in_0.28s_ease]',\n // RadialExplorer / VideoCard / SliderCalculator stragglers\n 'tracking-[0.18em]',\n 'tracking-tight',\n 'start-1/2',\n 'w-[calc(var(--re-r)*2+120px)]',\n 'bg-[linear-gradient(90deg,var(--mieweb-primary-500),var(--mieweb-primary-300))]',\n 'bg-black/55',\n 'bg-black/60',\n 'group-hover:text-primary-700',\n 'dark:group-hover:text-primary-300',\n // SiteHeader — menus/MegaMenuBar row and mobile drawer (touched in ui#420)\n 'bg-black/50',\n 'bg-white/20',\n 'bg-white/80',\n 'border-white/30',\n 'hover:bg-white/90',\n 'hover:bg-gray-100',\n 'hover:bg-red-50',\n 'hover:text-gray-700',\n 'hover:text-gray-900',\n 'max-h-[calc(100dvh-10rem)]',\n // Modal full-screen mobile safe-area insets (reset at sm)\n 'pt-[var(--mieweb-safe-area-top,env(safe-area-inset-top))]',\n 'pb-[var(--mieweb-safe-area-bottom,env(safe-area-inset-bottom))]',\n 'sm:pt-0',\n 'sm:pb-0',\n 'md:flex',\n 'sm:block',\n 'dark:border-b',\n 'dark:bg-gray-800',\n 'dark:bg-gray-900',\n 'dark:bg-gray-900/80',\n 'dark:bg-primary-900/30',\n 'dark:border-gray-600',\n 'dark:border-gray-700',\n 'dark:border-gray-800',\n 'dark:hover:bg-gray-700',\n 'dark:hover:bg-gray-800',\n 'dark:hover:bg-red-900/20',\n 'dark:hover:text-gray-200',\n 'dark:hover:text-white',\n 'dark:text-gray-300',\n 'dark:text-red-400',\n 'dark:text-white',\n // Badge usages added in ui#420 (VideoCard duration pill, RadialExplorer tag)\n 'dark:bg-black/60',\n 'bg-primary-100',\n 'text-primary-900',\n 'dark:bg-primary-900',\n 'dark:text-primary-100',\n // Templates tier (ui#506) — arbitrary values, opacity modifiers and variants\n '[&::-webkit-details-marker]:hidden',\n '[mask-image:linear-gradient(90deg,transparent,black_10%,black_90%,transparent)]',\n 'inset-x-[25%]',\n 'inset-x-[16.667%]',\n 'inset-x-[12.5%]',\n 'max-w-[9rem]',\n 'min-w-[36rem]',\n 'bg-white/25',\n 'border-white/70',\n 'dark:border-white/70',\n 'dark:bg-primary-800',\n 'dark:bg-primary-900/60',\n 'dark:hover:bg-white/10',\n 'hover:bg-black/10',\n 'group-open:rotate-180',\n 'rtl:-scale-x-100',\n 'after:absolute',\n 'after:inset-0',\n 'motion-reduce:transition-none',\n 'text-balance',\n 'text-pretty',\n // Record pages (RecordLayout, PropertyList, CalendarHeatmap, OrgChart, AvatarGroup, inputs):\n '[&>svg]:h-2',\n '[&>svg]:h-2.5',\n '[&>svg]:h-3',\n '[&>svg]:h-3.5',\n '[&>svg]:w-2',\n '[&>svg]:w-2.5',\n '[&>svg]:w-3',\n '[&>svg]:w-3.5',\n 'aria-disabled:opacity-60',\n 'border-spacing-[3px]',\n 'empty:hidden',\n 'first:ms-0',\n 'group-data-[state=closed]:-rotate-90',\n 'h-[560px]',\n 'max-h-[560px]',\n 'max-w-[calc(100%-1.5rem)]',\n 'md:grid-cols-[18rem_minmax(0,1fr)]',\n 'md:max-h-[calc(100dvh-var(--record-layout-sticky-top,1rem)-1rem)]',\n 'md:top-[var(--record-layout-sticky-top,1rem)]',\n 'motion-reduce:animate-none',\n 'motion-safe:duration-300',\n 'motion-safe:transition-all',\n 'motion-safe:ease-out',\n 'motion-safe:enabled:hover:scale-110',\n 'motion-safe:transition-[opacity,box-shadow]',\n 'motion-safe:transition-[width]',\n 'motion-safe:transition-transform',\n 'peer-disabled:cursor-not-allowed',\n 'peer-disabled:opacity-50',\n 'peer-focus-visible:ring-2',\n 'peer-focus-visible:ring-offset-2',\n 'peer-focus-visible:ring-ring',\n 'rtl:-rotate-90',\n 'rtl:[&_svg]:-scale-x-100',\n 'rtl:group-data-[state=closed]:rotate-90',\n 'rtl:rotate-180',\n 'sm:grid-cols-[minmax(7rem,40%)_minmax(0,1fr)]',\n 'xl:grid-cols-[20rem_minmax(0,1fr)]',\n 'xl:grid-cols-[20rem_minmax(0,1fr)_20rem]',\n 'xl:grid-cols-[minmax(0,1fr)_20rem]',\n // Reports + Deck tier — accent utilities, arbitrary values and opacity modifiers\n 'bg-accent',\n 'text-accent',\n 'fill-accent',\n 'stroke-accent',\n 'bg-accent/15',\n 'border-accent/30',\n 'border-accent/70',\n 'to-accent/70',\n 'border-s-2',\n 'border-s-4',\n 'border-s-success',\n 'bg-success/10',\n 'bg-success/15',\n 'border-success/30',\n 'bg-warning/15',\n 'border-warning/30',\n 'bg-destructive/15',\n 'border-destructive/30',\n 'bg-primary-400/15',\n 'bg-primary-500/10',\n 'bg-primary-500/15',\n 'bg-primary-600/20',\n 'bg-primary-600/40',\n 'border-primary-400/30',\n 'border-primary-500/30',\n 'hover:bg-primary-500/10',\n 'bg-secondary-400/15',\n 'border-secondary-400/30',\n 'bg-black/25',\n 'bg-black/30',\n 'bg-black/60',\n 'bg-neutral-900/80',\n 'bg-neutral-900/90',\n 'bg-neutral-900/95',\n 'bg-neutral-950/90',\n 'bg-neutral-950/95',\n 'bg-white/5',\n 'bg-white/10',\n 'bg-white/30',\n 'bg-white/40',\n 'border-white/10',\n 'border-white/15',\n 'border-white/20',\n 'border-white/30',\n 'hover:bg-white/5',\n 'hover:bg-white/10',\n 'group-hover:bg-white/60',\n 'stroke-white/10',\n 'stroke-white/25',\n 'stroke-white/30',\n 'text-white/20',\n 'text-white/40',\n 'text-white/70',\n 'text-white/75',\n 'text-white/80',\n '-start-[2.35rem]',\n 'aspect-[3/4]',\n 'grid-cols-[2rem_minmax(0,1fr)_auto]',\n 'h-[3px]',\n 'h-[clamp(180px,30vh,300px)]',\n 'h-[clamp(260px,40vh,440px)]',\n 'lg:grid-cols-[1fr_300px]',\n 'lg:grid-cols-[auto_minmax(0,1fr)]',\n 'lg:grid-cols-[minmax(0,1.25fr)_minmax(0,2.7fr)]',\n 'lg:grid-cols-[minmax(0,1fr)_minmax(0,2.4fr)_minmax(0,1fr)]',\n 'lg:grid-cols-[minmax(0,2.7fr)_minmax(0,1.25fr)]',\n 'max-h-[65dvh]',\n 'max-w-[15rem]',\n 'max-w-[42vw]',\n 'max-w-[72px]',\n 'pb-[max(0.5rem,env(safe-area-inset-bottom))]',\n 'size-[1.1em]',\n 'size-[18px]',\n 'size-[28rem]',\n 'size-[32rem]',\n 'sm:text-[11px]',\n 'text-[0.6rem]',\n 'text-[0.62rem]',\n 'text-[0.65rem]',\n 'text-[0.7rem]',\n 'text-[0.8rem]',\n 'text-[9px]',\n 'tracking-[0.18em]',\n 'tracking-[0.2em]',\n 'transition-[width]',\n 'z-[5]',\n 'z-[80]',\n // MacroLibrary panel docked in RichTextEditor — search inset, shortcut chips, peek\n '-mt-1',\n 'bottom-1.5',\n 'dark:border-warning-700',\n 'end-1.5',\n 'group/macro',\n 'group-focus-within/macro:visible',\n 'group-hover/macro:visible',\n '[@media(hover:none)]:visible',\n 'hover:text-primary',\n 'items-stretch',\n 'leading-4',\n 'md:absolute',\n 'md:border-t-0',\n 'md:end-0',\n 'md:inset-y-0',\n 'md:me-72',\n 'md:min-h-[140px]',\n 'md:min-h-[250px]',\n 'md:w-72',\n 'p-1.5',\n 'py-1.5',\n 'py-8',\n 'py-10',\n 'start-2.5',\n 'text-[11px]',\n 'whitespace-pre-line',\n // RichTextEditor block gutter menu — hover-revealed `+` button\n 'group/rte-body',\n 'group-hover/rte-body:opacity-100',\n // TextAreaRich (Kerebron) — gutter reveal and sliding start-indent\n 'group/tar-body',\n 'group-hover/tar-body:opacity-100',\n 'group-hover/tar-body:ps-10',\n 'group-focus-within/tar-body:ps-10',\n '[@media(hover:none)]:ps-10',\n 'transition-[padding]',\n 'md:bottom-0',\n // RichTextEditor editable region — baseline block styles (preflight strips\n // heading/list/quote styling; `prose` needs @tailwindcss/typography)\n '[&_h1]:my-3',\n '[&_h1]:text-2xl',\n '[&_h1]:font-bold',\n '[&_h2]:my-3',\n '[&_h2]:text-xl',\n '[&_h2]:font-bold',\n '[&_h3]:my-2',\n '[&_h3]:text-lg',\n '[&_h3]:font-semibold',\n '[&_ul]:my-2',\n '[&_ol]:my-2',\n '[&_ol]:list-decimal',\n '[&_ol]:ps-6',\n '[&_blockquote]:my-2',\n '[&_blockquote]:border-s-4',\n '[&_blockquote]:border-border',\n '[&_blockquote]:ps-3',\n '[&_blockquote]:text-muted-foreground',\n];\n\nexport interface MiewebUIPreset {\n darkMode: ['class', '[data-theme=\"dark\"]'];\n safelist: string[];\n theme: {\n extend: Record<string, unknown>;\n };\n}\n\nexport const miewebUIPreset: MiewebUIPreset = {\n darkMode: ['class', '[data-theme=\"dark\"]'],\n safelist: miewebUISafelist,\n theme: {\n extend: {\n colors: {\n // Primary color scale - easily overridable by consumers\n primary: {\n DEFAULT: 'var(--mieweb-primary, var(--mieweb-primary-500, #27aae1))',\n 50: 'var(--mieweb-primary-50, #e6f7fc)',\n 100: 'var(--mieweb-primary-100, #b3e6f6)',\n 200: 'var(--mieweb-primary-200, #80d5f0)',\n 300: 'var(--mieweb-primary-300, #4dc4ea)',\n 400: 'var(--mieweb-primary-400, #27aae1)',\n 500: 'var(--mieweb-primary-500, #27aae1)',\n 600: 'var(--mieweb-primary-600, #1f98ca)',\n 700: 'var(--mieweb-primary-700, #1786b3)',\n 800: 'var(--mieweb-primary-800, #0f749c)',\n 900: 'var(--mieweb-primary-900, #086285)',\n 950: 'var(--mieweb-primary-950, #00506e)',\n foreground: 'var(--mieweb-primary-foreground, hsl(210 40% 98%))',\n },\n // Ozwell brand accent (the \"Hey Ozwell\" octopus blue) — distinct from the host app primary.\n ozwell: {\n DEFAULT: 'var(--mieweb-ozwell, #0BA0E0)',\n foreground: 'var(--mieweb-ozwell-foreground, hsl(0 0% 100%))',\n },\n accent: 'var(--mieweb-accent, var(--mieweb-primary-400))',\n // Secondary color scale\n secondary: {\n DEFAULT: 'var(--mieweb-secondary-500, #6366f1)',\n 50: 'var(--mieweb-secondary-50, #eef2ff)',\n 100: 'var(--mieweb-secondary-100, #e0e7ff)',\n 200: 'var(--mieweb-secondary-200, #c7d2fe)',\n 300: 'var(--mieweb-secondary-300, #a5b4fc)',\n 400: 'var(--mieweb-secondary-400, #818cf8)',\n 500: 'var(--mieweb-secondary-500, #6366f1)',\n 600: 'var(--mieweb-secondary-600, #4f46e5)',\n 700: 'var(--mieweb-secondary-700, #4338ca)',\n 800: 'var(--mieweb-secondary-800, #3730a3)',\n 900: 'var(--mieweb-secondary-900, #312e81)',\n 950: 'var(--mieweb-secondary-950, #1e1b4b)',\n foreground: 'var(--mieweb-secondary-foreground, #ffffff)',\n },\n // Neutral / gray scale\n neutral: {\n DEFAULT: 'var(--mieweb-neutral-500, #737373)',\n 50: 'var(--mieweb-neutral-50, #fafafa)',\n 100: 'var(--mieweb-neutral-100, #f5f5f5)',\n 200: 'var(--mieweb-neutral-200, #e5e5e5)',\n 300: 'var(--mieweb-neutral-300, #d4d4d4)',\n 400: 'var(--mieweb-neutral-400, #a3a3a3)',\n 500: 'var(--mieweb-neutral-500, #737373)',\n 600: 'var(--mieweb-neutral-600, #525252)',\n 700: 'var(--mieweb-neutral-700, #404040)',\n 800: 'var(--mieweb-neutral-800, #262626)',\n 900: 'var(--mieweb-neutral-900, #171717)',\n 950: 'var(--mieweb-neutral-950, #0a0a0a)',\n },\n // Semantic colors using CSS variables for theming\n border: 'var(--mieweb-border, hsl(214.3 31.8% 91.4%))',\n input: 'var(--mieweb-input, hsl(214.3 31.8% 91.4%))',\n ring: 'var(--mieweb-ring, hsl(221.2 83.2% 53.3%))',\n background: 'var(--mieweb-background, hsl(0 0% 100%))',\n foreground: 'var(--mieweb-foreground, hsl(222.2 84% 4.9%))',\n // Component-specific semantic colors\n card: {\n DEFAULT: 'var(--mieweb-card, hsl(0 0% 100%))',\n foreground: 'var(--mieweb-card-foreground, hsl(222.2 84% 4.9%))',\n },\n muted: {\n DEFAULT: 'var(--mieweb-muted, hsl(210 40% 96.1%))',\n foreground: 'var(--mieweb-muted-foreground, hsl(215.4 16.3% 46.9%))',\n },\n // Destructive / error scale\n destructive: {\n DEFAULT:\n 'var(--mieweb-destructive, var(--mieweb-destructive-500, #dc2626))',\n 50: 'var(--mieweb-destructive-50, #fef2f2)',\n 100: 'var(--mieweb-destructive-100, #fee2e2)',\n 200: 'var(--mieweb-destructive-200, #fecaca)',\n 300: 'var(--mieweb-destructive-300, #fca5a5)',\n 400: 'var(--mieweb-destructive-400, #f87171)',\n 500: 'var(--mieweb-destructive-500, #dc2626)',\n 600: 'var(--mieweb-destructive-600, #dc2626)',\n 700: 'var(--mieweb-destructive-700, #b91c1c)',\n 800: 'var(--mieweb-destructive-800, #991b1b)',\n 900: 'var(--mieweb-destructive-900, #7f1d1d)',\n 950: 'var(--mieweb-destructive-950, #450a0a)',\n foreground: 'var(--mieweb-destructive-foreground, hsl(210 40% 98%))',\n },\n // Success scale\n success: {\n DEFAULT: 'var(--mieweb-success-500, #22c55e)',\n 50: 'var(--mieweb-success-50, #f0fdf4)',\n 100: 'var(--mieweb-success-100, #dcfce7)',\n 200: 'var(--mieweb-success-200, #bbf7d0)',\n 300: 'var(--mieweb-success-300, #86efac)',\n 400: 'var(--mieweb-success-400, #4ade80)',\n 500: 'var(--mieweb-success-500, #22c55e)',\n 600: 'var(--mieweb-success-600, #16a34a)',\n 700: 'var(--mieweb-success-700, #15803d)',\n 800: 'var(--mieweb-success-800, #166534)',\n 900: 'var(--mieweb-success-900, #14532d)',\n 950: 'var(--mieweb-success-950, #052e16)',\n foreground: 'var(--mieweb-success-foreground, hsl(355.7 100% 97.3%))',\n },\n // Warning scale\n warning: {\n DEFAULT: 'var(--mieweb-warning-500, #f59e0b)',\n 50: 'var(--mieweb-warning-50, #fffbeb)',\n 100: 'var(--mieweb-warning-100, #fef3c7)',\n 200: 'var(--mieweb-warning-200, #fde68a)',\n 300: 'var(--mieweb-warning-300, #fcd34d)',\n 400: 'var(--mieweb-warning-400, #fbbf24)',\n 500: 'var(--mieweb-warning-500, #f59e0b)',\n 600: 'var(--mieweb-warning-600, #d97706)',\n 700: 'var(--mieweb-warning-700, #b45309)',\n 800: 'var(--mieweb-warning-800, #92400e)',\n 900: 'var(--mieweb-warning-900, #78350f)',\n 950: 'var(--mieweb-warning-950, #451a03)',\n foreground: 'var(--mieweb-warning-foreground, hsl(26 83.3% 14.1%))',\n },\n // Info scale\n info: {\n DEFAULT: 'var(--mieweb-info-500, #0ea5e9)',\n 50: 'var(--mieweb-info-50, #f0f9ff)',\n 100: 'var(--mieweb-info-100, #e0f2fe)',\n 200: 'var(--mieweb-info-200, #bae6fd)',\n 300: 'var(--mieweb-info-300, #7dd3fc)',\n 400: 'var(--mieweb-info-400, #38bdf8)',\n 500: 'var(--mieweb-info-500, #0ea5e9)',\n 600: 'var(--mieweb-info-600, #0284c7)',\n 700: 'var(--mieweb-info-700, #0369a1)',\n 800: 'var(--mieweb-info-800, #075985)',\n 900: 'var(--mieweb-info-900, #0c4a6e)',\n 950: 'var(--mieweb-info-950, #082f49)',\n foreground: 'var(--mieweb-info-foreground, #ffffff)',\n },\n // Chart / data visualization\n chart: {\n 1: 'var(--mieweb-chart-1, #27aae1)',\n 2: 'var(--mieweb-chart-2, #22c55e)',\n 3: 'var(--mieweb-chart-3, #f59e0b)',\n 4: 'var(--mieweb-chart-4, #ef4444)',\n 5: 'var(--mieweb-chart-5, #6366f1)',\n },\n },\n fontFamily: {\n sans: [\n 'var(--mieweb-font-sans, ui-sans-serif)',\n 'system-ui',\n 'sans-serif',\n ],\n },\n borderRadius: {\n '2xl': 'var(--mieweb-radius-2xl, 1rem)',\n lg: 'var(--mieweb-radius-lg, 0.75rem)',\n md: 'var(--mieweb-radius-md, 0.5rem)',\n sm: 'var(--mieweb-radius-sm, 0.25rem)',\n xl: 'var(--mieweb-radius-xl, 1rem)',\n },\n boxShadow: {\n card: 'var(--mieweb-shadow-card, 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1))',\n },\n keyframes: {\n 'fade-in': {\n '0%': { opacity: '0' },\n '100%': { opacity: '1' },\n },\n 'fade-out': {\n '0%': { opacity: '1' },\n '100%': { opacity: '0' },\n },\n 'slide-in-from-top': {\n '0%': { transform: 'translateY(-0.5rem)', opacity: '0' },\n '100%': { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-in-from-bottom': {\n '0%': { transform: 'translateY(0.5rem)', opacity: '0' },\n '100%': { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-in-right': {\n '0%': { transform: 'translateX(100%)', opacity: '0' },\n '100%': { transform: 'translateX(0)', opacity: '1' },\n },\n 'slide-in-left': {\n '0%': { transform: 'translateX(-100%)', opacity: '0' },\n '100%': { transform: 'translateX(0)', opacity: '1' },\n },\n 'loading-bar': {\n '0%': { transform: 'translateX(-100%)' },\n '100%': { transform: 'translateX(300%)' },\n },\n 'loading-bar-rtl': {\n '0%': { transform: 'translateX(100%)' },\n '100%': { transform: 'translateX(-300%)' },\n },\n shimmer: {\n '0%': { backgroundPosition: '200% 0' },\n '100%': { backgroundPosition: '-200% 0' },\n },\n 'shimmer-rtl': {\n '0%': { backgroundPosition: '-200% 0' },\n '100%': { backgroundPosition: '200% 0' },\n },\n 'scale-in': {\n '0%': { transform: 'scale(0.95)', opacity: '0' },\n '100%': { transform: 'scale(1)', opacity: '1' },\n },\n 'ozwell-message-flare': {\n '0%': {\n boxShadow:\n '0 0 0 0 color-mix(in srgb, var(--mieweb-primary-700, #1786b3) 34%, transparent)',\n },\n '70%': {\n boxShadow:\n '0 0 0 8px color-mix(in srgb, var(--mieweb-primary-700, #1786b3) 0%, transparent)',\n },\n '100%': {\n boxShadow:\n '0 0 0 0 color-mix(in srgb, var(--mieweb-primary-700, #1786b3) 0%, transparent)',\n },\n },\n },\n animation: {\n 'fade-in': 'fade-in 150ms ease-out',\n 'fade-out': 'fade-out 150ms ease-in',\n 'slide-in-from-top': 'slide-in-from-top 150ms ease-out',\n 'slide-in-from-bottom': 'slide-in-from-bottom 150ms ease-out',\n 'slide-in-right': 'slide-in-right 300ms ease-out',\n 'slide-in-left': 'slide-in-left 300ms ease-out',\n 'loading-bar': 'loading-bar 1.5s ease infinite',\n 'loading-bar-rtl': 'loading-bar-rtl 1.5s ease infinite',\n shimmer: 'shimmer 2s linear infinite',\n 'shimmer-rtl': 'shimmer-rtl 2s linear infinite',\n 'scale-in': 'scale-in 150ms ease-out',\n 'ozwell-message-flare': 'ozwell-message-flare 1.8s ease-out',\n },\n // ClampedText supports 7/8-line clamps beyond Tailwind 3's core 1–6 scale\n lineClamp: {\n 7: '7',\n 8: '8',\n },\n },\n },\n};\n\nexport default miewebUIPreset;\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require('../../chunk-QAEAC7HO.cjs');
|
|
4
|
+
var chunkLTCHD3K5_cjs = require('../../chunk-LTCHD3K5.cjs');
|
|
4
5
|
require('../../chunk-Z3WMDVMR.cjs');
|
|
5
6
|
require('../../chunk-S5RVSXDV.cjs');
|
|
6
7
|
require('../../chunk-EUAMEVVI.cjs');
|
|
@@ -9,23 +10,23 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
9
10
|
|
|
10
11
|
Object.defineProperty(exports, "AudioPlayer", {
|
|
11
12
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkLTCHD3K5_cjs.AudioPlayer; }
|
|
13
14
|
});
|
|
14
15
|
Object.defineProperty(exports, "ProgressBar", {
|
|
15
16
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkLTCHD3K5_cjs.ProgressBar; }
|
|
17
18
|
});
|
|
18
19
|
Object.defineProperty(exports, "audioPlayerVariants", {
|
|
19
20
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunkLTCHD3K5_cjs.audioPlayerVariants; }
|
|
21
22
|
});
|
|
22
23
|
Object.defineProperty(exports, "formatAudioTime", {
|
|
23
24
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunkLTCHD3K5_cjs.formatTime; }
|
|
25
26
|
});
|
|
26
27
|
Object.defineProperty(exports, "playButtonVariants", {
|
|
27
28
|
enumerable: true,
|
|
28
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunkLTCHD3K5_cjs.playButtonVariants; }
|
|
29
30
|
});
|
|
30
31
|
//# sourceMappingURL=index.cjs.map
|
|
31
32
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import '../../chunk-G4VQEQGW.js';
|
|
2
|
+
export { AudioPlayer, ProgressBar, audioPlayerVariants, formatTime as formatAudioTime, playButtonVariants } from '../../chunk-CKECOCYJ.js';
|
|
2
3
|
import '../../chunk-YVKBXNPK.js';
|
|
3
4
|
import '../../chunk-TQONQSJO.js';
|
|
4
5
|
import '../../chunk-PX6F3LHL.js';
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../../chunk-
|
|
5
|
-
require('../../chunk-
|
|
3
|
+
var chunkGG3IK5TL_cjs = require('../../chunk-GG3IK5TL.cjs');
|
|
4
|
+
require('../../chunk-TZKBW4GA.cjs');
|
|
5
|
+
require('../../chunk-NZUQL42A.cjs');
|
|
6
|
+
require('../../chunk-LTCHD3K5.cjs');
|
|
6
7
|
require('../../chunk-GM376OD6.cjs');
|
|
7
8
|
require('../../chunk-4UDEMJE4.cjs');
|
|
8
|
-
require('../../chunk-
|
|
9
|
+
require('../../chunk-HDZQLTBP.cjs');
|
|
9
10
|
require('../../chunk-UPWIJC6I.cjs');
|
|
10
11
|
require('../../chunk-7AECNMYV.cjs');
|
|
11
12
|
require('../../chunk-FRPELUI5.cjs');
|
|
@@ -28,23 +29,23 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
28
29
|
|
|
29
30
|
Object.defineProperty(exports, "FillerWordsModal", {
|
|
30
31
|
enumerable: true,
|
|
31
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkGG3IK5TL_cjs.FillerWordsModal; }
|
|
32
33
|
});
|
|
33
34
|
Object.defineProperty(exports, "MediaEditor", {
|
|
34
35
|
enumerable: true,
|
|
35
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkGG3IK5TL_cjs.MediaEditor; }
|
|
36
37
|
});
|
|
37
38
|
Object.defineProperty(exports, "SilenceSettingsModal", {
|
|
38
39
|
enumerable: true,
|
|
39
|
-
get: function () { return
|
|
40
|
+
get: function () { return chunkGG3IK5TL_cjs.SilenceSettingsModal; }
|
|
40
41
|
});
|
|
41
42
|
Object.defineProperty(exports, "SpeedMarkerMenu", {
|
|
42
43
|
enumerable: true,
|
|
43
|
-
get: function () { return
|
|
44
|
+
get: function () { return chunkGG3IK5TL_cjs.SpeedMarkerMenu; }
|
|
44
45
|
});
|
|
45
46
|
Object.defineProperty(exports, "WordEditorModal", {
|
|
46
47
|
enumerable: true,
|
|
47
|
-
get: function () { return
|
|
48
|
+
get: function () { return chunkGG3IK5TL_cjs.WordEditorModal; }
|
|
48
49
|
});
|
|
49
50
|
//# sourceMappingURL=index.cjs.map
|
|
50
51
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
1
|
+
export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from '../../chunk-LQ22CY7X.js';
|
|
2
|
+
import '../../chunk-JCIQIR5V.js';
|
|
3
|
+
import '../../chunk-CRR7AE5D.js';
|
|
4
|
+
import '../../chunk-CKECOCYJ.js';
|
|
4
5
|
import '../../chunk-GAI6SRJ3.js';
|
|
5
6
|
import '../../chunk-6LIC3DKE.js';
|
|
6
|
-
import '../../chunk-
|
|
7
|
+
import '../../chunk-4LKAZW2W.js';
|
|
7
8
|
import '../../chunk-VCI2Y7ST.js';
|
|
8
9
|
import '../../chunk-753Z3NXL.js';
|
|
9
10
|
import '../../chunk-GKMMDKYY.js';
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../../chunk-
|
|
5
|
-
require('../../chunk-
|
|
6
|
-
require('../../chunk-
|
|
3
|
+
var chunkAHYDJN4H_cjs = require('../../chunk-AHYDJN4H.cjs');
|
|
4
|
+
require('../../chunk-D3FNZMOB.cjs');
|
|
5
|
+
require('../../chunk-TZKBW4GA.cjs');
|
|
6
|
+
require('../../chunk-NZUQL42A.cjs');
|
|
7
|
+
require('../../chunk-LTCHD3K5.cjs');
|
|
8
|
+
require('../../chunk-HDZQLTBP.cjs');
|
|
7
9
|
require('../../chunk-P22YCUVM.cjs');
|
|
8
10
|
require('../../chunk-Q3YVLO52.cjs');
|
|
9
11
|
require('../../chunk-GKDHMNUA.cjs');
|
|
@@ -12,6 +14,7 @@ require('../../chunk-NNEFAUHV.cjs');
|
|
|
12
14
|
require('../../chunk-SCV7C55E.cjs');
|
|
13
15
|
require('../../chunk-FHY3K6PL.cjs');
|
|
14
16
|
require('../../chunk-YW2AKBLS.cjs');
|
|
17
|
+
require('../../chunk-Z3WMDVMR.cjs');
|
|
15
18
|
require('../../chunk-EACNRR3C.cjs');
|
|
16
19
|
require('../../chunk-FSARTLUE.cjs');
|
|
17
20
|
require('../../chunk-HGJHWI7W.cjs');
|
|
@@ -23,7 +26,7 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
23
26
|
|
|
24
27
|
Object.defineProperty(exports, "MediaFeed", {
|
|
25
28
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunkAHYDJN4H_cjs.MediaFeed; }
|
|
27
30
|
});
|
|
28
31
|
//# sourceMappingURL=index.cjs.map
|
|
29
32
|
//# sourceMappingURL=index.cjs.map
|