Tema (Modo Oscuro/Claro)
Sistema de gestión de temas con persistencia y detección automática.
1. Configuración del Layout
Debes incluir ThemeScript en el <head> de tu layout principal.
Este script se encarga de leer las preferencias del sistema o del localStorage inmediatamente
antes de renderizar la página, evitando el parpadeo de color.
---
import { ThemeScript } from "design-system-astro";
---
<html lang="es">
<head>
<ThemeScript />
</head>
<body>
<slot />
</body>
</html> 2. Componente de Toggle
Simplemente importa y coloca el componente ThemeToggle en tu Navbar,
Footer o cualquier área de configuración.
---
import { ThemeToggle } from "design-system-astro";
---
<ThemeToggle /> 3. Personalización
Puedes personalizar los iconos usando las props darkIcon y lightIcon,
o usar los slots dark y light para mayor control.
---
import { ThemeToggle } from "design-system-astro";
---
<ThemeToggle darkIcon="🌚" lightIcon="🌞" />
<!-- Or using slots -->
<ThemeToggle>
<span slot="light">LIGHT</span>
<span slot="dark">DARK</span>
</ThemeToggle> 3. Control Programático (theme.ts)
Si necesitas cambiar el tema manualmente desde otro script o componente, puedes importar las utilidades desde el sistema:
Ejemplo de cómo usar setTheme para cambiar el tema programáticamente.
import { setTheme } from "design-system-astro";
setTheme('dark'); // 'light' | 'dark' | 'system'