veilkit 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +119 -6
  3. package/assets/demo-button.gif +0 -0
  4. package/assets/demo-hero.gif +0 -0
  5. package/assets/demo-presets.gif +0 -0
  6. package/assets/demo-spinners.gif +0 -0
  7. package/dist/angular/index.cjs +5 -5
  8. package/dist/angular/index.cjs.map +1 -1
  9. package/dist/angular/index.d.cts +2 -2
  10. package/dist/angular/index.d.ts +2 -2
  11. package/dist/angular/index.js +5 -5
  12. package/dist/angular/index.js.map +1 -1
  13. package/dist/{controller-Ceub9kLC.d.ts → controller-Cmc3Hp1j.d.ts} +1 -1
  14. package/dist/{controller-B6kFsWzi.d.cts → controller-CzNTbEGd.d.cts} +1 -1
  15. package/dist/element/index.cjs +14 -14
  16. package/dist/element/index.cjs.map +1 -1
  17. package/dist/element/index.js +14 -14
  18. package/dist/element/index.js.map +1 -1
  19. package/dist/index.cjs +13 -5
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +27 -4
  22. package/dist/index.d.ts +27 -4
  23. package/dist/index.js +13 -5
  24. package/dist/index.js.map +1 -1
  25. package/dist/native/index.d.cts +1 -1
  26. package/dist/native/index.d.ts +1 -1
  27. package/dist/react/index.cjs +14 -14
  28. package/dist/react/index.cjs.map +1 -1
  29. package/dist/react/index.d.cts +14 -2
  30. package/dist/react/index.d.ts +14 -2
  31. package/dist/react/index.js +14 -14
  32. package/dist/react/index.js.map +1 -1
  33. package/dist/svelte/index.cjs +4 -4
  34. package/dist/svelte/index.cjs.map +1 -1
  35. package/dist/svelte/index.d.cts +1 -1
  36. package/dist/svelte/index.d.ts +1 -1
  37. package/dist/svelte/index.js +4 -4
  38. package/dist/svelte/index.js.map +1 -1
  39. package/dist/themes/index.d.cts +1 -1
  40. package/dist/themes/index.d.ts +1 -1
  41. package/dist/{types-CnR-rU97.d.cts → types-D2ryMkLU.d.cts} +25 -2
  42. package/dist/{types-CnR-rU97.d.ts → types-D2ryMkLU.d.ts} +25 -2
  43. package/dist/veilkit.min.js +13 -5
  44. package/dist/vue/index.cjs +3 -3
  45. package/dist/vue/index.cjs.map +1 -1
  46. package/dist/vue/index.d.cts +1 -1
  47. package/dist/vue/index.d.ts +1 -1
  48. package/dist/vue/index.js +3 -3
  49. package/dist/vue/index.js.map +1 -1
  50. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/antiflicker.ts","../../src/core/themes.ts","../../src/core/animations.ts","../../src/core/css.ts","../../src/core/progress.ts","../../src/core/manager.ts","../../src/vue/composables.ts","../../src/core/sync.ts","../../src/core/observer.ts","../../src/core/primitives.ts","../../src/core/reveal.ts","../../src/core/measure.ts","../../src/vue/directive.ts","../../src/core/spinners.ts","../../src/core/presets.ts","../../src/core/a11y.ts","../../src/core/overlay.ts","../../src/core/button.ts","../../src/core/lazy-image.ts","../../src/vue/components.ts","../../src/core/track.ts","../../src/core/controller.ts","../../src/vue/plugin.ts","../../src/vue/nuxt.ts"],"names":["AntiFlickerController","options","callback","elapsed","remaining","BUILTIN_THEMES","customThemesRegistry","createTheme","themeInput","parentTheme","resolvedTheme","getThemeTokens","theme","custom","getAnimationKeyframesCSS","styleInjected","cspNonce","setNonce","nonce","getStylesCSS","light","dark","name","t","injectStyles","css","effectiveNonce","sheet","styleEl","RouteProgressController","n","percent","amount","progressController","createProgressElement","props","isCircular","color","trackColor","size","strokeWidth","container","svg","track","meter","circumference","val","offset","text","height","bar","LoadingManager","id","key","first","listener","loading","loadingManager","useProgress","useDelayedLoading","loadingRef","visible","ref","controller","onMounted","watch","onUnmounted","useLoading","asyncFn","data","error","args","reqId","res","err","globalStartTime","getTimelineOrigin","getSyncDelay","durationMs","parseDurationMs","duration","trimmed","intersectionObserver","observedElements","visibilityInitialized","handleIntersection","entries","entry","el","setupVisibilityObserver","observeOffscreen","element","createSkeletonElement","shape","durMs","createSkeletonParagraph","lines","gap","defaultWidths","lastWidth","i","width","lineEl","createPrimitive","type","row","cols","cell","applyReveal","transition","children","child","idx","totalDuration","className","handleEnd","memoryLayoutCache","getCachedLayout","cacheKey","stored","parsed","setCachedLayout","layout","persist","measureContainer","ignoreSelector","containerRect","boxes","isLeafOrTarget","style","tag","walk","node","rect","radius","customShape","createAutoMeasureOverlay","skeletonProps","overlay","computed","renderLayout","box","update","cached","ro","mo","elementStateMap","vVeil","binding","state","createSpinner","secondaryColor","ring","dot","pulseCircle","nucleus","orbitRing","satellite","line","ball","spoke","orb","bgCircle","meterCircle","arc","col","sq","cube","hg","path","delays","wrap","liquid","angles","angle","face","center","hourHand","minuteHand","radarWrap","beam","petal","injectSpinnerKeyframes","spinnerKeyframesInjected","createPreset","shapeRadius","baseProps","img","title","btn","badge","price","itemsCount","columns","item","count","avatar","textGroup","primary","secondary","rows","header","c","r","bio","btnGroup","banner","body","info","media","actions","meta","heroImg","body1","body2","comment","bubbles","b","bubble","msg","statGrid","stat","chartBlock","group","submit","thumb","brand","links","cta","top","navItem","footer","section","control","left","mainImg","thumbRow","right","rating","desc","textCol","star","sender","snippet","time","notif","content","order","orderHeader","itemsRow","j","trend","head","barsWrap","heights","h","lineArea","circle","legend","searchInput","screen","channel","chLeft","subBtn","album","song","artist","progress","controls","story","author","tabHeader","calHeader","grid","column","colHead","card","dotCol","mapArea","cardBody","featureList","f","quote","q","fileRow","widths","w","DEFAULT_LABELS","currentLocale","customLabels","setLocale","locale","setLabels","labels","getLabel","applyA11yLoading","label","srNode","removeA11yLoading","activeOverlays","scrollLockOriginalOverflow","OverlayController","target","isFullscreen","blurVal","spinnerType","spinnerEl","overlayController","wrapLoadingButton","buttonEl","injectButtonKeyframes","currentStatus","originalWidth","originalHeight","originalHtml","resetTimer","pressFeedback","setupPressFeedback","clearResetTimer","setStatus","status","customText","prevStatus","styleType","renderLoadingStyle","renderResult","resetDelay","clickHandler","e","result","feedback","reset","diameter","existing","x","y","labelText","spinner","span","dots","pct","shimmer","stripes","oldText","newText","trace","skel","animation","burst","buttonKeyframesInjected","createLazyImage","skeleton","VSkeleton","defineComponent","slots","totalLines","_","VSkeletonPreset","root","VVeil","overlayInstance","VSpinner","VProgressBar","VOverlay","VLoadingButton","btnRef","VLazyImage","task","antiFlicker","wrapFetch","fetchFn","input","init","VeilkitController","config","measureInstance","isShowing","show","hide","destroy","veil","controller_default","veilkitPlugin","app","defineNuxtVeilkit","nuxtApp"],"mappings":"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;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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","file":"index.cjs","sourcesContent":["/**\n * Veilkit - Anti-Flicker Timing Controller\n * Prevents UI flicker:\n * 1. delay (default 150ms): suppresses loading state if task completes very quickly\n * 2. minVisible (default 300ms): guarantees loader stays visible long enough to avoid rapid flashing\n */\n\nexport interface AntiFlickerOptions {\n delay?: number; // ms to wait before showing loader\n minVisible?: number; // min ms loader remains once shown\n onShow?: () => void;\n onHide?: () => void;\n}\n\nexport class AntiFlickerController {\n private delay: number;\n private minVisible: number;\n private onShow?: () => void;\n private onHide?: () => void;\n\n private delayTimer: any = null;\n private minVisibleTimer: any = null;\n private shownTimestamp: number | null = null;\n private isVisible: boolean = false;\n private isPending: boolean = false;\n\n constructor(options: AntiFlickerOptions = {}) {\n this.delay = options.delay !== undefined ? options.delay : 150;\n this.minVisible = options.minVisible !== undefined ? options.minVisible : 300;\n this.onShow = options.onShow;\n this.onHide = options.onHide;\n }\n\n /**\n * Request loader to be shown (subject to delay)\n */\n public start(): void {\n if (this.isPending || this.isVisible) return;\n this.isPending = true;\n\n if (this.delay <= 0) {\n this.display();\n return;\n }\n\n this.delayTimer = setTimeout(() => {\n this.delayTimer = null;\n if (this.isPending) {\n this.display();\n }\n }, this.delay);\n }\n\n private display(): void {\n this.isPending = false;\n this.isVisible = true;\n this.shownTimestamp = Date.now();\n if (this.onShow) this.onShow();\n }\n\n /**\n * Request loader to be hidden (subject to minVisible)\n */\n public finish(callback?: () => void): void {\n // If it hasn't even shown yet, cancel the delay timer\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n this.isPending = false;\n if (callback) callback();\n return;\n }\n\n if (!this.isVisible) {\n this.isPending = false;\n if (callback) callback();\n return;\n }\n\n const elapsed = this.shownTimestamp ? Date.now() - this.shownTimestamp : 0;\n const remaining = Math.max(0, this.minVisible - elapsed);\n\n if (remaining <= 0) {\n this.hide();\n if (callback) callback();\n } else {\n this.minVisibleTimer = setTimeout(() => {\n this.minVisibleTimer = null;\n this.hide();\n if (callback) callback();\n }, remaining);\n }\n }\n\n private hide(): void {\n this.isVisible = false;\n this.isPending = false;\n this.shownTimestamp = null;\n if (this.onHide) this.onHide();\n }\n\n public active(): boolean {\n return this.isVisible;\n }\n\n public destroy(): void {\n if (this.delayTimer) clearTimeout(this.delayTimer);\n if (this.minVisibleTimer) clearTimeout(this.minVisibleTimer);\n this.delayTimer = null;\n this.minVisibleTimer = null;\n this.isVisible = false;\n this.isPending = false;\n }\n}\n","/**\n * Veilkit - Themes & Token Definitions\n * 11 Built-in Themes + `createTheme()`\n */\n\nimport { VeilThemeName, VeilThemeTokens, CustomThemeInput } from './types';\n\nexport const BUILTIN_THEMES: Record<VeilThemeName, VeilThemeTokens> = {\n light: {\n base: '#e5e7eb',\n highlight: 'rgba(255, 255, 255, 0.7)',\n radius: '6px',\n duration: '1.5s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: 'none',\n contrast: '#374151',\n },\n dark: {\n base: '#1f2937',\n highlight: 'rgba(255, 255, 255, 0.12)',\n radius: '6px',\n duration: '1.5s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: 'none',\n contrast: '#f3f4f6',\n },\n auto: {\n // Dynamic CSS variables will resolve light/dark via prefers-color-scheme\n base: 'var(--veil-auto-base, #e5e7eb)',\n highlight: 'var(--veil-auto-highlight, rgba(255, 255, 255, 0.7))',\n radius: '6px',\n duration: '1.5s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: 'none',\n contrast: 'var(--veil-auto-contrast, #374151)',\n },\n glass: {\n base: 'rgba(255, 255, 255, 0.08)',\n highlight: 'rgba(255, 255, 255, 0.25)',\n radius: '12px',\n duration: '1.8s',\n easing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n blur: '12px',\n border: '1px solid rgba(255, 255, 255, 0.15)',\n glow: 'inset 0 1px 1px 0 rgba(255, 255, 255, 0.25), 0 4px 16px 0 rgba(0, 0, 0, 0.12)',\n contrast: '#ffffff',\n },\n ios: {\n base: 'rgba(120, 120, 128, 0.18)',\n highlight: 'rgba(255, 255, 255, 0.45)',\n radius: '10px',\n duration: '1.4s',\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n border: 'none',\n contrast: '#1c1c1e',\n },\n material: {\n base: '#e7e0ec',\n highlight: '#f7f2fa',\n radius: '12px',\n duration: '1.6s',\n easing: 'cubic-bezier(0.2, 0, 0, 1)',\n border: 'none',\n contrast: '#1d1b20',\n },\n minimal: {\n base: '#f1f3f5',\n highlight: '#ffffff',\n radius: '4px',\n duration: '1.4s',\n easing: 'ease-in-out',\n border: 'none',\n contrast: '#212529',\n },\n mono: {\n base: '#e0e0e0',\n highlight: '#ffffff',\n radius: '0px',\n duration: '1.2s',\n easing: 'linear',\n border: '1px solid #cccccc',\n contrast: '#000000',\n },\n neon: {\n base: '#0c0b16',\n highlight: 'rgba(0, 240, 255, 0.5)',\n radius: '8px',\n duration: '1.6s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: '1px solid rgba(0, 240, 255, 0.3)',\n glow: '0 0 12px rgba(0, 240, 255, 0.35)',\n contrast: '#00f0ff',\n },\n sunset: {\n base: '#fed7aa',\n highlight: '#fff7ed',\n radius: '8px',\n duration: '1.7s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: 'none',\n glow: '0 0 8px rgba(251, 146, 60, 0.25)',\n contrast: '#7c2d12',\n },\n ocean: {\n base: '#0f2937',\n highlight: 'rgba(56, 189, 248, 0.45)',\n radius: '8px',\n duration: '1.7s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: '1px solid rgba(56, 189, 248, 0.2)',\n glow: '0 0 10px rgba(56, 189, 248, 0.25)',\n contrast: '#38bdf8',\n },\n};\n\nconst customThemesRegistry = new Map<string, VeilThemeTokens>();\n\n/**\n * Creates and registers a new custom theme\n */\nexport function createTheme(themeInput: CustomThemeInput): VeilThemeTokens {\n const parentTheme = themeInput.parent && BUILTIN_THEMES[themeInput.parent]\n ? BUILTIN_THEMES[themeInput.parent]\n : BUILTIN_THEMES.light;\n\n const resolvedTheme: VeilThemeTokens = {\n base: themeInput.base ?? parentTheme.base,\n highlight: themeInput.highlight ?? parentTheme.highlight,\n radius: themeInput.radius ?? parentTheme.radius,\n duration: themeInput.duration ?? parentTheme.duration,\n easing: themeInput.easing ?? parentTheme.easing,\n border: themeInput.border ?? parentTheme.border,\n blur: themeInput.blur ?? parentTheme.blur,\n glow: themeInput.glow ?? parentTheme.glow,\n contrast: themeInput.contrast ?? parentTheme.contrast,\n };\n\n customThemesRegistry.set(themeInput.name, resolvedTheme);\n return resolvedTheme;\n}\n\n/**\n * Get theme tokens by name or object\n */\nexport function getThemeTokens(theme?: VeilThemeName | CustomThemeInput | string): VeilThemeTokens {\n if (!theme) return BUILTIN_THEMES.light;\n if (typeof theme === 'string') {\n if (theme in BUILTIN_THEMES) {\n return BUILTIN_THEMES[theme as VeilThemeName];\n }\n const custom = customThemesRegistry.get(theme);\n if (custom) return custom;\n return BUILTIN_THEMES.light;\n }\n return createTheme(theme);\n}\n","/**\n * Veilkit - Animation Engine\n * 30 GPU-Accelerated Animation Definitions (transform & opacity only)\n */\n\nimport { VeilAnimationName, VeilDirection } from './types';\n\nexport interface AnimationConfig {\n name: VeilAnimationName;\n duration?: number | string;\n direction?: VeilDirection;\n speedMultiplier?: number;\n intensity?: number;\n}\n\nexport const ANIMATION_NAMES: VeilAnimationName[] = [\n 'shimmer',\n 'wave',\n 'pulse',\n 'blink',\n 'breathe',\n 'glass-shine',\n 'gradient-flow',\n 'aurora',\n 'scan-line',\n 'sparkle',\n 'neon-glow',\n 'stagger',\n 'ripple',\n 'ping-pong',\n 'wipe',\n 'cascade',\n 'spotlight',\n 'rainbow',\n 'heartbeat',\n 'liquid',\n 'stripes',\n 'halftone',\n 'border-glow',\n 'typewriter',\n 'glitch',\n 'pixelate',\n 'tilt',\n 'diagonal-sweep',\n 'bounce-in',\n 'fade-slide',\n 'none',\n];\n\n/**\n * Generates the CSS keyframes and utility rules for all 30 animations.\n * Strictly uses transform and opacity for 60fps GPU execution.\n */\nexport function getAnimationKeyframesCSS(): string {\n return [\n '@keyframes veil-shimmer-ltr{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}',\n '@keyframes veil-shimmer-rtl{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}',\n '@keyframes veil-shimmer-ttb{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}',\n '@keyframes veil-shimmer-btt{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}',\n '@keyframes veil-wave{0%{transform:translateX(-120%) scaleX(0.8);opacity:0.3}50%{opacity:0.95}100%{transform:translateX(120%) scaleX(1.2);opacity:0.3}}',\n '@keyframes veil-pulse{0%,100%{opacity:1}50%{opacity:0.38}}',\n '@keyframes veil-blink{0%,49%{opacity:1}50%,99%{opacity:0.2}100%{opacity:1}}',\n '@keyframes veil-breathe{0%,100%{opacity:0.65;transform:scale(0.995)}50%{opacity:1;transform:scale(1.005)}}',\n '@keyframes veil-glass-shine{0%{transform:translate3d(-150%,-150%,0) rotate(35deg);opacity:0.1}40%,60%{opacity:0.85}100%{transform:translate3d(200%,200%,0) rotate(35deg);opacity:0.1}}',\n '@keyframes veil-gradient-flow{0%{transform:translateX(-66.6%)}100%{transform:translateX(0%)}}',\n '@keyframes veil-aurora{0%{transform:translate3d(-20%,-15%,0) rotate(0deg) scale(1);opacity:0.5}50%{transform:translate3d(25%,20%,0) rotate(180deg) scale(1.25);opacity:0.85}100%{transform:translate3d(-20%,-15%,0) rotate(360deg) scale(1);opacity:0.5}}',\n '@keyframes veil-scan-line{0%{transform:translateY(-100%);opacity:0.2}50%{opacity:1}100%{transform:translateY(300%);opacity:0.2}}',\n '@keyframes veil-sparkle{0%,100%{opacity:0.2;transform:scale(0.98)}25%{opacity:0.8;transform:scale(1.02)}50%{opacity:0.3;transform:scale(0.99)}75%{opacity:0.95;transform:scale(1.01)}}',\n '@keyframes veil-neon-glow{0%,100%{opacity:0.45;transform:scale(0.998)}50%{opacity:1;transform:scale(1.002)}}',\n '@keyframes veil-ripple{0%{transform:scale(0.2);opacity:0.9}100%{transform:scale(2.4);opacity:0}}',\n '@keyframes veil-ping-pong{0%,100%{transform:translateX(-100%)}50%{transform:translateX(100%)}}',\n '@keyframes veil-wipe{0%{transform:translateX(-100%) scaleX(0.2);opacity:0.2}50%{transform:translateX(0%) scaleX(1);opacity:0.9}100%{transform:translateX(100%) scaleX(0.2);opacity:0.2}}',\n '@keyframes veil-cascade{0%{transform:translateY(-100%);opacity:0.3}50%{opacity:0.95}100%{transform:translateY(100%);opacity:0.3}}',\n '@keyframes veil-spotlight{0%{transform:translate3d(-100%,-50%,0);opacity:0.15}50%{transform:translate3d(50%,0%,0);opacity:0.85}100%{transform:translate3d(200%,50%,0);opacity:0.15}}',\n '@keyframes veil-rainbow{0%{filter:hue-rotate(0deg);transform:translateX(-50%)}100%{filter:hue-rotate(360deg);transform:translateX(0%)}}',\n '@keyframes veil-heartbeat{0%,100%{transform:scale(1);opacity:0.7}14%{transform:scale(1.025);opacity:1}28%{transform:scale(1);opacity:0.75}42%{transform:scale(1.035);opacity:1}70%{transform:scale(1);opacity:0.7}}',\n '@keyframes veil-liquid{0%,100%{transform:translateX(-100%) scaleY(0.9) skewX(-8deg);opacity:0.4}50%{transform:translateX(100%) scaleY(1.1) skewX(8deg);opacity:0.9}}',\n '@keyframes veil-stripes{0%{transform:translateX(-48px)}100%{transform:translateX(0px)}}',\n '@keyframes veil-halftone{0%,100%{opacity:0.35;transform:scale(0.995)}50%{opacity:0.95;transform:scale(1.005)}}',\n '@keyframes veil-border-glow{0%,100%{opacity:0.5;transform:scale(0.998)}50%{opacity:1;transform:scale(1.002)}}',\n '@keyframes veil-typewriter{0%{transform:scaleX(0.1);transform-origin:left;opacity:0.4}100%{transform:scaleX(1);transform-origin:left;opacity:1}}',\n '@keyframes veil-glitch{0%,100%{transform:translate(0);opacity:0.8}20%{transform:translate(-2px,1px);opacity:0.95}40%{transform:translate(2px,-1px);opacity:0.85}60%{transform:translate(-1px,-1px);opacity:1}80%{transform:translate(1px,2px);opacity:0.9}}',\n '@keyframes veil-pixelate{0%,100%{opacity:0.3;transform:scale(0.99)}25%{opacity:0.75;transform:scale(1)}50%{opacity:0.45;transform:scale(0.995)}75%{opacity:0.9;transform:scale(1.005)}}',\n '@keyframes veil-tilt{0%,100%{transform:perspective(600px) rotateX(0deg) rotateY(0deg);opacity:0.7}50%{transform:perspective(600px) rotateX(4deg) rotateY(-4deg);opacity:1}}',\n '@keyframes veil-diagonal-sweep{0%{transform:translate3d(-100%,-100%,0) rotate(-45deg)}100%{transform:translate3d(150%,150%,0) rotate(-45deg)}}',\n '@keyframes veil-bounce-in{0%,100%{transform:scale(0.985);opacity:0.6}50%{transform:scale(1.015);opacity:1}}',\n '@keyframes veil-fade-slide{0%,100%{transform:translateY(3px);opacity:0.5}50%{transform:translateY(-3px);opacity:1}}',\n '[data-veil-anim=\"stagger\"]>*{animation-delay:calc(var(--veil-stagger-idx,0)*120ms)!important}',\n ].join('');\n}\n","/**\n * Veilkit - CSS Engine & Style Injector\n * SSR-safe, adoptedStyleSheets support, CSP nonce, and zero-layout-thrash animations\n */\n\nimport { BUILTIN_THEMES } from './themes';\nimport { getAnimationKeyframesCSS } from './animations';\n\nlet styleInjected = false;\nlet cspNonce: string | undefined = undefined;\n\n/**\n * Configure CSP nonce for injected styles\n */\nexport function setNonce(nonce: string): void {\n cspNonce = nonce;\n}\n\n/**\n * Generates the full CSS stylesheet string\n */\nexport function getStylesCSS(): string {\n const light = BUILTIN_THEMES.light;\n const dark = BUILTIN_THEMES.dark;\n\n return `\n/* === VEILKIT CORE STYLES === */\n:root {\n --veil-base: ${light.base};\n --veil-highlight: ${light.highlight};\n --veil-radius: ${light.radius};\n --veil-duration: ${light.duration};\n --veil-easing: ${light.easing};\n --veil-direction: ltr;\n --veil-border: none;\n --veil-blur: none;\n --veil-glow: none;\n --veil-contrast: ${light.contrast};\n\n --veil-auto-base: ${light.base};\n --veil-auto-highlight: ${light.highlight};\n --veil-auto-contrast: ${light.contrast};\n}\n\n@media (prefers-color-scheme: dark) {\n :root {\n --veil-auto-base: ${dark.base};\n --veil-auto-highlight: ${dark.highlight};\n --veil-auto-contrast: ${dark.contrast};\n }\n}\n\n/* === DARK THEME SELECTORS === */\n[data-theme=\"dark\"], .dark, [data-theme=\"dark\"] .veil-skeleton {\n --veil-base: ${dark.base};\n --veil-highlight: ${dark.highlight};\n --veil-contrast: ${dark.contrast};\n}\n\n/* === THEME ATTRIBUTE CLASSES === */\n${Object.entries(BUILTIN_THEMES).map(([name, t]) => `[data-veil-theme=\"${name}\"]{--veil-base:${t.base};--veil-highlight:${t.highlight};--veil-radius:${t.radius};--veil-duration:${t.duration};--veil-easing:${t.easing};${t.border ? `--veil-border:${t.border};` : ''}${t.blur ? `--veil-blur:${t.blur};` : ''}${t.glow ? `--veil-glow:${t.glow};` : ''}--veil-contrast:${t.contrast};}`).join('')}\n\n/* === BASE SKELETON ELEMENT === */\n.veil-skeleton {\n position: relative;\n display: block;\n box-sizing: border-box;\n background-color: var(--veil-base, #e5e7eb);\n border-radius: var(--veil-radius, 6px);\n border: var(--veil-border, none);\n box-shadow: var(--veil-glow, none);\n overflow: hidden;\n pointer-events: none;\n user-select: none;\n min-height: 12px;\n}\n\n[data-veil-theme=\"glass\"] .veil-skeleton,\n.veil-skeleton[data-veil-theme=\"glass\"] {\n backdrop-filter: blur(var(--veil-blur, 12px));\n -webkit-backdrop-filter: blur(var(--veil-blur, 12px));\n}\n\n/* === SHIMMER / ANIMATION OVERLAY === */\n.veil-skeleton::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n will-change: transform, opacity;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--veil-highlight, rgba(255, 255, 255, 0.7)) 50%,\n transparent 100%\n );\n animation-duration: var(--veil-duration, 1.5s);\n animation-timing-function: var(--veil-easing, cubic-bezier(0.4, 0, 0.2, 1));\n animation-iteration-count: infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n animation-play-state: var(--veil-play-state, running);\n}\n\n/* Animation name mapping */\n.veil-skeleton[data-veil-anim=\"shimmer\"]::after,\n.veil-skeleton:not([data-veil-anim])::after {\n animation-name: veil-shimmer-ltr;\n}\n.veil-skeleton[data-veil-dir=\"rtl\"]::after,\n[dir=\"rtl\"] .veil-skeleton[data-veil-anim=\"shimmer\"]::after {\n animation-name: veil-shimmer-rtl;\n}\n.veil-skeleton[data-veil-dir=\"ttb\"]::after {\n animation-name: veil-shimmer-ttb;\n background: linear-gradient(180deg, transparent 0%, var(--veil-highlight, rgba(255,255,255,0.7)) 50%, transparent 100%);\n}\n.veil-skeleton[data-veil-dir=\"btt\"]::after {\n animation-name: veil-shimmer-btt;\n background: linear-gradient(0deg, transparent 0%, var(--veil-highlight, rgba(255,255,255,0.7)) 50%, transparent 100%);\n}\n\n.veil-skeleton[data-veil-anim=\"wave\"]::after {\n animation-name: veil-wave;\n}\n\n.veil-skeleton[data-veil-anim=\"pulse\"]::after {\n background: none;\n}\n.veil-skeleton[data-veil-anim=\"pulse\"] {\n animation: veil-pulse var(--veil-duration, 1.5s) var(--veil-easing, ease-in-out) infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n animation-play-state: var(--veil-play-state, running);\n}\n\n.veil-skeleton[data-veil-anim=\"blink\"]::after {\n background: none;\n}\n.veil-skeleton[data-veil-anim=\"blink\"] {\n animation: veil-blink var(--veil-duration, 1.2s) steps(2, start) infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n animation-play-state: var(--veil-play-state, running);\n}\n\n.veil-skeleton[data-veil-anim=\"breathe\"]::after {\n background: none;\n}\n.veil-skeleton[data-veil-anim=\"breathe\"] {\n animation: veil-breathe var(--veil-duration, 2.2s) var(--veil-easing, ease-in-out) infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n animation-play-state: var(--veil-play-state, running);\n}\n\n.veil-skeleton[data-veil-anim=\"glass-shine\"]::after {\n animation-name: veil-glass-shine;\n background: linear-gradient(\n 115deg,\n transparent 20%,\n var(--veil-highlight, rgba(255, 255, 255, 0.4)) 50%,\n transparent 80%\n );\n}\n\n.veil-skeleton[data-veil-anim=\"gradient-flow\"]::after {\n width: 300%;\n animation-name: veil-gradient-flow;\n background: linear-gradient(\n 90deg,\n var(--veil-base, #e5e7eb) 0%,\n var(--veil-highlight, rgba(255, 255, 255, 0.8)) 30%,\n var(--veil-base, #e5e7eb) 60%,\n var(--veil-highlight, rgba(255, 255, 255, 0.8)) 100%\n );\n}\n\n.veil-skeleton[data-veil-anim=\"aurora\"]::after {\n width: 160%;\n height: 160%;\n animation-name: veil-aurora;\n background: radial-gradient(\n circle at 50% 50%,\n rgba(56, 189, 248, 0.3) 0%,\n rgba(168, 85, 247, 0.25) 45%,\n rgba(236, 72, 153, 0.2) 75%,\n transparent 100%\n );\n}\n\n.veil-skeleton[data-veil-anim=\"scan-line\"]::after {\n height: 30%;\n animation-name: veil-scan-line;\n background: linear-gradient(180deg, transparent, var(--veil-highlight, rgba(0, 240, 255, 0.8)), transparent);\n}\n\n.veil-skeleton[data-veil-anim=\"sparkle\"]::after {\n animation-name: veil-sparkle;\n}\n\n.veil-skeleton[data-veil-anim=\"neon-glow\"] {\n animation: veil-neon-glow var(--veil-duration, 1.6s) ease-in-out infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n}\n\n.veil-skeleton[data-veil-anim=\"ripple\"]::after {\n width: 100%;\n height: 100%;\n animation: veil-ripple var(--veil-duration, 1.8s) ease-out infinite;\n background: radial-gradient(circle, var(--veil-highlight, rgba(255, 255, 255, 0.7)) 10%, transparent 70%);\n}\n\n.veil-skeleton[data-veil-anim=\"ping-pong\"]::after {\n animation-name: veil-ping-pong;\n animation-duration: var(--veil-duration, 2.4s);\n animation-timing-function: ease-in-out;\n}\n\n.veil-skeleton[data-veil-anim=\"wipe\"]::after {\n width: 100%;\n animation-name: veil-wipe;\n animation-duration: var(--veil-duration, 1.8s);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.veil-skeleton[data-veil-anim=\"cascade\"]::after {\n width: 100%;\n animation-name: veil-cascade;\n animation-duration: var(--veil-duration, 1.6s);\n}\n\n.veil-skeleton[data-veil-anim=\"spotlight\"]::after {\n width: 140%;\n height: 140%;\n animation-name: veil-spotlight;\n animation-duration: var(--veil-duration, 2.5s);\n background: radial-gradient(circle at center, var(--veil-highlight, rgba(255, 255, 255, 0.85)) 0%, transparent 60%);\n}\n\n.veil-skeleton[data-veil-anim=\"rainbow\"]::after {\n width: 250%;\n animation-name: veil-rainbow;\n animation-duration: var(--veil-duration, 3.5s);\n background: linear-gradient(90deg, #f43f5e, #fbbf24, #10b981, #06b6d4, #8b5cf6, #f43f5e);\n opacity: 0.25;\n}\n\n.veil-skeleton[data-veil-anim=\"heartbeat\"] {\n animation: veil-heartbeat var(--veil-duration, 1.4s) ease-in-out infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n}\n.veil-skeleton[data-veil-anim=\"heartbeat\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"liquid\"]::after {\n width: 150%;\n animation-name: veil-liquid;\n animation-duration: var(--veil-duration, 2.2s);\n background: radial-gradient(ellipse at center, var(--veil-highlight, rgba(255, 255, 255, 0.7)) 0%, transparent 70%);\n}\n\n.veil-skeleton[data-veil-anim=\"stripes\"]::after {\n width: 200%;\n animation-name: veil-stripes;\n animation-duration: var(--veil-duration, 1.5s);\n animation-timing-function: linear;\n background: repeating-linear-gradient(45deg, transparent, transparent 12px, var(--veil-highlight, rgba(255, 255, 255, 0.4)) 12px, var(--veil-highlight, rgba(255, 255, 255, 0.4)) 24px);\n}\n\n.veil-skeleton[data-veil-anim=\"halftone\"] {\n animation: veil-halftone var(--veil-duration, 1.8s) ease-in-out infinite;\n}\n.veil-skeleton[data-veil-anim=\"halftone\"]::after {\n background: radial-gradient(var(--veil-highlight, rgba(255, 255, 255, 0.5)) 15%, transparent 16%);\n background-size: 8px 8px;\n}\n\n.veil-skeleton[data-veil-anim=\"border-glow\"] {\n animation: veil-border-glow var(--veil-duration, 1.6s) ease-in-out infinite;\n box-shadow: 0 0 12px var(--veil-highlight, rgba(99, 102, 241, 0.5));\n}\n.veil-skeleton[data-veil-anim=\"border-glow\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"typewriter\"] {\n animation: veil-typewriter var(--veil-duration, 1.5s) steps(20, end) infinite alternate;\n}\n.veil-skeleton[data-veil-anim=\"typewriter\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"glitch\"] {\n animation: veil-glitch var(--veil-duration, 2s) steps(4, jump-none) infinite;\n}\n.veil-skeleton[data-veil-anim=\"glitch\"]::after {\n background: linear-gradient(90deg, transparent, var(--veil-highlight, rgba(255, 255, 255, 0.6)), transparent);\n}\n\n.veil-skeleton[data-veil-anim=\"pixelate\"] {\n animation: veil-pixelate var(--veil-duration, 1.4s) steps(5, start) infinite;\n}\n.veil-skeleton[data-veil-anim=\"pixelate\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"tilt\"] {\n animation: veil-tilt var(--veil-duration, 2.5s) ease-in-out infinite;\n transform-style: preserve-3d;\n}\n.veil-skeleton[data-veil-anim=\"tilt\"]::after {\n animation-name: veil-shimmer-ltr;\n}\n\n.veil-skeleton[data-veil-anim=\"diagonal-sweep\"]::after {\n width: 200%;\n height: 200%;\n animation-name: veil-diagonal-sweep;\n animation-duration: var(--veil-duration, 2s);\n background: linear-gradient(90deg, transparent 20%, var(--veil-highlight, rgba(255, 255, 255, 0.65)) 50%, transparent 80%);\n}\n\n.veil-skeleton[data-veil-anim=\"bounce-in\"] {\n animation: veil-bounce-in var(--veil-duration, 1.6s) cubic-bezier(0.34, 1.56, 0.64, 1) infinite;\n}\n.veil-skeleton[data-veil-anim=\"bounce-in\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"fade-slide\"] {\n animation: veil-fade-slide var(--veil-duration, 1.6s) ease-in-out infinite;\n}\n.veil-skeleton[data-veil-anim=\"fade-slide\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"none\"]::after {\n display: none !important;\n}\n\n/* === PRIMITIVE VARIANTS === */\n.veil-skeleton[data-veil-shape=\"line\"] {\n height: 1em;\n margin: 0.35em 0;\n border-radius: var(--veil-radius, 4px);\n}\n.veil-skeleton[data-veil-shape=\"circle\"] {\n border-radius: 50% !important;\n aspect-ratio: 1 / 1;\n}\n.veil-skeleton[data-veil-shape=\"heading\"] {\n height: 1.8em;\n margin: 0.5em 0;\n border-radius: var(--veil-radius, 6px);\n}\n.veil-skeleton[data-veil-shape=\"button\"] {\n height: 2.5rem;\n border-radius: var(--veil-radius, 8px);\n}\n.veil-skeleton[data-veil-shape=\"badge\"] {\n height: 1.35rem;\n border-radius: 9999px;\n display: inline-block;\n}\n.veil-skeleton[data-veil-shape=\"icon\"] {\n width: 1.5rem;\n height: 1.5rem;\n border-radius: var(--veil-radius, 6px);\n display: inline-block;\n}\n.veil-skeleton[data-veil-shape=\"input\"] {\n height: 2.6rem;\n border-radius: var(--veil-radius, 8px);\n}\n.veil-skeleton[data-veil-shape=\"divider\"] {\n height: 1px;\n width: 100%;\n margin: 1rem 0;\n min-height: 1px;\n}\n\n/* Natural randomized last-line widths */\n.veil-lines-group > .veil-skeleton:last-child {\n width: var(--veil-last-width, 68%);\n}\n\n/* === ACCESSIBILITY === */\n.veil-sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border-width: 0 !important;\n}\n\n/* prefers-reduced-motion */\n@media (prefers-reduced-motion: reduce) {\n .veil-skeleton::after {\n animation: none !important;\n display: none !important;\n }\n .veil-skeleton {\n animation: veil-pulse 3s ease-in-out infinite !important;\n transform: none !important;\n }\n}\n\n/* forced-colors */\n@media (forced-colors: active) {\n .veil-skeleton {\n forced-color-adjust: none;\n background-color: ButtonFace !important;\n outline: 1px solid Highlight !important;\n }\n .veil-skeleton::after {\n display: none !important;\n }\n}\n\n/* Offscreen & Tab Hidden Pausing */\n[data-veil-tab-hidden=\"true\"] .veil-skeleton,\n[data-veil-tab-hidden=\"true\"] .veil-skeleton::after,\n[data-veil-offscreen=\"true\"],\n[data-veil-offscreen=\"true\"]::after {\n animation-play-state: paused !important;\n}\n\n/* === REVEAL TRANSITIONS === */\n.veil-revealing {\n position: relative;\n}\n.veil-reveal-fade {\n animation: veil-reveal-fade 350ms cubic-bezier(0.16, 1, 0.3, 1) forwards;\n}\n.veil-reveal-blur-in {\n animation: veil-reveal-blur 400ms cubic-bezier(0.16, 1, 0.3, 1) forwards;\n}\n.veil-reveal-slide-up {\n animation: veil-reveal-slide 400ms cubic-bezier(0.16, 1, 0.3, 1) forwards;\n}\n.veil-reveal-scale {\n animation: veil-reveal-scale 350ms cubic-bezier(0.16, 1, 0.3, 1) forwards;\n}\n\n@keyframes veil-reveal-fade {\n 0% { opacity: 0; }\n 100% { opacity: 1; }\n}\n@keyframes veil-reveal-blur {\n 0% { opacity: 0; filter: blur(8px); }\n 100% { opacity: 1; filter: blur(0px); }\n}\n@keyframes veil-reveal-slide {\n 0% { opacity: 0; transform: translateY(12px); }\n 100% { opacity: 1; transform: translateY(0); }\n}\n@keyframes veil-reveal-scale {\n 0% { opacity: 0; transform: scale(0.96); }\n 100% { opacity: 1; transform: scale(1); }\n}\n\n/* === SPINNERS, PROGRESS, OVERLAY, BUTTON, LAZY IMAGE === */\n.veil-spinner {\n display: inline-block;\n box-sizing: border-box;\n vertical-align: middle;\n}\n.veil-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n background-color: var(--veil-overlay-bg, rgba(255, 255, 255, 0.75));\n backdrop-filter: blur(var(--veil-overlay-blur, 6px));\n -webkit-backdrop-filter: blur(var(--veil-overlay-blur, 6px));\n z-index: 100;\n transition: opacity 250ms ease;\n}\n.veil-overlay-fullscreen {\n position: fixed !important;\n z-index: 999999 !important;\n}\n.veil-progress-bar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 3px;\n z-index: 999999;\n background: transparent;\n pointer-events: none;\n}\n.veil-progress-inner {\n height: 100%;\n background: var(--veil-progress-color, #3b82f6);\n box-shadow: 0 0 10px var(--veil-progress-color, #3b82f6), 0 0 5px var(--veil-progress-color, #3b82f6);\n transition: width 200ms ease, opacity 350ms ease;\n}\n.veil-btn-loading {\n position: relative;\n pointer-events: none;\n cursor: default;\n}\n.veil-btn-spinner-wrap {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px;\n}\n.veil-lazy-img-wrap {\n position: relative;\n overflow: hidden;\n display: inline-block;\n}\n.veil-lazy-img {\n transition: opacity 350ms ease, filter 350ms ease;\n}\n.veil-lazy-img-loading {\n opacity: 0;\n filter: blur(10px);\n}\n.veil-lazy-img-loaded {\n opacity: 1;\n filter: blur(0px);\n}\n\n${getAnimationKeyframesCSS()}\n`;\n}\n\n/**\n * Injects CSS into the document head safely (runs only once, SSR safe)\n */\nexport function injectStyles(nonce?: string): void {\n if (styleInjected || typeof document === 'undefined') return;\n styleInjected = true;\n\n const css = getStylesCSS();\n const effectiveNonce = nonce || cspNonce;\n\n // Try adoptedStyleSheets if supported\n if (\n typeof document.adoptedStyleSheets !== 'undefined' &&\n typeof CSSStyleSheet !== 'undefined' &&\n 'replaceSync' in CSSStyleSheet.prototype &&\n !effectiveNonce // Some CSP setups disallow adoptedStyleSheets with strict style-src\n ) {\n try {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(css);\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n return;\n } catch {\n // Fallback to <style> injection\n }\n }\n\n // <style> tag fallback with CSP nonce support\n const styleEl = document.createElement('style');\n styleEl.id = 'veilkit-styles';\n if (effectiveNonce) {\n styleEl.setAttribute('nonce', effectiveNonce);\n }\n styleEl.textContent = css;\n document.head.appendChild(styleEl);\n}\n","/**\n * Veilkit - Progress System\n * Route Progress Bar (NProgress-style with auto-trickle) +\n * Determinate & Indeterminate Linear and Circular Progress components\n */\n\nimport { ProgressProps } from './types';\nimport { injectStyles } from './css';\n\nexport class RouteProgressController {\n private el: HTMLElement | null = null;\n private innerEl: HTMLElement | null = null;\n private currentProgress: number = 0;\n private trickleTimer: any = null;\n private status: 'idle' | 'loading' | 'success' | 'error' = 'idle';\n\n private ensureDOM(): void {\n if (this.el || typeof document === 'undefined') return;\n injectStyles();\n\n this.el = document.createElement('div');\n this.el.className = 'veil-progress-bar';\n this.el.setAttribute('role', 'progressbar');\n this.el.setAttribute('aria-valuemin', '0');\n this.el.setAttribute('aria-valuemax', '100');\n this.el.setAttribute('aria-valuenow', '0');\n\n this.innerEl = document.createElement('div');\n this.innerEl.className = 'veil-progress-inner';\n this.innerEl.style.width = '0%';\n this.innerEl.style.opacity = '1';\n\n this.el.appendChild(this.innerEl);\n document.body.appendChild(this.el);\n }\n\n public start(): void {\n this.ensureDOM();\n if (this.status === 'loading') return;\n this.status = 'loading';\n this.currentProgress = 0;\n this.set(0.08);\n\n if (this.innerEl) {\n this.innerEl.style.opacity = '1';\n this.innerEl.style.backgroundColor = 'var(--veil-progress-color, #3b82f6)';\n }\n\n this.trickle();\n }\n\n public set(n: number): void {\n this.ensureDOM();\n this.currentProgress = Math.min(1, Math.max(0, n));\n const percent = Math.round(this.currentProgress * 100);\n\n if (this.innerEl) {\n this.innerEl.style.width = `${percent}%`;\n }\n if (this.el) {\n this.el.setAttribute('aria-valuenow', String(percent));\n }\n }\n\n public inc(amount?: number): void {\n const n = this.currentProgress;\n if (n >= 1) return;\n\n if (typeof amount !== 'number') {\n if (n >= 0 && n < 0.2) amount = 0.1;\n else if (n >= 0.2 && n < 0.5) amount = 0.04;\n else if (n >= 0.5 && n < 0.8) amount = 0.02;\n else if (n >= 0.8 && n < 0.99) amount = 0.005;\n else amount = 0;\n }\n\n this.set(n + amount);\n }\n\n private trickle(): void {\n this.stopTrickle();\n this.trickleTimer = setInterval(() => {\n if (this.currentProgress < 0.95) {\n this.inc();\n }\n }, 250);\n }\n\n private stopTrickle(): void {\n if (this.trickleTimer) {\n clearInterval(this.trickleTimer);\n this.trickleTimer = null;\n }\n }\n\n public done(): void {\n if (this.status === 'idle') return;\n this.stopTrickle();\n this.set(1);\n this.status = 'idle';\n\n setTimeout(() => {\n if (this.innerEl) {\n this.innerEl.style.opacity = '0';\n }\n setTimeout(() => {\n if (this.el) {\n this.el.remove();\n this.el = null;\n this.innerEl = null;\n }\n this.currentProgress = 0;\n }, 350);\n }, 200);\n }\n\n public fail(): void {\n this.stopTrickle();\n this.status = 'error';\n if (this.innerEl) {\n this.innerEl.style.backgroundColor = '#ef4444'; // Red error color\n }\n this.set(1);\n setTimeout(() => this.done(), 500);\n }\n}\n\nexport const progressController = new RouteProgressController();\n\n/**\n * Creates an inline determinate or indeterminate Linear/Circular Progress element\n */\nexport function createProgressElement(props: ProgressProps = {}): HTMLElement {\n injectStyles();\n\n const isCircular = Boolean(props.circular);\n const color = props.color || 'var(--veil-progress-color, #3b82f6)';\n const trackColor = props.trackColor || 'rgba(0, 0, 0, 0.08)';\n\n if (isCircular) {\n const size = props.size !== undefined ? (typeof props.size === 'number' ? `${props.size}px` : props.size) : '48px';\n const strokeWidth = props.strokeWidth || 4;\n\n const container = document.createElement('div');\n container.className = `veil-progress-circular ${props.className || ''}`.trim();\n container.style.width = size;\n container.style.height = size;\n container.style.display = 'inline-flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.style.position = 'relative';\n\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 48 48');\n svg.style.width = '100%';\n svg.style.height = '100%';\n svg.style.transform = 'rotate(-90deg)';\n\n const track = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n track.setAttribute('cx', '24');\n track.setAttribute('cy', '24');\n track.setAttribute('r', '20');\n track.setAttribute('fill', 'none');\n track.setAttribute('stroke', trackColor);\n track.setAttribute('stroke-width', String(strokeWidth));\n\n const meter = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n meter.setAttribute('cx', '24');\n meter.setAttribute('cy', '24');\n meter.setAttribute('r', '20');\n meter.setAttribute('fill', 'none');\n meter.setAttribute('stroke', color);\n meter.setAttribute('stroke-width', String(strokeWidth));\n meter.setAttribute('stroke-linecap', 'round');\n\n const circumference = 2 * Math.PI * 20; // ~125.66\n meter.setAttribute('stroke-dasharray', String(circumference));\n\n if (props.value !== undefined) {\n const val = Math.min(100, Math.max(0, props.value));\n const offset = circumference - (val / 100) * circumference;\n meter.setAttribute('stroke-dashoffset', String(offset));\n meter.style.transition = 'stroke-dashoffset 300ms ease';\n } else {\n // Indeterminate mode\n meter.setAttribute('stroke-dashoffset', String(circumference * 0.75));\n svg.style.animation = 'veil-spin 1200ms linear infinite';\n }\n\n svg.append(track, meter);\n container.appendChild(svg);\n\n if (props.showPercentage && props.value !== undefined) {\n const text = document.createElement('span');\n text.style.position = 'absolute';\n text.style.fontSize = '11px';\n text.style.fontWeight = '600';\n text.textContent = `${Math.round(props.value)}%`;\n container.appendChild(text);\n }\n\n return container;\n }\n\n // Linear progress\n const height = props.height !== undefined ? (typeof props.height === 'number' ? `${props.height}px` : props.height) : '4px';\n const container = document.createElement('div');\n container.className = `veil-progress-linear ${props.className || ''}`.trim();\n container.setAttribute('role', 'progressbar');\n container.style.width = '100%';\n container.style.height = height;\n container.style.backgroundColor = trackColor;\n container.style.borderRadius = '9999px';\n container.style.overflow = 'hidden';\n container.style.position = 'relative';\n\n const bar = document.createElement('div');\n bar.style.height = '100%';\n bar.style.backgroundColor = color;\n bar.style.borderRadius = '9999px';\n\n if (props.value !== undefined) {\n const val = Math.min(100, Math.max(0, props.value));\n container.setAttribute('aria-valuenow', String(val));\n bar.style.width = `${val}%`;\n bar.style.transition = 'width 250ms ease';\n } else {\n // Indeterminate\n bar.style.width = '35%';\n bar.style.animation = 'veil-progress-indeterminate 1400ms ease-in-out infinite';\n }\n\n container.appendChild(bar);\n return container;\n}\n","/**\n * Veilkit - Global Loading Manager\n * Manages concurrent requests using request IDs and counter.\n * Ensures loader remains active until all pending operations finish.\n */\n\ntype Listener = (isLoading: boolean, count: number) => void;\n\nexport class LoadingManager {\n private activeIds = new Set<string>();\n private counter: number = 0;\n private listeners = new Set<Listener>();\n\n /**\n * Start a loading operation. Optionally associate with a unique ID.\n */\n public start(id?: string): string {\n const key = id || `req_${Date.now()}_${Math.random().toString(36).substring(2, 7)}`;\n if (!this.activeIds.has(key)) {\n this.activeIds.add(key);\n this.counter++;\n this.notify();\n }\n return key;\n }\n\n /**\n * Complete a loading operation by ID or decrement counter.\n */\n public stop(id?: string): void {\n if (id) {\n if (this.activeIds.has(id)) {\n this.activeIds.delete(id);\n this.counter = Math.max(0, this.counter - 1);\n this.notify();\n }\n } else {\n if (this.counter > 0) {\n this.counter--;\n // Remove an arbitrary id if any\n const first = this.activeIds.values().next().value;\n if (first) this.activeIds.delete(first);\n this.notify();\n }\n }\n }\n\n /**\n * True if there is at least one active operation\n */\n public isLoading(): boolean {\n return this.counter > 0;\n }\n\n /**\n * Current number of concurrent operations\n */\n public getCount(): number {\n return this.counter;\n }\n\n /**\n * Subscribe to state changes\n */\n public subscribe(listener: Listener): () => void {\n this.listeners.add(listener);\n // Initial emission\n listener(this.isLoading(), this.counter);\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * Reset all active requests\n */\n public reset(): void {\n this.activeIds.clear();\n this.counter = 0;\n this.notify();\n }\n\n private notify(): void {\n const loading = this.isLoading();\n for (const listener of this.listeners) {\n listener(loading, this.counter);\n }\n }\n}\n\nexport const loadingManager = new LoadingManager();\n","import { ref, onMounted, onUnmounted, watch } from 'vue';\nimport { AntiFlickerController } from '../core/antiflicker';\nimport { progressController } from '../core/progress';\nimport { loadingManager } from '../core/manager';\n\nexport function useProgress() {\n return {\n start: () => progressController.start(),\n set: (n: number) => progressController.set(n),\n inc: (amount?: number) => progressController.inc(amount),\n done: () => progressController.done(),\n fail: () => progressController.fail(),\n };\n}\n\nexport function useDelayedLoading(\n loadingRef: { value: boolean },\n options: { delay?: number; minVisible?: number } = {},\n) {\n const visible = ref(false);\n let controller: AntiFlickerController | null = null;\n\n onMounted(() => {\n controller = new AntiFlickerController({\n delay: options.delay !== undefined ? options.delay : 150,\n minVisible: options.minVisible !== undefined ? options.minVisible : 300,\n onShow: () => { visible.value = true; },\n onHide: () => { visible.value = false; },\n });\n\n if (loadingRef.value) {\n controller.start();\n }\n });\n\n watch(\n () => loadingRef.value,\n (val) => {\n if (!controller) return;\n if (val) controller.start();\n else controller.finish();\n },\n );\n\n onUnmounted(() => {\n if (controller) {\n controller.destroy();\n controller = null;\n }\n });\n\n return visible;\n}\n\nexport function useLoading<T, Args extends any[]>(\n asyncFn: (...args: Args) => Promise<T>,\n options: { delay?: number; minVisible?: number } = {},\n) {\n const loading = ref(false);\n const data = ref<T | null>(null) as { value: T | null };\n const error = ref<Error | null>(null);\n\n const visibleLoading = useDelayedLoading(loading, options);\n\n const execute = async (...args: Args): Promise<T> => {\n loading.value = true;\n error.value = null;\n const reqId = loadingManager.start();\n\n try {\n const res = await asyncFn(...args);\n data.value = res;\n return res;\n } catch (err: any) {\n error.value = err;\n throw err;\n } finally {\n loadingManager.stop(reqId);\n loading.value = false;\n }\n };\n\n return {\n loading: visibleLoading,\n rawLoading: loading,\n data,\n error,\n execute,\n };\n}\n","/**\n * Veilkit - Global Synchronized Timeline\n * Keeps all shimmer animations in lockstep phase via negative animation-delay\n */\n\nlet globalStartTime: number = 0;\n\n/**\n * Initializes or gets the baseline global timeline origin\n */\nexport function getTimelineOrigin(): number {\n if (globalStartTime === 0 && typeof performance !== 'undefined') {\n globalStartTime = performance.now();\n }\n return globalStartTime;\n}\n\n/**\n * Computes a negative animation-delay string so that an element mounting right now\n * is in exact phase synchronization with all other animations sharing this duration.\n *\n * @param durationMs Duration in milliseconds (default 1500)\n * @returns CSS animation-delay value, e.g. \"-642ms\"\n */\nexport function getSyncDelay(durationMs: number = 1500): string {\n if (typeof performance === 'undefined') return '0ms';\n const elapsed = performance.now() - getTimelineOrigin();\n const phaseOffset = Math.round(elapsed % durationMs);\n return `-${phaseOffset}ms`;\n}\n\n/**\n * Parses duration string (e.g. \"1.5s\", \"800ms\") into milliseconds\n */\nexport function parseDurationMs(duration: string | number = 1500): number {\n if (typeof duration === 'number') return duration;\n if (!duration) return 1500;\n const trimmed = duration.trim().toLowerCase();\n if (trimmed.endsWith('ms')) {\n return parseFloat(trimmed) || 1500;\n }\n if (trimmed.endsWith('s')) {\n return (parseFloat(trimmed) || 1.5) * 1000;\n }\n return parseFloat(trimmed) || 1500;\n}\n","/**\n * Veilkit - Performance & Offscreen Observers\n * Automatically pauses animations when offscreen or when document is hidden\n */\n\nlet intersectionObserver: IntersectionObserver | null = null;\nconst observedElements = new Set<HTMLElement>();\nlet visibilityInitialized = false;\n\nfunction handleIntersection(entries: IntersectionObserverEntry[]) {\n for (const entry of entries) {\n const el = entry.target as HTMLElement;\n if (entry.isIntersecting) {\n el.removeAttribute('data-veil-offscreen');\n el.style.removeProperty('--veil-play-state');\n } else {\n el.setAttribute('data-veil-offscreen', 'true');\n el.style.setProperty('--veil-play-state', 'paused');\n }\n }\n}\n\n/**\n * Ensures tab visibility change listener is attached\n */\nexport function setupVisibilityObserver(): void {\n if (visibilityInitialized || typeof document === 'undefined') return;\n visibilityInitialized = true;\n\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n document.documentElement.setAttribute('data-veil-tab-hidden', 'true');\n } else {\n document.documentElement.removeAttribute('data-veil-tab-hidden');\n }\n });\n}\n\n/**\n * Registers an element to pause CSS animations when outside the viewport\n */\nexport function observeOffscreen(element: HTMLElement): () => void {\n if (typeof window === 'undefined' || typeof IntersectionObserver === 'undefined') {\n return () => {};\n }\n\n setupVisibilityObserver();\n\n if (!intersectionObserver) {\n intersectionObserver = new IntersectionObserver(handleIntersection, {\n rootMargin: '100px 0px', // Pre-activate 100px before coming into view\n threshold: 0,\n });\n }\n\n intersectionObserver.observe(element);\n observedElements.add(element);\n\n return () => {\n if (intersectionObserver && element) {\n intersectionObserver.unobserve(element);\n observedElements.delete(element);\n }\n };\n}\n\n/**\n * Disconnects all observers\n */\nexport function teardownObservers(): void {\n if (intersectionObserver) {\n intersectionObserver.disconnect();\n intersectionObserver = null;\n }\n observedElements.clear();\n}\n","/**\n * Veilkit - Skeleton Primitives\n * Primitives: line, paragraph, heading, circle, rect, image, button, badge, icon, input, table-row, divider\n */\n\nimport { SkeletonProps, VeilPrimitiveType } from './types';\nimport { injectStyles } from './css';\nimport { getSyncDelay, parseDurationMs } from './sync';\nimport { observeOffscreen } from './observer';\n\n/**\n * Creates a DOM skeleton element with applied styles, classes, and synced timing\n */\nexport function createSkeletonElement(props: SkeletonProps = {}): HTMLElement {\n injectStyles();\n\n const el = document.createElement('div');\n el.className = `veil-skeleton ${props.className || ''}`.trim();\n el.setAttribute('aria-hidden', 'true');\n\n const shape = props.type || 'rect';\n el.setAttribute('data-veil-shape', shape);\n\n if (props.animation) {\n el.setAttribute('data-veil-anim', props.animation);\n }\n if (props.direction) {\n el.setAttribute('data-veil-dir', props.direction);\n }\n if (typeof props.theme === 'string') {\n el.setAttribute('data-veil-theme', props.theme);\n }\n\n // Style attributes\n if (props.width !== undefined) {\n el.style.width = typeof props.width === 'number' ? `${props.width}px` : props.width;\n }\n if (props.height !== undefined) {\n el.style.height = typeof props.height === 'number' ? `${props.height}px` : props.height;\n }\n if (props.radius !== undefined) {\n el.style.setProperty('--veil-radius', typeof props.radius === 'number' ? `${props.radius}px` : props.radius);\n el.style.borderRadius = typeof props.radius === 'number' ? `${props.radius}px` : props.radius;\n }\n if (props.speed !== undefined) {\n const durMs = parseDurationMs(props.speed);\n el.style.setProperty('--veil-duration', `${durMs}ms`);\n el.style.setProperty('--veil-sync-delay', getSyncDelay(durMs));\n } else {\n el.style.setProperty('--veil-sync-delay', getSyncDelay(1500));\n }\n\n if (props.style) {\n for (const [key, val] of Object.entries(props.style)) {\n (el.style as any)[key] = val;\n }\n }\n\n observeOffscreen(el);\n return el;\n}\n\n/**\n * Creates multiple lines of text with natural varied widths\n */\nexport function createSkeletonParagraph(lines: number = 3, props: SkeletonProps = {}): HTMLElement {\n const container = document.createElement('div');\n container.className = `veil-lines-group ${props.className || ''}`.trim();\n container.setAttribute('aria-hidden', 'true');\n\n const gap = props.gap !== undefined ? (typeof props.gap === 'number' ? `${props.gap}px` : props.gap) : '0.45rem';\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = gap;\n\n const defaultWidths = ['100%', '94%', '88%', '75%'];\n const lastWidth = props.lastLineWidth !== undefined\n ? (typeof props.lastLineWidth === 'number' ? `${props.lastLineWidth}px` : props.lastLineWidth)\n : '65%';\n\n for (let i = 0; i < lines; i++) {\n const isLast = i === lines - 1;\n const width = isLast ? lastWidth : (defaultWidths[i % defaultWidths.length] || '95%');\n const lineEl = createSkeletonElement({\n ...props,\n type: 'line',\n width,\n });\n lineEl.style.setProperty('--veil-stagger-idx', String(i));\n container.appendChild(lineEl);\n }\n\n return container;\n}\n\n/**\n * Creates any primitive by type\n */\nexport function createPrimitive(type: VeilPrimitiveType, props: SkeletonProps = {}): HTMLElement {\n switch (type) {\n case 'paragraph':\n return createSkeletonParagraph(props.lines || 3, props);\n case 'line':\n return createSkeletonElement({ ...props, type: 'line' });\n case 'heading':\n return createSkeletonElement({ ...props, type: 'heading', width: props.width || '65%' });\n case 'circle':\n return createSkeletonElement({\n ...props,\n type: 'circle',\n width: props.width || props.height || '40px',\n height: props.height || props.width || '40px',\n radius: '50%',\n });\n case 'image':\n return createSkeletonElement({\n ...props,\n type: 'rect',\n width: props.width || '100%',\n height: props.height || '200px',\n radius: props.radius || '8px',\n });\n case 'button':\n return createSkeletonElement({\n ...props,\n type: 'button',\n width: props.width || '120px',\n height: props.height || '38px',\n });\n case 'badge':\n return createSkeletonElement({\n ...props,\n type: 'badge',\n width: props.width || '64px',\n height: props.height || '22px',\n });\n case 'icon':\n return createSkeletonElement({\n ...props,\n type: 'icon',\n width: props.width || '24px',\n height: props.height || '24px',\n });\n case 'input':\n return createSkeletonElement({\n ...props,\n type: 'input',\n width: props.width || '100%',\n height: props.height || '40px',\n });\n case 'divider':\n return createSkeletonElement({\n ...props,\n type: 'divider',\n width: '100%',\n height: '1px',\n });\n case 'table-row': {\n const row = document.createElement('div');\n row.style.display = 'flex';\n row.style.gap = '1rem';\n row.style.alignItems = 'center';\n row.style.width = '100%';\n row.style.padding = '0.5rem 0';\n const cols = props.count || 4;\n for (let i = 0; i < cols; i++) {\n const cell = createSkeletonElement({\n ...props,\n type: 'line',\n width: `${100 / cols}%`,\n height: '16px',\n });\n row.appendChild(cell);\n }\n return row;\n }\n default:\n return createSkeletonElement(props);\n }\n}\n","/**\n * Veilkit - Reveal Transitions Engine\n * Seamless skeleton -> content reveal transitions:\n * fade, blur-in, slide-up, scale, stagger-children, none\n */\n\nimport { VeilRevealTransition } from './types';\n\nexport interface RevealOptions {\n transition?: VeilRevealTransition;\n duration?: number; // ms\n easing?: string;\n onComplete?: () => void;\n}\n\nexport function applyReveal(element: HTMLElement, options: RevealOptions = {}): void {\n const transition = options.transition || 'fade';\n if (transition === 'none') {\n if (options.onComplete) options.onComplete();\n return;\n }\n\n element.classList.add('veil-revealing');\n\n if (transition === 'stagger-children') {\n const children = Array.from(element.children) as HTMLElement[];\n children.forEach((child, idx) => {\n child.classList.add('veil-reveal-fade');\n child.style.animationDelay = `${idx * 60}ms`;\n if (options.duration) {\n child.style.animationDuration = `${options.duration}ms`;\n }\n });\n\n const totalDuration = (options.duration || 350) + (children.length * 60);\n setTimeout(() => {\n element.classList.remove('veil-revealing');\n children.forEach((child) => {\n child.classList.remove('veil-reveal-fade');\n child.style.removeProperty('animation-delay');\n child.style.removeProperty('animation-duration');\n });\n if (options.onComplete) options.onComplete();\n }, totalDuration);\n\n return;\n }\n\n const className = `veil-reveal-${transition}`;\n element.classList.add(className);\n\n if (options.duration) {\n element.style.animationDuration = `${options.duration}ms`;\n }\n if (options.easing) {\n element.style.animationTimingFunction = options.easing;\n }\n\n const handleEnd = () => {\n element.removeEventListener('animationend', handleEnd);\n element.classList.remove('veil-revealing', className);\n element.style.removeProperty('animation-duration');\n element.style.removeProperty('animation-timing-function');\n if (options.onComplete) options.onComplete();\n };\n\n element.addEventListener('animationend', handleEnd);\n}\n","/**\n * Veilkit - Auto-Measure Skeleton Engine\n * Dynamically measures real DOM trees, generates matching skeleton overlays,\n * updates on resize/mutation, and supports instant layout caching.\n */\n\nimport { AutoMeasureOptions, SkeletonProps } from './types';\nimport { createSkeletonElement } from './primitives';\nimport { applyReveal } from './reveal';\n\nexport interface LeafBox {\n x: number;\n y: number;\n width: number;\n height: number;\n radius: string;\n shape: 'circle' | 'rect' | 'line';\n}\n\nexport interface CachedLayout {\n width: number;\n height: number;\n boxes: LeafBox[];\n}\n\nconst memoryLayoutCache = new Map<string, CachedLayout>();\n\n/**\n * Retrieve cached layout by key\n */\nexport function getCachedLayout(cacheKey: string): CachedLayout | null {\n if (memoryLayoutCache.has(cacheKey)) {\n return memoryLayoutCache.get(cacheKey)!;\n }\n if (typeof window !== 'undefined' && window.localStorage) {\n try {\n const stored = localStorage.getItem(`veil_cache_${cacheKey}`);\n if (stored) {\n const parsed = JSON.parse(stored) as CachedLayout;\n memoryLayoutCache.set(cacheKey, parsed);\n return parsed;\n }\n } catch {\n // Storage unavailable or quota exceeded\n }\n }\n return null;\n}\n\n/**\n * Store layout in cache\n */\nexport function setCachedLayout(cacheKey: string, layout: CachedLayout, persist: boolean = false): void {\n memoryLayoutCache.set(cacheKey, layout);\n if (persist && typeof window !== 'undefined' && window.localStorage) {\n try {\n localStorage.setItem(`veil_cache_${cacheKey}`, JSON.stringify(layout));\n } catch {\n // Storage unavailable\n }\n }\n}\n\n/**\n * Measures the leaf elements of a container DOM tree\n */\nexport function measureContainer(container: HTMLElement, ignoreSelector?: string): CachedLayout {\n const containerRect = container.getBoundingClientRect();\n const boxes: LeafBox[] = [];\n\n function isLeafOrTarget(el: HTMLElement): boolean {\n if (el.hasAttribute('data-veil-ignore')) return false;\n if (ignoreSelector && el.matches(ignoreSelector)) return false;\n\n const style = window.getComputedStyle(el);\n if (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') {\n return false;\n }\n\n const tag = el.tagName.toLowerCase();\n if (['img', 'svg', 'button', 'input', 'textarea', 'select'].includes(tag)) {\n return true;\n }\n\n if (el.hasAttribute('data-veil-shape')) {\n return true;\n }\n\n // Has text nodes and no child elements\n const hasOnlyText = Array.from(el.childNodes).some((n) => n.nodeType === Node.TEXT_NODE && (n.textContent || '').trim().length > 0) &&\n el.children.length === 0;\n\n return hasOnlyText;\n }\n\n function walk(node: HTMLElement) {\n if (node !== container && isLeafOrTarget(node)) {\n const rect = node.getBoundingClientRect();\n if (rect.width > 2 && rect.height > 2) {\n const computed = window.getComputedStyle(node);\n const radius = computed.borderRadius || '6px';\n const customShape = node.getAttribute('data-veil-shape');\n\n let shape: 'circle' | 'rect' | 'line' = 'rect';\n if (customShape === 'circle' || radius === '50%' || (radius.includes('px') && parseFloat(radius) >= rect.width / 2)) {\n shape = 'circle';\n } else if (customShape === 'line' || ['p', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'a', 'label'].includes(node.tagName.toLowerCase())) {\n shape = 'line';\n }\n\n boxes.push({\n x: Math.round(rect.left - containerRect.left),\n y: Math.round(rect.top - containerRect.top),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n radius,\n shape,\n });\n }\n return;\n }\n\n const children = Array.from(node.children) as HTMLElement[];\n for (const child of children) {\n if (!child.hasAttribute('data-veil-ignore')) {\n walk(child);\n }\n }\n }\n\n walk(container);\n\n return {\n width: Math.round(containerRect.width),\n height: Math.round(containerRect.height),\n boxes,\n };\n}\n\n/**\n * Creates and attaches an auto-measured skeleton overlay to a container\n */\nexport function createAutoMeasureOverlay(\n container: HTMLElement,\n options: AutoMeasureOptions = {},\n skeletonProps: SkeletonProps = {},\n): {\n overlay: HTMLElement;\n refresh: () => void;\n destroy: () => void;\n} {\n const overlay = document.createElement('div');\n overlay.className = 'veil-auto-overlay';\n overlay.setAttribute('aria-hidden', 'true');\n overlay.style.position = 'absolute';\n overlay.style.top = '0';\n overlay.style.left = '0';\n overlay.style.width = '100%';\n overlay.style.height = '100%';\n overlay.style.pointerEvents = 'none';\n overlay.style.zIndex = '5';\n\n if (!options.preserveBackground) {\n const computed = window.getComputedStyle(container);\n overlay.style.backgroundColor = computed.backgroundColor !== 'rgba(0, 0, 0, 0)' ? computed.backgroundColor : 'transparent';\n }\n\n function renderLayout(layout: CachedLayout) {\n overlay.innerHTML = '';\n for (let i = 0; i < layout.boxes.length; i++) {\n const box = layout.boxes[i]!;\n const el = createSkeletonElement({\n ...skeletonProps,\n type: box.shape,\n radius: box.radius,\n });\n el.style.position = 'absolute';\n el.style.left = `${box.x}px`;\n el.style.top = `${box.y}px`;\n el.style.width = `${box.width}px`;\n el.style.height = `${box.height}px`;\n el.style.setProperty('--veil-stagger-idx', String(i));\n overlay.appendChild(el);\n }\n }\n\n function update() {\n const layout = measureContainer(container, options.ignoreSelector);\n if (layout.boxes.length > 0) {\n renderLayout(layout);\n if (options.cacheKey) {\n setCachedLayout(options.cacheKey, layout, options.persistCache);\n }\n }\n }\n\n // Check cache first for instant repeat render\n if (options.cacheKey) {\n const cached = getCachedLayout(options.cacheKey);\n if (cached) {\n renderLayout(cached);\n }\n }\n\n // Ensure container has relative positioning\n const compPos = window.getComputedStyle(container).position;\n if (compPos === 'static') {\n container.style.position = 'relative';\n }\n\n container.appendChild(overlay);\n\n // If no cache hit, measure immediately\n if (overlay.children.length === 0) {\n update();\n }\n\n let ro: ResizeObserver | null = null;\n let mo: MutationObserver | null = null;\n\n if (options.observeResize !== false && typeof ResizeObserver !== 'undefined') {\n ro = new ResizeObserver(() => update());\n ro.observe(container);\n }\n\n if (options.observeMutations !== false && typeof MutationObserver !== 'undefined') {\n mo = new MutationObserver(() => update());\n mo.observe(container, { childList: true, subtree: true, attributes: false });\n }\n\n return {\n overlay,\n refresh: update,\n destroy: () => {\n if (ro) ro.disconnect();\n if (mo) mo.disconnect();\n if (options.reveal && options.reveal !== 'none') {\n applyReveal(container, {\n transition: options.reveal,\n duration: options.revealDuration,\n easing: options.revealEasing,\n onComplete: () => overlay.remove(),\n });\n } else {\n overlay.remove();\n }\n },\n };\n}\n","import { Directive, DirectiveBinding } from 'vue';\nimport { createAutoMeasureOverlay } from '../core/measure';\nimport { injectStyles } from '../core/css';\n\ninterface VeilDirectiveState {\n overlayInstance?: ReturnType<typeof createAutoMeasureOverlay>;\n}\n\nconst elementStateMap = new WeakMap<HTMLElement, VeilDirectiveState>();\n\nexport const vVeil: Directive<HTMLElement, boolean> = {\n mounted(el: HTMLElement, binding: DirectiveBinding<boolean>) {\n injectStyles();\n const state: VeilDirectiveState = {};\n elementStateMap.set(el, state);\n\n if (binding.value) {\n state.overlayInstance = createAutoMeasureOverlay(el, {\n observeResize: true,\n observeMutations: true,\n reveal: 'fade',\n });\n el.setAttribute('aria-busy', 'true');\n }\n },\n\n updated(el: HTMLElement, binding: DirectiveBinding<boolean>) {\n const state = elementStateMap.get(el);\n if (!state) return;\n\n if (binding.value && !state.overlayInstance) {\n state.overlayInstance = createAutoMeasureOverlay(el, {\n observeResize: true,\n observeMutations: true,\n reveal: 'fade',\n });\n el.setAttribute('aria-busy', 'true');\n } else if (!binding.value && state.overlayInstance) {\n state.overlayInstance.destroy();\n state.overlayInstance = undefined;\n el.removeAttribute('aria-busy');\n }\n },\n\n unmounted(el: HTMLElement) {\n const state = elementStateMap.get(el);\n if (state?.overlayInstance) {\n state.overlayInstance.destroy();\n state.overlayInstance = undefined;\n }\n elementStateMap.delete(el);\n },\n};\n","/**\n * Veilkit - 30 Spinner Loaders\n * Complete catalog of GPU-accelerated spinners\n */\n\nimport { SpinnerProps, VeilSpinnerType } from './types';\nimport { injectStyles } from './css';\n\nexport const SPINNER_TYPES: VeilSpinnerType[] = [\n 'ring',\n 'dual-ring',\n 'dots',\n 'bars',\n 'pulse',\n 'orbit',\n 'wave',\n 'bounce',\n 'ios-activity',\n 'glass-orb',\n 'morph',\n 'progress-circle',\n 'arc-gradient',\n 'pulse-ring',\n 'dots-circle',\n 'grid-dots',\n 'square-flip',\n 'cube-fold',\n 'hourglass',\n 'infinity',\n 'heartbeat-line',\n 'equalizer',\n 'chasing-dots',\n 'typing',\n 'liquid-fill',\n 'atom',\n 'clock',\n 'radar',\n 'ellipsis',\n 'flower',\n];\n\n/**\n * Creates a DOM spinner element with specified type, size, and colors\n */\nexport function createSpinner(props: SpinnerProps = {}): HTMLElement {\n injectStyles();\n\n const type = props.type || 'ring';\n const size = props.size !== undefined ? (typeof props.size === 'number' ? `${props.size}px` : props.size) : '28px';\n const color = props.color || 'var(--veil-progress-color, #3b82f6)';\n const secondaryColor = props.secondaryColor || 'rgba(0, 0, 0, 0.12)';\n const duration = props.speed !== undefined ? (typeof props.speed === 'number' ? `${props.speed}ms` : props.speed) : undefined;\n\n const container = document.createElement('div');\n container.className = `veil-spinner veil-spinner-${type} ${props.glass ? 'veil-spinner-glass' : ''} ${props.className || ''}`.trim();\n container.setAttribute('role', 'status');\n container.setAttribute('aria-label', props.label || 'Loading');\n container.style.width = size;\n container.style.height = size;\n container.style.display = 'inline-flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.style.position = 'relative';\n\n if (props.glass) {\n container.style.borderRadius = '50%';\n container.style.backdropFilter = 'blur(8px)';\n (container.style as any).webkitBackdropFilter = 'blur(8px)';\n container.style.background = 'rgba(255, 255, 255, 0.12)';\n container.style.boxShadow = '0 4px 16px rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.4)';\n container.style.border = '1px solid rgba(255, 255, 255, 0.25)';\n }\n\n switch (type) {\n case 'ring': {\n const ring = document.createElement('div');\n ring.style.width = '100%';\n ring.style.height = '100%';\n ring.style.borderRadius = '50%';\n ring.style.border = `3px solid ${secondaryColor}`;\n ring.style.borderTopColor = color;\n ring.style.animation = `veil-spin ${duration || '800ms'} linear infinite`;\n ring.style.boxSizing = 'border-box';\n container.appendChild(ring);\n break;\n }\n\n case 'dual-ring': {\n const ring = document.createElement('div');\n ring.style.width = '100%';\n ring.style.height = '100%';\n ring.style.borderRadius = '50%';\n ring.style.border = `3px solid transparent`;\n ring.style.borderTopColor = color;\n ring.style.borderBottomColor = color;\n ring.style.animation = `veil-spin ${duration || '900ms'} cubic-bezier(0.5, 0, 0.5, 1) infinite`;\n ring.style.boxSizing = 'border-box';\n container.appendChild(ring);\n break;\n }\n\n case 'dots': {\n container.style.gap = '4px';\n for (let i = 0; i < 3; i++) {\n const dot = document.createElement('div');\n dot.style.width = '28%';\n dot.style.height = '28%';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.animation = `veil-dot-bounce ${duration || '1200ms'} ease-in-out infinite`;\n dot.style.animationDelay = `${i * 160}ms`;\n container.appendChild(dot);\n }\n break;\n }\n\n case 'bars': {\n container.style.gap = '3px';\n for (let i = 0; i < 4; i++) {\n const bar = document.createElement('div');\n bar.style.width = '18%';\n bar.style.height = '100%';\n bar.style.borderRadius = '2px';\n bar.style.backgroundColor = color;\n bar.style.animation = `veil-bar-wave ${duration || '1000ms'} ease-in-out infinite`;\n bar.style.animationDelay = `${i * 140}ms`;\n container.appendChild(bar);\n }\n break;\n }\n\n case 'pulse': {\n const pulseCircle = document.createElement('div');\n pulseCircle.style.width = '100%';\n pulseCircle.style.height = '100%';\n pulseCircle.style.borderRadius = '50%';\n pulseCircle.style.backgroundColor = color;\n pulseCircle.style.animation = `veil-pulse-scale ${duration || '1200ms'} ease-out infinite`;\n container.appendChild(pulseCircle);\n break;\n }\n\n case 'orbit': {\n const nucleus = document.createElement('div');\n nucleus.style.width = '30%';\n nucleus.style.height = '30%';\n nucleus.style.borderRadius = '50%';\n nucleus.style.backgroundColor = color;\n nucleus.style.position = 'absolute';\n\n const orbitRing = document.createElement('div');\n orbitRing.style.width = '100%';\n orbitRing.style.height = '100%';\n orbitRing.style.position = 'absolute';\n orbitRing.style.animation = `veil-spin ${duration || '1200ms'} linear infinite`;\n\n const satellite = document.createElement('div');\n satellite.style.width = '24%';\n satellite.style.height = '24%';\n satellite.style.borderRadius = '50%';\n satellite.style.backgroundColor = color;\n satellite.style.position = 'absolute';\n satellite.style.top = '0';\n satellite.style.left = '38%';\n\n orbitRing.appendChild(satellite);\n container.append(nucleus, orbitRing);\n break;\n }\n\n case 'wave': {\n container.style.gap = '4px';\n for (let i = 0; i < 5; i++) {\n const line = document.createElement('div');\n line.style.width = '12%';\n line.style.height = '80%';\n line.style.borderRadius = '3px';\n line.style.backgroundColor = color;\n line.style.animation = `veil-wave-dance ${duration || '1100ms'} ease-in-out infinite`;\n line.style.animationDelay = `${i * 110}ms`;\n container.appendChild(line);\n }\n break;\n }\n\n case 'bounce': {\n const ball = document.createElement('div');\n ball.style.width = '60%';\n ball.style.height = '60%';\n ball.style.borderRadius = '50%';\n ball.style.backgroundColor = color;\n ball.style.animation = `veil-bounce-ball ${duration || '900ms'} cubic-bezier(0.28, 0.84, 0.42, 1) infinite`;\n container.appendChild(ball);\n break;\n }\n\n case 'ios-activity': {\n for (let i = 0; i < 12; i++) {\n const spoke = document.createElement('div');\n spoke.style.position = 'absolute';\n spoke.style.width = '8%';\n spoke.style.height = '26%';\n spoke.style.backgroundColor = color;\n spoke.style.borderRadius = '2px';\n spoke.style.transformOrigin = '50% 190%';\n spoke.style.transform = `rotate(${i * 30}deg) translateY(-90%)`;\n spoke.style.animation = `veil-ios-fade ${duration || '1000ms'} linear infinite`;\n spoke.style.animationDelay = `-${(12 - i) * (1000 / 12)}ms`;\n container.appendChild(spoke);\n }\n break;\n }\n\n case 'glass-orb': {\n const orb = document.createElement('div');\n orb.style.width = '100%';\n orb.style.height = '100%';\n orb.style.borderRadius = '50%';\n orb.style.background = `radial-gradient(circle at 35% 35%, rgba(255,255,255,0.8), ${color} 70%)`;\n orb.style.boxShadow = `0 4px 12px ${color}44, inset 0 2px 4px rgba(255,255,255,0.6)`;\n orb.style.animation = `veil-glass-orbit ${duration || '1600ms'} ease-in-out infinite`;\n container.appendChild(orb);\n break;\n }\n\n case 'morph': {\n const shape = document.createElement('div');\n shape.style.width = '80%';\n shape.style.height = '80%';\n shape.style.backgroundColor = color;\n shape.style.animation = `veil-morph-shape ${duration || '2000ms'} ease-in-out infinite`;\n container.appendChild(shape);\n break;\n }\n\n case 'progress-circle': {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 36 36');\n svg.style.width = '100%';\n svg.style.height = '100%';\n svg.style.transform = 'rotate(-90deg)';\n\n const bgCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bgCircle.setAttribute('cx', '18');\n bgCircle.setAttribute('cy', '18');\n bgCircle.setAttribute('r', '14');\n bgCircle.setAttribute('fill', 'none');\n bgCircle.setAttribute('stroke', secondaryColor);\n bgCircle.setAttribute('stroke-width', '3');\n\n const meterCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n meterCircle.setAttribute('cx', '18');\n meterCircle.setAttribute('cy', '18');\n meterCircle.setAttribute('r', '14');\n meterCircle.setAttribute('fill', 'none');\n meterCircle.setAttribute('stroke', color);\n meterCircle.setAttribute('stroke-width', '3');\n meterCircle.setAttribute('stroke-dasharray', '88');\n meterCircle.setAttribute('stroke-dashoffset', '25');\n meterCircle.setAttribute('stroke-linecap', 'round');\n meterCircle.style.animation = `veil-spin ${duration || '1200ms'} linear infinite`;\n meterCircle.style.transformOrigin = '50% 50%';\n\n svg.append(bgCircle, meterCircle);\n container.appendChild(svg);\n break;\n }\n\n case 'arc-gradient': {\n const arc = document.createElement('div');\n arc.style.width = '100%';\n arc.style.height = '100%';\n arc.style.borderRadius = '50%';\n arc.style.background = `conic-gradient(from 0deg, transparent 20%, ${color} 100%)`;\n arc.style.mask = 'radial-gradient(farthest-side, transparent calc(100% - 3px), #fff calc(100% - 2.5px))';\n arc.style.webkitMask = 'radial-gradient(farthest-side, transparent calc(100% - 3px), #fff calc(100% - 2.5px))';\n arc.style.animation = `veil-spin ${duration || '750ms'} linear infinite`;\n container.appendChild(arc);\n break;\n }\n\n case 'pulse-ring': {\n for (let i = 0; i < 2; i++) {\n const ring = document.createElement('div');\n ring.style.position = 'absolute';\n ring.style.inset = '0';\n ring.style.borderRadius = '50%';\n ring.style.border = `2px solid ${color}`;\n ring.style.animation = `veil-pulse-ring ${duration || '1400ms'} cubic-bezier(0, 0.2, 0.8, 1) infinite`;\n ring.style.animationDelay = `${i * 700}ms`;\n container.appendChild(ring);\n }\n break;\n }\n\n case 'dots-circle': {\n for (let i = 0; i < 8; i++) {\n const dot = document.createElement('div');\n dot.style.position = 'absolute';\n dot.style.width = '20%';\n dot.style.height = '20%';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.transformOrigin = '50% 250%';\n dot.style.transform = `rotate(${i * 45}deg) translateY(-150%)`;\n dot.style.animation = `veil-fade-seq ${duration || '1000ms'} linear infinite`;\n dot.style.animationDelay = `-${(8 - i) * (1000 / 8)}ms`;\n container.appendChild(dot);\n }\n break;\n }\n\n case 'grid-dots': {\n container.style.display = 'grid';\n container.style.gridTemplateColumns = 'repeat(3, 1fr)';\n container.style.gap = '3px';\n for (let row = 0; row < 3; row++) {\n for (let col = 0; col < 3; col++) {\n const dot = document.createElement('div');\n dot.style.width = '100%';\n dot.style.aspectRatio = '1 / 1';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.animation = `veil-dot-bounce ${duration || '1200ms'} ease-in-out infinite`;\n dot.style.animationDelay = `${(row + col) * 110}ms`;\n container.appendChild(dot);\n }\n }\n break;\n }\n\n case 'square-flip': {\n const sq = document.createElement('div');\n sq.style.width = '60%';\n sq.style.height = '60%';\n sq.style.backgroundColor = color;\n sq.style.borderRadius = '4px';\n sq.style.animation = `veil-square-flip ${duration || '1200ms'} ease-in-out infinite`;\n container.appendChild(sq);\n break;\n }\n\n case 'cube-fold': {\n container.style.display = 'grid';\n container.style.gridTemplateColumns = 'repeat(2, 1fr)';\n container.style.gap = '2px';\n for (let i = 0; i < 4; i++) {\n const cube = document.createElement('div');\n cube.style.width = '100%';\n cube.style.aspectRatio = '1 / 1';\n cube.style.backgroundColor = color;\n cube.style.borderRadius = '2px';\n cube.style.animation = `veil-cube-fold ${duration || '1400ms'} ease-in-out infinite`;\n cube.style.animationDelay = `${i * 175}ms`;\n container.appendChild(cube);\n }\n break;\n }\n\n case 'hourglass': {\n const hg = document.createElement('div');\n hg.style.width = '65%';\n hg.style.height = '65%';\n hg.style.border = `3px solid ${color}`;\n hg.style.borderLeftColor = 'transparent';\n hg.style.borderRightColor = 'transparent';\n hg.style.borderRadius = '50%';\n hg.style.animation = `veil-hourglass ${duration || '1200ms'} cubic-bezier(0.55, 0.15, 0.45, 0.85) infinite`;\n container.appendChild(hg);\n break;\n }\n\n case 'infinity': {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 48 24');\n svg.style.width = '100%';\n svg.style.height = '100%';\n\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('d', 'M12,12 C4,12 4,4 12,4 C20,4 28,20 36,20 C44,20 44,12 36,12 C28,12 20,4 12,4');\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke', color);\n path.setAttribute('stroke-width', '3');\n path.setAttribute('stroke-dasharray', '80');\n path.setAttribute('stroke-dashoffset', '0');\n path.setAttribute('stroke-linecap', 'round');\n path.style.animation = `veil-dash ${duration || '1400ms'} linear infinite`;\n\n svg.appendChild(path);\n container.appendChild(svg);\n break;\n }\n\n case 'heartbeat-line': {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 50 24');\n svg.style.width = '100%';\n svg.style.height = '100%';\n\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('d', 'M0,12 L14,12 L18,3 L24,21 L28,9 L32,15 L36,12 L50,12');\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke', color);\n path.setAttribute('stroke-width', '2.5');\n path.setAttribute('stroke-dasharray', '60');\n path.setAttribute('stroke-dashoffset', '60');\n path.setAttribute('stroke-linecap', 'round');\n path.setAttribute('stroke-linejoin', 'round');\n path.style.animation = `veil-ecg ${duration || '1200ms'} ease-in-out infinite`;\n\n svg.appendChild(path);\n container.appendChild(svg);\n break;\n }\n\n case 'equalizer': {\n container.style.gap = '3px';\n const delays = [0, 200, 100, 300];\n for (let i = 0; i < 4; i++) {\n const bar = document.createElement('div');\n bar.style.width = '18%';\n bar.style.height = '100%';\n bar.style.borderRadius = '2px';\n bar.style.backgroundColor = color;\n bar.style.animation = `veil-eq-bounce ${duration || '800ms'} ease-in-out infinite alternate`;\n bar.style.animationDelay = `${delays[i]}ms`;\n container.appendChild(bar);\n }\n break;\n }\n\n case 'chasing-dots': {\n const wrap = document.createElement('div');\n wrap.style.width = '100%';\n wrap.style.height = '100%';\n wrap.style.position = 'relative';\n wrap.style.animation = `veil-spin ${duration || '1800ms'} linear infinite`;\n\n for (let i = 0; i < 2; i++) {\n const dot = document.createElement('div');\n dot.style.position = 'absolute';\n dot.style.width = '45%';\n dot.style.height = '45%';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.animation = `veil-chase ${duration || '1800ms'} ease-in-out infinite`;\n if (i === 0) {\n dot.style.top = '0';\n dot.style.left = '0';\n } else {\n dot.style.bottom = '0';\n dot.style.right = '0';\n dot.style.animationDelay = '-900ms';\n }\n wrap.appendChild(dot);\n }\n container.appendChild(wrap);\n break;\n }\n\n case 'typing': {\n container.style.gap = '4px';\n for (let i = 0; i < 3; i++) {\n const dot = document.createElement('div');\n dot.style.width = '24%';\n dot.style.height = '24%';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.animation = `veil-typing ${duration || '1000ms'} ease-in-out infinite`;\n dot.style.animationDelay = `${i * 150}ms`;\n container.appendChild(dot);\n }\n break;\n }\n\n case 'liquid-fill': {\n const wrap = document.createElement('div');\n wrap.style.width = '85%';\n wrap.style.height = '85%';\n wrap.style.borderRadius = '50%';\n wrap.style.border = `2px solid ${color}`;\n wrap.style.position = 'relative';\n wrap.style.overflow = 'hidden';\n\n const liquid = document.createElement('div');\n liquid.style.position = 'absolute';\n liquid.style.inset = '0';\n liquid.style.backgroundColor = color;\n liquid.style.opacity = '0.7';\n liquid.style.borderRadius = '40%';\n liquid.style.animation = `veil-liquid-spin ${duration || '2000ms'} linear infinite`;\n wrap.appendChild(liquid);\n container.appendChild(wrap);\n break;\n }\n\n case 'atom': {\n const nucleus = document.createElement('div');\n nucleus.style.width = '24%';\n nucleus.style.height = '24%';\n nucleus.style.borderRadius = '50%';\n nucleus.style.backgroundColor = color;\n nucleus.style.position = 'absolute';\n container.appendChild(nucleus);\n\n const angles = [0, 60, 120];\n for (const angle of angles) {\n const ring = document.createElement('div');\n ring.style.position = 'absolute';\n ring.style.width = '100%';\n ring.style.height = '45%';\n ring.style.borderRadius = '50%';\n ring.style.border = `1.5px solid ${color}`;\n ring.style.transform = `rotate(${angle}deg)`;\n ring.style.animation = `veil-atom-spin ${duration || '1600ms'} linear infinite`;\n container.appendChild(ring);\n }\n break;\n }\n\n case 'clock': {\n const face = document.createElement('div');\n face.style.width = '100%';\n face.style.height = '100%';\n face.style.borderRadius = '50%';\n face.style.border = `2.5px solid ${color}`;\n face.style.position = 'relative';\n\n const center = document.createElement('div');\n center.style.width = '14%';\n center.style.height = '14%';\n center.style.borderRadius = '50%';\n center.style.backgroundColor = color;\n center.style.position = 'absolute';\n center.style.top = '43%';\n center.style.left = '43%';\n\n const hourHand = document.createElement('div');\n hourHand.style.position = 'absolute';\n hourHand.style.width = '2px';\n hourHand.style.height = '30%';\n hourHand.style.backgroundColor = color;\n hourHand.style.top = '20%';\n hourHand.style.left = 'calc(50% - 1px)';\n hourHand.style.transformOrigin = 'bottom center';\n hourHand.style.animation = `veil-spin ${duration || '3000ms'} linear infinite`;\n\n const minuteHand = document.createElement('div');\n minuteHand.style.position = 'absolute';\n minuteHand.style.width = '2px';\n minuteHand.style.height = '42%';\n minuteHand.style.backgroundColor = color;\n minuteHand.style.top = '8%';\n minuteHand.style.left = 'calc(50% - 1px)';\n minuteHand.style.transformOrigin = 'bottom center';\n minuteHand.style.animation = `veil-spin ${duration || '1000ms'} linear infinite`;\n\n face.append(center, hourHand, minuteHand);\n container.appendChild(face);\n break;\n }\n\n case 'radar': {\n const radarWrap = document.createElement('div');\n radarWrap.style.width = '100%';\n radarWrap.style.height = '100%';\n radarWrap.style.borderRadius = '50%';\n radarWrap.style.border = `1.5px solid ${color}`;\n radarWrap.style.position = 'relative';\n radarWrap.style.overflow = 'hidden';\n\n const beam = document.createElement('div');\n beam.style.position = 'absolute';\n beam.style.inset = '0';\n beam.style.borderRadius = '50%';\n beam.style.background = `conic-gradient(from 0deg, transparent 60%, ${color} 100%)`;\n beam.style.opacity = '0.6';\n beam.style.animation = `veil-spin ${duration || '1500ms'} linear infinite`;\n\n radarWrap.appendChild(beam);\n container.appendChild(radarWrap);\n break;\n }\n\n case 'ellipsis': {\n container.style.gap = '3px';\n for (let i = 0; i < 3; i++) {\n const dot = document.createElement('div');\n dot.style.width = '24%';\n dot.style.height = '24%';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.animation = `veil-ellipsis ${duration || '1200ms'} ease-in-out infinite`;\n dot.style.animationDelay = `${i * 200}ms`;\n container.appendChild(dot);\n }\n break;\n }\n\n case 'flower': {\n for (let i = 0; i < 6; i++) {\n const petal = document.createElement('div');\n petal.style.position = 'absolute';\n petal.style.width = '28%';\n petal.style.height = '48%';\n petal.style.borderRadius = '50%';\n petal.style.backgroundColor = color;\n petal.style.opacity = '0.85';\n petal.style.transformOrigin = '50% 100%';\n petal.style.top = '2%';\n petal.style.transform = `rotate(${i * 60}deg)`;\n petal.style.animation = `veil-flower-bloom ${duration || '1600ms'} ease-in-out infinite`;\n petal.style.animationDelay = `${i * 120}ms`;\n container.appendChild(petal);\n }\n break;\n }\n }\n\n injectSpinnerKeyframes();\n return container;\n}\n\nlet spinnerKeyframesInjected = false;\nfunction injectSpinnerKeyframes(): void {\n if (spinnerKeyframesInjected || typeof document === 'undefined') return;\n spinnerKeyframesInjected = true;\n\n const style = document.createElement('style');\n style.id = 'veilkit-spinner-keyframes';\n style.textContent = `\n @keyframes veil-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\n @keyframes veil-dot-bounce { 0%, 80%, 100% { transform: scale(0.4); opacity: 0.4; } 40% { transform: scale(1); opacity: 1; } }\n @keyframes veil-bar-wave { 0%, 100% { transform: scaleY(0.3); opacity: 0.5; } 50% { transform: scaleY(1); opacity: 1; } }\n @keyframes veil-pulse-scale { 0% { transform: scale(0.2); opacity: 1; } 100% { transform: scale(1.1); opacity: 0; } }\n @keyframes veil-wave-dance { 0%, 100% { transform: scaleY(0.2); } 50% { transform: scaleY(1); } }\n @keyframes veil-bounce-ball { 0%, 100% { transform: translateY(35%) scale(1.15, 0.75); } 50% { transform: translateY(-40%) scale(0.9, 1.1); } }\n @keyframes veil-ios-fade { 0% { opacity: 1; } 100% { opacity: 0.15; } }\n @keyframes veil-glass-orbit { 0%, 100% { transform: scale(0.9) rotate(0deg); } 50% { transform: scale(1.08) rotate(180deg); } }\n @keyframes veil-morph-shape {\n 0%, 100% { border-radius: 50%; transform: rotate(0deg); }\n 33% { border-radius: 8px; transform: rotate(90deg); }\n 66% { border-radius: 20px; transform: rotate(180deg); }\n }\n @keyframes veil-pulse-ring {\n 0% { transform: scale(0.2); opacity: 1; }\n 100% { transform: scale(1.4); opacity: 0; }\n }\n @keyframes veil-fade-seq { 0% { opacity: 1; } 100% { opacity: 0.1; } }\n @keyframes veil-square-flip {\n 0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg); }\n 50% { transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); }\n 100% { transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); }\n }\n @keyframes veil-cube-fold {\n 0%, 10% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(0.3); opacity: 0.3; }\n 90%, 100% { transform: scale(1); opacity: 1; }\n }\n @keyframes veil-hourglass {\n 0% { transform: rotate(0); }\n 50% { transform: rotate(180deg); }\n 100% { transform: rotate(360deg); }\n }\n @keyframes veil-dash {\n 0% { stroke-dashoffset: 0; }\n 100% { stroke-dashoffset: -160; }\n }\n @keyframes veil-ecg {\n 0% { stroke-dashoffset: 60; }\n 50% { stroke-dashoffset: 0; }\n 100% { stroke-dashoffset: -60; }\n }\n @keyframes veil-eq-bounce {\n 0% { transform: scaleY(0.15); }\n 100% { transform: scaleY(1); }\n }\n @keyframes veil-chase {\n 0%, 100% { transform: scale(0.4); }\n 50% { transform: scale(1); }\n }\n @keyframes veil-typing {\n 0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }\n 30% { transform: translateY(-4px); opacity: 1; }\n }\n @keyframes veil-liquid-spin {\n 0% { transform: translateY(30%) rotate(0deg); }\n 100% { transform: translateY(30%) rotate(360deg); }\n }\n @keyframes veil-atom-spin {\n 0% { transform: rotate(0deg) scale(1); }\n 50% { transform: rotate(180deg) scale(0.95); }\n 100% { transform: rotate(360deg) scale(1); }\n }\n @keyframes veil-ellipsis {\n 0%, 100% { transform: scale(0.5); opacity: 0.3; }\n 50% { transform: scale(1.1); opacity: 1; }\n }\n @keyframes veil-flower-bloom {\n 0%, 100% { transform: scale(0.7); opacity: 0.5; }\n 50% { transform: scale(1); opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n}\n","/**\n * Veilkit - Presets Engine\n * 40 Ready-Made, Customizable, Responsive Skeleton Layout Presets\n * Supports shape styles: rounded | pill | square | sharp | glass\n */\n\nimport { PresetProps, SkeletonProps, VeilPresetName } from './types';\nimport { createSkeletonElement, createSkeletonParagraph } from './primitives';\n\nexport const PRESET_NAMES: VeilPresetName[] = [\n 'card',\n 'product-card',\n 'product-grid',\n 'list',\n 'list-item',\n 'table',\n 'profile',\n 'profile-header',\n 'feed-post',\n 'article',\n 'comment-thread',\n 'chat',\n 'dashboard',\n 'form',\n 'media-card',\n 'navbar',\n 'sidebar',\n 'settings-page',\n 'product-detail',\n 'news-feed',\n 'inbox-list',\n 'notification-list',\n 'order-list',\n 'kpi-card',\n 'chart-bar',\n 'chart-line',\n 'chart-pie',\n 'search-results',\n 'video-player',\n 'music-player',\n 'stories-row',\n 'reels',\n 'tabs',\n 'calendar',\n 'kanban',\n 'timeline',\n 'map-card',\n 'pricing-card',\n 'testimonial',\n 'faq-accordion',\n];\n\nexport function createPreset(props: PresetProps): HTMLElement {\n const container = document.createElement('div');\n container.className = `veil-preset veil-preset-${props.name} ${props.className || ''}`.trim();\n container.setAttribute('aria-hidden', 'true');\n container.style.width = props.width !== undefined ? (typeof props.width === 'number' ? `${props.width}px` : props.width) : '100%';\n container.style.boxSizing = 'border-box';\n\n const shape = props.shape || 'rounded';\n let shapeRadius: string | undefined = undefined;\n if (shape === 'pill') shapeRadius = '9999px';\n else if (shape === 'square') shapeRadius = '4px';\n else if (shape === 'sharp') shapeRadius = '0px';\n\n if (shape === 'glass') {\n container.style.backdropFilter = 'blur(10px)';\n (container.style as any).webkitBackdropFilter = 'blur(10px)';\n container.style.background = 'rgba(255, 255, 255, 0.08)';\n container.style.border = '1px solid rgba(255, 255, 255, 0.18)';\n container.style.boxShadow = '0 8px 32px rgba(0, 0, 0, 0.08)';\n }\n\n const baseProps: SkeletonProps = {\n animation: props.animation,\n theme: props.theme,\n direction: props.direction,\n speed: props.speed,\n radius: shapeRadius,\n };\n\n switch (props.name) {\n case 'card': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n container.style.padding = '16px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.08)';\n\n const img = createSkeletonElement({ ...baseProps, type: 'rect', height: '180px', radius: shapeRadius || '8px' });\n const title = createSkeletonElement({ ...baseProps, type: 'heading', width: '70%', height: '24px' });\n const text = createSkeletonParagraph(2, baseProps);\n const btn = createSkeletonElement({ ...baseProps, type: 'button', width: '110px', height: '36px' });\n\n container.append(img, title, text, btn);\n break;\n }\n\n case 'product-card': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '10px';\n container.style.padding = '14px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const img = createSkeletonElement({ ...baseProps, type: 'rect', height: '200px', radius: shapeRadius || '10px' });\n const badge = createSkeletonElement({ ...baseProps, type: 'badge', width: '50px', height: '18px' });\n const title = createSkeletonElement({ ...baseProps, type: 'line', width: '85%', height: '18px' });\n const price = createSkeletonElement({ ...baseProps, type: 'line', width: '40%', height: '22px' });\n const btn = createSkeletonElement({ ...baseProps, type: 'button', width: '100%', height: '38px' });\n\n container.append(img, badge, title, price, btn);\n break;\n }\n\n case 'product-grid': {\n const itemsCount = props.items || 4;\n const columns = props.columns || 2;\n container.style.display = 'grid';\n container.style.gridTemplateColumns = `repeat(${columns}, 1fr)`;\n container.style.gap = '16px';\n\n for (let i = 0; i < itemsCount; i++) {\n const item = createPreset({ ...props, name: 'product-card', width: '100%' });\n container.appendChild(item);\n }\n break;\n }\n\n case 'list': {\n const count = props.items || 4;\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n\n for (let i = 0; i < count; i++) {\n const row = createSkeletonElement({ ...baseProps, type: 'line', width: `${95 - (i % 3) * 15}%`, height: '18px' });\n container.appendChild(row);\n }\n break;\n }\n\n case 'list-item': {\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.gap = '14px';\n container.style.padding = '10px 0';\n\n const avatar = createSkeletonElement({ ...baseProps, type: 'circle', width: '44px', height: '44px' });\n const textGroup = document.createElement('div');\n textGroup.style.display = 'flex';\n textGroup.style.flexDirection = 'column';\n textGroup.style.gap = '6px';\n textGroup.style.flex = '1';\n\n const primary = createSkeletonElement({ ...baseProps, type: 'line', width: '60%', height: '16px' });\n const secondary = createSkeletonElement({ ...baseProps, type: 'line', width: '40%', height: '12px' });\n\n textGroup.append(primary, secondary);\n container.append(avatar, textGroup);\n break;\n }\n\n case 'table': {\n const rows = props.items || 5;\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '8px';\n container.style.padding = '12px';\n container.style.borderRadius = shapeRadius || '8px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const header = document.createElement('div');\n header.style.display = 'grid';\n header.style.gridTemplateColumns = '2fr 1fr 1fr 1fr';\n header.style.gap = '12px';\n header.style.paddingBottom = '8px';\n header.style.borderBottom = '2px solid rgba(0,0,0,0.08)';\n\n for (let c = 0; c < 4; c++) {\n header.appendChild(createSkeletonElement({ ...baseProps, type: 'line', height: '16px' }));\n }\n container.appendChild(header);\n\n for (let r = 0; r < rows; r++) {\n const row = document.createElement('div');\n row.style.display = 'grid';\n row.style.gridTemplateColumns = '2fr 1fr 1fr 1fr';\n row.style.gap = '12px';\n row.style.padding = '8px 0';\n row.style.borderBottom = '1px solid rgba(0,0,0,0.04)';\n\n for (let c = 0; c < 4; c++) {\n row.appendChild(createSkeletonElement({ ...baseProps, type: 'line', height: '14px' }));\n }\n container.appendChild(row);\n }\n break;\n }\n\n case 'profile': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.alignItems = 'center';\n container.style.gap = '14px';\n container.style.padding = '24px';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const avatar = createSkeletonElement({ ...baseProps, type: 'circle', width: '88px', height: '88px' });\n const name = createSkeletonElement({ ...baseProps, type: 'heading', width: '160px', height: '22px' });\n const bio = createSkeletonParagraph(2, baseProps);\n const btnGroup = document.createElement('div');\n btnGroup.style.display = 'flex';\n btnGroup.style.gap = '10px';\n btnGroup.append(\n createSkeletonElement({ ...baseProps, type: 'button', width: '100px', height: '34px' }),\n createSkeletonElement({ ...baseProps, type: 'button', width: '100px', height: '34px' }),\n );\n\n container.append(avatar, name, bio, btnGroup);\n break;\n }\n\n case 'profile-header': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.overflow = 'hidden';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const banner = createSkeletonElement({ ...baseProps, type: 'rect', height: '140px', radius: '0' });\n const body = document.createElement('div');\n body.style.display = 'flex';\n body.style.alignItems = 'flex-end';\n body.style.gap = '16px';\n body.style.padding = '0 20px 20px 20px';\n body.style.marginTop = '-40px';\n\n const avatar = createSkeletonElement({ ...baseProps, type: 'circle', width: '80px', height: '80px' });\n const info = document.createElement('div');\n info.style.display = 'flex';\n info.style.flexDirection = 'column';\n info.style.gap = '6px';\n info.style.flex = '1';\n info.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '140px', height: '20px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '200px', height: '14px' }),\n );\n\n body.append(avatar, info);\n container.append(banner, body);\n break;\n }\n\n case 'feed-post': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n container.style.padding = '16px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.08)';\n\n const header = document.createElement('div');\n header.style.display = 'flex';\n header.style.alignItems = 'center';\n header.style.gap = '10px';\n header.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '40px', height: '40px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '120px', height: '16px' }),\n );\n\n const text = createSkeletonParagraph(2, baseProps);\n const media = createSkeletonElement({ ...baseProps, type: 'rect', height: '220px', radius: shapeRadius || '8px' });\n const actions = document.createElement('div');\n actions.style.display = 'flex';\n actions.style.gap = '16px';\n actions.append(\n createSkeletonElement({ ...baseProps, type: 'button', width: '60px', height: '28px' }),\n createSkeletonElement({ ...baseProps, type: 'button', width: '60px', height: '28px' }),\n );\n\n container.append(header, text, media, actions);\n break;\n }\n\n case 'article': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n\n const title = createSkeletonElement({ ...baseProps, type: 'heading', width: '85%', height: '36px' });\n const meta = document.createElement('div');\n meta.style.display = 'flex';\n meta.style.gap = '12px';\n meta.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '32px', height: '32px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '140px', height: '14px' }),\n );\n const heroImg = createSkeletonElement({ ...baseProps, type: 'rect', height: '260px', radius: shapeRadius || '10px' });\n const body1 = createSkeletonParagraph(4, baseProps);\n const body2 = createSkeletonParagraph(3, baseProps);\n\n container.append(title, meta, heroImg, body1, body2);\n break;\n }\n\n case 'comment-thread': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n\n for (let i = 0; i < 3; i++) {\n const comment = document.createElement('div');\n comment.style.display = 'flex';\n comment.style.gap = '12px';\n if (i === 1) comment.style.marginLeft = '40px';\n\n const avatar = createSkeletonElement({ ...baseProps, type: 'circle', width: '36px', height: '36px' });\n const body = document.createElement('div');\n body.style.display = 'flex';\n body.style.flexDirection = 'column';\n body.style.gap = '6px';\n body.style.flex = '1';\n body.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '120px', height: '14px' }),\n createSkeletonParagraph(2, baseProps),\n );\n\n comment.append(avatar, body);\n container.appendChild(comment);\n }\n break;\n }\n\n case 'chat': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '14px';\n container.style.padding = '16px';\n\n const bubbles = [\n { align: 'flex-start', w: '65%' },\n { align: 'flex-end', w: '50%' },\n { align: 'flex-start', w: '80%' },\n { align: 'flex-end', w: '40%' },\n ];\n\n for (const b of bubbles) {\n const bubble = document.createElement('div');\n bubble.style.display = 'flex';\n bubble.style.justifyContent = b.align;\n const msg = createSkeletonElement({ ...baseProps, type: 'rect', width: b.w, height: '42px', radius: shapeRadius || '18px' });\n bubble.appendChild(msg);\n container.appendChild(bubble);\n }\n break;\n }\n\n case 'dashboard': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n\n const statGrid = document.createElement('div');\n statGrid.style.display = 'grid';\n statGrid.style.gridTemplateColumns = 'repeat(3, 1fr)';\n statGrid.style.gap = '12px';\n\n for (let i = 0; i < 3; i++) {\n const stat = document.createElement('div');\n stat.style.padding = '16px';\n stat.style.borderRadius = shapeRadius || '10px';\n stat.style.border = '1px solid rgba(0,0,0,0.06)';\n stat.style.display = 'flex';\n stat.style.flexDirection = 'column';\n stat.style.gap = '8px';\n stat.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '60%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'heading', width: '80%', height: '28px' }),\n );\n statGrid.appendChild(stat);\n }\n\n const chartBlock = createSkeletonElement({ ...baseProps, type: 'rect', height: '200px', radius: shapeRadius || '10px' });\n container.append(statGrid, chartBlock);\n break;\n }\n\n case 'form': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n container.style.padding = '20px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n for (let i = 0; i < 3; i++) {\n const group = document.createElement('div');\n group.style.display = 'flex';\n group.style.flexDirection = 'column';\n group.style.gap = '6px';\n group.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '30%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'input', width: '100%', height: '40px' }),\n );\n container.appendChild(group);\n }\n\n const submit = createSkeletonElement({ ...baseProps, type: 'button', width: '140px', height: '40px' });\n container.appendChild(submit);\n break;\n }\n\n case 'media-card': {\n container.style.display = 'flex';\n container.style.gap = '16px';\n container.style.padding = '12px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const thumb = createSkeletonElement({ ...baseProps, type: 'rect', width: '140px', height: '90px', radius: shapeRadius || '8px' });\n const meta = document.createElement('div');\n meta.style.display = 'flex';\n meta.style.flexDirection = 'column';\n meta.style.gap = '8px';\n meta.style.flex = '1';\n meta.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '80%', height: '18px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '60%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '40%', height: '12px' }),\n );\n\n container.append(thumb, meta);\n break;\n }\n\n case 'navbar': {\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'space-between';\n container.style.padding = '12px 20px';\n container.style.borderBottom = '1px solid rgba(0,0,0,0.08)';\n\n const brand = createSkeletonElement({ ...baseProps, type: 'heading', width: '110px', height: '24px' });\n const links = document.createElement('div');\n links.style.display = 'flex';\n links.style.gap = '18px';\n for (let i = 0; i < 4; i++) {\n links.appendChild(createSkeletonElement({ ...baseProps, type: 'line', width: '60px', height: '14px' }));\n }\n\n const cta = createSkeletonElement({ ...baseProps, type: 'button', width: '90px', height: '34px' });\n container.append(brand, links, cta);\n break;\n }\n\n case 'sidebar': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.justifyContent = 'space-between';\n container.style.padding = '18px 14px';\n container.style.height = '100%';\n container.style.minHeight = '320px';\n container.style.borderRight = '1px solid rgba(0,0,0,0.08)';\n\n const top = document.createElement('div');\n top.style.display = 'flex';\n top.style.flexDirection = 'column';\n top.style.gap = '16px';\n top.appendChild(createSkeletonElement({ ...baseProps, type: 'heading', width: '100px', height: '22px' }));\n\n for (let i = 0; i < 5; i++) {\n const navItem = document.createElement('div');\n navItem.style.display = 'flex';\n navItem.style.alignItems = 'center';\n navItem.style.gap = '10px';\n navItem.append(\n createSkeletonElement({ ...baseProps, type: 'icon', width: '20px', height: '20px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '90px', height: '14px' }),\n );\n top.appendChild(navItem);\n }\n\n const footer = document.createElement('div');\n footer.style.display = 'flex';\n footer.style.alignItems = 'center';\n footer.style.gap = '10px';\n footer.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '36px', height: '36px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '80px', height: '14px' }),\n );\n\n container.append(top, footer);\n break;\n }\n\n case 'settings-page': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '24px';\n container.style.padding = '24px';\n\n const title = createSkeletonElement({ ...baseProps, type: 'heading', width: '220px', height: '30px' });\n container.appendChild(title);\n\n for (let i = 0; i < 3; i++) {\n const section = document.createElement('div');\n section.style.display = 'flex';\n section.style.alignItems = 'center';\n section.style.justifyContent = 'space-between';\n section.style.padding = '14px 0';\n section.style.borderBottom = '1px solid rgba(0,0,0,0.06)';\n\n const textGroup = document.createElement('div');\n textGroup.style.display = 'flex';\n textGroup.style.flexDirection = 'column';\n textGroup.style.gap = '6px';\n textGroup.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '160px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '240px', height: '12px' }),\n );\n\n const control = createSkeletonElement({ ...baseProps, type: 'button', width: '50px', height: '28px', radius: '14px' });\n section.append(textGroup, control);\n container.appendChild(section);\n }\n break;\n }\n\n // === NEW PRESETS (19 - 40) ===\n\n case 'product-detail': {\n container.style.display = 'grid';\n container.style.gridTemplateColumns = '1fr 1.2fr';\n container.style.gap = '24px';\n container.style.padding = '20px';\n\n const left = document.createElement('div');\n left.style.display = 'flex';\n left.style.flexDirection = 'column';\n left.style.gap = '12px';\n const mainImg = createSkeletonElement({ ...baseProps, type: 'rect', height: '280px', radius: shapeRadius || '12px' });\n const thumbRow = document.createElement('div');\n thumbRow.style.display = 'flex';\n thumbRow.style.gap = '8px';\n for (let i = 0; i < 4; i++) {\n thumbRow.appendChild(createSkeletonElement({ ...baseProps, type: 'rect', width: '60px', height: '60px', radius: '6px' }));\n }\n left.append(mainImg, thumbRow);\n\n const right = document.createElement('div');\n right.style.display = 'flex';\n right.style.flexDirection = 'column';\n right.style.gap = '14px';\n const title = createSkeletonElement({ ...baseProps, type: 'heading', width: '85%', height: '32px' });\n const rating = createSkeletonElement({ ...baseProps, type: 'badge', width: '120px', height: '20px' });\n const price = createSkeletonElement({ ...baseProps, type: 'heading', width: '100px', height: '28px' });\n const desc = createSkeletonParagraph(3, baseProps);\n const btn = createSkeletonElement({ ...baseProps, type: 'button', width: '180px', height: '44px' });\n right.append(title, rating, price, desc, btn);\n\n container.append(left, right);\n break;\n }\n\n case 'news-feed': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n\n for (let i = 0; i < 3; i++) {\n const item = document.createElement('div');\n item.style.display = 'flex';\n item.style.gap = '16px';\n item.style.paddingBottom = '16px';\n item.style.borderBottom = '1px solid rgba(0,0,0,0.06)';\n\n const textCol = document.createElement('div');\n textCol.style.display = 'flex';\n textCol.style.flexDirection = 'column';\n textCol.style.gap = '8px';\n textCol.style.flex = '1';\n textCol.append(\n createSkeletonElement({ ...baseProps, type: 'badge', width: '80px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'heading', width: '90%', height: '20px' }),\n createSkeletonParagraph(2, baseProps),\n );\n\n const img = createSkeletonElement({ ...baseProps, type: 'rect', width: '120px', height: '90px', radius: shapeRadius || '8px' });\n item.append(textCol, img);\n container.appendChild(item);\n }\n break;\n }\n\n case 'inbox-list': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n container.style.borderRadius = shapeRadius || '8px';\n\n for (let i = 0; i < 4; i++) {\n const row = document.createElement('div');\n row.style.display = 'flex';\n row.style.alignItems = 'center';\n row.style.gap = '14px';\n row.style.padding = '12px 16px';\n row.style.borderBottom = '1px solid rgba(0,0,0,0.04)';\n\n const star = createSkeletonElement({ ...baseProps, type: 'icon', width: '18px', height: '18px' });\n const sender = createSkeletonElement({ ...baseProps, type: 'line', width: '120px', height: '14px' });\n const snippet = createSkeletonElement({ ...baseProps, type: 'line', width: '280px', height: '14px' });\n const time = createSkeletonElement({ ...baseProps, type: 'badge', width: '50px', height: '16px' });\n\n row.append(star, sender, snippet, time);\n container.appendChild(row);\n }\n break;\n }\n\n case 'notification-list': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '10px';\n\n for (let i = 0; i < 3; i++) {\n const notif = document.createElement('div');\n notif.style.display = 'flex';\n notif.style.alignItems = 'flex-start';\n notif.style.gap = '12px';\n notif.style.padding = '12px';\n notif.style.borderRadius = shapeRadius || '8px';\n notif.style.background = 'rgba(0,0,0,0.02)';\n\n const dot = createSkeletonElement({ ...baseProps, type: 'circle', width: '10px', height: '10px' });\n dot.style.marginTop = '6px';\n const avatar = createSkeletonElement({ ...baseProps, type: 'circle', width: '38px', height: '38px' });\n const content = document.createElement('div');\n content.style.display = 'flex';\n content.style.flexDirection = 'column';\n content.style.gap = '4px';\n content.style.flex = '1';\n content.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '75%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '40%', height: '12px' }),\n );\n\n notif.append(dot, avatar, content);\n container.appendChild(notif);\n }\n break;\n }\n\n case 'order-list': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '14px';\n\n for (let i = 0; i < 2; i++) {\n const order = document.createElement('div');\n order.style.display = 'flex';\n order.style.flexDirection = 'column';\n order.style.gap = '12px';\n order.style.padding = '16px';\n order.style.borderRadius = shapeRadius || '10px';\n order.style.border = '1px solid rgba(0,0,0,0.08)';\n\n const orderHeader = document.createElement('div');\n orderHeader.style.display = 'flex';\n orderHeader.style.justifyContent = 'space-between';\n orderHeader.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '140px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'badge', width: '80px', height: '22px' }),\n );\n\n const itemsRow = document.createElement('div');\n itemsRow.style.display = 'flex';\n itemsRow.style.gap = '10px';\n for (let j = 0; j < 3; j++) {\n itemsRow.appendChild(createSkeletonElement({ ...baseProps, type: 'rect', width: '50px', height: '50px', radius: '6px' }));\n }\n\n const footer = document.createElement('div');\n footer.style.display = 'flex';\n footer.style.justifyContent = 'space-between';\n footer.style.alignItems = 'center';\n footer.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '90px', height: '20px' }),\n createSkeletonElement({ ...baseProps, type: 'button', width: '110px', height: '32px' }),\n );\n\n order.append(orderHeader, itemsRow, footer);\n container.appendChild(order);\n }\n break;\n }\n\n case 'kpi-card': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n container.style.padding = '18px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const top = document.createElement('div');\n top.style.display = 'flex';\n top.style.justifyContent = 'space-between';\n top.style.alignItems = 'center';\n top.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '90px', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'icon', width: '20px', height: '20px' }),\n );\n\n const val = createSkeletonElement({ ...baseProps, type: 'heading', width: '140px', height: '36px' });\n const trend = createSkeletonElement({ ...baseProps, type: 'badge', width: '70px', height: '18px' });\n\n container.append(top, val, trend);\n break;\n }\n\n case 'chart-bar': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n container.style.padding = '18px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const head = createSkeletonElement({ ...baseProps, type: 'heading', width: '140px', height: '20px' });\n const barsWrap = document.createElement('div');\n barsWrap.style.display = 'flex';\n barsWrap.style.alignItems = 'flex-end';\n barsWrap.style.justifyContent = 'space-between';\n barsWrap.style.height = '140px';\n barsWrap.style.padding = '0 10px';\n\n const heights = ['40%', '75%', '55%', '90%', '65%', '80%', '50%'];\n for (const h of heights) {\n const bar = createSkeletonElement({ ...baseProps, type: 'rect', width: '22px', height: h, radius: '4px' });\n barsWrap.appendChild(bar);\n }\n\n container.append(head, barsWrap);\n break;\n }\n\n case 'chart-line': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '14px';\n container.style.padding = '18px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const head = createSkeletonElement({ ...baseProps, type: 'heading', width: '150px', height: '20px' });\n const lineArea = createSkeletonElement({ ...baseProps, type: 'rect', height: '140px', radius: '8px' });\n container.append(head, lineArea);\n break;\n }\n\n case 'chart-pie': {\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.gap = '20px';\n container.style.padding = '20px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const circle = createSkeletonElement({ ...baseProps, type: 'circle', width: '120px', height: '120px' });\n const legend = document.createElement('div');\n legend.style.display = 'flex';\n legend.style.flexDirection = 'column';\n legend.style.gap = '10px';\n legend.style.flex = '1';\n\n for (let i = 0; i < 3; i++) {\n const row = document.createElement('div');\n row.style.display = 'flex';\n row.style.alignItems = 'center';\n row.style.gap = '8px';\n row.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '12px', height: '12px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '90px', height: '14px' }),\n );\n legend.appendChild(row);\n }\n\n container.append(circle, legend);\n break;\n }\n\n case 'search-results': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '18px';\n\n const searchInput = createSkeletonElement({ ...baseProps, type: 'input', height: '42px', radius: shapeRadius || '24px' });\n container.appendChild(searchInput);\n\n for (let i = 0; i < 3; i++) {\n const res = document.createElement('div');\n res.style.display = 'flex';\n res.style.flexDirection = 'column';\n res.style.gap = '6px';\n res.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '160px', height: '12px' }),\n createSkeletonElement({ ...baseProps, type: 'heading', width: '70%', height: '20px' }),\n createSkeletonParagraph(2, baseProps),\n );\n container.appendChild(res);\n }\n break;\n }\n\n case 'video-player': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '14px';\n\n const screen = createSkeletonElement({ ...baseProps, type: 'rect', height: '240px', radius: shapeRadius || '12px' });\n const title = createSkeletonElement({ ...baseProps, type: 'heading', width: '80%', height: '24px' });\n const channel = document.createElement('div');\n channel.style.display = 'flex';\n channel.style.alignItems = 'center';\n channel.style.justifyContent = 'space-between';\n const chLeft = document.createElement('div');\n chLeft.style.display = 'flex';\n chLeft.style.alignItems = 'center';\n chLeft.style.gap = '10px';\n chLeft.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '40px', height: '40px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '120px', height: '14px' }),\n );\n const subBtn = createSkeletonElement({ ...baseProps, type: 'button', width: '100px', height: '36px' });\n channel.append(chLeft, subBtn);\n\n container.append(screen, title, channel);\n break;\n }\n\n case 'music-player': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.alignItems = 'center';\n container.style.gap = '14px';\n container.style.padding = '20px';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const album = createSkeletonElement({ ...baseProps, type: 'rect', width: '180px', height: '180px', radius: shapeRadius || '12px' });\n const song = createSkeletonElement({ ...baseProps, type: 'heading', width: '160px', height: '20px' });\n const artist = createSkeletonElement({ ...baseProps, type: 'line', width: '100px', height: '14px' });\n const progress = createSkeletonElement({ ...baseProps, type: 'line', width: '100%', height: '6px' });\n\n const controls = document.createElement('div');\n controls.style.display = 'flex';\n controls.style.alignItems = 'center';\n controls.style.gap = '20px';\n controls.append(\n createSkeletonElement({ ...baseProps, type: 'icon', width: '24px', height: '24px' }),\n createSkeletonElement({ ...baseProps, type: 'circle', width: '48px', height: '48px' }),\n createSkeletonElement({ ...baseProps, type: 'icon', width: '24px', height: '24px' }),\n );\n\n container.append(album, song, artist, progress, controls);\n break;\n }\n\n case 'stories-row': {\n container.style.display = 'flex';\n container.style.gap = '16px';\n container.style.overflowX = 'auto';\n container.style.padding = '8px 0';\n\n for (let i = 0; i < 5; i++) {\n const story = document.createElement('div');\n story.style.display = 'flex';\n story.style.flexDirection = 'column';\n story.style.alignItems = 'center';\n story.style.gap = '6px';\n story.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '60px', height: '60px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '48px', height: '10px' }),\n );\n container.appendChild(story);\n }\n break;\n }\n\n case 'reels': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.justifyContent = 'flex-end';\n container.style.height = '340px';\n container.style.padding = '20px';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.border = '1px solid rgba(0,0,0,0.1)';\n container.style.position = 'relative';\n\n const author = document.createElement('div');\n author.style.display = 'flex';\n author.style.alignItems = 'center';\n author.style.gap = '10px';\n author.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '36px', height: '36px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '100px', height: '14px' }),\n );\n const text = createSkeletonParagraph(2, baseProps);\n\n container.append(author, text);\n break;\n }\n\n case 'tabs': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n\n const tabHeader = document.createElement('div');\n tabHeader.style.display = 'flex';\n tabHeader.style.gap = '20px';\n tabHeader.style.borderBottom = '2px solid rgba(0,0,0,0.06)';\n tabHeader.style.paddingBottom = '8px';\n\n for (let i = 0; i < 4; i++) {\n tabHeader.appendChild(createSkeletonElement({ ...baseProps, type: 'line', width: '70px', height: '16px' }));\n }\n\n const body = createSkeletonParagraph(3, baseProps);\n container.append(tabHeader, body);\n break;\n }\n\n case 'calendar': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n container.style.padding = '16px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const calHeader = document.createElement('div');\n calHeader.style.display = 'flex';\n calHeader.style.justifyContent = 'space-between';\n calHeader.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '120px', height: '20px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '60px', height: '20px' }),\n );\n\n const grid = document.createElement('div');\n grid.style.display = 'grid';\n grid.style.gridTemplateColumns = 'repeat(7, 1fr)';\n grid.style.gap = '8px';\n\n for (let i = 0; i < 28; i++) {\n grid.appendChild(createSkeletonElement({ ...baseProps, type: 'rect', height: '24px', radius: '4px' }));\n }\n\n container.append(calHeader, grid);\n break;\n }\n\n case 'kanban': {\n container.style.display = 'grid';\n container.style.gridTemplateColumns = 'repeat(3, 1fr)';\n container.style.gap = '14px';\n\n for (let col = 0; col < 3; col++) {\n const column = document.createElement('div');\n column.style.display = 'flex';\n column.style.flexDirection = 'column';\n column.style.gap = '10px';\n column.style.padding = '12px';\n column.style.borderRadius = shapeRadius || '10px';\n column.style.background = 'rgba(0,0,0,0.03)';\n\n const colHead = createSkeletonElement({ ...baseProps, type: 'heading', width: '80px', height: '16px' });\n column.appendChild(colHead);\n\n for (let card = 0; card < 2; card++) {\n const c = document.createElement('div');\n c.style.display = 'flex';\n c.style.flexDirection = 'column';\n c.style.gap = '8px';\n c.style.padding = '10px';\n c.style.borderRadius = shapeRadius || '6px';\n c.style.background = '#fff';\n c.style.border = '1px solid rgba(0,0,0,0.06)';\n c.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '85%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'badge', width: '50px', height: '16px' }),\n );\n column.appendChild(c);\n }\n\n container.appendChild(column);\n }\n break;\n }\n\n case 'timeline': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '18px';\n container.style.padding = '10px 0';\n\n for (let i = 0; i < 3; i++) {\n const item = document.createElement('div');\n item.style.display = 'flex';\n item.style.gap = '14px';\n\n const dotCol = document.createElement('div');\n dotCol.style.display = 'flex';\n dotCol.style.flexDirection = 'column';\n dotCol.style.alignItems = 'center';\n dotCol.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '16px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'rect', width: '2px', height: '40px' }),\n );\n\n const content = document.createElement('div');\n content.style.display = 'flex';\n content.style.flexDirection = 'column';\n content.style.gap = '4px';\n content.style.flex = '1';\n content.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '90px', height: '12px' }),\n createSkeletonElement({ ...baseProps, type: 'heading', width: '60%', height: '18px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '85%', height: '14px' }),\n );\n\n item.append(dotCol, content);\n container.appendChild(item);\n }\n break;\n }\n\n case 'map-card': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.borderRadius = shapeRadius || '14px';\n container.style.overflow = 'hidden';\n container.style.border = '1px solid rgba(0,0,0,0.08)';\n\n const mapArea = createSkeletonElement({ ...baseProps, type: 'rect', height: '160px', radius: '0' });\n const cardBody = document.createElement('div');\n cardBody.style.display = 'flex';\n cardBody.style.justifyContent = 'space-between';\n cardBody.style.alignItems = 'center';\n cardBody.style.padding = '14px';\n\n const left = document.createElement('div');\n left.style.display = 'flex';\n left.style.flexDirection = 'column';\n left.style.gap = '6px';\n left.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '140px', height: '18px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '200px', height: '12px' }),\n );\n\n const btn = createSkeletonElement({ ...baseProps, type: 'button', width: '90px', height: '34px' });\n cardBody.append(left, btn);\n\n container.append(mapArea, cardBody);\n break;\n }\n\n case 'pricing-card': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n container.style.padding = '24px';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.border = '1px solid rgba(0,0,0,0.08)';\n\n const badge = createSkeletonElement({ ...baseProps, type: 'badge', width: '70px', height: '22px' });\n const price = createSkeletonElement({ ...baseProps, type: 'heading', width: '130px', height: '38px' });\n const desc = createSkeletonElement({ ...baseProps, type: 'line', width: '80%', height: '14px' });\n\n const featureList = document.createElement('div');\n featureList.style.display = 'flex';\n featureList.style.flexDirection = 'column';\n featureList.style.gap = '10px';\n for (let i = 0; i < 4; i++) {\n const f = document.createElement('div');\n f.style.display = 'flex';\n f.style.alignItems = 'center';\n f.style.gap = '8px';\n f.append(\n createSkeletonElement({ ...baseProps, type: 'icon', width: '16px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '70%', height: '14px' }),\n );\n featureList.appendChild(f);\n }\n\n const cta = createSkeletonElement({ ...baseProps, type: 'button', width: '100%', height: '42px' });\n container.append(badge, price, desc, featureList, cta);\n break;\n }\n\n case 'testimonial': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n container.style.padding = '20px';\n container.style.borderRadius = shapeRadius || '14px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const quote = createSkeletonParagraph(3, baseProps);\n const author = document.createElement('div');\n author.style.display = 'flex';\n author.style.alignItems = 'center';\n author.style.gap = '12px';\n author.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '42px', height: '42px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '120px', height: '16px' }),\n );\n\n container.append(quote, author);\n break;\n }\n\n case 'faq-accordion': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n\n for (let i = 0; i < 3; i++) {\n const item = document.createElement('div');\n item.style.display = 'flex';\n item.style.flexDirection = 'column';\n item.style.gap = '8px';\n item.style.padding = '14px 16px';\n item.style.borderRadius = shapeRadius || '8px';\n item.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const q = document.createElement('div');\n q.style.display = 'flex';\n q.style.justifyContent = 'space-between';\n q.style.alignItems = 'center';\n q.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '75%', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'icon', width: '16px', height: '16px' }),\n );\n item.appendChild(q);\n\n if (i === 0) {\n const a = createSkeletonParagraph(2, baseProps);\n item.appendChild(a);\n }\n container.appendChild(item);\n }\n break;\n }\n\n case 'file-explorer': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '10px';\n container.style.padding = '12px';\n\n for (let i = 0; i < 5; i++) {\n const fileRow = document.createElement('div');\n fileRow.style.display = 'flex';\n fileRow.style.alignItems = 'center';\n fileRow.style.gap = '10px';\n fileRow.style.marginLeft = `${(i % 3) * 16}px`;\n fileRow.append(\n createSkeletonElement({ ...baseProps, type: 'icon', width: '16px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: `${100 + (i * 20)}px`, height: '14px' }),\n );\n container.appendChild(fileRow);\n }\n break;\n }\n\n case 'code-block': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '8px';\n container.style.padding = '16px';\n container.style.borderRadius = shapeRadius || '8px';\n container.style.background = 'rgba(0,0,0,0.05)';\n\n const widths = ['40%', '70%', '55%', '85%', '30%', '60%'];\n for (const w of widths) {\n container.appendChild(createSkeletonElement({ ...baseProps, type: 'line', width: w, height: '12px' }));\n }\n break;\n }\n }\n\n return container;\n}\n","/**\n * Veilkit - Accessibility & Localization Engine\n * Screen-reader announcements, polite live regions, and WCAG AA compliance\n */\n\nconst DEFAULT_LABELS: Record<string, Record<string, string>> = {\n en: {\n loading: 'Loading content, please wait…',\n loaded: 'Content loaded.',\n progress: 'Loading progress',\n busy: 'Busy',\n },\n es: {\n loading: 'Cargando contenido, por favor espere…',\n loaded: 'Contenido cargado.',\n progress: 'Progreso de carga',\n busy: 'Ocupado',\n },\n fr: {\n loading: 'Chargement du contenu, veuillez patienter…',\n loaded: 'Contenu chargé.',\n progress: 'Progression du chargement',\n busy: 'Occupé',\n },\n de: {\n loading: 'Inhalt wird geladen, bitte warten…',\n loaded: 'Inhalt geladen.',\n progress: 'Ladefortschritt',\n busy: 'Beschäftigt',\n },\n ja: {\n loading: 'コンテンツを読み込んでいます…',\n loaded: '読み込みが完了しました。',\n progress: '読み込み状況',\n busy: '処理中',\n },\n zh: {\n loading: '正在加载内容,请稍候…',\n loaded: '内容加载完成。',\n progress: '加载进度',\n busy: '忙碌中',\n },\n ar: {\n loading: 'جاري تحميل المحتوى، يرجى الانتظار…',\n loaded: 'تم تحميل المحتوى.',\n progress: 'تقدم التحميل',\n busy: 'مشغول',\n },\n};\n\nlet currentLocale = 'en';\nconst customLabels: Record<string, string> = {};\n\n/**\n * Configure active localization language\n */\nexport function setLocale(locale: string): void {\n currentLocale = locale;\n}\n\n/**\n * Get current active locale\n */\nexport function getLocale(): string {\n return currentLocale;\n}\n\n/**\n * Register or override accessibility label strings\n */\nexport function setLabels(labels: Record<string, string>): void {\n Object.assign(customLabels, labels);\n}\n\n/**\n * Resolves a localized label for screen readers\n */\nexport function getLabel(key: 'loading' | 'loaded' | 'progress' | 'busy' | string): string {\n if (customLabels[key]) return customLabels[key];\n const dict = DEFAULT_LABELS[currentLocale] || DEFAULT_LABELS.en;\n return dict[key] || DEFAULT_LABELS.en[key] || 'Loading…';\n}\n\n/**\n * Marks a container element with accessible loading attributes\n */\nexport function applyA11yLoading(container: HTMLElement, label?: string): HTMLElement {\n container.setAttribute('aria-busy', 'true');\n\n let srNode = container.querySelector('.veil-sr-only') as HTMLElement;\n if (!srNode) {\n srNode = document.createElement('span');\n srNode.className = 'veil-sr-only';\n srNode.setAttribute('role', 'status');\n srNode.setAttribute('aria-live', 'polite');\n container.appendChild(srNode);\n }\n srNode.textContent = label || getLabel('loading');\n return srNode;\n}\n\n/**\n * Clears accessible loading state from container\n */\nexport function removeA11yLoading(container: HTMLElement): void {\n container.removeAttribute('aria-busy');\n const srNode = container.querySelector('.veil-sr-only');\n if (srNode) {\n srNode.remove();\n }\n}\n","/**\n * Veilkit - Loading Overlay System\n * Container-level and fullscreen blurred frosted overlays with spinner and message.\n */\n\nimport { OverlayProps } from './types';\nimport { injectStyles } from './css';\nimport { createSpinner } from './spinners';\nimport { applyA11yLoading, removeA11yLoading } from './a11y';\n\nconst activeOverlays = new Map<HTMLElement, HTMLElement>();\nlet scrollLockOriginalOverflow: string = '';\n\nexport class OverlayController {\n /**\n * Shows a loading overlay over a container element or fullscreen\n */\n public show(target?: HTMLElement | string, props: OverlayProps = {}): HTMLElement {\n injectStyles();\n\n let container: HTMLElement;\n const isFullscreen = !target;\n\n if (isFullscreen) {\n container = document.body;\n } else if (typeof target === 'string') {\n container = document.querySelector(target) as HTMLElement;\n if (!container) container = document.body;\n } else {\n container = target;\n }\n\n if (activeOverlays.has(container)) {\n return activeOverlays.get(container)!;\n }\n\n const overlay = document.createElement('div');\n overlay.className = `veil-overlay ${isFullscreen ? 'veil-overlay-fullscreen' : ''} ${props.className || ''}`.trim();\n overlay.setAttribute('role', 'status');\n\n if (props.color) {\n overlay.style.setProperty('--veil-overlay-bg', props.color);\n }\n if (props.blur !== undefined) {\n const blurVal = typeof props.blur === 'boolean' ? (props.blur ? '8px' : '0px') : props.blur;\n overlay.style.setProperty('--veil-overlay-blur', blurVal);\n }\n if (props.zIndex !== undefined) {\n overlay.style.zIndex = String(props.zIndex);\n }\n\n // Spinner\n if (props.spinner !== false) {\n const spinnerType = typeof props.spinner === 'string' ? props.spinner : 'ring';\n const spinnerEl = createSpinner({ type: spinnerType, size: 36 });\n overlay.appendChild(spinnerEl);\n }\n\n // Message\n if (props.message) {\n const msg = document.createElement('span');\n msg.className = 'veil-overlay-message';\n msg.style.fontSize = '14px';\n msg.style.fontWeight = '500';\n msg.style.color = 'var(--veil-contrast, #1f2937)';\n msg.textContent = props.message;\n overlay.appendChild(msg);\n }\n\n if (!isFullscreen) {\n const compPos = window.getComputedStyle(container).position;\n if (compPos === 'static') {\n container.style.position = 'relative';\n }\n }\n\n applyA11yLoading(container, props.message);\n\n if (props.lockScroll && isFullscreen && typeof document !== 'undefined') {\n scrollLockOriginalOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n\n container.appendChild(overlay);\n activeOverlays.set(container, overlay);\n\n return overlay;\n }\n\n /**\n * Hides and removes the overlay\n */\n public hide(target?: HTMLElement | string): void {\n let container: HTMLElement;\n const isFullscreen = !target;\n\n if (isFullscreen) {\n container = document.body;\n } else if (typeof target === 'string') {\n container = document.querySelector(target) as HTMLElement;\n if (!container) container = document.body;\n } else {\n container = target;\n }\n\n const overlay = activeOverlays.get(container);\n if (!overlay) return;\n\n overlay.style.opacity = '0';\n setTimeout(() => {\n overlay.remove();\n activeOverlays.delete(container);\n removeA11yLoading(container);\n\n if (isFullscreen && scrollLockOriginalOverflow !== undefined) {\n document.body.style.overflow = scrollLockOriginalOverflow;\n }\n }, 200);\n }\n}\n\nexport const overlayController = new OverlayController();\n","/**\n * Veilkit - Loading Button Controller\n * 16 Loading Styles, State Machine (idle -> loading -> success | error -> idle),\n * Result Animations (checkmark, cross, shake, success-burst), and Press Feedback.\n */\n\nimport {\n ButtonLoadingStyle,\n ButtonPressFeedback,\n ButtonStatus,\n LoadingButtonProps,\n} from './types';\nimport { createSpinner } from './spinners';\nimport { injectStyles } from './css';\n\nexport const BUTTON_LOADING_STYLES: ButtonLoadingStyle[] = [\n 'spinner-left',\n 'spinner-right',\n 'spinner-replace',\n 'dots-after-text',\n 'progress-fill',\n 'shimmer-surface',\n 'pulse-glow',\n 'stripes-progress',\n 'morph-circle',\n 'slide-text',\n 'border-trace',\n 'liquid-fill',\n 'bounce-dots',\n 'glass-shine',\n 'neon-pulse',\n 'skeleton-button',\n];\n\nexport function wrapLoadingButton(\n buttonEl: HTMLButtonElement,\n props: LoadingButtonProps = {},\n): {\n setStatus: (status: ButtonStatus, customText?: string) => void;\n setLoading: (loading: boolean, loadingText?: string) => void;\n getStatus: () => ButtonStatus;\n destroy: () => void;\n} {\n injectStyles();\n injectButtonKeyframes();\n\n let currentStatus: ButtonStatus = props.status || (props.loading ? 'loading' : 'idle');\n let originalWidth: string = '';\n let originalHeight: string = '';\n let originalHtml: string = buttonEl.innerHTML;\n let resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n // Press Feedback Listeners\n const pressFeedback: ButtonPressFeedback = props.pressFeedback || 'press-scale';\n setupPressFeedback(buttonEl, pressFeedback);\n\n function clearResetTimer(): void {\n if (resetTimer) {\n clearTimeout(resetTimer);\n resetTimer = null;\n }\n }\n\n function setStatus(status: ButtonStatus, customText?: string): void {\n clearResetTimer();\n const prevStatus = currentStatus;\n currentStatus = status;\n\n if (props.onStatusChange && prevStatus !== status) {\n props.onStatusChange(status);\n }\n\n if (status === 'idle') {\n buttonEl.classList.remove(\n 'veil-btn-loading',\n 'veil-btn-success',\n 'veil-btn-error',\n 'veil-btn-shake',\n 'veil-btn-morph',\n );\n buttonEl.removeAttribute('aria-disabled');\n buttonEl.removeAttribute('aria-busy');\n buttonEl.style.width = originalWidth;\n buttonEl.style.height = originalHeight;\n buttonEl.innerHTML = originalHtml;\n return;\n }\n\n // Lock dimensions on first transition away from idle\n if (prevStatus === 'idle') {\n const rect = buttonEl.getBoundingClientRect();\n originalWidth = buttonEl.style.width;\n originalHeight = buttonEl.style.height;\n originalHtml = buttonEl.innerHTML;\n\n if (rect.width > 0) {\n buttonEl.style.width = `${rect.width}px`;\n }\n if (rect.height > 0) {\n buttonEl.style.height = `${rect.height}px`;\n }\n }\n\n if (status === 'loading') {\n buttonEl.classList.add('veil-btn-loading');\n buttonEl.classList.remove('veil-btn-success', 'veil-btn-error');\n buttonEl.setAttribute('aria-disabled', 'true');\n buttonEl.setAttribute('aria-busy', 'true');\n\n const styleType: ButtonLoadingStyle =\n props.styleType ||\n (props.spinnerPlacement === 'replace'\n ? 'spinner-replace'\n : props.spinnerPlacement === 'end'\n ? 'spinner-right'\n : 'spinner-left');\n\n renderLoadingStyle(buttonEl, styleType, props, customText || props.loadingText);\n } else if (status === 'success') {\n buttonEl.classList.remove('veil-btn-loading', 'veil-btn-error');\n buttonEl.classList.add('veil-btn-success');\n buttonEl.setAttribute('aria-busy', 'false');\n\n renderResult(buttonEl, 'success', customText || props.successText || 'Success', props.resultAnimation);\n\n const resetDelay = props.resetAfter !== undefined ? props.resetAfter : 2000;\n if (resetDelay > 0) {\n resetTimer = setTimeout(() => setStatus('idle'), resetDelay);\n }\n } else if (status === 'error') {\n buttonEl.classList.remove('veil-btn-loading', 'veil-btn-success');\n buttonEl.classList.add('veil-btn-error');\n buttonEl.setAttribute('aria-busy', 'false');\n\n renderResult(buttonEl, 'error', customText || props.errorText || 'Failed', props.resultAnimation);\n\n const resetDelay = props.resetAfter !== undefined ? props.resetAfter : 2000;\n if (resetDelay > 0) {\n resetTimer = setTimeout(() => setStatus('idle'), resetDelay);\n }\n }\n }\n\n // Promise-driven Click Handler\n const clickHandler = async (e: MouseEvent) => {\n if (currentStatus !== 'idle') {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n if (props.onClick) {\n try {\n const result = props.onClick(e);\n if (result && typeof result.then === 'function') {\n setStatus('loading');\n await result;\n setStatus('success');\n }\n } catch {\n setStatus('error');\n }\n }\n };\n\n buttonEl.addEventListener('click', clickHandler);\n\n if (props.status) {\n setStatus(props.status);\n } else if (props.loading) {\n setStatus('loading', props.loadingText);\n }\n\n return {\n setStatus,\n setLoading: (loading: boolean, text?: string) => setStatus(loading ? 'loading' : 'idle', text),\n getStatus: () => currentStatus,\n destroy: () => {\n clearResetTimer();\n buttonEl.removeEventListener('click', clickHandler);\n setStatus('idle');\n },\n };\n}\n\nfunction setupPressFeedback(btn: HTMLElement, feedback: ButtonPressFeedback): void {\n if (feedback === 'none') return;\n\n if (feedback === 'press-scale') {\n btn.style.transition = 'transform 100ms ease, box-shadow 150ms ease';\n btn.addEventListener('mousedown', () => {\n btn.style.transform = 'scale(0.97)';\n });\n const reset = () => {\n btn.style.transform = 'scale(1)';\n };\n btn.addEventListener('mouseup', reset);\n btn.addEventListener('mouseleave', reset);\n } else if (feedback === 'ripple') {\n btn.style.position = 'relative';\n btn.style.overflow = 'hidden';\n\n btn.addEventListener('click', (e) => {\n const rect = btn.getBoundingClientRect();\n const circle = document.createElement('span');\n const diameter = Math.max(rect.width, rect.height);\n const radius = diameter / 2;\n\n circle.style.width = circle.style.height = `${diameter}px`;\n circle.style.left = `${e.clientX - rect.left - radius}px`;\n circle.style.top = `${e.clientY - rect.top - radius}px`;\n circle.className = 'veil-btn-ripple';\n\n const existing = btn.querySelector('.veil-btn-ripple');\n if (existing) existing.remove();\n btn.appendChild(circle);\n });\n } else if (feedback === 'glow-follow') {\n btn.addEventListener('mousemove', (e) => {\n const rect = btn.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n btn.style.setProperty('--veil-mouse-x', `${x}px`);\n btn.style.setProperty('--veil-mouse-y', `${y}px`);\n });\n }\n}\n\nfunction renderLoadingStyle(\n btn: HTMLElement,\n style: ButtonLoadingStyle,\n props: LoadingButtonProps,\n text?: string,\n): void {\n const spinnerType = props.spinner || 'ring';\n const labelText = text || btn.textContent?.trim() || '';\n\n btn.innerHTML = '';\n\n switch (style) {\n case 'spinner-left': {\n const spinner = createSpinner({ type: spinnerType, size: 16, color: 'currentColor' });\n spinner.classList.add('veil-btn-spinner-wrap');\n const span = document.createElement('span');\n span.textContent = labelText;\n btn.append(spinner, span);\n break;\n }\n\n case 'spinner-right': {\n const span = document.createElement('span');\n span.textContent = labelText;\n const spinner = createSpinner({ type: spinnerType, size: 16, color: 'currentColor' });\n spinner.classList.add('veil-btn-spinner-wrap');\n spinner.style.marginLeft = '8px';\n spinner.style.marginRight = '0';\n btn.append(span, spinner);\n break;\n }\n\n case 'spinner-replace': {\n const spinner = createSpinner({ type: spinnerType, size: 20, color: 'currentColor' });\n btn.appendChild(spinner);\n break;\n }\n\n case 'dots-after-text': {\n const span = document.createElement('span');\n span.textContent = labelText;\n const dots = document.createElement('span');\n dots.className = 'veil-btn-typing-dots';\n dots.textContent = '...';\n btn.append(span, dots);\n break;\n }\n\n case 'progress-fill': {\n const progress = document.createElement('div');\n progress.className = 'veil-btn-progress-bar';\n const pct = props.progress !== undefined ? props.progress : 60;\n progress.style.width = `${pct}%`;\n const span = document.createElement('span');\n span.style.position = 'relative';\n span.style.zIndex = '2';\n span.textContent = labelText;\n btn.append(progress, span);\n break;\n }\n\n case 'shimmer-surface': {\n const span = document.createElement('span');\n span.textContent = labelText;\n span.style.position = 'relative';\n span.style.zIndex = '2';\n const shimmer = document.createElement('div');\n shimmer.className = 'veil-btn-shimmer';\n btn.append(span, shimmer);\n break;\n }\n\n case 'pulse-glow': {\n btn.classList.add('veil-btn-pulse-glow');\n const span = document.createElement('span');\n span.textContent = labelText;\n btn.appendChild(span);\n break;\n }\n\n case 'stripes-progress': {\n const stripes = document.createElement('div');\n stripes.className = 'veil-btn-stripes';\n const span = document.createElement('span');\n span.style.position = 'relative';\n span.style.zIndex = '2';\n span.textContent = labelText;\n btn.append(stripes, span);\n break;\n }\n\n case 'morph-circle': {\n btn.classList.add('veil-btn-morph');\n const spinner = createSpinner({ type: spinnerType, size: 20, color: 'currentColor' });\n btn.appendChild(spinner);\n break;\n }\n\n case 'slide-text': {\n const wrap = document.createElement('span');\n wrap.className = 'veil-btn-slide-wrap';\n const oldText = document.createElement('span');\n oldText.className = 'veil-btn-slide-out';\n oldText.textContent = labelText;\n const newText = document.createElement('span');\n newText.className = 'veil-btn-slide-in';\n newText.textContent = text || 'Loading…';\n wrap.append(oldText, newText);\n btn.appendChild(wrap);\n break;\n }\n\n case 'border-trace': {\n const span = document.createElement('span');\n span.textContent = labelText;\n span.style.position = 'relative';\n span.style.zIndex = '2';\n const trace = document.createElement('div');\n trace.className = 'veil-btn-border-trace';\n btn.append(span, trace);\n break;\n }\n\n case 'liquid-fill': {\n const liquid = document.createElement('div');\n liquid.className = 'veil-btn-liquid';\n const span = document.createElement('span');\n span.style.position = 'relative';\n span.style.zIndex = '2';\n span.textContent = labelText;\n btn.append(liquid, span);\n break;\n }\n\n case 'bounce-dots': {\n const spinner = createSpinner({ type: 'dots', size: 22, color: 'currentColor' });\n const span = document.createElement('span');\n span.textContent = labelText ? ` ${labelText}` : '';\n btn.append(spinner, span);\n break;\n }\n\n case 'glass-shine': {\n btn.classList.add('veil-btn-glass-shine');\n const span = document.createElement('span');\n span.textContent = labelText;\n btn.appendChild(span);\n break;\n }\n\n case 'neon-pulse': {\n btn.classList.add('veil-btn-neon-pulse');\n const span = document.createElement('span');\n span.textContent = labelText;\n btn.appendChild(span);\n break;\n }\n\n case 'skeleton-button': {\n const skel = document.createElement('div');\n skel.className = 'veil-skeleton';\n skel.setAttribute('data-veil-shape', 'button');\n skel.setAttribute('data-veil-anim', 'shimmer');\n skel.style.width = '100%';\n skel.style.height = '100%';\n btn.appendChild(skel);\n break;\n }\n }\n}\n\nfunction renderResult(\n btn: HTMLElement,\n type: 'success' | 'error',\n text: string,\n animation: string = 'checkmark',\n): void {\n btn.innerHTML = '';\n btn.style.display = 'inline-flex';\n btn.style.alignItems = 'center';\n btn.style.justifyContent = 'center';\n btn.style.gap = '8px';\n\n if (type === 'error' && (animation === 'shake' || animation === 'cross' || animation === 'none')) {\n btn.classList.add('veil-btn-shake');\n }\n\n if (type === 'success' && animation === 'success-burst') {\n const burst = document.createElement('div');\n burst.className = 'veil-btn-burst';\n btn.appendChild(burst);\n }\n\n // Draw Animated SVG Icon\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 24 24');\n svg.style.width = '18px';\n svg.style.height = '18px';\n svg.style.stroke = 'currentColor';\n svg.style.strokeWidth = '2.5';\n svg.style.fill = 'none';\n svg.style.strokeLinecap = 'round';\n svg.style.strokeLinejoin = 'round';\n\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n if (type === 'success') {\n path.setAttribute('d', 'M5 13l4 4L19 7');\n } else {\n path.setAttribute('d', 'M6 18L18 6M6 6l12 12');\n }\n path.style.strokeDasharray = '30';\n path.style.strokeDashoffset = '30';\n path.style.animation = 'veil-draw 300ms ease forwards';\n\n svg.appendChild(path);\n const label = document.createElement('span');\n label.textContent = text;\n\n btn.append(svg, label);\n}\n\nlet buttonKeyframesInjected = false;\nfunction injectButtonKeyframes(): void {\n if (buttonKeyframesInjected || typeof document === 'undefined') return;\n buttonKeyframesInjected = true;\n\n const style = document.createElement('style');\n style.id = 'veilkit-button-styles';\n style.textContent = `\n .veil-btn-loading { position: relative; cursor: wait !important; pointer-events: none; }\n .veil-btn-success { background-color: #10b981 !important; color: #fff !important; }\n .veil-btn-error { background-color: #ef4444 !important; color: #fff !important; }\n .veil-btn-shake { animation: veil-shake 350ms cubic-bezier(0.36, 0.07, 0.19, 0.97) both; }\n .veil-btn-ripple {\n position: absolute; border-radius: 50%;\n background: rgba(255, 255, 255, 0.4);\n transform: scale(0);\n animation: veil-btn-ripple-anim 600ms linear;\n pointer-events: none;\n }\n .veil-btn-progress-bar {\n position: absolute; left: 0; top: 0; bottom: 0;\n background: rgba(255, 255, 255, 0.25);\n transition: width 200ms ease;\n }\n .veil-btn-shimmer {\n position: absolute; inset: 0;\n background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);\n animation: veil-btn-shimmer 1.5s infinite;\n }\n .veil-btn-pulse-glow { animation: veil-btn-glow 1.4s ease-in-out infinite alternate; }\n .veil-btn-stripes {\n position: absolute; inset: 0;\n background: repeating-linear-gradient(45deg, rgba(255,255,255,0.15), rgba(255,255,255,0.15) 10px, transparent 10px, transparent 20px);\n background-size: 28px 28px;\n animation: veil-btn-stripes 1s linear infinite;\n }\n .veil-btn-morph { border-radius: 50% !important; padding: 0 !important; width: 40px !important; height: 40px !important; transition: all 250ms ease; }\n .veil-btn-typing-dots { animation: veil-typing-text 1.2s infinite; display: inline-block; width: 1.2em; text-align: left; }\n .veil-btn-slide-wrap { display: flex; flex-direction: column; overflow: hidden; height: 1.2em; position: relative; }\n .veil-btn-slide-out { animation: veil-slide-up-out 250ms forwards; }\n .veil-btn-slide-in { animation: veil-slide-up-in 250ms forwards; }\n .veil-btn-border-trace {\n position: absolute; inset: -2px; border-radius: inherit;\n background: conic-gradient(from 0deg, transparent 60%, currentColor 100%);\n animation: veil-spin 1.2s linear infinite;\n -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #fff calc(100% - 1.5px));\n mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #fff calc(100% - 1.5px));\n }\n .veil-btn-liquid {\n position: absolute; inset: 0; background: currentColor; opacity: 0.15;\n animation: veil-liquid-wave 2s infinite ease-in-out alternate;\n }\n .veil-btn-glass-shine {\n box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.4), 0 4px 12px rgba(0, 0, 0, 0.15);\n background: linear-gradient(135deg, rgba(255,255,255,0.2), rgba(255,255,255,0.05));\n }\n .veil-btn-neon-pulse {\n box-shadow: 0 0 15px currentColor;\n animation: veil-btn-glow 1.2s infinite alternate;\n }\n .veil-btn-burst {\n position: absolute; inset: -4px; border-radius: inherit;\n box-shadow: 0 0 20px #10b981;\n animation: veil-burst 500ms ease-out forwards;\n pointer-events: none;\n }\n\n @keyframes veil-draw { to { stroke-dashoffset: 0; } }\n @keyframes veil-shake {\n 10%, 90% { transform: translate3d(-1px, 0, 0); }\n 20%, 80% { transform: translate3d(2px, 0, 0); }\n 30%, 50%, 70% { transform: translate3d(-4px, 0, 0); }\n 40%, 60% { transform: translate3d(4px, 0, 0); }\n }\n @keyframes veil-btn-ripple-anim { to { transform: scale(4); opacity: 0; } }\n @keyframes veil-btn-shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }\n @keyframes veil-btn-glow { from { opacity: 0.8; transform: scale(0.99); } to { opacity: 1; transform: scale(1.01); } }\n @keyframes veil-btn-stripes { from { background-position: 0 0; } to { background-position: 28px 0; } }\n @keyframes veil-slide-up-out { from { transform: translateY(0); } to { transform: translateY(-100%); } }\n @keyframes veil-slide-up-in { from { transform: translateY(100%); } to { transform: translateY(0); } }\n @keyframes veil-liquid-wave { from { transform: scaleY(0.7); } to { transform: scaleY(1); } }\n @keyframes veil-burst { 0% { opacity: 1; transform: scale(0.95); } 100% { opacity: 0; transform: scale(1.2); } }\n @keyframes veil-typing-text { 0% { content: ''; } 25% { content: '.'; } 50% { content: '..'; } 75% { content: '...'; } }\n `;\n document.head.appendChild(style);\n}\n","/**\n * Veilkit - Lazy Image & Media Placeholder\n * Renders synchronized skeleton placeholder until image loads,\n * then reveals with smooth blur-up transition and handles error fallback.\n */\n\nimport { LazyImageProps } from './types';\nimport { createSkeletonElement } from './primitives';\nimport { injectStyles } from './css';\n\nexport function createLazyImage(props: LazyImageProps): HTMLElement {\n injectStyles();\n\n const container = document.createElement('div');\n container.className = `veil-lazy-img-wrap ${props.className || ''}`.trim();\n container.style.position = 'relative';\n container.style.display = 'inline-block';\n container.style.overflow = 'hidden';\n\n if (props.width) {\n container.style.width = typeof props.width === 'number' ? `${props.width}px` : props.width;\n }\n if (props.height) {\n container.style.height = typeof props.height === 'number' ? `${props.height}px` : props.height;\n }\n if (props.aspectRatio) {\n container.style.aspectRatio = String(props.aspectRatio);\n }\n if (props.radius) {\n const r = typeof props.radius === 'number' ? `${props.radius}px` : props.radius;\n container.style.borderRadius = r;\n }\n\n // Skeleton placeholder\n const skeleton = createSkeletonElement({\n animation: props.animation || 'shimmer',\n theme: props.theme,\n width: '100%',\n height: '100%',\n radius: props.radius,\n });\n skeleton.style.position = 'absolute';\n skeleton.style.inset = '0';\n container.appendChild(skeleton);\n\n // Real Image\n const img = document.createElement('img');\n img.alt = props.alt || '';\n img.className = 'veil-lazy-img veil-lazy-img-loading';\n img.style.width = '100%';\n img.style.height = '100%';\n img.style.objectFit = 'cover';\n img.style.display = 'block';\n\n img.onload = () => {\n img.classList.remove('veil-lazy-img-loading');\n img.classList.add('veil-lazy-img-loaded');\n skeleton.style.opacity = '0';\n setTimeout(() => {\n skeleton.remove();\n }, 350);\n if (props.onLoad) props.onLoad();\n };\n\n img.onerror = (err) => {\n if (props.fallbackSrc && img.src !== props.fallbackSrc) {\n img.src = props.fallbackSrc;\n } else {\n skeleton.remove();\n container.style.backgroundColor = '#fee2e2';\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.textContent = '⚠️ Image failed to load';\n }\n if (props.onError) props.onError(err);\n };\n\n img.src = props.src;\n container.appendChild(img);\n\n return container;\n}\n","import { defineComponent, h, ref, onMounted, onUnmounted, watch, PropType } from 'vue';\nimport {\n VeilThemeName,\n VeilAnimationName,\n VeilPrimitiveType,\n VeilSpinnerType,\n VeilPresetName,\n VeilShapeStyle,\n ButtonStatus,\n ButtonLoadingStyle,\n ButtonPressFeedback,\n ButtonResultAnimation,\n} from '../core/types';\nimport { injectStyles } from '../core/css';\nimport { createSpinner } from '../core/spinners';\nimport { createPreset } from '../core/presets';\nimport { createProgressElement } from '../core/progress';\nimport { overlayController } from '../core/overlay';\nimport { createAutoMeasureOverlay } from '../core/measure';\nimport { wrapLoadingButton } from '../core/button';\nimport { createLazyImage } from '../core/lazy-image';\n\nexport const VSkeleton = defineComponent({\n name: 'VSkeleton',\n props: {\n type: { type: String as PropType<VeilPrimitiveType>, default: 'rect' },\n width: { type: [String, Number] },\n height: { type: [String, Number] },\n radius: { type: [String, Number] },\n count: { type: Number, default: 1 },\n gap: { type: [String, Number], default: '0.5rem' },\n lines: { type: Number },\n lastLineWidth: { type: [String, Number], default: '65%' },\n animation: { type: String as PropType<VeilAnimationName>, default: 'shimmer' },\n theme: { type: String as PropType<VeilThemeName>, default: 'light' },\n shape: { type: String as PropType<VeilShapeStyle> },\n circle: { type: Boolean, default: false },\n label: { type: String, default: 'Loading' },\n },\n setup(props, { slots }) {\n onMounted(() => injectStyles());\n\n return () => {\n const shape = props.circle ? 'circle' : (props.lines ? 'line' : props.type);\n const totalLines = props.lines || (props.count > 1 ? props.count : 1);\n\n if (totalLines > 1) {\n const defaultWidths = ['100%', '94%', '88%', '75%'];\n return h(\n 'div',\n {\n class: 'veil-lines-group',\n role: 'status',\n 'aria-label': props.label,\n style: { display: 'flex', flexDirection: 'column', gap: typeof props.gap === 'number' ? `${props.gap}px` : props.gap },\n },\n [\n h('span', { class: 'veil-sr-only' }, props.label),\n ...Array.from({ length: totalLines }).map((_, i) => {\n const isLast = i === totalLines - 1;\n const w = isLast ? props.lastLineWidth : (defaultWidths[i % defaultWidths.length] || '95%');\n return h('div', {\n key: i,\n class: 'veil-skeleton',\n 'data-veil-shape': 'line',\n 'data-veil-anim': props.animation,\n 'data-veil-theme': props.theme,\n 'aria-hidden': 'true',\n style: {\n width: typeof w === 'number' ? `${w}px` : w,\n '--veil-stagger-idx': i,\n },\n });\n }),\n ],\n );\n }\n\n return h(\n 'div',\n {\n class: 'veil-skeleton',\n 'data-veil-shape': shape,\n 'data-veil-anim': props.animation,\n 'data-veil-theme': props.theme,\n role: 'status',\n 'aria-label': props.label,\n style: {\n width: typeof props.width === 'number' ? `${props.width}px` : props.width,\n height: typeof props.height === 'number' ? `${props.height}px` : props.height,\n borderRadius: props.circle ? '50%' : (typeof props.radius === 'number' ? `${props.radius}px` : props.radius),\n },\n },\n [\n h('span', { class: 'veil-sr-only' }, props.label),\n slots.default ? slots.default() : null,\n ],\n );\n };\n },\n});\n\nexport const VSkeletonPreset = defineComponent({\n name: 'VSkeletonPreset',\n props: {\n name: { type: String as PropType<VeilPresetName>, required: true },\n items: { type: Number },\n columns: { type: Number },\n shape: { type: String as PropType<VeilShapeStyle>, default: 'rounded' },\n animation: { type: String as PropType<VeilAnimationName>, default: 'shimmer' },\n theme: { type: String as PropType<VeilThemeName>, default: 'light' },\n width: { type: [String, Number] },\n },\n setup(props) {\n const root = ref<HTMLElement | null>(null);\n\n onMounted(() => {\n if (!root.value) return;\n const el = createPreset({\n name: props.name,\n items: props.items,\n columns: props.columns,\n shape: props.shape,\n animation: props.animation,\n theme: props.theme,\n width: props.width,\n });\n root.value.replaceWith(el);\n });\n\n return () => h('div', { ref: root, class: 'veil-preset-vue' });\n },\n});\n\nexport const VVeil = defineComponent({\n name: 'VVeil',\n props: {\n loading: { type: Boolean, required: true },\n cacheKey: { type: String },\n persistCache: { type: Boolean, default: false },\n reveal: { type: String, default: 'fade' },\n },\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null);\n let overlayInstance: ReturnType<typeof createAutoMeasureOverlay> | null = null;\n\n watch(\n () => props.loading,\n (loading) => {\n if (!root.value) return;\n if (loading) {\n overlayInstance = createAutoMeasureOverlay(root.value, {\n cacheKey: props.cacheKey,\n persistCache: props.persistCache,\n reveal: props.reveal as any,\n });\n } else if (overlayInstance) {\n overlayInstance.destroy();\n overlayInstance = null;\n }\n },\n { immediate: true },\n );\n\n onUnmounted(() => {\n if (overlayInstance) overlayInstance.destroy();\n });\n\n return () => h('div', { ref: root, class: 'veil-vue-wrapper', style: { position: 'relative' } }, slots.default?.());\n },\n});\n\nexport const VSpinner = defineComponent({\n name: 'VSpinner',\n props: {\n type: { type: String as PropType<VeilSpinnerType>, default: 'ring' },\n size: { type: [String, Number], default: 28 },\n color: { type: String },\n secondaryColor: { type: String },\n speed: { type: [String, Number] },\n glass: { type: Boolean, default: false },\n label: { type: String, default: 'Loading' },\n },\n setup(props) {\n const root = ref<HTMLElement | null>(null);\n\n onMounted(() => {\n if (!root.value) return;\n const el = createSpinner({\n type: props.type,\n size: props.size,\n color: props.color,\n secondaryColor: props.secondaryColor,\n speed: props.speed,\n glass: props.glass,\n label: props.label,\n });\n root.value.appendChild(el);\n });\n\n return () => h('div', { ref: root, class: 'veil-spinner-vue', style: { display: 'inline-flex' } });\n },\n});\n\nexport const VProgressBar = defineComponent({\n name: 'VProgressBar',\n props: {\n value: { type: Number },\n circular: { type: Boolean, default: false },\n size: { type: [String, Number] },\n color: { type: String },\n },\n setup(props) {\n const root = ref<HTMLElement | null>(null);\n\n onMounted(() => {\n if (!root.value) return;\n const el = createProgressElement(props);\n root.value.appendChild(el);\n });\n\n return () => h('div', { ref: root, class: 'veil-progress-vue' });\n },\n});\n\nexport const VOverlay = defineComponent({\n name: 'VOverlay',\n props: {\n visible: { type: Boolean, default: false },\n blur: { type: Boolean, default: true },\n message: { type: String },\n spinner: { type: String as PropType<VeilSpinnerType>, default: 'ring' },\n },\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null);\n\n watch(\n () => props.visible,\n (val) => {\n if (!root.value) return;\n if (val) {\n overlayController.show(root.value, {\n blur: props.blur,\n message: props.message,\n spinner: props.spinner,\n });\n } else {\n overlayController.hide(root.value);\n }\n },\n );\n\n onUnmounted(() => {\n if (root.value) overlayController.hide(root.value);\n });\n\n return () => h('div', { ref: root, class: 'veil-overlay-vue', style: { position: 'relative' } }, slots.default?.());\n },\n});\n\nexport const VLoadingButton = defineComponent({\n name: 'VLoadingButton',\n props: {\n status: { type: String as PropType<ButtonStatus> },\n loading: { type: Boolean, default: false },\n styleType: { type: String as PropType<ButtonLoadingStyle>, default: 'spinner-left' },\n spinner: { type: String as PropType<VeilSpinnerType>, default: 'ring' },\n loadingText: { type: String },\n successText: { type: String },\n errorText: { type: String },\n resetAfter: { type: Number, default: 2000 },\n progress: { type: Number },\n pressFeedback: { type: String as PropType<ButtonPressFeedback>, default: 'press-scale' },\n resultAnimation: { type: String as PropType<ButtonResultAnimation>, default: 'checkmark' },\n },\n setup(props, { slots }) {\n const btnRef = ref<HTMLButtonElement | null>(null);\n let controller: ReturnType<typeof wrapLoadingButton> | null = null;\n\n onMounted(() => {\n if (!btnRef.value) return;\n controller = wrapLoadingButton(btnRef.value, {\n status: props.status,\n loading: props.loading,\n styleType: props.styleType,\n spinner: props.spinner,\n loadingText: props.loadingText,\n successText: props.successText,\n errorText: props.errorText,\n resetAfter: props.resetAfter,\n progress: props.progress,\n pressFeedback: props.pressFeedback,\n resultAnimation: props.resultAnimation,\n });\n });\n\n watch(\n () => [props.status, props.loading],\n () => {\n if (!controller) return;\n if (props.status) {\n controller.setStatus(props.status);\n } else {\n controller.setLoading(props.loading, props.loadingText);\n }\n },\n );\n\n onUnmounted(() => {\n if (controller) controller.destroy();\n });\n\n return () => h('button', { ref: btnRef, class: 'veil-button' }, slots.default?.());\n },\n});\n\nexport const VLazyImage = defineComponent({\n name: 'VLazyImage',\n props: {\n src: { type: String, required: true },\n alt: { type: String, default: '' },\n width: { type: [String, Number] },\n height: { type: [String, Number] },\n radius: { type: [String, Number] },\n },\n setup(props) {\n const root = ref<HTMLElement | null>(null);\n\n onMounted(() => {\n if (!root.value) return;\n const el = createLazyImage(props);\n root.value.appendChild(el);\n });\n\n return () => h('div', { ref: root, class: 'veil-lazy-img-vue' });\n },\n});\n","/**\n * Veilkit - Request Tracker & Fetch Wrapper\n * Automatic loading state tracking with anti-flicker and error resilience\n */\n\nimport { loadingManager } from './manager';\nimport { AntiFlickerController } from './antiflicker';\nimport { progressController } from './progress';\nimport { overlayController } from './overlay';\n\nexport interface TrackOptions {\n id?: string;\n delay?: number;\n minVisible?: number;\n overlay?: boolean;\n target?: HTMLElement | string;\n progress?: boolean;\n onStart?: () => void;\n onFinish?: () => void;\n}\n\n/**\n * Tracks a Promise or async function, updating loading states automatically\n */\nexport async function track<T>(\n task: Promise<T> | (() => Promise<T>),\n options: TrackOptions = {},\n): Promise<T> {\n const reqId = loadingManager.start(options.id);\n\n if (options.progress) {\n progressController.start();\n }\n\n const antiFlicker = new AntiFlickerController({\n delay: options.delay !== undefined ? options.delay : 150,\n minVisible: options.minVisible !== undefined ? options.minVisible : 300,\n onShow: () => {\n if (options.overlay) {\n overlayController.show(options.target);\n }\n if (options.onStart) options.onStart();\n },\n onHide: () => {\n if (options.overlay) {\n overlayController.hide(options.target);\n }\n if (options.onFinish) options.onFinish();\n },\n });\n\n antiFlicker.start();\n\n try {\n const promise = typeof task === 'function' ? task() : task;\n const result = await promise;\n return result;\n } catch (error) {\n if (options.progress) {\n progressController.fail();\n }\n throw error;\n } finally {\n loadingManager.stop(reqId);\n if (options.progress) {\n progressController.done();\n }\n antiFlicker.finish();\n }\n}\n\n/**\n * Opt-in fetch wrapper that tracks HTTP requests automatically\n * (Never patches global fetch by default)\n */\nexport function wrapFetch(\n fetchFn: typeof fetch = typeof window !== 'undefined' ? window.fetch.bind(window) : (fetch as any),\n options: TrackOptions = {},\n): typeof fetch {\n return async function wrappedFetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n return track(() => fetchFn(input, init), options);\n };\n}\n","/**\n * Veilkit - Imperative & Global API\n * Single unified interface for controlling loading states across any environment.\n */\n\nimport {\n VeilGlobalConfig,\n SkeletonProps,\n SkeletonController,\n SpinnerProps,\n AutoMeasureOptions,\n} from './types';\nimport { injectStyles, setNonce } from './css';\nimport { createSkeletonElement, createPrimitive } from './primitives';\nimport { createPreset } from './presets';\nimport { createSpinner } from './spinners';\nimport { overlayController } from './overlay';\nimport { progressController } from './progress';\nimport { createAutoMeasureOverlay } from './measure';\nimport { loadingManager } from './manager';\nimport { track, wrapFetch } from './track';\nimport { setLocale, setLabels } from './a11y';\nimport { createTheme, getThemeTokens } from './themes';\n\nexport class VeilkitController {\n private config: VeilGlobalConfig = {};\n\n /**\n * Configure global defaults for themes, animations, anti-flicker, CSP nonce, and a11y\n */\n public configure(config: VeilGlobalConfig): void {\n Object.assign(this.config, config);\n if (config.nonce) {\n setNonce(config.nonce);\n }\n if (config.locale) {\n setLocale(config.locale);\n }\n if (config.labels) {\n setLabels(config.labels);\n }\n injectStyles(config.nonce);\n }\n\n /**\n * Mounts a skeleton controller onto an element with show/hide/update/destroy methods\n */\n public skeleton(target: HTMLElement | string, options: SkeletonProps & AutoMeasureOptions = {}): SkeletonController {\n injectStyles();\n\n const element = typeof target === 'string'\n ? (document.querySelector(target) as HTMLElement)\n : target;\n\n if (!element) {\n throw new Error(`[Veilkit] Target element not found for skeleton.`);\n }\n\n let measureInstance: { overlay: HTMLElement; refresh: () => void; destroy: () => void } | null = null;\n let isShowing = false;\n\n const show = () => {\n if (isShowing) return;\n isShowing = true;\n element.setAttribute('aria-busy', 'true');\n measureInstance = createAutoMeasureOverlay(element, options, options);\n };\n\n const hide = () => {\n if (!isShowing) return;\n isShowing = false;\n element.removeAttribute('aria-busy');\n if (measureInstance) {\n measureInstance.destroy();\n measureInstance = null;\n }\n };\n\n const update = (props: Partial<SkeletonProps>) => {\n Object.assign(options, props);\n if (measureInstance) {\n measureInstance.refresh();\n }\n };\n\n const destroy = () => {\n hide();\n };\n\n // Auto-show by default\n show();\n\n return {\n element,\n show,\n hide,\n update,\n destroy,\n };\n }\n\n /**\n * Injects a spinner into a target element\n */\n public spinner(target: HTMLElement | string, props: SpinnerProps = {}): HTMLElement {\n const el = typeof target === 'string'\n ? (document.querySelector(target) as HTMLElement)\n : target;\n\n const spinner = createSpinner(props);\n if (el) {\n el.appendChild(spinner);\n }\n return spinner;\n }\n\n // Subsystem controllers\n public overlay = overlayController;\n public progress = progressController;\n public manager = loadingManager;\n public track = track;\n public wrapFetch = wrapFetch;\n public setLocale = setLocale;\n public setLabels = setLabels;\n public createTheme = createTheme;\n public getThemeTokens = getThemeTokens;\n\n // DOM primitives & presets factories\n public createSkeleton = createSkeletonElement;\n public createPrimitive = createPrimitive;\n public createPreset = createPreset;\n}\n\nexport const veil = new VeilkitController();\nexport default veil;\n","import { App } from 'vue';\nimport { VeilGlobalConfig } from '../core/types';\nimport veil from '../core/controller';\nimport { vVeil } from './directive';\nimport {\n VSkeleton,\n VVeil,\n VSpinner,\n VProgressBar,\n VOverlay,\n VLoadingButton,\n VLazyImage,\n} from './components';\n\nexport const veilkitPlugin = {\n install(app: App, options: VeilGlobalConfig = {}) {\n veil.configure(options);\n\n // Register directive\n app.directive('veil', vVeil);\n\n // Register components globally\n app.component('VSkeleton', VSkeleton);\n app.component('VVeil', VVeil);\n app.component('VSpinner', VSpinner);\n app.component('VProgressBar', VProgressBar);\n app.component('VOverlay', VOverlay);\n app.component('VLoadingButton', VLoadingButton);\n app.component('VLazyImage', VLazyImage);\n\n // Provide globally\n app.config.globalProperties.$veil = veil;\n app.provide('veil', veil);\n },\n};\n","/**\n * Veilkit - Nuxt 3 Integration Recipe\n * Provides Nuxt plugin helper with SSR safety and route loading synchronization\n */\n\nimport { progressController } from '../core/progress';\nimport { injectStyles } from '../core/css';\n\nexport function defineNuxtVeilkit(nuxtApp: any) {\n if (typeof window !== 'undefined') {\n injectStyles();\n\n // Hook into Nuxt page navigation lifecycle if available\n if (nuxtApp?.hook) {\n nuxtApp.hook('page:start', () => {\n progressController.start();\n });\n nuxtApp.hook('page:finish', () => {\n progressController.done();\n });\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/core/antiflicker.ts","../../src/core/themes.ts","../../src/core/animations.ts","../../src/core/css.ts","../../src/core/progress.ts","../../src/core/manager.ts","../../src/vue/composables.ts","../../src/core/sync.ts","../../src/core/observer.ts","../../src/core/primitives.ts","../../src/core/reveal.ts","../../src/core/measure.ts","../../src/vue/directive.ts","../../src/core/spinners.ts","../../src/core/presets.ts","../../src/core/a11y.ts","../../src/core/overlay.ts","../../src/core/button.ts","../../src/core/lazy-image.ts","../../src/vue/components.ts","../../src/core/track.ts","../../src/core/controller.ts","../../src/vue/plugin.ts","../../src/vue/nuxt.ts"],"names":["AntiFlickerController","options","callback","elapsed","remaining","BUILTIN_THEMES","customThemesRegistry","createTheme","themeInput","parentTheme","resolvedTheme","getThemeTokens","theme","custom","getAnimationKeyframesCSS","styleInjected","cspNonce","setNonce","nonce","getStylesCSS","light","dark","name","t","injectStyles","css","effectiveNonce","sheet","styleEl","RouteProgressController","n","percent","amount","progressController","createProgressElement","props","isCircular","color","trackColor","size","strokeWidth","container","svg","track","meter","circumference","val","offset","text","height","bar","LoadingManager","id","key","first","listener","loading","loadingManager","useProgress","useDelayedLoading","loadingRef","visible","ref","controller","onMounted","watch","onUnmounted","useLoading","asyncFn","data","error","args","reqId","res","err","globalStartTime","getTimelineOrigin","getSyncDelay","durationMs","parseDurationMs","duration","trimmed","intersectionObserver","observedElements","visibilityInitialized","handleIntersection","entries","entry","el","setupVisibilityObserver","observeOffscreen","element","createSkeletonElement","shape","durMs","createSkeletonParagraph","lines","gap","defaultWidths","lastWidth","width","lineEl","createPrimitive","type","row","cols","i","cell","applyReveal","transition","children","child","idx","totalDuration","className","handleEnd","memoryLayoutCache","getCachedLayout","cacheKey","stored","parsed","setCachedLayout","layout","persist","measureContainer","ignoreSelector","containerRect","boxes","isLeafOrTarget","style","tag","walk","node","rect","radius","customShape","createAutoMeasureOverlay","skeletonProps","overlay","computed","renderLayout","box","update","cached","ro","mo","elementStateMap","vVeil","binding","state","createSpinner","secondaryColor","ring","dot","pulseCircle","nucleus","orbitRing","satellite","line","ball","spoke","orb","bgCircle","meterCircle","arc","col","sq","cube","hg","path","delays","wrap","liquid","angles","angle","face","center","hourHand","minuteHand","radarWrap","beam","petal","injectSpinnerKeyframes","spinnerKeyframesInjected","createPreset","shapeRadius","baseProps","img","title","btn","badge","price","itemsCount","columns","item","count","avatar","textGroup","primary","secondary","rows","header","c","r","bio","btnGroup","banner","body","info","media","actions","meta","heroImg","body1","body2","comment","bubbles","b","bubble","msg","statGrid","stat","chartBlock","group","submit","thumb","brand","links","cta","top","navItem","footer","section","control","left","mainImg","thumbRow","right","rating","desc","textCol","star","sender","snippet","time","notif","content","order","orderHeader","itemsRow","j","trend","head","barsWrap","heights","h","lineArea","circle","legend","searchInput","screen","channel","chLeft","subBtn","album","song","artist","progress","controls","story","author","tabHeader","calHeader","grid","column","colHead","card","dotCol","mapArea","cardBody","featureList","f","quote","q","fileRow","widths","w","leftCol","rightCol","progRow","seg","headerRow","h1","sub1","sub2","btnRow","DEFAULT_LABELS","currentLocale","customLabels","setLocale","locale","setLabels","labels","getLabel","applyA11yLoading","label","srNode","removeA11yLoading","activeOverlays","scrollLockOriginalOverflow","OverlayController","target","isFullscreen","blurVal","spinnerType","spinnerEl","overlayController","wrapLoadingButton","buttonEl","injectButtonKeyframes","currentStatus","originalWidth","originalHeight","originalHtml","resetTimer","pressFeedback","setupPressFeedback","clearResetTimer","setStatus","status","customText","prevStatus","styleType","renderLoadingStyle","renderResult","resetDelay","clickHandler","e","result","feedback","reset","diameter","existing","x","y","labelText","spinner","span","dots","pct","shimmer","stripes","oldText","newText","trace","skel","animation","burst","buttonKeyframesInjected","createLazyImage","skeleton","VSkeleton","defineComponent","slots","totalLines","_","VSkeletonPreset","root","VVeil","overlayInstance","VSpinner","VProgressBar","VOverlay","VLoadingButton","btnRef","VLazyImage","task","antiFlicker","wrapFetch","fetchFn","input","init","VeilkitController","config","measureInstance","isShowing","show","hide","destroy","veil","controller_default","veilkitPlugin","app","defineNuxtVeilkit","nuxtApp"],"mappings":"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;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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","file":"index.cjs","sourcesContent":["/**\n * Veilkit - Anti-Flicker Timing Controller\n * Prevents UI flicker:\n * 1. delay (default 150ms): suppresses loading state if task completes very quickly\n * 2. minVisible (default 300ms): guarantees loader stays visible long enough to avoid rapid flashing\n */\n\nexport interface AntiFlickerOptions {\n delay?: number; // ms to wait before showing loader\n minVisible?: number; // min ms loader remains once shown\n onShow?: () => void;\n onHide?: () => void;\n}\n\nexport class AntiFlickerController {\n private delay: number;\n private minVisible: number;\n private onShow?: () => void;\n private onHide?: () => void;\n\n private delayTimer: any = null;\n private minVisibleTimer: any = null;\n private shownTimestamp: number | null = null;\n private isVisible: boolean = false;\n private isPending: boolean = false;\n\n constructor(options: AntiFlickerOptions = {}) {\n this.delay = options.delay !== undefined ? options.delay : 150;\n this.minVisible = options.minVisible !== undefined ? options.minVisible : 300;\n this.onShow = options.onShow;\n this.onHide = options.onHide;\n }\n\n /**\n * Request loader to be shown (subject to delay)\n */\n public start(): void {\n if (this.isPending || this.isVisible) return;\n this.isPending = true;\n\n if (this.delay <= 0) {\n this.display();\n return;\n }\n\n this.delayTimer = setTimeout(() => {\n this.delayTimer = null;\n if (this.isPending) {\n this.display();\n }\n }, this.delay);\n }\n\n private display(): void {\n this.isPending = false;\n this.isVisible = true;\n this.shownTimestamp = Date.now();\n if (this.onShow) this.onShow();\n }\n\n /**\n * Request loader to be hidden (subject to minVisible)\n */\n public finish(callback?: () => void): void {\n // If it hasn't even shown yet, cancel the delay timer\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n this.isPending = false;\n if (callback) callback();\n return;\n }\n\n if (!this.isVisible) {\n this.isPending = false;\n if (callback) callback();\n return;\n }\n\n const elapsed = this.shownTimestamp ? Date.now() - this.shownTimestamp : 0;\n const remaining = Math.max(0, this.minVisible - elapsed);\n\n if (remaining <= 0) {\n this.hide();\n if (callback) callback();\n } else {\n this.minVisibleTimer = setTimeout(() => {\n this.minVisibleTimer = null;\n this.hide();\n if (callback) callback();\n }, remaining);\n }\n }\n\n private hide(): void {\n this.isVisible = false;\n this.isPending = false;\n this.shownTimestamp = null;\n if (this.onHide) this.onHide();\n }\n\n public active(): boolean {\n return this.isVisible;\n }\n\n public destroy(): void {\n if (this.delayTimer) clearTimeout(this.delayTimer);\n if (this.minVisibleTimer) clearTimeout(this.minVisibleTimer);\n this.delayTimer = null;\n this.minVisibleTimer = null;\n this.isVisible = false;\n this.isPending = false;\n }\n}\n","/**\n * Veilkit - Themes & Token Definitions\n * 11 Built-in Themes + `createTheme()`\n */\n\nimport { VeilThemeName, VeilThemeTokens, CustomThemeInput } from './types';\n\nexport const BUILTIN_THEMES: Record<VeilThemeName, VeilThemeTokens> = {\n light: {\n base: '#e5e7eb',\n highlight: 'rgba(255, 255, 255, 0.7)',\n radius: '6px',\n duration: '1.5s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: 'none',\n contrast: '#374151',\n },\n dark: {\n base: '#1f2937',\n highlight: 'rgba(255, 255, 255, 0.12)',\n radius: '6px',\n duration: '1.5s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: 'none',\n contrast: '#f3f4f6',\n },\n auto: {\n // Dynamic CSS variables will resolve light/dark via prefers-color-scheme\n base: 'var(--veil-auto-base, #e5e7eb)',\n highlight: 'var(--veil-auto-highlight, rgba(255, 255, 255, 0.7))',\n radius: '6px',\n duration: '1.5s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: 'none',\n contrast: 'var(--veil-auto-contrast, #374151)',\n },\n glass: {\n base: 'rgba(255, 255, 255, 0.08)',\n highlight: 'rgba(255, 255, 255, 0.25)',\n radius: '12px',\n duration: '1.8s',\n easing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n blur: '12px',\n border: '1px solid rgba(255, 255, 255, 0.15)',\n glow: 'inset 0 1px 1px 0 rgba(255, 255, 255, 0.25), 0 4px 16px 0 rgba(0, 0, 0, 0.12)',\n contrast: '#ffffff',\n },\n ios: {\n base: 'rgba(120, 120, 128, 0.18)',\n highlight: 'rgba(255, 255, 255, 0.45)',\n radius: '10px',\n duration: '1.4s',\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n border: 'none',\n contrast: '#1c1c1e',\n },\n material: {\n base: '#e7e0ec',\n highlight: '#f7f2fa',\n radius: '12px',\n duration: '1.6s',\n easing: 'cubic-bezier(0.2, 0, 0, 1)',\n border: 'none',\n contrast: '#1d1b20',\n },\n minimal: {\n base: '#f1f3f5',\n highlight: '#ffffff',\n radius: '4px',\n duration: '1.4s',\n easing: 'ease-in-out',\n border: 'none',\n contrast: '#212529',\n },\n mono: {\n base: '#e0e0e0',\n highlight: '#ffffff',\n radius: '0px',\n duration: '1.2s',\n easing: 'linear',\n border: '1px solid #cccccc',\n contrast: '#000000',\n },\n neon: {\n base: '#0c0b16',\n highlight: 'rgba(0, 240, 255, 0.5)',\n radius: '8px',\n duration: '1.6s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: '1px solid rgba(0, 240, 255, 0.3)',\n glow: '0 0 12px rgba(0, 240, 255, 0.35)',\n contrast: '#00f0ff',\n },\n sunset: {\n base: '#fed7aa',\n highlight: '#fff7ed',\n radius: '8px',\n duration: '1.7s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: 'none',\n glow: '0 0 8px rgba(251, 146, 60, 0.25)',\n contrast: '#7c2d12',\n },\n ocean: {\n base: '#0f2937',\n highlight: 'rgba(56, 189, 248, 0.45)',\n radius: '8px',\n duration: '1.7s',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n border: '1px solid rgba(56, 189, 248, 0.2)',\n glow: '0 0 10px rgba(56, 189, 248, 0.25)',\n contrast: '#38bdf8',\n },\n};\n\nconst customThemesRegistry = new Map<string, VeilThemeTokens>();\n\n/**\n * Creates and registers a new custom theme\n */\nexport function createTheme(themeInput: CustomThemeInput): VeilThemeTokens {\n const parentTheme = themeInput.parent && BUILTIN_THEMES[themeInput.parent]\n ? BUILTIN_THEMES[themeInput.parent]\n : BUILTIN_THEMES.light;\n\n const resolvedTheme: VeilThemeTokens = {\n base: themeInput.base ?? parentTheme.base,\n highlight: themeInput.highlight ?? parentTheme.highlight,\n radius: themeInput.radius ?? parentTheme.radius,\n duration: themeInput.duration ?? parentTheme.duration,\n easing: themeInput.easing ?? parentTheme.easing,\n border: themeInput.border ?? parentTheme.border,\n blur: themeInput.blur ?? parentTheme.blur,\n glow: themeInput.glow ?? parentTheme.glow,\n contrast: themeInput.contrast ?? parentTheme.contrast,\n };\n\n customThemesRegistry.set(themeInput.name, resolvedTheme);\n return resolvedTheme;\n}\n\n/**\n * Get theme tokens by name or object\n */\nexport function getThemeTokens(theme?: VeilThemeName | CustomThemeInput | string): VeilThemeTokens {\n if (!theme) return BUILTIN_THEMES.light;\n if (typeof theme === 'string') {\n if (theme in BUILTIN_THEMES) {\n return BUILTIN_THEMES[theme as VeilThemeName];\n }\n const custom = customThemesRegistry.get(theme);\n if (custom) return custom;\n return BUILTIN_THEMES.light;\n }\n return createTheme(theme);\n}\n","/**\n * Veilkit - Animation Engine\n * 30 GPU-Accelerated Animation Definitions (transform & opacity only)\n */\n\nimport { VeilAnimationName, VeilDirection } from './types';\n\nexport interface AnimationConfig {\n name: VeilAnimationName;\n duration?: number | string;\n direction?: VeilDirection;\n speedMultiplier?: number;\n intensity?: number;\n}\n\nexport const ANIMATION_NAMES: VeilAnimationName[] = [\n 'shimmer',\n 'wave',\n 'pulse',\n 'blink',\n 'breathe',\n 'glass-shine',\n 'gradient-flow',\n 'aurora',\n 'scan-line',\n 'sparkle',\n 'neon-glow',\n 'stagger',\n 'ripple',\n 'ping-pong',\n 'wipe',\n 'cascade',\n 'spotlight',\n 'rainbow',\n 'heartbeat',\n 'liquid',\n 'stripes',\n 'halftone',\n 'border-glow',\n 'typewriter',\n 'glitch',\n 'pixelate',\n 'tilt',\n 'diagonal-sweep',\n 'bounce-in',\n 'fade-slide',\n 'none',\n];\n\n/**\n * Generates the CSS keyframes and utility rules for all 30 animations.\n * Strictly uses transform and opacity for 60fps GPU execution.\n */\nexport function getAnimationKeyframesCSS(): string {\n return [\n '@keyframes veil-shimmer-ltr{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}',\n '@keyframes veil-shimmer-rtl{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}',\n '@keyframes veil-shimmer-ttb{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}',\n '@keyframes veil-shimmer-btt{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}',\n '@keyframes veil-wave{0%{transform:translateX(-120%) scaleX(0.8);opacity:0.3}50%{opacity:0.95}100%{transform:translateX(120%) scaleX(1.2);opacity:0.3}}',\n '@keyframes veil-pulse{0%,100%{opacity:1}50%{opacity:0.38}}',\n '@keyframes veil-blink{0%,49%{opacity:1}50%,99%{opacity:0.2}100%{opacity:1}}',\n '@keyframes veil-breathe{0%,100%{opacity:0.65;transform:scale(0.995)}50%{opacity:1;transform:scale(1.005)}}',\n '@keyframes veil-glass-shine{0%{transform:translate3d(-150%,-150%,0) rotate(35deg);opacity:0.1}40%,60%{opacity:0.85}100%{transform:translate3d(200%,200%,0) rotate(35deg);opacity:0.1}}',\n '@keyframes veil-gradient-flow{0%{transform:translateX(-66.6%)}100%{transform:translateX(0%)}}',\n '@keyframes veil-aurora{0%{transform:translate3d(-20%,-15%,0) rotate(0deg) scale(1);opacity:0.5}50%{transform:translate3d(25%,20%,0) rotate(180deg) scale(1.25);opacity:0.85}100%{transform:translate3d(-20%,-15%,0) rotate(360deg) scale(1);opacity:0.5}}',\n '@keyframes veil-scan-line{0%{transform:translateY(-100%);opacity:0.2}50%{opacity:1}100%{transform:translateY(300%);opacity:0.2}}',\n '@keyframes veil-sparkle{0%,100%{opacity:0.2;transform:scale(0.98)}25%{opacity:0.8;transform:scale(1.02)}50%{opacity:0.3;transform:scale(0.99)}75%{opacity:0.95;transform:scale(1.01)}}',\n '@keyframes veil-neon-glow{0%,100%{opacity:0.45;transform:scale(0.998)}50%{opacity:1;transform:scale(1.002)}}',\n '@keyframes veil-ripple{0%{transform:scale(0.2);opacity:0.9}100%{transform:scale(2.4);opacity:0}}',\n '@keyframes veil-ping-pong{0%,100%{transform:translateX(-100%)}50%{transform:translateX(100%)}}',\n '@keyframes veil-wipe{0%{transform:translateX(-100%) scaleX(0.2);opacity:0.2}50%{transform:translateX(0%) scaleX(1);opacity:0.9}100%{transform:translateX(100%) scaleX(0.2);opacity:0.2}}',\n '@keyframes veil-cascade{0%{transform:translateY(-100%);opacity:0.3}50%{opacity:0.95}100%{transform:translateY(100%);opacity:0.3}}',\n '@keyframes veil-spotlight{0%{transform:translate3d(-100%,-50%,0);opacity:0.15}50%{transform:translate3d(50%,0%,0);opacity:0.85}100%{transform:translate3d(200%,50%,0);opacity:0.15}}',\n '@keyframes veil-rainbow{0%{filter:hue-rotate(0deg);transform:translateX(-50%)}100%{filter:hue-rotate(360deg);transform:translateX(0%)}}',\n '@keyframes veil-heartbeat{0%,100%{transform:scale(1);opacity:0.7}14%{transform:scale(1.025);opacity:1}28%{transform:scale(1);opacity:0.75}42%{transform:scale(1.035);opacity:1}70%{transform:scale(1);opacity:0.7}}',\n '@keyframes veil-liquid{0%,100%{transform:translateX(-100%) scaleY(0.9) skewX(-8deg);opacity:0.4}50%{transform:translateX(100%) scaleY(1.1) skewX(8deg);opacity:0.9}}',\n '@keyframes veil-stripes{0%{transform:translateX(-48px)}100%{transform:translateX(0px)}}',\n '@keyframes veil-halftone{0%,100%{opacity:0.35;transform:scale(0.995)}50%{opacity:0.95;transform:scale(1.005)}}',\n '@keyframes veil-border-glow{0%,100%{opacity:0.5;transform:scale(0.998)}50%{opacity:1;transform:scale(1.002)}}',\n '@keyframes veil-typewriter{0%{transform:scaleX(0.1);transform-origin:left;opacity:0.4}100%{transform:scaleX(1);transform-origin:left;opacity:1}}',\n '@keyframes veil-glitch{0%,100%{transform:translate(0);opacity:0.8}20%{transform:translate(-2px,1px);opacity:0.95}40%{transform:translate(2px,-1px);opacity:0.85}60%{transform:translate(-1px,-1px);opacity:1}80%{transform:translate(1px,2px);opacity:0.9}}',\n '@keyframes veil-pixelate{0%,100%{opacity:0.3;transform:scale(0.99)}25%{opacity:0.75;transform:scale(1)}50%{opacity:0.45;transform:scale(0.995)}75%{opacity:0.9;transform:scale(1.005)}}',\n '@keyframes veil-tilt{0%,100%{transform:perspective(600px) rotateX(0deg) rotateY(0deg);opacity:0.7}50%{transform:perspective(600px) rotateX(4deg) rotateY(-4deg);opacity:1}}',\n '@keyframes veil-diagonal-sweep{0%{transform:translate3d(-100%,-100%,0) rotate(-45deg)}100%{transform:translate3d(150%,150%,0) rotate(-45deg)}}',\n '@keyframes veil-bounce-in{0%,100%{transform:scale(0.985);opacity:0.6}50%{transform:scale(1.015);opacity:1}}',\n '@keyframes veil-fade-slide{0%,100%{transform:translateY(3px);opacity:0.5}50%{transform:translateY(-3px);opacity:1}}',\n '[data-veil-anim=\"stagger\"]>*{animation-delay:calc(var(--veil-stagger-idx,0)*120ms)!important}',\n ].join('');\n}\n","/**\n * Veilkit - CSS Engine & Style Injector\n * SSR-safe, adoptedStyleSheets support, CSP nonce, and zero-layout-thrash animations\n */\n\nimport { BUILTIN_THEMES } from './themes';\nimport { getAnimationKeyframesCSS } from './animations';\n\nlet styleInjected = false;\nlet cspNonce: string | undefined = undefined;\n\n/**\n * Configure CSP nonce for injected styles\n */\nexport function setNonce(nonce: string): void {\n cspNonce = nonce;\n}\n\n/**\n * Generates the full CSS stylesheet string\n */\nexport function getStylesCSS(): string {\n const light = BUILTIN_THEMES.light;\n const dark = BUILTIN_THEMES.dark;\n\n return `\n/* === VEILKIT CORE STYLES === */\n:root {\n --veil-base: ${light.base};\n --veil-highlight: ${light.highlight};\n --veil-radius: ${light.radius};\n --veil-duration: ${light.duration};\n --veil-easing: ${light.easing};\n --veil-direction: ltr;\n --veil-border: none;\n --veil-blur: none;\n --veil-glow: none;\n --veil-contrast: ${light.contrast};\n\n --veil-auto-base: ${light.base};\n --veil-auto-highlight: ${light.highlight};\n --veil-auto-contrast: ${light.contrast};\n}\n\n@media (prefers-color-scheme: dark) {\n :root {\n --veil-auto-base: ${dark.base};\n --veil-auto-highlight: ${dark.highlight};\n --veil-auto-contrast: ${dark.contrast};\n }\n}\n\n/* === DARK THEME SELECTORS === */\n[data-theme=\"dark\"], .dark, [data-theme=\"dark\"] .veil-skeleton {\n --veil-base: ${dark.base};\n --veil-highlight: ${dark.highlight};\n --veil-contrast: ${dark.contrast};\n}\n\n/* === THEME ATTRIBUTE CLASSES === */\n${Object.entries(BUILTIN_THEMES).map(([name, t]) => `[data-veil-theme=\"${name}\"]{--veil-base:${t.base};--veil-highlight:${t.highlight};--veil-radius:${t.radius};--veil-duration:${t.duration};--veil-easing:${t.easing};${t.border ? `--veil-border:${t.border};` : ''}${t.blur ? `--veil-blur:${t.blur};` : ''}${t.glow ? `--veil-glow:${t.glow};` : ''}--veil-contrast:${t.contrast};}`).join('')}\n\n/* === BASE SKELETON ELEMENT === */\n.veil-skeleton {\n position: relative;\n display: block;\n box-sizing: border-box;\n background-color: var(--veil-base, #e5e7eb);\n border-radius: var(--veil-radius, 6px);\n border: var(--veil-border, none);\n box-shadow: var(--veil-glow, none);\n overflow: hidden;\n pointer-events: none;\n user-select: none;\n min-height: 12px;\n}\n\n[data-veil-theme=\"glass\"] .veil-skeleton,\n.veil-skeleton[data-veil-theme=\"glass\"] {\n backdrop-filter: blur(var(--veil-blur, 12px));\n -webkit-backdrop-filter: blur(var(--veil-blur, 12px));\n}\n\n/* === SHIMMER / ANIMATION OVERLAY === */\n.veil-skeleton::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n will-change: transform, opacity;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--veil-highlight, rgba(255, 255, 255, 0.7)) 50%,\n transparent 100%\n );\n animation-duration: var(--veil-duration, 1.5s);\n animation-timing-function: var(--veil-easing, cubic-bezier(0.4, 0, 0.2, 1));\n animation-iteration-count: infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n animation-play-state: var(--veil-play-state, running);\n}\n\n/* Animation name mapping */\n.veil-skeleton[data-veil-anim=\"shimmer\"]::after,\n.veil-skeleton:not([data-veil-anim])::after {\n animation-name: veil-shimmer-ltr;\n}\n.veil-skeleton[data-veil-dir=\"rtl\"]::after,\n[dir=\"rtl\"] .veil-skeleton[data-veil-anim=\"shimmer\"]::after {\n animation-name: veil-shimmer-rtl;\n}\n.veil-skeleton[data-veil-dir=\"ttb\"]::after {\n animation-name: veil-shimmer-ttb;\n background: linear-gradient(180deg, transparent 0%, var(--veil-highlight, rgba(255,255,255,0.7)) 50%, transparent 100%);\n}\n.veil-skeleton[data-veil-dir=\"btt\"]::after {\n animation-name: veil-shimmer-btt;\n background: linear-gradient(0deg, transparent 0%, var(--veil-highlight, rgba(255,255,255,0.7)) 50%, transparent 100%);\n}\n\n.veil-skeleton[data-veil-anim=\"wave\"]::after {\n animation-name: veil-wave;\n}\n\n.veil-skeleton[data-veil-anim=\"pulse\"]::after {\n background: none;\n}\n.veil-skeleton[data-veil-anim=\"pulse\"] {\n animation: veil-pulse var(--veil-duration, 1.5s) var(--veil-easing, ease-in-out) infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n animation-play-state: var(--veil-play-state, running);\n}\n\n.veil-skeleton[data-veil-anim=\"blink\"]::after {\n background: none;\n}\n.veil-skeleton[data-veil-anim=\"blink\"] {\n animation: veil-blink var(--veil-duration, 1.2s) steps(2, start) infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n animation-play-state: var(--veil-play-state, running);\n}\n\n.veil-skeleton[data-veil-anim=\"breathe\"]::after {\n background: none;\n}\n.veil-skeleton[data-veil-anim=\"breathe\"] {\n animation: veil-breathe var(--veil-duration, 2.2s) var(--veil-easing, ease-in-out) infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n animation-play-state: var(--veil-play-state, running);\n}\n\n.veil-skeleton[data-veil-anim=\"glass-shine\"]::after {\n animation-name: veil-glass-shine;\n background: linear-gradient(\n 115deg,\n transparent 20%,\n var(--veil-highlight, rgba(255, 255, 255, 0.4)) 50%,\n transparent 80%\n );\n}\n\n.veil-skeleton[data-veil-anim=\"gradient-flow\"]::after {\n width: 300%;\n animation-name: veil-gradient-flow;\n background: linear-gradient(\n 90deg,\n var(--veil-base, #e5e7eb) 0%,\n var(--veil-highlight, rgba(255, 255, 255, 0.8)) 30%,\n var(--veil-base, #e5e7eb) 60%,\n var(--veil-highlight, rgba(255, 255, 255, 0.8)) 100%\n );\n}\n\n.veil-skeleton[data-veil-anim=\"aurora\"]::after {\n width: 160%;\n height: 160%;\n animation-name: veil-aurora;\n background: radial-gradient(\n circle at 50% 50%,\n rgba(56, 189, 248, 0.3) 0%,\n rgba(168, 85, 247, 0.25) 45%,\n rgba(236, 72, 153, 0.2) 75%,\n transparent 100%\n );\n}\n\n.veil-skeleton[data-veil-anim=\"scan-line\"]::after {\n height: 30%;\n animation-name: veil-scan-line;\n background: linear-gradient(180deg, transparent, var(--veil-highlight, rgba(0, 240, 255, 0.8)), transparent);\n}\n\n.veil-skeleton[data-veil-anim=\"sparkle\"]::after {\n animation-name: veil-sparkle;\n}\n\n.veil-skeleton[data-veil-anim=\"neon-glow\"] {\n animation: veil-neon-glow var(--veil-duration, 1.6s) ease-in-out infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n}\n\n.veil-skeleton[data-veil-anim=\"ripple\"]::after {\n width: 100%;\n height: 100%;\n animation: veil-ripple var(--veil-duration, 1.8s) ease-out infinite;\n background: radial-gradient(circle, var(--veil-highlight, rgba(255, 255, 255, 0.7)) 10%, transparent 70%);\n}\n\n.veil-skeleton[data-veil-anim=\"ping-pong\"]::after {\n animation-name: veil-ping-pong;\n animation-duration: var(--veil-duration, 2.4s);\n animation-timing-function: ease-in-out;\n}\n\n.veil-skeleton[data-veil-anim=\"wipe\"]::after {\n width: 100%;\n animation-name: veil-wipe;\n animation-duration: var(--veil-duration, 1.8s);\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.veil-skeleton[data-veil-anim=\"cascade\"]::after {\n width: 100%;\n animation-name: veil-cascade;\n animation-duration: var(--veil-duration, 1.6s);\n}\n\n.veil-skeleton[data-veil-anim=\"spotlight\"]::after {\n width: 140%;\n height: 140%;\n animation-name: veil-spotlight;\n animation-duration: var(--veil-duration, 2.5s);\n background: radial-gradient(circle at center, var(--veil-highlight, rgba(255, 255, 255, 0.85)) 0%, transparent 60%);\n}\n\n.veil-skeleton[data-veil-anim=\"rainbow\"]::after {\n width: 250%;\n animation-name: veil-rainbow;\n animation-duration: var(--veil-duration, 3.5s);\n background: linear-gradient(90deg, #f43f5e, #fbbf24, #10b981, #06b6d4, #8b5cf6, #f43f5e);\n opacity: 0.25;\n}\n\n.veil-skeleton[data-veil-anim=\"heartbeat\"] {\n animation: veil-heartbeat var(--veil-duration, 1.4s) ease-in-out infinite;\n animation-delay: var(--veil-sync-delay, 0s);\n}\n.veil-skeleton[data-veil-anim=\"heartbeat\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"liquid\"]::after {\n width: 150%;\n animation-name: veil-liquid;\n animation-duration: var(--veil-duration, 2.2s);\n background: radial-gradient(ellipse at center, var(--veil-highlight, rgba(255, 255, 255, 0.7)) 0%, transparent 70%);\n}\n\n.veil-skeleton[data-veil-anim=\"stripes\"]::after {\n width: 200%;\n animation-name: veil-stripes;\n animation-duration: var(--veil-duration, 1.5s);\n animation-timing-function: linear;\n background: repeating-linear-gradient(45deg, transparent, transparent 12px, var(--veil-highlight, rgba(255, 255, 255, 0.4)) 12px, var(--veil-highlight, rgba(255, 255, 255, 0.4)) 24px);\n}\n\n.veil-skeleton[data-veil-anim=\"halftone\"] {\n animation: veil-halftone var(--veil-duration, 1.8s) ease-in-out infinite;\n}\n.veil-skeleton[data-veil-anim=\"halftone\"]::after {\n background: radial-gradient(var(--veil-highlight, rgba(255, 255, 255, 0.5)) 15%, transparent 16%);\n background-size: 8px 8px;\n}\n\n.veil-skeleton[data-veil-anim=\"border-glow\"] {\n animation: veil-border-glow var(--veil-duration, 1.6s) ease-in-out infinite;\n box-shadow: 0 0 12px var(--veil-highlight, rgba(99, 102, 241, 0.5));\n}\n.veil-skeleton[data-veil-anim=\"border-glow\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"typewriter\"] {\n animation: veil-typewriter var(--veil-duration, 1.5s) steps(20, end) infinite alternate;\n}\n.veil-skeleton[data-veil-anim=\"typewriter\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"glitch\"] {\n animation: veil-glitch var(--veil-duration, 2s) steps(4, jump-none) infinite;\n}\n.veil-skeleton[data-veil-anim=\"glitch\"]::after {\n background: linear-gradient(90deg, transparent, var(--veil-highlight, rgba(255, 255, 255, 0.6)), transparent);\n}\n\n.veil-skeleton[data-veil-anim=\"pixelate\"] {\n animation: veil-pixelate var(--veil-duration, 1.4s) steps(5, start) infinite;\n}\n.veil-skeleton[data-veil-anim=\"pixelate\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"tilt\"] {\n animation: veil-tilt var(--veil-duration, 2.5s) ease-in-out infinite;\n transform-style: preserve-3d;\n}\n.veil-skeleton[data-veil-anim=\"tilt\"]::after {\n animation-name: veil-shimmer-ltr;\n}\n\n.veil-skeleton[data-veil-anim=\"diagonal-sweep\"]::after {\n width: 200%;\n height: 200%;\n animation-name: veil-diagonal-sweep;\n animation-duration: var(--veil-duration, 2s);\n background: linear-gradient(90deg, transparent 20%, var(--veil-highlight, rgba(255, 255, 255, 0.65)) 50%, transparent 80%);\n}\n\n.veil-skeleton[data-veil-anim=\"bounce-in\"] {\n animation: veil-bounce-in var(--veil-duration, 1.6s) cubic-bezier(0.34, 1.56, 0.64, 1) infinite;\n}\n.veil-skeleton[data-veil-anim=\"bounce-in\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"fade-slide\"] {\n animation: veil-fade-slide var(--veil-duration, 1.6s) ease-in-out infinite;\n}\n.veil-skeleton[data-veil-anim=\"fade-slide\"]::after {\n background: none;\n}\n\n.veil-skeleton[data-veil-anim=\"none\"]::after {\n display: none !important;\n}\n\n/* === PRIMITIVE VARIANTS === */\n.veil-skeleton[data-veil-shape=\"line\"] {\n height: 1em;\n margin: 0.35em 0;\n border-radius: var(--veil-radius, 4px);\n}\n.veil-skeleton[data-veil-shape=\"circle\"] {\n border-radius: 50% !important;\n aspect-ratio: 1 / 1;\n}\n.veil-skeleton[data-veil-shape=\"heading\"] {\n height: 1.8em;\n margin: 0.5em 0;\n border-radius: var(--veil-radius, 6px);\n}\n.veil-skeleton[data-veil-shape=\"button\"] {\n height: 2.5rem;\n border-radius: var(--veil-radius, 8px);\n}\n.veil-skeleton[data-veil-shape=\"badge\"] {\n height: 1.35rem;\n border-radius: 9999px;\n display: inline-block;\n}\n.veil-skeleton[data-veil-shape=\"icon\"] {\n width: 1.5rem;\n height: 1.5rem;\n border-radius: var(--veil-radius, 6px);\n display: inline-block;\n}\n.veil-skeleton[data-veil-shape=\"input\"] {\n height: 2.6rem;\n border-radius: var(--veil-radius, 8px);\n}\n.veil-skeleton[data-veil-shape=\"divider\"] {\n height: 1px;\n width: 100%;\n margin: 1rem 0;\n min-height: 1px;\n}\n\n/* Natural randomized last-line widths */\n.veil-lines-group > .veil-skeleton:last-child {\n width: var(--veil-last-width, 68%);\n}\n\n/* === ACCESSIBILITY === */\n.veil-sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border-width: 0 !important;\n}\n\n/* prefers-reduced-motion */\n@media (prefers-reduced-motion: reduce) {\n .veil-skeleton::after {\n animation: none !important;\n display: none !important;\n }\n .veil-skeleton {\n animation: veil-pulse 3s ease-in-out infinite !important;\n transform: none !important;\n }\n}\n\n/* forced-colors */\n@media (forced-colors: active) {\n .veil-skeleton {\n forced-color-adjust: none;\n background-color: ButtonFace !important;\n outline: 1px solid Highlight !important;\n }\n .veil-skeleton::after {\n display: none !important;\n }\n}\n\n/* Offscreen & Tab Hidden Pausing */\n[data-veil-tab-hidden=\"true\"] .veil-skeleton,\n[data-veil-tab-hidden=\"true\"] .veil-skeleton::after,\n[data-veil-offscreen=\"true\"],\n[data-veil-offscreen=\"true\"]::after {\n animation-play-state: paused !important;\n}\n\n/* === REVEAL TRANSITIONS === */\n.veil-revealing {\n position: relative;\n}\n.veil-reveal-fade {\n animation: veil-reveal-fade 350ms cubic-bezier(0.16, 1, 0.3, 1) forwards;\n}\n.veil-reveal-blur-in {\n animation: veil-reveal-blur 400ms cubic-bezier(0.16, 1, 0.3, 1) forwards;\n}\n.veil-reveal-slide-up {\n animation: veil-reveal-slide 400ms cubic-bezier(0.16, 1, 0.3, 1) forwards;\n}\n.veil-reveal-scale {\n animation: veil-reveal-scale 350ms cubic-bezier(0.16, 1, 0.3, 1) forwards;\n}\n\n@keyframes veil-reveal-fade {\n 0% { opacity: 0; }\n 100% { opacity: 1; }\n}\n@keyframes veil-reveal-blur {\n 0% { opacity: 0; filter: blur(8px); }\n 100% { opacity: 1; filter: blur(0px); }\n}\n@keyframes veil-reveal-slide {\n 0% { opacity: 0; transform: translateY(12px); }\n 100% { opacity: 1; transform: translateY(0); }\n}\n@keyframes veil-reveal-scale {\n 0% { opacity: 0; transform: scale(0.96); }\n 100% { opacity: 1; transform: scale(1); }\n}\n\n/* === SPINNERS, PROGRESS, OVERLAY, BUTTON, LAZY IMAGE === */\n.veil-spinner {\n display: inline-block;\n box-sizing: border-box;\n vertical-align: middle;\n}\n.veil-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n background-color: var(--veil-overlay-bg, rgba(255, 255, 255, 0.75));\n backdrop-filter: blur(var(--veil-overlay-blur, 6px));\n -webkit-backdrop-filter: blur(var(--veil-overlay-blur, 6px));\n z-index: 100;\n transition: opacity 250ms ease;\n}\n.veil-overlay-fullscreen {\n position: fixed !important;\n z-index: 999999 !important;\n}\n.veil-progress-bar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 3px;\n z-index: 999999;\n background: transparent;\n pointer-events: none;\n}\n.veil-progress-inner {\n height: 100%;\n background: var(--veil-progress-color, #3b82f6);\n box-shadow: 0 0 10px var(--veil-progress-color, #3b82f6), 0 0 5px var(--veil-progress-color, #3b82f6);\n transition: width 200ms ease, opacity 350ms ease;\n}\n.veil-btn-loading {\n position: relative;\n pointer-events: none;\n cursor: default;\n}\n.veil-btn-spinner-wrap {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px;\n}\n.veil-lazy-img-wrap {\n position: relative;\n overflow: hidden;\n display: inline-block;\n}\n.veil-lazy-img {\n transition: opacity 350ms ease, filter 350ms ease;\n}\n.veil-lazy-img-loading {\n opacity: 0;\n filter: blur(10px);\n}\n.veil-lazy-img-loaded {\n opacity: 1;\n filter: blur(0px);\n}\n\n${getAnimationKeyframesCSS()}\n`;\n}\n\n/**\n * Injects CSS into the document head safely (runs only once, SSR safe)\n */\nexport function injectStyles(nonce?: string): void {\n if (styleInjected || typeof document === 'undefined') return;\n styleInjected = true;\n\n const css = getStylesCSS();\n const effectiveNonce = nonce || cspNonce;\n\n // Try adoptedStyleSheets if supported\n if (\n typeof document.adoptedStyleSheets !== 'undefined' &&\n typeof CSSStyleSheet !== 'undefined' &&\n 'replaceSync' in CSSStyleSheet.prototype &&\n !effectiveNonce // Some CSP setups disallow adoptedStyleSheets with strict style-src\n ) {\n try {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(css);\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n return;\n } catch {\n // Fallback to <style> injection\n }\n }\n\n // <style> tag fallback with CSP nonce support\n const styleEl = document.createElement('style');\n styleEl.id = 'veilkit-styles';\n if (effectiveNonce) {\n styleEl.setAttribute('nonce', effectiveNonce);\n }\n styleEl.textContent = css;\n document.head.appendChild(styleEl);\n}\n","/**\n * Veilkit - Progress System\n * Route Progress Bar (NProgress-style with auto-trickle) +\n * Determinate & Indeterminate Linear and Circular Progress components\n */\n\nimport { ProgressProps } from './types';\nimport { injectStyles } from './css';\n\nexport class RouteProgressController {\n private el: HTMLElement | null = null;\n private innerEl: HTMLElement | null = null;\n private currentProgress: number = 0;\n private trickleTimer: any = null;\n private status: 'idle' | 'loading' | 'success' | 'error' = 'idle';\n\n private ensureDOM(): void {\n if (this.el || typeof document === 'undefined') return;\n injectStyles();\n\n this.el = document.createElement('div');\n this.el.className = 'veil-progress-bar';\n this.el.setAttribute('role', 'progressbar');\n this.el.setAttribute('aria-valuemin', '0');\n this.el.setAttribute('aria-valuemax', '100');\n this.el.setAttribute('aria-valuenow', '0');\n\n this.innerEl = document.createElement('div');\n this.innerEl.className = 'veil-progress-inner';\n this.innerEl.style.width = '0%';\n this.innerEl.style.opacity = '1';\n\n this.el.appendChild(this.innerEl);\n document.body.appendChild(this.el);\n }\n\n public start(): void {\n this.ensureDOM();\n if (this.status === 'loading') return;\n this.status = 'loading';\n this.currentProgress = 0;\n this.set(0.08);\n\n if (this.innerEl) {\n this.innerEl.style.opacity = '1';\n this.innerEl.style.backgroundColor = 'var(--veil-progress-color, #3b82f6)';\n }\n\n this.trickle();\n }\n\n public set(n: number): void {\n this.ensureDOM();\n this.currentProgress = Math.min(1, Math.max(0, n));\n const percent = Math.round(this.currentProgress * 100);\n\n if (this.innerEl) {\n this.innerEl.style.width = `${percent}%`;\n }\n if (this.el) {\n this.el.setAttribute('aria-valuenow', String(percent));\n }\n }\n\n public inc(amount?: number): void {\n const n = this.currentProgress;\n if (n >= 1) return;\n\n if (typeof amount !== 'number') {\n if (n >= 0 && n < 0.2) amount = 0.1;\n else if (n >= 0.2 && n < 0.5) amount = 0.04;\n else if (n >= 0.5 && n < 0.8) amount = 0.02;\n else if (n >= 0.8 && n < 0.99) amount = 0.005;\n else amount = 0;\n }\n\n this.set(n + amount);\n }\n\n private trickle(): void {\n this.stopTrickle();\n this.trickleTimer = setInterval(() => {\n if (this.currentProgress < 0.95) {\n this.inc();\n }\n }, 250);\n }\n\n private stopTrickle(): void {\n if (this.trickleTimer) {\n clearInterval(this.trickleTimer);\n this.trickleTimer = null;\n }\n }\n\n public done(): void {\n if (this.status === 'idle') return;\n this.stopTrickle();\n this.set(1);\n this.status = 'idle';\n\n setTimeout(() => {\n if (this.innerEl) {\n this.innerEl.style.opacity = '0';\n }\n setTimeout(() => {\n if (this.el) {\n this.el.remove();\n this.el = null;\n this.innerEl = null;\n }\n this.currentProgress = 0;\n }, 350);\n }, 200);\n }\n\n public fail(): void {\n this.stopTrickle();\n this.status = 'error';\n if (this.innerEl) {\n this.innerEl.style.backgroundColor = '#ef4444'; // Red error color\n }\n this.set(1);\n setTimeout(() => this.done(), 500);\n }\n}\n\nexport const progressController = new RouteProgressController();\n\n/**\n * Creates an inline determinate or indeterminate Linear/Circular Progress element\n */\nexport function createProgressElement(props: ProgressProps = {}): HTMLElement {\n injectStyles();\n\n const isCircular = Boolean(props.circular);\n const color = props.color || 'var(--veil-progress-color, #3b82f6)';\n const trackColor = props.trackColor || 'rgba(0, 0, 0, 0.08)';\n\n if (isCircular) {\n const size = props.size !== undefined ? (typeof props.size === 'number' ? `${props.size}px` : props.size) : '48px';\n const strokeWidth = props.strokeWidth || 4;\n\n const container = document.createElement('div');\n container.className = `veil-progress-circular ${props.className || ''}`.trim();\n container.style.width = size;\n container.style.height = size;\n container.style.display = 'inline-flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.style.position = 'relative';\n\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 48 48');\n svg.style.width = '100%';\n svg.style.height = '100%';\n svg.style.transform = 'rotate(-90deg)';\n\n const track = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n track.setAttribute('cx', '24');\n track.setAttribute('cy', '24');\n track.setAttribute('r', '20');\n track.setAttribute('fill', 'none');\n track.setAttribute('stroke', trackColor);\n track.setAttribute('stroke-width', String(strokeWidth));\n\n const meter = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n meter.setAttribute('cx', '24');\n meter.setAttribute('cy', '24');\n meter.setAttribute('r', '20');\n meter.setAttribute('fill', 'none');\n meter.setAttribute('stroke', color);\n meter.setAttribute('stroke-width', String(strokeWidth));\n meter.setAttribute('stroke-linecap', 'round');\n\n const circumference = 2 * Math.PI * 20; // ~125.66\n meter.setAttribute('stroke-dasharray', String(circumference));\n\n if (props.value !== undefined) {\n const val = Math.min(100, Math.max(0, props.value));\n const offset = circumference - (val / 100) * circumference;\n meter.setAttribute('stroke-dashoffset', String(offset));\n meter.style.transition = 'stroke-dashoffset 300ms ease';\n } else {\n // Indeterminate mode\n meter.setAttribute('stroke-dashoffset', String(circumference * 0.75));\n svg.style.animation = 'veil-spin 1200ms linear infinite';\n }\n\n svg.append(track, meter);\n container.appendChild(svg);\n\n if (props.showPercentage && props.value !== undefined) {\n const text = document.createElement('span');\n text.style.position = 'absolute';\n text.style.fontSize = '11px';\n text.style.fontWeight = '600';\n text.textContent = `${Math.round(props.value)}%`;\n container.appendChild(text);\n }\n\n return container;\n }\n\n // Linear progress\n const height = props.height !== undefined ? (typeof props.height === 'number' ? `${props.height}px` : props.height) : '4px';\n const container = document.createElement('div');\n container.className = `veil-progress-linear ${props.className || ''}`.trim();\n container.setAttribute('role', 'progressbar');\n container.style.width = '100%';\n container.style.height = height;\n container.style.backgroundColor = trackColor;\n container.style.borderRadius = '9999px';\n container.style.overflow = 'hidden';\n container.style.position = 'relative';\n\n const bar = document.createElement('div');\n bar.style.height = '100%';\n bar.style.backgroundColor = color;\n bar.style.borderRadius = '9999px';\n\n if (props.value !== undefined) {\n const val = Math.min(100, Math.max(0, props.value));\n container.setAttribute('aria-valuenow', String(val));\n bar.style.width = `${val}%`;\n bar.style.transition = 'width 250ms ease';\n } else {\n // Indeterminate\n bar.style.width = '35%';\n bar.style.animation = 'veil-progress-indeterminate 1400ms ease-in-out infinite';\n }\n\n container.appendChild(bar);\n return container;\n}\n","/**\n * Veilkit - Global Loading Manager\n * Manages concurrent requests using request IDs and counter.\n * Ensures loader remains active until all pending operations finish.\n */\n\ntype Listener = (isLoading: boolean, count: number) => void;\n\nexport class LoadingManager {\n private activeIds = new Set<string>();\n private counter: number = 0;\n private listeners = new Set<Listener>();\n\n /**\n * Start a loading operation. Optionally associate with a unique ID.\n */\n public start(id?: string): string {\n const key = id || `req_${Date.now()}_${Math.random().toString(36).substring(2, 7)}`;\n if (!this.activeIds.has(key)) {\n this.activeIds.add(key);\n this.counter++;\n this.notify();\n }\n return key;\n }\n\n /**\n * Complete a loading operation by ID or decrement counter.\n */\n public stop(id?: string): void {\n if (id) {\n if (this.activeIds.has(id)) {\n this.activeIds.delete(id);\n this.counter = Math.max(0, this.counter - 1);\n this.notify();\n }\n } else {\n if (this.counter > 0) {\n this.counter--;\n // Remove an arbitrary id if any\n const first = this.activeIds.values().next().value;\n if (first) this.activeIds.delete(first);\n this.notify();\n }\n }\n }\n\n /**\n * True if there is at least one active operation\n */\n public isLoading(): boolean {\n return this.counter > 0;\n }\n\n /**\n * Current number of concurrent operations\n */\n public getCount(): number {\n return this.counter;\n }\n\n /**\n * Subscribe to state changes\n */\n public subscribe(listener: Listener): () => void {\n this.listeners.add(listener);\n // Initial emission\n listener(this.isLoading(), this.counter);\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * Reset all active requests\n */\n public reset(): void {\n this.activeIds.clear();\n this.counter = 0;\n this.notify();\n }\n\n private notify(): void {\n const loading = this.isLoading();\n for (const listener of this.listeners) {\n listener(loading, this.counter);\n }\n }\n}\n\nexport const loadingManager = new LoadingManager();\n","import { ref, onMounted, onUnmounted, watch } from 'vue';\nimport { AntiFlickerController } from '../core/antiflicker';\nimport { progressController } from '../core/progress';\nimport { loadingManager } from '../core/manager';\n\nexport function useProgress() {\n return {\n start: () => progressController.start(),\n set: (n: number) => progressController.set(n),\n inc: (amount?: number) => progressController.inc(amount),\n done: () => progressController.done(),\n fail: () => progressController.fail(),\n };\n}\n\nexport function useDelayedLoading(\n loadingRef: { value: boolean },\n options: { delay?: number; minVisible?: number } = {},\n) {\n const visible = ref(false);\n let controller: AntiFlickerController | null = null;\n\n onMounted(() => {\n controller = new AntiFlickerController({\n delay: options.delay !== undefined ? options.delay : 150,\n minVisible: options.minVisible !== undefined ? options.minVisible : 300,\n onShow: () => { visible.value = true; },\n onHide: () => { visible.value = false; },\n });\n\n if (loadingRef.value) {\n controller.start();\n }\n });\n\n watch(\n () => loadingRef.value,\n (val) => {\n if (!controller) return;\n if (val) controller.start();\n else controller.finish();\n },\n );\n\n onUnmounted(() => {\n if (controller) {\n controller.destroy();\n controller = null;\n }\n });\n\n return visible;\n}\n\nexport function useLoading<T, Args extends any[]>(\n asyncFn: (...args: Args) => Promise<T>,\n options: { delay?: number; minVisible?: number } = {},\n) {\n const loading = ref(false);\n const data = ref<T | null>(null) as { value: T | null };\n const error = ref<Error | null>(null);\n\n const visibleLoading = useDelayedLoading(loading, options);\n\n const execute = async (...args: Args): Promise<T> => {\n loading.value = true;\n error.value = null;\n const reqId = loadingManager.start();\n\n try {\n const res = await asyncFn(...args);\n data.value = res;\n return res;\n } catch (err: any) {\n error.value = err;\n throw err;\n } finally {\n loadingManager.stop(reqId);\n loading.value = false;\n }\n };\n\n return {\n loading: visibleLoading,\n rawLoading: loading,\n data,\n error,\n execute,\n };\n}\n","/**\n * Veilkit - Global Synchronized Timeline\n * Keeps all shimmer animations in lockstep phase via negative animation-delay\n */\n\nlet globalStartTime: number = 0;\n\n/**\n * Initializes or gets the baseline global timeline origin\n */\nexport function getTimelineOrigin(): number {\n if (globalStartTime === 0 && typeof performance !== 'undefined') {\n globalStartTime = performance.now();\n }\n return globalStartTime;\n}\n\n/**\n * Computes a negative animation-delay string so that an element mounting right now\n * is in exact phase synchronization with all other animations sharing this duration.\n *\n * @param durationMs Duration in milliseconds (default 1500)\n * @returns CSS animation-delay value, e.g. \"-642ms\"\n */\nexport function getSyncDelay(durationMs: number = 1500): string {\n if (typeof performance === 'undefined') return '0ms';\n const elapsed = performance.now() - getTimelineOrigin();\n const phaseOffset = Math.round(elapsed % durationMs);\n return `-${phaseOffset}ms`;\n}\n\n/**\n * Parses duration string (e.g. \"1.5s\", \"800ms\") into milliseconds\n */\nexport function parseDurationMs(duration: string | number = 1500): number {\n if (typeof duration === 'number') return duration;\n if (!duration) return 1500;\n const trimmed = duration.trim().toLowerCase();\n if (trimmed.endsWith('ms')) {\n return parseFloat(trimmed) || 1500;\n }\n if (trimmed.endsWith('s')) {\n return (parseFloat(trimmed) || 1.5) * 1000;\n }\n return parseFloat(trimmed) || 1500;\n}\n","/**\n * Veilkit - Performance & Offscreen Observers\n * Automatically pauses animations when offscreen or when document is hidden\n */\n\nlet intersectionObserver: IntersectionObserver | null = null;\nconst observedElements = new Set<HTMLElement>();\nlet visibilityInitialized = false;\n\nfunction handleIntersection(entries: IntersectionObserverEntry[]) {\n for (const entry of entries) {\n const el = entry.target as HTMLElement;\n if (entry.isIntersecting) {\n el.removeAttribute('data-veil-offscreen');\n el.style.removeProperty('--veil-play-state');\n } else {\n el.setAttribute('data-veil-offscreen', 'true');\n el.style.setProperty('--veil-play-state', 'paused');\n }\n }\n}\n\n/**\n * Ensures tab visibility change listener is attached\n */\nexport function setupVisibilityObserver(): void {\n if (visibilityInitialized || typeof document === 'undefined') return;\n visibilityInitialized = true;\n\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n document.documentElement.setAttribute('data-veil-tab-hidden', 'true');\n } else {\n document.documentElement.removeAttribute('data-veil-tab-hidden');\n }\n });\n}\n\n/**\n * Registers an element to pause CSS animations when outside the viewport\n */\nexport function observeOffscreen(element: HTMLElement): () => void {\n if (typeof window === 'undefined' || typeof IntersectionObserver === 'undefined') {\n return () => {};\n }\n\n setupVisibilityObserver();\n\n if (!intersectionObserver) {\n intersectionObserver = new IntersectionObserver(handleIntersection, {\n rootMargin: '100px 0px', // Pre-activate 100px before coming into view\n threshold: 0,\n });\n }\n\n intersectionObserver.observe(element);\n observedElements.add(element);\n\n return () => {\n if (intersectionObserver && element) {\n intersectionObserver.unobserve(element);\n observedElements.delete(element);\n }\n };\n}\n\n/**\n * Disconnects all observers\n */\nexport function teardownObservers(): void {\n if (intersectionObserver) {\n intersectionObserver.disconnect();\n intersectionObserver = null;\n }\n observedElements.clear();\n}\n","/**\n * Veilkit - Skeleton Primitives\n * Primitives: line, paragraph, heading, circle, rect, image, button, badge, icon, input, table-row, divider\n */\n\nimport { SkeletonProps, VeilPrimitiveType } from './types';\nimport { injectStyles } from './css';\nimport { getSyncDelay, parseDurationMs } from './sync';\nimport { observeOffscreen } from './observer';\n\n/**\n * Creates a DOM skeleton element with applied styles, classes, and synced timing\n */\nexport function createSkeletonElement(props: SkeletonProps = {}): HTMLElement {\n injectStyles();\n\n const el = document.createElement('div');\n el.className = `veil-skeleton ${props.className || ''}`.trim();\n el.setAttribute('aria-hidden', 'true');\n\n const shape = props.type || 'rect';\n el.setAttribute('data-veil-shape', shape);\n\n if (props.animation) {\n el.setAttribute('data-veil-anim', props.animation);\n }\n if (props.direction) {\n el.setAttribute('data-veil-dir', props.direction);\n }\n if (typeof props.theme === 'string') {\n el.setAttribute('data-veil-theme', props.theme);\n }\n\n // Style attributes\n if (props.width !== undefined) {\n el.style.width = typeof props.width === 'number' ? `${props.width}px` : props.width;\n }\n if (props.height !== undefined) {\n el.style.height = typeof props.height === 'number' ? `${props.height}px` : props.height;\n }\n if (props.radius !== undefined) {\n el.style.setProperty('--veil-radius', typeof props.radius === 'number' ? `${props.radius}px` : props.radius);\n el.style.borderRadius = typeof props.radius === 'number' ? `${props.radius}px` : props.radius;\n }\n if (props.speed !== undefined) {\n const durMs = parseDurationMs(props.speed);\n el.style.setProperty('--veil-duration', `${durMs}ms`);\n el.style.setProperty('--veil-sync-delay', getSyncDelay(durMs));\n } else {\n el.style.setProperty('--veil-sync-delay', getSyncDelay(1500));\n }\n\n if (props.style) {\n for (const [key, val] of Object.entries(props.style)) {\n (el.style as any)[key] = val;\n }\n }\n\n observeOffscreen(el);\n return el;\n}\n\n/**\n * Creates multiple lines of text with natural varied widths\n */\nexport function createSkeletonParagraph(lines: number = 3, props: SkeletonProps = {}): HTMLElement {\n const container = document.createElement('div');\n container.className = `veil-lines-group ${props.className || ''}`.trim();\n container.setAttribute('aria-hidden', 'true');\n\n const gap = props.gap !== undefined ? (typeof props.gap === 'number' ? `${props.gap}px` : props.gap) : '0.45rem';\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = gap;\n\n const defaultWidths = ['100%', '94%', '88%', '75%'];\n const lastWidth = props.lastLineWidth !== undefined\n ? (typeof props.lastLineWidth === 'number' ? `${props.lastLineWidth}px` : props.lastLineWidth)\n : '65%';\n\n for (let i = 0; i < lines; i++) {\n const isLast = i === lines - 1;\n const width = isLast ? lastWidth : (defaultWidths[i % defaultWidths.length] || '95%');\n const lineEl = createSkeletonElement({\n ...props,\n type: 'line',\n width,\n });\n lineEl.style.setProperty('--veil-stagger-idx', String(i));\n container.appendChild(lineEl);\n }\n\n return container;\n}\n\n/**\n * Creates any primitive by type\n */\nexport function createPrimitive(type: VeilPrimitiveType, props: SkeletonProps = {}): HTMLElement {\n switch (type) {\n case 'paragraph':\n return createSkeletonParagraph(props.lines || 3, props);\n case 'line':\n return createSkeletonElement({ ...props, type: 'line' });\n case 'heading':\n return createSkeletonElement({ ...props, type: 'heading', width: props.width || '65%' });\n case 'circle':\n return createSkeletonElement({\n ...props,\n type: 'circle',\n width: props.width || props.height || '40px',\n height: props.height || props.width || '40px',\n radius: '50%',\n });\n case 'image':\n return createSkeletonElement({\n ...props,\n type: 'rect',\n width: props.width || '100%',\n height: props.height || '200px',\n radius: props.radius || '8px',\n });\n case 'button':\n return createSkeletonElement({\n ...props,\n type: 'button',\n width: props.width || '120px',\n height: props.height || '38px',\n });\n case 'badge':\n return createSkeletonElement({\n ...props,\n type: 'badge',\n width: props.width || '64px',\n height: props.height || '22px',\n });\n case 'icon':\n return createSkeletonElement({\n ...props,\n type: 'icon',\n width: props.width || '24px',\n height: props.height || '24px',\n });\n case 'input':\n return createSkeletonElement({\n ...props,\n type: 'input',\n width: props.width || '100%',\n height: props.height || '40px',\n });\n case 'divider':\n return createSkeletonElement({\n ...props,\n type: 'divider',\n width: '100%',\n height: '1px',\n });\n case 'table-row': {\n const row = document.createElement('div');\n row.style.display = 'flex';\n row.style.gap = '1rem';\n row.style.alignItems = 'center';\n row.style.width = '100%';\n row.style.padding = '0.5rem 0';\n const cols = props.count || 4;\n for (let i = 0; i < cols; i++) {\n const cell = createSkeletonElement({\n ...props,\n type: 'line',\n width: `${100 / cols}%`,\n height: '16px',\n });\n row.appendChild(cell);\n }\n return row;\n }\n default:\n return createSkeletonElement(props);\n }\n}\n","/**\n * Veilkit - Reveal Transitions Engine\n * Seamless skeleton -> content reveal transitions:\n * fade, blur-in, slide-up, scale, stagger-children, none\n */\n\nimport { VeilRevealTransition } from './types';\n\nexport interface RevealOptions {\n transition?: VeilRevealTransition;\n duration?: number; // ms\n easing?: string;\n onComplete?: () => void;\n}\n\nexport function applyReveal(element: HTMLElement, options: RevealOptions = {}): void {\n const transition = options.transition || 'fade';\n if (transition === 'none') {\n if (options.onComplete) options.onComplete();\n return;\n }\n\n element.classList.add('veil-revealing');\n\n if (transition === 'stagger-children') {\n const children = Array.from(element.children) as HTMLElement[];\n children.forEach((child, idx) => {\n child.classList.add('veil-reveal-fade');\n child.style.animationDelay = `${idx * 60}ms`;\n if (options.duration) {\n child.style.animationDuration = `${options.duration}ms`;\n }\n });\n\n const totalDuration = (options.duration || 350) + (children.length * 60);\n setTimeout(() => {\n element.classList.remove('veil-revealing');\n children.forEach((child) => {\n child.classList.remove('veil-reveal-fade');\n child.style.removeProperty('animation-delay');\n child.style.removeProperty('animation-duration');\n });\n if (options.onComplete) options.onComplete();\n }, totalDuration);\n\n return;\n }\n\n const className = `veil-reveal-${transition}`;\n element.classList.add(className);\n\n if (options.duration) {\n element.style.animationDuration = `${options.duration}ms`;\n }\n if (options.easing) {\n element.style.animationTimingFunction = options.easing;\n }\n\n const handleEnd = () => {\n element.removeEventListener('animationend', handleEnd);\n element.classList.remove('veil-revealing', className);\n element.style.removeProperty('animation-duration');\n element.style.removeProperty('animation-timing-function');\n if (options.onComplete) options.onComplete();\n };\n\n element.addEventListener('animationend', handleEnd);\n}\n","/**\n * Veilkit - Auto-Measure Skeleton Engine\n * Dynamically measures real DOM trees, generates matching skeleton overlays,\n * updates on resize/mutation, and supports instant layout caching.\n */\n\nimport { AutoMeasureOptions, SkeletonProps } from './types';\nimport { createSkeletonElement } from './primitives';\nimport { applyReveal } from './reveal';\n\nexport interface LeafBox {\n x: number;\n y: number;\n width: number;\n height: number;\n radius: string;\n shape: 'circle' | 'rect' | 'line';\n}\n\nexport interface CachedLayout {\n width: number;\n height: number;\n boxes: LeafBox[];\n}\n\nconst memoryLayoutCache = new Map<string, CachedLayout>();\n\n/**\n * Retrieve cached layout by key\n */\nexport function getCachedLayout(cacheKey: string): CachedLayout | null {\n if (memoryLayoutCache.has(cacheKey)) {\n return memoryLayoutCache.get(cacheKey)!;\n }\n if (typeof window !== 'undefined' && window.localStorage) {\n try {\n const stored = localStorage.getItem(`veil_cache_${cacheKey}`);\n if (stored) {\n const parsed = JSON.parse(stored) as CachedLayout;\n memoryLayoutCache.set(cacheKey, parsed);\n return parsed;\n }\n } catch {\n // Storage unavailable or quota exceeded\n }\n }\n return null;\n}\n\n/**\n * Store layout in cache\n */\nexport function setCachedLayout(cacheKey: string, layout: CachedLayout, persist: boolean = false): void {\n memoryLayoutCache.set(cacheKey, layout);\n if (persist && typeof window !== 'undefined' && window.localStorage) {\n try {\n localStorage.setItem(`veil_cache_${cacheKey}`, JSON.stringify(layout));\n } catch {\n // Storage unavailable\n }\n }\n}\n\n/**\n * Measures the leaf elements of a container DOM tree\n */\nexport function measureContainer(container: HTMLElement, ignoreSelector?: string): CachedLayout {\n const containerRect = container.getBoundingClientRect();\n const boxes: LeafBox[] = [];\n\n function isLeafOrTarget(el: HTMLElement): boolean {\n if (el.hasAttribute('data-veil-ignore')) return false;\n if (ignoreSelector && el.matches(ignoreSelector)) return false;\n\n const style = window.getComputedStyle(el);\n if (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') {\n return false;\n }\n\n const tag = el.tagName.toLowerCase();\n if (['img', 'svg', 'button', 'input', 'textarea', 'select'].includes(tag)) {\n return true;\n }\n\n if (el.hasAttribute('data-veil-shape')) {\n return true;\n }\n\n // Has text nodes and no child elements\n const hasOnlyText = Array.from(el.childNodes).some((n) => n.nodeType === Node.TEXT_NODE && (n.textContent || '').trim().length > 0) &&\n el.children.length === 0;\n\n return hasOnlyText;\n }\n\n function walk(node: HTMLElement) {\n if (node !== container && isLeafOrTarget(node)) {\n const rect = node.getBoundingClientRect();\n if (rect.width > 2 && rect.height > 2) {\n const computed = window.getComputedStyle(node);\n const radius = computed.borderRadius || '6px';\n const customShape = node.getAttribute('data-veil-shape');\n\n let shape: 'circle' | 'rect' | 'line' = 'rect';\n if (customShape === 'circle' || radius === '50%' || (radius.includes('px') && parseFloat(radius) >= rect.width / 2)) {\n shape = 'circle';\n } else if (customShape === 'line' || ['p', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'a', 'label'].includes(node.tagName.toLowerCase())) {\n shape = 'line';\n }\n\n boxes.push({\n x: Math.round(rect.left - containerRect.left),\n y: Math.round(rect.top - containerRect.top),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n radius,\n shape,\n });\n }\n return;\n }\n\n const children = Array.from(node.children) as HTMLElement[];\n for (const child of children) {\n if (!child.hasAttribute('data-veil-ignore')) {\n walk(child);\n }\n }\n }\n\n walk(container);\n\n return {\n width: Math.round(containerRect.width),\n height: Math.round(containerRect.height),\n boxes,\n };\n}\n\n/**\n * Creates and attaches an auto-measured skeleton overlay to a container\n */\nexport function createAutoMeasureOverlay(\n container: HTMLElement,\n options: AutoMeasureOptions = {},\n skeletonProps: SkeletonProps = {},\n): {\n overlay: HTMLElement;\n refresh: () => void;\n destroy: () => void;\n} {\n const overlay = document.createElement('div');\n overlay.className = 'veil-auto-overlay';\n overlay.setAttribute('aria-hidden', 'true');\n overlay.style.position = 'absolute';\n overlay.style.top = '0';\n overlay.style.left = '0';\n overlay.style.width = '100%';\n overlay.style.height = '100%';\n overlay.style.pointerEvents = 'none';\n overlay.style.zIndex = '5';\n\n if (!options.preserveBackground) {\n const computed = window.getComputedStyle(container);\n overlay.style.backgroundColor = computed.backgroundColor !== 'rgba(0, 0, 0, 0)' ? computed.backgroundColor : 'transparent';\n }\n\n function renderLayout(layout: CachedLayout) {\n overlay.innerHTML = '';\n for (let i = 0; i < layout.boxes.length; i++) {\n const box = layout.boxes[i]!;\n const el = createSkeletonElement({\n ...skeletonProps,\n type: box.shape,\n radius: box.radius,\n });\n el.style.position = 'absolute';\n el.style.left = `${box.x}px`;\n el.style.top = `${box.y}px`;\n el.style.width = `${box.width}px`;\n el.style.height = `${box.height}px`;\n el.style.setProperty('--veil-stagger-idx', String(i));\n overlay.appendChild(el);\n }\n }\n\n function update() {\n const layout = measureContainer(container, options.ignoreSelector);\n if (layout.boxes.length > 0) {\n renderLayout(layout);\n if (options.cacheKey) {\n setCachedLayout(options.cacheKey, layout, options.persistCache);\n }\n }\n }\n\n // Check cache first for instant repeat render\n if (options.cacheKey) {\n const cached = getCachedLayout(options.cacheKey);\n if (cached) {\n renderLayout(cached);\n }\n }\n\n // Ensure container has relative positioning\n const compPos = window.getComputedStyle(container).position;\n if (compPos === 'static') {\n container.style.position = 'relative';\n }\n\n container.appendChild(overlay);\n\n // If no cache hit, measure immediately\n if (overlay.children.length === 0) {\n update();\n }\n\n let ro: ResizeObserver | null = null;\n let mo: MutationObserver | null = null;\n\n if (options.observeResize !== false && typeof ResizeObserver !== 'undefined') {\n ro = new ResizeObserver(() => update());\n ro.observe(container);\n }\n\n if (options.observeMutations !== false && typeof MutationObserver !== 'undefined') {\n mo = new MutationObserver(() => update());\n mo.observe(container, { childList: true, subtree: true, attributes: false });\n }\n\n return {\n overlay,\n refresh: update,\n destroy: () => {\n if (ro) ro.disconnect();\n if (mo) mo.disconnect();\n if (options.reveal && options.reveal !== 'none') {\n applyReveal(container, {\n transition: options.reveal,\n duration: options.revealDuration,\n easing: options.revealEasing,\n onComplete: () => overlay.remove(),\n });\n } else {\n overlay.remove();\n }\n },\n };\n}\n","import { Directive, DirectiveBinding } from 'vue';\nimport { createAutoMeasureOverlay } from '../core/measure';\nimport { injectStyles } from '../core/css';\n\ninterface VeilDirectiveState {\n overlayInstance?: ReturnType<typeof createAutoMeasureOverlay>;\n}\n\nconst elementStateMap = new WeakMap<HTMLElement, VeilDirectiveState>();\n\nexport const vVeil: Directive<HTMLElement, boolean> = {\n mounted(el: HTMLElement, binding: DirectiveBinding<boolean>) {\n injectStyles();\n const state: VeilDirectiveState = {};\n elementStateMap.set(el, state);\n\n if (binding.value) {\n state.overlayInstance = createAutoMeasureOverlay(el, {\n observeResize: true,\n observeMutations: true,\n reveal: 'fade',\n });\n el.setAttribute('aria-busy', 'true');\n }\n },\n\n updated(el: HTMLElement, binding: DirectiveBinding<boolean>) {\n const state = elementStateMap.get(el);\n if (!state) return;\n\n if (binding.value && !state.overlayInstance) {\n state.overlayInstance = createAutoMeasureOverlay(el, {\n observeResize: true,\n observeMutations: true,\n reveal: 'fade',\n });\n el.setAttribute('aria-busy', 'true');\n } else if (!binding.value && state.overlayInstance) {\n state.overlayInstance.destroy();\n state.overlayInstance = undefined;\n el.removeAttribute('aria-busy');\n }\n },\n\n unmounted(el: HTMLElement) {\n const state = elementStateMap.get(el);\n if (state?.overlayInstance) {\n state.overlayInstance.destroy();\n state.overlayInstance = undefined;\n }\n elementStateMap.delete(el);\n },\n};\n","/**\n * Veilkit - 30 Spinner Loaders\n * Complete catalog of GPU-accelerated spinners\n */\n\nimport { SpinnerProps, VeilSpinnerType } from './types';\nimport { injectStyles } from './css';\n\nexport const SPINNER_TYPES: VeilSpinnerType[] = [\n 'ring',\n 'dual-ring',\n 'dots',\n 'bars',\n 'pulse',\n 'orbit',\n 'wave',\n 'bounce',\n 'ios-activity',\n 'glass-orb',\n 'morph',\n 'progress-circle',\n 'arc-gradient',\n 'pulse-ring',\n 'dots-circle',\n 'grid-dots',\n 'square-flip',\n 'cube-fold',\n 'hourglass',\n 'infinity',\n 'heartbeat-line',\n 'equalizer',\n 'chasing-dots',\n 'typing',\n 'liquid-fill',\n 'atom',\n 'clock',\n 'radar',\n 'ellipsis',\n 'flower',\n];\n\n/**\n * Creates a DOM spinner element with specified type, size, and colors\n */\nexport function createSpinner(props: SpinnerProps = {}): HTMLElement {\n injectStyles();\n\n const type = props.type || 'ring';\n const size = props.size !== undefined ? (typeof props.size === 'number' ? `${props.size}px` : props.size) : '28px';\n const color = props.color || 'var(--veil-progress-color, #3b82f6)';\n const secondaryColor = props.secondaryColor || 'rgba(0, 0, 0, 0.12)';\n const duration = props.speed !== undefined ? (typeof props.speed === 'number' ? `${props.speed}ms` : props.speed) : undefined;\n\n const container = document.createElement('div');\n container.className = `veil-spinner veil-spinner-${type} ${props.glass ? 'veil-spinner-glass' : ''} ${props.className || ''}`.trim();\n container.setAttribute('role', 'status');\n container.setAttribute('aria-label', props.label || 'Loading');\n container.style.width = size;\n container.style.height = size;\n container.style.display = 'inline-flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.style.position = 'relative';\n\n if (props.glass) {\n container.style.borderRadius = '50%';\n container.style.backdropFilter = 'blur(8px)';\n (container.style as any).webkitBackdropFilter = 'blur(8px)';\n container.style.background = 'rgba(255, 255, 255, 0.12)';\n container.style.boxShadow = '0 4px 16px rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.4)';\n container.style.border = '1px solid rgba(255, 255, 255, 0.25)';\n }\n\n switch (type) {\n case 'ring': {\n const ring = document.createElement('div');\n ring.style.width = '100%';\n ring.style.height = '100%';\n ring.style.borderRadius = '50%';\n ring.style.border = `3px solid ${secondaryColor}`;\n ring.style.borderTopColor = color;\n ring.style.animation = `veil-spin ${duration || '800ms'} linear infinite`;\n ring.style.boxSizing = 'border-box';\n container.appendChild(ring);\n break;\n }\n\n case 'dual-ring': {\n const ring = document.createElement('div');\n ring.style.width = '100%';\n ring.style.height = '100%';\n ring.style.borderRadius = '50%';\n ring.style.border = `3px solid transparent`;\n ring.style.borderTopColor = color;\n ring.style.borderBottomColor = color;\n ring.style.animation = `veil-spin ${duration || '900ms'} cubic-bezier(0.5, 0, 0.5, 1) infinite`;\n ring.style.boxSizing = 'border-box';\n container.appendChild(ring);\n break;\n }\n\n case 'dots': {\n container.style.gap = '4px';\n for (let i = 0; i < 3; i++) {\n const dot = document.createElement('div');\n dot.style.width = '28%';\n dot.style.height = '28%';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.animation = `veil-dot-bounce ${duration || '1200ms'} ease-in-out infinite`;\n dot.style.animationDelay = `${i * 160}ms`;\n container.appendChild(dot);\n }\n break;\n }\n\n case 'bars': {\n container.style.gap = '3px';\n for (let i = 0; i < 4; i++) {\n const bar = document.createElement('div');\n bar.style.width = '18%';\n bar.style.height = '100%';\n bar.style.borderRadius = '2px';\n bar.style.backgroundColor = color;\n bar.style.animation = `veil-bar-wave ${duration || '1000ms'} ease-in-out infinite`;\n bar.style.animationDelay = `${i * 140}ms`;\n container.appendChild(bar);\n }\n break;\n }\n\n case 'pulse': {\n const pulseCircle = document.createElement('div');\n pulseCircle.style.width = '100%';\n pulseCircle.style.height = '100%';\n pulseCircle.style.borderRadius = '50%';\n pulseCircle.style.backgroundColor = color;\n pulseCircle.style.animation = `veil-pulse-scale ${duration || '1200ms'} ease-out infinite`;\n container.appendChild(pulseCircle);\n break;\n }\n\n case 'orbit': {\n const nucleus = document.createElement('div');\n nucleus.style.width = '30%';\n nucleus.style.height = '30%';\n nucleus.style.borderRadius = '50%';\n nucleus.style.backgroundColor = color;\n nucleus.style.position = 'absolute';\n\n const orbitRing = document.createElement('div');\n orbitRing.style.width = '100%';\n orbitRing.style.height = '100%';\n orbitRing.style.position = 'absolute';\n orbitRing.style.animation = `veil-spin ${duration || '1200ms'} linear infinite`;\n\n const satellite = document.createElement('div');\n satellite.style.width = '24%';\n satellite.style.height = '24%';\n satellite.style.borderRadius = '50%';\n satellite.style.backgroundColor = color;\n satellite.style.position = 'absolute';\n satellite.style.top = '0';\n satellite.style.left = '38%';\n\n orbitRing.appendChild(satellite);\n container.append(nucleus, orbitRing);\n break;\n }\n\n case 'wave': {\n container.style.gap = '4px';\n for (let i = 0; i < 5; i++) {\n const line = document.createElement('div');\n line.style.width = '12%';\n line.style.height = '80%';\n line.style.borderRadius = '3px';\n line.style.backgroundColor = color;\n line.style.animation = `veil-wave-dance ${duration || '1100ms'} ease-in-out infinite`;\n line.style.animationDelay = `${i * 110}ms`;\n container.appendChild(line);\n }\n break;\n }\n\n case 'bounce': {\n const ball = document.createElement('div');\n ball.style.width = '60%';\n ball.style.height = '60%';\n ball.style.borderRadius = '50%';\n ball.style.backgroundColor = color;\n ball.style.animation = `veil-bounce-ball ${duration || '900ms'} cubic-bezier(0.28, 0.84, 0.42, 1) infinite`;\n container.appendChild(ball);\n break;\n }\n\n case 'ios-activity': {\n for (let i = 0; i < 12; i++) {\n const spoke = document.createElement('div');\n spoke.style.position = 'absolute';\n spoke.style.width = '8%';\n spoke.style.height = '26%';\n spoke.style.backgroundColor = color;\n spoke.style.borderRadius = '2px';\n spoke.style.transformOrigin = '50% 190%';\n spoke.style.transform = `rotate(${i * 30}deg) translateY(-90%)`;\n spoke.style.animation = `veil-ios-fade ${duration || '1000ms'} linear infinite`;\n spoke.style.animationDelay = `-${(12 - i) * (1000 / 12)}ms`;\n container.appendChild(spoke);\n }\n break;\n }\n\n case 'glass-orb': {\n const orb = document.createElement('div');\n orb.style.width = '100%';\n orb.style.height = '100%';\n orb.style.borderRadius = '50%';\n orb.style.background = `radial-gradient(circle at 35% 35%, rgba(255,255,255,0.8), ${color} 70%)`;\n orb.style.boxShadow = `0 4px 12px ${color}44, inset 0 2px 4px rgba(255,255,255,0.6)`;\n orb.style.animation = `veil-glass-orbit ${duration || '1600ms'} ease-in-out infinite`;\n container.appendChild(orb);\n break;\n }\n\n case 'morph': {\n const shape = document.createElement('div');\n shape.style.width = '80%';\n shape.style.height = '80%';\n shape.style.backgroundColor = color;\n shape.style.animation = `veil-morph-shape ${duration || '2000ms'} ease-in-out infinite`;\n container.appendChild(shape);\n break;\n }\n\n case 'progress-circle': {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 36 36');\n svg.style.width = '100%';\n svg.style.height = '100%';\n svg.style.transform = 'rotate(-90deg)';\n\n const bgCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bgCircle.setAttribute('cx', '18');\n bgCircle.setAttribute('cy', '18');\n bgCircle.setAttribute('r', '14');\n bgCircle.setAttribute('fill', 'none');\n bgCircle.setAttribute('stroke', secondaryColor);\n bgCircle.setAttribute('stroke-width', '3');\n\n const meterCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n meterCircle.setAttribute('cx', '18');\n meterCircle.setAttribute('cy', '18');\n meterCircle.setAttribute('r', '14');\n meterCircle.setAttribute('fill', 'none');\n meterCircle.setAttribute('stroke', color);\n meterCircle.setAttribute('stroke-width', '3');\n meterCircle.setAttribute('stroke-dasharray', '88');\n meterCircle.setAttribute('stroke-dashoffset', '25');\n meterCircle.setAttribute('stroke-linecap', 'round');\n meterCircle.style.animation = `veil-spin ${duration || '1200ms'} linear infinite`;\n meterCircle.style.transformOrigin = '50% 50%';\n\n svg.append(bgCircle, meterCircle);\n container.appendChild(svg);\n break;\n }\n\n case 'arc-gradient': {\n const arc = document.createElement('div');\n arc.style.width = '100%';\n arc.style.height = '100%';\n arc.style.borderRadius = '50%';\n arc.style.background = `conic-gradient(from 0deg, transparent 20%, ${color} 100%)`;\n arc.style.mask = 'radial-gradient(farthest-side, transparent calc(100% - 3px), #fff calc(100% - 2.5px))';\n arc.style.webkitMask = 'radial-gradient(farthest-side, transparent calc(100% - 3px), #fff calc(100% - 2.5px))';\n arc.style.animation = `veil-spin ${duration || '750ms'} linear infinite`;\n container.appendChild(arc);\n break;\n }\n\n case 'pulse-ring': {\n for (let i = 0; i < 2; i++) {\n const ring = document.createElement('div');\n ring.style.position = 'absolute';\n ring.style.inset = '0';\n ring.style.borderRadius = '50%';\n ring.style.border = `2px solid ${color}`;\n ring.style.animation = `veil-pulse-ring ${duration || '1400ms'} cubic-bezier(0, 0.2, 0.8, 1) infinite`;\n ring.style.animationDelay = `${i * 700}ms`;\n container.appendChild(ring);\n }\n break;\n }\n\n case 'dots-circle': {\n for (let i = 0; i < 8; i++) {\n const dot = document.createElement('div');\n dot.style.position = 'absolute';\n dot.style.width = '20%';\n dot.style.height = '20%';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.transformOrigin = '50% 250%';\n dot.style.transform = `rotate(${i * 45}deg) translateY(-150%)`;\n dot.style.animation = `veil-fade-seq ${duration || '1000ms'} linear infinite`;\n dot.style.animationDelay = `-${(8 - i) * (1000 / 8)}ms`;\n container.appendChild(dot);\n }\n break;\n }\n\n case 'grid-dots': {\n container.style.display = 'grid';\n container.style.gridTemplateColumns = 'repeat(3, 1fr)';\n container.style.gap = '3px';\n for (let row = 0; row < 3; row++) {\n for (let col = 0; col < 3; col++) {\n const dot = document.createElement('div');\n dot.style.width = '100%';\n dot.style.aspectRatio = '1 / 1';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.animation = `veil-dot-bounce ${duration || '1200ms'} ease-in-out infinite`;\n dot.style.animationDelay = `${(row + col) * 110}ms`;\n container.appendChild(dot);\n }\n }\n break;\n }\n\n case 'square-flip': {\n const sq = document.createElement('div');\n sq.style.width = '60%';\n sq.style.height = '60%';\n sq.style.backgroundColor = color;\n sq.style.borderRadius = '4px';\n sq.style.animation = `veil-square-flip ${duration || '1200ms'} ease-in-out infinite`;\n container.appendChild(sq);\n break;\n }\n\n case 'cube-fold': {\n container.style.display = 'grid';\n container.style.gridTemplateColumns = 'repeat(2, 1fr)';\n container.style.gap = '2px';\n for (let i = 0; i < 4; i++) {\n const cube = document.createElement('div');\n cube.style.width = '100%';\n cube.style.aspectRatio = '1 / 1';\n cube.style.backgroundColor = color;\n cube.style.borderRadius = '2px';\n cube.style.animation = `veil-cube-fold ${duration || '1400ms'} ease-in-out infinite`;\n cube.style.animationDelay = `${i * 175}ms`;\n container.appendChild(cube);\n }\n break;\n }\n\n case 'hourglass': {\n const hg = document.createElement('div');\n hg.style.width = '65%';\n hg.style.height = '65%';\n hg.style.border = `3px solid ${color}`;\n hg.style.borderLeftColor = 'transparent';\n hg.style.borderRightColor = 'transparent';\n hg.style.borderRadius = '50%';\n hg.style.animation = `veil-hourglass ${duration || '1200ms'} cubic-bezier(0.55, 0.15, 0.45, 0.85) infinite`;\n container.appendChild(hg);\n break;\n }\n\n case 'infinity': {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 48 24');\n svg.style.width = '100%';\n svg.style.height = '100%';\n\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('d', 'M12,12 C4,12 4,4 12,4 C20,4 28,20 36,20 C44,20 44,12 36,12 C28,12 20,4 12,4');\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke', color);\n path.setAttribute('stroke-width', '3');\n path.setAttribute('stroke-dasharray', '80');\n path.setAttribute('stroke-dashoffset', '0');\n path.setAttribute('stroke-linecap', 'round');\n path.style.animation = `veil-dash ${duration || '1400ms'} linear infinite`;\n\n svg.appendChild(path);\n container.appendChild(svg);\n break;\n }\n\n case 'heartbeat-line': {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 50 24');\n svg.style.width = '100%';\n svg.style.height = '100%';\n\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('d', 'M0,12 L14,12 L18,3 L24,21 L28,9 L32,15 L36,12 L50,12');\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke', color);\n path.setAttribute('stroke-width', '2.5');\n path.setAttribute('stroke-dasharray', '60');\n path.setAttribute('stroke-dashoffset', '60');\n path.setAttribute('stroke-linecap', 'round');\n path.setAttribute('stroke-linejoin', 'round');\n path.style.animation = `veil-ecg ${duration || '1200ms'} ease-in-out infinite`;\n\n svg.appendChild(path);\n container.appendChild(svg);\n break;\n }\n\n case 'equalizer': {\n container.style.gap = '3px';\n const delays = [0, 200, 100, 300];\n for (let i = 0; i < 4; i++) {\n const bar = document.createElement('div');\n bar.style.width = '18%';\n bar.style.height = '100%';\n bar.style.borderRadius = '2px';\n bar.style.backgroundColor = color;\n bar.style.animation = `veil-eq-bounce ${duration || '800ms'} ease-in-out infinite alternate`;\n bar.style.animationDelay = `${delays[i]}ms`;\n container.appendChild(bar);\n }\n break;\n }\n\n case 'chasing-dots': {\n const wrap = document.createElement('div');\n wrap.style.width = '100%';\n wrap.style.height = '100%';\n wrap.style.position = 'relative';\n wrap.style.animation = `veil-spin ${duration || '1800ms'} linear infinite`;\n\n for (let i = 0; i < 2; i++) {\n const dot = document.createElement('div');\n dot.style.position = 'absolute';\n dot.style.width = '45%';\n dot.style.height = '45%';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.animation = `veil-chase ${duration || '1800ms'} ease-in-out infinite`;\n if (i === 0) {\n dot.style.top = '0';\n dot.style.left = '0';\n } else {\n dot.style.bottom = '0';\n dot.style.right = '0';\n dot.style.animationDelay = '-900ms';\n }\n wrap.appendChild(dot);\n }\n container.appendChild(wrap);\n break;\n }\n\n case 'typing': {\n container.style.gap = '4px';\n for (let i = 0; i < 3; i++) {\n const dot = document.createElement('div');\n dot.style.width = '24%';\n dot.style.height = '24%';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.animation = `veil-typing ${duration || '1000ms'} ease-in-out infinite`;\n dot.style.animationDelay = `${i * 150}ms`;\n container.appendChild(dot);\n }\n break;\n }\n\n case 'liquid-fill': {\n const wrap = document.createElement('div');\n wrap.style.width = '85%';\n wrap.style.height = '85%';\n wrap.style.borderRadius = '50%';\n wrap.style.border = `2px solid ${color}`;\n wrap.style.position = 'relative';\n wrap.style.overflow = 'hidden';\n\n const liquid = document.createElement('div');\n liquid.style.position = 'absolute';\n liquid.style.inset = '0';\n liquid.style.backgroundColor = color;\n liquid.style.opacity = '0.7';\n liquid.style.borderRadius = '40%';\n liquid.style.animation = `veil-liquid-spin ${duration || '2000ms'} linear infinite`;\n wrap.appendChild(liquid);\n container.appendChild(wrap);\n break;\n }\n\n case 'atom': {\n const nucleus = document.createElement('div');\n nucleus.style.width = '24%';\n nucleus.style.height = '24%';\n nucleus.style.borderRadius = '50%';\n nucleus.style.backgroundColor = color;\n nucleus.style.position = 'absolute';\n container.appendChild(nucleus);\n\n const angles = [0, 60, 120];\n for (const angle of angles) {\n const ring = document.createElement('div');\n ring.style.position = 'absolute';\n ring.style.width = '100%';\n ring.style.height = '45%';\n ring.style.borderRadius = '50%';\n ring.style.border = `1.5px solid ${color}`;\n ring.style.transform = `rotate(${angle}deg)`;\n ring.style.animation = `veil-atom-spin ${duration || '1600ms'} linear infinite`;\n container.appendChild(ring);\n }\n break;\n }\n\n case 'clock': {\n const face = document.createElement('div');\n face.style.width = '100%';\n face.style.height = '100%';\n face.style.borderRadius = '50%';\n face.style.border = `2.5px solid ${color}`;\n face.style.position = 'relative';\n\n const center = document.createElement('div');\n center.style.width = '14%';\n center.style.height = '14%';\n center.style.borderRadius = '50%';\n center.style.backgroundColor = color;\n center.style.position = 'absolute';\n center.style.top = '43%';\n center.style.left = '43%';\n\n const hourHand = document.createElement('div');\n hourHand.style.position = 'absolute';\n hourHand.style.width = '2px';\n hourHand.style.height = '30%';\n hourHand.style.backgroundColor = color;\n hourHand.style.top = '20%';\n hourHand.style.left = 'calc(50% - 1px)';\n hourHand.style.transformOrigin = 'bottom center';\n hourHand.style.animation = `veil-spin ${duration || '3000ms'} linear infinite`;\n\n const minuteHand = document.createElement('div');\n minuteHand.style.position = 'absolute';\n minuteHand.style.width = '2px';\n minuteHand.style.height = '42%';\n minuteHand.style.backgroundColor = color;\n minuteHand.style.top = '8%';\n minuteHand.style.left = 'calc(50% - 1px)';\n minuteHand.style.transformOrigin = 'bottom center';\n minuteHand.style.animation = `veil-spin ${duration || '1000ms'} linear infinite`;\n\n face.append(center, hourHand, minuteHand);\n container.appendChild(face);\n break;\n }\n\n case 'radar': {\n const radarWrap = document.createElement('div');\n radarWrap.style.width = '100%';\n radarWrap.style.height = '100%';\n radarWrap.style.borderRadius = '50%';\n radarWrap.style.border = `1.5px solid ${color}`;\n radarWrap.style.position = 'relative';\n radarWrap.style.overflow = 'hidden';\n\n const beam = document.createElement('div');\n beam.style.position = 'absolute';\n beam.style.inset = '0';\n beam.style.borderRadius = '50%';\n beam.style.background = `conic-gradient(from 0deg, transparent 60%, ${color} 100%)`;\n beam.style.opacity = '0.6';\n beam.style.animation = `veil-spin ${duration || '1500ms'} linear infinite`;\n\n radarWrap.appendChild(beam);\n container.appendChild(radarWrap);\n break;\n }\n\n case 'ellipsis': {\n container.style.gap = '3px';\n for (let i = 0; i < 3; i++) {\n const dot = document.createElement('div');\n dot.style.width = '24%';\n dot.style.height = '24%';\n dot.style.borderRadius = '50%';\n dot.style.backgroundColor = color;\n dot.style.animation = `veil-ellipsis ${duration || '1200ms'} ease-in-out infinite`;\n dot.style.animationDelay = `${i * 200}ms`;\n container.appendChild(dot);\n }\n break;\n }\n\n case 'flower': {\n for (let i = 0; i < 6; i++) {\n const petal = document.createElement('div');\n petal.style.position = 'absolute';\n petal.style.width = '28%';\n petal.style.height = '48%';\n petal.style.borderRadius = '50%';\n petal.style.backgroundColor = color;\n petal.style.opacity = '0.85';\n petal.style.transformOrigin = '50% 100%';\n petal.style.top = '2%';\n petal.style.transform = `rotate(${i * 60}deg)`;\n petal.style.animation = `veil-flower-bloom ${duration || '1600ms'} ease-in-out infinite`;\n petal.style.animationDelay = `${i * 120}ms`;\n container.appendChild(petal);\n }\n break;\n }\n }\n\n injectSpinnerKeyframes();\n return container;\n}\n\nlet spinnerKeyframesInjected = false;\nfunction injectSpinnerKeyframes(): void {\n if (spinnerKeyframesInjected || typeof document === 'undefined') return;\n spinnerKeyframesInjected = true;\n\n const style = document.createElement('style');\n style.id = 'veilkit-spinner-keyframes';\n style.textContent = `\n @keyframes veil-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\n @keyframes veil-dot-bounce { 0%, 80%, 100% { transform: scale(0.4); opacity: 0.4; } 40% { transform: scale(1); opacity: 1; } }\n @keyframes veil-bar-wave { 0%, 100% { transform: scaleY(0.3); opacity: 0.5; } 50% { transform: scaleY(1); opacity: 1; } }\n @keyframes veil-pulse-scale { 0% { transform: scale(0.2); opacity: 1; } 100% { transform: scale(1.1); opacity: 0; } }\n @keyframes veil-wave-dance { 0%, 100% { transform: scaleY(0.2); } 50% { transform: scaleY(1); } }\n @keyframes veil-bounce-ball { 0%, 100% { transform: translateY(35%) scale(1.15, 0.75); } 50% { transform: translateY(-40%) scale(0.9, 1.1); } }\n @keyframes veil-ios-fade { 0% { opacity: 1; } 100% { opacity: 0.15; } }\n @keyframes veil-glass-orbit { 0%, 100% { transform: scale(0.9) rotate(0deg); } 50% { transform: scale(1.08) rotate(180deg); } }\n @keyframes veil-morph-shape {\n 0%, 100% { border-radius: 50%; transform: rotate(0deg); }\n 33% { border-radius: 8px; transform: rotate(90deg); }\n 66% { border-radius: 20px; transform: rotate(180deg); }\n }\n @keyframes veil-pulse-ring {\n 0% { transform: scale(0.2); opacity: 1; }\n 100% { transform: scale(1.4); opacity: 0; }\n }\n @keyframes veil-fade-seq { 0% { opacity: 1; } 100% { opacity: 0.1; } }\n @keyframes veil-square-flip {\n 0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg); }\n 50% { transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); }\n 100% { transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); }\n }\n @keyframes veil-cube-fold {\n 0%, 10% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(0.3); opacity: 0.3; }\n 90%, 100% { transform: scale(1); opacity: 1; }\n }\n @keyframes veil-hourglass {\n 0% { transform: rotate(0); }\n 50% { transform: rotate(180deg); }\n 100% { transform: rotate(360deg); }\n }\n @keyframes veil-dash {\n 0% { stroke-dashoffset: 0; }\n 100% { stroke-dashoffset: -160; }\n }\n @keyframes veil-ecg {\n 0% { stroke-dashoffset: 60; }\n 50% { stroke-dashoffset: 0; }\n 100% { stroke-dashoffset: -60; }\n }\n @keyframes veil-eq-bounce {\n 0% { transform: scaleY(0.15); }\n 100% { transform: scaleY(1); }\n }\n @keyframes veil-chase {\n 0%, 100% { transform: scale(0.4); }\n 50% { transform: scale(1); }\n }\n @keyframes veil-typing {\n 0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }\n 30% { transform: translateY(-4px); opacity: 1; }\n }\n @keyframes veil-liquid-spin {\n 0% { transform: translateY(30%) rotate(0deg); }\n 100% { transform: translateY(30%) rotate(360deg); }\n }\n @keyframes veil-atom-spin {\n 0% { transform: rotate(0deg) scale(1); }\n 50% { transform: rotate(180deg) scale(0.95); }\n 100% { transform: rotate(360deg) scale(1); }\n }\n @keyframes veil-ellipsis {\n 0%, 100% { transform: scale(0.5); opacity: 0.3; }\n 50% { transform: scale(1.1); opacity: 1; }\n }\n @keyframes veil-flower-bloom {\n 0%, 100% { transform: scale(0.7); opacity: 0.5; }\n 50% { transform: scale(1); opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n}\n","/**\n * Veilkit - Presets Engine\n * 40 Ready-Made, Customizable, Responsive Skeleton Layout Presets\n * Supports shape styles: rounded | pill | square | sharp | glass\n */\n\nimport { PresetProps, SkeletonProps, VeilPresetName } from './types';\nimport { createSkeletonElement, createSkeletonParagraph } from './primitives';\n\nexport const PRESET_NAMES: VeilPresetName[] = [\n 'card',\n 'product-card',\n 'product-grid',\n 'list',\n 'list-item',\n 'table',\n 'profile',\n 'profile-header',\n 'feed-post',\n 'article',\n 'comment-thread',\n 'chat',\n 'dashboard',\n 'form',\n 'media-card',\n 'navbar',\n 'sidebar',\n 'settings-page',\n 'product-detail',\n 'news-feed',\n 'inbox-list',\n 'notification-list',\n 'order-list',\n 'kpi-card',\n 'chart-bar',\n 'chart-line',\n 'chart-pie',\n 'search-results',\n 'video-player',\n 'music-player',\n 'stories-row',\n 'reels',\n 'tabs',\n 'calendar',\n 'kanban',\n 'timeline',\n 'map-card',\n 'pricing-card',\n 'testimonial',\n 'faq-accordion',\n 'file-explorer',\n 'code-block',\n 'e-commerce-checkout',\n 'social-story',\n 'hero-banner',\n];\n\nexport function createPreset(props: PresetProps): HTMLElement {\n const container = document.createElement('div');\n container.className = `veil-preset veil-preset-${props.name} ${props.className || ''}`.trim();\n container.setAttribute('aria-hidden', 'true');\n container.style.width = props.width !== undefined ? (typeof props.width === 'number' ? `${props.width}px` : props.width) : '100%';\n container.style.boxSizing = 'border-box';\n\n const shape = props.shape || 'rounded';\n let shapeRadius: string | undefined = undefined;\n if (shape === 'pill') shapeRadius = '9999px';\n else if (shape === 'square') shapeRadius = '4px';\n else if (shape === 'sharp') shapeRadius = '0px';\n\n if (shape === 'glass') {\n container.style.backdropFilter = 'blur(10px)';\n (container.style as any).webkitBackdropFilter = 'blur(10px)';\n container.style.background = 'rgba(255, 255, 255, 0.08)';\n container.style.border = '1px solid rgba(255, 255, 255, 0.18)';\n container.style.boxShadow = '0 8px 32px rgba(0, 0, 0, 0.08)';\n }\n\n const baseProps: SkeletonProps = {\n animation: props.animation,\n theme: props.theme,\n direction: props.direction,\n speed: props.speed,\n radius: shapeRadius,\n };\n\n switch (props.name) {\n case 'card': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n container.style.padding = '16px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.08)';\n\n const img = createSkeletonElement({ ...baseProps, type: 'rect', height: '180px', radius: shapeRadius || '8px' });\n const title = createSkeletonElement({ ...baseProps, type: 'heading', width: '70%', height: '24px' });\n const text = createSkeletonParagraph(2, baseProps);\n const btn = createSkeletonElement({ ...baseProps, type: 'button', width: '110px', height: '36px' });\n\n container.append(img, title, text, btn);\n break;\n }\n\n case 'product-card': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '10px';\n container.style.padding = '14px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const img = createSkeletonElement({ ...baseProps, type: 'rect', height: '200px', radius: shapeRadius || '10px' });\n const badge = createSkeletonElement({ ...baseProps, type: 'badge', width: '50px', height: '18px' });\n const title = createSkeletonElement({ ...baseProps, type: 'line', width: '85%', height: '18px' });\n const price = createSkeletonElement({ ...baseProps, type: 'line', width: '40%', height: '22px' });\n const btn = createSkeletonElement({ ...baseProps, type: 'button', width: '100%', height: '38px' });\n\n container.append(img, badge, title, price, btn);\n break;\n }\n\n case 'product-grid': {\n const itemsCount = props.items || 4;\n const columns = props.columns || 2;\n container.style.display = 'grid';\n container.style.gridTemplateColumns = `repeat(${columns}, 1fr)`;\n container.style.gap = '16px';\n\n for (let i = 0; i < itemsCount; i++) {\n const item = createPreset({ ...props, name: 'product-card', width: '100%' });\n container.appendChild(item);\n }\n break;\n }\n\n case 'list': {\n const count = props.items || 4;\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n\n for (let i = 0; i < count; i++) {\n const row = createSkeletonElement({ ...baseProps, type: 'line', width: `${95 - (i % 3) * 15}%`, height: '18px' });\n container.appendChild(row);\n }\n break;\n }\n\n case 'list-item': {\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.gap = '14px';\n container.style.padding = '10px 0';\n\n const avatar = createSkeletonElement({ ...baseProps, type: 'circle', width: '44px', height: '44px' });\n const textGroup = document.createElement('div');\n textGroup.style.display = 'flex';\n textGroup.style.flexDirection = 'column';\n textGroup.style.gap = '6px';\n textGroup.style.flex = '1';\n\n const primary = createSkeletonElement({ ...baseProps, type: 'line', width: '60%', height: '16px' });\n const secondary = createSkeletonElement({ ...baseProps, type: 'line', width: '40%', height: '12px' });\n\n textGroup.append(primary, secondary);\n container.append(avatar, textGroup);\n break;\n }\n\n case 'table': {\n const rows = props.items || 5;\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '8px';\n container.style.padding = '12px';\n container.style.borderRadius = shapeRadius || '8px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const header = document.createElement('div');\n header.style.display = 'grid';\n header.style.gridTemplateColumns = '2fr 1fr 1fr 1fr';\n header.style.gap = '12px';\n header.style.paddingBottom = '8px';\n header.style.borderBottom = '2px solid rgba(0,0,0,0.08)';\n\n for (let c = 0; c < 4; c++) {\n header.appendChild(createSkeletonElement({ ...baseProps, type: 'line', height: '16px' }));\n }\n container.appendChild(header);\n\n for (let r = 0; r < rows; r++) {\n const row = document.createElement('div');\n row.style.display = 'grid';\n row.style.gridTemplateColumns = '2fr 1fr 1fr 1fr';\n row.style.gap = '12px';\n row.style.padding = '8px 0';\n row.style.borderBottom = '1px solid rgba(0,0,0,0.04)';\n\n for (let c = 0; c < 4; c++) {\n row.appendChild(createSkeletonElement({ ...baseProps, type: 'line', height: '14px' }));\n }\n container.appendChild(row);\n }\n break;\n }\n\n case 'profile': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.alignItems = 'center';\n container.style.gap = '14px';\n container.style.padding = '24px';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const avatar = createSkeletonElement({ ...baseProps, type: 'circle', width: '88px', height: '88px' });\n const name = createSkeletonElement({ ...baseProps, type: 'heading', width: '160px', height: '22px' });\n const bio = createSkeletonParagraph(2, baseProps);\n const btnGroup = document.createElement('div');\n btnGroup.style.display = 'flex';\n btnGroup.style.gap = '10px';\n btnGroup.append(\n createSkeletonElement({ ...baseProps, type: 'button', width: '100px', height: '34px' }),\n createSkeletonElement({ ...baseProps, type: 'button', width: '100px', height: '34px' }),\n );\n\n container.append(avatar, name, bio, btnGroup);\n break;\n }\n\n case 'profile-header': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.overflow = 'hidden';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const banner = createSkeletonElement({ ...baseProps, type: 'rect', height: '140px', radius: '0' });\n const body = document.createElement('div');\n body.style.display = 'flex';\n body.style.alignItems = 'flex-end';\n body.style.gap = '16px';\n body.style.padding = '0 20px 20px 20px';\n body.style.marginTop = '-40px';\n\n const avatar = createSkeletonElement({ ...baseProps, type: 'circle', width: '80px', height: '80px' });\n const info = document.createElement('div');\n info.style.display = 'flex';\n info.style.flexDirection = 'column';\n info.style.gap = '6px';\n info.style.flex = '1';\n info.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '140px', height: '20px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '200px', height: '14px' }),\n );\n\n body.append(avatar, info);\n container.append(banner, body);\n break;\n }\n\n case 'feed-post': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n container.style.padding = '16px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.08)';\n\n const header = document.createElement('div');\n header.style.display = 'flex';\n header.style.alignItems = 'center';\n header.style.gap = '10px';\n header.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '40px', height: '40px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '120px', height: '16px' }),\n );\n\n const text = createSkeletonParagraph(2, baseProps);\n const media = createSkeletonElement({ ...baseProps, type: 'rect', height: '220px', radius: shapeRadius || '8px' });\n const actions = document.createElement('div');\n actions.style.display = 'flex';\n actions.style.gap = '16px';\n actions.append(\n createSkeletonElement({ ...baseProps, type: 'button', width: '60px', height: '28px' }),\n createSkeletonElement({ ...baseProps, type: 'button', width: '60px', height: '28px' }),\n );\n\n container.append(header, text, media, actions);\n break;\n }\n\n case 'article': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n\n const title = createSkeletonElement({ ...baseProps, type: 'heading', width: '85%', height: '36px' });\n const meta = document.createElement('div');\n meta.style.display = 'flex';\n meta.style.gap = '12px';\n meta.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '32px', height: '32px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '140px', height: '14px' }),\n );\n const heroImg = createSkeletonElement({ ...baseProps, type: 'rect', height: '260px', radius: shapeRadius || '10px' });\n const body1 = createSkeletonParagraph(4, baseProps);\n const body2 = createSkeletonParagraph(3, baseProps);\n\n container.append(title, meta, heroImg, body1, body2);\n break;\n }\n\n case 'comment-thread': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n\n for (let i = 0; i < 3; i++) {\n const comment = document.createElement('div');\n comment.style.display = 'flex';\n comment.style.gap = '12px';\n if (i === 1) comment.style.marginLeft = '40px';\n\n const avatar = createSkeletonElement({ ...baseProps, type: 'circle', width: '36px', height: '36px' });\n const body = document.createElement('div');\n body.style.display = 'flex';\n body.style.flexDirection = 'column';\n body.style.gap = '6px';\n body.style.flex = '1';\n body.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '120px', height: '14px' }),\n createSkeletonParagraph(2, baseProps),\n );\n\n comment.append(avatar, body);\n container.appendChild(comment);\n }\n break;\n }\n\n case 'chat': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '14px';\n container.style.padding = '16px';\n\n const bubbles = [\n { align: 'flex-start', w: '65%' },\n { align: 'flex-end', w: '50%' },\n { align: 'flex-start', w: '80%' },\n { align: 'flex-end', w: '40%' },\n ];\n\n for (const b of bubbles) {\n const bubble = document.createElement('div');\n bubble.style.display = 'flex';\n bubble.style.justifyContent = b.align;\n const msg = createSkeletonElement({ ...baseProps, type: 'rect', width: b.w, height: '42px', radius: shapeRadius || '18px' });\n bubble.appendChild(msg);\n container.appendChild(bubble);\n }\n break;\n }\n\n case 'dashboard': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n\n const statGrid = document.createElement('div');\n statGrid.style.display = 'grid';\n statGrid.style.gridTemplateColumns = 'repeat(3, 1fr)';\n statGrid.style.gap = '12px';\n\n for (let i = 0; i < 3; i++) {\n const stat = document.createElement('div');\n stat.style.padding = '16px';\n stat.style.borderRadius = shapeRadius || '10px';\n stat.style.border = '1px solid rgba(0,0,0,0.06)';\n stat.style.display = 'flex';\n stat.style.flexDirection = 'column';\n stat.style.gap = '8px';\n stat.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '60%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'heading', width: '80%', height: '28px' }),\n );\n statGrid.appendChild(stat);\n }\n\n const chartBlock = createSkeletonElement({ ...baseProps, type: 'rect', height: '200px', radius: shapeRadius || '10px' });\n container.append(statGrid, chartBlock);\n break;\n }\n\n case 'form': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n container.style.padding = '20px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n for (let i = 0; i < 3; i++) {\n const group = document.createElement('div');\n group.style.display = 'flex';\n group.style.flexDirection = 'column';\n group.style.gap = '6px';\n group.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '30%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'input', width: '100%', height: '40px' }),\n );\n container.appendChild(group);\n }\n\n const submit = createSkeletonElement({ ...baseProps, type: 'button', width: '140px', height: '40px' });\n container.appendChild(submit);\n break;\n }\n\n case 'media-card': {\n container.style.display = 'flex';\n container.style.gap = '16px';\n container.style.padding = '12px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const thumb = createSkeletonElement({ ...baseProps, type: 'rect', width: '140px', height: '90px', radius: shapeRadius || '8px' });\n const meta = document.createElement('div');\n meta.style.display = 'flex';\n meta.style.flexDirection = 'column';\n meta.style.gap = '8px';\n meta.style.flex = '1';\n meta.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '80%', height: '18px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '60%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '40%', height: '12px' }),\n );\n\n container.append(thumb, meta);\n break;\n }\n\n case 'navbar': {\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'space-between';\n container.style.padding = '12px 20px';\n container.style.borderBottom = '1px solid rgba(0,0,0,0.08)';\n\n const brand = createSkeletonElement({ ...baseProps, type: 'heading', width: '110px', height: '24px' });\n const links = document.createElement('div');\n links.style.display = 'flex';\n links.style.gap = '18px';\n for (let i = 0; i < 4; i++) {\n links.appendChild(createSkeletonElement({ ...baseProps, type: 'line', width: '60px', height: '14px' }));\n }\n\n const cta = createSkeletonElement({ ...baseProps, type: 'button', width: '90px', height: '34px' });\n container.append(brand, links, cta);\n break;\n }\n\n case 'sidebar': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.justifyContent = 'space-between';\n container.style.padding = '18px 14px';\n container.style.height = '100%';\n container.style.minHeight = '320px';\n container.style.borderRight = '1px solid rgba(0,0,0,0.08)';\n\n const top = document.createElement('div');\n top.style.display = 'flex';\n top.style.flexDirection = 'column';\n top.style.gap = '16px';\n top.appendChild(createSkeletonElement({ ...baseProps, type: 'heading', width: '100px', height: '22px' }));\n\n for (let i = 0; i < 5; i++) {\n const navItem = document.createElement('div');\n navItem.style.display = 'flex';\n navItem.style.alignItems = 'center';\n navItem.style.gap = '10px';\n navItem.append(\n createSkeletonElement({ ...baseProps, type: 'icon', width: '20px', height: '20px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '90px', height: '14px' }),\n );\n top.appendChild(navItem);\n }\n\n const footer = document.createElement('div');\n footer.style.display = 'flex';\n footer.style.alignItems = 'center';\n footer.style.gap = '10px';\n footer.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '36px', height: '36px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '80px', height: '14px' }),\n );\n\n container.append(top, footer);\n break;\n }\n\n case 'settings-page': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '24px';\n container.style.padding = '24px';\n\n const title = createSkeletonElement({ ...baseProps, type: 'heading', width: '220px', height: '30px' });\n container.appendChild(title);\n\n for (let i = 0; i < 3; i++) {\n const section = document.createElement('div');\n section.style.display = 'flex';\n section.style.alignItems = 'center';\n section.style.justifyContent = 'space-between';\n section.style.padding = '14px 0';\n section.style.borderBottom = '1px solid rgba(0,0,0,0.06)';\n\n const textGroup = document.createElement('div');\n textGroup.style.display = 'flex';\n textGroup.style.flexDirection = 'column';\n textGroup.style.gap = '6px';\n textGroup.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '160px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '240px', height: '12px' }),\n );\n\n const control = createSkeletonElement({ ...baseProps, type: 'button', width: '50px', height: '28px', radius: '14px' });\n section.append(textGroup, control);\n container.appendChild(section);\n }\n break;\n }\n\n // === NEW PRESETS (19 - 40) ===\n\n case 'product-detail': {\n container.style.display = 'grid';\n container.style.gridTemplateColumns = '1fr 1.2fr';\n container.style.gap = '24px';\n container.style.padding = '20px';\n\n const left = document.createElement('div');\n left.style.display = 'flex';\n left.style.flexDirection = 'column';\n left.style.gap = '12px';\n const mainImg = createSkeletonElement({ ...baseProps, type: 'rect', height: '280px', radius: shapeRadius || '12px' });\n const thumbRow = document.createElement('div');\n thumbRow.style.display = 'flex';\n thumbRow.style.gap = '8px';\n for (let i = 0; i < 4; i++) {\n thumbRow.appendChild(createSkeletonElement({ ...baseProps, type: 'rect', width: '60px', height: '60px', radius: '6px' }));\n }\n left.append(mainImg, thumbRow);\n\n const right = document.createElement('div');\n right.style.display = 'flex';\n right.style.flexDirection = 'column';\n right.style.gap = '14px';\n const title = createSkeletonElement({ ...baseProps, type: 'heading', width: '85%', height: '32px' });\n const rating = createSkeletonElement({ ...baseProps, type: 'badge', width: '120px', height: '20px' });\n const price = createSkeletonElement({ ...baseProps, type: 'heading', width: '100px', height: '28px' });\n const desc = createSkeletonParagraph(3, baseProps);\n const btn = createSkeletonElement({ ...baseProps, type: 'button', width: '180px', height: '44px' });\n right.append(title, rating, price, desc, btn);\n\n container.append(left, right);\n break;\n }\n\n case 'news-feed': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n\n for (let i = 0; i < 3; i++) {\n const item = document.createElement('div');\n item.style.display = 'flex';\n item.style.gap = '16px';\n item.style.paddingBottom = '16px';\n item.style.borderBottom = '1px solid rgba(0,0,0,0.06)';\n\n const textCol = document.createElement('div');\n textCol.style.display = 'flex';\n textCol.style.flexDirection = 'column';\n textCol.style.gap = '8px';\n textCol.style.flex = '1';\n textCol.append(\n createSkeletonElement({ ...baseProps, type: 'badge', width: '80px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'heading', width: '90%', height: '20px' }),\n createSkeletonParagraph(2, baseProps),\n );\n\n const img = createSkeletonElement({ ...baseProps, type: 'rect', width: '120px', height: '90px', radius: shapeRadius || '8px' });\n item.append(textCol, img);\n container.appendChild(item);\n }\n break;\n }\n\n case 'inbox-list': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n container.style.borderRadius = shapeRadius || '8px';\n\n for (let i = 0; i < 4; i++) {\n const row = document.createElement('div');\n row.style.display = 'flex';\n row.style.alignItems = 'center';\n row.style.gap = '14px';\n row.style.padding = '12px 16px';\n row.style.borderBottom = '1px solid rgba(0,0,0,0.04)';\n\n const star = createSkeletonElement({ ...baseProps, type: 'icon', width: '18px', height: '18px' });\n const sender = createSkeletonElement({ ...baseProps, type: 'line', width: '120px', height: '14px' });\n const snippet = createSkeletonElement({ ...baseProps, type: 'line', width: '280px', height: '14px' });\n const time = createSkeletonElement({ ...baseProps, type: 'badge', width: '50px', height: '16px' });\n\n row.append(star, sender, snippet, time);\n container.appendChild(row);\n }\n break;\n }\n\n case 'notification-list': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '10px';\n\n for (let i = 0; i < 3; i++) {\n const notif = document.createElement('div');\n notif.style.display = 'flex';\n notif.style.alignItems = 'flex-start';\n notif.style.gap = '12px';\n notif.style.padding = '12px';\n notif.style.borderRadius = shapeRadius || '8px';\n notif.style.background = 'rgba(0,0,0,0.02)';\n\n const dot = createSkeletonElement({ ...baseProps, type: 'circle', width: '10px', height: '10px' });\n dot.style.marginTop = '6px';\n const avatar = createSkeletonElement({ ...baseProps, type: 'circle', width: '38px', height: '38px' });\n const content = document.createElement('div');\n content.style.display = 'flex';\n content.style.flexDirection = 'column';\n content.style.gap = '4px';\n content.style.flex = '1';\n content.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '75%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '40%', height: '12px' }),\n );\n\n notif.append(dot, avatar, content);\n container.appendChild(notif);\n }\n break;\n }\n\n case 'order-list': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '14px';\n\n for (let i = 0; i < 2; i++) {\n const order = document.createElement('div');\n order.style.display = 'flex';\n order.style.flexDirection = 'column';\n order.style.gap = '12px';\n order.style.padding = '16px';\n order.style.borderRadius = shapeRadius || '10px';\n order.style.border = '1px solid rgba(0,0,0,0.08)';\n\n const orderHeader = document.createElement('div');\n orderHeader.style.display = 'flex';\n orderHeader.style.justifyContent = 'space-between';\n orderHeader.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '140px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'badge', width: '80px', height: '22px' }),\n );\n\n const itemsRow = document.createElement('div');\n itemsRow.style.display = 'flex';\n itemsRow.style.gap = '10px';\n for (let j = 0; j < 3; j++) {\n itemsRow.appendChild(createSkeletonElement({ ...baseProps, type: 'rect', width: '50px', height: '50px', radius: '6px' }));\n }\n\n const footer = document.createElement('div');\n footer.style.display = 'flex';\n footer.style.justifyContent = 'space-between';\n footer.style.alignItems = 'center';\n footer.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '90px', height: '20px' }),\n createSkeletonElement({ ...baseProps, type: 'button', width: '110px', height: '32px' }),\n );\n\n order.append(orderHeader, itemsRow, footer);\n container.appendChild(order);\n }\n break;\n }\n\n case 'kpi-card': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n container.style.padding = '18px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const top = document.createElement('div');\n top.style.display = 'flex';\n top.style.justifyContent = 'space-between';\n top.style.alignItems = 'center';\n top.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '90px', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'icon', width: '20px', height: '20px' }),\n );\n\n const val = createSkeletonElement({ ...baseProps, type: 'heading', width: '140px', height: '36px' });\n const trend = createSkeletonElement({ ...baseProps, type: 'badge', width: '70px', height: '18px' });\n\n container.append(top, val, trend);\n break;\n }\n\n case 'chart-bar': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n container.style.padding = '18px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const head = createSkeletonElement({ ...baseProps, type: 'heading', width: '140px', height: '20px' });\n const barsWrap = document.createElement('div');\n barsWrap.style.display = 'flex';\n barsWrap.style.alignItems = 'flex-end';\n barsWrap.style.justifyContent = 'space-between';\n barsWrap.style.height = '140px';\n barsWrap.style.padding = '0 10px';\n\n const heights = ['40%', '75%', '55%', '90%', '65%', '80%', '50%'];\n for (const h of heights) {\n const bar = createSkeletonElement({ ...baseProps, type: 'rect', width: '22px', height: h, radius: '4px' });\n barsWrap.appendChild(bar);\n }\n\n container.append(head, barsWrap);\n break;\n }\n\n case 'chart-line': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '14px';\n container.style.padding = '18px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const head = createSkeletonElement({ ...baseProps, type: 'heading', width: '150px', height: '20px' });\n const lineArea = createSkeletonElement({ ...baseProps, type: 'rect', height: '140px', radius: '8px' });\n container.append(head, lineArea);\n break;\n }\n\n case 'chart-pie': {\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.gap = '20px';\n container.style.padding = '20px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const circle = createSkeletonElement({ ...baseProps, type: 'circle', width: '120px', height: '120px' });\n const legend = document.createElement('div');\n legend.style.display = 'flex';\n legend.style.flexDirection = 'column';\n legend.style.gap = '10px';\n legend.style.flex = '1';\n\n for (let i = 0; i < 3; i++) {\n const row = document.createElement('div');\n row.style.display = 'flex';\n row.style.alignItems = 'center';\n row.style.gap = '8px';\n row.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '12px', height: '12px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '90px', height: '14px' }),\n );\n legend.appendChild(row);\n }\n\n container.append(circle, legend);\n break;\n }\n\n case 'search-results': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '18px';\n\n const searchInput = createSkeletonElement({ ...baseProps, type: 'input', height: '42px', radius: shapeRadius || '24px' });\n container.appendChild(searchInput);\n\n for (let i = 0; i < 3; i++) {\n const res = document.createElement('div');\n res.style.display = 'flex';\n res.style.flexDirection = 'column';\n res.style.gap = '6px';\n res.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '160px', height: '12px' }),\n createSkeletonElement({ ...baseProps, type: 'heading', width: '70%', height: '20px' }),\n createSkeletonParagraph(2, baseProps),\n );\n container.appendChild(res);\n }\n break;\n }\n\n case 'video-player': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '14px';\n\n const screen = createSkeletonElement({ ...baseProps, type: 'rect', height: '240px', radius: shapeRadius || '12px' });\n const title = createSkeletonElement({ ...baseProps, type: 'heading', width: '80%', height: '24px' });\n const channel = document.createElement('div');\n channel.style.display = 'flex';\n channel.style.alignItems = 'center';\n channel.style.justifyContent = 'space-between';\n const chLeft = document.createElement('div');\n chLeft.style.display = 'flex';\n chLeft.style.alignItems = 'center';\n chLeft.style.gap = '10px';\n chLeft.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '40px', height: '40px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '120px', height: '14px' }),\n );\n const subBtn = createSkeletonElement({ ...baseProps, type: 'button', width: '100px', height: '36px' });\n channel.append(chLeft, subBtn);\n\n container.append(screen, title, channel);\n break;\n }\n\n case 'music-player': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.alignItems = 'center';\n container.style.gap = '14px';\n container.style.padding = '20px';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const album = createSkeletonElement({ ...baseProps, type: 'rect', width: '180px', height: '180px', radius: shapeRadius || '12px' });\n const song = createSkeletonElement({ ...baseProps, type: 'heading', width: '160px', height: '20px' });\n const artist = createSkeletonElement({ ...baseProps, type: 'line', width: '100px', height: '14px' });\n const progress = createSkeletonElement({ ...baseProps, type: 'line', width: '100%', height: '6px' });\n\n const controls = document.createElement('div');\n controls.style.display = 'flex';\n controls.style.alignItems = 'center';\n controls.style.gap = '20px';\n controls.append(\n createSkeletonElement({ ...baseProps, type: 'icon', width: '24px', height: '24px' }),\n createSkeletonElement({ ...baseProps, type: 'circle', width: '48px', height: '48px' }),\n createSkeletonElement({ ...baseProps, type: 'icon', width: '24px', height: '24px' }),\n );\n\n container.append(album, song, artist, progress, controls);\n break;\n }\n\n case 'stories-row': {\n container.style.display = 'flex';\n container.style.gap = '16px';\n container.style.overflowX = 'auto';\n container.style.padding = '8px 0';\n\n for (let i = 0; i < 5; i++) {\n const story = document.createElement('div');\n story.style.display = 'flex';\n story.style.flexDirection = 'column';\n story.style.alignItems = 'center';\n story.style.gap = '6px';\n story.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '60px', height: '60px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '48px', height: '10px' }),\n );\n container.appendChild(story);\n }\n break;\n }\n\n case 'reels': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.justifyContent = 'flex-end';\n container.style.height = '340px';\n container.style.padding = '20px';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.border = '1px solid rgba(0,0,0,0.1)';\n container.style.position = 'relative';\n\n const author = document.createElement('div');\n author.style.display = 'flex';\n author.style.alignItems = 'center';\n author.style.gap = '10px';\n author.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '36px', height: '36px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '100px', height: '14px' }),\n );\n const text = createSkeletonParagraph(2, baseProps);\n\n container.append(author, text);\n break;\n }\n\n case 'tabs': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n\n const tabHeader = document.createElement('div');\n tabHeader.style.display = 'flex';\n tabHeader.style.gap = '20px';\n tabHeader.style.borderBottom = '2px solid rgba(0,0,0,0.06)';\n tabHeader.style.paddingBottom = '8px';\n\n for (let i = 0; i < 4; i++) {\n tabHeader.appendChild(createSkeletonElement({ ...baseProps, type: 'line', width: '70px', height: '16px' }));\n }\n\n const body = createSkeletonParagraph(3, baseProps);\n container.append(tabHeader, body);\n break;\n }\n\n case 'calendar': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n container.style.padding = '16px';\n container.style.borderRadius = shapeRadius || '12px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const calHeader = document.createElement('div');\n calHeader.style.display = 'flex';\n calHeader.style.justifyContent = 'space-between';\n calHeader.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '120px', height: '20px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '60px', height: '20px' }),\n );\n\n const grid = document.createElement('div');\n grid.style.display = 'grid';\n grid.style.gridTemplateColumns = 'repeat(7, 1fr)';\n grid.style.gap = '8px';\n\n for (let i = 0; i < 28; i++) {\n grid.appendChild(createSkeletonElement({ ...baseProps, type: 'rect', height: '24px', radius: '4px' }));\n }\n\n container.append(calHeader, grid);\n break;\n }\n\n case 'kanban': {\n container.style.display = 'grid';\n container.style.gridTemplateColumns = 'repeat(3, 1fr)';\n container.style.gap = '14px';\n\n for (let col = 0; col < 3; col++) {\n const column = document.createElement('div');\n column.style.display = 'flex';\n column.style.flexDirection = 'column';\n column.style.gap = '10px';\n column.style.padding = '12px';\n column.style.borderRadius = shapeRadius || '10px';\n column.style.background = 'rgba(0,0,0,0.03)';\n\n const colHead = createSkeletonElement({ ...baseProps, type: 'heading', width: '80px', height: '16px' });\n column.appendChild(colHead);\n\n for (let card = 0; card < 2; card++) {\n const c = document.createElement('div');\n c.style.display = 'flex';\n c.style.flexDirection = 'column';\n c.style.gap = '8px';\n c.style.padding = '10px';\n c.style.borderRadius = shapeRadius || '6px';\n c.style.background = '#fff';\n c.style.border = '1px solid rgba(0,0,0,0.06)';\n c.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '85%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'badge', width: '50px', height: '16px' }),\n );\n column.appendChild(c);\n }\n\n container.appendChild(column);\n }\n break;\n }\n\n case 'timeline': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '18px';\n container.style.padding = '10px 0';\n\n for (let i = 0; i < 3; i++) {\n const item = document.createElement('div');\n item.style.display = 'flex';\n item.style.gap = '14px';\n\n const dotCol = document.createElement('div');\n dotCol.style.display = 'flex';\n dotCol.style.flexDirection = 'column';\n dotCol.style.alignItems = 'center';\n dotCol.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '16px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'rect', width: '2px', height: '40px' }),\n );\n\n const content = document.createElement('div');\n content.style.display = 'flex';\n content.style.flexDirection = 'column';\n content.style.gap = '4px';\n content.style.flex = '1';\n content.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '90px', height: '12px' }),\n createSkeletonElement({ ...baseProps, type: 'heading', width: '60%', height: '18px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '85%', height: '14px' }),\n );\n\n item.append(dotCol, content);\n container.appendChild(item);\n }\n break;\n }\n\n case 'map-card': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.borderRadius = shapeRadius || '14px';\n container.style.overflow = 'hidden';\n container.style.border = '1px solid rgba(0,0,0,0.08)';\n\n const mapArea = createSkeletonElement({ ...baseProps, type: 'rect', height: '160px', radius: '0' });\n const cardBody = document.createElement('div');\n cardBody.style.display = 'flex';\n cardBody.style.justifyContent = 'space-between';\n cardBody.style.alignItems = 'center';\n cardBody.style.padding = '14px';\n\n const left = document.createElement('div');\n left.style.display = 'flex';\n left.style.flexDirection = 'column';\n left.style.gap = '6px';\n left.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '140px', height: '18px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '200px', height: '12px' }),\n );\n\n const btn = createSkeletonElement({ ...baseProps, type: 'button', width: '90px', height: '34px' });\n cardBody.append(left, btn);\n\n container.append(mapArea, cardBody);\n break;\n }\n\n case 'pricing-card': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n container.style.padding = '24px';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.border = '1px solid rgba(0,0,0,0.08)';\n\n const badge = createSkeletonElement({ ...baseProps, type: 'badge', width: '70px', height: '22px' });\n const price = createSkeletonElement({ ...baseProps, type: 'heading', width: '130px', height: '38px' });\n const desc = createSkeletonElement({ ...baseProps, type: 'line', width: '80%', height: '14px' });\n\n const featureList = document.createElement('div');\n featureList.style.display = 'flex';\n featureList.style.flexDirection = 'column';\n featureList.style.gap = '10px';\n for (let i = 0; i < 4; i++) {\n const f = document.createElement('div');\n f.style.display = 'flex';\n f.style.alignItems = 'center';\n f.style.gap = '8px';\n f.append(\n createSkeletonElement({ ...baseProps, type: 'icon', width: '16px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '70%', height: '14px' }),\n );\n featureList.appendChild(f);\n }\n\n const cta = createSkeletonElement({ ...baseProps, type: 'button', width: '100%', height: '42px' });\n container.append(badge, price, desc, featureList, cta);\n break;\n }\n\n case 'testimonial': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '16px';\n container.style.padding = '20px';\n container.style.borderRadius = shapeRadius || '14px';\n container.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const quote = createSkeletonParagraph(3, baseProps);\n const author = document.createElement('div');\n author.style.display = 'flex';\n author.style.alignItems = 'center';\n author.style.gap = '12px';\n author.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '42px', height: '42px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '120px', height: '16px' }),\n );\n\n container.append(quote, author);\n break;\n }\n\n case 'faq-accordion': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '12px';\n\n for (let i = 0; i < 3; i++) {\n const item = document.createElement('div');\n item.style.display = 'flex';\n item.style.flexDirection = 'column';\n item.style.gap = '8px';\n item.style.padding = '14px 16px';\n item.style.borderRadius = shapeRadius || '8px';\n item.style.border = '1px solid rgba(0,0,0,0.06)';\n\n const q = document.createElement('div');\n q.style.display = 'flex';\n q.style.justifyContent = 'space-between';\n q.style.alignItems = 'center';\n q.append(\n createSkeletonElement({ ...baseProps, type: 'line', width: '75%', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'icon', width: '16px', height: '16px' }),\n );\n item.appendChild(q);\n\n if (i === 0) {\n const a = createSkeletonParagraph(2, baseProps);\n item.appendChild(a);\n }\n container.appendChild(item);\n }\n break;\n }\n\n case 'file-explorer': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '10px';\n container.style.padding = '12px';\n\n for (let i = 0; i < 5; i++) {\n const fileRow = document.createElement('div');\n fileRow.style.display = 'flex';\n fileRow.style.alignItems = 'center';\n fileRow.style.gap = '10px';\n fileRow.style.marginLeft = `${(i % 3) * 16}px`;\n fileRow.append(\n createSkeletonElement({ ...baseProps, type: 'icon', width: '16px', height: '16px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: `${100 + (i * 20)}px`, height: '14px' }),\n );\n container.appendChild(fileRow);\n }\n break;\n }\n\n case 'code-block': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.gap = '8px';\n container.style.padding = '16px';\n container.style.borderRadius = shapeRadius || '8px';\n container.style.background = 'rgba(0,0,0,0.05)';\n\n const widths = ['40%', '70%', '55%', '85%', '30%', '60%'];\n for (const w of widths) {\n container.appendChild(createSkeletonElement({ ...baseProps, type: 'line', width: w, height: '12px' }));\n }\n break;\n }\n\n case 'e-commerce-checkout': {\n container.style.display = 'grid';\n container.style.gridTemplateColumns = 'repeat(auto-fit, minmax(280px, 1fr))';\n container.style.gap = '20px';\n\n // Left column: Inputs (Shipping & Payment)\n const leftCol = document.createElement('div');\n leftCol.style.display = 'flex';\n leftCol.style.flexDirection = 'column';\n leftCol.style.gap = '12px';\n leftCol.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '60%', height: '22px' }),\n createSkeletonElement({ ...baseProps, type: 'input', width: '100%', height: '40px', radius: shapeRadius || '6px' }),\n createSkeletonElement({ ...baseProps, type: 'input', width: '100%', height: '40px', radius: shapeRadius || '6px' }),\n createSkeletonElement({ ...baseProps, type: 'input', width: '100%', height: '40px', radius: shapeRadius || '6px' })\n );\n\n // Right column: Order Summary Card\n const rightCol = document.createElement('div');\n rightCol.style.display = 'flex';\n rightCol.style.flexDirection = 'column';\n rightCol.style.gap = '12px';\n rightCol.style.padding = '16px';\n rightCol.style.borderRadius = shapeRadius || '8px';\n rightCol.style.background = 'rgba(255,255,255,0.03)';\n rightCol.append(\n createSkeletonElement({ ...baseProps, type: 'heading', width: '50%', height: '20px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '100%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '80%', height: '14px' }),\n createSkeletonElement({ ...baseProps, type: 'button', width: '100%', height: '44px', radius: shapeRadius || '8px' })\n );\n\n container.append(leftCol, rightCol);\n break;\n }\n\n case 'social-story': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.width = '240px';\n container.style.height = '380px';\n container.style.borderRadius = shapeRadius || '16px';\n container.style.padding = '14px';\n container.style.position = 'relative';\n container.style.overflow = 'hidden';\n container.style.background = 'rgba(255,255,255,0.05)';\n\n // Top progress indicators\n const progRow = document.createElement('div');\n progRow.style.display = 'flex';\n progRow.style.gap = '4px';\n progRow.style.width = '100%';\n for (let i = 0; i < 4; i++) {\n const seg = createSkeletonElement({ ...baseProps, type: 'rect', width: '100%', height: '3px', radius: '2px' });\n progRow.appendChild(seg);\n }\n\n // User header\n const headerRow = document.createElement('div');\n headerRow.style.display = 'flex';\n headerRow.style.alignItems = 'center';\n headerRow.style.gap = '8px';\n headerRow.style.marginTop = '8px';\n headerRow.append(\n createSkeletonElement({ ...baseProps, type: 'circle', width: '32px', height: '32px' }),\n createSkeletonElement({ ...baseProps, type: 'line', width: '80px', height: '12px' })\n );\n\n container.append(progRow, headerRow);\n break;\n }\n\n case 'hero-banner': {\n container.style.display = 'flex';\n container.style.flexDirection = 'column';\n container.style.alignItems = 'center';\n container.style.textAlign = 'center';\n container.style.gap = '14px';\n container.style.padding = '40px 20px';\n\n const badge = createSkeletonElement({ ...baseProps, type: 'badge', width: '110px', height: '24px', radius: '9999px' });\n const h1 = createSkeletonElement({ ...baseProps, type: 'heading', width: '70%', height: '36px' });\n const sub1 = createSkeletonElement({ ...baseProps, type: 'line', width: '50%', height: '16px' });\n const sub2 = createSkeletonElement({ ...baseProps, type: 'line', width: '40%', height: '16px' });\n\n const btnRow = document.createElement('div');\n btnRow.style.display = 'flex';\n btnRow.style.gap = '12px';\n btnRow.style.marginTop = '10px';\n btnRow.append(\n createSkeletonElement({ ...baseProps, type: 'button', width: '140px', height: '44px', radius: shapeRadius || '8px' }),\n createSkeletonElement({ ...baseProps, type: 'button', width: '120px', height: '44px', radius: shapeRadius || '8px' })\n );\n\n container.append(badge, h1, sub1, sub2, btnRow);\n break;\n }\n }\n\n return container;\n}\n","/**\n * Veilkit - Accessibility & Localization Engine\n * Screen-reader announcements, polite live regions, and WCAG AA compliance\n */\n\nconst DEFAULT_LABELS: Record<string, Record<string, string>> = {\n en: {\n loading: 'Loading content, please wait…',\n loaded: 'Content loaded.',\n progress: 'Loading progress',\n busy: 'Busy',\n },\n es: {\n loading: 'Cargando contenido, por favor espere…',\n loaded: 'Contenido cargado.',\n progress: 'Progreso de carga',\n busy: 'Ocupado',\n },\n fr: {\n loading: 'Chargement du contenu, veuillez patienter…',\n loaded: 'Contenu chargé.',\n progress: 'Progression du chargement',\n busy: 'Occupé',\n },\n de: {\n loading: 'Inhalt wird geladen, bitte warten…',\n loaded: 'Inhalt geladen.',\n progress: 'Ladefortschritt',\n busy: 'Beschäftigt',\n },\n ja: {\n loading: 'コンテンツを読み込んでいます…',\n loaded: '読み込みが完了しました。',\n progress: '読み込み状況',\n busy: '処理中',\n },\n zh: {\n loading: '正在加载内容,请稍候…',\n loaded: '内容加载完成。',\n progress: '加载进度',\n busy: '忙碌中',\n },\n ar: {\n loading: 'جاري تحميل المحتوى، يرجى الانتظار…',\n loaded: 'تم تحميل المحتوى.',\n progress: 'تقدم التحميل',\n busy: 'مشغول',\n },\n};\n\nlet currentLocale = 'en';\nconst customLabels: Record<string, string> = {};\n\n/**\n * Configure active localization language\n */\nexport function setLocale(locale: string): void {\n currentLocale = locale;\n}\n\n/**\n * Get current active locale\n */\nexport function getLocale(): string {\n return currentLocale;\n}\n\n/**\n * Register or override accessibility label strings\n */\nexport function setLabels(labels: Record<string, string>): void {\n Object.assign(customLabels, labels);\n}\n\n/**\n * Resolves a localized label for screen readers\n */\nexport function getLabel(key: 'loading' | 'loaded' | 'progress' | 'busy' | string): string {\n if (customLabels[key]) return customLabels[key];\n const dict = DEFAULT_LABELS[currentLocale] || DEFAULT_LABELS.en;\n return dict[key] || DEFAULT_LABELS.en[key] || 'Loading…';\n}\n\n/**\n * Marks a container element with accessible loading attributes\n */\nexport function applyA11yLoading(container: HTMLElement, label?: string): HTMLElement {\n container.setAttribute('aria-busy', 'true');\n\n let srNode = container.querySelector('.veil-sr-only') as HTMLElement;\n if (!srNode) {\n srNode = document.createElement('span');\n srNode.className = 'veil-sr-only';\n srNode.setAttribute('role', 'status');\n srNode.setAttribute('aria-live', 'polite');\n container.appendChild(srNode);\n }\n srNode.textContent = label || getLabel('loading');\n return srNode;\n}\n\n/**\n * Clears accessible loading state from container\n */\nexport function removeA11yLoading(container: HTMLElement): void {\n container.removeAttribute('aria-busy');\n const srNode = container.querySelector('.veil-sr-only');\n if (srNode) {\n srNode.remove();\n }\n}\n","/**\n * Veilkit - Loading Overlay System\n * Container-level and fullscreen blurred frosted overlays with spinner and message.\n */\n\nimport { OverlayProps } from './types';\nimport { injectStyles } from './css';\nimport { createSpinner } from './spinners';\nimport { applyA11yLoading, removeA11yLoading } from './a11y';\n\nconst activeOverlays = new Map<HTMLElement, HTMLElement>();\nlet scrollLockOriginalOverflow: string = '';\n\nexport class OverlayController {\n /**\n * Shows a loading overlay over a container element or fullscreen\n */\n public show(target?: HTMLElement | string, props: OverlayProps = {}): HTMLElement {\n injectStyles();\n\n let container: HTMLElement;\n const isFullscreen = !target;\n\n if (isFullscreen) {\n container = document.body;\n } else if (typeof target === 'string') {\n container = document.querySelector(target) as HTMLElement;\n if (!container) container = document.body;\n } else {\n container = target;\n }\n\n if (activeOverlays.has(container)) {\n return activeOverlays.get(container)!;\n }\n\n const overlay = document.createElement('div');\n overlay.className = `veil-overlay ${isFullscreen ? 'veil-overlay-fullscreen' : ''} ${props.className || ''}`.trim();\n overlay.setAttribute('role', 'status');\n\n if (props.color) {\n overlay.style.setProperty('--veil-overlay-bg', props.color);\n }\n if (props.blur !== undefined) {\n const blurVal = typeof props.blur === 'boolean' ? (props.blur ? '8px' : '0px') : props.blur;\n overlay.style.setProperty('--veil-overlay-blur', blurVal);\n }\n if (props.zIndex !== undefined) {\n overlay.style.zIndex = String(props.zIndex);\n }\n\n // Spinner\n if (props.spinner !== false) {\n const spinnerType = typeof props.spinner === 'string' ? props.spinner : 'ring';\n const spinnerEl = createSpinner({ type: spinnerType, size: 36 });\n overlay.appendChild(spinnerEl);\n }\n\n // Message\n if (props.message) {\n const msg = document.createElement('span');\n msg.className = 'veil-overlay-message';\n msg.style.fontSize = '14px';\n msg.style.fontWeight = '500';\n msg.style.color = 'var(--veil-contrast, #1f2937)';\n msg.textContent = props.message;\n overlay.appendChild(msg);\n }\n\n if (!isFullscreen) {\n const compPos = window.getComputedStyle(container).position;\n if (compPos === 'static') {\n container.style.position = 'relative';\n }\n }\n\n applyA11yLoading(container, props.message);\n\n if (props.lockScroll && isFullscreen && typeof document !== 'undefined') {\n scrollLockOriginalOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n\n container.appendChild(overlay);\n activeOverlays.set(container, overlay);\n\n return overlay;\n }\n\n /**\n * Hides and removes the overlay\n */\n public hide(target?: HTMLElement | string): void {\n let container: HTMLElement;\n const isFullscreen = !target;\n\n if (isFullscreen) {\n container = document.body;\n } else if (typeof target === 'string') {\n container = document.querySelector(target) as HTMLElement;\n if (!container) container = document.body;\n } else {\n container = target;\n }\n\n const overlay = activeOverlays.get(container);\n if (!overlay) return;\n\n overlay.style.opacity = '0';\n setTimeout(() => {\n overlay.remove();\n activeOverlays.delete(container);\n removeA11yLoading(container);\n\n if (isFullscreen && scrollLockOriginalOverflow !== undefined) {\n document.body.style.overflow = scrollLockOriginalOverflow;\n }\n }, 200);\n }\n}\n\nexport const overlayController = new OverlayController();\n","/**\n * Veilkit - Loading Button Controller\n * 16 Loading Styles, State Machine (idle -> loading -> success | error -> idle),\n * Result Animations (checkmark, cross, shake, success-burst), and Press Feedback.\n */\n\nimport {\n ButtonLoadingStyle,\n ButtonPressFeedback,\n ButtonStatus,\n LoadingButtonProps,\n} from './types';\nimport { createSpinner } from './spinners';\nimport { injectStyles } from './css';\n\nexport const BUTTON_LOADING_STYLES: ButtonLoadingStyle[] = [\n 'spinner-left',\n 'spinner-right',\n 'spinner-replace',\n 'dots-after-text',\n 'progress-fill',\n 'shimmer-surface',\n 'pulse-glow',\n 'stripes-progress',\n 'morph-circle',\n 'slide-text',\n 'border-trace',\n 'liquid-fill',\n 'bounce-dots',\n 'glass-shine',\n 'neon-pulse',\n 'skeleton-button',\n];\n\nexport function wrapLoadingButton(\n buttonEl: HTMLButtonElement,\n props: LoadingButtonProps = {},\n): {\n setStatus: (status: ButtonStatus, customText?: string) => void;\n setLoading: (loading: boolean, loadingText?: string) => void;\n getStatus: () => ButtonStatus;\n destroy: () => void;\n} {\n injectStyles();\n injectButtonKeyframes();\n\n let currentStatus: ButtonStatus = props.status || (props.loading ? 'loading' : 'idle');\n let originalWidth: string = '';\n let originalHeight: string = '';\n let originalHtml: string = buttonEl.innerHTML;\n let resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n // Press Feedback Listeners\n const pressFeedback: ButtonPressFeedback = props.pressFeedback || 'press-scale';\n setupPressFeedback(buttonEl, pressFeedback);\n\n function clearResetTimer(): void {\n if (resetTimer) {\n clearTimeout(resetTimer);\n resetTimer = null;\n }\n }\n\n function setStatus(status: ButtonStatus, customText?: string): void {\n clearResetTimer();\n const prevStatus = currentStatus;\n currentStatus = status;\n\n if (props.onStatusChange && prevStatus !== status) {\n props.onStatusChange(status);\n }\n\n if (status === 'idle') {\n buttonEl.classList.remove(\n 'veil-btn-loading',\n 'veil-btn-success',\n 'veil-btn-error',\n 'veil-btn-shake',\n 'veil-btn-morph',\n );\n buttonEl.removeAttribute('aria-disabled');\n buttonEl.removeAttribute('aria-busy');\n buttonEl.style.width = originalWidth;\n buttonEl.style.height = originalHeight;\n buttonEl.innerHTML = originalHtml;\n return;\n }\n\n // Lock dimensions on first transition away from idle\n if (prevStatus === 'idle') {\n const rect = buttonEl.getBoundingClientRect();\n originalWidth = buttonEl.style.width;\n originalHeight = buttonEl.style.height;\n originalHtml = buttonEl.innerHTML;\n\n if (rect.width > 0) {\n buttonEl.style.width = `${rect.width}px`;\n }\n if (rect.height > 0) {\n buttonEl.style.height = `${rect.height}px`;\n }\n }\n\n if (status === 'loading') {\n buttonEl.classList.add('veil-btn-loading');\n buttonEl.classList.remove('veil-btn-success', 'veil-btn-error');\n buttonEl.setAttribute('aria-disabled', 'true');\n buttonEl.setAttribute('aria-busy', 'true');\n\n const styleType: ButtonLoadingStyle =\n props.styleType ||\n (props.spinnerPlacement === 'replace'\n ? 'spinner-replace'\n : props.spinnerPlacement === 'end'\n ? 'spinner-right'\n : 'spinner-left');\n\n renderLoadingStyle(buttonEl, styleType, props, customText || props.loadingText);\n } else if (status === 'success') {\n buttonEl.classList.remove('veil-btn-loading', 'veil-btn-error');\n buttonEl.classList.add('veil-btn-success');\n buttonEl.setAttribute('aria-busy', 'false');\n\n renderResult(buttonEl, 'success', customText || props.successText || 'Success', props.resultAnimation);\n\n const resetDelay = props.resetAfter !== undefined ? props.resetAfter : 2000;\n if (resetDelay > 0) {\n resetTimer = setTimeout(() => setStatus('idle'), resetDelay);\n }\n } else if (status === 'error') {\n buttonEl.classList.remove('veil-btn-loading', 'veil-btn-success');\n buttonEl.classList.add('veil-btn-error');\n buttonEl.setAttribute('aria-busy', 'false');\n\n renderResult(buttonEl, 'error', customText || props.errorText || 'Failed', props.resultAnimation);\n\n const resetDelay = props.resetAfter !== undefined ? props.resetAfter : 2000;\n if (resetDelay > 0) {\n resetTimer = setTimeout(() => setStatus('idle'), resetDelay);\n }\n }\n }\n\n // Promise-driven Click Handler\n const clickHandler = async (e: MouseEvent) => {\n if (currentStatus !== 'idle') {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n if (props.onClick) {\n try {\n const result = props.onClick(e);\n if (result && typeof result.then === 'function') {\n setStatus('loading');\n await result;\n setStatus('success');\n }\n } catch {\n setStatus('error');\n }\n }\n };\n\n buttonEl.addEventListener('click', clickHandler);\n\n if (props.status) {\n setStatus(props.status);\n } else if (props.loading) {\n setStatus('loading', props.loadingText);\n }\n\n return {\n setStatus,\n setLoading: (loading: boolean, text?: string) => setStatus(loading ? 'loading' : 'idle', text),\n getStatus: () => currentStatus,\n destroy: () => {\n clearResetTimer();\n buttonEl.removeEventListener('click', clickHandler);\n setStatus('idle');\n },\n };\n}\n\nfunction setupPressFeedback(btn: HTMLElement, feedback: ButtonPressFeedback): void {\n if (feedback === 'none') return;\n\n if (feedback === 'press-scale') {\n btn.style.transition = 'transform 100ms ease, box-shadow 150ms ease';\n btn.addEventListener('mousedown', () => {\n btn.style.transform = 'scale(0.97)';\n });\n const reset = () => {\n btn.style.transform = 'scale(1)';\n };\n btn.addEventListener('mouseup', reset);\n btn.addEventListener('mouseleave', reset);\n } else if (feedback === 'ripple') {\n btn.style.position = 'relative';\n btn.style.overflow = 'hidden';\n\n btn.addEventListener('click', (e) => {\n const rect = btn.getBoundingClientRect();\n const circle = document.createElement('span');\n const diameter = Math.max(rect.width, rect.height);\n const radius = diameter / 2;\n\n circle.style.width = circle.style.height = `${diameter}px`;\n circle.style.left = `${e.clientX - rect.left - radius}px`;\n circle.style.top = `${e.clientY - rect.top - radius}px`;\n circle.className = 'veil-btn-ripple';\n\n const existing = btn.querySelector('.veil-btn-ripple');\n if (existing) existing.remove();\n btn.appendChild(circle);\n });\n } else if (feedback === 'glow-follow') {\n btn.addEventListener('mousemove', (e) => {\n const rect = btn.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n btn.style.setProperty('--veil-mouse-x', `${x}px`);\n btn.style.setProperty('--veil-mouse-y', `${y}px`);\n });\n }\n}\n\nfunction renderLoadingStyle(\n btn: HTMLElement,\n style: ButtonLoadingStyle,\n props: LoadingButtonProps,\n text?: string,\n): void {\n const spinnerType = props.spinner || 'ring';\n const labelText = text || btn.textContent?.trim() || '';\n\n btn.innerHTML = '';\n\n switch (style) {\n case 'spinner-left': {\n const spinner = createSpinner({ type: spinnerType, size: 16, color: 'currentColor' });\n spinner.classList.add('veil-btn-spinner-wrap');\n const span = document.createElement('span');\n span.textContent = labelText;\n btn.append(spinner, span);\n break;\n }\n\n case 'spinner-right': {\n const span = document.createElement('span');\n span.textContent = labelText;\n const spinner = createSpinner({ type: spinnerType, size: 16, color: 'currentColor' });\n spinner.classList.add('veil-btn-spinner-wrap');\n spinner.style.marginLeft = '8px';\n spinner.style.marginRight = '0';\n btn.append(span, spinner);\n break;\n }\n\n case 'spinner-replace': {\n const spinner = createSpinner({ type: spinnerType, size: 20, color: 'currentColor' });\n btn.appendChild(spinner);\n break;\n }\n\n case 'dots-after-text': {\n const span = document.createElement('span');\n span.textContent = labelText;\n const dots = document.createElement('span');\n dots.className = 'veil-btn-typing-dots';\n dots.textContent = '...';\n btn.append(span, dots);\n break;\n }\n\n case 'progress-fill': {\n const progress = document.createElement('div');\n progress.className = 'veil-btn-progress-bar';\n const pct = props.progress !== undefined ? props.progress : 60;\n progress.style.width = `${pct}%`;\n const span = document.createElement('span');\n span.style.position = 'relative';\n span.style.zIndex = '2';\n span.textContent = labelText;\n btn.append(progress, span);\n break;\n }\n\n case 'shimmer-surface': {\n const span = document.createElement('span');\n span.textContent = labelText;\n span.style.position = 'relative';\n span.style.zIndex = '2';\n const shimmer = document.createElement('div');\n shimmer.className = 'veil-btn-shimmer';\n btn.append(span, shimmer);\n break;\n }\n\n case 'pulse-glow': {\n btn.classList.add('veil-btn-pulse-glow');\n const span = document.createElement('span');\n span.textContent = labelText;\n btn.appendChild(span);\n break;\n }\n\n case 'stripes-progress': {\n const stripes = document.createElement('div');\n stripes.className = 'veil-btn-stripes';\n const span = document.createElement('span');\n span.style.position = 'relative';\n span.style.zIndex = '2';\n span.textContent = labelText;\n btn.append(stripes, span);\n break;\n }\n\n case 'morph-circle': {\n btn.classList.add('veil-btn-morph');\n const spinner = createSpinner({ type: spinnerType, size: 20, color: 'currentColor' });\n btn.appendChild(spinner);\n break;\n }\n\n case 'slide-text': {\n const wrap = document.createElement('span');\n wrap.className = 'veil-btn-slide-wrap';\n const oldText = document.createElement('span');\n oldText.className = 'veil-btn-slide-out';\n oldText.textContent = labelText;\n const newText = document.createElement('span');\n newText.className = 'veil-btn-slide-in';\n newText.textContent = text || 'Loading…';\n wrap.append(oldText, newText);\n btn.appendChild(wrap);\n break;\n }\n\n case 'border-trace': {\n const span = document.createElement('span');\n span.textContent = labelText;\n span.style.position = 'relative';\n span.style.zIndex = '2';\n const trace = document.createElement('div');\n trace.className = 'veil-btn-border-trace';\n btn.append(span, trace);\n break;\n }\n\n case 'liquid-fill': {\n const liquid = document.createElement('div');\n liquid.className = 'veil-btn-liquid';\n const span = document.createElement('span');\n span.style.position = 'relative';\n span.style.zIndex = '2';\n span.textContent = labelText;\n btn.append(liquid, span);\n break;\n }\n\n case 'bounce-dots': {\n const spinner = createSpinner({ type: 'dots', size: 22, color: 'currentColor' });\n const span = document.createElement('span');\n span.textContent = labelText ? ` ${labelText}` : '';\n btn.append(spinner, span);\n break;\n }\n\n case 'glass-shine': {\n btn.classList.add('veil-btn-glass-shine');\n const span = document.createElement('span');\n span.textContent = labelText;\n btn.appendChild(span);\n break;\n }\n\n case 'neon-pulse': {\n btn.classList.add('veil-btn-neon-pulse');\n const span = document.createElement('span');\n span.textContent = labelText;\n btn.appendChild(span);\n break;\n }\n\n case 'skeleton-button': {\n const skel = document.createElement('div');\n skel.className = 'veil-skeleton';\n skel.setAttribute('data-veil-shape', 'button');\n skel.setAttribute('data-veil-anim', 'shimmer');\n skel.style.width = '100%';\n skel.style.height = '100%';\n btn.appendChild(skel);\n break;\n }\n }\n}\n\nfunction renderResult(\n btn: HTMLElement,\n type: 'success' | 'error',\n text: string,\n animation: string = 'checkmark',\n): void {\n btn.innerHTML = '';\n btn.style.display = 'inline-flex';\n btn.style.alignItems = 'center';\n btn.style.justifyContent = 'center';\n btn.style.gap = '8px';\n\n if (type === 'error' && (animation === 'shake' || animation === 'cross' || animation === 'none')) {\n btn.classList.add('veil-btn-shake');\n }\n\n if (type === 'success' && animation === 'success-burst') {\n const burst = document.createElement('div');\n burst.className = 'veil-btn-burst';\n btn.appendChild(burst);\n }\n\n // Draw Animated SVG Icon\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 24 24');\n svg.style.width = '18px';\n svg.style.height = '18px';\n svg.style.stroke = 'currentColor';\n svg.style.strokeWidth = '2.5';\n svg.style.fill = 'none';\n svg.style.strokeLinecap = 'round';\n svg.style.strokeLinejoin = 'round';\n\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n if (type === 'success') {\n path.setAttribute('d', 'M5 13l4 4L19 7');\n } else {\n path.setAttribute('d', 'M6 18L18 6M6 6l12 12');\n }\n path.style.strokeDasharray = '30';\n path.style.strokeDashoffset = '30';\n path.style.animation = 'veil-draw 300ms ease forwards';\n\n svg.appendChild(path);\n const label = document.createElement('span');\n label.textContent = text;\n\n btn.append(svg, label);\n}\n\nlet buttonKeyframesInjected = false;\nfunction injectButtonKeyframes(): void {\n if (buttonKeyframesInjected || typeof document === 'undefined') return;\n buttonKeyframesInjected = true;\n\n const style = document.createElement('style');\n style.id = 'veilkit-button-styles';\n style.textContent = `\n .veil-btn-loading { position: relative; cursor: wait !important; pointer-events: none; }\n .veil-btn-success { background-color: #10b981 !important; color: #fff !important; }\n .veil-btn-error { background-color: #ef4444 !important; color: #fff !important; }\n .veil-btn-shake { animation: veil-shake 350ms cubic-bezier(0.36, 0.07, 0.19, 0.97) both; }\n .veil-btn-ripple {\n position: absolute; border-radius: 50%;\n background: rgba(255, 255, 255, 0.4);\n transform: scale(0);\n animation: veil-btn-ripple-anim 600ms linear;\n pointer-events: none;\n }\n .veil-btn-progress-bar {\n position: absolute; left: 0; top: 0; bottom: 0;\n background: rgba(255, 255, 255, 0.25);\n transition: width 200ms ease;\n }\n .veil-btn-shimmer {\n position: absolute; inset: 0;\n background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);\n animation: veil-btn-shimmer 1.5s infinite;\n }\n .veil-btn-pulse-glow { animation: veil-btn-glow 1.4s ease-in-out infinite alternate; }\n .veil-btn-stripes {\n position: absolute; inset: 0;\n background: repeating-linear-gradient(45deg, rgba(255,255,255,0.15), rgba(255,255,255,0.15) 10px, transparent 10px, transparent 20px);\n background-size: 28px 28px;\n animation: veil-btn-stripes 1s linear infinite;\n }\n .veil-btn-morph { border-radius: 50% !important; padding: 0 !important; width: 40px !important; height: 40px !important; transition: all 250ms ease; }\n .veil-btn-typing-dots { animation: veil-typing-text 1.2s infinite; display: inline-block; width: 1.2em; text-align: left; }\n .veil-btn-slide-wrap { display: flex; flex-direction: column; overflow: hidden; height: 1.2em; position: relative; }\n .veil-btn-slide-out { animation: veil-slide-up-out 250ms forwards; }\n .veil-btn-slide-in { animation: veil-slide-up-in 250ms forwards; }\n .veil-btn-border-trace {\n position: absolute; inset: -2px; border-radius: inherit;\n background: conic-gradient(from 0deg, transparent 60%, currentColor 100%);\n animation: veil-spin 1.2s linear infinite;\n -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #fff calc(100% - 1.5px));\n mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #fff calc(100% - 1.5px));\n }\n .veil-btn-liquid {\n position: absolute; inset: 0; background: currentColor; opacity: 0.15;\n animation: veil-liquid-wave 2s infinite ease-in-out alternate;\n }\n .veil-btn-glass-shine {\n box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.4), 0 4px 12px rgba(0, 0, 0, 0.15);\n background: linear-gradient(135deg, rgba(255,255,255,0.2), rgba(255,255,255,0.05));\n }\n .veil-btn-neon-pulse {\n box-shadow: 0 0 15px currentColor;\n animation: veil-btn-glow 1.2s infinite alternate;\n }\n .veil-btn-burst {\n position: absolute; inset: -4px; border-radius: inherit;\n box-shadow: 0 0 20px #10b981;\n animation: veil-burst 500ms ease-out forwards;\n pointer-events: none;\n }\n\n @keyframes veil-draw { to { stroke-dashoffset: 0; } }\n @keyframes veil-shake {\n 10%, 90% { transform: translate3d(-1px, 0, 0); }\n 20%, 80% { transform: translate3d(2px, 0, 0); }\n 30%, 50%, 70% { transform: translate3d(-4px, 0, 0); }\n 40%, 60% { transform: translate3d(4px, 0, 0); }\n }\n @keyframes veil-btn-ripple-anim { to { transform: scale(4); opacity: 0; } }\n @keyframes veil-btn-shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }\n @keyframes veil-btn-glow { from { opacity: 0.8; transform: scale(0.99); } to { opacity: 1; transform: scale(1.01); } }\n @keyframes veil-btn-stripes { from { background-position: 0 0; } to { background-position: 28px 0; } }\n @keyframes veil-slide-up-out { from { transform: translateY(0); } to { transform: translateY(-100%); } }\n @keyframes veil-slide-up-in { from { transform: translateY(100%); } to { transform: translateY(0); } }\n @keyframes veil-liquid-wave { from { transform: scaleY(0.7); } to { transform: scaleY(1); } }\n @keyframes veil-burst { 0% { opacity: 1; transform: scale(0.95); } 100% { opacity: 0; transform: scale(1.2); } }\n @keyframes veil-typing-text { 0% { content: ''; } 25% { content: '.'; } 50% { content: '..'; } 75% { content: '...'; } }\n `;\n document.head.appendChild(style);\n}\n","/**\n * Veilkit - Lazy Image & Media Placeholder\n * Renders synchronized skeleton placeholder until image loads,\n * then reveals with smooth blur-up transition and handles error fallback.\n */\n\nimport { LazyImageProps } from './types';\nimport { createSkeletonElement } from './primitives';\nimport { injectStyles } from './css';\n\nexport function createLazyImage(props: LazyImageProps): HTMLElement {\n injectStyles();\n\n const container = document.createElement('div');\n container.className = `veil-lazy-img-wrap ${props.className || ''}`.trim();\n container.style.position = 'relative';\n container.style.display = 'inline-block';\n container.style.overflow = 'hidden';\n\n if (props.width) {\n container.style.width = typeof props.width === 'number' ? `${props.width}px` : props.width;\n }\n if (props.height) {\n container.style.height = typeof props.height === 'number' ? `${props.height}px` : props.height;\n }\n if (props.aspectRatio) {\n container.style.aspectRatio = String(props.aspectRatio);\n }\n if (props.radius) {\n const r = typeof props.radius === 'number' ? `${props.radius}px` : props.radius;\n container.style.borderRadius = r;\n }\n\n // Skeleton placeholder\n const skeleton = createSkeletonElement({\n animation: props.animation || 'shimmer',\n theme: props.theme,\n width: '100%',\n height: '100%',\n radius: props.radius,\n });\n skeleton.style.position = 'absolute';\n skeleton.style.inset = '0';\n container.appendChild(skeleton);\n\n // Real Image\n const img = document.createElement('img');\n img.alt = props.alt || '';\n img.className = 'veil-lazy-img veil-lazy-img-loading';\n img.style.width = '100%';\n img.style.height = '100%';\n img.style.objectFit = 'cover';\n img.style.display = 'block';\n\n img.onload = () => {\n img.classList.remove('veil-lazy-img-loading');\n img.classList.add('veil-lazy-img-loaded');\n skeleton.style.opacity = '0';\n setTimeout(() => {\n skeleton.remove();\n }, 350);\n if (props.onLoad) props.onLoad();\n };\n\n img.onerror = (err) => {\n if (props.fallbackSrc && img.src !== props.fallbackSrc) {\n img.src = props.fallbackSrc;\n } else {\n skeleton.remove();\n container.style.backgroundColor = '#fee2e2';\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.textContent = '⚠️ Image failed to load';\n }\n if (props.onError) props.onError(err);\n };\n\n img.src = props.src;\n container.appendChild(img);\n\n return container;\n}\n","import { defineComponent, h, ref, onMounted, onUnmounted, watch, PropType } from 'vue';\nimport {\n VeilThemeName,\n VeilAnimationName,\n VeilPrimitiveType,\n VeilSpinnerType,\n VeilPresetName,\n VeilShapeStyle,\n ButtonStatus,\n ButtonLoadingStyle,\n ButtonPressFeedback,\n ButtonResultAnimation,\n} from '../core/types';\nimport { injectStyles } from '../core/css';\nimport { createSpinner } from '../core/spinners';\nimport { createPreset } from '../core/presets';\nimport { createProgressElement } from '../core/progress';\nimport { overlayController } from '../core/overlay';\nimport { createAutoMeasureOverlay } from '../core/measure';\nimport { wrapLoadingButton } from '../core/button';\nimport { createLazyImage } from '../core/lazy-image';\n\nexport const VSkeleton = defineComponent({\n name: 'VSkeleton',\n props: {\n type: { type: String as PropType<VeilPrimitiveType>, default: 'rect' },\n width: { type: [String, Number] },\n height: { type: [String, Number] },\n radius: { type: [String, Number] },\n count: { type: Number, default: 1 },\n gap: { type: [String, Number], default: '0.5rem' },\n lines: { type: Number },\n lastLineWidth: { type: [String, Number], default: '65%' },\n animation: { type: String as PropType<VeilAnimationName>, default: 'shimmer' },\n theme: { type: String as PropType<VeilThemeName>, default: 'light' },\n shape: { type: String as PropType<VeilShapeStyle> },\n circle: { type: Boolean, default: false },\n label: { type: String, default: 'Loading' },\n },\n setup(props, { slots }) {\n onMounted(() => injectStyles());\n\n return () => {\n const shape = props.circle ? 'circle' : (props.lines ? 'line' : props.type);\n const totalLines = props.lines || (props.count > 1 ? props.count : 1);\n\n if (totalLines > 1) {\n const defaultWidths = ['100%', '94%', '88%', '75%'];\n return h(\n 'div',\n {\n class: 'veil-lines-group',\n role: 'status',\n 'aria-label': props.label,\n style: { display: 'flex', flexDirection: 'column', gap: typeof props.gap === 'number' ? `${props.gap}px` : props.gap },\n },\n [\n h('span', { class: 'veil-sr-only' }, props.label),\n ...Array.from({ length: totalLines }).map((_, i) => {\n const isLast = i === totalLines - 1;\n const w = isLast ? props.lastLineWidth : (defaultWidths[i % defaultWidths.length] || '95%');\n return h('div', {\n key: i,\n class: 'veil-skeleton',\n 'data-veil-shape': 'line',\n 'data-veil-anim': props.animation,\n 'data-veil-theme': props.theme,\n 'aria-hidden': 'true',\n style: {\n width: typeof w === 'number' ? `${w}px` : w,\n '--veil-stagger-idx': i,\n },\n });\n }),\n ],\n );\n }\n\n return h(\n 'div',\n {\n class: 'veil-skeleton',\n 'data-veil-shape': shape,\n 'data-veil-anim': props.animation,\n 'data-veil-theme': props.theme,\n role: 'status',\n 'aria-label': props.label,\n style: {\n width: typeof props.width === 'number' ? `${props.width}px` : props.width,\n height: typeof props.height === 'number' ? `${props.height}px` : props.height,\n borderRadius: props.circle ? '50%' : (typeof props.radius === 'number' ? `${props.radius}px` : props.radius),\n },\n },\n [\n h('span', { class: 'veil-sr-only' }, props.label),\n slots.default ? slots.default() : null,\n ],\n );\n };\n },\n});\n\nexport const VSkeletonPreset = defineComponent({\n name: 'VSkeletonPreset',\n props: {\n name: { type: String as PropType<VeilPresetName>, required: true },\n items: { type: Number },\n columns: { type: Number },\n shape: { type: String as PropType<VeilShapeStyle>, default: 'rounded' },\n animation: { type: String as PropType<VeilAnimationName>, default: 'shimmer' },\n theme: { type: String as PropType<VeilThemeName>, default: 'light' },\n width: { type: [String, Number] },\n },\n setup(props) {\n const root = ref<HTMLElement | null>(null);\n\n onMounted(() => {\n if (!root.value) return;\n const el = createPreset({\n name: props.name,\n items: props.items,\n columns: props.columns,\n shape: props.shape,\n animation: props.animation,\n theme: props.theme,\n width: props.width,\n });\n root.value.replaceWith(el);\n });\n\n return () => h('div', { ref: root, class: 'veil-preset-vue' });\n },\n});\n\nexport const VVeil = defineComponent({\n name: 'VVeil',\n props: {\n loading: { type: Boolean, required: true },\n cacheKey: { type: String },\n persistCache: { type: Boolean, default: false },\n reveal: { type: String, default: 'fade' },\n },\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null);\n let overlayInstance: ReturnType<typeof createAutoMeasureOverlay> | null = null;\n\n watch(\n () => props.loading,\n (loading) => {\n if (!root.value) return;\n if (loading) {\n overlayInstance = createAutoMeasureOverlay(root.value, {\n cacheKey: props.cacheKey,\n persistCache: props.persistCache,\n reveal: props.reveal as any,\n });\n } else if (overlayInstance) {\n overlayInstance.destroy();\n overlayInstance = null;\n }\n },\n { immediate: true },\n );\n\n onUnmounted(() => {\n if (overlayInstance) overlayInstance.destroy();\n });\n\n return () => h('div', { ref: root, class: 'veil-vue-wrapper', style: { position: 'relative' } }, slots.default?.());\n },\n});\n\nexport const VSpinner = defineComponent({\n name: 'VSpinner',\n props: {\n type: { type: String as PropType<VeilSpinnerType>, default: 'ring' },\n size: { type: [String, Number], default: 28 },\n color: { type: String },\n secondaryColor: { type: String },\n speed: { type: [String, Number] },\n glass: { type: Boolean, default: false },\n label: { type: String, default: 'Loading' },\n },\n setup(props) {\n const root = ref<HTMLElement | null>(null);\n\n onMounted(() => {\n if (!root.value) return;\n const el = createSpinner({\n type: props.type,\n size: props.size,\n color: props.color,\n secondaryColor: props.secondaryColor,\n speed: props.speed,\n glass: props.glass,\n label: props.label,\n });\n root.value.appendChild(el);\n });\n\n return () => h('div', { ref: root, class: 'veil-spinner-vue', style: { display: 'inline-flex' } });\n },\n});\n\nexport const VProgressBar = defineComponent({\n name: 'VProgressBar',\n props: {\n value: { type: Number },\n circular: { type: Boolean, default: false },\n size: { type: [String, Number] },\n color: { type: String },\n },\n setup(props) {\n const root = ref<HTMLElement | null>(null);\n\n onMounted(() => {\n if (!root.value) return;\n const el = createProgressElement(props);\n root.value.appendChild(el);\n });\n\n return () => h('div', { ref: root, class: 'veil-progress-vue' });\n },\n});\n\nexport const VOverlay = defineComponent({\n name: 'VOverlay',\n props: {\n visible: { type: Boolean, default: false },\n blur: { type: Boolean, default: true },\n message: { type: String },\n spinner: { type: String as PropType<VeilSpinnerType>, default: 'ring' },\n },\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null);\n\n watch(\n () => props.visible,\n (val) => {\n if (!root.value) return;\n if (val) {\n overlayController.show(root.value, {\n blur: props.blur,\n message: props.message,\n spinner: props.spinner,\n });\n } else {\n overlayController.hide(root.value);\n }\n },\n );\n\n onUnmounted(() => {\n if (root.value) overlayController.hide(root.value);\n });\n\n return () => h('div', { ref: root, class: 'veil-overlay-vue', style: { position: 'relative' } }, slots.default?.());\n },\n});\n\nexport const VLoadingButton = defineComponent({\n name: 'VLoadingButton',\n props: {\n status: { type: String as PropType<ButtonStatus> },\n loading: { type: Boolean, default: false },\n styleType: { type: String as PropType<ButtonLoadingStyle>, default: 'spinner-left' },\n spinner: { type: String as PropType<VeilSpinnerType>, default: 'ring' },\n loadingText: { type: String },\n successText: { type: String },\n errorText: { type: String },\n resetAfter: { type: Number, default: 2000 },\n progress: { type: Number },\n pressFeedback: { type: String as PropType<ButtonPressFeedback>, default: 'press-scale' },\n resultAnimation: { type: String as PropType<ButtonResultAnimation>, default: 'checkmark' },\n },\n setup(props, { slots }) {\n const btnRef = ref<HTMLButtonElement | null>(null);\n let controller: ReturnType<typeof wrapLoadingButton> | null = null;\n\n onMounted(() => {\n if (!btnRef.value) return;\n controller = wrapLoadingButton(btnRef.value, {\n status: props.status,\n loading: props.loading,\n styleType: props.styleType,\n spinner: props.spinner,\n loadingText: props.loadingText,\n successText: props.successText,\n errorText: props.errorText,\n resetAfter: props.resetAfter,\n progress: props.progress,\n pressFeedback: props.pressFeedback,\n resultAnimation: props.resultAnimation,\n });\n });\n\n watch(\n () => [props.status, props.loading],\n () => {\n if (!controller) return;\n if (props.status) {\n controller.setStatus(props.status);\n } else {\n controller.setLoading(props.loading, props.loadingText);\n }\n },\n );\n\n onUnmounted(() => {\n if (controller) controller.destroy();\n });\n\n return () => h('button', { ref: btnRef, class: 'veil-button' }, slots.default?.());\n },\n});\n\nexport const VLazyImage = defineComponent({\n name: 'VLazyImage',\n props: {\n src: { type: String, required: true },\n alt: { type: String, default: '' },\n width: { type: [String, Number] },\n height: { type: [String, Number] },\n radius: { type: [String, Number] },\n },\n setup(props) {\n const root = ref<HTMLElement | null>(null);\n\n onMounted(() => {\n if (!root.value) return;\n const el = createLazyImage(props);\n root.value.appendChild(el);\n });\n\n return () => h('div', { ref: root, class: 'veil-lazy-img-vue' });\n },\n});\n","/**\n * Veilkit - Request Tracker & Fetch Wrapper\n * Automatic loading state tracking with anti-flicker and error resilience\n */\n\nimport { loadingManager } from './manager';\nimport { AntiFlickerController } from './antiflicker';\nimport { progressController } from './progress';\nimport { overlayController } from './overlay';\n\nexport interface TrackOptions {\n id?: string;\n delay?: number;\n minVisible?: number;\n overlay?: boolean;\n target?: HTMLElement | string;\n progress?: boolean;\n onStart?: () => void;\n onFinish?: () => void;\n}\n\n/**\n * Tracks a Promise or async function, updating loading states automatically\n */\nexport async function track<T>(\n task: Promise<T> | (() => Promise<T>),\n options: TrackOptions = {},\n): Promise<T> {\n const reqId = loadingManager.start(options.id);\n\n if (options.progress) {\n progressController.start();\n }\n\n const antiFlicker = new AntiFlickerController({\n delay: options.delay !== undefined ? options.delay : 150,\n minVisible: options.minVisible !== undefined ? options.minVisible : 300,\n onShow: () => {\n if (options.overlay) {\n overlayController.show(options.target);\n }\n if (options.onStart) options.onStart();\n },\n onHide: () => {\n if (options.overlay) {\n overlayController.hide(options.target);\n }\n if (options.onFinish) options.onFinish();\n },\n });\n\n antiFlicker.start();\n\n try {\n const promise = typeof task === 'function' ? task() : task;\n const result = await promise;\n return result;\n } catch (error) {\n if (options.progress) {\n progressController.fail();\n }\n throw error;\n } finally {\n loadingManager.stop(reqId);\n if (options.progress) {\n progressController.done();\n }\n antiFlicker.finish();\n }\n}\n\n/**\n * Opt-in fetch wrapper that tracks HTTP requests automatically\n * (Never patches global fetch by default)\n */\nexport function wrapFetch(\n fetchFn: typeof fetch = typeof window !== 'undefined' ? window.fetch.bind(window) : (fetch as any),\n options: TrackOptions = {},\n): typeof fetch {\n return async function wrappedFetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n return track(() => fetchFn(input, init), options);\n };\n}\n","/**\n * Veilkit - Imperative & Global API\n * Single unified interface for controlling loading states across any environment.\n */\n\nimport {\n VeilGlobalConfig,\n SkeletonProps,\n SkeletonController,\n SpinnerProps,\n AutoMeasureOptions,\n} from './types';\nimport { injectStyles, setNonce } from './css';\nimport { createSkeletonElement, createPrimitive } from './primitives';\nimport { createPreset } from './presets';\nimport { createSpinner } from './spinners';\nimport { overlayController } from './overlay';\nimport { progressController } from './progress';\nimport { createAutoMeasureOverlay } from './measure';\nimport { loadingManager } from './manager';\nimport { track, wrapFetch } from './track';\nimport { setLocale, setLabels } from './a11y';\nimport { createTheme, getThemeTokens } from './themes';\n\nexport class VeilkitController {\n private config: VeilGlobalConfig = {};\n\n /**\n * Configure global defaults for themes, animations, anti-flicker, CSP nonce, and a11y\n */\n public configure(config: VeilGlobalConfig): void {\n Object.assign(this.config, config);\n if (config.nonce) {\n setNonce(config.nonce);\n }\n if (config.locale) {\n setLocale(config.locale);\n }\n if (config.labels) {\n setLabels(config.labels);\n }\n injectStyles(config.nonce);\n }\n\n /**\n * Mounts a skeleton controller onto an element with show/hide/update/destroy methods\n */\n public skeleton(target: HTMLElement | string, options: SkeletonProps & AutoMeasureOptions = {}): SkeletonController {\n injectStyles();\n\n const element = typeof target === 'string'\n ? (document.querySelector(target) as HTMLElement)\n : target;\n\n if (!element) {\n throw new Error(`[Veilkit] Target element not found for skeleton.`);\n }\n\n let measureInstance: { overlay: HTMLElement; refresh: () => void; destroy: () => void } | null = null;\n let isShowing = false;\n\n const show = () => {\n if (isShowing) return;\n isShowing = true;\n element.setAttribute('aria-busy', 'true');\n measureInstance = createAutoMeasureOverlay(element, options, options);\n };\n\n const hide = () => {\n if (!isShowing) return;\n isShowing = false;\n element.removeAttribute('aria-busy');\n if (measureInstance) {\n measureInstance.destroy();\n measureInstance = null;\n }\n };\n\n const update = (props: Partial<SkeletonProps>) => {\n Object.assign(options, props);\n if (measureInstance) {\n measureInstance.refresh();\n }\n };\n\n const destroy = () => {\n hide();\n };\n\n // Auto-show by default\n show();\n\n return {\n element,\n show,\n hide,\n update,\n destroy,\n };\n }\n\n /**\n * Injects a spinner into a target element\n */\n public spinner(target: HTMLElement | string, props: SpinnerProps = {}): HTMLElement {\n const el = typeof target === 'string'\n ? (document.querySelector(target) as HTMLElement)\n : target;\n\n const spinner = createSpinner(props);\n if (el) {\n el.appendChild(spinner);\n }\n return spinner;\n }\n\n // Subsystem controllers\n public overlay = overlayController;\n public progress = progressController;\n public manager = loadingManager;\n public track = track;\n public wrapFetch = wrapFetch;\n public setLocale = setLocale;\n public setLabels = setLabels;\n public createTheme = createTheme;\n public getThemeTokens = getThemeTokens;\n\n // DOM primitives & presets factories\n public createSkeleton = createSkeletonElement;\n public createPrimitive = createPrimitive;\n public createPreset = createPreset;\n}\n\nexport const veil = new VeilkitController();\nexport default veil;\n","import { App } from 'vue';\nimport { VeilGlobalConfig } from '../core/types';\nimport veil from '../core/controller';\nimport { vVeil } from './directive';\nimport {\n VSkeleton,\n VVeil,\n VSpinner,\n VProgressBar,\n VOverlay,\n VLoadingButton,\n VLazyImage,\n} from './components';\n\nexport const veilkitPlugin = {\n install(app: App, options: VeilGlobalConfig = {}) {\n veil.configure(options);\n\n // Register directive\n app.directive('veil', vVeil);\n\n // Register components globally\n app.component('VSkeleton', VSkeleton);\n app.component('VVeil', VVeil);\n app.component('VSpinner', VSpinner);\n app.component('VProgressBar', VProgressBar);\n app.component('VOverlay', VOverlay);\n app.component('VLoadingButton', VLoadingButton);\n app.component('VLazyImage', VLazyImage);\n\n // Provide globally\n app.config.globalProperties.$veil = veil;\n app.provide('veil', veil);\n },\n};\n","/**\n * Veilkit - Nuxt 3 Integration Recipe\n * Provides Nuxt plugin helper with SSR safety and route loading synchronization\n */\n\nimport { progressController } from '../core/progress';\nimport { injectStyles } from '../core/css';\n\nexport function defineNuxtVeilkit(nuxtApp: any) {\n if (typeof window !== 'undefined') {\n injectStyles();\n\n // Hook into Nuxt page navigation lifecycle if available\n if (nuxtApp?.hook) {\n nuxtApp.hook('page:start', () => {\n progressController.start();\n });\n nuxtApp.hook('page:finish', () => {\n progressController.done();\n });\n }\n }\n}\n"]}