{{-- format-ignore-start --}}
@props([
'lightIcon' => 'sun',
'lightText' => 'Light',
'darkIcon' => 'moon',
'darkText' => 'Dark',
'systemIcon' => 'computer-desktop',
'systemText' => 'System',
'iconRight' => true,
'iconType' => 'outline',
'iconDir' => '',
'modular' => false,
'class' => '',
'nonce' => config('bladewind.script.nonce', null),
])
@php
$iconRight = parseBladewindVariable($iconRight);
$modular = parseBladewindVariable($modular);
@endphp
{{-- format-ignore-end --}}
@once
{{$lightText}}
{{$darkText}}
{{$systemText}}
const chooseTheme = (theme) => {
theme = (theme !== 'null' && theme !== undefined && theme !== null) ? theme : 'system';
addToStorage('theme', theme);
if (theme === 'dark' || theme === 'system') {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
hide('.theme-dark');
hide('.theme-light');
hide('.theme-system');
unhide(`.theme-${theme}`);
}
chooseTheme(getFromStorage('theme'));
// Listen for changes in the system theme
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (event) => {
chooseTheme(event.matches ? 'dark' : 'light');
});
@endonce