@lifeforge/ui
Version:
LifeForge UI component library
2 lines • 121 kB
JavaScript
var Cn=Object.defineProperty,wn=Object.defineProperties;var Nn=Object.getOwnPropertyDescriptors;var et=Object.getOwnPropertySymbols;var Uo=Object.prototype.hasOwnProperty,Qo=Object.prototype.propertyIsEnumerable;var qo=(e,t,o)=>t in e?Cn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,I=(e,t)=>{for(var o in t||(t={}))Uo.call(t,o)&&qo(e,o,t[o]);if(et)for(var o of et(t))Qo.call(t,o)&&qo(e,o,t[o]);return e},w=(e,t)=>wn(e,Nn(t));var tt=(e,t)=>{var o={};for(var r in e)Uo.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&et)for(var r of et(e))t.indexOf(r)<0&&Qo.call(e,r)&&(o[r]=e[r]);return o};var N=(e,t,o)=>new Promise((r,n)=>{var a=s=>{try{l(o.next(s))}catch(c){n(c)}},i=s=>{try{l(o.throw(s))}catch(c){n(c)}},l=s=>s.done?r(s.value):Promise.resolve(s.value).then(a,i);l((o=o.apply(e,t)).next())});import Ht from"lodash";import{memo as Jn,useMemo as Xn}from"react";import{useTranslation as Zn}from"react-i18next";var Sn={red:"rgb(244, 67, 54)",pink:"rgb(233, 30, 99)",purple:"rgb(156, 39, 176)",deepPurple:"rgb(103, 58, 183)",indigo:"rgb(63, 81, 181)",blue:"rgb(33, 150, 243)",lightBlue:"rgb(3, 169, 244)",cyan:"rgb(0, 188, 212)",teal:"rgb(0, 150, 136)",green:"rgb(76, 175, 80)",lightGreen:"rgb(139, 195, 74)",lime:"rgb(205, 220, 57)",yellow:"rgb(255, 235, 59)",amber:"rgb(255, 193, 7)",orange:"rgb(255, 152, 0)",deepOrange:"rgb(255, 87, 34)",brown:"rgb(121, 85, 72)",grey:"rgb(158, 158, 158)"},Ko=Sn;import $n from"lodash";import{useMemo as Jo}from"react";import Tn from"javascript-color-gradient";function Rn(e){return e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(t,o,r,n)=>"#"+o+o+r+r+n+n).substring(1).match(/.{2}/g).map(t=>parseInt(t,16))}function Pn(e,t,o){e/=255,t/=255,o/=255;let r=Math.max(e,t,o),n=Math.min(e,t,o),a,i,l=(r+n)/2;if(r===n)a=i=0;else{let s=r-n;switch(i=l>.5?s/(2-r-n):s/(r+n),r){case e:a=(t-o)/s+(t<o?6:0);break;case t:a=(o-e)/s+2;break;case o:a=(e-t)/s+4;break}a!==void 0&&(a/=6)}return[a!=null?a:0,i,l]}function Fn(e,t,o){let r,n,a;if(t===0)r=n=a=o;else{let l=function(d,p,m){return m<0&&(m+=1),m>1&&(m-=1),m<1/6?d+(p-d)*6*m:m<1/2?p:m<2/3?d+(p-d)*(2/3-m)*6:d};var i=l;let s=o<.5?o*(1+t):o+t-o*t,c=2*o-s;r=l(c,s,e+1/3),n=l(c,s,e),a=l(c,s,e-1/3)}return[r*255,n*255,a*255]}function ot(e,t,o){return"#"+[e,t,o].map(r=>{let n=Math.floor(r).toString(16);return n.length===1?"0"+n:n}).join("")}var Bt=(e,t)=>[e[0]*t[0]+e[1]*t[1]+e[2]*t[2],e[3]*t[0]+e[4]*t[1]+e[5]*t[2],e[6]*t[0]+e[7]*t[1]+e[8]*t[2]],Mn=([e,t,o])=>[e,isNaN(o)?0:t*Math.cos(o*Math.PI/180),isNaN(o)?0:t*Math.sin(o*Math.PI/180)],En=e=>e.map(t=>Math.abs(t)>.0031308?(t<0?-1:1)*(1.055*Math.abs(t)**(1/2.4)-.055):12.92*t),Ln=e=>{let o=Bt([1,.3963377773761749,.2158037573099136,1,-.1055613458156586,-.0638541728258133,1,-.0894841775298119,-1.2914855480194092],e).map(r=>r**3);return Bt([1.2268798758459243,-.5578149944602171,.2813910456659647,-.0405757452148008,1.112286803280317,-.0717110580655164,-.0763729366746601,-.4214933324022432,1.5869240198367816],o)},An=e=>Bt([3.2409699419045226,-1.537383177570094,-.4986107602930034,-.9692436362808796,1.8759675015077202,.04155505740717559,.05563007969699366,-.20397695888897652,1.0569715142428786],e),On=e=>En(An(Ln(Mn(e))));function Vo(e){let t=e.match(/\(([^)]+)\)/)[1],[o,r,n]=t.split(" ").map(i=>parseFloat(i));o/=100;let a=On([o,r,n]).map(i=>Math.max(0,Math.min(1,i)));return ot(Math.round(a[0]*255),Math.round(a[1]*255),Math.round(a[2]*255))}function Go(e,t,o){let r=e;if(t==="bg"){let[i,l,s]=Rn(e),[c,d,p]=Pn(i,l,s);p=o==="dark"?.4:.7;let[m,f,u]=Fn(c,d,p);r=ot(m,f,u)}let n=new Tn().setColorGradient("#FFFFFF",r,"#000000").setMidpoint(14).getColors().slice(1,-1);return[50,100,200,300,400,500,600,700,800,900,950].reduce((i,l,s)=>(i[l]=n[s],i),{})}import{createContext as Bn,useContext as Dn,useMemo as Hn}from"react";import{jsx as zn}from"react/jsx-runtime";var Yo=Bn(void 0),Du=({children:e,personalization:t})=>{let o=Hn(()=>I({apiHost:"",theme:"dark",themeColor:"lime",bgTemp:"zinc",bgImage:"",setTheme:()=>{},setThemeColor:()=>{},setBgTemp:()=>{},setBgImage:()=>{},language:"en",toggleSidebar:()=>{},sidebarExpanded:!0},t),[t==null?void 0:t.apiHost,t==null?void 0:t.theme,t==null?void 0:t.themeColor,t==null?void 0:t.bgTemp,t==null?void 0:t.bgImage,t==null?void 0:t.language,t==null?void 0:t.sidebarExpanded]);return zn(Yo.Provider,{value:o,children:e})},T=()=>{let e=Dn(Yo);if(e===void 0)throw new Error("useLifeforgeUIContext must be used within a LifeforgeUIProvider");return e};var _n={slate:{50:"rgb(248, 250, 252)",100:"rgb(241, 245, 249)",200:"rgb(226, 232, 240)",300:"rgb(203, 213, 225)",400:"rgb(148, 163, 184)",500:"rgb(100, 116, 139)",600:"rgb(71, 85, 105)",700:"rgb(51, 65, 85)",800:"rgb(30, 41, 59)",900:"rgb(15, 23, 42)",950:"rgb(2, 6, 23)"},gray:{50:"rgb(249, 250, 251)",100:"rgb(243, 244, 246)",200:"rgb(229, 231, 235)",300:"rgb(209, 213, 219)",400:"rgb(156, 163, 175)",500:"rgb(107, 114, 128)",600:"rgb(75, 85, 99)",700:"rgb(55, 65, 81)",800:"rgb(31, 41, 55)",900:"rgb(17, 24, 39)",950:"rgb(3, 7, 18)"},zinc:{50:"rgb(250, 250, 250)",100:"rgb(244, 244, 245)",200:"rgb(228, 228, 231)",300:"rgb(212, 212, 216)",400:"rgb(161, 161, 170)",500:"rgb(113, 113, 122)",600:"rgb(82, 82, 91)",700:"rgb(63, 63, 70)",800:"rgb(39, 39, 42)",900:"rgb(24, 24, 27)",950:"rgb(9, 9, 11)"},neutral:{50:"rgb(250, 250, 250)",100:"rgb(245, 245, 245)",200:"rgb(229, 229, 229)",300:"rgb(212, 212, 212)",400:"rgb(163, 163, 163)",500:"rgb(115, 115, 115)",600:"rgb(82, 82, 82)",700:"rgb(64, 64, 64)",800:"rgb(38, 38, 38)",900:"rgb(23, 23, 23)",950:"rgb(10, 10, 10)"},stone:{50:"rgb(250, 250, 249)",100:"rgb(245, 245, 244)",200:"rgb(231, 229, 228)",300:"rgb(214, 211, 209)",400:"rgb(168, 162, 158)",500:"rgb(120, 113, 108)",600:"rgb(87, 83, 78)",700:"rgb(68, 64, 60)",800:"rgb(41, 37, 36)",900:"rgb(28, 25, 23)",950:"rgb(12, 10, 9)"}};function ee(){let{theme:e,themeColor:t,bgTemp:o}=T(),r=Jo(()=>t.startsWith("#")?t:Ko[$n.camelCase(t.replace("theme-","").replace(/-/g," "))],[t]),n=Jo(()=>o.startsWith("#")?Go(o,"bg",e==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e):_n[o.replace("bg-","")],[o]);return{theme:r,bgTemp:n}}import Xo from"tinycolor2";var Wn=(e,t)=>`flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-lg p-4 ${e&&(t?"pl-5":"pr-5")} font-medium tracking-wide transition-all disabled:cursor-not-allowed`,qn=(e,t,o)=>{if(e)switch(t){case"plain":return"hover:bg-red-500/10 dark:hover:bg-red-500/10 text-red-500 hover:text-red-500 dark:hover:text-red-500 disabled:text-red-300 disabled:hover:text-red-300 disabled:hover:bg-transparent disabled:dark:hover:bg-transparent disabled:bg-transparent dark:disabled:bg-transparent dark:disabled:text-red-900/50 dark:disabled:hover:bg-transparent";case"tertiary":return"text-red-500 hover:bg-red-500/10 dark:hover:bg-red-500/10 disabled:hover:shadow-none disabled:hover:bg-transparent hover:shadow-custom disabled:text-red-300 disabled:hover:text-red-300 dark:disabled:text-red-900/50 dark:disabled:hover:bg-transparent";case"secondary":return"border-[1.6px] border-red-500 shadow-custom text-red-500 disabled:border-red-300 hover:bg-red-500/15 disabled:text-red-300 disabled:hover:border-red-300 disabled:hover:text-red-300 disabled:hover:bg-transparent dark:disabled:border-red-900/50 dark:disabled:text-red-900/50 dark:disabled:hover:border-red-900/50 dark:disabled:hover:bg-transparent";case"primary":default:return`bg-red-500 shadow-custom hover:bg-red-600 ${Xo(o).isLight()?"text-bg-800 dark:text-bg-800":"text-bg-50 dark:text-bg-50"} disabled:bg-red-500/10 disabled:text-red-300 disabled:hover:bg-red-500/10 dark:disabled:bg-red-500/10 dark:disabled:text-red-900/50 dark:disabled:hover:bg-red-500/10`}switch(t){case"plain":return"hover:bg-bg-200/50 dark:hover:bg-bg-800/50 text-bg-500 hover:text-bg-800 dark:hover:text-bg-50! disabled:hover:text-bg-300 disabled:dark:hover:text-bg-500 disabled:hover:bg-transparent disabled:dark:hover:bg-transparent disabled:text-bg-300 dark:disabled:text-bg-700 dark:disabled:hover:text-bg-700!";case"tertiary":return"text-custom-500 hover:bg-custom-500/15 disabled:hover:shadow-none disabled:hover:bg-transparent hover:shadow-custom dark:disabled:text-bg-700 dark:disabled:hover:text-bg-700 disabled:text-bg-300 disabled:hover:text-bg-300";case"secondary":return"border-[1.6px] border-custom-500 shadow-custom text-custom-500 hover:bg-custom-500/10 disabled:border-bg-300 disabled:text-bg-300 disabled:hover:border-bg-300 disabled:hover:text-bg-300 disabled:hover:bg-transparent dark:disabled:border-bg-700 dark:disabled:text-bg-700 dark:disabled:hover:border-bg-700";case"primary":default:return`bg-custom-500 shadow-custom hover:bg-custom-600 ${Xo(o).isLight()?"text-bg-800 dark:text-bg-800":"text-bg-50 dark:text-bg-50"} disabled:bg-bg-200 disabled:text-bg-400 disabled:hover:bg-bg-200 dark:disabled:bg-bg-800 dark:disabled:text-bg-700 dark:disabled:hover:bg-bg-800`}},Zo=(e,t,o,r,n,a)=>`${Wn(t,o)} ${qn(r,n,e)} ${a}`;import{Icon as Un}from"@iconify/react/dist/iconify.js";import Qn from"clsx";import{memo as Kn,useMemo as Vn}from"react";import{jsx as Yn}from"react/jsx-runtime";function Gn({icon:e,disabled:t,loading:o,iconClassName:r}){let n=Vn(()=>o?"svg-spinners:180-ring":t?"tabler:ban":e,[e,t,o]);return Yn(Un,{className:Qn("size-5 shrink-0",r),icon:n})}var Dt=Kn(Gn);import{jsx as jo,jsxs as ti}from"react/jsx-runtime";var jn={iconAtEnd:!1,loading:!1,disabled:!1,className:"",variant:"primary",isRed:!1,namespace:"common.buttons"};function ei(a){var i=a,{as:e,children:t,icon:o,onClick:r}=i,n=tt(i,["as","children","icon","onClick"]);let{theme:l}=ee(),s=e||"button",c=Xn(()=>I(I({},jn),n),[n]),d=Zo(l,!!t,c.iconAtEnd,c.isRed,c.variant,c.className),{t:p}=Zn(c.namespace);return ti(s,w(I({},n),{className:d,disabled:c.loading||c.disabled,type:"button",onClick:r,children:[!c.iconAtEnd&&jo(Dt,{disabled:c.disabled,icon:o,iconClassName:c.iconClassName,loading:c.loading}),t&&typeof t=="string"?p([`common.buttons:${Ht.camelCase(t)}`,`buttons.${Ht.camelCase(t)}`,`${c.tKey}.buttons.${Ht.camelCase(t)}`,t],c.tProps):t,c.iconAtEnd&&jo(Dt,{disabled:c.disabled,icon:o,iconClassName:c.iconClassName,loading:c.loading})]}))}var g=Jn(ei);import{Switch as oi}from"@headlessui/react";import zt from"clsx";import ri from"tinycolor2";import{jsx as er}from"react/jsx-runtime";function ai({checked:e,onChange:t}){let{theme:o}=ee(),r=()=>e?zt(ri(o).isLight()?"bg-bg-100 dark:bg-bg-800":"bg-bg-100","translate-x-6"):"translate-x-1 bg-bg-50 dark:bg-bg-500";return er(oi,{checked:e,className:zt("relative inline-flex h-6 w-11 shrink-0 items-center rounded-full",e?"bg-custom-500":"darker-component-bg-with-hover"),onChange:t,children:er("span",{className:zt("inline-block size-4 shrink-0 rounded-full transition",r())})})}var Ae=ai;import{Icon as ni}from"@iconify/react";import tr from"clsx";import{jsx as or}from"react/jsx-runtime";function ii({checked:e,onChange:t,className:o}){return or("button",{className:tr("flex-center ring-offset-bg-50 dark:ring-offset-bg-900 group relative z-50 size-5 shrink-0 cursor-pointer rounded-full ring-2 ring-offset-2 transition-all",e?"ring-custom-500":"ring-bg-200 hover:ring-bg-600! dark:ring-bg-500 dark:hover:ring-bg-300!",o),onClick:r=>{r.preventDefault(),r.stopPropagation(),t(r)},children:or(ni,{className:tr("size-4 stroke-1",e?"stroke-custom-500 text-custom-500":"stroke-bg-800 text-bg-800 dark:stroke-bg-100 dark:text-bg-100 opacity-0 group-hover:opacity-50"),icon:"uil:check"})})}var li=ii;import si from"clsx";import{jsx as mi}from"react/jsx-runtime";function ci({onClick:e,icon:t="tabler:plus",text:o="",hideWhen:r="sm",alwaysShow:n=!1,as:a,isRed:i,loading:l}){return mi(g,{alwaysShow:n,as:a!=null?a:"button",className:si("fixed bottom-6 right-6 z-[9992] shadow-lg",!n&&{sm:"sm:hidden",md:"md:hidden",lg:"lg:hidden",xl:"xl:hidden"}[r]),icon:t,isRed:i,loading:l,onClick:e,children:o})}var di=ci;import{useTranslation as pi}from"react-i18next";import{jsx as fi}from"react/jsx-runtime";function ui({onClick:e}){let{t}=pi("common.misc");return fi(g,{className:"hover:bg-transparent! dark:hover:bg-transparent! mb-2 w-min px-0 py-2 pl-2",icon:"tabler:chevron-left",variant:"plain",onClick:e,children:t(["buttons.goBack","Go Back"])})}var Oe=ui;import{Menu as bi,MenuButton as gi,MenuItems as xi,Transition as hi,TransitionChild as vi}from"@headlessui/react";import yi from"clsx";import{useCallback as Ii}from"react";import{jsx as rt,jsxs as Ci}from"react/jsx-runtime";function ki(e){let{children:t,anchor:o,classNames:r,customIcon:n,onClick:a,onClose:i}=e,l=Ii(s=>{s.preventDefault(),s.stopPropagation(),a!==void 0&&a(s)},[a]);return Ci(bi,{as:"div",className:r==null?void 0:r.wrapper,children:[rt(g,{as:gi,className:r==null?void 0:r.button,icon:n!=null?n:"tabler:dots-vertical",iconClassName:r==null?void 0:r.icon,variant:"plain",onClick:l}),rt(hi,{afterLeave:i,enter:"transition-opacity duration-200",enterFrom:"opacity-0",enterTo:"opacity-100",leave:"transition-opacity duration-150",leaveFrom:"opacity-100",leaveTo:"opacity-0",children:rt(vi,{children:rt(xi,{transition:!0,anchor:o!=null?o:"bottom end",className:yi("z-9999 border-bg-200 bg-bg-100 text-bg-500 focus:outline-hidden data-closed:scale-95 data-closed:opacity-0 dark:border-bg-700 dark:bg-bg-800 min-w-[var(--button-width)] overflow-auto rounded-md border text-base shadow-lg transition duration-100 ease-out [--anchor-gap:12px] empty:invisible",r==null?void 0:r.menu),children:t})})})]})}var $t=ki;import{Icon as wi}from"@iconify/react";import{jsx as _t,jsxs as rr}from"react/jsx-runtime";function Ni({icon:e,title:t,children:o,className:r}){return rr("div",{className:r,children:[rr("span",{className:"text-bg-500 flex items-center gap-3 p-4",children:[_t(wi,{className:"size-5",icon:e}),t]}),_t("div",{className:"p-4 pt-0",children:_t("ul",{className:"divide-bg-200 bg-bg-200/50 shadow-custom dark:divide-bg-700 dark:bg-bg-700/50 flex flex-col divide-y overflow-hidden rounded-md",children:o})})]})}var Si=Ni;import{MenuItem as Ti}from"@headlessui/react";import{Icon as Wt}from"@iconify/react";import ar from"clsx";import nr from"lodash";import{useTranslation as Ri}from"react-i18next";import{jsx as Be,jsxs as Li}from"react/jsx-runtime";function Pi(e,t,o){return e?"text-bg-300 dark:text-bg-700":t?`${o===!0?"text-red-600":"text-bg-800 dark:text-bg-50"} hover:text-bg-800 dark:hover:text-bg-50`:o?"text-red-500":"text-bg-500 dark:hover:text-bg-600"}function Fi(e){return e===!0?"text-red-600":"text-bg-800 dark:text-bg-50"}function Mi({icon:e,text:t,isRed:o=!1,onClick:r,isToggled:n=!1,disabled:a,preventDefault:i=!1,namespace:l="common.buttons",loading:s=!1,className:c}){let{t:d}=Ri(l||"common.buttons");return Be(Ti,{children:function({close:p}){return Li("button",{className:ar(Pi(a||s,n,o),!a&&!s&&"hover:bg-bg-200 dark:hover:bg-bg-700/50","flex w-full items-center gap-3 p-4 text-left transition-all",c),disabled:a||s,onClick:m=>{i&&m.preventDefault(),m.stopPropagation(),r(m,p)},children:[s?Be(Wt,{className:"size-5 shrink-0",icon:"svg-spinners:180-ring"}):typeof e=="string"?Be(Wt,{className:"size-5 shrink-0",icon:e}):e,Be("span",{className:"w-full truncate whitespace-nowrap",children:l!==!1?d([nr.camelCase(t),`buttons.${nr.camelCase(t)}`,t]):t}),n&&Be(Wt,{className:ar(Fi(o),"ml-4 size-5 shrink-0"),icon:"tabler:check"})]})}})}var Ei=Mi;import ol from"lodash";import{memo as rl,useMemo as al,useRef as nl,useState as il}from"react";import{useTranslation as ll}from"react-i18next";import{Icon as Ai}from"@iconify/react";import{jsx as ir}from"react/jsx-runtime";function Oi({actionButtonLoading:e,onActionButtonClick:t,actionButtonIcon:o}){return ir("button",{className:"text-bg-500 hover:bg-bg-300 hover:text-bg-800 focus:outline-hidden dark:hover:bg-bg-700/70 dark:hover:text-bg-200 mr-4 shrink-0 rounded-lg p-2 transition-all",disabled:e,tabIndex:-1,onClick:r=>{r.preventDefault(),r.stopPropagation(),t(r)},children:ir(Ai,{className:"size-6",icon:e?"svg-spinners:180-ring":o})})}var lr=Oi;import{Icon as Bi}from"@iconify/react";import Di from"clsx";import{memo as Hi}from"react";import{jsx as $i}from"react/jsx-runtime";function zi({icon:e,active:t,isFocused:o,className:r}){return $i(Bi,{className:Di("group-focus-within:text-custom-500! group-data-open:text-custom-500! size-6 shrink-0 transition-all",!t&&"text-bg-500",o&&"text-custom-500",r),icon:e})}var R=Hi(zi);import _i from"clsx";import{memo as Wi,useMemo as qi}from"react";import{jsx as Qi,jsxs as Ki}from"react/jsx-runtime";function Ui({label:e,active:t,focused:o,isListboxOrCombobox:r=!1,isCombobox:n=!1,required:a=!1}){let i=qi(()=>t?"top-5 -translate-y-1/2 text-[14px]":`top-1/2 -translate-y-1/2 ${r?`${n&&"group-focus-within:top-5 group-focus-within:text-[14px]"} group-data-open:top-5 group-data-open:text-[14px]`:"group-focus-within:top-5 group-focus-within:text-[14px]"}`,[t,r,n]);return Ki("span",{className:_i("text-bg-500 group-focus-within:text-custom-500! group-data-open:text-custom-500! pointer-events-none absolute left-[4.2rem] font-medium tracking-wide transition-all",o&&"text-custom-500",i),children:[e,a&&Qi("span",{className:"text-red-500",children:" *"})]})}var P=Wi(Ui);import Vi from"clsx";import{useCallback as sr}from"react";import{jsx as Yi}from"react/jsx-runtime";function Gi({darker:e=!1,className:t="",disabled:o=!1,inputRef:r,children:n}){let a=sr(l=>{l.target.tagName!=="BUTTON"&&(r==null?void 0:r.current)!==void 0&&r.current!==null&&(r.current.focus(),["INPUT","TEXTAREA"].includes(l.target.tagName)||r.current.setSelectionRange(r.current.value.length,r.current.value.length))},[r]),i=sr(l=>{l.key==="Enter"&&(l.preventDefault(),(r==null?void 0:r.current)!==void 0&&r.current!==null&&r.current.focus())},[r]);return Yi("div",{className:Vi("border-bg-500 bg-bg-200/50 shadow-custom focus-within:!border-custom-500 hover:bg-bg-200 group relative flex shrink-0 items-center gap-1 rounded-t-lg border-b-2 pl-6 transition-all",e?"component-bg-lighter-with-hover":"component-bg-with-hover",t,o?"pointer-events-none! opacity-50":"cursor-text"),role:"button",tabIndex:0,onClick:a,onFocus:a,onKeyDown:i,children:n})}var L=Gi;import Ji from"clsx";import{useCallback as Xi,useRef as Zi}from"react";import{Fragment as el,jsx as cr,jsxs as tl}from"react/jsx-runtime";function ji({value:e,setValue:t,isPassword:o=!1,inputMode:r,showPassword:n,placeholder:a,inputRef:i,reference:l,disabled:s=!1,noAutoComplete:c=!1,onKeyDown:d=()=>{},className:p="",onBlur:m=()=>{}}){let f=Zi(null),u=Xi(b=>{l&&(l.current=b),i&&(i.current=b),f.current=b},[]);return tl(el,{children:[o&&cr("input",{hidden:!0,type:"password",value:"",onChange:()=>{}}),cr("input",{ref:u,"aria-label":a,autoComplete:c?"off":"on",className:Ji("h-13 caret-custom-500 focus:outline-hidden focus:placeholder:text-bg-500 mt-6 w-full rounded-lg bg-transparent p-6 pl-4 tracking-wider placeholder:text-transparent",p),disabled:s,inputMode:r,placeholder:a,style:o&&n!==!0?{fontFamily:"Arial"}:{},type:o&&n!==!0?"password":"text",value:e,onBlur:b=>{m(),t(b.target.value.trim())},onChange:b=>{t(b.target.value)},onKeyDown:d})]})}var at=ji;import{jsx as De,jsxs as dr}from"react/jsx-runtime";function sl({actionButtonIcon:e="",actionButtonLoading:t=!1,className:o="",darker:r=!1,disabled:n=!1,icon:a,inputMode:i="text",isPassword:l=!1,name:s,noAutoComplete:c=!0,onActionButtonClick:d=()=>{},onKeyDown:p=()=>{},placeholder:m,ref:f,required:u,setValue:b,value:x,namespace:h,tKey:C}){let{t:y}=ll(h||void 0),[v,k]=il(!1),S=nl(null),O=al(()=>{if(!h)return s;let K=ol.camelCase(s),V=[C,"inputs",K,"label"].filter(Boolean).join("."),Le=[C,"inputs",K].filter(Boolean).join(".");return y([V,Le,s])},[h,s,C,y]);return dr(L,{className:o,darker:r,disabled:n,inputRef:S,children:[De(R,{active:!!x&&String(x).length>0,icon:a}),dr("div",{className:"flex w-full items-center gap-2",children:[De(P,{active:!!x&&String(x).length>0,label:O,required:u===!0}),De(at,{disabled:n,inputMode:i,inputRef:S,isPassword:l,noAutoComplete:c,placeholder:m,reference:f,setValue:b,showPassword:v,value:x,onKeyDown:p}),l&&De(g,{className:"mr-2",icon:v?"tabler:eye":"tabler:eye-off",variant:"plain",onMouseDown:()=>{k(!0)},onMouseUp:()=>{k(!1)},onTouchEnd:()=>{k(!1)},onTouchStart:()=>{k(!0)}}),e&&De(lr,{actionButtonIcon:e,actionButtonLoading:t,onActionButtonClick:d})]})]})}var ue=rl(sl);import mr from"lodash";import{useEffect as cl,useRef as dl}from"react";import{useTranslation as ml}from"react-i18next";import{jsx as qt,jsxs as pr}from"react/jsx-runtime";function pl({className:e="",darker:t=!1,disabled:o=!1,icon:r,name:n,placeholder:a,required:i,setValue:l,value:s,namespace:c,tKey:d}){let{t:p}=ml(c||void 0),m=dl(null);return cl(()=>{m.current&&(m.current.style.height="auto",m.current.style.height=m.current.scrollHeight+"px")},[s]),pr(L,{className:e,darker:t,disabled:o,inputRef:m,children:[qt(R,{active:!!s&&String(s).length>0,icon:r}),pr("div",{className:"flex w-full items-center gap-2",children:[qt(P,{active:!!s&&String(s).length>0,label:c!==!1?p([[d,"inputs",mr.camelCase(n),"label"].filter(f=>f).join("."),[d,"inputs",mr.camelCase(n)].filter(f=>f).join(".")]):n,required:i===!0}),qt("textarea",{ref:m,className:"outline-hidden focus:outline-hidden focus:placeholder:text-bg-500 -mb-3 mt-3 min-h-8 w-full resize-none rounded-lg bg-transparent p-6 pl-4 tracking-wide placeholder:text-transparent",placeholder:a,value:s,onInput:f=>{l(f.currentTarget.value)},onKeyDown:f=>{if(f.key==="Enter"){let u=f.currentTarget.selectionStart,b=f.currentTarget.value,x=b.slice(0,u)+`
`+b.slice(u);l(x),f.currentTarget.value=x,f.currentTarget.setSelectionRange(u+1,u+1),f.preventDefault()}}})]})]})}var He=pl;import{Icon as na}from"@iconify/react";import Kc from"clsx";import Vc from"lodash";import{useCallback as Gc,useRef as Yc}from"react";import{useTranslation as Jc}from"react-i18next";import{useQueryClient as as}from"@tanstack/react-query";import ns from"dayjs";import{useState as is}from"react";import{toast as ls}from"react-toastify";import{Icon as ul}from"@iconify/react";import{jsx as ur,jsxs as bl}from"react/jsx-runtime";function fl({message:e}){return bl("div",{className:"flex-center size-full flex-col gap-6",children:[ur(ul,{className:"size-12 text-red-500",icon:"tabler:alert-triangle"}),ur("p",{className:"text-center text-lg font-medium text-red-500",children:e})]})}var ze=fl;import{jsx as fr,jsxs as gl}from"react/jsx-runtime";function ne({customMessage:e}){return gl("div",{className:"flex-center size-full flex-col gap-6",children:[fr("span",{className:"loader"}),fr("p",{className:"text-bg-500 text-lg font-medium",children:e!=null?e:""})]})}import{Icon as xl}from"@iconify/react";import nt from"clsx";import{useTranslation as hl}from"react-i18next";import{jsx as it,jsxs as yl}from"react/jsx-runtime";function vl({onCTAClick:e,name:t,title:o,description:r,icon:n,ctaContent:a,ctaTProps:i,ctaIcon:l,customCTAButton:s,smaller:c=!1,namespace:d,tKey:p=""}){let{t:m}=hl(d||void 0);return yl("div",{className:nt("flex-center size-full flex-col",c?"gap-3":"gap-6"),children:[n!==void 0&&(typeof n=="string"?it(xl,{className:nt("text-bg-300 dark:text-bg-500 shrink-0",c?"size-24":"size-32"),icon:n}):n),it("h2",{className:nt("text-bg-500 px-6 text-center font-semibold",c?"text-3xl":"text-4xl"),children:t?m([p,"empty",t,"title"].filter(f=>f).join(".")):o}),it("p",{className:nt("text-bg-500 -mt-2 whitespace-pre-wrap px-6 text-center",c?"text-base":"text-lg"),children:t?m([p,"empty",t,"description"].filter(f=>f).join(".")):r}),s!=null?s:a&&e&&it(g,{className:"mt-6",icon:l!=null?l:"tabler:plus",tProps:i,onClick:()=>{e("create")},children:a})]})}var ie=vl;import{useTranslation as Il}from"react-i18next";import{Link as kl}from"react-router";import{jsx as $e,jsxs as br}from"react/jsx-runtime";function Cl(){let{t:e}=Il("common.misc");return br("div",{className:"flex-center w-full flex-col gap-6",children:[$e("span",{className:"text-custom-500 text-[10rem]",children:";-;"}),$e("h1",{className:"text-4xl font-semibold",children:e("notFound.title")}),$e("p",{className:"text-bg-500 text-xl",children:e("notFound.description")}),br("div",{className:"flex-center mt-6 gap-3",children:[$e(g,{as:kl,icon:"tabler:arrow-left",to:"/",children:e("buttons.goBack")}),$e(g,{as:"a",href:"https://github.com/Lifeforge-app/lifeforge/issues",icon:"tabler:bug",rel:"noopener noreferrer",target:"_blank",variant:"secondary",children:e("buttons.reportBug")})]})]})}var wl=Cl;import{Fragment as gr,jsx as lt}from"react/jsx-runtime";function Nl({query:e,children:t,showLoading:o=!0}){return e.isLoading||e.isPending||e.isFetching||e.isRefetching?o?lt(ne,{}):lt(gr,{}):e.isError||e.data===void 0?lt(ze,{message:"Failed to fetch data from server."}):lt(gr,{children:t(e.data)})}var Sl=Nl;import{useMutation as Pl}from"@tanstack/react-query";import{toast as xr}from"react-toastify";import{cookieParse as Tl}from"pocketbase";function Rl(e,t){return t?JSON.stringify(e):e}function B(i,l){return N(this,arguments,function*(e,t,{method:o="GET",body:r,timeout:n=3e4,raiseError:a=!0}={}){var p;let s=!!r&&!(r instanceof FormData||r instanceof URLSearchParams||r instanceof Blob),d=(p=Tl(document.cookie).session)!=null?p:"";try{let m=new URL(t,e),f=yield fetch(m.toString(),{method:o,signal:AbortSignal.timeout(n),headers:I({Authorization:d?`Bearer ${d}`:""},s?{"Content-Type":"application/json"}:{}),body:r&&Rl(r,s)});if(!f.ok){let b=yield f.json();throw new Error(b.message||"Failed to perform API request")}if(f.status===204)return;let u=yield f.json();if(u.state==="error")throw new Error(u.message||"API returned an error");if(u.state==="success")return u.data;throw new Error("Unexpected API response format")}catch(m){if(a)throw m instanceof Error?m:new Error("Failed to perform API request");return}})}function Fl(e,t,o,r){return Pl({mutationFn:n=>N(this,null,function*(){if(Object.values(n).some(a=>a instanceof File||typeof a=="object"&&(a==null?void 0:a.image)instanceof File)){let a=new FormData;return Object.entries(n).forEach(([i,l])=>{l instanceof File?a.append(i,l):typeof l=="object"&&(l==null?void 0:l.image)instanceof File?a.append(i,l.image):typeof l!="string"?a.append(i,JSON.stringify(l)):a.append(i,l)}),B(t,o,{method:e==="create"?"POST":"PATCH",body:a})}return Object.keys(n).forEach(a=>{let i=n[a];typeof i=="object"&&Object.keys(i!=null?i:{}).includes("image")&&(typeof i.image=="string"?n[a]=i.image:i.image||delete n[a])}),B(t,o,{method:e==="create"?"POST":"PATCH",body:n})}),onSuccess:n=>{var a;xr.success(`Successfully ${e==="create"?"created":"updated"}!`),(a=r==null?void 0:r.onSuccess)==null||a.call(r,n)},onSettled:()=>{var n;(n=r==null?void 0:r.onSettled)==null||n.call(r)},onError:n=>{var a;console.error(n),xr.error(`Failed to ${e==="create"?"create":"update"}`),(a=r==null?void 0:r.onError)==null||a.call(r)}})}var Ut=Fl;import{Icon as Qt}from"@iconify/react";import{useDebounce as hr}from"@uidotdev/usehooks";import vr from"clsx";import st from"lodash";import{memo as Ml}from"react";import{useTranslation as El}from"react-i18next";import{jsx as ke,jsxs as Kt}from"react/jsx-runtime";function Ll({title:e,needTranslate:t=!0,icon:o,hasAI:r=!1,onClose:n,actionButtonIcon:a,actionButtonIsRed:i=!1,onActionButtonClick:l,className:s="",appendTitle:c,namespace:d="common.modals"}){let{t:p}=El(d),m=hr(e,100),f=hr(o,100);return Kt("div",{className:vr("flex-between mb-4 flex gap-3",s),children:[Kt("h1",{className:"flex w-full min-w-0 items-center gap-3 text-2xl font-semibold",children:[ke(Qt,{className:"size-7 shrink-0",icon:f}),ke("span",{className:"min-w-0 truncate",children:t?p([`modals.${st.camelCase(m)}.title`,`modals.${st.camelCase(m)}`,`${st.camelCase(m)}.title`,`${st.camelCase(m)}`,`${m}.title`,`${m}`,`modals.${m}.title`,`modals.${m}`,m]):m}),r&&ke(Qt,{className:"size-5 shrink-0 text-yellow-500",icon:"mage:stars-c"}),c]}),Kt("div",{className:"flex items-center gap-2",children:[a!==void 0&&ke("button",{className:vr("hover:bg-bg-100 dark:hover:bg-bg-800 rounded-md p-2 transition-all",i?"text-red-500 hover:text-red-600":"text-bg-500 hover:text-bg-200"),onClick:l,children:ke(Qt,{className:"size-6",icon:a})}),ke(g,{icon:"tabler:x",iconClassName:"size-6",variant:"plain",onClick:n})]})]})}var F=Ml(Ll,(e,t)=>e.title===t.title&&e.icon===t.icon&&e.actionButtonIcon===t.actionButtonIcon&&e.actionButtonIsRed===t.actionButtonIsRed&&e.className===t.className&&e.appendTitle===t.appendTitle);import{Icon as Al}from"@iconify/react/dist/iconify.js";import yr from"lodash";import{useTranslation as Ol}from"react-i18next";import{jsx as Vt,jsxs as Ir}from"react/jsx-runtime";function Bl({field:e,selectedData:t,namespace:o,handleChange:r}){let{t:n}=Ol(o);return Ir("div",{className:"flex items-center justify-between py-2",children:[Ir("div",{className:"flex items-center gap-2",children:[Vt(Al,{className:"size-6",icon:e.icon}),Vt("span",{className:"text-lg",children:n([["inputs",yr.camelCase(e.label),"label"].filter(a=>a).join("."),["inputs",yr.camelCase(e.label)].filter(a=>a).join(".")])})]}),Vt(Ae,{checked:t,onChange:()=>{r(!t)}})]})}var kr=Bl;import{jsx as Hl}from"react/jsx-runtime";function Dl({field:e,selectedData:t,namespace:o,handleChange:r}){return Hl(Gt,{color:t,disabled:e.disabled,name:e.label,namespace:o,required:e.required,setColor:r})}var Cr=Dl;import{jsx as $l}from"react/jsx-runtime";function zl({field:e,selectedData:t,namespace:o,handleChange:r}){return $l(Yt,{darker:!0,date:t,disabled:e.disabled,hasTime:e.hasTime,icon:e.icon,name:e.label,namespace:o,required:e.required,setDate:r})}var wr=zl;import{jsx as Wl}from"react/jsx-runtime";function _l({field:e,selectedData:t,namespace:o,handleChange:r}){return Wl(Jt,{enablePixabay:!0,enableUrl:!0,acceptedMimeTypes:{images:["image/png","image/jpeg","image/webp"]},defaultAIPrompt:e.defaultImageGenerationPrompt,disabled:e.disabled,enableAI:e.enableAIImageGeneration,icon:"tabler:file",image:t.image,name:e.label,namespace:o,preview:t.preview,required:e.required,setData:r,onImageRemoved:()=>r({image:null,preview:null})})}var Nr=_l;import{jsx as Ul}from"react/jsx-runtime";function ql({field:e,selectedData:t,namespace:o,handleChange:r}){return Ul(Xt,{disabled:e.disabled,icon:t,name:e.label,namespace:o,required:e.required,setIcon:r})}var Sr=ql;import{Icon as ct}from"@iconify/react";import{Fragment as Ql}from"react/jsx-runtime";import{Fragment as Zt,jsx as Y,jsxs as dt}from"react/jsx-runtime";function Kl({field:e,selectedData:t,namespace:o,handleChange:r}){var n,a,i,l,s,c,d,p,m,f;return dt(U,{buttonContent:e.multiple===!0&&Array.isArray(t)?Y(Zt,{children:t.length>0?t.map((u,b)=>{var x,h,C,y;return dt(Ql,{children:[Y(ct,{className:"size-5",icon:(h=(x=e.options.find(v=>v.value===u))==null?void 0:x.icon)!=null?h:""}),Y("span",{className:"-mt-px block truncate",children:(y=(C=e.options.find(v=>v.value===u))==null?void 0:C.text)!=null?y:"None"}),b!==t.length-1&&Y(ct,{className:"size-1",icon:"tabler:circle-filled"})]},u)}):dt(Zt,{children:[e.nullOption!==void 0&&Y(ct,{className:"size-5",icon:e.nullOption}),"None"]})}):dt(Zt,{children:[!!((a=(n=e.options.find(u=>u.value===t))==null?void 0:n.icon)!=null?a:e.nullOption)&&Y(ct,{className:"size-5",icon:(s=(l=(i=e.options.find(u=>u.value===t))==null?void 0:i.icon)!=null?l:e.nullOption)!=null?s:"",style:{color:(c=e.options.find(u=>u.value===t))==null?void 0:c.color}}),e.options.length&&e.options[0].icon===void 0&&e.options[0].color!==void 0&&Y("span",{className:"size-2 rounded-full",style:{backgroundColor:(d=e.options.find(u=>u.value===t))==null?void 0:d.color}}),Y("span",{className:"-mt-px block truncate",children:(m=(p=e.options.find(u=>u.value===t))==null?void 0:p.text)!=null?m:"None"})]}),disabled:e.disabled,icon:e.icon,multiple:e.multiple,name:e.label,namespace:o,required:e.required,setValue:r,type:"listbox",value:t,children:[e.nullOption!==void 0&&Y(jt,{hasBgColor:((f=e.options[0])==null?void 0:f.color)!==void 0,icon:e.nullOption}),e.options.map(({text:u,color:b,icon:x,value:h})=>Y(Q,{color:b,icon:x,text:u,value:h},h))]})}var Tr=Kl;import{jsx as Gl}from"react/jsx-runtime";function Vl({field:e,selectedData:t,namespace:o,handleChange:r}){return Gl(eo,{disabled:e.disabled,label:e.label,location:t,namespace:o,required:e.required,setLocation:n=>r(n)})}var Rr=Vl;import{jsx as Jl}from"react/jsx-runtime";function Yl({field:e,selectedData:t,namespace:o,handleChange:r}){return Jl(He,{darker:!0,disabled:e.disabled,icon:e.icon,name:e.label,namespace:o,placeholder:e.placeholder,required:e.required,setValue:r,value:t})}var Pr=Yl;import{useState as Xl}from"react";import{Fragment as jl,jsx as Fr,jsxs as es}from"react/jsx-runtime";function Zl({field:e,selectedData:t,namespace:o,handleChange:r}){let[n,a]=Xl(!1);return es(jl,{children:[Fr(ue,{darker:!0,actionButtonIcon:e.qrScanner?"tabler:qrcode":"",disabled:e.disabled,icon:e.icon,isPassword:e.isPassword,name:e.label,namespace:o,placeholder:e.placeholder,required:e.required,setValue:r,value:t,onActionButtonClick:()=>{a(!0)}}),Fr(to,{isOpen:n,onClose:()=>{a(!1)},onScanned:i=>{r(i),a(!1)}})]})}var Mr=Zl;import{Fragment as Er,jsx as H}from"react/jsx-runtime";function ts({fields:e,data:t,setData:o,namespace:r}){let n=a=>i=>{o(l=>w(I({},l),{[a.id]:i}))};return H("div",{className:"space-y-3",children:e.map(a=>{let i=t[a.id];if(a.hidden)return H(Er,{});switch(a.type){case"text":return H(Mr,{field:a,handleChange:n(a),namespace:r,selectedData:i},a.id);case"textarea":return H(Pr,{field:a,handleChange:n(a),namespace:r,selectedData:i},a.id);case"datetime":return H(wr,{field:a,handleChange:n(a),namespace:r,selectedData:i},a.id);case"listbox":return H(Tr,{field:a,handleChange:n(a),namespace:r,selectedData:i},a.id);case"color":return H(Cr,{field:a,handleChange:n(a),namespace:r,selectedData:i},a.id);case"icon":return H(Sr,{field:a,handleChange:n(a),namespace:r,selectedData:i},a.id);case"location":return H(Rr,{field:a,handleChange:n(a),namespace:r,selectedData:i},a.id);case"checkbox":return H(kr,{field:a,handleChange:n(a),namespace:r,selectedData:i},a.id);case"file":return H(Nr,{field:a,handleChange:n(a),namespace:r,selectedData:i},a.id);default:return H(Er,{})}})})}var Lr=ts;import{Fragment as rs,jsx as oo}from"react/jsx-runtime";function os({submitButtonProps:e,submitLoading:t,openType:o,onSubmitButtonClick:r}){return e?oo(g,w(I({className:"mt-6 w-full"},e),{loading:t,onClick:r})):["create","update"].includes(o!=null?o:"")?oo(g,{className:"mt-6 w-full",icon:o==="create"?"tabler:plus":"tabler:pencil",loading:t,onClick:r,children:o==="create"?"Create":"Update"}):oo(rs,{})}var Ar=os;import{Fragment as ds,jsx as mt,jsxs as Or}from"react/jsx-runtime";function ss({fields:e,additionalFields:t,data:o,setData:r,title:n,icon:a,openType:i,onClose:l,loading:s=!1,onSubmit:c,id:d,endpoint:p,queryKey:m,getFinalData:f,sortBy:u,sortMode:b,submitButtonProps:x={children:"Submit",icon:"tabler:check"},customUpdateDataList:h,actionButtonIcon:C,actionButtonIsRed:y,onActionButtonClick:v,namespace:k}){let{apiHost:S}=T(),O=as(),[K,V]=is(!1),Le=Ut("create",S,p!=null?p:"",{onSettled:()=>{V(!1)},onSuccess:j=>{h!=null&&h.create?h.create(j):O.setQueryData(m!=null?m:[],ae=>ae?[...ae,j].sort((q,E)=>u?b==="asc"?q[u]>E[u]?1:-1:q[u]<E[u]?1:-1:0):[]),l()}}),G=Ut("update",S,`${p}/${d}`,{onSettled:()=>{V(!1)},onSuccess:j=>{h!=null&&h.update?h.update(j):O.setQueryData(m!=null?m:[],ae=>ae?ae.map(q=>q.id===j.id?j:q).sort((q,E)=>u?b==="asc"?q[u]>E[u]?1:-1:q[u]<E[u]?1:-1:0):[]),l()}});function Ie(){return N(this,null,function*(){let ae=e.filter(E=>E.required).filter(E=>{let M=o[E.id];return!M||typeof M=="string"&&!M.trim()||typeof M=="object"&&!Array.isArray(M)&&!M.image&&JSON.stringify(M)==="{}"});if(ae.length){ls.error(`The following fields are required: ${ae.map(E=>E.label).join(", ")}`);return}V(!0);let q=Object.fromEntries(Object.entries(f?yield f(o):o).map(([E,M])=>M instanceof Date?[E,ns(M).format("YYYY-MM-DDTHH:mm:ssZ")]:typeof M=="object"&&"image"in(M!=null?M:{})?[E,M.image]:JSON.parse(JSON.stringify([E,M]))));if(c){yield c(),V(!1);return}i==="create"?Le.mutate(q):i==="update"&&G.mutate(q)})}return Or("div",{className:"min-w-[50vw]",children:[mt(F,{actionButtonIcon:C,actionButtonIsRed:y,icon:a,namespace:k,title:n,onActionButtonClick:v,onClose:l}),s?mt(ne,{}):Or(ds,{children:[mt(Lr,{data:o,fields:e,namespace:k,setData:r}),t,mt(Ar,{openType:i,submitButtonProps:x,submitLoading:K,onSubmitButtonClick:Ie})]})]})}var cs=ss;import{useQueryClient as ms}from"@tanstack/react-query";import{useCallback as Br,useMemo as ps,useState as Dr}from"react";import{useTranslation as us}from"react-i18next";import{toast as fs}from"react-toastify";import{Fragment as xs,jsx as _e,jsxs as Hr}from"react/jsx-runtime";function bs({onClose:e,data:{itemName:t,data:o,updateDataList:r,apiEndpoint:n,customTitle:a,customText:i,nameKey:l,customCallback:s,customConfirmButtonIcon:c,customConfirmButtonText:d,customOnClick:p,queryKey:m,queryUpdateType:f="mutate",multiQueryKey:u=!1,confirmationText:b=""}}){let{apiHost:x}=T(),{t:h}=us("common.modals"),[C,y]=Dr(!1),v=ms(),[k,S]=Dr(""),O=ps(()=>Array.isArray(o)?`${o.length} ${t}`:l?o==null?void 0:o[l]:`the ${t}`,[o,t,l]),K=Br(G=>Array.isArray(o)?G.filter(Ie=>!o.some(j=>j.id===Ie.id)):G.filter(Ie=>Ie.id!==o.id),[o]),V=Br(()=>{!o||!m||(u?m.forEach(G=>{f==="mutate"&&v.setQueryData(G,K),f==="invalidate"&&v.invalidateQueries({queryKey:G})}):(f==="mutate"&&v.setQueryData(m,K),f==="invalidate"&&v.invalidateQueries({queryKey:m})))},[o,m,f,u,K]);function Le(){return N(this,null,function*(){var G;if(o!==null){y(!0),yield B(x,`${n}/${Array.isArray(o)?"":(G=o==null?void 0:o.id)!=null?G:""}`,{method:"DELETE",body:Array.isArray(o)?{ids:o}:void 0});try{e(),r&&r(),s&&s().then(()=>{y(!1),e()}).catch(console.error)}catch(Ie){fs.error(h("deleteConfirmation.error"))}finally{V(),y(!1)}}})}return Hr(xs,{children:[_e("h1",{className:"text-2xl font-semibold",children:a!=null?a:h("deleteConfirmation.title",{itemName:O})}),_e("p",{className:"text-bg-500 mt-2",children:i!=null?i:h("deleteConfirmation.desc",{itemName:t})}),b&&_e(ue,{darker:!0,className:"mt-4",icon:"tabler:alert-triangle",name:"Confirmation",namespace:"common.modals",placeholder:h("deleteConfirmation.inputs.confirmation.placeholder",{text:b}),setValue:S,tKey:"deleteConfirmation",value:k}),Hr("div",{className:"mt-6 flex w-full flex-col-reverse justify-around gap-2 sm:flex-row",children:[_e(g,{className:"w-full",icon:"",variant:"secondary",onClick:e,children:"Cancel"}),_e(g,{isRed:!0,className:"w-full",disabled:b!==""&&b!==k,icon:c!=null?c:"tabler:trash",loading:C,onClick:()=>{if(p!==void 0){y(!0),p(e).finally(()=>y(!1));return}Le().catch(console.error)},children:d!=null?d:"Delete"})]})]})}var gs=bs;import zr from"clsx";import{createPortal as hs}from"react-dom";import{jsx as $r}from"react/jsx-runtime";function vs({isOpen:e,children:t,minWidth:o,minHeight:r,maxWidth:n,className:a,modalRef:i,zIndex:l=0,onExited:s}){return hs($r("div",{ref:i,className:zr("backdrop-blur-xs dark:bg-bg-950/40 fixed left-0 top-0 h-dvh w-full overscroll-contain bg-black/10 transition-opacity ease-linear",e?"opacity-100":"opacity-0 [transition:z-index_0.1s_linear_0.4s,opacity_0.1s_linear_0.1s]"),style:{zIndex:e?l:-1},onTransitionEnd:s,children:$r("div",{className:zr("bg-bg-100 dark:bg-bg-900 absolute top-1/2 flex max-h-[calc(100dvh-8rem)] w-full max-w-[calc(100vw-4rem)] -translate-y-1/2 translate-x-1/2 flex-col overflow-auto rounded-xl p-6 shadow-2xl transition-all duration-500 sm:max-w-[calc(100vw-8rem)] lg:w-auto",e?"right-1/2":"right-[-100dvw]",a),style:{minWidth:o,minHeight:r,maxWidth:n},children:t})}),document.querySelector("#app")||document.body)}var fe=vs;import{useEffect as Is,useState as ks}from"react";import{create as ys}from"zustand";var D=ys((e,t)=>({stack:[],open:(o,r)=>{e(n=>({stack:[...n.stack,{component:o,data:r,isClosing:!1}]}))},close:()=>{let{stack:o}=t();o.length!==0&&e(r=>{let n=[...r.stack],a=n.length-1;return a>=0&&(n[a]=w(I({},n[a]),{isClosing:!0})),{stack:n}})},remove:o=>e(r=>{let n=[...r.stack];return n.splice(o,1),{stack:n}})}));import{Fragment as Ns,jsx as We}from"react/jsx-runtime";function Cs({index:e}){let{stack:t,close:o}=D(),r=t[e],{data:n,component:a}=r||{};return a?We(a,{data:n,onClose:o}):null}function ws({index:e}){let{stack:t,remove:o}=D(),r=t[e],{isClosing:n}=r||{},[a,i]=ks(!1);return Is(()=>{let l=setTimeout(()=>{i(!0)},10);return()=>clearTimeout(l)},[]),We(fe,{isOpen:a&&!n,zIndex:e*10,onExited:()=>{n&&o(e)},children:We(Cs,{index:e})})}function _r(){let{stack:e}=D();return We(Ns,{children:e.map((t,o)=>We(ws,{index:o},`modal-${o}`))})}import{Icon as Wc}from"@iconify/react";import{useCallback as qc,useState as Uc}from"react";import{useEffect as $s,useMemo as _s,useState as ro}from"react";import{AutoSizer as Ws,List as qs}from"react-virtualized";import{Icon as Ms}from"@iconify/react";import Wr from"clsx";import{useState as Es}from"react";import{Icon as Ss}from"@iconify/react";import Ts from"clsx";import{jsx as Ps,jsxs as Fs}from"react/jsx-runtime";function Rs({text:e,icon:t,selected:o,onClick:r}){return Fs("button",{className:Ts(o?"bg-custom-500! text-bg-50 shadow-xs dark:text-bg-800 font-semibold":"bg-bg-50 hover:bg-bg-100 dark:bg-bg-800 dark:hover:bg-bg-700/70","flex-center h-8 grow cursor-pointer gap-2 whitespace-nowrap rounded-full px-6 text-sm shadow-sm transition-all duration-100 md:grow-0"),type:"button",onClick:r,children:[t!==void 0&&Ps(Ss,{className:"size-5",icon:t}),e]})}var pt=Rs;import{Fragment as Os,jsx as qe,jsxs as As}from"react/jsx-runtime";function Ls({options:e,value:t,setValue:o}){let[r,n]=Es(!1);return e.length>0?As("div",{className:"mt-4 flex items-center gap-2",children:[qe("div",{className:Wr("flex gap-2 pb-1 transition-all",r?"flex-wrap":"overflow-x-auto"),children:e.sort((a,i)=>a[0]===i[0]?a.length-i.length:a.localeCompare(i)).map(a=>qe(pt,{selected:t===a,text:a,onClick:()=>{o(t===a?null:a),n(!1)}},a))}),qe("button",{className:"flex-center text-bg-500 hover:text-bg-800 dark:hover:text-bg-100 h-8 grow gap-2 whitespace-nowrap rounded-full px-2 text-sm transition-all duration-100 md:grow-0",type:"button",onClick:()=>{n(!r)},children:qe(Ms,{className:Wr("size-6 transition-all",r&&"rotate-180"),icon:"uil:angle-up"})})]}):qe(Os,{})}var ut=Ls;import{Icon as Bs}from"@iconify/react";import{useCallback as Ds}from"react";import{jsx as qr,jsxs as zs}from"react/jsx-runtime";function Hs({icon:e,iconSet:t,onIconSelected:o}){let r=Ds(()=>{o(`${t}:${e}`)},[e]);return zs("button",{className:"hover:bg-bg-200/70 dark:hover:bg-bg-800 flex h-min w-full cursor-pointer flex-col items-center rounded-lg p-4 transition-all",type:"button",onClick:r,children:[qr(Bs,{height:"32",icon:`${t}:${e}`,width:"32"}),qr("p",{className:"-mb-0.5 mt-4 break-all text-center text-xs font-medium tracking-wide",children:e.replace(/-/g," ")})]})}var ft=Hs;import{jsx as z,jsxs as Ks}from"react/jsx-runtime";function Us(e){return N(this,null,function*(){try{return yield fetch(`https://api.iconify.design/collection?prefix=${e}`).then(o=>N(this,null,function*(){return yield o.json()}))}catch(t){return console.error(t),null}})}function Qs({iconSet:e,onIconSelected:t}){var c;let[o,r]=ro(""),[n,a]=ro(null),[i,l]=ro(null),s=_s(()=>{var p,m;let d=[...(p=i==null?void 0:i.uncategorized)!=null?p:[],...Object.values((m=i==null?void 0:i.categories)!=null?m:{}).flat()];return i?n?(i.categories[n]||[]).filter(f=>f.toLowerCase().includes(o.toLowerCase())):d.filter(f=>f.toLowerCase().includes(o.toLowerCase())):[]},[o,n,i]);return $s(()=>{Us(e).then(d=>{l(d)}).catch(console.error)},[]),i?Ks("div",{className:"flex size-full min-h-0 flex-1 flex-col",children:[z("h1",{className:"mb-6 flex flex-col items-center gap-1 text-center text-3xl font-semibold tracking-wide sm:inline",children:i.title}),z(J,{lighter:!0,namespace:"common.modals",searchQuery:o,setSearchQuery:r,stuffToSearch:"icon",tKey:"iconPicker"}),z(ut,{options:Object.keys((c=i.categories)!=null?c:{}),setValue:a,value:n}),z("div",{className:"flex min-h-0 flex-1 flex-col",children:s.length?z(Ws,{className:"mt-6",children:({width:d,height:p})=>{let m=Math.floor(d/160)||1;return z(qs,{height:p-12,itemsPerRow:Math.floor(d/s.length)||1,rowCount:Math.ceil(s.length/m),rowHeight:120,rowRenderer:({index:f,key:u,style:b})=>{let x=f*m,h=x+m;return z("div",{className:"flex w-full gap-3",style:b,children:s.slice(x,h).map(C=>z(ft,{icon:C,iconSet:e,onIconSelected:t},C))},u)},width:d})}}):z("div",{className:"flex-center flex-1",children:z(ie,{icon:"tabler:icons-off",name:"icon",namespace:"common.modals",tKey:"iconPicker"})})})]}):z("div",{className:"flex w-full justify-center pb-8",children:z("span",{className:"loader"})})}var Ur=Qs;import{collections as Ac}from"@iconify/collections";import{useState as bo}from"react";import{useMemo as Js}from"react";import{Icon as Qr}from"@iconify/react";import Vs from"clsx";import{jsx as ao,jsxs as Ys}from"react/jsx-runtime";function Gs({icon:e,text:t,color:o,onRemove:r}){return Ys("span",{className:Vs("flex-center gap-1 rounded-full px-2 py-1 text-sm",o===void 0&&"text-bg-500 dark:text-bg-400 component-bg-lighter"),style:o!==void 0?{backgroundColor:o+"20",color:o}:{},children:[ao(Qr,{className:"size-4",icon:e}),t,ao("button",{onClick:r,children:ao(Qr,{className:"size-4",icon:"tabler:x"})})]})}var Kr=Gs;import{Fragment as js,jsx as no}from"react/jsx-runtime";function Xs({items:e,values:t,setValues:o}){let{theme:r}=ee(),n=Js(()=>{var s,c;if(r.startsWith("#"))return r;let[a,i,l]=(c=(s=r.match(/\((\d+), (\d+), (\d+)\)/))==null?void 0:s.slice(1))!=null?c:[];return ot(Number(a),Number(i),Number(l))},[r]);return Object.values(e).every(({data:a})=>typeof a!="string")&&Object.keys(e).some(a=>!!t[a])?no("div",{className:"mt-2 flex flex-wrap items-center gap-2",children:Object.entries(e).map(([a,{data:i,isColored:l}])=>typeof i!="string"&&t[a]?(()=>{var c,d,p;let s=i.find(m=>m.id===t[a]);return s===void 0?null:no(Kr,{color:l===!0?(c=s.color)!=null?c:n:void 0,icon:(d=s.icon)!=null?d:"",text:(p=s.name)!=null?p:"",onRemove:()=>{o[a](null)}},a)})():null)}):no(js,{})}var Zs=Xs;import{Icon as ac}from"@iconify/react";import nc from"clsx";import{useEffect as ic,useRef as lc}from"react";import{Icon as ec}from"@iconify/react/dist/iconify.js";import Vr from"lodash";import{Tooltip as tc}from"react-tooltip";import{Fragment as oc,jsx as io,jsxs as rc}from"react/jsx-runtime";function Ce({id:e,icon:t,children:o,tooltipProps:r}){return rc(oc,{children:[io("span",{"data-tooltip-id":`tooltip-${Vr.kebabCase(e)}`,children:io(ec,{className:"text-bg-500 size-5",icon:t})}),io(tc,w(I({className:"z-9999 rounded-md! bg-bg-50 p-4! text-base! text-bg-800 shadow-custom dark:bg-bg-900 dark:text-bg-50",classNameArrow:"size-6!",id:`tooltip-${Vr.kebabCase(e)}`,opacity:1,place:"top-start",positionStrategy:"fixed"},r),{children:o}))]})}import{Fragment as dc,jsx as Ue,jsxs as Qe}from"react/jsx-runtime";function sc({title:e,desc:t,icon:o,vertical:r=!1,tooltip:n,hasDivider:a=!0,children:i,wrapWhen:l="md",noDefaultBreakpoints:s=!1,className:c}){let d=lc(null);return ic(()=>{d.current&&d.current.getBoundingClientRect()},[d]),Qe(dc,{children:[Qe("div",{ref:d,className:nc("flex w-full min-w-0 flex-col justify-between gap-8 px-4",!r&&!s&&{sm:"sm:flex-row",md:"md:flex-row",lg:"lg:flex-row",xl:"xl:flex-row"}[l],r&&"flex-col",c),children:[Qe("div",{className:"flex shrink items-center gap-3",children:[Ue(ac,{className:"text-bg-500 size-6 shrink-0",icon:o}),Qe("div",{children:[Qe("h3",{className:"flex w-full items-center gap-2 text-xl font-medium leading-normal md:w-auto",children:[e,n!==void 0&&Ue(Ce,{icon:"tabler:info-circle",id:(e==null?void 0:e.toString())||"",children:n})]}),Ue("p",{className:"text-bg-500",children:t})]})]}),Ue("div",{className:"flex w-full min-w-0 shrink-0 items-center gap-3 md:w-auto",children:i})]}),a&&Ue("div",{className:"border-bg-200 dark:border-bg-800/50 my-6 w-full border-b-[1.5px]"})]})}var cc=sc;import{Icon as Gr}from"@iconify/react";import le from"clsx";import{Fragment as bt,jsx as $,jsxs as be}from"react/jsx-runtime";function mc({currentPage:e,onPageChange:t,totalPages:o,className:r=""}){let n=()=>{let a=[],l=Math.max(e>o-5?o-5+1:e<5?1:e-Math.floor(2.5),1),s=Math.min(o,l+5-1);l>2&&a.push(be(bt,{children:[$("button",{className:le("hidden rounded-md px-3 py-2 lg:block",e===1?"text-custom-500 font-semibold":"text-bg-500 hover:bg-bg-200 dark:hover:bg-bg-800"),onClick:()=>{t(1)},children:1},1),$(Gr,{className:"text-bg-500 hidden lg:block",icon:"uil:ellipsis-h"})]}));for(let c=l;c<=s;c++)a.push(be("button",{className:le("rounded-md px-5 py-3",e===c?"lg:text-custom-500 font-semibold":"text-bg-500 hover:bg-bg-200 dark:hover:bg-bg-800 hidden lg:block"),onClick:()=>{t(c)},children:[$("span",{className:"inline lg:hidden",children:"Page "}),c,be("span",{className:"inline lg:hidden",children:[" / ",o]})]},c));return s<o&&a.push(be(bt,{children:[s<o-1&&$(Gr,{className:"text-bg-500 hidden lg:block",icon:"uil:ellipsis-h"}),$("button",{className:le("hidden rounded-md px-5 py-3 lg:block",e===o?"text-custom-500 font-semibold":"text-bg-500 hover:bg-bg-200 dark:hover:bg-bg-800"),onClick:()=>{t(o)},children:o},o)]})),a};return be("div",{className:le("flex-between flex gap-2",r),children:[e!==1?be(bt,{children:[$(g,{className:le("hidden w-32 sm:flex"),disabled:e===1,icon:"uil:angle-left",variant:"plain",onClick:()=>{e>1&&t(e-1)},children:"Previous"}),$(g,{className:le("w-12 sm:hidden"),icon:"uil:angle-left",variant:"plain",onClick:()=>{e>1&&t(e-1)}})]}):$("span",{className:"w-12 sm:w-32"}),$("div",{className:"flex items-center gap-2",children:n()}),e<o?be(bt,{children:[$(g,{iconAtEnd:!0,className:le("w-12 sm:hidden"),icon:"uil:angle-right",variant:"plain",onClick:()=>{e<o&&t(e+1)}}),$(g,{iconAtEnd:!0,className:le("hidden w-32 sm:flex"),disabled:e===o,icon:"uil:angle-right",variant:"plain",onClick:()=>{e<o&&t(e+1)},children:"Next"})]}):$("span",{className:"w-12 sm:w-32"})]})}var gt=mc;import{Scrollbars as pc}from"react-custom-scrollbars";import{jsx as lo}from"react/jsx-runtime";function uc(o){var r=o,{children:e}=r,t=tt(r,["children"]);return lo(pc,w(I({},t),{autoHide:!0,autoHideDuration:200,renderThumbVertical:n=>lo("div",w(I({},n),{className:"bg-bg-300 dark:bg-bg-800 rounded-lg"})),renderView:n=>lo("div",w(I({},n),{classNam