{"version":3,"file":"ThemeSwitch.mjs","names":["Flexbox"],"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 { type DropdownItem } from '@/DropdownMenu';\nimport DropdownMenu 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      style={style}\n      variant={variant}\n      options={items.map((item: any) => ({\n        label: (\n          <Flexbox horizontal align={'center'} gap={8}>\n            <Icon icon={item.icon} />\n            {item.label}\n          </Flexbox>\n        ),\n        value: item.key,\n      }))}\n      onChange={onThemeSwitch}\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,MAAM,eAAqC,EACzC,OAAO,UACP,WACA,eACA,OAAO,QACP,SAAS;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACR,EACD,WACA,SACA,YACI;CACJ,MAAM,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,QAAD;EACa;EACX,cAAc;EACP;EACE;EACT,SAAS,MAAM,KAAK,UAAe;GACjC,OACE,qBAACA,mBAAD;IAAS,YAAA;IAAW,OAAO;IAAU,KAAK;cAA1C,CACE,oBAAC,MAAD,EAAM,MAAM,KAAK,MAAQ,CAAA,EACxB,KAAK,MACE;;GAEZ,OAAO,KAAK;GACb,EAAE;EACH,UAAU;EACV,CAAA,GAEF,oBAAC,cAAD;EAAqB;EAAO,cAAc;YACxC,oBAAC,YAAD;GACa;GACX,MAAM,iBAAiB;GACjB;GACC;GACE;GACT,CAAA;EACW,CAAA;;AAInB,YAAY,cAAc"}