analytica-frontend-lib 1.3.90 → 1.3.91

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.
@@ -8,13 +8,14 @@ export interface BrandingLogoProps extends Omit<ImgHTMLAttributes<HTMLImageEleme
8
8
  variant?: BrandingLogoVariant;
9
9
  /**
10
10
  * URL used when no branding logo is configured for the current institution.
11
+ * When omitted, the Analytica Ensino logo bundled with the lib is used.
11
12
  */
12
13
  fallback?: string;
13
14
  }
14
15
  /**
15
16
  * Renders the institution logo (`<img>`) for the active white-label, reading
16
- * the URL from branding meta tags and falling back to a consumer-provided URL.
17
- * Returns `null` when neither a branding logo nor a fallback is available.
17
+ * the URL from branding meta tags and falling back to a consumer-provided URL,
18
+ * or ultimately the Analytica Ensino logo bundled with the lib.
18
19
  */
19
- export declare const BrandingLogo: ({ variant, fallback, alt, ...rest }: BrandingLogoProps) => import("react/jsx-runtime").JSX.Element | null;
20
+ export declare const BrandingLogo: ({ variant, fallback, alt, ...rest }: BrandingLogoProps) => import("react/jsx-runtime").JSX.Element;
20
21
  //# sourceMappingURL=BrandingLogo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrandingLogo.d.ts","sourceRoot":"","sources":["../../../src/components/BrandingLogo/BrandingLogo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAEL,mBAAmB,EACpB,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,iBAAiB,CAAC,gBAAgB,CAAC,EACnC,KAAK,CACN;IACC;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,qCAK1B,iBAAiB,mDAQnB,CAAC"}
