UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines 3.11 kB
{"version":3,"file":"ThemeSwitch.mjs","names":["ThemeSwitch: FC<ThemeSwitchProps>","items: DropdownItem[]","Flexbox","Icon","DropdownMenu","ActionIcon"],"sources":["../../src/ThemeSwitch/ThemeSwitch.tsx"],"sourcesContent":["'use client';\n\nimport { Select } from 'antd';\nimport { Monitor, Moon, Sun } from 'lucide-react';\nimport { type FC, useMemo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport DropdownMenu from '@/DropdownMenu';\nimport type { DropdownItem } from '@/DropdownMenu';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport type { ThemeSwitchProps } from './type';\n\nconst DEFAULT_ICON_SET = {\n auto: Monitor,\n dark: Moon,\n light: Sun,\n};\n\nconst ThemeSwitch: FC<ThemeSwitchProps> = ({\n size = 'middle',\n themeMode,\n onThemeSwitch,\n type = 'icon',\n labels = {\n auto: 'System',\n dark: 'Dark',\n light: 'Light',\n },\n className,\n variant,\n style,\n}) => {\n const items: DropdownItem[] = useMemo(\n () => [\n {\n icon: DEFAULT_ICON_SET.auto,\n key: 'auto',\n label: labels.auto,\n onClick: () => onThemeSwitch('auto'),\n },\n {\n icon: DEFAULT_ICON_SET.light,\n key: 'light',\n label: labels.light,\n onClick: () => onThemeSwitch('light'),\n },\n {\n icon: DEFAULT_ICON_SET.dark,\n key: 'dark',\n label: labels.dark,\n onClick: () => onThemeSwitch('dark'),\n },\n ],\n [labels, onThemeSwitch],\n );\n\n return type === 'select' ? (\n <Select\n className={className}\n defaultValue={themeMode}\n onChange={onThemeSwitch}\n options={items.map((item: any) => ({\n label: (\n <Flexbox align={'center'} gap={8} horizontal>\n <Icon icon={item.icon} />\n {item.label}\n </Flexbox>\n ),\n value: item.key,\n }))}\n style={style}\n variant={variant}\n />\n ) : (\n <DropdownMenu items={items} nativeButton={false}>\n <ActionIcon\n className={className}\n icon={DEFAULT_ICON_SET[themeMode]}\n size={size}\n style={style}\n variant={variant}\n />\n </DropdownMenu>\n );\n};\n\nThemeSwitch.displayName = 'ThemeSwitch';\n\nexport default ThemeSwitch;\n"],"mappings":";;;;;;;;;;;;AAcA,MAAM,mBAAmB;CACvB,MAAM;CACN,MAAM;CACN,OAAO;CACR;AAED,MAAMA,eAAqC,EACzC,OAAO,UACP,WACA,eACA,OAAO,QACP,SAAS;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACR,EACD,WACA,SACA,YACI;CACJ,MAAMC,QAAwB,cACtB;EACJ;GACE,MAAM,iBAAiB;GACvB,KAAK;GACL,OAAO,OAAO;GACd,eAAe,cAAc,OAAO;GACrC;EACD;GACE,MAAM,iBAAiB;GACvB,KAAK;GACL,OAAO,OAAO;GACd,eAAe,cAAc,QAAQ;GACtC;EACD;GACE,MAAM,iBAAiB;GACvB,KAAK;GACL,OAAO,OAAO;GACd,eAAe,cAAc,OAAO;GACrC;EACF,EACD,CAAC,QAAQ,cAAc,CACxB;AAED,QAAO,SAAS,WACd,oBAAC;EACY;EACX,cAAc;EACd,UAAU;EACV,SAAS,MAAM,KAAK,UAAe;GACjC,OACE,qBAACC;IAAQ,OAAO;IAAU,KAAK;IAAG;eAChC,oBAACC,gBAAK,MAAM,KAAK,OAAQ,EACxB,KAAK;KACE;GAEZ,OAAO,KAAK;GACb,EAAE;EACI;EACE;GACT,GAEF,oBAACC;EAAoB;EAAO,cAAc;YACxC,oBAACC;GACY;GACX,MAAM,iBAAiB;GACjB;GACC;GACE;IACT;GACW;;AAInB,YAAY,cAAc;AAE1B,0BAAe"}