import { ButtonHTMLAttributes } from 'react'; import { CSSProperties } from 'react'; import { ForwardRefExoticComponent } from 'react'; import { HTMLAttributes } from 'react'; import { InputHTMLAttributes } from 'react'; import { ReactNode } from 'react'; import { RefAttributes } from 'react'; import { SelectHTMLAttributes } from 'react'; import { TextareaHTMLAttributes } from 'react'; /** Opt in to placeholders on purpose, and stop being told about it. */ export declare function acknowledgeClayPlaceholders(): void; export declare interface BendTuning { /** Vertical bow strength, 0..1. */ vertical?: number; /** Horizontal cap deformation, 0..1. */ horizontal?: number; } declare interface BlobShape { /** Outward bulge, in px. 0 gives the plain rounded rectangle. */ readonly amplitude: number; /** Which shape. Same seed, same silhouette, every render. */ readonly seed?: number; /** How many swells go round the outline. 2 is lazy, 5 is busy. */ readonly lobes?: number; /** Rotates the swells around the outline; the knob a press animates. */ readonly phase?: number; } export declare const CLAY_ASSET_BASE_PATH: "/assets/game/ui/clay/phase03-clay-kit"; export declare const CLAY_ASSET_SIZE_TOKENS: { readonly iconSm: "var(--game-ui-asset-icon-sm)"; readonly iconMd: "var(--game-ui-asset-icon-md)"; readonly iconLg: "var(--game-ui-asset-icon-lg)"; readonly iconXl: "var(--game-ui-asset-icon-xl)"; readonly buttonSkinMinWidth: "var(--game-ui-asset-button-min-width)"; readonly cardFanWidth: "var(--game-ui-asset-card-fan-width)"; readonly stageTileMinHeight: "var(--game-ui-stage-tile-min-height)"; readonly terrainSwatchSize: "var(--game-ui-terrain-swatch-size)"; readonly terrainToolHitSize: "var(--game-ui-terrain-tool-hit-size)"; readonly buildRailCardSize: "var(--game-ui-build-rail-card-size)"; readonly brushNumberWidth: "var(--game-ui-brush-number-width)"; }; export declare const CLAY_ASSETS: { buttons: { primary: string; blue: string; brown: string; green: string; purple: string; red: string; }; panels: { popup: string; commonTitle: string; language: string; }; controls: { switchOn: string; switchOff: string; slider: string; tabSelected: string; tabNormal: string; }; icons: Record; catalog: { manifest: string; sourceCatalog: string; contactSheetCommon: string; contactSheetComponents: string; contactSheetFunction: string; }; }; export declare const CLAY_COLOR_TOKENS: { readonly ink: "#3b2d23"; readonly inkMuted: "#786250"; readonly parchment: "#fff8ec"; readonly parchmentDeep: "#f4e2c6"; readonly cream: "#f3e8d8"; readonly wood: "#6c4f38"; readonly woodDeep: "#3a2518"; readonly honey: "#f2b35c"; readonly orange: "#e8743b"; readonly teal: "#1d9a8b"; readonly green: "#4f9d6b"; readonly mint: "#7ee0b6"; readonly berry: "#9b6dd6"; readonly red: "#d85a45"; readonly sky: "#5ca6d8"; readonly shadow: "rgba(76, 52, 28, 0.24)"; readonly glass: "rgba(255, 248, 236, 0.82)"; readonly nightGlass: "rgba(31, 24, 18, 0.76)"; /** Official HUD-on-scene glass fill (matches SupaLuv stage chrome). */ readonly overlayGlass: "rgba(12, 14, 20, 0.72)"; readonly overlayGlassText: "#fff6ee"; /** Liquid-metal plate fill (light). Dedicated so it cannot inherit ink-deep, which inverts on night. */ readonly liquidMetalFace: "#3a2518"; readonly liquidMetalInk: "#fff8ec"; }; export declare const CLAY_ELEVATION_TOKENS: { readonly button: "var(--game-ui-shadow-button)"; readonly panel: "var(--game-ui-shadow-panel)"; readonly modal: "var(--game-ui-shadow-modal)"; readonly inset: "var(--game-ui-shadow-inset)"; readonly stroke: "var(--game-ui-stroke)"; }; export declare const CLAY_GAME_SPRITE_NAMES: ClayGameSpriteName[]; /** * Decorative game-content sprites — sculpted clay objects from the same source * pack that read as *game content* (loot, weapons, shields, potions, currency * variants) rather than UI affordances. They are deliberately kept OUT of * CLAY_ICON_VARIANTS so the semantic icon API stays a clean, product-agnostic UI * vocabulary. Reach for these in reward popups, inventories, win screens, or * decorative flourishes — never for buttons or toolbars. Game family only; these * have no flat line equivalents. */ export declare const CLAY_GAME_SPRITES: { anvil: string; arrow: string; bomb: string; candle: string; chicken: string; giftBlue: string; hammer: string; horn: string; horseshoe: string; letter: string; medalBronze: string; medalSilver: string; pickaxe: string; potionPurple: string; potionRed: string; purpleGem: string; shieldA: string; shieldB: string; shieldC: string; shieldD: string; skull: string; soulGem: string; swordA: string; swordB: string; talaria: string; treasure: string; }; export declare const CLAY_ICON_NAMES: ClayIconName[]; export declare const CLAY_ICON_VARIANTS: { ai: { line: string; }; alert: { game: string; line: string; }; card: { line: string; }; chat: { line: string; }; check: { line: string; }; close: { game: string; line: string; }; coin: { game: string; line: string; }; compass: { line: string; }; copy: { line: string; }; crown: { game: string; line: string; }; energy: { game: string; line: string; }; gem: { game: string; line: string; }; gift: { game: string; line: string; }; globe: { line: string; }; history: { line: string; }; home: { line: string; }; hourglass: { game: string; line: string; }; laurel: { game: string; }; lock: { game: string; line: string; }; lucky: { game: string; }; mail: { game: string; line: string; }; medal: { game: string; line: string; }; mission: { game: string; }; mobile: { line: string; }; portal: { game: string; line: string; }; scroll: { game: string; line: string; }; settings: { game: string; line: string; }; shirt: { line: string; }; shop: { game: string; line: string; }; smile: { line: string; }; timer: { game: string; line: string; }; trophy: { game: string; line: string; }; undo: { line: string; }; redo: { line: string; }; vote: { game: string; line: string; }; }; export declare const CLAY_LAYER_TOKENS: { readonly playfield: "var(--game-ui-z-playfield)"; readonly hud: "var(--game-ui-z-hud)"; readonly sidebar: "var(--game-ui-z-sidebar)"; readonly overlay: "var(--game-ui-z-overlay)"; readonly modal: "var(--game-ui-z-modal)"; readonly toast: "var(--game-ui-z-toast)"; }; /** * Token references for the adopted liquid-gooey Move physics. The values are * deliberately numeric custom properties so a host theme can tune the feel * without putting physics constants in the engine. */ declare const CLAY_LIQUID_GOOEY_TOKENS: { readonly morphShape: "var(--game-ui-liquid-gooey-morph-shape)"; readonly morphSpeed: "var(--game-ui-liquid-gooey-morph-speed)"; readonly morphBounce: "var(--game-ui-liquid-gooey-morph-bounce)"; readonly evolveMassStiffness: "var(--game-ui-liquid-gooey-evolve-mass-stiffness)"; readonly evolveMassDamping: "var(--game-ui-liquid-gooey-evolve-mass-damping)"; readonly evolveSizeStiffness: "var(--game-ui-liquid-gooey-evolve-size-stiffness)"; readonly evolveSizeDamping: "var(--game-ui-liquid-gooey-evolve-size-damping)"; readonly evolveRadiusStiffness: "var(--game-ui-liquid-gooey-evolve-radius-stiffness)"; readonly evolveRadiusDamping: "var(--game-ui-liquid-gooey-evolve-radius-damping)"; readonly evolveContentBlur: "var(--game-ui-liquid-gooey-evolve-content-blur)"; readonly evolveRoundness: "var(--game-ui-liquid-gooey-evolve-roundness)"; readonly evolveCornerDuration: "var(--game-ui-liquid-gooey-evolve-corner-duration)"; readonly evolveCornerDelay: "var(--game-ui-liquid-gooey-evolve-corner-delay)"; readonly evolveCornerEase: "var(--game-ui-liquid-gooey-evolve-corner-ease)"; readonly evolveAnticipation: "var(--game-ui-liquid-gooey-evolve-anticipation)"; readonly evolveTravel: "var(--game-ui-liquid-gooey-evolve-travel)"; readonly contentBlurAreaMultiplier: "var(--game-ui-liquid-gooey-content-blur-area-multiplier)"; readonly bendVertical: "var(--game-ui-liquid-gooey-bend-vertical)"; readonly bendHorizontal: "var(--game-ui-liquid-gooey-bend-horizontal)"; readonly bendVelocityVertical: "var(--game-ui-liquid-gooey-bend-velocity-vertical)"; readonly bendVelocityHorizontal: "var(--game-ui-liquid-gooey-bend-velocity-horizontal)"; readonly bendSmoothing: "var(--game-ui-liquid-gooey-bend-smoothing)"; readonly bendActiveThreshold: "var(--game-ui-liquid-gooey-bend-active-threshold)"; readonly bendVerticalCap: "var(--game-ui-liquid-gooey-bend-vertical-cap)"; readonly bendHorizontalCap: "var(--game-ui-liquid-gooey-bend-horizontal-cap)"; readonly bendRadiusMin: "var(--game-ui-liquid-gooey-bend-radius-min)"; readonly bendRadiusMax: "var(--game-ui-liquid-gooey-bend-radius-max)"; readonly bendLeadingCapFactor: "var(--game-ui-liquid-gooey-bend-leading-cap-factor)"; readonly bendTrailingCapFactor: "var(--game-ui-liquid-gooey-bend-trailing-cap-factor)"; readonly moveStiffness: "var(--game-ui-liquid-gooey-move-stiffness)"; readonly moveDamping: "var(--game-ui-liquid-gooey-move-damping)"; readonly moveStretch: "var(--game-ui-liquid-gooey-move-stretch)"; readonly moveTail: "var(--game-ui-liquid-gooey-move-tail)"; readonly moveForce: "var(--game-ui-liquid-gooey-move-force)"; readonly moveTailSpringStiffness: "var(--game-ui-liquid-gooey-move-tail-spring-stiffness)"; readonly moveTailSpringDamping: "var(--game-ui-liquid-gooey-move-tail-spring-damping)"; readonly moveStretchSpeed: "var(--game-ui-liquid-gooey-move-stretch-speed)"; readonly moveStretchSquash: "var(--game-ui-liquid-gooey-move-stretch-squash)"; readonly moveSpeedThreshold: "var(--game-ui-liquid-gooey-move-speed-threshold)"; readonly moveTailOnsetSpeed: "var(--game-ui-liquid-gooey-move-tail-onset-speed)"; readonly moveTailOnsetRange: "var(--game-ui-liquid-gooey-move-tail-onset-range)"; readonly moveTailRamp: "var(--game-ui-liquid-gooey-move-tail-ramp)"; readonly moveTailMinRadius: "var(--game-ui-liquid-gooey-move-tail-min-radius)"; readonly moveTailWobble: "var(--game-ui-liquid-gooey-move-tail-wobble)"; readonly moveTailPhaseSpeed: "var(--game-ui-liquid-gooey-move-tail-phase-speed)"; readonly moveTailMidpointA: "var(--game-ui-liquid-gooey-move-tail-midpoint-a)"; readonly moveTailMidpointB: "var(--game-ui-liquid-gooey-move-tail-midpoint-b)"; readonly moveTailMidRadiusA: "var(--game-ui-liquid-gooey-move-tail-mid-radius-a)"; readonly moveTailMidRadiusB: "var(--game-ui-liquid-gooey-move-tail-mid-radius-b)"; readonly moveTailWobblePhase: "var(--game-ui-liquid-gooey-move-tail-wobble-phase)"; readonly moveMinPerpendicular: "var(--game-ui-liquid-gooey-move-min-perpendicular)"; readonly moveLagBase: "var(--game-ui-liquid-gooey-move-lag-base)"; readonly moveLagForce: "var(--game-ui-liquid-gooey-move-lag-force)"; readonly moveSettleDistance: "var(--game-ui-liquid-gooey-move-settle-distance)"; readonly moveSettleSpeed: "var(--game-ui-liquid-gooey-move-settle-speed)"; readonly moveIntegrationRate: "var(--game-ui-liquid-gooey-move-integration-rate)"; readonly waviness: "var(--game-ui-liquid-gooey-waviness)"; readonly wavinessFreq: "var(--game-ui-liquid-gooey-waviness-freq)"; readonly meltBlur: "var(--game-ui-liquid-gooey-melt-blur)"; readonly meltContrast: "var(--game-ui-liquid-gooey-melt-contrast)"; readonly meltReach: "var(--game-ui-liquid-gooey-melt-reach)"; readonly meltFade: "var(--game-ui-liquid-gooey-melt-fade)"; readonly meltWarp: "var(--game-ui-liquid-gooey-melt-warp)"; readonly meltMix: "var(--game-ui-liquid-gooey-melt-mix)"; readonly meltMixBlur: "var(--game-ui-liquid-gooey-melt-mix-blur)"; readonly meltGravity: "var(--game-ui-liquid-gooey-melt-gravity)"; readonly meltWaviness: "var(--game-ui-liquid-gooey-melt-waviness)"; readonly dissolveBlur: "var(--game-ui-liquid-gooey-dissolve-blur)"; readonly dissolveWarp: "var(--game-ui-liquid-gooey-dissolve-warp)"; readonly dissolvePull: "var(--game-ui-liquid-gooey-dissolve-pull)"; readonly dissolveRange: "var(--game-ui-liquid-gooey-dissolve-range)"; readonly dissolveZone: "var(--game-ui-liquid-gooey-dissolve-zone)"; readonly dissolveMix: "var(--game-ui-liquid-gooey-dissolve-mix)"; readonly dissolveGravity: "var(--game-ui-liquid-gooey-dissolve-gravity)"; readonly dissolveTaper: "var(--game-ui-liquid-gooey-dissolve-taper)"; readonly dissolveWarpFreq: "var(--game-ui-liquid-gooey-dissolve-warp-freq)"; readonly dissolveFlowSpeed: "var(--game-ui-liquid-gooey-dissolve-flow-speed)"; readonly dissolveDetail: "var(--game-ui-liquid-gooey-dissolve-detail)"; readonly dissolveReleaseMs: "var(--game-ui-liquid-gooey-dissolve-release-ms)"; readonly dissolveFadeMs: "var(--game-ui-liquid-gooey-dissolve-fade-ms)"; readonly dissolveStrength: "var(--game-ui-liquid-gooey-dissolve-strength)"; readonly dissolveSink: "var(--game-ui-liquid-gooey-dissolve-sink)"; readonly dissolveSeamBlur: "var(--game-ui-liquid-gooey-dissolve-seam-blur)"; }; export { CLAY_LIQUID_GOOEY_TOKENS } export { CLAY_LIQUID_GOOEY_TOKENS as GAME_UI_LIQUID_GOOEY_TOKENS } /** * Effect knobs for ``. Face/ink are real colours (both * themes must set them); accent aliases `--game-ui-accent` so a host can * retint just this button without rebranding every primary. */ declare const CLAY_LIQUID_METAL_TOKENS: { readonly face: "var(--game-ui-liquid-metal-face)"; readonly ink: "var(--game-ui-liquid-metal-ink)"; readonly accent: "var(--game-ui-liquid-metal-accent)"; readonly dispersion: "var(--game-ui-liquid-metal-dispersion)"; readonly sweepSpeed: "var(--game-ui-liquid-metal-sweep-speed)"; readonly rest: "var(--game-ui-liquid-metal-rest)"; readonly bloom: "var(--game-ui-liquid-metal-bloom)"; }; export { CLAY_LIQUID_METAL_TOKENS } export { CLAY_LIQUID_METAL_TOKENS as GAME_UI_LIQUID_METAL_TOKENS } export declare const CLAY_MOTION_TOKENS: { readonly fast: "var(--game-ui-motion-fast)"; readonly base: "var(--game-ui-motion-base)"; readonly slow: "var(--game-ui-motion-slow)"; readonly easingPop: "var(--game-ui-ease-pop)"; readonly easingSoft: "var(--game-ui-ease-soft)"; readonly reducedMotion: "var(--game-ui-reduced-motion-policy)"; }; /** * Semantic CSS vars for the official overlay-glass HUD tone * (`data-game-ui-tone="glass"` / `.game-ui-overlay-scope`). */ declare const CLAY_OVERLAY_GLASS_TOKENS: { readonly bg: "var(--game-ui-overlay-glass-bg)"; readonly bgHover: "var(--game-ui-overlay-glass-bg-hover)"; readonly bgStrong: "var(--game-ui-overlay-glass-bg-strong)"; readonly bgPanel: "var(--game-ui-overlay-glass-bg-panel)"; readonly border: "var(--game-ui-overlay-glass-border)"; readonly borderHover: "var(--game-ui-overlay-glass-border-hover)"; readonly text: "var(--game-ui-overlay-glass-text)"; readonly textMuted: "var(--game-ui-overlay-glass-text-muted)"; readonly blur: "var(--game-ui-overlay-glass-blur)"; readonly focusRing: "var(--game-ui-overlay-glass-focus-ring)"; readonly primaryFill: "var(--game-ui-overlay-glass-primary-fill)"; }; export { CLAY_OVERLAY_GLASS_TOKENS } export { CLAY_OVERLAY_GLASS_TOKENS as GAME_UI_OVERLAY_GLASS_TOKENS } export declare const CLAY_RADIUS_TOKENS: { readonly bead: "var(--game-ui-radius-bead)"; readonly control: "var(--game-ui-radius-control)"; readonly card: "var(--game-ui-radius-card)"; readonly panel: "var(--game-ui-radius-panel)"; readonly modal: "var(--game-ui-radius-modal)"; }; export declare const CLAY_SCROLLBAR_TOKENS: { readonly size: "var(--game-ui-scrollbar-size)"; readonly track: "var(--game-ui-scrollbar-track)"; readonly thumb: "var(--game-ui-scrollbar-thumb)"; readonly thumbHover: "var(--game-ui-scrollbar-thumb-hover)"; }; export declare const CLAY_SEMANTIC_TOKENS: { readonly background: "var(--game-ui-bg)"; readonly playfieldScrim: "var(--game-ui-playfield-scrim)"; readonly surface: "var(--game-ui-surface)"; readonly surfaceRaised: "var(--game-ui-surface-raised)"; readonly panel: "var(--game-ui-panel)"; readonly panelStrong: "var(--game-ui-panel-strong)"; readonly text: "var(--game-ui-text)"; readonly textMuted: "var(--game-ui-text-muted)"; readonly accent: "var(--game-ui-accent)"; readonly accentContrast: "var(--game-ui-accent-contrast)"; readonly secondary: "var(--game-ui-secondary)"; readonly success: "var(--game-ui-success)"; readonly danger: "var(--game-ui-danger)"; readonly warning: "var(--game-ui-warning)"; readonly focusRing: "var(--game-ui-focus-ring)"; readonly borderSubtle: "var(--game-ui-border-subtle)"; readonly borderStrong: "var(--game-ui-border-strong)"; readonly disabled: "var(--game-ui-disabled)"; }; export declare const CLAY_SPACE_TOKENS: { readonly px2: "var(--game-ui-space-2)"; readonly px4: "var(--game-ui-space-4)"; readonly px6: "var(--game-ui-space-6)"; readonly px8: "var(--game-ui-space-8)"; readonly px10: "var(--game-ui-space-10)"; readonly px12: "var(--game-ui-space-12)"; readonly px16: "var(--game-ui-space-16)"; readonly px20: "var(--game-ui-space-20)"; readonly px24: "var(--game-ui-space-24)"; readonly px32: "var(--game-ui-space-32)"; readonly safeTop: "var(--game-ui-safe-top)"; readonly safeRight: "var(--game-ui-safe-right)"; readonly safeBottom: "var(--game-ui-safe-bottom)"; readonly safeLeft: "var(--game-ui-safe-left)"; }; export declare const CLAY_TARGET_TOKENS: { readonly touchMinimumPx: 44; readonly touchPrimaryPx: 52; readonly touchIconPx: 48; readonly touchRowPx: 46; readonly adjacentSpacingPx: 8; readonly mobileLandscapeMinHeightPx: 390; readonly desktopProofWidthPx: 1440; readonly desktopProofHeightPx: 900; readonly mobileLandscapeProofWidthPx: 844; readonly mobileLandscapeProofHeightPx: 390; }; export declare const CLAY_TYPE_TOKENS: { readonly familyDisplay: "var(--game-ui-font-display)"; readonly familyBody: "var(--game-ui-font-body)"; readonly familyMono: "var(--game-ui-font-mono)"; readonly xs: "var(--game-ui-font-xs)"; readonly sm: "var(--game-ui-font-sm)"; readonly md: "var(--game-ui-font-md)"; readonly lg: "var(--game-ui-font-lg)"; readonly xl: "var(--game-ui-font-xl)"; readonly xxl: "var(--game-ui-font-xxl)"; readonly lineTight: "var(--game-ui-line-tight)"; readonly lineBody: "var(--game-ui-line-body)"; readonly reading: "var(--game-ui-font-reading)"; readonly lineReading: "var(--game-ui-line-reading)"; readonly measureReading: "var(--game-ui-measure-reading)"; readonly weightBody: "var(--game-ui-weight-body)"; readonly weightStrong: "var(--game-ui-weight-strong)"; readonly weightTitle: "var(--game-ui-weight-title)"; }; export declare const CLAY_UI_TOKENS: { readonly colors: { readonly ink: "#3b2d23"; readonly inkMuted: "#786250"; readonly parchment: "#fff8ec"; readonly parchmentDeep: "#f4e2c6"; readonly cream: "#f3e8d8"; readonly wood: "#6c4f38"; readonly woodDeep: "#3a2518"; readonly honey: "#f2b35c"; readonly orange: "#e8743b"; readonly teal: "#1d9a8b"; readonly green: "#4f9d6b"; readonly mint: "#7ee0b6"; readonly berry: "#9b6dd6"; readonly red: "#d85a45"; readonly sky: "#5ca6d8"; readonly shadow: "rgba(76, 52, 28, 0.24)"; readonly glass: "rgba(255, 248, 236, 0.82)"; readonly nightGlass: "rgba(31, 24, 18, 0.76)"; /** Official HUD-on-scene glass fill (matches SupaLuv stage chrome). */ readonly overlayGlass: "rgba(12, 14, 20, 0.72)"; readonly overlayGlassText: "#fff6ee"; /** Liquid-metal plate fill (light). Dedicated so it cannot inherit ink-deep, which inverts on night. */ readonly liquidMetalFace: "#3a2518"; readonly liquidMetalInk: "#fff8ec"; }; readonly semantic: { readonly background: "var(--game-ui-bg)"; readonly playfieldScrim: "var(--game-ui-playfield-scrim)"; readonly surface: "var(--game-ui-surface)"; readonly surfaceRaised: "var(--game-ui-surface-raised)"; readonly panel: "var(--game-ui-panel)"; readonly panelStrong: "var(--game-ui-panel-strong)"; readonly text: "var(--game-ui-text)"; readonly textMuted: "var(--game-ui-text-muted)"; readonly accent: "var(--game-ui-accent)"; readonly accentContrast: "var(--game-ui-accent-contrast)"; readonly secondary: "var(--game-ui-secondary)"; readonly success: "var(--game-ui-success)"; readonly danger: "var(--game-ui-danger)"; readonly warning: "var(--game-ui-warning)"; readonly focusRing: "var(--game-ui-focus-ring)"; readonly borderSubtle: "var(--game-ui-border-subtle)"; readonly borderStrong: "var(--game-ui-border-strong)"; readonly disabled: "var(--game-ui-disabled)"; }; readonly typography: { readonly familyDisplay: "var(--game-ui-font-display)"; readonly familyBody: "var(--game-ui-font-body)"; readonly familyMono: "var(--game-ui-font-mono)"; readonly xs: "var(--game-ui-font-xs)"; readonly sm: "var(--game-ui-font-sm)"; readonly md: "var(--game-ui-font-md)"; readonly lg: "var(--game-ui-font-lg)"; readonly xl: "var(--game-ui-font-xl)"; readonly xxl: "var(--game-ui-font-xxl)"; readonly lineTight: "var(--game-ui-line-tight)"; readonly lineBody: "var(--game-ui-line-body)"; readonly reading: "var(--game-ui-font-reading)"; readonly lineReading: "var(--game-ui-line-reading)"; readonly measureReading: "var(--game-ui-measure-reading)"; readonly weightBody: "var(--game-ui-weight-body)"; readonly weightStrong: "var(--game-ui-weight-strong)"; readonly weightTitle: "var(--game-ui-weight-title)"; }; readonly spacing: { readonly px2: "var(--game-ui-space-2)"; readonly px4: "var(--game-ui-space-4)"; readonly px6: "var(--game-ui-space-6)"; readonly px8: "var(--game-ui-space-8)"; readonly px10: "var(--game-ui-space-10)"; readonly px12: "var(--game-ui-space-12)"; readonly px16: "var(--game-ui-space-16)"; readonly px20: "var(--game-ui-space-20)"; readonly px24: "var(--game-ui-space-24)"; readonly px32: "var(--game-ui-space-32)"; readonly safeTop: "var(--game-ui-safe-top)"; readonly safeRight: "var(--game-ui-safe-right)"; readonly safeBottom: "var(--game-ui-safe-bottom)"; readonly safeLeft: "var(--game-ui-safe-left)"; }; readonly radius: { readonly bead: "var(--game-ui-radius-bead)"; readonly control: "var(--game-ui-radius-control)"; readonly card: "var(--game-ui-radius-card)"; readonly panel: "var(--game-ui-radius-panel)"; readonly modal: "var(--game-ui-radius-modal)"; }; readonly scrollbars: { readonly size: "var(--game-ui-scrollbar-size)"; readonly track: "var(--game-ui-scrollbar-track)"; readonly thumb: "var(--game-ui-scrollbar-thumb)"; readonly thumbHover: "var(--game-ui-scrollbar-thumb-hover)"; }; readonly elevation: { readonly button: "var(--game-ui-shadow-button)"; readonly panel: "var(--game-ui-shadow-panel)"; readonly modal: "var(--game-ui-shadow-modal)"; readonly inset: "var(--game-ui-shadow-inset)"; readonly stroke: "var(--game-ui-stroke)"; }; readonly motion: { readonly fast: "var(--game-ui-motion-fast)"; readonly base: "var(--game-ui-motion-base)"; readonly slow: "var(--game-ui-motion-slow)"; readonly easingPop: "var(--game-ui-ease-pop)"; readonly easingSoft: "var(--game-ui-ease-soft)"; readonly reducedMotion: "var(--game-ui-reduced-motion-policy)"; }; readonly layers: { readonly playfield: "var(--game-ui-z-playfield)"; readonly hud: "var(--game-ui-z-hud)"; readonly sidebar: "var(--game-ui-z-sidebar)"; readonly overlay: "var(--game-ui-z-overlay)"; readonly modal: "var(--game-ui-z-modal)"; readonly toast: "var(--game-ui-z-toast)"; }; readonly targets: { readonly touchMinimumPx: 44; readonly touchPrimaryPx: 52; readonly touchIconPx: 48; readonly touchRowPx: 46; readonly adjacentSpacingPx: 8; readonly mobileLandscapeMinHeightPx: 390; readonly desktopProofWidthPx: 1440; readonly desktopProofHeightPx: 900; readonly mobileLandscapeProofWidthPx: 844; readonly mobileLandscapeProofHeightPx: 390; }; readonly assetSizing: { readonly iconSm: "var(--game-ui-asset-icon-sm)"; readonly iconMd: "var(--game-ui-asset-icon-md)"; readonly iconLg: "var(--game-ui-asset-icon-lg)"; readonly iconXl: "var(--game-ui-asset-icon-xl)"; readonly buttonSkinMinWidth: "var(--game-ui-asset-button-min-width)"; readonly cardFanWidth: "var(--game-ui-asset-card-fan-width)"; readonly stageTileMinHeight: "var(--game-ui-stage-tile-min-height)"; readonly terrainSwatchSize: "var(--game-ui-terrain-swatch-size)"; readonly terrainToolHitSize: "var(--game-ui-terrain-tool-hit-size)"; readonly buildRailCardSize: "var(--game-ui-build-rail-card-size)"; readonly brushNumberWidth: "var(--game-ui-brush-number-width)"; }; readonly overlayGlass: { readonly bg: "var(--game-ui-overlay-glass-bg)"; readonly bgHover: "var(--game-ui-overlay-glass-bg-hover)"; readonly bgStrong: "var(--game-ui-overlay-glass-bg-strong)"; readonly bgPanel: "var(--game-ui-overlay-glass-bg-panel)"; readonly border: "var(--game-ui-overlay-glass-border)"; readonly borderHover: "var(--game-ui-overlay-glass-border-hover)"; readonly text: "var(--game-ui-overlay-glass-text)"; readonly textMuted: "var(--game-ui-overlay-glass-text-muted)"; readonly blur: "var(--game-ui-overlay-glass-blur)"; readonly focusRing: "var(--game-ui-overlay-glass-focus-ring)"; readonly primaryFill: "var(--game-ui-overlay-glass-primary-fill)"; }; readonly liquidMetal: { readonly face: "var(--game-ui-liquid-metal-face)"; readonly ink: "var(--game-ui-liquid-metal-ink)"; readonly accent: "var(--game-ui-liquid-metal-accent)"; readonly dispersion: "var(--game-ui-liquid-metal-dispersion)"; readonly sweepSpeed: "var(--game-ui-liquid-metal-sweep-speed)"; readonly rest: "var(--game-ui-liquid-metal-rest)"; readonly bloom: "var(--game-ui-liquid-metal-bloom)"; }; readonly liquidGooey: { readonly morphShape: "var(--game-ui-liquid-gooey-morph-shape)"; readonly morphSpeed: "var(--game-ui-liquid-gooey-morph-speed)"; readonly morphBounce: "var(--game-ui-liquid-gooey-morph-bounce)"; readonly evolveMassStiffness: "var(--game-ui-liquid-gooey-evolve-mass-stiffness)"; readonly evolveMassDamping: "var(--game-ui-liquid-gooey-evolve-mass-damping)"; readonly evolveSizeStiffness: "var(--game-ui-liquid-gooey-evolve-size-stiffness)"; readonly evolveSizeDamping: "var(--game-ui-liquid-gooey-evolve-size-damping)"; readonly evolveRadiusStiffness: "var(--game-ui-liquid-gooey-evolve-radius-stiffness)"; readonly evolveRadiusDamping: "var(--game-ui-liquid-gooey-evolve-radius-damping)"; readonly evolveContentBlur: "var(--game-ui-liquid-gooey-evolve-content-blur)"; readonly evolveRoundness: "var(--game-ui-liquid-gooey-evolve-roundness)"; readonly evolveCornerDuration: "var(--game-ui-liquid-gooey-evolve-corner-duration)"; readonly evolveCornerDelay: "var(--game-ui-liquid-gooey-evolve-corner-delay)"; readonly evolveCornerEase: "var(--game-ui-liquid-gooey-evolve-corner-ease)"; readonly evolveAnticipation: "var(--game-ui-liquid-gooey-evolve-anticipation)"; readonly evolveTravel: "var(--game-ui-liquid-gooey-evolve-travel)"; readonly contentBlurAreaMultiplier: "var(--game-ui-liquid-gooey-content-blur-area-multiplier)"; readonly bendVertical: "var(--game-ui-liquid-gooey-bend-vertical)"; readonly bendHorizontal: "var(--game-ui-liquid-gooey-bend-horizontal)"; readonly bendVelocityVertical: "var(--game-ui-liquid-gooey-bend-velocity-vertical)"; readonly bendVelocityHorizontal: "var(--game-ui-liquid-gooey-bend-velocity-horizontal)"; readonly bendSmoothing: "var(--game-ui-liquid-gooey-bend-smoothing)"; readonly bendActiveThreshold: "var(--game-ui-liquid-gooey-bend-active-threshold)"; readonly bendVerticalCap: "var(--game-ui-liquid-gooey-bend-vertical-cap)"; readonly bendHorizontalCap: "var(--game-ui-liquid-gooey-bend-horizontal-cap)"; readonly bendRadiusMin: "var(--game-ui-liquid-gooey-bend-radius-min)"; readonly bendRadiusMax: "var(--game-ui-liquid-gooey-bend-radius-max)"; readonly bendLeadingCapFactor: "var(--game-ui-liquid-gooey-bend-leading-cap-factor)"; readonly bendTrailingCapFactor: "var(--game-ui-liquid-gooey-bend-trailing-cap-factor)"; readonly moveStiffness: "var(--game-ui-liquid-gooey-move-stiffness)"; readonly moveDamping: "var(--game-ui-liquid-gooey-move-damping)"; readonly moveStretch: "var(--game-ui-liquid-gooey-move-stretch)"; readonly moveTail: "var(--game-ui-liquid-gooey-move-tail)"; readonly moveForce: "var(--game-ui-liquid-gooey-move-force)"; readonly moveTailSpringStiffness: "var(--game-ui-liquid-gooey-move-tail-spring-stiffness)"; readonly moveTailSpringDamping: "var(--game-ui-liquid-gooey-move-tail-spring-damping)"; readonly moveStretchSpeed: "var(--game-ui-liquid-gooey-move-stretch-speed)"; readonly moveStretchSquash: "var(--game-ui-liquid-gooey-move-stretch-squash)"; readonly moveSpeedThreshold: "var(--game-ui-liquid-gooey-move-speed-threshold)"; readonly moveTailOnsetSpeed: "var(--game-ui-liquid-gooey-move-tail-onset-speed)"; readonly moveTailOnsetRange: "var(--game-ui-liquid-gooey-move-tail-onset-range)"; readonly moveTailRamp: "var(--game-ui-liquid-gooey-move-tail-ramp)"; readonly moveTailMinRadius: "var(--game-ui-liquid-gooey-move-tail-min-radius)"; readonly moveTailWobble: "var(--game-ui-liquid-gooey-move-tail-wobble)"; readonly moveTailPhaseSpeed: "var(--game-ui-liquid-gooey-move-tail-phase-speed)"; readonly moveTailMidpointA: "var(--game-ui-liquid-gooey-move-tail-midpoint-a)"; readonly moveTailMidpointB: "var(--game-ui-liquid-gooey-move-tail-midpoint-b)"; readonly moveTailMidRadiusA: "var(--game-ui-liquid-gooey-move-tail-mid-radius-a)"; readonly moveTailMidRadiusB: "var(--game-ui-liquid-gooey-move-tail-mid-radius-b)"; readonly moveTailWobblePhase: "var(--game-ui-liquid-gooey-move-tail-wobble-phase)"; readonly moveMinPerpendicular: "var(--game-ui-liquid-gooey-move-min-perpendicular)"; readonly moveLagBase: "var(--game-ui-liquid-gooey-move-lag-base)"; readonly moveLagForce: "var(--game-ui-liquid-gooey-move-lag-force)"; readonly moveSettleDistance: "var(--game-ui-liquid-gooey-move-settle-distance)"; readonly moveSettleSpeed: "var(--game-ui-liquid-gooey-move-settle-speed)"; readonly moveIntegrationRate: "var(--game-ui-liquid-gooey-move-integration-rate)"; readonly waviness: "var(--game-ui-liquid-gooey-waviness)"; readonly wavinessFreq: "var(--game-ui-liquid-gooey-waviness-freq)"; readonly meltBlur: "var(--game-ui-liquid-gooey-melt-blur)"; readonly meltContrast: "var(--game-ui-liquid-gooey-melt-contrast)"; readonly meltReach: "var(--game-ui-liquid-gooey-melt-reach)"; readonly meltFade: "var(--game-ui-liquid-gooey-melt-fade)"; readonly meltWarp: "var(--game-ui-liquid-gooey-melt-warp)"; readonly meltMix: "var(--game-ui-liquid-gooey-melt-mix)"; readonly meltMixBlur: "var(--game-ui-liquid-gooey-melt-mix-blur)"; readonly meltGravity: "var(--game-ui-liquid-gooey-melt-gravity)"; readonly meltWaviness: "var(--game-ui-liquid-gooey-melt-waviness)"; readonly dissolveBlur: "var(--game-ui-liquid-gooey-dissolve-blur)"; readonly dissolveWarp: "var(--game-ui-liquid-gooey-dissolve-warp)"; readonly dissolvePull: "var(--game-ui-liquid-gooey-dissolve-pull)"; readonly dissolveRange: "var(--game-ui-liquid-gooey-dissolve-range)"; readonly dissolveZone: "var(--game-ui-liquid-gooey-dissolve-zone)"; readonly dissolveMix: "var(--game-ui-liquid-gooey-dissolve-mix)"; readonly dissolveGravity: "var(--game-ui-liquid-gooey-dissolve-gravity)"; readonly dissolveTaper: "var(--game-ui-liquid-gooey-dissolve-taper)"; readonly dissolveWarpFreq: "var(--game-ui-liquid-gooey-dissolve-warp-freq)"; readonly dissolveFlowSpeed: "var(--game-ui-liquid-gooey-dissolve-flow-speed)"; readonly dissolveDetail: "var(--game-ui-liquid-gooey-dissolve-detail)"; readonly dissolveReleaseMs: "var(--game-ui-liquid-gooey-dissolve-release-ms)"; readonly dissolveFadeMs: "var(--game-ui-liquid-gooey-dissolve-fade-ms)"; readonly dissolveStrength: "var(--game-ui-liquid-gooey-dissolve-strength)"; readonly dissolveSink: "var(--game-ui-liquid-gooey-dissolve-sink)"; readonly dissolveSeamBlur: "var(--game-ui-liquid-gooey-dissolve-seam-blur)"; }; }; export declare type ClayAssetGroup = keyof typeof CLAY_ASSETS; export declare type ClayAssetMode = 'inline' | 'source'; export declare type ClayGameSpriteName = keyof typeof CLAY_GAME_SPRITES; export declare type ClayIconName = keyof typeof CLAY_ICON_VARIANTS; export declare interface ClayIconResolveOptions { /** Force a specific visual family. Defaults to game-preferred resolution. */ style?: ClayIconStyle; /** Force inline SVG placeholder (true) or real PNG path (false). */ inline?: boolean; } /** * Clay icons ship in two visual families, and which one you use is a deliberate * design choice: * * - 'game' — the colorful, sculpted clay objects under `icons/common/*` * (crown, scroll, trophy, key…). This is the primary, on-brand look * and the default everywhere. Use it for anything the player sees. * - 'line' — the flat, white, monochrome glyphs under `icons/function/*` * (home, compass, chat…). This is the alternate/utility family for * dense toolbars or places a sculpted object would feel too heavy. * * Not every semantic icon exists in both families: the game family is a curated * set of ~45 sculpted objects, while the line family covers ~230 generic UI * concepts. `getClayIconStyles()` reports which families a given icon has, and * resolution always prefers 'game' so cards get the on-brand look by default. */ export declare type ClayIconStyle = 'game' | 'line'; export declare type ClayTokenCategory = keyof typeof CLAY_UI_TOKENS; declare type CornerRadii = [number, number, number, number]; /** * Process-wide budget for animated liquid-gooey groups. * * SVG filters do not consume WebGL contexts, but they can still be expensive * to repaint. The default allows two animated groups and rejects regions * larger than the configured filter-area ceiling. A rejected group keeps its * SVG filter and snaps its content to each new state without animating. */ export declare const DEFAULT_LIQUID_GOOEY_ANIMATION_BUDGET = 2; export declare const DEFAULT_LIQUID_GOOEY_FILTER_AREA_BUDGET = 480000; /** * Process-wide ledger for liquid-metal WebGL2 contexts. * * Chrome gives a tab about 16 contexts (Android about 8) and silently * kills the oldest when the cap is hit. In University that oldest context * is the 3D world map. These buttons are allowed to light up a shader, * but they are not allowed to evict the map — so the default budget is * 2, hosts can raise or lower it, and a button that cannot get a slot * stays on the CSS renderer without throwing. */ export declare const DEFAULT_LIQUID_METAL_CONTEXT_BUDGET = 2; export declare const DISSOLVE_DEFAULTS: ResolvedDissolveOptions; export declare interface DissolveOptions { /** Melt blur in px. */ blur?: number; /** Displacement strength of the liquid warp. */ warp?: number; /** Magnetic drift toward the contact, in px. */ pull?: number; /** Distance at which melting starts. */ range?: number; /** Size of the melt zone around the contact, in px. */ zone?: number; /** 0..1 two-liquid erosion strength. */ mix?: number; /** Px the melt is drawn toward the neighbour's centre. */ gravity?: number; /** 0..1 pointiness of the directional flow. */ taper?: number; /** Noise frequency multiplier. */ warpFreq?: number; /** Px/s the noise field may drift while the item is moving. */ flowSpeed?: number; /** Noise style. */ warpStyle?: 'fractalNoise' | 'turbulence'; /** Noise octaves. */ detail?: number; /** Whether the dissolve is currently allowed to grow. */ active?: boolean; /** Structural release time in ms. */ releaseMs?: number; /** Opacity fade time in ms. */ fadeMs?: number; /** 0..1 overall dissolve ceiling. */ strength?: number; /** Fraction of the smaller body at which the seam has been swallowed. */ sink?: number; /** Plain blur radius for the guaranteed-smooth seam wash. */ seamBlur?: number; } export declare type DissolveValue = boolean | number | DissolveOptions; declare interface EvolveOptions { /** Spring driving the liquid mass's centre. */ massStiffness?: number; massDamping?: number; /** Spring driving width and height. */ sizeStiffness?: number; sizeDamping?: number; /** Spring driving the corner radius. */ radiusStiffness?: number; radiusDamping?: number; /** Maximum content cross-blur during the morph, in px. */ contentBlur?: number; /** 0..1 droplet roundness during a shape transition. */ roundness?: number; /** Corner-forming timeline. */ cornerDuration?: number; cornerDelay?: number; cornerEase?: string; /** Ramp-in time for the droplet lead, in ms. */ anticipation?: number; /** Maximum droplet lead toward the destination, in px. */ travel?: number; } export declare function FirstSessionHud({ authenticated, batteryCount, className, dailyStreak, iconSlots, labels, onHistory, onSettings, onWardrobe, playerName, }: FirstSessionHudProps): ReactNode; export declare interface FirstSessionHudIconSlots { history?: ReactNode; input?: ReactNode; settings?: ReactNode; wardrobe?: ReactNode; emote?: ReactNode; } export declare interface FirstSessionHudLabels { controls: string; emote: string; goalLabel: string; goalValue: string; /** Streak prefix, e.g. "Daily" → "Daily 3". Defaults to "Daily". */ streak?: string; /** Resource meta shown for guests (unauthenticated). Defaults to "guest". */ guest?: string; history: string; hud: string; input: string; moveBadge: string; move: string; roomLabel: string; roomValue: string; roleLabel: string; roleValue: string; settings: string; shell: string; timerLabel: string; timerValue: string; tools: string; wardrobe: string; } export declare interface FirstSessionHudProps { authenticated: boolean; batteryCount: number | string; className?: string; dailyStreak: number; iconSlots?: FirstSessionHudIconSlots; labels: FirstSessionHudLabels; onHistory: () => void; onSettings: () => void; onWardrobe: () => void; playerName: string; } export declare function FirstSessionOnboarding({ labels, onDismiss, open, }: FirstSessionOnboardingProps): ReactNode; export declare interface FirstSessionOnboardingLabels { badge: string; body: string; skip: string; start: string; steps: readonly FirstSessionOnboardingStep[]; title: string; } export declare interface FirstSessionOnboardingProps { labels: FirstSessionOnboardingLabels; onDismiss: () => void; open: boolean; } export declare interface FirstSessionOnboardingStep { body: string; title: string; } /** Opt-in attribute values for the official overlay-glass HUD scope. */ export declare const GAME_UI_OVERLAY: { readonly toneAttr: "data-game-ui-tone"; readonly toneGlass: "glass"; readonly densityAttr: "data-game-ui-density"; readonly densityCompact: "compact"; readonly scopeClass: "game-ui-overlay-scope"; }; export declare const GAME_UI_PREVIEW_MESSAGES: readonly GameUiHistoryEntry[]; export declare const GAME_UI_TARGETS: { readonly touchMinimumPx: 44; readonly touchPrimaryPx: 52; readonly touchIconPx: 48; readonly touchRowPx: 46; readonly adjacentSpacingPx: 8; readonly mobileLandscapeMinHeightPx: 390; readonly desktopProofWidthPx: 1440; readonly desktopProofHeightPx: 900; readonly mobileLandscapeProofWidthPx: 844; readonly mobileLandscapeProofHeightPx: 390; }; /** * The semantic `--game-ui-*` custom properties a *complete* theme must * override for full fidelity — this is the same list the official * `[data-game-ui-theme='night']` block in theme.css satisfies, enforced by * a guard test in src/tokens.test.ts. A downstream product building its own * full theme (e.g. `[data-game-ui-theme='abyss']`) can reuse this constant * to check its own CSS for the same completeness instead of eyeballing it — * see "自定义第三主题" in design-system-guide.md for a usage example. */ export declare const GAME_UI_THEME_CONTRACT: readonly ["--game-ui-bg", "--game-ui-surface", "--game-ui-surface-raised", "--game-ui-panel", "--game-ui-panel-strong", "--game-ui-panel-deep", "--game-ui-text", "--game-ui-text-muted", "--game-ui-accent", "--game-ui-accent-bright", "--game-ui-secondary", "--game-ui-success", "--game-ui-success-bright", "--game-ui-danger", "--game-ui-danger-bright", "--game-ui-warning", "--game-ui-focus-ring", "--game-ui-border-subtle", "--game-ui-border-strong", "--game-ui-disabled", "--game-ui-ink-deep", "--game-ui-border-ink", "--game-ui-wood", "--game-ui-ink-title", "--game-ui-ink-heading", "--game-ui-liquid-metal-face", "--game-ui-liquid-metal-ink"]; export declare const GAME_UI_TOKENS: { readonly morphShape: "var(--game-ui-liquid-gooey-morph-shape)"; readonly morphSpeed: "var(--game-ui-liquid-gooey-morph-speed)"; readonly morphBounce: "var(--game-ui-liquid-gooey-morph-bounce)"; readonly evolveMassStiffness: "var(--game-ui-liquid-gooey-evolve-mass-stiffness)"; readonly evolveMassDamping: "var(--game-ui-liquid-gooey-evolve-mass-damping)"; readonly evolveSizeStiffness: "var(--game-ui-liquid-gooey-evolve-size-stiffness)"; readonly evolveSizeDamping: "var(--game-ui-liquid-gooey-evolve-size-damping)"; readonly evolveRadiusStiffness: "var(--game-ui-liquid-gooey-evolve-radius-stiffness)"; readonly evolveRadiusDamping: "var(--game-ui-liquid-gooey-evolve-radius-damping)"; readonly evolveContentBlur: "var(--game-ui-liquid-gooey-evolve-content-blur)"; readonly evolveRoundness: "var(--game-ui-liquid-gooey-evolve-roundness)"; readonly evolveCornerDuration: "var(--game-ui-liquid-gooey-evolve-corner-duration)"; readonly evolveCornerDelay: "var(--game-ui-liquid-gooey-evolve-corner-delay)"; readonly evolveCornerEase: "var(--game-ui-liquid-gooey-evolve-corner-ease)"; readonly evolveAnticipation: "var(--game-ui-liquid-gooey-evolve-anticipation)"; readonly evolveTravel: "var(--game-ui-liquid-gooey-evolve-travel)"; readonly contentBlurAreaMultiplier: "var(--game-ui-liquid-gooey-content-blur-area-multiplier)"; readonly bendVertical: "var(--game-ui-liquid-gooey-bend-vertical)"; readonly bendHorizontal: "var(--game-ui-liquid-gooey-bend-horizontal)"; readonly bendVelocityVertical: "var(--game-ui-liquid-gooey-bend-velocity-vertical)"; readonly bendVelocityHorizontal: "var(--game-ui-liquid-gooey-bend-velocity-horizontal)"; readonly bendSmoothing: "var(--game-ui-liquid-gooey-bend-smoothing)"; readonly bendActiveThreshold: "var(--game-ui-liquid-gooey-bend-active-threshold)"; readonly bendVerticalCap: "var(--game-ui-liquid-gooey-bend-vertical-cap)"; readonly bendHorizontalCap: "var(--game-ui-liquid-gooey-bend-horizontal-cap)"; readonly bendRadiusMin: "var(--game-ui-liquid-gooey-bend-radius-min)"; readonly bendRadiusMax: "var(--game-ui-liquid-gooey-bend-radius-max)"; readonly bendLeadingCapFactor: "var(--game-ui-liquid-gooey-bend-leading-cap-factor)"; readonly bendTrailingCapFactor: "var(--game-ui-liquid-gooey-bend-trailing-cap-factor)"; readonly moveStiffness: "var(--game-ui-liquid-gooey-move-stiffness)"; readonly moveDamping: "var(--game-ui-liquid-gooey-move-damping)"; readonly moveStretch: "var(--game-ui-liquid-gooey-move-stretch)"; readonly moveTail: "var(--game-ui-liquid-gooey-move-tail)"; readonly moveForce: "var(--game-ui-liquid-gooey-move-force)"; readonly moveTailSpringStiffness: "var(--game-ui-liquid-gooey-move-tail-spring-stiffness)"; readonly moveTailSpringDamping: "var(--game-ui-liquid-gooey-move-tail-spring-damping)"; readonly moveStretchSpeed: "var(--game-ui-liquid-gooey-move-stretch-speed)"; readonly moveStretchSquash: "var(--game-ui-liquid-gooey-move-stretch-squash)"; readonly moveSpeedThreshold: "var(--game-ui-liquid-gooey-move-speed-threshold)"; readonly moveTailOnsetSpeed: "var(--game-ui-liquid-gooey-move-tail-onset-speed)"; readonly moveTailOnsetRange: "var(--game-ui-liquid-gooey-move-tail-onset-range)"; readonly moveTailRamp: "var(--game-ui-liquid-gooey-move-tail-ramp)"; readonly moveTailMinRadius: "var(--game-ui-liquid-gooey-move-tail-min-radius)"; readonly moveTailWobble: "var(--game-ui-liquid-gooey-move-tail-wobble)"; readonly moveTailPhaseSpeed: "var(--game-ui-liquid-gooey-move-tail-phase-speed)"; readonly moveTailMidpointA: "var(--game-ui-liquid-gooey-move-tail-midpoint-a)"; readonly moveTailMidpointB: "var(--game-ui-liquid-gooey-move-tail-midpoint-b)"; readonly moveTailMidRadiusA: "var(--game-ui-liquid-gooey-move-tail-mid-radius-a)"; readonly moveTailMidRadiusB: "var(--game-ui-liquid-gooey-move-tail-mid-radius-b)"; readonly moveTailWobblePhase: "var(--game-ui-liquid-gooey-move-tail-wobble-phase)"; readonly moveMinPerpendicular: "var(--game-ui-liquid-gooey-move-min-perpendicular)"; readonly moveLagBase: "var(--game-ui-liquid-gooey-move-lag-base)"; readonly moveLagForce: "var(--game-ui-liquid-gooey-move-lag-force)"; readonly moveSettleDistance: "var(--game-ui-liquid-gooey-move-settle-distance)"; readonly moveSettleSpeed: "var(--game-ui-liquid-gooey-move-settle-speed)"; readonly moveIntegrationRate: "var(--game-ui-liquid-gooey-move-integration-rate)"; readonly waviness: "var(--game-ui-liquid-gooey-waviness)"; readonly wavinessFreq: "var(--game-ui-liquid-gooey-waviness-freq)"; readonly meltBlur: "var(--game-ui-liquid-gooey-melt-blur)"; readonly meltContrast: "var(--game-ui-liquid-gooey-melt-contrast)"; readonly meltReach: "var(--game-ui-liquid-gooey-melt-reach)"; readonly meltFade: "var(--game-ui-liquid-gooey-melt-fade)"; readonly meltWarp: "var(--game-ui-liquid-gooey-melt-warp)"; readonly meltMix: "var(--game-ui-liquid-gooey-melt-mix)"; readonly meltMixBlur: "var(--game-ui-liquid-gooey-melt-mix-blur)"; readonly meltGravity: "var(--game-ui-liquid-gooey-melt-gravity)"; readonly meltWaviness: "var(--game-ui-liquid-gooey-melt-waviness)"; readonly dissolveBlur: "var(--game-ui-liquid-gooey-dissolve-blur)"; readonly dissolveWarp: "var(--game-ui-liquid-gooey-dissolve-warp)"; readonly dissolvePull: "var(--game-ui-liquid-gooey-dissolve-pull)"; readonly dissolveRange: "var(--game-ui-liquid-gooey-dissolve-range)"; readonly dissolveZone: "var(--game-ui-liquid-gooey-dissolve-zone)"; readonly dissolveMix: "var(--game-ui-liquid-gooey-dissolve-mix)"; readonly dissolveGravity: "var(--game-ui-liquid-gooey-dissolve-gravity)"; readonly dissolveTaper: "var(--game-ui-liquid-gooey-dissolve-taper)"; readonly dissolveWarpFreq: "var(--game-ui-liquid-gooey-dissolve-warp-freq)"; readonly dissolveFlowSpeed: "var(--game-ui-liquid-gooey-dissolve-flow-speed)"; readonly dissolveDetail: "var(--game-ui-liquid-gooey-dissolve-detail)"; readonly dissolveReleaseMs: "var(--game-ui-liquid-gooey-dissolve-release-ms)"; readonly dissolveFadeMs: "var(--game-ui-liquid-gooey-dissolve-fade-ms)"; readonly dissolveStrength: "var(--game-ui-liquid-gooey-dissolve-strength)"; readonly dissolveSink: "var(--game-ui-liquid-gooey-dissolve-sink)"; readonly dissolveSeamBlur: "var(--game-ui-liquid-gooey-dissolve-seam-blur)"; readonly iconSm: "var(--game-ui-asset-icon-sm)"; readonly iconMd: "var(--game-ui-asset-icon-md)"; readonly iconLg: "var(--game-ui-asset-icon-lg)"; readonly iconXl: "var(--game-ui-asset-icon-xl)"; readonly buttonSkinMinWidth: "var(--game-ui-asset-button-min-width)"; readonly cardFanWidth: "var(--game-ui-asset-card-fan-width)"; readonly stageTileMinHeight: "var(--game-ui-stage-tile-min-height)"; readonly terrainSwatchSize: "var(--game-ui-terrain-swatch-size)"; readonly terrainToolHitSize: "var(--game-ui-terrain-tool-hit-size)"; readonly buildRailCardSize: "var(--game-ui-build-rail-card-size)"; readonly brushNumberWidth: "var(--game-ui-brush-number-width)"; readonly playfield: "var(--game-ui-z-playfield)"; readonly hud: "var(--game-ui-z-hud)"; readonly sidebar: "var(--game-ui-z-sidebar)"; readonly overlay: "var(--game-ui-z-overlay)"; readonly modal: "var(--game-ui-z-modal)"; readonly toast: "var(--game-ui-z-toast)"; readonly fast: "var(--game-ui-motion-fast)"; readonly base: "var(--game-ui-motion-base)"; readonly slow: "var(--game-ui-motion-slow)"; readonly easingPop: "var(--game-ui-ease-pop)"; readonly easingSoft: "var(--game-ui-ease-soft)"; readonly reducedMotion: "var(--game-ui-reduced-motion-policy)"; readonly button: "var(--game-ui-shadow-button)"; readonly panel: "var(--game-ui-shadow-panel)"; readonly inset: "var(--game-ui-shadow-inset)"; readonly stroke: "var(--game-ui-stroke)"; readonly scrollbarSize: "var(--game-ui-scrollbar-size)"; readonly scrollbarTrack: "var(--game-ui-scrollbar-track)"; readonly scrollbarThumb: "var(--game-ui-scrollbar-thumb)"; readonly scrollbarThumbHover: "var(--game-ui-scrollbar-thumb-hover)"; readonly bead: "var(--game-ui-radius-bead)"; readonly control: "var(--game-ui-radius-control)"; readonly card: "var(--game-ui-radius-card)"; readonly px2: "var(--game-ui-space-2)"; readonly px4: "var(--game-ui-space-4)"; readonly px6: "var(--game-ui-space-6)"; readonly px8: "var(--game-ui-space-8)"; readonly px10: "var(--game-ui-space-10)"; readonly px12: "var(--game-ui-space-12)"; readonly px16: "var(--game-ui-space-16)"; readonly px20: "var(--game-ui-space-20)"; readonly px24: "var(--game-ui-space-24)"; readonly px32: "var(--game-ui-space-32)"; readonly safeTop: "var(--game-ui-safe-top)"; readonly safeRight: "var(--game-ui-safe-right)"; readonly safeBottom: "var(--game-ui-safe-bottom)"; readonly safeLeft: "var(--game-ui-safe-left)"; readonly familyDisplay: "var(--game-ui-font-display)"; readonly familyBody: "var(--game-ui-font-body)"; readonly familyMono: "var(--game-ui-font-mono)"; readonly xs: "var(--game-ui-font-xs)"; readonly sm: "var(--game-ui-font-sm)"; readonly md: "var(--game-ui-font-md)"; readonly lg: "var(--game-ui-font-lg)"; readonly xl: "var(--game-ui-font-xl)"; readonly xxl: "var(--game-ui-font-xxl)"; readonly lineTight: "var(--game-ui-line-tight)"; readonly lineBody: "var(--game-ui-line-body)"; readonly reading: "var(--game-ui-font-reading)"; readonly lineReading: "var(--game-ui-line-reading)"; readonly measureReading: "var(--game-ui-measure-reading)"; readonly weightBody: "var(--game-ui-weight-body)"; readonly weightStrong: "var(--game-ui-weight-strong)"; readonly weightTitle: "var(--game-ui-weight-title)"; readonly background: "var(--game-ui-bg)"; readonly playfieldScrim: "var(--game-ui-playfield-scrim)"; readonly surface: "var(--game-ui-surface)"; readonly surfaceRaised: "var(--game-ui-surface-raised)"; readonly panelStrong: "var(--game-ui-panel-strong)"; readonly text: "var(--game-ui-text)"; readonly textMuted: "var(--game-ui-text-muted)"; readonly accent: "var(--game-ui-accent)"; readonly accentContrast: "var(--game-ui-accent-contrast)"; readonly secondary: "var(--game-ui-secondary)"; readonly success: "var(--game-ui-success)"; readonly danger: "var(--game-ui-danger)"; readonly warning: "var(--game-ui-warning)"; readonly focusRing: "var(--game-ui-focus-ring)"; readonly borderSubtle: "var(--game-ui-border-subtle)"; readonly borderStrong: "var(--game-ui-border-strong)"; readonly disabled: "var(--game-ui-disabled)"; }; export declare function GameActionGrid({ actions, className, density, iconLabelMode, label, style, }: GameActionGridProps): ReactNode; export declare interface GameActionGridProps { actions: readonly GameUiAction[]; className?: string; density?: GameSurfaceDensity; iconLabelMode?: GameActionIconLabelMode; label: string; style?: GameActionStyle; } export declare type GameActionIconLabelMode = 'hidden' | 'caption'; export declare type GameActionStyle = 'button' | 'icon'; export declare interface GameAssetBadge { label: string; tone?: GameBadgeTone; } export declare function GameAssetCard({ assetId, badges, cardLayout, className, description, disabled, facts, icon, onClick, onSelect, selected, source, sourceLabel, status, statusLabel, thumbnailAlt, thumbnailSrc, title, type, ...props }: GameAssetCardProps): ReactNode; export declare type GameAssetCardLayout = 'auto' | 'list' | 'rail'; export declare interface GameAssetCardProps extends Omit, 'children' | 'onSelect'> { assetId: string; badges?: readonly GameAssetBadge[]; cardLayout?: Exclude; description?: string; facts?: readonly GameAssetFact[]; icon?: ClayIconName; onSelect?: (assetId: string) => void; selected?: boolean; source: GameAssetSource; sourceLabel?: string; status?: GameAssetStatus; statusLabel?: string; thumbnailAlt?: string; thumbnailSrc?: string; title: string; } export declare interface GameAssetFact { id: string; label: string; value: string; } export declare interface GameAssetGroup { assets: readonly Omit[]; id: string; label: string; source?: GameAssetSource; } export declare function GameAssetIcon({ className, icon, label, size, style, useSourceAsset, }: GameAssetIconProps): ReactNode; export declare interface GameAssetIconProps { className?: string; icon: ClayIconName; label?: string; size?: 'sm' | 'md' | 'lg' | 'xl'; /** * Visual family. 'game' (default) is the colorful sculpted clay object; * 'line' is the flat white glyph alternate. Falls back automatically when an * icon only ships one family. */ style?: ClayIconStyle; useSourceAsset?: boolean; } export declare function GameAssetLibrary({ cardLayout, className, density, emptyAction, emptyDescription, emptyTitle, groups, label, onSelectAsset, selectedAssetId, subtitle, title, }: GameAssetLibraryProps): ReactNode; export declare interface GameAssetLibraryProps { cardLayout?: GameAssetCardLayout; className?: string; density?: GameSurfaceDensity; emptyAction?: ReactNode; emptyDescription?: string; emptyTitle?: string; groups: readonly GameAssetGroup[]; label: string; onSelectAsset?: (assetId: string) => void; selectedAssetId?: string; subtitle?: string; title: string; } export declare type GameAssetSource = 'starter' | 'generated' | 'imported'; export declare type GameAssetStatus = 'ready' | 'generating' | 'missing' | 'placed' | 'selected' | 'error'; export declare function GameAvatar({ className, name, size, src, status, }: GameAvatarProps): ReactNode; export declare interface GameAvatarProps { /** Display name — used as image alt text and for the initials fallback. */ name: string; /** Optional image URL; when missing, initials are shown instead. */ src?: string; size?: 'sm' | 'md' | 'lg' | 'xl'; /** Presence dot; 'none' hides it. */ status?: 'none' | 'online' | 'busy' | 'away'; className?: string; } export declare function GameBadge({ children, className, tone }: GameBadgeProps): ReactNode; export declare interface GameBadgeProps { children: ReactNode; className?: string; tone?: GameBadgeTone; } export declare type GameBadgeTone = 'neutral' | 'success' | 'warning' | 'danger' | 'ai'; export declare function GameBeforeAfterToggle({ activeView, after, before, className, label, onViewChange, variant, 'data-testid': testId, }: GameBeforeAfterToggleProps): ReactNode; export declare interface GameBeforeAfterToggleProps { activeView: GameBeforeAfterView; after: GameConstructionPreviewPane; before: GameConstructionPreviewPane; className?: string | undefined; label: string; onViewChange?: ((view: GameBeforeAfterView) => void) | undefined; variant?: GameConstructionVariant | undefined; 'data-testid'?: string | undefined; } export declare type GameBeforeAfterView = 'before' | 'after'; export declare interface GameBrushControlLabels { radius?: string; strength?: string; radiusHint?: string; strengthHint?: string; } export declare function GameBrushControls({ className, labels, onRadiusChange, onStrengthChange, state, variant, 'data-testid': testId, }: GameBrushControlsProps): ReactNode; export declare interface GameBrushControlsProps { className?: string; labels?: GameBrushControlLabels; onRadiusChange?: ((radius: number) => void) | undefined; onStrengthChange?: ((strength: number) => void) | undefined; state: GameBrushControlState; variant?: GameTerrainBuildVariant; 'data-testid'?: string | undefined; } export declare interface GameBrushControlState { disabled?: boolean; maxRadius?: number; maxStrength?: number; minRadius?: number; minStrength?: number; radius: number; radiusStep?: number; strength: number; strengthStep?: number; } export declare interface GameBuildCategory { compactLabel?: string; disabled?: boolean; icon?: ClayIconName; id: GameBuildCategoryId; items: readonly GameBuildItem[]; label: string; meta?: string; } export declare type GameBuildCategoryId = 'foundation' | 'wall' | 'opening' | 'roof' | 'prop' | 'house' | string; export declare interface GameBuildItem { badges?: readonly { label: string; tone?: GameBadgeTone; }[]; compactLabel?: string; description?: string; disabled?: boolean; icon?: ClayIconName; id: string; label: string; meta?: string; previewAlt?: string; previewSrc?: string; status?: GameBuildItemStatus; } export declare type GameBuildItemStatus = 'ready' | 'selected' | 'locked' | 'missing' | 'progress' | 'error'; export declare function GameBuildLibrary({ activeCategoryId, categories, className, density, emptyDescription, emptyTitle, label, onCategoryChange, onSelectItem, selectedItemId, title, variant, 'data-testid': testId, }: GameBuildLibraryProps): ReactNode; export declare interface GameBuildLibraryProps { activeCategoryId?: string | undefined; categories: readonly GameBuildCategory[]; className?: string; density?: GameSurfaceDensity; emptyDescription?: string; emptyTitle?: string; label: string; onCategoryChange?: ((categoryId: string) => void) | undefined; onSelectItem?: ((itemId: string, categoryId: string) => void) | undefined; selectedItemId?: string | undefined; title: string; variant?: GameTerrainBuildVariant; 'data-testid'?: string | undefined; } export declare function GameButton({ children, className, fullWidth, liquidFinish, onClick, sound, static: isStatic, surface, type, variant, ...props }: GameButtonProps): ReactNode; export declare interface GameButtonProps extends ButtonHTMLAttributes { children: ReactNode; /** Fill the available row, including the liquid silhouette and hit target. */ fullWidth?: boolean; /** Named liquid material. Only used with surface="liquid"; omitted keeps the current look. */ liquidFinish?: LiquidFinish; sound?: GameInteractionSoundOptions | false; /** Disable the scale-on-press feedback where the motion would distract. */ static?: boolean; /** * Draw the button on a liquid body. The button itself is unchanged — same * element, same classes, same hit target; a silhouette behind it does the * deforming, so text stays crisp and the tap target never shrinks. */ surface?: GameButtonSurface; variant?: GameButtonVariant; } export declare type GameButtonSurface = 'flat' | 'liquid'; export declare type GameButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'success'; /** * Compact product notice (wallet pitch, soft warnings, onboarding hints). * Token-driven; products may still override cinema theme in host CSS. */ export declare function GameCallout({ heading, children, tone, className, ...props }: GameCalloutProps): ReactNode; export declare interface GameCalloutProps extends Omit, 'title'> { /** Visible heading (not HTML title attribute). */ readonly heading?: ReactNode; readonly children: ReactNode; readonly tone?: GameCalloutTone; } export declare type GameCalloutTone = 'neutral' | 'info' | 'warning' | 'success' | 'danger'; export declare function GameCardFan({ cards, className, label }: GameCardFanProps): ReactNode; export declare interface GameCardFanCard { id: string; icon?: ClayIconName; kicker: string; title: string; } export declare interface GameCardFanProps { cards: readonly GameCardFanCard[]; className?: string; label: string; } export declare function GameCheckbox({ className, label, ...props }: GameCheckboxProps): ReactNode; export declare interface GameCheckboxProps extends Pick, 'checked' | 'defaultChecked' | 'disabled' | 'name' | 'onChange' | 'required' | 'value'> { label: string; className?: string; } export declare function GameCollapsiblePanel({ actions, children, className, defaultOpen, labels, onOpenChange, open, title, tone, ...props }: GameCollapsiblePanelProps): ReactNode; export declare interface GameCollapsiblePanelLabels { collapse: string; expand: string; } export declare interface GameCollapsiblePanelProps extends Omit, 'title'> { children: ReactNode; className?: string; /** Controlled open state. Leave undefined for uncontrolled usage. */ open?: boolean; /** Uncontrolled initial state. Defaults to true (expanded). */ defaultOpen?: boolean; onOpenChange?: (open: boolean) => void; /** Extra header actions rendered next to the toggle (e.g. icon buttons). */ actions?: ReactNode; labels?: Partial; title: string; tone?: 'default' | 'strong'; } export declare function GameCompactGameDrawer({ children, className, closeIcon, closeLabel, disabled, label, onOpenChange, open, panelId: providedPanelId, title, triggerIcon, triggerLabel, variant, 'data-testid': testId, }: GameCompactGameDrawerProps): ReactNode; export declare interface GameCompactGameDrawerProps { children: ReactNode; className?: string; closeIcon?: ClayIconName; closeLabel?: string; disabled?: boolean; label: string; onOpenChange?: ((open: boolean) => void) | undefined; open: boolean; panelId?: string; title: string; triggerIcon?: ClayIconName; triggerLabel?: string; variant?: GameTerrainBuildVariant; 'data-testid'?: string | undefined; } export declare function GameCompactJobDrawer({ children, className, closeLabel, disabled, jobs, label, onAction, onOpenChange, onSelectJob, open, panelId, selectedJobId, title, triggerLabel, variant, 'data-testid': testId, }: GameCompactJobDrawerProps): ReactNode; export declare interface GameCompactJobDrawerProps { children?: ReactNode | undefined; className?: string | undefined; closeLabel?: string | undefined; disabled?: boolean | undefined; jobs?: readonly GameConstructionJob[] | undefined; label: string; onAction?: ((actionId: string, jobId: string) => void) | undefined; onOpenChange?: ((open: boolean) => void) | undefined; onSelectJob?: ((jobId: string) => void) | undefined; open: boolean; panelId?: string | undefined; selectedJobId?: string | undefined; title: string; triggerLabel?: string | undefined; variant?: Extract | undefined; 'data-testid'?: string | undefined; } export declare interface GameConstructionAction { ariaLabel?: string | undefined; disabled?: boolean | undefined; icon?: ClayIconName | undefined; id: GameConstructionActionId; label: string; meta?: string | undefined; tone?: GameButtonVariant | undefined; } export declare type GameConstructionActionId = 'approve' | 'cancel' | 'preview' | 'revise' | 'revert' | string; export declare function GameConstructionApprovalBar({ actions, className, disabled, label, localOnlyLabel, onAction, providerMode, status, validationWarnings, variant, 'data-testid': testId, }: GameConstructionApprovalBarProps): ReactNode; export declare interface GameConstructionApprovalBarProps { actions?: readonly GameConstructionAction[] | undefined; className?: string | undefined; disabled?: boolean | undefined; label: string; localOnlyLabel?: string | undefined; onAction?: ((actionId: string) => void) | undefined; providerMode?: GameConstructionProviderMode | undefined; status: GameConstructionJobStatus; validationWarnings?: readonly GameConstructionValidationWarning[] | undefined; variant?: GameConstructionVariant | undefined; 'data-testid'?: string | undefined; } export declare interface GameConstructionBadge { label: string; tone?: GameBadgeTone | undefined; } export declare interface GameConstructionFact { id: string; label: string; value: ReactNode; } export declare interface GameConstructionJob { actions?: readonly GameConstructionAction[] | undefined; after?: GameConstructionPreviewPane | undefined; badges?: readonly GameConstructionBadge[] | undefined; before?: GameConstructionPreviewPane | undefined; crew?: readonly GameRobotCrewMember[] | undefined; description?: string | undefined; estimate?: string | undefined; facts?: readonly GameConstructionFact[] | undefined; id: string; location?: string | undefined; progressLabel?: string | undefined; progressMax?: number | undefined; progressValue?: number | undefined; providerMode?: GameConstructionProviderMode | undefined; status: GameConstructionJobStatus; statusLabel?: string | undefined; steps?: readonly GameConstructionProgressStep[] | undefined; title: string; validationWarnings?: readonly GameConstructionValidationWarning[] | undefined; } export declare function GameConstructionJobCard({ className, density, job, onAction, onSelect, selected, showApprovalBar, showBeforeAfter, variant, 'data-testid': testId, }: GameConstructionJobCardProps): ReactNode; export declare interface GameConstructionJobCardProps { className?: string | undefined; density?: GameSurfaceDensity | undefined; job: GameConstructionJob; onAction?: ((actionId: string, jobId: string) => void) | undefined; onSelect?: ((jobId: string) => void) | undefined; selected?: boolean | undefined; showApprovalBar?: boolean | undefined; showBeforeAfter?: boolean | undefined; variant?: GameConstructionVariant | undefined; 'data-testid'?: string | undefined; } export declare type GameConstructionJobStatus = 'draft' | 'preview' | 'queued' | 'working' | 'blocked' | 'readyForReview' | 'accepted' | 'cancelled'; export declare interface GameConstructionPreviewPane { caption?: string | undefined; content?: ReactNode | undefined; label: string; } export declare function GameConstructionProgress({ className, label, max, progressLabel, showStatusBadge, status, statusLabel: explicitStatusLabel, steps, validationWarnings, value, variant, 'data-testid': testId, }: GameConstructionProgressProps): ReactNode; export declare interface GameConstructionProgressProps { className?: string | undefined; label: string; max?: number | undefined; progressLabel?: string | undefined; showStatusBadge?: boolean | undefined; status: GameConstructionJobStatus; statusLabel?: string | undefined; steps?: readonly GameConstructionProgressStep[] | undefined; validationWarnings?: readonly GameConstructionValidationWarning[] | undefined; value?: number | undefined; variant?: GameConstructionVariant | undefined; 'data-testid'?: string | undefined; } export declare interface GameConstructionProgressStep { caption?: string | undefined; id: string; label: string; status: GameConstructionProgressStepStatus; } export declare type GameConstructionProgressStepStatus = 'pending' | 'active' | 'complete' | 'blocked'; export declare type GameConstructionProviderMode = 'local-only' | 'mock' | 'paid-disabled'; export declare type GameConstructionValidationTone = Extract; export declare interface GameConstructionValidationWarning { description?: string | undefined; id: string; label: string; tone?: GameConstructionValidationTone | undefined; } export declare type GameConstructionVariant = 'desktop' | 'tablet' | 'mobile' | 'small-mobile'; export declare function GameContractorPanel({ activePreviewView, className, density, drawerOpen, emptyDescription, emptyTitle, jobs, label, onAction, onDrawerOpenChange, onPreviewViewChange, onSelectJob, selectedJobId, subtitle, title, variant, 'data-testid': testId, }: GameContractorPanelProps): ReactNode; export declare interface GameContractorPanelProps { activePreviewView?: GameBeforeAfterView | undefined; className?: string | undefined; density?: GameSurfaceDensity | undefined; drawerOpen?: boolean | undefined; emptyDescription?: string | undefined; emptyTitle?: string | undefined; jobs: readonly GameConstructionJob[]; label: string; onAction?: ((actionId: string, jobId: string) => void) | undefined; onDrawerOpenChange?: ((open: boolean) => void) | undefined; onPreviewViewChange?: ((view: GameBeforeAfterView) => void) | undefined; onSelectJob?: ((jobId: string) => void) | undefined; selectedJobId?: string | undefined; subtitle?: string | undefined; title: string; variant?: GameConstructionVariant | undefined; 'data-testid'?: string | undefined; } export declare function GameDialog({ children, className, title }: GameDialogProps): ReactNode; export declare interface GameDialogProps { children: ReactNode; className?: string; title: string; } export declare function GameEmptyState({ action, className, description, icon, title, }: GameEmptyStateProps): ReactNode; export declare interface GameEmptyStateProps { /** Optional clay icon shown above the title. */ icon?: ClayIconName; title: string; description?: string; /** Optional call-to-action node (e.g. a GameButton). */ action?: ReactNode; className?: string; } export declare interface GameFactItem { icon?: ClayIconName; id: string; label: string; meta?: string; tone?: GameBadgeTone; value: ReactNode; } export declare function GameFactList({ className, density, facts, label, variant, }: GameFactListProps): ReactNode; export declare interface GameFactListProps { className?: string; density?: GameSurfaceDensity; facts: readonly GameFactItem[]; label: string; variant?: 'facts' | 'stats'; } export declare function GameField({ children, className, error, hint, label, required, }: GameFieldProps): ReactNode; export declare interface GameFieldProps { /** The input/textarea this field labels. Rendered inside the