{
  "version": 3,
  "sources": ["../../src/ssr/StyleSheetManager.tsx", "../../src/utils/env.ts", "../../src/utils/ssr.ts"],
  "sourcesContent": ["/**\n * Legacy SSR compatibility layer.\n *\n * The former styled-components integration offered helpers for collecting\n * styles during server-side rendering. AuraGlass has fully migrated to a\n * build-time CSS pipeline, so these utilities now no-op while keeping the API\n * surface for consumers that still import from `aura-glass/ssr`.\n */\n\nimport React from \"react\";\n\nexport interface StyleSheet {\n  collectStyles: (children: React.ReactNode) => React.ReactElement;\n  getStyleElement: () => React.ReactElement[];\n  getStyleTags: () => string;\n  seal: () => void;\n  instance: null;\n}\n\nconst createFallbackSheet = (): StyleSheet => ({\n  collectStyles: (children: React.ReactNode) => <>{children}</>,\n  getStyleElement: () => [],\n  getStyleTags: () => \"\",\n  seal: () => undefined,\n  instance: null,\n});\n\nexport function createStyleSheet(): StyleSheet {\n  return createFallbackSheet();\n}\n\nexport function collectStyles(): StyleSheet {\n  return createFallbackSheet();\n}\n\nexport const AuraGlassSSRProvider: React.FC<{ children: React.ReactNode }> = ({\n  children,\n}) => <>{children}</>;\n\nexport function isStyledComponentsSSRReady(): boolean {\n  return true;\n}\n\nexport function getStyledComponentsVersion(): null {\n  return null;\n}\n", "import type { DependencyList, EffectCallback } from 'react';\n\n/**\n * Environment helpers to centralize SSR/browser detection and safe global access.\n *\n * CRITICAL: These must check dynamically, NOT cache at module load time,\n * to handle polyfills and avoid locking in server environment values.\n */\n\n/**\n * Dynamic check - re-evaluates on every call to support polyfills\n */\nconst hasWindow = (): boolean => typeof window !== 'undefined';\nconst hasDocument = (): boolean => typeof document !== 'undefined';\nconst hasNavigator = (): boolean => typeof navigator !== 'undefined';\n\n/**\n * Returns true when executed in a browser-like environment.\n */\nexport const isBrowser = (): boolean => hasWindow() && hasDocument();\n\n/**\n * Convenience inverse helper.\n */\nexport const isServer = (): boolean => !isBrowser();\n\n/**\n * Safely access the `window` object when available.\n */\nexport const getSafeWindow = (): typeof window | undefined => (hasWindow() ? window : undefined);\n\n/**\n * Safely access the `document` object when available.\n */\nexport const getSafeDocument = (): Document | undefined => (hasDocument() ? document : undefined);\n\n/**\n * Safely access the `navigator` object when available.\n */\nexport const getSafeNavigator = (): Navigator | undefined => (hasNavigator() ? navigator : undefined);\n\n/**\n * Helper to guard feature detection against SSR environments.\n */\nexport const safeMatchMedia = (query: string): MediaQueryList | undefined => {\n  const win = getSafeWindow();\n  return win?.matchMedia ? win.matchMedia(query) : undefined;\n};\n\n/**\n * Executes a side effect only when running in the browser. Returns a no-op cleanup on the server.\n */\nexport const runClientEffect = (effect: EffectCallback): ReturnType<EffectCallback> | undefined => {\n  if (!isBrowser()) {\n    return undefined;\n  }\n  return effect();\n};\n\n/**\n * React hook compatible helper to defer `useEffect` logic to the client.\n *\n * Example:\n *   useClientEffect(() => { /* browser only *\\/ });\n */\nexport const useClientEffect = (\n  useEffectImpl: (effect: EffectCallback, deps?: DependencyList) => void,\n  effect: EffectCallback,\n  deps?: DependencyList\n): void => {\n  useEffectImpl(() => runClientEffect(effect), deps);\n};\n\n/**\n * Creates a lazy accessor that only evaluates the factory on the client.\n */\nexport const lazyClientValue = <T>(factory: () => T, fallback: T): T => {\n  return isBrowser() ? factory() : fallback;\n};\n", "/**\n * SSR (Server-Side Rendering) Utilities\n *\n * Shared helpers for safe browser API access across all components.\n * Prevents hydration mismatches and runtime errors during SSR.\n */\n\n// Re-export existing browser detection utilities\nexport { isBrowser, isServer } from \"./env\";\n\n/**\n * Check if DOM is available (alias for isBrowser)\n * React convention name\n */\nexport const canUseDOM =\n  typeof window !== \"undefined\" && typeof document !== \"undefined\";\n\n/**\n * Safely access window, returns undefined during SSR\n */\nexport const safeWindow = canUseDOM ? window : undefined;\n\n/**\n * Safely access document, returns undefined during SSR\n */\nexport const safeDocument = canUseDOM ? document : undefined;\n\n/**\n * Safely access navigator, returns undefined during SSR\n */\nexport const safeNavigator = canUseDOM ? navigator : undefined;\n\n/**\n * Safe wrapper for code that requires browser APIs\n * Returns undefined during SSR, executes callback in browser\n *\n * @example\n * const userAgent = safeBrowserExec(() => navigator.userAgent);\n */\nexport function safeBrowserExec<T>(callback: () => T): T | undefined {\n  if (!canUseDOM) return undefined;\n  try {\n    return callback();\n  } catch {\n    return undefined;\n  }\n}\n\n/**\n * Get a browser API value with a fallback for SSR\n *\n * @example\n * const width = getBrowserValue(() => window.innerWidth, 1024);\n */\nexport function getBrowserValue<T>(getter: () => T, fallback: T): T {\n  if (!canUseDOM) return fallback;\n  try {\n    return getter();\n  } catch {\n    return fallback;\n  }\n}\n\n// Note: prefersReducedMotion is already exported from animations/accessible\n// We don't re-export it here to avoid conflicts\n\n/**\n * Get user agent string safely\n * Returns empty string during SSR\n */\nexport function getUserAgent(): string {\n  return getBrowserValue(() => navigator.userAgent, \"\");\n}\n\n/**\n * Check if touch is supported\n * Returns false during SSR\n */\nexport function isTouchDevice(): boolean {\n  return getBrowserValue(\n    () => \"ontouchstart\" in window || navigator.maxTouchPoints > 0,\n    false\n  );\n}\n\n/**\n * Get viewport dimensions\n * Returns default dimensions during SSR\n */\nexport function getViewportSize(): { width: number; height: number } {\n  return getBrowserValue(\n    () => ({ width: window.innerWidth, height: window.innerHeight }),\n    { width: 1024, height: 768 }\n  );\n}\n\n/**\n * Get device pixel ratio\n * Returns 1 during SSR\n */\nexport function getDevicePixelRatio(): number {\n  return getBrowserValue(() => window.devicePixelRatio, 1);\n}\n\n/**\n * Check if WebGL is supported\n * Returns false during SSR\n */\nexport function isWebGLSupported(): boolean {\n  return getBrowserValue(() => {\n    try {\n      const canvas = document.createElement(\"canvas\");\n      return !!(\n        canvas.getContext(\"webgl\") || canvas.getContext(\"experimental-webgl\")\n      );\n    } catch {\n      return false;\n    }\n  }, false);\n}\n\n/**\n * Check if localStorage is available\n * Returns false during SSR and in privacy mode\n */\nexport function isLocalStorageAvailable(): boolean {\n  return getBrowserValue(() => {\n    try {\n      const test = \"__storage_test__\";\n      localStorage.setItem(test, test);\n      localStorage.removeItem(test);\n      return true;\n    } catch {\n      return false;\n    }\n  }, false);\n}\n\n/**\n * SSR-safe event listener helper\n * No-op during SSR, works normally in browser\n */\nexport function addBrowserEventListener<K extends keyof WindowEventMap>(\n  type: K,\n  listener: (this: Window, ev: WindowEventMap[K]) => void,\n  options?: boolean | AddEventListenerOptions\n): () => void {\n  if (!canUseDOM) return () => {};\n\n  window.addEventListener(type, listener, options);\n  return () => window.removeEventListener(type, listener, options);\n}\n\n/**\n * SSR-safe requestAnimationFrame\n * Uses setTimeout fallback during SSR\n */\nexport function safeRequestAnimationFrame(\n  callback: FrameRequestCallback\n): number {\n  if (!canUseDOM) {\n    return setTimeout(callback, 16) as unknown as number;\n  }\n  return requestAnimationFrame(callback);\n}\n\n/**\n * SSR-safe cancelAnimationFrame\n */\nexport function safeCancelAnimationFrame(handle: number): void {\n  if (!canUseDOM) {\n    clearTimeout(handle);\n    return;\n  }\n  cancelAnimationFrame(handle);\n}\n\n/**\n * Create an SSR-safe ref callback that only runs in browser\n */\nexport function createBrowserRefCallback<T extends HTMLElement>(\n  callback: (element: T) => void | (() => void)\n): (element: T | null) => void {\n  if (!canUseDOM) {\n    return () => {};\n  }\n\n  let cleanup: void | (() => void);\n  return (element) => {\n    if (cleanup) {\n      cleanup();\n    }\n    if (element) {\n      cleanup = callback(element);\n    }\n  };\n}\n\n/**\n * Get connection information safely\n * Returns default values during SSR\n */\nexport function getConnectionInfo(): {\n  effectiveType: string;\n  downlink: number;\n  rtt: number;\n  saveData: boolean;\n} {\n  return getBrowserValue(\n    () => {\n      const nav = navigator as any;\n      const connection =\n        nav.connection || nav.mozConnection || nav.webkitConnection;\n      if (!connection) {\n        return { effectiveType: \"4g\", downlink: 10, rtt: 50, saveData: false };\n      }\n      return {\n        effectiveType: connection.effectiveType || \"4g\",\n        downlink: connection.downlink || 10,\n        rtt: connection.rtt || 50,\n        saveData: connection.saveData || false,\n      };\n    },\n    { effectiveType: \"4g\", downlink: 10, rtt: 50, saveData: false }\n  );\n}\n\n/**\n * Check if running in development mode\n */\nexport const isDevelopment = process.env.NODE_ENV === \"development\";\n\n/**\n * Check if running in production mode\n */\nexport const isProduction = process.env.NODE_ENV === \"production\";\n"],
  "mappings": "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",
  "names": []
}
