{"version":3,"sources":["../src/hooks/useTheme.ts"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport { useThemeStore, ThemeMode } from '../store/themeStore';\n\nexport type { ThemeMode };\n\n/**\n * Hook para gerenciar temas e branding institucional\n * Este hook permite alternar entre temas light, dark e automático baseado nas preferências do sistema\n * e fornece acesso aos dados de branding lidos diretamente das meta tags HTML\n * Utiliza Zustand para persistir o estado de tema entre múltiplos arquivos e sessões\n */\nexport const useTheme = () => {\n  const {\n    themeMode,\n    isDark,\n    toggleTheme,\n    setTheme,\n    initializeTheme,\n    handleSystemThemeChange,\n  } = useThemeStore();\n\n  // Read branding data from meta tags\n  const branding = useMemo(() => {\n    if (typeof document === 'undefined') {\n      return {\n        theme: null,\n        favicon: null,\n        icon: null,\n        mainLogo: null,\n        internalLogo: null,\n        loginImage: null,\n      };\n    }\n\n    return {\n      theme:\n        document.querySelector('meta[name=\"theme\"]')?.getAttribute('content') ??\n        null,\n      favicon:\n        document.querySelector('link[rel=\"icon\"]')?.getAttribute('href') ??\n        null,\n      icon:\n        document\n          .querySelector('link[rel=\"apple-touch-icon\"]')\n          ?.getAttribute('href') ?? null,\n      mainLogo:\n        document\n          .querySelector('meta[name=\"main-logo\"]')\n          ?.getAttribute('content') ?? null,\n      internalLogo:\n        document\n          .querySelector('meta[name=\"internal-logo\"]')\n          ?.getAttribute('content') ?? null,\n      loginImage:\n        document\n          .querySelector('meta[name=\"login-image\"]')\n          ?.getAttribute('content') ?? null,\n    };\n  }, []);\n\n  useEffect(() => {\n    // Initialize theme on first render\n    initializeTheme();\n\n    // Listener para mudanças nas preferências do sistema (apenas quando mode é 'system')\n    const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n    mediaQuery.addEventListener('change', handleSystemThemeChange);\n\n    return () => {\n      mediaQuery.removeEventListener('change', handleSystemThemeChange);\n    };\n  }, [initializeTheme, handleSystemThemeChange]);\n\n  return {\n    themeMode,\n    isDark,\n    toggleTheme,\n    setTheme,\n    branding,\n  };\n};\n"],"mappings":";;;;;AAAA,SAAS,WAAW,eAAe;AAW5B,IAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,cAAc;AAGlB,QAAM,WAAW,QAAQ,MAAM;AAC7B,QAAI,OAAO,aAAa,aAAa;AACnC,aAAO;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,UAAU;AAAA,QACV,cAAc;AAAA,QACd,YAAY;AAAA,MACd;AAAA,IACF;AAEA,WAAO;AAAA,MACL,OACE,SAAS,cAAc,oBAAoB,GAAG,aAAa,SAAS,KACpE;AAAA,MACF,SACE,SAAS,cAAc,kBAAkB,GAAG,aAAa,MAAM,KAC/D;AAAA,MACF,MACE,SACG,cAAc,8BAA8B,GAC3C,aAAa,MAAM,KAAK;AAAA,MAC9B,UACE,SACG,cAAc,wBAAwB,GACrC,aAAa,SAAS,KAAK;AAAA,MACjC,cACE,SACG,cAAc,4BAA4B,GACzC,aAAa,SAAS,KAAK;AAAA,MACjC,YACE,SACG,cAAc,0BAA0B,GACvC,aAAa,SAAS,KAAK;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AAEd,oBAAgB;AAGhB,UAAM,aAAa,OAAO,WAAW,8BAA8B;AAEnE,eAAW,iBAAiB,UAAU,uBAAuB;AAE7D,WAAO,MAAM;AACX,iBAAW,oBAAoB,UAAU,uBAAuB;AAAA,IAClE;AAAA,EACF,GAAG,CAAC,iBAAiB,uBAAuB,CAAC;AAE7C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}