'use client'; import React, { type ComponentPropsWithoutRef, type FC, type ReactNode } from 'react'; import { SettingLayout } from '../../components/SettingLayout/SettingLayout'; import { DaisyTheme, DaisyThemeDemo, ThemeListSelector } from '../../daisy'; import { getPrefersColorSchema } from '../../utils/getPrefersColorSchema'; export namespace AppearanceSettingPage { export interface CompositeProps extends ComponentPropsWithoutRef<'div'> { children?: ReactNode; } export const Layout: FC< Omit, 'title'> & { title?: ReactNode; action?: ReactNode } > = ({ title, action, children, ...props }) => { return ( {children} ); }; export const Header: FC<{ title?: ReactNode; useSystemTheme?: boolean; onToggleSystemTheme?: (enabled: boolean) => void; }> = ({ title = '主题设置', useSystemTheme, onToggleSystemTheme }) => { const [{ theme }, update] = DaisyTheme.useThemeState(); const isSystemTheme = theme === 'system'; const handleToggle = () => { const newValue = isSystemTheme ? getPrefersColorSchema() : 'system'; update({ theme: newValue }); onToggleSystemTheme?.(newValue === 'system'); }; return (
{title}
); }; export const ThemeSelector: FC = () => { return ; }; export const Preview: FC = () => { return ; }; export const Content = () => { return ( <>
主题组件示例
); }; export const Composite: FC = ({ children, ...props }) => { return ( } {...props}> {children} ); }; }