import React, { useState } from 'react';
import { Screen, View, Text } from '@idealyst/components';
import { ThemeSettings } from '@idealyst/theme';
import Switch from '../Switch';
/** Theme toggle using local state + ThemeSettings (no Unistyles runtime subscription) */
const ThemeToggleDemo: React.FC = () => {
const [isDark, setIsDark] = useState(false);
const handleToggle = (checked: boolean) => {
setIsDark(checked);
ThemeSettings.setTheme(checked ? 'dark' : 'light', checked ? 'dark' : 'light');
};
return (
Theme Toggle (tests backdrop reactivity)
);
};
export const SwitchExamples: React.FC = () => {
const [basicChecked, setBasicChecked] = useState(false);
const [labelledChecked, setLabelledChecked] = useState(false);
const [intentChecked, setIntentChecked] = useState({
primary: false,
success: false,
error: false,
warning: false,
neutral: false,
});
const [iconChecked, setIconChecked] = useState({
basic: false,
notifications: true,
visibility: false,
volume: true,
wifi: false,
});
return (
Switch Examples
Basic Switch
With Label
Label Position
Sizes
Intent Colors
setIntentChecked(prev => ({ ...prev, primary: checked }))}
intent="primary"
label="Primary"
/>
setIntentChecked(prev => ({ ...prev, success: checked }))}
intent="success"
label="Success"
/>
setIntentChecked(prev => ({ ...prev, error: checked }))}
intent="danger"
label="Error"
/>
setIntentChecked(prev => ({ ...prev, warning: checked }))}
intent="warning"
label="Warning"
/>
setIntentChecked(prev => ({ ...prev, neutral: checked }))}
intent="neutral"
label="Neutral"
/>
With Icons
setIconChecked(prev => ({ ...prev, basic: checked }))}
onIcon="check"
offIcon="close"
label="On/Off"
/>
setIconChecked(prev => ({ ...prev, notifications: checked }))}
onIcon="bell"
offIcon="bell-off"
intent="success"
label="Notifications"
/>
setIconChecked(prev => ({ ...prev, visibility: checked }))}
onIcon="eye"
offIcon="eye-off"
intent="primary"
label="Visibility"
/>
setIconChecked(prev => ({ ...prev, volume: checked }))}
onIcon="volume-high"
offIcon="volume-off"
intent="warning"
label="Sound"
size="lg"
/>
setIconChecked(prev => ({ ...prev, wifi: checked }))}
onIcon="wifi"
offIcon="wifi-off"
intent="danger"
label="WiFi Connection"
size="sm"
/>
Disabled States
);
};
export default SwitchExamples;