UNPKG

@motion-core/motion-gpu

Version:

Framework-agnostic WebGPU runtime for fullscreen WGSL shaders with explicit Svelte, React, and Vue adapter entrypoints.

301 lines (299 loc) 8.12 kB
.motiongpu-error-overlay { --motiongpu-base-hue: var(--base-hue, 265); --motiongpu-color-background: oklch(0.2178 0.0056 var(--motiongpu-base-hue)); --motiongpu-color-background-muted: oklch(0.261 0.007 var(--motiongpu-base-hue)); --motiongpu-color-foreground: oklch(1 0 0); --motiongpu-color-foreground-muted: oklch(0.6699 0.0081 var(--motiongpu-base-hue)); --motiongpu-color-card: var(--motiongpu-color-background); --motiongpu-color-accent: oklch(0.6996 0.181959 44.4414); --motiongpu-color-accent-secondary: oklch(0.5096 0.131959 44.4414); --motiongpu-color-border: oklch(0.928 0.013 var(--motiongpu-base-hue) / 0.05); --motiongpu-color-white-fixed: oklch(1 0 0); --motiongpu-shadow-card: var( --shadow-2xl, 0px 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0px 3px 3px -1.5px rgba(0, 0, 0, 0.06), 0px 6px 6px -3px rgba(0, 0, 0, 0.06), 0px 12px 12px -6px rgba(0, 0, 0, 0.06), 0px 24px 24px -12px rgba(0, 0, 0, 0.05), 0px 48px 48px -24px rgba(0, 0, 0, 0.06) ); --motiongpu-radius-md: var(--radius-md, 0.5rem); --motiongpu-radius-lg: var(--radius-lg, 0.75rem); --motiongpu-radius-xl: var(--radius-xl, 1rem); --motiongpu-font-sans: var(--font-sans, 'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif); --motiongpu-font-mono: var(--font-mono, 'SFMono-Regular', 'Menlo', 'Consolas', monospace); position: fixed; inset: 0; display: grid; place-items: center; padding: clamp(0.75rem, 1.4vw, 1.5rem); background: rgba(0, 0, 0, 0.8); backdrop-filter: blur(10px); z-index: 2147483647; font-family: var(--motiongpu-font-sans); color-scheme: dark; } .motiongpu-error-dialog { width: min(52rem, calc(100vw - 1.5rem)); max-height: min(84vh, 44rem); overflow: auto; margin: 0; padding: 1.1rem; border: 1px solid var(--motiongpu-color-border); border-radius: var(--motiongpu-radius-xl); max-width: calc(100vw - 1.5rem); box-sizing: border-box; font-size: 0.875rem; font-weight: 400; line-height: 1.45; background: var(--motiongpu-color-card); color: var(--motiongpu-color-foreground); box-shadow: var(--motiongpu-shadow-card); } .motiongpu-error-header { display: grid; gap: 0.55rem; padding-bottom: 0.9rem; border-bottom: 1px solid var(--motiongpu-color-border); } .motiongpu-error-header-top { display: flex; align-items: flex-start; gap: 0.75rem; } .motiongpu-error-badges { display: inline-flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; } .motiongpu-error-badge-wrap { display: inline-flex; align-items: center; gap: 0.4rem; width: fit-content; padding: 0.18rem; border-radius: 999px; border: 1px solid var(--motiongpu-color-border); background: var(--motiongpu-color-background-muted); } .motiongpu-error-badge { display: inline-flex; align-items: center; margin: 0; padding: 0.22rem 0.56rem; border-radius: 999px; font-size: 0.66rem; letter-spacing: 0.08em; line-height: 1; font-weight: 500; text-transform: uppercase; color: var(--motiongpu-color-white-fixed); background: linear-gradient( 180deg, var(--motiongpu-color-accent) 0%, var(--motiongpu-color-accent-secondary) 100% ); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.24); } .motiongpu-error-recoverable { margin: 0; font-size: 0.67rem; line-height: 1.2; letter-spacing: 0.06em; text-transform: uppercase; color: var(--motiongpu-color-foreground-muted); } .motiongpu-error-recoverable span { font-family: var(--motiongpu-font-mono); color: var(--motiongpu-color-foreground); } .motiongpu-error-title { margin: 0; font-size: clamp(1.02rem, 1vw + 0.72rem, 1.32rem); font-weight: 500; line-height: 1.18; letter-spacing: -0.02em; text-wrap: balance; color: var(--motiongpu-color-foreground); } .motiongpu-error-body { display: grid; gap: 0.62rem; margin-top: 0.92rem; } .motiongpu-error-message { margin: 0; padding: 0.72rem 0.78rem; border: 1px solid color-mix(in oklch, var(--motiongpu-color-accent) 28%, transparent); border-radius: var(--motiongpu-radius-lg); background: color-mix(in oklch, var(--motiongpu-color-accent) 10%, transparent); font-size: 0.82rem; line-height: 1.4; font-weight: 400; color: var(--motiongpu-color-foreground); } .motiongpu-error-hint { margin: 0; font-size: 0.82rem; line-height: 1.45; font-weight: 400; color: var(--motiongpu-color-foreground-muted); } .motiongpu-error-sections { display: grid; gap: 0.62rem; margin-top: 0.95rem; } .motiongpu-error-source { display: grid; gap: 0.48rem; margin-top: 0.96rem; } .motiongpu-error-source-title { margin: 0; font-size: 0.8rem; font-weight: 500; line-height: 1.3; letter-spacing: 0.045em; text-transform: uppercase; color: var(--motiongpu-color-foreground); } .motiongpu-error-source-frame { border: 1px solid var(--motiongpu-color-border); border-radius: var(--motiongpu-radius-lg); overflow: hidden; background: var(--motiongpu-color-background-muted); } .motiongpu-error-source-tabs { display: flex; align-items: flex-end; background: var(--motiongpu-color-background); } .motiongpu-error-source-tab { display: inline-flex; align-items: center; padding: 0.5rem 0.68rem; border-right: 1px solid var(--motiongpu-color-border); font-size: 0.76rem; font-weight: 400; line-height: 1.2; color: var(--motiongpu-color-foreground-muted); } .motiongpu-error-source-tab-active { position: relative; z-index: 1; margin-bottom: -1px; border-color: var(--motiongpu-color-border); border-top-left-radius: calc(var(--motiongpu-radius-lg) - 1px); border-top-right-radius: calc(var(--motiongpu-radius-lg) - 1px); color: var(--motiongpu-color-foreground); background: var(--motiongpu-color-background-muted); } .motiongpu-error-source-tab-spacer { flex: 1 1 auto; } .motiongpu-error-source-snippet { display: grid; border-top: 1px solid var(--motiongpu-color-border); background: var(--motiongpu-color-background-muted); } .motiongpu-error-source-row { display: grid; grid-template-columns: 2rem minmax(0, 1fr); align-items: start; gap: 0.42rem; padding: 0.2rem 0.68rem; } .motiongpu-error-source-row-active { background: color-mix(in oklch, var(--motiongpu-color-accent) 10%, transparent); } .motiongpu-error-source-line { font-family: var(--motiongpu-font-mono); font-size: 0.77rem; font-weight: 400; line-height: 1.3; font-variant-numeric: tabular-nums; font-feature-settings: 'tnum' 1; border-right: 1px solid var(--motiongpu-color-border); color: var(--motiongpu-color-foreground-muted); text-align: left; } .motiongpu-error-source-code { font-family: var(--motiongpu-font-mono); font-size: 0.77rem; font-weight: 400; line-height: 1.3; color: var(--motiongpu-color-foreground); white-space: pre-wrap; word-break: break-word; } .motiongpu-error-details { border: 1px solid var(--motiongpu-color-border); border-radius: var(--motiongpu-radius-lg); overflow: hidden; background: var(--motiongpu-color-background); } .motiongpu-error-details summary { cursor: pointer; padding: 0.56rem 0.68rem; font-size: 0.7rem; letter-spacing: 0.07em; line-height: 1.2; font-weight: 500; text-transform: uppercase; color: var(--motiongpu-color-foreground); } .motiongpu-error-details[open] summary { border-bottom: 1px solid var(--motiongpu-color-border); } .motiongpu-error-details pre { margin: 0; padding: 0.62rem 0.68rem; white-space: pre-wrap; word-break: break-word; overflow: auto; background: var(--motiongpu-color-background-muted); font-size: 0.74rem; line-height: 1.4; font-weight: 400; color: var(--motiongpu-color-foreground); font-family: var(--motiongpu-font-mono); } @media (max-width: 42rem) { .motiongpu-error-overlay { padding: 0.62rem; } .motiongpu-error-dialog { padding: 0.85rem; } .motiongpu-error-title { font-size: 1.02rem; } .motiongpu-error-header-top { flex-direction: column; align-items: flex-start; } } @media (prefers-reduced-motion: reduce) { .motiongpu-error-overlay { backdrop-filter: none; } } .motiongpu-canvas-wrap { position: relative; width: 100%; height: 100%; min-width: 0; min-height: 0; overflow: hidden; } .motiongpu-canvas-wrap > canvas { position: absolute; inset: 0; display: block; width: 100%; height: 100%; } /*$vite$:1*/