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.
- package/dist/BrandingLogo/index.d.ts +4 -3
- package/dist/BrandingLogo/index.d.ts.map +1 -1
- package/dist/BrandingLogo/index.js +10 -5
- package/dist/BrandingLogo/index.js.map +1 -1
- package/dist/BrandingLogo/index.mjs +10 -5
- package/dist/BrandingLogo/index.mjs.map +1 -1
- package/dist/hooks/useBrandingLogo/index.d.ts +10 -7
- package/dist/hooks/useBrandingLogo/index.d.ts.map +1 -1
- package/dist/hooks/useBrandingLogo/index.js +10 -2
- package/dist/hooks/useBrandingLogo/index.js.map +1 -1
- package/dist/hooks/useBrandingLogo/index.mjs +10 -2
- package/dist/hooks/useBrandingLogo/index.mjs.map +1 -1
- package/dist/hooks/useBrandingLogo.d.ts +10 -7
- package/dist/hooks/useBrandingLogo.d.ts.map +1 -1
- package/dist/index.js +10 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
*
|
|
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
|
|
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
|
|
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
|
-
|
|
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":"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","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
|
-
|
|
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":"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","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
|
|
12
|
-
*
|
|
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,
|
|
18
|
-
* consumer-provided
|
|
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
|
|
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":"
|
|
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"}
|