xtreme-ui
Version:
Collection of reusable components that can be used in web projects
2 lines (1 loc) • 1.68 kB
JavaScript
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),i=require("react"),H=require("clsx"),d=require("../../base/Button/Button.cjs"),y=require("../../base/Select/Select.cjs"),j=require("../../context/useContext.cjs"),g=require("../../hooks/useScreen.cjs"),E=require("../../../utils/helper/colorHelper.cjs"),s=require("../../../utils/constants/theme.cjs");;/* empty css */const O=Object.entries(s.ThemeColorsPreset).map(([r,l])=>({label:r.charAt(0).toUpperCase()+r.slice(1),value:l})),u=Object.values(s.ThemeColorsPreset),S=i.forwardRef((r,l)=>{const{className:M,type:f="secondary",size:a="default",iconType:m="solid"}=r,{themeScheme:e,setThemeScheme:x,themeColor:o,setThemeColor:h}=j.useXTheme(),n=g.useScreenType(),T=i.useMemo(()=>s.THEME_SCHEME[(s.THEME_SCHEME.findIndex(t=>t.name===e)+1)%s.THEME_SCHEME.length],[e]),b=i.useMemo(()=>{var t;return((t=s.THEME_SCHEME.find(q=>q.name===e))==null?void 0:t.icon)??""},[e]),C=i.useMemo(()=>u[(u.findIndex(t=>t===o)+1)%u.length],[o]),p=H("xtrThemeSwitch",M,!n.isMobile&&"withLabel");return!e||!E.isValidThemeColor(o)?null:c.jsxs("div",{ref:l,className:p,children:[c.jsx(d.Button,{className:"xtrThemeScheme",type:f,size:a,icon:b,iconType:m,label:n.isMobile?void 0:e,onClick:()=>T.name&&x(T.name)}),n.isLargest?c.jsx(y.Select,{clearable:!1,searchable:!1,size:a,icon:"f53f",iconType:m,placeholder:"Theme",options:O,value:o,onChange:h}):c.jsx(d.Button,{className:"xtrThemeColor",type:"primary",size:a,icon:"f53f",iconType:m,label:n.isMobile?void 0:E.getColorLabel(o),onClick:()=>C&&h(C)})]})});S.displayName="ThemeSwitch";exports.ThemeSwitch=S;