1
+ {"version":3,"file":"BrandingLogo.d.ts","sourceRoot":"","sources":["../../../src/components/BrandingLogo/BrandingLogo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAEL,mBAAmB,EACpB,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,iBAAiB,CAAC,gBAAgB,CAAC,EACnC,KAAK,CACN;IACC;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,qCAK1B,iBAAiB,4CAInB,CAAC"}
@@ -24,6 +24,12 @@ __export(BrandingLogo_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(BrandingLogo_exports);
26
26
 
27
+ // src/assets/img/logo-analytica.png
28
+ var logo_analytica_default = "data:image/png;base64,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";
29
+
30
+ // src/assets/img/logo-analytica-light.png
31
+ var logo_analytica_light_default = "data:image/png;base64,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";
32
+
27
33
  // src/hooks/useTheme.ts
28
34
  var import_react = require("react");
29
35
 
@@ -200,8 +206,10 @@ var useBrandingLogo = ({
200
206
  fallback
201
207
  } = {}) => {
202
208
  const { branding } = useTheme();
203
- const logo = variant === "main" ? branding.mainLogo : branding.internalLogo;
204
- return logo ?? fallback;
209
+ const logo = (variant === "main" ? branding.mainLogo : branding.internalLogo)?.trim();
210
+ const consumerFallback = fallback?.trim();
211
+ const defaultFallback = variant === "main" ? logo_analytica_light_default : logo_analytica_default;
212
+ return logo || consumerFallback || defaultFallback;
205
213
  };
206
214
 
207
215
  // src/components/BrandingLogo/BrandingLogo.tsx
@@ -213,9 +221,6 @@ var BrandingLogo = ({
213
221
  ...rest
214
222
  }) => {
215
223
  const src = useBrandingLogo({ variant, fallback });
216
- if (!src) {
217
- return null;
218
- }
219
224
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", { src, alt, ...rest });
220
225
  };
221
226
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/BrandingLogo/BrandingLogo.tsx","../../src/hooks/useTheme.ts","../../src/store/themeStore.ts","../../src/hooks/useBrandingLogo.ts"],"sourcesContent":["import type { ImgHTMLAttributes } from 'react';\nimport {\n useBrandingLogo,\n BrandingLogoVariant,\n} from '../../hooks/useBrandingLogo';\n\nexport interface BrandingLogoProps extends Omit<\n ImgHTMLAttributes<HTMLImageElement>,\n 'src'\n> {\n /**\n * Which branding logo variant to render.\n * @default 'internal'\n */\n variant?: BrandingLogoVariant;\n /**\n * URL used when no branding logo is configured for the current institution.\n */\n fallback?: string;\n}\n\n/**\n * Renders the institution logo (`<img>`) for the active white-label, reading\n * the URL from branding meta tags and falling back to a consumer-provided URL.\n * Returns `null` when neither a branding logo nor a fallback is available.\n */\nexport const BrandingLogo = ({\n variant = 'internal',\n fallback,\n alt = 'Logo da Instituição',\n ...rest\n}: BrandingLogoProps) => {\n const src = useBrandingLogo({ variant, fallback });\n\n if (!src) {\n return null;\n }\n\n return <img src={src} alt={alt} {...rest} />;\n};\n","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","import { create } from 'zustand';\nimport { devtools, persist } from 'zustand/middleware';\n\nexport type ThemeMode = 'light' | 'dark' | 'system';\n\n/**\n * Theme store state interface\n */\nexport interface ThemeState {\n /**\n * Current theme mode\n */\n themeMode: ThemeMode;\n /**\n * Whether the current theme is dark\n */\n isDark: boolean;\n}\n\n/**\n * Theme store actions interface\n */\nexport interface ThemeActions {\n /**\n * Apply theme based on the mode selected\n */\n applyTheme: (mode: ThemeMode) => void;\n /**\n * Toggle between themes\n */\n toggleTheme: () => void;\n /**\n * Set a specific theme mode\n */\n setTheme: (mode: ThemeMode) => void;\n /**\n * Set the white-label theme from institution branding\n */\n setWhiteLabelTheme: (theme: string | null) => void;\n /**\n * Clear the white-label theme and revert to default\n */\n clearWhiteLabelTheme: () => void;\n /**\n * Initialize theme on app start\n */\n initializeTheme: () => void;\n /**\n * Handle system theme change\n */\n handleSystemThemeChange: () => void;\n}\n\nexport type ThemeStore = ThemeState & ThemeActions;\n\n/**\n * Mapa de tema light institucional → tema dark correspondente.\n * Adicionar entradas aqui ao introduzir novas instituições.\n */\nconst DARK_THEME_MAP: Record<string, string> = {\n 'base-light': 'base-dark',\n 'enem-parana-light': 'enem-parana-dark',\n 'enem-paraiba-light': 'enem-paraiba-dark',\n};\n\n/**\n * Resolve o seletor CSS dark concreto com base no tema institucional (light)\n * salvo em `data-original-theme`. Fallback: 'base-dark', que também responde\n * ao seletor legado [data-theme='dark'] preservando compat com apps antigos.\n */\nconst resolveDarkTheme = (originalTheme: string | undefined): string => {\n if (!originalTheme) return 'base-dark';\n return DARK_THEME_MAP[originalTheme] ?? 'base-dark';\n};\n\n/**\n * Apply theme to DOM based on mode\n */\nconst applyThemeToDOM = (mode: ThemeMode): boolean => {\n const htmlElement = document.documentElement;\n const originalTheme = htmlElement.dataset.originalTheme;\n\n if (mode === 'dark') {\n htmlElement.dataset.theme = resolveDarkTheme(originalTheme);\n return true;\n } else if (mode === 'light') {\n if (originalTheme) {\n htmlElement.dataset.theme = originalTheme;\n }\n return false;\n } else if (mode === 'system') {\n const isSystemDark = window.matchMedia(\n '(prefers-color-scheme: dark)'\n ).matches;\n if (isSystemDark) {\n htmlElement.dataset.theme = resolveDarkTheme(originalTheme);\n return true;\n } else if (originalTheme) {\n htmlElement.dataset.theme = originalTheme;\n return false;\n }\n }\n return false;\n};\n\n/**\n * Save original theme from white label (reads from HTML meta tag or data-theme attribute)\n */\nconst saveOriginalTheme = () => {\n const htmlElement = document.documentElement;\n const currentTheme =\n htmlElement.dataset.theme ||\n document.querySelector('meta[name=\"theme\"]')?.getAttribute('content');\n\n if (currentTheme && !htmlElement.dataset.originalTheme) {\n htmlElement.dataset.originalTheme = currentTheme;\n }\n};\n\n/**\n * Theme store using Zustand with persistence\n */\nexport const useThemeStore = create<ThemeStore>()(\n devtools(\n persist(\n (set, get) => ({\n // Initial state\n themeMode: 'system',\n isDark: false,\n\n // Actions\n applyTheme: (mode: ThemeMode) => {\n const isDark = applyThemeToDOM(mode);\n set({ isDark });\n },\n\n toggleTheme: () => {\n const { themeMode, applyTheme } = get();\n let newMode: ThemeMode;\n\n if (themeMode === 'light') {\n newMode = 'dark';\n } else if (themeMode === 'dark') {\n newMode = 'light';\n } else {\n // Se estiver em 'system', vai para 'dark'\n newMode = 'dark';\n }\n\n set({ themeMode: newMode });\n applyTheme(newMode);\n },\n\n setTheme: (mode: ThemeMode) => {\n const { applyTheme } = get();\n set({ themeMode: mode });\n applyTheme(mode);\n },\n\n setWhiteLabelTheme: (theme: string | null) => {\n const htmlElement = document.documentElement;\n\n if (theme) {\n // Set the white-label theme as the original theme\n htmlElement.dataset.originalTheme = theme;\n\n // Apply theme based on current mode\n const { themeMode, applyTheme } = get();\n if (themeMode === 'light' || themeMode === 'system') {\n htmlElement.dataset.theme = theme;\n }\n\n applyTheme(themeMode);\n }\n },\n\n clearWhiteLabelTheme: () => {\n const htmlElement = document.documentElement;\n\n // Remove white-label theme attributes\n delete htmlElement.dataset.originalTheme;\n delete htmlElement.dataset.theme;\n\n // Restore original theme from page metadata\n saveOriginalTheme();\n\n // Re-apply current theme mode to use defaults\n const { themeMode, applyTheme } = get();\n applyTheme(themeMode);\n },\n\n initializeTheme: () => {\n const { themeMode, applyTheme } = get();\n\n // Save original theme from white label\n saveOriginalTheme();\n\n // Apply the current theme mode\n applyTheme(themeMode);\n },\n\n handleSystemThemeChange: () => {\n const { themeMode, applyTheme } = get();\n // Only respond to system changes when in system mode\n if (themeMode === 'system') {\n applyTheme('system');\n }\n },\n }),\n {\n name: 'theme-store', // Nome da chave no localStorage\n partialize: (state) => ({\n themeMode: state.themeMode,\n }), // Só persiste o themeMode, não o isDark\n }\n ),\n {\n name: 'theme-store',\n }\n )\n);\n","import { useTheme } from './useTheme';\n\nexport type BrandingLogoVariant = 'main' | 'internal';\n\nexport interface UseBrandingLogoOptions {\n /**\n * Which branding logo variant to read from meta tags.\n * - `main`: reads `<meta name=\"main-logo\">`\n * - `internal`: reads `<meta name=\"internal-logo\">`\n * @default 'internal'\n */\n variant?: BrandingLogoVariant;\n /**\n * URL used when no branding logo is configured for the current institution\n * (e.g. an imported PNG asset shipped with the consumer app).\n */\n fallback?: string;\n}\n\n/**\n * Returns the institution logo URL for the current white-label, with a\n * consumer-provided fallback when no branding meta tag is set.\n */\nexport const useBrandingLogo = ({\n variant = 'internal',\n fallback,\n}: UseBrandingLogoOptions = {}): string | undefined => {\n const { branding } = useTheme();\n const logo = variant === 'main' ? branding.mainLogo : branding.internalLogo;\n return logo ?? fallback;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAmC;;;ACAnC,qBAAuB;AACvB,wBAAkC;AA0DlC,IAAM,iBAAyC;AAAA,EAC7C,cAAc;AAAA,EACd,qBAAqB;AAAA,EACrB,sBAAsB;AACxB;AAOA,IAAM,mBAAmB,CAAC,kBAA8C;AACtE,MAAI,CAAC,cAAe,QAAO;AAC3B,SAAO,eAAe,aAAa,KAAK;AAC1C;AAKA,IAAM,kBAAkB,CAAC,SAA6B;AACpD,QAAM,cAAc,SAAS;AAC7B,QAAM,gBAAgB,YAAY,QAAQ;AAE1C,MAAI,SAAS,QAAQ;AACnB,gBAAY,QAAQ,QAAQ,iBAAiB,aAAa;AAC1D,WAAO;AAAA,EACT,WAAW,SAAS,SAAS;AAC3B,QAAI,eAAe;AACjB,kBAAY,QAAQ,QAAQ;AAAA,IAC9B;AACA,WAAO;AAAA,EACT,WAAW,SAAS,UAAU;AAC5B,UAAM,eAAe,OAAO;AAAA,MAC1B;AAAA,IACF,EAAE;AACF,QAAI,cAAc;AAChB,kBAAY,QAAQ,QAAQ,iBAAiB,aAAa;AAC1D,aAAO;AAAA,IACT,WAAW,eAAe;AACxB,kBAAY,QAAQ,QAAQ;AAC5B,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAKA,IAAM,oBAAoB,MAAM;AAC9B,QAAM,cAAc,SAAS;AAC7B,QAAM,eACJ,YAAY,QAAQ,SACpB,SAAS,cAAc,oBAAoB,GAAG,aAAa,SAAS;AAEtE,MAAI,gBAAgB,CAAC,YAAY,QAAQ,eAAe;AACtD,gBAAY,QAAQ,gBAAgB;AAAA,EACtC;AACF;AAKO,IAAM,oBAAgB,uBAAmB;AAAA,MAC9C;AAAA,QACE;AAAA,MACE,CAAC,KAAK,SAAS;AAAA;AAAA,QAEb,WAAW;AAAA,QACX,QAAQ;AAAA;AAAA,QAGR,YAAY,CAAC,SAAoB;AAC/B,gBAAM,SAAS,gBAAgB,IAAI;AACnC,cAAI,EAAE,OAAO,CAAC;AAAA,QAChB;AAAA,QAEA,aAAa,MAAM;AACjB,gBAAM,EAAE,WAAW,WAAW,IAAI,IAAI;AACtC,cAAI;AAEJ,cAAI,cAAc,SAAS;AACzB,sBAAU;AAAA,UACZ,WAAW,cAAc,QAAQ;AAC/B,sBAAU;AAAA,UACZ,OAAO;AAEL,sBAAU;AAAA,UACZ;AAEA,cAAI,EAAE,WAAW,QAAQ,CAAC;AAC1B,qBAAW,OAAO;AAAA,QACpB;AAAA,QAEA,UAAU,CAAC,SAAoB;AAC7B,gBAAM,EAAE,WAAW,IAAI,IAAI;AAC3B,cAAI,EAAE,WAAW,KAAK,CAAC;AACvB,qBAAW,IAAI;AAAA,QACjB;AAAA,QAEA,oBAAoB,CAAC,UAAyB;AAC5C,gBAAM,cAAc,SAAS;AAE7B,cAAI,OAAO;AAET,wBAAY,QAAQ,gBAAgB;AAGpC,kBAAM,EAAE,WAAW,WAAW,IAAI,IAAI;AACtC,gBAAI,cAAc,WAAW,cAAc,UAAU;AACnD,0BAAY,QAAQ,QAAQ;AAAA,YAC9B;AAEA,uBAAW,SAAS;AAAA,UACtB;AAAA,QACF;AAAA,QAEA,sBAAsB,MAAM;AAC1B,gBAAM,cAAc,SAAS;AAG7B,iBAAO,YAAY,QAAQ;AAC3B,iBAAO,YAAY,QAAQ;AAG3B,4BAAkB;AAGlB,gBAAM,EAAE,WAAW,WAAW,IAAI,IAAI;AACtC,qBAAW,SAAS;AAAA,QACtB;AAAA,QAEA,iBAAiB,MAAM;AACrB,gBAAM,EAAE,WAAW,WAAW,IAAI,IAAI;AAGtC,4BAAkB;AAGlB,qBAAW,SAAS;AAAA,QACtB;AAAA,QAEA,yBAAyB,MAAM;AAC7B,gBAAM,EAAE,WAAW,WAAW,IAAI,IAAI;AAEtC,cAAI,cAAc,UAAU;AAC1B,uBAAW,QAAQ;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA;AAAA,QACN,YAAY,CAAC,WAAW;AAAA,UACtB,WAAW,MAAM;AAAA,QACnB;AAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAM;AAAA,IACR;AAAA,EACF;AACF;;;ADjNO,IAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,cAAc;AAGlB,QAAM,eAAW,sBAAQ,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,8BAAU,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;;;AE1DO,IAAM,kBAAkB,CAAC;AAAA,EAC9B,UAAU;AAAA,EACV;AACF,IAA4B,CAAC,MAA0B;AACrD,QAAM,EAAE,SAAS,IAAI,SAAS;AAC9B,QAAM,OAAO,YAAY,SAAS,SAAS,WAAW,SAAS;AAC/D,SAAO,QAAQ;AACjB;;;AHQS;AAZF,IAAM,eAAe,CAAC;AAAA,EAC3B,UAAU;AAAA,EACV;AAAA,EACA,MAAM;AAAA,EACN,GAAG;AACL,MAAyB;AACvB,QAAM,MAAM,gBAAgB,EAAE,SAAS,SAAS,CAAC;AAEjD,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACT;AAEA,SAAO,4CAAC,SAAI,KAAU,KAAW,GAAG,MAAM;AAC5C;","names":[]}
1
+ {"version":3,"sources":["../../src/components/BrandingLogo/BrandingLogo.tsx","../../src/hooks/useTheme.ts","../../src/store/themeStore.ts","../../src/hooks/useBrandingLogo.ts"],"sourcesContent":["import type { ImgHTMLAttributes } from 'react';\nimport {\n useBrandingLogo,\n BrandingLogoVariant,\n} from '../../hooks/useBrandingLogo';\n\nexport interface BrandingLogoProps extends Omit<\n ImgHTMLAttributes<HTMLImageElement>,\n 'src'\n> {\n /**\n * Which branding logo variant to render.\n * @default 'internal'\n */\n variant?: BrandingLogoVariant;\n /**\n * URL used when no branding logo is configured for the current institution.\n * When omitted, the Analytica Ensino logo bundled with the lib is used.\n */\n fallback?: string;\n}\n\n/**\n * Renders the institution logo (`<img>`) for the active white-label, reading\n * the URL from branding meta tags and falling back to a consumer-provided URL,\n * or ultimately the Analytica Ensino logo bundled with the lib.\n */\nexport const BrandingLogo = ({\n variant = 'internal',\n fallback,\n alt = 'Logo da Instituição',\n ...rest\n}: BrandingLogoProps) => {\n const src = useBrandingLogo({ variant, fallback });\n\n return <img src={src} alt={alt} {...rest} />;\n};\n","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","import { create } from 'zustand';\nimport { devtools, persist } from 'zustand/middleware';\n\nexport type ThemeMode = 'light' | 'dark' | 'system';\n\n/**\n * Theme store state interface\n */\nexport interface ThemeState {\n /**\n * Current theme mode\n */\n themeMode: ThemeMode;\n /**\n * Whether the current theme is dark\n */\n isDark: boolean;\n}\n\n/**\n * Theme store actions interface\n */\nexport interface ThemeActions {\n /**\n * Apply theme based on the mode selected\n */\n applyTheme: (mode: ThemeMode) => void;\n /**\n * Toggle between themes\n */\n toggleTheme: () => void;\n /**\n * Set a specific theme mode\n */\n setTheme: (mode: ThemeMode) => void;\n /**\n * Set the white-label theme from institution branding\n */\n setWhiteLabelTheme: (theme: string | null) => void;\n /**\n * Clear the white-label theme and revert to default\n */\n clearWhiteLabelTheme: () => void;\n /**\n * Initialize theme on app start\n */\n initializeTheme: () => void;\n /**\n * Handle system theme change\n */\n handleSystemThemeChange: () => void;\n}\n\nexport type ThemeStore = ThemeState & ThemeActions;\n\n/**\n * Mapa de tema light institucional → tema dark correspondente.\n * Adicionar entradas aqui ao introduzir novas instituições.\n */\nconst DARK_THEME_MAP: Record<string, string> = {\n 'base-light': 'base-dark',\n 'enem-parana-light': 'enem-parana-dark',\n 'enem-paraiba-light': 'enem-paraiba-dark',\n};\n\n/**\n * Resolve o seletor CSS dark concreto com base no tema institucional (light)\n * salvo em `data-original-theme`. Fallback: 'base-dark', que também responde\n * ao seletor legado [data-theme='dark'] preservando compat com apps antigos.\n */\nconst resolveDarkTheme = (originalTheme: string | undefined): string => {\n if (!originalTheme) return 'base-dark';\n return DARK_THEME_MAP[originalTheme] ?? 'base-dark';\n};\n\n/**\n * Apply theme to DOM based on mode\n */\nconst applyThemeToDOM = (mode: ThemeMode): boolean => {\n const htmlElement = document.documentElement;\n const originalTheme = htmlElement.dataset.originalTheme;\n\n if (mode === 'dark') {\n htmlElement.dataset.theme = resolveDarkTheme(originalTheme);\n return true;\n } else if (mode === 'light') {\n if (originalTheme) {\n htmlElement.dataset.theme = originalTheme;\n }\n return false;\n } else if (mode === 'system') {\n const isSystemDark = window.matchMedia(\n '(prefers-color-scheme: dark)'\n ).matches;\n if (isSystemDark) {\n htmlElement.dataset.theme = resolveDarkTheme(originalTheme);\n return true;\n } else if (originalTheme) {\n htmlElement.dataset.theme = originalTheme;\n return false;\n }\n }\n return false;\n};\n\n/**\n * Save original theme from white label (reads from HTML meta tag or data-theme attribute)\n */\nconst saveOriginalTheme = () => {\n const htmlElement = document.documentElement;\n const currentTheme =\n htmlElement.dataset.theme ||\n document.querySelector('meta[name=\"theme\"]')?.getAttribute('content');\n\n if (currentTheme && !htmlElement.dataset.originalTheme) {\n htmlElement.dataset.originalTheme = currentTheme;\n }\n};\n\n/**\n * Theme store using Zustand with persistence\n */\nexport const useThemeStore = create<ThemeStore>()(\n devtools(\n persist(\n (set, get) => ({\n // Initial state\n themeMode: 'system',\n isDark: false,\n\n // Actions\n applyTheme: (mode: ThemeMode) => {\n const isDark = applyThemeToDOM(mode);\n set({ isDark });\n },\n\n toggleTheme: () => {\n const { themeMode, applyTheme } = get();\n let newMode: ThemeMode;\n\n if (themeMode === 'light') {\n newMode = 'dark';\n } else if (themeMode === 'dark') {\n newMode = 'light';\n } else {\n // Se estiver em 'system', vai para 'dark'\n newMode = 'dark';\n }\n\n set({ themeMode: newMode });\n applyTheme(newMode);\n },\n\n setTheme: (mode: ThemeMode) => {\n const { applyTheme } = get();\n set({ themeMode: mode });\n applyTheme(mode);\n },\n\n setWhiteLabelTheme: (theme: string | null) => {\n const htmlElement = document.documentElement;\n\n if (theme) {\n // Set the white-label theme as the original theme\n htmlElement.dataset.originalTheme = theme;\n\n // Apply theme based on current mode\n const { themeMode, applyTheme } = get();\n if (themeMode === 'light' || themeMode === 'system') {\n htmlElement.dataset.theme = theme;\n }\n\n applyTheme(themeMode);\n }\n },\n\n clearWhiteLabelTheme: () => {\n const htmlElement = document.documentElement;\n\n // Remove white-label theme attributes\n delete htmlElement.dataset.originalTheme;\n delete htmlElement.dataset.theme;\n\n // Restore original theme from page metadata\n saveOriginalTheme();\n\n // Re-apply current theme mode to use defaults\n const { themeMode, applyTheme } = get();\n applyTheme(themeMode);\n },\n\n initializeTheme: () => {\n const { themeMode, applyTheme } = get();\n\n // Save original theme from white label\n saveOriginalTheme();\n\n // Apply the current theme mode\n applyTheme(themeMode);\n },\n\n handleSystemThemeChange: () => {\n const { themeMode, applyTheme } = get();\n // Only respond to system changes when in system mode\n if (themeMode === 'system') {\n applyTheme('system');\n }\n },\n }),\n {\n name: 'theme-store', // Nome da chave no localStorage\n partialize: (state) => ({\n themeMode: state.themeMode,\n }), // Só persiste o themeMode, não o isDark\n }\n ),\n {\n name: 'theme-store',\n }\n )\n);\n","import logoAnalytica from '../assets/img/logo-analytica.png';\nimport logoAnalyticaLight from '../assets/img/logo-analytica-light.png';\nimport { useTheme } from './useTheme';\n\nexport type BrandingLogoVariant = 'main' | 'internal';\n\nexport interface UseBrandingLogoOptions {\n /**\n * Which branding logo variant to read from meta tags.\n * - `main`: reads `<meta name=\"main-logo\">` (intended for dark backgrounds)\n * - `internal`: reads `<meta name=\"internal-logo\">` (intended for light backgrounds)\n * @default 'internal'\n */\n variant?: BrandingLogoVariant;\n /**\n * URL to use when no branding logo is configured for the current institution.\n * When omitted, the Analytica Ensino logo bundled with the lib is used —\n * the light variant for `main` (dark backgrounds) and the dark variant for\n * `internal` (light backgrounds).\n */\n fallback?: string;\n}\n\n/**\n * Returns the institution logo URL for the current white-label, falling back to\n * a consumer-provided URL or, ultimately, the Analytica Ensino logo bundled\n * with the lib (matching the requested variant for dark/light backgrounds).\n */\nexport const useBrandingLogo = ({\n variant = 'internal',\n fallback,\n}: UseBrandingLogoOptions = {}): string => {\n const { branding } = useTheme();\n const logo = (\n variant === 'main' ? branding.mainLogo : branding.internalLogo\n )?.trim();\n const consumerFallback = fallback?.trim();\n const defaultFallback =\n variant === 'main' ? logoAnalyticaLight : logoAnalytica;\n return logo || consumerFallback || defaultFallback;\n};\n"],"mappings":"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","names":[]}
@@ -1,3 +1,9 @@
1
+ // src/assets/img/logo-analytica.png
2
+ var logo_analytica_default = "data:image/png;base64,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";
3
+
4
+ // src/assets/img/logo-analytica-light.png
5
+ var logo_analytica_light_default = "data:image/png;base64,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";
6
+
1
7
  // src/hooks/useTheme.ts
2
8
  import { useEffect, useMemo } from "react";
3
9
 
@@ -174,8 +180,10 @@ var useBrandingLogo = ({
174
180
  fallback
175
181
  } = {}) => {
176
182
  const { branding } = useTheme();
177
- const logo = variant === "main" ? branding.mainLogo : branding.internalLogo;
178
- return logo ?? fallback;
183
+ const logo = (variant === "main" ? branding.mainLogo : branding.internalLogo)?.trim();
184
+ const consumerFallback = fallback?.trim();
185
+ const defaultFallback = variant === "main" ? logo_analytica_light_default : logo_analytica_default;
186
+ return logo || consumerFallback || defaultFallback;
179
187
  };
180
188
 
181
189
  // src/components/BrandingLogo/BrandingLogo.tsx
@@ -187,9 +195,6 @@ var BrandingLogo = ({
187
195
  ...rest
188
196
  }) => {
189
197
  const src = useBrandingLogo({ variant, fallback });
190
- if (!src) {
191
- return null;
192
- }
193
198
  return /* @__PURE__ */ jsx("img", { src, alt, ...rest });
194
199
  };
195
200
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useTheme.ts","../../src/store/themeStore.ts","../../src/hooks/useBrandingLogo.ts","../../src/components/BrandingLogo/BrandingLogo.tsx"],"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","import { create } from 'zustand';\nimport { devtools, persist } from 'zustand/middleware';\n\nexport type ThemeMode = 'light' | 'dark' | 'system';\n\n/**\n * Theme store state interface\n */\nexport interface ThemeState {\n /**\n * Current theme mode\n */\n themeMode: ThemeMode;\n /**\n * Whether the current theme is dark\n */\n isDark: boolean;\n}\n\n/**\n * Theme store actions interface\n */\nexport interface ThemeActions {\n /**\n * Apply theme based on the mode selected\n */\n applyTheme: (mode: ThemeMode) => void;\n /**\n * Toggle between themes\n */\n toggleTheme: () => void;\n /**\n * Set a specific theme mode\n */\n setTheme: (mode: ThemeMode) => void;\n /**\n * Set the white-label theme from institution branding\n */\n setWhiteLabelTheme: (theme: string | null) => void;\n /**\n * Clear the white-label theme and revert to default\n */\n clearWhiteLabelTheme: () => void;\n /**\n * Initialize theme on app start\n */\n initializeTheme: () => void;\n /**\n * Handle system theme change\n */\n handleSystemThemeChange: () => void;\n}\n\nexport type ThemeStore = ThemeState & ThemeActions;\n\n/**\n * Mapa de tema light institucional → tema dark correspondente.\n * Adicionar entradas aqui ao introduzir novas instituições.\n */\nconst DARK_THEME_MAP: Record<string, string> = {\n 'base-light': 'base-dark',\n 'enem-parana-light': 'enem-parana-dark',\n 'enem-paraiba-light': 'enem-paraiba-dark',\n};\n\n/**\n * Resolve o seletor CSS dark concreto com base no tema institucional (light)\n * salvo em `data-original-theme`. Fallback: 'base-dark', que também responde\n * ao seletor legado [data-theme='dark'] preservando compat com apps antigos.\n */\nconst resolveDarkTheme = (originalTheme: string | undefined): string => {\n if (!originalTheme) return 'base-dark';\n return DARK_THEME_MAP[originalTheme] ?? 'base-dark';\n};\n\n/**\n * Apply theme to DOM based on mode\n */\nconst applyThemeToDOM = (mode: ThemeMode): boolean => {\n const htmlElement = document.documentElement;\n const originalTheme = htmlElement.dataset.originalTheme;\n\n if (mode === 'dark') {\n htmlElement.dataset.theme = resolveDarkTheme(originalTheme);\n return true;\n } else if (mode === 'light') {\n if (originalTheme) {\n htmlElement.dataset.theme = originalTheme;\n }\n return false;\n } else if (mode === 'system') {\n const isSystemDark = window.matchMedia(\n '(prefers-color-scheme: dark)'\n ).matches;\n if (isSystemDark) {\n htmlElement.dataset.theme = resolveDarkTheme(originalTheme);\n return true;\n } else if (originalTheme) {\n htmlElement.dataset.theme = originalTheme;\n return false;\n }\n }\n return false;\n};\n\n/**\n * Save original theme from white label (reads from HTML meta tag or data-theme attribute)\n */\nconst saveOriginalTheme = () => {\n const htmlElement = document.documentElement;\n const currentTheme =\n htmlElement.dataset.theme ||\n document.querySelector('meta[name=\"theme\"]')?.getAttribute('content');\n\n if (currentTheme && !htmlElement.dataset.originalTheme) {\n htmlElement.dataset.originalTheme = currentTheme;\n }\n};\n\n/**\n * Theme store using Zustand with persistence\n */\nexport const useThemeStore = create<ThemeStore>()(\n devtools(\n persist(\n (set, get) => ({\n // Initial state\n themeMode: 'system',\n isDark: false,\n\n // Actions\n applyTheme: (mode: ThemeMode) => {\n const isDark = applyThemeToDOM(mode);\n set({ isDark });\n },\n\n toggleTheme: () => {\n const { themeMode, applyTheme } = get();\n let newMode: ThemeMode;\n\n if (themeMode === 'light') {\n newMode = 'dark';\n } else if (themeMode === 'dark') {\n newMode = 'light';\n } else {\n // Se estiver em 'system', vai para 'dark'\n newMode = 'dark';\n }\n\n set({ themeMode: newMode });\n applyTheme(newMode);\n },\n\n setTheme: (mode: ThemeMode) => {\n const { applyTheme } = get();\n set({ themeMode: mode });\n applyTheme(mode);\n },\n\n setWhiteLabelTheme: (theme: string | null) => {\n const htmlElement = document.documentElement;\n\n if (theme) {\n // Set the white-label theme as the original theme\n htmlElement.dataset.originalTheme = theme;\n\n // Apply theme based on current mode\n const { themeMode, applyTheme } = get();\n if (themeMode === 'light' || themeMode === 'system') {\n htmlElement.dataset.theme = theme;\n }\n\n applyTheme(themeMode);\n }\n },\n\n clearWhiteLabelTheme: () => {\n const htmlElement = document.documentElement;\n\n // Remove white-label theme attributes\n delete htmlElement.dataset.originalTheme;\n delete htmlElement.dataset.theme;\n\n // Restore original theme from page metadata\n saveOriginalTheme();\n\n // Re-apply current theme mode to use defaults\n const { themeMode, applyTheme } = get();\n applyTheme(themeMode);\n },\n\n initializeTheme: () => {\n const { themeMode, applyTheme } = get();\n\n // Save original theme from white label\n saveOriginalTheme();\n\n // Apply the current theme mode\n applyTheme(themeMode);\n },\n\n handleSystemThemeChange: () => {\n const { themeMode, applyTheme } = get();\n // Only respond to system changes when in system mode\n if (themeMode === 'system') {\n applyTheme('system');\n }\n },\n }),\n {\n name: 'theme-store', // Nome da chave no localStorage\n partialize: (state) => ({\n themeMode: state.themeMode,\n }), // Só persiste o themeMode, não o isDark\n }\n ),\n {\n name: 'theme-store',\n }\n )\n);\n","import { useTheme } from './useTheme';\n\nexport type BrandingLogoVariant = 'main' | 'internal';\n\nexport interface UseBrandingLogoOptions {\n /**\n * Which branding logo variant to read from meta tags.\n * - `main`: reads `<meta name=\"main-logo\">`\n * - `internal`: reads `<meta name=\"internal-logo\">`\n * @default 'internal'\n */\n variant?: BrandingLogoVariant;\n /**\n * URL used when no branding logo is configured for the current institution\n * (e.g. an imported PNG asset shipped with the consumer app).\n */\n fallback?: string;\n}\n\n/**\n * Returns the institution logo URL for the current white-label, with a\n * consumer-provided fallback when no branding meta tag is set.\n */\nexport const useBrandingLogo = ({\n variant = 'internal',\n fallback,\n}: UseBrandingLogoOptions = {}): string | undefined => {\n const { branding } = useTheme();\n const logo = variant === 'main' ? branding.mainLogo : branding.internalLogo;\n return logo ?? fallback;\n};\n","import type { ImgHTMLAttributes } from 'react';\nimport {\n useBrandingLogo,\n BrandingLogoVariant,\n} from '../../hooks/useBrandingLogo';\n\nexport interface BrandingLogoProps extends Omit<\n ImgHTMLAttributes<HTMLImageElement>,\n 'src'\n> {\n /**\n * Which branding logo variant to render.\n * @default 'internal'\n */\n variant?: BrandingLogoVariant;\n /**\n * URL used when no branding logo is configured for the current institution.\n */\n fallback?: string;\n}\n\n/**\n * Renders the institution logo (`<img>`) for the active white-label, reading\n * the URL from branding meta tags and falling back to a consumer-provided URL.\n * Returns `null` when neither a branding logo nor a fallback is available.\n */\nexport const BrandingLogo = ({\n variant = 'internal',\n fallback,\n alt = 'Logo da Instituição',\n ...rest\n}: BrandingLogoProps) => {\n const src = useBrandingLogo({ variant, fallback });\n\n if (!src) {\n return null;\n }\n\n return <img src={src} alt={alt} {...rest} />;\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/hooks/useTheme.ts","../../src/store/themeStore.ts","../../src/hooks/useBrandingLogo.ts","../../src/components/BrandingLogo/BrandingLogo.tsx"],"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","import { create } from 'zustand';\nimport { devtools, persist } from 'zustand/middleware';\n\nexport type ThemeMode = 'light' | 'dark' | 'system';\n\n/**\n * Theme store state interface\n */\nexport interface ThemeState {\n /**\n * Current theme mode\n */\n themeMode: ThemeMode;\n /**\n * Whether the current theme is dark\n */\n isDark: boolean;\n}\n\n/**\n * Theme store actions interface\n */\nexport interface ThemeActions {\n /**\n * Apply theme based on the mode selected\n */\n applyTheme: (mode: ThemeMode) => void;\n /**\n * Toggle between themes\n */\n toggleTheme: () => void;\n /**\n * Set a specific theme mode\n */\n setTheme: (mode: ThemeMode) => void;\n /**\n * Set the white-label theme from institution branding\n */\n setWhiteLabelTheme: (theme: string | null) => void;\n /**\n * Clear the white-label theme and revert to default\n */\n clearWhiteLabelTheme: () => void;\n /**\n * Initialize theme on app start\n */\n initializeTheme: () => void;\n /**\n * Handle system theme change\n */\n handleSystemThemeChange: () => void;\n}\n\nexport type ThemeStore = ThemeState & ThemeActions;\n\n/**\n * Mapa de tema light institucional → tema dark correspondente.\n * Adicionar entradas aqui ao introduzir novas instituições.\n */\nconst DARK_THEME_MAP: Record<string, string> = {\n 'base-light': 'base-dark',\n 'enem-parana-light': 'enem-parana-dark',\n 'enem-paraiba-light': 'enem-paraiba-dark',\n};\n\n/**\n * Resolve o seletor CSS dark concreto com base no tema institucional (light)\n * salvo em `data-original-theme`. Fallback: 'base-dark', que também responde\n * ao seletor legado [data-theme='dark'] preservando compat com apps antigos.\n */\nconst resolveDarkTheme = (originalTheme: string | undefined): string => {\n if (!originalTheme) return 'base-dark';\n return DARK_THEME_MAP[originalTheme] ?? 'base-dark';\n};\n\n/**\n * Apply theme to DOM based on mode\n */\nconst applyThemeToDOM = (mode: ThemeMode): boolean => {\n const htmlElement = document.documentElement;\n const originalTheme = htmlElement.dataset.originalTheme;\n\n if (mode === 'dark') {\n htmlElement.dataset.theme = resolveDarkTheme(originalTheme);\n return true;\n } else if (mode === 'light') {\n if (originalTheme) {\n htmlElement.dataset.theme = originalTheme;\n }\n return false;\n } else if (mode === 'system') {\n const isSystemDark = window.matchMedia(\n '(prefers-color-scheme: dark)'\n ).matches;\n if (isSystemDark) {\n htmlElement.dataset.theme = resolveDarkTheme(originalTheme);\n return true;\n } else if (originalTheme) {\n htmlElement.dataset.theme = originalTheme;\n return false;\n }\n }\n return false;\n};\n\n/**\n * Save original theme from white label (reads from HTML meta tag or data-theme attribute)\n */\nconst saveOriginalTheme = () => {\n const htmlElement = document.documentElement;\n const currentTheme =\n htmlElement.dataset.theme ||\n document.querySelector('meta[name=\"theme\"]')?.getAttribute('content');\n\n if (currentTheme && !htmlElement.dataset.originalTheme) {\n htmlElement.dataset.originalTheme = currentTheme;\n }\n};\n\n/**\n * Theme store using Zustand with persistence\n */\nexport const useThemeStore = create<ThemeStore>()(\n devtools(\n persist(\n (set, get) => ({\n // Initial state\n themeMode: 'system',\n isDark: false,\n\n // Actions\n applyTheme: (mode: ThemeMode) => {\n const isDark = applyThemeToDOM(mode);\n set({ isDark });\n },\n\n toggleTheme: () => {\n const { themeMode, applyTheme } = get();\n let newMode: ThemeMode;\n\n if (themeMode === 'light') {\n newMode = 'dark';\n } else if (themeMode === 'dark') {\n newMode = 'light';\n } else {\n // Se estiver em 'system', vai para 'dark'\n newMode = 'dark';\n }\n\n set({ themeMode: newMode });\n applyTheme(newMode);\n },\n\n setTheme: (mode: ThemeMode) => {\n const { applyTheme } = get();\n set({ themeMode: mode });\n applyTheme(mode);\n },\n\n setWhiteLabelTheme: (theme: string | null) => {\n const htmlElement = document.documentElement;\n\n if (theme) {\n // Set the white-label theme as the original theme\n htmlElement.dataset.originalTheme = theme;\n\n // Apply theme based on current mode\n const { themeMode, applyTheme } = get();\n if (themeMode === 'light' || themeMode === 'system') {\n htmlElement.dataset.theme = theme;\n }\n\n applyTheme(themeMode);\n }\n },\n\n clearWhiteLabelTheme: () => {\n const htmlElement = document.documentElement;\n\n // Remove white-label theme attributes\n delete htmlElement.dataset.originalTheme;\n delete htmlElement.dataset.theme;\n\n // Restore original theme from page metadata\n saveOriginalTheme();\n\n // Re-apply current theme mode to use defaults\n const { themeMode, applyTheme } = get();\n applyTheme(themeMode);\n },\n\n initializeTheme: () => {\n const { themeMode, applyTheme } = get();\n\n // Save original theme from white label\n saveOriginalTheme();\n\n // Apply the current theme mode\n applyTheme(themeMode);\n },\n\n handleSystemThemeChange: () => {\n const { themeMode, applyTheme } = get();\n // Only respond to system changes when in system mode\n if (themeMode === 'system') {\n applyTheme('system');\n }\n },\n }),\n {\n name: 'theme-store', // Nome da chave no localStorage\n partialize: (state) => ({\n themeMode: state.themeMode,\n }), // Só persiste o themeMode, não o isDark\n }\n ),\n {\n name: 'theme-store',\n }\n )\n);\n","import logoAnalytica from '../assets/img/logo-analytica.png';\nimport logoAnalyticaLight from '../assets/img/logo-analytica-light.png';\nimport { useTheme } from './useTheme';\n\nexport type BrandingLogoVariant = 'main' | 'internal';\n\nexport interface UseBrandingLogoOptions {\n /**\n * Which branding logo variant to read from meta tags.\n * - `main`: reads `<meta name=\"main-logo\">` (intended for dark backgrounds)\n * - `internal`: reads `<meta name=\"internal-logo\">` (intended for light backgrounds)\n * @default 'internal'\n */\n variant?: BrandingLogoVariant;\n /**\n * URL to use when no branding logo is configured for the current institution.\n * When omitted, the Analytica Ensino logo bundled with the lib is used —\n * the light variant for `main` (dark backgrounds) and the dark variant for\n * `internal` (light backgrounds).\n */\n fallback?: string;\n}\n\n/**\n * Returns the institution logo URL for the current white-label, falling back to\n * a consumer-provided URL or, ultimately, the Analytica Ensino logo bundled\n * with the lib (matching the requested variant for dark/light backgrounds).\n */\nexport const useBrandingLogo = ({\n variant = 'internal',\n fallback,\n}: UseBrandingLogoOptions = {}): string => {\n const { branding } = useTheme();\n const logo = (\n variant === 'main' ? branding.mainLogo : branding.internalLogo\n )?.trim();\n const consumerFallback = fallback?.trim();\n const defaultFallback =\n variant === 'main' ? logoAnalyticaLight : logoAnalytica;\n return logo || consumerFallback || defaultFallback;\n};\n","import type { ImgHTMLAttributes } from 'react';\nimport {\n useBrandingLogo,\n BrandingLogoVariant,\n} from '../../hooks/useBrandingLogo';\n\nexport interface BrandingLogoProps extends Omit<\n ImgHTMLAttributes<HTMLImageElement>,\n 'src'\n> {\n /**\n * Which branding logo variant to render.\n * @default 'internal'\n */\n variant?: BrandingLogoVariant;\n /**\n * URL used when no branding logo is configured for the current institution.\n * When omitted, the Analytica Ensino logo bundled with the lib is used.\n */\n fallback?: string;\n}\n\n/**\n * Renders the institution logo (`<img>`) for the active white-label, reading\n * the URL from branding meta tags and falling back to a consumer-provided URL,\n * or ultimately the Analytica Ensino logo bundled with the lib.\n */\nexport const BrandingLogo = ({\n variant = 'internal',\n fallback,\n alt = 'Logo da Instituição',\n ...rest\n}: BrandingLogoProps) => {\n const src = useBrandingLogo({ variant, fallback });\n\n return <img src={src} alt={alt} {...rest} />;\n};\n"],"mappings":";;;;;;;AAAA,SAAS,WAAW,eAAe;;;ACAnC,SAAS,cAAc;AACvB,SAAS,UAAU,eAAe;AA0DlC,IAAM,iBAAyC;AAAA,EAC7C,cAAc;AAAA,EACd,qBAAqB;AAAA,EACrB,sBAAsB;AACxB;AAOA,IAAM,mBAAmB,CAAC,kBAA8C;AACtE,MAAI,CAAC,cAAe,QAAO;AAC3B,SAAO,eAAe,aAAa,KAAK;AAC1C;AAKA,IAAM,kBAAkB,CAAC,SAA6B;AACpD,QAAM,cAAc,SAAS;AAC7B,QAAM,gBAAgB,YAAY,QAAQ;AAE1C,MAAI,SAAS,QAAQ;AACnB,gBAAY,QAAQ,QAAQ,iBAAiB,aAAa;AAC1D,WAAO;AAAA,EACT,WAAW,SAAS,SAAS;AAC3B,QAAI,eAAe;AACjB,kBAAY,QAAQ,QAAQ;AAAA,IAC9B;AACA,WAAO;AAAA,EACT,WAAW,SAAS,UAAU;AAC5B,UAAM,eAAe,OAAO;AAAA,MAC1B;AAAA,IACF,EAAE;AACF,QAAI,cAAc;AAChB,kBAAY,QAAQ,QAAQ,iBAAiB,aAAa;AAC1D,aAAO;AAAA,IACT,WAAW,eAAe;AACxB,kBAAY,QAAQ,QAAQ;AAC5B,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAKA,IAAM,oBAAoB,MAAM;AAC9B,QAAM,cAAc,SAAS;AAC7B,QAAM,eACJ,YAAY,QAAQ,SACpB,SAAS,cAAc,oBAAoB,GAAG,aAAa,SAAS;AAEtE,MAAI,gBAAgB,CAAC,YAAY,QAAQ,eAAe;AACtD,gBAAY,QAAQ,gBAAgB;AAAA,EACtC;AACF;AAKO,IAAM,gBAAgB,OAAmB;AAAA,EAC9C;AAAA,IACE;AAAA,MACE,CAAC,KAAK,SAAS;AAAA;AAAA,QAEb,WAAW;AAAA,QACX,QAAQ;AAAA;AAAA,QAGR,YAAY,CAAC,SAAoB;AAC/B,gBAAM,SAAS,gBAAgB,IAAI;AACnC,cAAI,EAAE,OAAO,CAAC;AAAA,QAChB;AAAA,QAEA,aAAa,MAAM;AACjB,gBAAM,EAAE,WAAW,WAAW,IAAI,IAAI;AACtC,cAAI;AAEJ,cAAI,cAAc,SAAS;AACzB,sBAAU;AAAA,UACZ,WAAW,cAAc,QAAQ;AAC/B,sBAAU;AAAA,UACZ,OAAO;AAEL,sBAAU;AAAA,UACZ;AAEA,cAAI,EAAE,WAAW,QAAQ,CAAC;AAC1B,qBAAW,OAAO;AAAA,QACpB;AAAA,QAEA,UAAU,CAAC,SAAoB;AAC7B,gBAAM,EAAE,WAAW,IAAI,IAAI;AAC3B,cAAI,EAAE,WAAW,KAAK,CAAC;AACvB,qBAAW,IAAI;AAAA,QACjB;AAAA,QAEA,oBAAoB,CAAC,UAAyB;AAC5C,gBAAM,cAAc,SAAS;AAE7B,cAAI,OAAO;AAET,wBAAY,QAAQ,gBAAgB;AAGpC,kBAAM,EAAE,WAAW,WAAW,IAAI,IAAI;AACtC,gBAAI,cAAc,WAAW,cAAc,UAAU;AACnD,0BAAY,QAAQ,QAAQ;AAAA,YAC9B;AAEA,uBAAW,SAAS;AAAA,UACtB;AAAA,QACF;AAAA,QAEA,sBAAsB,MAAM;AAC1B,gBAAM,cAAc,SAAS;AAG7B,iBAAO,YAAY,QAAQ;AAC3B,iBAAO,YAAY,QAAQ;AAG3B,4BAAkB;AAGlB,gBAAM,EAAE,WAAW,WAAW,IAAI,IAAI;AACtC,qBAAW,SAAS;AAAA,QACtB;AAAA,QAEA,iBAAiB,MAAM;AACrB,gBAAM,EAAE,WAAW,WAAW,IAAI,IAAI;AAGtC,4BAAkB;AAGlB,qBAAW,SAAS;AAAA,QACtB;AAAA,QAEA,yBAAyB,MAAM;AAC7B,gBAAM,EAAE,WAAW,WAAW,IAAI,IAAI;AAEtC,cAAI,cAAc,UAAU;AAC1B,uBAAW,QAAQ;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA;AAAA,QACN,YAAY,CAAC,WAAW;AAAA,UACtB,WAAW,MAAM;AAAA,QACnB;AAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAM;AAAA,IACR;AAAA,EACF;AACF;;;ADjNO,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;;;AErDO,IAAM,kBAAkB,CAAC;AAAA,EAC9B,UAAU;AAAA,EACV;AACF,IAA4B,CAAC,MAAc;AACzC,QAAM,EAAE,SAAS,IAAI,SAAS;AAC9B,QAAM,QACJ,YAAY,SAAS,SAAS,WAAW,SAAS,eACjD,KAAK;AACR,QAAM,mBAAmB,UAAU,KAAK;AACxC,QAAM,kBACJ,YAAY,SAAS,+BAAqB;AAC5C,SAAO,QAAQ,oBAAoB;AACrC;;;ACLS;AARF,IAAM,eAAe,CAAC;AAAA,EAC3B,UAAU;AAAA,EACV;AAAA,EACA,MAAM;AAAA,EACN,GAAG;AACL,MAAyB;AACvB,QAAM,MAAM,gBAAgB,EAAE,SAAS,SAAS,CAAC;AAEjD,SAAO,oBAAC,SAAI,KAAU,KAAW,GAAG,MAAM;AAC5C;","names":[]}
@@ -2,20 +2,23 @@ export type BrandingLogoVariant = 'main' | 'internal';
2
2
  export interface UseBrandingLogoOptions {
3
3
  /**
4
4
  * Which branding logo variant to read from meta tags.
5
- * - `main`: reads `<meta name="main-logo">`
6
- * - `internal`: reads `<meta name="internal-logo">`
5
+ * - `main`: reads `<meta name="main-logo">` (intended for dark backgrounds)
6
+ * - `internal`: reads `<meta name="internal-logo">` (intended for light backgrounds)
7
7
  * @default 'internal'
8
8
  */
9
9
  variant?: BrandingLogoVariant;
10
10
  /**
11
- * URL used when no branding logo is configured for the current institution
12
- * (e.g. an imported PNG asset shipped with the consumer app).
11
+ * URL to use when no branding logo is configured for the current institution.
12
+ * When omitted, the Analytica Ensino logo bundled with the lib is used —
13
+ * the light variant for `main` (dark backgrounds) and the dark variant for
14
+ * `internal` (light backgrounds).
13
15
  */
14
16
  fallback?: string;
15
17
  }
16
18
  /**
17
- * Returns the institution logo URL for the current white-label, with a
18
- * consumer-provided fallback when no branding meta tag is set.
19
+ * Returns the institution logo URL for the current white-label, falling back to
20
+ * a consumer-provided URL or, ultimately, the Analytica Ensino logo bundled
21
+ * with the lib (matching the requested variant for dark/light backgrounds).
19
22
  */
20
- export declare const useBrandingLogo: ({ variant, fallback, }?: UseBrandingLogoOptions) => string | undefined;
23
+ export declare const useBrandingLogo: ({ variant, fallback, }?: UseBrandingLogoOptions) => string;
21
24
  //# sourceMappingURL=useBrandingLogo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBrandingLogo.d.ts","sourceRoot":"","sources":["../../src/hooks/useBrandingLogo.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,yBAG7B,sBAA2B,KAAG,MAAM,GAAG,SAIzC,CAAC"}
1
+ {"version":3,"file":"useBrandingLogo.d.ts","sourceRoot":"","sources":["../../src/hooks/useBrandingLogo.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,yBAG7B,sBAA2B,KAAG,MAShC,CAAC"}