@llmnative/react 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.css +3 -1
- package/dist/index.js +20 -23
- package/dist/index.mjs +18040 -17552
- package/dist/types/src/I18n.d.ts +3 -0
- package/dist/types/src/components/ErrorBoundary.d.ts +1 -1
- package/dist/types/src/components/blocks/Dropdown.d.ts +27 -2
- package/dist/types/src/components/ui/Alert.d.ts +1 -1
- package/dist/types/src/components/ui/Gallery.d.ts +6 -0
- package/dist/types/src/components/ui/Loader.d.ts +1 -1
- package/dist/types/src/components/ui/Modal.d.ts +18 -0
- package/dist/types/src/components/ui/Tab.d.ts +1 -1
- package/dist/types/src/components/ui/fields/CodeEditor.d.ts +6 -1
- package/dist/types/src/components/ui/fields/ContextMenu.d.ts +24 -0
- package/dist/types/src/components/ui/fields/Upload.d.ts +1 -1
- package/dist/types/src/components/widgets/Form.d.ts +14 -3
- package/dist/types/src/components/widgets/grid-core/GridCore.d.ts +1 -1
- package/dist/types/src/components/widgets/grid-core/GridGalleryView.d.ts +1 -1
- package/dist/types/src/components/widgets/grid-core/types.d.ts +79 -3
- package/dist/types/src/components/widgets/grid-core/useGridActions.d.ts +1 -1
- package/dist/types/src/index.d.ts +2 -2
- package/dist/types/src/libs/editorHeight.d.ts +11 -1
- package/dist/types/src/libs/fetch.d.ts +2 -0
- package/dist/types/src/providers/ai/AIProvider.d.ts +54 -1
- package/dist/types/src/providers/ai/index.d.ts +1 -1
- package/dist/types/src/providers/ai/openaiCompatible.d.ts +22 -0
- package/dist/types/src/providers/ai/shared.d.ts +3 -3
- package/dist/types/src/providers/auth/google/auth.d.ts +1 -1
- package/dist/types/src/providers/data/DataProvider.d.ts +8 -0
- package/dist/types/src/providers/data/firestore.d.ts +11 -0
- package/dist/vite.js +1 -1
- package/dist/vite.mjs +62 -53
- package/package.json +49 -52
- package/scripts/cli/setup-devtools.js +8 -7
- package/scripts/cli/setup-project.js +23 -19
- package/themes/cyber.ts +8 -7
- package/themes/default.ts +22 -7
- package/themes/flat.ts +8 -7
- package/dist/style.css +0 -1
- package/dist/types/src/providers/email/google/apis/email.d.ts +0 -7
package/dist/index.js
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
"use strict";var Xc=Object.create;var Oo=Object.defineProperty;var Zc=Object.getOwnPropertyDescriptor;var Qc=Object.getOwnPropertyNames;var ed=Object.getPrototypeOf,td=Object.prototype.hasOwnProperty;var rd=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Qc(t))!td.call(e,o)&&o!==n&&Oo(e,o,{get:()=>t[o],enumerable:!(a=Zc(t,o))||a.enumerable});return e};var me=(e,t,n)=>(n=e!=null?Xc(ed(e)):{},rd(t||!e||!e.__esModule?Oo(n,"default",{value:e,enumerable:!0}):n,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),De=require("react-router-dom"),nd=require("clsx"),ad=require("tailwind-merge"),Pr=require("lucide-react"),od=require("@phosphor-icons/react"),_t=require("react-dom"),Ct=require("firebase/app"),ze=require("firebase/auth"),Se=require("firebase/firestore"),Fs=require("@supabase/supabase-js"),Oe=require("firebase/storage"),sd=require("papaparse"),ld=require("react-markdown"),id=require("remark-gfm"),cd=require("rehype-slug"),dd=require("rehype-autolink-headings"),ud=require("rehype-sanitize"),ke=require("firebase/database");require("react-dom/server");function Os(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,a.get?a:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const md=Os(Pr),fd=Os(od);function pd(e){const t=new Date(typeof e=="number"||/^\d+$/.test(String(e))?Number(e):e);if(isNaN(t.getTime()))return{year:"",shortYear:"",month:"",day:"",hours:"",minutes:"",seconds:"",hour:"",minute:"",second:""};const n=a=>a.toString().padStart(2,"0");return{year:t.getFullYear().toString(),shortYear:t.getFullYear().toString().slice(-2),month:n(t.getMonth()+1),day:n(t.getDate()),hours:n(t.getHours()),minutes:n(t.getMinutes()),seconds:n(t.getSeconds()),hour:t.getHours().toString(),minute:t.getMinutes().toString(),second:t.getSeconds().toString()}}function ir(e,t){const{year:n,shortYear:a,month:o,day:s,hours:l,minutes:i,seconds:c,hour:d,minute:m,second:u}=pd(e),f={YYYY:n,YY:a,MM:o,DD:s,hh:l,mm:i,ss:c,h:d,m,s:u};return t.replace(/YYYY|YY|MM|DD|hh|mm|ss|h|m|s/g,p=>f[p]||p)}function $o(){const e=new Date;return new Intl.DateTimeFormat(void 0,{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(e).map(a=>{switch(a.type){case"year":return"YYYY";case"month":return"MM";case"day":return"DD";default:return a.value}}).join("")}function Lo(){const e=new Date;return new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).formatToParts(e).map(a=>{switch(a.type){case"hour":return"hh";case"minute":return"mm";case"second":return"ss";default:return a.value}}).join("")}const $s=(e,t,n,a)=>{if(!e||!t)return"";const o=t.split(".");let s=e;for(let l=0;l<o.length;l++){const i=o[l];if(s==null)return"";if(i.endsWith("[]")){const c=i.slice(0,-2),d=s[c];if(!Array.isArray(d))return"";const m=o.slice(l+1).join(".");if(!m)return n?(n.key&&(n.value[n.key]=d)||(n.value=d),""):d;const u=(n==null?void 0:n.value)??{};for(const f in d){const p=(()=>{const h=$s(d[f],m);return(a==null?void 0:a(h))??h})();n&&(!n.hideEmpty||p!=="")&&(u[f]=n.key?{...u[f]??{},[n.key]:p}:p)}return n?"":u}s=s[i]}return s=(a==null?void 0:a(s))??s,n&&(!n.hideEmpty||s!=="")?(n.key&&(n.value[n.key]=s)||(n.value=s),""):s},Ue={parse:(e,t,n=void 0,a=void 0)=>{if(typeof t!="string")return t;const o=t.replace(/{([^}:]+)(?::([^}:]+))?(?::([^}:]+))?}/g,(s,l,i,c)=>{const[d,m]=(l||"").indexOf("(")===-1?["",l]:l.split("(",2),[u,f]=(i||"").indexOf(")")===-1?[i,""]:i.split(")",2),p=$s(e,m,n,a);return!(Ue!=null&&Ue[u])||!p?p||"":d+Ue[u](p,c)+f});return hd(gd(o))},toDate:(e,t=void 0)=>{const n=$o();return t==="ISO"?ir(e,"YYYY-MM-DD"):ir(e,t||n)},toTime:(e,t=void 0)=>{const n=Lo();return t==="ISO"?ir(e,"hh:mm:ss"):ir(e,t||n)},toDateTime:(e,t=void 0)=>{const n=$o(),a=Lo(),o=`${n} ${a}`;return t==="ISO"?ir(e,"YYYY-MM-DD hh:mm:ss"):ir(e,t||o)},toCamel:(e,t="",n=["-","_"," "])=>{const a=e.split("/"),o=a.pop()||"",s=n.map(c=>"\\"+c).join(""),l=new RegExp(`(?:[${s}]+|^)(.)`,"g"),i=o.toLowerCase().replace(l,(c,d)=>t+d.toUpperCase());return[...a,i].join("/")},toUpper:e=>e.toUpperCase(),toLower:e=>e.toLowerCase(),toSlug:e=>Ft(e),toNumberFormat:(e,t=navigator.language)=>new Intl.NumberFormat(t).format(Number(e)),splitLast:(e,t,n=void 0)=>{const a=s=>{const l=e.split(s);if(l.length<=1)return null;let i=l.pop()||"";for(;l.length&&(n!=null&&n.test(l[l.length-1]));)i=l.pop()+s+i;return[l.join(s),i]},o=typeof t=="string"?[t]:Array.isArray(t)?t:[];for(const s of o){const l=a(s);if(l)return l}return[e,""]},splitFirst:(e,t,n=void 0)=>{const a=s=>{const l=e.split(s);if(l.length<=1)return null;let i=l.shift()||"";for(;l.length&&(n!=null&&n.test(l[0]));)i+=s+l.shift();return[i,l.join(s)]},o=typeof t=="string"?[t]:Array.isArray(t)?t:[];for(const s of o){const l=a(s);if(l)return l}return[e,""]},padLeft:(e,t,n=" ",a=void 0)=>a?e.replace(a,o=>o.padStart(t,n)):e.padStart(t,n),padRight:(e,t,n=" ",a=void 0)=>a?e.replace(a,o=>o.padEnd(t,n)):e.padEnd(t,n),toQueryString:(e,t="?",n=void 0)=>{const a=Object.keys(e);return(a.length>0?t:"")+a.map(o=>`${encodeURIComponent(o)}=${encodeURIComponent(n===void 0?e[o]:n)}`).join("&")},fillObject:(e,t=void 0)=>{const n={};for(const a in e)n[a]=t;return n},subStringCount:(e,t)=>t===""?0:e.split(t).length-1,truncate:(e,t=100)=>e.length>t?e.substring(0,t):e};function gd(e){return e.replace(/replace\(([^,]+),([^,]+),([^)]+)\)/gi,(t,n,a,o)=>n.replaceAll(a,o))}function hd(e){return e.replace(/split\(([^,]+),([^,]+),([^)]+)\)/gi,(t,n,a,o=0)=>n.split(a)[o])}const Ls=e=>{try{const t=e.split("."),n=atob(t[1]);return JSON.parse(n)}catch(t){console.error("Errore durante la decodifica del token:",t)}},Ma=e=>{try{navigator.clipboard.writeText(e).then(()=>{console.log("Selettore HTML copiato negli appunti:",e)}).catch(t=>{console.error("Errore durante la copia del selettore HTML negli appunti:",t)})}catch(t){console.error("Clipboard API non supportata:",t)}},bd=e=>mn(e).replace(/\/$/,"").replace(/^\//,""),mn=e=>e?e.replaceAll(" ","-").replaceAll("'","-").replaceAll('"',"-").toLowerCase().replace(/[^a-z0-9\-/]+/g,"").replace(/-+/g,"-").replace(/\/+/g,"/"):"",qr=e=>typeof e=="number"?String(e):typeof e=="boolean"?e?"true":"false":e?e.startsWith("/")?e.substring(1):e:"",Ft=e=>qr(e).replaceAll("/","|").replaceAll(" ","-").replaceAll("'","-").replaceAll('"',"-").replaceAll(".","-").replaceAll("@","-").replaceAll("#","-").replaceAll("$","-").replaceAll("[","-").replaceAll("]","-").replaceAll("_","-").toLowerCase().replace(/[^a-z0-9\-|]+/g,"").replace(/^-+|-+$/g,"").replace(/-+/g,"-"),vd=e=>{if(!e)return"";e=e.replace(/\/$/,"");const t=e.split("/");return t.pop(),t.join("/")};async function Yr(e){return new Promise(t=>setTimeout(t,e))}function yd(e=null){const t=Date.now().toString(36),n=e||Math.random().toString(36).substring(2);return`${t}-${n}`}function wd(e,t){let n=e.target;if(n.tagName.toLowerCase()===t.toLowerCase())return n;for(;n.parentNode;){const a=n.parentNode;if(a.tagName.toLowerCase()===t.toLowerCase())return a;n=a}return null}const xd=(e,t)=>e.split(t).length-1,js=(e,t)=>e.replace(/\$(\d+)/g,(n,a)=>{const o=parseInt(a);return t[o]||""}).trim(),Ed=(e,t,n)=>{for(const a of e){const o=mn(sa(a.key,t)),s=mn(js(sa(a.value,t),n));if((a.operator==="=="||a.operator==="=")&&o===s||a.operator==="!="&&o!==s||a.operator===">"&&o>s||a.operator==="<"&&o<s||a.operator===">="&&o>=s||a.operator==="<="&&o<=s||a.operator==="contains"&&o.includes(s)||a.operator==="not contains"&&!o.includes(s))return!0}return!1},Nd=e=>{const t=[];for(let a=0;a<256;a++){let o=a;for(let s=0;s<8;s++)o&1?o=3988292384^o>>>1:o=o>>>1;t[a]=o}let n=-1;for(let a=0;a<e.length;a++)n=n>>>8^t[(n^e.charCodeAt(a))&255];return(n^-1)>>>0},Cd=e=>e?e.charAt(0).toUpperCase()+e.slice(1):"",Bs=e=>{if(!e.length)return;const t=document.createDocumentFragment();e.forEach(({src:n,clean:a,...o})=>{if(!n)return;const s=document.createElement("script");s.setAttribute("src",String(n)),Object.entries(o).forEach(([l,i])=>{s.setAttribute(l,String(i))}),a&&(s.onload=()=>document.body.removeChild(s)),t.appendChild(s)}),document.body.appendChild(t)},kd=(e,t)=>{const n={};for(const a in e)e.hasOwnProperty(a)&&a in t&&(n[a]=e[a]);return n},sa=(e,t)=>((e.match(/{[^}]*}/g)||[]).forEach(a=>{const o=a.slice(1,-1).split(":"),s=o[0],l=o[1],i=(l&&typeof Ue[l]=="function"?Ue[l](t[s]):t[s])||"";e=e.replaceAll(a,i)}),e),xn=(e,t)=>{if(t){const n=new Set;return e.filter(a=>{const o=a[t];return n.has(o)?!1:(n.add(o),!0)})}else return[...new Set(e)]},Wr=e=>e==null||e===""||e===!1||e==="0"||e===0||typeof e=="object"&&e!==null&&Object.keys(e).length===0;function Jt(e,t=new WeakMap){if(e==null||typeof e!="object"||r.isValidElement(e))return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(t.has(e))return t.get(e);if(Array.isArray(e)){const o=[];return t.set(e,o),e.forEach((s,l)=>{o[l]=Jt(s,t)}),o}if(e instanceof Map){const o=new Map;return t.set(e,o),e.forEach((s,l)=>{o.set(Jt(l,t),Jt(s,t))}),o}if(e instanceof Set){const o=new Set;return t.set(e,o),e.forEach(s=>{o.add(Jt(s,t))}),o}const n=Object.getPrototypeOf(e);if(n&&n!==Object.prototype)return e;const a={};return t.set(e,a),Object.entries(e).forEach(([o,s])=>{a[o]=Jt(s,t)}),a}function Mt(e){if(typeof structuredClone!="function")return Jt(e);try{return structuredClone(e)}catch{return Jt(e)}}function Sd(e){return(typeof e=="string"?Buffer.from(e,"utf8"):e instanceof ArrayBuffer?Buffer.from(new Uint8Array(e)):Buffer.from(e)).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Ta(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function zs(e){return e.replace(/[^a-zA-Z0-9-_:.]/g,"_")}function Da(e,t){const n=e.target,a=!!(n.closest("a")||n.closest("button")||n.closest("input")||n.closest("textarea")||n.closest("select"));return t?a&&!n.closest(t):a}const Us=e=>{const t=new Uint8Array(e);let n="";for(let a=0;a<t.byteLength;a++)n+=String.fromCharCode(t[a]);return btoa(n)},Hs=(e,t)=>{try{const n=e.includes(",")?e.split(",")[1]:e,a=atob(n),o=new Array(a.length);for(let l=0;l<a.length;l++)o[l]=a.charCodeAt(l);const s=new Uint8Array(o);return new Blob([s],{type:t})}catch(n){console.warn("Failed to create blob from base64:",n);return}},Vs=(e,t)=>{const n=Hs(e,t);return n?URL.createObjectURL(n):void 0},Lr=(e,t)=>{if(!(!e||!t))return t.split(".").reduce((n,a)=>{if(n!=null&&!(typeof n!="object"||Array.isArray(n)))return n[a]},e)},nr=e=>{const t={};if(!e)return t;if(e instanceof File)return{name:e.name,type:e.type,size:e.size,lastModified:e.lastModified};for(const[n,a]of Object.entries(e))n&&(Array.isArray(a)?t[n]=a.map(o=>typeof o=="object"?nr(o):o).filter(o=>o!==void 0):a&&typeof a=="object"?t[n]=nr(a):a!==void 0&&(t[n]=a));return t},fn=e=>e==null||e===""||typeof e!="string"?e:/^(true|false)$/i.test(e)?e.toLowerCase()==="true":/^0\d+$/.test(e)?e:/^-?\d+(\.\d+)?$/.test(e)?Number(e):e.trim();function Ad(e){const{body:t,headers:n}=e,a=(n==null?void 0:n["Content-Type"])||"";return(Array.isArray(t)||typeof t=="object"?["application/json","application/x-www-form-urlencoded","multipart/form-data"]:["text/plain","text/html"]).includes(a)?a:typeof t=="object"?"application/json":typeof t=="string"&&t.startsWith("<")?"text/html":"text/plain"}async function En(e,t=null,n=globalThis.fetch){var o;const a={redirect:"follow",method:((o=t==null?void 0:t.method)==null?void 0:o.toUpperCase())||"GET",headers:(t==null?void 0:t.headers)||{}};if(t!=null&&t.body)if(["GET","HEAD"].includes(a.method))e+=(e.includes("?")?"&":"?")+new URLSearchParams(t.body);else switch(Ad(t)){case"application/json":a.body=JSON.stringify(t.body);break;case"application/x-www-form-urlencoded":a.body=new URLSearchParams(t.body);break;case"multipart/form-data":{const s=new FormData,l=t.body;for(const i in l)s.append(i,l[i]);a.body=s;break}case"text/html":case"text/plain":if(typeof t.body!="string")throw new Error("Fetch: Body must be a string for text/plain or text/html content types.");a.body=t.body;break;default:throw new Error("Fetch: Unsupported Content-Type")}return n(e,a).then(s=>{var c,d;if(!s.ok)return s.text().then(m=>{throw{response:s,text:m}});const l=(c=t==null?void 0:t.headers)==null?void 0:c.Accept,i=(d=s.headers.get("Content-Type"))==null?void 0:d.split(";")[0];return l&&l.split(";")[0]!==i?s.text().then(m=>{throw{response:s,text:m}}):s!=null&&s.headers&&s.headers.get("Content-Type")==="application/json"?s.json():s.text()}).catch(s=>{if(s.message)return console.warn(`fetch: ${s.message}`,e,a),null;const{response:l,text:i}=s;function c(){var m,u,f;const d=((m=l==null?void 0:l.headers.get("Content-Type"))==null?void 0:m.split(";")[0])||"";if(d==="application/json"&&(i.startsWith("{")||i.startsWith("["))){const p=JSON.parse(i);return console.warn("fetch: Error",e,a,l.status,p),p}else{const p=((f=(u=t==null?void 0:t.headers)==null?void 0:u.Accept)==null?void 0:f.split(";")[0])||"",h=p!==d?"Request Accept header does not match response Content-Type (Accept: "+p+", Content-Type: "+d+")":p==="application/json"?"Request Accept header is application/json but response is not JSON":null;return console.warn(`fetch: ${h}`,e,a,l.status,i),h&&p==="application/json"?{error:i,status:520}:i}}throw c()})}async function ot(e,t=null,n=globalThis.fetch){return En(e,{...t,headers:{Accept:"application/json","Content-Type":"application/json",...t==null?void 0:t.headers}},n).then(a=>{if(a!=null&&a.error)throw a;return a})}async function Ra(e,t={},n=3,a=[429],o=globalThis.fetch){return o(e,t).then(s=>s.ok?s.json():!a.includes(s.status)&&n>0?(console.log("Retrying...",n,e,t),Yr(500).then(()=>Ra(e,t,n-1,a,o))):(console.error(s),s)).catch(s=>console.error(s,"BBBBBBBBBBBBBBBBBBBBBBB"))}const Pd={mode:"light",radius:.5,colors:{background:"0 0% 100%",foreground:"222.2 84% 4.9%",card:"0 0% 100%",cardForeground:"222.2 84% 4.9%",popover:"0 0% 100%",popoverForeground:"222.2 84% 4.9%",primary:"221.2 83.2% 53.3%",primaryForeground:"210 40% 98%",secondary:"210 40% 96.1%",secondaryForeground:"222.2 47.4% 11.2%",muted:"210 40% 96.1%",mutedForeground:"215.4 16.3% 46.9%",accent:"210 40% 96.1%",accentForeground:"222.2 47.4% 11.2%",destructive:"0 84.2% 60.2%",destructiveForeground:"210 40% 98%",success:"142.1 76.2% 36.3%",successForeground:"0 0% 100%",warning:"32.1 94.6% 43.7%",warningForeground:"0 0% 100%",info:"198.6 88.7% 48.4%",infoForeground:"0 0% 100%",border:"214.3 31.8% 91.4%",input:"214.3 31.8% 91.4%",ring:"221.2 83.2% 53.3%"},dark:{background:"222.2 84% 4.9%",foreground:"210 40% 98%",card:"222.2 84% 4.9%",cardForeground:"210 40% 98%",popover:"222.2 84% 4.9%",popoverForeground:"210 40% 98%",primary:"217.2 91.2% 59.8%",primaryForeground:"222.2 47.4% 11.2%",secondary:"217.2 32.6% 17.5%",secondaryForeground:"210 40% 98%",muted:"217.2 32.6% 17.5%",mutedForeground:"215 20.2% 65.1%",accent:"217.2 32.6% 17.5%",accentForeground:"210 40% 98%",destructive:"0 62.8% 30.6%",destructiveForeground:"210 40% 98%",success:"142.1 70.6% 45.3%",successForeground:"0 0% 100%",warning:"32.1 94.6% 55%",warningForeground:"0 0% 100%",info:"198.6 88.7% 60%",infoForeground:"0 0% 100%",border:"217.2 32.6% 17.5%",input:"217.2 32.6% 17.5%",ring:"224.3 76.3% 48%"}},Id={none:{from:{},to:{},transition:{duration:0,easing:"linear",properties:["opacity","transform","box-shadow"]},reducedMotion:"always"},fade:{from:{opacity:0},to:{opacity:1},transition:{duration:160,easing:"cubic-bezier(0.2, 0, 0, 1)",properties:["opacity"]},reducedMotion:"respect-user"},fadeUp:{from:{opacity:0,transform:"translateY(8px)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:160,easing:"cubic-bezier(0.2, 0, 0, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},fadeDown:{from:{opacity:0,transform:"translateY(-8px)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:140,easing:"cubic-bezier(0.2, 0, 0, 1)",properties:["opacity","transform","visibility"]},reducedMotion:"respect-user"},slideFromRight:{from:{opacity:0,transform:"translateX(100%)"},to:{opacity:1,transform:"translateX(0)"},transition:{duration:220,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},slideFromLeft:{from:{opacity:0,transform:"translateX(-100%)"},to:{opacity:1,transform:"translateX(0)"},transition:{duration:220,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},slideFromTop:{from:{opacity:0,transform:"translateY(-100%)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:220,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},slideFromBottom:{from:{opacity:0,transform:"translateY(100%)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:220,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},press:{from:{},to:{transform:"scale(0.98)"},transition:{duration:100,easing:"cubic-bezier(0.2, 0, 0, 1)",properties:["transform","box-shadow"]},reducedMotion:"respect-user"},imageZoom:{from:{transform:"scale(1)"},to:{transform:"scale(1.06)"},transition:{duration:300,easing:"cubic-bezier(0.2, 0, 0, 1)",properties:["transform"]},reducedMotion:"respect-user"}},Ks={Grid:{Card:{wrapperClassName:"",className:"",headerClassName:"flex justify-between",bodyClassName:"p-0",footerClassName:"",loading:!1},Table:{wrapperClassName:"",className:"",headerClassName:"",bodyClassName:"",footerClassName:"",scrollClassName:"overflow-x-auto",selectedClassName:"bg-primary/10"},Gallery:{wrapperClassName:"",className:"",scrollClassName:"",headerClassName:"",bodyClassName:"",footerClassName:"",selectedClassName:"bg-primary/20",gap:1,rowCols:4},Modal:{mode:"form",size:"lg",position:"center",wrapperClassName:"",className:"",headerClassName:"",titleClassName:"",subtitleClassName:"pr-1 text-muted-foreground",bodyClassName:"",footerClassName:"",iconExpand:"fullscreen",iconCollapse:"fullscreen-exit",motion:{center:"fade",top:"slideFromTop",left:"slideFromLeft",right:"slideFromRight",bottom:"slideFromBottom",backdrop:"fade"}}},Table:{wrapperClassName:"",className:"",headerClassName:"",bodyClassName:"",footerClassName:"",scrollClassName:"overflow-x-auto",selectedClassName:"bg-primary/10"},Gallery:{wrapperClassName:"",className:"",scrollClassName:"",headerClassName:"",bodyClassName:"",footerClassName:"",selectedClassName:"bg-primary/20",gap:4,rowCols:2},Pagination:{wrapperClassName:"",className:"",stickyClassName:"fixed bottom-0 left-0 right-0 mx-5",scrollToTop:!1,scrollBehavior:"auto",maxItems:5,sticky:!0,align:"end"},Carousel:{showIndicators:!0,showControls:!0,showCaption:!0,dark:!1,autoPlay:!0},Card:{wrapperClassName:"",className:"",headerClassName:"flex justify-between bg-white/[.15] font-normal",bodyClassName:"flex flex-col",footerClassName:"",loading:!1},Loader:{wrapperClassName:"",className:"",icon:"custom-loader",title:"Loading..",description:""},ActionButton:{className:"btn-primary",badgeClassName:"rounded-full bg-destructive text-destructive-foreground",motion:{press:"press"}},LoadingButton:{className:"btn-primary",badgeClassName:"rounded-full bg-destructive text-destructive-foreground",motion:{press:"press"}},LinkButton:{className:"btn-outline-secondary"},Alert:{className:""},Badge:{className:""},Modal:{size:"lg",position:"center",wrapperClassName:"",className:"",headerClassName:"",titleClassName:"",subtitleClassName:"pr-1 text-muted-foreground",bodyClassName:"",footerClassName:"",iconExpand:"fullscreen",iconCollapse:"fullscreen-exit",motion:{center:"fade",top:"slideFromTop",left:"slideFromLeft",right:"slideFromRight",bottom:"slideFromBottom",backdrop:"fade"}},Dropdown:{wrapperClassName:"",className:"",triggerClassName:"btn btn-outline-primary",badgeClassName:"",menuClassName:"border-border/60 bg-popover/95 shadow-xl shadow-black/5 backdrop-blur supports-[backdrop-filter]:bg-popover/90 dark:shadow-black/20",menuHeaderClass:"text-muted-foreground/70",menuItemClass:"",menuDividerClass:"bg-border/60",headerClassName:"",footerClassName:"",Menu:{wrapperClassName:"",className:"list-none p-0 m-0",headerClassName:"",itemClassName:"",linkClassName:"flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent",iconClassName:"text-muted-foreground",textClassName:"",badgeClassName:"",arrowClassName:"",submenuClassName:""},motion:{open:"fadeDown",close:"fadeDown",press:"press"}},Notifications:{wrapperClassName:"",Dropdown:{className:"",triggerClassName:"btn btn-link",menuClassName:"mt-1 text-[11px] w-[300px] pt-1"}},Select:{wrapperClassName:"",className:""},Autocomplete:{wrapperClassName:"",className:""},Form:{wrapperClassName:"",buttonSaveClass:"btn-outline-primary",buttonDeleteClass:"btn-outline-danger",buttonBackClass:"btn-link",Card:{headerClassName:"",bodyClassName:"",footerClassName:"flex items-center justify-end gap-3"}},Menu:{wrapperClassName:"flex-1 overflow-auto p-4",className:"flex flex-col mb-auto",headerClassName:"",itemClassName:"",linkClassName:"flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground",iconClassName:"mr-1 shrink-0",textClassName:"flex-1",badgeClassName:"ml-1",arrowClassName:"",submenuClassName:"mt-1 flex flex-col gap-1 pl-4"},SideNav:{wrapperClassName:"",shellClassName:"border-r border-border bg-card/80 text-foreground backdrop-blur supports-[backdrop-filter]:bg-card/70",overlayClassName:"shadow-xl",headerClassName:"border-b border-border/60 px-1.5 py-2",navClassName:"px-1.5 py-2",footerClassName:"border-t border-border/60 px-1.5 py-2",groupLabelClassName:"text-[10.5px] font-semibold uppercase tracking-widest text-muted-foreground/60 select-none",groupDividerClassName:"bg-border/50",itemClassName:"rounded-lg",itemActiveClassName:"bg-primary/10 text-primary font-medium shadow-sm",itemChildActiveClassName:"bg-accent/80 text-foreground font-medium",itemInactiveClassName:"text-muted-foreground hover:text-foreground hover:bg-accent/70",itemIconClassName:"",itemTextClassName:"",itemBadgeClassName:"ml-auto shrink-0 text-[10px] font-semibold leading-none px-1.5 py-[3px] rounded-full bg-primary/15 text-primary",itemCollapsedBadgeClassName:"absolute -top-0.5 -right-1 h-[7px] w-[7px] rounded-full bg-primary ring-1 ring-card",itemToggleClassName:"shrink-0 flex items-center justify-center w-6 h-6 rounded-md transition-colors text-muted-foreground/50 hover:text-foreground hover:bg-accent/70",subItemClassName:"rounded-md",subItemActiveClassName:"bg-primary/10 text-primary font-medium",subItemInactiveClassName:"text-muted-foreground hover:text-foreground hover:bg-accent/70",collapseButtonClassName:"shrink-0 flex items-center justify-center rounded-md w-8 h-8 transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/70"},Toolbar:{wrapperClassName:"z-20 w-full",stickyClassName:"sticky top-0",restingClassName:"bg-transparent border-transparent shadow-none",scrolledClassName:"border-b border-border/60 bg-background/85 backdrop-blur supports-[backdrop-filter]:bg-background/75",innerClassName:"flex min-h-14 items-center gap-3 px-4 md:px-6",leadingClassName:"flex min-w-0 items-center gap-2 shrink-0",centerClassName:"flex min-w-0 flex-1 items-center gap-3",trailingClassName:"flex items-center gap-2 shrink-0"},ListCard:{wrapperClassName:"",className:"shadow-sm",activeClassName:"border-primary/30 bg-primary/10 shadow-sm",inactiveClassName:"hover:bg-accent/40",disabledClassName:"cursor-not-allowed opacity-60",dashedClassName:"border-dashed",compactClassName:"p-3",leadingClassName:"",bodyClassName:"",headerClassName:"",titleClassName:"",descriptionClassName:"",metaClassName:"",badgeClassName:"",trailingClassName:"",footerClassName:"",motion:{press:"press"}},ProviderSwitcher:{wrapperClassName:"w-full",className:"w-full",triggerClassName:"flex w-full items-center gap-2 rounded-xl px-1.5 py-1.5 text-left text-sm font-semibold text-foreground transition-colors hover:bg-accent/40",disabledClassName:"pointer-events-none opacity-60",iconWrapperClassName:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary",labelClassName:"block truncate",captionClassName:"block truncate text-[11px] font-normal text-muted-foreground/80",chevronClassName:"ml-auto shrink-0 text-muted-foreground/70",itemClassName:"",itemActiveClassName:"",itemInactiveClassName:"",itemMetaClassName:"text-xs text-muted-foreground",checkClassName:"text-primary"},Brand:{wrapperClassName:"",className:"flex items-center",logoClassName:"flex items-center gap-2 font-semibold",labelClassName:"text-sm font-medium"},SignIn:{className:"flex items-center",avatarClass:"mx-2 rounded-full object-cover"},Image:{wrapperClassName:"",className:"",motion:{enter:"fade",hover:!1}},ImageAvatar:{wrapperClassName:"",className:"",motion:{enter:"fade",hover:!1}},Percentage:{wrapperClassName:"",className:""},Tab:{wrapperClassName:"",className:"",menuClassName:"",itemClassName:"",contentClassName:"",triggerClassName:"",activeTriggerClassName:"",inactiveTriggerClassName:"",motion:{enter:"fadeUp"}},Code:{wrapperClassName:"",className:""},CodeEditor:{wrapperClassName:"",className:""},Prompt:{wrapperClassName:"",className:""}},He={preset:Pd,motion:Id,components:Ks},Md={mode:"light",radius:.125,colors:{background:"0 0% 98%",foreground:"215 25% 16%",card:"0 0% 100%",cardForeground:"215 25% 16%",popover:"0 0% 100%",popoverForeground:"215 25% 16%",primary:"215 25% 27%",primaryForeground:"210 40% 98%",secondary:"215 15% 93%",secondaryForeground:"215 25% 27%",muted:"215 15% 93%",mutedForeground:"215 15% 50%",accent:"215 15% 90%",accentForeground:"215 25% 27%",destructive:"0 72% 51%",destructiveForeground:"0 0% 100%",success:"142.1 76.2% 36.3%",successForeground:"0 0% 100%",warning:"32.1 94.6% 43.7%",warningForeground:"0 0% 100%",info:"198.6 88.7% 48.4%",infoForeground:"0 0% 100%",border:"215 15% 85%",input:"215 15% 85%",ring:"215 25% 27%"},dark:{background:"215 20% 12%",foreground:"215 10% 85%",card:"215 20% 15%",cardForeground:"215 10% 85%",popover:"215 20% 15%",popoverForeground:"215 10% 85%",primary:"215 35% 55%",primaryForeground:"0 0% 100%",secondary:"215 20% 20%",secondaryForeground:"215 10% 75%",muted:"215 20% 20%",mutedForeground:"215 10% 55%",accent:"215 20% 22%",accentForeground:"215 10% 85%",destructive:"0 62% 40%",destructiveForeground:"0 0% 100%",success:"142.1 70.6% 45.3%",successForeground:"0 0% 100%",warning:"32.1 94.6% 55%",warningForeground:"0 0% 100%",info:"198.6 88.7% 60%",infoForeground:"0 0% 100%",border:"215 20% 22%",input:"215 20% 22%",ring:"215 35% 55%"}},Td={none:{from:{},to:{},transition:{duration:0,easing:"linear",properties:["opacity","transform","box-shadow"]},reducedMotion:"always"},fade:{from:{opacity:0},to:{opacity:1},transition:{duration:140,easing:"cubic-bezier(0.2, 0, 0, 1)",properties:["opacity"]},reducedMotion:"respect-user"},fadeUp:{from:{opacity:0,transform:"translateY(4px)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:140,easing:"cubic-bezier(0.2, 0, 0, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},fadeDown:{from:{opacity:0,transform:"translateY(-4px)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:120,easing:"cubic-bezier(0.2, 0, 0, 1)",properties:["opacity","transform","visibility"]},reducedMotion:"respect-user"},slideFromRight:{from:{opacity:0,transform:"translateX(100%)"},to:{opacity:1,transform:"translateX(0)"},transition:{duration:180,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},slideFromLeft:{from:{opacity:0,transform:"translateX(-100%)"},to:{opacity:1,transform:"translateX(0)"},transition:{duration:180,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},slideFromTop:{from:{opacity:0,transform:"translateY(-100%)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:180,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},slideFromBottom:{from:{opacity:0,transform:"translateY(100%)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:180,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},press:{from:{},to:{transform:"scale(0.99)"},transition:{duration:90,easing:"cubic-bezier(0.2, 0, 0, 1)",properties:["transform","box-shadow"]},reducedMotion:"respect-user"},imageZoom:{from:{transform:"scale(1)"},to:{transform:"scale(1.06)"},transition:{duration:300,easing:"cubic-bezier(0.2, 0, 0, 1)",properties:["transform"]},reducedMotion:"respect-user"}},Dd={Grid:{Card:{wrapperClassName:"",className:"",headerClassName:"flex justify-between",bodyClassName:"p-0",footerClassName:"",loading:!1},Table:{wrapperClassName:"",className:"",headerClassName:"",bodyClassName:"",footerClassName:"",scrollClassName:"overflow-x-auto",selectedClassName:"bg-primary/10"},Gallery:{wrapperClassName:"",className:"",scrollClassName:"",headerClassName:"",bodyClassName:"",footerClassName:"",selectedClassName:"bg-primary/20",gap:1,rowCols:4},Modal:{mode:"form",size:"lg",position:"center",wrapperClassName:"",className:"",headerClassName:"",titleClassName:"",subtitleClassName:"pr-1 text-muted-foreground",bodyClassName:"",footerClassName:"",iconExpand:"fullscreen",iconCollapse:"fullscreen-exit",motion:{center:"fade",top:"slideFromTop",left:"slideFromLeft",right:"slideFromRight",bottom:"slideFromBottom",backdrop:"fade"}}},Table:{wrapperClassName:"",className:"",headerClassName:"",bodyClassName:"",footerClassName:"",scrollClassName:"overflow-x-auto",selectedClassName:"bg-primary/10"},Gallery:{wrapperClassName:"",className:"",scrollClassName:"",headerClassName:"",bodyClassName:"",footerClassName:"",selectedClassName:"bg-primary/20",gap:4,rowCols:2},Pagination:{wrapperClassName:"",className:"",stickyClassName:"fixed bottom-0 left-0 right-0 mx-5",scrollToTop:!1,scrollBehavior:"auto",maxItems:5,sticky:!0,align:"end"},Carousel:{showIndicators:!0,showControls:!0,showCaption:!0,dark:!1,autoPlay:!0},Card:{wrapperClassName:"",className:"",headerClassName:"flex justify-between bg-white/[.15] font-normal",bodyClassName:"flex flex-col",footerClassName:"",loading:!1},Loader:{wrapperClassName:"",className:"",icon:"custom-loader",title:"Loading..",description:""},ActionButton:{className:"btn-primary",badgeClassName:"rounded-full bg-destructive text-destructive-foreground",motion:{press:"press"}},LoadingButton:{className:"btn-primary",badgeClassName:"rounded-full bg-destructive text-destructive-foreground",motion:{press:"press"}},LinkButton:{className:"btn-outline-secondary"},Alert:{className:""},Badge:{className:""},Modal:{size:"lg",position:"center",wrapperClassName:"",className:"",headerClassName:"",titleClassName:"",subtitleClassName:"pr-1 text-muted-foreground",bodyClassName:"",footerClassName:"",iconExpand:"fullscreen",iconCollapse:"fullscreen-exit",motion:{center:"fade",top:"slideFromTop",left:"slideFromLeft",right:"slideFromRight",bottom:"slideFromBottom",backdrop:"fade"}},Dropdown:{wrapperClassName:"",className:"",triggerClassName:"btn btn-outline-primary",badgeClassName:"",menuClassName:"border-border/60 bg-popover/95 shadow-lg shadow-black/5 supports-[backdrop-filter]:bg-popover/92",menuHeaderClass:"text-muted-foreground/70",menuItemClass:"",menuDividerClass:"bg-border/60",headerClassName:"",footerClassName:"",Menu:{wrapperClassName:"",className:"list-none p-0 m-0",headerClassName:"",itemClassName:"",linkClassName:"flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent",iconClassName:"text-muted-foreground",textClassName:"",badgeClassName:"",arrowClassName:"",submenuClassName:""},motion:{open:"fadeDown",close:"fadeDown",press:"press"}},Notifications:{wrapperClassName:"",Dropdown:{className:"",triggerClassName:"btn btn-link",menuClassName:"mt-1 text-[11px] w-[300px] pt-1"}},Select:{wrapperClassName:"",className:""},Autocomplete:{wrapperClassName:"",className:""},Form:{wrapperClassName:"",buttonSaveClass:"btn-outline-primary",buttonDeleteClass:"btn-outline-danger",buttonBackClass:"btn-link",Card:{headerClassName:"",bodyClassName:"",footerClassName:"flex items-center justify-end gap-3"}},Menu:{wrapperClassName:"flex-1 overflow-auto p-4",className:"flex flex-col mb-auto",headerClassName:"",itemClassName:"",linkClassName:"flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground",iconClassName:"mr-1 shrink-0",textClassName:"flex-1",badgeClassName:"ml-1",arrowClassName:"",submenuClassName:"mt-1 flex flex-col gap-1 pl-4"},SideNav:{wrapperClassName:"",shellClassName:"border-r border-border bg-card text-foreground",overlayClassName:"shadow-lg",headerClassName:"border-b border-border px-1.5 py-2",navClassName:"px-1.5 py-2",footerClassName:"border-t border-border px-1.5 py-2",groupLabelClassName:"text-[10px] font-semibold uppercase tracking-[0.16em] text-muted-foreground/70 select-none",groupDividerClassName:"bg-border/60",itemClassName:"rounded-md",itemActiveClassName:"bg-primary/10 text-primary font-medium",itemChildActiveClassName:"bg-accent text-foreground font-medium",itemInactiveClassName:"text-muted-foreground hover:text-foreground hover:bg-accent/80",itemIconClassName:"",itemTextClassName:"",itemBadgeClassName:"ml-auto shrink-0 text-[10px] font-semibold leading-none px-1.5 py-[3px] rounded-full bg-primary/15 text-primary",itemCollapsedBadgeClassName:"absolute -top-0.5 -right-1 h-[7px] w-[7px] rounded-full bg-primary ring-1 ring-card",itemToggleClassName:"shrink-0 flex items-center justify-center w-6 h-6 rounded transition-colors text-muted-foreground/50 hover:text-foreground hover:bg-accent/80",subItemClassName:"rounded-sm",subItemActiveClassName:"bg-primary/10 text-primary font-medium",subItemInactiveClassName:"text-muted-foreground hover:text-foreground hover:bg-accent/80",collapseButtonClassName:"shrink-0 flex items-center justify-center rounded-md w-8 h-8 transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/80"},Toolbar:{wrapperClassName:"z-20 w-full",stickyClassName:"sticky top-0",restingClassName:"bg-transparent border-transparent shadow-none",scrolledClassName:"border-b border-border bg-background/90 backdrop-blur supports-[backdrop-filter]:bg-background/85",innerClassName:"flex min-h-13 items-center gap-3 px-4 md:px-5",leadingClassName:"flex min-w-0 items-center gap-2 shrink-0",centerClassName:"flex min-w-0 flex-1 items-center gap-3",trailingClassName:"flex items-center gap-2 shrink-0"},ListCard:{wrapperClassName:"",className:"",activeClassName:"border-primary/30 bg-primary/10",inactiveClassName:"hover:bg-accent/60",disabledClassName:"cursor-not-allowed opacity-60",dashedClassName:"border-dashed",compactClassName:"p-3",leadingClassName:"",bodyClassName:"",headerClassName:"",titleClassName:"",descriptionClassName:"",metaClassName:"",badgeClassName:"",trailingClassName:"",footerClassName:"",motion:{press:"press"}},ProviderSwitcher:{wrapperClassName:"w-full",className:"w-full",triggerClassName:"flex w-full items-center gap-2 rounded-xl px-1.5 py-1.5 text-left text-sm font-semibold text-foreground transition-colors hover:bg-accent/60",disabledClassName:"pointer-events-none opacity-60",iconWrapperClassName:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary",labelClassName:"block truncate",captionClassName:"block truncate text-[11px] font-normal text-muted-foreground/80",chevronClassName:"ml-auto shrink-0 text-muted-foreground/70",itemClassName:"",itemActiveClassName:"",itemInactiveClassName:"",itemMetaClassName:"text-xs text-muted-foreground",checkClassName:"text-primary"},Brand:{wrapperClassName:"",className:"flex items-center",logoClassName:"flex items-center gap-2 font-semibold",labelClassName:"text-sm font-medium"},SignIn:{className:"flex items-center",avatarClass:"mx-2 rounded-full object-cover"},Image:{wrapperClassName:"",className:"",motion:{enter:"fade",hover:!1}},ImageAvatar:{wrapperClassName:"",className:"",motion:{enter:"fade",hover:!1}},Percentage:{wrapperClassName:"",className:""},Tab:{wrapperClassName:"",className:"",menuClassName:"",itemClassName:"",contentClassName:"",triggerClassName:"",activeTriggerClassName:"",inactiveTriggerClassName:"",motion:{enter:"fadeUp"}},Code:{wrapperClassName:"",className:""},CodeEditor:{wrapperClassName:"",className:""},Prompt:{wrapperClassName:"",className:""}},Rd={preset:Md,motion:Td,components:Dd},_d={mode:"dark",radius:0,colors:{background:"0 0% 98%",foreground:"215 25% 16%",card:"0 0% 100%",cardForeground:"215 25% 16%",popover:"0 0% 100%",popoverForeground:"215 25% 16%",primary:"160 84% 39%",primaryForeground:"0 0% 0%",secondary:"160 20% 92%",secondaryForeground:"160 25% 20%",muted:"160 15% 93%",mutedForeground:"215 15% 50%",accent:"160 30% 90%",accentForeground:"160 84% 25%",destructive:"0 72% 51%",destructiveForeground:"0 0% 100%",success:"160 84% 39%",successForeground:"0 0% 0%",warning:"45 96% 48%",warningForeground:"0 0% 0%",info:"199 89% 48%",infoForeground:"0 0% 0%",border:"160 20% 85%",input:"160 20% 85%",ring:"160 84% 39%"},dark:{background:"220 20% 7%",foreground:"160 10% 90%",card:"220 20% 10%",cardForeground:"160 10% 90%",popover:"220 20% 10%",popoverForeground:"160 10% 90%",primary:"160 84% 39%",primaryForeground:"0 0% 0%",secondary:"220 20% 15%",secondaryForeground:"160 10% 75%",muted:"220 20% 14%",mutedForeground:"220 10% 55%",accent:"160 60% 15%",accentForeground:"160 84% 70%",destructive:"0 72% 51%",destructiveForeground:"0 0% 100%",success:"160 84% 45%",successForeground:"0 0% 0%",warning:"45 96% 55%",warningForeground:"0 0% 0%",info:"199 89% 55%",infoForeground:"0 0% 0%",border:"220 20% 18%",input:"220 20% 18%",ring:"160 84% 39%"}},Fd={none:{from:{},to:{},transition:{duration:0,easing:"linear",properties:["opacity","transform","box-shadow"]},reducedMotion:"always"},fade:{from:{opacity:0},to:{opacity:1},transition:{duration:180,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity"]},reducedMotion:"respect-user"},fadeUp:{from:{opacity:0,transform:"translateY(10px)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:200,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},fadeDown:{from:{opacity:0,transform:"translateY(-10px)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:180,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform","visibility"]},reducedMotion:"respect-user"},slideFromRight:{from:{opacity:0,transform:"translateX(100%)"},to:{opacity:1,transform:"translateX(0)"},transition:{duration:220,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},slideFromLeft:{from:{opacity:0,transform:"translateX(-100%)"},to:{opacity:1,transform:"translateX(0)"},transition:{duration:220,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},slideFromTop:{from:{opacity:0,transform:"translateY(-100%)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:220,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},slideFromBottom:{from:{opacity:0,transform:"translateY(100%)"},to:{opacity:1,transform:"translateY(0)"},transition:{duration:220,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["opacity","transform"]},reducedMotion:"respect-user"},press:{from:{},to:{transform:"scale(0.97)"},transition:{duration:110,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["transform","box-shadow"]},reducedMotion:"respect-user"},imageZoom:{from:{transform:"scale(1)"},to:{transform:"scale(1.06)"},transition:{duration:280,easing:"cubic-bezier(0.16, 1, 0.3, 1)",properties:["transform"]},reducedMotion:"respect-user"}},Od={Grid:{Card:{wrapperClassName:"",className:"",headerClassName:"flex justify-between",bodyClassName:"p-0",footerClassName:"",loading:!1},Table:{wrapperClassName:"",className:"",headerClassName:"",bodyClassName:"",footerClassName:"",scrollClassName:"overflow-x-auto",selectedClassName:"bg-primary/10"},Gallery:{wrapperClassName:"",className:"",scrollClassName:"",headerClassName:"",bodyClassName:"",footerClassName:"",selectedClassName:"bg-primary/20",gap:1,rowCols:4},Modal:{mode:"form",size:"lg",position:"center",wrapperClassName:"",className:"",headerClassName:"",titleClassName:"",subtitleClassName:"pr-1 text-muted-foreground",bodyClassName:"",footerClassName:"",iconExpand:"fullscreen",iconCollapse:"fullscreen-exit",motion:{center:"fade",top:"slideFromTop",left:"slideFromLeft",right:"slideFromRight",bottom:"slideFromBottom",backdrop:"fade"}}},Table:{wrapperClassName:"",className:"",headerClassName:"",bodyClassName:"",footerClassName:"",scrollClassName:"overflow-x-auto",selectedClassName:"bg-primary/10"},Gallery:{wrapperClassName:"",className:"",scrollClassName:"",headerClassName:"",bodyClassName:"",footerClassName:"",selectedClassName:"bg-primary/20",gap:4,rowCols:2},Pagination:{wrapperClassName:"",className:"",stickyClassName:"fixed bottom-0 left-0 right-0 mx-5",scrollToTop:!1,scrollBehavior:"auto",maxItems:5,sticky:!0,align:"end"},Carousel:{showIndicators:!0,showControls:!0,showCaption:!0,dark:!1,autoPlay:!0},Card:{wrapperClassName:"",className:"",headerClassName:"flex justify-between bg-white/[.15] font-normal",bodyClassName:"flex flex-col",footerClassName:"",loading:!1},Loader:{wrapperClassName:"",className:"",icon:"custom-loader",title:"Loading..",description:""},ActionButton:{className:"btn-primary",badgeClassName:"rounded-full bg-destructive text-destructive-foreground",motion:{press:"press"}},LoadingButton:{className:"btn-primary",badgeClassName:"rounded-full bg-destructive text-destructive-foreground",motion:{press:"press"}},LinkButton:{className:"btn-outline-secondary"},Alert:{className:""},Badge:{className:""},Modal:{size:"lg",position:"center",wrapperClassName:"",className:"",headerClassName:"",titleClassName:"",subtitleClassName:"pr-1 text-muted-foreground",bodyClassName:"",footerClassName:"",iconExpand:"fullscreen",iconCollapse:"fullscreen-exit",motion:{center:"fade",top:"slideFromTop",left:"slideFromLeft",right:"slideFromRight",bottom:"slideFromBottom",backdrop:"fade"}},Dropdown:{wrapperClassName:"",className:"",triggerClassName:"btn btn-outline-primary",badgeClassName:"",menuClassName:"rounded-none border-border/70 bg-popover/95 shadow-[0_0_0_1px_hsl(var(--border)/0.55),0_12px_32px_rgba(0,0,0,0.35)] supports-[backdrop-filter]:bg-popover/92",menuHeaderClass:"text-muted-foreground/75",menuItemClass:"",menuDividerClass:"bg-border/70",headerClassName:"",footerClassName:"",Menu:{wrapperClassName:"",className:"list-none p-0 m-0",headerClassName:"",itemClassName:"",linkClassName:"flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent",iconClassName:"text-muted-foreground",textClassName:"",badgeClassName:"",arrowClassName:"",submenuClassName:""},motion:{open:"fadeDown",close:"fadeDown",press:"press"}},Notifications:{wrapperClassName:"",Dropdown:{className:"",triggerClassName:"btn btn-link",menuClassName:"mt-1 text-[11px] w-[300px] pt-1"}},Select:{wrapperClassName:"",className:""},Autocomplete:{wrapperClassName:"",className:""},Form:{wrapperClassName:"",buttonSaveClass:"btn-outline-primary",buttonDeleteClass:"btn-outline-danger",buttonBackClass:"btn-link",Card:{headerClassName:"",bodyClassName:"",footerClassName:"flex items-center justify-end gap-3"}},Menu:{wrapperClassName:"flex-1 overflow-auto p-4",className:"flex flex-col mb-auto",headerClassName:"",itemClassName:"",linkClassName:"flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground",iconClassName:"mr-1 shrink-0",textClassName:"flex-1",badgeClassName:"ml-1",arrowClassName:"",submenuClassName:"mt-1 flex flex-col gap-1 pl-4"},SideNav:{wrapperClassName:"",shellClassName:"border-r border-border bg-card/95 text-foreground",overlayClassName:"shadow-[0_0_32px_rgba(16,185,129,0.18)]",headerClassName:"border-b border-border px-1.5 py-2",navClassName:"px-1.5 py-2",footerClassName:"border-t border-border px-1.5 py-2",groupLabelClassName:"text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground/70 select-none",groupDividerClassName:"bg-border/70",itemClassName:"rounded-none",itemActiveClassName:"bg-primary/12 text-primary font-medium",itemChildActiveClassName:"bg-accent/90 text-foreground font-medium",itemInactiveClassName:"text-muted-foreground hover:text-foreground hover:bg-accent/80",itemIconClassName:"",itemTextClassName:"",itemBadgeClassName:"ml-auto shrink-0 text-[10px] font-semibold leading-none px-1.5 py-[3px] rounded-none bg-primary/15 text-primary",itemCollapsedBadgeClassName:"absolute -top-0.5 -right-1 h-[7px] w-[7px] rounded-none bg-primary ring-1 ring-card",itemToggleClassName:"shrink-0 flex items-center justify-center w-6 h-6 rounded-none transition-colors text-muted-foreground/50 hover:text-foreground hover:bg-accent/80",subItemClassName:"rounded-none",subItemActiveClassName:"bg-primary/12 text-primary font-medium",subItemInactiveClassName:"text-muted-foreground hover:text-foreground hover:bg-accent/80",collapseButtonClassName:"shrink-0 flex items-center justify-center rounded-none w-8 h-8 transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/80"},Toolbar:{wrapperClassName:"z-20 w-full",stickyClassName:"sticky top-0",restingClassName:"bg-transparent border-transparent shadow-none",scrolledClassName:"border-b border-border bg-background/90 backdrop-blur supports-[backdrop-filter]:bg-background/85",innerClassName:"flex min-h-14 items-center gap-3 px-4 md:px-6",leadingClassName:"flex min-w-0 items-center gap-2 shrink-0",centerClassName:"flex min-w-0 flex-1 items-center gap-3",trailingClassName:"flex items-center gap-2 shrink-0"},ListCard:{wrapperClassName:"",className:"rounded-none shadow-[0_0_0_1px_hsl(var(--border)/0.7)]",activeClassName:"border-primary/50 bg-primary/10 text-foreground",inactiveClassName:"hover:bg-accent/70",disabledClassName:"cursor-not-allowed opacity-60",dashedClassName:"border-dashed",compactClassName:"p-3",leadingClassName:"rounded-none",bodyClassName:"",headerClassName:"",titleClassName:"",descriptionClassName:"",metaClassName:"",badgeClassName:"",trailingClassName:"",footerClassName:"",motion:{press:"press"}},ProviderSwitcher:{wrapperClassName:"w-full",className:"w-full",triggerClassName:"flex w-full items-center gap-2 rounded-none px-1.5 py-1.5 text-left text-sm font-semibold text-foreground transition-colors hover:bg-accent/70",disabledClassName:"pointer-events-none opacity-60",iconWrapperClassName:"flex h-8 w-8 shrink-0 items-center justify-center rounded-none bg-primary/10 text-primary",labelClassName:"block truncate",captionClassName:"block truncate text-[11px] font-normal text-muted-foreground/80",chevronClassName:"ml-auto shrink-0 text-muted-foreground/70",itemClassName:"rounded-none",itemActiveClassName:"",itemInactiveClassName:"",itemMetaClassName:"text-xs text-muted-foreground",checkClassName:"text-primary"},Brand:{wrapperClassName:"",className:"flex items-center",logoClassName:"flex items-center gap-2 font-semibold",labelClassName:"text-sm font-medium"},SignIn:{className:"flex items-center",avatarClass:"mx-2 rounded-full object-cover"},Image:{wrapperClassName:"",className:"",motion:{enter:"fade",hover:"imageZoom"}},ImageAvatar:{wrapperClassName:"",className:"",motion:{enter:"fade",hover:"imageZoom"}},Percentage:{wrapperClassName:"",className:""},Tab:{wrapperClassName:"",className:"",menuClassName:"",itemClassName:"",contentClassName:"",triggerClassName:"",activeTriggerClassName:"",inactiveTriggerClassName:"",motion:{enter:"fadeUp"}},Code:{wrapperClassName:"",className:""},CodeEditor:{wrapperClassName:"",className:""},Prompt:{wrapperClassName:"",className:""}},$d={preset:_d,motion:Fd,components:Od},Ld={...He,preset:{...He.preset,mode:"dark",colors:{...He.preset.colors},dark:{...He.preset.dark,background:"0 0% 11.8%",foreground:"0 0% 83.1%",cardForeground:"0 0% 83.1%",popover:"240 1.3% 14.7%",popoverForeground:"0 0% 80%",primaryForeground:"0 0% 11.8%",secondaryForeground:"0 0% 83.1%",accentForeground:"0 0% 83.1%"}}},jd={...He,preset:{...He.preset,mode:"light",colors:{...He.preset.colors,background:"0 0% 100%",foreground:"0 0% 0%",cardForeground:"0 0% 0%",popoverForeground:"0 0% 0%",primaryForeground:"0 0% 100%",secondaryForeground:"0 0% 0%",accent:"0 0% 91%",accentForeground:"0 0% 0%"},dark:{...He.preset.dark}}},Bd={...He,preset:{...He.preset,mode:"dark",colors:{...He.preset.colors},dark:{...He.preset.dark,background:"235 18.8% 12.5%",foreground:"229.3 35.4% 75.1%",card:"240 15.4% 10.2%",cardForeground:"232.7 13.9% 53.5%",popover:"240 14.9% 9.2%",popoverForeground:"232.7 13.9% 53.5%",primary:"217.3 39.8% 55.7%",primaryForeground:"0 0% 100%",secondary:"240 15.4% 10.2%",secondaryForeground:"232.7 13.9% 53.5%",muted:"235.4 18.8% 13.5%",mutedForeground:"230.3 16.1% 37.8%",accent:"228.8 20% 15.7%",accentForeground:"229.3 35.4% 75.1%",border:"240 11.1% 7.1%",input:"240 14.9% 9.2%",ring:"228.7 72.6% 85.7%"}}},zd={...He,preset:{...He.preset,mode:"light",colors:{...He.preset.colors,background:"231.4 16.3% 91.6%",foreground:"228.6 26.2% 27.6%",card:"226.7 12.3% 85.7%",cardForeground:"224.3 17.6% 25.7%",popover:"231.4 16.3% 91.6%",popoverForeground:"224.3 17.6% 25.7%",primary:"217.7 61.1% 41.4%",primaryForeground:"0 0% 100%",secondary:"226.7 12.3% 85.7%",secondaryForeground:"224.3 17.6% 25.7%",muted:"231.4 16.3% 91.6%",mutedForeground:"232.5 6.7% 47.1%",accent:"231.4 16.3% 91.6%",accentForeground:"224.3 17.6% 25.7%",border:"230 5.1% 76.9%",input:"231.4 16.3% 91.6%",ring:"224.3 17.6% 25.7%"},dark:{...He.preset.dark}}},Ud=["default","flat","cyber","vscode-dark-plus","vscode-light-plus","tokyo-night","tokyo-night-light"],Gs=r.createContext(Ks),qs=r.createContext(He.motion),Ys=r.createContext(null),Et={default:He,flat:Rd,cyber:$d,"vscode-dark-plus":Ld,"vscode-light-plus":jd,"tokyo-night":Bd,"tokyo-night-light":zd},_a=(e,t)=>{const n=e,a=t;for(const o in a)Object.prototype.hasOwnProperty.call(a,o)&&(typeof a[o]=="object"&&a[o]!==null?(n[o]||(n[o]={}),_a(n[o],a[o])):a[o]!==null&&(n[o]=a[o]));return e},jo=e=>_a({},e);function Hd(e){return typeof e=="object"&&e!==null&&"preset"in e&&"motion"in e&&"components"in e}function Vd(e){return typeof e=="string"||typeof e>"u"?{theme:e??"default",themes:{...Et}}:Hd(e)?{theme:"custom",themes:{...Et,custom:e}}:{defaultMode:e.defaultMode,theme:e.theme??"default",themes:{...Et,...e.themes??{}},themeOverride:e.themeOverride}}const Ws="llmnative.theme.activeTheme",Js="llmnative.theme.mode";function Bo(e){if(!(typeof window>"u"))try{const t=window.localStorage.getItem(Ws);return t&&e[t]?t:void 0}catch{return}}function zo(){if(!(typeof window>"u"))try{const e=window.localStorage.getItem(Js);return e==="light"||e==="dark"||e==="system"?e:void 0}catch{return}}function Kd(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(Ws,e),window.localStorage.setItem(Js,t)}catch{}}function la(e){return e!=="system"?e:typeof window>"u"||!window.matchMedia?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Uo(e){return"--rf-"+e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}function Gd({mode:e,radius:t,fontSans:n,fontMono:a,colors:o,dark:s,variables:l}){if(typeof document>"u")return;document.documentElement.classList.toggle("dark",la(e)==="dark");const i={},c={};for(const[u,f]of Object.entries(o??{}))f!==void 0&&(i[Uo(u)]=f);for(const[u,f]of Object.entries(s??{}))f!==void 0&&(c[Uo(u)]=f);i["--radius"]=`${t}rem`,i["--radius-sm"]=`${(t*.5).toFixed(4).replace(/\.?0+$/,"")}rem`,i["--radius-md"]=`${(t*.75).toFixed(4).replace(/\.?0+$/,"")}rem`,i["--radius-lg"]=`${t}rem`,i["--radius-xl"]=`${(t*1.5).toFixed(4).replace(/\.?0+$/,"")}rem`,i["--radius-2xl"]=`${(t*2).toFixed(4).replace(/\.?0+$/,"")}rem`,i["--radius-3xl"]=`${(t*3).toFixed(4).replace(/\.?0+$/,"")}rem`,n&&(i["--font-sans"]=n),a&&(i["--font-mono"]=a);for(const[u,f]of Object.entries(l??{}))i[u.startsWith("--")?u:`--${u}`]=f;let d=document.getElementById("rf-theme-vars");d||(d=document.createElement("style"),d.id="rf-theme-vars",document.head.appendChild(d));const m=u=>Object.entries(u).map(([f,p])=>` ${f}: ${p};`).join(`
|
|
2
|
-
`);
|
|
3
|
-
${m(i)}
|
|
4
|
-
}`:"",Object.keys(c).length?`.dark {
|
|
5
|
-
${
|
|
6
|
-
|
|
7
|
-
`)}const ia="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InRyYW5zcGFyZW50Ii8+PGNpcmNsZSBjeD0iNjUiIGN5PSIzNSIgcj0iMTAiIGZpbGw9IiM5Y2EzYWYiLz48cGF0aCBkPSJNMTAsNzUgTDMyLDUwIEw1Miw3MCBMNjgsNTIgTDkwLDcyIEw5MCw4MCBIMTAgWiIgZmlsbD0iIzljYTNhZiIvPjwvc3ZnPg==",Ir="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='50' fill='%23eef2f7'/%3E%3Ccircle cx='50' cy='38' r='16' fill='%2364758b'/%3E%3Cpath d='M22 84c3.8-20 19-31 28-31s24.2 11 28 31c.5 2.8-1.7 5-4.5 5h-47c-2.8 0-5-2.2-4.5-5z' fill='%2364758b'/%3E%3C/svg%3E",qd="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZD0iTTUwIDE1IEw4NSA1MCBMNTAgODUgTDE1IDUwIFoiIGZpbGw9IiNjY2MiIG9wYWNpdHk9IjAuMiIvPjxwYXRoIGQ9Ik01MCAzMCBMNzAgNTAgTDUwIDcwIEwzMCA1MCBaIiBmaWxsPSIjY2NjIi8+PC9zdmc+",Yd=({children:e,config:t=void 0})=>{const n=r.useMemo(()=>Vd(t),[t]),a=Bo(n.themes)??n.theme,o=n.themes[a]??n.themes.default,s=o.preset,[l,i]=r.useState(n.themes),[c,d]=r.useState(a),[m,u]=r.useState(zo()??n.defaultMode??s.mode??"light"),[f,p]=r.useState(s.radius??Et.default.preset.radius),[h,g]=r.useState(s.fontSans??""),[b,y]=r.useState(s.fontMono??""),[E,x]=r.useState(s.colors),[N,P]=r.useState(s.dark),[D,v]=r.useState(()=>jo(o.components)),[w,A]=r.useState(o.motion);r.useEffect(()=>{const T=Bo(n.themes)??n.theme,C=n.themes[T]??n.themes.default,M=C.preset;i(n.themes),d(T),u(zo()??n.defaultMode??M.mode??"light"),p(M.radius??Et.default.preset.radius),g(M.fontSans??""),y(M.fontMono??""),x(M.colors),P(M.dark),A(C.motion)},[n]),r.useEffect(()=>{const T=l[c]??l.default,C=jo(T.components);_a(C,n.themeOverride??{}),v(C),A(T.motion)},[c,n.themeOverride,l]),r.useEffect(()=>{Kd(c,m)},[c,m]),r.useEffect(()=>{const T=(l[c]??l.default).preset;Gd({mode:m,radius:f,fontSans:h,fontMono:b,colors:E,dark:N,variables:T.variables})},[m,l,c,f,h,b,E,N]);const I=r.useMemo(()=>({mode:m,resolvedMode:la(m),theme:c,primary:(E==null?void 0:E.primary)??Et.default.preset.colors.primary,primaryForeground:(E==null?void 0:E.primaryForeground)??Et.default.preset.colors.primaryForeground,radius:f,fontSans:h,fontMono:b,colors:E,dark:N,themes:l,setMode:u,toggleMode(){u(T=>la(T)==="dark"?"light":"dark")},applyTheme(T){l[T]||(process.env.NODE_ENV!=="production"&&console.warn(`[ThemeProvider] Unknown theme "${T}", falling back to "default".`),T="default");const M=(l[T]??l.default).preset;d(T),u(M.mode??"light"),p(M.radius??Et.default.preset.radius),g(M.fontSans??""),y(M.fontMono??""),x(M.colors),P(M.dark)},setPrimary(T){const C=T.split(" ")[0];x(M=>({...M,primary:T,ring:T,secondary:`${C} 40% 96%`,secondaryForeground:`${C} 47% 11%`,accent:`${C} 40% 94%`,accentForeground:`${C} 47% 11%`})),P(M=>({...M,primary:T,ring:T,secondary:`${C} 30% 18%`,secondaryForeground:`${C} 10% 96%`,accent:`${C} 30% 18%`,accentForeground:`${C} 10% 96%`}))},setRadius:p,setFont(T,C){g(T),C!==void 0&&y(C)},setColors(T){x(T)},setTokens(T){x(C=>({...C,...T})),P(C=>({...C,...T}))}}),[m,c,f,h,b,E,N,l]);return r.createElement(Ys.Provider,{value:I},r.createElement(qs.Provider,{value:w},r.createElement(Gs.Provider,{value:D},e)))},we=e=>r.useContext(Gs),Wd=()=>r.useContext(qs),Xs=()=>{const e=r.useContext(Ys);if(!e)throw new Error("useThemeController must be used inside <App> or <ThemeProvider>.");return e},Zs={common:{save:"Save",cancel:"Cancel",delete:"Delete",close:"Close",back:"Back",search:"Search",loading:"Loading...",noDataFound:"No data found",pageNavigation:"Page navigation",previous:"Previous",next:"Next",notFoundMessage:"Oops! Page not found.",goHome:"Go to Home"},auth:{signIn:"Sign in",signOut:"Sign out",connect:"Connect",connected:"Connected",authenticated:"Authenticated",notConfigured:'Auth provider "{provider}" is not configured. Add the required client key before using this action.',notImplemented:"AuthProvider does not implement signIn()."},form:{headerAdd:"New record",headerEdit:"Edit record",buttonSave:"Save",buttonDelete:"Delete",buttonBack:"Back",requiredField:"{field} is required",requiredFieldGeneric:"Required field",saveSuccess:"Record saved successfully",deleteSuccess:"Record deleted successfully",noticeRequiredFields:"Please fill in all required fields",noChangesToSave:"No changes to save",draftRestoreTitle:"Unsaved changes found",draftRestoreMessage:"A local draft is available for this form. Restore it or discard it.",draftRestoreAction:"Restore",draftDiscardAction:"Discard",draftRestoredTitle:"Draft restored",draftRestoredMessage:"The local draft has been restored. You can still discard it for a few seconds."},grid:{buttonAdd:"Add",deleteConfirm:"Delete record",emptyState:"No records found"},select:{placeholder:"Select...",loading:"Loading..."},modal:{save:"Save",delete:"Delete",cancel:"Cancel",close:"Close"},upload:{clickOrDrag:"Click to upload or drag and drop",dropToUpload:"Drop to upload",uploadMore:"Upload more files",editFileName:"Edit file name",editorImage:"Edit image",loaded:"Loaded",removeFile:"Remove",uploadAnother:"Upload another file",dropToParse:"Drop to parse"},notifications:{title:"Notifications",seeAll:"See all"},code:{copyCode:"Copy code",copy:"Copy",copied:"Copied",codeLanguageDefault:"text"},table:{noDataFound:"No data found",selectAllRows:"Select all rows",sortBy:"Sort by {label}",sortByCurrent:"Sort by {label}, currently {direction}",selectRow:"Select row {key}",reorderRow:"Reorder row {key}"},gallery:{selectItem:"Select item {key}"},crop:{enableCrop:"Click {scale} to enable this crop",variants:"Variants",outputFile:"Output file",active:"active",removeVariant:"Remove {scale} variant",fileName:"File name"},imageEditor:{title:"Image Editor",save:"Save",undo:"Undo",redo:"Redo",zoomOut:"Zoom Out",zoomIn:"Zoom In",crop:"Crop",flipHorizontal:"Flip horizontal",flipVertical:"Flip vertical",rotate:"Rotate 90°",freeDrawing:"Free drawing",arrow:"Arrow",text:"Text",rectangle:"Rectangle",circle:"Circle",triangle:"Triangle"},prompt:{noProviders:"No AI providers are registered.",aiNotConfiguredEdit:"AI is not configured. You can still edit and save this prompt.",aiNotConfiguredRun:"AI is not configured. Prompt execution is unavailable.",aiNotConfiguredShort:"AI not configured",toggleOnTitle:"Prompt ON. In PromptRun, this textarea is treated as the prompt template and can be executed against the current record. Turn OFF to skip the prompt system and use the plain fallback text instead.",toggleOffTitle:"Prompt OFF. In PromptRun, the prompt system is skipped and the plain fallback text is used directly. Turn ON to use this textarea as the prompt template.",closeEditor:"Close prompt editor",editSettings:"Edit prompt settings",attachFiles:"Attach files",attachmentsNotSupported:"The selected AI provider does not support image or document attachments.",run:"Run prompt",runFailed:"Prompt execution failed.",noMatchingCommands:"No matching commands",tokenUsage:"Token usage",tokenInput:"Input: {count} tok",tokenOutput:"Output: {count} tok",tokenContext:"Context: {percent}%",tokenCost:"Cost: ~${amount}",tokenTime:"Time: {seconds}s",tokenUsageEmpty:"Run the prompt to see token usage.",hidePreview:"Hide preview",showPreview:"Show resolved preview",noProvider:"No AI provider is available for this prompt.",noResponse:"The AI provider returned no response.",promptLabel:"Prompt: ",defaultOption:"Default"},layout:{maxElements:"You already have 12 items in the row: remove one before adding another.",noSpace:"No space available: cannot resize items enough to insert this field.",dragToMove:"Drag to move",remove:"Remove",dragToResize:"Drag to resize",dragHere:"Drag an element here"}};function Jd(e){return e}function Xd(e){return e}function Be(e,t){return e.replace(/\{(\w+)\}/g,(n,a)=>String(t[a]??`{${a}}`))}function $n(e,t){const n=o=>typeof o=="object"&&o!==null&&!Array.isArray(o),a=(o,s)=>{if(!n(o)||!n(s))return s??o;const l={...o};for(const i of Object.keys(s))l[i]=i in l?a(l[i],s[i]):s[i];return l};return a(e,t)}const Zd="llmnative_locale",Qd=60*60*24*365;function eu(){if(typeof document>"u")return null;const e=document.cookie.match(/(?:^|;\s*)llmnative_locale=([^;]+)/);return e?decodeURIComponent(e[1]):null}function tu(e){typeof document>"u"||(document.cookie=`${Zd}=${encodeURIComponent(e)}; max-age=${Qd}; path=/; SameSite=Lax`)}const Qs=r.createContext(null),el=({children:e,config:t})=>{const[n,a]=r.useState({}),o=r.useMemo(()=>{const u=[...Object.keys((t==null?void 0:t.translations)??{}),...Object.keys(n)];return Array.from(new Set(["en",...u.filter(f=>f!=="en")]))},[t==null?void 0:t.translations,n]),[s,l]=r.useState(()=>{const u=eu();return u&&o.includes(u)?u:(t==null?void 0:t.locale)??"en"}),i=r.useMemo(()=>{var h;const u=(h=t==null?void 0:t.translations)==null?void 0:h[s],f=n[s];let p=Zs;return u&&(p=$n(p,u)),f&&(p=$n(p,f)),p},[s,t==null?void 0:t.translations,n]),c=r.useCallback(u=>{tu(u),l(u)},[]),d=r.useCallback((u,f)=>{a(p=>{const h=p[u],g=h?$n(h,f):f;return{...p,[u]:g}})},[]),m=r.useMemo(()=>({dict:i,locale:s,availableLocales:o,setLocale:c,registerTranslations:d}),[i,s,o,c,d]);return r.createElement(Qs.Provider,{value:m},e)};function Te(e){const t=r.useContext(Qs);if(!t)throw new Error("useI18n must be used inside <App> or <I18nProvider>.");return e===void 0?t:e.split(".").reduce((n,a)=>n==null?void 0:n[a],t.dict)}function S(...e){return ad.twMerge(nd.clsx(e))}const ru="mx-auto w-full px-3 sm:max-w-[540px] md:max-w-[720px] lg:max-w-[960px] xl:max-w-[1140px] 2xl:max-w-[1320px]",nu="rf-row",au="rf-col",ou="rf-col-fill",su="rf-col-12",it=(e,t)=>e==="xs"?`rf-col-${t}`:`rf-col-${e}-${t}`,lu=e=>e==="xs"?"rf-col-auto":`rf-col-${e}-auto`,cr=e=>({auto:lu(e),1:it(e,1),2:it(e,2),3:it(e,3),4:it(e,4),5:it(e,5),6:it(e,6),7:it(e,7),8:it(e,8),9:it(e,9),10:it(e,10),11:it(e,11),12:it(e,12)}),iu={xs:cr("xs"),sm:cr("sm"),md:cr("md"),lg:cr("lg"),xl:cr("xl"),xxl:cr("xxl")},dr=(e,t)=>{const n=String(t);return iu[e][n]},Ne=({children:e=void 0,className:t=void 0,style:n=void 0,onClick:a=void 0})=>t?r.createElement("div",{className:t,style:n,onClick:a},e):r.createElement(r.Fragment,null,e),tl=({children:e=void 0,className:t=void 0,style:n=void 0})=>r.createElement("div",{className:S(ru,t),style:n},e),rl=({children:e=void 0,className:t=void 0,style:n=void 0})=>r.createElement("div",{className:S(nu,t),style:n},e),nl=({children:e=void 0,className:t=void 0,style:n=void 0,defaultSize:a=void 0,xxl:o=void 0,xl:s=void 0,lg:l=void 0,md:i=void 0,sm:c=void 0,xs:d=void 0})=>{const m=d??a,f=[au,m!==void 0||c!==void 0||i!==void 0||l!==void 0||s!==void 0||o!==void 0?m!==void 0?dr("xs",m):su:ou,c!==void 0?dr("sm",c):void 0,i!==void 0?dr("md",i):void 0,l!==void 0?dr("lg",l):void 0,s!==void 0?dr("xl",s):void 0,o!==void 0?dr("xxl",o):void 0,t];return r.createElement("div",{className:S(f),style:n},e)};function Fa(e){return typeof e=="object"&&e!==null&&!r.isValidElement(e)&&"content"in e}function al(e,t="info",n){if(!(e==null||e===!1))return Fa(e)?{...e,variant:e.variant||t,className:S(e.className,n)}:{content:e,variant:t,className:n}}const Jr=({badge:e,content:t=void 0,variant:n=void 0,defaultType:a="info",className:o=void 0,descriptorOnly:s=!1,children:l=void 0})=>{const i=t!==void 0?{content:t,variant:n,className:o}:e;if(s&&t===void 0&&!Fa(e))return e??null;const c=al(i,n||a,o);return c?l!==void 0?r.createElement(jr,{variant:c.variant,after:c.content,className:c.className},l):r.createElement(jr,{variant:c.variant,className:c.className},c.content):l??null},jr=({children:e,variant:t="info",before:n=void 0,after:a=void 0,wrapperClassName:o=void 0,className:s=void 0})=>{const l=we();if(r.isValidElement(e)){const i=S("badge badge-overlay badge-"+t,"absolute top-0 z-10",s||l.Badge.className);return r.createElement("span",{className:S("relative inline-flex",o)},e,n!==void 0&&r.createElement("span",{className:S(i,"left-0 -translate-x-1/2 -translate-y-1/2")},n),a!==void 0&&r.createElement("span",{className:S(i,"right-0 translate-x-1/2 -translate-y-1/2")},a),n===void 0&&a===void 0&&r.createElement("span",{className:S(i,"right-0 translate-x-1/2 -translate-y-1/2 !p-0 !min-w-0 w-2.5 h-2.5 rounded-full")}))}return r.createElement(Ne,{className:o},n,r.createElement("span",{className:S("badge badge-"+t,s||l.Badge.className)},e),a)},Ho={from:{},to:{},transition:{duration:0,easing:"linear",delay:0,properties:["opacity","transform","box-shadow"]},reducedMotion:"always"},Vo={transition:{duration:160,easing:"cubic-bezier(0.2, 0, 0, 1)",delay:0,properties:["opacity","transform","box-shadow"]},reducedMotion:"respect-user"},cu=()=>typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,Ko=(e,t,n="fade")=>{const a=e===void 0?n:e;return a===!1?Ho:typeof a=="string"?t[a]??t.none??Ho:a},ol=e=>e.properties.map(t=>`${t} ${e.duration}ms ${e.easing} ${e.delay}ms`).join(", "),sl=(e,t={},n)=>{const a=Ko(n,t,"fade"),o=Ko(e,t,n),s={...Vo.transition,...a.transition,...o.transition},l=o.reducedMotion??a.reducedMotion??Vo.reducedMotion,i=l==="always"||l==="respect-user"&&cu(),c={duration:i?0:s.duration,easing:i?"linear":s.easing,delay:i?0:s.delay,properties:s.properties};return{from:i?{}:{...a.from??{},...o.from??{}},to:i?{}:{...a.to??{},...o.to??{}},transition:c,reducedMotion:l,transitionValue:ol(c)}},Nn=(e,t)=>{const n=Wd();return r.useMemo(()=>sl(e,n,t),[e,n,t])},ar=(e,t,n,a)=>{const o=Nn(t,n);return r.useMemo(()=>({...a,...e?o.to:o.from,transition:[a==null?void 0:a.transition,o.transitionValue].filter(Boolean).join(", ")}),[e,a,o])},Xr=(e=!1,t,n,a="press")=>{const o=Nn(n,a),[s,l]=r.useState(!1);return{style:r.useMemo(()=>({...t,...s&&!e?o.to:o.from,transition:[t==null?void 0:t.transition,o.transitionValue].filter(Boolean).join(", ")}),[t,e,o,s]),pressHandlers:{onMouseDown:()=>!e&&l(!0),onMouseUp:()=>l(!1),onMouseLeave:()=>l(!1),onBlur:()=>l(!1)}}},Zr=(e,t,n="fadeUp")=>{const[a,o]=r.useState(!1);return r.useEffect(()=>{o(!1);const s=window.requestAnimationFrame(()=>o(!0));return()=>window.cancelAnimationFrame(s)},[t,n]),ar(a,t,n,e)},du={add:"Plus","arrow-arc-left":"Undo2","arrow-arc-right":"Redo2","arrow-line-down":"FlipVertical","arrow-line-right":"FlipHorizontal","camera-rotate":"RotateCw","caret-down":"ChevronDown","caret-right":"ChevronRight",close:"X",dashboard:"LayoutDashboard",edit:"Pencil",file:"FileText","floppy-disk":"Save",fullscreen:"Maximize","fullscreen-exit":"Minimize",github:"GitBranch","house-door":"Home","link-break":"Unlink","magnifying-glass-minus":"ZoomOut","magnifying-glass-plus":"ZoomIn",rectangle:"Square","text-t":"Type",trash:"Trash2",warning:"TriangleAlert"};function uu(e){return e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("")}class Oa{constructor(){this.id="lucide"}resolve(t){const n=du[t]??uu(t);return md[n]??null}}const mu={add:"Plus","arrow-arc-left":"ArrowArcLeft","arrow-arc-right":"ArrowArcRight","arrow-line-down":"ArrowLineDown","arrow-line-right":"ArrowLineRight","camera-rotate":"CameraRotate","caret-down":"CaretDown","caret-right":"CaretRight",close:"X",dashboard:"SquaresFour",edit:"PencilSimple","external-link":"ArrowSquareOut",file:"FileText","floppy-disk":"FloppyDisk",fullscreen:"CornersOut","fullscreen-exit":"CornersIn",github:"GithubLogo","house-door":"House","link-break":"LinkBreak","magnifying-glass-minus":"MagnifyingGlassMinus","magnifying-glass-plus":"MagnifyingGlassPlus",menu:"List",rectangle:"Rectangle",search:"MagnifyingGlass",settings:"Gear","text-t":"TextT",trash:"Trash",warning:"Warning",layers:"Stack"};function fu(e){return e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("")}class $a{constructor(t="regular"){this.weight=t,this.id="phosphor",this._cache=new Map}resolve(t){const n=this._cache.get(t);if(n)return n;const a=mu[t]??fu(t),o=fd[a];if(!o)return null;const s=this.weight,l=i=>r.createElement(o,{weight:s,...i});return this._cache.set(t,l),l}}const ll=r.createContext(null),il=r.createContext(null),Cr={lucide:new Oa,phosphor:new $a},Mr="lucide";function pu(e){return!!e&&typeof e=="object"&&typeof e.id=="string"&&typeof e.resolve=="function"}function gu(e){if(!e)return{defaultId:Mr,providers:{...Cr},aliases:{}};if(typeof e=="string")return{defaultId:e,providers:{...Cr},aliases:{}};if(pu(e))return{defaultId:e.id,providers:{...Cr,[e.id]:e},aliases:{}};if("default"in e&&"providers"in e){const t=e;return{defaultId:t.default,providers:{...Cr,...t.providers},aliases:t.aliases??{}}}return{defaultId:e.provider.id,providers:{...Cr,[e.provider.id]:e.provider},aliases:e.aliases??{}}}function hu(e,t){return Object.keys(t).length===0?e:{id:e.id,resolve(n){return e.resolve(t[n]??n)}}}function cl({provider:e,config:t,children:n}){const a=r.useMemo(()=>gu(t??e),[t,e]),[o,s]=r.useState(a.providers),[l,i]=r.useState(a.defaultId);r.useEffect(()=>{s(a.providers),i(a.defaultId)},[a]);const c=o[l]??o[Mr],d=r.useMemo(()=>c?hu(c,a.aliases):null,[c,a.aliases]),m=r.useMemo(()=>({providerId:(c==null?void 0:c.id)??Mr,providers:o,aliases:a.aliases,setProvider(u){if(o[u]){i(u);return}process.env.NODE_ENV!=="production"&&console.warn(`[IconProvider] Unknown provider "${u}", falling back to "${Mr}".`),i(Mr)},registerProvider(u,f){s(p=>({...p,[u]:f}))},resolve(u){return(d==null?void 0:d.resolve(u))??null}}),[c,o,a.aliases,d]);return r.createElement(il.Provider,{value:m},r.createElement(ll.Provider,{value:d},n))}function dl(){return r.useContext(ll)}function ul(){const e=r.useContext(il);if(!e)throw new Error("useIconController must be used inside <App> or <IconProvider>.");return e}const bu=new Oa,J=({name:e,size:t=16,className:n,style:a,provider:o,label:s,weight:l})=>{const i=dl(),c=o??i??bu;if(!c||typeof e!="string"||!e.trim())return null;const d=c.resolve(e);return d?r.createElement(d,{size:t,className:n,style:a,weight:l,"aria-label":s,"aria-hidden":s?void 0:!0}):null},Cn="btn",La="btn-primary",ml="btn-secondary",fl="btn-danger",pl="btn-success",gl="btn-warning",hl="btn-info",bl="btn-light",vl="btn-dark",yl="btn-outline-primary",wl="btn-outline-secondary",xl="btn-outline-danger",El="btn-outline-success",Nl="btn-link",Cl=e=>{switch(e){case"primary":return La;case"secondary":return ml;case"danger":return fl;case"success":return pl;case"warning":return gl;case"info":return hl;case"light":return bl;case"dark":return vl;case"outline-primary":return yl;case"outline-secondary":return wl;case"outline-danger":return xl;case"outline-success":return El;case"link":return Nl;default:return}},bt=({onClick:e,icon:t=void 0,label:n=void 0,badge:a=void 0,title:o=void 0,ariaLabel:s=void 0,disabled:l=!1,loading:i=!1,before:c=void 0,after:d=void 0,wrapperClassName:m=void 0,className:u=void 0,iconClassName:f=void 0,style:p=void 0,loadingLabel:h=void 0,variant:g=void 0,motion:b=void 0}={})=>{var C;const[y,E]=r.useState(i),[x,N]=r.useState(l),[P,D]=r.useState(""),v=M=>{D(M.message??"")},w=we(),A=Xr(x||y,p,b??((C=w.LoadingButton.motion)==null?void 0:C.press)??"press"),I=h??(P||(typeof n=="string"?`${n}...`:n));r.useEffect(()=>{E(i),N(l)},[i,l]);const T=r.createElement("button",{type:"button",title:o,"aria-label":s||t&&!n&&o||void 0,className:S(Cn,g?Cl(g):u||w.LoadingButton.className,g?u:void 0,y&&"whitespace-nowrap"),style:A.style,disabled:x||y,...A.pressHandlers,onClick:async M=>{M.stopPropagation(),N(!0),E(!0),await(e==null?void 0:e(M,v)),E(!1),N(!1)}},y&&r.createElement(r.Fragment,null,r.createElement("span",{className:S(I&&"mr-1","inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent")}),I&&r.createElement("span",null,I)),t&&!y&&r.createElement(J,{name:t,className:S(n&&"mr-1",f)}),!y&&n);return r.createElement(Ne,{className:m},c,r.createElement(Jr,{badge:y?void 0:a},T),d)},Qe=({onClick:e,icon:t=void 0,label:n=void 0,badge:a=void 0,title:o=void 0,ariaLabel:s=void 0,disabled:l=!1,before:i=void 0,after:c=void 0,wrapperClassName:d=void 0,className:m=void 0,iconClassName:u=void 0,style:f=void 0,variant:p=void 0,motion:h=void 0}={})=>{var E;const g=we(),b=Xr(l,f,h??((E=g.ActionButton.motion)==null?void 0:E.press)??"press"),y=r.createElement("button",{type:"button",title:o,"aria-label":s||t&&!n&&o||void 0,className:S(Cn,p?Cl(p):m||g.ActionButton.className,p?m:void 0),style:b.style,disabled:l,...b.pressHandlers,onClick:x=>{x.preventDefault(),x.stopPropagation(),e==null||e(x)}},t&&r.createElement(J,{name:t,className:S(n&&"mr-1",u)}),n);return r.createElement(Ne,{className:d},i,r.createElement("span",{title:l?o:void 0,style:l?{cursor:"not-allowed",display:"inline-flex"}:void 0},r.createElement(Jr,{badge:a},y)),c)},kl=({label:e=void 0,before:t=void 0,after:n=void 0,wrapperClassName:a=void 0,className:o=void 0})=>{const s=De.useNavigate(),l=we(),i=Te("common");return r.createElement(Ne,{className:a},t,r.createElement("a",{href:"#",className:S(Cn,o||l.LinkButton.className),onClick:c=>{c.preventDefault(),s(-1)}},e??i.back),n)},vu=({label:e,href:t,before:n=void 0,after:a=void 0,wrapperClassName:o=void 0,className:s=void 0})=>(we(),r.createElement(Ne,{className:o},n,r.createElement("h1",{className:S("m-0 text-2xl font-bold",s)},e+" ",r.createElement("a",{href:t,target:"_blank",rel:"noopener noreferrer"},r.createElement(J,{name:"external-link"}))),a)),yu=({title:e,href:t,imageSrc:n,width:a,before:o=void 0,after:s=void 0,wrapperClassName:l=void 0,className:i=void 0})=>r.createElement(Ne,{className:l},o,r.createElement("a",{href:t,className:S("mr-1",i),target:"_blank",title:e,rel:"noopener noreferrer"},r.createElement("img",{src:n,width:a||"100",height:"30",alt:e})),s),Br="globalVars",Sl=r.createContext(void 0),zr=()=>JSON.parse(localStorage.getItem(Br)||"{}"),wu=({children:e})=>{const[t,n]=r.useState(()=>zr());r.useEffect(()=>{const l=i=>{i.storageArea===localStorage&&i.key===Br&&n(zr())};return window.addEventListener("storage",l),()=>{window.removeEventListener("storage",l)}},[]);const a=l=>{localStorage.setItem(Br,JSON.stringify(l)),n(l)},o=(l,i)=>{const c={...t,[i]:l};a(c)},s=l=>{const i={...t};delete i[l],a(i)};return r.createElement(Sl.Provider,{value:{globalVars:t,setGlobalVars:o,removeGlobalVars:s}},e)},Al=e=>{const t=r.useContext(Sl);if(!t)throw new Error("useGlobalVars must be used within a GlobalProvider");const{globalVars:n,setGlobalVars:a,removeGlobalVars:o}=t;return[n[e]??null,s=>a(s,e),()=>o(e)]},Qt=(e=null)=>{const t=zr();return e?t[e]||{}:t},kn=(e,t)=>{const n={...zr(),[t]:e};localStorage.setItem(Br,JSON.stringify(n))},Pl=e=>{const t={...zr()};delete t[e],localStorage.setItem(Br,JSON.stringify(t))},Il=r.createContext(null),Ml=({registry:e,defaultKey:t,children:n})=>{const a=r.useMemo(()=>({registry:e,defaultKey:t}),[e,t]);return r.createElement(Il.Provider,{value:a},n)},ja=e=>{const t=r.useContext(Il);if(!t)throw new Error("useAuthProvider must be used inside <App providers={...} />.");const n=e??t.defaultKey,a=t.registry[n];if(!a)throw new Error(`AuthProvider '${n}' is not registered. Available: ${Object.keys(t.registry).join(", ")}`);return a},pr={basename:e=>e.split("/").filter(Boolean).pop()||"",extname:e=>{const t=e.lastIndexOf(".");return t>0?e.slice(t):""},dirname:e=>{const t=e.split("/").filter(Boolean);return t.pop(),"/"+t.join("/")},filename:e=>{const t=e.split("/").pop()||"",n=t.includes(".")?t.slice(t.lastIndexOf(".")):"";return t.replace(n,"")},parentBasename:e=>{const t=e.split("/").filter(Boolean);return t.pop(),t.pop()||""},parentDirname:e=>{const t=e.split("/").filter(Boolean);return t.pop(),t.pop(),"/"+t.join("/")},parentFilename:e=>{const t=e.split("/").filter(Boolean);t.pop();const n=t.pop()||"",a=n.includes(".")?n.slice(n.lastIndexOf(".")):"";return n.replace(a,"")},append:(e,t)=>{const n=e.split("/").slice(0,-1).join("/"),a=e.split("/").pop()||"",o=a.includes(".")?a.slice(a.lastIndexOf(".")):"",s=a.replace(o,"");return(n?n+"/":"")+s+t+o},prepend:(e,t)=>{const n=e.split("/").slice(0,-1).join("/"),a=e.split("/").pop()||"",o=a.includes(".")?a.slice(a.lastIndexOf(".")):"",s=a.replace(o,"");return(n?n+"/":"")+t+s+o},changeFilename:(e,{prefix:t="",suffix:n="",ext:a=null}={})=>{const o=e.split("/").slice(0,-1).join("/"),s=e.split("/").pop()||"",l=s.includes(".")?s.slice(s.lastIndexOf(".")):"",i=s.replace(l,""),c=a!==null?a?a.startsWith(".")?a:"."+a:"":l;return(o?o+"/":"")+t+i+n+c},join:(...e)=>e.join("/").replace(/\/+/g,"/"),parse:e=>{const t=pr.extname(e),n=pr.basename(e),a=pr.dirname(e),o=e.startsWith("/")?"/":"",s=n.replace(t,"");return{root:o,dir:a,base:n,ext:t,name:s}}},Tl=({src:e,width:t=void 0,height:n=void 0,title:a=void 0,alt:o=void 0,fit:s="cover",badge:l=void 0,feedback:i=void 0,before:c=void 0,after:d=void 0,wrapperClassName:m=void 0,className:u=void 0})=>{var C,M,k,R,$,j;const f=we(),[p,h]=r.useState(Ir),g=((M=(C=f.ImageAvatar)==null?void 0:C.motion)==null?void 0:M.enter)??!1,b=((R=(k=f.ImageAvatar)==null?void 0:k.motion)==null?void 0:R.hover)??!1,y=b!==!1,E=Zr(void 0,g,!1),[x,N]=r.useState(!1),P=ar(x,b,!1),D=e&&e.split("?")[0],v=`avatar::${D}`,w=`avatar-fetch-failed::${D}`,A=o||a||pr.filename(e||Ir);r.useEffect(()=>{if(!e||e.startsWith("data:")){h(e||Ir);return}const z=localStorage.getItem(v);if(z){h(z);return}h(e);const H=Number(localStorage.getItem(w)||0);H&&Date.now()-H<24*60*60*1e3||fetch(e).then(q=>{if(!q.ok)throw new Error(`HTTP ${q.status}`);return q.blob()}).then(q=>{const F=new FileReader;F.onloadend=()=>{const B=F.result;localStorage.setItem(v,B),localStorage.removeItem(w),h(B)},F.readAsDataURL(q)}).catch(q=>{console.warn("ImageAvatar:",q.message),localStorage.setItem(w,String(Date.now()))})},[e,v,w]);const I=t??n??void 0,T={...t&&n?{width:t,height:n,objectFit:s}:I?{width:I,height:I,objectFit:s}:{objectFit:s},...y?P:{}};return r.createElement(Ne,{className:S("flex items-center gap-3",m||(($=f.ImageAvatar)==null?void 0:$.wrapperClassName))},c&&r.createElement("div",{className:"shrink-0 self-center"},c),r.createElement("div",{className:S("relative shrink-0",y&&"overflow-hidden"),style:E,onMouseEnter:y?()=>N(!0):void 0,onMouseLeave:y?()=>N(!1):void 0},r.createElement("img",{src:p,alt:A,width:t??I,height:n??I,className:S(u||((j=f.ImageAvatar)==null?void 0:j.className)),title:a,style:T,onError:()=>h(Ir)}),l&&r.createElement("span",{className:S("badge badge-overlay absolute top-0 right-0 translate-x-1/4 -translate-y-1/4 z-10","badge-"+(l.variant||"success"),!l.content&&"!p-0 !min-w-0 w-3 h-3 rounded-full",l.className)},l.content),i&&r.createElement("div",{className:"mt-1 text-xs text-center"},i)),d&&r.createElement("div",{className:"min-w-0 self-center"},d))},sr=(e,t,n="")=>t.filter(a=>{const o=e==null?void 0:e[a];return o==null||o===""}).map(a=>`${n}${a}`),Ot=(e,t)=>({configured:t.length===0,missingKeys:t,reason:t.length?`${e} is not configured. Missing: ${t.join(", ")}.`:void 0}),Ba=(e,t="Provider")=>{if(!e)return{configured:!1,reason:`${t} is not registered.`};if(e.getConfigurationState)return e.getConfigurationState();if(e.isConfigured){const n=e.isConfigured();return{configured:n,reason:n?void 0:`${t} is not configured.`}}return{configured:!0}},za="/__/authorize",br="auths";function xu(){const e=new Uint32Array(28);return window.crypto.getRandomValues(e),Array.from(e,t=>`0${t.toString(16)}`.substr(-2)).join("")}async function Eu(e){const n=new TextEncoder().encode(e),a=await window.crypto.subtle.digest("SHA-256",n);return btoa(String.fromCharCode(...new Uint8Array(a))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}const Nu=(e,t,n)=>{const a=window.screen.width/2-n/2,o=window.screen.height/2-n/2,s=`width=${n},height=${n},top=${o},left=${a}`;return window.open(e,t,s)};function Cu({authServer:e,clientID:t,scopes:n=void 0,refreshParamName:a="access_type"}){const o=xu();localStorage.setItem("authChallenge",JSON.stringify({authServer:e,clientID:t,codeVerifier:o})),Eu(o).then(s=>{const l=new URLSearchParams({response_type:"code",client_id:t,redirect_uri:`${window.location.origin}${za}`,scope:n?n.join(" "):"",code_challenge:s,code_challenge_method:"S256",[a]:"offline"});Nu(`https://${e}/authorize?${l.toString()}`,"auth",600)})}const Dl=(e,t,n)=>{kn({[t]:{...n,server:e,client_id:t,iat:Math.floor(Date.now()/1e3)}},br)},ku=()=>{const e=De.useLocation().search,t=Te("common");return r.useEffect(()=>{const a=new URLSearchParams(e).get("code"),s=((d,m)=>{try{return JSON.parse(localStorage.getItem(d)||"")||m}catch{return m}})("authChallenge");if(!a||!s)return;const{authServer:l,clientID:i,codeVerifier:c}=s;En(`https://${l}/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:{grant_type:"authorization_code",client_id:i,code:a,redirect_uri:`${window.location.origin}${za}`,code_verifier:c}}).then(d=>{Dl(l,i,d),localStorage.removeItem("authChallenge"),window.close()}).catch(d=>console.error("Error:",d))},[e]),r.createElement("div",null,t.loading)},Rl=(e,t,n)=>En(`https://${e}/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:{grant_type:"refresh_token",client_id:t,refresh_token:n}}).then(a=>(Dl(e,t,a),a.access_token)).catch(a=>(console.error("Error:",a),localStorage.removeItem(br),null)),_l=(e,t=!0)=>{const[n]=Al(br),a=(n==null?void 0:n[e])||{},o=Math.floor(Date.now()/1e3)>=((a==null?void 0:a.iat)??0)+((a==null?void 0:a.expires_in)??0);return!!(a&&(a!=null&&a.access_token)&&(!o||t&&o&&a.refresh_token&&(Rl(a.server??"",a.client_id??"",a.refresh_token)||!0)))},ca=e=>{const t=Qt(br);return t==null?void 0:t[e]},Su=e=>{const t=Qt(br)||{};t[e]&&(delete t[e],kn(t,br))},Sn=e=>{const t=ca(e),n=Math.floor(Date.now()/1e3)>((t==null?void 0:t.iat)??0)+((t==null?void 0:t.expires_in)??0);return!n&&(t!=null&&t.access_token)?Promise.resolve(t.access_token):n&&(t!=null&&t.refresh_token)?Rl(t.server??"",t.client_id??"",t.refresh_token):Promise.resolve(null)},Au=e=>e==="signOut"||e==="disconnect",Fl=({provider:e,intent:t="signIn",aspect:n="button",scopes:a=void 0,iconLogout:o="log-out",avatarClass:s=void 0,options:l={},label:i=void 0,icon:c=void 0,title:d=void 0,className:m=void 0,disabled:u=!1,...f})=>{const p=ja(e),h=we(),g=Te("auth"),b=e||"AuthProvider",y=r.useCallback(()=>Ba(p,b),[p,b]),E=r.useMemo(()=>y(),[y]),x=E.configured,[N,P]=r.useState(()=>x?p.getUser():null),[D,v]=r.useState(()=>{var k;return x&&(((k=p.isAuthenticated)==null?void 0:k.call(p))??!!p.getUser())}),[w,A]=r.useState(!1),I=E.reason||Be(g.notConfigured,{provider:b});r.useEffect(()=>{var R;return y().configured?(P(p.getUser()),v(((R=p.isAuthenticated)==null?void 0:R.call(p))??!!p.getUser()),p.onAuthChange($=>{var j;P($),v(((j=p.isAuthenticated)==null?void 0:j.call(p))??!!$)})):(P(null),v(!1),A(!1),()=>{})},[p,y]);const T=()=>{var R;if(!y().configured){P(null),v(!1);return}const k=p.getUser();P(k),v(((R=p.isAuthenticated)==null?void 0:R.call(p))??!!k)},C=async()=>{if(y().configured){if(Au(t)){await p.signOut(),T();return}if(!p.signIn)throw new Error(g.notImplemented);await p.signIn({scopes:a,intent:t}),T()}},M={...f,...l,label:l.label??i??(D?g.connected:t==="signIn"?g.signIn:g.connect),icon:l.icon??c??(D?"link":"link-break"),title:x?l.title??d:I,className:l.className??m,disabled:!x||(l.disabled??u),style:x?l.style??f.style:{...f.style||{},...l.style||{},opacity:.55,cursor:"not-allowed"}};if(n==="avatar"){const k=(N==null?void 0:N.displayName)??(N==null?void 0:N.email)??(D?g.authenticated:g.signIn);return r.createElement("div",{className:m||h.SignIn.className,style:{position:"relative",display:"inline-flex"},title:x?void 0:I},r.createElement("button",{type:"button",className:"border-0 bg-transparent p-0",title:x?k:I,"aria-label":k,disabled:!x||u,"aria-disabled":!x||u,style:x?void 0:{opacity:.55,cursor:"not-allowed"},onClick:R=>{R.preventDefault(),R.stopPropagation(),!(!x||u)&&A($=>!$)}},r.createElement(Tl,{src:(N==null?void 0:N.photoURL)??Ir,title:x?k:I,height:36,className:s||h.SignIn.avatarClass})),w&&r.createElement("div",{role:"menu",className:"absolute right-0 top-full z-50 mt-2 min-w-40 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md"},!D&&r.createElement("button",{type:"button",role:"menuitem",className:"flex w-full cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",onClick:C},i??g.signIn.toUpperCase()),D&&r.createElement("button",{type:"button",role:"menuitem",className:"flex w-full cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",onClick:async()=>{await p.signOut(),T(),A(!1)}},o&&r.createElement(J,{name:o,className:"mr-2"}),g.signOut.toUpperCase())))}return r.createElement(Qe,{...M,onClick:C})},Ol=r.createContext(null),$l=({registry:e,defaultKey:t,children:n})=>{const a=r.useMemo(()=>({registry:e,defaultKey:t}),[e,t]);return r.createElement(Ol.Provider,{value:a},n)},$t=e=>{const t=r.useContext(Ol);if(!t)throw new Error("useDataProvider must be used inside <App>.");const n=e??t.defaultKey,a=t.registry[n];if(!a)throw new Error(`DataProvider '${n}' is not registered. Available: ${Object.keys(t.registry).join(", ")}`);return a};function Ll({children:e,show:t=!1,icon:n=void 0,title:a=void 0,description:o=void 0,before:s=void 0,after:l=void 0,wrapperClassName:i=void 0,className:c=void 0}){const d=we();return n=n||d.Loader.icon,a=a||d.Loader.title,o=o||d.Loader.description,t?r.createElement(Ne,{className:i||d.Loader.wrapperClassName},r.createElement("div",{className:"relative "+(c||d.Loader.className),style:{minHeight:"200px"}},r.createElement("div",{className:"absolute top-0 bottom-0 left-0 right-0",style:{zIndex:10,backdropFilter:"blur(2px)",background:"rgba(255, 255, 255, 0.5)"}},s,(n||a||o)&&r.createElement("div",{className:"flex flex-col items-center justify-center gap-2 p-4 text-center"},n&&r.createElement(J,{name:n,size:32,className:"animate-spin text-primary"}),a&&r.createElement("p",{className:"text-sm font-semibold text-foreground"},a),o&&r.createElement("p",{className:"text-xs text-muted-foreground"},o)),l),e)):e}const Pu="rounded-lg border border-border bg-card text-card-foreground shadow-sm",Iu="flex items-center gap-3 border-b border-border px-4 py-3",Mu="p-4",Tu="border-t border-border px-4 py-3",Ua=({children:e,title:t=void 0,header:n=void 0,footer:a=void 0,loading:o=void 0,wrapperClassName:s=void 0,className:l=void 0,headerClassName:i=void 0,bodyClassName:c=void 0,footerClassName:d=void 0,before:m=void 0,after:u=void 0})=>{const f=we(),p=s??f.Card.wrapperClassName??(m||u?"flex items-center gap-2":void 0);return r.createElement(Ne,{className:p},m,r.createElement("div",{className:S(Pu,f.Card.className,l)},n||t?r.createElement("div",{className:S(Iu,f.Card.headerClassName,i)},t?r.createElement("h5",{className:"m-0 whitespace-nowrap text-base leading-none font-semibold"},t):null,n):null,r.createElement("div",{className:S(Mu,f.Card.bodyClassName,c)},r.createElement(Ll,{show:o??f.Card.loading},e)),a?r.createElement("div",{className:S(Tu,f.Card.footerClassName,d)},a):null),u)},lr=e=>r.createElement(Ha,{...e}),Ha=({children:e,title:t=void 0,header:n=void 0,footer:a=void 0,onClose:o=void 0,onSave:s=void 0,onDelete:l=void 0,size:i=void 0,position:c=void 0,allowFullscreen:d=!1,showCancel:m=!0,before:u=void 0,after:f=void 0,wrapperClassName:p=void 0,className:h=void 0,headerClassName:g=void 0,titleClassName:b=void 0,subtitleClassName:y=void 0,bodyClassName:E=void 0,footerClassName:x=void 0,closeOnBackdrop:N=!0,zIndex:P=void 0,stackedBehind:D=!1,motion:v=void 0})=>{var de,ne,pe;const w=we(),A=Te("modal"),[I,T]=r.useState(!1),C=r.useRef(!1),M=r.useRef(void 0),[k,R]=r.useState(i),$={sm:"max-w-sm",md:"max-w-md",lg:"max-w-2xl",xl:"max-w-4xl","2xl":"max-w-6xl",fullscreen:"max-w-none w-screen h-dvh rounded-none"}[k||w.Modal.size||"lg"],j={sm:"w-72",md:"w-96",lg:"w-[36rem]",xl:"w-[48rem]","2xl":"w-[64rem]",fullscreen:"w-screen"}[k||w.Modal.size||"lg"],z={sm:"max-h-[30vh]",md:"max-h-[45vh]",lg:"max-h-[60vh]",xl:"max-h-[85vh]","2xl":"max-h-[90vh]",fullscreen:"h-dvh max-h-none"}[k||w.Modal.size||"lg"],H={center:{coverClass:"fixed inset-0 z-50 flex items-center justify-center overflow-y-auto p-4",dialogClass:S("relative z-50 flex w-full flex-col overflow-hidden rounded-lg border border-border/60 bg-card shadow-xl",k!=="fullscreen"&&"max-h-[calc(100dvh-2rem)]",$,p||w.Modal.wrapperClassName),contentClass:S("flex min-h-0 flex-1 flex-col",h||w.Modal.className),headerClassName:S("flex items-center justify-between gap-3 border-b border-border/60 px-4 py-3",g||w.Modal.headerClassName),titleClassName:S("text-lg font-semibold leading-none",b||w.Modal.titleClassName),subtitleClassName:S("mt-1 text-sm text-muted-foreground",y||w.Modal.subtitleClassName),bodyClassName:S("min-h-0 flex-1 overflow-auto p-4",E||w.Modal.bodyClassName),footerClassName:S("flex items-center justify-end gap-3 border-t border-border/60 px-4 py-3",x||w.Modal.footerClassName)},top:{coverClass:"fixed inset-0 z-50",dialogClass:S("fixed left-0 right-0 top-0 z-50 flex flex-col border-b border-border/60 bg-card shadow-xl",z,p||w.Modal.wrapperClassName),contentClass:S("flex min-h-0 flex-1 flex-col",h||w.Modal.className),headerClassName:S("flex items-center justify-between gap-3 border-b border-border/60 px-4 py-3",g||w.Modal.headerClassName),titleClassName:S("text-lg font-semibold leading-none",b||w.Modal.titleClassName),subtitleClassName:S("mt-1 text-sm text-muted-foreground",y||w.Modal.subtitleClassName),bodyClassName:S("min-h-0 flex-1 overflow-auto p-4",E||w.Modal.bodyClassName),footerClassName:S("flex items-center justify-end gap-3 border-t border-border/60 px-4 py-3",x||w.Modal.footerClassName)},left:{coverClass:"fixed inset-0 z-50",dialogClass:S("fixed bottom-0 left-0 top-0 z-50 flex max-w-full flex-col border-r border-border/60 bg-card shadow-xl",j,p||w.Modal.wrapperClassName),contentClass:S("flex min-h-0 flex-1 flex-col",h||w.Modal.className),headerClassName:S("flex items-center justify-between gap-3 border-b border-border/60 px-4 py-3",g||w.Modal.headerClassName),titleClassName:S("text-lg font-semibold leading-none",b||w.Modal.titleClassName),subtitleClassName:S("mt-1 text-sm text-muted-foreground",y||w.Modal.subtitleClassName),bodyClassName:S("min-h-0 flex-1 overflow-auto p-4",E||w.Modal.bodyClassName),footerClassName:S("flex items-center justify-end gap-3 border-t border-border/60 px-4 py-3",x||w.Modal.footerClassName)},right:{coverClass:"fixed inset-0 z-50",dialogClass:S("fixed bottom-0 right-0 top-0 z-50 flex max-w-full flex-col border-l border-border/60 bg-card shadow-xl",j,p||w.Modal.wrapperClassName),contentClass:S("flex min-h-0 flex-1 flex-col",h||w.Modal.className),headerClassName:S("flex items-center justify-between gap-3 border-b border-border/60 px-4 py-3",g||w.Modal.headerClassName),titleClassName:S("text-lg font-semibold leading-none",b||w.Modal.titleClassName),subtitleClassName:S("mt-1 text-sm text-muted-foreground",y||w.Modal.subtitleClassName),bodyClassName:S("min-h-0 flex-1 overflow-auto p-4",E||w.Modal.bodyClassName),footerClassName:S("flex items-center justify-end gap-3 border-t border-border/60 px-4 py-3",x||w.Modal.footerClassName)},bottom:{coverClass:"fixed inset-0 z-50",dialogClass:S("fixed bottom-0 left-0 right-0 z-50 flex flex-col border-t border-border/60 bg-card shadow-xl",z,p||w.Modal.wrapperClassName),contentClass:S("flex min-h-0 flex-1 flex-col",h||w.Modal.className),headerClassName:S("flex items-center justify-between gap-3 border-b border-border/60 px-4 py-3",g||w.Modal.headerClassName),titleClassName:S("text-lg font-semibold leading-none",b||w.Modal.titleClassName),subtitleClassName:S("mt-1 text-sm text-muted-foreground",y||w.Modal.subtitleClassName),bodyClassName:S("min-h-0 flex-1 overflow-auto p-4",E||w.Modal.bodyClassName),footerClassName:S("flex items-center justify-end gap-3 border-t border-border/60 px-4 py-3",x||w.Modal.footerClassName)}},q=k==="fullscreen"?"center":c||w.Modal.position,F=H[q],B=k==="fullscreen"?S(F.coverClass,"!overflow-hidden !p-0"):F.coverClass;r.useEffect(()=>{const X=window.document.body.style.overflow;window.document.body.style.overflow="hidden";const fe=window.requestAnimationFrame(()=>T(!0));return()=>{window.cancelAnimationFrame(fe),M.current!==void 0&&window.clearTimeout(M.current),window.document.body.style.overflow=X||"auto"}},[]);const _=v??((de=w.Modal.motion)==null?void 0:de[q])??"fade",V=Nn(_,_),K=()=>{if(C.current)return;C.current=!0,T(!1),window.document.body.style.overflow="auto";const X=V.transition.duration+V.transition.delay;M.current=window.setTimeout(()=>{o==null||o()},X)},ee=ar(I,_,_),se={...ar(I,((ne=w.Modal.motion)==null?void 0:ne.backdrop)??"fade",((pe=w.Modal.motion)==null?void 0:pe.backdrop)??"fade"),cursor:N&&o?"pointer":"default",...P!==void 0?{zIndex:P-10}:{}},le={cursor:N&&o?"pointer":"default",...P!==void 0?{zIndex:P}:{},...D?{pointerEvents:"none"}:{}},ae=D?{transform:c==="left"?"scale(0.94) translateX(-14px)":c==="right"?"scale(0.94) translateX(14px)":c==="bottom"?"scale(0.94) translateY(14px)":c==="top"?"scale(0.94) translateY(-14px)":"scale(0.94)",transformOrigin:c==="left"?"left center":c==="right"?"right center":c==="bottom"?"bottom center":c==="top"?"top center":"center",transition:"transform 200ms ease, filter 200ms ease",filter:"brightness(0.7)"}:{},ve=a!==!1&&(a||s||l||m&&o),he="inline-flex h-9 w-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring";return _t.createPortal(r.createElement(r.Fragment,null,r.createElement("div",{className:B,style:le,onClick:()=>{N&&o&&K()}},r.createElement("div",{className:F.dialogClass,style:{...ee,...ae,...P!==void 0?{zIndex:P}:{}},onClick:X=>X.stopPropagation()},u,r.createElement("div",{className:F.contentClass},(n||t||d||o)&&r.createElement("div",{className:F.headerClassName},r.createElement("div",{className:"min-w-0"},t&&r.createElement("h3",{className:F.titleClassName},t),t&&n&&r.createElement("div",{className:F.subtitleClassName},n),!t&&n&&(typeof n=="string"?r.createElement("h3",{className:F.titleClassName},n):n)),(d||o)&&r.createElement("div",{className:"ml-auto flex shrink-0 items-center gap-1"},d&&r.createElement("button",{type:"button",title:k==="fullscreen"?"Exit fullscreen":"Enter fullscreen","aria-label":k==="fullscreen"?"Exit fullscreen":"Enter fullscreen",className:he,onClick:X=>{X.preventDefault(),X.stopPropagation(),R(fe=>fe==="fullscreen"?i==="fullscreen"?"lg":i:"fullscreen")}},r.createElement(J,{name:k==="fullscreen"?w.Modal.iconCollapse:w.Modal.iconExpand,size:18})),o&&r.createElement("button",{type:"button",title:A.close,"aria-label":A.close,className:he,onClick:X=>{X.preventDefault(),X.stopPropagation(),K()}},r.createElement(J,{name:"x",size:20})))),r.createElement("div",{className:F.bodyClassName},e),ve&&r.createElement("div",{className:F.footerClassName},a,!a&&s&&r.createElement(bt,{variant:"primary",label:A.save,onClick:async X=>{X.preventDefault(),await s(X)&&K()}}),!a&&l&&r.createElement(bt,{variant:"danger",label:A.delete,onClick:async X=>{X.preventDefault(),await l(X),K()}}),!a&&m&&o&&r.createElement(Qe,{variant:"link",label:A.cancel,onClick:K}))),f)),!D&&r.createElement("div",{"data-rf-modal-backdrop":"","aria-hidden":"true",className:"fixed inset-0 z-40 bg-black/60 backdrop-blur-sm",style:se,onClick:()=>{N&&o&&K()}})),document.body)},Du=({children:e,title:t=void 0,onYes:n=void 0,onNo:a=void 0,onClose:o=void 0})=>r.createElement(Ha,{title:t,onClose:o,allowFullscreen:!1,footer:r.createElement(r.Fragment,null,n&&r.createElement(bt,{variant:"primary",label:"Yes",onClick:async s=>{s.preventDefault(),await n(s),o==null||o()}}),a&&r.createElement(bt,{variant:"secondary",label:"No",onClick:async s=>{s.preventDefault(),await a(s),o==null||o()}}))},e),Ru=({children:e,title:t=void 0,onClose:n=void 0})=>r.createElement(Ha,{title:t,onClose:n,allowFullscreen:!1,footer:r.createElement(r.Fragment,null,r.createElement(Qe,{variant:"primary",label:"Ok",onClick:n}))},e),Va=({src:e,placeholder:t=void 0,label:n=void 0,title:a=void 0,fit:o=void 0,position:s=void 0,feedback:l=void 0,width:i=void 0,height:c=void 0,srcset:d=void 0,sizes:m=void 0,before:u=void 0,after:f=void 0,wrapperClassName:p=void 0,className:h=void 0})=>{var v,w;const g=we(),b=((v=g.Image.motion)==null?void 0:v.enter)??!1,y=((w=g.Image.motion)==null?void 0:w.hover)??!1,E=y!==!1,x=Zr(void 0,b,!1),[N,P]=r.useState(!1),D=ar(N,y,!1);return r.createElement(Ne,{className:S("flex items-center gap-4",p||g.Image.wrapperClassName)},u&&r.createElement("div",{className:"shrink-0 self-center"},u),r.createElement("div",{className:S("flex min-w-0 flex-col",E&&"overflow-hidden"),style:x,onMouseEnter:E?()=>P(!0):void 0,onMouseLeave:E?()=>P(!1):void 0},r.createElement("img",{src:e||t||ia,alt:n||a||e,title:a,className:h||g.Image.className,style:{...i&&c?{maxWidth:i,aspectRatio:`${i} / ${c}`,width:"100%"}:i?{maxWidth:i,width:"100%"}:c?{height:c}:{},...o?{objectFit:o}:{},...s?{objectPosition:s}:{},...E?D:{}},width:i,height:c,srcSet:d,sizes:m}),l&&r.createElement("div",{className:"mt-2 text-sm text-muted-foreground"},l)),f&&r.createElement("div",{className:"shrink-0 self-center"},f))},_u=({url:e=void 0,label:t=void 0,logo:n=void 0,width:a=void 0,height:o=36,wrapperClassName:s=void 0,className:l=void 0,logoClassName:i=void 0,labelClassName:c=void 0})=>{const d=we(),m=r.createElement(r.Fragment,null,r.createElement(Va,{src:n||qd,width:a,height:o}),t&&r.createElement("span",{className:c||d.Brand.labelClassName},t));return r.createElement(Ne,{className:s},r.createElement("div",{className:l||d.Brand.className},e?r.createElement(De.Link,{to:e,className:i||d.Brand.logoClassName},m):r.createElement("span",{className:i||d.Brand.logoClassName},m)))};function jl(e){const{items:t,rootItem:n,baseUrl:a,stringify:o=!1}=e,l={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[...n?[n]:[],...t].map((i,c)=>({"@type":"ListItem",position:c+1,name:i.label,...i.href?{item:`${a}${i.href}`}:{}}))};return o?JSON.stringify(l):l}function Fu(e,t){if(Array.isArray(e))return e;const n=qr(e||t).split("/").filter(Boolean);let a="";const o=n.map(s=>(a+=`/${s}`,{label:s,href:a}));return o.length===0?o:[...o.slice(0,-1),{label:o[o.length-1].label}]}function Ou(e){if(e)return typeof e=="string"?{label:e}:e}const $u=()=>r.createElement("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},r.createElement("polyline",{points:"9 18 15 12 9 6"})),Lu=({value:e})=>r.createElement("span",{className:"text-muted-foreground/60 select-none flex items-center","aria-hidden":!0},e==="chevron"?r.createElement($u,null):e),Go=({href:e,label:t})=>r.createElement(De.Link,{to:e,className:"text-muted-foreground hover:text-foreground transition-colors"},t),ju=({label:e})=>r.createElement("span",{className:"text-foreground font-medium","aria-current":"page"},e),Bl=({trail:e=void 0,rootItem:t=void 0,separator:n="/",jsonLd:a=!1,baseUrl:o=void 0,className:s=void 0})=>{const l=De.useLocation(),i=Fu(e,l.pathname),c=Ou(t),d=[];if(c){const u=c.href?r.createElement(Go,{href:c.href,label:c.label}):r.createElement("span",{className:"text-muted-foreground"},c.label);d.push({key:"__root",node:u})}if(i.forEach((u,f)=>{const p=`${u.href??"__item"}-${f}`,h=u.node?u.node:u.href?r.createElement(Go,{href:u.href,label:u.label}):r.createElement(ju,{label:u.label});d.push({key:p,node:h})}),!d.length)return null;const m=a?jl({items:i,rootItem:c,baseUrl:o??(typeof window<"u"?window.location.origin:""),stringify:!0}):null;return r.createElement(r.Fragment,null,r.createElement("nav",{"aria-label":"Breadcrumb",className:s},r.createElement("ol",{className:"flex flex-wrap items-center gap-1.5 text-sm"},d.map((u,f)=>r.createElement(r.Fragment,{key:u.key},f>0&&r.createElement("li",null,r.createElement(Lu,{value:n})),r.createElement("li",null,u.node))))),m&&r.createElement("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:m}}))},Bu=({children:e,showIndicators:t=!1,showControls:n=!1,showCaption:a=!1,dark:o=!1,autoPlay:s=void 0,initialSlide:l=0,renderCaption:i=void 0,onSlideClick:c=void 0})=>{const d=we(),m=Te("common"),u=r.Children.toArray(e).filter(r.isValidElement),f=u.length;t=t||d.Carousel.showIndicators,n=n||d.Carousel.showControls,a=a||d.Carousel.showCaption,o=o||d.Carousel.dark;const p=d.Carousel.autoPlay;s=s||(typeof p=="object"?p:void 0);const h=f>0?Math.min(Math.max(l,0),f-1):0,[g,b]=r.useState(!1),[y,E]=r.useState(h);r.useEffect(()=>{E(h)},[h]);const x=r.useCallback(v=>{if(f<=0)return;if((s==null?void 0:s.wrap)??!0){const A=(v+f)%f;E(A);return}E(Math.min(Math.max(v,0),f-1))},[s==null?void 0:s.wrap,f]),N=r.useCallback(()=>x(y-1),[y,x]),P=r.useCallback(()=>x(y+1),[y,x]);r.useEffect(()=>{if(!s||f<=1||s.pause==="hover"&&g)return;const v=window.setInterval(()=>{E(w=>{const A=w+1;return A<f?A:s.wrap?0:w})},s.interval||2e3);return()=>window.clearInterval(v)},[s,g,f]);const D=v=>{if(!a)return null;if(i)return i(v);const{alt:w,description:A}=v.props;return!w&&!A?null:r.createElement("div",{className:S("absolute inset-x-4 bottom-4 hidden rounded-lg px-4 py-3 md:block",o?"bg-white/80 text-slate-900":"bg-black/60 text-white")},w&&r.createElement("h5",{className:"text-sm font-semibold"},w),A&&r.createElement("p",{className:"mt-1 text-sm opacity-90"},A))};return f===0?null:r.createElement("div",{className:"relative overflow-hidden rounded-xl",onMouseEnter:()=>b(!0),onMouseLeave:()=>b(!1)},r.createElement("div",{className:S("relative min-h-0",c&&"cursor-pointer"),onClick:c},u.map((v,w)=>{const A=w===y;return r.createElement("div",{key:w,"aria-hidden":!A,className:S("relative transition-opacity duration-300 ease-out",A?"opacity-100":"pointer-events-none absolute inset-0 opacity-0")},v,(t||n||a)&&g&&r.createElement("div",{className:S("pointer-events-none absolute inset-0 opacity-20",o?"bg-white":"bg-black")}),g&&D(v))})),t&&f>1&&r.createElement("ol",{className:"absolute inset-x-0 bottom-4 z-10 flex items-center justify-center gap-2 px-4"},u.map((v,w)=>r.createElement("li",{key:w},r.createElement("button",{type:"button","aria-label":`${m.pageNavigation} ${w+1}`,"aria-current":w===y?"true":void 0,onClick:()=>x(w),className:S("h-2.5 w-2.5 rounded-full border transition-all",w===y?"scale-110 border-white bg-white":"border-white/60 bg-white/30 hover:bg-white/60")})))),n&&g&&f>1&&r.createElement(r.Fragment,null,r.createElement("button",{type:"button","aria-label":m.previous,onClick:v=>{v.stopPropagation(),N()},className:"absolute left-3 top-1/2 z-10 inline-flex h-10 w-10 -translate-y-1/2 items-center justify-center rounded-full bg-background/85 text-foreground shadow-md transition-colors hover:bg-background"},r.createElement(J,{name:"chevron-left",size:18})),r.createElement("button",{type:"button","aria-label":m.next,onClick:v=>{v.stopPropagation(),P()},className:"absolute right-3 top-1/2 z-10 inline-flex h-10 w-10 -translate-y-1/2 items-center justify-center rounded-full bg-background/85 text-foreground shadow-md transition-colors hover:bg-background"},r.createElement(J,{name:"chevron-right",size:18}))))},zl=({menuKey:e,as:t="ul",badges:n={},before:a=void 0,after:o=void 0,wrapperClassName:s=void 0,className:l=void 0,headerClassName:i=void 0,itemClassName:c=void 0,linkClassName:d=void 0,iconClassName:m=void 0,textClassName:u=void 0,badgeClassName:f=void 0,arrowClassName:p=void 0,submenuClassName:h=void 0})=>{const g=Do(e),b=we(),y=({item:x,index:N})=>{var I;const[P,D]=r.useState(x.active);r.useEffect(()=>{D(x.active)},[x]);const v=(((I=x.children)==null?void 0:I.length)??0)>0,w=(x.title??"").toLowerCase(),A=()=>r.createElement("span",{className:m??b.Menu.iconClassName},r.createElement(J,{name:x.icon}));return x.path?r.createElement("li",{className:S(c??b.Menu.itemClassName)},r.createElement(De.Link,{to:x.path.split("*")[0],className:S(d??b.Menu.linkClassName,x.active&&"bg-primary/10 text-primary"),...v&&{},onClick:T=>{v&&!Da(T,"a")&&(T.preventDefault(),D(C=>!C))}},x.icon&&r.createElement(A,null),r.createElement("span",{className:u??b.Menu.textClassName},x.title),n[w]&&r.createElement(jr,{variant:n[w].type,className:f??b.Menu.badgeClassName},n[w].children),v&&r.createElement("span",{className:S(p??b.Menu.arrowClassName,"ml-auto inline-flex shrink-0 items-center justify-center text-muted-foreground transition-transform duration-200",P&&"rotate-90")},r.createElement(J,{name:"chevron-right",size:14}))),v&&r.createElement("div",{className:S("grid transition-[grid-template-rows,opacity] duration-200 ease-out",P?"grid-rows-[1fr] opacity-100":"grid-rows-[0fr] opacity-0")},r.createElement("div",{className:"min-h-0 overflow-hidden"},(()=>{const T=t;return r.createElement(T,{className:h??b.Menu.submenuClassName},x.children.map((C,M)=>r.createElement(y,{key:M,item:C,index:M})))})()))):r.createElement("li",{key:N,className:i??b.Menu.headerClassName},x.icon&&r.createElement(A,null),x.title&&(/^-+$/.test(x.title)?r.createElement("hr",{className:"m-0"}):r.createElement("span",null,x.title)))},E=t;return r.createElement(Ne,{className:s??b.Menu.wrapperClassName},a,r.createElement(E,{className:l??b.Menu.className},g.map((x,N)=>r.createElement(y,{key:N,item:x,index:N}))),o)},gt=({children:e,trigger:t,badge:n=void 0,header:a=void 0,footer:o=void 0,defaultOpen:s=!1,open:l=void 0,onOpenChange:i=void 0,staticOpen:c=!1,position:d=void 0,placement:m="bottom",strategy:u="fixed",wrapperClassName:f=void 0,className:p=void 0,before:h=void 0,after:g=void 0,triggerClassName:b=void 0,menuClassName:y=void 0,badgeClassName:E=void 0,headerClassName:x=void 0,footerClassName:N=void 0,motion:P=void 0})=>{var ve,he;const D=we(),[v,w]=r.useState(s),A=r.useRef(null),I=r.useRef(null),T=r.useRef(null),C=r.useId(),M=c?!0:l??v,[k,R]=r.useState("bottom"),[$,j]=r.useState(void 0),[z,H]=r.useState(null),q=!c&&t!==void 0,F=ar(M,P??((ve=D.Dropdown.motion)==null?void 0:ve.open)??"fadeDown",((he=D.Dropdown.motion)==null?void 0:he.open)??"fadeDown"),B=r.useCallback(de=>{c||(l===void 0&&w(de),i==null||i(de))},[c,l,i]);r.useEffect(()=>{if(!M||c)return;const de=pe=>{var fe,Ae;const X=pe.target;!((fe=A.current)!=null&&fe.contains(X))&&!((Ae=T.current)!=null&&Ae.contains(X))&&B(!1)},ne=pe=>{pe.key==="Escape"&&B(!1)};return window.document.addEventListener("pointerdown",de),window.document.addEventListener("keydown",ne),()=>{window.document.removeEventListener("pointerdown",de),window.document.removeEventListener("keydown",ne)}},[c,M,B]),r.useEffect(()=>{if(!M||c||!I.current)return;const de=I.current.getBoundingClientRect(),ne=window.innerHeight-de.bottom-8,pe=de.top-8;let X;if(m==="auto"){const oe=T.current?T.current.scrollHeight:240;X=ne<oe+8?"top":"bottom",R(X)}else X=m==="top"?"top":"bottom";if(j(Math.max(160,X==="top"?pe:ne)),u==="absolute")return;const Ae=d==="end",Pe=d==="start";H(X==="top"?{bottom:window.innerHeight-de.top+4,...Ae?{right:window.innerWidth-de.right}:Pe?{left:de.left}:{left:de.left}}:{top:de.bottom+4,...Ae?{right:window.innerWidth-de.right}:Pe?{left:de.left}:{left:de.left}})},[M,m,d,c,u]);function _(de){return typeof de=="object"&&de!==null&&!r.isValidElement(de)&&("icon"in de||"text"in de)}const V=q?r.createElement(Ul,{className:b,badge:n,badgeClassName:E,motion:P,title:_(t)?t.title:void 0,onToggle:()=>B(!M),open:M,menuId:C,buttonRef:I},_(t)?r.createElement(r.Fragment,null,t.icon&&r.createElement(J,{name:t.icon,className:t.text?"mr-2":void 0}),t.text):t):null,K=f??D.Dropdown.wrapperClassName??(h||g?"flex items-center gap-2":void 0),ee=k==="top"?"bottom-full mb-1":"top-full mt-1",se=d==="end"?"right-0":"left-0",le=r.createElement("div",{ref:T,id:C,role:"menu","aria-hidden":!M,className:S("min-w-56 overflow-y-auto rounded-xl border border-border/60 bg-popover/95 p-1 text-popover-foreground shadow-xl shadow-black/5 outline-none backdrop-blur supports-[backdrop-filter]:bg-popover/90 dark:shadow-black/20",c?"relative":u==="absolute"?`absolute z-[200] ${ee} ${se}`:"fixed z-[200]",y||D.Dropdown.menuClassName),style:c?void 0:{...F,opacity:M?1:0,visibility:M?"visible":"hidden",pointerEvents:M?void 0:"none",maxHeight:$,minWidth:I.current?I.current.offsetWidth:void 0,...u==="fixed"?z??{}:{}},onClick:de=>{de.stopPropagation()}},a&&r.createElement("div",{className:S("px-2 py-1.5 text-sm font-semibold",x||D.Dropdown.headerClassName)},a,r.createElement(Ur,null)),e,o&&r.createElement("div",{className:N||D.Dropdown.footerClassName},r.createElement(Ur,null),o)),ae=!c&&u==="fixed"&&typeof document<"u";return r.createElement(Ne,{className:K},h,r.createElement("div",{ref:A,className:S(c?"inline-block text-left":"relative inline-block text-left",p||D.Dropdown.className)},V,ae?_t.createPortal(le,document.body):le),g)},Ul=({children:e,badge:t=void 0,display:n="dynamic",className:a=void 0,badgeClassName:o=void 0,motion:s=void 0,title:l=void 0,onToggle:i=void 0,open:c=!1,menuId:d=void 0,buttonRef:m=void 0})=>{var h;const u=we(),f=Xr(!1,{cursor:"pointer"},s??((h=u.Dropdown.motion)==null?void 0:h.press)??"press"),p=r.createElement("button",{ref:m,type:"button",title:l,className:S("inline-flex items-center justify-center gap-2",a||u.Dropdown.triggerClassName),style:f.style,"aria-haspopup":"menu","aria-expanded":c,"aria-controls":d,onClick:i,...f.pressHandlers,onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),i==null||i())},"data-display":n},e);return r.createElement(Jr,{badge:t,className:o||u.Dropdown.badgeClassName},p)},at=({children:e,url:t=void 0,onClick:n=void 0,icon:a=void 0,className:o=void 0})=>{const s=we(),l=a?r.createElement("span",{className:"inline-flex min-w-0 items-center gap-2"},r.createElement("span",{className:"inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground"},r.createElement(J,{name:a,size:16})),r.createElement("span",{className:"min-w-0"},e)):e;return t?r.createElement(De.Link,{to:t,role:"menuitem",className:S("flex w-full cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",o||s.Dropdown.menuItemClass)},l):n?r.createElement("button",{onClick:n,role:"menuitem",className:S("flex w-full cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",o||s.Dropdown.menuItemClass)},l):r.createElement("span",{role:"menuitem",className:S("flex w-full select-none items-center rounded-sm px-2 py-1.5 text-sm",o||s.Dropdown.menuItemClass)},l)},Hl=({children:e,className:t})=>{const n=we();return r.createElement("div",{className:S("px-2 py-1.5 text-xs font-medium uppercase tracking-wide text-muted-foreground",t||n.Dropdown.menuHeaderClass)},e)},Ur=({className:e})=>{const t=we();return r.createElement("div",{className:S("-mx-1 my-1 h-px bg-border/60",e||t.Dropdown.menuDividerClass)})},zu=({menuKey:e,as:t="ul",badges:n={},before:a=void 0,after:o=void 0})=>{const s=we();return r.createElement(zl,{menuKey:e,as:t,badges:n,before:a,after:o,wrapperClassName:s.Dropdown.Menu.wrapperClassName,className:s.Dropdown.Menu.className,headerClassName:s.Dropdown.Menu.headerClassName,itemClassName:s.Dropdown.Menu.itemClassName,linkClassName:s.Dropdown.Menu.linkClassName,iconClassName:s.Dropdown.Menu.iconClassName,textClassName:s.Dropdown.Menu.textClassName,badgeClassName:s.Dropdown.Menu.badgeClassName,arrowClassName:s.Dropdown.Menu.arrowClassName,submenuClassName:s.Dropdown.Menu.submenuClassName})};function Uu({items:e=[],badge:t,seeAllUrl:n,onMarkAllRead:a,motion:o,className:s}){const l=Te("notifications"),i=e.length>0,c=Zr(void 0,o??"fadeDown",o??"fadeDown");return r.createElement(gt,{trigger:r.createElement(J,{name:"bell",size:18}),triggerClassName:"flex items-center justify-center w-9 h-9 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors",badge:t,position:"end",placement:"auto",menuClassName:"w-80",motion:o,className:s},r.createElement("div",{className:"flex items-center justify-between px-3 py-2"},r.createElement("span",{className:"text-sm font-semibold text-foreground"},l.title||"Notifications"),i&&a&&r.createElement("button",{onClick:a,className:"text-xs text-primary hover:underline transition-colors"},"Mark all read")),r.createElement(Ur,null),!i&&r.createElement("div",{className:"flex flex-col items-center justify-center py-8 px-4 text-center"},r.createElement("div",{className:"w-10 h-10 rounded-full bg-muted flex items-center justify-center mb-3"},r.createElement(J,{name:"bell-off",size:18,className:"text-muted-foreground"})),r.createElement("p",{className:"text-sm font-medium text-foreground mb-1"},"No notifications"),r.createElement("p",{className:"text-xs text-muted-foreground"},"You're all caught up")),e.map((d,m)=>r.createElement(De.Link,{key:m,to:d.url,className:"flex items-start gap-3 px-3 py-2.5 rounded-sm hover:bg-accent transition-colors",style:{...c,transitionDelay:`${m*30}ms`}},r.createElement("div",{className:`mt-0.5 shrink-0 w-8 h-8 rounded-full flex items-center justify-center ${d.read?"bg-muted":"bg-primary/10"}`},r.createElement(J,{name:d.icon,size:15,className:d.read?"text-muted-foreground":"text-primary"})),r.createElement("div",{className:"flex-1 min-w-0"},r.createElement("p",{className:`text-sm leading-snug ${d.read?"text-muted-foreground":"text-foreground font-medium"}`},d.title),r.createElement("p",{className:"text-xs text-muted-foreground mt-0.5"},d.time)),!d.read&&r.createElement("span",{className:"mt-2 shrink-0 w-1.5 h-1.5 rounded-full bg-primary"}))),i&&n&&r.createElement(r.Fragment,null,r.createElement(Ur,null),r.createElement("div",{className:"px-1 py-1"},r.createElement(De.Link,{to:n,className:"flex items-center justify-center w-full rounded-sm px-2 py-1.5 text-sm text-muted-foreground hover:text-foreground hover:bg-accent transition-colors"},l.seeAll||"See all notifications",r.createElement(J,{name:"arrow-right",size:13,className:"ml-1.5 opacity-60"})))))}const Hu=()=>r.createElement("div",{className:"inline-flex"},r.createElement(De.Link,{to:"/#","data-toggle-class":"app-header-menu-search-toggled","data-toggle-target":".app",className:"inline-flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-foreground"},r.createElement("div",{className:"flex items-center justify-center"},r.createElement(J,{name:"search",className:"h-4 w-4"}))));function Vu({onQueryChange:e=void 0}){const t=Te("common");return r.createElement("div",null,r.createElement(Hu,null),r.createElement("input",{className:"hidden",type:"text",placeholder:t.search,onChange:e}))}function Ku(e){return e?"current"in e?e.current??window:e:window}function Gu(e){return e instanceof Window?e.scrollY:e.scrollTop}function qu({leading:e=void 0,center:t=void 0,trailing:n=void 0,children:a=void 0,sticky:o=!0,elevateOnScroll:s=!0,scrollTarget:l=void 0,scrollThreshold:i=8,className:c=void 0,innerClassName:d=void 0,leadingClassName:m=void 0,centerClassName:u=void 0,trailingClassName:f=void 0}){const p=we(),h=t??a,[g,b]=r.useState(!1);r.useEffect(()=>{if(!s||typeof window>"u"){b(!1);return}const E=Ku(l),x=()=>b(Gu(E)>i);return x(),E.addEventListener("scroll",x,{passive:!0}),()=>{E.removeEventListener("scroll",x)}},[s,l,i]);const y=r.useMemo(()=>S("w-full border-b border-transparent transition-[background-color,border-color,box-shadow,backdrop-filter] duration-200",p.Toolbar.wrapperClassName,o&&p.Toolbar.stickyClassName,s?g?p.Toolbar.scrolledClassName:p.Toolbar.restingClassName:p.Toolbar.scrolledClassName,c),[p,o,s,g,c]);return r.createElement("header",{className:y},r.createElement("div",{className:S("flex min-h-14 items-center gap-3 px-4",p.Toolbar.innerClassName,d)},e?r.createElement("div",{className:S("flex min-w-0 items-center gap-2 shrink-0",p.Toolbar.leadingClassName,m)},e):null,h?r.createElement("div",{className:S("flex min-w-0 flex-1 items-center gap-3",p.Toolbar.centerClassName,u)},h):r.createElement("div",{className:"flex-1"}),n?r.createElement("div",{className:S("flex shrink-0 items-center gap-2",p.Toolbar.trailingClassName,f)},n):null))}const Yu=[{label:"Blue",value:"221.2 83.2% 53.3%",hex:"#3b82f6"},{label:"Violet",value:"262.1 83.3% 57.8%",hex:"#8b5cf6"},{label:"Green",value:"142.1 76.2% 36.3%",hex:"#16a34a"},{label:"Rose",value:"346.8 77.2% 49.8%",hex:"#e11d48"},{label:"Orange",value:"24.6 95% 53.1%",hex:"#f97316"},{label:"Slate",value:"215.4 16.3% 46.9%",hex:"#64748b"}],tn=[{label:"System",fontSans:"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",fontMono:"ui-monospace, 'SFMono-Regular', monospace"},{label:"Inter",fontSans:"'Inter', sans-serif",fontMono:"'JetBrains Mono', monospace"},{label:"Geist",fontSans:"'Geist', sans-serif",fontMono:"'Geist Mono', monospace"},{label:"Outfit",fontSans:"'Outfit', sans-serif",fontMono:"'JetBrains Mono', monospace"},{label:"Plus Jakarta Sans",fontSans:"'Plus Jakarta Sans', sans-serif",fontMono:"'Fira Code', monospace"},{label:"DM Sans",fontSans:"'DM Sans', sans-serif",fontMono:"'JetBrains Mono', monospace"},{label:"Nunito",fontSans:"'Nunito', sans-serif",fontMono:"'Fira Code', monospace"},{label:"Figtree",fontSans:"'Figtree', sans-serif",fontMono:"'Source Code Pro', monospace"},{label:"Poppins",fontSans:"'Poppins', sans-serif",fontMono:"'Fira Code', monospace"},{label:"Montserrat",fontSans:"'Montserrat', sans-serif",fontMono:"'Source Code Pro', monospace"}],Wu=[{label:"Success",key:"success",fgKey:"successForeground",swatches:[{value:"142.1 76.2% 36.3%",fgValue:"0 0% 100%",hex:"#16a34a"},{value:"160 84% 39%",fgValue:"0 0% 0%",hex:"#10b981"},{value:"84 55% 46%",fgValue:"0 0% 100%",hex:"#65a30d"}]},{label:"Warning",key:"warning",fgKey:"warningForeground",swatches:[{value:"32.1 94.6% 43.7%",fgValue:"0 0% 100%",hex:"#d97706"},{value:"24.6 95% 53.1%",fgValue:"0 0% 100%",hex:"#f97316"},{value:"45 96% 48%",fgValue:"0 0% 0%",hex:"#eab308"}]},{label:"Info",key:"info",fgKey:"infoForeground",swatches:[{value:"198.6 88.7% 48.4%",fgValue:"0 0% 100%",hex:"#0ea5e9"},{value:"221.2 83.2% 53.3%",fgValue:"0 0% 100%",hex:"#3b82f6"},{value:"262.1 83.3% 57.8%",fgValue:"0 0% 100%",hex:"#8b5cf6"}]},{label:"Danger",key:"destructive",fgKey:"destructiveForeground",swatches:[{value:"0 84.2% 60.2%",fgValue:"0 0% 100%",hex:"#ef4444"},{value:"346.8 77.2% 49.8%",fgValue:"0 0% 100%",hex:"#e11d48"},{value:"0 72% 51%",fgValue:"0 0% 100%",hex:"#dc2626"}]}],Ju=[{label:"Lucide",value:"lucide",description:"Clean outline icon set"},{label:"Phosphor",value:"phosphor",description:"Flexible icon weights and styles"}],Xu=[{label:"Thin",value:"thin"},{label:"Light",value:"light"},{label:"Regular",value:"regular"},{label:"Bold",value:"bold"},{label:"Fill",value:"fill"}];function Zu(e){return e.split("-").map(t=>t&&t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function Qu({open:e=!0,onClose:t=void 0,surface:n="flat",showHeader:a=void 0,title:o="Customize theme",subtitle:s="Live theme tokens and mode controls with no reload.",headerActions:l=void 0,themeOptions:i=void 0,showModeSection:c=!0,showPrimarySection:d=!0,showRadiusSection:m=!0,showFontSection:u=!0,showStatusSection:f=!0,showThemeSection:p=!0,showIconLibrarySection:h=!0,className:g=void 0,wrapperClassName:b=void 0}){const{resolvedMode:y,primary:E,radius:x,fontSans:N,theme:P,colors:D,themes:v,toggleMode:w,setPrimary:A,setRadius:I,setFont:T,applyTheme:C,setTokens:M}=Xs(),{providerId:k,setProvider:R,registerProvider:$}=ul(),j=k==="phosphor"?"phosphor":"lucide",z=r.useMemo(()=>Object.keys(v).map(_=>{var V,K;return{value:_,label:((V=i==null?void 0:i[_])==null?void 0:V.label)??Zu(_),description:((K=i==null?void 0:i[_])==null?void 0:K.description)??"Theme available in the current registry."}}),[i,v]),H=a??n==="modal",q=r.createElement("div",{className:"flex min-w-0 items-center justify-between gap-3"},r.createElement("div",{className:"min-w-0"},r.createElement("h3",{className:"truncate text-lg font-semibold leading-none"},o),s?r.createElement("div",{className:"mt-1 truncate text-sm text-muted-foreground"},s):null),l?r.createElement("div",{className:"flex shrink-0 items-center gap-2"},l):null),F=r.createElement(r.Fragment,null,c?r.createElement("div",null,r.createElement("label",{className:"mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground"},"Color mode"),r.createElement("div",{className:"flex gap-2"},["light","dark"].map(_=>r.createElement("button",{key:_,type:"button",onClick:()=>y!==_&&w(),className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-md border py-2 text-sm font-medium transition-colors ${y===_?"border-primary bg-primary/10 text-primary":"border-border text-muted-foreground hover:bg-accent"}`},r.createElement(J,{name:_==="light"?"sun":"moon",size:14}),_.charAt(0).toUpperCase()+_.slice(1))))):null,d?r.createElement("div",null,r.createElement("label",{className:"mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground"},"Primary color"),r.createElement("div",{className:"flex flex-wrap gap-2"},Yu.map(_=>r.createElement("button",{key:_.label,type:"button",onClick:()=>A(_.value),title:_.label,className:`h-8 w-8 cursor-pointer rounded-full border-2 transition-transform hover:scale-110 ${E===_.value?"scale-110 border-foreground":"border-transparent"}`,style:{backgroundColor:_.hex},"aria-label":_.label})))):null,m?r.createElement("div",null,r.createElement("div",{className:"mb-3 flex items-center justify-between"},r.createElement("label",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground"},"Border radius"),r.createElement("span",{className:"text-xs font-mono text-muted-foreground"},x.toFixed(2),"rem")),r.createElement("input",{type:"range",min:0,max:1,step:.05,value:x,onChange:_=>I(parseFloat(_.target.value)),className:"w-full accent-primary"}),r.createElement("div",{className:"mt-1 flex justify-between text-xs text-muted-foreground"},r.createElement("span",null,"Sharp"),r.createElement("span",null,"Rounded"))):null,u?r.createElement("div",null,r.createElement("label",{className:"mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground"},"Font"),r.createElement("div",{className:"relative"},r.createElement("select",{value:(tn.find(_=>_.fontSans===N)??tn[0]).fontSans,onChange:_=>{const V=tn.find(K=>K.fontSans===_.target.value);V&&T(V.fontSans,V.fontMono)},className:"w-full appearance-none rounded-md border border-border bg-background px-3 py-2 pr-8 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-ring"},tn.map(_=>r.createElement("option",{key:_.label,value:_.fontSans},_.label))),r.createElement(J,{name:"chevron-down",size:14,className:"pointer-events-none absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground"}))):null,f?r.createElement("div",null,r.createElement("label",{className:"mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground"},"Status colors"),r.createElement("div",{className:"space-y-2"},Wu.map(({label:_,key:V,fgKey:K,swatches:ee})=>r.createElement("div",{key:V,className:"flex items-center gap-2"},r.createElement("span",{className:"w-14 shrink-0 text-xs text-muted-foreground"},_),r.createElement("div",{className:"flex gap-1.5"},ee.map(se=>r.createElement("button",{key:se.hex,type:"button",onClick:()=>M({[V]:se.value,[K]:se.fgValue}),title:`${_} - ${se.hex}`,className:`h-6 w-6 cursor-pointer rounded-full border-2 transition-transform hover:scale-110 ${(D==null?void 0:D[V])===se.value?"scale-110 border-foreground":"border-transparent"}`,style:{backgroundColor:se.hex},"aria-label":`${_} ${se.hex}`}))))))):null,p?r.createElement("div",null,r.createElement("label",{className:"mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground"},"Theme"),r.createElement("div",{className:"space-y-2"},z.map(_=>r.createElement("button",{key:_.value,type:"button",onClick:()=>C(_.value),className:`w-full cursor-pointer rounded-md border px-3 py-2.5 text-left text-sm transition-colors ${P===_.value?"border-primary bg-primary/10":"border-border hover:bg-accent"}`},r.createElement("span",{className:`font-medium ${P===_.value?"text-primary":"text-foreground"}`},_.label),r.createElement("span",{className:"mt-0.5 block text-xs text-muted-foreground"},_.description))))):null,h?r.createElement("div",null,r.createElement("label",{className:"mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground"},"Icon library"),r.createElement("div",{className:"space-y-2"},Ju.map(_=>r.createElement("button",{key:_.value,type:"button",onClick:()=>R(_.value),className:`w-full cursor-pointer rounded-md border px-3 py-2.5 text-left text-sm transition-colors ${j===_.value?"border-primary bg-primary/10":"border-border hover:bg-accent"}`},r.createElement("span",{className:`flex items-center gap-2 font-medium ${j===_.value?"text-primary":"text-foreground"}`},r.createElement(J,{name:"palette",size:12}),_.label),r.createElement("span",{className:"mt-0.5 block text-xs text-muted-foreground"},_.description)))),j==="phosphor"?r.createElement("div",{className:"mt-3"},r.createElement("p",{className:"mb-2 text-xs text-muted-foreground"},"Weight"),r.createElement("div",{className:"flex flex-wrap gap-1"},Xu.map(_=>r.createElement("button",{key:_.value,type:"button",onClick:()=>{$("phosphor",new $a(_.value)),R("phosphor")},className:"cursor-pointer rounded border border-border px-2 py-1 text-xs transition-colors hover:bg-accent"},_.label)))):null,r.createElement("div",{className:"mt-3 flex items-center gap-3 px-1"},["sun","moon","bell","settings","search","trash"].map(_=>r.createElement(J,{key:_,name:_,size:16,className:"text-muted-foreground"})))):null),B=r.createElement("div",{className:S("space-y-6",n==="flat"&&"rounded-xl border border-border/60 bg-card p-5",g)},n==="flat"&&H?r.createElement("div",{className:"border-b border-border/60 pb-4"},q):null,F);return n==="modal"?e?r.createElement(lr,{position:"right",header:H?q:void 0,onClose:t,allowFullscreen:!1,headerClassName:"h-14 !py-0 px-4",className:g,wrapperClassName:b},r.createElement("div",{className:"space-y-6"},F)):null:r.createElement("div",{className:b},B)}const Vl=r.createContext(null),em=({registries:e,setProvider:t,children:n})=>r.createElement(Vl.Provider,{value:{registries:e,setProvider:t}},n),Kl=()=>{const e=r.useContext(Vl);if(!e)throw new Error("useSetProvider/useProvider must be used inside <App>.");return e},Gl=()=>Kl().setProvider,ql=(e,t)=>{const{registries:n}=Kl(),a=n[e],o=t??(a==null?void 0:a.defaultKey),s=o?a==null?void 0:a.registry[o]:void 0;if(!s)throw new Error(`Provider '${o??e}' is not registered in category '${e}'. Available: ${Object.keys((a==null?void 0:a.registry)??{}).join(", ")}`);return s};let er;const tm=r.createContext(null),rm=r.createContext(()=>{}),Ka=new Set,Je=e=>{Ka.add(e),er&&e(er,null)},nm=({children:e,defaultConfig:t})=>{const[n,a]=r.useState(am(t)),o=r.useRef(null);return r.useEffect(()=>{const s=o.current;if(s!==n){er=n;for(const l of Ka)l(n,s)}o.current=n},[n]),r.createElement(tm.Provider,{value:n},r.createElement(rm.Provider,{value:a},r.createElement(wu,null,e)))},am=e=>{er=e;for(const t of Ka)t(er,null);return er},Ln=()=>er;var _s;let an=(_s=Ln==null?void 0:Ln())==null?void 0:_s.google;typeof Je=="function"&&Je(e=>{an=e.google});const Rr=e=>an==null?void 0:an[e],kt="[DEFAULT]",Ga=new Map,om=(e,t=kt)=>{Ga.set(t,e)},qa=(e=kt)=>Ot("FirebaseProvider",sr(Ga.get(e),["apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId"],"firebase.")),sm=(e=kt)=>Ot("FirestoreProvider",sr(Ga.get(e),["apiKey","authDomain","projectId","appId"],"firebase.")),Ze=(e=kt)=>{try{return e===kt?ze.getAuth():ze.getAuth(Ct.getApp(e))}catch(t){return console.error("FirebaseAuthorization",t instanceof Error?t.message:"Error: check Configuration"),null}},lm=async e=>{var n;const t=Ze();if(!t)return!1;try{return await ze.setPersistence(t,ze.inMemoryPersistence),await ze.signInWithCustomToken(t,e),!0}catch(a){const o=(n=t.app.options)==null?void 0:n.apiKey;return console.error("Firebase custom token sign-in error: ",a,`— app "${t.app.name}" options.apiKey: ${o?`${o.slice(0,6)}… (len ${o.length})`:String(o)}`),!1}},Qr=async(e,t=kt)=>{var a;om(e,t);const n=Ct.getApps().find(o=>o.name===t);if(n){if(((a=n.options)==null?void 0:a.appId)===e.appId)return console.log(`[firebase] App "${t}" already initialized with same appId, skipping re-init`),n;await Ct.deleteApp(n)}return t===kt?Ct.initializeApp(e):Ct.initializeApp(e,t)};async function Yl(e,t,n=kt,a){const{getFunctions:o,httpsCallable:s}=await import("firebase/functions"),l=n===kt?Ct.getApp():Ct.getApp(n),i=s(o(l,a),e),{data:c}=await i(t);return c}const im="scrape",ht=(...e)=>{},je="_key",pt=e=>e.replace(/^\/+|\/+$/g,""),cm=e=>pt(e).split("/").filter(Boolean),jt=e=>cm(e).length%2===0,ur=(e,t,n)=>{const a=`Error during ${e}: ${String(t)}`;if(n)throw new Error(a);console.error(a)},dm={eq:"==",lt:"<",lte:"<=",gt:">",gte:">=",in:"in",nin:"not-in"},qo=(e,t)=>{const n=[];if(e)for(const[a,o]of Object.entries(e)){const s=o!==null&&typeof o=="object"&&!Array.isArray(o)?o:Array.isArray(o)?{in:o}:{eq:o};for(const[l,i]of Object.entries(s)){const c=dm[l];c&&n.push(Se.where(a,c,i))}}if(t)for(const[a,o]of Object.entries(t))n.push(Se.orderBy(a,o));return n},Yo="@key",Wo=(e,t)=>{if(!t)return e.docs.map((a,o)=>({[je]:a.id,_index:o,...a.data()}));const n=Object.keys(t);return e.docs.map((a,o)=>{const s={[Yo]:a.id,...a.data()},l={};for(const i of n){const c=t[i];l[i]=c.includes("{")?Ue.parse(s,c):c===Yo?a.id:s[c]}return{[je]:a.id,_index:o,...l}})},Jo=e=>Object.fromEntries(e.map(t=>[t[je],t])),Fr=class Fr{constructor(t={}){this.getDb=()=>this.databaseId?Se.getFirestore(Ct.getApp(),this.databaseId):Se.getFirestore(),this.read=async(n,{where:a,order:o,toArray:s=!1,exception:l=!1}={})=>{const i=this.getDb(),c=pt(n);try{if(jt(n)){const p=await Se.getDoc(Se.doc(i,c));if(!p.exists()){if(l)throw new Error(`Document not found: ${n}`);return}return ht(`Info: Document found in Firestore at ${n}`),{[je]:p.id,...p.data()}}const d=qo(a,o),m=d.length?Se.query(Se.collection(i,c),...d):Se.collection(i,c),u=await Se.getDocs(m);ht(`Info: ${u.size} docs found in Firestore at ${n}`);const f=Wo(u);return s?f:Jo(f)}catch(d){ur(`reading data in Firestore for ${n}`,d,l)}},this.set=async(n,a,o=!1)=>{const s=this.getDb(),l=pt(n);try{jt(n)?await Se.setDoc(Se.doc(s,l),a):await Se.addDoc(Se.collection(s,l),a),ht(`Data successfully set in Firestore at ${n}`)}catch(i){ur(`setting data in Firestore for ${n}`,i,o)}},this.update=async(n,a,o=!1)=>{const s=this.getDb(),l=pt(n);try{jt(n)?await Se.updateDoc(Se.doc(s,l),a):await Se.addDoc(Se.collection(s,l),a),ht(`Data successfully updated in Firestore at ${n}`)}catch(i){ur(`updating data in Firestore for ${n}`,i,o)}},this.remove=async(n,a=!1)=>{const o=this.getDb(),s=pt(n);try{if(jt(n))await Se.deleteDoc(Se.doc(o,s));else throw new Error("Deleting an entire collection is not supported. Remove individual documents.");ht(`Data successfully removed from Firestore at ${n}`)}catch(l){ur(`removing data in Firestore for ${n}`,l,a)}},this.count=async n=>{if(jt(n))return 1;const a=this.getDb();try{return(await Se.getCountFromServer(Se.collection(a,pt(n)))).data().count}catch{return(await Se.getDocs(Se.collection(a,pt(n)))).size}},this.subscribe=(n,a,{where:o,order:s,fieldMap:l,onLoad:i}={})=>{const c=Ze();if(!c||!n)return()=>{};const d=()=>{const f=this.getDb(),p=pt(n);if(jt(n))return Se.onSnapshot(Se.doc(f,p),b=>{if(!b.exists()){a([]);return}a([{[je]:b.id,_index:0,...b.data()}])},b=>console.error("Firestore onSnapshot error:",b));const h=qo(o,s),g=h.length?Se.query(Se.collection(f,p),...h):Se.collection(f,p);return Se.onSnapshot(g,b=>{const y=Wo(b,l);if(i){const E=Jo(y),x=i(E),N=Object.entries(x).map(([P,D],v)=>({[je]:P,_index:v,...typeof D=="object"&&D!==null?D:{}}));a(N)}else a(y)},b=>console.error("Firestore onSnapshot error:",b))};let m;const u=ze.onAuthStateChanged(c,f=>{m==null||m(),m=void 0,f?m=d():a([])});return()=>{m==null||m(),u()}},this.readShallow=async(n,a=!1)=>{const o=this.getDb(),s=pt(n);try{if(jt(n)){const i=await Se.getDoc(Se.doc(o,s));return i.exists()?Object.keys(i.data()??{}):[]}return(await Se.getDocs(Se.collection(o,s))).docs.map(i=>i.id)}catch(l){return ur(`reading shallow data in Firestore for ${n}`,l,a??!1),[]}},this.setChunks=async(n,a,{chunkSize:o=500,purge:s=!1,onProgress:l}={})=>{const i=this.getDb(),c=pt(n),d=Math.min(o,500);try{if(s){l==null||l(0,0,`Purging existing data at ${n}`);const p=(await Se.getDocs(Se.collection(i,c))).docs.map(h=>h.id);for(let h=0;h<p.length;h+=d){const g=Se.writeBatch(i);p.slice(h,h+d).forEach(b=>g.delete(Se.doc(i,c,b))),await g.commit()}}const m=Object.entries(a),u=Math.ceil(m.length/d);for(let f=0;f<m.length;f+=d){const p=Se.writeBatch(i);m.slice(f,f+d).forEach(([g,b])=>{p.set(Se.doc(i,c,g),b)}),await p.commit();const h=Math.floor(f/d)+1;l==null||l(h,u,`Saving batch ${h}/${u}`)}ht(`setChunks completed for Firestore at ${n} (${m.length} docs)`)}catch(m){ur(`setting data in chunks in Firestore for ${n}`,m,!1)}},this.databaseId=t.databaseId,!Fr.listenerRegistered&&typeof Je=="function"&&(Fr.listenerRegistered=!0,Je(n=>{n.firebase&&Qr(n.firebase)}))}getConfigurationState(){return sm()}isConfigured(){return this.getConfigurationState().configured}};Fr.listenerRegistered=!1;let Hr=Fr;const jn=new Map;function Ya(e,t){return jn.has(e)||jn.set(e,Fs.createClient(e,t)),jn.get(e)}function Wl(e,t,n){return Fs.createClient(e,t,{auth:{persistSession:!1,autoRefreshToken:!1,detectSessionInUrl:!1},global:n?{headers:{Authorization:`Bearer ${n}`}}:void 0})}async function Jl(e){await e.removeAllChannels()}function Wa(e){return Ot("Supabase",sr(e,["url","anonKey"],"supabase."))}const um=Object.freeze(Object.defineProperty({__proto__:null,createSupabaseClient:Wl,disposeSupabaseClient:Jl,getSupabaseClient:Ya,getSupabaseConfigurationState:Wa},Symbol.toStringTag,{value:"Module"})),mm=e=>e.replace(/^\/+|\/+$/g,"");function Bt(e){const t=mm(e).split("/").filter(Boolean);return{table:t[0]??"",id:t.length>=2?t.slice(1).join("/"):null}}function zt(e,t,n){const a=`SupabaseDataProvider.${e}: ${t instanceof Error?t.message:String(t)}`;if(n)throw new Error(a);console.error(a)}function Xo(e,t){for(const[n,a]of Object.entries(t))if(a==null)e=e.is(n,null);else if(typeof a!="object"||Array.isArray(a))e=e.eq(n,a);else{const o=a;o.eq!==void 0&&(e=e.eq(n,o.eq)),o.lt!==void 0&&(e=e.lt(n,o.lt)),o.lte!==void 0&&(e=e.lte(n,o.lte)),o.gt!==void 0&&(e=e.gt(n,o.gt)),o.gte!==void 0&&(e=e.gte(n,o.gte)),o.in&&(e=e.in(n,o.in)),o.nin&&(e=e.not(n,"in",o.nin))}return e}function Zo(e,t){for(const[n,a]of Object.entries(t))e=e.order(n,{ascending:a==="asc"});return e}function Qo(e,t,n){const{_key:a,_index:o,...s}=e;return t&&(s[n]=t),s}function Bn(e,t,n=0){return{...e,[je]:String(e[t]??n),_index:n}}class Ja{constructor(t){this.dispose=async()=>{this.scopedClient&&await Jl(this.scopedClient)},this.read=async(n,a={})=>{const{table:o,id:s}=Bt(n);if(o)try{if(s){const{data:m,error:u}=await this.client.from(o).select("*").eq(this.pk,s).maybeSingle();if(u)throw u;return m?Bn(m,this.pk):void 0}let l=this.client.from(o).select("*");a.where&&(l=Xo(l,a.where)),a.order&&(l=Zo(l,a.order));const{data:i,error:c}=await l;if(c)throw c;if(!i||i.length===0)return a.toArray?[]:{};const d=i.map((m,u)=>Bn(m,this.pk,u));return a.toArray?d:Object.fromEntries(d.map(m=>[String(m[this.pk]??m[je]),m]))}catch(l){return zt("read",l,a.exception??!1),a.toArray?[]:void 0}},this.set=async(n,a,o=!1)=>{const{table:s,id:l}=Bt(n);if(!s){zt("set","path must include a table name",o);return}try{const i=Qo(a,l,this.pk),{error:c}=await this.client.from(s).upsert(i,{onConflict:this.pk});if(c)throw c}catch(i){zt("set",i,o)}},this.update=async(n,a,o=!1)=>{const{table:s,id:l}=Bt(n);if(!s){zt("update","path must include a table name",o);return}try{const{_key:i,_index:c,...d}=a;if(l){const{data:m}=await this.client.from(s).select("*").eq(this.pk,l).maybeSingle(),u={...m??{},...d,[this.pk]:l},{error:f}=await this.client.from(s).upsert(u,{onConflict:this.pk});if(f)throw f}else{const{error:m}=await this.client.from(s).insert(d);if(m)throw m}}catch(i){zt("update",i,o)}},this.remove=async(n,a=!1)=>{const{table:o,id:s}=Bt(n);if(!o||!s){zt("remove","path must include both table and id",a);return}try{const{error:l}=await this.client.from(o).delete().eq(this.pk,s);if(l)throw l}catch(l){zt("remove",l,a)}},this.subscribe=(n,a,o={})=>{if(!n)return()=>{};const{table:s}=Bt(n);if(!s)return()=>{};let l=null,i=!0;const c=async()=>{if(i)try{let d=this.client.from(s).select("*");o.where&&(d=Xo(d,o.where)),o.order&&(d=Zo(d,o.order));const{data:m}=await d;if(!i)return;const u=(m??[]).map((f,p)=>Bn(f,this.pk,p));a(u)}catch{a([])}};c();try{l=this.client.channel(`llmnative:${s}`).on("postgres_changes",{event:"*",schema:"public",table:s},()=>void c()).subscribe()}catch{}return()=>{i=!1,l&&(this.client.removeChannel(l).catch(()=>{}),l=null)}},this.count=async n=>{const{table:a}=Bt(n);if(!a)return 0;try{const{count:o,error:s}=await this.client.from(a).select("*",{count:"exact",head:!0});if(s)throw s;return o??0}catch(o){return console.error("SupabaseDataProvider.count:",o),0}},this.setChunks=async(n,a,o={})=>{const{table:s}=Bt(n);if(!s)return;const{chunkSize:l=500,purge:i=!1,onProgress:c}=o,d=Object.entries(a);try{i&&await this.client.from(s).delete().neq(this.pk,"__purge_all__");for(let m=0;m<d.length;m+=l){const u=d.slice(m,m+l).map(([p,h])=>Qo(h,p,this.pk)),{error:f}=await this.client.from(s).upsert(u,{onConflict:this.pk});if(f)throw f;c==null||c(Math.min(m+l,d.length),d.length,`Wrote ${Math.min(m+l,d.length)}/${d.length}`)}}catch(m){throw console.error("SupabaseDataProvider.setChunks:",m),m}},this.config=t}get pk(){return this.config.primaryKey??"id"}get client(){return this.config.accessToken?(this.scopedClient||(this.scopedClient=Wl(this.config.url,this.config.anonKey,this.config.accessToken)),this.scopedClient):Ya(this.config.url,this.config.anonKey)}getConfigurationState(){return Wa(this.config)}isConfigured(){return this.getConfigurationState().configured}}const mr={key:"@key",value:"@value"};function zn(e,t){if(!t)return e;const n=t.split(".");let a=e;for(const o of n){if(a==null)return;a=a[o]}return a}function fm(e,t){return e===t?0:e==null?-1:t==null?1:typeof e=="number"&&typeof t=="number"?e-t:typeof e=="boolean"&&typeof t=="boolean"?Number(e)-Number(t):globalThis.String(e).localeCompare(globalThis.String(t),void 0,{numeric:!0,sensitivity:"base"})}function pm(e,t){const n=typeof t=="object"&&t!==null&&!Array.isArray(t)?t:{eq:t};for(const[a,o]of Object.entries(n))switch(a){case"eq":if(e!==o)return!1;break;case"gt":if(!(e>o))return!1;break;case"gte":if(!(e>=o))return!1;break;case"lt":if(!(e<o))return!1;break;case"lte":if(!(e<=o))return!1;break;case"in":if(!Array.isArray(o)||!o.includes(e))return!1;break;case"nin":if(Array.isArray(o)&&o.includes(e))return!1;break;default:return!1}return!0}function es(e,t,n){const a=Object.entries(n||{}),o=Object.entries(t||{});let s=Object.entries(e);return o.length&&(s=s.filter(([,l])=>o.every(([i,c])=>pm(zn(l,i),c)))),a.length&&s.sort((l,i)=>{for(const[c,d]of a){const m=fm(zn(l[1],c),zn(i[1],c));if(m)return d==="desc"?-m:m}return 0}),Object.fromEntries(s)}function gm(e,t){const n=Object.entries(e);if(!t)return n.map(([o,s],l)=>typeof s=="object"&&s!==null?{_index:l,[je]:o,...s}:{_index:l,[je]:o,[mr.value]:s});const a=Object.keys(t);return n.map(([o,s],l)=>{const i=typeof s=="object"&&s!==null?{[mr.key]:o,...s}:{[mr.key]:o,[mr.value]:s},c={};for(const d of a){const m=t[d];c[d]=m.includes("{")?Ue.parse(i,m):m===mr.key?o:m===mr.value?s:i[m]}return{[je]:o,_index:l,...c}})}class An{constructor(t,n){this.store={},this.listeners=new Map,this.read=async(o,s={})=>{const{collection:l,id:i}=this.resolvePath(o),c=this.getCollection(l);if(i)return c[i]?{...c[i]}:void 0;const d=es(c,s.where,s.order);return s.toArray?Object.values(d).map(m=>({...m})):Object.fromEntries(Object.entries(d).map(([m,u])=>[m,{...u}]))},this.set=async(o,s)=>{const{collection:l,id:i}=this.resolvePath(o),c=this.getCollection(l);i?c[i]={...s}:this.store[l]={...s},this.saveStore(),this.notify(l)},this.update=async(o,s)=>{const{collection:l,id:i}=this.resolvePath(o),c=this.getCollection(l);i?c[i]={...c[i]||{},...s}:this.store[l]={...c,...s},this.saveStore(),this.notify(l)},this.remove=async o=>{const{collection:s,id:l}=this.resolvePath(o);l?delete this.getCollection(s)[l]:delete this.store[s],this.saveStore(),this.notify(s)},this.subscribe=(o,s,l)=>{if(!o)return()=>{};const i=o.startsWith("/")?o:`/${o}`,c=()=>{const d=es(this.getCollection(i),l==null?void 0:l.where,l==null?void 0:l.order),m=l!=null&&l.onLoad?l.onLoad(d):d;s(gm(m,l==null?void 0:l.fieldMap))};return c(),this.listeners.has(i)||this.listeners.set(i,new Set),this.listeners.get(i).add(c),()=>{var d;(d=this.listeners.get(i))==null||d.delete(c)}},this.persistKey=n!=null&&n.persist?n.storageKey??"llmnative:mock":null;const a=this.persistKey?this.loadStore()??t:t;if(a)for(const[o,s]of Object.entries(a)){const l=o.startsWith("/")?o:`/${o}`;this.store[l]={...s}}}loadStore(){if(!this.persistKey||typeof window>"u")return null;try{const t=window.localStorage.getItem(this.persistKey);if(!t)return null;const n=JSON.parse(t);return typeof n=="object"&&n!==null&&!Array.isArray(n)?n:null}catch{return null}}saveStore(){if(!(!this.persistKey||typeof window>"u"))try{window.localStorage.setItem(this.persistKey,JSON.stringify(this.store))}catch{}}isConfigured(){return!0}getConfigurationState(){return{configured:!0}}getCollection(t){return this.store[t]||(this.store[t]={}),this.store[t]}resolvePath(t){const n=t.startsWith("/")?t:`/${t}`;if(this.store[n])return{collection:n};const o=Object.keys(this.store).filter(l=>n.startsWith(`${l}/`)).sort((l,i)=>i.length-l.length)[0];if(o)return{collection:o,id:n.slice(o.length+1)};const s=n.replace(/^\/+/,"").split("/").filter(Boolean);return s.length<=1?{collection:n}:{collection:`/${s.slice(0,-1).join("/")}`,id:s[s.length-1]}}notify(t){var n;(n=this.listeners.get(t))==null||n.forEach(a=>a())}}function hm(e,t){var o;const n=((o=e.split(".").pop())==null?void 0:o.toLowerCase())??"";return(Array.isArray(t)?t.map(s=>s.toLowerCase().replace(/^\./,"")):[t.toLowerCase().replace(/^\./,"")]).includes(n)}function Xl(e,t){let n=e;return t.filterByExtension!==void 0&&(n=n.filter(a=>a.isFolder||hm(a.name,t.filterByExtension))),t.limit!==void 0&&t.limit>0&&(n=n.slice(0,t.limit)),n}const Ut=e=>e?Oe.getStorage(Ct.getApp(),e):Oe.getStorage(),Zl=e=>({name:e.name,path:e.fullPath}),bm=async e=>{try{const t=await Oe.getMetadata(e);return{name:e.name,path:e.fullPath,size:t.size,contentType:t.contentType,updatedAt:t.updated}}catch{return Zl(e)}},Or=class Or{constructor(t={}){this.resolveBucket=n=>n??this.defaultBucket,this.upload=async(n,a,o={})=>{if(n)try{const s=Oe.ref(Ut(this.resolveBucket(o.bucket)),a);if(typeof n=="string"){const l=await Oe.uploadString(s,n,"data_url");return await Oe.getDownloadURL(l.ref)}return await new Promise((l,i)=>{const c=o.contentType?{contentType:o.contentType}:n instanceof File&&n.type?{contentType:n.type}:void 0,d=Oe.uploadBytesResumable(s,n,c);o.onProgress&&d.on("state_changed",m=>{const u=m.totalBytes>0?Math.round(m.bytesTransferred/m.totalBytes*100):0;o.onProgress(u)}),d.then(async m=>l(await Oe.getDownloadURL(m.ref))).catch(i)})}catch(s){console.error("[FirebaseStorage] upload error:",s)}},this.createUpload=(n,a,o={})=>{const s=Oe.ref(Ut(this.resolveBucket(o.bucket)),a);if(typeof n=="string"){let d=!1;return{url:(async()=>{if(!d)try{const u=await Oe.uploadString(s,n,"data_url");return await Oe.getDownloadURL(u.ref)}catch{return}})(),pause:()=>{},resume:()=>{},cancel:()=>{d=!0}}}const l=o.contentType?{contentType:o.contentType}:n instanceof File&&n.type?{contentType:n.type}:void 0,i=Oe.uploadBytesResumable(s,n,l);return o.onProgress&&i.on("state_changed",d=>{const m=d.totalBytes>0?Math.round(d.bytesTransferred/d.totalBytes*100):0;o.onProgress(m)}),{url:(async()=>{try{return await Oe.getDownloadURL((await i).ref)}catch{return}})(),pause:()=>{i.pause()},resume:()=>{i.resume()},cancel:()=>{i.cancel()}}},this.rename=async(n,a,o={})=>await this.move(n,a,o)>0,this.move=async(n,a,o={})=>{if(o.recursive){const s=await this.list(n,{bucket:o.bucket,recursive:!0}),l=n.endsWith("/")?n:`${n}/`;return(await Promise.all(s.map(async c=>{const d=c.path.startsWith(l)?c.path.slice(l.length):c.path.slice(n.length),m=`${a}/${d}`;return this._moveFile(c.path,m,o)}))).filter(Boolean).length}return await this._moveFile(n,a,o)?1:0},this._moveFile=async(n,a,o)=>{try{const s=await this.download(n,o);if(!s)return!1;const l=await this.getFileInfo(n,o);return await this.upload(s,a,{bucket:o.destBucket??o.bucket,contentType:l==null?void 0:l.contentType})?(await this.delete(n,{bucket:o.bucket}),!0):!1}catch(s){return console.error(`[FirebaseStorage] move error ${n} → ${a}:`,s),!1}},this.getURL=async(n,a={})=>{try{return await Oe.getDownloadURL(Oe.ref(Ut(this.resolveBucket(a.bucket)),n))}catch(o){console.error(`[FirebaseStorage] getURL error for ${n}:`,o)}},this.getFileInfo=async(n,a={})=>{try{const o=Oe.ref(Ut(this.resolveBucket(a.bucket)),n),s=await Oe.getMetadata(o);return{name:o.name,path:o.fullPath,size:s.size,contentType:s.contentType,updatedAt:s.updated}}catch(o){if(o.code==="storage/object-not-found")return;console.error(`[FirebaseStorage] getFileInfo error for ${n}:`,o);return}},this.download=async(n,a={})=>{const o=await this.getURL(n,a);if(o)try{const s=await fetch(o);if(!s.ok)throw new Error(`HTTP ${s.status}`);return await s.blob()}catch(s){console.error(`[FirebaseStorage] download error for ${n}:`,s)}},this.delete=async(n,a={})=>{if(a.recursive)return this._deleteFolder(n,a);try{return await Oe.deleteObject(Oe.ref(Ut(this.resolveBucket(a.bucket)),n)),1}catch(o){return o.code==="storage/object-not-found"||console.error(`[FirebaseStorage] delete error for ${n}:`,o),0}},this._deleteFolder=async(n,a)=>{try{const o=Oe.ref(Ut(this.resolveBucket(a.bucket)),n),{items:s,prefixes:l}=await Oe.listAll(o);let i=0;await Promise.all(s.map(async d=>{try{await Oe.deleteObject(d),i++}catch(m){m.code!=="storage/object-not-found"&&console.error(`[FirebaseStorage] delete failed for ${d.fullPath}:`,m)}}));const c=await Promise.all(l.map(d=>this._deleteFolder(d.fullPath,a)));return i+c.reduce((d,m)=>d+m,0)}catch(o){return console.error(`[FirebaseStorage] deleteFolder error for ${n}:`,o),0}},this.list=async(n,a={})=>{const o=await this._listLevel(n,a);return Xl(o,a)},this._listLevel=async(n,a)=>{const o=a.includeFiles!==!1,s=a.includeFolders===!0;try{const l=Oe.ref(Ut(this.resolveBucket(a.bucket)),n),{items:i,prefixes:c}=await Oe.listAll(l),d=o?a.metadata?await Promise.all(i.map(bm)):i.map(Zl):[],m=s?c.map(p=>({name:p.name,path:p.fullPath,isFolder:!0})):[],u=[...d,...m];if(!a.recursive||c.length===0)return u;const f=await Promise.all(c.map(p=>this._listLevel(p.fullPath,a)));return[...u,...f.flat()]}catch(l){return console.error(`[FirebaseStorage] list error for ${n}:`,l),[]}},this.defaultBucket=t.defaultBucket,!Or.listenerRegistered&&typeof Je=="function"&&(Or.listenerRegistered=!0,Je(n=>{n.firebase&&Qr(n.firebase)}))}getConfigurationState(){return qa()}isConfigured(){return this.getConfigurationState().configured}};Or.listenerRegistered=!1;let vr=Or;new vr;class Xa{constructor(t){this.upload=async(n,a,o={})=>{var d;const s=this.resolveBucket(o.bucket);let l,i=o.contentType;if(typeof n=="string"){const[m,u]=n.split(",");i??(i=(d=m.match(/:(.*?);/))==null?void 0:d[1]);const f=atob(u),p=new Uint8Array(f.length);for(let h=0;h<f.length;h++)p[h]=f.charCodeAt(h);l=new Blob([p],i?{type:i}:void 0)}else l=n,n instanceof File&&(i??(i=n.type||void 0));const c=await fetch(`${this.config.url}/storage/v1/object/${s}/${a}`,{method:"POST",headers:{...this.authHeaders(),...i?{"Content-Type":i}:{}},body:l});if(!c.ok){console.error("[SupabaseStorage] upload error:",await c.text());return}return this.getURL(a,{bucket:s})},this.createUpload=(n,a,o={})=>{const s=new AbortController,l=this.resolveBucket(o.bucket);return{url:(async()=>{var m;let c,d=o.contentType;if(typeof n=="string"){const[u,f]=n.split(",");d??(d=(m=u.match(/:(.*?);/))==null?void 0:m[1]);const p=atob(f),h=new Uint8Array(p.length);for(let g=0;g<p.length;g++)h[g]=p.charCodeAt(g);c=new Blob([h],d?{type:d}:void 0)}else c=n,n instanceof File&&(d??(d=n.type||void 0));try{return(await fetch(`${this.config.url}/storage/v1/object/${l}/${a}`,{method:"POST",headers:{...this.authHeaders(),...d?{"Content-Type":d}:{}},body:c,signal:s.signal})).ok?this.getURL(a,{bucket:l}):void 0}catch{return}})(),pause:()=>{},resume:()=>{},cancel:()=>s.abort()}},this.rename=async(n,a,o={})=>await this.move(n,a,o)>0,this.move=async(n,a,o={})=>{if(o.recursive){const s=await this.list(n,{bucket:o.bucket,recursive:!0}),l=n.endsWith("/")?n:`${n}/`;return(await Promise.all(s.map(async c=>{const d=c.path.startsWith(l)?c.path.slice(l.length):c.path.slice(n.length),m=`${a}/${d}`;return this._moveFile(c.path,m,o)}))).filter(Boolean).length}return await this._moveFile(n,a,o)?1:0},this._moveFile=async(n,a,o)=>{const s=this.resolveBucket(o.bucket),l=this.resolveBucket(o.destBucket??o.bucket);try{return(await fetch(`${this.config.url}/storage/v1/object/move`,{method:"POST",headers:{...this.authHeaders(),"Content-Type":"application/json"},body:JSON.stringify({bucketId:s,sourceKey:n,destinationBucket:l,destinationKey:a})})).ok}catch(i){return console.error(`[SupabaseStorage] move error ${n} → ${a}:`,i),!1}},this.getURL=async(n,a={})=>{const o=this.resolveBucket(a.bucket);return`${this.config.url}/storage/v1/object/public/${o}/${n}`},this.getFileInfo=async(n,a={})=>{const o=n.split("/"),s=o.pop(),l=o.join("/");return(await this.list(l,{...a,metadata:!0})).find(c=>c.name===s)},this.download=async(n,a={})=>{const o=await this.getURL(n,a);if(o)try{const s=await fetch(o);if(!s.ok)throw new Error(`HTTP ${s.status}`);return await s.blob()}catch(s){console.error(`[SupabaseStorage] download error for ${n}:`,s)}},this.delete=async(n,a={})=>{const o=this.resolveBucket(a.bucket);let s;if(a.recursive){const l=await this.list(n,{...a,recursive:!0});if(l.length===0)return 0;s=l.map(i=>i.path)}else s=[n];try{const l=await fetch(`${this.config.url}/storage/v1/object/${o}`,{method:"DELETE",headers:{...this.authHeaders(),"Content-Type":"application/json"},body:JSON.stringify({prefixes:s})});return l.status===404?0:l.ok?s.length:(console.error("[SupabaseStorage] delete error:",await l.text()),0)}catch(l){return console.error(`[SupabaseStorage] delete error for ${n}:`,l),0}},this.list=async(n,a={})=>{const o=await this._listLevel(n,a);return Xl(o,a)},this._listLevel=async(n,a)=>{const o=a.includeFiles!==!1,s=a.includeFolders===!0,l=this.resolveBucket(a.bucket);try{const i=await fetch(`${this.config.url}/storage/v1/object/list/${l}`,{method:"POST",headers:{...this.authHeaders(),"Content-Type":"application/json"},body:JSON.stringify({prefix:n,limit:1e3,offset:0})});if(!i.ok)return console.error("[SupabaseStorage] list error:",await i.text()),[];const c=await i.json(),d=c.filter(g=>g.id!==null&&g.name&&!g.name.endsWith("/")),m=c.filter(g=>g.id===null&&g.name),u=o?d.map(g=>{var b,y;return{name:g.name??"",path:n?`${n}/${g.name}`:g.name??"",size:(b=g.metadata)==null?void 0:b.size,contentType:(y=g.metadata)==null?void 0:y.mimetype,updatedAt:g.updated_at}}):[],f=s?m.map(g=>({name:g.name??"",path:n?`${n}/${g.name}`:g.name??"",isFolder:!0})):[],p=[...u,...f];if(!a.recursive||m.length===0)return p;const h=await Promise.all(m.map(g=>this._listLevel(n?`${n}/${g.name}`:g.name??"",a)));return[...p,...h.flat()]}catch(i){return console.error(`[SupabaseStorage] list error for ${n}:`,i),[]}},this.config=t}getConfigurationState(){return Ot("SupabaseStorageProvider",sr(this.config,["url","anonKey"],"supabase."))}isConfigured(){return this.getConfigurationState().configured}resolveBucket(t){return t??this.config.bucket??"public"}authHeaders(){return{apikey:this.config.anonKey,Authorization:`Bearer ${this.config.accessToken??this.config.anonKey}`}}}const on={},xr=(e,t,n)=>{(on[e]??(on[e]={}))[t]=n},Ql=e=>{var t;return typeof((t=e.credential)==null?void 0:t.token)=="string"?e.credential.token:void 0},ei=async e=>{var t;await Qr(e.publicConfig),((t=e.credential)==null?void 0:t.type)==="firebaseCustomToken"&&await lm(e.credential.token)};xr("data","mock",e=>new An(e.publicConfig.seed,{persist:!1}));xr("data","firebase",async e=>(await ei(e),new Hr));xr("data","supabase",e=>new Ja({url:e.publicConfig.url,anonKey:e.publicConfig.anonKey,accessToken:Ql(e)}));xr("storage","firebase",async e=>(await ei(e),new vr));xr("storage","supabase",e=>new Xa({url:e.publicConfig.url,anonKey:e.publicConfig.anonKey,accessToken:Ql(e)}));const ti=()=>{const e=Gl();return{switchSession:r.useCallback(async(n,a)=>{var l;let o;if(typeof n=="function")o=await n();else{const i=await fetch(n,a==null?void 0:a.fetchOptions);if(!i.ok)throw new Error(`Provider session request failed: ${i.status} ${i.statusText}`);o=await i.json()}a!=null&&a.onResponse&&(o=await a.onResponse(o));const s={applied:[],skipped:[]};for(const[i,c]of Object.entries(o.providers)){const d=(l=on[i])==null?void 0:l[c.type];if(!d){console.warn(`ProviderSession: no factory registered for category "${i}" type "${c.type}" — discarding. Register one with registerProviderSessionFactory().`),s.skipped.push({category:i,type:c.type});continue}const m=await d(c);await e(i,"custom",m),s.applied.push(i)}return s},[e]),setProvider:e}};function vm(e,t){return e?typeof e=="string"?r.createElement(J,{name:e,size:15,className:t}):e:null}function ym({items:e,itemsLoading:t=!1,activeId:n=null,onSelect:a=void 0,onError:o=void 0,onResponse:s=void 0,endpoint:l,authorization:i=void 0,requestBody:c=void 0,method:d="POST",icon:m="layers",caption:u=void 0,listLabel:f=void 0,placeholder:p=void 0,disabled:h=!1,open:g=void 0,onOpenChange:b=void 0,footer:y=void 0,before:E=void 0,after:x=void 0,wrapperClassName:N=void 0,className:P=void 0,triggerClassName:D=void 0,listClassName:v=void 0,itemClassName:w=void 0}){const A=we(),I=Te("select"),{switchSession:T}=ti(),C=ja(),[M,k]=r.useState(!1),[R,$]=r.useState(null),j=e.find(ee=>ee.id===n)??null,z=g??M,H=b??k,F=R!==null||t,B=r.useRef(null),_=async()=>{var ee;return i?typeof i=="function"?i():i:(ee=C.getAccessToken)==null?void 0:ee.call(C)},V=async ee=>{if(B.current!==ee.id){$(ee.id);try{if(typeof l=="function")await T(()=>l(ee.id),{onResponse:s});else{const se=await _();await T(l,{onResponse:s,fetchOptions:{method:d,headers:{"Content-Type":"application/json",...se?{Authorization:`Bearer ${se}`}:{}},body:JSON.stringify(c?c(ee.id):{id:ee.id})}})}B.current=ee.id,a==null||a(ee.id)}catch(se){o==null||o(ee.id,se)}finally{$(null)}}},K=ee=>{H(!1),V(ee)};return r.useEffect(()=>{if(!n||n===B.current)return;const ee=e.find(se=>se.id===n);ee&&V(ee)},[n]),r.createElement(r.Fragment,null,E,r.createElement(gt,{open:z,onOpenChange:H,placement:"auto",wrapperClassName:S(A.ProviderSwitcher.wrapperClassName,N),className:S(A.ProviderSwitcher.className,P),triggerClassName:S(A.ProviderSwitcher.triggerClassName,(h||F)&&A.ProviderSwitcher.disabledClassName,D),footer:y,trigger:r.createElement("span",{className:"flex w-full min-w-0 items-center gap-2.5"},r.createElement("span",{className:S(A.ProviderSwitcher.iconWrapperClassName)},vm((j==null?void 0:j.icon)??m)),r.createElement("span",{className:"min-w-0 flex-1 pr-2"},r.createElement("span",{className:S(A.ProviderSwitcher.labelClassName)},(j==null?void 0:j.label)??(t?I.loading:p??I.placeholder)),u?r.createElement("span",{className:S(A.ProviderSwitcher.captionClassName)},u):null),r.createElement(J,{name:F?"loader-2":"chevrons-up-down",size:12,className:S(A.ProviderSwitcher.chevronClassName,F&&"animate-spin")}))},f??u?r.createElement(Hl,null,f??u):null,e.map(ee=>r.createElement(at,{key:ee.id,onClick:h||F?void 0:()=>K(ee),className:S(A.ProviderSwitcher.itemClassName,ee.id===n?A.ProviderSwitcher.itemActiveClassName:A.ProviderSwitcher.itemInactiveClassName,w,v)},r.createElement("span",{className:"flex w-full min-w-0 items-center gap-2"},r.createElement("span",{className:S("w-3.5 shrink-0",A.ProviderSwitcher.checkClassName)},ee.id===n?r.createElement(J,{name:"check",size:13}):null),r.createElement("span",{className:"flex-1 truncate"},ee.label),ee.meta?r.createElement("span",{className:S("shrink-0",A.ProviderSwitcher.itemMetaClassName)},ee.meta):null)))),x)}const wm={info:"text-blue-600",success:"text-green-600",warning:"text-yellow-600",danger:"text-red-600",primary:"text-primary",secondary:"text-secondary",light:"text-gray-400",dark:"text-gray-800"},xm="bg-card supports-[backdrop-filter]:backdrop-blur-sm",Vr=({children:e,variant:t="info",appearance:n="default",placement:a="inline",anchorRef:o=void 0,timeout:s=void 0,onClose:l=void 0,icon:i=!0,before:c=void 0,after:d=void 0,wrapperClassName:m=void 0,className:u=void 0})=>{const f=we(),[p,h]=r.useState(null);r.useLayoutEffect(()=>{if(a!=="sticky"){h(null);return}let x=0,N=null,P=!1;const D=()=>{const v=o==null?void 0:o.current;if(!P){if(!v){x=requestAnimationFrame(D);return}N=document.createElement("div"),N.style.cssText="position:sticky;top:0;left:0;right:0;z-index:50;width:100%",v.prepend(N),h(N)}};return D(),()=>{P=!0,x&&cancelAnimationFrame(x),N&&N.remove(),h(null)}},[a,o]);const b=i===!1?null:i===!0?{info:"info",success:"check",warning:"warning",danger:"x-circle",primary:"",secondary:"",light:"",dark:""}[t]||null:i||null;r.useEffect(()=>{if(typeof l=="function"){const N=setTimeout(()=>{l()},s??5e3);return()=>clearTimeout(N)}},[l,s]);const y=n==="text"?r.createElement("span",{role:"status",className:S("inline-flex items-center gap-1 text-sm font-medium",wm[t]??"text-foreground",u)},b&&r.createElement(J,{name:b,size:14,className:"shrink-0"}),e):r.createElement("div",{role:"alert",className:S("alert alert-"+t,u||f.Alert.className,(a==="fixed"||a==="sticky")&&["w-full rounded-none border-x-0 shadow-md",xm])},b&&r.createElement(J,{name:b,size:16,className:"shrink-0"}),e);if(a==="fixed"){const x=(()=>{const N="__alert-portal-fixed__";let P=document.getElementById(N);return P||(P=document.createElement("div"),P.id=N,P.style.cssText="position:fixed;top:0;left:0;right:0;z-index:9999;width:100%",document.body.appendChild(P)),P})();return _t.createPortal(y,x)}if(a==="sticky")return p?_t.createPortal(y,p):null;const E=m??(c||d?"flex items-center gap-2":void 0);return r.createElement(Ne,{className:E},c,y,d)},Tr={markup:()=>import("prismjs/components/prism-markup"),html:()=>import("prismjs/components/prism-markup"),xml:()=>import("prismjs/components/prism-markup"),svg:()=>import("prismjs/components/prism-markup"),mathml:()=>import("prismjs/components/prism-markup"),css:()=>import("prismjs/components/prism-css"),clike:()=>import("prismjs/components/prism-clike"),javascript:()=>import("prismjs/components/prism-javascript"),js:()=>import("prismjs/components/prism-javascript"),jsx:()=>import("prismjs/components/prism-jsx"),typescript:()=>import("prismjs/components/prism-typescript"),tsx:()=>import("prismjs/components/prism-tsx"),json:()=>import("prismjs/components/prism-json"),bash:()=>import("prismjs/components/prism-bash"),shell:()=>import("prismjs/components/prism-bash"),python:()=>import("prismjs/components/prism-python"),java:()=>import("prismjs/components/prism-java"),c:()=>import("prismjs/components/prism-c"),cpp:()=>import("prismjs/components/prism-cpp"),csharp:()=>import("prismjs/components/prism-csharp"),go:()=>import("prismjs/components/prism-go"),sql:()=>import("prismjs/components/prism-sql"),php:()=>import("prismjs/components/prism-php"),ruby:()=>import("prismjs/components/prism-ruby"),yaml:()=>import("prismjs/components/prism-yaml"),ini:()=>import("prismjs/components/prism-ini"),docker:()=>import("prismjs/components/prism-docker"),powershell:()=>import("prismjs/components/prism-powershell"),git:()=>import("prismjs/components/prism-git"),graphql:()=>import("prismjs/components/prism-graphql")},Em={html:["markup"],xml:["markup"],svg:["markup"],mathml:["markup"],javascript:["clike"],js:["clike","javascript"],jsx:["markup","clike","javascript"],typescript:["clike","javascript"],tsx:["markup","clike","javascript","jsx","typescript"],c:["clike"],cpp:["c"],csharp:["clike"],java:["clike"],php:["markup"]},ts={prism:"rf-code-theme-prism",dark:"rf-code-theme-dark",coy:"rf-code-theme-coy",funky:"rf-code-theme-funky",okaidia:"rf-code-theme-okaidia",solarizedlight:"rf-code-theme-solarizedlight",tomorrow:"rf-code-theme-tomorrow",twilight:"rf-code-theme-twilight"},rs={primary:"bg-primary text-primary-foreground",secondary:"bg-secondary text-secondary-foreground",success:"bg-success text-success-foreground",danger:"bg-destructive text-destructive-foreground",warning:"bg-warning text-warning-foreground",info:"bg-info text-info-foreground",light:"bg-muted text-muted-foreground",dark:"bg-foreground text-background",white:"bg-white text-slate-950",black:"bg-black text-white",transparent:"bg-transparent",default:void 0};function sn(e,t){return typeof t=="string"&&t in e}async function ri(e,t=new Set){var n;if(!t.has(e)){for(const a of Em[e]??[])sn(Tr,a)&&await ri(a,t);await((n=Tr[e])==null?void 0:n.call(Tr)),t.add(e)}}let ns=!1;async function Nm(){ns||(ns=!0,await Promise.resolve().then(()=>require("./prism-themes-Dyvby5gX.js")))}const Cm=({language:e,children:t,before:n,after:a,wrapperClassName:o,className:s,showCopy:l=!0,theme:i="tomorrow",background:c="default"})=>{const d=r.useRef(null),m=we(),u=Te("code"),f=typeof t=="string"?t:String(t??""),p=sn(Tr,e)?e:"tsx",h=sn(ts,i)?i:"tomorrow",g=sn(rs,c)?c:"transparent";return r.useEffect(()=>{let b=!1;return(async()=>{var x;await Nm(),(x=window.Prism)!=null&&x.highlightElement||(window.Prism={...window.Prism??{},manual:!0});let E;try{E=(await import("prismjs")).default,window.Prism=E}catch(N){console.warn("Errore nel caricare Prism core",N);return}try{await ri(p)}catch(N){console.warn(`Errore nel caricare il linguaggio Prism "${p}"`,N)}if(!b&&d.current)try{E.highlightElement(d.current)}catch(N){console.warn(`Errore nell'evidenziare il blocco Prism "${p}"`,N)}})(),()=>{b=!0}},[f,p]),r.createElement(Ne,{className:o||m.Code.wrapperClassName},r.createElement("div",{className:S("flex w-full items-stretch gap-2",(n||a)&&"overflow-x-auto")},n&&r.createElement("div",{className:"flex shrink-0 items-center text-sm text-muted-foreground"},n),r.createElement("pre",{"data-rf-code-theme":h,"data-rf-code-background":g,className:S("relative min-w-0 flex-1 overflow-auto rounded-md border border-border p-4 text-sm",ts[h],rs[g],s||m.Code.className)},l&&r.createElement("button",{onClick:()=>Ma(f),className:"absolute right-2 top-2 inline-flex items-center justify-center rounded-md bg-secondary px-2 py-1 text-xs font-medium text-secondary-foreground transition-colors hover:bg-secondary/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",title:u.copyCode,"aria-label":u.copyCode},r.createElement(J,{name:"clipboard",size:14})),r.createElement("code",{ref:d,className:`language-${p}`},f)),a&&r.createElement("div",{className:"flex shrink-0 items-center text-sm text-muted-foreground"},a)))},km={en:"English",it:"Italiano",fr:"Français",de:"Deutsch",es:"Español",pt:"Português",nl:"Nederlands",pl:"Polski",ru:"Русский",zh:"中文",ja:"日本語",ko:"한국어",ar:"العربية"},Sm=({icon:e="Globe",label:t,labels:n,appearance:a="code",className:o=""})=>{const{locale:s,availableLocales:l,setLocale:i}=Te();if(l.length<=1)return null;const c={...km,...n},d=m=>a==="code"?m.toUpperCase():c[m]??m.toUpperCase();return r.createElement("div",{className:`flex items-center gap-1.5 ${o}`.trim()},r.createElement(J,{name:e,size:16,"aria-hidden":!0}),t&&r.createElement("span",{className:"text-sm"},t),r.createElement("select",{value:s,onChange:m=>i(m.target.value),className:"cursor-pointer rounded border border-border bg-transparent py-0.5 pl-1 pr-5 text-sm focus:outline-none focus:ring-1 focus:ring-ring",style:{width:"auto"},"aria-label":t??"Select language"},l.map(m=>r.createElement("option",{key:m,value:m},d(m)))))},pn={primary:"primary",secondary:"secondary",success:"success",warning:"warning",danger:"destructive",info:"info",light:"muted",dark:"foreground"},Am={primary:"primary-foreground",secondary:"secondary-foreground",success:"success-foreground",warning:"warning-foreground",danger:"destructive-foreground",info:"info-foreground",light:"muted-foreground",dark:"background"},Zt=(e,t)=>`hsl(var(--rf-${e})${t===void 0?"":` / ${t}`})`,Pm=({progress:e,variant:t,thickness:n,showText:a,trackVariant:o,size:s,fontSize:l,className:i})=>{const c=Zt(pn[o],o==="secondary"||o==="light"?.55:.16),d=Zt(pn[t]),m=e>=12?Zt(Am[t]):Zt("foreground");return r.createElement("div",{className:S("relative overflow-hidden rounded-full border border-border shadow-sm",i),style:{height:`${n}px`,width:`${s}%`,minWidth:s<100?120:void 0,backgroundColor:c},role:"progressbar","aria-valuenow":e,"aria-valuemin":0,"aria-valuemax":100},r.createElement("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${e}%`,backgroundColor:d}}),a&&r.createElement("span",{className:"pointer-events-none absolute inset-0 flex items-center justify-center font-medium tabular-nums",style:{fontSize:`${l}px`,color:m}},e,"%"))},Im=({progress:e,variant:t,thickness:n,showText:a,trackVariant:o,size:s,fontSize:l,className:i})=>{const c=s/2,d=c-n/2,m=2*Math.PI*d,u=m*((100-e)/100),f=-90,p=Zt(pn[o],o==="secondary"||o==="light"?.55:.18),h=Zt(pn[t]),g=Zt("foreground");return r.createElement("span",{className:S("inline-flex items-center justify-center",i),role:"progressbar","aria-valuenow":e,"aria-valuemin":0,"aria-valuemax":100},r.createElement("svg",{width:s,height:s,viewBox:`0 0 ${s} ${s}`},r.createElement("circle",{r:d,cx:c,cy:c,fill:"none",stroke:p,strokeWidth:n}),r.createElement("circle",{r:d,cx:c,cy:c,fill:"none",stroke:h,strokeWidth:n,strokeLinecap:"round",strokeDasharray:m,strokeDashoffset:u,style:{transform:`rotate(${f}deg)`,transformOrigin:"center",transition:"stroke-dashoffset 300ms ease"}}),a&&r.createElement("text",{x:"50%",y:"50%",textAnchor:"middle",dominantBaseline:"middle",fontWeight:700,fontSize:l,fill:g},`${e}%`)))},Za=({value:e=0,max:t=100,min:n=0,appearance:a="bar",variant:o="primary",trackVariant:s="secondary",thickness:l=10,showText:i=!0,size:c=100,fontSize:d=16,label:m=void 0,before:u=void 0,after:f=void 0,wrapperClassName:p=void 0,className:h=void 0})=>{var x,N;const g=we(),b=t-n,y=b<=0?0:Math.round(Math.max(0,Math.min(100,(e-n)/b*100))),E=h||((x=g.Percentage)==null?void 0:x.className)||"";return r.createElement(Ne,{className:p||((N=g.Percentage)==null?void 0:N.wrapperClassName)},u,m&&r.createElement(rt,{label:m}),a==="bar"?r.createElement(Pm,{progress:y,variant:o,thickness:l,showText:i,trackVariant:s,size:c,fontSize:d,className:E}):r.createElement(Im,{progress:y,variant:o,thickness:l,showText:i,trackVariant:s,size:c,fontSize:d,className:E}),f)},Mm={container:tl,wrapper:Ne,row:rl,col:nl};function Pn({minHeight:e=200,maxHeight:t=600,paddingOffset:n=0}){return r.useMemo(()=>({adjustedMinHeight:e-n,wrapperStyle:{maxHeight:t,overflowY:t?"auto":void 0},resolvedMinHeight:e,resolvedMaxHeight:t}),[e,t,n])}const ni="mb-1 block text-sm font-medium leading-5 text-foreground",St="mt-1 text-xs text-muted-foreground",en="flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",ai="flex min-h-[5rem] w-full rounded-md border border-input bg-background px-3 py-2 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",Lt="flex w-full items-stretch",or="inline-flex shrink-0 items-center border border-input bg-muted px-3 py-1 text-sm text-muted-foreground",oi="relative",Tm="pointer-events-none absolute left-3 top-2 z-10 origin-[0] bg-background px-1 text-xs font-medium normal-case tracking-normal text-muted-foreground transition-all duration-150 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:px-0 peer-placeholder-shown:text-sm peer-placeholder-shown:font-normal peer-placeholder-shown:normal-case peer-placeholder-shown:tracking-normal peer-focus:top-2 peer-focus:-translate-y-0 peer-focus:px-1 peer-focus:text-xs peer-focus:font-medium peer-focus:tracking-normal peer-focus:text-foreground",Dm="pointer-events-none absolute left-3 top-2 z-10 origin-[0] bg-background px-1 text-xs font-medium normal-case tracking-normal text-muted-foreground transition-all duration-150 peer-placeholder-shown:top-2 peer-placeholder-shown:translate-y-0 peer-placeholder-shown:px-0 peer-placeholder-shown:text-sm peer-placeholder-shown:font-normal peer-placeholder-shown:normal-case peer-placeholder-shown:tracking-normal peer-focus:top-2 peer-focus:translate-y-0 peer-focus:px-1 peer-focus:text-xs peer-focus:font-medium peer-focus:tracking-normal peer-focus:text-foreground",Rm="peer h-14 px-3 pt-6 pb-2",_m="peer px-3 pt-6 pb-2",si=(e,{before:t,after:n})=>S(e,t&&"!rounded-l-none",n&&"!rounded-r-none"),gn=({children:e,side:t})=>r.createElement("span",{className:S(or,t==="before"?"rounded-l-md rounded-r-none border-r-0":"rounded-l-none rounded-r-md border-l-0")},e),tt=({message:e})=>r.createElement("div",{className:"mt-1 flex items-center gap-1 text-xs text-destructive",role:"alert","aria-live":"polite"},r.createElement(J,{name:"warning-circle",size:12,className:"shrink-0"}),r.createElement("span",null,e)),li=({name:e,onChange:t,wrapperClassName:n,defaultValue:a,valueChecked:o,inheritWrapperClassName:s})=>{const l=p=>p==null?"":`${p}`,{value:i,handleChange:c,formWrapClass:d}=Ve({name:e,onChange:t,wrapperClassName:n,inputType:typeof o=="number"?"number":"text",defaultValue:a!==void 0?l(a)===l(o)?l(o):"":void 0,inheritWrapperClassName:s}),m=r.useId(),u=l(i)===l(o);return{id:m,checked:u,formWrapClass:d,handleCheckboxChange:p=>{c==null||c({target:{name:e,value:p.target.checked?o:""}})}}},lt=({name:e,onChange:t=void 0,defaultValue:n=void 0,placeholder:a=void 0,label:o=void 0,type:s="text",required:l=!1,readOnlyAfterSet:i=!1,disabled:c=!1,before:d=void 0,after:m=void 0,afterInset:u=void 0,feedback:f=void 0,min:p=void 0,max:h=void 0,step:g=void 0,id:b=void 0,labelClassName:y=void 0,inheritWrapperClassName:E=!0,wrapperClassName:x=void 0,className:N=void 0,validator:P=void 0,labelMode:D="default"})=>{const{value:v,handleChange:w,formWrapClass:A}=Ve({name:e,onChange:t,wrapperClassName:x,inputType:s,defaultValue:n,inheritWrapperClassName:E}),I=dt(e,{required:l,label:o,validator:P}),T=r.useId(),C=b??T,M=lc({name:e,value:v,handleChange:w}),k=!!(D==="floating"&&o&&!d&&!m&&!u),R=k?" ":a;return r.createElement(Ne,{className:A},!k&&o&&r.createElement(rt,{label:o,required:l,htmlFor:C,className:y}),r.createElement(Ne,{className:S(d||m?Lt:"",u&&"relative",k&&oi)},d&&r.createElement(gn,{side:"before"},d),r.createElement("input",{id:C,type:s,name:e,className:si(S(en,k&&Rm,I&&"border-destructive focus-visible:ring-destructive/20",u&&"pr-9",N),{before:d,after:m}),placeholder:R,required:l,disabled:c||i&&!Wr(v),value:v??"",onChange:w,min:p,max:h,step:g,onDragOver:$=>$.preventDefault(),onDrop:M}),k&&r.createElement("label",{htmlFor:C,className:S(Tm,y)},o," ",l&&r.createElement("span",{className:"text-destructive"},"*")),m&&r.createElement(gn,{side:"after"},m),u&&r.createElement("span",{className:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-1.5 [&>*]:pointer-events-auto"},u)),I?r.createElement(tt,{message:I}):f&&r.createElement("div",{className:St},f))},Qa=e=>r.createElement(lt,{...e,type:"text"}),ii=e=>r.createElement(lt,{...e,type:"number"}),eo=e=>r.createElement(lt,{...e,type:"email"}),ci=e=>{const[t,n]=r.useState(!1);return r.createElement(lt,{...e,type:t?"text":"password",afterInset:r.createElement("button",{type:"button",tabIndex:-1,onClick:()=>n(!t),className:"h-7 w-7 inline-flex items-center justify-center rounded text-muted-foreground hover:text-foreground transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"},r.createElement(J,{name:t?"eye":"eye-off",size:15}))})},di=({className:e,...t})=>r.createElement(lt,{...t,type:"color",className:S("w-10 shrink-0 cursor-pointer p-0.5",e)}),ui=e=>r.createElement(lt,{...e,type:"date"}),mi=e=>r.createElement(lt,{...e,type:"time"}),fi=e=>r.createElement(lt,{...e,type:"datetime-local"}),pi=e=>r.createElement(lt,{...e,type:"week"}),gi=e=>r.createElement(lt,{...e,type:"month"}),hi=e=>r.createElement(lt,{...e,type:"range",className:S("!border-0 !bg-transparent !shadow-none !px-0 !py-0 !h-auto cursor-pointer accent-primary",e.className)}),Fm=e=>r.createElement(lt,{...e,type:"url"}),Om=({name:e,onChange:t=void 0,defaultValue:n=void 0,value:a=void 0,id:o=void 0,inheritWrapperClassName:s=!0,wrapperClassName:l=void 0})=>{const{value:i,handleChange:c}=Ve({name:e,onChange:t,wrapperClassName:l,defaultValue:n??a,inheritWrapperClassName:s}),d=r.useId(),m=o??d,u=r.useMemo(()=>JSON.stringify(a??null),[a]),f=r.useMemo(()=>JSON.stringify(i??null),[i]);return r.useEffect(()=>{a!==void 0&&u!==f&&c({target:{name:e,value:a}})},[c,e,u,f,a]),r.createElement("input",{id:m,type:"hidden",name:e,value:typeof i=="string"?i:i==null?"":JSON.stringify(i),readOnly:!0})},bi=({name:e,onChange:t=void 0,defaultValue:n=void 0,label:a=void 0,title:o=void 0,ariaLabel:s=void 0,required:l=!1,valueChecked:i="on",before:c=void 0,after:d=void 0,inheritWrapperClassName:m=!0,wrapperClassName:u=void 0,className:f=void 0})=>{const{id:p,checked:h,formWrapClass:g,handleCheckboxChange:b}=li({name:e,onChange:t,wrapperClassName:u,defaultValue:n,valueChecked:i,inheritWrapperClassName:m}),y=dt(e,{required:l,label:a});return r.createElement(Ne,{className:g},r.createElement("div",{className:"flex items-center gap-2"},c,r.createElement("input",{type:"checkbox",id:p,name:e,title:o,"aria-label":s,className:S("h-4 w-4 shrink-0 rounded-sm border border-input bg-background text-primary shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",f),checked:h,onChange:b}),a&&r.createElement("label",{className:"text-sm font-medium leading-none text-foreground",htmlFor:p},a,l&&r.createElement("span",{className:"text-destructive"}," *")),d),y&&r.createElement(tt,{message:y}))},to=({name:e,onChange:t=void 0,defaultValue:n=void 0,label:a=void 0,title:o=void 0,ariaLabel:s=void 0,required:l=!1,valueChecked:i="on",before:c=void 0,after:d=void 0,inheritWrapperClassName:m=!0,wrapperClassName:u=void 0,className:f=void 0})=>{const{id:p,checked:h,formWrapClass:g,handleCheckboxChange:b}=li({name:e,onChange:t,wrapperClassName:u,defaultValue:n,valueChecked:i,inheritWrapperClassName:m}),y=dt(e,{required:l,label:a});return r.createElement(Ne,{className:g},r.createElement("div",{className:"flex items-center gap-2"},c,r.createElement("label",{className:"inline-flex cursor-pointer items-center gap-2 select-none"},r.createElement("span",{className:"relative inline-flex h-5 w-9 shrink-0 items-center"},r.createElement("input",{id:p,name:e,type:"checkbox",title:o,"aria-label":s,checked:h,onChange:b,className:"peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0"}),r.createElement("span",{"aria-hidden":"true",className:S("pointer-events-none absolute inset-0 rounded-full transition-colors duration-200 ease-out peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2",h?"bg-primary":"bg-muted-foreground/35",f)},r.createElement("span",{className:S("pointer-events-none absolute top-0.5 left-0.5 h-4 w-4 rounded-full bg-background shadow-sm transition-transform duration-200 ease-out",h&&"translate-x-4")}))),a&&r.createElement("span",{className:"text-sm font-medium leading-none text-foreground"},a,l&&r.createElement("span",{className:"text-destructive"}," *"))),d),y&&r.createElement(tt,{message:y}))},rt=({label:e,required:t=!1,htmlFor:n=void 0,className:a=void 0})=>r.createElement("label",{htmlFor:n,className:S(ni,a)},e," ",t&&r.createElement("span",{className:"text-destructive"},"*")),yr=({name:e,onChange:t=void 0,defaultValue:n=void 0,placeholder:a=void 0,label:o=void 0,required:s=!1,readOnlyAfterSet:l=!1,disabled:i=!1,minHeight:c=96,maxHeight:d=void 0,textareaRef:m=void 0,before:u=void 0,after:f=void 0,feedback:p=void 0,id:h=void 0,labelClassName:g=void 0,inheritWrapperClassName:b=!0,className:y=void 0,wrapperClassName:E=void 0,validator:x=void 0,onKeyDown:N=void 0,onClick:P=void 0,onBlur:D=void 0,labelMode:v="default"})=>{const{value:w,handleChange:A,formWrapClass:I}=Ve({name:e,onChange:t,wrapperClassName:E,defaultValue:n,inheritWrapperClassName:b}),T=dt(e,{required:s,label:o,validator:x}),C=Pn({minHeight:c,maxHeight:d}),M=r.useId(),k=h??M,R=lc({name:e,value:w,handleChange:A}),$=r.useRef(null),j=!!(v==="floating"&&o&&!u&&!f),z=j?" ":a,H=q=>{if($.current=q,typeof m=="function"){m(q);return}m&&typeof m=="object"&&"current"in m&&(m.current=q)};return r.useEffect(()=>{if(!$.current)return;const q=$.current;q.style.height="auto";const F=Math.max(q.scrollHeight,C.resolvedMinHeight),B=C.resolvedMaxHeight?Math.min(F,C.resolvedMaxHeight):F;q.style.minHeight=`${C.resolvedMinHeight}px`,q.style.maxHeight=C.resolvedMaxHeight?`${C.resolvedMaxHeight}px`:"",q.style.height=`${B}px`,q.style.overflowY=C.resolvedMaxHeight&&F>C.resolvedMaxHeight?"auto":"hidden"},[w,C.resolvedMinHeight,C.resolvedMaxHeight]),r.createElement(Ne,{className:I},!j&&o&&r.createElement(rt,{required:s,label:o,htmlFor:k,className:g}),r.createElement(Ne,{className:S(u||f?Lt:"",j&&oi)},u&&r.createElement(gn,{side:"before"},u),r.createElement("textarea",{id:k,name:e,className:si(S(ai,"resize-none",j&&_m,T&&"border-destructive focus-visible:ring-destructive/20",y),{before:u,after:f}),ref:H,placeholder:z,required:s,disabled:i||l&&!Wr(w),value:w??"",onChange:A,onKeyDown:N,onClick:P,onBlur:D,onDragOver:q=>q.preventDefault(),onDrop:R}),j&&r.createElement("label",{htmlFor:k,className:S(Dm,g)},o," ",s&&r.createElement("span",{className:"text-destructive"},"*")),f&&r.createElement(gn,{side:"after"},f)),T?r.createElement(tt,{message:T}):p&&r.createElement("div",{className:St},p))},$m=({children:e,onClick:t=void 0,label:n=void 0,activeIndices:a=void 0,draggable:o=void 0,onDrop:s=void 0,disabledIndices:l=void 0,loadingIndices:i=void 0,before:c=void 0,after:d=void 0,wrapperClassName:m=void 0,className:u=void 0,itemClassName:f=void 0})=>{const p=S("flex flex-col divide-y divide-border rounded-md border bg-card",u),h=b=>{const y=E=>E==null||typeof E=="boolean"?"":typeof E=="string"||typeof E=="number"?`${E}`:Array.isArray(E)?E.map(y).join(" "):r.isValidElement(E)?y(E.props.children):"";return y(b).replace(/\s+/g," ").trim()},g=(b,y)=>{b.dataTransfer.setData("text/plain",(s==null?void 0:s(y))??y)};return r.createElement(Ne,{className:m},c,n&&r.createElement("div",null,n),r.createElement("div",{className:p},e.map((b,y)=>{const E=a==null?void 0:a.includes(y),x=l==null?void 0:l.includes(y),N=i==null?void 0:i.includes(y),P=S("flex items-center gap-2 px-3 py-2 text-sm transition-colors",t&&"cursor-pointer hover:bg-accent hover:text-accent-foreground",E&&"bg-primary/8 text-foreground",x&&"pointer-events-none opacity-50",N&&"animate-pulse",f);return t?r.createElement("div",{key:y,onClick:D=>{!N&&!Da(D)&&t(D,y)},className:P,style:{cursor:"pointer"}},b):r.createElement("span",{key:y,className:P,draggable:o,onDragStart:o?D=>g(D,h(b)):void 0,style:{cursor:o?"grab":"default"}},o&&r.createElement(J,{name:"grip-vertical"}),b)})),d)},vi={field:"",dir:"asc"},as=e=>typeof e=="string"&&!Number.isNaN(Date.parse(e)),Lm=(e,t)=>e==null&&t==null?0:e==null?1:t==null?-1:typeof e=="number"&&typeof t=="number"?e-t:typeof e=="boolean"&&typeof t=="boolean"?Number(e)-Number(t):e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():as(e)&&as(t)?Date.parse(e)-Date.parse(t):String(e).localeCompare(String(t),void 0,{numeric:!0,sensitivity:"base"}),gr={normalize(e){if(e!=null&&e.field)return{field:e.field,dir:e.dir==="desc"?"desc":"asc"}},toggle(e,t){return!e||e.field!==t?{field:t,dir:"asc"}:{field:t,dir:e.dir==="asc"?"desc":"asc"}},compareValues(e,t,n="asc"){const a=Lm(e,t);return n==="desc"?-a:a},compareRecords(e,t,n){const a=this.normalize(n);if(!a)return 0;const o=Lr(e,a.field),s=Lr(t,a.field);return this.compareValues(o,s,a.dir)},records(e,t){if(!e)return e;const n=this.normalize(t);return n?[...e].sort((a,o)=>this.compareRecords(a,o,n)):[...e]}},yi=e=>e==null||e===""||typeof e=="boolean"?[]:typeof e=="object"&&!Array.isArray(e)?[]:typeof e=="string"||typeof e=="number"?e.toString().split(","):e,wi=e=>e?typeof e!="object"?{label:(e==null?void 0:e.toString())||"",value:(e==null?void 0:e.toString())||""}:{label:String((e==null?void 0:e.label)??"")||"",value:String((e==null?void 0:e.value)??"")||""}:{label:"@value",value:"@value"},ro=e=>e.map(t=>wi({label:t.label??t.name??t.title??t[je]??"",value:t.value??t[je]??t.label??t.name??""}));function no(e){return{fieldMap:e==null?void 0:e.fieldMap,where:e==null?void 0:e.where,order:e==null?void 0:e.order,onLoad:e==null?void 0:e.onLoad}}const jm=(e,t,n)=>{const a=e==null?void 0:e[n.field],[o]=Object.entries(t||{});if(!o||!a)return!1;const[s,l]=o;return s===a&&l===n.dir},ao=(e,t,n,a,o)=>{const s=n||{...vi,field:"label"},l=[...e.map(wi),...t];return e.length===0&&jm(o,a,s)?l:gr.records(l,s)||[]},wr=({children:e,side:t})=>r.createElement("span",{className:S(or,t==="before"?"rounded-l-md rounded-r-none border-r-0":"rounded-l-none rounded-r-md border-l-0")},e),hn=({name:e,onChange:t=void 0,defaultValue:n=void 0,required:a=!1,readOnlyAfterSet:o=!1,disabled:s=!1,placeholderOption:l=void 0,label:i=void 0,title:c=void 0,before:d=void 0,after:m=void 0,feedback:u=void 0,options:f=[],optionsSource:p=void 0,order:h=void 0,inheritWrapperClassName:g=!0,wrapperClassName:b=void 0,className:y=void 0,validator:E=void 0})=>{const{value:x,handleChange:N,formWrapClass:P}=Ve({name:e,onChange:t,wrapperClassName:b,defaultValue:n,inheritWrapperClassName:g}),D=dt(e,{required:a,label:i,validator:E}),v=we(),w=Te("select"),A=l??{label:w.placeholder,value:""},I=r.useMemo(()=>no(p),[p==null?void 0:p.fieldMap,p==null?void 0:p.where,p==null?void 0:p.order,p==null?void 0:p.onLoad]),T=$t(),[C,M]=r.useState([]);r.useEffect(()=>T.subscribe(p==null?void 0:p.path,$=>M(ro($)),I),[T,p==null?void 0:p.path,I]);const k=r.useMemo(()=>{const $=ao(f,C,h,p==null?void 0:p.order,I.fieldMap);return xn(x&&!$.length?[...$,{label:`× ${x.toString()}`,value:x.toString()}]:$)},[f,C,h,p==null?void 0:p.order,I.fieldMap,x]);!x&&!A&&k.length>0&&(N==null||N({target:{name:e,value:k[0].value}}));const R=r.useId();return r.createElement(Ne,{className:P||v.Select.wrapperClassName},i&&r.createElement(rt,{label:i,required:a,htmlFor:R}),r.createElement(Ne,{className:d||m?S(Lt,"flex-nowrap"):""},d&&r.createElement(wr,{side:"before"},d),r.createElement("select",{id:R,name:e,className:S(en,"appearance-none pr-8",d&&"!rounded-l-none",m&&"!rounded-r-none",D&&"border-destructive focus-visible:ring-destructive/20",y||v.Select.className),value:x??"",required:a,disabled:s||o&&!Wr(x),onChange:N,title:c},A&&r.createElement("option",{key:`${R}-empty`,value:A.value},A.label),k.some($=>$.group)?Object.entries(k.reduce(($,j)=>{const z=j.group??"";return($[z]??($[z]=[])).push(j),$},{})).map(([$,j])=>$?r.createElement("optgroup",{key:$,label:$},j.map((z,H)=>r.createElement("option",{key:`${R}-${$}-${H}`,value:z.value},z.label))):j.map((z,H)=>r.createElement("option",{key:`${R}-nogroup-${H}`,value:z.value},z.label))):k.map(($,j)=>r.createElement("option",{key:`${R}-${j}`,value:$.value},$.label))),m&&r.createElement(wr,{side:"after"},m)),D?r.createElement(tt,{message:D}):u&&r.createElement("div",{className:St},u))},xi=({name:e,defaultValue:t=void 0,minItems:n=void 0,maxItems:a=void 0,onChange:o=void 0,required:s=!1,readOnlyAfterSet:l=!1,disabled:i=!1,label:c=void 0,title:d=void 0,placeholder:m=void 0,before:u=void 0,after:f=void 0,feedback:p=void 0,options:h=[],optionsSource:g=void 0,order:b=void 0,inheritWrapperClassName:y=!0,wrapperClassName:E=void 0,className:x=void 0,validator:N=void 0,creatable:P=!1,onCreate:D=void 0})=>{const{value:v,handleChange:w,formWrapClass:A}=Ve({name:e,onChange:o,wrapperClassName:E,defaultValue:t,inheritWrapperClassName:y}),I=dt(e,{required:s,label:c,validator:N}),T=we(),C=r.useMemo(()=>yi(v),[v]),[M,k]=r.useState(()=>C);r.useEffect(()=>{Ta(C,M)||k(C)},[C,M]);const R=r.useMemo(()=>no(g),[g==null?void 0:g.fieldMap,g==null?void 0:g.where,g==null?void 0:g.order,g==null?void 0:g.onLoad]),$=$t(),[j,z]=r.useState([]);r.useEffect(()=>$.subscribe(g==null?void 0:g.path,le=>z(ro(le)),R),[$,g==null?void 0:g.path,R]);const[H,q]=r.useState([]),F=r.useMemo(()=>{const le=ao([...h,...H],j,b,g==null?void 0:g.order,R.fieldMap);return xn(le,"value")},[h,H,j,b,g==null?void 0:g.order,R.fieldMap]),B=(le,ae)=>{if(le){if(M.includes(le)||a&&M.length>=a){ae.value="";return}k(ve=>{const he=[...ve,le];return setTimeout(()=>{w==null||w({target:{name:e,value:he}})},0),he}),ae.value=""}},_=le=>{const ae=le.target.value;F.some(he=>he.value===ae)&&B(ae,le.target)},V=le=>{if(le.key!=="Enter")return;le.preventDefault();const ae=le.target.value.trim();if(!ae)return;if(!F.some(he=>he.value===ae)){if(!P)return;q(he=>[...he,{label:ae,value:ae}]),D==null||D(ae)}B(ae,le.target)},K=le=>{k(ae=>{const ve=ae.filter(he=>he!==le);return setTimeout(()=>{w==null||w({target:{name:e,value:ve}})},0),ve})},ee=r.useId(),se=`${ee}-options`;return r.createElement(Ne,{className:A||T.Autocomplete.wrapperClassName},c&&r.createElement(rt,{label:c,required:s,htmlFor:ee}),r.createElement(Ne,{className:u||f?S(Lt,"flex-nowrap"):""},u&&r.createElement(wr,{side:"before"},u),r.createElement("div",{className:S(en,"h-auto min-h-9 flex-wrap items-center gap-1 py-1.5 px-2",u&&"rounded-l-none",f&&"rounded-r-none")},M.map(le=>r.createElement("span",{className:"inline-flex items-center gap-1 rounded-full border border-primary/20 bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary",key:le},le,r.createElement("button",{type:"button",className:"ml-0.5 opacity-60 transition-opacity hover:opacity-100",onClick:()=>K(le)},"×"))),(!a||M.length<a)&&r.createElement("input",{id:ee,type:"text",className:S("min-w-[120px] flex-1 border-none bg-transparent text-sm outline-none placeholder:text-muted-foreground",x||T.Autocomplete.className),required:s&&M.length<(n||0),disabled:i||l&&!Wr(v),placeholder:P?m??"Type or press Enter to create...":m,title:d,list:se,onChange:_,onKeyDown:V})),r.createElement("datalist",{id:se},F.map((le,ae)=>r.createElement("option",{value:le.value,key:`${ee}-${ae}`},le.label))),f&&r.createElement(wr,{side:"after"},f)),I?r.createElement(tt,{message:I}):p&&r.createElement("div",{className:St},p))},Ei=({name:e,defaultValue:t=void 0,onChange:n=void 0,required:a=!1,readOnlyAfterSet:o=!1,disabled:s=!1,label:l=void 0,title:i=void 0,before:c=void 0,after:d=void 0,feedback:m=void 0,options:u=[],optionsSource:f=void 0,order:p=void 0,inheritWrapperClassName:h=!0,wrapperClassName:g=void 0,className:b=void 0,validator:y=void 0,itemClassName:E=void 0})=>{const{value:x,handleChange:N,formWrapClass:P}=Ve({name:e,onChange:n,wrapperClassName:g,defaultValue:t,inheritWrapperClassName:h}),D=dt(e,{required:a,label:l,validator:y}),v=r.useMemo(()=>yi(x),[x]),[w,A]=r.useState(()=>v);r.useEffect(()=>{Ta(v,w)||A(v)},[v,w]);const I=r.useMemo(()=>no(f),[f==null?void 0:f.fieldMap,f==null?void 0:f.where,f==null?void 0:f.order,f==null?void 0:f.onLoad]),T=$t(),[C,M]=r.useState([]);r.useEffect(()=>T.subscribe(f==null?void 0:f.path,q=>M(ro(q)),I),[T,f==null?void 0:f.path,I]);const k=r.useMemo(()=>{const q=ao(u,C,p,f==null?void 0:f.order,I.fieldMap);return xn(q,"value")},[u,C,p,f==null?void 0:f.order,I.fieldMap]),R=q=>{A(F=>{const B=F.filter(_=>_!==q);return setTimeout(()=>{N==null||N({target:{name:e,value:B}})},0),B})},$=q=>{const F=q.target.value;if(!q.target.checked){R(F);return}k.filter(B=>B.value===F).length!==0&&(w.includes(F)||A(B=>{const _=[...B,F];return setTimeout(()=>{N==null||N({target:{name:e,value:_}})},0),_}))},j=r.useId(),z=s||o&&w.length>0,H=r.createElement(Ne,{className:S(c||d?S(en,"h-auto min-h-9 w-full min-w-0 flex-col items-start py-2 px-3"):"","space-y-1")},k.map(q=>{const F=zs(`cl-${j}-${e}-${q.value}`);return r.createElement("div",{key:F,className:S("flex w-full items-center gap-2",E)},r.createElement("input",{className:"h-4 w-4 shrink-0 rounded-sm border border-input bg-background text-primary shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",type:"checkbox",id:F,name:e,value:q.value,onChange:$,checked:w.includes(q.value),disabled:z,title:i}),r.createElement("label",{htmlFor:F,className:"text-sm font-medium leading-none text-foreground"},q.label))}));return r.createElement(Ne,{className:S(P,b)},l&&r.createElement(r.Fragment,null,r.createElement(rt,{label:l,required:a}),r.createElement("hr",{className:"mt-0"})),c||d?r.createElement(Ne,{className:S(Lt,"flex-nowrap items-stretch")},c&&r.createElement(wr,{side:"before"},c),H,d&&r.createElement(wr,{side:"after"},d)):H,D?r.createElement(tt,{message:D}):m&&r.createElement("div",{className:St},m))};function os(e,t){if(!t)return e;const n=e.indexOf("?"),a=n!==-1?e.slice(0,n):e,o=n!==-1?e.slice(n):"",s=a.lastIndexOf(".");return s===-1?`${a}${t}${o}`:`${a.slice(0,s)}${t}${a.slice(s)}${o}`}function Bm(e,t){return t.mode==="explicit"?t.variants.map(n=>"width"in n?`${n.src} ${n.width}w`:`${n.src} ${n.density}x`).join(", "):t.mode==="density"?(t.densities??[1,2]).map(a=>{const o=t.suffix?t.suffix(a):a===1?"":`@${a}x`;return`${os(e,o)} ${a}x`}).join(", "):t.widths.map(n=>{const a=t.suffix?t.suffix(n):`-${n}w`;return`${os(e,a)} ${n}w`}).join(", ")}function Un(e,t){const n=e.priority?"eager":e.loading??"lazy",a={src:e.src,alt:e.alt,width:e.width,height:e.height,loading:n,decoding:e.decoding??"async",...e.priority&&{fetchpriority:"high"},...e.title&&{title:e.title},...e.className&&{class:e.className},...e.crossorigin&&{crossorigin:e.crossorigin},...e.referrerpolicy&&{referrerpolicy:e.referrerpolicy}},o=[];return e.fit&&o.push(`object-fit: ${e.fit}`),e.position&&o.push(`object-position: ${e.position}`),o.length&&(a.style=o.join("; ")),t&&(a.srcset=Bm(e.src,t),t.mode!=="density"&&t.sizes&&(a.sizes=t.sizes)),Object.fromEntries(Object.entries(a).filter(([,s])=>s!==void 0))}function zm(e){const n=["src","srcset","sizes","alt","title","width","height","style","class","loading","decoding","fetchpriority","crossorigin","referrerpolicy"].filter(s=>e[s]!==void 0).map(s=>`${s}="${String(e[s])}"`);if(n.length===0)return"<img />";const[a,...o]=n;return o.length===0?`<img ${a} />`:`<img ${a}
|
|
8
|
-
|
|
9
|
-
`)} />`}function Um(e){return{toHtml:t=>zm(Un(e,t)),toJson:t=>JSON.stringify(Un(e,t),null,2),params:t=>Un(e,t)}}async function Hm(e,t){return new Promise((n,a)=>{const o=new Image;o.onload=()=>{const s=o.naturalWidth,l=o.naturalHeight,i=e.startsWith("data:")?e.slice(5,e.indexOf(";")):"image/jpeg",d=[...t].sort((m,u)=>m-u).filter(m=>m<s).map(m=>{const u=Math.round(l*(m/s)),f=document.createElement("canvas");f.width=m,f.height=u;const p=f.getContext("2d");if(!p)throw new Error("Canvas 2D context unavailable");return p.drawImage(o,0,0,m,u),{src:f.toDataURL(i),width:m}});d.push({src:e,width:s}),n(d)},o.onerror=()=>a(new Error("resizeVariants: failed to load image")),e.startsWith("data:")||(o.crossOrigin="anonymous"),o.src=e})}async function oo(e,t){var l;const n=await Hm(e,t.length?t:[]),a=((l=n.at(-1))==null?void 0:l.width)??0,o=n.slice(0,-1);return{variants:await Promise.all(o.map(async i=>{const c=await fetch(i.src).then(d=>d.blob());return{width:i.width,dataUri:i.src,localUrl:URL.createObjectURL(c)}})),naturalWidth:a}}async function so(e,t,n,a){const o=a.replace(/\.[^/.]+$/,""),s=a.split(".").pop()??"jpg";return Promise.all(e.map(async l=>({url:await t.upload(l.dataUri,`${n}/${o}_${l.width}w.${s}`)??l.localUrl,width:l.width})))}function lo(e){return[...e].sort((t,n)=>t.width-n.width).map(t=>`${t.url} ${t.width}w`).join(", ")}function Hn(e){if(e.startsWith("data:")||e.startsWith("blob:"))return"image.jpg";try{return new URL(e).pathname.split("/").pop()||"image.jpg"}catch{return e.split("/").pop()||"image.jpg"}}function Vm(e){return e.replace(/\.[^/.]+$/,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/^(.)/,t=>t.toUpperCase())}const Ni=r.createContext(null),Ci=({registry:e,defaultKey:t,children:n})=>{const a=r.useMemo(()=>({registry:e,defaultKey:t}),[e,t]);return r.createElement(Ni.Provider,{value:a},n)},In=e=>{const t=r.useContext(Ni);if(!t)return null;const n=e??t.defaultKey;return t.registry[n]??null},rn=()=>r.createElement("div",{className:"h-5 w-px bg-border shrink-0 mx-0.5"}),Mn=({src:e,title:t=void 0,width:n=700,height:a=500,mode:o="inline",onImageLoad:s=void 0,onClose:l=void 0,onSave:i=void 0})=>{const c=Te("imageEditor"),d=r.useRef(null),m=r.useRef(null),u={width:10,color:"rgba(255,0,0,0.5)",fill:"transparent"},[f,p]=r.useState(1);r.useEffect(()=>{if(!d.current)return;let v,w=!1;return(async()=>{const[{default:I}]=await Promise.all([import("tui-image-editor"),import("tui-image-editor/dist/tui-image-editor.css")]);w||!d.current||(v=new I(d.current,{cssMaxWidth:n,cssMaxHeight:a,selectionStyle:{cornerSize:10,rotatingPointOffset:70,cornerColor:"white",cornerStrokeColor:"red",borderColor:"red"}}),m.current=v,e&&v.loadImageFromURL(e,"Sample Image").then(()=>{s==null||s(),v.clearUndoStack(),v.clearRedoStack()}).catch(T=>{console.error("Error loading image:",T)}),v.on("objectAdded",T=>{console.log("objectAdded",T),v.stopDrawingMode()}),v.on("addText",T=>{var M,k;const C=T;v.stopDrawingMode(),v.addText("init text",{styles:{fill:"#FF0000",fontSize:30,fontWeight:"bold"},position:{x:(M=C.originPosition)==null?void 0:M.x,y:(k=C.originPosition)==null?void 0:k.y}})}))})(),()=>{w=!0,v==null||v.destroy(),m.current=null}},[n,a]);const h=r.useCallback(()=>{const v=m.current;!e||!v||v.loadImageFromURL(e,"Sample Image").then(()=>{s==null||s(),v.clearUndoStack(),v.clearRedoStack()}).catch(w=>{console.error("Error loading image:",w)})},[e,s]);r.useEffect(()=>{m.current&&h()},[h]);const g=(v,w)=>{v.preventDefault();const A=m.current;if(!A)return;const I=3,T=1;switch(w){case"ZOOMIN":f<I&&p(C=>C*1.2);break;case"ZOOMOUT":f>T&&p(C=>Math.max(C*.8,T));break;case"UNDO":A.isEmptyUndoStack()||A.undo();break;case"REDO":A.isEmptyRedoStack()||A.redo();break;case"FLIPX":A.flipX();break;case"FLIPY":A.flipY();break;case"ROTATE":A.rotate(90);break;case"CROPPER":A.startDrawingMode(w);break;case"FREE_DRAWING":A.startDrawingMode(w,{width:u.width,color:u.color});break;case"LINE_DRAWING":A.startDrawingMode(w,{width:u.width,color:u.color,arrowType:{tail:"chevron"}});break;case"TEXT":A.startDrawingMode(w);break;case"circle":case"rect":case"triangle":A.setDrawingShape(w,{fill:u.fill,stroke:u.color,strokeWidth:3}),A.startDrawingMode("SHAPE");break}};r.useEffect(()=>{if(o==="modal")return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[o]);const b=async()=>{var w;const v=m.current;if(v){try{const A=(w=v.getCropzoneRect)==null?void 0:w.call(v);A&&A.width>0&&A.height>0&&await v.crop(A)}catch{}await(i==null?void 0:i(v.toDataURL()))}},y=()=>{l==null||l()},E="inline-flex h-8 w-8 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",x=r.createElement(r.Fragment,null,r.createElement("button",{className:E,title:c.undo,onClick:v=>g(v,"UNDO")},r.createElement(J,{name:"arrow-arc-left",size:16})),r.createElement("button",{className:E,title:c.redo,onClick:v=>g(v,"REDO")},r.createElement(J,{name:"arrow-arc-right",size:16})),r.createElement("button",{className:E,title:c.zoomOut,onClick:v=>g(v,"ZOOMOUT")},r.createElement(J,{name:"magnifying-glass-minus",size:16})),r.createElement("button",{className:E,title:c.zoomIn,onClick:v=>g(v,"ZOOMIN")},r.createElement(J,{name:"magnifying-glass-plus",size:16})),r.createElement(rn,null),r.createElement("button",{className:E,title:c.crop,onClick:v=>g(v,"CROPPER")},r.createElement(J,{name:"crop",size:16})),r.createElement("button",{className:E,title:c.flipHorizontal,onClick:v=>g(v,"FLIPX")},r.createElement(J,{name:"arrow-line-right",size:16})),r.createElement("button",{className:E,title:c.flipVertical,onClick:v=>g(v,"FLIPY")},r.createElement(J,{name:"arrow-line-down",size:16})),r.createElement("button",{className:E,title:c.rotate,onClick:v=>g(v,"ROTATE")},r.createElement(J,{name:"camera-rotate",size:16})),r.createElement(rn,null),r.createElement("button",{className:E,title:c.freeDrawing,onClick:v=>g(v,"FREE_DRAWING")},r.createElement(J,{name:"pencil",size:16})),r.createElement("button",{className:E,title:c.arrow,onClick:v=>g(v,"LINE_DRAWING")},r.createElement(J,{name:"arrow-right",size:16})),r.createElement("button",{className:E,title:c.text,onClick:v=>g(v,"TEXT")},r.createElement(J,{name:"text-t",size:16})),r.createElement("button",{className:E,title:c.rectangle,onClick:v=>g(v,"rect")},r.createElement(J,{name:"rectangle",size:16})),r.createElement("button",{className:E,title:c.circle,onClick:v=>g(v,"circle")},r.createElement(J,{name:"circle",size:16})),r.createElement("button",{className:E,title:c.triangle,onClick:v=>g(v,"triangle")},r.createElement(J,{name:"triangle",size:16}))),N=r.createElement("div",{className:"flex flex-1 min-w-0 items-center gap-0.5 overflow-x-auto"},r.createElement("span",{className:"shrink-0 text-sm font-semibold text-foreground pr-2 mr-1"},t||c.title),r.createElement(rn,null),x,i&&r.createElement(r.Fragment,null,r.createElement(rn,null),r.createElement(bt,{className:"btn-primary h-8 px-3 text-xs ml-1",onClick:b,icon:"floppy-disk",label:c.save}))),P=r.createElement("div",{className:"flex items-center gap-0.5 border-b px-2 py-1"},x,i&&r.createElement("div",{className:"ml-auto pl-2"},r.createElement(bt,{className:"btn-primary h-8 px-3 text-xs",onClick:b,icon:"floppy-disk",label:c.save}))),D=r.createElement("div",{className:S("flex w-full items-center justify-center overflow-auto pt-3","[background-image:repeating-conic-gradient(#e4e4e4_0%_25%,#f5f5f5_0%_50%)]","dark:[background-image:repeating-conic-gradient(#2a2a2a_0%_25%,#343434_0%_50%)]","[background-size:16px_16px]"),style:{minHeight:a*f+"px"}},r.createElement("style",null,".tui-image-editor,.tui-image-editor canvas{background:transparent!important}"),r.createElement("div",{ref:d,style:{transform:`scale(${f})`,transformOrigin:"center center",display:"inline-block",userSelect:"none",width:n+"px",height:a*f+"px"}}));return o==="modal"?r.createElement(lr,{size:"xl",header:N,bodyClassName:"overflow-hidden p-0",onClose:y,footer:!1},D):r.createElement(r.Fragment,null,P,D)},Km=({srcset:e})=>{const t=e.split(",").map(n=>n.trim()).map(n=>{const[a,o]=n.split(" ");return{url:a,width:parseInt(o,10)}}).filter(n=>n.url&&!isNaN(n.width));return t.length<2?null:r.createElement("div",{className:"mt-2 flex flex-col gap-1"},r.createElement("p",{className:"text-xs font-medium text-muted-foreground"},"Responsive variants",r.createElement("span",{className:"ml-1 font-normal opacity-60"},"(",t.length," generated)")),r.createElement("div",{className:"flex gap-1.5"},t.map(n=>r.createElement("a",{key:n.width,href:n.url,target:"_blank",rel:"noopener noreferrer",className:"group relative flex-1 overflow-hidden rounded border border-border",style:{backgroundImage:"repeating-conic-gradient(#e4e4e4 0% 25%, #f5f5f5 0% 50%)",backgroundSize:"8px 8px"}},r.createElement("img",{src:n.url,alt:`${n.width}w`,className:"h-12 w-full object-contain transition-opacity group-hover:opacity-80"}),r.createElement("span",{className:"absolute bottom-0.5 left-0.5 rounded bg-black/60 px-1 py-0.5 text-[9px] font-mono leading-none text-white"},n.width,"px"),r.createElement("div",{className:"absolute inset-0 flex items-center justify-center opacity-0 transition-opacity group-hover:opacity-100"},r.createElement("div",{className:"rounded-md bg-black/60 p-1"},r.createElement(J,{name:"external-link",size:11,className:"text-white"})))))))},ki=({name:e,onChange:t=void 0,defaultValue:n=void 0,label:a=void 0,required:o=!1,disabled:s=!1,feedback:l=void 0,srcsetWidths:i=[],uploadPath:c=void 0,id:d=void 0,labelClassName:m=void 0,inheritWrapperClassName:u=!0,wrapperClassName:f=void 0,className:p=void 0,before:h=void 0,after:g=void 0})=>{const{value:b,handleChange:y,formWrapClass:E}=Ve({name:e,onChange:t,defaultValue:n,wrapperClassName:f,inheritWrapperClassName:u}),x=dt(e,{required:o,label:a}),N=b&&typeof b=="object"&&!Array.isArray(b)?b:{},P=N.src??"",D=N.alt??"",v=N.srcset??"",w=N.sizes??"",A=In(),[I,T]=r.useState(!1),[C,M]=r.useState(!1),k=r.useRef(null),R=r.useCallback(H=>{y==null||y({target:{name:e,value:{...N,...H}}})},[y,e,N]),$=r.useRef("");r.useEffect(()=>{P&&P!==$.current&&!D&&R({alt:Vm(Hn(P))}),$.current=P},[P]),r.useEffect(()=>{if(!P||!i.length)return;let H=!1;return T(!0),(async()=>{const{variants:q,naturalWidth:F}=await oo(P,i);if(H)return;const B=Hn(P);let _;const V=P.startsWith("data:")?URL.createObjectURL(await fetch(P).then(K=>K.blob())):P;A&&c&&q.length?_=[...await so(q,A,c,B),{url:V,width:F}]:_=[...q.map(K=>({url:K.localUrl,width:K.width})),{url:V,width:F}],H||(R({srcset:lo(_),sizes:"(max-width: 640px) 100vw, 800px"}),T(!1))})().catch(()=>{H||T(!1)}),()=>{H=!0}},[P,i.join(",")]);const j=H=>{R({src:H,srcset:"",sizes:""}),M(!1)},z=!!x;return r.createElement(Ne,{className:E},h,a&&r.createElement(rt,{label:a,required:o,htmlFor:d??e,className:m}),r.createElement("div",{className:S("rounded-lg border border-input bg-background shadow-sm transition-colors","focus-within:ring-1 focus-within:ring-ring",z&&"border-destructive focus-within:ring-destructive/20",s&&"cursor-not-allowed opacity-50",p)},r.createElement("div",{className:S("group relative flex min-h-[120px] items-center justify-center overflow-hidden rounded-t-lg transition-colors","[background-image:repeating-conic-gradient(#e4e4e4_0%_25%,#f5f5f5_0%_50%)]","dark:[background-image:repeating-conic-gradient(#2a2a2a_0%_25%,#343434_0%_50%)]","[background-size:16px_16px]")},P?r.createElement("img",{src:P,srcSet:v||void 0,sizes:w||void 0,alt:"",className:"max-h-[180px] max-w-full object-contain"}):r.createElement(J,{name:"image",size:36,className:"opacity-20 text-muted-foreground"}),P&&r.createElement("div",{className:"absolute right-2 top-2 flex gap-1 opacity-0 transition-opacity group-hover:opacity-100"},r.createElement("a",{href:P,target:"_blank",rel:"noopener noreferrer",title:"Open original",className:"flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80"},r.createElement(J,{name:"external-link",size:13})),r.createElement("button",{type:"button",title:"Crop",disabled:s,onClick:()=>M(!0),className:"flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80 disabled:cursor-not-allowed disabled:opacity-40"},r.createElement(J,{name:"crop",size:13}))),I&&r.createElement("div",{className:"absolute inset-0 flex items-center justify-center bg-background/70 backdrop-blur-sm"},r.createElement("div",{className:"flex items-center gap-2 text-xs text-muted-foreground"},r.createElement(J,{name:"loader-circle",size:14,className:"animate-spin"}),"Generating variants…"))),r.createElement("div",{className:"flex flex-col gap-3 p-3"},r.createElement("div",{className:"flex flex-col gap-1"},r.createElement("label",{className:"text-xs font-medium text-muted-foreground"},"Image URL ",r.createElement("span",{className:"font-normal opacity-60"},"(path or https://…)")),r.createElement("input",{type:"url",value:P,disabled:s,onChange:H=>R({src:H.target.value,srcset:"",sizes:""}),placeholder:"https://example.com/image.jpg",className:"h-8 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring disabled:opacity-50"})),r.createElement("div",{className:"flex flex-col gap-1"},r.createElement("label",{className:"text-xs font-medium text-muted-foreground"},"Alt text"," ",r.createElement("span",{className:"font-normal opacity-60"},"(accessibility & SEO)"),o&&r.createElement("span",{className:"ml-1 text-destructive"},"*")),r.createElement("input",{ref:k,type:"text",value:D,disabled:s,onChange:H=>R({alt:H.target.value}),placeholder:"E.g. Product hero shot",className:S("h-8 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring disabled:opacity-50",z&&"border-destructive")})),v&&r.createElement(Km,{srcset:v}))),x&&r.createElement(tt,{message:x}),!x&&l&&r.createElement("p",{className:St},l),g,C&&P&&r.createElement(Mn,{src:P,mode:"modal",title:`Crop — ${Hn(P)}`,onClose:()=>M(!1),onSave:j}))},Gm={"1:1":1,"3:4":3/4,"4:3":4/3},Ht=48,Vn=(e,t)=>{const n=e.split(".").pop()??"",a=e.replace(/\.[^/.]+$/,""),o=`_${t.replace(":","x")}`;return`${a}${o}.${n}`},Kn={nw:"nwse-resize",n:"ns-resize",ne:"nesw-resize",e:"ew-resize",se:"nwse-resize",s:"ns-resize",sw:"nesw-resize",w:"ew-resize"},qm=()=>{const[e,t]=r.useState(()=>document.documentElement.classList.contains("dark"));return r.useEffect(()=>{const n=new MutationObserver(()=>t(document.documentElement.classList.contains("dark")));return n.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>n.disconnect()},[]),e},io=r.forwardRef(({img:e,title:t,scales:n},a)=>{const o=n??Gm,s=Te("crop"),l=r.useRef(null),i=r.useRef(null),c=()=>{const F=Object.keys(e.variants??{}).filter(B=>B in o);return F.length?F:Object.keys(o)},d=qm(),[m,u]=r.useState(c),[f,p]=r.useState(()=>c()[0]??Object.keys(o)[0]),[h,g]=r.useState(e.fileName),[b,y]=r.useState(e.variants??{}),[E,x]=r.useState(null),[N,P]=r.useState(!1),[D,v]=r.useState(!1),w=r.useRef(b),A=r.useRef(E),I=r.useRef(f),T=r.useRef(m),C=r.useRef(h);r.useEffect(()=>{w.current=b},[b]),r.useEffect(()=>{A.current=E},[E]),r.useEffect(()=>{I.current=f},[f]),r.useEffect(()=>{T.current=m},[m]),r.useEffect(()=>{C.current=h},[h]),r.useEffect(()=>{y(F=>{const B={};for(const[_,V]of Object.entries(F))B[_]={...V,fileName:Vn(h,_)};return B})},[h]);const M=r.useRef(null),k=r.useRef(null);r.useEffect(()=>{const F=_=>{const V=M.current,K=k.current;if(!V&&!K)return;const ee=I.current,se=A.current,le=w.current[ee];if(!se||!le)return;const ae=o[ee]??1;if(V){const ve=Math.max(0,Math.min(_.clientX-V.offsetX,se.width-le.width)),he=Math.max(0,Math.min(_.clientY-V.offsetY,se.height-le.height));y(de=>({...de,[ee]:{...de[ee],left:ve,top:he}}))}if(K){const{handle:ve,sx:he,sy:de,sl:ne,st:pe,sw:X,sh:fe}=K,Ae=_.clientX-he,Pe=_.clientY-de;let oe=ne,L=pe,Z=X,Q=fe;if(ve==="n"||ve==="s"){const ye=ve==="n"?-Pe:Pe;Q=Math.max(Ht,fe+ye),Z=Q*ae,ve==="n"&&(L=pe+fe-Q),oe=ne+(X-Z)/2}else if(ve==="e"||ve==="w"){const ye=ve==="w"?-Ae:Ae;Z=Math.max(Ht,X+ye),Q=Z/ae,ve==="w"&&(oe=ne+X-Z),L=pe+(fe-Q)/2}else{const ye=ve.includes("e")?Ae:-Ae,_e=ve.includes("s")?Pe:-Pe,Ie=Math.abs(ye)>Math.abs(_e)?ye:_e;Z=Math.max(Ht,X+Ie),Q=Z/ae,ve.includes("n")&&(L=pe+fe-Q),ve.includes("w")&&(oe=ne+X-Z)}oe=Math.max(0,oe),L=Math.max(0,L);const ce=se.width-oe,be=se.height-L;if(Z>ce||Q>be){const ye=Math.min(ce/Z,be/Q);Z*=ye,Q*=ye}Z<Ht&&(Z=Ht,Q=Z/ae),Q<Ht&&(Q=Ht,Z=Q*ae),y(ye=>({...ye,[ee]:{...ye[ee],left:oe,top:L,width:Z,height:Q}}))}},B=()=>{M.current=null,k.current=null,v(!1)};return window.addEventListener("mousemove",F),window.addEventListener("mouseup",B),()=>{window.removeEventListener("mousemove",F),window.removeEventListener("mouseup",B)}},[]),r.useLayoutEffect(()=>{if(!N)return;const F=i.current;if(!F)return;const{width:B,height:_}=F.getBoundingClientRect();if(!(!B||!_)&&(x(V=>V&&V.width===B&&V.height===_?V:{width:B,height:_}),!w.current[f])){const V=o[f]??1,K=Math.min(B*.78,_*V*.78),ee=K/V;y(se=>({...se,[f]:{fileName:Vn(C.current,f),type:e.type,scale:f,left:(B-K)/2,top:(_-ee)/2,width:K,height:ee,base64:""}}))}},[f,N]),r.useImperativeHandle(a,()=>({handleSave:()=>{const F=l.current,B=F==null?void 0:F.getContext("2d"),_=i.current;if(!F||!B||!_)return{fileName:C.current,variants:{}};const V=A.current,K={};for(const ee of T.current){const se=w.current[ee];if(!se||!V)continue;const le=_.naturalWidth/V.width,ae=_.naturalHeight/V.height,{top:ve,left:he,width:de,height:ne}=se;F.width=Math.round(de*le),F.height=Math.round(ne*ae),B.clearRect(0,0,F.width,F.height),B.drawImage(_,he*le,ve*ae,de*le,ne*ae,0,0,F.width,F.height),K[ee]={...se,base64:F.toDataURL(se.type)}}return{fileName:C.current,variants:K}}}));const R=F=>{m.includes(F)||u(B=>[...B,F]),p(F)},$=(F,B)=>{B.stopPropagation();const _=m.filter(V=>V!==F);if(u(_),F===f){const V=_.filter(K=>K in o);p(V[0]??Object.keys(o).find(K=>K!==F)??Object.keys(o)[0])}},j=F=>{F.preventDefault(),F.stopPropagation();const B=w.current[f];B&&(M.current={offsetX:F.clientX-B.left,offsetY:F.clientY-B.top},v(!0))},z=(F,B)=>{F.preventDefault(),F.stopPropagation();const _=w.current[f];_&&(k.current={handle:B,sx:F.clientX,sy:F.clientY,sl:_.left,st:_.top,sw:_.width,sh:_.height},v(!0))},H=m.includes(f),q=b[f];return r.createElement("div",{className:["flex gap-4 h-full min-h-0",t?"flex-col":""].join(" ")},t&&r.createElement("h3",{className:"text-base font-semibold shrink-0"},t),r.createElement("div",{className:"flex gap-4 flex-1 min-h-0"},r.createElement("div",{className:"flex-1 min-w-0 min-h-0 flex items-center justify-center rounded-xl overflow-hidden",style:{cursor:D?"grabbing":void 0,...d?{backgroundColor:"#1a1a1a",backgroundImage:"linear-gradient(45deg,#272727 25%,transparent 25%),linear-gradient(-45deg,#272727 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#272727 75%),linear-gradient(-45deg,transparent 75%,#272727 75%)"}:{backgroundColor:"#f0f0f0",backgroundImage:"linear-gradient(45deg,#dcdcdc 25%,transparent 25%),linear-gradient(-45deg,#dcdcdc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#dcdcdc 75%),linear-gradient(-45deg,transparent 75%,#dcdcdc 75%)"},backgroundSize:"20px 20px",backgroundPosition:"0 0,0 10px,10px -10px,-10px 0"}},H?r.createElement("div",{className:"relative select-none",style:{display:"inline-block",lineHeight:0}},r.createElement("img",{src:tr(e),alt:"Crop target",ref:i,style:{maxHeight:"calc(100dvh - 200px)",maxWidth:"100%",display:"block"},draggable:!1,onLoad:()=>P(!0)}),q&&E&&r.createElement(Jm,{crop:q,onMoveStart:j,onResizeStart:z})):r.createElement("div",{className:"flex flex-col items-center gap-3 text-zinc-500 select-none"},r.createElement("svg",{className:"w-10 h-10 opacity-30",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M4 8V6a2 2 0 012-2h2M4 16v2a2 2 0 002 2h2M16 4h2a2 2 0 012 2v2M16 20h2a2 2 0 002-2v-2M9 12l2 2 4-4"})),r.createElement("p",{className:"text-sm"},s.enableCrop.split("{scale}")[0],r.createElement("strong",{className:"text-zinc-300"},f),s.enableCrop.split("{scale}")[1]))),r.createElement("div",{className:"w-52 shrink-0 flex flex-col gap-4 min-h-0"},r.createElement("div",null,r.createElement(Si,{value:h,onChange:g,label:s.fileName})),r.createElement("div",{className:"flex-1 min-h-0 flex flex-col gap-2 overflow-y-auto"},r.createElement("p",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide shrink-0"},s.variants),Object.keys(o).map(F=>r.createElement(Wm,{key:F,scale:F,ratio:o[F],img:e,crop:b[F],bounds:E,enabled:m.includes(F),active:F===f,onClick:()=>R(F),onRemove:B=>$(F,B)}))),H&&q&&r.createElement("div",{className:"shrink-0 pt-3 border-t border-border"},r.createElement("p",{className:"text-xs font-medium text-muted-foreground mb-1"},s.outputFile),r.createElement("p",{className:"text-xs text-foreground/70 truncate tabular-nums",title:q.fileName},q.fileName??Vn(h,f))))),r.createElement("canvas",{ref:l,className:"hidden"}))});io.displayName="CropImage";const Gn=120,ss=88,Ym=e=>{let t=ss*e,n=ss;return t>Gn&&(t=Gn,n=Gn/e),{w:Math.round(t),h:Math.round(n)}},Wm=({scale:e,ratio:t,img:n,crop:a,bounds:o,enabled:s,active:l,onClick:i,onRemove:c})=>{const d=Te("crop"),{w:m,h:u}=Ym(t),f=(()=>{if(!a||!o||!a.width)return{background:"hsl(var(--muted))"};const p=m/a.width;return{backgroundImage:`url(${tr(n)})`,backgroundSize:`${Math.round(o.width*p)}px ${Math.round(o.height*p)}px`,backgroundPosition:`-${Math.round(a.left*p)}px -${Math.round(a.top*p)}px`,backgroundRepeat:"no-repeat"}})();return r.createElement("button",{type:"button",onClick:i,className:["relative group flex flex-col rounded-lg border-2 transition-all overflow-hidden w-full text-left",l?"border-primary bg-primary/5 shadow-sm":s?"border-border hover:border-primary/40 bg-card":"border-dashed border-muted-foreground/25 bg-transparent hover:border-muted-foreground/50"].join(" ")},r.createElement("div",{className:"flex items-center justify-center py-3 px-3 bg-muted/20"},s&&a&&o?r.createElement("div",{className:"rounded shadow-sm overflow-hidden shrink-0",style:{width:m,height:u,...f}}):r.createElement("div",{className:"rounded border border-dashed border-muted-foreground/30 flex items-center justify-center shrink-0",style:{width:m,height:u}},r.createElement("svg",{className:"w-5 h-5 text-muted-foreground/40",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M12 4v16m8-8H4"})))),r.createElement("div",{className:"flex items-center justify-between px-2.5 py-1.5 border-t border-border/60"},r.createElement("span",{className:["text-xs font-semibold tabular-nums",l?"text-primary":"text-foreground"].join(" ")},e),l&&s&&r.createElement("span",{className:"text-xs text-primary/60 font-normal"},d.active),s&&r.createElement("span",{role:"button",tabIndex:-1,onClick:c,title:Be(d.removeVariant,{scale:e}),className:"ml-auto w-5 h-5 flex items-center justify-center rounded-full text-muted-foreground hover:bg-destructive/10 hover:text-destructive transition-colors text-base leading-none"},"×")))},Jm=({crop:e,onMoveStart:t,onResizeStart:n})=>{const{top:a,left:o,width:s,height:l}=e;return r.createElement("div",{className:"absolute inset-0 pointer-events-none"},r.createElement("div",{className:"absolute",style:{top:0,left:0,right:0,height:a,background:"rgba(0,0,0,0.55)"}}),r.createElement("div",{className:"absolute",style:{top:a+l,left:0,right:0,bottom:0,background:"rgba(0,0,0,0.55)"}}),r.createElement("div",{className:"absolute",style:{top:a,left:0,width:o,height:l,background:"rgba(0,0,0,0.55)"}}),r.createElement("div",{className:"absolute",style:{top:a,left:o+s,right:0,height:l,background:"rgba(0,0,0,0.55)"}}),r.createElement("div",{onMouseDown:t,className:"absolute pointer-events-auto cursor-grab active:cursor-grabbing",style:{top:a,left:o,width:s,height:l,border:"1.5px solid rgba(255,255,255,0.92)",boxSizing:"border-box"}},r.createElement("div",{className:"absolute inset-0 pointer-events-none",style:{backgroundImage:"linear-gradient(to right, rgba(255,255,255,0.18) 1px, transparent 1px),linear-gradient(to bottom, rgba(255,255,255,0.18) 1px, transparent 1px)",backgroundSize:"33.33% 33.33%"}}),["nw","ne","sw","se"].map(i=>r.createElement("div",{key:i,onMouseDown:c=>{c.stopPropagation(),n(c,i)},className:"absolute pointer-events-auto",style:{cursor:Kn[i],width:22,height:22,display:"flex",alignItems:i.includes("n")?"flex-start":"flex-end",justifyContent:i.includes("w")?"flex-start":"flex-end",...i.includes("n")?{top:-2}:{bottom:-2},...i.includes("w")?{left:-2}:{right:-2}}},r.createElement("span",{style:{display:"block",width:10,height:10,background:"#fff",borderRadius:2,boxShadow:"0 1px 3px rgba(0,0,0,0.5)"}}))),["n","s"].map(i=>r.createElement("div",{key:i,onMouseDown:c=>{c.stopPropagation(),n(c,i)},className:"absolute pointer-events-auto",style:{cursor:Kn[i],...i==="n"?{top:-4}:{bottom:-4},left:"50%",transform:"translateX(-50%)",width:24,height:12,display:"flex",alignItems:"center",justifyContent:"center"}},r.createElement("span",{style:{display:"block",width:20,height:4,background:"#fff",borderRadius:2,boxShadow:"0 1px 3px rgba(0,0,0,0.5)"}}))),["e","w"].map(i=>r.createElement("div",{key:i,onMouseDown:c=>{c.stopPropagation(),n(c,i)},className:"absolute pointer-events-auto",style:{cursor:Kn[i],...i==="w"?{left:-4}:{right:-4},top:"50%",transform:"translateY(-50%)",width:12,height:24,display:"flex",alignItems:"center",justifyContent:"center"}},r.createElement("span",{style:{display:"block",width:4,height:20,background:"#fff",borderRadius:2,boxShadow:"0 1px 3px rgba(0,0,0,0.5)"}})))))},Si=({value:e,onChange:t,label:n,scale:a})=>{const o=(e==null?void 0:e.split(".").pop())??"",s=a?`_${a.replace(":","x")}`:void 0,l=i=>{const c=i.replace(/\.[^/.]+$/,"");return s&&c.endsWith(s)?c.slice(0,-s.length):c};return r.createElement("div",{className:"flex flex-col gap-1"},n&&r.createElement("label",{className:"text-xs font-medium text-muted-foreground"},n),r.createElement("div",{className:"flex items-center gap-1.5"},r.createElement("input",{type:"text",defaultValue:l(e||""),onBlur:i=>t(`${i.target.value.trim()}${s??""}.${o}`),className:"flex-1 h-8 min-w-0 rounded-md border border-input bg-background px-2.5 text-sm focus:outline-none focus:ring-1 focus:ring-ring"}),s&&r.createElement("span",{className:"text-xs text-muted-foreground shrink-0 tabular-nums"},s,".",o)))},Ai=Si,co=({onFilesChange:e,onFileReady:t,uploadPath:n,srcsetWidths:a,initialFiles:o,storageKey:s,storageProvider:l})=>{const[i,c]=r.useState(o??[]),d=l??In(s),m=r.useRef(null),u=r.useRef(e);u.current=e;const f=r.useRef(t);f.current=t;const p=r.useRef(new Set);r.useEffect(()=>{var E,x;(E=u.current)==null||E.call(u,i);for(const N of i)N.progress===100&&!p.current.has(N.key)&&(p.current.add(N.key),(x=f.current)==null||x.call(f,N))},[i]);const h=r.useCallback((E,x)=>{c(N=>N.map(P=>P.key===E?{...P,...x}:P))},[]),g=r.useCallback(E=>{c(x=>x.filter(N=>N.key!==E)),p.current.delete(E)},[]),b=r.useCallback(E=>{c(x=>{const N=[...x];return E.forEach(P=>{const D={key:P.name,fileName:P.name,size:P.size,type:P.type,progress:0,url:"",base64:"",variants:{}},v=N.findIndex(w=>w.key===P.name);v!==-1?N[v]=D:N.push(D)}),N}),E.forEach(x=>{const N=new FileReader;N.onprogress=P=>{P.lengthComputable&&h(x.name,{progress:Math.round(P.loaded/P.total*75)})},N.onloadend=async()=>{const P=Us(N.result),D=`data:${x.type};base64,${P}`;if(h(x.name,{base64:P,progress:80}),a!=null&&a.length)try{const{variants:v,naturalWidth:w}=await oo(D,a),A=d&&n?await so(v,d,n,x.name):v.map(k=>({url:k.localUrl,width:k.width})),I=x.name.split(".").pop()??"jpg",T=x.name.replace(/\.[^/.]+$/,""),C=d&&n?await d.upload(D,`${n}/${T}_${w}w.${I}`)??D:URL.createObjectURL(await fetch(D).then(k=>k.blob())),M=[...A,{url:C,width:w}];if(M.length>0){h(x.name,{url:C,srcset:lo(M),sizes:"(max-width: 640px) 100vw, 800px",progress:100});return}}catch{}else if(d&&n)try{const v=await d.upload(D,`${n}/${x.name}`);if(v){h(x.name,{url:v,progress:100});return}}catch{}h(x.name,{progress:100})},N.readAsArrayBuffer(x)}),m.current&&(m.current.value="")},[d,n,a,h]),y=r.useCallback(E=>{b(Array.from(E.target.files??[]))},[b]);return{files:i,setFiles:c,fileInputRef:m,updateFile:h,handleFiles:b,handleUpload:()=>{var E;return(E=m.current)==null?void 0:E.click()},handleUploadChange:y,handleRemove:g}},Pi=(e,t,n,a,o,s,l)=>{const{value:i,handleChange:c,formWrapClass:d}=Ve({name:e,onChange:t,wrapperClassName:n}),[m,u]=r.useState(null),f=co({initialFiles:Array.isArray(i)?i:[],onFilesChange:h=>c({target:{name:e,value:h}}),uploadPath:a,srcsetWidths:o,storageKey:s,storageProvider:l});return{...f,formWrapClass:d,currentFile:m,handleSave:h=>{m&&(f.updateFile(m.key,h),u(null))},handleEdit:h=>u(h),handleClose:()=>u(null)}},Xm=({name:e,fileInputRef:t,accept:n,onUpload:a,onChange:o,required:s=!1,multiple:l=!1,height:i,width:c,feedback:d})=>r.createElement(r.Fragment,null,r.createElement("button",{type:"button",onClick:a,className:"flex flex-col items-center justify-center rounded-lg border-2 border-dashed border-muted-foreground/25 bg-muted/30 text-muted-foreground/50 transition-all hover:border-primary/40 hover:bg-primary/5 hover:text-primary/60 cursor-pointer",style:{width:c,height:i}},r.createElement(J,{name:"upload",className:"w-8 h-8"}),d&&r.createElement("span",{className:"mt-1.5 max-w-full px-1.5 text-center text-[10px] font-medium leading-tight whitespace-pre-wrap"},d)),r.createElement("input",{name:e,type:"file",accept:n,ref:t,multiple:l,required:s,className:"hidden",onChange:o})),Ii=({title:e,file:t,type:n,onSave:a,onClose:o})=>{const[s,l]=r.useState(t.fileName),i=r.useRef(null),c=async()=>(a==null||a(i.current?i.current.handleSave():{fileName:s,variants:{}}),!0);return r.createElement(lr,{title:e,onSave:c,onClose:o,size:n==="img"?"fullscreen":void 0},n==="document"&&r.createElement(Ai,{value:s,onChange:l,label:"File name"}),n==="img"&&r.createElement(io,{ref:i,img:t}))},Mi=(e,t,n)=>e.length<t&&(n||e.length===0),qn=new Map,tr=(e,t="origin")=>{if(e.url)return e.url;if(e.base64){const n=`${e.fileName} ${t}`;return qn.has(n)||qn.set(n,Vs(e.base64,e.type)??ia),qn.get(n)??ia}return""},Ti=({name:e,onChange:t=void 0,label:n=void 0,required:a=!1,editable:o=!1,multiple:s=!1,max:l=100,accept:i=".pdf,.doc,.docx,.txt,.iso",uploadPath:c=void 0,storageKey:d=void 0,storageProvider:m=void 0,before:u=void 0,after:f=void 0,wrapperClassName:p=void 0,className:h=void 0})=>{const{files:g,currentFile:b,fileInputRef:y,formWrapClass:E,handleFiles:x,handleUploadChange:N,handleUpload:P,handleRemove:D,handleSave:v,handleEdit:w,handleClose:A}=Pi(e,t,p,c,void 0,d,m),I=dt(e,{required:a,label:n}),T=Te("upload"),[C,M]=r.useState(!1),k=Mi(g,l,s),R=z=>{z.preventDefault(),k&&M(!0)},$=()=>M(!1),j=z=>{z.preventDefault(),M(!1),k&&x(s?Array.from(z.dataTransfer.files):[z.dataTransfer.files[0]])};return r.createElement(Ne,{className:E},u,r.createElement("div",{className:h},n&&r.createElement(rt,{label:n,required:a}),k&&g.length===0&&r.createElement("button",{type:"button",onClick:P,onDragOver:R,onDragLeave:$,onDrop:j,className:["w-full flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed py-8 px-4 transition-colors cursor-pointer",C?"border-primary/60 bg-primary/8 text-primary":"border-muted-foreground/25 bg-muted/30 text-muted-foreground hover:border-primary/40 hover:bg-primary/5 hover:text-primary/70"].join(" ")},r.createElement(J,{name:"upload",className:"w-8 h-8"}),r.createElement("span",{className:"text-sm font-medium"},C?T.dropToUpload:T.clickOrDrag),r.createElement("span",{className:"text-xs opacity-60"},i)),g.length>0&&r.createElement("div",{className:"rounded-lg border border-border overflow-hidden"},r.createElement("table",{className:"w-full text-sm"},r.createElement("tbody",null,g.map(z=>r.createElement("tr",{key:z.key,className:`border-b border-border last:border-0 ${o?"cursor-pointer hover:bg-muted/40":""}`,onClick:()=>o&&w(z)},r.createElement("td",{className:"px-3 py-2.5"},r.createElement("div",{className:"flex items-center gap-2"},r.createElement(J,{name:"file",className:"w-4 h-4 shrink-0 text-muted-foreground"}),z.progress===100?r.createElement("a",{href:tr(z),target:"_blank",rel:"noopener noreferrer",className:"hover:underline truncate max-w-xs",onClick:H=>H.stopPropagation()},z.fileName):r.createElement("span",{className:"truncate max-w-xs text-muted-foreground"},z.fileName))),r.createElement("td",{className:"px-3 py-2.5 text-muted-foreground text-right whitespace-nowrap w-24"},z.progress===100?(z.size/1024).toFixed(2)+" KB":r.createElement(Za,{max:100,min:0,value:z.progress,appearance:"bar"})),r.createElement("td",{className:"px-3 py-2.5 w-10 text-right"},r.createElement("button",{type:"button",onClick:H=>{H.stopPropagation(),D(z.key)},className:"flex items-center justify-center w-6 h-6 rounded-full text-muted-foreground hover:bg-red-50 hover:text-red-500 transition-colors ml-auto"},r.createElement(J,{name:"x",className:"w-3.5 h-3.5"}))))))),k&&r.createElement("div",{className:`px-3 py-2 border-t border-border bg-muted/20 ${C?"bg-primary/5":""}`,onDragOver:R,onDragLeave:$,onDrop:j},r.createElement("button",{type:"button",onClick:P,className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-primary transition-colors"},r.createElement(J,{name:"upload",className:"w-3.5 h-3.5"}),T.uploadMore))),r.createElement("input",{name:e,type:"file",accept:i,ref:y,multiple:s,required:a,className:"hidden",onChange:N}),I&&r.createElement(tt,{message:I})),o&&b&&r.createElement(Ii,{title:T.editFileName,file:b,type:"document",onSave:v,onClose:A}),f)},Di=({name:e,onChange:t=void 0,label:n=void 0,feedback:a=void 0,editable:o=!1,multiple:s=!1,accept:l="image/*",required:i=!1,max:c=100,previewHeight:d=100,previewWidth:m=100,uploadPath:u=void 0,srcsetWidths:f=void 0,storageKey:p=void 0,storageProvider:h=void 0,before:g=void 0,after:b=void 0,wrapperClassName:y=void 0,className:E=void 0})=>{const{files:x,currentFile:N,fileInputRef:P,formWrapClass:D,handleUploadChange:v,handleUpload:w,handleRemove:A,handleSave:I,handleEdit:T,handleClose:C}=Pi(e,t,y,u,f,p,h),M=dt(e,{required:i,label:n}),k=Te("upload"),[R,$]=r.useState(null),[j,z]=r.useState(new Set),H=(F,B)=>{const _=F.currentTarget,V=_.naturalWidth>0&&_.naturalHeight>0&&(_.naturalWidth<m||_.naturalHeight<d);z(K=>{const ee=new Set(K);return V?ee.add(B):ee.delete(B),ee})},q=({scales:F})=>{if(!F)return;const B=Object.keys(F);return B.length===0?null:B.map(_=>r.createElement(jr,{key:_},r.createElement("a",{href:tr(F[_],_),className:"text-white",target:"_blank",rel:"noopener noreferrer"},_)))};return r.createElement(Ne,{className:D},g,r.createElement(Ne,{className:E},n&&r.createElement(rt,{label:n,required:i}),r.createElement("div",{className:"flex gap-2 flex-wrap"},x.map((F,B)=>r.createElement("div",{key:B,className:"relative overflow-hidden rounded-lg border border-border",style:{width:m,height:d},onMouseEnter:()=>$(B),onMouseLeave:()=>$(null)},F.progress===100?r.createElement(r.Fragment,null,j.has(F.key)&&r.createElement(r.Fragment,null,r.createElement("div",{className:"absolute inset-0 dark:hidden",style:{backgroundColor:"#f0f0f0",backgroundImage:"linear-gradient(45deg,#dcdcdc 25%,transparent 25%),linear-gradient(-45deg,#dcdcdc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#dcdcdc 75%),linear-gradient(-45deg,transparent 75%,#dcdcdc 75%)",backgroundSize:"10px 10px",backgroundPosition:"0 0,0 5px,5px -5px,-5px 0"}}),r.createElement("div",{className:"absolute inset-0 hidden dark:block",style:{backgroundColor:"#1a1a1a",backgroundImage:"linear-gradient(45deg,#272727 25%,transparent 25%),linear-gradient(-45deg,#272727 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#272727 75%),linear-gradient(-45deg,transparent 75%,#272727 75%)",backgroundSize:"10px 10px",backgroundPosition:"0 0,0 5px,5px -5px,-5px 0"}})),r.createElement("img",{src:tr(F),alt:`preview-${B}`,className:`absolute inset-0 w-full h-full ${j.has(F.key)?"object-contain p-1":"object-cover"}`,onLoad:_=>H(_,F.key)}),r.createElement("div",{className:"absolute inset-0 bg-black/55 backdrop-blur-[1px] flex flex-col items-center justify-end pb-2 gap-1 transition-opacity",style:{display:R===B?"flex":"none"}},r.createElement("div",{className:"flex items-center gap-1.5"},r.createElement("a",{href:tr(F),target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center w-7 h-7 rounded-full bg-white/20 hover:bg-white/35 text-white transition-colors"},r.createElement(J,{name:"eye",className:"w-4 h-4"})),o&&r.createElement("button",{type:"button",onClick:()=>T(F),className:"flex items-center justify-center w-7 h-7 rounded-full bg-white/20 hover:bg-white/35 text-white transition-colors"},r.createElement(J,{name:"pencil",className:"w-4 h-4"})),r.createElement("button",{type:"button",onClick:_=>{_.preventDefault(),_.stopPropagation(),A(F.key)},className:"flex items-center justify-center w-7 h-7 rounded-full bg-red-500/70 hover:bg-red-500/90 text-white transition-colors"},r.createElement(J,{name:"x",className:"w-4 h-4"}))),o&&F.variants&&Object.keys(F.variants).length>0&&r.createElement("div",{className:"flex flex-wrap gap-1 px-1"},r.createElement(q,{scales:F.variants})))):r.createElement(Za,{max:100,min:0,value:F.progress,appearance:"circle"}))),Mi(x,c,s)&&r.createElement(Xm,{name:e,fileInputRef:P,accept:l,onUpload:w,onChange:v,required:i,multiple:s,height:d,width:m,feedback:a})),M&&r.createElement(tt,{message:M})),o&&N&&r.createElement(Ii,{title:k.editorImage,file:N,type:"img",onSave:I,onClose:C}),b)},Ri={US:"United States",CN:"中国",IT:"Italia",FR:"France",DE:"Deutschland",ES:"España",PT:"Portugal",RU:"Россия",JP:"日本"},_i={it:"Italiano",en:"English",fr:"Français",de:"Deutsch",es:"Español",pt:"Português",ru:"Русский",ja:"日本語",ko:"한국어"},da=(e=!1)=>{const t=typeof localStorage<"u"?localStorage.getItem("user.country"):null,n=typeof navigator<"u"?navigator.language.split("-")[1]:null,a=t||n||"US";return e?a:Ri[a]},Fi=(e=!1)=>{const t=typeof localStorage<"u"?localStorage.getItem("user.lang"):null,n=typeof navigator<"u"?navigator.language.split("-")[0]:null,a=t||n||"en";return e?a:_i[a]},Zm="Please ignore all previous instructions.",Qm="Do not repeat yourself. Do not self reference. Do not explain what you are doing.",ef="default",tf="Informative",rf="Argumentative",nf=["Authoritative","Caring","Casual","Cheerful","Coarse","Conservative","Conversational","Creative","Dry","Edgy","Enthusiastic","Expository","Formal","Frank","Friendly","Fun","Funny","Humorous","Informative","Irreverent","Journalistic","Matter of fact","Nostalgic","Objective","Passionate","Poetic","Playful","Professional","Provocative","Quirky","Respectful","Romantic","Sarcastic","Serious","Smart","Snarky","Subjective","Sympathetic","Trendy","Trustworthy","Unapologetic","Upbeat","Witty"],af=["Academic","Analytical","Argumentative","Conversational","Creative","Critical","Descriptive","Epigrammatic","Epistolary","Expository","Informative","Instructive","Journalistic","Metaphorical","Narrative","Persuasive","Poetic","Satirical","Technical"],ls={default:"You are a highly skilled and versatile AI assistant who can adapt to any task or context. You write in fluent {language}, using a {voice} tone of voice and a {style} writing style. You provide clear, concise, and well-structured responses, ensuring both accuracy and creativity according to the user's needs.",copywriter:"You are an expert copywriter who writes catchy text in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",seo_expert:"You are an experienced SEO specialist who writes optimized, keyword-rich content in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",storyteller:"You are a talented storyteller who crafts engaging narratives in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",translator:"You are a professional translator who accurately translates content into {language}, maintaining meaning, nuance, and cultural relevance. You have a {voice} tone of voice. You have a {style} writing style.",marketing_strategist:"You are a skilled marketing strategist who creates persuasive campaigns in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",teacher:"You are a knowledgeable teacher who explains concepts clearly and simply in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",technical_writer:"You are a precise and detail-oriented technical writer who produces clear documentation in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",interviewer:"You are a skilled interviewer who formulates relevant and engaging questions in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",product_describer:"You are an e-commerce product description specialist who writes compelling, benefit-focused descriptions in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",social_media_manager:"You are a creative social media manager who writes engaging, platform-specific posts in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",ux_writer:"You are a UX writer who creates clear, concise, and user-friendly interface text in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",press_officer:"You are an experienced press officer who writes impactful press releases in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",legal_drafter:"You are a legal expert who drafts precise and compliant legal texts in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",recruiter:"You are a professional recruiter who writes compelling job descriptions and outreach messages in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",news_reporter:"You are a news reporter who writes objective and concise news articles in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",search_intent_analyst:"You are a keyword research expert who analyzes search intent from given keywords and writes in fluent {language}.",keyword_generator:"You are a keyword research expert who generates related keywords in fluent {language}.",long_tail_keyword_generator:"You are a keyword research expert who generates long-tail keywords in fluent {language}.",seo_content_planner:"You are a market research expert and SEO strategist who develops a full SEO content plan in fluent {language}.",blog_title_specialist:"You are an expert copywriter who writes catchy blog after titles in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",blog_description_specialist:"You are an expert copywriter who writes compelling blog after descriptions in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",blog_outline_specialist:"You are an expert copywriter who creates structured content outlines in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",blog_writer_from_outline:"You are an expert copywriter who writes complete blog posts from outlines in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",blog_writer_from_topic:"You are an expert copywriter who writes complete blog posts from topics in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",blog_intro_specialist:"You are an expert copywriter who writes engaging introductions using known copywriting frameworks in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",paragraph_writer:"You are an expert copywriter who writes single, impactful paragraphs in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",dictionary_writer:"You are a copywriter who writes concise and clear definitions in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.",creative_free_writer:"You are an expert copywriter who writes any kind of catchy text in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style."};let ct=class{static getRoles(){return Object.keys(ls)}static getLangs(){return Object.values(_i)}static getCountries(){return Object.values(Ri)}static getVoices(){return nf}static getStyles(){return af}static defaults(){return{role:ef,language:Fi(),country:da(),voice:localStorage.getItem("prompt.voice")||tf,style:localStorage.getItem("prompt.style")||rf}}static parseRole(t,n={}){return Ue.parse({...this.defaults(),...n},ls[t??this.defaults().role])}static parsePrompt(t,n={}){return Ue.parse({...this.defaults(),...n},t)}};const uo=(e,t)=>`${e}/${t}`,Dt=e=>{if(!e)return null;const t=e.indexOf("/");return t<=0||t===e.length-1?null:{provider:e.slice(0,t),model:e.slice(t+1)}},mo=r.createContext(null),Oi=({registry:e,defaultKey:t,children:n})=>{const a=r.useMemo(()=>({registry:e,defaultKey:t}),[e,t]);return r.createElement(mo.Provider,{value:a},n)},fo=e=>{const t=r.useContext(mo);if(!t)return null;const n=e??t.defaultKey;return t.registry[n]??null},Tn=()=>r.useContext(mo),of="x-llmnative-proxy",sf="/api/proxy",lf=e=>{if(!e||e.startsWith("/"))return!1;try{const t=new URL(e);if(typeof window<"u"){const n=new URL(window.location.href);if(t.origin===n.origin||["localhost","127.0.0.1"].includes(t.hostname)&&["localhost","127.0.0.1"].includes(n.hostname))return!1}return!0}catch{return!1}};let Rt=null;const $i=e=>{Rt=e??null};Je(e=>{$i(e.proxy)});const et=(e,t)=>{var u;if(!(Rt!=null&&Rt.enabled))return globalThis.fetch(e,t);const n=typeof e=="string"?e:e instanceof URL?e.toString():e.url;if(!lf(n))return globalThis.fetch(e,t);const a=((u=Rt.route)==null?void 0:u.trim())||sf,o=a.includes("?")?"&":"?",s=`${a}${o}url=${encodeURIComponent(n)}`,l=e instanceof Request?e.headers:t==null?void 0:t.headers,i=new Headers(l);i.set(of,"1");const c=(e instanceof Request?e.method:(t==null?void 0:t.method)??"GET").toUpperCase(),m=!["GET","HEAD"].includes(c)?(t==null?void 0:t.body)??(e instanceof Request?e.body:void 0):void 0;return globalThis.fetch(s,{method:c,headers:i,body:m,...m instanceof ReadableStream?{duplex:"half"}:{},signal:(t==null?void 0:t.signal)??(e instanceof Request?e.signal:void 0)})},cf=()=>et,Li=()=>!!(Rt!=null&&Rt.enabled),ji="ai.models.",df=1e3*60*60*24,bn=e=>{if(e instanceof Error)return e.message;if(e!==null&&typeof e=="object"){const t=e;if(t.error&&typeof t.error=="object"){const n=t.error;if(typeof n.message=="string")return n.message;if(typeof n.type=="string")return n.type}if(typeof t.error=="string")return t.error;if(typeof t.message=="string")return t.message;if(typeof t.detail=="string")return t.detail;if(typeof t.status=="number")return`HTTP ${t.status}`;try{return JSON.stringify(t)}catch{}}return String(e)},Bi=e=>{const t=Li()?"The proxy is enabled but the request still failed - check that the proxy route is reachable.":"No proxy is enabled. Cross-origin AI requests are blocked by CORS in the browser. Set VITE_PROXY_ENABLED=true and VITE_PROXY_PROVIDER=viteDevProxy to route requests server-side.";return new Error(`${e} request failed (CORS). ${t}`)},po=e=>typeof e=="string"?e:Array.isArray(e)&&e.map(n=>typeof n=="string"?n:n&&typeof n=="object"&&"text"in n&&typeof n.text=="string"?n.text:"").filter(Boolean).join(`
|
|
10
|
-
`)
|
|
11
|
-
`)
|
|
12
|
-
`).length-1,u=document.createElement("span");u.style.all="initial";const f=["fontFamily","fontSize","fontWeight","fontStyle","fontVariant","letterSpacing","wordSpacing","lineHeight","textAlign","textIndent","textRendering","textTransform","whiteSpace","wordBreak","wordWrap"];for(const h of f){const g=n.getPropertyValue(h);g&&u.style.setProperty(h,g)}u.style.whiteSpace="pre",u.style.position="absolute",u.style.visibility="hidden",u.style.pointerEvents="none",u.style.margin="0",u.style.padding="0",u.style.border="0",u.textContent=d,document.body.appendChild(u);const p=u.offsetWidth;return document.body.removeChild(u),{left:a.left+s+l+p-e.scrollLeft,top:a.top+(m+1)*o-e.scrollTop}},gf=(e,t)=>{const n=e.selectionStart??e.value.length,a=e.selectionEnd??n,o=e.value;return ma(o,n,t)?((i,c,d=c)=>{const m=ma(i,c,t)??{query:"",start:c,end:c};return{value:i,textBeforeCaret:i.slice(0,c),textAfterCaret:i.slice(d),trigger:t,query:m.query,triggerRange:{start:m.start,end:m.end},insert:u=>{const f=e.selectionStart??i.length,p=e.selectionEnd??f,h=i.slice(0,f)+u+i.slice(p);e.value=h,e.dispatchEvent(new Event("input",{bubbles:!0})),e.selectionStart=e.selectionEnd=f+u.length,e.focus()},replace:(u,f,p)=>{const h=i.slice(0,u)+p+i.slice(f);e.value=h,e.dispatchEvent(new Event("input",{bubbles:!0})),e.selectionStart=e.selectionEnd=u+p.length,e.focus()}}})(o,n,a):null},ut=r.forwardRef(({trigger:e,searchable:t=!1,controlled:n,onSelect:a,children:o,before:s,after:l,wrapperClassName:i,className:c},d)=>{const m=r.useId(),u=r.useRef(null),f=r.useRef(null),p=r.useRef(null),[h,g]=r.useState(0),[b,y]=r.useState({open:!1,anchorPosition:null,query:"",editorContext:null}),E=r.useMemo(()=>{const A=[];return r.Children.forEach(o,I=>{r.isValidElement(I)&&I.type===ua&&A.push({label:I.props.label,value:I.props.value,icon:I.props.icon})}),A},[o]),x=n?{open:n.open,anchorPosition:n.anchorPosition,query:n.query,editorContext:n.editorContext}:b,N=r.useMemo(()=>{if(!x.query)return E;const A=x.query.toLowerCase();return E.filter(I=>I.label.toLowerCase().includes(A)||I.value.toLowerCase().includes(A))},[E,x.query]),P=r.useCallback(()=>{if(n){n.onClose();return}y({open:!1,anchorPosition:null,query:"",editorContext:null})},[n]),D=r.useCallback(A=>{const I=x.editorContext;I&&(a?a(A,I):I.replace(I.triggerRange.start,I.triggerRange.end,A.value),P())},[P,a,x.editorContext]);r.useImperativeHandle(d,()=>({moveNext:()=>{!x.open||N.length===0||g(A=>(A+1)%N.length)},movePrev:()=>{!x.open||N.length===0||g(A=>(A-1+N.length)%N.length)},selectActive:()=>{!x.open||N.length===0||D(N[h]??N[0])},close:()=>{P()}}),[h,P,N,x.open,D]),r.useEffect(()=>{g(0)},[x.query]),r.useEffect(()=>{if(n)return;const A=u.current;if(!A)return;const I=Hi(A);if(I.length===0)return;p.current=Yn(A,p.current);const T=()=>{const j=Yn(A,p.current);if(!j)return;p.current=j;const z=j.selectionStart??j.value.length,H=ma(j.value,z,e);if(!H){y(B=>B.open?{open:!1,anchorPosition:null,query:"",editorContext:null}:B);return}const q=pf(j,H),F=gf(j,e);!q||!F||y({open:!0,anchorPosition:q,query:H.query,editorContext:F})},C=j=>{const z=j;if(b.open)switch(z.key){case"ArrowDown":if(N.length===0)return;z.preventDefault(),g(H=>(H+1)%N.length);return;case"ArrowUp":if(N.length===0)return;z.preventDefault(),g(H=>(H-1+N.length)%N.length);return;case"Enter":case"Tab":if(N.length===0)return;z.preventDefault(),D(N[h]??N[0]);return;case"Escape":z.preventDefault(),P();return;default:return}},M=j=>{const z=j;["ArrowDown","ArrowUp","Enter","Tab","Escape"].includes(z.key)||T()},k=()=>{T()},R=j=>{const z=go(j.target)?j.target:null;p.current=z&&ln(z)?z:Yn(A,p.current),T()},$=()=>{window.setTimeout(()=>{var q,F;const j=document.activeElement,z=(q=f.current)==null?void 0:q.contains(j),H=(F=u.current)==null?void 0:F.contains(j);!z&&!H&&P()},0)};return A.addEventListener("focusin",R),I.forEach(j=>{j.addEventListener("keydown",C),j.addEventListener("keyup",M),j.addEventListener("input",M),j.addEventListener("change",M),j.addEventListener("click",k),j.addEventListener("blur",$)}),()=>{A.removeEventListener("focusin",R),I.forEach(j=>{j.removeEventListener("keydown",C),j.removeEventListener("keyup",M),j.removeEventListener("input",M),j.removeEventListener("change",M),j.removeEventListener("click",k),j.removeEventListener("blur",$)})}},[h,P,n,N,b.open,D,e]),r.useEffect(()=>{if(!x.open)return;const A=I=>{var k,R;const T=I.target,C=(k=u.current)==null?void 0:k.contains(T),M=(R=f.current)==null?void 0:R.contains(T);!C&&!M&&P()};return document.addEventListener("pointerdown",A),()=>document.removeEventListener("pointerdown",A)},[P,x.open]);const{domChildren:v,renderedItems:w}=r.useMemo(()=>{const A=[],I=[];let T=-1;return r.Children.forEach(o,C=>{if(!r.isValidElement(C)){A.push(C);return}if(C.type===ua){const M=C.props;if(N.findIndex(R=>R.label===M.label&&R.value===M.value&&R.icon===M.icon)===-1)return;T+=1,I.push(r.cloneElement(C,{onSelect:D,active:T===h}));return}if(ff.has(C.type)){I.push(C);return}A.push(C)}),{domChildren:A,renderedItems:I}},[h,o,N,D]);return r.createElement(r.Fragment,null,r.createElement("div",{ref:u,className:S(c,i)},s,v,l),x.open&&x.anchorPosition&&N.length>0&&_t.createPortal(r.createElement("div",{ref:f,role:"menu",id:m,className:"fixed z-[200] min-w-44 overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md outline-none",style:{top:x.anchorPosition.top,left:x.anchorPosition.left,maxHeight:240}},w),document.body))});ut.displayName="ContextMenu";ut.Item=ua;ut.Heading=Vi;ut.Separator=Ki;const hf={"gpt-4o":128e3,"gpt-4o-mini":128e3,"gpt-4-turbo":128e3,"gpt-4":8192,"gpt-3.5-turbo":16385,"claude-opus-4-8":2e5,"claude-sonnet-4-6":2e5,"claude-haiku-4-5":2e5,"claude-3-5-sonnet-20241022":2e5,"claude-3-5-haiku-20241022":2e5,"gemini-2.0-flash":1048576,"gemini-1.5-pro":2097152,"gemini-1.5-flash":1048576,"deepseek-chat":64e3,"deepseek-coder":128e3,"mistral-large-latest":131072,"mistral-medium":32768,"mistral-small-latest":131072,"open-mistral-nemo":128e3,"llama-3.1-70b-instruct":131072,"llama-3.1-8b-instruct":131072},bf={"gpt-4o":[2.5,10],"gpt-4o-mini":[.15,.6],"gpt-4-turbo":[10,30],"gpt-4":[30,60],"gpt-3.5-turbo":[.5,1.5],"claude-opus-4-8":[15,75],"claude-sonnet-4-6":[3,15],"claude-haiku-4-5":[.8,4],"claude-3-5-sonnet-20241022":[3,15],"claude-3-5-haiku-20241022":[.8,4],"gemini-2.0-flash":[.1,.4],"gemini-1.5-pro":[1.25,5],"gemini-1.5-flash":[.075,.3],"deepseek-chat":[.14,.28],"mistral-large-latest":[2,6],"mistral-medium":[2.7,8.1],"mistral-small-latest":[.1,.3]},cs=e=>{const t=Dt(e);return(t==null?void 0:t.model)??e},vf=e=>new Promise((t,n)=>{if(typeof FileReader>"u"){n(new Error("FileReader is not available in this environment."));return}const a=new FileReader;a.onload=()=>t(String(a.result??"")),a.onerror=()=>n(a.error??new Error(`Failed to read file "${e.name}".`)),a.readAsDataURL(e)}),Xt={countTokens(e){return Math.ceil(e.length/4)},modelContextWindow(e){const t=cs(e);return hf[t]??null},contextPercent(e,t){const n=Xt.modelContextWindow(t);return!n||n<=0?0:Math.min(100,e/n*100)},estimateCost(e,t,n){const a=cs(n),o=bf[a];return o?(e*o[0]+t*o[1])/1e6:NaN},async fileToAttachment(e){const t=await vf(e),n=t.includes(",")?t.split(",")[1]:"";return{mimeType:e.type||"application/octet-stream",base64:n,name:e.name}}};var Gi=(e=>(e.EDIT="edit",e.RUN="run",e))(Gi||{});const ho="space-y-2",yf="flex items-center justify-between gap-3",wf="mb-0 min-w-0 text-sm font-medium leading-5 text-foreground",xf="ml-auto shrink-0",Wn=()=>[],Ef=(e,t="Prompt execution failed.")=>{if(e instanceof Error&&e.message)return e.message;if(typeof e=="string")return e;if(e&&typeof e=="object"){if("reason"in e&&typeof e.reason=="string")return e.reason;if("error"in e&&typeof e.error=="string")return e.error;if("message"in e&&typeof e.message=="string")return e.message}return t},bo=({htmlFor:e,label:t,required:n=!1,action:a})=>r.createElement("div",{className:yf},r.createElement(rt,{htmlFor:e,label:t,required:n,className:wf}),a?r.createElement("div",{className:xf},a):null);function Nf(){const e=Tn(),[t,n]=r.useState({modelOptions:Wn(),capabilitiesByProvider:{}});return r.useEffect(()=>{let a=!1;return(async()=>{if(!e||Object.keys(e.registry).length===0){a||n({modelOptions:Wn(),capabilitiesByProvider:{}});return}const s=await zi(e.registry);if(a)return;const l=s.models.map(i=>({label:i.label,value:i.id}));n({modelOptions:l.length>0?l:Wn(),capabilitiesByProvider:s.capabilitiesByProvider})})(),()=>{a=!0}},[e]),t}function qi(e,t=!1){const n=fo(),a=Tn(),o=Dt(e),s=Object.keys((a==null?void 0:a.registry)??{}),l=(o==null?void 0:o.provider)??(n==null?void 0:n.id)??(a!=null&&a.defaultKey&&s.includes(a.defaultKey)?a.defaultKey:null),i=l?(a==null?void 0:a.registry[l])??((n==null?void 0:n.id)===l?n:null):n??null;if(t)return{provider:i,providerId:l,configured:!0};if(s.length===0&&!i)return{provider:null,providerId:null,configured:!1,reason:void 0};const c=Ba(i,l?`AI provider "${l}"`:"AI provider");return{provider:i,providerId:l,configured:c.configured,reason:c.reason}}const Cf=({mode:e,availability:t,renderAIUnavailable:n})=>{const a=Te("prompt");if(t.configured)return null;const o=n==null?void 0:n({mode:e,providerId:t.providerId,reason:t.reason,configured:t.configured});return o!=null?r.createElement(r.Fragment,null,o):r.createElement(Vr,{variant:"warning",icon:"warning",className:"text-xs leading-5"},e==="edit"?t.reason||a.aiNotConfiguredEdit:t.reason||a.aiNotConfiguredRun)},Yi=({mode:e="edit",...t})=>{var s,l;const{value:n}=Ve({name:t.name}),a=n!=null&&typeof n=="object"&&!Array.isArray(n)?n:void 0,o=Wi((s=a==null?void 0:a.prompt)==null?void 0:s.enabled,(l=t.defaultValue)==null?void 0:l.enabled,a==null?void 0:a.prompt);return e==="edit"?r.createElement(Sf,{...t,value:a}):o?r.createElement(If,{...t,value:a}):r.createElement(Mf,{...t})},Wi=(e,t,n)=>typeof e=="string"?e==="on"||e==="true":typeof e=="boolean"?e:typeof e=="number"?e!==0:n&&typeof n=="object"?!1:!!t,kf=(e,t)=>e?t.toggleOnTitle:t.toggleOffTitle,Sf=({name:e,label:t=void 0,value:n=void 0,required:a=!1,onChange:o=void 0,defaultValue:s=void 0,minHeight:l=160,maxHeight:i=240,before:c=void 0,after:d=void 0,wrapperClassName:m=void 0,className:u=void 0,renderAIUnavailable:f=void 0})=>{var D,v,w;const{handleChange:p}=Ve({name:e}),h=we(),g=Te("prompt"),b=t||e,y=Wi((D=n==null?void 0:n.prompt)==null?void 0:D.enabled,s==null?void 0:s.enabled,n==null?void 0:n.prompt),E=kf(y,g),x=r.useId(),N=((w=(v=n==null?void 0:n.prompt)==null?void 0:v.model)==null?void 0:w.toString())||(s==null?void 0:s.model),P=qi(N);return r.createElement(Ne,{className:m||h.Prompt.wrapperClassName},r.createElement("div",{className:"flex items-center gap-2"},c&&r.createElement("div",{className:"shrink-0"},c),r.createElement("div",{className:`${ho} min-w-0 flex-1`},r.createElement(bo,{htmlFor:x,label:y?g.promptLabel+b:b,required:a,action:r.createElement(to,{name:e+".prompt.enabled",ariaLabel:E,title:E,defaultValue:y?"on":"",inheritWrapperClassName:!1,onChange:({event:A})=>{p({target:{name:e+".prompt.value",value:A.target.value&&(s==null?void 0:s.value)}})}})}),r.createElement(yr,{id:x,className:u||h.Prompt.className,name:e+(y?".prompt.value":".value"),defaultValue:y?s==null?void 0:s.value:void 0,onChange:o,required:a,inheritWrapperClassName:!1,wrapperClassName:"",minHeight:l,maxHeight:i}),r.createElement(Cf,{mode:"edit",availability:P,renderAIUnavailable:f})),d&&r.createElement("div",{className:"shrink-0"},d)))},ds="border-0 shadow-none rounded-none focus-visible:ring-0 resize-none",xt="h-7 w-7 cursor-pointer rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",Af="h-7 max-w-[140px] rounded-md px-2 text-xs gap-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground truncate",Pf=(e,t)=>({value:String((e==null?void 0:e.value)??(t==null?void 0:t.value)??""),role:String((e==null?void 0:e.role)??(t==null?void 0:t.role)??""),language:String((e==null?void 0:e.language)??(t==null?void 0:t.language)??""),voice:String((e==null?void 0:e.voice)??(t==null?void 0:t.voice)??""),style:String((e==null?void 0:e.style)??(t==null?void 0:t.style)??""),model:String((e==null?void 0:e.model)??(t==null?void 0:t.model)??""),temperature:typeof(e==null?void 0:e.temperature)=="number"?e.temperature:t==null?void 0:t.temperature}),If=({name:e,label:t,value:n,required:a,onChange:o,defaultValue:s,minHeight:l=120,maxHeight:i=160,before:c,after:d,wrapperClassName:m,className:u,onRunPrompt:f,renderAIUnavailable:p,variables:h,commands:g,commandsTrigger:b,attachments:y,actions:E,statusItems:x})=>{var ge,ue;const{handleChange:N,record:P}=Ve({name:e}),D=we(),v=Te("prompt"),w=t||e,[A,I]=r.useState(!1),[T,C]=r.useState((s==null?void 0:s.value)??""),[M,k]=r.useState(!1),[R,$]=r.useState([]),j=r.useRef(null),z=r.useCallback(U=>{$(Ee=>(URL.revokeObjectURL(Ee[U].objectUrl),Ee.filter((Me,$e)=>$e!==U)))},[]),[H,q]=r.useState(null),F=r.useRef(null),B=fo(),_=Tn(),V=ct.defaults(),K=typeof localStorage<"u"&&localStorage.getItem("prompt.model")||(B?uo(B.id,B.defaultModel):""),{modelOptions:ee,capabilitiesByProvider:se}=Nf(),le=r.useMemo(()=>Pf(n==null?void 0:n.prompt,s),[s,n==null?void 0:n.prompt]),ae=le.model||K,ve=(ge=Dt(ae))==null?void 0:ge.provider,he=ve?se[ve]:void 0,de=(he==null?void 0:he.supportsTemperature)??!0,ne=(he==null?void 0:he.supportsVision)??!!f,pe=(he==null?void 0:he.supportsDocuments)??!!f,X=r.useId(),fe=qi(ae,!!f),Ae=!fe.configured,Pe=Ae?fe.reason||v.aiNotConfiguredRun:void 0,[oe,L]=r.useState(null),Z=!oe&&!fe.configured?p==null?void 0:p({mode:"run",providerId:fe.providerId,reason:fe.reason,configured:fe.configured}):null,Q=r.useMemo(()=>{if(!T)return"";const U={...P,...h};return ct.parsePrompt(T,U)},[T,P,h]),ce=Q!==T,be=ae?(((ue=Dt(ae))==null?void 0:ue.model)||ae).split("/").pop()||ae:null,ye=!!he||!!f,_e=!!y&&!A&&(!fe.configured&&!f||ye&&!ne&&!pe),Ie=_e?!fe.configured&&!f?fe.reason||v.aiNotConfiguredRun:v.attachmentsNotSupported:v.attachFiles;r.useEffect(()=>()=>{R.forEach(({objectUrl:U})=>URL.revokeObjectURL(U))},[R]);const Fe=g!=null&&g.length?b??"/":void 0,qe=((g==null?void 0:g.length)??0)>=Dn,O=r.useMemo(()=>new Map((g??[]).map(U=>[U.name,U])),[g]),Y=r.useMemo(()=>(g??[]).map(U=>({key:U.name,label:`${Fe??"/"}${U.name}`,value:U.name,icon:U.icon})),[g,Fe]),W=r.useCallback(async(U,Ee)=>{const Me=O.get(U.value);if(Me){if(Me.handler){const $e=await Me.handler(_n(Ee));Ee.replace(Ee.triggerRange.start,Ee.triggerRange.end,$e);return}Ee.replace(Ee.triggerRange.start,Ee.triggerRange.end,`${Ee.trigger}${Me.name} `)}},[O]),te=async()=>{var Ye,Xe;const U=((Xe=(Ye=n==null?void 0:n.prompt)==null?void 0:Ye.model)==null?void 0:Xe.toString())||K,Ee=Dt(U),Me=Ee?(_==null?void 0:_.registry[Ee.provider])??B??void 0:B??void 0,$e=Date.now();try{const Ke={...P,...h},Re=await Promise.all(R.map(({file:nt})=>Xt.fileToAttachment(nt))),yt=await Ji(le,Ke,f,Me,Re.length>0?Re:void 0,{noProvider:v.noProvider,noResponse:v.noResponse}),It=Date.now()-$e;if(L(null),N==null||N({target:{name:e+".value",value:yt}}),x&&x.length>0){const nt=ct.parsePrompt(le.value??"",Ke),Nr=Xt.countTokens(nt),ie=Xt.countTokens(yt??""),Ce=Xt.contextPercent(Nr,U),Le=Xt.estimateCost(Nr,ie,U);q({tokensIn:Nr,tokensOut:ie,contextPercent:Ce>0?Ce:null,model:U,durationMs:It,estimatedCost:isFinite(Le)?Le:null})}}catch(Ke){L(Ef(Ke,v.runFailed))}},re=(U,Ee)=>N==null?void 0:N({target:{name:U,value:Ee}}),xe=r.createElement(yr,{name:e+".value",onChange:o,textareaRef:j,required:a,inheritWrapperClassName:!1,wrapperClassName:"",className:`${u||D.Prompt.className} ${ds}`,minHeight:l,maxHeight:i});return r.createElement(Ne,{className:m||D.Prompt.wrapperClassName},r.createElement("div",{className:"flex items-center gap-2"},c&&r.createElement("div",{className:"shrink-0"},c),r.createElement("div",{className:`${ho} min-w-0 flex-1`},w&&r.createElement(bo,{htmlFor:X,label:A?`${v.promptLabel}${w}`:w,required:a}),r.createElement("div",{className:`group relative rounded-xl border border-input shadow-sm transition-shadow focus-within:shadow-md focus-within:ring-2 focus-within:ring-offset-0 ${A?"focus-within:ring-warning":"focus-within:ring-ring"}`},r.createElement("button",{type:"button",title:A?v.closeEditor:v.editSettings,className:`absolute right-2 top-2 z-10 flex h-6 w-6 items-center justify-center rounded-md transition-all ${A?"bg-warning/10 text-warning opacity-100":"bg-background/80 text-muted-foreground opacity-0 group-hover:opacity-100 hover:bg-muted hover:text-foreground"}`,onClick:()=>I(U=>!U)},r.createElement(J,{name:A?"x":"settings",size:13})),r.createElement("div",{className:"overflow-hidden rounded-t-xl"},r.createElement("div",{className:A?"":"hidden"},r.createElement(yr,{id:X,name:e+".prompt.value",defaultValue:s==null?void 0:s.value,onChange:U=>{C(String(U.event.target.value??"")),o==null||o(U)},required:!0,inheritWrapperClassName:!1,wrapperClassName:"",className:`${u||D.Prompt.className} ${ds}`,minHeight:l,maxHeight:i}),A&&ce&&M&&r.createElement("div",{className:"border-t border-input px-4 py-3 bg-muted/20"},r.createElement("p",{className:"whitespace-pre-wrap text-sm text-foreground/70"},Q))),r.createElement("div",{className:A?"hidden":""},R.length>0&&r.createElement("div",{className:"flex gap-2 overflow-x-auto border-b border-input px-3 py-2.5"},R.map(({file:U,objectUrl:Ee},Me)=>r.createElement("div",{key:Ee,className:"relative shrink-0"},U.type.startsWith("image/")?r.createElement("div",{className:"h-16 w-16 overflow-hidden rounded-lg border border-input bg-muted/30"},r.createElement("img",{src:Ee,alt:U.name,className:"h-full w-full object-cover"})):r.createElement("div",{className:"flex items-center gap-2 rounded-lg border border-input bg-muted/30 px-2.5 py-2 text-xs"},r.createElement(J,{name:"file-text",size:18,className:"shrink-0 text-muted-foreground"}),r.createElement("div",{className:"max-w-[100px]"},r.createElement("p",{className:"truncate font-medium text-foreground"},U.name),r.createElement("p",{className:"text-muted-foreground"},(U.size/1024).toFixed(0)," KB"))),r.createElement("button",{type:"button",className:"absolute -right-1.5 -top-1.5 flex h-4 w-4 cursor-pointer items-center justify-center rounded-full bg-foreground text-background shadow",onClick:()=>z(Me)},r.createElement(J,{name:"x",size:9}))))),Fe&&Y.length>0?r.createElement(ut,{trigger:Fe,searchable:qe,onSelect:(U,Ee)=>{W(U,Ee)}},Y.map(U=>r.createElement(ut.Item,{key:U.key,label:U.label,value:U.value,icon:U.icon})),xe):xe)),y&&r.createElement("input",{ref:F,type:"file",multiple:!0,className:"hidden",onChange:U=>{if(U.target.files){const Ee=Array.from(U.target.files).map(Me=>({file:Me,objectUrl:URL.createObjectURL(Me)}));$(Me=>[...Me,...Ee]),U.target.value=""}}}),r.createElement("div",{className:"relative flex items-center gap-1 border-t border-input px-2 py-1 rounded-b-xl"},!A&&(y||((E==null?void 0:E.length)??0)>0)&&r.createElement(r.Fragment,null,y&&r.createElement("button",{type:"button",title:Ie,className:`${xt} flex items-center justify-center`,disabled:_e,onClick:()=>{var U;return(U=F.current)==null?void 0:U.click()}},r.createElement(J,{name:"paperclip",size:13})),E==null?void 0:E.map(U=>U.key==="tokenUsage"||U.content?r.createElement(gt,{key:U.key,trigger:{icon:U.icon,title:U.label},placement:"top",position:"start",triggerClassName:xt},U.key==="tokenUsage"?H?r.createElement("div",{className:"px-3 py-2 text-xs space-y-1"},r.createElement("p",{className:"font-medium text-foreground"},v.tokenUsage),r.createElement("p",{className:"text-muted-foreground"},Be(v.tokenInput,{count:String(H.tokensIn)})),r.createElement("p",{className:"text-muted-foreground"},Be(v.tokenOutput,{count:String(H.tokensOut)})),H.contextPercent!==null&&r.createElement("p",{className:"text-muted-foreground"},Be(v.tokenContext,{percent:H.contextPercent.toFixed(1)})),H.estimatedCost!==null&&r.createElement("p",{className:"text-muted-foreground"},Be(v.tokenCost,{amount:H.estimatedCost.toFixed(5)})),r.createElement("p",{className:"text-muted-foreground"},Be(v.tokenTime,{seconds:(H.durationMs/1e3).toFixed(1)}))):r.createElement("p",{className:"px-3 py-2 text-xs text-muted-foreground"},v.tokenUsageEmpty):U.content):r.createElement("button",{key:U.key,type:"button",title:U.label,className:`${xt} flex items-center justify-center`},r.createElement(J,{name:U.icon,size:13}))),r.createElement("div",{className:"mx-1 h-4 w-px shrink-0 bg-border"})),!A&&!oe&&fe.configured&&r.createElement(r.Fragment,null,r.createElement(gt,{trigger:{icon:"cpu",text:be??"Model"},placement:"top",position:"start",triggerClassName:Af},r.createElement(at,{onClick:()=>re(e+".prompt.model","")},v.defaultOption),ee.map(U=>r.createElement(at,{key:U.value,onClick:()=>re(e+".prompt.model",U.value)},U.label))),r.createElement(gt,{trigger:{icon:"user",title:"Role"},placement:"top",position:"start",triggerClassName:xt},r.createElement(at,{onClick:()=>re(e+".prompt.role","")},v.defaultOption," (",V.role,")"),ct.getRoles().map(U=>r.createElement(at,{key:U,onClick:()=>re(e+".prompt.role",U)},U))),r.createElement(gt,{trigger:{icon:"globe",title:"Language"},placement:"top",position:"start",triggerClassName:xt},r.createElement(at,{onClick:()=>re(e+".prompt.language","")},v.defaultOption," (",V.language,")"),ct.getLangs().map(U=>r.createElement(at,{key:U,onClick:()=>re(e+".prompt.language",U)},U))),r.createElement(gt,{trigger:{icon:"mic",title:"Voice"},placement:"top",position:"start",triggerClassName:xt},r.createElement(at,{onClick:()=>re(e+".prompt.voice","")},v.defaultOption," (",V.voice,")"),ct.getVoices().map(U=>r.createElement(at,{key:U,onClick:()=>re(e+".prompt.voice",U)},U))),r.createElement(gt,{trigger:{icon:"feather",title:"Style"},placement:"top",position:"start",triggerClassName:xt},r.createElement(at,{onClick:()=>re(e+".prompt.style","")},v.defaultOption," (",V.style,")"),ct.getStyles().map(U=>r.createElement(at,{key:U,onClick:()=>re(e+".prompt.style",U)},U))),de&&r.createElement(gt,{trigger:{icon:"thermometer",title:"Temperature"},placement:"top",position:"start",triggerClassName:xt},r.createElement(at,null,r.createElement(hi,{name:e+".prompt.temperature",label:"Temperature",defaultValue:s==null?void 0:s.temperature,inheritWrapperClassName:!1,min:0,max:1,step:.1})))),r.createElement("div",{className:"flex-1"}),!A&&(oe||!fe.configured)&&(Z?r.createElement("div",{className:"mr-1 min-w-0"},Z):r.createElement("span",{className:"flex min-w-0 items-center gap-1 text-xs text-warning truncate mr-1"},r.createElement(J,{name:"triangle-alert",size:13,className:"shrink-0"}),r.createElement("span",{className:"truncate"},oe??(fe.reason||v.aiNotConfiguredShort)))),A&&ce&&r.createElement("button",{type:"button",title:M?v.hidePreview:v.showPreview,className:`${xt} flex items-center justify-center ${M?"bg-muted text-foreground":""}`,onClick:()=>k(U=>!U)},r.createElement(J,{name:M?"eye-off":"eye",size:13})),!A&&r.createElement(bt,{icon:"send",loadingLabel:"",disabled:Ae,ariaLabel:v.run,title:Pe??v.run,variant:"primary",className:"!p-0 h-8 w-8",onClick:te})),x&&x.length>0&&H&&!A&&r.createElement("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-0.5 rounded-b-xl border-t border-input/50 bg-muted/20 px-4 py-1.5 text-[11px] text-muted-foreground"},x.map(U=>{var Ee;if(typeof U=="string")switch(U){case"tokensIn":return r.createElement("span",{key:"tokensIn"},Be(v.tokenInput,{count:H.tokensIn}));case"tokensOut":return r.createElement("span",{key:"tokensOut"},Be(v.tokenOutput,{count:H.tokensOut}));case"contextPercent":return H.contextPercent!==null?r.createElement("span",{key:"ctx"},Be(v.tokenContext,{percent:H.contextPercent.toFixed(1)})):null;case"model":return r.createElement("span",{key:"model",className:"font-mono"},(((Ee=Dt(H.model))==null?void 0:Ee.model)||H.model).split("/").pop());case"duration":return r.createElement("span",{key:"dur"},Be(v.tokenTime,{seconds:(H.durationMs/1e3).toFixed(1)}));default:return null}return r.createElement("span",{key:U.key},U.render(H))}),H.estimatedCost!==null&&!x.some(U=>typeof U=="object"&&U.key==="cost")&&r.createElement("span",{className:"ml-auto font-mono"},"~$",H.estimatedCost.toFixed(5))))),d&&r.createElement("div",{className:"shrink-0"},d)))},Mf=({name:e,label:t,required:n,onChange:a,minHeight:o=96,maxHeight:s=120,before:l,after:i,wrapperClassName:c,className:d,renderFallback:m})=>{const u=we(),f=r.useId();return r.createElement(Ne,{className:c||u.Prompt.wrapperClassName},r.createElement("div",{className:"flex items-center gap-2"},l&&r.createElement("div",{className:"shrink-0"},l),r.createElement("div",{className:"min-w-0 flex-1"},(m==null?void 0:m({name:e,label:t,required:n,onChange:a}))??r.createElement("div",{className:ho},t&&r.createElement(bo,{htmlFor:f,label:t,required:n}),r.createElement(yr,{id:f,className:d||u.Prompt.className,name:e+".value",onChange:a,required:n,inheritWrapperClassName:!1,wrapperClassName:"",minHeight:o,maxHeight:s}))),i&&r.createElement("div",{className:"shrink-0"},i)))},Ji=async(e,t,n,a,o,s)=>{const{value:l,model:i,...c}=e??{};if(n)return n(l,{...c,model:i,attachments:o},t);if(!l)return"";if(!a)throw new Error((s==null?void 0:s.noProvider)??"No AI provider is available for this prompt.");const d=Dt(i),m=(d==null?void 0:d.model)||i||a.defaultModel,u=await a.complete({...c,model:m,prompt:[Zm,l,Qm].join(`
|
|
13
|
-
`),
|
|
14
|
-
`?(n+=1,a=1):a+=1;return{line:n,column:a}},Jn=(e,t,n,a,o,s="Syntax error")=>{const{line:l,column:i}=_f(e,n),c=o?` near ${o}`:"";return new rr(`${s}${c} at line ${l}, column ${i}.`,{language:t,from:n,to:a,line:l,column:i,nodeName:o})},Ff=e=>{do if(e.type.isError)return{from:e.from,to:e.to,nodeName:e.name};while(e.next());return null},vo=async(e,t)=>{if(e.trim()){if(t==="liquid"){try{(await Rf()).parse(e)}catch(n){if(n instanceof rr)throw n;const a=n&&typeof n=="object"&&"token"in n?n.token:void 0,o=(a==null?void 0:a.begin)??0,s=(a==null?void 0:a.end)??o,l=n instanceof Error?n.message.split(", line:")[0]:"Invalid Liquid syntax";throw Jn(e,t,o,s,a==null?void 0:a.name,l)}return}try{const a=(await Df(t)).parse(e),o=Ff(a.cursor());if(o)throw Jn(e,t,o.from,o.to,o.nodeName)}catch(n){if(n instanceof rr)throw n;if(t==="json"&&n instanceof Error){const a=n.message.match(/position\s+(\d+)/i),o=a?Number(a[1]):0;throw Jn(e,t,o,o,void 0,"Invalid JSON")}throw new rr(`Unable to validate ${t} code.`,{language:t,from:0,to:0,line:1,column:1})}}},Of=async(e,t)=>{try{return await vo(e,t),{valid:!0}}catch(n){if(n instanceof rr)return{valid:!1,error:n};throw n}},$f=e=>{switch(e){case"html":return()=>import("@codemirror/lang-html").then(t=>t.html());case"liquid":return()=>import("@codemirror/lang-liquid").then(t=>t.liquid());case"json":return()=>import("@codemirror/lang-json").then(t=>t.json());case"js":return()=>import("@codemirror/lang-javascript").then(t=>t.javascript());case"ts":return()=>import("@codemirror/lang-javascript").then(t=>t.javascript({typescript:!0}));case"css":return()=>import("@codemirror/lang-css").then(t=>t.css())}},Lf=async e=>{const[t,n,a,o]=await Promise.all([import("codemirror"),import("@codemirror/view"),import("@codemirror/state"),$f(e)()]);return{basicSetup:t.basicSetup,EditorView:n.EditorView,EditorState:a.EditorState,keymap:n.keymap,language:o,Prec:a.Prec}};let Xn={},Zn={};const jf=e=>Xn[e]?Promise.resolve(Xn[e]):(Zn[e]||(Zn[e]=Lf(e).then(t=>(Xn[e]=t,t))),Zn[e]),Xi=(e,t,n)=>Rn(e,t,n,{queryPattern:/^[A-Za-z0-9-]*$/}),Bf=(e,t)=>{const n=e.state.doc.toString(),a=e.state.selection.main;if(a.from!==a.to)return null;const o=Xi(n,a.from,t);return o?{value:n,textBeforeCaret:n.slice(0,a.from),textAfterCaret:n.slice(a.to),trigger:t,query:o.query,triggerRange:{start:o.start,end:o.end},insert:s=>{const l=e.state.selection.main;e.dispatch({changes:{from:l.from,to:l.to,insert:s},selection:{anchor:l.from+s.length}}),e.focus()},replace:(s,l,i)=>{e.dispatch({changes:{from:s,to:l,insert:i},selection:{anchor:s+i.length}}),e.focus()}}:null},Zi=({name:e,onChange:t=void 0,defaultValue:n=void 0,className:a=void 0,label:o,language:s="html",placeholder:l,minHeight:i,maxHeight:c,required:d,disabled:m,feedback:u,labelClassName:f,validateSyntax:p=!0,validator:h,extensions:g,commands:b,commandsTrigger:y,wrapperClassName:E,inheritWrapperClassName:x=!0,before:N,after:P})=>{var he,de;const D=r.useId(),v=we(),w=Pn({minHeight:i,maxHeight:c}),{value:A,handleChange:I,formWrapClass:T}=Ve({name:e,onChange:t,defaultValue:n,wrapperClassName:E,inheritWrapperClassName:x}),C=dt(e,{required:d,label:o,validator:async ne=>{const pe=typeof ne=="string"?ne:`${ne??""}`;if(p)try{await vo(pe,s)}catch(X){if(X instanceof rr)return X.message;throw X}return await(h==null?void 0:h(ne))}}),M=r.useRef(null),k=r.useRef(null),R=r.useRef(null),[$,j]=r.useState(!0),[z,H]=r.useState({open:!1,query:"",anchorPosition:null,editorContext:null}),q=r.useRef(A??""),F=r.useRef(z);F.current=z;const B=b!=null&&b.length?y??"/":void 0,_=((b==null?void 0:b.length)??0)>=Dn,V=r.useMemo(()=>new Map((b??[]).map(ne=>[ne.name,ne])),[b]),K=r.useMemo(()=>(b??[]).map(ne=>({key:ne.name,label:`${B??"/"}${ne.name}`,value:ne.name,icon:ne.icon})),[b,B]);r.useEffect(()=>{k.current||(q.current=A??"")},[A]);const ee=r.useCallback(ne=>{q.current=ne,I({target:{name:e,value:ne}})},[I,e]),se=r.useCallback(()=>{H({open:!1,query:"",anchorPosition:null,editorContext:null})},[]),le=r.useCallback(async(ne,pe)=>{const X=V.get(ne.value);if(X){if(X.handler){const fe=await X.handler(_n(pe));pe.replace(pe.triggerRange.start,pe.triggerRange.end,fe);return}pe.replace(pe.triggerRange.start,pe.triggerRange.end,`${pe.trigger}${X.name} `)}},[V]);r.useEffect(()=>{let ne=!1,pe=null;return jf(s).then(X=>{if(ne||!M.current)return;const fe=X.EditorView.theme({"&":{backgroundColor:"var(--rf-background)",height:"100%"},".cm-scroller":{fontFamily:"var(--font-mono, ui-monospace, SFMono-Regular, monospace)",paddingBottom:"0.5rem"},".cm-content":{caretColor:"var(--rf-foreground)",color:"var(--rf-foreground)",paddingBottom:"0.75rem"},".cm-cursor, .cm-dropCursor":{borderLeftColor:"var(--rf-primary)"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:"var(--rf-primary)"},".cm-activeLine":{backgroundColor:"var(--rf-muted)"},".cm-gutters":{backgroundColor:"var(--rf-muted)",color:"var(--rf-muted-foreground)",border:"none"},".cm-activeLineGutter":{backgroundColor:"var(--rf-accent)"},".cm-foldPlaceholder":{backgroundColor:"var(--rf-muted)",color:"var(--rf-muted-foreground)"},".cm-tooltip":{backgroundColor:"var(--rf-popover)",border:"1px solid var(--rf-border)",color:"var(--rf-popover-foreground)"},".cm-tooltip-autocomplete ul li[aria-selected]":{backgroundColor:"var(--rf-accent)",color:"var(--rf-accent-foreground)"},"&.cm-focused":{outline:"none"},".cm-placeholder":{color:"var(--rf-muted-foreground)"}}),Ae=[X.basicSetup,X.language,fe,X.EditorView.updateListener.of(oe=>{oe.docChanged&&ee(oe.state.doc.toString())}),...g??[]];B&&Ae.push(X.EditorView.updateListener.of(oe=>{const L=oe.state.selection.main;if(L.from!==L.to){F.current.open&&se();return}const Z=oe.state.doc.toString(),Q=Xi(Z,L.from,B);if(!Q){F.current.open&&se();return}const ce=oe.view.coordsAtPos(L.from),be=Bf(oe.view,B);!ce||!be||H({open:!0,query:Q.query,anchorPosition:{top:ce.bottom,left:ce.left},editorContext:be})}),X.Prec.highest(X.keymap.of([{key:"ArrowDown",run:()=>{var oe;return F.current.open?((oe=R.current)==null||oe.moveNext(),!0):!1}},{key:"ArrowUp",run:()=>{var oe;return F.current.open?((oe=R.current)==null||oe.movePrev(),!0):!1}},{key:"Enter",run:()=>{var oe;return F.current.open?((oe=R.current)==null||oe.selectActive(),!0):!1}},{key:"Tab",run:()=>{var oe;return F.current.open?((oe=R.current)==null||oe.selectActive(),!0):!1}},{key:"Escape",run:()=>{var oe;return F.current.open?((oe=R.current)==null||oe.close(),!0):!1}}])),X.EditorView.domEventHandlers({keydown:oe=>{var L,Z,Q,ce;if(!F.current.open)return!1;switch(oe.key){case"ArrowDown":return oe.preventDefault(),(L=R.current)==null||L.moveNext(),!0;case"ArrowUp":return oe.preventDefault(),(Z=R.current)==null||Z.movePrev(),!0;case"Enter":case"Tab":return oe.preventDefault(),(Q=R.current)==null||Q.selectActive(),!0;case"Escape":return oe.preventDefault(),(ce=R.current)==null||ce.close(),!0;default:return!1}}})),m&&Ae.push(X.EditorView.editable.of(!1));const Pe=X.EditorState.create({doc:q.current,extensions:Ae});pe=new X.EditorView({state:Pe,parent:M.current}),pe.scrollDOM.style.minHeight=`${w.resolvedMinHeight}px`,w.resolvedMaxHeight&&(pe.scrollDOM.style.maxHeight=`${w.resolvedMaxHeight}px`),k.current=pe,j(!1)}).catch(X=>{ne||(console.error("[CodeEditor] Failed to load CodeMirror:",X),j(!1))}),()=>{ne=!0,pe&&(pe.destroy(),k.current=null)}},[se,g,m,s,ee,l,B]),r.useEffect(()=>{const ne=A??"",pe=k.current;pe&&ne!==q.current&&(q.current=ne,pe.dispatch({changes:{from:0,to:pe.state.doc.length,insert:ne}}))},[A]),r.useEffect(()=>{const ne=k.current;ne&&(ne.scrollDOM.style.minHeight=`${w.resolvedMinHeight}px`,w.resolvedMaxHeight?ne.scrollDOM.style.maxHeight=`${w.resolvedMaxHeight}px`:ne.scrollDOM.style.maxHeight="")},[w.resolvedMinHeight,w.resolvedMaxHeight]);const ae=S("w-full overflow-hidden border border-input",(he=v.CodeEditor)==null?void 0:he.className,a,$&&"flex items-center justify-center bg-muted text-muted-foreground text-sm",C&&"border-destructive",N?"rounded-l-none":"rounded-l-md",P?"rounded-r-none":"rounded-r-md"),ve=r.createElement("div",{className:S("min-w-0 flex-1",ae)},$&&r.createElement("div",{style:{minHeight:w.resolvedMinHeight},className:"flex items-center justify-center"},r.createElement(J,{name:"loader-circle",size:16,className:"animate-spin text-muted-foreground"})),r.createElement("div",{ref:M,className:S($&&"hidden")}));return r.createElement(Ne,{className:S(T,(de=v.CodeEditor)==null?void 0:de.wrapperClassName)},o&&r.createElement(rt,{label:o,required:d,htmlFor:D,className:f}),r.createElement("div",{className:S(N||P?Lt:"")},N&&r.createElement("span",{className:S(or,"rounded-l-md rounded-r-none border-r-0")},N),B&&K.length>0?r.createElement(ut,{ref:R,trigger:B,searchable:_,controlled:z.editorContext?{open:z.open,anchorPosition:z.anchorPosition,query:z.query,editorContext:z.editorContext,onClose:se}:void 0,onSelect:(ne,pe)=>{le(ne,pe)}},K.map(ne=>r.createElement(ut.Item,{key:ne.key,label:ne.label,value:ne.value,icon:ne.icon})),ve):ve,P&&r.createElement("span",{className:S(or,"rounded-l-none rounded-r-md border-l-0")},P)),C&&r.createElement(tt,{message:C}),u&&r.createElement("p",{className:St},u))},Qi={string:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(Qa,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),number:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(ii,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),email:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(eo,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),password:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(ci,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),color:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(di,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),date:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(ui,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),time:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(mi,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),datetime:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(fi,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),week:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(pi,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),month:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(gi,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),textarea:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(yr,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),checkbox:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(bi,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),switch:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(to,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),select:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(hn,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),autocomplete:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(xi,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),checklist:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(Ei,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),uploadImage:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(Di,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),uploadDocument:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(Ti,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),prompt:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(Yi,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})}),imageField:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(ki,{name:t??e.name,label:n??t,...e,...a})}),menu:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...a}={})=>r.createElement(hn,{key:t,name:t,label:n??t,...e,...a})}),codeEditor:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue??""}),render:({name:t,label:n,...a}={})=>r.createElement(Zi,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...a})})},G=Qi,zf={string:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),placeholder:G.string({label:"Placeholder",defaultValue:e.placeholder}),defaultValue:G.string({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),readOnlyAfterSet:G.switch({label:"Read-only dopo set",defaultValue:e.readOnlyAfterSet}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),number:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),placeholder:G.string({label:"Placeholder",defaultValue:e.placeholder}),defaultValue:G.number({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),min:G.number({label:"Minimo",defaultValue:e.min}),max:G.number({label:"Massimo",defaultValue:e.max}),step:G.number({label:"Step",min:0,defaultValue:e.step}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),readOnlyAfterSet:G.switch({label:"Read-only dopo set",defaultValue:e.readOnlyAfterSet}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),email:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),placeholder:G.string({label:"Placeholder",defaultValue:e.placeholder}),defaultValue:G.email({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),readOnlyAfterSet:G.switch({label:"Read-only dopo set",defaultValue:e.readOnlyAfterSet}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),password:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),placeholder:G.string({label:"Placeholder",defaultValue:e.placeholder}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),readOnlyAfterSet:G.switch({label:"Read-only dopo set",defaultValue:e.readOnlyAfterSet}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),color:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),defaultValue:G.color({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),date:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),defaultValue:G.date({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),min:G.number({label:"Data minima",defaultValue:e.min}),max:G.number({label:"Data massima",defaultValue:e.max}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),time:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),defaultValue:G.time({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),datetime:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),defaultValue:G.datetime({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),week:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),defaultValue:G.week({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),month:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),defaultValue:G.month({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),textarea:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),placeholder:G.string({label:"Placeholder",defaultValue:e.placeholder}),defaultValue:G.textarea({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),minHeight:G.number({label:"Altezza minima",min:0,defaultValue:e.minHeight}),maxHeight:G.number({label:"Altezza massima",min:0,defaultValue:e.maxHeight}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),readOnlyAfterSet:G.switch({label:"Read-only dopo set",defaultValue:e.readOnlyAfterSet}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),checkbox:(e={})=>{var t;return{label:G.string({label:"Label",required:!0,defaultValue:e.label}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),defaultValue:G.switch({label:"Valore default",defaultValue:e.defaultValue}),title:G.string({label:"Titolo tooltip",defaultValue:e.title}),valueChecked:G.string({label:"Valore checked",defaultValue:(t=e.valueChecked)==null?void 0:t.toString()})}},switch:(e={})=>{var t;return{label:G.string({label:"Label",required:!0,defaultValue:e.label}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),defaultValue:G.switch({label:"Valore default",defaultValue:e.defaultValue}),title:G.string({label:"Titolo tooltip",defaultValue:e.title}),valueChecked:G.string({label:"Valore checked",defaultValue:(t=e.valueChecked)==null?void 0:t.toString()})}},select:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),defaultValue:G.string({label:"Valore default",defaultValue:e.defaultValue}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),readOnlyAfterSet:G.switch({label:"Read-only dopo set",defaultValue:e.readOnlyAfterSet}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),autocomplete:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),placeholder:G.string({label:"Placeholder",defaultValue:e.placeholder}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),minItems:G.number({label:"Min selezioni",min:0,defaultValue:e.minItems}),maxItems:G.number({label:"Max selezioni",min:1,defaultValue:e.maxItems}),creatable:G.switch({label:"Creazione libera",defaultValue:e.creatable}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),checklist:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),feedback:G.string({label:"Messaggio helper",defaultValue:e.feedback}),disabled:G.switch({label:"Disabilitato",defaultValue:e.disabled})}),uploadImage:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),multiple:G.switch({label:"Multiplo",defaultValue:e.multiple}),editable:G.switch({label:"Modificabile",defaultValue:e.editable}),max:G.number({label:"Max file",min:1,defaultValue:e.max}),accept:G.string({label:"Formati accettati",defaultValue:e.accept}),previewWidth:G.number({label:"Larghezza preview",min:0,defaultValue:e.previewWidth}),previewHeight:G.number({label:"Altezza preview",min:0,defaultValue:e.previewHeight})}),uploadDocument:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),required:G.switch({label:"Obbligatorio",defaultValue:e.required}),multiple:G.switch({label:"Multiplo",defaultValue:e.multiple}),editable:G.switch({label:"Modificabile",defaultValue:e.editable}),max:G.number({label:"Max file",min:1,defaultValue:e.max}),accept:G.string({label:"Formati accettati",defaultValue:e.accept})}),imageField:(e={})=>({label:G.string({label:"Label",required:!0,defaultValue:e.label}),required:G.switch({label:"Obbligatorio",defaultValue:e.required})})},Uf={layout:Mm,input:Qi,schema:zf,block:{},section:{}};class ec{verifyRequiredMethods(){if(!this.model||typeof this.model!="object")throw new Error('[ComponentBlock] Missing property: "model"');for(const t of["html","form"])if(typeof this[t]!="function")throw new Error(`[ComponentBlock] Missing method: "${t}()"`)}static default(t){const n=new this;return n.verifyRequiredMethods(),()=>{const[a,o]=r.useMemo(()=>cn(n.model),[n.model]);return r.createElement(Eo,{defaultValues:o,path:t==null?void 0:t.path},n.form(a))}}}function tc(e){if(typeof e!="object"||e===null)return!1;const t=e;return typeof t.render=="function"&&typeof t.getDefaults=="function"}function Hf(e){return typeof e=="function"&&e.prototype instanceof ec}function Vf(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)&&!r.isValidElement(e)&&!tc(e)}function cn(e){const t={},n={};function a(o){for(const[s,l]of Object.entries(o))n[s]=l}for(const[o,s]of Object.entries(e))if(tc(s))t[o]=s.render({name:o}),a(s.getDefaults(o));else if(Hf(s)){const l=new s,[i,c]=cn(l.model);t[o]=l.form(i),a(c)}else if(Array.isArray(s)){console.warn(`[buildFormFields] ⚠️ The field "${o}" is defined as an array. It has been automatically converted into an object with generated keys (e.g., "${o}_0"). Consider refactoring your model to use an explicit object instead of an array.`);const l={};s.forEach((d,m)=>{const u=`${o}_${m}`;l[u]=d});const[i,c]=cn(l);a(c),t[o]=i}else if(Vf(s)){const[l,i]=cn(s);t[o]=l,a(i)}else t[o]=s;return[t,n]}const fa=Symbol("llmnative.form-controller-store"),rc=()=>({record:void 0,isNewRecord:!0,isDirty:!1,canSave:!1,canDelete:!1,isSaving:!1,isDeleting:!1,saveDisabled:!0,deleteDisabled:!0,hasDraft:!1,draftStatus:null,errors:{},hasErrors:!1}),vn=async()=>!1,hr=()=>{};function nc(){let e=rc(),t;const n=new Set,a={save:vn,delete:vn,reset:hr,restoreDraft:hr,discardDraft:hr},o=()=>{t={...e,save:a.save,delete:a.delete,reset:a.reset,restoreDraft:a.restoreDraft,discardDraft:a.discardDraft,[fa]:s},n.forEach(l=>l())},s={bindActions(l){let i=!1;l.save&&a.save!==l.save&&(a.save=l.save,i=!0),l.delete&&a.delete!==l.delete&&(a.delete=l.delete,i=!0),l.reset&&a.reset!==l.reset&&(a.reset=l.reset,i=!0),l.restoreDraft&&a.restoreDraft!==l.restoreDraft&&(a.restoreDraft=l.restoreDraft,i=!0),l.discardDraft&&a.discardDraft!==l.discardDraft&&(a.discardDraft=l.discardDraft,i=!0),i&&o()},getControllerSnapshot:()=>t,getState:()=>e,setState(l){const i={...e,...l};Object.keys(i).some(d=>e[d]!==i[d])&&(e=i,o())},subscribe(l){return n.add(l),()=>n.delete(l)}};return t={...e,save:a.save,delete:a.delete,reset:a.reset,restoreDraft:a.restoreDraft,discardDraft:a.discardDraft,[fa]:s},s}function pa(e){const t=e;return(t==null?void 0:t[fa])??nc()}function ac(e){return pa(e)}function Kf(e){const t=ac(e);t.setState(rc()),t.bindActions({save:vn,delete:vn,reset:hr,restoreDraft:hr,discardDraft:hr})}const yo=r.createContext(null);function wo(e){const t=r.useRef();t.current||(t.current=e?pa(e):nc());const n=e?pa(e):t.current;return r.useSyncExternalStore(n.subscribe,n.getControllerSnapshot,n.getControllerSnapshot)}function Gf(){const e=r.useContext(yo);if(!e)throw new Error("useFormActions must be used within a FormControllerContext");return e}const ms=e=>Array.isArray(e)?[...e]:e&&typeof e=="object"?{...e}:{},oc=e=>!Number.isNaN(Number(e)),qf=(e,t)=>["number","range"].includes(t)?e===""||e==null?"":Number(e):e,Yf=e=>e!==void 0&&oc(e)?[]:{},fs=(e,t,n)=>{const a=t.target.name.split("."),o=qf(t.target.value,n),s=ms(e??{});let l=s;for(let c=0;c<a.length-1;c++){const d=a[c],m=a[c+1],u=l[d];l[d]=u!=null&&typeof u=="object"?ms(u):Yf(m),l=l[d]}const i=a[a.length-1];return o==null||o===""?Array.isArray(l)&&oc(i)?l.splice(Number(i),1):delete l[i]:l[i]=o,s},sc=r.createContext(null),xo=r.createContext(null),dt=(e,t)=>{const n=r.useContext(xo),a=r.useRef(t);return a.current=t,r.useEffect(()=>{if(n)return n.registerField(e,a),()=>n.unregisterField(e)},[e]),n==null?void 0:n.errors[e]},Ve=({name:e,onChange:t,wrapperClassName:n,inputType:a="text",defaultValue:o,inheritWrapperClassName:s=!0})=>{const l=r.useContext(sc);if(!l)throw new Error("useFormContext must be used within a FormContext.Provider");if(!e)throw new Error("useFormContext: name is required");const i=r.useContext(xo),c=r.useMemo(()=>{const m=e.split(".").reduce((u,f)=>{if(u!=null){if(Array.isArray(u)){const p=Number(f);return isNaN(p)?void 0:u[p]}if(typeof u=="object")return u[f]}},l.record);return m===void 0&&o!==void 0?o??"":m??""},[e,l.record,o]),d=r.useCallback(m=>{i==null||i.clearFieldError(m.target.name);let u;l.setRecord(f=>(u=fs(f,m,a),u)),t==null||t({event:m,name:e,value:m.target.value,record:u??{},onChange:f=>{l.setRecord(p=>fs(p,f,a))}})},[i,l.setRecord,t,e,a]);return{value:c,handleChange:d,formWrapClass:[n,s?l.wrapperClassName:void 0].filter(Boolean).join(" "),record:l.record??{}}},lc=({name:e,value:t,handleChange:n})=>r.useCallback(a=>{a.preventDefault();const o=a.target,l=`${a.dataTransfer.getData("text/plain")}`;o.focus();const i=(()=>{var u,f;const m=((u=document.caretPositionFromPoint)==null?void 0:u.call(document,a.clientX,a.clientY))??((f=document.caretRangeFromPoint)==null?void 0:f.call(document,a.clientX,a.clientY));return m&&"offset"in m?m.offset??o.value.length:o.value.length})(),c=String(t??""),d=c.slice(0,i)+l+c.slice(i);n==null||n({target:{value:d.trim(),name:e}}),requestAnimationFrame(()=>{const m=i+l.length;o.setSelectionRange(m,m)})},[e,t,n]);function Wf(e,t){if(e.indexOf(".")===-1||t.indexOf(".")===-1)return`${t}.${e}`;const n=Math.min(e.length,t.length);let a=0;for(;a<n&&e.charCodeAt(a)===t.charCodeAt(a);)a++;const o=e.lastIndexOf(".",a-1);return o===-1?`${t}.${e}`:`${t}.${e.slice(o+1)}`}const _r=({children:e,parentName:t,parentKey:n,wrapperClassName:a})=>r.Children.map(e,o=>{if(!t||!r.isValidElement(o))return o;const{name:s,children:l}=o.props,i={};return s&&(i.name=Wf(s,t),i.key=n??i.name,i.wrapperClassName=o.props.wrapperClassName??a,o.props.before&&r.isValidElement(o.props.before)&&(i.before=_r({children:o.props.before,parentName:t,parentKey:`${i.key}.before`})),o.props.after&&r.isValidElement(o.props.after)&&(i.after=_r({children:o.props.after,parentName:t,parentKey:`${i.key}.after`}))),l&&typeof l!="function"&&(i.children=_r({children:l,parentName:t,parentKey:n,wrapperClassName:a})),r.cloneElement(o,i)});function Eo(e){const t=De.useLocation(),{path:n,keyGenerator:a,defaultValues:o,children:s,...l}=e,c=(d=>d??(t.hash?`${qr(t.pathname)}/${t.hash.slice(1)}`:void 0))(n);return o||!c||a?r.createElement(ic,{children:s,defaultValues:o,path:n,keyGenerator:a,...l}):r.createElement(Jf,{children:s,defaultValues:o,path:c,keyGenerator:a,...l})}const Jf=e=>{const{path:t,defaultValues:n,...a}=e,o=$t(),[s,l]=r.useState(void 0);return r.useEffect(()=>{o.read(t).then(i=>{l({...n,...i})}).catch(i=>{console.error(i),l({})})},[o,t,n]),s?r.createElement(ic,{...a,defaultValues:s,path:t}):r.createElement("p",{className:"p-4"},r.createElement("span",{className:"mr-2 inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"Loading...")},Vt=e=>JSON.stringify(nr(e??{})),Xf=e=>{if(e)try{const t=JSON.parse(e);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return}},ic=({children:e,appearance:t=void 0,controller:n=void 0,header:a=void 0,footer:o=void 0,path:s=void 0,defaultValues:l=void 0,keyGenerator:i=void 0,onLoad:c=void 0,onRecordChange:d=void 0,onSave:m=void 0,onDelete:u=void 0,onComplete:f=void 0,log:p=!1,showNotice:h=!0,persistDraft:g=!1,noticeAnchorRef:b=void 0,showBack:y=!1,wrapperClassName:E=void 0,headerClassName:x=void 0,className:N=void 0,footerClassName:P=void 0})=>{const D=De.useLocation(),v=we(),w=Te("form"),A=$t(),I=wo(n),T=ac(I),[C,M]=r.useState(l),[k,R]=r.useState(!1),[$,j]=r.useState(!1),z=!(l!=null&&l[je]),H=r.useRef(Mt(l??{})),[q,F]=r.useState(()=>Vt(l)),[B,_]=r.useState(null),V=r.useMemo(()=>{if(!g)return;const ie=s||`${D.pathname}${D.hash||""}`,Ce=Ft(ie);return Ce?`llmnative.form-draft.${Ce}`:void 0},[g,D.pathname,D.hash,s]),K=!!(m||s||!z),ee=!!(u||!z),se=r.useMemo(()=>Vt(C)!==q,[C,q]),le=w.noChangesToSave??"No changes to save",ae=w.draftRestoreTitle??"Unsaved changes found",ve=w.draftRestoreMessage??"A local draft is available for this form. Restore it or discard it.",he=w.draftRestoreAction??"Restore",de=w.draftDiscardAction??"Discard",ne=w.draftRestoredTitle??"Draft restored",pe=w.draftRestoredMessage??"The local draft has been restored. You can still discard it for a few seconds.",X=r.useCallback(()=>{!V||typeof localStorage>"u"||localStorage.removeItem(V)},[V]),fe=r.useCallback(()=>{if(!(!V||typeof localStorage>"u"))return Xf(localStorage.getItem(V))},[V]),Ae=r.useCallback(()=>{M(Mt(H.current))},[]),[Pe,oe]=r.useState(void 0),L=r.useCallback(({message:ie,type:Ce="danger"})=>{h&&oe({type:Ce,message:ie})},[h]),[Z,Q]=r.useState({}),ce=r.useRef({}),be=r.useRef(null),ye=r.useRef(C),_e=r.useRef(l),Ie=r.useRef(m),Fe=r.useRef(u),qe=r.useRef(f),O=r.useRef(s),Y=r.useRef(p),W=r.useCallback(()=>{X(),Ae(),_(null)},[X,Ae]),te=r.useCallback(()=>{const ie=fe();if(!ie){_(null);return}M(Mt(ie)),_("restored")},[fe]),re=r.useCallback(()=>{Q({}),oe(void 0),_(null),Ae()},[Ae]),xe=r.useCallback((ie,Ce)=>{ce.current[ie]=Ce},[]),ge=r.useCallback(ie=>{delete ce.current[ie]},[]),ue=r.useCallback(ie=>{Q(Ce=>{if(!Ce[ie])return Ce;const{[ie]:Le,...Ge}=Ce;return Ge})},[]),U=r.useCallback(async()=>{const ie={};for(const[Ce,Le]of Object.entries(ce.current)){const{required:Ge,label:Fn,validator:On}=Le.current,wt=Ce.split(".").reduce((ft,Fo)=>{if(ft!=null){if(Array.isArray(ft))return ft[Number(Fo)];if(typeof ft=="object")return ft[Fo]}},ye.current);if(Ge&&(wt==null||typeof wt=="string"&&wt.trim()===""||Array.isArray(wt)&&wt.length===0)){ie[Ce]=Fn?Be(w.requiredField,{field:Fn}):w.requiredFieldGeneric;continue}if(On){const ft=await On(wt);ft&&(ie[Ce]=ft)}}if(Q(ie),Object.keys(ie).length>0){const Ce=Object.keys(ie)[0];requestAnimationFrame(()=>{var Le,Ge;(Ge=(Le=be.current)==null?void 0:Le.querySelector(`[name="${CSS.escape(Ce)}"]`))==null||Ge.focus()})}return Object.keys(ie).length===0},[w]),Ee=r.useCallback(ie=>{if(!s)return;const Ce=qr(s);if(z){if(Ce.split("/").filter(Boolean).length%2===0&&!i)return`/${Ce}`;const wt=(i==null?void 0:i(ie))??Date.now().toString();return`/${Ce}/${wt}`}const Le=ie[je];if(!Le)return s;const Ge=Ce.split("/").filter(Boolean);return`/${Ge[Ge.length-1]===Le?Ge.slice(0,-1).join("/"):Ce}/${Le}`},[s,i,z]),Me=r.useCallback(async ie=>{var Ce;if(Y.current&&O.current&&A){const Le=new Date().toISOString(),Ge=Qt("user");A.set(`/log/${O.current}/${Ft(Le)}`,{user:(Ge==null?void 0:Ge.email)??"unknown",when:Le,action:ie,record:ye.current})}return L({message:ie==="delete"?w.deleteSuccess:w.saveSuccess,type:"success"}),await((Ce=qe.current)==null?void 0:Ce.call(qe,{record:ye.current,action:ie}))??!0},[A,L,w]),$e=r.useCallback(async ie=>{var Le;if((Le=ie==null?void 0:ie.preventDefault)==null||Le.call(ie),!se)return h&&oe({message:le,type:"info"}),!1;if(_t.flushSync(()=>{Q({}),h&&oe(void 0)}),!await U())return h&&oe({message:w.noticeRequiredFields,type:"warning"}),!1;const Ce=z?"create":"update";R(!0);try{const Ge=(Ie.current&&await Ie.current({record:ye.current,prevRecord:_e.current,action:Ce,storagePath:O.current}))??Ee(ye.current??{});return Ge&&await A.set(Ge,nr(ye.current)),H.current=Mt(ye.current??{}),F(Vt(ye.current)),X(),_(null),await Me(Ce)}finally{R(!1)}},[X,Ee,A,w.noticeRequiredFields,Me,se,z,le,h,U]),Ye=r.useCallback(async ie=>{var Ce;(Ce=ie==null?void 0:ie.preventDefault)==null||Ce.call(ie),h&&oe(void 0),j(!0);try{const Le=(Fe.current&&await Fe.current({record:ye.current}))??Ee(ye.current??{});return Le&&await A.remove(Le),X(),_(null),await Me("delete")}finally{j(!1)}},[X,Ee,A,Me,h]);r.useEffect(()=>{const ie=Mt(l??{});if(l&&(M(ie),c==null||c(Mt(ie))),H.current=ie,F(Vt(ie)),!g){_(null);return}const Ce=fe();if(Ce&&Vt(Ce)!==Vt(ie)){_("restore");return}_(null)},[JSON.stringify(l),g,c,fe]),r.useEffect(()=>{ye.current=C,C!==void 0&&(d==null||d(C))},[C,d]),r.useEffect(()=>{_e.current=l,Ie.current=m,Fe.current=u,qe.current=f,O.current=s,Y.current=p},[l,p,f,u,m,s]),r.useEffect(()=>{if(!V||typeof localStorage>"u"||C===void 0)return;if(!se){const Ce=fe();if(Ce&&Vt(Ce)!==q)return;localStorage.removeItem(V);return}const ie=window.setTimeout(()=>{localStorage.setItem(V,JSON.stringify(nr(C)))},150);return()=>window.clearTimeout(ie)},[q,V,se,fe,C]),r.useEffect(()=>{T.bindActions({save:$e,delete:Ye,reset:re,restoreDraft:te,discardDraft:W})},[T,W,Ye,$e,re,te]),r.useEffect(()=>{T.setState({record:ye.current,isNewRecord:z,isDirty:se,canSave:K,canDelete:ee,isSaving:k,isDeleting:$,saveDisabled:!K||!se||k,deleteDisabled:!ee||$,hasDraft:B!==null,draftStatus:B,errors:Z,hasErrors:Object.keys(Z).length>0})},[ee,K,T,B,Z,$,se,z,k,C]),r.useEffect(()=>()=>Kf(I),[T]);const Xe=r.useCallback(ie=>{ie.defaultPrevented||!((ie.ctrlKey||ie.metaKey)&&ie.key.toLowerCase()==="s")||I.saveDisabled||(ie.preventDefault(),I.save())},[I]),Ke=r.useMemo(()=>({registerField:xe,unregisterField:ge,clearFieldError:ue,errors:Z}),[xe,ge,ue,Z]),Re=r.useMemo(()=>({record:C,setRecord:M,wrapperClassName:"mb-3"}),[C,M]),yt=r.useMemo(()=>r.createElement(yo.Provider,{value:I},r.createElement(sc.Provider,{value:Re},r.createElement(xo.Provider,{value:Ke},typeof e=="function"?e({record:C}):e))),[e,I,Re,C,Ke]),It=r.useMemo(()=>Pe?r.createElement(Vr,{variant:Pe.type,appearance:b?"default":"text",placement:b?"sticky":"inline",anchorRef:b,timeout:Pe.type==="success"?3e3:void 0,onClose:Pe.type==="success"?()=>oe(void 0):void 0},Pe.message):null,[Pe,b]),nt=r.useMemo(()=>{if(!B)return null;const ie=B==="restore"?ae:ne,Ce=B==="restore"?ve:pe;return r.createElement(Vr,{variant:B==="restore"?"warning":"info",timeout:B==="restored"?6e3:void 0,onClose:B==="restored"?()=>_(null):void 0},r.createElement("div",{className:"flex items-start justify-between gap-3"},r.createElement("div",{className:"min-w-0"},r.createElement("div",{className:"font-medium"},ie),r.createElement("div",{className:"text-sm opacity-90"},Ce)),r.createElement("div",{className:"flex shrink-0 items-center gap-2"},B==="restore"?r.createElement(r.Fragment,null,r.createElement(Qe,{label:he,variant:"warning",onClick:()=>te()}),r.createElement(Qe,{label:de,variant:"outline-secondary",onClick:()=>W()})):r.createElement(Qe,{label:de,variant:"outline-secondary",onClick:()=>W()}))))},[W,de,B,he,ve,ae,pe,ne,te]),Nr=r.useMemo(()=>{switch(t){case"empty":return r.createElement(r.Fragment,null,nt,yt,It);case"card":default:return r.createElement(Ua,{header:a||r.createElement(Bl,{rootItem:z?w.headerAdd:w.headerEdit,trail:s||void 0}),footer:(o||!z||m||u||y||!!s)&&r.createElement(r.Fragment,null,o,It,(m||!!s||!z)&&r.createElement(bt,{className:S(v.Form.buttonSaveClass,I.saveDisabled&&"cursor-not-allowed opacity-50"),label:w.buttonSave,title:I.saveDisabled&&!se?le:void 0,disabled:I.saveDisabled,loading:I.isSaving,onClick:ie=>I.save(ie)}),(u||!z)&&r.createElement(bt,{className:v.Form.buttonDeleteClass,label:w.buttonDelete,disabled:I.deleteDisabled,loading:I.isDeleting,onClick:ie=>I.delete(ie)}),y&&r.createElement(kl,{className:v.Form.buttonBackClass,label:w.buttonBack})),headerClassName:x||v.Form.Card.headerClassName,bodyClassName:N||v.Form.Card.bodyClassName,footerClassName:P||v.Form.Card.footerClassName},r.createElement(r.Fragment,null,nt,yt))}},[t,N,yt,w.buttonBack,w.buttonDelete,w.buttonSave,w.headerAdd,w.headerEdit,nt,o,P,I,a,x,se,z,le,It,u,m,s,y,v.Form.buttonDeleteClass,v.Form.buttonSaveClass,v.Form.buttonBackClass,v.Form.Card.bodyClassName,v.Form.Card.footerClassName,v.Form.Card.headerClassName]);return r.createElement(Ne,{className:E||v.Form.wrapperClassName},r.createElement("form",{ref:be,noValidate:!0,onSubmit:ie=>ie.preventDefault(),onKeyDownCapture:Xe,onKeyDown:Xe},Nr))},ps="rounded-xl border border-border/60 bg-card/80 shadow-sm",Zf="flex items-center justify-between gap-3 border-b border-border/50 px-3 py-2",Qf="text-xs font-medium uppercase tracking-[0.14em] text-muted-foreground",ep="px-3 py-3",gs="h-7 w-7 rounded-md bg-transparent p-0 text-muted-foreground hover:bg-destructive/10 hover:text-destructive",tp=({name:e,children:t,onChange:n,onAdd:a,onRemove:o,className:s,layout:l="horizontal",minItems:i=void 0,maxItems:c=void 0,label:d=void 0,labelPosition:m="top",hideRemoveButton:u=!1,readOnly:f=!1})=>{var D;const{value:p,handleChange:h}=Ve({name:e,onChange:n}),g=Array.isArray(p)?p:[],b=(v,w)=>_r({children:typeof t=="function"?t({record:g[v],records:g,index:v,remove:()=>N(v)}):t,parentName:`${e}.${v}`,wrapperClassName:w}),y=(v,w)=>{switch(l){case"horizontal":return r.createElement("div",{className:ps},r.createElement("div",{className:Zf},r.createElement("span",{className:Qf},"#",v+1),w&&!u?r.createElement(Qe,{className:gs,icon:"x",onClick:()=>N(v)}):r.createElement("span",{className:"h-7 w-7","aria-hidden":"true"})),r.createElement("div",{className:ep},b(v)));case"vertical":return r.createElement(r.Fragment,null);case"inline":return r.createElement("div",{className:S(ps,"px-3 py-2")},r.createElement("div",{className:"flex items-start gap-2"},r.createElement("div",{className:"flex-1 min-w-0"},b(v,"!mb-0")),w&&!u&&r.createElement(Qe,{className:S(gs,"mt-1 shrink-0"),icon:"x",onClick:()=>N(v)})))}},E=(D=g.length>0?g:Array.from({length:i||0},()=>({})))==null?void 0:D.map((v,w)=>{const A=!f&&w>=(i||0);return r.createElement(r.Fragment,{key:`${e}-${w}`},y(w,A))}),x=()=>{const v=g.length>0?[...g,{}]:Array.from({length:E.length+1},()=>({}));a==null||a(v),h({target:{name:`${e}.${v.length-1}`,value:{}}})},N=v=>{o==null||o(v),h({target:{name:`${e}.${v}`}})},P=r.useMemo(()=>f?null:!c||E.length<c?d&&m==="bottom"?r.createElement(Qe,{icon:"plus",label:d,variant:"link",className:"w-full justify-start gap-1 rounded-lg border border-dashed border-border/60 px-3 py-2 text-sm text-muted-foreground hover:border-border hover:bg-muted/40 hover:text-foreground",onClick:x}):r.createElement(Qe,{icon:"plus",label:d?void 0:"Add",variant:d?"link":"secondary",className:d?"h-8 w-8 rounded-lg p-0 text-muted-foreground hover:bg-muted/50 hover:text-foreground":void 0,onClick:x}):null,[f,c,E.length,d,m]);return r.createElement("div",{className:S("space-y-3",s)},d&&m==="top"&&r.createElement("div",{className:"flex items-center justify-between gap-3"},r.createElement("span",{className:"text-sm font-medium text-foreground"},d),P),E,!d&&P,d&&m==="bottom"&&P)},rp={default:{shellClassName:"space-y-4",menuClassName:"flex flex-wrap items-end gap-2 border-b border-border/70",contentClassName:"min-w-0",itemClassName:"shrink-0",triggerClassName:"inline-flex items-center rounded-t-lg border-b-2 px-3 py-2 text-sm font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background",activeTriggerClassName:"border-primary text-foreground",inactiveTriggerClassName:"border-transparent text-muted-foreground hover:text-foreground hover:border-border/80"},top:{shellClassName:"space-y-4",menuClassName:"inline-flex max-w-full flex-wrap gap-2 rounded-xl bg-muted/50 p-1.5",contentClassName:"min-w-0",itemClassName:"shrink-0",triggerClassName:"inline-flex items-center rounded-lg px-3 py-2 text-sm font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background",activeTriggerClassName:"bg-card text-foreground shadow-sm ring-1 ring-border/60",inactiveTriggerClassName:"text-muted-foreground hover:bg-background/80 hover:text-foreground"},left:{shellClassName:"flex h-full min-h-0 flex-col gap-5 md:flex-row md:items-start",menuClassName:"flex shrink-0 gap-2 overflow-x-auto md:w-64 md:flex-col md:overflow-visible",contentClassName:"min-h-0 min-w-0 flex-1 overflow-hidden rounded-2xl border border-border/60 bg-card/80 p-4 shadow-sm",itemClassName:"shrink-0 md:w-full",triggerClassName:"inline-flex w-full items-center justify-between rounded-xl px-3 py-2.5 text-left text-sm font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background",activeTriggerClassName:"bg-primary/10 text-primary shadow-sm ring-1 ring-primary/15",inactiveTriggerClassName:"text-muted-foreground hover:bg-muted/60 hover:text-foreground"},right:{shellClassName:"flex h-full min-h-0 flex-col gap-5 md:flex-row md:items-start",menuClassName:"order-1 flex shrink-0 gap-2 overflow-x-auto md:order-2 md:w-64 md:flex-col md:overflow-visible",contentClassName:"order-2 min-h-0 min-w-0 flex-1 overflow-hidden rounded-2xl border border-border/60 bg-card/80 p-4 shadow-sm md:order-1",itemClassName:"shrink-0 md:w-full",triggerClassName:"inline-flex w-full items-center justify-between rounded-xl px-3 py-2.5 text-left text-sm font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background",activeTriggerClassName:"bg-primary/10 text-primary shadow-sm ring-1 ring-primary/15",inactiveTriggerClassName:"text-muted-foreground hover:bg-muted/60 hover:text-foreground"},bottom:{shellClassName:"space-y-4",menuClassName:"flex flex-wrap gap-2 rounded-xl bg-muted/50 p-1.5",contentClassName:"min-w-0 rounded-2xl border border-border/60 bg-card p-4 shadow-sm",itemClassName:"shrink-0",triggerClassName:"inline-flex items-center rounded-lg px-3 py-2 text-sm font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background",activeTriggerClassName:"bg-card text-foreground shadow-sm ring-1 ring-border/60",inactiveTriggerClassName:"text-muted-foreground hover:bg-background/80 hover:text-foreground"}};function Nt(e){return rp[e]}function yn(e,t,n){const a=Nt(e),o=we();return S("cursor-pointer",a.triggerClassName,o.Tab.triggerClassName,t?a.activeTriggerClassName:a.inactiveTriggerClassName,t?o.Tab.activeTriggerClassName:o.Tab.inactiveTriggerClassName,n)}function No(e){const t=we();return S("min-h-0 min-w-0 h-full overflow-x-hidden overflow-y-auto",t.Tab.contentClassName,e)}const Co={default:({menu:e,content:t,menuClassName:n,contentClassName:a})=>{const o=Nt("default"),s=we();return r.createElement("div",{className:o.shellClassName},r.createElement("div",{role:"tablist","aria-orientation":"horizontal",className:S(o.menuClassName,s.Tab.menuClassName,n)},e),r.createElement("div",{className:S(o.contentClassName,s.Tab.contentClassName,a)},t))},top:({menu:e,content:t,menuClassName:n,contentClassName:a})=>{const o=Nt("top"),s=we();return r.createElement("div",{className:o.shellClassName},r.createElement("div",{role:"tablist","aria-orientation":"horizontal",className:S(o.menuClassName,s.Tab.menuClassName,n)},e),r.createElement("div",{className:S(o.contentClassName,s.Tab.contentClassName,a)},t))},left:({menu:e,content:t,menuClassName:n,contentClassName:a})=>{const o=Nt("left"),s=we();return r.createElement("div",{className:o.shellClassName},r.createElement("div",{role:"tablist","aria-orientation":"vertical",className:S(o.menuClassName,s.Tab.menuClassName,n)},e),r.createElement("div",{className:S(o.contentClassName,s.Tab.contentClassName,a)},t))},right:({menu:e,content:t,menuClassName:n,contentClassName:a})=>{const o=Nt("right"),s=we();return r.createElement("div",{className:o.shellClassName},r.createElement("div",{role:"tablist","aria-orientation":"vertical",className:S(o.menuClassName,s.Tab.menuClassName,n)},e),r.createElement("div",{className:S(o.contentClassName,s.Tab.contentClassName,a)},t))},bottom:({menu:e,content:t,menuClassName:n,contentClassName:a})=>{const o=Nt("bottom"),s=we();return r.createElement("div",{className:o.shellClassName},r.createElement("div",{className:S(o.contentClassName,s.Tab.contentClassName,a)},t),r.createElement("div",{role:"tablist","aria-orientation":"horizontal",className:S(o.menuClassName,s.Tab.menuClassName,n)},e))}},cc=()=>null,np=({children:e,motion:t})=>{var o,s;const n=we(),a=Zr(void 0,t??((o=n.Tab.motion)==null?void 0:o.enter)??"fadeUp",((s=n.Tab.motion)==null?void 0:s.enter)??"fadeUp");return r.createElement("div",{style:a,className:No()},e)},ap=({children:e,defaultIndex:t=0,onChange:n,layout:a="default",menuClassName:o=void 0,contentClassName:s=void 0,before:l=void 0,after:i=void 0,wrapperClassName:c=void 0,className:d=void 0,motion:m=void 0})=>{var E,x;const[u,f]=r.useState(t),p=N=>{f(N),n==null||n(N)},h=r.Children.toArray(e).filter(N=>r.isValidElement(N)&&N.type===cc),g=r.useMemo(()=>Nt(a),[a]),b=Co[a],y=we();return r.createElement(Ne,{className:S(y.Tab.wrapperClassName,c)},l,r.createElement("div",{className:S("min-w-0",y.Tab.className,d)},r.createElement(b,{menuClassName:o,contentClassName:s,menu:h.map((N,P)=>r.createElement("div",{key:P,className:S(g.itemClassName,y.Tab.itemClassName)},r.createElement("button",{type:"button",role:"tab","aria-selected":P===u,onClick:()=>p(P),className:yn(a,P===u)},N.props.label))),content:r.createElement(np,{key:u,motion:m},(x=(E=h[u])==null?void 0:E.props)==null?void 0:x.children)})),i)};function dc({records:e,selectedKeys:t,onSelectionChange:n,getRecordKey:a}){const o=t,s=o!==void 0&&!!n,[l,i]=r.useState(o??[]);r.useEffect(()=>{o!==void 0&&!s&&i(o)},[o,s]);const c=s?o||[]:l,d=!!n||o!==void 0,m=r.useCallback(h=>{const g=new Set(h),b=e.filter((y,E)=>g.has(a(y,E)));return{keys:h,records:b,hasSelection:h.length>0}},[a,e]),u=r.useCallback(h=>{s||i(h);const g=m(h);n==null||n({...g,clear:()=>u([])})},[m,s,n]),f=r.useCallback(()=>{u([])},[u]),p=r.useMemo(()=>({...m(c),clear:f}),[c,m,f]);return{activeSelectedKeys:c,selectionState:p,showSelection:d,updateSelection:u}}function uc(e){const t=r.useRef(new WeakMap),n=r.useRef(0);return r.useCallback((a,o)=>{if(a[je])return a[je];const s=a,l=t.current.get(s);if(l)return l;const i=`${e}-${n.current++}`;return t.current.set(s,i),i},[e])}function mc({columns:e=void 0,records:t=void 0,footer:n=void 0,onRowClick:a=void 0,onReorder:o=void 0,onSelectionChange:s=void 0,selection:l="multiple",sortable:i=!1,pagination:c=void 0,activeKey:d=void 0,selectedKeys:m=void 0,groupBy:u=void 0,before:f=void 0,after:p=void 0,wrapperClassName:h=void 0,className:g=void 0,headerClassName:b=void 0,bodyClassName:y=void 0,footerClassName:E=void 0,heightClassName:x=void 0,scrollClassName:N=void 0,selectedClassName:P=void 0,renderCell:D=void 0}){const v=we(),w=Te("table"),A=P||v.Table.selectedClassName,[I,T]=r.useState(t||[]),C=r.useMemo(()=>{if(!(!i||typeof i=="boolean"))return i},[typeof i=="object"?i==null?void 0:i.dir:void 0,typeof i=="object"?i==null?void 0:i.field:void 0]),M=i!==!1,[k,R]=r.useState(C),[$,j]=r.useState(null),[z,H]=r.useState(null),[q,F]=r.useState(null),[B,_]=r.useState(null),[V,K]=r.useState(null),ee=r.useRef(!1),se=r.useCallback(O=>{O&&j(O)},[]),le=r.useId(),ae=!!o,ve=M||!!gr.normalize(C),he=ae&&ve,de=he?!1:M,ne=he?void 0:C;r.useEffect(()=>{T(t||[])},[t]),r.useEffect(()=>{R(ne)},[ne==null?void 0:ne.field,ne==null?void 0:ne.dir]),r.useEffect(()=>{!he||ee.current||(console.warn("Table: `onReorder` cannot be combined with sortable sorting on the same view. Manual reorder takes precedence and sorting is ignored."),ee.current=!0)},[he]);const pe=uc("row"),X=r.useCallback((O,Y)=>pe(O,Y),[pe]),{activeSelectedKeys:fe,selectionState:Ae,showSelection:Pe,updateSelection:oe}=dc({records:I,selectedKeys:m,onSelectionChange:s,getRecordKey:X});r.useEffect(()=>{if(!V)return;I.some((Y,W)=>X(Y,W)===V)||K(null)},[V,X,I]),r.useEffect(()=>{if(k||!(e!=null&&e.length)||ae)return;const O=e.find(Y=>de&&Y.sort!==!1);O&&R({field:O.key,dir:"asc"})},[k,de,e,ae]);const L=r.useMemo(()=>gr.records(I,k)||[],[I,k]),Z=(O,Y,W)=>{let te=O.target;for(;te&&te.tagName!=="TR";){if(["A","BUTTON","INPUT","LABEL"].includes(te.tagName))return;te=te.parentNode}const re=X(Y,W);A&&d===void 0&&K(xe=>xe===re?null:re),a==null||a(Y)},Q=(O,Y,W)=>{if(D)return D(O,Y,W);const te=O[Y],re=te!=null&&typeof te=="object"&&!Array.isArray(te)?te:null,xe=(re==null?void 0:re.prompt)&&(re==null?void 0:re.value)||te;return r.isValidElement(xe)||xe==null||typeof xe!="object"?xe:Array.isArray(xe)&&!xe.some(ge=>typeof ge=="object"&&ge)?xe.join(", "):""},ce=r.useCallback((O,Y)=>{const W=X(O,Y),te=fe.includes(W)?fe.filter(re=>re!==W):[...fe,W];oe(te)},[fe,X,oe]),be=r.useCallback((O,Y)=>{const W=X(O,Y);oe(fe.includes(W)?[]:[W])},[fe,X,oe]),ye=r.useCallback((O,Y)=>{if(!z)return;const W=L.findIndex((U,Ee)=>X(U,Ee)===z),te=L.findIndex((U,Ee)=>X(U,Ee)===X(O,Y));F(null),H(null);const re=(B==null?void 0:B.position)||"after";if(_(null),W<0||te<0||W===te)return;const xe=[...L],[ge]=xe.splice(W,1),ue=W<te?te+(re==="after"?0:-1):te+(re==="after"?1:0);xe.splice(ue,0,ge),R(void 0),T(xe),o==null||o(xe,{fromIndex:W,toIndex:ue,record:ge})},[z,B==null?void 0:B.position,X,o,L]);if(L.length===0)return r.createElement("p",{className:"p-4"},w.noDataFound);const _e=e||Object.keys(L[0]).map(O=>({key:O,label:O,sort:M})),Ie=["w-full",v.Table.scrollClassName,x?`${x} overflow-auto`:"",N||""].filter(Boolean).join(" "),Fe=_e.length+(Pe?1:0)+(ae?1:0),qe=(O,Y,W,te)=>!B||B.key!==O||B.position!==Y?null:r.createElement("tr",{"aria-hidden":"true",onDragOver:re=>{ae&&(re.preventDefault(),q!==O&&F(O),_({key:O,position:Y}))},onDrop:re=>{ae&&(re.preventDefault(),_({key:O,position:Y}),ye(W,te))}},r.createElement("td",{colSpan:Fe,className:"border-0 p-0"},r.createElement("div",{className:"relative h-5 cursor-grab"},r.createElement("div",{className:"absolute inset-x-2 top-1/2 -translate-y-1/2"},r.createElement("div",{className:"h-0 rounded-full border-t-2 border-primary/80"}),r.createElement("div",{className:"absolute left-0 top-1/2 h-2 w-2 -translate-y-1/2 rounded-full bg-primary shadow-sm"})))));return r.createElement("div",{className:"flex items-stretch gap-3"},f&&r.createElement("div",{className:"table-before flex shrink-0 items-center self-stretch"},f),r.createElement("div",{ref:se,className:"min-w-0 flex-1 overflow-x-auto "+(h||v.Table.wrapperClassName)},r.createElement("div",{className:Ie},r.createElement("table",{className:"w-full min-w-full text-left text-sm border-collapse "+(g||v.Table.className)},r.createElement("thead",{className:"border-b "+(b||v.Table.headerClassName)},r.createElement("tr",null,Pe&&r.createElement("th",{className:"px-3 py-2 font-semibold text-muted-foreground",style:{width:"1%",whiteSpace:"nowrap"}},l!=="single"?r.createElement("div",{className:"th-inner py-1"},r.createElement("input",{type:"checkbox","aria-label":w.selectAllRows,checked:Ae.records.length>0&&Ae.records.length===I.length,onChange:O=>{const Y=O.target.checked?L.map((W,te)=>X(W,te)):[];oe(Y)}})):r.createElement("div",{className:"th-inner py-1"})),ae&&r.createElement("th",{className:"px-3 py-2 font-semibold text-muted-foreground",style:{width:"1%",whiteSpace:"nowrap"}},r.createElement("div",{className:"th-inner py-1"})),_e.map(O=>O.label?(()=>{const Y=de&&O.sort!==!1,W=Y&&(k==null?void 0:k.field)===O.key,te=W?(k==null?void 0:k.dir)==="desc"?"descending":"ascending":"none";return r.createElement("th",{key:O.key,className:"px-3 py-2 font-semibold text-muted-foreground"+(O.className?" "+O.className:""),"aria-sort":te},Y?r.createElement("button",{type:"button",className:"th-inner group inline-flex w-full cursor-pointer items-center gap-2 rounded-sm border-0 bg-transparent px-0 py-1 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 "+(W?"font-semibold text-foreground":"text-muted-foreground hover:text-foreground"),onClick:()=>R(re=>gr.toggle(re,O.key)),"aria-label":W?Be(w.sortByCurrent,{label:O.label,direction:(k==null?void 0:k.dir)==="desc"?"descending":"ascending"}):Be(w.sortBy,{label:O.label}),title:W?`${O.label}: ${(k==null?void 0:k.dir)==="desc"?"descending":"ascending"}`:Be(w.sortBy,{label:O.label})},r.createElement("span",{className:"inline-flex h-4 w-4 flex-none items-center justify-center transition-colors "+(W?"text-primary":"text-muted-foreground/70 group-hover:text-foreground/80"),"aria-hidden":"true"},W?(k==null?void 0:k.dir)==="desc"?r.createElement(Pr.ArrowDown,{size:14}):r.createElement(Pr.ArrowUp,{size:14}):r.createElement(Pr.ArrowUpDown,{size:14})),r.createElement("span",null,O.label)):r.createElement("div",{className:"th-inner py-1"},O.label))})():r.createElement("th",{key:O.key,className:"px-3 py-2 font-semibold text-muted-foreground",style:{width:"1%",whiteSpace:"nowrap"}})))),r.createElement("tbody",{className:y||v.Table.bodyClassName},r.createElement(Ao,{records:L,appendTo:$,wrapperClassName:"px-3 pt-4 pb-2",...c||{}},(O,Y)=>{const W=u?Array.isArray(u)?u:[u]:null;let te;return O.map((re,xe)=>{const ge=Y+xe,ue=X(re,ge),U=W?W.map(Re=>String(re[Re]??"")).join(" · "):void 0,Ee=U!==void 0&&U!==te;te=U;const Me=fe.includes(ue),$e=q===ue,Ye=z===ue,Ke=A&&(d===void 0?V:d)===ue;return r.createElement(r.Fragment,{key:ue},Ee&&r.createElement("tr",{"aria-hidden":"true"},r.createElement("td",{colSpan:Fe,className:"bg-muted/40 px-3 py-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground"},U)),qe(ue,"before",re,ge),r.createElement("tr",{draggable:ae,className:["odd:bg-muted/30 hover:bg-muted/20 transition-colors",$e?"bg-muted/30":"",Ke?A:""].filter(Boolean).join(" ")||void 0,style:{cursor:a?"pointer":ae?"grab":"default",opacity:Ye?.45:1},onClick:Re=>{a&&Z(Re,re,ge)},onDragStart:()=>{H(ue)},onDragOver:Re=>{if(!ae)return;Re.preventDefault();const yt=Re.currentTarget.getBoundingClientRect(),It=Re.clientY<yt.top+yt.height/2?"before":"after";q!==ue&&F(ue),z!==ue&&_(nt=>(nt==null?void 0:nt.key)===ue&&nt.position===It?nt:{key:ue,position:It})},onDragLeave:()=>{q===ue&&F(null)},onDragEnd:()=>{H(null),F(null),_(null)},onDrop:Re=>{ae&&(Re.preventDefault(),ye(re,ge))}},Pe&&r.createElement("td",{className:"px-3 py-2 border-b border-border/50",style:{width:"1%",whiteSpace:"nowrap"}},r.createElement("input",{type:l==="single"?"radio":"checkbox",name:l==="single"?le:void 0,"aria-label":Be(w.selectRow,{key:ue}),checked:Me,onChange:()=>{if(l==="single"){be(re,ge);return}ce(re,ge)},onClick:Re=>{Re.stopPropagation(),l==="single"&&(Re.preventDefault(),be(re,ge))}})),ae&&r.createElement("td",{className:"px-3 py-2 border-b border-border/50",style:{width:"1%",whiteSpace:"nowrap"}},r.createElement("button",{type:"button",draggable:ae,className:"inline-flex cursor-grab items-center justify-center rounded-sm border-0 bg-transparent p-0 text-muted-foreground","aria-label":Be(w.reorderRow,{key:ue}),onClick:Re=>Re.preventDefault(),onDragStart:Re=>{Re.stopPropagation(),H(ue)},onDragEnd:Re=>{Re.stopPropagation(),H(null),F(null),_(null)}},r.createElement(Pr.GripVertical,{size:14}))),_e.map(Re=>r.createElement("td",{key:Re.key,className:"px-3 py-2 border-b border-border/50"},Q(re,Re.key,ge)))),qe(ue,"after",re,ge))})})),n&&r.createElement("tfoot",{className:E||v.Table.footerClassName},n)))),p&&r.createElement("div",{className:"table-after flex shrink-0 items-center self-stretch"},p))}const We=12,hs=12,Kr=(e,t,n)=>Math.max(t,Math.min(n,e)),op=e=>{if(!e)return"";const t=e.trim().replace(/^\{/,"").replace(/\}$/,"").trim(),n=t.split(".");return(n[n.length-1]||t).trim()},bs=(e,t)=>{const n=e-t.left,a=t.width/We;return Kr(Math.floor(n/a),0,We-1)},vs=()=>`${Date.now()}_${Math.random().toString(16).slice(2)}`,fc=(e,t,n)=>{const a=o=>{const s=o+t;return s>We?!1:!n.some(l=>{const i=o,c=s,d=l.colStart,m=l.colStart+l.colSpan;return i<m&&d<c})};for(let o=e;o<=We-t;o++)if(a(o))return o;for(let o=0;o<=We-t;o++)if(a(o))return o;return null},sp=(e,t,n)=>{const a=e.find(i=>i.id===t);if(!a)return e;const o=e.filter(i=>i.id!==t),s=Kr(n,0,We-a.colSpan),l=fc(s,a.colSpan,o);return l===null?e:e.map(i=>i.id===t?{...i,colStart:l}:i)},lp=(e,t,n)=>{const a=e.find(c=>c.id===t);if(!a)return e;const o=e.filter(c=>c.id!==t),s=We-a.colStart;let l=Kr(n,1,s);const i=c=>{const d=a.colStart,m=a.colStart+c;return o.some(u=>{const f=u.colStart,p=u.colStart+u.colSpan;return d<p&&f<m})};for(;l>1&&i(l);)l--;return i(l)?e:e.map(c=>c.id===t?{...c,colSpan:l}:c)},ys=(e,t,n)=>{if(n<=0)return null;const a=e.map(o=>{const s=o.colStart+o.colSpan/2,l=Math.abs(s-(t+.5));return{it:o,dist:l}}).sort((o,s)=>o.dist-s.dist).map(o=>o.it);for(const o of a){if(o.colSpan-1<n)continue;const l=o.colSpan-n,i=o.colStart+l;if(i<0||i+n>We)continue;return{nextItems:e.map(d=>d.id===o.id?{...d,colSpan:l}:d),insertCol:i}}return null},ip=r.forwardRef(({name:e,defaultSpan:t=1,heightPx:n=100},a)=>{const o=r.useRef(null),s=Te("layout"),{value:l,handleChange:i}=Ve({name:e,defaultValue:[]}),c=Array.isArray(l)?l:[],d=C=>{const k=typeof C=="function"?C(c):C;i({target:{name:e,value:k}})},[m,u]=r.useState(null),[f,p]=r.useState(null),[h,g]=r.useState(""),b=r.useRef(null),y=C=>{g(C),b.current&&window.clearTimeout(b.current),b.current=window.setTimeout(()=>g(""),2500)};r.useEffect(()=>()=>{b.current&&window.clearTimeout(b.current)},[]),r.useImperativeHandle(a,()=>({getValue:()=>c,setValue:C=>d(C),clear:()=>d([])}));const E=r.useMemo(()=>Array.from({length:We},(C,M)=>M),[]),x=C=>{C.preventDefault()},N=C=>{if(C.preventDefault(),C.dataTransfer.getData("application/x-layoutbuilder-internal")){u(null);return}if(c.length>=hs){y(s.maxElements);return}const k=o.current;if(!k)return;const R=k.getBoundingClientRect(),$=bs(C.clientX,R),j=C.dataTransfer.getData("text/plain")||C.dataTransfer.getData("label")||"",z=op(j)||"unknown",H=Kr(t,1,We),q=Kr($,0,We-H),F=fc(q,H,c);if(F!==null){d(_=>[..._,{id:vs(),fieldName:z,colStart:F,colSpan:H}]);return}if(!ys(c,$,H)){y(s.noSpace);return}d(_=>{if(_.length>=hs)return y(s.maxElements),_;const V=ys(_,$,H);if(!V)return y(s.noSpace),_;const K={id:vs(),fieldName:z,colStart:V.insertCol,colSpan:H};return[...V.nextItems,K]})},P=C=>M=>{u(C),M.dataTransfer.setData("application/x-layoutbuilder-internal",C),M.dataTransfer.effectAllowed="move"},D=C=>{if(C.preventDefault(),!m)return;const M=o.current;if(!M)return;const k=M.getBoundingClientRect(),R=bs(C.clientX,k);d($=>sp($,m,R))},v=()=>u(null),w=C=>M=>{M.stopPropagation(),M.preventDefault();const k=c.find(R=>R.id===C);k&&p({id:C,startClientX:M.clientX,startSpan:k.colSpan})},A=C=>{if(!f)return;const M=o.current;if(!M)return;const R=M.getBoundingClientRect().width/We,$=C.clientX-f.startClientX,j=Math.round($/R),z=f.startSpan+j;d(H=>lp(H,f.id,z))},I=()=>{f&&p(null)},T=C=>d(M=>M.filter(k=>k.id!==C));return r.createElement("div",{onMouseMove:A,onMouseUp:I,onMouseLeave:I},h&&r.createElement("div",{style:{marginBottom:8,padding:"8px 10px",borderRadius:10,border:"1px solid rgba(255,255,255,0.15)",background:"rgba(255,255,255,0.04)",fontSize:12,opacity:.95}},h),r.createElement("div",{ref:o,onDragOver:C=>{x(C),D(C)},onDrop:N,onDragEnd:v,style:{position:"relative",height:n,borderRadius:12,border:"2px dashed rgba(255, 255, 255, 0.25)",background:"rgba(0,0,0,0.02)",overflow:"hidden"}},E.map(C=>r.createElement("div",{key:C,style:{position:"absolute",top:0,bottom:0,left:`${C/We*100}%`,width:1,background:"rgba(255, 255, 255, 0.06)",pointerEvents:"none"}})),c.map(C=>r.createElement("div",{key:C.id,draggable:!0,onDragStart:P(C.id),style:{position:"absolute",top:12,bottom:12,left:`${C.colStart/We*100}%`,width:`${C.colSpan/We*100}%`,padding:10,borderRadius:12,border:"1px solid rgba(255, 255, 255, 0.18)",boxShadow:"0 1px 2px rgba(0,0,0,0.06)",cursor:m===C.id?"grabbing":"grab",display:"flex",alignItems:"center",justifyContent:"center",userSelect:"none"},title:s.dragToMove},r.createElement("div",{style:{fontSize:10,fontWeight:400,opacity:.9}},C.fieldName),r.createElement("button",{type:"button",onClick:()=>T(C.id),style:{position:"absolute",border:"none",top:3,right:3,color:"white",background:"rgba(255, 255, 255, 0.03)",fontSize:12,cursor:"pointer"},title:s.remove},"×"),r.createElement("div",{onMouseDown:w(C.id),style:{position:"absolute",right:4,top:"50%",transform:"translateY(-50%)",width:10,height:30,borderRadius:6,background:"rgba(255, 255, 255, 0.12)",cursor:"ew-resize"},title:s.dragToResize}))),c.length===0&&r.createElement("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"none"}},s.dragHere)))}),cp=({name:e,onDataLoaded:t,onClear:n=void 0,onParseField:a=void 0,label:o=void 0,icon:s="upload",delimiter:l=void 0,normalizeKeys:i=!1,removeEmptyFields:c=!1,required:d=!1,before:m=void 0,after:u=void 0,wrapperClassName:f=void 0,className:p=void 0})=>{const h=Te("upload"),[g,b]=r.useState(null),[y,E]=r.useState(!1),[x,N]=r.useState(null),P=r.useRef(null),D=([k,R])=>{if(!["",null,void 0].includes(k)&&R!==void 0&&!(c&&["",null].includes(R)))return i&&(k=Ft(k)),a?a([k,R]):[k.trim(),fn(R)]},v=k=>{k&&sd.parse(k,{header:!0,skipEmptyLines:!0,delimiter:l,dynamicTyping:!1,complete:R=>{var $;b(null),N(k),t({data:R.data.map(j=>Object.fromEntries(Object.entries(j).reduce((z,[H,q])=>{const F=D([H,q]);return F&&z.push(F),z},[]))),fields:((($=R.meta)==null?void 0:$.fields)||[]).reduce((j,z)=>(z&&j.push(i?Ft(z):z),j),[]),file:k})},error:R=>{b(R instanceof Error?R.message:String(R)),N(null)}})},w=k=>{var R;v(((R=k.target.files)==null?void 0:R[0])??null),k.target.value=""},A=k=>{k.preventDefault(),k.stopPropagation(),E(!0)},I=k=>{k.preventDefault(),k.stopPropagation(),E(!1)},T=k=>{var R;k.preventDefault(),k.stopPropagation(),E(!1),v(((R=k.dataTransfer.files)==null?void 0:R[0])??null)},C=()=>{var k;return(k=P.current)==null?void 0:k.click()},M=k=>k<1024?`${k} B`:k<1024*1024?`${(k/1024).toFixed(1)} KB`:`${(k/(1024*1024)).toFixed(1)} MB`;return r.createElement(Ne,{className:f},m,r.createElement("div",{className:S(p),"data-name":e},o&&r.createElement(rt,{label:o,required:d}),r.createElement("input",{ref:P,type:"file",accept:".csv,.tsv,text/csv,text/plain",className:"hidden",onChange:w}),x?r.createElement("div",{className:"rounded-lg border border-border overflow-hidden"},r.createElement("div",{className:"flex items-center gap-3 px-3 py-3"},r.createElement("div",{className:"w-9 h-9 rounded-md bg-emerald-500/10 flex items-center justify-center shrink-0"},r.createElement(J,{name:"file-text",className:"w-4 h-4 text-emerald-600"})),r.createElement("div",{className:"flex-1 min-w-0"},r.createElement("p",{className:"text-sm font-medium truncate"},x.name),r.createElement("p",{className:"text-xs text-muted-foreground"},M(x.size))),r.createElement("div",{className:"flex items-center gap-1 text-xs text-emerald-600 font-medium shrink-0"},r.createElement(J,{name:"check-circle",className:"w-4 h-4"}),h.loaded),r.createElement("button",{type:"button",onClick:()=>{N(null),n==null||n()},className:"w-7 h-7 flex items-center justify-center rounded-full text-muted-foreground hover:bg-red-50 hover:text-red-500 transition-colors",title:h.removeFile},r.createElement(J,{name:"x",className:"w-3.5 h-3.5"}))),r.createElement("div",{className:"px-3 py-2 border-t border-border bg-muted/20"},r.createElement("button",{type:"button",onClick:C,className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-primary transition-colors"},r.createElement(J,{name:"refresh-cw",className:"w-3.5 h-3.5"}),h.uploadAnother))):r.createElement("button",{type:"button",onClick:C,onDragOver:A,onDragLeave:I,onDrop:T,className:S("w-full flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed py-8 px-4 transition-colors cursor-pointer",y?"border-primary/60 bg-primary/8 text-primary":"border-muted-foreground/25 bg-muted/30 text-muted-foreground hover:border-primary/40 hover:bg-primary/5 hover:text-primary/70")},r.createElement(J,{name:s,className:"w-8 h-8"}),r.createElement("span",{className:"text-sm font-medium"},y?h.dropToParse:h.clickOrDrag),r.createElement("span",{className:"text-xs opacity-60"},".csv, .tsv")),g&&r.createElement(tt,{message:`Parse error: ${g}`})),u)},dp=()=>Promise.all([import("@tiptap/react"),import("@tiptap/react/menus"),import("@tiptap/starter-kit"),import("@tiptap/extension-underline"),import("@tiptap/extension-link"),import("@tiptap/extension-image"),import("@tiptap/extension-table"),import("@tiptap/extension-placeholder"),import("@tiptap/extension-character-count")]);let dn=null,Qn=null;const up=()=>dn?Promise.resolve(dn):(Qn||(Qn=dp().then(e=>(dn=e,e))),Qn),mp=["bold","italic","underline","strike","|","headings","|","bulletList","orderedList","|","blockquote","code","codeBlock","|","link","|","imageUpload","documentUpload","|","table","|","sourceCode","|","undo","redo","clearFormat"],fp=e=>e===!0?{tagBreadcrumb:!0,wordCount:!0,charCount:!1}:e===!1?{}:{tagBreadcrumb:!0,wordCount:!0,charCount:!1,...e},kr=8,pp={bold:{icon:"bold",label:"Bold",isActive:e=>e.isActive("bold"),execute:e=>e.chain().focus().toggleBold().run()},italic:{icon:"italic",label:"Italic",isActive:e=>e.isActive("italic"),execute:e=>e.chain().focus().toggleItalic().run()},underline:{icon:"underline",label:"Underline",isActive:e=>e.isActive("underline"),execute:e=>e.chain().focus().toggleUnderline().run()},strike:{icon:"strikethrough",label:"Strikethrough",isActive:e=>e.isActive("strike"),execute:e=>e.chain().focus().toggleStrike().run()},heading1:{icon:"heading-1",label:"Heading 1",isActive:e=>e.isActive("heading",{level:1}),execute:e=>e.chain().focus().toggleHeading({level:1}).run()},heading2:{icon:"heading-2",label:"Heading 2",isActive:e=>e.isActive("heading",{level:2}),execute:e=>e.chain().focus().toggleHeading({level:2}).run()},heading3:{icon:"heading-3",label:"Heading 3",isActive:e=>e.isActive("heading",{level:3}),execute:e=>e.chain().focus().toggleHeading({level:3}).run()},bulletList:{icon:"list",label:"Bullet List",isActive:e=>e.isActive("bulletList"),execute:e=>e.chain().focus().toggleBulletList().run()},orderedList:{icon:"list-ordered",label:"Ordered List",isActive:e=>e.isActive("orderedList"),execute:e=>e.chain().focus().toggleOrderedList().run()},blockquote:{icon:"quote",label:"Blockquote",isActive:e=>e.isActive("blockquote"),execute:e=>e.chain().focus().toggleBlockquote().run()},code:{icon:"code",label:"Inline Code",isActive:e=>e.isActive("code"),execute:e=>e.chain().focus().toggleCode().run()},codeBlock:{icon:"square-code",label:"Code Block",isActive:e=>e.isActive("codeBlock"),execute:e=>e.chain().focus().toggleCodeBlock().run()},link:{icon:"link",label:"Link",isActive:e=>e.isActive("link"),execute:e=>{if(e.isActive("link")){e.chain().focus().unsetLink().run();return}const t=window.prompt("URL");t&&e.chain().focus().setLink({href:t}).run()}},undo:{icon:"undo-2",label:"Undo",execute:e=>e.chain().focus().undo().run()},redo:{icon:"redo-2",label:"Redo",execute:e=>e.chain().focus().redo().run()},clearFormat:{icon:"eraser",label:"Clear Format",execute:e=>e.chain().focus().clearNodes().unsetAllMarks().run()}},gp=({def:e,editor:t})=>{var a;const n=((a=e.isActive)==null?void 0:a.call(e,t))??!1;return r.createElement("button",{type:"button",title:e.label,onMouseDown:o=>{o.preventDefault(),e.execute(t)},className:S("inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors","hover:bg-muted disabled:cursor-not-allowed disabled:opacity-40",n&&"bg-muted text-primary")},r.createElement(J,{name:e.icon,size:14}))},hp=[{value:0,label:"Normal",previewClass:"text-sm",execute:e=>e.chain().focus().setParagraph().run()},{value:1,label:"Heading 1",previewClass:"text-2xl font-bold",execute:e=>e.chain().focus().setHeading({level:1}).run()},{value:2,label:"Heading 2",previewClass:"text-xl font-semibold",execute:e=>e.chain().focus().setHeading({level:2}).run()},{value:3,label:"Heading 3",previewClass:"text-lg font-semibold",execute:e=>e.chain().focus().setHeading({level:3}).run()}],bp=({editor:e})=>{const[t,n]=r.useState(!1),a=r.useRef(null);r.useEffect(()=>{const s=l=>{a.current&&!a.current.contains(l.target)&&n(!1)};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[]);const o=e.isActive("heading",{level:1})?"H1":e.isActive("heading",{level:2})?"H2":e.isActive("heading",{level:3})?"H3":"P";return r.createElement("div",{ref:a,className:"relative"},r.createElement("button",{type:"button",title:"Paragraph style",onMouseDown:s=>{s.preventDefault(),n(l=>!l)},className:"inline-flex h-7 items-center gap-0.5 rounded px-1.5 text-xs font-medium transition-colors hover:bg-muted"},o,r.createElement(J,{name:"chevron-down",size:10})),t&&r.createElement("div",{className:"absolute left-0 top-full z-50 mt-1 w-44 overflow-hidden rounded-md border border-border bg-background shadow-lg"},hp.map(s=>r.createElement("button",{key:s.value,type:"button",onMouseDown:l=>{l.preventDefault(),s.execute(e),n(!1)},className:S("block w-full px-3 py-1.5 text-left leading-snug transition-colors hover:bg-muted",s.previewClass,s.value===0&&e.isActive("paragraph")&&"bg-muted/60",s.value!==0&&e.isActive("heading",{level:s.value})&&"bg-muted/60")},s.label))))},vp=({editor:e})=>{const[t,n]=r.useState(!1),[a,o]=r.useState(3),[s,l]=r.useState(3),i=r.useRef(null);r.useEffect(()=>{const d=m=>{i.current&&!i.current.contains(m.target)&&n(!1)};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[]);const c=(d,m)=>{e.chain().focus().insertTable({rows:d,cols:m,withHeaderRow:!0}).run(),n(!1)};return r.createElement("div",{ref:i,className:"relative"},r.createElement("button",{type:"button",title:"Insert Table",onMouseDown:d=>{d.preventDefault(),n(m=>!m)},className:"inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors hover:bg-muted"},r.createElement(J,{name:"table",size:14})),t&&r.createElement("div",{className:"absolute left-0 top-full z-50 mt-1 rounded-md border border-border bg-background p-3 shadow-lg"},r.createElement("div",{className:"grid gap-1.5",style:{gridTemplateColumns:`repeat(${kr}, 18px)`,width:"fit-content"}},Array.from({length:kr*kr},(d,m)=>{const u=Math.floor(m/kr)+1,f=m%kr+1,p=u<=a&&f<=s;return r.createElement("button",{key:`${u}-${f}`,type:"button","aria-label":`Insert ${u} by ${f} table`,onMouseEnter:()=>{o(u),l(f)},onFocus:()=>{o(u),l(f)},onMouseDown:h=>{h.preventDefault(),c(u,f)},className:S("h-[18px] w-[18px] rounded-[4px] border transition-colors",p?"border-primary bg-primary/25 shadow-[inset_0_0_0_1px_rgba(59,130,246,0.35)]":"border-border bg-background hover:border-primary/50 hover:bg-muted/60")})})),r.createElement("div",{className:"mt-3 text-center text-xs font-medium text-muted-foreground"},a," x ",s)))},yp=({editor:e})=>{const t=[{icon:"rows-2",label:"Add row above",execute:()=>e.chain().focus().addRowBefore().run()},{icon:"rows-3",label:"Add row below",execute:()=>e.chain().focus().addRowAfter().run()},{icon:"columns-2",label:"Add column left",execute:()=>e.chain().focus().addColumnBefore().run()},{icon:"columns-3",label:"Add column right",execute:()=>e.chain().focus().addColumnAfter().run()},{icon:"minus-square",label:"Delete row",execute:()=>e.chain().focus().deleteRow().run()},{icon:"rectangle-ellipsis",label:"Delete column",execute:()=>e.chain().focus().deleteColumn().run()},{icon:"trash-2",label:"Delete table",execute:()=>e.chain().focus().deleteTable().run()}];return r.createElement("div",{className:"flex items-center gap-0.5 rounded-md border border-border bg-background px-1 py-0.5 shadow-lg"},t.map((n,a)=>r.createElement(r.Fragment,{key:n.label},a>0&&a!==4&&r.createElement("div",{className:"mx-0.5 h-4 w-px bg-border"}),r.createElement("button",{type:"button",title:n.label,onMouseDown:o=>{o.preventDefault(),n.execute()},className:"inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors hover:bg-muted"},r.createElement(J,{name:n.icon,size:14})))))},ws=({editor:e,commands:t,sourceMode:n,onImageUpload:a,onDocumentUpload:o,onSourceToggle:s,compact:l})=>{const[,i]=r.useReducer(c=>c+1,0);return r.useEffect(()=>(e.on("selectionUpdate",i),e.on("transaction",i),()=>{e.off("selectionUpdate",i),e.off("transaction",i)}),[e]),r.createElement("div",{className:S("flex flex-wrap items-center gap-0.5 px-2 py-1",!l&&"border-b border-border")},t.map((c,d)=>{if(c==="|")return r.createElement("div",{key:d,className:"mx-0.5 h-4 w-px bg-border"});if(c==="headings")return r.createElement(bp,{key:c,editor:e});if(c==="table")return r.createElement(vp,{key:c,editor:e});if(c==="imageUpload")return r.createElement("button",{key:c,type:"button",title:"Upload Image",onMouseDown:u=>{u.preventDefault(),a()},className:"inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors hover:bg-muted"},r.createElement(J,{name:"image",size:14}));if(c==="documentUpload")return r.createElement("button",{key:c,type:"button",title:"Upload Document",onMouseDown:u=>{u.preventDefault(),o()},className:"inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors hover:bg-muted"},r.createElement(J,{name:"file-up",size:14}));if(c==="sourceCode")return r.createElement("button",{key:c,type:"button",title:"Source Code",onMouseDown:u=>{u.preventDefault(),s()},className:S("inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors hover:bg-muted",n&&"bg-muted text-primary")},r.createElement(J,{name:"code",size:14}));const m=pp[c];return m?r.createElement(gp,{key:c,def:m,editor:e}):null}))},wp=e=>{try{const{$anchor:t}=e.state.selection,n=[];for(let a=t.depth;a>=0;a--){const o=t.node(a).type.name;o!=="doc"&&n.unshift(o)}return n}catch{return[]}},xp=({editor:e,config:t})=>{const[n,a]=r.useState(0);r.useEffect(()=>{const l=()=>a(i=>i+1);return e.on("selectionUpdate",l),e.on("transaction",l),()=>{e.off("selectionUpdate",l),e.off("transaction",l)}},[e]);const o=t.tagBreadcrumb?wp(e):[],s=e.storage.characterCount;return r.createElement("div",{className:"flex items-center gap-3 border-t border-border px-3 py-1 text-xs text-muted-foreground select-none"},t.tagBreadcrumb&&o.length>0&&r.createElement("div",{className:"flex items-center gap-1 font-mono"},o.map((l,i)=>r.createElement(r.Fragment,{key:i},i>0&&r.createElement("span",{className:"opacity-40"},"›"),r.createElement("span",null,l)))),r.createElement("div",{className:"ml-auto flex items-center gap-3"},t.wordCount&&s&&r.createElement("span",null,s.words()," words"),t.charCount&&s&&r.createElement("span",null,s.characters()," chars")))},pc=({srcset:e})=>{const t=e.split(",").map(n=>n.trim()).map(n=>{const[a,o]=n.split(" ");return{src:a,width:parseInt(o,10)}}).filter(n=>n.src&&!isNaN(n.width));return t.length?r.createElement("div",{className:"flex flex-col gap-1.5"},r.createElement("p",{className:"text-xs font-medium text-muted-foreground"},"Responsive variants ",r.createElement("span",{className:"font-normal opacity-60"},"(",t.length," generated)")),r.createElement("div",{className:"flex gap-1.5"},t.map(n=>r.createElement("a",{key:n.width,href:n.src,target:"_blank",rel:"noopener noreferrer",className:"group relative flex-1 overflow-hidden rounded border border-border",style:{backgroundImage:"repeating-conic-gradient(#e4e4e4 0% 25%, #f5f5f5 0% 50%)",backgroundSize:"8px 8px"}},r.createElement("img",{src:n.src,alt:`${n.width}w`,className:"h-12 w-full object-contain transition-opacity group-hover:opacity-80"}),r.createElement("span",{className:"absolute bottom-0.5 left-0.5 rounded bg-black/60 px-1 py-0.5 text-[9px] font-mono leading-none text-white"},n.width,"px"),r.createElement("div",{className:"absolute inset-0 flex items-center justify-center opacity-0 transition-opacity group-hover:opacity-100"},r.createElement("div",{className:"rounded-md bg-black/60 p-1"},r.createElement(J,{name:"external-link",size:11,className:"text-white"}))))))):null},Ep=({items:e,onInsertAll:t,onCropSave:n,onCancel:a})=>{const[o,s]=r.useState(0),[l,i]=r.useState(()=>e.map(b=>({alt:b.defaultAlt,href:"",target:"_blank",enabled:!0}))),[c,d]=r.useState(!1),m=r.useRef(null);r.useEffect(()=>{var b;(b=m.current)==null||b.focus()},[o]),r.useEffect(()=>{i(b=>{if(e.length<=b.length)return b;const y=e.slice(b.length).map(E=>({alt:E.defaultAlt,href:"",target:"_blank",enabled:!0}));return[...b,...y]})},[e.length]);const u=e.length,f=e[o]??e[0],p=l[o]??{alt:"",href:"",target:"_blank",enabled:!0},h=l.filter(b=>b.enabled).length,g=b=>i(y=>y.map((E,x)=>x===o?{...E,...b}:E));return r.createElement(r.Fragment,null,r.createElement(lr,{title:u===1?"Insert image":"Insert images",onClose:a,size:"md",footer:r.createElement("div",{className:"flex w-full items-center justify-between"},r.createElement("label",{className:"flex cursor-pointer select-none items-center gap-2 text-sm"},r.createElement("input",{type:"checkbox",checked:p.enabled,onChange:b=>g({enabled:b.target.checked}),className:"h-4 w-4 rounded accent-primary"}),"Include"),r.createElement("div",{className:"flex gap-2"},r.createElement("button",{type:"button",onClick:a,className:"h-8 rounded-md px-3 text-sm transition-colors hover:bg-muted"},"Cancel"),r.createElement("button",{type:"button",onClick:()=>t(l),disabled:h===0,className:"h-8 rounded-md bg-primary px-3 text-sm text-primary-foreground transition-colors hover:bg-primary/90 disabled:opacity-50"},u===1?"Insert":`Insert (${h})`)))},u>1&&r.createElement("div",{className:"mb-3 flex items-center justify-between gap-3"},r.createElement("div",{className:"flex gap-1.5 overflow-x-auto pb-0.5"},e.map((b,y)=>{var E;return r.createElement("button",{key:y,type:"button",onClick:()=>s(y),title:b.fileProps.fileName,className:S("relative h-12 w-12 flex-shrink-0 overflow-hidden rounded-md border-2 transition-all",y===o?"border-primary shadow-md":"border-transparent opacity-50 hover:opacity-90",!((E=l[y])!=null&&E.enabled)&&"opacity-20 grayscale")},r.createElement("img",{src:b.preview,alt:"",className:"h-full w-full object-cover"}))})),r.createElement("div",{className:"flex flex-shrink-0 items-center gap-0.5"},r.createElement("button",{type:"button",onClick:()=>s(b=>Math.max(0,b-1)),disabled:o===0,className:"flex h-7 w-7 items-center justify-center rounded hover:bg-muted disabled:opacity-30"},r.createElement(J,{name:"chevron-left",size:14})),r.createElement("span",{className:"w-10 text-center text-xs tabular-nums text-muted-foreground"},o+1," / ",u),r.createElement("button",{type:"button",onClick:()=>s(b=>Math.min(e.length-1,b+1)),disabled:o>=e.length-1,className:"flex h-7 w-7 items-center justify-center rounded hover:bg-muted disabled:opacity-30"},r.createElement(J,{name:"chevron-right",size:14})))),r.createElement("div",{className:S("group relative flex min-h-[160px] items-center justify-center overflow-hidden rounded-lg transition-opacity","[background-image:repeating-conic-gradient(#e4e4e4_0%_25%,#f5f5f5_0%_50%)]","dark:[background-image:repeating-conic-gradient(#2a2a2a_0%_25%,#343434_0%_50%)]","[background-size:16px_16px]",!p.enabled&&"opacity-40")},r.createElement("img",{src:f.preview,alt:"",className:"max-h-[160px] max-w-full object-contain"}),r.createElement("div",{className:"absolute right-2 top-2 flex gap-1 opacity-0 transition-opacity group-hover:opacity-100"},r.createElement("a",{href:f.preview,target:"_blank",rel:"noopener noreferrer",title:"Open original",className:"flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80"},r.createElement(J,{name:"external-link",size:13})),r.createElement("button",{type:"button",title:"Crop",onClick:()=>d(!0),className:"flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80"},r.createElement(J,{name:"crop",size:13})))),r.createElement("p",{className:"mt-1.5 truncate font-mono text-xs text-muted-foreground"},f.fileProps.fileName),f.fileProps.srcset&&r.createElement(pc,{srcset:f.fileProps.srcset}),r.createElement("div",{className:"mt-3 flex flex-col gap-1"},r.createElement("label",{className:"text-xs font-medium text-muted-foreground"},"Alt text ",r.createElement("span",{className:"font-normal opacity-60"},"(accessibility & SEO)")),r.createElement("input",{ref:m,type:"text",value:p.alt,onChange:b=>g({alt:b.target.value}),placeholder:"E.g. Team photo at company retreat",className:"h-8 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring"})),r.createElement("div",{className:"mt-2 flex flex-col gap-1"},r.createElement("label",{className:"text-xs font-medium text-muted-foreground"},"Link URL ",r.createElement("span",{className:"font-normal opacity-60"},"(optional)")),r.createElement("div",{className:"flex gap-1.5"},r.createElement("input",{type:"url",value:p.href,onChange:b=>g({href:b.target.value}),placeholder:"https://...",className:"h-8 min-w-0 flex-1 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring"}),r.createElement("select",{value:p.target,onChange:b=>g({target:b.target.value}),disabled:!p.href,className:"h-8 rounded-md border border-input bg-background px-2 text-xs outline-none focus:ring-1 focus:ring-ring disabled:opacity-40"},r.createElement("option",{value:"_blank"},"New tab"),r.createElement("option",{value:"_self"},"Same tab"))))),c&&r.createElement(Mn,{src:f.preview,mode:"modal",title:`Crop — ${f.fileProps.fileName}`,onClose:()=>d(!1),onSave:b=>{n(o,b),d(!1)}}))},Np=({state:e,onConfirm:t,onCancel:n})=>{const[a,o]=r.useState(e.attrs.src??""),[s,l]=r.useState(e.attrs.alt??""),[i,c]=r.useState(e.attrs.href??""),[d,m]=r.useState(e.attrs.target??"_blank"),[u,f]=r.useState(!1),p=r.useRef(null);r.useEffect(()=>{var g;(g=p.current)==null||g.focus()},[]);const h=e.attrs.srcset;return r.createElement(r.Fragment,null,r.createElement(lr,{title:"Edit image",onClose:n,size:"sm",footer:r.createElement("div",{className:"flex justify-end gap-2"},r.createElement("button",{type:"button",onClick:n,className:"h-8 rounded-md px-3 text-sm transition-colors hover:bg-muted"},"Cancel"),r.createElement("button",{type:"button",onClick:()=>t({src:a,alt:s,href:i,target:d,enabled:!0}),className:"h-8 rounded-md bg-primary px-3 text-sm text-primary-foreground transition-colors hover:bg-primary/90"},"Save"))},a&&r.createElement("div",{className:"group relative mb-3 overflow-hidden rounded-lg bg-muted/40"},r.createElement(Va,{src:a,fit:"contain",height:140,wrapperClassName:"w-full",className:"w-full"}),r.createElement("div",{className:"absolute right-2 top-2 flex gap-1 opacity-0 transition-opacity group-hover:opacity-100"},r.createElement("a",{href:a,target:"_blank",rel:"noopener noreferrer",title:"Open original",className:"flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80"},r.createElement(J,{name:"external-link",size:13})),r.createElement("button",{type:"button",title:"Crop",onClick:()=>f(!0),className:"flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80"},r.createElement(J,{name:"crop",size:13})))),h&&r.createElement(pc,{srcset:h}),r.createElement("div",{className:"flex flex-col gap-1"},r.createElement("label",{className:"text-xs font-medium text-muted-foreground"},"Image URL ",r.createElement("span",{className:"font-normal opacity-60"},"(path or https://…)")),r.createElement("input",{type:"url",value:a,onChange:g=>o(g.target.value),placeholder:"https://example.com/image.jpg",className:"h-8 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring"})),r.createElement("div",{className:"mt-2 flex flex-col gap-1"},r.createElement("label",{className:"text-xs font-medium text-muted-foreground"},"Alt text ",r.createElement("span",{className:"font-normal opacity-60"},"(accessibility & SEO)")),r.createElement("input",{ref:p,type:"text",value:s,onChange:g=>l(g.target.value),placeholder:"E.g. Team photo at company retreat",className:"h-8 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring"})),r.createElement("div",{className:"mt-2 flex flex-col gap-1"},r.createElement("label",{className:"text-xs font-medium text-muted-foreground"},"Link URL ",r.createElement("span",{className:"font-normal opacity-60"},"(optional)")),r.createElement("div",{className:"flex gap-1.5"},r.createElement("input",{type:"url",value:i,onChange:g=>c(g.target.value),placeholder:"https://...",className:"h-8 min-w-0 flex-1 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring"}),r.createElement("select",{value:d,onChange:g=>m(g.target.value),disabled:!i,className:"h-8 rounded-md border border-input bg-background px-2 text-xs outline-none focus:ring-1 focus:ring-ring disabled:opacity-40"},r.createElement("option",{value:"_blank"},"New tab"),r.createElement("option",{value:"_self"},"Same tab"))))),u&&r.createElement(Mn,{src:a,mode:"modal",title:"Crop image",onClose:()=>f(!1),onSave:g=>{o(g),f(!1)}}))},xs=(e,t,n)=>Rn(e,t,n,{queryPattern:/^[A-Za-z0-9-]*$/}),Cp=({modules:e,name:t,value:n,outputFormat:a,placeholder:o,disabled:s,toolbar:l,toolbarCommands:i,statusBar:c,minHeight:d,maxHeight:m,imageUpload:u,documentUpload:f,hasError:p,className:h,onEditorChange:g,commands:b,commandsTrigger:y})=>{const{useEditor:E,EditorContent:x}=e[0],{BubbleMenu:N}=e[1],P=e[2].default,D=e[3].default,v=e[4].default,A=e[5].default.extend({addAttributes(){var O;return{...((O=this.parent)==null?void 0:O.call(this))??{},srcset:{default:null},sizes:{default:null},loading:{default:null},decoding:{default:null},href:{default:null},target:{default:null}}},renderHTML({HTMLAttributes:O}){const{href:Y,target:W,...te}=O,re=this.options.HTMLAttributes??{},ge=["img",Object.fromEntries(Object.entries({...re,...te}).filter(([,ue])=>ue!=null))];return Y?["a",{"data-href":Y,"data-target":W??"_blank",rel:"noopener noreferrer"},ge]:ge}}),{Table:I,TableRow:T,TableHeader:C,TableCell:M}=e[6],k=e[7].default,R=e[8].default,[$,j]=r.useState(!1),[z,H]=r.useState(""),[q,F]=r.useState([]),[B,_]=r.useState(null),[,V]=r.useReducer(O=>O+1,0),K=r.useRef(null),ee=r.useRef(null),[se,le]=r.useState({open:!1,query:"",anchorPosition:null,editorContext:null}),ae=r.useRef(se);ae.current=se;const ve=b!=null&&b.length?y??"/":void 0,he=((b==null?void 0:b.length)??0)>=Dn,de=r.useMemo(()=>new Map((b??[]).map(O=>[O.name,O])),[b]),ne=r.useMemo(()=>(b??[]).map(O=>({key:O.name,label:`${ve??"/"}${O.name}`,value:O.name,icon:O.icon})),[b,ve]),pe=(u==null?void 0:u.srcsetWidths)!==void 0?u.srcsetWidths:[400,800],X=In(),fe=co({uploadPath:u==null?void 0:u.path,srcsetWidths:pe,onFileReady:O=>{const Y=O.fileName.replace(/\.[^/.]+$/,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/^(.)/,te=>te.toUpperCase()),W=O.url||(O.base64?`data:${O.type};base64,${O.base64}`:"");F(te=>[...te,{fileProps:O,preview:W,defaultAlt:Y}])}}),Ae=Pn({minHeight:d,maxHeight:m,paddingOffset:16}),Pe=r.useCallback(()=>{le({open:!1,query:"",anchorPosition:null,editorContext:null})},[]),oe=r.useCallback((O,Y)=>{const W=O.state.selection;if(!W.empty)return null;const{$from:te}=W,re=te.parent;if(!re.isTextblock)return null;const xe=re.textContent??"",ge=te.parentOffset,ue=xs(xe,ge,Y);if(!ue)return null;const U=W.from-ge,Ee=U+ue.start,Me=U+ue.end;return{value:O.getText(),textBeforeCaret:xe.slice(0,ge),textAfterCaret:xe.slice(ge),trigger:Y,query:ue.query,triggerRange:{start:Ee,end:Me},insert:$e=>{const{from:Ye,to:Xe}=O.state.selection,Ke=O.state.tr.insertText($e,Ye,Xe);O.view.dispatch(Ke),O.commands.focus()},replace:($e,Ye,Xe)=>{const Ke=O.state.tr.insertText(Xe,$e,Ye);O.view.dispatch(Ke),O.commands.focus()}}},[]),L=E({extensions:[P,D,v.configure({openOnClick:!1,HTMLAttributes:{target:null,rel:"noopener noreferrer nofollow"}}),A.configure({allowBase64:!0}),I.configure({resizable:!0}),T,C,M,k.configure({placeholder:o??""}),R],content:n||"",editable:!s,editorProps:{attributes:{style:`min-height: ${Ae.adjustedMinHeight}px`},handleClick(O,Y,W){var re;if(W.ctrlKey||W.metaKey){const ge=O.state.doc.resolve(Y).marks().find(ue=>ue.type.name==="link");if(ge!=null&&ge.attrs.href)return window.open(ge.attrs.href,"_blank","noopener,noreferrer"),!0}const te=W.target;if(te.tagName==="IMG")try{const xe=O.posAtDOM(te,0),ge=O.state.doc.nodeAt(xe);if((ge==null?void 0:ge.type.name)==="image"){const ue={...ge.attrs};if(!ue.href){const U=(re=ge.marks)==null?void 0:re.find(Ee=>Ee.type.name==="link");U&&(U.attrs.href&&(ue.href=U.attrs.href),U.attrs.target&&(ue.target=U.attrs.target))}return _({pos:xe,attrs:ue}),!0}}catch{}return!1},handleKeyDown(O,Y){var W,te,re,xe;if(!ae.current.open)return!1;switch(Y.key){case"ArrowDown":return Y.preventDefault(),(W=ee.current)==null||W.moveNext(),!0;case"ArrowUp":return Y.preventDefault(),(te=ee.current)==null||te.movePrev(),!0;case"Enter":case"Tab":return Y.preventDefault(),(re=ee.current)==null||re.selectActive(),!0;case"Escape":return Y.preventDefault(),(xe=ee.current)==null||xe.close(),!0;default:return!1}}},onUpdate:({editor:O})=>{const Y=a==="json"?JSON.stringify(O.getJSON()):a==="text"?O.getText():O.getHTML().replace(/<a([^>]*?)data-href="([^"]*?)"/g,'<a$1href="$2"').replace(/data-target="([^"]*?)"/g,'target="$1"');g(Y)}}),Z=r.useRef(n);r.useEffect(()=>{if(!L||n===Z.current)return;Z.current=n;const O=a==="json"?JSON.stringify(L.getJSON()):a==="text"?L.getText():L.getHTML().replace(/<a([^>]*?)data-href="([^"]*?)"/g,'<a$1href="$2"').replace(/data-target="([^"]*?)"/g,'target="$1"');n!==O&&L.commands.setContent(a==="json"&&n?JSON.parse(n):n||"")},[n,L,a]),r.useEffect(()=>{if(L)return L.view.dom.style.minHeight=`${Ae.adjustedMinHeight}px`,L.on("selectionUpdate",V),()=>{L.off("selectionUpdate",V)}},[L,Ae.adjustedMinHeight]),r.useEffect(()=>{if(!L||!ve||$){ae.current.open&&Pe();return}const O=()=>{if(!L.isFocused){ae.current.open&&Pe();return}const Y=L.state.selection;if(!Y.empty){ae.current.open&&Pe();return}const{$from:W}=Y,te=W.parent;if(!te.isTextblock){ae.current.open&&Pe();return}const re=te.textContent??"",xe=W.parentOffset,ge=xs(re,xe,ve);if(!ge){ae.current.open&&Pe();return}const ue=L.view.coordsAtPos(Y.from),U=oe(L,ve);!ue||!U||le({open:!0,query:ge.query,anchorPosition:{top:ue.bottom,left:ue.left},editorContext:U})};return O(),L.on("selectionUpdate",O),L.on("transaction",O),()=>{L.off("selectionUpdate",O),L.off("transaction",O)}},[Pe,L,oe,ve,$]);const Q=r.useCallback(async(O,Y)=>{const W=de.get(O.value);if(W){if(W.handler){const te=await W.handler(_n(Y));Y.replace(Y.triggerRange.start,Y.triggerRange.end,te);return}Y.replace(Y.triggerRange.start,Y.triggerRange.end,`${Y.trigger}${W.name} `)}},[de]),ce=()=>{L&&($?L.commands.setContent(z):H(L.getHTML()),j(O=>!O))},be=O=>new Promise(Y=>{const W=new FileReader;W.onload=te=>{var re;return Y((re=te.target)==null?void 0:re.result)},W.readAsDataURL(O)}),ye=async O=>{if(!L)return;const Y=(f==null?void 0:f.maxBytes)??20971520;for(const W of O){if(W.size>Y){alert(`"${W.name}" exceeds the ${Math.round(Y/1048576)} MB limit.`);continue}let te;if(X&&(f!=null&&f.path))try{te=await X.upload(W,`${f.path}/${W.name}`)??await be(W)}catch{te=await be(W)}else te=await be(W);const re=W.size<1048576?`${Math.round(W.size/1024)} KB`:`${(W.size/1048576).toFixed(1)} MB`;L.chain().focus().insertContent([{type:"text",marks:[{type:"link",attrs:{href:te,target:"_blank",rel:"noopener noreferrer"}}],text:`📎 ${W.name} (${re})`},{type:"text",text:" "}]).run()}},_e=O=>{if(!L)return;const Y=[];O.forEach(({alt:W,href:te,target:re,enabled:xe},ge)=>{if(!xe)return;const ue=q[ge];if(!ue)return;fe.handleRemove(ue.fileProps.key);const U=ue.fileProps.url||ue.preview,Ee={alt:W||null,href:te||null,target:te?re||"_blank":null},Me=ue.fileProps.srcset?{...Ee,src:U,srcset:ue.fileProps.srcset,sizes:ue.fileProps.sizes??"(max-width: 640px) 100vw, 800px",loading:"lazy",decoding:"async"}:{...Ee,src:U};Y.push({type:"image",attrs:Me})}),Y.length&&L.chain().focus().insertContent(Y).run(),F([])},Ie=r.useCallback(async(O,Y)=>{let W="image.jpg";if(F(te=>{var re;return W=((re=te[O])==null?void 0:re.fileProps.fileName)??"image.jpg",te.map((xe,ge)=>ge===O?{...xe,preview:Y,fileProps:{...xe.fileProps,url:Y,srcset:"",sizes:""}}:xe)}),!!pe.length)try{const{variants:te,naturalWidth:re}=await oo(Y,pe),xe=X&&(u!=null&&u.path)?await so(te,X,u.path,W):te.map(Me=>({url:Me.localUrl,width:Me.width})),ge=await fetch(Y).then(Me=>Me.blob()),ue=URL.createObjectURL(ge),U=[...xe,{url:ue,width:re}],Ee=lo(U);F(Me=>Me.map(($e,Ye)=>Ye===O?{...$e,fileProps:{...$e.fileProps,srcset:Ee,sizes:"(max-width: 640px) 100vw, 800px"}}:$e))}catch{}},[pe,X,u==null?void 0:u.path]),Fe=({src:O,alt:Y,href:W,target:te})=>{if(!L||!B)return;const{pos:re,attrs:xe}=B,ge=L.state.doc.nodeAt(re);if((ge==null?void 0:ge.type.name)==="image"){const{tr:ue,schema:U}=L.state,Ee=O!==void 0&&O!==xe.src,Me={...xe,...Ee?{src:O||null,srcset:null,sizes:null}:{},alt:Y||null,href:W||null,target:W?te||"_blank":null},$e=ge.marks??[],Ye=$e.some(Ke=>Ke.type.name==="link");let Xe=$e;W?Ye||(Xe=[...$e,U.marks.link.create({href:W,target:te||"_blank"})]):Xe=$e.filter(Ke=>Ke.type.name!=="link"),ue.setNodeMarkup(re,null,Me,Xe),L.view.dispatch(ue)}_(null)},qe=i.filter(O=>O!=="imageUpload"&&O!=="documentUpload"&&O!=="sourceCode");return r.createElement(r.Fragment,null,q.length>0&&r.createElement(Ep,{items:q,onInsertAll:_e,onCropSave:Ie,onCancel:()=>{q.forEach(O=>fe.handleRemove(O.fileProps.key)),F([])}}),B&&r.createElement(Np,{state:B,onConfirm:Fe,onCancel:()=>_(null)}),r.createElement("div",{className:S("rounded-md border border-input bg-background shadow-sm transition-colors","focus-within:ring-1 focus-within:ring-ring",p&&"border-destructive focus-within:ring-destructive/20",s&&"cursor-not-allowed opacity-50",h)},l==="fixed"&&L&&r.createElement(ws,{editor:L,commands:i,sourceMode:$,onImageUpload:fe.handleUpload,onDocumentUpload:()=>{var O;return(O=K.current)==null?void 0:O.click()},onSourceToggle:ce}),l==="floating"&&L&&r.createElement(N,{editor:L},r.createElement("div",{className:"flex items-center gap-0.5 rounded-md border border-border bg-background px-1 py-0.5 shadow-lg"},r.createElement(ws,{editor:L,commands:qe,sourceMode:$,onImageUpload:fe.handleUpload,onDocumentUpload:()=>{var O;return(O=K.current)==null?void 0:O.click()},onSourceToggle:ce,compact:!0}))),L&&!$&&r.createElement(N,{editor:L,shouldShow:({editor:O,from:Y,to:W})=>Y!==W||!O.isActive("link")?!1:!!O.getAttributes("link").href,options:{placement:"bottom-start",offset:6}},(()=>{const O=L.getAttributes("link").href??"";return r.createElement("div",{className:"flex items-center gap-1.5 rounded-md border border-border bg-background px-2 py-1.5 shadow-md"},r.createElement(J,{name:"link",size:12,className:"shrink-0 text-muted-foreground"}),r.createElement("a",{href:O,target:"_blank",rel:"noopener noreferrer",className:"max-w-[220px] truncate text-xs text-primary underline"},O),r.createElement("div",{className:"mx-0.5 h-3 w-px bg-border"}),r.createElement("button",{type:"button",title:"Edit link",onMouseDown:Y=>{Y.preventDefault();const W=window.prompt("URL",O);W?L.chain().focus().setLink({href:W}).run():W===""&&L.chain().focus().unsetLink().run()},className:"inline-flex h-5 w-5 items-center justify-center rounded transition-colors hover:bg-muted"},r.createElement(J,{name:"pencil",size:11})),r.createElement("button",{type:"button",title:"Remove link",onMouseDown:Y=>{Y.preventDefault(),L.chain().focus().unsetLink().run()},className:"inline-flex h-5 w-5 items-center justify-center rounded transition-colors hover:bg-muted"},r.createElement(J,{name:"unlink",size:11})))})()),L&&!$&&r.createElement(N,{editor:L,shouldShow:({editor:O})=>O.isActive("table"),options:{placement:"top-start",offset:8}},r.createElement(yp,{editor:L})),$?r.createElement("textarea",{"aria-label":`${t} source`,className:"w-full resize-none bg-background px-3 py-2 font-mono text-xs text-foreground outline-none",style:{minHeight:Ae.adjustedMinHeight,maxHeight:m,overflowY:"auto"},value:z,onChange:O=>H(O.target.value)}):(()=>{const O=r.createElement("div",{style:Ae.wrapperStyle,className:S("w-full px-3 py-2 text-sm","[&_.ProseMirror]:outline-none","[&_.ProseMirror_p]:my-1","[&_.ProseMirror_h1]:my-2 [&_.ProseMirror_h1]:text-2xl [&_.ProseMirror_h1]:font-bold","[&_.ProseMirror_h2]:my-2 [&_.ProseMirror_h2]:text-xl [&_.ProseMirror_h2]:font-semibold","[&_.ProseMirror_h3]:my-1 [&_.ProseMirror_h3]:text-lg [&_.ProseMirror_h3]:font-semibold","[&_.ProseMirror_ul]:list-disc [&_.ProseMirror_ul]:pl-6","[&_.ProseMirror_ol]:list-decimal [&_.ProseMirror_ol]:pl-6","[&_.ProseMirror_blockquote]:my-2 [&_.ProseMirror_blockquote]:border-l-4 [&_.ProseMirror_blockquote]:border-border [&_.ProseMirror_blockquote]:pl-4 [&_.ProseMirror_blockquote]:text-muted-foreground","[&_.ProseMirror_code]:rounded [&_.ProseMirror_code]:bg-muted [&_.ProseMirror_code]:px-1 [&_.ProseMirror_code]:font-mono [&_.ProseMirror_code]:text-xs","[&_.ProseMirror_pre]:my-2 [&_.ProseMirror_pre]:overflow-x-auto [&_.ProseMirror_pre]:rounded [&_.ProseMirror_pre]:bg-muted [&_.ProseMirror_pre]:p-3","[&_.ProseMirror_table]:w-full [&_.ProseMirror_table]:border-collapse","[&_.ProseMirror_td]:border [&_.ProseMirror_td]:border-border [&_.ProseMirror_td]:px-2 [&_.ProseMirror_td]:py-1","[&_.ProseMirror_th]:border [&_.ProseMirror_th]:border-border [&_.ProseMirror_th]:bg-muted [&_.ProseMirror_th]:px-2 [&_.ProseMirror_th]:py-1 [&_.ProseMirror_th]:font-semibold","[&_.ProseMirror_a]:text-primary [&_.ProseMirror_a]:underline [&_.ProseMirror_a]:pointer-events-none","[&_.ProseMirror_a_img]:pointer-events-auto","[&_.ProseMirror_.is-editor-empty:first-child::before]:pointer-events-none [&_.ProseMirror_.is-editor-empty:first-child::before]:float-left [&_.ProseMirror_.is-editor-empty:first-child::before]:h-0 [&_.ProseMirror_.is-editor-empty:first-child::before]:text-muted-foreground [&_.ProseMirror_.is-editor-empty:first-child::before]:content-[attr(data-placeholder)]")},r.createElement(x,{editor:L}));return ve&&ne.length>0?r.createElement(ut,{ref:ee,trigger:ve,searchable:he,controlled:se.editorContext?{open:se.open,anchorPosition:se.anchorPosition,query:se.query,editorContext:se.editorContext,onClose:Pe}:void 0,onSelect:(Y,W)=>{Q(Y,W)}},ne.map(Y=>r.createElement(ut.Item,{key:Y.key,label:Y.label,value:Y.value,icon:Y.icon})),O):O})(),c&&L&&r.createElement(xp,{editor:L,config:c}),r.createElement("input",{ref:fe.fileInputRef,type:"file",multiple:!0,accept:(u==null?void 0:u.accept)??"image/*",className:"hidden",onChange:O=>{const Y=(u==null?void 0:u.maxBytes)??10485760,te=Array.from(O.target.files??[]).find(re=>re.size>Y);if(te){alert(`"${te.name}" exceeds the ${Math.round(Y/1048576)} MB limit.`),O.target.value="";return}fe.handleUploadChange(O)}}),r.createElement("input",{ref:K,type:"file",multiple:!0,accept:(f==null?void 0:f.accept)??".pdf,.doc,.docx,.txt,.csv",className:"hidden",onChange:O=>{const Y=Array.from(O.target.files??[]);Y.length&&ye(Y),O.target.value=""}})))},kp=({name:e,onChange:t=void 0,defaultValue:n=void 0,label:a=void 0,required:o=!1,placeholder:s=void 0,disabled:l=!1,feedback:i=void 0,toolbar:c="fixed",toolbarCommands:d=mp,outputFormat:m="html",statusBar:u=!1,minHeight:f=120,maxHeight:p=void 0,imageUpload:h=void 0,documentUpload:g=void 0,labelClassName:b=void 0,inheritWrapperClassName:y=!0,wrapperClassName:E=void 0,className:x=void 0,before:N=void 0,after:P=void 0,validator:D=void 0,commands:v=void 0,commandsTrigger:w=void 0})=>{const{value:A,handleChange:I,formWrapClass:T}=Ve({name:e,onChange:t,wrapperClassName:E,defaultValue:n,inheritWrapperClassName:y}),C=dt(e,{required:o,label:a,validator:D}),M=r.useId(),[k,R]=r.useState(dn);r.useEffect(()=>{k||up().then(R)},[k]);const $=r.useCallback(z=>{I==null||I({target:{name:e,value:z}})},[I,e]),j=u===!1?!1:fp(u);return r.createElement(Ne,{className:T},a&&r.createElement(rt,{label:a,required:o,htmlFor:M,className:b}),r.createElement("div",{className:S(N||P?Lt:"")},N&&r.createElement("span",{className:S(or,"rounded-l-md rounded-r-none border-r-0")},N),r.createElement("div",{className:"min-w-0 flex-1"},k?r.createElement(Cp,{modules:k,name:e,value:A??"",outputFormat:m,placeholder:s,disabled:l,toolbar:c,toolbarCommands:d,statusBar:j,minHeight:f,maxHeight:p,imageUpload:h,documentUpload:g,hasError:!!C,className:x,onEditorChange:$,commands:v,commandsTrigger:w}):r.createElement("div",{className:S("rounded-md border border-input bg-muted/30 shadow-sm",C&&"border-destructive"),style:{minHeight:f},"aria-busy":"true","aria-label":a})),P&&r.createElement("span",{className:S(or,"rounded-l-none rounded-r-md border-l-0")},P)),C?r.createElement(tt,{message:C}):i&&r.createElement("div",{className:St},i))};function Sp(e){return e?typeof e=="string"?r.createElement(J,{name:e,size:16}):e:null}function Ap({title:e=void 0,description:t=void 0,meta:n=void 0,badge:a=void 0,icon:o=void 0,trailing:s=void 0,footer:l=void 0,children:i=void 0,href:c=void 0,external:d=!1,active:m=!1,disabled:u=!1,dashed:f=!1,compact:p=!1,align:h="start",onClick:g=void 0,before:b=void 0,after:y=void 0,wrapperClassName:E=void 0,className:x=void 0,titleClassName:N=void 0,descriptionClassName:P=void 0,metaClassName:D=void 0,badgeClassName:v=void 0,leadingClassName:w=void 0,bodyClassName:A=void 0,headerClassName:I=void 0,trailingClassName:T=void 0,footerClassName:C=void 0,style:M=void 0,motion:k=void 0}){var V;const R=we(),$=!!c||!!g,j=Xr(u||!$,M,k??((V=R.ListCard.motion)==null?void 0:V.press)??"press"),z=Sp(o),H=l??i,q=S("flex w-full gap-3 rounded-xl border border-border/60 bg-background p-4 text-left transition-[background-color,border-color,box-shadow,color] duration-150",h==="center"?"items-center":"items-start",$&&!u&&"cursor-pointer",R.ListCard.className,m?R.ListCard.activeClassName:R.ListCard.inactiveClassName,u&&R.ListCard.disabledClassName,f&&R.ListCard.dashedClassName,p&&R.ListCard.compactClassName,x),F=r.createElement(r.Fragment,null,z?r.createElement("div",{className:S("mt-0.5 flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary",h==="center"&&"mt-0",R.ListCard.leadingClassName,w)},z):null,r.createElement("div",{className:S("min-w-0 flex-1",R.ListCard.bodyClassName,A)},e||a?r.createElement("div",{className:S("flex items-center gap-2",R.ListCard.headerClassName,I)},e?r.createElement("div",{className:S("min-w-0 flex-1 truncate text-sm font-semibold text-foreground",R.ListCard.titleClassName,N)},e):r.createElement("div",{className:"flex-1"}),a?r.createElement("div",{className:S("shrink-0",R.ListCard.badgeClassName,v)},a):null):null,t?r.createElement("div",{className:S("mt-1 text-sm text-muted-foreground",R.ListCard.descriptionClassName,P)},t):null,n?r.createElement("div",{className:S("mt-1 text-xs text-muted-foreground",R.ListCard.metaClassName,D)},n):null,H?r.createElement("div",{className:S("mt-3",R.ListCard.footerClassName,C)},H):null),s?r.createElement("div",{className:S("shrink-0 self-center",R.ListCard.trailingClassName,T)},s):null),B=K=>{if(u){K.preventDefault(),K.stopPropagation();return}g==null||g(K)};let _;return c&&!u?_=d?r.createElement("a",{href:c,target:"_blank",rel:"noreferrer noopener",className:q,style:j.style,...j.pressHandlers,onClick:B},F):r.createElement(De.Link,{to:c,className:q,style:j.style,...j.pressHandlers,onClick:B},F):$?_=r.createElement("button",{type:"button",className:q,style:j.style,disabled:u,...j.pressHandlers,onClick:B},F):_=r.createElement("div",{className:q,style:M,"aria-disabled":u||void 0},F),r.createElement(Ne,{className:S(R.ListCard.wrapperClassName,E)},b,_,y)}const Es=208,Ns=52;function gc(e){return e.map(t=>({path:t.path,title:t.title,icon:t.icon,group:t.group,end:t.end,badge:t.badge,children:t.children?gc(t.children):void 0}))}function wn(e,t,n){return n?e===t:e===t||t!=="/"&&e.startsWith(t+"/")}function Pp(e){const t=new Map;for(const n of e){const a=n.group??"General";t.has(a)||t.set(a,[]),t.get(a).push(n)}return[...t.entries()].map(([n,a])=>({key:n,items:a}))}function ga({value:e}){const t=we();return r.createElement("span",{className:S("ml-auto shrink-0 text-[10px] font-semibold leading-none px-1.5 py-[3px] rounded-full bg-primary/15 text-primary",t.SideNav.itemBadgeClassName)},e)}function Ip({children:e,open:t}){const{pathname:n}=De.useLocation(),a=we();return r.createElement("div",{style:{maxHeight:t?`${e.length*34+8}px`:"0px",overflow:"hidden",transition:"max-height 200ms ease"}},r.createElement("div",{className:"py-0.5 space-y-0.5"},e.map(o=>{const s=wn(n,o.path,o.end);return r.createElement(De.Link,{key:o.path,to:o.path,className:S("flex items-center rounded-md pl-9 pr-3 py-[6px] text-sm transition-colors",a.SideNav.subItemClassName,s?a.SideNav.subItemActiveClassName:a.SideNav.subItemInactiveClassName)},r.createElement("span",{className:"flex-1 truncate"},o.title),o.badge!==void 0&&r.createElement(ga,{value:o.badge}))})))}function Mp({item:e,expanded:t,open:n,showIcons:a,onToggle:o}){var h;const{pathname:s}=De.useLocation(),l=we(),i=(((h=e.children)==null?void 0:h.length)??0)>0,c=wn(s,e.path,e.end),d=i&&e.children.some(g=>wn(s,g.path,g.end)),m=c?l.SideNav.itemActiveClassName:d?l.SideNav.itemChildActiveClassName:l.SideNav.itemInactiveClassName,u=a?r.createElement("span",{className:S("relative shrink-0 flex items-center justify-center w-[18px] h-[18px]",l.SideNav.itemIconClassName)},e.icon?r.createElement(J,{name:e.icon,size:17}):r.createElement("span",{className:"w-1.5 h-1.5 rounded-full bg-current opacity-30"}),!t&&e.badge!==void 0&&r.createElement("span",{className:S("absolute -top-0.5 -right-1 w-[7px] h-[7px] rounded-full bg-primary ring-1 ring-background",l.SideNav.itemCollapsedBadgeClassName)})):null,f={opacity:t?1:0,maxWidth:t?"200px":"0px",overflow:"hidden",whiteSpace:"nowrap",transition:"opacity 150ms ease, max-width 200ms ease"},p=S("flex items-center w-full rounded-md px-2 py-[7px] text-sm transition-colors gap-2.5",l.SideNav.itemClassName);return i?r.createElement("div",null,r.createElement("div",{className:"flex items-center gap-0.5"},r.createElement(De.Link,{to:e.path,title:t?void 0:e.title,className:S("flex-1 flex items-center gap-2.5 rounded-md px-2 py-[7px] text-sm transition-colors",l.SideNav.itemClassName,m)},u,r.createElement("span",{style:f,className:l.SideNav.itemTextClassName},e.title),t&&e.badge!==void 0&&r.createElement(ga,{value:e.badge})),t&&r.createElement("button",{onClick:()=>o(e.path),className:S("shrink-0 flex items-center justify-center w-6 h-6 rounded transition-colors text-muted-foreground/50 hover:text-foreground hover:bg-accent",l.SideNav.itemToggleClassName),title:n?"Collapse":"Expand"},r.createElement("span",{style:{transform:n?"rotate(180deg)":"rotate(0deg)",transition:"transform 200ms ease"}},r.createElement(J,{name:"chevron-down",size:13})))),t&&r.createElement(Ip,{children:e.children,open:n})):r.createElement(De.Link,{to:e.path,title:t?void 0:e.title,className:S(p,m)},u,r.createElement("span",{style:f,className:l.SideNav.itemTextClassName},e.title),t&&e.badge!==void 0&&r.createElement(ga,{value:e.badge}))}function Cs({group:e,expanded:t,openItems:n,showIcons:a,onToggle:o}){const s=e.key==="General",l=we();return r.createElement("div",{className:"mb-1"},!s&&r.createElement("div",{style:{height:t?void 0:"1px"},className:t?"px-2 pb-0.5 pt-3 first:pt-1":S("mx-2 my-2 bg-border/40",l.SideNav.groupDividerClassName)},t&&r.createElement("span",{className:S("text-[10.5px] font-semibold uppercase tracking-widest text-muted-foreground/50 select-none",l.SideNav.groupLabelClassName)},e.key)),r.createElement("div",{className:"space-y-0.5"},e.items.map(i=>r.createElement(Mp,{key:i.path,item:i,expanded:t,open:n.has(i.path),showIcons:a,onToggle:o}))))}function Tp({menuKey:e,items:t,defaultCollapsed:n=!1,showIcons:a=!0,showCollapseButton:o=!0,footer:s,header:l,embedded:i=!1}){const{pathname:c}=De.useLocation(),d=we(),m=Do(e??""),u=t??(e?gc(m):[]),[f,p]=r.useState(n),[h,g]=r.useState(!1),[b,y]=r.useState(new Set),E=r.useRef(null),x=!f||h;r.useEffect(()=>{y(w=>{const A=new Set(w);return u.forEach(I=>{var T;(T=I.children)!=null&&T.some(C=>wn(c,C.path,C.end))&&A.add(I.path)}),A})},[c]);const N=r.useCallback(w=>{y(A=>{const I=new Set(A);return I.has(w)?I.delete(w):I.add(w),I})},[]),P=()=>{f&&(E.current&&clearTimeout(E.current),g(!0))},D=()=>{f&&(E.current=setTimeout(()=>g(!1),80))};if(u.length===0)return null;const v=Pp(u);return i?r.createElement("nav",{className:S("px-1.5 py-2",d.SideNav.navClassName)},v.map(w=>r.createElement(Cs,{key:w.key,group:w,expanded:!0,openItems:b,showIcons:a,onToggle:N}))):r.createElement("div",{className:S("min-h-0",d.SideNav.wrapperClassName),style:{width:f?Ns:Es,height:"100%",transition:"width 220ms cubic-bezier(0.4,0,0.2,1)",flexShrink:0,position:"relative"}},r.createElement("aside",{style:{width:x?Es:Ns,transition:"width 220ms cubic-bezier(0.4,0,0.2,1)",position:f?"absolute":"sticky",top:0,zIndex:f&&h?50:10,boxShadow:f&&h?"4px 0 24px rgba(0,0,0,0.10)":"none",height:"100%",overflowX:"hidden",overflowY:"hidden"},className:S("flex min-h-0 flex-col border-r bg-background",d.SideNav.shellClassName,f&&h&&d.SideNav.overlayClassName),onMouseEnter:P,onMouseLeave:D},l&&r.createElement("div",{className:S("flex h-14 shrink-0 items-center border-b px-1.5",d.SideNav.headerClassName),style:{opacity:x?1:0,maxWidth:x?"100%":"0px",overflow:"hidden",transition:"opacity 150ms ease, max-width 200ms ease"}},r.createElement("div",{className:"min-w-0 flex-1"},l)),r.createElement("nav",{className:S("min-h-0 flex-1 overflow-y-auto overflow-x-hidden px-1.5 py-2",d.SideNav.navClassName)},v.map(w=>r.createElement(Cs,{key:w.key,group:w,expanded:x,openItems:b,showIcons:a,onToggle:N}))),(o||s)&&r.createElement("div",{className:S("shrink-0 border-t px-1.5 py-2 flex items-center gap-1",d.SideNav.footerClassName)},o&&r.createElement("button",{onClick:()=>{p(w=>!w),g(!1)},title:f?"Expand sidebar":"Collapse sidebar",className:S("shrink-0 flex items-center justify-center rounded-md w-8 h-8 transition-colors text-muted-foreground hover:text-foreground hover:bg-accent",d.SideNav.collapseButtonClassName)},r.createElement(J,{name:f?"chevrons-right":"chevrons-left",size:16})),s&&r.createElement("div",{style:{flex:1,minWidth:0,opacity:x?1:0,maxWidth:x?"100%":"0px",overflow:"hidden",transition:"opacity 150ms ease, max-width 200ms ease"}},s))))}function Dp({path:e,where:t,order:n,fieldMap:a}){const o=$t(),[s,l]=r.useState([]),i=r.useMemo(()=>{if(!(!t&&!n&&!a))return{where:t,order:n,fieldMap:a}},[a,n,t]);return r.useEffect(()=>o.subscribe(e,l,i),[o,i,e]),s}function Rp(e){if(e)return e}function hc({path:e,fromUrl:t,where:n,order:a,fieldMap:o,recordId:s=je,...l}){const i=De.useLocation(),c=t?Rp(i.pathname):e,d=Dp({path:c,where:n,order:a,fieldMap:o}),m=r.useMemo(()=>{if(!a)return;const f=Object.entries(a)[0];if(!f)return;const[p,h]=f;return{field:p,dir:h}},[a]),u=l.sortable===void 0||l.sortable===!0?m??l.sortable:l.sortable;return r.createElement(Po,{...l,records:d,recordId:s,sourcePath:c,sortable:u})}const ks=e=>e.replace(/[^a-zA-Z0-9_-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),ko=e=>t=>{if(typeof e=="function")return String(e(t));const n=t[e];return n==null||n===""?"":String(n)},_p=(e,t)=>{if(e==null||e==="text")return t;if(e==="boolean")return t?"Yes":"No";if(e==="json")return t==null?"":JSON.stringify(t,null,2);if(e==="badge"||e==="image"||e==="email")return t;const a=Ue[e==="datetime"?"dateTime":e];return a?a(t):t},Fp=(e,t)=>typeof e.render=="function"?e.render(t):_p(e.render,t.value),Ss=e=>({key:e,label:Ue.toCamel(e," "),sortable:!0}),Op=(e,t)=>{const n=[],a=o=>{r.Children.forEach(o,s=>{if(!r.isValidElement(s))return;const{props:l}=s;l.name?n.push(t(l)):l.children&&a(l.children)})};return a(Array.isArray(e)?e:[e]),n},$p=(e,t,n)=>{if(e!=null&&e.length)return e;if(r.isValidElement(n)){const o=Op(n,s=>Ss(s.name));if(o.length>0)return o}const a=t[0];return a?Object.entries(a).reduce((o,[s,l])=>(s.startsWith("_")||(r.isValidElement(l)||typeof l!="object"||Array.isArray(l))&&o.push(Ss(s)),o),[]):[]},Lp=(e,t)=>Array.isArray(e)?e.reduce((n,a)=>(a==="delete"?n[a]={kind:"delete"}:n[a]={kind:"modal"},n),{}):e?Object.entries(e).reduce((n,[a,o])=>(o&&(n[a]=o),n),{}):t?{add:{kind:"modal"},edit:{kind:"modal"},delete:{kind:"delete"}}:{},ha=(e,t)=>e!=null&&e.visible?typeof e.visible=="function"?e.visible(t):e.visible:!0,bc=(e,t)=>e!=null&&e.disabled?typeof e.disabled=="function"?e.disabled(t):e.disabled:!1,ba=(e,t,n)=>t!=null&&t.label?t.label:e==="add"?(n==null?void 0:n.add)??"Add":e==="edit"?(n==null?void 0:n.edit)??"Edit":e==="delete"?(n==null?void 0:n.delete)??"Delete":Ue.toCamel(e," "),jp=e=>{if(!(!e||typeof e=="boolean"))return e};function vc({records:e,recordId:t,columns:n,runAction:a,sortable:o,pagination:s,selection:l=!1,selectedKeys:i,onSelectionChange:c,onRowClick:d,reorderable:m=!1,onReorder:u,activeKey:f,groupBy:p,wrapperClassName:h,before:g,after:b}){const y=r.useMemo(()=>ko(t),[t]),E=r.useRef(new Map),x=r.useMemo(()=>e.reduce((D,v)=>(D.set(y(v),v),D),new Map),[y,e]),N=r.useMemo(()=>n.reduce((D,v)=>(D.set(String(v.key),v),D),new Map),[n]);r.useEffect(()=>{const D=new Set(e.map(v=>y(v)));for(const v of E.current.keys())D.has(v)||E.current.delete(v)},[y,e]);const P=r.useCallback((D,v,w)=>{const A=D,I=y(A),T=N.get(v);if(!T)return Lr(A,v);const C=Lr(A,v),M=E.current.get(I)??new Map,k=M.get(v),R=typeof T.render=="function";if(k&&k.recordRef===A&&k.valueRef===C&&k.renderRef===T.render&&(!R||k.rowIndex===w))return k.output;const $=Fp(T,{record:A,value:C,key:v,rowIndex:w,runAction:j=>a(j,A)});return M.set(v,{recordRef:A,valueRef:C,renderRef:T.render,rowIndex:w,output:$}),E.current.set(I,M),$},[N,y,a]);return r.createElement(mc,{columns:n.map(D=>({key:String(D.key),label:D.label,className:D.className,sort:D.sortable})),records:e,sortable:o,pagination:s,renderCell:P,selection:l==="single"?"single":"multiple",selectedKeys:l?i:void 0,onSelectionChange:l?D=>{const v=new Set(D.keys);let A=e.filter(C=>v.has(y(C))),I=D.keys;if(l==="single"&&D.keys.length>1){const C=D.keys[D.keys.length-1];I=C?[C]:[],A=C?x.get(C)?[x.get(C)]:[]:[]}const T={keys:I,records:A,hasSelection:I.length>0,clear:()=>c==null?void 0:c({keys:[],records:[],hasSelection:!1,clear:()=>{}})};c==null||c(T)}:void 0,onRowClick:d?D=>{const v=y(D),w=x.get(v);w&&d(w)}:void 0,onReorder:m&&u?(D,v)=>{const w=D.map(I=>x.get(y(I))).filter(Boolean),A=x.get(y(v.record));A&&u(w,{fromIndex:v.fromIndex,toIndex:v.toIndex,record:A})}:void 0,activeKey:f,groupBy:p,wrapperClassName:h,before:g,after:b})}const yc=r.createContext(null);let As=0;const va="LLM Native",ya={charset:"UTF-8",viewport:"width=device-width, initial-scale=1.0"},wa={lang:"en"};function wc(e,t){return t.includes(":")?t:`${e}:${t}`}function Bp(e){return Array.isArray(e)?e.join(", "):e}function zp(e){return e==="siteName"?"og:site_name":wc("og",e)}function Up(e){return[...e.canonical?[{rel:"canonical",href:e.canonical}]:[],...e.ampHtml?[{rel:"amphtml",href:e.ampHtml}]:[],...e.sitemap?[{rel:"sitemap",href:e.sitemap,type:"application/xml"}]:[],...e.links??[]]}function Hp(e){return[...e.prev?[{rel:"prev",href:e.prev}]:[],...e.next?[{rel:"next",href:e.next}]:[]]}function Vp(e){return(e.alternates??[]).map(t=>({rel:"alternate",href:t.href,hrefLang:t.hrefLang,media:t.media,type:t.type,title:t.title}))}function Kp(e,t,n){var a;return{name:{description:e.description,...e.meta??{},robots:n.robots??((a=e.meta)==null?void 0:a.robots),googlebot:n.googlebot,keywords:Bp(n.keywords),author:n.author,publisher:n.publisher,referrer:n.referrer,...n.meta??{},...Object.fromEntries(Object.entries(t.twitter??{}).map(([o,s])=>[wc("twitter",o),s]))},property:Object.fromEntries(Object.entries(t.openGraph??{}).map(([o,s])=>[zp(o),s]))}}function Gp(e,t,n,a){return[...Up(t),...Hp(a),...Vp(n),...e.canonical&&!t.canonical?[{rel:"canonical",href:e.canonical}]:[],...e.links??[]]}function qp(e){return[...(e.fonts??[]).flatMap(t=>[...(t.dnsPrefetch??[]).map(n=>({rel:"dns-prefetch",href:n})),...(t.preconnect??[]).map(n=>({rel:"preconnect",href:n,crossOrigin:t.crossOrigin})),...t.preload?[{rel:"preload",href:t.href,as:t.as??"font",type:t.type,media:t.media,crossOrigin:t.crossOrigin}]:[],{rel:"stylesheet",href:t.href,media:t.media,crossOrigin:t.crossOrigin}])]}function Yp(e){return[...e.manifest?[{rel:"manifest",href:e.manifest}]:[],...e.favicon?[{rel:"icon",href:e.favicon}]:[],...e.appleTouchIcon?[{rel:"apple-touch-icon",href:e.appleTouchIcon}]:[],...e.icons??[]]}function Wp(e){return{"theme-color":e.themeColor,"msapplication-TileColor":e.backgroundColor,"color-scheme":e.colorScheme,"application-name":e.applicationName,"mobile-web-app-capable":e.mobileWebAppCapable===void 0?void 0:String(e.mobileWebAppCapable),"apple-mobile-web-app-capable":e.appleMobileWebAppCapable===void 0?void 0:String(e.appleMobileWebAppCapable),"apple-mobile-web-app-title":e.appleMobileWebAppTitle,"apple-mobile-web-app-status-bar-style":e.appleMobileWebAppStatusBarStyle}}function Jp(e){return Array.isArray(e.jsonLd)?e.jsonLd:e.jsonLd?[e.jsonLd]:[]}function Xp(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>!!t))}function Zp(e){const{inline:t,...n}=e;return Object.fromEntries(Object.entries(n).filter(([,a])=>a!==void 0&&a!==!1))}function Qp(e){const{inline:t,...n}=e;return Object.fromEntries(Object.entries(n).filter(([,a])=>a!==void 0&&a!==!1))}function eg({appName:e,metadata:t,social:n,links:a,pagination:o,language:s,document:l,assets:i,pwa:c,schemaOrg:d}){var h,g;if(typeof globalThis.document>"u")return null;const m=Kp(t,n,l),u=Wp(c),f=[...Gp(a,l,s,o),...qp(i),...Yp(c)],p=Jp(d);return _t.createPortal(r.createElement(r.Fragment,null,l.charset?r.createElement("meta",{charSet:l.charset,"data-rfs-head":"document"}):null,(h=l.base)!=null&&h.href||(g=l.base)!=null&&g.target?r.createElement("base",{href:l.base.href,target:l.base.target,"data-rfs-head":"document"}):null,l.viewport?r.createElement("meta",{name:"viewport",content:l.viewport,"data-rfs-head":"document"}):null,Object.entries(l.httpEquiv??{}).map(([b,y])=>y?r.createElement("meta",{key:`http-equiv:${b}`,httpEquiv:b,content:y,"data-rfs-head":"document"}):null),Object.entries(m.name).map(([b,y])=>y?r.createElement("meta",{key:`name:${b}`,name:b,content:y,"data-rfs-head":"meta"}):null),Object.entries(m.property).map(([b,y])=>y?r.createElement("meta",{key:`property:${b}`,property:b,content:y,"data-rfs-head":"meta"}):null),Object.entries(u).map(([b,y])=>y?r.createElement("meta",{key:`pwa:${b}`,name:b,content:y,"data-rfs-head":"pwa"}):null),f.map((b,y)=>r.createElement("link",{key:`${b.rel}:${b.href??y}`,...Xp(b),"data-rfs-head":"link"})),(i.styles??[]).map((b,y)=>r.createElement(r.Fragment,{key:`style:${b.href??y}`},b.href?r.createElement("link",{rel:"stylesheet",href:b.href,...Qp(b),"data-rfs-head":"asset-style"}):null,b.inline?r.createElement("style",{id:b.id,nonce:b.nonce,media:b.media,title:b.title,"data-rfs-head":"asset-style"},b.inline):null)),(i.scripts??[]).map((b,y)=>r.createElement(r.Fragment,{key:`script:${b.src??y}`},b.src?r.createElement("script",{...Zp(b),"data-rfs-head":"asset-script"}):null,b.inline?r.createElement("script",{type:b.type,id:b.id,nonce:b.nonce,"data-rfs-head":"asset-script"},b.inline):null)),p.map((b,y)=>r.createElement("script",{key:`schema-org:${y}`,type:"application/ld+json","data-rfs-head":"schema-org"},JSON.stringify(b)))),globalThis.document.head)}function xc({appName:e=va,children:t}){const n=e||va,a=r.useRef(typeof globalThis.document>"u"?"":globalThis.document.documentElement.lang),o=r.useRef(typeof globalThis.document>"u"?"":globalThis.document.documentElement.dir),[s,l]=r.useState({}),[i,c]=r.useState([]),[d,m]=r.useState({}),[u,f]=r.useState({}),[p,h]=r.useState({}),[g,b]=r.useState(wa),[y,E]=r.useState(ya),[x,N]=r.useState({}),[P,D]=r.useState({}),[v,w]=r.useState({}),A=r.useCallback(()=>l({}),[]),I=r.useCallback((B,_)=>{c(V=>[...V.filter(ee=>ee.id!==B),{id:B,metadata:_}])},[]),T=r.useCallback(B=>{c(_=>_.filter(V=>V.id!==B))},[]),C=r.useCallback(()=>m({}),[]),M=r.useCallback(()=>f({}),[]),k=r.useCallback(()=>h({}),[]),R=r.useCallback(()=>b(wa),[]),$=r.useCallback(()=>E(ya),[]),j=r.useCallback(()=>N({}),[]),z=r.useCallback(()=>D({}),[]),H=r.useCallback(()=>w({}),[]);r.useEffect(()=>{typeof globalThis.document>"u"||(globalThis.document.documentElement.lang=g.lang??a.current,globalThis.document.documentElement.dir=g.dir??o.current)},[g.lang,g.dir]);const q=i.length>0?i[i.length-1].metadata:s;r.useEffect(()=>{typeof globalThis.document>"u"||(globalThis.document.title=q.title??n)},[q.title,n]);const F=r.useMemo(()=>({metadata:q,social:d,links:u,pagination:p,language:g,document:y,assets:x,pwa:P,schemaOrg:v,setPageMetadata:l,clearPageMetadata:A,setPageMetadataEntry:I,clearPageMetadataEntry:T,setSocialHead:m,clearSocialHead:C,setHeadLinks:f,clearHeadLinks:M,setPaginationHead:h,clearPaginationHead:k,setLanguageHead:b,clearLanguageHead:R,setDocumentHead:E,clearDocumentHead:$,setAssetsHead:N,clearAssetsHead:j,setPwaHead:D,clearPwaHead:z,setSchemaOrg:w,clearSchemaOrg:H}),[q,d,u,p,g,y,x,P,v,A,I,T,C,M,k,R,$,j,z,H]);return r.createElement(yc.Provider,{value:F},t,r.createElement(eg,{appName:n,metadata:q,social:d,links:u,pagination:p,language:g,document:y,assets:x,pwa:P,schemaOrg:v}))}function At(){return r.useContext(yc)}function Pt(e){return JSON.stringify(e??{})}function So(e){const t=At(),n=r.useRef(null);n.current||(As+=1,n.current=`metadata-${As}`);const a=Pt(e);return r.useEffect(()=>{if(!t||!e)return;const o=n.current;return t.setPageMetadataEntry(o,e),()=>t.clearPageMetadataEntry(o)},[t==null?void 0:t.setPageMetadataEntry,t==null?void 0:t.clearPageMetadataEntry,a]),t}function tg(e){const t=At(),n=Pt(e);return r.useEffect(()=>{if(!t||!e)return;const a=t.social;return t.setSocialHead(e),()=>t.setSocialHead(a)},[t==null?void 0:t.setSocialHead,n]),t}function rg(e){const t=At(),n=Pt(e);return r.useEffect(()=>{if(!t||!e)return;const a=t.links;return t.setHeadLinks(e),()=>t.setHeadLinks(a)},[t==null?void 0:t.setHeadLinks,n]),t}function ng(e){const t=At(),n=Pt(e);return r.useEffect(()=>{if(!t||!e)return;const a=t.pagination;return t.setPaginationHead(e),()=>t.setPaginationHead(a)},[t==null?void 0:t.setPaginationHead,n]),t}function ag(e){const t=At(),n=Pt(e);return r.useEffect(()=>{if(!t||!e)return;const a=t.language;return t.setLanguageHead(e),()=>t.setLanguageHead(a)},[t==null?void 0:t.setLanguageHead,n]),t}function og(e){const t=At(),n=Pt(e);return r.useEffect(()=>{if(!t||!e)return;const a=t.document;return t.setDocumentHead({...a,...e}),()=>t.setDocumentHead(a)},[t==null?void 0:t.setDocumentHead,n]),t}function sg(e){const t=At(),n=Pt(e);return r.useEffect(()=>{if(!t||!e)return;const a=t.assets;return t.setAssetsHead(e),()=>t.setAssetsHead(a)},[t==null?void 0:t.setAssetsHead,n]),t}function lg(e){const t=At(),n=Pt(e);return r.useEffect(()=>{if(!t||!e)return;const a=t.pwa;return t.setPwaHead(e),()=>t.setPwaHead(a)},[t==null?void 0:t.setPwaHead,n]),t}function ig(e){const t=At(),n=Pt(e);return r.useEffect(()=>{if(!t||!e)return;const a=t.schemaOrg;return t.setSchemaOrg(e),()=>t.setSchemaOrg(a)},[t==null?void 0:t.setSchemaOrg,n]),t}function cg(e){return So(e),null}const xa=e=>/^(https?:)?\/\//.test(e)||e.startsWith("mailto:")||e.startsWith("tel:"),dg=e=>!!e&&!xa(e)&&!e.startsWith("#"),ug=e=>e.startsWith("#"),Ea=e=>typeof e=="string"||typeof e=="number"?String(e):Array.isArray(e)?e.map(Ea).join(""):r.isValidElement(e)?Ea(e.props.children):"",mg=e=>{if(!r.isValidElement(e))return;const t=/language-([\w-]+)/.exec(e.props.className||"");return t==null?void 0:t[1]};function fg({code:e,language:t}){const[n,a]=r.useState(!1),o=Te("code"),s=()=>{Ma(e),a(!0),window.setTimeout(()=>a(!1),1600)};return r.createElement("div",{className:"relative my-4 overflow-hidden rounded-md border bg-muted/50"},r.createElement("div",{className:"flex h-9 items-center justify-between border-b px-3"},r.createElement("span",{className:"text-xs font-medium text-muted-foreground"},t||o.codeLanguageDefault),r.createElement("button",{type:"button",className:"rounded border bg-background px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",onClick:s},n?o.copied:o.copy)),r.createElement("pre",{className:"m-0 overflow-x-auto p-4 text-xs leading-relaxed"},r.createElement("code",{className:t?`language-${t}`:void 0},e)))}const pg=e=>({h1:({className:t,...n})=>r.createElement("h1",{className:S("mt-8 scroll-m-20 text-3xl font-bold tracking-normal first:mt-0 [&>a]:no-underline [&>a:hover]:opacity-80",t),...n}),h2:({className:t,...n})=>r.createElement("h2",{className:S("mt-8 scroll-m-20 border-b pb-2 text-2xl font-semibold tracking-normal first:mt-0 [&>a]:no-underline [&>a:hover]:opacity-80",t),...n}),h3:({className:t,...n})=>r.createElement("h3",{className:S("mt-6 scroll-m-20 text-xl font-semibold tracking-normal [&>a]:no-underline [&>a:hover]:opacity-80",t),...n}),h4:({className:t,...n})=>r.createElement("h4",{className:S("mt-5 scroll-m-20 text-base font-semibold tracking-normal [&>a]:no-underline [&>a:hover]:opacity-80",t),...n}),p:({className:t,...n})=>r.createElement("p",{className:S("my-4 leading-7 text-foreground",t),...n}),ul:({className:t,...n})=>r.createElement("ul",{className:S("my-4 ml-6 list-disc space-y-2",t),...n}),ol:({className:t,...n})=>r.createElement("ol",{className:S("my-4 ml-6 list-decimal space-y-2",t),...n}),li:({className:t,...n})=>r.createElement("li",{className:S("leading-7",t),...n}),blockquote:({className:t,...n})=>r.createElement("blockquote",{className:S("my-4 border-l-4 border-primary bg-muted/40 px-4 py-3 text-sm text-muted-foreground",t),...n}),table:({className:t,...n})=>r.createElement("div",{className:"my-4 w-full overflow-x-auto"},r.createElement("table",{className:S("w-full border-collapse text-sm",t),...n})),th:({className:t,...n})=>r.createElement("th",{className:S("border bg-muted px-3 py-2 text-left font-semibold",t),...n}),td:({className:t,...n})=>r.createElement("td",{className:S("border px-3 py-2 align-top",t),...n}),hr:({className:t,...n})=>r.createElement("hr",{className:S("my-8 border-border",t),...n}),a:({className:t,href:n="",onClick:a,...o})=>r.createElement("a",{className:S(ug(n)?"text-primary no-underline transition-opacity hover:opacity-80":"font-medium text-primary no-underline transition-opacity hover:opacity-80",t),href:n,target:xa(n)?"_blank":void 0,rel:xa(n)?"noreferrer":void 0,onClick:s=>{a==null||a(s),!s.defaultPrevented&&e&&dg(n)&&(s.preventDefault(),e(n,s))},...o}),pre:({children:t})=>r.createElement(fg,{code:Ea(t).replace(/\n$/,""),language:mg(t)}),code:({className:t,children:n,...a})=>typeof t=="string"&&t.startsWith("language-")?r.createElement("code",{className:t,...a},n):r.createElement("code",{className:S("rounded bg-muted px-1.5 py-0.5 text-[0.9em]",t),...a},n),input:({className:t,...n})=>r.createElement("input",{className:S("mr-2 align-middle",t),disabled:!0,...n})});function gg({content:e,components:t,className:n,wrapperClassName:a,metadata:o,onInternalLinkClick:s}){const l=r.useMemo(()=>{var d,m;return(m=(d=e.match(/^#[ \t]+(.+)/m))==null?void 0:d[1])==null?void 0:m.trim()},[e]),i=o||l?{...o??{},title:(o==null?void 0:o.title)??l}:void 0;So(i);const c=r.useMemo(()=>pg(s),[s]);return r.createElement("div",{className:S("rf-markdown-reader max-w-none text-sm text-foreground",a,n)},r.createElement(ld,{remarkPlugins:[id],rehypePlugins:[cd,[dd,{behavior:"wrap"}],ud],components:{...c,...t}},e))}const hg=({children:e,name:t,onChange:n=void 0,onAdd:a=void 0,onRemove:o=void 0,label:s="Tab",min:l=1,max:i=void 0,activeIndex:c=0,title:d=void 0,readOnly:m=!1,tabPosition:u="default"})=>{const{value:f,handleChange:p}=Ve({name:t,onChange:n}),h=Array.isArray(f)?f:[],[g,b]=r.useState(c),[y,E]=r.useState(0),x=r.useMemo(()=>{var I;return(I=h.length>0?h:Array.from({length:l},()=>({})))==null?void 0:I.map((T,C)=>s.includes("{")?Ue.parse(h[C]??{},s):s+" "+(C+1))},[h,s,l,y]),N=typeof e=="function"?e({record:h[g]??{},records:h,currentIndex:g}):e,P=r.useMemo(()=>_r({children:N,parentName:`${t}.${g}`,parentKey:`${t}-${g}-${y}`}),[g,N,t,y]),D=()=>{const I=h.length>0?[...h,{}]:Array.from({length:x.length+1},()=>({}));a==null||a(I),p({target:{name:`${t}.${I.length-1}`,value:{}}}),b(I.length-1),E(T=>T+1)},v=I=>{const T=x.length-1;o==null||o(I),p({target:{name:`${t}.${I}`}}),g>=T&&b(C=>C-1),E(C=>C+1)},w=Co[u],A=Nt(u);return r.createElement("div",null,d&&r.createElement("h3",null,d),r.createElement(w,{menu:r.createElement(r.Fragment,null,x==null?void 0:x.map((I,T)=>r.createElement("div",{key:`${t}-${T}`,className:`${A.itemClassName} relative`},r.createElement("button",{type:"button",role:"tab","aria-selected":T===g,onClick:()=>b(T),className:yn(u,T===g,!m&&x.length-1>=l&&T===g?"pr-9":void 0)},I),!m&&x.length-1>=l&&T===g&&r.createElement(Qe,{className:"absolute right-2 top-1/2 -translate-y-1/2 p-1 text-current opacity-70 hover:opacity-100",icon:"x",onClick:()=>v(T)}))),!m&&(!i||x.length<i)&&r.createElement("div",{key:x.length+1,className:A.itemClassName},r.createElement(Qe,{className:yn(u,!1,"border border-dashed border-border/70 justify-center"),icon:"plus",title:"Add tab",onClick:D}))),content:r.createElement("div",{className:No()},P)}))},Ao=({records:e,children:t,limit:n=void 0,page:a=void 0,maxPageButtons:o=void 0,appendTo:s=void 0,before:l=void 0,after:i=void 0,className:c=void 0,wrapperClassName:d=void 0,scrollToTopOnChange:m=void 0,scrollBehavior:u=void 0,align:f=void 0,sticky:p=void 0})=>{const h=we(),g=Te("common"),[b,y]=r.useState(a||1),E=n||e.length,x=Math.ceil(e.length/E),N=(b-1)*E,P=N+E,D=r.useMemo(()=>e.slice(N,P),[e,N,P]),v=k=>{k>=1&&k<=x&&y(k)};r.useEffect(()=>{(m||h.Pagination.scrollToTop)&&window.scrollTo({top:0,behavior:u||h.Pagination.scrollBehavior})},[b,m,u]);const w=r.useMemo(()=>{const k=Math.min(o||h.Pagination.maxItems,x);let R=Math.max(1,b-Math.floor(k/2)),$=R+k-1;return $>x&&($=x,R=Math.max(1,$-k+1)),Array.from({length:$-R+1},(j,z)=>R+z)},[b,o,x]),A=b===1?"disabled":"",I=b===x?"disabled":"",T=f||h.Pagination.align,C={start:"justify-start",center:"justify-center",end:"justify-end"}[T]||"justify-end",M=r.createElement(Ne,{className:(d||h.Pagination.wrapperClassName)+(p||h.Pagination.sticky?` ${h.Pagination.stickyClassName}`:""),style:p||h.Pagination.sticky?{backdropFilter:"blur(10px)",backgroundColor:"rgba(255, 255, 255, 0.1)"}:{}},l,e.length>E&&r.createElement("nav",{"aria-label":g.pageNavigation,className:`${c||h.Pagination.className} flex w-full ${C}`},r.createElement("ul",{className:"flex items-center gap-1"},r.createElement("li",{className:"mr-2"},r.createElement("button",{type:"button",onClick:()=>v(1),disabled:A==="disabled",className:S("inline-flex h-9 min-w-[2.25rem] items-center justify-center rounded-md border bg-background px-3 text-sm transition-colors",A==="disabled"?"pointer-events-none opacity-40":"cursor-pointer hover:bg-accent hover:text-accent-foreground")},r.createElement("span",null,"«"))),r.createElement("li",null,r.createElement("button",{type:"button",disabled:A==="disabled",className:S("inline-flex h-9 min-w-[2.25rem] items-center justify-center rounded-md border bg-background px-3 text-sm transition-colors",A==="disabled"?"pointer-events-none opacity-40":"cursor-pointer hover:bg-accent hover:text-accent-foreground"),onClick:()=>v(b-1)},r.createElement("span",null,"‹"))),w.map(k=>r.createElement("li",{key:k},r.createElement("button",{type:"button",onClick:()=>v(k),className:S("inline-flex h-9 min-w-[2.25rem] items-center justify-center rounded-md border bg-background px-3 text-sm transition-colors cursor-pointer hover:bg-accent hover:text-accent-foreground",b===k&&"border-primary bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground")},k))),r.createElement("li",{className:"ml-2"},r.createElement("button",{type:"button",disabled:I==="disabled",className:S("inline-flex h-9 min-w-[2.25rem] items-center justify-center rounded-md border bg-background px-3 text-sm transition-colors",I==="disabled"?"pointer-events-none opacity-40":"cursor-pointer hover:bg-accent hover:text-accent-foreground"),onClick:()=>v(b+1)},r.createElement("span",null,"›"))),r.createElement("li",null,r.createElement("button",{type:"button",onClick:()=>v(x),disabled:I==="disabled",className:S("inline-flex h-9 min-w-[2.25rem] items-center justify-center rounded-md border bg-background px-3 text-sm transition-colors",I==="disabled"?"pointer-events-none opacity-40":"cursor-pointer hover:bg-accent hover:text-accent-foreground")},r.createElement("span",null,"»"))))),i);return r.createElement(r.Fragment,null,t(D,N),s?_t.createPortal(M,s):s===void 0&&M)},Ec=({records:e=void 0,header:t=void 0,footer:n=void 0,overlays:a=void 0,onRowClick:o=void 0,onSelectionChange:s=void 0,sortable:l=!1,pagination:i=void 0,gap:c=void 0,columns:d=void 0,groupBy:m=void 0,selectedKeys:u=void 0,before:f=void 0,after:p=void 0,wrapperClassName:h=void 0,className:g=void 0,headerClassName:b=void 0,scrollClassName:y=void 0,bodyClassName:E=void 0,footerClassName:x=void 0,selectedClassName:N=void 0})=>{const P=we(),D=Te("gallery"),v=Te("common"),w=N||P.Gallery.selectedClassName,[A,I]=r.useState(null),T=r.useCallback(L=>{L&&I(L)},[]),C=c??P.Gallery.gap,M=d??P.Gallery.rowCols,k={0:"0",1:"0.25rem",2:"0.5rem",3:"1rem",4:"1.5rem",5:"3rem"},R=k[C]??k[2],$="0.75rem",j="calc(50% - 1rem)",z=C===0?`${(100/M).toFixed(4)}%`:`calc((100% - (${R} * ${M-1})) / ${M})`,H=e||[],q=r.useMemo(()=>{if(!l)return;if(typeof l=="object")return l;const L=e==null?void 0:e[0];if(!L)return;const Z=Object.keys(L).find(Q=>!Q.startsWith("_"));if(Z)return{field:Z,dir:"asc"}},[e,typeof l=="object"?l==null?void 0:l.dir:void 0,typeof l=="object"?l==null?void 0:l.field:void 0,l]),F=uc("item"),B=r.useCallback((L,Z)=>F(L,Z),[F]),{activeSelectedKeys:_,showSelection:V,updateSelection:K}=dc({records:H,selectedKeys:u,onSelectionChange:s,getRecordKey:B}),ee=r.useRef(new Map);r.useEffect(()=>{const L=new Set(H.map((Z,Q)=>B(Z,Q)));for(const Z of ee.current.keys())L.has(Z)||ee.current.delete(Z)},[H,B]);const se=(L,Z)=>{var Q;if(w){const ce=w.split(/\s+/).filter(Boolean);let be=L.target;for(;be&&!be.classList.contains("item");){if(["A","BUTTON","INPUT","LABEL"].includes(be.tagName))return;be=be.parentNode}ce.every(ye=>be.classList.contains(ye))||(Array.from(((Q=be.parentNode)==null?void 0:Q.children)||[]).forEach(ye=>{ye.classList.remove(...ce)}),be.classList.add(...ce))}o==null||o(Z)},le=r.useCallback((L,Z)=>{const Q=B(L,Z),ce=_.includes(Q)?_.filter(be=>be!==Q):[..._,Q];K(ce)},[_,B,K]),ae=(L,Z)=>{var ce;const Q=L.img;return Q&&r.isValidElement(Q)?r.cloneElement(Q,{className:S("block h-auto w-full max-w-full rounded-lg object-cover",Q.props.className),style:{...Q.props.style||{},aspectRatio:((ce=Q.props.style)==null?void 0:ce.aspectRatio)||"16 / 11",cursor:o?"pointer":"default"},onClick:o?be=>{var ye,_e;se(be,L),(_e=(ye=Q.props).onClick)==null||_e.call(ye,be)}:Q.props.onClick}):r.createElement("img",{className:"block h-auto w-full max-w-full rounded-lg object-cover",src:L.thumbnail?L.mimetype+L.thumbnail:"data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAgAAAAwAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==",alt:L.name,width:L.width,height:L.height,style:{aspectRatio:"16 / 11",cursor:o?"pointer":"default"},onClick:o?be=>se(be,L):void 0})},ve=L=>r.isValidElement(L)?L:r.createElement("span",{className:"inline-block max-w-full overflow-hidden text-ellipsis align-top"},r.createElement(Jr,{badge:L,className:"badge-overlay"})),he=(L,Z,Q="left",ce)=>r.createElement("div",{className:S("absolute z-10 overflow-hidden text-ellipsis whitespace-nowrap leading-none",Q==="right"?"text-right":"text-left",ce),style:{width:j,maxWidth:j,pointerEvents:"none",...Z}},ve(L)),de={topLeft:{style:{left:$,top:$}},topRight:{style:{right:$,top:$},align:"right"},bottomLeft:{style:{bottom:$,left:$}},bottomRight:{style:{bottom:$,right:$},align:"right"},middleLeft:{style:{left:$,top:"50%",transform:"translateY(-50%)"}},middleRight:{style:{right:$,top:"50%",transform:"translateY(-50%)"},align:"right"}},ne=(L,Z,Q)=>L.when?typeof L.when=="function"?L.when(Z,Q):Object.entries(L.when).every(([ce,be])=>Z[ce]===be):!0,pe=(L,Z,Q)=>L.render?L.render(Z,Q):typeof L.badge=="function"?L.badge(Z,Q):L.badge,X=(L,Z)=>a!=null&&a.length?a.map((Q,ce)=>{if(!Q.position||!ne(Q,L,Z))return null;const be=pe(Q,L,Z);if(be==null||be===!1)return null;const ye=de[Q.position];return ye?r.createElement(r.Fragment,{key:`${Q.position}-${ce}`},he(be,ye.style,ye.align,Q.className)):null}):null,fe=r.useCallback((L,Z)=>{const Q=B(L,Z),ce=ee.current.get(Q);if(ce&&ce.recordRef===L&&ce.overlaysRef===a&&ce.onClickRef===o&&ce.rowIndex===Z)return{image:ce.image,overlays:ce.overlays};const be={image:ae(L),overlays:X(L,Z)};return ee.current.set(Q,{recordRef:L,overlaysRef:a,onClickRef:o,rowIndex:Z,image:be.image,overlays:be.overlays}),be},[B,o,a]),Ae=(L,Z)=>{const Q=B(Z,L),ce=_.includes(Q),be=(w==null?void 0:w.split(/\s+/).filter(Boolean))||[],ye=fe(Z,L);return r.createElement("div",{key:Q,className:S("item min-w-0",ce&&be),style:{flex:`0 0 ${z}`,maxWidth:z}},r.createElement("div",{className:"relative overflow-hidden rounded-lg"},V&&r.createElement("label",{className:"absolute left-3 top-3 z-20 inline-flex items-center rounded bg-background/90 px-2 py-1 shadow-sm"},r.createElement("input",{type:"checkbox","aria-label":Be(D.selectItem,{key:Q}),checked:ce,onChange:()=>le(Z,L),onClick:_e=>_e.stopPropagation()})),ye.image,ye.overlays))},Pe=(L,Z)=>{const Q=Array.isArray(Z)?Z:[Z],ce=new Map;return L.forEach((be,ye)=>{const _e=Q.map(Ie=>String(be[Ie]??"")).join(" · ")||"-";ce.has(_e)||ce.set(_e,[]),ce.get(_e).push({item:be,index:ye})}),Array.from(ce.entries()).map(([be,ye])=>({kind:"group",groupName:be,items:ye}))},oe=r.useMemo(()=>{if(!Array.isArray(e))return;const L=gr.records(e,q)||[];return m?Pe(L,m):L.map((Z,Q)=>({kind:"item",item:Z,index:Q}))},[e,m,q]);return oe===void 0?r.createElement("p",{className:"p-4"},r.createElement("span",{className:"mr-2 inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),v.loading):oe.length===0?r.createElement("p",{className:"p-4"},v.noDataFound):r.createElement("div",{className:S("flex items-stretch gap-3",h||P.Gallery.wrapperClassName)},f&&r.createElement("div",{className:"gallery-before flex shrink-0 items-center self-stretch"},f),r.createElement(Ne,{className:S("min-w-0 flex-1 flex flex-col",g||P.Gallery.className)},t&&r.createElement("div",{className:b||P.Gallery.headerClassName},t),r.createElement(Ne,{className:S("min-w-0 flex-1",y||P.Gallery.scrollClassName)},r.createElement(Ao,{records:oe,appendTo:A,wrapperClassName:"px-3 pt-4 pb-2",...i||{}},L=>r.createElement("div",{className:"p-3"},r.createElement("div",{className:"flex flex-wrap text-center items-center "+(E||P.Gallery.bodyClassName),style:{gap:R}},L.map(Z=>Z.kind==="group"?r.createElement("section",{key:Z.groupName,className:"gallery-group rounded-lg border bg-card p-3 text-left"},r.createElement("h3",{className:"mb-3 text-sm font-semibold uppercase tracking-wide text-muted-foreground"},Z.groupName),r.createElement("div",{className:S("flex flex-wrap items-center"),style:{gap:R}},Z.items.map(({item:Q,index:ce})=>Ae(ce,Q)))):Ae(Z.index,Z.item)))))),r.createElement("div",{ref:T,className:"mt-auto"}),n&&r.createElement("div",{className:x||P.Gallery.footerClassName},n)),p&&r.createElement("div",{className:"gallery-after flex shrink-0 items-center self-stretch"},p))};function Nc({records:e,recordId:t,sortable:n,pagination:a,selection:o=!1,selectedKeys:s,onSelectionChange:l,onRowClick:i,groupBy:c,wrapperClassName:d,before:m,after:u}){const f=r.useMemo(()=>ko(t),[t]),p=r.useMemo(()=>e.reduce((h,g)=>(h.set(f(g),g),h),new Map),[f,e]);return r.createElement(Ec,{records:e,sortable:n,pagination:a,selectedKeys:o?s:void 0,onSelectionChange:o?h=>{let g=h.keys,b=h.records;if(o==="single"&&h.keys.length>1){const E=h.keys[h.keys.length-1];g=E?[E]:[],b=E?p.get(E)?[p.get(E)]:[]:[]}const y={keys:g,records:b,hasSelection:g.length>0,clear:()=>l==null?void 0:l({keys:[],records:[],hasSelection:!1,clear:()=>{}})};l==null||l(y)}:void 0,onRowClick:i?h=>i(h):void 0,groupBy:c,wrapperClassName:d,before:m,after:u})}function bg({actions:e,form:t,editDeepLink:n,preparedRecords:a,recordId:o,sourcePath:s,db:l,onSave:i,onDelete:c,onComplete:d,audit:m=!1}){const u=De.useLocation(),f=De.useNavigate(),p=r.useId(),h=wo(),g=r.useMemo(()=>ko(o),[o]),b=r.useMemo(()=>Lp(e,!!t),[e,t]),[y,E]=r.useState(null),x=r.useMemo(()=>`${ks(s||"grid-records")}-${ks(p)}`,[p,s]),N=r.useCallback(()=>{E(null),n&&u.hash.startsWith(`#${x}:`)&&f({pathname:u.pathname,search:u.search,hash:""},{replace:!0})},[n,x,u.hash,u.pathname,u.search,f]),P=r.useCallback(async(M,k=!0)=>{const R=c?await c({record:M}):s?`${s}/${g(M)}`:void 0;if(!R&&!c)return!1;R&&await l.remove(R);const $=await(d==null?void 0:d({record:M,action:"delete"}))??!0;return $&&k&&N(),$},[N,l,g,d,c,s]),D=r.useCallback(async()=>h.save(),[h]),v=r.useCallback(async(M,k)=>{const R=b[M];if(!R||!ha(R,k)||bc(R,k))return;const $={actionKey:M,record:k,recordKey:k?g(k):void 0,rowIndex:k==null?void 0:k._index,isNewRecord:!k,close:N,save:D,remove:async()=>k?P(k,!0):!1,runAction:(j,z)=>v(j,z)};if(R.kind==="route"){const j=typeof R.to=="function"?R.to($):R.to;f(j);return}if(R.kind==="external"){const j=typeof R.href=="function"?R.href($):R.href;window.open(j,"_blank","noopener,noreferrer");return}if(R.kind==="inline"){await R.run($);return}M==="edit"&&n&&k&&f({hash:`${x}:${encodeURIComponent(g(k))}`},{replace:!1}),E({actionKey:M,record:k})},[N,n,g,x,f,b,P,D]),w=r.useCallback((M,k)=>({actionKey:M,record:k,recordKey:k?g(k):void 0,rowIndex:k==null?void 0:k._index,isNewRecord:!k,runAction:(R,$)=>v(R,$)}),[g,v]),A=r.useCallback(async M=>{const k=y==null?void 0:y.record;if(M==="cancel"){N();return}if(M==="save"){await D();return}if(M==="remove"){if(!k)return;await P(k,!0);return}await v(M,k)},[y==null?void 0:y.record,N,P,v,D]),I=r.useCallback((M,k)=>({actionKey:M,record:k,recordKey:k?g(k):void 0,rowIndex:k==null?void 0:k._index,isNewRecord:!k,runAction:R=>{A(R)}}),[g,A]);r.useEffect(()=>{if(!n)return;const M=u.hash.replace(/^#/,""),k=`${x}:`;if(!M.startsWith(k)){(y==null?void 0:y.actionKey)==="edit"&&E(null);return}const R=decodeURIComponent(M.slice(k.length)),$=a.find(j=>g(j)===R);$&&E(j=>(j==null?void 0:j.actionKey)==="edit"&&j.record&&g(j.record)===R?j:{actionKey:"edit",record:$})},[y==null?void 0:y.actionKey,n,g,x,u.hash,a]);const T=y?b[y.actionKey]:void 0,C=r.useMemo(()=>{if(!y||!T)return null;const M=w(y.actionKey,y.record),k=I(y.actionKey,y.record);if(T.kind==="delete")return typeof T.body=="function"?T.body(k):T.body!==void 0?T.body:r.createElement("div",{className:"space-y-2"},r.createElement("p",null,"Delete this record?"),y.record&&r.createElement("p",{className:"text-sm text-muted-foreground"},g(y.record)));if((y.actionKey==="add"||y.actionKey==="edit")&&t){const R=T.kind==="modal"&&T.body!==void 0?typeof T.body=="function"?T.body(k):T.body:typeof t=="function"?t({...M,record:y.record}):t;return r.isValidElement(R)?r.createElement(Eo,{appearance:"empty",controller:h,defaultValues:y.record,log:m,onSave:i?async({record:$,action:j,storagePath:z})=>i({record:$,action:j,storagePath:z}):void 0,onDelete:c?async({record:$})=>c({record:$}):void 0,onComplete:async({record:$,action:j})=>{const z=await(d==null?void 0:d({record:$,action:j}))??!0;return z&&N(),z},path:s},R):R}return T.kind==="modal"&&T.body!==void 0?typeof T.body=="function"?T.body(k):T.body:null},[y,T,m,N,t,h,w,I,g,d,c,i,s]);return{normalizedActions:b,activeAction:y,activeActionConfig:T,activeActionBody:C,activeKey:(y==null?void 0:y.actionKey)==="edit"&&y.record?g(y.record):null,runAction:v,runModalAction:A,close:N,getActionContext:w,getModalActionContext:I,getRecordKey:g,formController:h,gridHashId:x}}function vg({columns:e,records:t,form:n}){return r.useMemo(()=>$p(e,t,n),[e,n,t])}function yg({records:e,onLoad:t}){const[n,a]=r.useState(e),[o,s]=r.useState(!1);return r.useEffect(()=>{if(!t){a(e),s(!1);return}let l=!0;const i=t(Mt(e));if(i instanceof Promise)return s(!0),i.then(c=>{l&&a(c)}).finally(()=>{l&&s(!1)}),()=>{l=!1};a(i),s(!1)},[e,t]),{preparedRecords:n,loading:o}}function wg({selection:e}){const t=e!==null&&e!==!1&&typeof e=="object",n=e?typeof e=="string"?e:e.mode:!1,a=t?e.defaultKeys:void 0,o=t?e.onChange:void 0,[s,l]=r.useState(a??[]),[i,c]=r.useState([]),d=(a==null?void 0:a.join("\0"))??"";r.useEffect(()=>{l(a??[]),c([])},[d]);const m=r.useCallback(()=>{l([]),c([]),o==null||o({keys:[],records:[],hasSelection:!1,clear:()=>{}})},[o]),u=r.useMemo(()=>({keys:s,records:i,hasSelection:s.length>0,clear:m}),[m,s,i]),f=r.useCallback(p=>{l(p.keys),c(p.records),o==null||o(p)},[o]);return{mode:n,activeSelectionKeys:s,selectionState:u,handleSelectionChange:f}}const xg=(e,t,n,a,o)=>(t==null?void 0:t.kind)==="delete"?typeof t.title=="function"?t.title(n):t.title||a:(t==null?void 0:t.kind)==="modal"?typeof t.title=="function"?t.title(n):t.title||ba(e,t,o):ba(e,t,o);function Po({records:e,recordId:t,sourcePath:n,columns:a,actions:o,form:s,editDeepLink:l,header:i,footer:c,view:d="table",sticky:m,wrapperClassName:u,loading:f=!1,title:p,before:h,after:g,sortable:b=!0,pagination:y,selection:E,onRowClick:x,reorderable:N=!1,onReorder:P,groupBy:D,onSave:v,onDelete:w,onComplete:A,audit:I=!1,onLoad:T}){const C=we(),M=Te("grid"),k=r.useMemo(()=>({add:M.buttonAdd}),[M.buttonAdd]),R=$t(),{preparedRecords:$,loading:j}=yg({records:e,onLoad:T}),z=vg({columns:a,records:$,form:s}),{mode:H,activeSelectionKeys:q,selectionState:F,handleSelectionChange:B}=wg({selection:E}),{normalizedActions:_,activeAction:V,activeActionConfig:K,activeActionBody:ee,activeKey:se,runAction:le,close:ae,getActionContext:ve,getModalActionContext:he,getRecordKey:de,formController:ne}=bg({actions:o,form:s,editDeepLink:l,preparedRecords:$,recordId:t,sourcePath:n,db:R,onSave:v,onDelete:w,onComplete:A,audit:I}),pe=!!_.edit&&!!s,X=r.useCallback(Ie=>{if(x==null||x(Ie),!pe)return;const Fe=de(Ie);if((V==null?void 0:V.actionKey)==="edit"&&V.record&&de(V.record)===Fe){ae();return}le("edit",Ie)},[V==null?void 0:V.actionKey,V==null?void 0:V.record,pe,ae,de,x,le]),fe=x||pe?X:void 0,Ae=r.useCallback((Ie,Fe,qe)=>{const O=_[Ie];return!O||!ha(O,Fe)?null:r.createElement(Qe,{className:qe||(Ie==="add"?La:void 0),icon:O.icon,label:ba(Ie,O,k),disabled:bc(O,Fe),onClick:()=>le(Ie,Fe)})},[_,le,k]),Pe=r.useMemo(()=>Object.entries(_).filter(([Ie,Fe])=>Ie!=="edit"&&Ie!=="delete"&&ha(Fe,void 0)).map(([Ie])=>Ie),[_]),oe=r.useMemo(()=>({title:p,records:$,selection:F,runAction:le}),[$,le,F,p]),L=r.useMemo(()=>({records:$,selection:F,runAction:le}),[$,le,F]),Z=r.useMemo(()=>{if(i!==void 0)return typeof i=="function"?i(oe):i;if(!(!p&&!Pe.length))return r.createElement(r.Fragment,null,p||r.createElement("span",null),Pe.length?r.createElement("span",{className:"flex flex-wrap items-center gap-2"},Pe.map(Ie=>r.createElement(r.Fragment,{key:Ie},Ae(Ie)))):null)},[Ae,i,Pe,oe,p]),Q=r.useMemo(()=>{if(c!==void 0)return typeof c=="function"?c(L):c},[c,L]),ce=r.useMemo(()=>{if(!(!V||!K||K.kind!=="modal"&&K.kind!=="delete"))return he(V.actionKey,V.record)},[V,K,he]),be=r.useMemo(()=>{if(!(!K||K.kind!=="modal"&&K.kind!=="delete"||K.header===void 0||!ce))return typeof K.header=="function"?K.header(ce):K.header},[K,ce]),ye=r.useMemo(()=>{if(!(!K||K.kind!=="modal"&&K.kind!=="delete")){if(K.footer===!1)return!1;if(!(K.footer===void 0||!ce))return typeof K.footer=="function"?K.footer(ce):K.footer}},[K,ce]),_e=jp(b);return r.createElement(r.Fragment,null,r.createElement(Ua,{wrapperClassName:u,header:Z,footer:Q,className:(C.Grid.Card.className+(m?` sticky-${m}`:"")).trim(),headerClassName:C.Grid.Card.headerClassName,bodyClassName:C.Grid.Card.bodyClassName,footerClassName:C.Grid.Card.footerClassName,loading:f||j},d==="gallery"?r.createElement(Nc,{records:$,recordId:t,sortable:_e||b,pagination:y,selection:H,selectedKeys:q,onSelectionChange:H?B:void 0,onRowClick:fe,groupBy:D,wrapperClassName:C.Grid.Gallery.wrapperClassName,before:h,after:g}):r.createElement(vc,{records:$,recordId:t,columns:z,runAction:le,sortable:_e||b,pagination:y,selection:H,selectedKeys:q,onSelectionChange:H?B:void 0,onRowClick:fe,reorderable:N,onReorder:P,activeKey:se,groupBy:D,wrapperClassName:C.Grid.Table.wrapperClassName,before:h,after:g})),V&&K&&(K.kind==="modal"||K.kind==="delete")&&r.createElement(lr,{size:(K.kind==="modal"||K.kind==="delete")&&K.size||C.Grid.Modal.size,position:(K.kind==="modal"||K.kind==="delete")&&K.position||C.Grid.Modal.position,header:be,title:xg(V.actionKey,K,K.kind==="modal"||K.kind==="delete"?he(V.actionKey,V.record):ve(V.actionKey,V.record),M.deleteConfirm,k),onClose:ae,onSave:K.kind==="modal"&&K.footer===void 0&&(V.actionKey==="add"||V.actionKey==="edit")?Ie=>ne.save(Ie):void 0,onDelete:K.kind==="delete"?async()=>{const Ie=V.record;if(!Ie)return!1;const Fe=w?await w({record:Ie}):n?`${n}/${de(Ie)}`:void 0;if(!Fe&&!w)return!1;Fe&&await R.remove(Fe);const qe=await(A==null?void 0:A({record:Ie,action:"delete"}))??!0;return qe&&ae(),qe}:K.kind==="modal"&&K.footer===void 0&&V.actionKey==="edit"&&V.record&&_.delete?async()=>(await he(V.actionKey,V.record).runAction("remove"),!1):void 0,footer:ye,showCancel:K.kind==="modal"||K.kind==="delete"?K.footer===void 0:!0,allowFullscreen:K.kind==="modal"||K.kind==="delete"?K.allowFullscreen:!0,wrapperClassName:C.Grid.Modal.wrapperClassName,className:C.Grid.Modal.className,headerClassName:C.Grid.Modal.headerClassName,titleClassName:C.Grid.Modal.titleClassName,bodyClassName:C.Grid.Modal.bodyClassName,footerClassName:C.Grid.Modal.footerClassName},ee))}function Cc(e){return r.createElement(Po,{...e})}function kc(e){return"records"in e?r.createElement(Cc,{...e}):r.createElement(hc,{...e})}function Sc(){return r.createElement(kc,{path:"/users",recordId:e=>`${e.email??""}`.replace("@","-"),form:r.createElement(r.Fragment,null,r.createElement(Qa,{name:"username",label:"Username"}),r.createElement(eo,{name:"email",label:"Email",required:!0,readOnlyAfterSet:!0}),r.createElement(hn,{name:"permission",label:"Permission",options:[{value:"admin",label:"Admin"},{value:"user",label:"User"}],required:!0}))})}const Eg=()=>{const e=Te("common");return r.createElement("div",{className:"flex flex-col justify-center items-center vh-100"},r.createElement("h1",null,"404"),r.createElement("p",null,e.notFoundMessage),r.createElement(De.Link,{to:"/"},r.createElement(J,{name:"house-door"})," ",e.goHome))},Ng=({size:e=28})=>r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"}),r.createElement("line",{x1:"12",x2:"12",y1:"9",y2:"13"}),r.createElement("line",{x1:"12",x2:"12.01",y1:"17",y2:"17"})),Ps=({open:e})=>r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{transition:"transform 0.18s",transform:e?"rotate(180deg)":"none",flexShrink:0}},r.createElement("polyline",{points:"6 9 12 15 18 9"})),Cg=()=>r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}),r.createElement("path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"})),kg=()=>r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"m22 2-7 20-4-9-9-4Z"}),r.createElement("path",{d:"M22 2 11 13"})),Sg=()=>r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"m8 2 1.88 1.88M14.12 3.88 16 2"}),r.createElement("path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"}),r.createElement("path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6z"}),r.createElement("path",{d:"M12 20v-9"}),r.createElement("path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5"}),r.createElement("path",{d:"M6 13H2"}),r.createElement("path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4"}),r.createElement("path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4"}),r.createElement("path",{d:"M22 13h-4"}),r.createElement("path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4"})),Ac=(e,t)=>({error:{message:e.message,stack:e.stack??""},componentStack:(t==null?void 0:t.componentStack)??"",context:{url:typeof window<"u"?window.location.href:"",userAgent:typeof navigator<"u"?navigator.userAgent:"",timestamp:new Date().toISOString()}}),Ag=(e,t)=>{const n=Ac(e,t);return[`Error: ${n.error.message}`,"","--- Stack Trace ---",n.error.stack,"","--- Component Stack ---",n.componentStack,"","--- Context ---",`URL: ${n.context.url}`,`Timestamp: ${n.context.timestamp}`,`Agent: ${n.context.userAgent}`].join(`
|
|
15
|
-
`)
|
|
16
|
-
`)
|
|
17
|
-
`)
|
|
18
|
-
`)
|
|
19
|
-
`))),r.createElement("button",{onClick:this.copy,className:"flex items-center gap-1.5 rounded border px-2.5 py-1 text-[11px] font-medium transition-colors hover:bg-accent"},r.createElement(Cg,null),s?"Copied!":"Copy debug info"))),r.createElement("div",{className:"flex flex-wrap items-center gap-2"},r.createElement("button",{onClick:this.reset,className:"rounded-md border bg-background px-4 py-1.5 text-sm font-medium shadow-sm transition-colors hover:bg-accent"},"Try again"),r.createElement("a",{href:"/",className:"rounded-md bg-destructive/10 px-4 py-1.5 text-sm font-medium text-destructive transition-colors hover:bg-destructive/20"},"Go to home"),c&&r.createElement("button",{onClick:this.sendReport,disabled:l==="sending"||l==="sent",className:"ml-auto flex items-center gap-1.5 rounded-md border px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent disabled:opacity-50"},r.createElement(kg,null),l==="idle"&&"Send report",l==="sending"&&"Sending...",l==="sent"&&"Report sent ✓",l==="failed"&&"Failed - retry"))))}}const Pg=async()=>{var e,t;(t=(e=window.google)==null?void 0:e.accounts)!=null&&t.id||(Bs([{src:"https://accounts.google.com/gsi/client",async:!0,clean:!0}]),await new Promise(n=>setTimeout(n,0)))};class Io{getConfigurationState(){return Ot("GoogleAuthProvider",sr(Rr("oAuth2"),["clientId"],"google.oAuth2."))}isConfigured(){return this.getConfigurationState().configured}getUser(){if(!this.isConfigured())return null;const t=Qt("user");if(!t)return null;const n=t.profile??{};return{...n,uid:t.uid,email:t.email??n.email,displayName:t.displayName??n.name,photoURL:t.photoURL??n.picture}}async signIn(t={}){const n=Rr("oAuth2");if(!this.isConfigured()||!(n!=null&&n.clientId))throw new Error("GoogleAuthProvider: missing google.oAuth2.clientId configuration.");return await Pg(),new Promise((a,o)=>{var s,l;if(!((l=(s=window.google)==null?void 0:s.accounts)!=null&&l.id)){o(new Error("GoogleAuthProvider: Google Identity Services script is not available."));return}window.handleGoogleSignIn=async({credential:i})=>{var c;try{const d=Ls(i);localStorage.setItem("googleCredentialToken",i);const m=Ze();if(!m){o(new Error("GoogleAuthProvider: Firebase auth is not initialized."));return}const u=ze.GoogleAuthProvider.credential(i),f=await ze.signInWithCredential(m,u),p=ze.getAdditionalUserInfo(f);kn({...f.user,profile:(p==null?void 0:p.profile)??d},"user"),(c=t.scopes)!=null&&c.length&&await this.getAccessToken(t.scopes),a(this.getUser())}catch(d){o(d)}},window.google.accounts.id.initialize({client_id:n.clientId,callback:window.handleGoogleSignIn,auto_select:!1,cancel_on_tap_outside:!0}),window.google.accounts.id.prompt()})}async signOut(){var a,o,s,l;const t=Qt("user");(a=t==null?void 0:t.profile)!=null&&a.sub&&((l=(s=(o=window.google)==null?void 0:o.accounts)==null?void 0:s.id)==null||l.revoke(t.profile.sub)),localStorage.removeItem("googleCredentialToken"),Pl("user");const n=Ze();n&&await ze.signOut(n)}onAuthChange(t){const n=Ze();return n?ze.onAuthStateChanged(n,a=>{const o=this.getUser();if(!a){t(o);return}const s=Qt("user"),l=(s==null?void 0:s.profile)??{};t({...l,uid:a.uid,email:a.email??l.email,displayName:a.displayName??l.name,photoURL:a.photoURL??l.picture})}):(t(this.getUser()),()=>{})}getAccessToken(t=[]){const n=Rr("oAuth2");if(!this.isConfigured()||!(n!=null&&n.clientId))return Promise.reject("Google client ID not found");const a=t.join(" "),o=`googleAccessToken::${a}`,s=`googleExpiresAt::${a}`;return new Promise((l,i)=>{var f,p,h;const c=localStorage.getItem(o),d=localStorage.getItem(s),m=!d||new Date(d).getTime()<Date.now();if(c&&!m){l(c);return}const u=(h=(p=(f=window.google)==null?void 0:f.accounts)==null?void 0:p.oauth2)==null?void 0:h.initTokenClient({client_id:n.clientId,scope:a,callback:g=>{g.access_token?(localStorage.setItem(o,g.access_token),localStorage.setItem(s,new Date(Date.now()+g.expires_in*1e3).toISOString()),l(g.access_token)):i("Failed to obtain access token")}});if(!u){i("Google token client is not available");return}u.requestAccessToken()})}isAuthenticated(){return!!this.getUser()}}const Ic=r.createContext(null),Mc=({registry:e,defaultKey:t,children:n})=>{const a=r.useMemo(()=>({registry:e,defaultKey:t}),[e,t]);return r.createElement(Ic.Provider,{value:a},n)},Ig=e=>{const t=r.useContext(Ic);if(!t)return null;const n=e??t.defaultKey;return t.registry[n]??null},Tc=r.createContext(null),Mg=({registry:e,defaultKey:t,children:n})=>{const a=r.useMemo(()=>({registry:e,defaultKey:t}),[e,t]);return r.createElement(Tc.Provider,{value:a},n)},Tg=e=>{const t=r.useContext(Tc);if(!t)throw new Error("useCredentialsProvider must be used inside <App providers={...} />.");const n=e??t.defaultKey,a=t.registry[n];if(!a)throw new Error(`CredentialsProvider '${n}' is not registered. Available: ${Object.keys(t.registry).join(", ")}`);return a},Tt={key:"@key",value:"@value"},Wt=()=>ke.getDatabase(),Kt=(e,t,n)=>{const a=`Error during ${e}: ${String(t)}`;if(n)throw new Error(a);console.error(a)},ea=(e,t)=>{if(!e||!(t in e))return e;const{[t]:n,...a}=e;return Object.keys(a).length?a:void 0},Dg=e=>{const t=typeof e=="object"&&e!==null&&!Array.isArray(e)?e:Array.isArray(e)?{in:e}:{eq:e};let n;return t.gt!==void 0&&(n={...n,gt:t.gt}),t.lt!==void 0&&(n={...n,lt:t.lt}),t.in!==void 0&&(n={...n,in:t.in}),t.nin!==void 0&&(n={...n,nin:t.nin}),{condition:t,clientCondition:n}},Rg=(e,t)=>{switch(t){case Tt.key:return ke.query(e,ke.orderByKey());case Tt.value:return ke.query(e,ke.orderByValue());default:return ke.query(e,ke.orderByChild(t))}},Is=(e,t,n)=>{const[a]=Object.entries(t||{});if(!a)return{dbRef:e,clientWhere:n};const[o]=a;let s=Rg(e,o);const l=n==null?void 0:n[o];if(l==null)return{dbRef:s,clientWhere:n};const{condition:i,clientCondition:c}=Dg(l);switch(!0){case i.eq!==void 0:return{dbRef:ke.query(s,ke.equalTo(i.eq)),clientWhere:ea(n,o)};case(i.gte!==void 0&&i.lte!==void 0):s=ke.query(s,ke.startAt(i.gte),ke.endAt(i.lte));break;case(i.gte!==void 0&&i.lt!==void 0):s=ke.query(s,ke.startAt(i.gte),ke.endAt(i.lt));break;case(i.gt!==void 0&&i.lte!==void 0):s=ke.query(s,ke.startAt(i.gt),ke.endAt(i.lte));break;case(i.gt!==void 0&&i.lt!==void 0):s=ke.query(s,ke.startAt(i.gt),ke.endAt(i.lt));break;case i.gte!==void 0:s=ke.query(s,ke.startAt(i.gte));break;case i.gt!==void 0:s=ke.query(s,ke.startAt(i.gt));break;case i.lte!==void 0:s=ke.query(s,ke.endAt(i.lte));break;case i.lt!==void 0:s=ke.query(s,ke.endAt(i.lt));break}return{dbRef:s,clientWhere:c?{...ea(n,o)||{},[o]:c}:ea(n,o)}},ta=(e,t)=>{if(!t)return e;const n=t.split(".");let a=e;for(const o of n){if(a==null)return;a=a[o]}return a},_g=(e,t)=>e===t?0:e==null?-1:t==null?1:typeof e=="number"&&typeof t=="number"?e-t:typeof e=="boolean"&&typeof t=="boolean"?Number(e)-Number(t):globalThis.String(e).localeCompare(globalThis.String(t),void 0,{numeric:!0,sensitivity:"base"}),Fg=(e,t)=>{const n=typeof t=="object"&&t!==null&&!Array.isArray(t)?t:{eq:t};for(const[a,o]of Object.entries(n))switch(a){case"eq":if(e!==o)return!1;break;case"gt":if(!(e>o))return!1;break;case"gte":if(!(e>=o))return!1;break;case"lt":if(!(e<o))return!1;break;case"lte":if(!(e<=o))return!1;break;case"in":if(!Array.isArray(o)||!o.includes(e))return!1;break;case"nin":if(Array.isArray(o)&&o.includes(e))return!1;break;default:return!1}return!0},ra=(e,t,n)=>{const[a,...o]=Object.entries(n||{}),s=Object.entries(t||{});let l=Object.entries(e);if(s.length&&(l=l.filter(([,i])=>s.every(([c,d])=>Fg(ta(i,c),d)))),a){const i=[a,...o];l.sort((c,d)=>{for(const[m,u]of i){const f=_g(ta(c[1],m),ta(d[1],m));if(f)return u==="desc"?-f:f}return 0})}return Object.fromEntries(l)},Og=async e=>{var o;const t=Ze(),n=await((o=t==null?void 0:t.currentUser)==null?void 0:o.getIdToken().catch(()=>{})),a=new URL(`${e}.json`,ke.ref(Wt()).toString());return a.searchParams.set("shallow","true"),n&&a.searchParams.set("auth",n),a.toString()},$r=class $r{constructor(){this.readShallow=async(t,n=!1)=>{try{const a=await Og(t),o=await fetch(a);if(!o.ok)throw new Error(`${o.status} ${o.statusText}`);const s=await o.json();return s?Object.keys(s):[]}catch(a){return Kt(`reading SHALLOW data in Firebase for ${t}`,a,n),[]}},this.read=async(t,{where:n,order:a,toArray:o=!1,exception:s=!1}={})=>{const{dbRef:l,clientWhere:i}=Is(ke.ref(Wt(),t),a,n);try{const c=await ke.get(l);if(c.exists()){ht(`Info: Data found in Firebase for path ${t}`);const d=ra(c.val(),i,a);return o?Object.values(d):d}else s&&Kt(`Data not found in Firebase for path ${t}`,null,s)}catch(c){Kt(`reading data in Firebase for ${t}`,c,s)}},this.update=async(t,n,a=!1)=>{try{await ke.update(ke.ref(Wt(),t),n),ht(`Data successfully merged in Firebase for ${t}`)}catch(o){Kt(`updating data in Firebase for ${t}`,o,a)}},this.set=async(t,n,a=!1)=>{try{await ke.set(ke.ref(Wt(),t),n),ht(`Data successfully updated in Firebase for ${t}`)}catch(o){Kt(`updating data in Firebase for ${t}`,o,a)}},this.setChunks=async(t,n,{chunkSize:a=1e3,purge:o=!1,onProgress:s}={})=>{const l=Wt(),i=ke.ref(l,t);try{o&&(await ke.remove(i),s==null||s(0,0,`Purging existing data at ${t}`));const c=Object.entries(nr(n)),d=Math.ceil(c.length/a);for(let m=0;m<c.length;m+=a){const u=Object.fromEntries(c.slice(m,m+a));await ke.update(i,u);const f=Math.floor(m/a)+1;s==null||s(f,d,`Saving chunk ${f}/${d}`)}}catch(c){Kt(`setting data in chunks in Firebase for ${t}`,c,!1)}},this.remove=async(t,n=!1)=>{try{await ke.remove(ke.ref(Wt(),t)),ht(`Data successfully removed from Firebase for ${t}`)}catch(a){Kt(`removing data from Firebase for ${t}`,a,n)}},this.count=async t=>(await this.readShallow(t)).length,this.subscribe=(t,n,{where:a,order:o,fieldMap:s,onLoad:l}={})=>{const i=Ze();if(!i||!t)return()=>{};const c=()=>{const{dbRef:u,clientWhere:f}=Is(ke.ref(Wt(),t),o,a),p=h=>{const g=h.val();if(!g){n([]);return}const b=l?l(ra(g,f,o)):ra(g,f,o),y=Object.entries(b);if(!s){const N=y.map(([P,D],v)=>typeof D=="object"&&D!==null?{_index:v,[je]:P,...D}:{_index:v,[je]:P,[Tt.value]:D});n(N);return}const E=Object.keys(s),x=y.map(([N,P],D)=>{const v=typeof P=="object"&&P!==null?{[Tt.key]:N,...P}:{[Tt.key]:N,[Tt.value]:P},w={};for(const A of E){const I=s[A];w[A]=I.includes("{")?Ue.parse(v,I):I===Tt.key?N:I===Tt.value?P:v[I]}return{[je]:N,_index:D,...w}});n(x)};return ke.onValue(u,p)};let d;const m=ze.onAuthStateChanged(i,u=>{d==null||d(),d=void 0,u?d=c():n([])});return()=>{d==null||d(),m()}},!$r.listenerRegistered&&typeof Je=="function"&&($r.listenerRegistered=!0,Je(t=>{t.firebase&&Qr(t.firebase)}))}getConfigurationState(){return qa()}isConfigured(){return this.getConfigurationState().configured}};$r.listenerRegistered=!1;let Gr=$r;new Gr;const $g={github:"github.com",apple:"apple.com",microsoft:"microsoft.com",yahoo:"yahoo.com",twitter:"twitter.com",facebook:"facebook.com"};function Lg(e){const t=$g[e]??e;return new ze.OAuthProvider(t)}function fr(e){return e?{uid:e.uid,email:e.email??void 0,displayName:e.displayName??void 0,photoURL:e.photoURL??void 0,isAnonymous:e.isAnonymous}:null}class Dc{constructor(t={}){this.options=t,this.appName=t.appName,this.initPromise=t.config?Qr(t.config,this.appName).then(()=>{}):Promise.resolve()}getConfigurationState(){return qa(this.appName)}isConfigured(){return this.getConfigurationState().configured}getUser(){const t=Ze(this.appName);return fr((t==null?void 0:t.currentUser)??null)}isAuthenticated(){return!!this.getUser()}async signIn(t={}){await this.initPromise;const n=Ze(this.appName);if(!n)throw new Error("FirebaseAuthProvider: Firebase auth is not initialized");const a=t.method??"password";if(a==="anonymous"){const{user:i}=await ze.signInAnonymously(n);return fr(i)}if(a==="oauth"){const{provider:i}=t;if(!i)throw new Error("FirebaseAuthProvider.signIn: provider is required for oauth");const{user:c}=await ze.signInWithPopup(n,Lg(i));return fr(c)}const{email:o,password:s}=t;if(!o||!s)throw new Error("FirebaseAuthProvider.signIn: email and password are required");const{user:l}=await ze.signInWithEmailAndPassword(n,o,s);return fr(l)}async signOut(){await this.initPromise;const t=Ze(this.appName);if(!t)throw new Error("FirebaseAuthProvider: Firebase auth is not initialized");await ze.signOut(t)}onAuthChange(t){if(!this.options.config){const o=Ze(this.appName);return o?ze.onAuthStateChanged(o,s=>t(fr(s))):(t(null),()=>{})}let n=()=>{},a=!1;return this.initPromise.then(()=>{if(a)return;const o=Ze(this.appName);if(!o){t(null);return}n=ze.onAuthStateChanged(o,s=>t(fr(s)))}),()=>{a=!0,n()}}async getAccessToken(){await this.initPromise;const t=Ze(this.appName);if(!(t!=null&&t.currentUser))throw new Error("FirebaseAuthProvider: no active session");return t.currentUser.getIdToken()}async getIdTokenClaims(){await this.initPromise;const t=Ze(this.appName);if(!(t!=null&&t.currentUser))return null;const{claims:n}=await t.currentUser.getIdTokenResult();return n}}const Ms="https://oauth2.googleapis.com/token";function jg(e){const t=e.replace(/-----BEGIN PRIVATE KEY-----/,"").replace(/-----END PRIVATE KEY-----/,"").replace(/\s+/g,""),n=atob(t),a=new Uint8Array(n.length);for(let o=0;o<n.length;o++)a[o]=n.charCodeAt(o);return a.buffer}function na(e){return btoa(typeof e=="string"?e:String.fromCharCode(...new Uint8Array(e))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Bg(e,t){const a=na(JSON.stringify({alg:"RS256",typ:"JWT"})),o=na(JSON.stringify(e)),s=`${a}.${o}`,l=await crypto.subtle.importKey("pkcs8",jg(t),{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("RSASSA-PKCS1-v1_5",l,new TextEncoder().encode(s));return`${s}.${na(i)}`}class Rc{constructor(t){this.cache=new Map,this.config=t}async getToken(t="https://www.googleapis.com/auth/cloud-platform"){const n=this.cache.get(t);if(n&&n.expiresAt>Date.now()+6e4)return n.token;const a=Math.floor(Date.now()/1e3),o={iss:this.config.client_email,scope:t,aud:Ms,iat:a,exp:a+3600},s=await Bg(o,this.config.private_key),l=await fetch(Ms,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:s})});if(!l.ok){const c=await l.text();throw new Error(`GoogleServiceAccountProvider: token request failed - ${c}`)}const i=await l.json();return this.cache.set(t,{token:i.access_token,expiresAt:Date.now()+(i.expires_in??3600)*1e3}),i.access_token}}const zg="www.dropbox.com/oauth2";class _c{constructor(t){this.config=t}getConfigurationState(){return Ot("DropboxAuthProvider",sr(this.config,["clientId"],"dropbox."))}isConfigured(){return this.getConfigurationState().configured}getUser(){if(!this.isConfigured())return null;const t=ca(this.config.clientId);return t!=null&&t.access_token?{uid:t.account_id??this.config.clientId,displayName:"Dropbox",provider:"dropbox",accountId:t.account_id}:null}async signIn(t={}){if(!this.isConfigured())throw new Error("DropboxAuthProvider: missing dropbox.clientId configuration.");return Cu({authServer:zg,clientID:this.config.clientId,scopes:t.scopes,refreshParamName:"token_access_type"}),this.getUser()}async signOut(){Su(this.config.clientId)}onAuthChange(t){return t(this.getUser()),()=>{}}async getAccessToken(){if(!this.isConfigured())throw new Error("DropboxAuthProvider: missing dropbox.clientId configuration.");const t=await Sn(this.config.clientId);if(!t)throw new Error("DropboxAuthProvider: access token not found.");return t}isAuthenticated(){var t;return this.isConfigured()?!!((t=ca(this.config.clientId))!=null&&t.access_token):!1}}const Mo=e=>{const t=Rr("oAuth2");if(!t)return console.warn("GoogleAuth: Missing oAuth2.clientId in configuration"),Promise.reject("Google client ID not found");const n=e.join(" "),a=`googleAccessToken::${n}`,o=`googleExpiresAt::${n}`;return new Promise((s,l)=>{const i=localStorage.getItem(a),c=localStorage.getItem(o),d=!c||new Date(c).getTime()<Date.now();i&&!d?s(i):window.google.accounts.oauth2.initTokenClient({client_id:t.clientId,scope:n,callback:u=>{u.access_token?(localStorage.setItem(a,u.access_token),localStorage.setItem(o,new Date(Date.now()+u.expires_in*1e3).toISOString()),s(u.access_token)):l("Failed to obtain access token")}}).requestAccessToken()})};async function Fc({to:e,bcc:t,subject:n,message:a}){const o=await Mo(["https://www.googleapis.com/auth/gmail.send"]),s=[`To: ${e.join(", ")}`];t&&t.length&&s.push(`Bcc: ${t.join(", ")}`);const l=[...s,"Content-Type: text/html; charset=utf-8","MIME-Version: 1.0",`Subject: ${n}`,"",a].join(`
|
|
20
|
-
`),i=new TextEncoder().encode(l);let c="";for(const f of i)c+=String.fromCharCode(f);const d=btoa(c).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),m=await fetch("https://gmail.googleapis.com/gmail/v1/users/me/messages/send",{method:"POST",headers:{Authorization:`Bearer ${o}`,"Content-Type":"application/json"},body:JSON.stringify({raw:d})});if(!m.ok)throw new Error("Failed to send email");const u=await m.json();return console.log("Email sent:",u),u}class Oc{getConfigurationState(){return Ot("GmailEmailProvider",sr(Rr("oAuth2"),["clientId"],"google.oAuth2."))}isConfigured(){return this.getConfigurationState().configured}async send(t){if(!this.isConfigured())throw new Error(this.getConfigurationState().reason||"GmailEmailProvider is not configured.");await Fc({to:Array.isArray(t.to)?t.to:[t.to],bcc:t.bcc?Array.isArray(t.bcc)?t.bcc:[t.bcc]:void 0,subject:t.subject,message:t.message})}}function Sr(e){var t,n,a;return e?{uid:e.id,email:e.email??void 0,displayName:((t=e.user_metadata)==null?void 0:t.full_name)??((n=e.user_metadata)==null?void 0:n.name)??e.email??void 0,photoURL:((a=e.user_metadata)==null?void 0:a.avatar_url)??void 0,raw:e}:null}class $c{get client(){return Ya(this.config.url,this.config.anonKey)}constructor(t){this.config=t}getConfigurationState(){return Wa(this.config)}isConfigured(){return this.getConfigurationState().configured}getUser(){var n;const t=((n=this.client.auth)==null?void 0:n._session)??null;return Sr((t==null?void 0:t.user)??null)}isAuthenticated(){return!!this.getUser()}async signIn(t={}){const n=t.method??"password";if(n==="anonymous"){const{data:i,error:c}=await this.client.auth.signInAnonymously();if(c)throw c;return Sr(i.user)}if(n==="magic_link"){const i=t.email;if(!i)throw new Error("SupabaseAuthProvider.signIn: email is required for magic_link");const{error:c}=await this.client.auth.signInWithOtp({email:i,options:{emailRedirectTo:t.redirectTo}});if(c)throw c;return null}if(n==="oauth"){const i=t.provider;if(!i)throw new Error("SupabaseAuthProvider.signIn: provider is required for oauth");const{error:c}=await this.client.auth.signInWithOAuth({provider:i,options:{redirectTo:t.redirectTo}});if(c)throw c;return null}const{email:a,password:o}=t;if(!a||!o)throw new Error("SupabaseAuthProvider.signIn: email and password are required");const{data:s,error:l}=await this.client.auth.signInWithPassword({email:a,password:o});if(l)throw l;return Sr(s.user)}async signOut(){const{error:t}=await this.client.auth.signOut();if(t)throw t}onAuthChange(t){this.client.auth.getSession().then(({data:a})=>{var o;t(Sr(((o=a.session)==null?void 0:o.user)??null))});const{data:{subscription:n}}=this.client.auth.onAuthStateChange((a,o)=>{t(Sr((o==null?void 0:o.user)??null))});return()=>n.unsubscribe()}async getAccessToken(){var o;const{data:t,error:n}=await this.client.auth.getSession();if(n)throw n;const a=(o=t.session)==null?void 0:o.access_token;if(!a)throw new Error("SupabaseAuthProvider: no active session");return a}}const Ug="https://api.anthropic.com/v1/models",Hg="https://api.anthropic.com/v1/messages",Lc={id:"anthropic",label:"Anthropic",description:"Claude models via the Anthropic API.",configKey:"anthropicApiKey",defaultModel:"claude-sonnet-4-0",fallbackModels:["claude-sonnet-4-0","claude-opus-4-1","claude-3-7-sonnet-latest"],dashboardUrl:"https://console.anthropic.com/settings/keys",credentialsHint:"Anthropic Console → Settings → API Keys → Create Key.",credentialFields:[{key:"apiKey",label:"API Key",type:"password"}],capabilities:{supportsTemperature:!0,supportsVision:!0,supportsDocuments:!0},discoverModels:async e=>{const t=await ot(Ug,{headers:{"x-api-key":e,"anthropic-version":"2023-06-01"}},et);return Array.isArray(t==null?void 0:t.data)?t.data.map(n=>n.id).filter(Boolean):[]},complete:async(e,t)=>{const n=t.attachments??[],a=n.length>0?[...n.map(s=>s.mimeType.startsWith("image/")?{type:"image",source:{type:"base64",media_type:s.mimeType,data:s.base64}}:{type:"document",source:{type:"base64",media_type:s.mimeType,data:s.base64}}),{type:"text",text:t.prompt}]:t.prompt,o=await ot(Hg,{method:"POST",headers:{"x-api-key":e,"anthropic-version":"2023-06-01"},body:{model:t.model,max_tokens:4096,...t.role?{system:ct.parseRole(t.role,t)}:{},messages:[{role:"user",content:a}],...typeof t.temperature=="number"?{temperature:t.temperature}:{}}},et);return po(o==null?void 0:o.content)}},Vg=e=>e.replace(/\/+$/,""),Er=({id:e,label:t,description:n,configKey:a,requiredConfigKeys:o,defaultModel:s,fallbackModels:l,baseUrl:i,modelsUrl:c,chatCompletionsUrl:d,dashboardUrl:m,credentialsHint:u,validateApiKey:f})=>{const p=Vg(i),h=c||`${p}/models`,g=d||`${p}/chat/completions`;return{id:e,label:t,description:n,configKey:a,requiredConfigKeys:o,defaultModel:s,fallbackModels:l,dashboardUrl:m,credentialsHint:u,credentialFields:e==="openai-compatible"?[{key:"apiKey",label:"API Key",type:"password"},{key:"baseUrl",label:"Base URL",type:"text",placeholder:"https://api.example.com/v1"}]:[{key:"apiKey",label:"API Key",type:"password"}],capabilities:{supportsTemperature:!0,supportsVision:!0,supportsDocuments:!0},validateApiKey:f??(async y=>{try{const E=await ot(h,{headers:{Authorization:`Bearer ${y}`}},et);return E===null?{valid:!1,error:"Nessuna risposta dal server (CORS o proxy non attivo)"}:typeof(E==null?void 0:E.message)=="string"&&!Array.isArray(E==null?void 0:E.data)?{valid:!1,error:E.message}:{valid:!0}}catch(E){return{valid:!1,error:bn(E)}}}),discoverModels:async y=>{const E=await ot(h,{headers:{Authorization:`Bearer ${y}`}},et);return Array.isArray(E==null?void 0:E.data)?E.data.map(x=>x.id).filter(Boolean):[]},complete:async(y,E)=>{var v,w,A;const x=E.attachments??[],N=/^text\/|^application\/(json|csv|xml|javascript|typescript)/,P=x.length>0?x.map(I=>{if(I.mimeType.startsWith("image/"))return{type:"image_url",image_url:{url:`data:${I.mimeType};base64,${I.base64}`}};if(N.test(I.mimeType)){const T=globalThis.atob(I.base64);return{type:"text",text:`[File: ${I.name}]
|
|
21
|
-
${T}`}}return{type:"text",text:`[File attached: ${I.name} (${I.mimeType})]`}}).concat({type:"text",text:E.prompt}):E.prompt,D=await ot(g,{method:"POST",headers:{Authorization:`Bearer ${y}`},body:{model:E.model,messages:[...E.role?[{role:"system",content:ct.parseRole(E.role,E)}]:[],{role:"user",content:P}],...typeof E.temperature=="number"?{temperature:E.temperature}:{}}},et);if(!D)throw Bi(t);return po((A=(w=(v=D==null?void 0:D.choices)==null?void 0:v[0])==null?void 0:w.message)==null?void 0:A.content)}}},jc=Er({id:"deepseek",label:"DeepSeek",description:"Cost-efficient reasoning and chat models.",configKey:"deepSeekApiKey",defaultModel:"deepseek-chat",fallbackModels:["deepseek-chat","deepseek-reasoner"],baseUrl:"https://api.deepseek.com",dashboardUrl:"https://platform.deepseek.com/api_keys",credentialsHint:"DeepSeek platform → API Keys → Create new API key."}),Ts="https://generativelanguage.googleapis.com/v1beta/models",Kg="https://generativelanguage.googleapis.com/v1beta/models",Bc={id:"gemini",label:"Gemini",description:"Google's multimodal Gemini model family.",configKey:"geminiApiKey",defaultModel:"gemini-2.5-pro",fallbackModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite"],dashboardUrl:"https://aistudio.google.com/app/apikey",credentialsHint:"Google AI Studio → Get API key → Create API key.",credentialFields:[{key:"apiKey",label:"API Key",type:"password"}],capabilities:{supportsTemperature:!0,supportsVision:!0,supportsDocuments:!0},discoverModels:async e=>{const t=await ot(`${Ts}?key=${e}`,null,et);return Array.isArray(t==null?void 0:t.models)?t.models.map(n=>{var a;return(a=n.name)==null?void 0:a.replace(/^models\//,"")}).filter(Boolean):[]},validateApiKey:async e=>{try{const t=await ot(`${Ts}?key=${e}`,null,et);return t===null?{valid:!1,error:"Nessuna risposta dal server (CORS o rete)"}:t!=null&&t.error?{valid:!1,error:typeof t.error=="object"&&"message"in t.error?String(t.error.message):String(t.error)}:{valid:!0}}catch(t){const n=t;return{valid:!1,error:n!=null&&n.error&&typeof n.error=="object"?String(n.error.message??t):String(t)}}},complete:async(e,t)=>{var l,i,c;const a=[...(t.attachments??[]).map(d=>({inline_data:{mime_type:d.mimeType,data:d.base64}})),{text:t.prompt}],o=await ot(`${Kg}/${t.model}:generateContent?key=${e}`,{method:"POST",body:{contents:[{parts:a}],...t.role?{systemInstruction:{parts:[{text:ct.parseRole(t.role,t)}]}}:{},generationConfig:typeof t.temperature=="number"?{temperature:t.temperature}:void 0}},et),s=(c=(i=(l=o==null?void 0:o.candidates)==null?void 0:l[0])==null?void 0:i.content)==null?void 0:c.parts;return Array.isArray(s)&&s.map(d=>d&&typeof d=="object"&&"text"in d?String(d.text):"").join(`
|
|
22
|
-
`).trim()||null}},zc=Er({id:"mistral",label:"Mistral",description:"European-hosted open and commercial language models.",configKey:"mistralApiKey",defaultModel:"mistral-medium-3",fallbackModels:["mistral-medium-3","mistral-small-3.1","ministral-8b-latest"],baseUrl:"https://api.mistral.ai/v1",dashboardUrl:"https://console.mistral.ai/api-keys",credentialsHint:"Mistral Console → API Keys → Create new key."}),Uc=Er({id:"openai",label:"OpenAI",description:"GPT models via the OpenAI API.",configKey:"openaiApiKey",defaultModel:"gpt-5.2",fallbackModels:["gpt-5.2","gpt-5","gpt-5-mini","gpt-5-nano","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano"],baseUrl:"https://api.openai.com/v1",dashboardUrl:"https://platform.openai.com/api-keys",credentialsHint:"OpenAI dashboard → API keys → Create new secret key."}),Gg="https://opencode.ai/zen/v1/models",qg="https://opencode.ai/zen/v1/chat/completions",Yg=["big-pickle","deepseek-v4-flash-free","glm-5","glm-5.1","grok-build-0.1","kimi-k2.5","kimi-k2.6","mimo-v2.5-free","minimax-m2.5","minimax-m2.7","nemotron-3-super-free"],Wg=e=>{const t=e.endpoint||"",n=e.ai_sdk_package||e.aiSdkPackage||"";return t.includes("/chat/completions")||n.includes("openai-compatible")},Hc={id:"opencode",label:"OpenCode",description:"OpenCode Zen — a curated set of coding-focused models.",configKey:"openCodeApiKey",defaultModel:"deepseek-v4-flash-free",fallbackModels:Yg,dashboardUrl:"https://opencode.ai",credentialsHint:"OpenCode Zen dashboard → API Keys → Create Key.",credentialFields:[{key:"apiKey",label:"API Key",type:"password"}],capabilities:{supportsTemperature:!0},discoverModels:async e=>{const t=await ot(Gg,{headers:{Authorization:`Bearer ${e}`}},et);return(Array.isArray(t==null?void 0:t.data)?t.data:Array.isArray(t==null?void 0:t.models)?t.models:Array.isArray(t)?t:[]).filter(a=>Wg(a)).map(a=>a.id).filter(a=>typeof a=="string"&&a.length>0)},complete:async(e,t)=>{var a,o,s;const n=await ot(qg,{method:"POST",headers:{Authorization:`Bearer ${e}`},body:{model:t.model,messages:[...t.role?[{role:"system",content:ct.parseRole(t.role,t)}]:[],{role:"user",content:t.prompt}],...typeof t.temperature=="number"?{temperature:t.temperature}:{}}},et);if(!n)throw Bi("OpenCode");return po((s=(o=(a=n==null?void 0:n.choices)==null?void 0:a[0])==null?void 0:o.message)==null?void 0:s.content)}},Vc=Er({id:"openrouter",label:"OpenRouter",description:"Unified access to many model providers through one API.",configKey:"openRouterApiKey",defaultModel:"openai/gpt-4",fallbackModels:["openai/gpt-4","openai/gpt-5-nano","anthropic/claude-3.7-sonnet"],baseUrl:"https://openrouter.ai/api/v1",dashboardUrl:"https://openrouter.ai/settings/keys",credentialsHint:"OpenRouter → Settings → API Keys → Create Key.",validateApiKey:async e=>{var t,n;try{const a=await ot("https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${e}`}},et);return a===null?{valid:!1,error:"Nessuna risposta dal server (CORS o proxy non attivo)"}:((t=a==null?void 0:a.data)==null?void 0:t.label)!==void 0||((n=a==null?void 0:a.data)==null?void 0:n.usage)!==void 0?{valid:!0}:a!=null&&a.error?{valid:!1,error:bn(a)}:{valid:!1,error:"Chiave non riconosciuta da OpenRouter"}}catch(a){return{valid:!1,error:bn(a)}}}}),Jg={dbRealtime:{service:"data",create:()=>new Gr},firestoreDb:{service:"data",create:()=>new Hr},firestorage:{service:"storage",create:()=>new vr},firebaseAuth:{service:"auth",create:()=>new Dc}},Xg={googleAuth:{service:"auth",create:()=>new Io},gmail:{service:"email",create:()=>new Oc},googleServiceAccount:{service:"credentials",create:e=>new Rc(e.serviceAccount),when:e=>!!e.serviceAccount}},Zg={dropboxAuth:{service:"auth",create:e=>new _c(e)}},Qg={supabaseDb:{service:"data",create:e=>new Ja(e)},supabaseStorage:{service:"storage",create:e=>new Xa(e)},supabaseAuth:{service:"auth",create:e=>new $c(e)}},eh={mock:{service:"data",create:e=>new An(e==null?void 0:e.data)}},Gt=(e,t)=>({service:"ai",create:n=>new Ui(e,(n==null?void 0:n[t])||"")}),th={openai:Gt(Uc,"openaiApiKey"),openrouter:Gt(Vc,"openRouterApiKey"),opencode:Gt(Hc,"openCodeApiKey"),deepseek:Gt(jc,"deepSeekApiKey"),gemini:Gt(Bc,"geminiApiKey"),anthropic:Gt(Lc,"anthropicApiKey"),mistral:Gt(zc,"mistralApiKey")},rh={firebase:Jg,google:Xg,dropbox:Zg,supabase:Qg,mock:eh,ai:th},nh=()=>r.createElement("div",{className:"flex min-h-[calc(100vh-4rem)] items-center justify-center"},r.createElement("div",{className:"h-8 w-8 animate-spin rounded-full border-2 border-muted border-t-primary"}));function ah(e,t){if(!t)return;const n=t,a=typeof t=="object"&&!Array.isArray(t)?Object.entries(n):[];if(a.length>0&&a.every(([,s])=>typeof s=="object"&&s!==null)){Object.assign(e,n);return}e.custom=t}function oh(e,t,n="default"){return t&&e[t]?t:Object.keys(e)[0]??n}function sh(e={}){const t={data:{},storage:{},auth:{},email:{},ai:{},credentials:{}},n=s=>t[s]??(t[s]={});for(const[s,l]of Object.entries(rh)){const i=e[s];if(i!==void 0)for(const[c,d]of Object.entries(l))d.when&&!d.when(i)||(n(d.service)[c]=d.create(i))}for(const[s,l]of Object.entries(e.custom??{}))ah(n(s),l);Object.keys(t.data).length===0&&(t.data.mock=new An),Object.keys(t.auth).length===0&&(t.auth.googleAuth=new Io);const a=e.services??{},o={};for(const[s,l]of Object.entries(t))o[s]={registry:l,defaultKey:oh(l,a[s])};return o}let To={};const lh=e=>{To=e},ih=e=>To[e]||[];function Kc({contextProviders:e,providers:t={},appName:n="LLM Native",scrapeConfig:a,iconProvider:o,themeProvider:s,i18n:l,children:i,errorReportUrl:c,debug:d,basename:m}){const[u,f]=r.useState(()=>sh(t)),p=r.useRef(u);p.current=u;const h=r.useRef();h.current||(h.current=async(y,E,x)=>{var P,D,v;const N=(P=p.current[y])==null?void 0:P.registry;await((v=(D=N==null?void 0:N[E])==null?void 0:D.dispose)==null?void 0:v.call(D)),f(w=>{var A,I;return{...w,[y]:{defaultKey:((A=w[y])==null?void 0:A.defaultKey)??E,registry:{...(I=w[y])==null?void 0:I.registry,[E]:x}}}})});const g=h.current,b=e??r.Fragment;return r.createElement(Pc,{fullPage:!0,reportUrl:c,debug:d},r.createElement(De.BrowserRouter,{basename:m,future:{v7_relativeSplatPath:!0,v7_startTransition:!0}},r.createElement(nm,{defaultConfig:{title:n,firebase:t.firebase,google:t.google?{oAuth2:{clientId:t.google.clientId,scope:t.google.scope},serviceAccount:t.google.serviceAccount,developerToken:t.google.developerToken}:void 0,dropbox:t.dropbox,ai:t.ai,scrape:a,proxy:t.proxy}},r.createElement(em,{registries:u,setProvider:g},r.createElement(Ml,{...u.auth},r.createElement(Mg,{...u.credentials},r.createElement($l,{...u.data},r.createElement(Ci,{...u.storage},r.createElement(Mc,{...u.email},r.createElement(Oi,{...u.ai},r.createElement(cl,{config:o},r.createElement(xc,{appName:n},r.createElement(el,{config:l},r.createElement(Yd,{config:s},r.createElement(b,null,i)))))))))))))))}function ch({importPage:e,LayoutDefault:t=void 0,menuConfig:n={},children:a,...o}){lh(n);const s=({children:d})=>r.createElement(r.Fragment,null,d),l=({pageSource:d,message:m})=>r.createElement(Vr,{variant:"warning"},"Missing Page: ",d,m&&r.createElement("code",{className:"ml-2"},m));function i(d,m,u){const p=`./pages${m.component?"/"+m.component:m.path==="/"?"/Home":Ue.toCamel(m.path.split("*")[0])}.js`,h=m.page||r.lazy(()=>e(p).then(b=>typeof b.default!="function"?(console.warn(`⚠️ Invalid default export in ${p}`),{default:()=>r.createElement(l,{pageSource:p})}):{default:b.default}).catch(b=>(console.error(`❌ Failed to load ${p}:`,b),{default:()=>r.createElement(l,{pageSource:p,message:b.message})}))),g=m.layout||t||s;return r.createElement(De.Route,{key:`${d}-${u}`,path:m.path,element:r.createElement(g,null,r.createElement(Pc,{key:m.path,reportUrl:o.errorReportUrl,debug:o.debug},r.createElement(r.Suspense,{fallback:r.createElement(nh,null)},r.createElement(h,null))))})}const c=d=>Object.keys(d).flatMap(m=>d[m].flatMap((u,f)=>[u.path&&i(m,u,f),u.children&&c({children:u.children})].filter(Boolean)));return r.createElement(Kc,{...o},a,r.createElement(De.Routes,null,r.createElement(De.Route,{path:za,element:r.createElement(ku,null)}),r.createElement(r.Fragment,null,c({default:[{path:"/"}],...To,_auth:[{path:"/users",page:Sc,layout:t}]})),r.createElement(De.Route,{path:"*",element:r.createElement(Eg,null)})))}const Do=e=>{const t=ih(e),n=De.useLocation(),a=o=>o.map(s=>{const l=n.pathname===s.path,i=s.children?a(s.children):[],c=l||i.some(d=>d.active);return{...s,active:c,children:i}});return r.useMemo(()=>a(t),[n.pathname])},dh={common:{save:"Salva",cancel:"Annulla",delete:"Elimina",close:"Chiudi",back:"Indietro",search:"Cerca",loading:"Caricamento...",noDataFound:"Nessun dato trovato",pageNavigation:"Navigazione pagine",previous:"Precedente",next:"Successivo",notFoundMessage:"Ops! Pagina non trovata.",goHome:"Vai alla Home"},auth:{signIn:"Accedi",signOut:"Esci",connect:"Connetti",connected:"Connesso",authenticated:"Autenticato",notConfigured:'Il provider auth "{provider}" non è configurato. Controlla le chiavi API.',notImplemented:"Il provider non implementa signIn()."},form:{headerAdd:"Aggiungi",headerEdit:"Modifica",buttonSave:"Salva",buttonDelete:"Elimina",buttonBack:"Indietro",requiredField:'Il campo "{field}" è obbligatorio',requiredFieldGeneric:"I campi obbligatori non sono compilati",saveSuccess:"Salvato con successo",deleteSuccess:"Eliminato con successo",noticeRequiredFields:"Completa i campi obbligatori prima di salvare."},grid:{buttonAdd:"Aggiungi",deleteConfirm:"Sei sicuro di voler eliminare questo elemento?",emptyState:"Nessun elemento da mostrare"},select:{placeholder:"Seleziona...",loading:"Caricamento..."},modal:{save:"Salva",delete:"Elimina",cancel:"Annulla",close:"Chiudi"},upload:{clickOrDrag:"Clicca o trascina per caricare...",dropToUpload:"Rilascia per caricare",uploadMore:"Aggiungi altri file",editFileName:"Modifica nome file",editorImage:"Editor immagine",loaded:"Caricato",removeFile:"Rimuovi",uploadAnother:"Carica un altro file",dropToParse:"Rilascia per analizzare"},notifications:{title:"Notifiche",seeAll:"Vedi tutte"},code:{copyCode:"Copia codice",copy:"Copia",copied:"Copiato!",codeLanguageDefault:"Testo"},table:{noDataFound:"Nessun dato trovato",selectAllRows:"Seleziona tutte le righe",sortBy:"Ordina per {label}",sortByCurrent:"Ordina per {label} ({direction})",selectRow:"Seleziona riga {key}",reorderRow:"Riordina riga {key}"},gallery:{selectItem:"Seleziona elemento {key}"},crop:{enableCrop:"Abilita ritaglio a scala {scale}",variants:"Varianti",outputFile:"File di output",active:"Attivo",removeVariant:"Rimuovi variante {scale}",fileName:"Nome file"},imageEditor:{title:"Editor immagine",save:"Salva",undo:"Annulla",redo:"Ripristina",zoomOut:"Riduci zoom",zoomIn:"Aumenta zoom",crop:"Ritaglia",flipHorizontal:"Capovolgi orizzontalmente",flipVertical:"Capovolgi verticalmente",rotate:"Ruota 90°",freeDrawing:"Disegno libero",arrow:"Freccia",text:"Testo",rectangle:"Rettangolo",circle:"Cerchio",triangle:"Triangolo"},prompt:{noProviders:"Nessun provider AI registrato.",aiNotConfiguredEdit:"L'AI non è configurata. Puoi comunque modificare e salvare questo prompt.",aiNotConfiguredRun:"L'AI non è configurata. Impossibile eseguire questo prompt.",aiNotConfiguredShort:"AI non configurata",toggleOnTitle:"Prompt ATTIVO. Il testo viene usato come template e può essere eseguito.",toggleOffTitle:"Prompt DISATTIVO. Il testo viene usato direttamente senza elaborazione AI.",closeEditor:"Chiudi editor",editSettings:"Modifica impostazioni",attachFiles:"Allega file",attachmentsNotSupported:"Il provider AI selezionato non supporta allegati immagini o documenti.",run:"Esegui",runFailed:"Esecuzione del prompt fallita.",noMatchingCommands:"Nessun comando corrispondente",tokenUsage:"Utilizzo token",tokenInput:"In: {count} tok",tokenOutput:"Out: {count} tok",tokenContext:"Contesto: {percent}%",tokenCost:"Costo: ~${amount}",tokenTime:"Tempo: {seconds}s",tokenUsageEmpty:"Esegui il prompt per vedere l'utilizzo token.",hidePreview:"Nascondi anteprima",showPreview:"Mostra anteprima risolta",noProvider:"Nessun provider AI disponibile per questo prompt.",noResponse:"Il provider AI non ha restituito alcuna risposta.",promptLabel:"Prompt: ",defaultOption:"Predefinito"},layout:{maxElements:"Hai già 12 elementi nella riga: rimuovine uno prima.",noSpace:"Nessuno spazio: impossibile ridurre gli elementi per inserire questo campo.",dragToMove:"Trascina per spostare",remove:"Rimuovi",dragToResize:"Trascina per ridimensionare",dragHere:"Trascina un elemento qui dentro"}},uh={common:{save:"Speichern",cancel:"Abbrechen",delete:"Löschen",close:"Schließen",back:"Zurück",search:"Suchen",loading:"Laden...",noDataFound:"Keine Daten gefunden",pageNavigation:"Seitennavigation",previous:"Zurück",next:"Weiter",notFoundMessage:"Ups! Seite nicht gefunden.",goHome:"Zur Startseite"},auth:{signIn:"Anmelden",signOut:"Abmelden",connect:"Verbinden",connected:"Verbunden",authenticated:"Authentifiziert",notConfigured:'Auth-Provider "{provider}" ist nicht konfiguriert. API-Schlüssel prüfen.',notImplemented:"Der Provider implementiert signIn() nicht."},form:{headerAdd:"Hinzufügen",headerEdit:"Bearbeiten",buttonSave:"Speichern",buttonDelete:"Löschen",buttonBack:"Zurück",requiredField:'Das Feld "{field}" ist erforderlich',requiredFieldGeneric:"Pflichtfelder sind nicht ausgefüllt",saveSuccess:"Erfolgreich gespeichert",deleteSuccess:"Erfolgreich gelöscht",noticeRequiredFields:"Pflichtfelder vor dem Speichern ausfüllen."},grid:{buttonAdd:"Hinzufügen",deleteConfirm:"Dieses Element wirklich löschen?",emptyState:"Keine Elemente vorhanden"},select:{placeholder:"Auswählen...",loading:"Lädt..."},modal:{save:"Speichern",delete:"Löschen",cancel:"Abbrechen",close:"Schließen"},upload:{clickOrDrag:"Klicken oder ziehen zum Hochladen...",dropToUpload:"Loslassen zum Hochladen",uploadMore:"Weitere Dateien hinzufügen",editFileName:"Dateiname bearbeiten",editorImage:"Bildeditor",loaded:"Geladen",removeFile:"Entfernen",uploadAnother:"Eine weitere Datei hochladen",dropToParse:"Loslassen zum Analysieren"},notifications:{title:"Benachrichtigungen",seeAll:"Alle anzeigen"},code:{copyCode:"Code kopieren",copy:"Kopieren",copied:"Kopiert!",codeLanguageDefault:"Text"},table:{noDataFound:"Keine Daten gefunden",selectAllRows:"Alle Zeilen auswählen",sortBy:"Nach {label} sortieren",sortByCurrent:"Nach {label} sortieren ({direction})",selectRow:"Zeile {key} auswählen",reorderRow:"Zeile {key} neu anordnen"},gallery:{selectItem:"Element {key} auswählen"},crop:{enableCrop:"Zuschnitt mit Skalierung {scale} aktivieren",variants:"Varianten",outputFile:"Ausgabedatei",active:"Aktiv",removeVariant:"Variante {scale} entfernen",fileName:"Dateiname"},imageEditor:{title:"Bildeditor",save:"Speichern",undo:"Rückgängig",redo:"Wiederherstellen",zoomOut:"Herauszoomen",zoomIn:"Hineinzoomen",crop:"Zuschneiden",flipHorizontal:"Horizontal spiegeln",flipVertical:"Vertikal spiegeln",rotate:"90° drehen",freeDrawing:"Freihandzeichnen",arrow:"Pfeil",text:"Text",rectangle:"Rechteck",circle:"Kreis",triangle:"Dreieck"},prompt:{noProviders:"Keine AI-Provider registriert.",aiNotConfiguredEdit:"AI ist nicht konfiguriert. Sie können diesen Prompt trotzdem bearbeiten.",aiNotConfiguredRun:"AI ist nicht konfiguriert. Dieser Prompt kann nicht ausgeführt werden.",aiNotConfiguredShort:"AI nicht konfiguriert",toggleOnTitle:"Prompt AKTIV. Der Text wird als Vorlage verwendet und kann ausgeführt werden.",toggleOffTitle:"Prompt INAKTIV. Der Text wird direkt ohne AI-Verarbeitung verwendet.",closeEditor:"Editor schließen",editSettings:"Einstellungen bearbeiten",attachFiles:"Dateien anhängen",attachmentsNotSupported:"Der ausgewählte AI-Provider unterstützt keine Bild- oder Dokumentanlagen.",run:"Ausführen",runFailed:"Prompt-Ausführung fehlgeschlagen.",noMatchingCommands:"Keine passenden Befehle",tokenUsage:"Token-Nutzung",tokenInput:"Eingabe: {count} tok",tokenOutput:"Ausgabe: {count} tok",tokenContext:"Kontext: {percent}%",tokenCost:"Kosten: ~${amount}",tokenTime:"Zeit: {seconds}s",tokenUsageEmpty:"Prompt ausführen, um Token-Nutzung zu sehen.",hidePreview:"Vorschau ausblenden",showPreview:"Aufgelöste Vorschau anzeigen",noProvider:"Kein AI-Provider für diesen Prompt verfügbar.",noResponse:"Der AI-Provider hat keine Antwort zurückgegeben.",promptLabel:"Prompt: ",defaultOption:"Standard"},layout:{maxElements:"Bereits 12 Elemente in der Zeile: Eines entfernen.",noSpace:"Kein Platz: Elemente können nicht genug verkleinert werden.",dragToMove:"Zum Verschieben ziehen",remove:"Entfernen",dragToResize:"Zum Verkleinern ziehen",dragHere:"Element hierher ziehen"}},mh={common:{save:"Сохранить",cancel:"Отменить",delete:"Удалить",close:"Закрыть",back:"Назад",search:"Поиск",loading:"Загрузка...",noDataFound:"Данные не найдены",pageNavigation:"Навигация по страницам",previous:"Назад",next:"Вперёд",notFoundMessage:"Упс! Страница не найдена.",goHome:"На главную"},auth:{signIn:"Войти",signOut:"Выйти",connect:"Подключить",connected:"Подключено",authenticated:"Авторизован",notConfigured:'Провайдер "{provider}" не настроен. Проверьте API-ключи.',notImplemented:"Провайдер не реализует signIn()."},form:{headerAdd:"Добавить",headerEdit:"Редактировать",buttonSave:"Сохранить",buttonDelete:"Удалить",buttonBack:"Назад",requiredField:'Поле "{field}" обязательно для заполнения',requiredFieldGeneric:"Обязательные поля не заполнены",saveSuccess:"Успешно сохранено",deleteSuccess:"Успешно удалено",noticeRequiredFields:"Заполните обязательные поля перед сохранением."},grid:{buttonAdd:"Добавить",deleteConfirm:"Вы уверены, что хотите удалить этот элемент?",emptyState:"Нет элементов для отображения"},select:{placeholder:"Выбрать...",loading:"Загрузка..."},modal:{save:"Сохранить",delete:"Удалить",cancel:"Отменить",close:"Закрыть"},upload:{clickOrDrag:"Нажмите или перетащите для загрузки...",dropToUpload:"Отпустите для загрузки",uploadMore:"Добавить ещё файлы",editFileName:"Изменить имя файла",editorImage:"Редактор изображений",loaded:"Загружено",removeFile:"Удалить",uploadAnother:"Загрузить ещё один файл",dropToParse:"Отпустите для анализа"},notifications:{title:"Уведомления",seeAll:"Смотреть все"},code:{copyCode:"Копировать код",copy:"Копировать",copied:"Скопировано!",codeLanguageDefault:"Текст"},table:{noDataFound:"Данные не найдены",selectAllRows:"Выбрать все строки",sortBy:"Сортировать по {label}",sortByCurrent:"Сортировать по {label} ({direction})",selectRow:"Выбрать строку {key}",reorderRow:"Переместить строку {key}"},gallery:{selectItem:"Выбрать элемент {key}"},crop:{enableCrop:"Включить обрезку в масштабе {scale}",variants:"Варианты",outputFile:"Выходной файл",active:"Активно",removeVariant:"Удалить вариант {scale}",fileName:"Имя файла"},imageEditor:{title:"Редактор изображений",save:"Сохранить",undo:"Отменить",redo:"Повторить",zoomOut:"Уменьшить",zoomIn:"Увеличить",crop:"Обрезать",flipHorizontal:"Отразить горизонтально",flipVertical:"Отразить вертикально",rotate:"Повернуть на 90°",freeDrawing:"Свободное рисование",arrow:"Стрелка",text:"Текст",rectangle:"Прямоугольник",circle:"Круг",triangle:"Треугольник"},prompt:{noProviders:"Нет зарегистрированных AI-провайдеров.",aiNotConfiguredEdit:"AI не настроен. Вы можете редактировать и сохранять этот промпт.",aiNotConfiguredRun:"AI не настроен. Запуск этого промпта невозможен.",aiNotConfiguredShort:"AI не настроен",toggleOnTitle:"Промпт ВКЛЮЧЁН. Текст используется как шаблон и может быть выполнен.",toggleOffTitle:"Промпт ВЫКЛЮЧЕН. Текст используется напрямую без AI.",closeEditor:"Закрыть редактор",editSettings:"Изменить настройки",attachFiles:"Прикрепить файлы",attachmentsNotSupported:"Выбранный AI-провайдер не поддерживает изображения или документы.",run:"Запустить",runFailed:"Ошибка выполнения промпта.",noMatchingCommands:"Нет подходящих команд",tokenUsage:"Использование токенов",tokenInput:"Вход: {count} tok",tokenOutput:"Выход: {count} tok",tokenContext:"Контекст: {percent}%",tokenCost:"Стоимость: ~${amount}",tokenTime:"Время: {seconds}с",tokenUsageEmpty:"Запустите промпт для просмотра статистики.",hidePreview:"Скрыть предпросмотр",showPreview:"Показать предпросмотр",noProvider:"AI-провайдер недоступен для этого промпта.",noResponse:"AI-провайдер не вернул ответа.",promptLabel:"Промпт: ",defaultOption:"По умолчанию"},layout:{maxElements:"В строке уже 12 элементов: сначала удалите один.",noSpace:"Нет места: невозможно сжать элементы для добавления.",dragToMove:"Перетащить для перемещения",remove:"Удалить",dragToResize:"Перетащить для изменения размера",dragHere:"Перетащите элемент сюда"}},fh={common:{save:"保存",cancel:"取消",delete:"删除",close:"关闭",back:"返回",search:"搜索",loading:"加载中...",noDataFound:"未找到数据",pageNavigation:"页面导航",previous:"上一页",next:"下一页",notFoundMessage:"哎呀!页面未找到。",goHome:"返回首页"},auth:{signIn:"登录",signOut:"退出",connect:"连接",connected:"已连接",authenticated:"已认证",notConfigured:'授权提供商"{provider}"未配置。请检查API密钥。',notImplemented:"提供商未实现signIn()。"},form:{headerAdd:"添加",headerEdit:"编辑",buttonSave:"保存",buttonDelete:"删除",buttonBack:"返回",requiredField:'字段"{field}"为必填项',requiredFieldGeneric:"必填字段未填写",saveSuccess:"保存成功",deleteSuccess:"删除成功",noticeRequiredFields:"请在保存前填写必填字段。"},grid:{buttonAdd:"添加",deleteConfirm:"确定要删除此项目吗?",emptyState:"暂无数据"},select:{placeholder:"请选择...",loading:"加载中..."},modal:{save:"保存",delete:"删除",cancel:"取消",close:"关闭"},upload:{clickOrDrag:"点击或拖拽上传...",dropToUpload:"松开上传",uploadMore:"添加更多文件",editFileName:"编辑文件名",editorImage:"图片编辑器",loaded:"已加载",removeFile:"删除",uploadAnother:"上传另一个文件",dropToParse:"松开解析"},notifications:{title:"通知",seeAll:"查看全部"},code:{copyCode:"复制代码",copy:"复制",copied:"已复制!",codeLanguageDefault:"文本"},table:{noDataFound:"未找到数据",selectAllRows:"选择所有行",sortBy:"按{label}排序",sortByCurrent:"按{label}排序({direction})",selectRow:"选择行{key}",reorderRow:"重排行{key}"},gallery:{selectItem:"选择项目{key}"},crop:{enableCrop:"启用{scale}比例裁剪",variants:"变体",outputFile:"输出文件",active:"活跃",removeVariant:"删除变体{scale}",fileName:"文件名"},imageEditor:{title:"图片编辑器",save:"保存",undo:"撤销",redo:"重做",zoomOut:"缩小",zoomIn:"放大",crop:"裁剪",flipHorizontal:"水平翻转",flipVertical:"垂直翻转",rotate:"旋转90°",freeDrawing:"自由绘制",arrow:"箭头",text:"文本",rectangle:"矩形",circle:"圆形",triangle:"三角形"},prompt:{noProviders:"没有已注册的AI提供商。",aiNotConfiguredEdit:"AI未配置。您仍然可以编辑并保存此提示词。",aiNotConfiguredRun:"AI未配置。无法运行此提示词。",aiNotConfiguredShort:"AI未配置",toggleOnTitle:"提示词已启用。文本用作模板并可执行。",toggleOffTitle:"提示词已禁用。文本直接使用,不经AI处理。",closeEditor:"关闭编辑器",editSettings:"编辑设置",attachFiles:"附加文件",attachmentsNotSupported:"所选AI提供商不支持图像或文档附件。",run:"运行",runFailed:"提示词执行失败。",noMatchingCommands:"没有匹配的命令",tokenUsage:"Token用量",tokenInput:"输入:{count} tok",tokenOutput:"输出:{count} tok",tokenContext:"上下文:{percent}%",tokenCost:"费用:~${amount}",tokenTime:"时间:{seconds}秒",tokenUsageEmpty:"运行提示词以查看Token用量。",hidePreview:"隐藏预览",showPreview:"显示解析预览",noProvider:"此提示词没有可用的AI提供商。",noResponse:"AI提供商未返回任何响应。",promptLabel:"Prompt: ",defaultOption:"默认"},layout:{maxElements:"行中已有12个元素:请先删除一个。",noSpace:"空间不足:无法缩小元素以插入此字段。",dragToMove:"拖拽移动",remove:"删除",dragToResize:"拖拽调整大小",dragHere:"拖拽元素到此处"}},ph={common:{save:"حفظ",cancel:"إلغاء",delete:"حذف",close:"إغلاق",back:"رجوع",search:"بحث",loading:"جاري التحميل...",noDataFound:"لم يتم العثور على بيانات",pageNavigation:"تنقل الصفحات",previous:"السابق",next:"التالي",notFoundMessage:"عفوًا! الصفحة غير موجودة.",goHome:"الذهاب إلى الرئيسية"},auth:{signIn:"تسجيل الدخول",signOut:"تسجيل الخروج",connect:"ربط",connected:"مرتبط",authenticated:"موثق",notConfigured:'مزود المصادقة "{provider}" غير مكوّن. يرجى التحقق من مفاتيح API.',notImplemented:"المزود لا ينفّذ signIn()."},form:{headerAdd:"إضافة",headerEdit:"تعديل",buttonSave:"حفظ",buttonDelete:"حذف",buttonBack:"رجوع",requiredField:'الحقل "{field}" إلزامي',requiredFieldGeneric:"الحقول الإلزامية غير مكتملة",saveSuccess:"تم الحفظ بنجاح",deleteSuccess:"تم الحذف بنجاح",noticeRequiredFields:"يرجى ملء الحقول الإلزامية قبل الحفظ."},grid:{buttonAdd:"إضافة",deleteConfirm:"هل أنت متأكد من حذف هذا العنصر؟",emptyState:"لا توجد عناصر للعرض"},select:{placeholder:"اختر...",loading:"جارٍ التحميل..."},modal:{save:"حفظ",delete:"حذف",cancel:"إلغاء",close:"إغلاق"},upload:{clickOrDrag:"انقر أو اسحب للتحميل...",dropToUpload:"أفلت للتحميل",uploadMore:"إضافة المزيد من الملفات",editFileName:"تعديل اسم الملف",editorImage:"محرر الصور",loaded:"محمّل",removeFile:"إزالة",uploadAnother:"تحميل ملف آخر",dropToParse:"أفلت للتحليل"},notifications:{title:"الإشعارات",seeAll:"عرض الكل"},code:{copyCode:"نسخ الكود",copy:"نسخ",copied:"تم النسخ!",codeLanguageDefault:"نص"},table:{noDataFound:"لم يتم العثور على بيانات",selectAllRows:"تحديد جميع الصفوف",sortBy:"ترتيب حسب {label}",sortByCurrent:"ترتيب حسب {label} ({direction})",selectRow:"تحديد الصف {key}",reorderRow:"إعادة ترتيب الصف {key}"},gallery:{selectItem:"تحديد العنصر {key}"},crop:{enableCrop:"تفعيل الاقتصاص بمقياس {scale}",variants:"المتغيرات",outputFile:"ملف الإخراج",active:"نشط",removeVariant:"إزالة المتغير {scale}",fileName:"اسم الملف"},imageEditor:{title:"محرر الصور",save:"حفظ",undo:"تراجع",redo:"إعادة",zoomOut:"تصغير",zoomIn:"تكبير",crop:"اقتصاص",flipHorizontal:"قلب أفقي",flipVertical:"قلب رأسي",rotate:"تدوير 90°",freeDrawing:"رسم حر",arrow:"سهم",text:"نص",rectangle:"مستطيل",circle:"دائرة",triangle:"مثلث"},prompt:{noProviders:"لا توجد مزودات AI مسجّلة.",aiNotConfiguredEdit:"AI غير مكوّن. يمكنك تعديل وحفظ هذا الأمر.",aiNotConfiguredRun:"AI غير مكوّن. لا يمكن تشغيل هذا الأمر.",aiNotConfiguredShort:"AI غير مكوّن",toggleOnTitle:"الأمر مفعّل. النص يُستخدم كقالب ويمكن تشغيله.",toggleOffTitle:"الأمر معطّل. النص يُستخدم مباشرةً دون معالجة AI.",closeEditor:"إغلاق المحرر",editSettings:"تعديل الإعدادات",attachFiles:"إرفاق الملفات",attachmentsNotSupported:"مزوّد AI المحدد لا يدعم مرفقات الصور أو المستندات.",run:"تشغيل",runFailed:"فشل تنفيذ الأمر.",noMatchingCommands:"لا توجد أوامر مطابقة",tokenUsage:"استخدام الرموز",tokenInput:"دخل: {count} tok",tokenOutput:"خرج: {count} tok",tokenContext:"السياق: {percent}%",tokenCost:"التكلفة: ~${amount}",tokenTime:"الوقت: {seconds}ث",tokenUsageEmpty:"شغّل الأمر لعرض إحصائيات الرموز.",hidePreview:"إخفاء المعاينة",showPreview:"عرض المعاينة المحلولة",noProvider:"لا يوجد مزود AI متاح لهذا الأمر.",noResponse:"لم يُرجع مزود AI أي استجابة.",promptLabel:"أمر: ",defaultOption:"افتراضي"},layout:{maxElements:"الصف يحتوي بالفعل على 12 عنصرًا: احذف عنصرًا أولاً.",noSpace:"لا مساحة: لا يمكن تصغير العناصر لإضافة هذا الحقل.",dragToMove:"اسحب للتحريك",remove:"إزالة",dragToResize:"اسحب لتغيير الحجم",dragHere:"اسحب عنصرًا إلى هنا"}},gh=Object.freeze(Object.defineProperty({__proto__:null,ar:ph,de:uh,en:Zs,it:dh,ru:mh,zh:fh},Symbol.toStringTag,{value:"Module"})),hh=e=>ql("api",e);async function bh(e){if(!e.ok)throw new Error(`ApiProvider request failed: ${e.status} ${e.statusText}`);const t=await e.text();return t?JSON.parse(t):void 0}class vh{constructor(t){this.config=t}async fetch(t){const n=(t.method??"POST").toUpperCase(),a=new URL(this.config.baseUrl.replace(/\/+$/,"")+"/"+t.path.replace(/^\/+/,""));Object.entries({...t.query,...this.config.query}).forEach(([l,i])=>a.searchParams.set(l,i));const o={...t.body,...this.config.body},s=await et(a.toString(),{method:n,headers:{"Content-Type":"application/json",...this.config.header},body:n==="GET"||n==="HEAD"?void 0:JSON.stringify(o)});return bh(s)}}class yh{constructor(t){this.resolver=t}async fetch(t){return this.resolver(t)}}class wh{constructor(t){this.config=t}async fetch(t){return Yl(this.config.functionName,{provider:this.config.providerName,request:t},void 0,this.config.region)}}class xh{constructor(t){this.config=t}async fetch(t){const{getSupabaseClient:n}=await Promise.resolve().then(()=>um),a=n(this.config.url,this.config.anonKey),{data:o,error:s}=await a.functions.invoke(this.config.functionName,{body:{provider:this.config.providerName,request:t}});if(s)throw s;return o}}const Eh=[{id:"resend",label:"Resend",description:"Developer-first transactional email API.",credentialFields:[{key:"apiKey",label:"API Key",type:"password",placeholder:"re_..."}],credentialsUrl:"https://resend.com/api-keys",credentialsHint:"Resend dashboard → API Keys → Create API Key."},{id:"sendgrid",label:"SendGrid",description:"Scalable email delivery by Twilio.",credentialFields:[{key:"apiKey",label:"API Key",type:"password",placeholder:"SG..."}],credentialsUrl:"https://app.sendgrid.com/settings/api_keys",credentialsHint:"SendGrid dashboard → Settings → API Keys → Create API Key."},{id:"mailgun",label:"Mailgun",description:"Email API with analytics and webhooks.",credentialFields:[{key:"apiKey",label:"API Key",type:"password"},{key:"domain",label:"Mailgun domain",type:"text",placeholder:"mg.yourdomain.com"}],credentialsUrl:"https://app.mailgun.com/settings/api_security/api_keys",credentialsHint:"Mailgun dashboard → Security → API Keys. The domain is the sending domain you verified under Sending → Domains."},{id:"postmark",label:"Postmark",description:"High-deliverability transactional email.",credentialFields:[{key:"serverToken",label:"Server API Token",type:"password"}],credentialsUrl:"https://account.postmarkapp.com/servers",credentialsHint:"Postmark → your Server → API Tokens tab (each server has its own token)."},{id:"ses",label:"AWS SES",description:"Amazon Simple Email Service.",credentialFields:[{key:"accessKeyId",label:"Access Key ID",type:"text"},{key:"secretAccessKey",label:"Secret Access Key",type:"password"},{key:"region",label:"Region",type:"text",placeholder:"us-east-1"}],credentialsUrl:"https://console.aws.amazon.com/iam/home#/security_credentials",credentialsHint:"AWS IAM → Security credentials → Access keys, for a user with SES send permissions."},{id:"smtp",label:"SMTP",description:"Any SMTP-compatible mail server.",credentialFields:[{key:"host",label:"Host",type:"text",placeholder:"smtp.example.com"},{key:"port",label:"Port",type:"text",placeholder:"587"},{key:"username",label:"Username",type:"text"},{key:"password",label:"Password",type:"password"}],credentialsHint:"Ask your mail host or hosting provider for the SMTP host, port, and credentials."}],Nh=[{id:"cloudflare_pages",label:"Cloudflare Pages",description:"Static hosting on Cloudflare's edge network, with native rollback.",credentialFields:[{key:"apiToken",label:"API Token",type:"password"},{key:"accountId",label:"Account ID",type:"text"},{key:"projectName",label:"Project name",type:"text",placeholder:"my-site"}],credentialsUrl:"https://dash.cloudflare.com/profile/api-tokens",credentialsHint:"Cloudflare dashboard → My Profile → API Tokens → Create Token (Pages edit permission)."},{id:"firebase_hosting",label:"Firebase Hosting",description:"Google's static hosting, same project family as Firestore/Auth.",credentialFields:[{key:"projectId",label:"Firebase project ID",type:"text"},{key:"siteId",label:"Hosting site ID",type:"text"},{key:"serviceAccountJson",label:"Service account JSON",type:"password"}],credentialsUrl:"https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk",credentialsHint:"Firebase Console → Project settings → Service accounts → Generate new private key."},{id:"supabase_storage",label:"Supabase (Storage + custom domain)",description:"Not a hosting product — serves the static build from a public Storage bucket behind your own domain. DIY, not officially supported by Supabase.",credentialFields:[{key:"projectUrl",label:"Project URL",type:"text",placeholder:"https://xyzcompany.supabase.co"},{key:"serviceKey",label:"Service role key",type:"password"},{key:"bucketName",label:"Bucket name",type:"text"}],credentialsUrl:"https://supabase.com/dashboard/project/_/settings/api",credentialsHint:"Supabase dashboard → Project Settings → API → service_role key (never the anon key)."},{id:"ftp",label:"FTP",description:"Direct upload to any server over plain FTP — legacy, usually unencrypted; prefer SFTP when the server supports it.",credentialFields:[{key:"host",label:"Host",type:"text",placeholder:"ftp.example.com"},{key:"port",label:"Port",type:"text",placeholder:"21"},{key:"username",label:"Username",type:"text"},{key:"password",label:"Password",type:"password"},{key:"remotePath",label:"Remote path",type:"text",placeholder:"/var/www/html"}],credentialsHint:"Ask your hosting provider or server admin for FTP host, port, and credentials."},{id:"sftp",label:"SFTP",description:"Direct upload to any server over SFTP (SSH) — no vendor lock-in.",credentialFields:[{key:"host",label:"Host",type:"text",placeholder:"sftp.example.com"},{key:"port",label:"Port",type:"text",placeholder:"22"},{key:"username",label:"Username",type:"text"},{key:"password",label:"Password / key",type:"password"},{key:"remotePath",label:"Remote path",type:"text",placeholder:"/var/www/html"}],credentialsHint:"Ask your hosting provider or server admin for SFTP host, port, and credentials."},{id:"netlify",label:"Netlify",description:"Popular JAMstack hosting with a simple deploy API.",credentialFields:[{key:"accessToken",label:"Personal access token",type:"password"},{key:"siteId",label:"Site ID",type:"text"}],credentialsUrl:"https://app.netlify.com/user/applications#personal-access-tokens",credentialsHint:"Netlify → User settings → Applications → New access token."},{id:"github_pages",label:"GitHub Pages",description:"Publishes by pushing the build to a branch of a GitHub repository.",credentialFields:[{key:"repo",label:"Repository",type:"text",placeholder:"owner/repo"},{key:"branch",label:"Branch",type:"text",placeholder:"gh-pages"},{key:"token",label:"Access token",type:"password"}],credentialsUrl:"https://github.com/settings/tokens",credentialsHint:"GitHub → Settings → Developer settings → Personal access tokens (repo scope)."},{id:"s3_cloudfront",label:"AWS S3 + CloudFront",description:"Classic static hosting on S3, served and cached through a CloudFront distribution.",credentialFields:[{key:"accessKeyId",label:"Access Key ID",type:"text"},{key:"secretAccessKey",label:"Secret Access Key",type:"password"},{key:"bucketName",label:"Bucket name",type:"text"},{key:"distributionId",label:"CloudFront distribution ID",type:"text"},{key:"region",label:"Region",type:"text",placeholder:"us-east-1"}],credentialsUrl:"https://console.aws.amazon.com/iam/home#/security_credentials",credentialsHint:"AWS IAM → Security credentials → Access keys, for a user with S3 + CloudFront invalidation permissions."},{id:"static_export",label:"Static export (download)",description:"No vendor — packages the build as a downloadable archive for self-hosting anywhere else.",credentialFields:[]}],Ch=Er({id:"glm",label:"ZhipuAI (GLM)",description:"Zhipu AI's GLM model family.",configKey:"glmApiKey",defaultModel:"glm-4-flash",fallbackModels:["glm-4-flash","glm-4","glm-z1-preview","glm-z1-plus","glm-4-long"],baseUrl:"https://open.bigmodel.cn/api/paas/v4",dashboardUrl:"https://bigmodel.cn/usercenter/apikeys",credentialsHint:"Zhipu BigModel → User Center → API Keys → Create Key."}),Ro=[Uc,Vc,Hc,jc,Bc,Lc,zc,Ch],Gc=e=>({id:e.id,label:e.label,description:e.description??"",credentialFields:e.credentialFields??[{key:"apiKey",label:"API Key",type:"password"}],credentialsUrl:e.dashboardUrl,credentialsHint:e.credentialsHint}),kh=Ro.map(Gc),Sh={id:"openai-compatible",label:"OpenAI-compatible",description:"Any OpenAI-compatible endpoint (self-hosted or third-party).",credentialFields:[{key:"apiKey",label:"API Key",type:"password"},{key:"baseUrl",label:"Base URL",type:"text",placeholder:"https://api.example.com/v1"}]},Ah=e=>{var n,a,o,s,l,i,c,d,m,u,f,p;const t=(a=(n=e==null?void 0:e.openAICompatible)==null?void 0:n.baseUrl)==null?void 0:a.trim();return t?[Er({id:"openai-compatible",label:((s=(o=e==null?void 0:e.openAICompatible)==null?void 0:o.label)==null?void 0:s.trim())||"OpenAI-compatible",description:"Any OpenAI-compatible endpoint (self-hosted or third-party).",configKey:"openAICompatible",requiredConfigKeys:["ai.openAICompatible.apiKey","ai.openAICompatible.baseUrl"],defaultModel:((i=(l=e==null?void 0:e.openAICompatible)==null?void 0:l.defaultModel)==null?void 0:i.trim())||"default",fallbackModels:((d=(c=e==null?void 0:e.openAICompatible)==null?void 0:c.fallbackModels)==null?void 0:d.filter(Boolean))||["default"],baseUrl:t,modelsUrl:((u=(m=e==null?void 0:e.openAICompatible)==null?void 0:m.modelsUrl)==null?void 0:u.trim())||void 0,chatCompletionsUrl:((p=(f=e==null?void 0:e.openAICompatible)==null?void 0:f.chatCompletionsUrl)==null?void 0:p.trim())||void 0})]:[]},Ph=e=>e?[...Ro,...Ah(e)].reduce((n,a)=>{var s,l;const o=a.id==="openai-compatible"?((l=(s=e.openAICompatible)==null?void 0:s.apiKey)==null?void 0:l.trim())||"":typeof a.configKey=="string"&&typeof e[a.configKey]=="string"?String(e[a.configKey]||"").trim():"";return o&&(n[a.id]=new Ui(a,o)),n},{}):{};let Dr;typeof Je=="function"&&Je(e=>{Dr=e.google});const Ih="geoTargetConstants/2380",Mh="languageConstants/1000",Th={ita:"geoTargetConstants/2380",rome:"geoTargetConstants/1033236",mil:"geoTargetConstants/1033239",nap:"geoTargetConstants/1033245",tor:"geoTargetConstants/1033247"},Dh={it:"languageConstants/1000",en:"languageConstants/1001",fr:"languageConstants/1002",es:"languageConstants/1003",de:"languageConstants/1005"};function Rh(e){return Th[e.toLowerCase()]||Ih}function _h(e){return Dh[e.toLowerCase()]||Mh}async function Fh({keyword:e,googleAdsAccountId:t,geoCode:n="ita",languageCode:a="it"}){var u;if(!(Dr!=null&&Dr.developerToken))return console.error(`
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let l=require("react");l=c(l);let u=require("react-router-dom"),d=require("clsx"),f=require("tailwind-merge"),p=require("lucide-react");p=c(p);let m=require("@phosphor-icons/react");m=c(m);let h=require("react-dom"),g=require("firebase/app"),_=require("firebase/auth"),v=require("firebase/firestore"),y=require("@supabase/supabase-js"),b=require("firebase/storage"),x=require("papaparse");x=c(x);let S=require("react-markdown");S=c(S);let C=require("remark-gfm");C=c(C);let w=require("rehype-slug");w=c(w);let T=require("rehype-autolink-headings");T=c(T);let E=require("rehype-sanitize");E=c(E);let D=require("firebase/database");require("react-dom/server");function O(e){let t=new Date(typeof e==`number`||/^\d+$/.test(String(e))?Number(e):e);if(isNaN(t.getTime()))return{year:``,shortYear:``,month:``,day:``,hours:``,minutes:``,seconds:``,hour:``,minute:``,second:``};let n=e=>e.toString().padStart(2,`0`);return{year:t.getFullYear().toString(),shortYear:t.getFullYear().toString().slice(-2),month:n(t.getMonth()+1),day:n(t.getDate()),hours:n(t.getHours()),minutes:n(t.getMinutes()),seconds:n(t.getSeconds()),hour:t.getHours().toString(),minute:t.getMinutes().toString(),second:t.getSeconds().toString()}}function k(e,t){let{year:n,shortYear:r,month:i,day:a,hours:o,minutes:s,seconds:c,hour:l,minute:u,second:d}=O(e),f={YYYY:n,YY:r,MM:i,DD:a,hh:o,mm:s,ss:c,h:l,m:u,s:d};return t.replace(/YYYY|YY|MM|DD|hh|mm|ss|h|m|s/g,e=>f[e]||e)}function A(){let e=new Date;return new Intl.DateTimeFormat(void 0,{year:`numeric`,month:`2-digit`,day:`2-digit`}).formatToParts(e).map(e=>{switch(e.type){case`year`:return`YYYY`;case`month`:return`MM`;case`day`:return`DD`;default:return e.value}}).join(``)}function j(){let e=new Date;return new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1}).formatToParts(e).map(e=>{switch(e.type){case`hour`:return`hh`;case`minute`:return`mm`;case`second`:return`ss`;default:return e.value}}).join(``)}var M=(e,t,n,r)=>{if(!e||!t)return``;let i=t.split(`.`),a=e;for(let e=0;e<i.length;e++){let t=i[e];if(a==null)return``;if(t.endsWith(`[]`)){let o=t.slice(0,-2),s=a[o];if(!Array.isArray(s))return``;let c=i.slice(e+1).join(`.`);if(!c)return n?(n.key&&(n.value[n.key]=s)||(n.value=s),``):s;let l=n?.value??{};for(let e in s){let t=(()=>{let t=M(s[e],c);return r?.(t)??t})();n&&(!n.hideEmpty||t!==``)&&(l[e]=n.key?{...l[e]??{},[n.key]:t}:t)}return n?``:l}a=a[t]}return a=r?.(a)??a,n&&(!n.hideEmpty||a!==``)?(n.key&&(n.value[n.key]=a)||(n.value=a),``):a},N={parse:(e,t,n=void 0,r=void 0)=>typeof t==`string`?F(P(t.replace(/{([^}:]+)(?::([^}:]+))?(?::([^}:]+))?}/g,(t,i,a,o)=>{let[s,c]=(i||``).indexOf(`(`)===-1?[``,i]:i.split(`(`,2),[l,u]=(a||``).indexOf(`)`)===-1?[a,``]:a.split(`)`,2),d=M(e,c,n,r);return!N?.[l]||!d?d||``:s+N[l](d,o)+u}))):t,toDate:(e,t=void 0)=>{let n=A();return t===`ISO`?k(e,`YYYY-MM-DD`):k(e,t||n)},toTime:(e,t=void 0)=>{let n=j();return t===`ISO`?k(e,`hh:mm:ss`):k(e,t||n)},toDateTime:(e,t=void 0)=>{let n=`${A()} ${j()}`;return t===`ISO`?k(e,`YYYY-MM-DD hh:mm:ss`):k(e,t||n)},toCamel:(e,t=``,n=[`-`,`_`,` `])=>{let r=e.split(`/`),i=r.pop()||``,a=n.map(e=>`\\`+e).join(``),o=RegExp(`(?:[${a}]+|^)(.)`,`g`),s=i.toLowerCase().replace(o,(e,n)=>t+n.toUpperCase());return[...r,s].join(`/`)},toUpper:e=>e.toUpperCase(),toLower:e=>e.toLowerCase(),toSlug:e=>V(e),toNumberFormat:(e,t=navigator.language)=>new Intl.NumberFormat(t).format(Number(e)),splitLast:(e,t,n=void 0)=>{let r=t=>{let r=e.split(t);if(r.length<=1)return null;let i=r.pop()||``;for(;r.length&&n?.test(r[r.length-1]);)i=r.pop()+t+i;return[r.join(t),i]},i=typeof t==`string`?[t]:Array.isArray(t)?t:[];for(let e of i){let t=r(e);if(t)return t}return[e,``]},splitFirst:(e,t,n=void 0)=>{let r=t=>{let r=e.split(t);if(r.length<=1)return null;let i=r.shift()||``;for(;r.length&&n?.test(r[0]);)i+=t+r.shift();return[i,r.join(t)]},i=typeof t==`string`?[t]:Array.isArray(t)?t:[];for(let e of i){let t=r(e);if(t)return t}return[e,``]},padLeft:(e,t,n=` `,r=void 0)=>r?e.replace(r,e=>e.padStart(t,n)):e.padStart(t,n),padRight:(e,t,n=` `,r=void 0)=>r?e.replace(r,e=>e.padEnd(t,n)):e.padEnd(t,n),toQueryString:(e,t=`?`,n=void 0)=>{let r=Object.keys(e);return(r.length>0?t:``)+r.map(t=>`${encodeURIComponent(t)}=${encodeURIComponent(n===void 0?e[t]:n)}`).join(`&`)},fillObject:(e,t=void 0)=>{let n={};for(let r in e)n[r]=t;return n},subStringCount:(e,t)=>t===``?0:e.split(t).length-1,truncate:(e,t=100)=>e.length>t?e.substring(0,t):e};function P(e){return e.replace(/replace\(([^,]+),([^,]+),([^)]+)\)/gi,(e,t,n,r)=>t.replaceAll(n,r))}function F(e){return e.replace(/split\(([^,]+),([^,]+),([^)]+)\)/gi,(e,t,n,r=0)=>t.split(n)[r])}var I=e=>{try{let t=e.split(`.`),n=atob(t[1]);return JSON.parse(n)}catch(e){console.error(`Errore durante la decodifica del token:`,e)}},L=e=>{try{navigator.clipboard.writeText(e).then(()=>{console.log(`Selettore HTML copiato negli appunti:`,e)}).catch(e=>{console.error(`Errore durante la copia del selettore HTML negli appunti:`,e)})}catch(e){console.error(`Clipboard API non supportata:`,e)}},R=e=>z(e).replace(/\/$/,``).replace(/^\//,``),z=e=>e?e.replaceAll(` `,`-`).replaceAll(`'`,`-`).replaceAll(`"`,`-`).toLowerCase().replace(/[^a-z0-9\-/]+/g,``).replace(/-+/g,`-`).replace(/\/+/g,`/`):``,B=e=>typeof e==`number`?String(e):typeof e==`boolean`?e?`true`:`false`:e?e.startsWith(`/`)?e.substring(1):e:``,V=e=>B(e).replaceAll(`/`,`|`).replaceAll(` `,`-`).replaceAll(`'`,`-`).replaceAll(`"`,`-`).replaceAll(`.`,`-`).replaceAll(`@`,`-`).replaceAll(`#`,`-`).replaceAll(`$`,`-`).replaceAll(`[`,`-`).replaceAll(`]`,`-`).replaceAll(`_`,`-`).toLowerCase().replace(/[^a-z0-9\-|]+/g,``).replace(/^-+|-+$/g,``).replace(/-+/g,`-`),ee=e=>{if(!e)return``;e=e.replace(/\/$/,``);let t=e.split(`/`);return t.pop(),t.join(`/`)};async function te(e){return new Promise(t=>setTimeout(t,e))}function ne(e=null){return`${Date.now().toString(36)}-${e||Math.random().toString(36).substring(2)}`}function H(e,t){let n=e.target;if(n.tagName.toLowerCase()===t.toLowerCase())return n;for(;n.parentNode;){let e=n.parentNode;if(e.tagName.toLowerCase()===t.toLowerCase())return e;n=e}return null}var re=(e,t)=>e.split(t).length-1,U=(e,t)=>e.replace(/\$(\d+)/g,(e,n)=>t[parseInt(n)]||``).trim(),ie=(e,t,n)=>{for(let r of e){let e=z(W(r.key,t)),i=z(U(W(r.value,t),n));if((r.operator===`==`||r.operator===`=`)&&e===i||r.operator===`!=`&&e!==i||r.operator===`>`&&e>i||r.operator===`<`&&e<i||r.operator===`>=`&&e>=i||r.operator===`<=`&&e<=i||r.operator===`contains`&&e.includes(i)||r.operator===`not contains`&&!e.includes(i))return!0}return!1},ae=e=>{let t=[];for(let e=0;e<256;e++){let n=e;for(let e=0;e<8;e++)n&1?n=3988292384^n>>>1:n>>>=1;t[e]=n}let n=-1;for(let r=0;r<e.length;r++)n=n>>>8^t[(n^e.charCodeAt(r))&255];return(n^-1)>>>0},oe=e=>e?e.charAt(0).toUpperCase()+e.slice(1):``,se=e=>{if(!e.length)return;let t=document.createDocumentFragment();e.forEach(({src:e,clean:n,...r})=>{if(!e)return;let i=document.createElement(`script`);i.setAttribute(`src`,String(e)),Object.entries(r).forEach(([e,t])=>{i.setAttribute(e,String(t))}),n&&(i.onload=()=>document.body.removeChild(i)),t.appendChild(i)}),document.body.appendChild(t)},ce=(e,t)=>{let n={};for(let r in e)e.hasOwnProperty(r)&&r in t&&(n[r]=e[r]);return n},W=(e,t)=>((e.match(/{[^}]*}/g)||[]).forEach(n=>{let r=n.slice(1,-1).split(`:`),i=r[0],a=r[1],o=(a&&typeof N[a]==`function`?N[a](t[i]):t[i])||``;e=e.replaceAll(n,o)}),e),le=(e,t)=>{if(t){let n=new Set;return e.filter(e=>{let r=e[t];return n.has(r)?!1:(n.add(r),!0)})}else return[...new Set(e)]},ue=e=>e==null||e===``||e===!1||e===`0`||e===0||typeof e==`object`&&!!e&&Object.keys(e).length===0;function G(e,t=new WeakMap){if(typeof e!=`object`||!e||l.default.isValidElement(e))return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(t.has(e))return t.get(e);if(Array.isArray(e)){let n=[];return t.set(e,n),e.forEach((e,r)=>{n[r]=G(e,t)}),n}if(e instanceof Map){let n=new Map;return t.set(e,n),e.forEach((e,r)=>{n.set(G(r,t),G(e,t))}),n}if(e instanceof Set){let n=new Set;return t.set(e,n),e.forEach(e=>{n.add(G(e,t))}),n}let n=Object.getPrototypeOf(e);if(n&&n!==Object.prototype)return e;let r={};return t.set(e,r),Object.entries(e).forEach(([e,n])=>{r[e]=G(n,t)}),r}function K(e){if(typeof structuredClone!=`function`)return G(e);try{return structuredClone(e)}catch{return G(e)}}function q(e){return(typeof e==`string`?Buffer.from(e,`utf8`):e instanceof ArrayBuffer?Buffer.from(new Uint8Array(e)):Buffer.from(e)).toString(`base64`).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function de(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function fe(e){return e.replace(/[^a-zA-Z0-9-_:.]/g,`_`)}function pe(e,t){let n=e.target,r=!!(n.closest(`a`)||n.closest(`button`)||n.closest(`input`)||n.closest(`textarea`)||n.closest(`select`));return t?r&&!n.closest(t):r}var me=e=>{let t=new Uint8Array(e),n=``;for(let e=0;e<t.byteLength;e++)n+=String.fromCharCode(t[e]);return btoa(n)},he=(e,t)=>{try{let n=e.includes(`,`)?e.split(`,`)[1]:e,r=atob(n),i=Array(r.length);for(let e=0;e<r.length;e++)i[e]=r.charCodeAt(e);let a=new Uint8Array(i);return new Blob([a],{type:t})}catch(e){console.warn(`Failed to create blob from base64:`,e);return}},ge=(e,t)=>{let n=he(e,t);return n?URL.createObjectURL(n):void 0},_e=(e,t)=>{if(!(!e||!t))return t.split(`.`).reduce((e,t)=>{if(e!=null&&!(typeof e!=`object`||Array.isArray(e)))return e[t]},e)},ve=e=>{let t={};if(!e)return t;if(e instanceof File)return{name:e.name,type:e.type,size:e.size,lastModified:e.lastModified};for(let[n,r]of Object.entries(e))n&&(Array.isArray(r)?t[n]=r.map(e=>typeof e==`object`?ve(e):e).filter(e=>e!==void 0):r&&typeof r==`object`?t[n]=ve(r):r!==void 0&&(t[n]=r));return t},ye=e=>e==null||e===``||typeof e!=`string`?e:/^(true|false)$/i.test(e)?e.toLowerCase()===`true`:/^0\d+$/.test(e)?e:/^-?\d+(\.\d+)?$/.test(e)?Number(e):e.trim(),be=/auth|key|token|secret/i,xe=[`key`,`apikey`,`api_key`,`access_token`,`token`,`secret`];function Se(e){return e?(e instanceof Headers?Array.from(e.entries()):Array.isArray(e)?e:Object.entries(e)).reduce((e,[t,n])=>(e[t]=be.test(t)?`[REDACTED]`:n,e),{}):{}}function Ce(e){return{...e,headers:Se(e.headers)}}function we(e){try{let t=new URL(e,`http://placeholder-base.invalid`),n=!1;for(let e of xe)t.searchParams.has(e)&&(t.searchParams.set(e,`[REDACTED]`),n=!0);return n?e.startsWith(`http`)?t.toString():`${t.pathname}${t.search}${t.hash}`:e}catch{return e}}function Te(e){let{body:t,headers:n}=e,r=n?.[`Content-Type`]||``;return(Array.isArray(t)||typeof t==`object`?[`application/json`,`application/x-www-form-urlencoded`,`multipart/form-data`]:[`text/plain`,`text/html`]).includes(r)?r:typeof t==`object`?`application/json`:typeof t==`string`&&t.startsWith(`<`)?`text/html`:`text/plain`}async function Ee(e,t=null,n=globalThis.fetch){let r={redirect:`follow`,method:t?.method?.toUpperCase()||`GET`,headers:t?.headers||{},signal:t?.signal};if(t?.body)if([`GET`,`HEAD`].includes(r.method))e+=(e.includes(`?`)?`&`:`?`)+new URLSearchParams(t.body);else switch(Te(t)){case`application/json`:r.body=JSON.stringify(t.body);break;case`application/x-www-form-urlencoded`:r.body=new URLSearchParams(t.body);break;case`multipart/form-data`:{let e=new FormData,n=t.body;for(let t in n)e.append(t,n[t]);r.body=e;break}case`text/html`:case`text/plain`:if(typeof t.body!=`string`)throw Error(`Fetch: Body must be a string for text/plain or text/html content types.`);r.body=t.body;break;default:throw Error(`Fetch: Unsupported Content-Type`)}return n(e,r).then(e=>{if(!e.ok)return e.text().then(t=>{throw{response:e,text:t}});let n=t?.headers?.Accept,r=e.headers.get(`Content-Type`)?.split(`;`)[0];return n&&n.split(`;`)[0]!==r?e.text().then(t=>{throw{response:e,text:t}}):e?.headers&&e.headers.get(`Content-Type`)===`application/json`?e.json():e.text()}).catch(n=>{if(n.message)return console.warn(`fetch: ${n.message}`,we(e),Ce(r)),null;let{response:i,text:a}=n;function o(){let n=i?.headers.get(`Content-Type`)?.split(`;`)[0]||``;if(n===`application/json`&&(a.startsWith(`{`)||a.startsWith(`[`))){let t=JSON.parse(a);return console.warn(`fetch: Error`,we(e),Ce(r),i.status,t),t}else{let o=t?.headers?.Accept?.split(`;`)[0]||``,s=o===n?o===`application/json`?`Request Accept header is application/json but response is not JSON`:null:`Request Accept header does not match response Content-Type (Accept: `+o+`, Content-Type: `+n+`)`;return console.warn(`fetch: ${s}`,we(e),Ce(r),i.status,a),s&&o===`application/json`?{error:a,status:520}:a}}throw o()})}async function De(e,t=null,n=globalThis.fetch){return Ee(e,{...t,headers:{Accept:`application/json`,"Content-Type":`application/json`,...t?.headers}},n).then(e=>{if(e?.error)throw e;return e})}async function Oe(e,t={},n=3,r=[429],i=globalThis.fetch){return i(e,t).then(a=>a.ok?a.json():!r.includes(a.status)&&n>0?(console.log(`Retrying...`,n,we(e),Ce(t)),te(500).then(()=>Oe(e,t,n-1,r,i))):(console.error(a),a)).catch(e=>console.error(e,`BBBBBBBBBBBBBBBBBBBBBBB`))}var ke={mode:`light`,radius:.5,colors:{background:`0 0% 100%`,foreground:`222.2 84% 4.9%`,card:`0 0% 100%`,cardForeground:`222.2 84% 4.9%`,popover:`0 0% 100%`,popoverForeground:`222.2 84% 4.9%`,primary:`221.2 83.2% 53.3%`,primaryForeground:`210 40% 98%`,secondary:`210 40% 96.1%`,secondaryForeground:`222.2 47.4% 11.2%`,muted:`210 40% 96.1%`,mutedForeground:`215.4 16.3% 46.9%`,accent:`210 40% 96.1%`,accentForeground:`222.2 47.4% 11.2%`,destructive:`0 84.2% 60.2%`,destructiveForeground:`210 40% 98%`,success:`142.1 76.2% 36.3%`,successForeground:`0 0% 100%`,warning:`32.1 94.6% 43.7%`,warningForeground:`0 0% 100%`,info:`198.6 88.7% 48.4%`,infoForeground:`0 0% 100%`,border:`214.3 31.8% 91.4%`,input:`214.3 31.8% 91.4%`,ring:`221.2 83.2% 53.3%`},dark:{background:`222.2 84% 4.9%`,foreground:`210 40% 98%`,card:`222.2 84% 4.9%`,cardForeground:`210 40% 98%`,popover:`222.2 84% 4.9%`,popoverForeground:`210 40% 98%`,primary:`217.2 91.2% 59.8%`,primaryForeground:`222.2 47.4% 11.2%`,secondary:`217.2 32.6% 17.5%`,secondaryForeground:`210 40% 98%`,muted:`217.2 32.6% 17.5%`,mutedForeground:`215 20.2% 65.1%`,accent:`217.2 32.6% 17.5%`,accentForeground:`210 40% 98%`,destructive:`0 62.8% 30.6%`,destructiveForeground:`210 40% 98%`,success:`142.1 70.6% 45.3%`,successForeground:`0 0% 100%`,warning:`32.1 94.6% 55%`,warningForeground:`0 0% 100%`,info:`198.6 88.7% 60%`,infoForeground:`0 0% 100%`,border:`217.2 32.6% 17.5%`,input:`217.2 32.6% 17.5%`,ring:`224.3 76.3% 48%`}},Ae={none:{from:{},to:{},transition:{duration:0,easing:`linear`,properties:[`opacity`,`transform`,`box-shadow`]},reducedMotion:`always`},fade:{from:{opacity:0},to:{opacity:1},transition:{duration:160,easing:`cubic-bezier(0.2, 0, 0, 1)`,properties:[`opacity`]},reducedMotion:`respect-user`},fadeUp:{from:{opacity:0,transform:`translateY(8px)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:160,easing:`cubic-bezier(0.2, 0, 0, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},fadeDown:{from:{opacity:0,transform:`translateY(-8px)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:140,easing:`cubic-bezier(0.2, 0, 0, 1)`,properties:[`opacity`,`transform`,`visibility`]},reducedMotion:`respect-user`},slideFromRight:{from:{opacity:0,transform:`translateX(100%)`},to:{opacity:1,transform:`translateX(0)`},transition:{duration:220,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},slideFromLeft:{from:{opacity:0,transform:`translateX(-100%)`},to:{opacity:1,transform:`translateX(0)`},transition:{duration:220,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},slideFromTop:{from:{opacity:0,transform:`translateY(-100%)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:220,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},slideFromBottom:{from:{opacity:0,transform:`translateY(100%)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:220,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},press:{from:{},to:{transform:`scale(0.98)`},transition:{duration:100,easing:`cubic-bezier(0.2, 0, 0, 1)`,properties:[`transform`,`box-shadow`]},reducedMotion:`respect-user`},imageZoom:{from:{transform:`scale(1)`},to:{transform:`scale(1.06)`},transition:{duration:300,easing:`cubic-bezier(0.2, 0, 0, 1)`,properties:[`transform`]},reducedMotion:`respect-user`}},je={Grid:{Card:{wrapperClassName:``,className:`rounded-none border-0 bg-transparent shadow-none`,headerClassName:`flex justify-between border-b-0 bg-transparent px-0 py-2`,bodyClassName:`p-0 mt-2`,footerClassName:`border-t-0 bg-transparent px-0 py-2`,loading:!1},Table:{wrapperClassName:`rounded-lg border border-border bg-card shadow-sm`,className:``,headerClassName:``,bodyClassName:``,footerClassName:``,scrollClassName:`overflow-x-auto`,selectedClassName:`bg-primary/10`},Gallery:{wrapperClassName:`rounded-lg border border-border bg-card shadow-sm p-3`,className:``,scrollClassName:``,headerClassName:``,bodyClassName:``,footerClassName:``,selectedClassName:`bg-primary/20`,gap:1,rowCols:4},Modal:{mode:`form`,size:`lg`,position:`center`,wrapperClassName:``,className:``,headerClassName:``,titleClassName:``,subtitleClassName:`pr-1 text-muted-foreground`,bodyClassName:``,footerClassName:``,iconExpand:`fullscreen`,iconCollapse:`fullscreen-exit`,motion:{center:`fade`,top:`slideFromTop`,left:`slideFromLeft`,right:`slideFromRight`,bottom:`slideFromBottom`,backdrop:`fade`}}},Table:{wrapperClassName:``,className:``,headerClassName:``,bodyClassName:``,footerClassName:``,scrollClassName:`overflow-x-auto`,selectedClassName:`bg-primary/10`},Gallery:{wrapperClassName:``,className:``,scrollClassName:``,headerClassName:``,bodyClassName:``,footerClassName:``,selectedClassName:`bg-primary/20`,gap:4,rowCols:2},Pagination:{wrapperClassName:``,className:``,stickyClassName:`fixed bottom-0 left-0 right-0 mx-5`,scrollToTop:!1,scrollBehavior:`auto`,maxItems:5,sticky:!0,align:`end`},Carousel:{showIndicators:!0,showControls:!0,showCaption:!0,dark:!1,autoPlay:!0},Card:{wrapperClassName:``,className:``,headerClassName:`flex justify-between bg-white/[.15] font-normal`,bodyClassName:`flex flex-col`,footerClassName:``,loading:!1},Loader:{wrapperClassName:``,className:``,icon:`loader-2`,title:`Loading..`,description:``},ActionButton:{className:`btn-primary`,badgeClassName:`rounded-full bg-destructive text-destructive-foreground`,motion:{press:`press`}},LoadingButton:{className:`btn-primary`,badgeClassName:`rounded-full bg-destructive text-destructive-foreground`,motion:{press:`press`}},LinkButton:{className:`btn-outline-secondary`},Alert:{className:``},Badge:{className:``},Modal:{size:`lg`,position:`center`,wrapperClassName:``,className:``,headerClassName:``,titleClassName:``,subtitleClassName:`pr-1 text-muted-foreground`,bodyClassName:``,footerClassName:``,iconExpand:`fullscreen`,iconCollapse:`fullscreen-exit`,motion:{center:`fade`,top:`slideFromTop`,left:`slideFromLeft`,right:`slideFromRight`,bottom:`slideFromBottom`,backdrop:`fade`}},Dropdown:{wrapperClassName:``,className:``,triggerClassName:`btn btn-outline-primary`,badgeClassName:``,menuClassName:`border-border/60 bg-popover/95 shadow-xl shadow-black/5 backdrop-blur supports-[backdrop-filter]:bg-popover/90 dark:shadow-black/20`,menuHeaderClass:`text-muted-foreground/70`,menuItemClass:``,menuDividerClass:`bg-border/60`,headerClassName:``,footerClassName:``,Menu:{wrapperClassName:``,className:`list-none p-0 m-0`,headerClassName:``,itemClassName:``,linkClassName:`flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent`,iconClassName:`text-muted-foreground`,textClassName:``,badgeClassName:``,arrowClassName:``,submenuClassName:``},motion:{open:`fadeDown`,close:`fadeDown`,press:`press`}},Notifications:{wrapperClassName:``,Dropdown:{className:``,triggerClassName:`btn btn-link`,menuClassName:`mt-1 text-[11px] w-[300px] pt-1`}},Select:{wrapperClassName:``,className:``},Autocomplete:{wrapperClassName:``,className:``},Form:{wrapperClassName:``,buttonSaveClass:`btn-outline-primary`,buttonDeleteClass:`btn-outline-danger`,buttonBackClass:`btn-link`,Card:{headerClassName:``,bodyClassName:``,footerClassName:`flex items-center justify-end gap-3`}},Menu:{wrapperClassName:`flex-1 overflow-auto p-4`,className:`flex flex-col mb-auto`,headerClassName:``,itemClassName:``,linkClassName:`flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground`,iconClassName:`mr-1 shrink-0`,textClassName:`flex-1`,badgeClassName:`ml-1`,arrowClassName:``,submenuClassName:`mt-1 flex flex-col gap-1 pl-4`},SideNav:{wrapperClassName:``,shellClassName:`border-r border-border bg-card/80 text-foreground backdrop-blur supports-[backdrop-filter]:bg-card/70`,overlayClassName:`shadow-xl`,headerClassName:`border-b border-border/60 px-1.5 py-2`,navClassName:`px-1.5 py-2`,footerClassName:`border-t border-border/60 px-1.5 py-2`,groupLabelClassName:`text-[10.5px] font-semibold uppercase tracking-widest text-muted-foreground/60 select-none`,groupDividerClassName:`bg-border/50`,itemClassName:`rounded-lg`,itemActiveClassName:`bg-primary/10 text-primary font-medium shadow-sm`,itemChildActiveClassName:`bg-accent/80 text-foreground font-medium`,itemInactiveClassName:`text-muted-foreground hover:text-foreground hover:bg-accent/70`,itemIconClassName:``,itemTextClassName:``,itemBadgeClassName:`ml-auto shrink-0 text-[10px] font-semibold leading-none px-1.5 py-[3px] rounded-full bg-primary/15 text-primary`,itemCollapsedBadgeClassName:`absolute -top-0.5 -right-1 h-[7px] w-[7px] rounded-full bg-primary ring-1 ring-card`,itemToggleClassName:`shrink-0 flex items-center justify-center w-6 h-6 rounded-md transition-colors text-muted-foreground/50 hover:text-foreground hover:bg-accent/70`,subItemClassName:`rounded-md`,subItemActiveClassName:`bg-primary/10 text-primary font-medium`,subItemInactiveClassName:`text-muted-foreground hover:text-foreground hover:bg-accent/70`,collapseButtonClassName:`shrink-0 flex items-center justify-center rounded-md w-8 h-8 transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/70`},Toolbar:{wrapperClassName:`z-20 w-full`,stickyClassName:`sticky top-0`,restingClassName:`bg-transparent border-transparent shadow-none`,scrolledClassName:`border-b border-border/60 bg-background/85 backdrop-blur supports-[backdrop-filter]:bg-background/75`,innerClassName:`flex min-h-14 items-center gap-3 px-4 md:px-6`,leadingClassName:`flex min-w-0 items-center gap-2 shrink-0`,centerClassName:`flex min-w-0 flex-1 items-center gap-3`,trailingClassName:`flex items-center gap-2 shrink-0`},ListCard:{wrapperClassName:``,className:`shadow-sm`,activeClassName:`border-primary/30 bg-primary/10 shadow-sm`,inactiveClassName:`hover:bg-accent/40`,disabledClassName:`cursor-not-allowed opacity-60`,dashedClassName:`border-dashed`,compactClassName:`p-3`,leadingClassName:``,bodyClassName:``,headerClassName:``,titleClassName:``,descriptionClassName:``,metaClassName:``,badgeClassName:``,trailingClassName:``,footerClassName:``,motion:{press:`press`}},ProviderSwitcher:{wrapperClassName:`w-full`,className:`w-full`,triggerClassName:`flex w-full items-center gap-2 rounded-xl px-1.5 py-1.5 text-left text-sm font-semibold text-foreground transition-colors hover:bg-accent/40`,disabledClassName:`pointer-events-none opacity-60`,iconWrapperClassName:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,labelClassName:`block truncate`,captionClassName:`block truncate text-[11px] font-normal text-muted-foreground/80`,chevronClassName:`ml-auto shrink-0 text-muted-foreground/70`,itemClassName:``,itemActiveClassName:``,itemInactiveClassName:``,itemMetaClassName:`text-xs text-muted-foreground`,checkClassName:`text-primary`},Brand:{wrapperClassName:``,className:`flex items-center`,logoClassName:`flex items-center gap-2 font-semibold`,labelClassName:`text-sm font-medium`},SignIn:{className:`flex items-center`,avatarClass:`mx-2 rounded-full object-cover`},Image:{wrapperClassName:``,className:``,motion:{enter:`fade`,hover:!1}},ImageAvatar:{wrapperClassName:``,className:``,motion:{enter:`fade`,hover:!1}},Percentage:{wrapperClassName:``,className:``},Tab:{wrapperClassName:``,className:``,menuClassName:``,itemClassName:``,contentClassName:``,triggerClassName:``,activeTriggerClassName:``,inactiveTriggerClassName:``,motion:{enter:`fadeUp`}},Code:{wrapperClassName:``,className:``},CodeEditor:{wrapperClassName:``,className:``},Prompt:{wrapperClassName:``,className:``}},Me={preset:ke,motion:Ae,components:je},Ne={preset:{mode:`light`,radius:.125,colors:{background:`0 0% 98%`,foreground:`215 25% 16%`,card:`0 0% 100%`,cardForeground:`215 25% 16%`,popover:`0 0% 100%`,popoverForeground:`215 25% 16%`,primary:`215 25% 27%`,primaryForeground:`210 40% 98%`,secondary:`215 15% 93%`,secondaryForeground:`215 25% 27%`,muted:`215 15% 93%`,mutedForeground:`215 15% 50%`,accent:`215 15% 90%`,accentForeground:`215 25% 27%`,destructive:`0 72% 51%`,destructiveForeground:`0 0% 100%`,success:`142.1 76.2% 36.3%`,successForeground:`0 0% 100%`,warning:`32.1 94.6% 43.7%`,warningForeground:`0 0% 100%`,info:`198.6 88.7% 48.4%`,infoForeground:`0 0% 100%`,border:`215 15% 85%`,input:`215 15% 85%`,ring:`215 25% 27%`},dark:{background:`215 20% 12%`,foreground:`215 10% 85%`,card:`215 20% 15%`,cardForeground:`215 10% 85%`,popover:`215 20% 15%`,popoverForeground:`215 10% 85%`,primary:`215 35% 55%`,primaryForeground:`0 0% 100%`,secondary:`215 20% 20%`,secondaryForeground:`215 10% 75%`,muted:`215 20% 20%`,mutedForeground:`215 10% 55%`,accent:`215 20% 22%`,accentForeground:`215 10% 85%`,destructive:`0 62% 40%`,destructiveForeground:`0 0% 100%`,success:`142.1 70.6% 45.3%`,successForeground:`0 0% 100%`,warning:`32.1 94.6% 55%`,warningForeground:`0 0% 100%`,info:`198.6 88.7% 60%`,infoForeground:`0 0% 100%`,border:`215 20% 22%`,input:`215 20% 22%`,ring:`215 35% 55%`}},motion:{none:{from:{},to:{},transition:{duration:0,easing:`linear`,properties:[`opacity`,`transform`,`box-shadow`]},reducedMotion:`always`},fade:{from:{opacity:0},to:{opacity:1},transition:{duration:140,easing:`cubic-bezier(0.2, 0, 0, 1)`,properties:[`opacity`]},reducedMotion:`respect-user`},fadeUp:{from:{opacity:0,transform:`translateY(4px)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:140,easing:`cubic-bezier(0.2, 0, 0, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},fadeDown:{from:{opacity:0,transform:`translateY(-4px)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:120,easing:`cubic-bezier(0.2, 0, 0, 1)`,properties:[`opacity`,`transform`,`visibility`]},reducedMotion:`respect-user`},slideFromRight:{from:{opacity:0,transform:`translateX(100%)`},to:{opacity:1,transform:`translateX(0)`},transition:{duration:180,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},slideFromLeft:{from:{opacity:0,transform:`translateX(-100%)`},to:{opacity:1,transform:`translateX(0)`},transition:{duration:180,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},slideFromTop:{from:{opacity:0,transform:`translateY(-100%)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:180,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},slideFromBottom:{from:{opacity:0,transform:`translateY(100%)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:180,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},press:{from:{},to:{transform:`scale(0.99)`},transition:{duration:90,easing:`cubic-bezier(0.2, 0, 0, 1)`,properties:[`transform`,`box-shadow`]},reducedMotion:`respect-user`},imageZoom:{from:{transform:`scale(1)`},to:{transform:`scale(1.06)`},transition:{duration:300,easing:`cubic-bezier(0.2, 0, 0, 1)`,properties:[`transform`]},reducedMotion:`respect-user`}},components:{Grid:{Card:{wrapperClassName:``,className:`rounded-none border-0 bg-transparent shadow-none`,headerClassName:`flex justify-between border-b-0 bg-transparent px-0 py-2`,bodyClassName:`p-0 mt-2`,footerClassName:`border-t-0 bg-transparent px-0 py-2`,loading:!1},Table:{wrapperClassName:`rounded-lg border border-border bg-card shadow-sm`,className:``,headerClassName:``,bodyClassName:``,footerClassName:``,scrollClassName:`overflow-x-auto`,selectedClassName:`bg-primary/10`},Gallery:{wrapperClassName:`rounded-lg border border-border bg-card shadow-sm p-3`,className:``,scrollClassName:``,headerClassName:``,bodyClassName:``,footerClassName:``,selectedClassName:`bg-primary/20`,gap:1,rowCols:4},Modal:{mode:`form`,size:`lg`,position:`center`,wrapperClassName:``,className:``,headerClassName:``,titleClassName:``,subtitleClassName:`pr-1 text-muted-foreground`,bodyClassName:``,footerClassName:``,iconExpand:`fullscreen`,iconCollapse:`fullscreen-exit`,motion:{center:`fade`,top:`slideFromTop`,left:`slideFromLeft`,right:`slideFromRight`,bottom:`slideFromBottom`,backdrop:`fade`}}},Table:{wrapperClassName:``,className:``,headerClassName:``,bodyClassName:``,footerClassName:``,scrollClassName:`overflow-x-auto`,selectedClassName:`bg-primary/10`},Gallery:{wrapperClassName:``,className:``,scrollClassName:``,headerClassName:``,bodyClassName:``,footerClassName:``,selectedClassName:`bg-primary/20`,gap:4,rowCols:2},Pagination:{wrapperClassName:``,className:``,stickyClassName:`fixed bottom-0 left-0 right-0 mx-5`,scrollToTop:!1,scrollBehavior:`auto`,maxItems:5,sticky:!0,align:`end`},Carousel:{showIndicators:!0,showControls:!0,showCaption:!0,dark:!1,autoPlay:!0},Card:{wrapperClassName:``,className:``,headerClassName:`flex justify-between bg-white/[.15] font-normal`,bodyClassName:`flex flex-col`,footerClassName:``,loading:!1},Loader:{wrapperClassName:``,className:``,icon:`loader-2`,title:`Loading..`,description:``},ActionButton:{className:`btn-primary`,badgeClassName:`rounded-full bg-destructive text-destructive-foreground`,motion:{press:`press`}},LoadingButton:{className:`btn-primary`,badgeClassName:`rounded-full bg-destructive text-destructive-foreground`,motion:{press:`press`}},LinkButton:{className:`btn-outline-secondary`},Alert:{className:``},Badge:{className:``},Modal:{size:`lg`,position:`center`,wrapperClassName:``,className:``,headerClassName:``,titleClassName:``,subtitleClassName:`pr-1 text-muted-foreground`,bodyClassName:``,footerClassName:``,iconExpand:`fullscreen`,iconCollapse:`fullscreen-exit`,motion:{center:`fade`,top:`slideFromTop`,left:`slideFromLeft`,right:`slideFromRight`,bottom:`slideFromBottom`,backdrop:`fade`}},Dropdown:{wrapperClassName:``,className:``,triggerClassName:`btn btn-outline-primary`,badgeClassName:``,menuClassName:`border-border/60 bg-popover/95 shadow-lg shadow-black/5 supports-[backdrop-filter]:bg-popover/92`,menuHeaderClass:`text-muted-foreground/70`,menuItemClass:``,menuDividerClass:`bg-border/60`,headerClassName:``,footerClassName:``,Menu:{wrapperClassName:``,className:`list-none p-0 m-0`,headerClassName:``,itemClassName:``,linkClassName:`flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent`,iconClassName:`text-muted-foreground`,textClassName:``,badgeClassName:``,arrowClassName:``,submenuClassName:``},motion:{open:`fadeDown`,close:`fadeDown`,press:`press`}},Notifications:{wrapperClassName:``,Dropdown:{className:``,triggerClassName:`btn btn-link`,menuClassName:`mt-1 text-[11px] w-[300px] pt-1`}},Select:{wrapperClassName:``,className:``},Autocomplete:{wrapperClassName:``,className:``},Form:{wrapperClassName:``,buttonSaveClass:`btn-outline-primary`,buttonDeleteClass:`btn-outline-danger`,buttonBackClass:`btn-link`,Card:{headerClassName:``,bodyClassName:``,footerClassName:`flex items-center justify-end gap-3`}},Menu:{wrapperClassName:`flex-1 overflow-auto p-4`,className:`flex flex-col mb-auto`,headerClassName:``,itemClassName:``,linkClassName:`flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground`,iconClassName:`mr-1 shrink-0`,textClassName:`flex-1`,badgeClassName:`ml-1`,arrowClassName:``,submenuClassName:`mt-1 flex flex-col gap-1 pl-4`},SideNav:{wrapperClassName:``,shellClassName:`border-r border-border bg-card text-foreground`,overlayClassName:`shadow-lg`,headerClassName:`border-b border-border px-1.5 py-2`,navClassName:`px-1.5 py-2`,footerClassName:`border-t border-border px-1.5 py-2`,groupLabelClassName:`text-[10px] font-semibold uppercase tracking-[0.16em] text-muted-foreground/70 select-none`,groupDividerClassName:`bg-border/60`,itemClassName:`rounded-md`,itemActiveClassName:`bg-primary/10 text-primary font-medium`,itemChildActiveClassName:`bg-accent text-foreground font-medium`,itemInactiveClassName:`text-muted-foreground hover:text-foreground hover:bg-accent/80`,itemIconClassName:``,itemTextClassName:``,itemBadgeClassName:`ml-auto shrink-0 text-[10px] font-semibold leading-none px-1.5 py-[3px] rounded-full bg-primary/15 text-primary`,itemCollapsedBadgeClassName:`absolute -top-0.5 -right-1 h-[7px] w-[7px] rounded-full bg-primary ring-1 ring-card`,itemToggleClassName:`shrink-0 flex items-center justify-center w-6 h-6 rounded transition-colors text-muted-foreground/50 hover:text-foreground hover:bg-accent/80`,subItemClassName:`rounded-sm`,subItemActiveClassName:`bg-primary/10 text-primary font-medium`,subItemInactiveClassName:`text-muted-foreground hover:text-foreground hover:bg-accent/80`,collapseButtonClassName:`shrink-0 flex items-center justify-center rounded-md w-8 h-8 transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/80`},Toolbar:{wrapperClassName:`z-20 w-full`,stickyClassName:`sticky top-0`,restingClassName:`bg-transparent border-transparent shadow-none`,scrolledClassName:`border-b border-border bg-background/90 backdrop-blur supports-[backdrop-filter]:bg-background/85`,innerClassName:`flex min-h-13 items-center gap-3 px-4 md:px-5`,leadingClassName:`flex min-w-0 items-center gap-2 shrink-0`,centerClassName:`flex min-w-0 flex-1 items-center gap-3`,trailingClassName:`flex items-center gap-2 shrink-0`},ListCard:{wrapperClassName:``,className:``,activeClassName:`border-primary/30 bg-primary/10`,inactiveClassName:`hover:bg-accent/60`,disabledClassName:`cursor-not-allowed opacity-60`,dashedClassName:`border-dashed`,compactClassName:`p-3`,leadingClassName:``,bodyClassName:``,headerClassName:``,titleClassName:``,descriptionClassName:``,metaClassName:``,badgeClassName:``,trailingClassName:``,footerClassName:``,motion:{press:`press`}},ProviderSwitcher:{wrapperClassName:`w-full`,className:`w-full`,triggerClassName:`flex w-full items-center gap-2 rounded-xl px-1.5 py-1.5 text-left text-sm font-semibold text-foreground transition-colors hover:bg-accent/60`,disabledClassName:`pointer-events-none opacity-60`,iconWrapperClassName:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,labelClassName:`block truncate`,captionClassName:`block truncate text-[11px] font-normal text-muted-foreground/80`,chevronClassName:`ml-auto shrink-0 text-muted-foreground/70`,itemClassName:``,itemActiveClassName:``,itemInactiveClassName:``,itemMetaClassName:`text-xs text-muted-foreground`,checkClassName:`text-primary`},Brand:{wrapperClassName:``,className:`flex items-center`,logoClassName:`flex items-center gap-2 font-semibold`,labelClassName:`text-sm font-medium`},SignIn:{className:`flex items-center`,avatarClass:`mx-2 rounded-full object-cover`},Image:{wrapperClassName:``,className:``,motion:{enter:`fade`,hover:!1}},ImageAvatar:{wrapperClassName:``,className:``,motion:{enter:`fade`,hover:!1}},Percentage:{wrapperClassName:``,className:``},Tab:{wrapperClassName:``,className:``,menuClassName:``,itemClassName:``,contentClassName:``,triggerClassName:``,activeTriggerClassName:``,inactiveTriggerClassName:``,motion:{enter:`fadeUp`}},Code:{wrapperClassName:``,className:``},CodeEditor:{wrapperClassName:``,className:``},Prompt:{wrapperClassName:``,className:``}}},Pe={preset:{mode:`dark`,radius:0,colors:{background:`0 0% 98%`,foreground:`215 25% 16%`,card:`0 0% 100%`,cardForeground:`215 25% 16%`,popover:`0 0% 100%`,popoverForeground:`215 25% 16%`,primary:`160 84% 39%`,primaryForeground:`0 0% 0%`,secondary:`160 20% 92%`,secondaryForeground:`160 25% 20%`,muted:`160 15% 93%`,mutedForeground:`215 15% 50%`,accent:`160 30% 90%`,accentForeground:`160 84% 25%`,destructive:`0 72% 51%`,destructiveForeground:`0 0% 100%`,success:`160 84% 39%`,successForeground:`0 0% 0%`,warning:`45 96% 48%`,warningForeground:`0 0% 0%`,info:`199 89% 48%`,infoForeground:`0 0% 0%`,border:`160 20% 85%`,input:`160 20% 85%`,ring:`160 84% 39%`},dark:{background:`220 20% 7%`,foreground:`160 10% 90%`,card:`220 20% 10%`,cardForeground:`160 10% 90%`,popover:`220 20% 10%`,popoverForeground:`160 10% 90%`,primary:`160 84% 39%`,primaryForeground:`0 0% 0%`,secondary:`220 20% 15%`,secondaryForeground:`160 10% 75%`,muted:`220 20% 14%`,mutedForeground:`220 10% 55%`,accent:`160 60% 15%`,accentForeground:`160 84% 70%`,destructive:`0 72% 51%`,destructiveForeground:`0 0% 100%`,success:`160 84% 45%`,successForeground:`0 0% 0%`,warning:`45 96% 55%`,warningForeground:`0 0% 0%`,info:`199 89% 55%`,infoForeground:`0 0% 0%`,border:`220 20% 18%`,input:`220 20% 18%`,ring:`160 84% 39%`}},motion:{none:{from:{},to:{},transition:{duration:0,easing:`linear`,properties:[`opacity`,`transform`,`box-shadow`]},reducedMotion:`always`},fade:{from:{opacity:0},to:{opacity:1},transition:{duration:180,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`]},reducedMotion:`respect-user`},fadeUp:{from:{opacity:0,transform:`translateY(10px)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:200,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},fadeDown:{from:{opacity:0,transform:`translateY(-10px)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:180,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`,`visibility`]},reducedMotion:`respect-user`},slideFromRight:{from:{opacity:0,transform:`translateX(100%)`},to:{opacity:1,transform:`translateX(0)`},transition:{duration:220,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},slideFromLeft:{from:{opacity:0,transform:`translateX(-100%)`},to:{opacity:1,transform:`translateX(0)`},transition:{duration:220,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},slideFromTop:{from:{opacity:0,transform:`translateY(-100%)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:220,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},slideFromBottom:{from:{opacity:0,transform:`translateY(100%)`},to:{opacity:1,transform:`translateY(0)`},transition:{duration:220,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`opacity`,`transform`]},reducedMotion:`respect-user`},press:{from:{},to:{transform:`scale(0.97)`},transition:{duration:110,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`transform`,`box-shadow`]},reducedMotion:`respect-user`},imageZoom:{from:{transform:`scale(1)`},to:{transform:`scale(1.06)`},transition:{duration:280,easing:`cubic-bezier(0.16, 1, 0.3, 1)`,properties:[`transform`]},reducedMotion:`respect-user`}},components:{Grid:{Card:{wrapperClassName:``,className:`rounded-none border-0 bg-transparent shadow-none`,headerClassName:`flex justify-between border-b-0 bg-transparent px-0 py-2`,bodyClassName:`p-0 mt-2`,footerClassName:`border-t-0 bg-transparent px-0 py-2`,loading:!1},Table:{wrapperClassName:`rounded-lg border border-border bg-card shadow-sm`,className:``,headerClassName:``,bodyClassName:``,footerClassName:``,scrollClassName:`overflow-x-auto`,selectedClassName:`bg-primary/10`},Gallery:{wrapperClassName:`rounded-lg border border-border bg-card shadow-sm p-3`,className:``,scrollClassName:``,headerClassName:``,bodyClassName:``,footerClassName:``,selectedClassName:`bg-primary/20`,gap:1,rowCols:4},Modal:{mode:`form`,size:`lg`,position:`center`,wrapperClassName:``,className:``,headerClassName:``,titleClassName:``,subtitleClassName:`pr-1 text-muted-foreground`,bodyClassName:``,footerClassName:``,iconExpand:`fullscreen`,iconCollapse:`fullscreen-exit`,motion:{center:`fade`,top:`slideFromTop`,left:`slideFromLeft`,right:`slideFromRight`,bottom:`slideFromBottom`,backdrop:`fade`}}},Table:{wrapperClassName:``,className:``,headerClassName:``,bodyClassName:``,footerClassName:``,scrollClassName:`overflow-x-auto`,selectedClassName:`bg-primary/10`},Gallery:{wrapperClassName:``,className:``,scrollClassName:``,headerClassName:``,bodyClassName:``,footerClassName:``,selectedClassName:`bg-primary/20`,gap:4,rowCols:2},Pagination:{wrapperClassName:``,className:``,stickyClassName:`fixed bottom-0 left-0 right-0 mx-5`,scrollToTop:!1,scrollBehavior:`auto`,maxItems:5,sticky:!0,align:`end`},Carousel:{showIndicators:!0,showControls:!0,showCaption:!0,dark:!1,autoPlay:!0},Card:{wrapperClassName:``,className:``,headerClassName:`flex justify-between bg-white/[.15] font-normal`,bodyClassName:`flex flex-col`,footerClassName:``,loading:!1},Loader:{wrapperClassName:``,className:``,icon:`loader-2`,title:`Loading..`,description:``},ActionButton:{className:`btn-primary`,badgeClassName:`rounded-full bg-destructive text-destructive-foreground`,motion:{press:`press`}},LoadingButton:{className:`btn-primary`,badgeClassName:`rounded-full bg-destructive text-destructive-foreground`,motion:{press:`press`}},LinkButton:{className:`btn-outline-secondary`},Alert:{className:``},Badge:{className:``},Modal:{size:`lg`,position:`center`,wrapperClassName:``,className:``,headerClassName:``,titleClassName:``,subtitleClassName:`pr-1 text-muted-foreground`,bodyClassName:``,footerClassName:``,iconExpand:`fullscreen`,iconCollapse:`fullscreen-exit`,motion:{center:`fade`,top:`slideFromTop`,left:`slideFromLeft`,right:`slideFromRight`,bottom:`slideFromBottom`,backdrop:`fade`}},Dropdown:{wrapperClassName:``,className:``,triggerClassName:`btn btn-outline-primary`,badgeClassName:``,menuClassName:`rounded-none border-border/70 bg-popover/95 shadow-[0_0_0_1px_hsl(var(--border)/0.55),0_12px_32px_rgba(0,0,0,0.35)] supports-[backdrop-filter]:bg-popover/92`,menuHeaderClass:`text-muted-foreground/75`,menuItemClass:``,menuDividerClass:`bg-border/70`,headerClassName:``,footerClassName:``,Menu:{wrapperClassName:``,className:`list-none p-0 m-0`,headerClassName:``,itemClassName:``,linkClassName:`flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent`,iconClassName:`text-muted-foreground`,textClassName:``,badgeClassName:``,arrowClassName:``,submenuClassName:``},motion:{open:`fadeDown`,close:`fadeDown`,press:`press`}},Notifications:{wrapperClassName:``,Dropdown:{className:``,triggerClassName:`btn btn-link`,menuClassName:`mt-1 text-[11px] w-[300px] pt-1`}},Select:{wrapperClassName:``,className:``},Autocomplete:{wrapperClassName:``,className:``},Form:{wrapperClassName:``,buttonSaveClass:`btn-outline-primary`,buttonDeleteClass:`btn-outline-danger`,buttonBackClass:`btn-link`,Card:{headerClassName:``,bodyClassName:``,footerClassName:`flex items-center justify-end gap-3`}},Menu:{wrapperClassName:`flex-1 overflow-auto p-4`,className:`flex flex-col mb-auto`,headerClassName:``,itemClassName:``,linkClassName:`flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground`,iconClassName:`mr-1 shrink-0`,textClassName:`flex-1`,badgeClassName:`ml-1`,arrowClassName:``,submenuClassName:`mt-1 flex flex-col gap-1 pl-4`},SideNav:{wrapperClassName:``,shellClassName:`border-r border-border bg-card/95 text-foreground`,overlayClassName:`shadow-[0_0_32px_rgba(16,185,129,0.18)]`,headerClassName:`border-b border-border px-1.5 py-2`,navClassName:`px-1.5 py-2`,footerClassName:`border-t border-border px-1.5 py-2`,groupLabelClassName:`text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground/70 select-none`,groupDividerClassName:`bg-border/70`,itemClassName:`rounded-none`,itemActiveClassName:`bg-primary/12 text-primary font-medium`,itemChildActiveClassName:`bg-accent/90 text-foreground font-medium`,itemInactiveClassName:`text-muted-foreground hover:text-foreground hover:bg-accent/80`,itemIconClassName:``,itemTextClassName:``,itemBadgeClassName:`ml-auto shrink-0 text-[10px] font-semibold leading-none px-1.5 py-[3px] rounded-none bg-primary/15 text-primary`,itemCollapsedBadgeClassName:`absolute -top-0.5 -right-1 h-[7px] w-[7px] rounded-none bg-primary ring-1 ring-card`,itemToggleClassName:`shrink-0 flex items-center justify-center w-6 h-6 rounded-none transition-colors text-muted-foreground/50 hover:text-foreground hover:bg-accent/80`,subItemClassName:`rounded-none`,subItemActiveClassName:`bg-primary/12 text-primary font-medium`,subItemInactiveClassName:`text-muted-foreground hover:text-foreground hover:bg-accent/80`,collapseButtonClassName:`shrink-0 flex items-center justify-center rounded-none w-8 h-8 transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/80`},Toolbar:{wrapperClassName:`z-20 w-full`,stickyClassName:`sticky top-0`,restingClassName:`bg-transparent border-transparent shadow-none`,scrolledClassName:`border-b border-border bg-background/90 backdrop-blur supports-[backdrop-filter]:bg-background/85`,innerClassName:`flex min-h-14 items-center gap-3 px-4 md:px-6`,leadingClassName:`flex min-w-0 items-center gap-2 shrink-0`,centerClassName:`flex min-w-0 flex-1 items-center gap-3`,trailingClassName:`flex items-center gap-2 shrink-0`},ListCard:{wrapperClassName:``,className:`rounded-none shadow-[0_0_0_1px_hsl(var(--border)/0.7)]`,activeClassName:`border-primary/50 bg-primary/10 text-foreground`,inactiveClassName:`hover:bg-accent/70`,disabledClassName:`cursor-not-allowed opacity-60`,dashedClassName:`border-dashed`,compactClassName:`p-3`,leadingClassName:`rounded-none`,bodyClassName:``,headerClassName:``,titleClassName:``,descriptionClassName:``,metaClassName:``,badgeClassName:``,trailingClassName:``,footerClassName:``,motion:{press:`press`}},ProviderSwitcher:{wrapperClassName:`w-full`,className:`w-full`,triggerClassName:`flex w-full items-center gap-2 rounded-none px-1.5 py-1.5 text-left text-sm font-semibold text-foreground transition-colors hover:bg-accent/70`,disabledClassName:`pointer-events-none opacity-60`,iconWrapperClassName:`flex h-8 w-8 shrink-0 items-center justify-center rounded-none bg-primary/10 text-primary`,labelClassName:`block truncate`,captionClassName:`block truncate text-[11px] font-normal text-muted-foreground/80`,chevronClassName:`ml-auto shrink-0 text-muted-foreground/70`,itemClassName:`rounded-none`,itemActiveClassName:``,itemInactiveClassName:``,itemMetaClassName:`text-xs text-muted-foreground`,checkClassName:`text-primary`},Brand:{wrapperClassName:``,className:`flex items-center`,logoClassName:`flex items-center gap-2 font-semibold`,labelClassName:`text-sm font-medium`},SignIn:{className:`flex items-center`,avatarClass:`mx-2 rounded-full object-cover`},Image:{wrapperClassName:``,className:``,motion:{enter:`fade`,hover:`imageZoom`}},ImageAvatar:{wrapperClassName:``,className:``,motion:{enter:`fade`,hover:`imageZoom`}},Percentage:{wrapperClassName:``,className:``},Tab:{wrapperClassName:``,className:``,menuClassName:``,itemClassName:``,contentClassName:``,triggerClassName:``,activeTriggerClassName:``,inactiveTriggerClassName:``,motion:{enter:`fadeUp`}},Code:{wrapperClassName:``,className:``},CodeEditor:{wrapperClassName:``,className:``},Prompt:{wrapperClassName:``,className:``}}},Fe={...Me,preset:{...Me.preset,mode:`dark`,colors:{...Me.preset.colors},dark:{...Me.preset.dark,background:`0 0% 11.8%`,foreground:`0 0% 83.1%`,cardForeground:`0 0% 83.1%`,popover:`240 1.3% 14.7%`,popoverForeground:`0 0% 80%`,primaryForeground:`0 0% 11.8%`,secondaryForeground:`0 0% 83.1%`,accentForeground:`0 0% 83.1%`}}},Ie={...Me,preset:{...Me.preset,mode:`light`,colors:{...Me.preset.colors,background:`0 0% 100%`,foreground:`0 0% 0%`,cardForeground:`0 0% 0%`,popoverForeground:`0 0% 0%`,primaryForeground:`0 0% 100%`,secondaryForeground:`0 0% 0%`,accent:`0 0% 91%`,accentForeground:`0 0% 0%`},dark:{...Me.preset.dark}}},Le={...Me,preset:{...Me.preset,mode:`dark`,colors:{...Me.preset.colors},dark:{...Me.preset.dark,background:`235 18.8% 12.5%`,foreground:`229.3 35.4% 75.1%`,card:`240 15.4% 10.2%`,cardForeground:`232.7 13.9% 53.5%`,popover:`240 14.9% 9.2%`,popoverForeground:`232.7 13.9% 53.5%`,primary:`217.3 39.8% 55.7%`,primaryForeground:`0 0% 100%`,secondary:`240 15.4% 10.2%`,secondaryForeground:`232.7 13.9% 53.5%`,muted:`235.4 18.8% 13.5%`,mutedForeground:`230.3 16.1% 37.8%`,accent:`228.8 20% 15.7%`,accentForeground:`229.3 35.4% 75.1%`,border:`240 11.1% 7.1%`,input:`240 14.9% 9.2%`,ring:`228.7 72.6% 85.7%`}}},Re={...Me,preset:{...Me.preset,mode:`light`,colors:{...Me.preset.colors,background:`231.4 16.3% 91.6%`,foreground:`228.6 26.2% 27.6%`,card:`226.7 12.3% 85.7%`,cardForeground:`224.3 17.6% 25.7%`,popover:`231.4 16.3% 91.6%`,popoverForeground:`224.3 17.6% 25.7%`,primary:`217.7 61.1% 41.4%`,primaryForeground:`0 0% 100%`,secondary:`226.7 12.3% 85.7%`,secondaryForeground:`224.3 17.6% 25.7%`,muted:`231.4 16.3% 91.6%`,mutedForeground:`232.5 6.7% 47.1%`,accent:`231.4 16.3% 91.6%`,accentForeground:`224.3 17.6% 25.7%`,border:`230 5.1% 76.9%`,input:`231.4 16.3% 91.6%`,ring:`224.3 17.6% 25.7%`},dark:{...Me.preset.dark}}},ze=[`default`,`flat`,`cyber`,`vscode-dark-plus`,`vscode-light-plus`,`tokyo-night`,`tokyo-night-light`],Be=(0,l.createContext)(je),Ve=(0,l.createContext)(Me.motion),He=(0,l.createContext)(null),Ue={default:Me,flat:Ne,cyber:Pe,"vscode-dark-plus":Fe,"vscode-light-plus":Ie,"tokyo-night":Le,"tokyo-night-light":Re},We=(e,t)=>{let n=e,r=t;for(let e in r)Object.prototype.hasOwnProperty.call(r,e)&&(typeof r[e]==`object`&&r[e]!==null?(n[e]||(n[e]={}),We(n[e],r[e])):r[e]!==null&&(n[e]=r[e]));return e},Ge=e=>We({},e);function Ke(e){return typeof e==`object`&&!!e&&`preset`in e&&`motion`in e&&`components`in e}function qe(e){return typeof e==`string`||e===void 0?{theme:e??`default`,themes:{...Ue}}:Ke(e)?{theme:`custom`,themes:{...Ue,custom:e}}:{defaultMode:e.defaultMode,theme:e.theme??`default`,themes:{...Ue,...e.themes??{}},themeOverride:e.themeOverride}}var Je=`llmnative.theme.activeTheme`,Ye=`llmnative.theme.mode`;function Xe(e){if(!(typeof window>`u`))try{let t=window.localStorage.getItem(Je);return t&&e[t]?t:void 0}catch{return}}function Ze(){if(!(typeof window>`u`))try{let e=window.localStorage.getItem(Ye);return e===`light`||e===`dark`||e===`system`?e:void 0}catch{return}}function Qe(e,t){if(!(typeof window>`u`))try{window.localStorage.setItem(Je,e),window.localStorage.setItem(Ye,t)}catch{}}function $e(e){return e===`system`?typeof window>`u`||!window.matchMedia?`light`:window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:e}function et(e){return`--rf-`+e.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`)}function tt({mode:e,radius:t,fontSans:n,fontMono:r,colors:i,dark:a,variables:o}){if(typeof document>`u`)return;document.documentElement.classList.toggle(`dark`,$e(e)===`dark`);let s={},c={};for(let[e,t]of Object.entries(i??{}))t!==void 0&&(s[et(e)]=t);for(let[e,t]of Object.entries(a??{}))t!==void 0&&(c[et(e)]=t);s[`--radius`]=`${t}rem`,s[`--radius-sm`]=`${(t*.5).toFixed(4).replace(/\.?0+$/,``)}rem`,s[`--radius-md`]=`${(t*.75).toFixed(4).replace(/\.?0+$/,``)}rem`,s[`--radius-lg`]=`${t}rem`,s[`--radius-xl`]=`${(t*1.5).toFixed(4).replace(/\.?0+$/,``)}rem`,s[`--radius-2xl`]=`${(t*2).toFixed(4).replace(/\.?0+$/,``)}rem`,s[`--radius-3xl`]=`${(t*3).toFixed(4).replace(/\.?0+$/,``)}rem`,n&&(s[`--font-sans`]=n),r&&(s[`--font-mono`]=r);for(let[e,t]of Object.entries(o??{}))s[e.startsWith(`--`)?e:`--${e}`]=t;let l=document.getElementById(`rf-theme-vars`);l||(l=document.createElement(`style`),l.id=`rf-theme-vars`,document.head.appendChild(l));let u=e=>Object.entries(e).map(([e,t])=>` ${e}: ${t};`).join(`
|
|
2
|
+
`);l.textContent=[Object.keys(s).length?`:root {\n${u(s)}\n}`:``,Object.keys(c).length?`.dark {\n${u(c)}\n}`:``].filter(Boolean).join(`
|
|
3
|
+
`)}var nt=`data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='50' fill='%23eef2f7'/%3E%3Ccircle cx='50' cy='38' r='16' fill='%2364758b'/%3E%3Cpath d='M22 84c3.8-20 19-31 28-31s24.2 11 28 31c.5 2.8-1.7 5-4.5 5h-47c-2.8 0-5-2.2-4.5-5z' fill='%2364758b'/%3E%3C/svg%3E`,rt=({children:e,config:t=void 0})=>{let n=(0,l.useMemo)(()=>qe(t),[t]),r=Xe(n.themes)??n.theme,i=n.themes[r]??n.themes.default,a=i.preset,[o,s]=(0,l.useState)(n.themes),[c,u]=(0,l.useState)(r),[d,f]=(0,l.useState)(Ze()??n.defaultMode??a.mode??`light`),[p,m]=(0,l.useState)(a.radius??Ue.default.preset.radius),[h,g]=(0,l.useState)(a.fontSans??``),[_,v]=(0,l.useState)(a.fontMono??``),[y,b]=(0,l.useState)(a.colors),[x,S]=(0,l.useState)(a.dark),[C,w]=(0,l.useState)(()=>Ge(i.components)),[T,E]=(0,l.useState)(i.motion);(0,l.useEffect)(()=>{let e=Xe(n.themes)??n.theme,t=n.themes[e]??n.themes.default,r=t.preset;s(n.themes),u(e),f(Ze()??n.defaultMode??r.mode??`light`),m(r.radius??Ue.default.preset.radius),g(r.fontSans??``),v(r.fontMono??``),b(r.colors),S(r.dark),E(t.motion)},[n]),(0,l.useEffect)(()=>{let e=o[c]??o.default,t=Ge(e.components);We(t,n.themeOverride??{}),w(t),E(e.motion)},[c,n.themeOverride,o]),(0,l.useEffect)(()=>{Qe(c,d)},[c,d]),(0,l.useEffect)(()=>{let e=(o[c]??o.default).preset;tt({mode:d,radius:p,fontSans:h,fontMono:_,colors:y,dark:x,variables:e.variables})},[d,o,c,p,h,_,y,x]);let D=(0,l.useMemo)(()=>({mode:d,resolvedMode:$e(d),theme:c,primary:y?.primary??Ue.default.preset.colors.primary,primaryForeground:y?.primaryForeground??Ue.default.preset.colors.primaryForeground,radius:p,fontSans:h,fontMono:_,colors:y,dark:x,themes:o,setMode:f,toggleMode(){f(e=>$e(e)===`dark`?`light`:`dark`)},applyTheme(e){o[e]||(process.env.NODE_ENV!==`production`&&console.warn(`[ThemeProvider] Unknown theme "${e}", falling back to "default".`),e=`default`);let t=(o[e]??o.default).preset;u(e),f(t.mode??`light`),m(t.radius??Ue.default.preset.radius),g(t.fontSans??``),v(t.fontMono??``),b(t.colors),S(t.dark)},setPrimary(e){let t=e.split(` `)[0];b(n=>({...n,primary:e,ring:e,secondary:`${t} 40% 96%`,secondaryForeground:`${t} 47% 11%`,accent:`${t} 40% 94%`,accentForeground:`${t} 47% 11%`})),S(n=>({...n,primary:e,ring:e,secondary:`${t} 30% 18%`,secondaryForeground:`${t} 10% 96%`,accent:`${t} 30% 18%`,accentForeground:`${t} 10% 96%`}))},setRadius:m,setFont(e,t){g(e),t!==void 0&&v(t)},setColors(e){b(e)},setTokens(e){b(t=>({...t,...e})),S(t=>({...t,...e}))}}),[d,c,p,h,_,y,x,o]);return l.default.createElement(He.Provider,{value:D},l.default.createElement(Ve.Provider,{value:T},l.default.createElement(Be.Provider,{value:C},e)))},J=e=>(0,l.useContext)(Be),it=()=>(0,l.useContext)(Ve),at=()=>{let e=(0,l.useContext)(He);if(!e)throw Error(`useThemeController must be used inside <App> or <ThemeProvider>.`);return e},ot={common:{save:`Save`,cancel:`Cancel`,delete:`Delete`,close:`Close`,back:`Back`,search:`Search`,loading:`Loading...`,noDataFound:`No data found`,pageNavigation:`Page navigation`,previous:`Previous`,next:`Next`,notFoundMessage:`Oops! Page not found.`,goHome:`Go to Home`},auth:{signIn:`Sign in`,signOut:`Sign out`,connect:`Connect`,connected:`Connected`,authenticated:`Authenticated`,notConfigured:`Auth provider "{provider}" is not configured. Add the required client key before using this action.`,notImplemented:`AuthProvider does not implement signIn().`},form:{headerAdd:`New record`,headerEdit:`Edit record`,buttonSave:`Save`,buttonDelete:`Delete`,buttonBack:`Back`,requiredField:`{field} is required`,requiredFieldGeneric:`Required field`,saveSuccess:`Record saved successfully`,deleteSuccess:`Record deleted successfully`,noticeRequiredFields:`Please fill in all required fields`,noChangesToSave:`No changes to save`,draftRestoreTitle:`Unsaved changes found`,draftRestoreMessage:`A local draft is available for this form. Restore it or discard it.`,draftRestoreAction:`Restore`,draftDiscardAction:`Discard`,draftRestoredTitle:`Draft restored`,draftRestoredMessage:`The local draft has been restored. You can still discard it for a few seconds.`},grid:{buttonAdd:`Add`,deleteConfirm:`Delete record`,emptyState:`No records found`},select:{placeholder:`Select...`,loading:`Loading...`},modal:{save:`Save`,delete:`Delete`,cancel:`Cancel`,close:`Close`,ok:`Ok`,yes:`Yes`,no:`No`},upload:{clickOrDrag:`Click to upload or drag and drop`,dropToUpload:`Drop to upload`,uploadMore:`Upload more files`,editFileName:`Edit file name`,editorImage:`Edit image`,loaded:`Loaded`,removeFile:`Remove`,uploadAnother:`Upload another file`,dropToParse:`Drop to parse`},notifications:{title:`Notifications`,seeAll:`See all`},code:{copyCode:`Copy code`,copy:`Copy`,copied:`Copied`,codeLanguageDefault:`text`},table:{noDataFound:`No data found`,selectAllRows:`Select all rows`,sortBy:`Sort by {label}`,sortByCurrent:`Sort by {label}, currently {direction}`,selectRow:`Select row {key}`,reorderRow:`Reorder row {key}`},gallery:{selectItem:`Select item {key}`},crop:{enableCrop:`Click {scale} to enable this crop`,variants:`Variants`,outputFile:`Output file`,active:`active`,removeVariant:`Remove {scale} variant`,fileName:`File name`},imageEditor:{title:`Image Editor`,save:`Save`,undo:`Undo`,redo:`Redo`,zoomOut:`Zoom Out`,zoomIn:`Zoom In`,crop:`Crop`,flipHorizontal:`Flip horizontal`,flipVertical:`Flip vertical`,rotate:`Rotate 90°`,freeDrawing:`Free drawing`,arrow:`Arrow`,text:`Text`,rectangle:`Rectangle`,circle:`Circle`,triangle:`Triangle`},prompt:{noProviders:`No AI providers are registered.`,aiNotConfiguredEdit:`AI is not configured. You can still edit and save this prompt.`,aiNotConfiguredRun:`AI is not configured. Prompt execution is unavailable.`,aiNotConfiguredShort:`AI not configured`,toggleOnTitle:`Prompt ON. In PromptRun, this textarea is treated as the prompt template and can be executed against the current record. Turn OFF to skip the prompt system and use the plain fallback text instead.`,toggleOffTitle:`Prompt OFF. In PromptRun, the prompt system is skipped and the plain fallback text is used directly. Turn ON to use this textarea as the prompt template.`,closeEditor:`Close prompt editor`,editSettings:`Edit prompt settings`,attachFiles:`Attach files`,attachmentsNotSupported:`The selected AI provider does not support image or document attachments.`,run:`Run prompt`,runFailed:`Prompt execution failed.`,noMatchingCommands:`No matching commands`,tokenUsage:`Token usage`,tokenInput:`Input: {count} tok`,tokenOutput:`Output: {count} tok`,tokenContext:`Context: {percent}%`,tokenCost:"Cost: ~${amount}",tokenTime:`Time: {seconds}s`,tokenUsageEmpty:`Run the prompt to see token usage.`,hidePreview:`Hide preview`,showPreview:`Show resolved preview`,noProvider:`No AI provider is available for this prompt.`,noResponse:`The AI provider returned no response.`,promptLabel:`Prompt: `,defaultOption:`Default`},layout:{maxElements:`You already have 12 items in the row: remove one before adding another.`,noSpace:`No space available: cannot resize items enough to insert this field.`,dragToMove:`Drag to move`,remove:`Remove`,dragToResize:`Drag to resize`,dragHere:`Drag an element here`}};function st(e){return e}function ct(e){return e}function lt(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>String(t[n]??`{${n}}`))}function ut(e,t){let n=e=>typeof e==`object`&&!!e&&!Array.isArray(e),r=(e,t)=>{if(!n(e)||!n(t))return t??e;let i={...e};for(let e of Object.keys(t))i[e]=e in i?r(i[e],t[e]):t[e];return i};return r(e,t)}var dt=`llmnative_locale`,ft=3600*24*365;function pt(){if(typeof document>`u`)return null;let e=document.cookie.match(/(?:^|;\s*)llmnative_locale=([^;]+)/);return e?decodeURIComponent(e[1]):null}function mt(e){typeof document>`u`||(document.cookie=`${dt}=${encodeURIComponent(e)}; max-age=${ft}; path=/; SameSite=Lax`)}var ht=(0,l.createContext)(null),gt=({children:e,config:t})=>{let[n,r]=(0,l.useState)({}),i=(0,l.useMemo)(()=>{let e=[...Object.keys(t?.translations??{}),...Object.keys(n)];return Array.from(new Set([`en`,...e.filter(e=>e!==`en`)]))},[t?.translations,n]),[a,o]=(0,l.useState)(()=>{let e=pt();return e&&i.includes(e)?e:t?.locale??`en`}),s=(0,l.useMemo)(()=>{let e=t?.translations?.[a],r=n[a],i=ot;return e&&(i=ut(i,e)),r&&(i=ut(i,r)),i},[a,t?.translations,n]),c=(0,l.useCallback)(e=>{mt(e),o(e)},[]),u=(0,l.useCallback)((e,t)=>{r(n=>{let r=n[e],i=r?ut(r,t):t;return{...n,[e]:i}})},[]),d=(0,l.useMemo)(()=>({dict:s,locale:a,availableLocales:i,setLocale:c,registerTranslations:u}),[s,a,i,c,u]);return l.default.createElement(ht.Provider,{value:d},e)};function Y(e){let t=(0,l.useContext)(ht);if(!t)throw Error(`useI18n must be used inside <App> or <I18nProvider>.`);return e===void 0?t:e.split(`.`).reduce((e,t)=>e?.[t],t.dict)}function X(...e){return(0,f.twMerge)((0,d.clsx)(e))}var _t=`mx-auto w-full px-3 sm:max-w-[540px] md:max-w-[720px] lg:max-w-[960px] xl:max-w-[1140px] 2xl:max-w-[1320px]`,vt=`rf-row`,yt=`rf-col`,bt=`rf-col-fill`,xt=`rf-col-12`,St=(e,t)=>e===`xs`?`rf-col-${t}`:`rf-col-${e}-${t}`,Ct=e=>e===`xs`?`rf-col-auto`:`rf-col-${e}-auto`,wt=e=>({auto:Ct(e),1:St(e,1),2:St(e,2),3:St(e,3),4:St(e,4),5:St(e,5),6:St(e,6),7:St(e,7),8:St(e,8),9:St(e,9),10:St(e,10),11:St(e,11),12:St(e,12)}),Tt={xs:wt(`xs`),sm:wt(`sm`),md:wt(`md`),lg:wt(`lg`),xl:wt(`xl`),xxl:wt(`xxl`)},Et=(e,t)=>{let n=String(t);return Tt[e][n]},Z=({children:e=void 0,className:t=void 0,style:n=void 0,onClick:r=void 0})=>t?l.default.createElement(`div`,{className:t,style:n,onClick:r},e):l.default.createElement(l.default.Fragment,null,e),Dt=({children:e=void 0,className:t=void 0,style:n=void 0})=>l.default.createElement(`div`,{className:X(_t,t),style:n},e),Ot=({children:e=void 0,className:t=void 0,style:n=void 0})=>l.default.createElement(`div`,{className:X(vt,t),style:n},e),kt=({children:e=void 0,className:t=void 0,style:n=void 0,defaultSize:r=void 0,xxl:i=void 0,xl:a=void 0,lg:o=void 0,md:s=void 0,sm:c=void 0,xs:u=void 0})=>{let d=u??r,f=[yt,d!==void 0||c!==void 0||s!==void 0||o!==void 0||a!==void 0||i!==void 0?d===void 0?xt:Et(`xs`,d):bt,c===void 0?void 0:Et(`sm`,c),s===void 0?void 0:Et(`md`,s),o===void 0?void 0:Et(`lg`,o),a===void 0?void 0:Et(`xl`,a),i===void 0?void 0:Et(`xxl`,i),t];return l.default.createElement(`div`,{className:X(f),style:n},e)};function At(e){return typeof e==`object`&&!!e&&!l.default.isValidElement(e)&&`content`in e}function jt(e,t=`info`,n){if(!(e==null||e===!1))return At(e)?{...e,variant:e.variant||t,className:X(e.className,n)}:{content:e,variant:t,className:n}}var Mt=({badge:e,content:t=void 0,variant:n=void 0,defaultType:r=`info`,className:i=void 0,descriptorOnly:a=!1,children:o=void 0})=>{let s=t===void 0?e:{content:t,variant:n,className:i};if(a&&t===void 0&&!At(e))return e??null;let c=jt(s,n||r,i);return c?o===void 0?l.default.createElement(Nt,{variant:c.variant,className:c.className},c.content):l.default.createElement(Nt,{variant:c.variant,after:c.content,className:c.className},o):o??null},Nt=({children:e,variant:t=`info`,before:n=void 0,after:r=void 0,wrapperClassName:i=void 0,className:a=void 0})=>{let o=J(`badge`);if(l.default.isValidElement(e)){let s=X(`badge badge-overlay badge-`+t,`absolute top-0 z-10`,a||o.Badge.className);return l.default.createElement(`span`,{className:X(`relative inline-flex`,i)},e,n!==void 0&&l.default.createElement(`span`,{className:X(s,`left-0 -translate-x-1/2 -translate-y-1/2`)},n),r!==void 0&&l.default.createElement(`span`,{className:X(s,`right-0 translate-x-1/2 -translate-y-1/2`)},r),n===void 0&&r===void 0&&l.default.createElement(`span`,{className:X(s,`right-0 translate-x-1/2 -translate-y-1/2 !p-0 !min-w-0 w-2.5 h-2.5 rounded-full`)}))}return l.default.createElement(Z,{className:i},n,l.default.createElement(`span`,{className:X(`badge badge-`+t,a||o.Badge.className)},e),r)},Pt={from:{},to:{},transition:{duration:0,easing:`linear`,delay:0,properties:[`opacity`,`transform`,`box-shadow`]},reducedMotion:`always`},Ft={from:{},to:{},transition:{duration:160,easing:`cubic-bezier(0.2, 0, 0, 1)`,delay:0,properties:[`opacity`,`transform`,`box-shadow`]},reducedMotion:`respect-user`},It=()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,Lt=(e,t,n=`fade`)=>{let r=e===void 0?n:e;return r===!1?Pt:typeof r==`string`?t[r]??t.none??Pt:r},Rt=e=>e.properties.map(t=>`${t} ${e.duration}ms ${e.easing} ${e.delay}ms`).join(`, `),zt=(e,t={},n)=>{let r=Lt(n,t,`fade`),i=Lt(e,t,n),a={...Ft.transition,...r.transition,...i.transition},o=i.reducedMotion??r.reducedMotion??Ft.reducedMotion,s=o===`always`||o===`respect-user`&&It(),c={duration:s?0:a.duration,easing:s?`linear`:a.easing,delay:s?0:a.delay,properties:a.properties};return{from:s?{}:{...r.from??{},...i.from??{}},to:s?{}:{...r.to??{},...i.to??{}},transition:c,reducedMotion:o,transitionValue:Rt(c)}},Bt=(e,t)=>{let n=it();return l.default.useMemo(()=>zt(e,n,t),[e,n,t])},Vt=(e,t,n,r)=>{let i=Bt(t,n);return l.default.useMemo(()=>({...r,...e?i.to:i.from,transition:[r?.transition,i.transitionValue].filter(Boolean).join(`, `)}),[e,r,i])},Ht=(e=!1,t,n,r=`press`)=>{let i=Bt(n,r),[a,o]=l.default.useState(!1);return{style:l.default.useMemo(()=>({...t,...a&&!e?i.to:i.from,transition:[t?.transition,i.transitionValue].filter(Boolean).join(`, `)}),[t,e,i,a]),pressHandlers:{onMouseDown:()=>!e&&o(!0),onMouseUp:()=>o(!1),onMouseLeave:()=>o(!1),onBlur:()=>o(!1)}}},Ut=(e,t,n=`fadeUp`)=>{let[r,i]=l.default.useState(!1);return l.default.useEffect(()=>{i(!1);let e=window.requestAnimationFrame(()=>i(!0));return()=>window.cancelAnimationFrame(e)},[t,n]),Vt(r,t,n,e)},Wt={add:`Plus`,"arrow-arc-left":`Undo2`,"arrow-arc-right":`Redo2`,"arrow-line-down":`FlipVertical`,"arrow-line-right":`FlipHorizontal`,"camera-rotate":`RotateCw`,"caret-down":`ChevronDown`,"caret-right":`ChevronRight`,close:`X`,dashboard:`LayoutDashboard`,edit:`Pencil`,file:`FileText`,"floppy-disk":`Save`,fullscreen:`Maximize`,"fullscreen-exit":`Minimize`,github:`GitBranch`,"house-door":`Home`,"link-break":`Unlink`,"magnifying-glass-minus":`ZoomOut`,"magnifying-glass-plus":`ZoomIn`,rectangle:`Square`,"text-t":`Type`,trash:`Trash2`,warning:`TriangleAlert`};function Gt(e){return e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}var Kt=class{id=`lucide`;resolve(e){return p[Wt[e]??Gt(e)]??null}},qt={add:`Plus`,"arrow-arc-left":`ArrowArcLeft`,"arrow-arc-right":`ArrowArcRight`,"arrow-line-down":`ArrowLineDown`,"arrow-line-right":`ArrowLineRight`,"camera-rotate":`CameraRotate`,"caret-down":`CaretDown`,"caret-right":`CaretRight`,close:`X`,dashboard:`SquaresFour`,edit:`PencilSimple`,"external-link":`ArrowSquareOut`,file:`FileText`,"floppy-disk":`FloppyDisk`,fullscreen:`CornersOut`,"fullscreen-exit":`CornersIn`,github:`GithubLogo`,"house-door":`House`,"link-break":`LinkBreak`,"magnifying-glass-minus":`MagnifyingGlassMinus`,"magnifying-glass-plus":`MagnifyingGlassPlus`,menu:`List`,rectangle:`Rectangle`,search:`MagnifyingGlass`,settings:`Gear`,"text-t":`TextT`,trash:`Trash`,warning:`Warning`,layers:`Stack`};function Jt(e){return e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}var Yt=class{weight;id=`phosphor`;_cache=new Map;constructor(e=`regular`){this.weight=e}resolve(e){let t=this._cache.get(e);if(t)return t;let n=m[qt[e]??Jt(e)];if(!n)return null;let r=this.weight,i=e=>l.default.createElement(n,{weight:r,...e});return this._cache.set(e,i),i}},Xt=l.default.createContext(null),Zt=l.default.createContext(null),Qt={lucide:new Kt,phosphor:new Yt},$t=`lucide`;function en(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&typeof e.resolve==`function`}function tn(e){if(!e)return{defaultId:$t,providers:{...Qt},aliases:{}};if(typeof e==`string`)return{defaultId:e,providers:{...Qt},aliases:{}};if(en(e))return{defaultId:e.id,providers:{...Qt,[e.id]:e},aliases:{}};if(`default`in e&&`providers`in e){let t=e;return{defaultId:t.default,providers:{...Qt,...t.providers},aliases:t.aliases??{}}}return{defaultId:e.provider.id,providers:{...Qt,[e.provider.id]:e.provider},aliases:e.aliases??{}}}function nn(e,t){return Object.keys(t).length===0?e:{id:e.id,resolve(n){return e.resolve(t[n]??n)}}}function rn({provider:e,config:t,children:n}){let r=l.default.useMemo(()=>tn(t??e),[t,e]),[i,a]=l.default.useState(r.providers),[o,s]=l.default.useState(r.defaultId);l.default.useEffect(()=>{a(r.providers),s(r.defaultId)},[r]);let c=i[o]??i[$t],u=l.default.useMemo(()=>c?nn(c,r.aliases):null,[c,r.aliases]),d=l.default.useMemo(()=>({providerId:c?.id??$t,providers:i,aliases:r.aliases,setProvider(e){if(i[e]){s(e);return}process.env.NODE_ENV!==`production`&&console.warn(`[IconProvider] Unknown provider "${e}", falling back to "${$t}".`),s($t)},registerProvider(e,t){a(n=>({...n,[e]:t}))},resolve(e){return u?.resolve(e)??null}}),[c,i,r.aliases,u]);return l.default.createElement(Zt.Provider,{value:d},l.default.createElement(Xt.Provider,{value:u},n))}function an(){return l.default.useContext(Xt)}function on(){let e=l.default.useContext(Zt);if(!e)throw Error(`useIconController must be used inside <App> or <IconProvider>.`);return e}var sn=new Kt,Q=({name:e,size:t=16,className:n,style:r,provider:i,label:a,weight:o})=>{let s=an(),c=i??s??sn;if(!c||typeof e!=`string`||!e.trim())return null;let u=c.resolve(e);return u?l.default.createElement(u,{size:t,className:n,style:r,weight:o,"aria-label":a,"aria-hidden":!a||void 0}):null},cn=`btn`,ln=`btn-primary`,un=`btn-secondary`,dn=`btn-danger`,fn=`btn-success`,pn=`btn-warning`,mn=`btn-info`,hn=`btn-light`,gn=`btn-dark`,_n=`btn-outline-primary`,vn=`btn-outline-secondary`,yn=`btn-outline-danger`,bn=`btn-outline-success`,xn=`btn-link`,Sn=e=>{switch(e){case`primary`:return ln;case`secondary`:return un;case`danger`:return dn;case`success`:return fn;case`warning`:return pn;case`info`:return mn;case`light`:return hn;case`dark`:return gn;case`outline-primary`:return _n;case`outline-secondary`:return vn;case`outline-danger`:return yn;case`outline-success`:return bn;case`link`:return xn;default:return}},Cn=({onClick:e,icon:t=void 0,label:n=void 0,badge:r=void 0,title:i=void 0,ariaLabel:a=void 0,disabled:o=!1,loading:s=!1,before:c=void 0,after:u=void 0,wrapperClassName:d=void 0,className:f=void 0,iconClassName:p=void 0,style:m=void 0,loadingLabel:h=void 0,variant:g=void 0,motion:_=void 0}={})=>{let[v,y]=(0,l.useState)(s),[b,x]=(0,l.useState)(o),[S,C]=(0,l.useState)(``),w=e=>{C(e.message??``)},T=J(`button`),E=Ht(b||v,m,_??T.LoadingButton.motion?.press??`press`),D=h??(S||(typeof n==`string`?`${n}...`:n));(0,l.useEffect)(()=>{y(s),x(o)},[s,o]);let O=l.default.createElement(`button`,{type:`button`,title:i,"aria-label":a||t&&!n&&i||void 0,className:X(`btn`,g?Sn(g):f||T.LoadingButton.className,g?f:void 0,v&&`whitespace-nowrap`),style:E.style,disabled:b||v,...E.pressHandlers,onClick:async t=>{t.stopPropagation(),x(!0),y(!0),await e?.(t,w),y(!1),x(!1)}},v&&l.default.createElement(l.default.Fragment,null,l.default.createElement(`span`,{className:X(D&&`mr-1`,`inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`)}),D&&l.default.createElement(`span`,null,D)),t&&!v&&l.default.createElement(Q,{name:t,className:X(n&&`mr-1`,p)}),!v&&n);return l.default.createElement(Z,{className:d},c,l.default.createElement(Mt,{badge:v?void 0:r},O),u)},wn=({onClick:e,icon:t=void 0,label:n=void 0,badge:r=void 0,title:i=void 0,ariaLabel:a=void 0,disabled:o=!1,before:s=void 0,after:c=void 0,wrapperClassName:u=void 0,className:d=void 0,iconClassName:f=void 0,style:p=void 0,variant:m=void 0,motion:h=void 0}={})=>{let g=J(`button`),_=Ht(o,p,h??g.ActionButton.motion?.press??`press`),v=l.default.createElement(`button`,{type:`button`,title:i,"aria-label":a||t&&!n&&i||void 0,className:X(`btn`,m?Sn(m):d||g.ActionButton.className,m?d:void 0),style:_.style,disabled:o,..._.pressHandlers,onClick:t=>{t.preventDefault(),t.stopPropagation(),e?.(t)}},t&&l.default.createElement(Q,{name:t,className:X(n&&`mr-1`,f)}),n);return l.default.createElement(Z,{className:u},s,l.default.createElement(`span`,{title:o?i:void 0,style:o?{cursor:`not-allowed`,display:`inline-flex`}:void 0},l.default.createElement(Mt,{badge:r},v)),c)},Tn=({label:e=void 0,before:t=void 0,after:n=void 0,wrapperClassName:r=void 0,className:i=void 0})=>{let a=(0,u.useNavigate)(),o=J(`button`),s=Y(`common`);return l.default.createElement(Z,{className:r},t,l.default.createElement(`a`,{href:`#`,className:X(`btn`,i||o.LinkButton.className),onClick:e=>{e.preventDefault(),a(-1)}},e??s.back),n)},En=({label:e,href:t,before:n=void 0,after:r=void 0,wrapperClassName:i=void 0,className:a=void 0})=>(J(`button`),l.default.createElement(Z,{className:i},n,l.default.createElement(`h1`,{className:X(`m-0 text-2xl font-bold`,a)},e+` `,l.default.createElement(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`},l.default.createElement(Q,{name:`external-link`}))),r)),Dn=({title:e,href:t,imageSrc:n,width:r,before:i=void 0,after:a=void 0,wrapperClassName:o=void 0,className:s=void 0})=>l.default.createElement(Z,{className:o},i,l.default.createElement(`a`,{href:t,className:X(`mr-1`,s),target:`_blank`,title:e,rel:`noopener noreferrer`},l.default.createElement(`img`,{src:n,width:r||`100`,height:`30`,alt:e})),a),On=`globalVars`,kn=(0,l.createContext)(void 0),An=()=>JSON.parse(localStorage.getItem(On)||`{}`),jn=({children:e})=>{let[t,n]=(0,l.useState)(()=>An());(0,l.useEffect)(()=>{let e=e=>{e.storageArea===localStorage&&e.key===On&&n(An())};return window.addEventListener(`storage`,e),()=>{window.removeEventListener(`storage`,e)}},[]);let r=e=>{localStorage.setItem(On,JSON.stringify(e)),n(e)};return l.default.createElement(kn.Provider,{value:{globalVars:t,setGlobalVars:(e,n)=>{let i={...t,[n]:e};r(i)},removeGlobalVars:e=>{let n={...t};delete n[e],r(n)}}},e)},Mn=e=>{let t=(0,l.useContext)(kn);if(!t)throw Error(`useGlobalVars must be used within a GlobalProvider`);let{globalVars:n,setGlobalVars:r,removeGlobalVars:i}=t;return[n[e]??null,t=>r(t,e),()=>i(e)]},Nn=(e=null)=>{let t=An();return e?t[e]||{}:t},Pn=(e,t)=>{let n={...An(),[t]:e};localStorage.setItem(On,JSON.stringify(n))},Fn=e=>{let t={...An()};delete t[e],localStorage.setItem(On,JSON.stringify(t))},In=(0,l.createContext)(null),Ln=({registry:e,defaultKey:t,children:n})=>{let r=(0,l.useMemo)(()=>({registry:e,defaultKey:t}),[e,t]);return l.default.createElement(In.Provider,{value:r},n)},Rn=e=>{let t=(0,l.useContext)(In);if(!t)throw Error(`useAuthProvider must be used inside <App providers={...} />.`);let n=e??t.defaultKey,r=t.registry[n];if(!r)throw Error(`AuthProvider '${n}' is not registered. Available: ${Object.keys(t.registry).join(`, `)}`);return r},zn={basename:e=>e.split(`/`).filter(Boolean).pop()||``,extname:e=>{let t=e.lastIndexOf(`.`);return t>0?e.slice(t):``},dirname:e=>{let t=e.split(`/`).filter(Boolean);return t.pop(),`/`+t.join(`/`)},filename:e=>{let t=e.split(`/`).pop()||``,n=t.includes(`.`)?t.slice(t.lastIndexOf(`.`)):``;return t.replace(n,``)},parentBasename:e=>{let t=e.split(`/`).filter(Boolean);return t.pop(),t.pop()||``},parentDirname:e=>{let t=e.split(`/`).filter(Boolean);return t.pop(),t.pop(),`/`+t.join(`/`)},parentFilename:e=>{let t=e.split(`/`).filter(Boolean);t.pop();let n=t.pop()||``,r=n.includes(`.`)?n.slice(n.lastIndexOf(`.`)):``;return n.replace(r,``)},append:(e,t)=>{let n=e.split(`/`).slice(0,-1).join(`/`),r=e.split(`/`).pop()||``,i=r.includes(`.`)?r.slice(r.lastIndexOf(`.`)):``,a=r.replace(i,``);return(n?n+`/`:``)+a+t+i},prepend:(e,t)=>{let n=e.split(`/`).slice(0,-1).join(`/`),r=e.split(`/`).pop()||``,i=r.includes(`.`)?r.slice(r.lastIndexOf(`.`)):``,a=r.replace(i,``);return(n?n+`/`:``)+t+a+i},changeFilename:(e,{prefix:t=``,suffix:n=``,ext:r=null}={})=>{let i=e.split(`/`).slice(0,-1).join(`/`),a=e.split(`/`).pop()||``,o=a.includes(`.`)?a.slice(a.lastIndexOf(`.`)):``,s=a.replace(o,``),c=r===null?o:r?r.startsWith(`.`)?r:`.`+r:``;return(i?i+`/`:``)+t+s+n+c},join:(...e)=>e.join(`/`).replace(/\/+/g,`/`),parse:e=>{let t=zn.extname(e),n=zn.basename(e),r=zn.dirname(e);return{root:e.startsWith(`/`)?`/`:``,dir:r,base:n,ext:t,name:n.replace(t,``)}}},Bn=({src:e,width:t=void 0,height:n=void 0,title:r=void 0,alt:i=void 0,fit:a=`cover`,badge:o=void 0,feedback:s=void 0,before:c=void 0,after:u=void 0,wrapperClassName:d=void 0,className:f=void 0})=>{let p=J(`image`),[m,h]=(0,l.useState)(nt),g=p.ImageAvatar?.motion?.enter??!1,_=p.ImageAvatar?.motion?.hover??!1,v=_!==!1,y=Ut(void 0,g,!1),[b,x]=(0,l.useState)(!1),S=Vt(b,_,!1),C=e&&e.split(`?`)[0],w=`avatar::${C}`,T=`avatar-fetch-failed::${C}`,E=i||r||zn.filename(e||`data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='50' fill='%23eef2f7'/%3E%3Ccircle cx='50' cy='38' r='16' fill='%2364758b'/%3E%3Cpath d='M22 84c3.8-20 19-31 28-31s24.2 11 28 31c.5 2.8-1.7 5-4.5 5h-47c-2.8 0-5-2.2-4.5-5z' fill='%2364758b'/%3E%3C/svg%3E`);(0,l.useEffect)(()=>{if(!e||e.startsWith(`data:`)){h(e||`data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='50' fill='%23eef2f7'/%3E%3Ccircle cx='50' cy='38' r='16' fill='%2364758b'/%3E%3Cpath d='M22 84c3.8-20 19-31 28-31s24.2 11 28 31c.5 2.8-1.7 5-4.5 5h-47c-2.8 0-5-2.2-4.5-5z' fill='%2364758b'/%3E%3C/svg%3E`);return}let t=localStorage.getItem(w);if(t){h(t);return}h(e);let n=Number(localStorage.getItem(T)||0);n&&Date.now()-n<1440*60*1e3||fetch(e).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.blob()}).then(e=>{let t=new FileReader;t.onloadend=()=>{let e=t.result;localStorage.setItem(w,e),localStorage.removeItem(T),h(e)},t.readAsDataURL(e)}).catch(e=>{console.warn(`ImageAvatar:`,e.message),localStorage.setItem(T,String(Date.now()))})},[e,w,T]);let D=t??n??void 0,O={...t&&n?{width:t,height:n,objectFit:a}:D?{width:D,height:D,objectFit:a}:{objectFit:a},...v?S:{}};return l.default.createElement(Z,{className:X(`flex items-center gap-3`,d||p.ImageAvatar?.wrapperClassName)},c&&l.default.createElement(`div`,{className:`shrink-0 self-center`},c),l.default.createElement(`div`,{className:X(`relative shrink-0`,v&&`overflow-hidden`),style:y,onMouseEnter:v?()=>x(!0):void 0,onMouseLeave:v?()=>x(!1):void 0},l.default.createElement(`img`,{src:m,alt:E,width:t??D,height:n??D,className:X(f||p.ImageAvatar?.className),title:r,style:O,onError:()=>h(nt)}),o&&l.default.createElement(`span`,{className:X(`badge badge-overlay absolute top-0 right-0 translate-x-1/4 -translate-y-1/4 z-10`,`badge-`+(o.variant||`success`),!o.content&&`!p-0 !min-w-0 w-3 h-3 rounded-full`,o.className)},o.content),s&&l.default.createElement(`div`,{className:`mt-1 text-xs text-center`},s)),u&&l.default.createElement(`div`,{className:`min-w-0 self-center`},u))},Vn=(e,t,n=``)=>t.filter(t=>{let n=e?.[t];return n==null||n===``}).map(e=>`${n}${e}`),Hn=(e,t)=>({configured:t.length===0,missingKeys:t,reason:t.length?`${e} is not configured. Missing: ${t.join(`, `)}.`:void 0}),Un=(e,t=`Provider`)=>{if(!e)return{configured:!1,reason:`${t} is not registered.`};if(e.getConfigurationState)return e.getConfigurationState();if(e.isConfigured){let n=e.isConfigured();return{configured:n,reason:n?void 0:`${t} is not configured.`}}return{configured:!0}},Wn=`/__/authorize`,Gn=`auths`;function Kn(){let e=new Uint32Array(56/2);return window.crypto.getRandomValues(e),Array.from(e,e=>`0${e.toString(16)}`.substr(-2)).join(``)}async function qn(e){let t=new TextEncoder().encode(e),n=await window.crypto.subtle.digest(`SHA-256`,t);return btoa(String.fromCharCode(...new Uint8Array(n))).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}var Jn=(e,t,n)=>{let r=window.screen.width/2-n/2,i=`width=${n},height=${n},top=${window.screen.height/2-n/2},left=${r}`;return window.open(e,t,i)};function Yn({authServer:e,clientID:t,scopes:n=void 0,refreshParamName:r=`access_type`}){let i=Kn();localStorage.setItem(`authChallenge`,JSON.stringify({authServer:e,clientID:t,codeVerifier:i})),qn(i).then(i=>{Jn(`https://${e}/authorize?${new URLSearchParams({response_type:`code`,client_id:t,redirect_uri:`${window.location.origin}${Wn}`,scope:n?n.join(` `):``,code_challenge:i,code_challenge_method:`S256`,[r]:`offline`}).toString()}`,`auth`,600)})}var Xn=(e,t,n)=>{Pn({[t]:{...n,server:e,client_id:t,iat:Math.floor(Date.now()/1e3)}},Gn)},Zn=()=>{let e=(0,u.useLocation)().search,t=Y(`common`);return(0,l.useEffect)(()=>{let t=new URLSearchParams(e).get(`code`),n=((e,t)=>{try{return JSON.parse(localStorage.getItem(e)||``)||t}catch{return t}})(`authChallenge`);if(!t||!n)return;let{authServer:r,clientID:i,codeVerifier:a}=n;Ee(`https://${r}/token`,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:{grant_type:`authorization_code`,client_id:i,code:t,redirect_uri:`${window.location.origin}${Wn}`,code_verifier:a}}).then(e=>{Xn(r,i,e),localStorage.removeItem(`authChallenge`),window.close()}).catch(e=>console.error(`Error:`,e))},[e]),l.default.createElement(`div`,null,t.loading)},Qn=(e,t,n)=>Ee(`https://${e}/token`,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:{grant_type:`refresh_token`,client_id:t,refresh_token:n}}).then(n=>(Xn(e,t,n),n.access_token)).catch(e=>(console.error(`Error:`,e),localStorage.removeItem(Gn),null)),$n=(e,t=!0)=>{let[n]=Mn(Gn),r=n?.[e]||{},i=Math.floor(Date.now()/1e3)>=(r?.iat??0)+(r?.expires_in??0);return!!(r&&r?.access_token&&(!i||t&&i&&r.refresh_token&&(Qn(r.server??``,r.client_id??``,r.refresh_token)||!0)))},er=e=>Nn(Gn)?.[e],tr=e=>{let t=Nn(Gn)||{};t[e]&&(delete t[e],Pn(t,Gn))},nr=e=>{let t=er(e),n=Math.floor(Date.now()/1e3)>(t?.iat??0)+(t?.expires_in??0);return!n&&t?.access_token?Promise.resolve(t.access_token):n&&t?.refresh_token?Qn(t.server??``,t.client_id??``,t.refresh_token):Promise.resolve(null)},rr=e=>e===`signOut`||e===`disconnect`,ir=({provider:e,intent:t=`signIn`,aspect:n=`button`,scopes:r=void 0,iconLogout:i=`log-out`,avatarClass:a=void 0,options:o={},label:s=void 0,icon:c=void 0,title:u=void 0,className:d=void 0,disabled:f=!1,...p})=>{let m=Rn(e),h=J(`auth`),g=Y(`auth`),_=e||`AuthProvider`,v=l.default.useCallback(()=>Un(m,_),[m,_]),y=l.default.useMemo(()=>v(),[v]),b=y.configured,[x,S]=l.default.useState(()=>b?m.getUser():null),[C,w]=l.default.useState(()=>b&&(m.isAuthenticated?.()??!!m.getUser())),[T,E]=l.default.useState(!1),D=y.reason||lt(g.notConfigured,{provider:_});l.default.useEffect(()=>v().configured?(S(m.getUser()),w(m.isAuthenticated?.()??!!m.getUser()),m.onAuthChange(e=>{S(e),w(m.isAuthenticated?.()??!!e)})):(S(null),w(!1),E(!1),()=>{}),[m,v]);let O=()=>{if(!v().configured){S(null),w(!1);return}let e=m.getUser();S(e),w(m.isAuthenticated?.()??!!e)},k=async()=>{if(v().configured){if(rr(t)){await m.signOut(),O();return}if(!m.signIn)throw Error(g.notImplemented);await m.signIn({scopes:r,intent:t}),O()}},A={...p,...o,label:o.label??s??(C?g.connected:t===`signIn`?g.signIn:g.connect),icon:o.icon??c??(C?`link`:`link-break`),title:b?o.title??u:D,className:o.className??d,disabled:!b||(o.disabled??f),style:b?o.style??p.style:{...p.style||{},...o.style||{},opacity:.55,cursor:`not-allowed`}};if(n===`avatar`){let e=x?.displayName??x?.email??(C?g.authenticated:g.signIn);return l.default.createElement(`div`,{className:d||h.SignIn.className,style:{position:`relative`,display:`inline-flex`},title:b?void 0:D},l.default.createElement(`button`,{type:`button`,className:`border-0 bg-transparent p-0`,title:b?e:D,"aria-label":e,disabled:!b||f,"aria-disabled":!b||f,style:b?void 0:{opacity:.55,cursor:`not-allowed`},onClick:e=>{e.preventDefault(),e.stopPropagation(),!(!b||f)&&E(e=>!e)}},l.default.createElement(Bn,{src:x?.photoURL??`data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='50' fill='%23eef2f7'/%3E%3Ccircle cx='50' cy='38' r='16' fill='%2364758b'/%3E%3Cpath d='M22 84c3.8-20 19-31 28-31s24.2 11 28 31c.5 2.8-1.7 5-4.5 5h-47c-2.8 0-5-2.2-4.5-5z' fill='%2364758b'/%3E%3C/svg%3E`,title:b?e:D,height:36,className:a||h.SignIn.avatarClass})),T&&l.default.createElement(`div`,{role:`menu`,className:`absolute right-0 top-full z-50 mt-2 min-w-40 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md`},!C&&l.default.createElement(`button`,{type:`button`,role:`menuitem`,className:`flex w-full cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground`,onClick:k},s??g.signIn.toUpperCase()),C&&l.default.createElement(`button`,{type:`button`,role:`menuitem`,className:`flex w-full cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground`,onClick:async()=>{await m.signOut(),O(),E(!1)}},i&&l.default.createElement(Q,{name:i,className:`mr-2`}),g.signOut.toUpperCase())))}return l.default.createElement(wn,{...A,onClick:k})},ar=(0,l.createContext)(null),or=({registry:e,defaultKey:t,children:n})=>{let r=(0,l.useMemo)(()=>({registry:e,defaultKey:t}),[e,t]);return l.default.createElement(ar.Provider,{value:r},n)},sr=e=>{let t=(0,l.useContext)(ar);if(!t)throw Error(`useDataProvider must be used inside <App>.`);let n=e??t.defaultKey,r=t.registry[n];if(!r)throw Error(`DataProvider '${n}' is not registered. Available: ${Object.keys(t.registry).join(`, `)}`);return r};function cr({children:e,show:t=!1,icon:n=void 0,title:r=void 0,description:i=void 0,before:a=void 0,after:o=void 0,wrapperClassName:s=void 0,className:c=void 0}){let u=J(`loader`);return n||=u.Loader.icon,r||=u.Loader.title,i||=u.Loader.description,t?l.default.createElement(Z,{className:s||u.Loader.wrapperClassName},l.default.createElement(`div`,{className:`relative `+(c||u.Loader.className),style:{minHeight:`200px`}},l.default.createElement(`div`,{className:`absolute top-0 bottom-0 left-0 right-0`,style:{zIndex:10,backdropFilter:`blur(2px)`,background:`rgba(255, 255, 255, 0.5)`}},a,(n||r||i)&&l.default.createElement(`div`,{className:`flex flex-col items-center justify-center gap-2 p-4 text-center`},n&&l.default.createElement(Q,{name:n,size:32,className:`animate-spin text-primary`}),r&&l.default.createElement(`p`,{className:`text-sm font-semibold text-foreground`},r),i&&l.default.createElement(`p`,{className:`text-xs text-muted-foreground`},i)),o),e)):e}var lr=`rounded-lg border border-border bg-card text-card-foreground shadow-sm`,ur=`flex items-center gap-3 border-b border-border px-4 py-3`,dr=`p-4`,fr=`border-t border-border px-4 py-3`,pr=({children:e,title:t=void 0,header:n=void 0,footer:r=void 0,loading:i=void 0,wrapperClassName:a=void 0,className:o=void 0,headerClassName:s=void 0,bodyClassName:c=void 0,footerClassName:u=void 0,before:d=void 0,after:f=void 0})=>{let p=J(`card`),m=a??p.Card.wrapperClassName??(d||f?`flex items-center gap-2`:void 0);return l.default.createElement(Z,{className:m},d,l.default.createElement(`div`,{className:X(lr,p.Card.className,o)},n||t?l.default.createElement(`div`,{className:X(ur,p.Card.headerClassName,s)},t?l.default.createElement(`h5`,{className:`m-0 whitespace-nowrap text-base leading-none font-semibold`},t):null,n):null,l.default.createElement(`div`,{className:X(dr,p.Card.bodyClassName,c)},l.default.createElement(cr,{show:i??p.Card.loading},e)),r?l.default.createElement(`div`,{className:X(fr,p.Card.footerClassName,u)},r):null),f)},mr=e=>l.default.createElement(hr,e),hr=({children:e,title:t=void 0,header:n=void 0,footer:r=void 0,onClose:i=void 0,onSave:a=void 0,onDelete:o=void 0,size:s=void 0,position:c=void 0,allowFullscreen:u=!1,showCancel:d=!0,before:f=void 0,after:p=void 0,wrapperClassName:m=void 0,className:g=void 0,headerClassName:_=void 0,titleClassName:v=void 0,subtitleClassName:y=void 0,bodyClassName:b=void 0,footerClassName:x=void 0,closeOnBackdrop:S=!0,zIndex:C=void 0,stackedBehind:w=!1,rightInset:T=void 0,closeSlot:E=void 0,motion:D=void 0})=>{let O=J(`modal`),k=Y(`modal`),[A,j]=l.default.useState(!1),M=l.default.useRef(!1),N=l.default.useRef(void 0),[P,F]=(0,l.useState)(s),I={sm:`max-w-sm`,md:`max-w-md`,lg:`max-w-2xl`,xl:`max-w-4xl`,"2xl":`max-w-6xl`,fullscreen:`max-w-none w-screen h-dvh rounded-none`}[P||O.Modal.size||`lg`],L={sm:`w-72`,md:`w-96`,lg:`w-[36rem]`,xl:`w-[48rem]`,"2xl":`w-[64rem]`,fullscreen:`w-screen`}[P||O.Modal.size||`lg`],R={sm:`max-h-[30vh]`,md:`max-h-[45vh]`,lg:`max-h-[60vh]`,xl:`max-h-[85vh]`,"2xl":`max-h-[90vh]`,fullscreen:`h-dvh max-h-none`}[P||O.Modal.size||`lg`],z={center:{coverClass:`fixed inset-0 z-50 flex items-center justify-center overflow-y-auto p-4`,dialogClass:X(`relative z-50 flex w-full flex-col overflow-hidden rounded-lg border border-border/60 bg-card shadow-xl`,P!==`fullscreen`&&`max-h-[calc(100dvh-2rem)]`,I,m||O.Modal.wrapperClassName),contentClass:X(`flex min-h-0 flex-1 flex-col`,g||O.Modal.className),headerClassName:X(`flex items-center justify-between gap-3 border-b border-border/60 px-4 py-3`,_||O.Modal.headerClassName),titleClassName:X(`text-lg font-semibold leading-none`,v||O.Modal.titleClassName),subtitleClassName:X(`mt-1 text-sm text-muted-foreground`,y||O.Modal.subtitleClassName),bodyClassName:X(`min-h-0 flex-1 overflow-auto p-4`,b||O.Modal.bodyClassName),footerClassName:X(`flex items-center justify-end gap-3 border-t border-border/60 px-4 py-3`,x||O.Modal.footerClassName)},top:{coverClass:`fixed inset-0 z-50`,dialogClass:X(`fixed left-0 right-0 top-0 z-50 flex flex-col border-b border-border/60 bg-card shadow-xl`,R,m||O.Modal.wrapperClassName),contentClass:X(`flex min-h-0 flex-1 flex-col`,g||O.Modal.className),headerClassName:X(`flex items-center justify-between gap-3 border-b border-border/60 px-4 py-3`,_||O.Modal.headerClassName),titleClassName:X(`text-lg font-semibold leading-none`,v||O.Modal.titleClassName),subtitleClassName:X(`mt-1 text-sm text-muted-foreground`,y||O.Modal.subtitleClassName),bodyClassName:X(`min-h-0 flex-1 overflow-auto p-4`,b||O.Modal.bodyClassName),footerClassName:X(`flex items-center justify-end gap-3 border-t border-border/60 px-4 py-3`,x||O.Modal.footerClassName)},left:{coverClass:`fixed inset-0 z-50`,dialogClass:X(`fixed bottom-0 left-0 top-0 z-50 flex max-w-full flex-col border-r border-border/60 bg-card shadow-xl`,L,m||O.Modal.wrapperClassName),contentClass:X(`flex min-h-0 flex-1 flex-col`,g||O.Modal.className),headerClassName:X(`flex items-center justify-between gap-3 border-b border-border/60 px-4 py-3`,_||O.Modal.headerClassName),titleClassName:X(`text-lg font-semibold leading-none`,v||O.Modal.titleClassName),subtitleClassName:X(`mt-1 text-sm text-muted-foreground`,y||O.Modal.subtitleClassName),bodyClassName:X(`min-h-0 flex-1 overflow-auto p-4`,b||O.Modal.bodyClassName),footerClassName:X(`flex items-center justify-end gap-3 border-t border-border/60 px-4 py-3`,x||O.Modal.footerClassName)},right:{coverClass:`fixed inset-0 z-50`,dialogClass:X(`fixed bottom-0 right-0 top-0 z-50 flex max-w-full flex-col border-l border-border/60 bg-card shadow-xl`,L,m||O.Modal.wrapperClassName),contentClass:X(`flex min-h-0 flex-1 flex-col`,g||O.Modal.className),headerClassName:X(`flex items-center justify-between gap-3 border-b border-border/60 px-4 py-3`,_||O.Modal.headerClassName),titleClassName:X(`text-lg font-semibold leading-none`,v||O.Modal.titleClassName),subtitleClassName:X(`mt-1 text-sm text-muted-foreground`,y||O.Modal.subtitleClassName),bodyClassName:X(`min-h-0 flex-1 overflow-auto p-4`,b||O.Modal.bodyClassName),footerClassName:X(`flex items-center justify-end gap-3 border-t border-border/60 px-4 py-3`,x||O.Modal.footerClassName)},bottom:{coverClass:`fixed inset-0 z-50`,dialogClass:X(`fixed bottom-0 left-0 right-0 z-50 flex flex-col border-t border-border/60 bg-card shadow-xl`,R,m||O.Modal.wrapperClassName),contentClass:X(`flex min-h-0 flex-1 flex-col`,g||O.Modal.className),headerClassName:X(`flex items-center justify-between gap-3 border-b border-border/60 px-4 py-3`,_||O.Modal.headerClassName),titleClassName:X(`text-lg font-semibold leading-none`,v||O.Modal.titleClassName),subtitleClassName:X(`mt-1 text-sm text-muted-foreground`,y||O.Modal.subtitleClassName),bodyClassName:X(`min-h-0 flex-1 overflow-auto p-4`,b||O.Modal.bodyClassName),footerClassName:X(`flex items-center justify-end gap-3 border-t border-border/60 px-4 py-3`,x||O.Modal.footerClassName)}},B=P===`fullscreen`?`center`:c||O.Modal.position,V=z[B],ee=P===`fullscreen`?X(V.coverClass,`!overflow-hidden !p-0`):V.coverClass;l.default.useEffect(()=>{let e=window.document.body.style.overflow;window.document.body.style.overflow=`hidden`;let t=window.requestAnimationFrame(()=>j(!0));return()=>{window.cancelAnimationFrame(t),N.current!==void 0&&window.clearTimeout(N.current),window.document.body.style.overflow=e||`auto`}},[]);let te=D??O.Modal.motion?.[B]??`fade`,ne=Bt(te,te),H=()=>{if(M.current)return;M.current=!0,j(!1),window.document.body.style.overflow=`auto`;let e=ne.transition.duration+ne.transition.delay;N.current=window.setTimeout(()=>{i?.()},e)},re=Vt(A,te,te),U=T?{right:T}:{},ie={...Vt(A,O.Modal.motion?.backdrop??`fade`,O.Modal.motion?.backdrop??`fade`),cursor:S&&i?`pointer`:`default`,...C===void 0?{}:{zIndex:C-10},...U},ae={cursor:S&&i?`pointer`:`default`,...C===void 0?{}:{zIndex:C},...w?{pointerEvents:`none`}:{},...U},oe=w?{transform:c===`left`?`scale(0.94) translateX(-14px)`:c===`right`?`scale(0.94) translateX(14px)`:c===`bottom`?`scale(0.94) translateY(14px)`:c===`top`?`scale(0.94) translateY(-14px)`:`scale(0.94)`,transformOrigin:c===`left`?`left center`:c===`right`?`right center`:c===`bottom`?`bottom center`:c===`top`?`top center`:`center`,transition:`transform 200ms ease, filter 200ms ease`,filter:`brightness(0.7)`}:{},se=r!==!1&&(r||a||o||d&&i),ce=`inline-flex h-9 w-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`;return(0,h.createPortal)(l.default.createElement(l.default.Fragment,null,l.default.createElement(`div`,{className:ee,style:ae,onClick:()=>{S&&i&&H()}},l.default.createElement(`div`,{className:V.dialogClass,style:{...re,...oe,...C===void 0?{}:{zIndex:C},...B===`right`?U:{}},onClick:e=>e.stopPropagation()},f,l.default.createElement(`div`,{className:V.contentClass},(n||t||u||i||E)&&l.default.createElement(`div`,{className:V.headerClassName},l.default.createElement(`div`,{className:`min-w-0`},t&&l.default.createElement(`h3`,{className:V.titleClassName},t),t&&n&&l.default.createElement(`div`,{className:V.subtitleClassName},n),!t&&n&&(typeof n==`string`?l.default.createElement(`h3`,{className:V.titleClassName},n):n)),(u||i||E)&&l.default.createElement(`div`,{className:`ml-auto flex shrink-0 items-center gap-1`},u&&l.default.createElement(`button`,{type:`button`,title:P===`fullscreen`?`Exit fullscreen`:`Enter fullscreen`,"aria-label":P===`fullscreen`?`Exit fullscreen`:`Enter fullscreen`,className:ce,onClick:e=>{e.preventDefault(),e.stopPropagation(),F(e=>e===`fullscreen`?s===`fullscreen`?`lg`:s:`fullscreen`)}},l.default.createElement(Q,{name:P===`fullscreen`?O.Modal.iconCollapse:O.Modal.iconExpand,size:18})),E??(i&&l.default.createElement(`button`,{type:`button`,title:k.close,"aria-label":k.close,className:ce,onClick:e=>{e.preventDefault(),e.stopPropagation(),H()}},l.default.createElement(Q,{name:`x`,size:20}))))),l.default.createElement(`div`,{className:V.bodyClassName},e),se&&l.default.createElement(`div`,{className:V.footerClassName},r,!r&&a&&l.default.createElement(Cn,{variant:`primary`,label:k.save,onClick:async e=>{e.preventDefault(),await a(e)&&H()}}),!r&&o&&l.default.createElement(Cn,{variant:`danger`,label:k.delete,onClick:async e=>{e.preventDefault(),await o(e),H()}}),!r&&d&&i&&l.default.createElement(wn,{variant:`link`,label:k.cancel,onClick:H}))),p)),!w&&l.default.createElement(`div`,{"data-rf-modal-backdrop":``,"aria-hidden":`true`,className:`fixed inset-0 z-40 bg-black/60 backdrop-blur-sm`,style:ie,onClick:()=>{S&&i&&H()}})),document.body)},gr=({children:e,title:t=void 0,onYes:n=void 0,onNo:r=void 0,onClose:i=void 0})=>{let a=Y(`modal`);return l.default.createElement(hr,{title:t,onClose:i,allowFullscreen:!1,footer:l.default.createElement(l.default.Fragment,null,n&&l.default.createElement(Cn,{variant:`primary`,label:a.yes,onClick:async e=>{e.preventDefault(),await n(e),i?.()}}),r&&l.default.createElement(Cn,{variant:`secondary`,label:a.no,onClick:async e=>{e.preventDefault(),await r(e),i?.()}}))},e)},_r=({children:e,title:t=void 0,onClose:n=void 0})=>{let r=Y(`modal`);return l.default.createElement(hr,{title:t,onClose:n,allowFullscreen:!1,footer:l.default.createElement(l.default.Fragment,null,l.default.createElement(wn,{variant:`primary`,label:r.ok,onClick:n}))},e)},vr=({menuKey:e,as:t=`ul`,badges:n={},before:r=void 0,after:i=void 0,wrapperClassName:a=void 0,className:o=void 0,headerClassName:s=void 0,itemClassName:c=void 0,linkClassName:d=void 0,iconClassName:f=void 0,textClassName:p=void 0,badgeClassName:m=void 0,arrowClassName:h=void 0,submenuClassName:g=void 0})=>{let _=Xp(e),v=J(`menu`),y=({item:e,index:r})=>{let[i,a]=(0,l.useState)(e.active);(0,l.useEffect)(()=>{a(e.active)},[e]);let o=(e.children?.length??0)>0,_=(e.title??``).toLowerCase(),b=()=>l.default.createElement(`span`,{className:f??v.Menu.iconClassName},l.default.createElement(Q,{name:e.icon}));return e.path?l.default.createElement(`li`,{className:X(c??v.Menu.itemClassName)},l.default.createElement(u.Link,{to:e.path.split(`*`)[0],className:X(d??v.Menu.linkClassName,e.active&&`bg-primary/10 text-primary`),...o&&{},onClick:e=>{o&&!pe(e,`a`)&&(e.preventDefault(),a(e=>!e))}},e.icon&&l.default.createElement(b,null),l.default.createElement(`span`,{className:p??v.Menu.textClassName},e.title),n[_]&&l.default.createElement(Nt,{variant:n[_].type,className:m??v.Menu.badgeClassName},n[_].children),o&&l.default.createElement(`span`,{className:X(h??v.Menu.arrowClassName,`ml-auto inline-flex shrink-0 items-center justify-center text-muted-foreground transition-transform duration-200`,i&&`rotate-90`)},l.default.createElement(Q,{name:`chevron-right`,size:14}))),o&&l.default.createElement(`div`,{className:X(`grid transition-[grid-template-rows,opacity] duration-200 ease-out`,i?`grid-rows-[1fr] opacity-100`:`grid-rows-[0fr] opacity-0`)},l.default.createElement(`div`,{className:`min-h-0 overflow-hidden`},(()=>{let n=t;return l.default.createElement(n,{className:g??v.Menu.submenuClassName},e.children.map((e,t)=>l.default.createElement(y,{key:t,item:e,index:t})))})()))):l.default.createElement(`li`,{key:r,className:s??v.Menu.headerClassName},e.icon&&l.default.createElement(b,null),e.title&&(/^-+$/.test(e.title)?l.default.createElement(`hr`,{className:`m-0`}):l.default.createElement(`span`,null,e.title)))},b=t;return l.default.createElement(Z,{className:a??v.Menu.wrapperClassName},r,l.default.createElement(b,{className:o??v.Menu.className},_.map((e,t)=>l.default.createElement(y,{key:t,item:e,index:t}))),i)},yr=({children:e,trigger:t,badge:n=void 0,header:r=void 0,footer:i=void 0,defaultOpen:a=!1,open:o=void 0,onOpenChange:s=void 0,staticOpen:c=!1,position:u=void 0,placement:d=`bottom`,strategy:f=`fixed`,wrapperClassName:p=void 0,className:m=void 0,before:g=void 0,after:_=void 0,triggerClassName:v=void 0,menuClassName:y=void 0,badgeClassName:b=void 0,headerClassName:x=void 0,footerClassName:S=void 0,motion:C=void 0})=>{let w=J(`dropdown`),[T,E]=l.default.useState(a),D=l.default.useRef(null),O=l.default.useRef(null),k=l.default.useRef(null),A=l.default.useId(),j=c?!0:o??T,[M,N]=l.default.useState(`bottom`),[P,F]=l.default.useState(void 0),[I,L]=l.default.useState(null),R=!c&&t!==void 0,z=Vt(j,C??w.Dropdown.motion?.open??`fadeDown`,w.Dropdown.motion?.open??`fadeDown`),B=l.default.useCallback(e=>{c||(o===void 0&&E(e),s?.(e))},[c,o,s]);l.default.useEffect(()=>{if(!j||c)return;let e=e=>{let t=e.target;!D.current?.contains(t)&&!k.current?.contains(t)&&B(!1)},t=e=>{e.key===`Escape`&&B(!1)};return window.document.addEventListener(`pointerdown`,e),window.document.addEventListener(`keydown`,t),()=>{window.document.removeEventListener(`pointerdown`,e),window.document.removeEventListener(`keydown`,t)}},[c,j,B]),l.default.useEffect(()=>{if(!j||c||!O.current)return;let e=O.current.getBoundingClientRect(),t=window.innerHeight-e.bottom-8,n=e.top-8,r;if(d===`auto`?(r=t<(k.current?k.current.scrollHeight:240)+8?`top`:`bottom`,N(r)):r=d===`top`?`top`:`bottom`,F(Math.max(160,r===`top`?n:t)),f===`absolute`)return;let i=u===`end`;L(r===`top`?{bottom:window.innerHeight-e.top+4,...i?{right:window.innerWidth-e.right}:{left:e.left}}:{top:e.bottom+4,...i?{right:window.innerWidth-e.right}:{left:e.left}})},[j,d,u,c,f]);function V(e){return typeof e==`object`&&!!e&&!l.default.isValidElement(e)&&(`icon`in e||`text`in e)}let ee=R?l.default.createElement(xr,{className:v,badge:n,badgeClassName:b,motion:C,title:V(t)?t.title:void 0,onToggle:()=>B(!j),open:j,menuId:A,buttonRef:O},V(t)?l.default.createElement(l.default.Fragment,null,t.icon&&l.default.createElement(Q,{name:t.icon,className:t.text?`mr-2`:void 0}),t.text):t):null,te=p??w.Dropdown.wrapperClassName??(g||_?`flex items-center gap-2`:void 0),ne=M===`top`?`bottom-full mb-1`:`top-full mt-1`,H=u===`end`?`right-0`:`left-0`,re=l.default.createElement(`div`,{ref:k,id:A,role:`menu`,"aria-hidden":!j,className:X(`min-w-56 overflow-y-auto rounded-xl border border-border/60 bg-popover/95 p-1 text-popover-foreground shadow-xl shadow-black/5 outline-none backdrop-blur supports-[backdrop-filter]:bg-popover/90 dark:shadow-black/20`,c?`relative`:f===`absolute`?`absolute z-[200] ${ne} ${H}`:`fixed z-[200]`,y||w.Dropdown.menuClassName),style:c?void 0:{...z,opacity:+!!j,visibility:j?`visible`:`hidden`,pointerEvents:j?void 0:`none`,maxHeight:P,minWidth:O.current?O.current.offsetWidth:void 0,...f===`fixed`?I??{}:{}},onClick:e=>{e.stopPropagation()}},r&&l.default.createElement(`div`,{className:X(`px-2 py-1.5 text-sm font-semibold`,x||w.Dropdown.headerClassName)},r,l.default.createElement(wr,null)),e,i&&l.default.createElement(`div`,{className:S||w.Dropdown.footerClassName},l.default.createElement(wr,null),i)),U=!c&&f===`fixed`&&typeof document<`u`;return l.default.createElement(Z,{className:te},g,l.default.createElement(`div`,{ref:D,className:X(c?`inline-block text-left`:`relative inline-block text-left`,m||w.Dropdown.className)},ee,U?(0,h.createPortal)(re,document.body):re),_)};function br({loadItems:e,getItemId:t,renderItem:n,onSelect:r,selectedId:i=void 0,searchPlaceholder:a=void 0,emptyState:o=void 0,loadingState:s=void 0,errorState:c=void 0,debounceMs:u=200,closeOnSelect:d=!0,inputClassName:f=void 0,selectedClassName:p=void 0,header:m=void 0,open:h=void 0,defaultOpen:g=!1,onOpenChange:_=void 0,footer:v=void 0,headerClassName:y=void 0,staticOpen:b=!1,...x}){let S=Y(`common`),[C,w]=l.default.useState(g),[T,E]=l.default.useState(``),[D,O]=l.default.useState([]),[k,A]=l.default.useState(!1),[j,M]=l.default.useState(null),N=l.default.useRef(0),P=b||(h??C),F=l.default.useCallback(e=>{h===void 0&&w(e),e||E(``),_?.(e)},[h,_]);l.default.useEffect(()=>{if(!P)return;let t=new AbortController,n=++N.current,r=window.setTimeout(()=>{A(!0),M(null),e(T,t.signal).then(e=>{!t.signal.aborted&&n===N.current&&O(e)}).catch(e=>{!t.signal.aborted&&n===N.current&&(M(e),O([]))}).finally(()=>{!t.signal.aborted&&n===N.current&&A(!1)})},T?u:0);return()=>{window.clearTimeout(r),t.abort()}},[P,T,u,e]);let I=l.default.useCallback(async e=>{let t=await r(e);d&&t!==!1&&F(!1)},[d,r,F]);return l.default.createElement(yr,{...x,staticOpen:b,open:P,onOpenChange:F,header:l.default.createElement(l.default.Fragment,null,l.default.createElement(`div`,{className:`relative`},l.default.createElement(Q,{name:`search`,size:14,className:`pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-muted-foreground/60`}),l.default.createElement(`input`,{autoFocus:!0,value:T,onChange:e=>E(e.target.value),placeholder:a??S.search,className:X(`w-full rounded-md border border-border/60 bg-background py-1.5 pl-8 pr-2 text-sm font-normal text-foreground outline-none placeholder:text-muted-foreground focus:border-primary/50`,f)})),m),headerClassName:X(`px-2 pt-2 pb-1.5`,y),footer:v},k?l.default.createElement(`div`,{className:`px-2 py-3 text-center text-sm text-muted-foreground`},s??S.loading):j?l.default.createElement(`div`,{className:`px-2 py-3 text-center text-sm text-destructive`},c?.(j)??(j instanceof Error?j.message:S.noDataFound)):D.length===0?l.default.createElement(`div`,{className:`px-2 py-3 text-center text-sm text-muted-foreground`},o??S.noDataFound):D.map(e=>{let r=t(e);return l.default.createElement(Sr,{key:r,onClick:()=>{I(e)},className:X(r===i&&`bg-accent text-accent-foreground`,p)},n(e))}))}var xr=({children:e,badge:t=void 0,display:n=`dynamic`,className:r=void 0,badgeClassName:i=void 0,motion:a=void 0,title:o=void 0,onToggle:s=void 0,open:c=!1,menuId:u=void 0,buttonRef:d=void 0})=>{let f=J(`dropdown`),p=Ht(!1,{cursor:`pointer`},a??f.Dropdown.motion?.press??`press`),m=l.default.createElement(`button`,{ref:d,type:`button`,title:o,className:X(`inline-flex items-center justify-center gap-2`,r||f.Dropdown.triggerClassName),style:p.style,"aria-haspopup":`menu`,"aria-expanded":c,"aria-controls":u,onClick:s,...p.pressHandlers,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),s?.())},"data-display":n},e);return l.default.createElement(Mt,{badge:t,className:i||f.Dropdown.badgeClassName},m)},Sr=({children:e,url:t=void 0,onClick:n=void 0,icon:r=void 0,className:i=void 0})=>{let a=J(`dropdown`),o=r?l.default.createElement(`span`,{className:`inline-flex min-w-0 items-center gap-2`},l.default.createElement(`span`,{className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground`},l.default.createElement(Q,{name:r,size:16})),l.default.createElement(`span`,{className:`min-w-0`},e)):e;return t?l.default.createElement(u.Link,{to:t,role:`menuitem`,className:X(`flex w-full cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground`,i||a.Dropdown.menuItemClass)},o):n?l.default.createElement(`button`,{onClick:n,role:`menuitem`,className:X(`flex w-full cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground`,i||a.Dropdown.menuItemClass)},o):l.default.createElement(`span`,{role:`menuitem`,className:X(`flex w-full select-none items-center rounded-sm px-2 py-1.5 text-sm`,i||a.Dropdown.menuItemClass)},o)},Cr=({children:e,className:t})=>{let n=J(`dropdown`);return l.default.createElement(`div`,{className:X(`px-2 py-1.5 text-xs font-medium uppercase tracking-wide text-muted-foreground`,t||n.Dropdown.menuHeaderClass)},e)},wr=({className:e})=>{let t=J(`dropdown`);return l.default.createElement(`div`,{className:X(`-mx-1 my-1 h-px bg-border/60`,e||t.Dropdown.menuDividerClass)})},Tr=({menuKey:e,as:t=`ul`,badges:n={},before:r=void 0,after:i=void 0})=>{let a=J(`dropdown`);return l.default.createElement(vr,{menuKey:e,as:t,badges:n,before:r,after:i,wrapperClassName:a.Dropdown.Menu.wrapperClassName,className:a.Dropdown.Menu.className,headerClassName:a.Dropdown.Menu.headerClassName,itemClassName:a.Dropdown.Menu.itemClassName,linkClassName:a.Dropdown.Menu.linkClassName,iconClassName:a.Dropdown.Menu.iconClassName,textClassName:a.Dropdown.Menu.textClassName,badgeClassName:a.Dropdown.Menu.badgeClassName,arrowClassName:a.Dropdown.Menu.arrowClassName,submenuClassName:a.Dropdown.Menu.submenuClassName})},Er=({src:e,placeholder:t=void 0,label:n=void 0,title:r=void 0,fit:i=void 0,position:a=void 0,feedback:o=void 0,width:s=void 0,height:c=void 0,srcset:u=void 0,sizes:d=void 0,before:f=void 0,after:p=void 0,wrapperClassName:m=void 0,className:h=void 0})=>{let g=J(`image`),_=g.Image.motion?.enter??!1,v=g.Image.motion?.hover??!1,y=v!==!1,b=Ut(void 0,_,!1),[x,S]=(0,l.useState)(!1),C=Vt(x,v,!1);return l.default.createElement(Z,{className:X(`flex items-center gap-4`,m||g.Image.wrapperClassName)},f&&l.default.createElement(`div`,{className:`shrink-0 self-center`},f),l.default.createElement(`div`,{className:X(`flex min-w-0 flex-col`,y&&`overflow-hidden`),style:b,onMouseEnter:y?()=>S(!0):void 0,onMouseLeave:y?()=>S(!1):void 0},l.default.createElement(`img`,{src:e||t||`data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InRyYW5zcGFyZW50Ii8+PGNpcmNsZSBjeD0iNjUiIGN5PSIzNSIgcj0iMTAiIGZpbGw9IiM5Y2EzYWYiLz48cGF0aCBkPSJNMTAsNzUgTDMyLDUwIEw1Miw3MCBMNjgsNTIgTDkwLDcyIEw5MCw4MCBIMTAgWiIgZmlsbD0iIzljYTNhZiIvPjwvc3ZnPg==`,alt:n||r||e,title:r,className:h||g.Image.className,style:{...s&&c?{maxWidth:s,aspectRatio:`${s} / ${c}`,width:`100%`}:s?{maxWidth:s,width:`100%`}:c?{height:c}:{},...i?{objectFit:i}:{},...a?{objectPosition:a}:{},...y?C:{}},width:s,height:c,srcSet:u,sizes:d}),o&&l.default.createElement(`div`,{className:`mt-2 text-sm text-muted-foreground`},o)),p&&l.default.createElement(`div`,{className:`shrink-0 self-center`},p))},Dr=({url:e=void 0,label:t=void 0,logo:n=void 0,width:r=void 0,height:i=36,wrapperClassName:a=void 0,className:o=void 0,logoClassName:s=void 0,labelClassName:c=void 0})=>{let d=J(`brand`),f=l.default.createElement(l.default.Fragment,null,l.default.createElement(Er,{src:n||`data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZD0iTTUwIDE1IEw4NSA1MCBMNTAgODUgTDE1IDUwIFoiIGZpbGw9IiNjY2MiIG9wYWNpdHk9IjAuMiIvPjxwYXRoIGQ9Ik01MCAzMCBMNzAgNTAgTDUwIDcwIEwzMCA1MCBaIiBmaWxsPSIjY2NjIi8+PC9zdmc+`,width:r,height:i}),t&&l.default.createElement(`span`,{className:c||d.Brand.labelClassName},t));return l.default.createElement(Z,{className:a},l.default.createElement(`div`,{className:o||d.Brand.className},e?l.default.createElement(u.Link,{to:e,className:s||d.Brand.logoClassName},f):l.default.createElement(`span`,{className:s||d.Brand.logoClassName},f)))};function Or(e){let{items:t,rootItem:n,baseUrl:r,stringify:i=!1}=e,a={"@context":`https://schema.org`,"@type":`BreadcrumbList`,itemListElement:[...n?[n]:[],...t].map((e,t)=>({"@type":`ListItem`,position:t+1,name:e.label,...e.href?{item:`${r}${e.href}`}:{}}))};return i?JSON.stringify(a):a}function kr(e,t){if(Array.isArray(e))return e;let n=B(e||t).split(`/`).filter(Boolean),r=``,i=n.map(e=>(r+=`/${e}`,{label:e,href:r}));return i.length===0?i:[...i.slice(0,-1),{label:i[i.length-1].label}]}function Ar(e){if(e)return typeof e==`string`?{label:e}:e}var jr=()=>l.default.createElement(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0},l.default.createElement(`polyline`,{points:`9 18 15 12 9 6`})),Mr=({value:e})=>l.default.createElement(`span`,{className:`text-muted-foreground/60 select-none flex items-center`,"aria-hidden":!0},e===`chevron`?l.default.createElement(jr,null):e),Nr=({href:e,label:t})=>l.default.createElement(u.Link,{to:e,className:`text-muted-foreground hover:text-foreground transition-colors`},t),Pr=({label:e})=>l.default.createElement(`span`,{className:`text-foreground font-medium`,"aria-current":`page`},e),Fr=({trail:e=void 0,rootItem:t=void 0,separator:n=`/`,jsonLd:r=!1,baseUrl:i=void 0,className:a=void 0})=>{let o=kr(e,(0,u.useLocation)().pathname),s=Ar(t),c=[];if(s){let e=s.href?l.default.createElement(Nr,{href:s.href,label:s.label}):l.default.createElement(`span`,{className:`text-muted-foreground`},s.label);c.push({key:`__root`,node:e})}if(o.forEach((e,t)=>{let n=`${e.href??`__item`}-${t}`,r=e.node?e.node:e.href?l.default.createElement(Nr,{href:e.href,label:e.label}):l.default.createElement(Pr,{label:e.label});c.push({key:n,node:r})}),!c.length)return null;let d=r?Or({items:o,rootItem:s,baseUrl:i??(typeof window<`u`?window.location.origin:``),stringify:!0}):null;return l.default.createElement(l.default.Fragment,null,l.default.createElement(`nav`,{"aria-label":`Breadcrumb`,className:a},l.default.createElement(`ol`,{className:`flex flex-wrap items-center gap-1.5 text-sm`},c.map((e,t)=>l.default.createElement(l.default.Fragment,{key:e.key},t>0&&l.default.createElement(`li`,null,l.default.createElement(Mr,{value:n})),l.default.createElement(`li`,null,e.node))))),d&&l.default.createElement(`script`,{type:`application/ld+json`,dangerouslySetInnerHTML:{__html:d}}))},Ir=({children:e,showIndicators:t=!1,showControls:n=!1,showCaption:r=!1,dark:i=!1,autoPlay:a=void 0,initialSlide:o=0,renderCaption:s=void 0,onSlideClick:c=void 0})=>{let u=J(`carousel`),d=Y(`common`),f=l.default.Children.toArray(e).filter(l.default.isValidElement),p=f.length;t||=u.Carousel.showIndicators,n||=u.Carousel.showControls,r||=u.Carousel.showCaption,i||=u.Carousel.dark;let m=u.Carousel.autoPlay;a||=typeof m==`object`?m:void 0;let h=p>0?Math.min(Math.max(o,0),p-1):0,[g,_]=l.default.useState(!1),[v,y]=l.default.useState(h);l.default.useEffect(()=>{y(h)},[h]);let b=l.default.useCallback(e=>{if(!(p<=0)){if(a?.wrap??!0){let t=(e+p)%p;y(t);return}y(Math.min(Math.max(e,0),p-1))}},[a?.wrap,p]),x=l.default.useCallback(()=>b(v-1),[v,b]),S=l.default.useCallback(()=>b(v+1),[v,b]);l.default.useEffect(()=>{if(!a||p<=1||a.pause===`hover`&&g)return;let e=window.setInterval(()=>{y(e=>{let t=e+1;return t<p?t:a.wrap?0:e})},a.interval||2e3);return()=>window.clearInterval(e)},[a,g,p]);let C=e=>{if(!r)return null;if(s)return s(e);let{alt:t,description:n}=e.props;return!t&&!n?null:l.default.createElement(`div`,{className:X(`absolute inset-x-4 bottom-4 hidden rounded-lg px-4 py-3 md:block`,i?`bg-white/80 text-slate-900`:`bg-black/60 text-white`)},t&&l.default.createElement(`h5`,{className:`text-sm font-semibold`},t),n&&l.default.createElement(`p`,{className:`mt-1 text-sm opacity-90`},n))};return p===0?null:l.default.createElement(`div`,{className:`relative overflow-hidden rounded-xl`,onMouseEnter:()=>_(!0),onMouseLeave:()=>_(!1)},l.default.createElement(`div`,{className:X(`relative min-h-0`,c&&`cursor-pointer`),onClick:c},f.map((e,a)=>{let o=a===v;return l.default.createElement(`div`,{key:a,"aria-hidden":!o,className:X(`relative transition-opacity duration-300 ease-out`,o?`opacity-100`:`pointer-events-none absolute inset-0 opacity-0`)},e,(t||n||r)&&g&&l.default.createElement(`div`,{className:X(`pointer-events-none absolute inset-0 opacity-20`,i?`bg-white`:`bg-black`)}),g&&C(e))})),t&&p>1&&l.default.createElement(`ol`,{className:`absolute inset-x-0 bottom-4 z-10 flex items-center justify-center gap-2 px-4`},f.map((e,t)=>l.default.createElement(`li`,{key:t},l.default.createElement(`button`,{type:`button`,"aria-label":`${d.pageNavigation} ${t+1}`,"aria-current":t===v?`true`:void 0,onClick:()=>b(t),className:X(`h-2.5 w-2.5 rounded-full border transition-all`,t===v?`scale-110 border-white bg-white`:`border-white/60 bg-white/30 hover:bg-white/60`)})))),n&&g&&p>1&&l.default.createElement(l.default.Fragment,null,l.default.createElement(`button`,{type:`button`,"aria-label":d.previous,onClick:e=>{e.stopPropagation(),x()},className:`absolute left-3 top-1/2 z-10 inline-flex h-10 w-10 -translate-y-1/2 items-center justify-center rounded-full bg-background/85 text-foreground shadow-md transition-colors hover:bg-background`},l.default.createElement(Q,{name:`chevron-left`,size:18})),l.default.createElement(`button`,{type:`button`,"aria-label":d.next,onClick:e=>{e.stopPropagation(),S()},className:`absolute right-3 top-1/2 z-10 inline-flex h-10 w-10 -translate-y-1/2 items-center justify-center rounded-full bg-background/85 text-foreground shadow-md transition-colors hover:bg-background`},l.default.createElement(Q,{name:`chevron-right`,size:18}))))};function Lr({items:e=[],badge:t,seeAllUrl:n,onMarkAllRead:r,motion:i,className:a}){let o=Y(`notifications`),s=e.length>0,c=Ut(void 0,i??`fadeDown`,i??`fadeDown`);return l.default.createElement(yr,{trigger:l.default.createElement(Q,{name:`bell`,size:18}),triggerClassName:`flex items-center justify-center w-9 h-9 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors`,badge:t,position:`end`,placement:`auto`,menuClassName:`w-80`,motion:i,className:a},l.default.createElement(`div`,{className:`flex items-center justify-between px-3 py-2`},l.default.createElement(`span`,{className:`text-sm font-semibold text-foreground`},o.title||`Notifications`),s&&r&&l.default.createElement(`button`,{onClick:r,className:`text-xs text-primary hover:underline transition-colors`},`Mark all read`)),l.default.createElement(wr,null),!s&&l.default.createElement(`div`,{className:`flex flex-col items-center justify-center py-8 px-4 text-center`},l.default.createElement(`div`,{className:`w-10 h-10 rounded-full bg-muted flex items-center justify-center mb-3`},l.default.createElement(Q,{name:`bell-off`,size:18,className:`text-muted-foreground`})),l.default.createElement(`p`,{className:`text-sm font-medium text-foreground mb-1`},`No notifications`),l.default.createElement(`p`,{className:`text-xs text-muted-foreground`},`You're all caught up`)),e.map((e,t)=>l.default.createElement(u.Link,{key:t,to:e.url,className:`flex items-start gap-3 px-3 py-2.5 rounded-sm hover:bg-accent transition-colors`,style:{...c,transitionDelay:`${t*30}ms`}},l.default.createElement(`div`,{className:`mt-0.5 shrink-0 w-8 h-8 rounded-full flex items-center justify-center ${e.read?`bg-muted`:`bg-primary/10`}`},l.default.createElement(Q,{name:e.icon,size:15,className:e.read?`text-muted-foreground`:`text-primary`})),l.default.createElement(`div`,{className:`flex-1 min-w-0`},l.default.createElement(`p`,{className:`text-sm leading-snug ${e.read?`text-muted-foreground`:`text-foreground font-medium`}`},e.title),l.default.createElement(`p`,{className:`text-xs text-muted-foreground mt-0.5`},e.time)),!e.read&&l.default.createElement(`span`,{className:`mt-2 shrink-0 w-1.5 h-1.5 rounded-full bg-primary`}))),s&&n&&l.default.createElement(l.default.Fragment,null,l.default.createElement(wr,null),l.default.createElement(`div`,{className:`px-1 py-1`},l.default.createElement(u.Link,{to:n,className:`flex items-center justify-center w-full rounded-sm px-2 py-1.5 text-sm text-muted-foreground hover:text-foreground hover:bg-accent transition-colors`},o.seeAll||`See all notifications`,l.default.createElement(Q,{name:`arrow-right`,size:13,className:`ml-1.5 opacity-60`})))))}var Rr=()=>l.default.createElement(`div`,{className:`inline-flex`},l.default.createElement(u.Link,{to:`/#`,"data-toggle-class":`app-header-menu-search-toggled`,"data-toggle-target":`.app`,className:`inline-flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`},l.default.createElement(`div`,{className:`flex items-center justify-center`},l.default.createElement(Q,{name:`search`,className:`h-4 w-4`}))));function zr({onQueryChange:e=void 0}){let t=Y(`common`);return l.default.createElement(`div`,null,l.default.createElement(Rr,null),l.default.createElement(`input`,{className:`hidden`,type:`text`,placeholder:t.search,onChange:e}))}function Br(e){return e?`current`in e?e.current??window:e:window}function Vr(e){return e instanceof Window?e.scrollY:e.scrollTop}function Hr({leading:e=void 0,center:t=void 0,trailing:n=void 0,children:r=void 0,sticky:i=!0,elevateOnScroll:a=!0,scrollTarget:o=void 0,scrollThreshold:s=8,className:c=void 0,innerClassName:u=void 0,leadingClassName:d=void 0,centerClassName:f=void 0,trailingClassName:p=void 0}){let m=J(`toolbar`),h=t??r,[g,_]=(0,l.useState)(!1);(0,l.useEffect)(()=>{if(!a||typeof window>`u`){_(!1);return}let e=Br(o),t=()=>_(Vr(e)>s);return t(),e.addEventListener(`scroll`,t,{passive:!0}),()=>{e.removeEventListener(`scroll`,t)}},[a,o,s]);let v=(0,l.useMemo)(()=>X(`w-full border-b border-transparent transition-[background-color,border-color,box-shadow,backdrop-filter] duration-200`,m.Toolbar.wrapperClassName,i&&m.Toolbar.stickyClassName,a?g?m.Toolbar.scrolledClassName:m.Toolbar.restingClassName:m.Toolbar.scrolledClassName,c),[m,i,a,g,c]);return l.default.createElement(`header`,{className:v},l.default.createElement(`div`,{className:X(`flex min-h-14 items-center gap-3 px-4`,m.Toolbar.innerClassName,u)},e?l.default.createElement(`div`,{className:X(`flex min-w-0 items-center gap-2 shrink-0`,m.Toolbar.leadingClassName,d)},e):null,h?l.default.createElement(`div`,{className:X(`flex min-w-0 flex-1 items-center gap-3`,m.Toolbar.centerClassName,f)},h):l.default.createElement(`div`,{className:`flex-1`}),n?l.default.createElement(`div`,{className:X(`flex shrink-0 items-center gap-2`,m.Toolbar.trailingClassName,p)},n):null))}var Ur=[{label:`Blue`,value:`221.2 83.2% 53.3%`,hex:`#3b82f6`},{label:`Violet`,value:`262.1 83.3% 57.8%`,hex:`#8b5cf6`},{label:`Green`,value:`142.1 76.2% 36.3%`,hex:`#16a34a`},{label:`Rose`,value:`346.8 77.2% 49.8%`,hex:`#e11d48`},{label:`Orange`,value:`24.6 95% 53.1%`,hex:`#f97316`},{label:`Slate`,value:`215.4 16.3% 46.9%`,hex:`#64748b`}],Wr=[{label:`System`,fontSans:`-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif`,fontMono:`ui-monospace, 'SFMono-Regular', monospace`},{label:`Inter`,fontSans:`'Inter', sans-serif`,fontMono:`'JetBrains Mono', monospace`},{label:`Geist`,fontSans:`'Geist', sans-serif`,fontMono:`'Geist Mono', monospace`},{label:`Outfit`,fontSans:`'Outfit', sans-serif`,fontMono:`'JetBrains Mono', monospace`},{label:`Plus Jakarta Sans`,fontSans:`'Plus Jakarta Sans', sans-serif`,fontMono:`'Fira Code', monospace`},{label:`DM Sans`,fontSans:`'DM Sans', sans-serif`,fontMono:`'JetBrains Mono', monospace`},{label:`Nunito`,fontSans:`'Nunito', sans-serif`,fontMono:`'Fira Code', monospace`},{label:`Figtree`,fontSans:`'Figtree', sans-serif`,fontMono:`'Source Code Pro', monospace`},{label:`Poppins`,fontSans:`'Poppins', sans-serif`,fontMono:`'Fira Code', monospace`},{label:`Montserrat`,fontSans:`'Montserrat', sans-serif`,fontMono:`'Source Code Pro', monospace`}],Gr=[{label:`Success`,key:`success`,fgKey:`successForeground`,swatches:[{value:`142.1 76.2% 36.3%`,fgValue:`0 0% 100%`,hex:`#16a34a`},{value:`160 84% 39%`,fgValue:`0 0% 0%`,hex:`#10b981`},{value:`84 55% 46%`,fgValue:`0 0% 100%`,hex:`#65a30d`}]},{label:`Warning`,key:`warning`,fgKey:`warningForeground`,swatches:[{value:`32.1 94.6% 43.7%`,fgValue:`0 0% 100%`,hex:`#d97706`},{value:`24.6 95% 53.1%`,fgValue:`0 0% 100%`,hex:`#f97316`},{value:`45 96% 48%`,fgValue:`0 0% 0%`,hex:`#eab308`}]},{label:`Info`,key:`info`,fgKey:`infoForeground`,swatches:[{value:`198.6 88.7% 48.4%`,fgValue:`0 0% 100%`,hex:`#0ea5e9`},{value:`221.2 83.2% 53.3%`,fgValue:`0 0% 100%`,hex:`#3b82f6`},{value:`262.1 83.3% 57.8%`,fgValue:`0 0% 100%`,hex:`#8b5cf6`}]},{label:`Danger`,key:`destructive`,fgKey:`destructiveForeground`,swatches:[{value:`0 84.2% 60.2%`,fgValue:`0 0% 100%`,hex:`#ef4444`},{value:`346.8 77.2% 49.8%`,fgValue:`0 0% 100%`,hex:`#e11d48`},{value:`0 72% 51%`,fgValue:`0 0% 100%`,hex:`#dc2626`}]}],Kr=[{label:`Lucide`,value:`lucide`,description:`Clean outline icon set`},{label:`Phosphor`,value:`phosphor`,description:`Flexible icon weights and styles`}],qr=[{label:`Thin`,value:`thin`},{label:`Light`,value:`light`},{label:`Regular`,value:`regular`},{label:`Bold`,value:`bold`},{label:`Fill`,value:`fill`}];function Jr(e){return e.split(`-`).map(e=>e&&e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Yr({open:e=!0,onClose:t=void 0,surface:n=`flat`,showHeader:r=void 0,title:i=`Customize theme`,subtitle:a=`Live theme tokens and mode controls with no reload.`,headerActions:o=void 0,themeOptions:s=void 0,showModeSection:c=!0,showPrimarySection:u=!0,showRadiusSection:d=!0,showFontSection:f=!0,showStatusSection:p=!0,showThemeSection:m=!0,showIconLibrarySection:h=!0,className:g=void 0,wrapperClassName:_=void 0}){let{resolvedMode:v,primary:y,radius:b,fontSans:x,theme:S,colors:C,themes:w,toggleMode:T,setPrimary:E,setRadius:D,setFont:O,applyTheme:k,setTokens:A}=at(),{providerId:j,setProvider:M,registerProvider:N}=on(),P=j===`phosphor`?`phosphor`:`lucide`,F=(0,l.useMemo)(()=>Object.keys(w).map(e=>({value:e,label:s?.[e]?.label??Jr(e),description:s?.[e]?.description??`Theme available in the current registry.`})),[s,w]),I=r??n===`modal`,L=l.default.createElement(`div`,{className:`flex min-w-0 items-center justify-between gap-3`},l.default.createElement(`div`,{className:`min-w-0`},l.default.createElement(`h3`,{className:`truncate text-lg font-semibold leading-none`},i),a?l.default.createElement(`div`,{className:`mt-1 truncate text-sm text-muted-foreground`},a):null),o?l.default.createElement(`div`,{className:`flex shrink-0 items-center gap-2`},o):null),R=l.default.createElement(l.default.Fragment,null,c?l.default.createElement(`div`,null,l.default.createElement(`label`,{className:`mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground`},`Color mode`),l.default.createElement(`div`,{className:`flex gap-2`},[`light`,`dark`].map(e=>l.default.createElement(`button`,{key:e,type:`button`,onClick:()=>v!==e&&T(),className:`flex flex-1 cursor-pointer items-center justify-center gap-2 rounded-md border py-2 text-sm font-medium transition-colors ${v===e?`border-primary bg-primary/10 text-primary`:`border-border text-muted-foreground hover:bg-accent`}`},l.default.createElement(Q,{name:e===`light`?`sun`:`moon`,size:14}),e.charAt(0).toUpperCase()+e.slice(1))))):null,u?l.default.createElement(`div`,null,l.default.createElement(`label`,{className:`mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground`},`Primary color`),l.default.createElement(`div`,{className:`flex flex-wrap gap-2`},Ur.map(e=>l.default.createElement(`button`,{key:e.label,type:`button`,onClick:()=>E(e.value),title:e.label,className:`h-8 w-8 cursor-pointer rounded-full border-2 transition-transform hover:scale-110 ${y===e.value?`scale-110 border-foreground`:`border-transparent`}`,style:{backgroundColor:e.hex},"aria-label":e.label})))):null,d?l.default.createElement(`div`,null,l.default.createElement(`div`,{className:`mb-3 flex items-center justify-between`},l.default.createElement(`label`,{className:`text-xs font-semibold uppercase tracking-wider text-muted-foreground`},`Border radius`),l.default.createElement(`span`,{className:`text-xs font-mono text-muted-foreground`},b.toFixed(2),`rem`)),l.default.createElement(`input`,{type:`range`,min:0,max:1,step:.05,value:b,onChange:e=>D(parseFloat(e.target.value)),className:`w-full accent-primary`}),l.default.createElement(`div`,{className:`mt-1 flex justify-between text-xs text-muted-foreground`},l.default.createElement(`span`,null,`Sharp`),l.default.createElement(`span`,null,`Rounded`))):null,f?l.default.createElement(`div`,null,l.default.createElement(`label`,{className:`mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground`},`Font`),l.default.createElement(`div`,{className:`relative`},l.default.createElement(`select`,{value:(Wr.find(e=>e.fontSans===x)??Wr[0]).fontSans,onChange:e=>{let t=Wr.find(t=>t.fontSans===e.target.value);t&&O(t.fontSans,t.fontMono)},className:`w-full appearance-none rounded-md border border-border bg-background px-3 py-2 pr-8 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-ring`},Wr.map(e=>l.default.createElement(`option`,{key:e.label,value:e.fontSans},e.label))),l.default.createElement(Q,{name:`chevron-down`,size:14,className:`pointer-events-none absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground`}))):null,p?l.default.createElement(`div`,null,l.default.createElement(`label`,{className:`mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground`},`Status colors`),l.default.createElement(`div`,{className:`space-y-2`},Gr.map(({label:e,key:t,fgKey:n,swatches:r})=>l.default.createElement(`div`,{key:t,className:`flex items-center gap-2`},l.default.createElement(`span`,{className:`w-14 shrink-0 text-xs text-muted-foreground`},e),l.default.createElement(`div`,{className:`flex gap-1.5`},r.map(r=>l.default.createElement(`button`,{key:r.hex,type:`button`,onClick:()=>A({[t]:r.value,[n]:r.fgValue}),title:`${e} - ${r.hex}`,className:`h-6 w-6 cursor-pointer rounded-full border-2 transition-transform hover:scale-110 ${C?.[t]===r.value?`scale-110 border-foreground`:`border-transparent`}`,style:{backgroundColor:r.hex},"aria-label":`${e} ${r.hex}`}))))))):null,m?l.default.createElement(`div`,null,l.default.createElement(`label`,{className:`mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground`},`Theme`),l.default.createElement(`div`,{className:`space-y-2`},F.map(e=>l.default.createElement(`button`,{key:e.value,type:`button`,onClick:()=>k(e.value),className:`w-full cursor-pointer rounded-md border px-3 py-2.5 text-left text-sm transition-colors ${S===e.value?`border-primary bg-primary/10`:`border-border hover:bg-accent`}`},l.default.createElement(`span`,{className:`font-medium ${S===e.value?`text-primary`:`text-foreground`}`},e.label),l.default.createElement(`span`,{className:`mt-0.5 block text-xs text-muted-foreground`},e.description))))):null,h?l.default.createElement(`div`,null,l.default.createElement(`label`,{className:`mb-3 block text-xs font-semibold uppercase tracking-wider text-muted-foreground`},`Icon library`),l.default.createElement(`div`,{className:`space-y-2`},Kr.map(e=>l.default.createElement(`button`,{key:e.value,type:`button`,onClick:()=>M(e.value),className:`w-full cursor-pointer rounded-md border px-3 py-2.5 text-left text-sm transition-colors ${P===e.value?`border-primary bg-primary/10`:`border-border hover:bg-accent`}`},l.default.createElement(`span`,{className:`flex items-center gap-2 font-medium ${P===e.value?`text-primary`:`text-foreground`}`},l.default.createElement(Q,{name:`palette`,size:12}),e.label),l.default.createElement(`span`,{className:`mt-0.5 block text-xs text-muted-foreground`},e.description)))),P===`phosphor`?l.default.createElement(`div`,{className:`mt-3`},l.default.createElement(`p`,{className:`mb-2 text-xs text-muted-foreground`},`Weight`),l.default.createElement(`div`,{className:`flex flex-wrap gap-1`},qr.map(e=>l.default.createElement(`button`,{key:e.value,type:`button`,onClick:()=>{N(`phosphor`,new Yt(e.value)),M(`phosphor`)},className:`cursor-pointer rounded border border-border px-2 py-1 text-xs transition-colors hover:bg-accent`},e.label)))):null,l.default.createElement(`div`,{className:`mt-3 flex items-center gap-3 px-1`},[`sun`,`moon`,`bell`,`settings`,`search`,`trash`].map(e=>l.default.createElement(Q,{key:e,name:e,size:16,className:`text-muted-foreground`})))):null),z=l.default.createElement(`div`,{className:X(`space-y-6`,n===`flat`&&`rounded-xl border border-border/60 bg-card p-5`,g)},n===`flat`&&I?l.default.createElement(`div`,{className:`border-b border-border/60 pb-4`},L):null,R);return n===`modal`?e?l.default.createElement(mr,{position:`right`,header:I?L:void 0,onClose:t,allowFullscreen:!1,headerClassName:`h-14 !py-0 px-4`,className:g,wrapperClassName:_},l.default.createElement(`div`,{className:`space-y-6`},R)):null:l.default.createElement(`div`,{className:_},z)}var Xr=(0,l.createContext)(null),Zr=({registries:e,setProvider:t,children:n})=>l.default.createElement(Xr.Provider,{value:{registries:e,setProvider:t}},n),Qr=()=>{let e=(0,l.useContext)(Xr);if(!e)throw Error(`useSetProvider/useProvider must be used inside <App>.`);return e},$r=()=>Qr().setProvider,ei=(e,t)=>{let{registries:n}=Qr(),r=n[e],i=t??r?.defaultKey,a=i?r?.registry[i]:void 0;if(!a)throw Error(`Provider '${i??e}' is not registered in category '${e}'. Available: ${Object.keys(r?.registry??{}).join(`, `)}`);return a},ti=void 0,ni=(0,l.createContext)(null),ri=(0,l.createContext)(()=>{}),ii=new Set,ai=e=>{ii.add(e),ti&&e(ti,null)},oi=({children:e,defaultConfig:t})=>{let[n,r]=(0,l.useState)(si(t)),i=(0,l.useRef)(null);return(0,l.useEffect)(()=>{let e=i.current;if(e!==n){ti=n;for(let t of ii)t(n,e)}i.current=n},[n]),l.default.createElement(ni.Provider,{value:n},l.default.createElement(ri.Provider,{value:r},l.default.createElement(jn,null,e)))},si=e=>{ti=e;for(let e of ii)e(ti,null);return ti},ci=ti?.google;typeof ai==`function`&&ai(e=>{ci=e.google});var li=e=>ci?.[e],ui=`scrape`,di=`[DEFAULT]`,fi=new Map,pi=(e,t=di)=>{fi.set(t,e)},mi=(e=di)=>Hn(`FirebaseProvider`,Vn(fi.get(e),[`apiKey`,`authDomain`,`databaseURL`,`projectId`,`storageBucket`,`messagingSenderId`,`appId`],`firebase.`)),hi=(e=di)=>Hn(`FirestoreProvider`,Vn(fi.get(e),[`apiKey`,`authDomain`,`projectId`,`appId`],`firebase.`)),gi=(e=di)=>{try{return e===di?(0,_.getAuth)():(0,_.getAuth)((0,g.getApp)(e))}catch(e){return console.error(`FirebaseAuthorization`,e instanceof Error?e.message:`Error: check Configuration`),null}},_i=async e=>{let t=gi();if(!t)return!1;try{return await(0,_.setPersistence)(t,_.inMemoryPersistence),await(0,_.signInWithCustomToken)(t,e),!0}catch(e){let n=t.app.options?.apiKey;return console.error(`Firebase custom token sign-in error: `,e,`— app "${t.app.name}" options.apiKey: ${n?`${n.slice(0,6)}… (len ${n.length})`:String(n)}`),!1}},vi=async(e,t=di)=>{pi(e,t);let n=(0,g.getApps)().find(e=>e.name===t);if(n){if(n.options?.appId===e.appId)return`${t}`,n;await(0,g.deleteApp)(n)}return t===di?(0,g.initializeApp)(e):(0,g.initializeApp)(e,t)};async function yi(e,t,n=di,r){let{getFunctions:i,httpsCallable:a}=await import(`firebase/functions`),{data:o}=await a(i(n===di?(0,g.getApp)():(0,g.getApp)(n),r),e)(t);return o}var bi=`_key`,xi=e=>e.replace(/^\/+|\/+$/g,``),Si=e=>xi(e).split(`/`).filter(Boolean),Ci=e=>Si(e).length%2==0,wi=(e,t,n)=>{let r=`Error during ${e}: ${String(t)}`;if(n)throw Error(r);console.error(r)},Ti={eq:`==`,lt:`<`,lte:`<=`,gt:`>`,gte:`>=`,in:`in`,nin:`not-in`},Ei=(e,t)=>{let n=[];if(e)for(let[t,r]of Object.entries(e)){let e=typeof r==`object`&&r&&!Array.isArray(r)?r:Array.isArray(r)?{in:r}:{eq:r};for(let[r,i]of Object.entries(e)){let e=Ti[r];e&&n.push((0,v.where)(t,e,i))}}if(t)for(let[e,r]of Object.entries(t))n.push((0,v.orderBy)(e,r));return n},Di=`@key`,Oi=(e,t)=>{if(!t)return e.docs.map((e,t)=>({[bi]:e.id,_index:t,...e.data()}));let n=Object.keys(t);return e.docs.map((e,r)=>{let i={[Di]:e.id,...e.data()},a={};for(let r of n){let n=t[r];a[r]=n.includes(`{`)?N.parse(i,n):n===Di?e.id:i[n]}return{[bi]:e.id,_index:r,...a}})},ki=e=>Object.fromEntries(e.map(e=>[e[bi],e])),Ai=class e{static listenerRegistered=!1;databaseId;constructor(t={}){this.databaseId=t.databaseId,!e.listenerRegistered&&typeof ai==`function`&&(e.listenerRegistered=!0,ai(e=>{e.firebase&&vi(e.firebase)}))}getDb=()=>this.databaseId?(0,v.getFirestore)((0,g.getApp)(),this.databaseId):(0,v.getFirestore)();dispose=async()=>{try{await(0,v.terminate)(this.getDb())}catch{}};getConfigurationState(){return hi()}isConfigured(){return this.getConfigurationState().configured}read=async(e,{where:t,order:n,toArray:r=!1,exception:i=!1}={})=>{let a=xi(e);try{let o=this.getDb();if(Ci(e)){let t=await(0,v.getDoc)((0,v.doc)(o,a));if(!t.exists()){if(i)throw Error(`Document not found: ${e}`);return}return`${e}`,{[bi]:t.id,...t.data()}}let s=Ei(t,n),c=await(0,v.getDocs)(s.length?(0,v.query)((0,v.collection)(o,a),...s):(0,v.collection)(o,a));`${c.size}${e}`;let l=Oi(c);return r?l:ki(l)}catch(t){wi(`reading data in Firestore for ${e}`,t,i)}};set=async(e,t,n=!1)=>{let r=xi(e);try{let n=this.getDb();Ci(e)?await(0,v.setDoc)((0,v.doc)(n,r),t):await(0,v.addDoc)((0,v.collection)(n,r),t),`${e}`}catch(t){wi(`setting data in Firestore for ${e}`,t,n)}};update=async(e,t,n=!1)=>{let r=xi(e);try{let n=this.getDb();Ci(e)?await(0,v.updateDoc)((0,v.doc)(n,r),t):await(0,v.addDoc)((0,v.collection)(n,r),t),`${e}`}catch(t){wi(`updating data in Firestore for ${e}`,t,n)}};remove=async(e,t=!1)=>{let n=xi(e);try{let t=this.getDb();if(Ci(e))await(0,v.deleteDoc)((0,v.doc)(t,n));else throw Error(`Deleting an entire collection is not supported. Remove individual documents.`);`${e}`}catch(n){wi(`removing data in Firestore for ${e}`,n,t)}};count=async e=>{if(Ci(e))return 1;let t=this.getDb();try{return(await(0,v.getCountFromServer)((0,v.collection)(t,xi(e)))).data().count}catch{return(await(0,v.getDocs)((0,v.collection)(t,xi(e)))).size}};subscribe=(e,t,{where:n,order:r,fieldMap:i,onLoad:a}={})=>{let o=gi();if(!o||!e)return()=>void 0;let s=()=>{let o=this.getDb(),s=xi(e);if(Ci(e))return(0,v.onSnapshot)((0,v.doc)(o,s),e=>{if(!e.exists()){t([]);return}t([{[bi]:e.id,_index:0,...e.data()}])},e=>console.error(`Firestore onSnapshot error:`,e));let c=Ei(n,r);return(0,v.onSnapshot)(c.length?(0,v.query)((0,v.collection)(o,s),...c):(0,v.collection)(o,s),e=>{if(e.metadata?.fromCache&&e.size===0)return;let n=Oi(e,i);if(a){let e=a(ki(n));t(Object.entries(e).map(([e,t],n)=>({[bi]:e,_index:n,...typeof t==`object`&&t?t:{}})))}else t(n)},e=>console.error(`Firestore onSnapshot error:`,e))},c,l=(0,_.onAuthStateChanged)(o,e=>{c?.(),c=void 0,e?c=s():t([])});return()=>{c?.(),l()}};readShallow=async(e,t=!1)=>{let n=xi(e);try{let t=this.getDb();if(Ci(e)){let e=await(0,v.getDoc)((0,v.doc)(t,n));return e.exists()?Object.keys(e.data()??{}):[]}return(await(0,v.getDocs)((0,v.collection)(t,n))).docs.map(e=>e.id)}catch(n){return wi(`reading shallow data in Firestore for ${e}`,n,t??!1),[]}};setChunks=async(e,t,{chunkSize:n=500,purge:r=!1,onProgress:i}={})=>{let a=xi(e),o=Math.min(n,500);try{let n=this.getDb();if(r){i?.(0,0,`Purging existing data at ${e}`);let t=(await(0,v.getDocs)((0,v.collection)(n,a))).docs.map(e=>e.id);for(let e=0;e<t.length;e+=o){let r=(0,v.writeBatch)(n);t.slice(e,e+o).forEach(e=>r.delete((0,v.doc)(n,a,e))),await r.commit()}}let s=Object.entries(t),c=Math.ceil(s.length/o);for(let e=0;e<s.length;e+=o){let t=(0,v.writeBatch)(n);s.slice(e,e+o).forEach(([e,r])=>{t.set((0,v.doc)(n,a,e),r)}),await t.commit();let r=Math.floor(e/o)+1;i?.(r,c,`Saving batch ${r}/${c}`)}`${e}${s.length}`}catch(t){wi(`setting data in chunks in Firestore for ${e}`,t,!1)}}},ji=new Map;function Mi(e,t){return ji.has(e)||ji.set(e,(0,y.createClient)(e,t)),ji.get(e)}function Ni(e,t,n){return(0,y.createClient)(e,t,{auth:{persistSession:!1,autoRefreshToken:!1,detectSessionInUrl:!1},global:n?{headers:{Authorization:`Bearer ${n}`}}:void 0})}async function Pi(e){await e.removeAllChannels()}function Fi(e){return Hn(`Supabase`,Vn(e,[`url`,`anonKey`],`supabase.`))}var Ii=e=>e.replace(/^\/+|\/+$/g,``);function Li(e){let t=Ii(e).split(`/`).filter(Boolean);return{table:t[0]??``,id:t.length>=2?t.slice(1).join(`/`):null}}function Ri(e,t,n){let r=`SupabaseDataProvider.${e}: ${t instanceof Error?t.message:String(t)}`;if(n)throw Error(r);console.error(r)}function zi(e,t){for(let[n,r]of Object.entries(t))if(r==null)e=e.is(n,null);else if(typeof r!=`object`||Array.isArray(r))e=e.eq(n,r);else{let t=r;t.eq!==void 0&&(e=e.eq(n,t.eq)),t.lt!==void 0&&(e=e.lt(n,t.lt)),t.lte!==void 0&&(e=e.lte(n,t.lte)),t.gt!==void 0&&(e=e.gt(n,t.gt)),t.gte!==void 0&&(e=e.gte(n,t.gte)),t.in&&(e=e.in(n,t.in)),t.nin&&(e=e.not(n,`in`,t.nin))}return e}function Bi(e,t){for(let[n,r]of Object.entries(t))e=e.order(n,{ascending:r===`asc`});return e}function Vi(e,t,n){let{_key:r,_index:i,...a}=e;return t&&(a[n]=t),a}function Hi(e,t,n=0){return{...e,[bi]:String(e[t]??n),_index:n}}var Ui=class{config;get pk(){return this.config.primaryKey??`id`}scopedClient;get client(){return this.config.accessToken?(this.scopedClient||=Ni(this.config.url,this.config.anonKey,this.config.accessToken),this.scopedClient):Mi(this.config.url,this.config.anonKey)}constructor(e){this.config=e}dispose=async()=>{this.scopedClient&&await Pi(this.scopedClient)};getConfigurationState(){return Fi(this.config)}isConfigured(){return this.getConfigurationState().configured}read=async(e,t={})=>{let{table:n,id:r}=Li(e);if(n)try{if(r){let{data:e,error:t}=await this.client.from(n).select(`*`).eq(this.pk,r).maybeSingle();if(t)throw t;return e?Hi(e,this.pk):void 0}let e=this.client.from(n).select(`*`);t.where&&(e=zi(e,t.where)),t.order&&(e=Bi(e,t.order));let{data:i,error:a}=await e;if(a)throw a;if(!i||i.length===0)return t.toArray?[]:{};let o=i.map((e,t)=>Hi(e,this.pk,t));return t.toArray?o:Object.fromEntries(o.map(e=>[String(e[this.pk]??e._key),e]))}catch(e){return Ri(`read`,e,t.exception??!1),t.toArray?[]:void 0}};set=async(e,t,n=!1)=>{let{table:r,id:i}=Li(e);if(!r){Ri(`set`,`path must include a table name`,n);return}try{let e=Vi(t,i,this.pk),{error:n}=await this.client.from(r).upsert(e,{onConflict:this.pk});if(n)throw n}catch(e){Ri(`set`,e,n)}};update=async(e,t,n=!1)=>{let{table:r,id:i}=Li(e);if(!r){Ri(`update`,`path must include a table name`,n);return}try{let{_key:e,_index:n,...a}=t;if(i){let{data:e}=await this.client.from(r).select(`*`).eq(this.pk,i).maybeSingle(),t={...e??{},...a,[this.pk]:i},{error:n}=await this.client.from(r).upsert(t,{onConflict:this.pk});if(n)throw n}else{let{error:e}=await this.client.from(r).insert(a);if(e)throw e}}catch(e){Ri(`update`,e,n)}};remove=async(e,t=!1)=>{let{table:n,id:r}=Li(e);if(!n||!r){Ri(`remove`,`path must include both table and id`,t);return}try{let{error:e}=await this.client.from(n).delete().eq(this.pk,r);if(e)throw e}catch(e){Ri(`remove`,e,t)}};subscribe=(e,t,n={})=>{if(!e)return()=>void 0;let{table:r}=Li(e);if(!r)return()=>void 0;let i=null,a=!0,o=async()=>{if(a)try{let e=this.client.from(r).select(`*`);n.where&&(e=zi(e,n.where)),n.order&&(e=Bi(e,n.order));let{data:i}=await e;if(!a)return;t((i??[]).map((e,t)=>Hi(e,this.pk,t)))}catch{t([])}};o();try{i=this.client.channel(`llmnative:${r}`).on(`postgres_changes`,{event:`*`,schema:`public`,table:r},()=>void o()).subscribe()}catch{}return()=>{a=!1,i&&=(this.client.removeChannel(i).catch(()=>{}),null)}};count=async e=>{let{table:t}=Li(e);if(!t)return 0;try{let{count:e,error:n}=await this.client.from(t).select(`*`,{count:`exact`,head:!0});if(n)throw n;return e??0}catch(e){return console.error(`SupabaseDataProvider.count:`,e),0}};setChunks=async(e,t,n={})=>{let{table:r}=Li(e);if(!r)return;let{chunkSize:i=500,purge:a=!1,onProgress:o}=n,s=Object.entries(t);try{a&&await this.client.from(r).delete().neq(this.pk,`__purge_all__`);for(let e=0;e<s.length;e+=i){let t=s.slice(e,e+i).map(([e,t])=>Vi(t,e,this.pk)),{error:n}=await this.client.from(r).upsert(t,{onConflict:this.pk});if(n)throw n;o?.(Math.min(e+i,s.length),s.length,`Wrote ${Math.min(e+i,s.length)}/${s.length}`)}}catch(e){throw console.error(`SupabaseDataProvider.setChunks:`,e),e}}},Wi={key:`@key`,value:`@value`};function Gi(e,t){if(!t)return e;let n=t.split(`.`),r=e;for(let e of n){if(r==null)return;r=r[e]}return r}function Ki(e,t){return e===t?0:e==null?-1:t==null?1:typeof e==`number`&&typeof t==`number`?e-t:typeof e==`boolean`&&typeof t==`boolean`?Number(e)-Number(t):globalThis.String(e).localeCompare(globalThis.String(t),void 0,{numeric:!0,sensitivity:`base`})}function qi(e,t){let n=typeof t==`object`&&t&&!Array.isArray(t)?t:{eq:t};for(let[t,r]of Object.entries(n))switch(t){case`eq`:if(e!==r)return!1;break;case`gt`:if(!(e>r))return!1;break;case`gte`:if(!(e>=r))return!1;break;case`lt`:if(!(e<r))return!1;break;case`lte`:if(!(e<=r))return!1;break;case`in`:if(!Array.isArray(r)||!r.includes(e))return!1;break;case`nin`:if(Array.isArray(r)&&r.includes(e))return!1;break;default:return!1}return!0}function Ji(e,t,n){let r=Object.entries(n||{}),i=Object.entries(t||{}),a=Object.entries(e);return i.length&&(a=a.filter(([,e])=>i.every(([t,n])=>qi(Gi(e,t),n)))),r.length&&a.sort((e,t)=>{for(let[n,i]of r){let r=Ki(Gi(e[1],n),Gi(t[1],n));if(r)return i===`desc`?-r:r}return 0}),Object.fromEntries(a)}function Yi(e,t){let n=Object.entries(e);if(!t)return n.map(([e,t],n)=>typeof t==`object`&&t?{_index:n,[bi]:e,...t}:{_index:n,[bi]:e,[Wi.value]:t});let r=Object.keys(t);return n.map(([e,n],i)=>{let a=typeof n==`object`&&n?{[Wi.key]:e,...n}:{[Wi.key]:e,[Wi.value]:n},o={};for(let i of r){let r=t[i];o[i]=r.includes(`{`)?N.parse(a,r):r===Wi.key?e:r===Wi.value?n:a[r]}return{[bi]:e,_index:i,...o}})}var Xi=class{store={};listeners=new Map;persistKey;constructor(e,t){this.persistKey=t?.persist?t.storageKey??`llmnative:mock`:null;let n=this.persistKey?this.loadStore()??e:e;if(n)for(let[e,t]of Object.entries(n)){let n=e.startsWith(`/`)?e:`/${e}`;this.store[n]={...t}}}loadStore(){if(!this.persistKey||typeof window>`u`)return null;try{let e=window.localStorage.getItem(this.persistKey);if(!e)return null;let t=JSON.parse(e);return typeof t==`object`&&t&&!Array.isArray(t)?t:null}catch{return null}}saveStore(){if(!(!this.persistKey||typeof window>`u`))try{window.localStorage.setItem(this.persistKey,JSON.stringify(this.store))}catch{}}isConfigured(){return!0}getConfigurationState(){return{configured:!0}}getCollection(e){return this.store[e]||(this.store[e]={}),this.store[e]}resolvePath(e){let t=e.startsWith(`/`)?e:`/${e}`;if(this.store[t])return{collection:t};let n=Object.keys(this.store).filter(e=>t.startsWith(`${e}/`)).sort((e,t)=>t.length-e.length)[0];if(n)return{collection:n,id:t.slice(n.length+1)};let r=t.replace(/^\/+/,``).split(`/`).filter(Boolean);return r.length<=1?{collection:t}:{collection:`/${r.slice(0,-1).join(`/`)}`,id:r[r.length-1]}}notify(e){this.listeners.get(e)?.forEach(e=>e())}read=async(e,t={})=>{let{collection:n,id:r}=this.resolvePath(e),i=this.getCollection(n);if(r)return i[r]?{...i[r]}:void 0;let a=Ji(i,t.where,t.order);return t.toArray?Object.values(a).map(e=>({...e})):Object.fromEntries(Object.entries(a).map(([e,t])=>[e,{...t}]))};set=async(e,t)=>{let{collection:n,id:r}=this.resolvePath(e),i=this.getCollection(n);r?i[r]={...t}:this.store[n]={...t},this.saveStore(),this.notify(n)};update=async(e,t)=>{let{collection:n,id:r}=this.resolvePath(e),i=this.getCollection(n);r?i[r]={...i[r]||{},...t}:this.store[n]={...i,...t},this.saveStore(),this.notify(n)};remove=async e=>{let{collection:t,id:n}=this.resolvePath(e);n?delete this.getCollection(t)[n]:delete this.store[t],this.saveStore(),this.notify(t)};subscribe=(e,t,n)=>{if(!e)return()=>void 0;let r=e.startsWith(`/`)?e:`/${e}`,i=()=>{let e=Ji(this.getCollection(r),n?.where,n?.order);t(Yi(n?.onLoad?n.onLoad(e):e,n?.fieldMap))};return i(),this.listeners.has(r)||this.listeners.set(r,new Set),this.listeners.get(r).add(i),()=>{this.listeners.get(r)?.delete(i)}}};function Zi(e,t){let n=e.split(`.`).pop()?.toLowerCase()??``;return(Array.isArray(t)?t.map(e=>e.toLowerCase().replace(/^\./,``)):[t.toLowerCase().replace(/^\./,``)]).includes(n)}function Qi(e,t){let n=e;return t.filterByExtension!==void 0&&(n=n.filter(e=>e.isFolder||Zi(e.name,t.filterByExtension))),t.limit!==void 0&&t.limit>0&&(n=n.slice(0,t.limit)),n}var $i=e=>e?(0,b.getStorage)((0,g.getApp)(),e):(0,b.getStorage)(),ea=e=>({name:e.name,path:e.fullPath}),ta=async e=>{try{let t=await(0,b.getMetadata)(e);return{name:e.name,path:e.fullPath,size:t.size,contentType:t.contentType,updatedAt:t.updated}}catch{return ea(e)}},na=class e{static listenerRegistered=!1;defaultBucket;constructor(t={}){this.defaultBucket=t.defaultBucket,!e.listenerRegistered&&typeof ai==`function`&&(e.listenerRegistered=!0,ai(e=>{e.firebase&&vi(e.firebase)}))}resolveBucket=e=>e??this.defaultBucket;getConfigurationState(){return mi()}isConfigured(){return this.getConfigurationState().configured}upload=async(e,t,n={})=>{if(e)try{let r=(0,b.ref)($i(this.resolveBucket(n.bucket)),t);return typeof e==`string`?await(0,b.getDownloadURL)((await(0,b.uploadString)(r,e,`data_url`)).ref):await new Promise((t,i)=>{let a=n.contentType?{contentType:n.contentType}:e instanceof File&&e.type?{contentType:e.type}:void 0,o=(0,b.uploadBytesResumable)(r,e,a);n.onProgress&&o.on(`state_changed`,e=>{let t=e.totalBytes>0?Math.round(e.bytesTransferred/e.totalBytes*100):0;n.onProgress(t)}),o.then(async e=>t(await(0,b.getDownloadURL)(e.ref))).catch(i)})}catch(e){console.error(`[FirebaseStorage] upload error:`,e)}};createUpload=(e,t,n={})=>{let r=(0,b.ref)($i(this.resolveBucket(n.bucket)),t);if(typeof e==`string`){let t=!1;return{url:(async()=>{if(!t)try{return await(0,b.getDownloadURL)((await(0,b.uploadString)(r,e,`data_url`)).ref)}catch{return}})(),pause:()=>{},resume:()=>{},cancel:()=>{t=!0}}}let i=(0,b.uploadBytesResumable)(r,e,n.contentType?{contentType:n.contentType}:e instanceof File&&e.type?{contentType:e.type}:void 0);return n.onProgress&&i.on(`state_changed`,e=>{let t=e.totalBytes>0?Math.round(e.bytesTransferred/e.totalBytes*100):0;n.onProgress(t)}),{url:(async()=>{try{return await(0,b.getDownloadURL)((await i).ref)}catch{return}})(),pause:()=>{i.pause()},resume:()=>{i.resume()},cancel:()=>{i.cancel()}}};rename=async(e,t,n={})=>await this.move(e,t,n)>0;move=async(e,t,n={})=>{if(n.recursive){let r=await this.list(e,{bucket:n.bucket,recursive:!0}),i=e.endsWith(`/`)?e:`${e}/`;return(await Promise.all(r.map(async r=>{let a=`${t}/${r.path.startsWith(i)?r.path.slice(i.length):r.path.slice(e.length)}`;return this._moveFile(r.path,a,n)}))).filter(Boolean).length}return+!!await this._moveFile(e,t,n)};_moveFile=async(e,t,n)=>{try{let r=await this.download(e,n);if(!r)return!1;let i=await this.getFileInfo(e,n);return await this.upload(r,t,{bucket:n.destBucket??n.bucket,contentType:i?.contentType})?(await this.delete(e,{bucket:n.bucket}),!0):!1}catch(n){return console.error(`[FirebaseStorage] move error ${e} → ${t}:`,n),!1}};getURL=async(e,t={})=>{try{return await(0,b.getDownloadURL)((0,b.ref)($i(this.resolveBucket(t.bucket)),e))}catch(t){console.error(`[FirebaseStorage] getURL error for ${e}:`,t)}};getFileInfo=async(e,t={})=>{try{let n=(0,b.ref)($i(this.resolveBucket(t.bucket)),e),r=await(0,b.getMetadata)(n);return{name:n.name,path:n.fullPath,size:r.size,contentType:r.contentType,updatedAt:r.updated}}catch(t){if(t.code===`storage/object-not-found`)return;console.error(`[FirebaseStorage] getFileInfo error for ${e}:`,t);return}};download=async(e,t={})=>{let n=await this.getURL(e,t);if(n)try{let e=await fetch(n);if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.blob()}catch(t){console.error(`[FirebaseStorage] download error for ${e}:`,t)}};delete=async(e,t={})=>{if(t.recursive)return this._deleteFolder(e,t);try{return await(0,b.deleteObject)((0,b.ref)($i(this.resolveBucket(t.bucket)),e)),1}catch(t){return t.code===`storage/object-not-found`||console.error(`[FirebaseStorage] delete error for ${e}:`,t),0}};_deleteFolder=async(e,t)=>{try{let{items:n,prefixes:r}=await(0,b.listAll)((0,b.ref)($i(this.resolveBucket(t.bucket)),e)),i=0;await Promise.all(n.map(async e=>{try{await(0,b.deleteObject)(e),i++}catch(t){t.code!==`storage/object-not-found`&&console.error(`[FirebaseStorage] delete failed for ${e.fullPath}:`,t)}}));let a=await Promise.all(r.map(e=>this._deleteFolder(e.fullPath,t)));return i+a.reduce((e,t)=>e+t,0)}catch(t){return console.error(`[FirebaseStorage] deleteFolder error for ${e}:`,t),0}};list=async(e,t={})=>Qi(await this._listLevel(e,t),t);_listLevel=async(e,t)=>{let n=t.includeFiles!==!1,r=t.includeFolders===!0;try{let{items:i,prefixes:a}=await(0,b.listAll)((0,b.ref)($i(this.resolveBucket(t.bucket)),e)),o=n?t.metadata?await Promise.all(i.map(ta)):i.map(ea):[],s=r?a.map(e=>({name:e.name,path:e.fullPath,isFolder:!0})):[],c=[...o,...s];if(!t.recursive||a.length===0)return c;let l=await Promise.all(a.map(e=>this._listLevel(e.fullPath,t)));return[...c,...l.flat()]}catch(t){return console.error(`[FirebaseStorage] list error for ${e}:`,t),[]}}};new na;var ra=class{config;constructor(e){this.config=e}getConfigurationState(){return Hn(`SupabaseStorageProvider`,Vn(this.config,[`url`,`anonKey`],`supabase.`))}isConfigured(){return this.getConfigurationState().configured}resolveBucket(e){return e??this.config.bucket??`public`}authHeaders(){return{apikey:this.config.anonKey,Authorization:`Bearer ${this.config.accessToken??this.config.anonKey}`}}upload=async(e,t,n={})=>{let r=this.resolveBucket(n.bucket),i,a=n.contentType;if(typeof e==`string`){let[t,n]=e.split(`,`);a??=t.match(/:(.*?);/)?.[1];let r=atob(n),o=new Uint8Array(r.length);for(let e=0;e<r.length;e++)o[e]=r.charCodeAt(e);i=new Blob([o],a?{type:a}:void 0)}else i=e,e instanceof File&&(a??=e.type||void 0);let o=await fetch(`${this.config.url}/storage/v1/object/${r}/${t}`,{method:`POST`,headers:{...this.authHeaders(),...a?{"Content-Type":a}:{}},body:i});if(!o.ok){console.error(`[SupabaseStorage] upload error:`,await o.text());return}return this.getURL(t,{bucket:r})};createUpload=(e,t,n={})=>{let r=new AbortController,i=this.resolveBucket(n.bucket);return{url:(async()=>{let a,o=n.contentType;if(typeof e==`string`){let[t,n]=e.split(`,`);o??=t.match(/:(.*?);/)?.[1];let r=atob(n),i=new Uint8Array(r.length);for(let e=0;e<r.length;e++)i[e]=r.charCodeAt(e);a=new Blob([i],o?{type:o}:void 0)}else a=e,e instanceof File&&(o??=e.type||void 0);try{return(await fetch(`${this.config.url}/storage/v1/object/${i}/${t}`,{method:`POST`,headers:{...this.authHeaders(),...o?{"Content-Type":o}:{}},body:a,signal:r.signal})).ok?this.getURL(t,{bucket:i}):void 0}catch{return}})(),pause:()=>{},resume:()=>{},cancel:()=>r.abort()}};rename=async(e,t,n={})=>await this.move(e,t,n)>0;move=async(e,t,n={})=>{if(n.recursive){let r=await this.list(e,{bucket:n.bucket,recursive:!0}),i=e.endsWith(`/`)?e:`${e}/`;return(await Promise.all(r.map(async r=>{let a=`${t}/${r.path.startsWith(i)?r.path.slice(i.length):r.path.slice(e.length)}`;return this._moveFile(r.path,a,n)}))).filter(Boolean).length}return+!!await this._moveFile(e,t,n)};_moveFile=async(e,t,n)=>{let r=this.resolveBucket(n.bucket),i=this.resolveBucket(n.destBucket??n.bucket);try{return(await fetch(`${this.config.url}/storage/v1/object/move`,{method:`POST`,headers:{...this.authHeaders(),"Content-Type":`application/json`},body:JSON.stringify({bucketId:r,sourceKey:e,destinationBucket:i,destinationKey:t})})).ok}catch(n){return console.error(`[SupabaseStorage] move error ${e} → ${t}:`,n),!1}};getURL=async(e,t={})=>{let n=this.resolveBucket(t.bucket);return`${this.config.url}/storage/v1/object/public/${n}/${e}`};getFileInfo=async(e,t={})=>{let n=e.split(`/`),r=n.pop(),i=n.join(`/`);return(await this.list(i,{...t,metadata:!0})).find(e=>e.name===r)};download=async(e,t={})=>{let n=await this.getURL(e,t);if(n)try{let e=await fetch(n);if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.blob()}catch(t){console.error(`[SupabaseStorage] download error for ${e}:`,t)}};delete=async(e,t={})=>{let n=this.resolveBucket(t.bucket),r;if(t.recursive){let n=await this.list(e,{...t,recursive:!0});if(n.length===0)return 0;r=n.map(e=>e.path)}else r=[e];try{let e=await fetch(`${this.config.url}/storage/v1/object/${n}`,{method:`DELETE`,headers:{...this.authHeaders(),"Content-Type":`application/json`},body:JSON.stringify({prefixes:r})});return e.status===404?0:e.ok?r.length:(console.error(`[SupabaseStorage] delete error:`,await e.text()),0)}catch(t){return console.error(`[SupabaseStorage] delete error for ${e}:`,t),0}};list=async(e,t={})=>Qi(await this._listLevel(e,t),t);_listLevel=async(e,t)=>{let n=t.includeFiles!==!1,r=t.includeFolders===!0,i=this.resolveBucket(t.bucket);try{let a=await fetch(`${this.config.url}/storage/v1/object/list/${i}`,{method:`POST`,headers:{...this.authHeaders(),"Content-Type":`application/json`},body:JSON.stringify({prefix:e,limit:1e3,offset:0})});if(!a.ok)return console.error(`[SupabaseStorage] list error:`,await a.text()),[];let o=await a.json(),s=o.filter(e=>e.id!==null&&e.name&&!e.name.endsWith(`/`)),c=o.filter(e=>e.id===null&&e.name),l=n?s.map(t=>({name:t.name??``,path:e?`${e}/${t.name}`:t.name??``,size:t.metadata?.size,contentType:t.metadata?.mimetype,updatedAt:t.updated_at})):[],u=r?c.map(t=>({name:t.name??``,path:e?`${e}/${t.name}`:t.name??``,isFolder:!0})):[],d=[...l,...u];if(!t.recursive||c.length===0)return d;let f=await Promise.all(c.map(n=>this._listLevel(e?`${e}/${n.name}`:n.name??``,t)));return[...d,...f.flat()]}catch(t){return console.error(`[SupabaseStorage] list error for ${e}:`,t),[]}}},ia={},aa=(e,t,n)=>{(ia[e]??={})[t]=n},oa=e=>typeof e.credential?.token==`string`?e.credential.token:void 0,sa=async e=>{await vi(e.publicConfig),e.credential?.type===`firebaseCustomToken`&&await _i(e.credential.token)},ca=`(default)`;aa(`data`,`mock`,e=>new Xi(e.publicConfig.seed,{persist:!1})),aa(`data`,`firebase`,async e=>(await sa(e),new Ai({databaseId:ca}))),aa(`data`,`supabase`,e=>new Ui({url:e.publicConfig.url,anonKey:e.publicConfig.anonKey,accessToken:oa(e)})),aa(`storage`,`firebase`,async e=>(await sa(e),new na)),aa(`storage`,`supabase`,e=>new ra({url:e.publicConfig.url,anonKey:e.publicConfig.anonKey,accessToken:oa(e)}));var la=()=>{let e=$r();return{switchSession:(0,l.useCallback)(async(t,n)=>{let r;if(typeof t==`function`)r=await t();else{let e=await fetch(t,n?.fetchOptions);if(!e.ok)throw Error(`Provider session request failed: ${e.status} ${e.statusText}`);r=await e.json()}n?.onResponse&&(r=await n.onResponse(r));let i={applied:[],skipped:[]};for(let[t,n]of Object.entries(r.providers)){let r=ia[t]?.[n.type];if(!r){console.warn(`ProviderSession: no factory registered for category "${t}" type "${n.type}" — discarding. Register one with registerProviderSessionFactory().`),i.skipped.push({category:t,type:n.type});continue}let a=await r(n);await e(t,`custom`,a),i.applied.push(t)}return i},[e]),setProvider:e}};function ua(e,t){return e?typeof e==`string`?l.default.createElement(Q,{name:e,size:15,className:t}):e:null}function da({items:e,itemsLoading:t=!1,activeId:n=null,onSelect:r=void 0,onError:i=void 0,onResponse:a=void 0,endpoint:o,authorization:s=void 0,requestBody:c=void 0,method:u=`POST`,icon:d=`layers`,caption:f=void 0,listLabel:p=void 0,placeholder:m=void 0,disabled:h=!1,open:g=void 0,onOpenChange:_=void 0,footer:v=void 0,before:y=void 0,after:b=void 0,wrapperClassName:x=void 0,className:S=void 0,triggerClassName:C=void 0,listClassName:w=void 0,itemClassName:T=void 0}){let E=J(`providerSwitcher`),D=Y(`select`),{switchSession:O}=la(),k=Rn(),[A,j]=(0,l.useState)(!1),[M,N]=(0,l.useState)(null),P=e.find(e=>e.id===n)??null,F=g??A,I=_??j,L=M!==null||t,R=(0,l.useRef)(null),z=async()=>s?typeof s==`function`?s():s:k.getAccessToken?.(),B=async e=>{if(R.current!==e.id){N(e.id);try{if(typeof o==`function`)await O(()=>o(e.id),{onResponse:a});else{let t=await z();await O(o,{onResponse:a,fetchOptions:{method:u,headers:{"Content-Type":`application/json`,...t?{Authorization:`Bearer ${t}`}:{}},body:JSON.stringify(c?c(e.id):{id:e.id})}})}R.current=e.id,r?.(e.id)}catch(t){i?.(e.id,t)}finally{N(null)}}},V=e=>{I(!1),B(e)};return(0,l.useEffect)(()=>{if(!n||n===R.current)return;let t=e.find(e=>e.id===n);t&&B(t)},[n]),l.default.createElement(l.default.Fragment,null,y,l.default.createElement(yr,{open:F,onOpenChange:I,placement:`auto`,wrapperClassName:X(E.ProviderSwitcher.wrapperClassName,x),className:X(E.ProviderSwitcher.className,S),triggerClassName:X(E.ProviderSwitcher.triggerClassName,(h||L)&&E.ProviderSwitcher.disabledClassName,C),footer:v,trigger:l.default.createElement(`span`,{className:`flex w-full min-w-0 items-center gap-2.5`},l.default.createElement(`span`,{className:X(E.ProviderSwitcher.iconWrapperClassName)},ua(P?.icon??d)),l.default.createElement(`span`,{className:`min-w-0 flex-1 pr-2`},l.default.createElement(`span`,{className:X(E.ProviderSwitcher.labelClassName)},P?.label??(t?D.loading:m??D.placeholder)),f?l.default.createElement(`span`,{className:X(E.ProviderSwitcher.captionClassName)},f):null),l.default.createElement(Q,{name:L?`loader-2`:`chevrons-up-down`,size:12,className:X(E.ProviderSwitcher.chevronClassName,L&&`animate-spin`)}))},p??f?l.default.createElement(Cr,null,p??f):null,e.map(e=>l.default.createElement(Sr,{key:e.id,onClick:h||L?void 0:()=>V(e),className:X(E.ProviderSwitcher.itemClassName,e.id===n?E.ProviderSwitcher.itemActiveClassName:E.ProviderSwitcher.itemInactiveClassName,T,w)},l.default.createElement(`span`,{className:`flex w-full min-w-0 items-center gap-2`},l.default.createElement(`span`,{className:X(`w-3.5 shrink-0`,E.ProviderSwitcher.checkClassName)},e.id===n?l.default.createElement(Q,{name:`check`,size:13}):null),l.default.createElement(`span`,{className:`flex-1 truncate`},e.label),e.meta?l.default.createElement(`span`,{className:X(`shrink-0`,E.ProviderSwitcher.itemMetaClassName)},e.meta):null)))),b)}var fa={info:`text-blue-600`,success:`text-green-600`,warning:`text-yellow-600`,danger:`text-red-600`,primary:`text-primary`,secondary:`text-secondary`,light:`text-gray-400`,dark:`text-gray-800`},pa=`bg-card supports-[backdrop-filter]:backdrop-blur-sm`,ma=({children:e,variant:t=`info`,appearance:n=`default`,placement:r=`inline`,anchorRef:i=void 0,timeout:a=void 0,onClose:o=void 0,icon:s=!0,before:c=void 0,after:u=void 0,wrapperClassName:d=void 0,className:f=void 0})=>{let p=J(`alert`),[m,g]=(0,l.useState)(null);(0,l.useLayoutEffect)(()=>{if(r!==`sticky`){g(null);return}let e=0,t=null,n=!1,a=()=>{let r=i?.current;if(!n){if(!r){e=requestAnimationFrame(a);return}t=document.createElement(`div`),t.style.cssText=`position:sticky;top:0;left:0;right:0;z-index:50;width:100%`,r.prepend(t),g(t)}};return a(),()=>{n=!0,e&&cancelAnimationFrame(e),t&&t.remove(),g(null)}},[r,i]);let _=s===!1?null:s===!0?{info:`info`,success:`check`,warning:`warning`,danger:`x-circle`,primary:``,secondary:``,light:``,dark:``}[t]||null:s||null;(0,l.useEffect)(()=>{if(typeof o==`function`){let e=setTimeout(()=>{o()},a??5e3);return()=>clearTimeout(e)}},[o,a]);let v=n===`text`?l.default.createElement(`span`,{role:`status`,className:X(`inline-flex items-center gap-1 text-sm font-medium`,fa[t]??`text-foreground`,f)},_&&l.default.createElement(Q,{name:_,size:14,className:`shrink-0`}),e):l.default.createElement(`div`,{role:`alert`,className:X(`alert alert-`+t,f||p.Alert.className,(r===`fixed`||r===`sticky`)&&[`w-full rounded-none border-x-0 shadow-md`,pa])},_&&l.default.createElement(Q,{name:_,size:16,className:`shrink-0`}),e);if(r===`fixed`)return(0,h.createPortal)(v,(()=>{let e=`__alert-portal-fixed__`,t=document.getElementById(e);return t||(t=document.createElement(`div`),t.id=e,t.style.cssText=`position:fixed;top:0;left:0;right:0;z-index:9999;width:100%`,document.body.appendChild(t)),t})());if(r===`sticky`)return m?(0,h.createPortal)(v,m):null;let y=d??(c||u?`flex items-center gap-2`:void 0);return l.default.createElement(Z,{className:y},c,v,u)},ha={markup:()=>import(`prismjs/components/prism-markup`),html:()=>import(`prismjs/components/prism-markup`),xml:()=>import(`prismjs/components/prism-markup`),svg:()=>import(`prismjs/components/prism-markup`),mathml:()=>import(`prismjs/components/prism-markup`),css:()=>import(`prismjs/components/prism-css`),clike:()=>import(`prismjs/components/prism-clike`),javascript:()=>import(`prismjs/components/prism-javascript`),js:()=>import(`prismjs/components/prism-javascript`),jsx:()=>import(`prismjs/components/prism-jsx`),typescript:()=>import(`prismjs/components/prism-typescript`),tsx:()=>import(`prismjs/components/prism-tsx`),json:()=>import(`prismjs/components/prism-json`),bash:()=>import(`prismjs/components/prism-bash`),shell:()=>import(`prismjs/components/prism-bash`),python:()=>import(`prismjs/components/prism-python`),java:()=>import(`prismjs/components/prism-java`),c:()=>import(`prismjs/components/prism-c`),cpp:()=>import(`prismjs/components/prism-cpp`),csharp:()=>import(`prismjs/components/prism-csharp`),go:()=>import(`prismjs/components/prism-go`),sql:()=>import(`prismjs/components/prism-sql`),php:()=>import(`prismjs/components/prism-php`),ruby:()=>import(`prismjs/components/prism-ruby`),yaml:()=>import(`prismjs/components/prism-yaml`),ini:()=>import(`prismjs/components/prism-ini`),docker:()=>import(`prismjs/components/prism-docker`),powershell:()=>import(`prismjs/components/prism-powershell`),git:()=>import(`prismjs/components/prism-git`),graphql:()=>import(`prismjs/components/prism-graphql`)},ga={html:[`markup`],xml:[`markup`],svg:[`markup`],mathml:[`markup`],javascript:[`clike`],js:[`clike`,`javascript`],jsx:[`markup`,`clike`,`javascript`],typescript:[`clike`,`javascript`],tsx:[`markup`,`clike`,`javascript`,`jsx`,`typescript`],c:[`clike`],cpp:[`c`],csharp:[`clike`],java:[`clike`],php:[`markup`]},_a={prism:`rf-code-theme-prism`,dark:`rf-code-theme-dark`,coy:`rf-code-theme-coy`,funky:`rf-code-theme-funky`,okaidia:`rf-code-theme-okaidia`,solarizedlight:`rf-code-theme-solarizedlight`,tomorrow:`rf-code-theme-tomorrow`,twilight:`rf-code-theme-twilight`},va={primary:`bg-primary text-primary-foreground`,secondary:`bg-secondary text-secondary-foreground`,success:`bg-success text-success-foreground`,danger:`bg-destructive text-destructive-foreground`,warning:`bg-warning text-warning-foreground`,info:`bg-info text-info-foreground`,light:`bg-muted text-muted-foreground`,dark:`bg-foreground text-background`,white:`bg-white text-slate-950`,black:`bg-black text-white`,transparent:`bg-transparent`,default:void 0};function ya(e,t){return typeof t==`string`&&t in e}async function ba(e,t=new Set){if(!t.has(e)){for(let n of ga[e]??[])ya(ha,n)&&await ba(n,t);await ha[e]?.(),t.add(e)}}var xa=!1;async function Sa(){xa||(xa=!0,await Promise.resolve().then(()=>require("./prism-themes-BvRk9kiK.js")))}var Ca=({language:e,children:t,before:n,after:r,wrapperClassName:i,className:a,showCopy:o=!0,theme:s=`tomorrow`,background:c=`default`})=>{let u=(0,l.useRef)(null),d=J(`code`),f=Y(`code`),p=typeof t==`string`?t:String(t??``),m=ya(ha,e)?e:`tsx`,h=ya(_a,s)?s:`tomorrow`,g=ya(va,c)?c:`transparent`;return(0,l.useEffect)(()=>{let e=!1;return(async()=>{await Sa(),window.Prism?.highlightElement||(window.Prism={...window.Prism??{},manual:!0});let t;try{t=(await import(`prismjs`)).default,window.Prism=t}catch(e){console.warn(`Errore nel caricare Prism core`,e);return}try{await ba(m)}catch(e){console.warn(`Errore nel caricare il linguaggio Prism "${m}"`,e)}if(!e&&u.current)try{t.highlightElement(u.current)}catch(e){console.warn(`Errore nell'evidenziare il blocco Prism "${m}"`,e)}})(),()=>{e=!0}},[p,m]),l.default.createElement(Z,{className:i||d.Code.wrapperClassName},l.default.createElement(`div`,{className:X(`flex w-full items-stretch gap-2`,(n||r)&&`overflow-x-auto`)},n&&l.default.createElement(`div`,{className:`flex shrink-0 items-center text-sm text-muted-foreground`},n),l.default.createElement(`pre`,{"data-rf-code-theme":h,"data-rf-code-background":g,className:X(`relative min-w-0 flex-1 overflow-auto rounded-md border border-border p-4 text-sm`,_a[h],va[g],a||d.Code.className)},o&&l.default.createElement(`button`,{onClick:()=>L(p),className:`absolute right-2 top-2 inline-flex items-center justify-center rounded-md bg-secondary px-2 py-1 text-xs font-medium text-secondary-foreground transition-colors hover:bg-secondary/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,title:f.copyCode,"aria-label":f.copyCode},l.default.createElement(Q,{name:`clipboard`,size:14})),l.default.createElement(`code`,{ref:u,className:`language-${m}`},p)),r&&l.default.createElement(`div`,{className:`flex shrink-0 items-center text-sm text-muted-foreground`},r)))},wa={en:`English`,it:`Italiano`,fr:`Français`,de:`Deutsch`,es:`Español`,pt:`Português`,nl:`Nederlands`,pl:`Polski`,ru:`Русский`,zh:`中文`,ja:`日本語`,ko:`한국어`,ar:`العربية`},Ta=({icon:e=`Globe`,label:t,labels:n,appearance:r=`code`,className:i=``})=>{let{locale:a,availableLocales:o,setLocale:s}=Y();if(o.length<=1)return null;let c={...wa,...n},u=e=>r===`code`?e.toUpperCase():c[e]??e.toUpperCase();return l.default.createElement(`div`,{className:`flex items-center gap-1.5 ${i}`.trim()},l.default.createElement(Q,{name:e,size:16,"aria-hidden":!0}),t&&l.default.createElement(`span`,{className:`text-sm`},t),l.default.createElement(`select`,{value:a,onChange:e=>s(e.target.value),className:`cursor-pointer rounded border border-border bg-transparent py-0.5 pl-1 pr-5 text-sm focus:outline-none focus:ring-1 focus:ring-ring`,style:{width:`auto`},"aria-label":t??`Select language`},o.map(e=>l.default.createElement(`option`,{key:e,value:e},u(e)))))},Ea={primary:`primary`,secondary:`secondary`,success:`success`,warning:`warning`,danger:`destructive`,info:`info`,light:`muted`,dark:`foreground`},Da={primary:`primary-foreground`,secondary:`secondary-foreground`,success:`success-foreground`,warning:`warning-foreground`,danger:`destructive-foreground`,info:`info-foreground`,light:`muted-foreground`,dark:`background`},Oa=(e,t)=>`hsl(var(--rf-${e})${t===void 0?``:` / ${t}`})`,ka=({progress:e,variant:t,thickness:n,showText:r,trackVariant:i,size:a,fontSize:o,className:s})=>{let c=Oa(Ea[i],i===`secondary`||i===`light`?.55:.16),u=Oa(Ea[t]),d=Oa(e>=12?Da[t]:`foreground`);return l.default.createElement(`div`,{className:X(`relative overflow-hidden rounded-full border border-border shadow-sm`,s),style:{height:`${n}px`,width:`${a}%`,minWidth:a<100?120:void 0,backgroundColor:c},role:`progressbar`,"aria-valuenow":e,"aria-valuemin":0,"aria-valuemax":100},l.default.createElement(`div`,{className:`h-full rounded-full transition-all duration-300`,style:{width:`${e}%`,backgroundColor:u}}),r&&l.default.createElement(`span`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center font-medium tabular-nums`,style:{fontSize:`${o}px`,color:d}},e,`%`))},Aa=({progress:e,variant:t,thickness:n,showText:r,trackVariant:i,size:a,fontSize:o,className:s})=>{let c=a/2,u=c-n/2,d=2*Math.PI*u,f=d*((100-e)/100),p=Oa(Ea[i],i===`secondary`||i===`light`?.55:.18),m=Oa(Ea[t]),h=Oa(`foreground`);return l.default.createElement(`span`,{className:X(`inline-flex items-center justify-center`,s),role:`progressbar`,"aria-valuenow":e,"aria-valuemin":0,"aria-valuemax":100},l.default.createElement(`svg`,{width:a,height:a,viewBox:`0 0 ${a} ${a}`},l.default.createElement(`circle`,{r:u,cx:c,cy:c,fill:`none`,stroke:p,strokeWidth:n}),l.default.createElement(`circle`,{r:u,cx:c,cy:c,fill:`none`,stroke:m,strokeWidth:n,strokeLinecap:`round`,strokeDasharray:d,strokeDashoffset:f,style:{transform:`rotate(-90deg)`,transformOrigin:`center`,transition:`stroke-dashoffset 300ms ease`}}),r&&l.default.createElement(`text`,{x:`50%`,y:`50%`,textAnchor:`middle`,dominantBaseline:`middle`,fontWeight:700,fontSize:o,fill:h},`${e}%`)))},ja=({value:e=0,max:t=100,min:n=0,appearance:r=`bar`,variant:i=`primary`,trackVariant:a=`secondary`,thickness:o=10,showText:s=!0,size:c=100,fontSize:u=16,label:d=void 0,before:f=void 0,after:p=void 0,wrapperClassName:m=void 0,className:h=void 0})=>{let g=J(`percentage`),_=t-n,v=_<=0?0:Math.round(Math.max(0,Math.min(100,(e-n)/_*100))),y=h||g.Percentage?.className||``;return l.default.createElement(Z,{className:m||g.Percentage?.wrapperClassName},f,d&&l.default.createElement(fo,{label:d}),r===`bar`?l.default.createElement(ka,{progress:v,variant:i,thickness:o,showText:s,trackVariant:a,size:c,fontSize:u,className:y}):l.default.createElement(Aa,{progress:v,variant:i,thickness:o,showText:s,trackVariant:a,size:c,fontSize:u,className:y}),p)},Ma={container:Dt,wrapper:Z,row:Ot,col:kt};function Na({minHeight:e=200,maxHeight:t=600,paddingOffset:n=0}){return(0,l.useMemo)(()=>{let r=e===`fill`,i=r?0:e;return{fill:r,adjustedMinHeight:i-n,wrapperStyle:r?{height:`100%`,overflowY:`auto`}:{maxHeight:t,overflowY:t?`auto`:void 0},resolvedMinHeight:i,resolvedMaxHeight:r?void 0:t}},[e,t,n])}var Pa=`mb-1 block text-sm font-medium leading-5 text-foreground`,Fa=`mt-1 text-xs text-muted-foreground`,Ia=`flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,La=`flex min-h-[5rem] w-full rounded-md border border-input bg-background px-3 py-2 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,Ra=`flex w-full items-stretch`,za=`inline-flex shrink-0 items-center border border-input bg-muted px-3 py-1 text-sm text-muted-foreground`,Ba=`relative`,Va=`pointer-events-none absolute left-3 top-2 z-10 origin-[0] bg-background px-1 text-xs font-medium normal-case tracking-normal text-muted-foreground transition-all duration-150 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:px-0 peer-placeholder-shown:text-sm peer-placeholder-shown:font-normal peer-placeholder-shown:normal-case peer-placeholder-shown:tracking-normal peer-focus:top-2 peer-focus:-translate-y-0 peer-focus:px-1 peer-focus:text-xs peer-focus:font-medium peer-focus:tracking-normal peer-focus:text-foreground`,Ha=`pointer-events-none absolute left-3 top-2 z-10 origin-[0] bg-background px-1 text-xs font-medium normal-case tracking-normal text-muted-foreground transition-all duration-150 peer-placeholder-shown:top-2 peer-placeholder-shown:translate-y-0 peer-placeholder-shown:px-0 peer-placeholder-shown:text-sm peer-placeholder-shown:font-normal peer-placeholder-shown:normal-case peer-placeholder-shown:tracking-normal peer-focus:top-2 peer-focus:translate-y-0 peer-focus:px-1 peer-focus:text-xs peer-focus:font-medium peer-focus:tracking-normal peer-focus:text-foreground`,Ua=`peer h-14 px-3 pt-6 pb-2`,Wa=`peer px-3 pt-6 pb-2`,Ga=(e,{before:t,after:n})=>X(e,t&&`!rounded-l-none`,n&&`!rounded-r-none`),Ka=({children:e,side:t})=>l.default.createElement(`span`,{className:X(za,t===`before`?`rounded-l-md rounded-r-none border-r-0`:`rounded-l-none rounded-r-md border-l-0`)},e),qa=({message:e})=>l.default.createElement(`div`,{className:`mt-1 flex items-center gap-1 text-xs text-destructive`,role:`alert`,"aria-live":`polite`},l.default.createElement(Q,{name:`warning-circle`,size:12,className:`shrink-0`}),l.default.createElement(`span`,null,e)),Ja=({name:e,onChange:t,wrapperClassName:n,defaultValue:r,valueChecked:i,inheritWrapperClassName:a})=>{let o=e=>e==null?``:`${e}`,{value:s,handleChange:c,formWrapClass:u}=Nl({name:e,onChange:t,wrapperClassName:n,inputType:typeof i==`number`?`number`:`text`,defaultValue:r===void 0?void 0:o(r)===o(i)?o(i):``,inheritWrapperClassName:a});return{id:(0,l.useId)(),checked:o(s)===o(i),formWrapClass:u,handleCheckboxChange:t=>{c?.({target:{name:e,value:t.target.checked?i:``}})}}},Ya=({name:e,onChange:t=void 0,defaultValue:n=void 0,placeholder:r=void 0,label:i=void 0,type:a=`text`,required:o=!1,readOnlyAfterSet:s=!1,disabled:c=!1,before:u=void 0,after:d=void 0,afterInset:f=void 0,feedback:p=void 0,min:m=void 0,max:h=void 0,step:g=void 0,id:_=void 0,labelClassName:v=void 0,inheritWrapperClassName:y=!0,wrapperClassName:b=void 0,className:x=void 0,validator:S=void 0,labelMode:C=`default`})=>{let{value:w,handleChange:T,formWrapClass:E}=Nl({name:e,onChange:t,wrapperClassName:b,inputType:a,defaultValue:n,inheritWrapperClassName:y}),D=Ml(e,{required:o,label:i,validator:S}),O=(0,l.useId)(),k=_??O,A=Pl({name:e,value:w,handleChange:T}),j=!!(C===`floating`&&i&&!u&&!d&&!f),M=j?` `:r;return l.default.createElement(Z,{className:E},!j&&i&&l.default.createElement(fo,{label:i,required:o,htmlFor:k,className:v}),l.default.createElement(Z,{className:X(u||d?Ra:``,f&&`relative`,j&&Ba)},u&&l.default.createElement(Ka,{side:`before`},u),l.default.createElement(`input`,{id:k,type:a,name:e,className:Ga(X(Ia,j&&Ua,D&&`border-destructive focus-visible:ring-destructive/20`,f&&`pr-9`,x),{before:u,after:d}),placeholder:M,required:o,disabled:c||s&&!ue(w),value:w??``,onChange:T,min:m,max:h,step:g,onDragOver:e=>e.preventDefault(),onDrop:A}),j&&l.default.createElement(`label`,{htmlFor:k,className:X(Va,v)},i,` `,o&&l.default.createElement(`span`,{className:`text-destructive`},`*`)),d&&l.default.createElement(Ka,{side:`after`},d),f&&l.default.createElement(`span`,{className:`pointer-events-none absolute inset-y-0 right-0 flex items-center pr-1.5 [&>*]:pointer-events-auto`},f)),D?l.default.createElement(qa,{message:D}):p&&l.default.createElement(`div`,{className:`mt-1 text-xs text-muted-foreground`},p))},Xa=e=>l.default.createElement(Ya,{...e,type:`text`}),Za=e=>l.default.createElement(Ya,{...e,type:`number`}),Qa=e=>l.default.createElement(Ya,{...e,type:`email`}),$a=e=>{let[t,n]=(0,l.useState)(!1);return l.default.createElement(Ya,{...e,type:t?`text`:`password`,afterInset:l.default.createElement(`button`,{type:`button`,tabIndex:-1,onClick:()=>n(!t),className:`h-7 w-7 inline-flex items-center justify-center rounded text-muted-foreground hover:text-foreground transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`},l.default.createElement(Q,{name:t?`eye`:`eye-off`,size:15}))})},eo=({className:e,...t})=>l.default.createElement(Ya,{...t,type:`color`,className:X(`w-10 shrink-0 cursor-pointer p-0.5`,e)}),to=e=>l.default.createElement(Ya,{...e,type:`date`}),no=e=>l.default.createElement(Ya,{...e,type:`time`}),ro=e=>l.default.createElement(Ya,{...e,type:`datetime-local`}),io=e=>l.default.createElement(Ya,{...e,type:`week`}),ao=e=>l.default.createElement(Ya,{...e,type:`month`}),oo=e=>l.default.createElement(Ya,{...e,type:`range`,className:X(`!border-0 !bg-transparent !shadow-none !px-0 !py-0 !h-auto cursor-pointer accent-primary`,e.className)}),so=e=>l.default.createElement(Ya,{...e,type:`url`}),co=({name:e,onChange:t=void 0,defaultValue:n=void 0,value:r=void 0,id:i=void 0,inheritWrapperClassName:a=!0,wrapperClassName:o=void 0})=>{let{value:s,handleChange:c}=Nl({name:e,onChange:t,wrapperClassName:o,defaultValue:n??r,inheritWrapperClassName:a}),u=(0,l.useId)(),d=i??u,f=l.default.useMemo(()=>JSON.stringify(r??null),[r]),p=l.default.useMemo(()=>JSON.stringify(s??null),[s]);return(0,l.useEffect)(()=>{r!==void 0&&f!==p&&c({target:{name:e,value:r}})},[c,e,f,p,r]),l.default.createElement(`input`,{id:d,type:`hidden`,name:e,value:typeof s==`string`?s:s==null?``:JSON.stringify(s),readOnly:!0})},lo=({name:e,onChange:t=void 0,defaultValue:n=void 0,label:r=void 0,title:i=void 0,ariaLabel:a=void 0,required:o=!1,valueChecked:s=`on`,before:c=void 0,after:u=void 0,inheritWrapperClassName:d=!0,wrapperClassName:f=void 0,className:p=void 0})=>{let{id:m,checked:h,formWrapClass:g,handleCheckboxChange:_}=Ja({name:e,onChange:t,wrapperClassName:f,defaultValue:n,valueChecked:s,inheritWrapperClassName:d}),v=Ml(e,{required:o,label:r});return l.default.createElement(Z,{className:g},l.default.createElement(`div`,{className:`flex items-center gap-2`},c,l.default.createElement(`input`,{type:`checkbox`,id:m,name:e,title:i,"aria-label":a,className:X(`h-4 w-4 shrink-0 rounded-sm border border-input bg-background text-primary shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,p),checked:h,onChange:_}),r&&l.default.createElement(`label`,{className:`text-sm font-medium leading-none text-foreground`,htmlFor:m},r,o&&l.default.createElement(`span`,{className:`text-destructive`},`\xA0*`)),u),v&&l.default.createElement(qa,{message:v}))},uo=({name:e,onChange:t=void 0,defaultValue:n=void 0,label:r=void 0,title:i=void 0,ariaLabel:a=void 0,required:o=!1,valueChecked:s=`on`,before:c=void 0,after:u=void 0,inheritWrapperClassName:d=!0,wrapperClassName:f=void 0,className:p=void 0})=>{let{id:m,checked:h,formWrapClass:g,handleCheckboxChange:_}=Ja({name:e,onChange:t,wrapperClassName:f,defaultValue:n,valueChecked:s,inheritWrapperClassName:d}),v=Ml(e,{required:o,label:r});return l.default.createElement(Z,{className:g},l.default.createElement(`div`,{className:`flex items-center gap-2`},c,l.default.createElement(`label`,{className:`inline-flex cursor-pointer items-center gap-2 select-none`},l.default.createElement(`span`,{className:`relative inline-flex h-5 w-9 shrink-0 items-center`},l.default.createElement(`input`,{id:m,name:e,type:`checkbox`,title:i,"aria-label":a,checked:h,onChange:_,className:`peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0`}),l.default.createElement(`span`,{"aria-hidden":`true`,className:X(`pointer-events-none absolute inset-0 rounded-full transition-colors duration-200 ease-out peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2`,h?`bg-primary`:`bg-muted-foreground/35`,p)},l.default.createElement(`span`,{className:X(`pointer-events-none absolute top-0.5 left-0.5 h-4 w-4 rounded-full bg-background shadow-sm transition-transform duration-200 ease-out`,h&&`translate-x-4`)}))),r&&l.default.createElement(`span`,{className:`text-sm font-medium leading-none text-foreground`},r,o&&l.default.createElement(`span`,{className:`text-destructive`},`\xA0*`))),u),v&&l.default.createElement(qa,{message:v}))},fo=({label:e,required:t=!1,htmlFor:n=void 0,className:r=void 0})=>l.default.createElement(`label`,{htmlFor:n,className:X(Pa,r)},e,` `,t&&l.default.createElement(`span`,{className:`text-destructive`},`*`)),po=({name:e,onChange:t=void 0,defaultValue:n=void 0,placeholder:r=void 0,label:i=void 0,required:a=!1,readOnlyAfterSet:o=!1,disabled:s=!1,minHeight:c=96,maxHeight:u=void 0,textareaRef:d=void 0,before:f=void 0,after:p=void 0,feedback:m=void 0,id:h=void 0,labelClassName:g=void 0,inheritWrapperClassName:_=!0,className:v=void 0,wrapperClassName:y=void 0,validator:b=void 0,onKeyDown:x=void 0,onClick:S=void 0,onBlur:C=void 0,labelMode:w=`default`})=>{let{value:T,handleChange:E,formWrapClass:D}=Nl({name:e,onChange:t,wrapperClassName:y,defaultValue:n,inheritWrapperClassName:_}),O=Ml(e,{required:a,label:i,validator:b}),k=Na({minHeight:c,maxHeight:u}),A=(0,l.useId)(),j=h??A,M=Pl({name:e,value:T,handleChange:E}),N=l.default.useRef(null),P=!!(w===`floating`&&i&&!f&&!p),F=P?` `:r;return(0,l.useEffect)(()=>{if(!N.current)return;let e=N.current;e.style.height=`auto`;let t=Math.max(e.scrollHeight,k.resolvedMinHeight),n=k.resolvedMaxHeight?Math.min(t,k.resolvedMaxHeight):t;e.style.minHeight=`${k.resolvedMinHeight}px`,e.style.maxHeight=k.resolvedMaxHeight?`${k.resolvedMaxHeight}px`:``,e.style.height=`${n}px`,e.style.overflowY=k.resolvedMaxHeight&&t>k.resolvedMaxHeight?`auto`:`hidden`},[T,k.resolvedMinHeight,k.resolvedMaxHeight]),l.default.createElement(Z,{className:D},!P&&i&&l.default.createElement(fo,{required:a,label:i,htmlFor:j,className:g}),l.default.createElement(Z,{className:X(f||p?Ra:``,P&&Ba)},f&&l.default.createElement(Ka,{side:`before`},f),l.default.createElement(`textarea`,{id:j,name:e,className:Ga(X(La,`resize-none`,P&&Wa,O&&`border-destructive focus-visible:ring-destructive/20`,v),{before:f,after:p}),ref:e=>{if(N.current=e,typeof d==`function`){d(e);return}d&&typeof d==`object`&&`current`in d&&(d.current=e)},placeholder:F,required:a,disabled:s||o&&!ue(T),value:T??``,onChange:E,onKeyDown:x,onClick:S,onBlur:C,onDragOver:e=>e.preventDefault(),onDrop:M}),P&&l.default.createElement(`label`,{htmlFor:j,className:X(Ha,g)},i,` `,a&&l.default.createElement(`span`,{className:`text-destructive`},`*`)),p&&l.default.createElement(Ka,{side:`after`},p)),O?l.default.createElement(qa,{message:O}):m&&l.default.createElement(`div`,{className:`mt-1 text-xs text-muted-foreground`},m))},mo=({children:e,onClick:t=void 0,label:n=void 0,activeIndices:r=void 0,draggable:i=void 0,onDrop:a=void 0,disabledIndices:o=void 0,loadingIndices:s=void 0,before:c=void 0,after:u=void 0,wrapperClassName:d=void 0,className:f=void 0,itemClassName:p=void 0})=>{let m=X(`flex flex-col divide-y divide-border rounded-md border bg-card`,f),h=e=>{let t=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?`${e}`:Array.isArray(e)?e.map(t).join(` `):l.default.isValidElement(e)?t(e.props.children):``;return t(e).replace(/\s+/g,` `).trim()},g=(e,t)=>{e.dataTransfer.setData(`text/plain`,a?.(t)??t)};return l.default.createElement(Z,{className:d},c,n&&l.default.createElement(`div`,null,n),l.default.createElement(`div`,{className:m},e.map((e,n)=>{let a=r?.includes(n),c=o?.includes(n),u=s?.includes(n),d=X(`flex items-center gap-2 px-3 py-2 text-sm transition-colors`,t&&`cursor-pointer hover:bg-accent hover:text-accent-foreground`,a&&`bg-primary/8 text-foreground`,c&&`pointer-events-none opacity-50`,u&&`animate-pulse`,p);return t?l.default.createElement(`div`,{key:n,onClick:e=>{!u&&!pe(e)&&t(e,n)},className:d,style:{cursor:`pointer`}},e):l.default.createElement(`span`,{key:n,className:d,draggable:i,onDragStart:i?t=>g(t,h(e)):void 0,style:{cursor:i?`grab`:`default`}},i&&l.default.createElement(Q,{name:`grip-vertical`}),e)})),u)},ho={field:``,dir:`asc`},go=e=>typeof e==`string`&&!Number.isNaN(Date.parse(e)),_o=(e,t)=>e==null&&t==null?0:e==null?1:t==null?-1:typeof e==`number`&&typeof t==`number`?e-t:typeof e==`boolean`&&typeof t==`boolean`?Number(e)-Number(t):e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():go(e)&&go(t)?Date.parse(e)-Date.parse(t):String(e).localeCompare(String(t),void 0,{numeric:!0,sensitivity:`base`}),vo={normalize(e){if(e?.field)return{field:e.field,dir:e.dir===`desc`?`desc`:`asc`}},toggle(e,t){return!e||e.field!==t?{field:t,dir:`asc`}:{field:t,dir:e.dir===`asc`?`desc`:`asc`}},compareValues(e,t,n=`asc`){let r=_o(e,t);return n===`desc`?-r:r},compareRecords(e,t,n){let r=this.normalize(n);if(!r)return 0;let i=_e(e,r.field),a=_e(t,r.field);return this.compareValues(i,a,r.dir)},records(e,t){if(!e)return e;let n=this.normalize(t);return n?[...e].sort((e,t)=>this.compareRecords(e,t,n)):[...e]}},yo=e=>e==null||e===``||typeof e==`boolean`||typeof e==`object`&&!Array.isArray(e)?[]:typeof e==`string`||typeof e==`number`?e.toString().split(`,`):e,bo=e=>e?typeof e==`object`?{label:String(e?.label??``)||``,value:String(e?.value??``)||``}:{label:e?.toString()||``,value:e?.toString()||``}:{label:`@value`,value:`@value`},xo=e=>e.map(e=>bo({label:e.label??e.name??e.title??e._key??``,value:e.value??e._key??e.label??e.name??``}));function So(e){return{fieldMap:e?.fieldMap,where:e?.where,order:e?.order,onLoad:e?.onLoad}}var Co=(e,t,n)=>{let r=e?.[n.field],[i]=Object.entries(t||{});if(!i||!r)return!1;let[a,o]=i;return a===r&&o===n.dir},wo=(e,t,n,r,i)=>{let a=n||{...ho,field:`label`},o=[...e.map(bo),...t];return e.length===0&&Co(i,r,a)?o:vo.records(o,a)||[]},To=({children:e,side:t})=>l.default.createElement(`span`,{className:X(za,t===`before`?`rounded-l-md rounded-r-none border-r-0`:`rounded-l-none rounded-r-md border-l-0`)},e),Eo=({name:e,onChange:t=void 0,defaultValue:n=void 0,required:r=!1,readOnlyAfterSet:i=!1,disabled:a=!1,placeholderOption:o=void 0,label:s=void 0,title:c=void 0,before:u=void 0,after:d=void 0,feedback:f=void 0,options:p=[],optionsSource:m=void 0,order:h=void 0,inheritWrapperClassName:g=!0,wrapperClassName:_=void 0,className:v=void 0,validator:y=void 0})=>{let{value:b,handleChange:x,formWrapClass:S}=Nl({name:e,onChange:t,wrapperClassName:_,defaultValue:n,inheritWrapperClassName:g}),C=Ml(e,{required:r,label:s,validator:y}),w=J(`select`),T=Y(`select`),E=o??{label:T.placeholder,value:``},D=(0,l.useMemo)(()=>So(m),[m?.fieldMap,m?.where,m?.order,m?.onLoad]),O=sr(),[k,A]=(0,l.useState)([]);(0,l.useEffect)(()=>O.subscribe(m?.path,e=>A(xo(e)),D),[O,m?.path,D]);let j=(0,l.useMemo)(()=>{let e=wo(p,k,h,m?.order,D.fieldMap);return le(b&&!e.length?[...e,{label:`× ${b.toString()}`,value:b.toString()}]:e)},[p,k,h,m?.order,D.fieldMap,b]);!b&&!E&&j.length>0&&x?.({target:{name:e,value:j[0].value}});let M=(0,l.useId)();return l.default.createElement(Z,{className:S||w.Select.wrapperClassName},s&&l.default.createElement(fo,{label:s,required:r,htmlFor:M}),l.default.createElement(Z,{className:u||d?X(Ra,`flex-nowrap`):``},u&&l.default.createElement(To,{side:`before`},u),l.default.createElement(`select`,{id:M,name:e,className:X(Ia,`appearance-none pr-8`,u&&`!rounded-l-none`,d&&`!rounded-r-none`,C&&`border-destructive focus-visible:ring-destructive/20`,v||w.Select.className),value:b??``,required:r,disabled:a||i&&!ue(b),onChange:x,title:c},E&&l.default.createElement(`option`,{key:`${M}-empty`,value:E.value},E.label),j.some(e=>e.group)?Object.entries(j.reduce((e,t)=>{let n=t.group??``;return(e[n]??=[]).push(t),e},{})).map(([e,t])=>e?l.default.createElement(`optgroup`,{key:e,label:e},t.map((t,n)=>l.default.createElement(`option`,{key:`${M}-${e}-${n}`,value:t.value},t.label))):t.map((e,t)=>l.default.createElement(`option`,{key:`${M}-nogroup-${t}`,value:e.value},e.label))):j.map((e,t)=>l.default.createElement(`option`,{key:`${M}-${t}`,value:e.value},e.label))),d&&l.default.createElement(To,{side:`after`},d)),C?l.default.createElement(qa,{message:C}):f&&l.default.createElement(`div`,{className:`mt-1 text-xs text-muted-foreground`},f))},Do=({name:e,defaultValue:t=void 0,minItems:n=void 0,maxItems:r=void 0,onChange:i=void 0,required:a=!1,readOnlyAfterSet:o=!1,disabled:s=!1,label:c=void 0,title:u=void 0,placeholder:d=void 0,before:f=void 0,after:p=void 0,feedback:m=void 0,options:h=[],optionsSource:g=void 0,order:_=void 0,inheritWrapperClassName:v=!0,wrapperClassName:y=void 0,className:b=void 0,validator:x=void 0,creatable:S=!1,onCreate:C=void 0})=>{let{value:w,handleChange:T,formWrapClass:E}=Nl({name:e,onChange:i,wrapperClassName:y,defaultValue:t,inheritWrapperClassName:v}),D=Ml(e,{required:a,label:c,validator:x}),O=J(`select`),k=(0,l.useMemo)(()=>yo(w),[w]),[A,j]=(0,l.useState)(()=>k);(0,l.useEffect)(()=>{de(k,A)||j(k)},[k,A]);let M=(0,l.useMemo)(()=>So(g),[g?.fieldMap,g?.where,g?.order,g?.onLoad]),N=sr(),[P,F]=(0,l.useState)([]);(0,l.useEffect)(()=>N.subscribe(g?.path,e=>F(xo(e)),M),[N,g?.path,M]);let[I,L]=(0,l.useState)([]),R=(0,l.useMemo)(()=>le(wo([...h,...I],P,_,g?.order,M.fieldMap),`value`),[h,I,P,_,g?.order,M.fieldMap]),z=(t,n)=>{if(t){if(A.includes(t)||r&&A.length>=r){n.value=``;return}j(n=>{let r=[...n,t];return setTimeout(()=>{T?.({target:{name:e,value:r}})},0),r}),n.value=``}},B=e=>{let t=e.target.value;R.some(e=>e.value===t)&&z(t,e.target)},V=e=>{if(e.key!==`Enter`)return;e.preventDefault();let t=e.target.value.trim();if(t){if(!R.some(e=>e.value===t)){if(!S)return;L(e=>[...e,{label:t,value:t}]),C?.(t)}z(t,e.target)}},ee=t=>{j(n=>{let r=n.filter(e=>e!==t);return setTimeout(()=>{T?.({target:{name:e,value:r}})},0),r})},te=(0,l.useId)(),ne=`${te}-options`;return l.default.createElement(Z,{className:E||O.Autocomplete.wrapperClassName},c&&l.default.createElement(fo,{label:c,required:a,htmlFor:te}),l.default.createElement(Z,{className:f||p?X(Ra,`flex-nowrap`):``},f&&l.default.createElement(To,{side:`before`},f),l.default.createElement(`div`,{className:X(Ia,`h-auto min-h-9 flex-wrap items-center gap-1 py-1.5 px-2`,f&&`rounded-l-none`,p&&`rounded-r-none`)},A.map(e=>l.default.createElement(`span`,{className:`inline-flex items-center gap-1 rounded-full border border-primary/20 bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary`,key:e},e,l.default.createElement(`button`,{type:`button`,className:`ml-0.5 opacity-60 transition-opacity hover:opacity-100`,onClick:()=>ee(e)},`×`))),(!r||A.length<r)&&l.default.createElement(`input`,{id:te,type:`text`,className:X(`min-w-[120px] flex-1 border-none bg-transparent text-sm outline-none placeholder:text-muted-foreground`,b||O.Autocomplete.className),required:a&&A.length<(n||0),disabled:s||o&&!ue(w),placeholder:S?d??`Type or press Enter to create...`:d,title:u,list:ne,onChange:B,onKeyDown:V})),l.default.createElement(`datalist`,{id:ne},R.map((e,t)=>l.default.createElement(`option`,{value:e.value,key:`${te}-${t}`},e.label))),p&&l.default.createElement(To,{side:`after`},p)),D?l.default.createElement(qa,{message:D}):m&&l.default.createElement(`div`,{className:`mt-1 text-xs text-muted-foreground`},m))},Oo=({name:e,defaultValue:t=void 0,onChange:n=void 0,required:r=!1,readOnlyAfterSet:i=!1,disabled:a=!1,label:o=void 0,title:s=void 0,before:c=void 0,after:u=void 0,feedback:d=void 0,options:f=[],optionsSource:p=void 0,order:m=void 0,inheritWrapperClassName:h=!0,wrapperClassName:g=void 0,className:_=void 0,validator:v=void 0,itemClassName:y=void 0})=>{let{value:b,handleChange:x,formWrapClass:S}=Nl({name:e,onChange:n,wrapperClassName:g,defaultValue:t,inheritWrapperClassName:h}),C=Ml(e,{required:r,label:o,validator:v}),w=(0,l.useMemo)(()=>yo(b),[b]),[T,E]=(0,l.useState)(()=>w);(0,l.useEffect)(()=>{de(w,T)||E(w)},[w,T]);let D=(0,l.useMemo)(()=>So(p),[p?.fieldMap,p?.where,p?.order,p?.onLoad]),O=sr(),[k,A]=(0,l.useState)([]);(0,l.useEffect)(()=>O.subscribe(p?.path,e=>A(xo(e)),D),[O,p?.path,D]);let j=(0,l.useMemo)(()=>le(wo(f,k,m,p?.order,D.fieldMap),`value`),[f,k,m,p?.order,D.fieldMap]),M=t=>{E(n=>{let r=n.filter(e=>e!==t);return setTimeout(()=>{x?.({target:{name:e,value:r}})},0),r})},N=t=>{let n=t.target.value;if(!t.target.checked){M(n);return}j.filter(e=>e.value===n).length!==0&&(T.includes(n)||E(t=>{let r=[...t,n];return setTimeout(()=>{x?.({target:{name:e,value:r}})},0),r}))},P=(0,l.useId)(),F=a||i&&T.length>0,I=l.default.createElement(Z,{className:X(c||u?X(Ia,`h-auto min-h-9 w-full min-w-0 flex-col items-start py-2 px-3`):``,`space-y-1`)},j.map(t=>{let n=fe(`cl-${P}-${e}-${t.value}`);return l.default.createElement(`div`,{key:n,className:X(`flex w-full items-center gap-2`,y)},l.default.createElement(`input`,{className:`h-4 w-4 shrink-0 rounded-sm border border-input bg-background text-primary shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,type:`checkbox`,id:n,name:e,value:t.value,onChange:N,checked:T.includes(t.value),disabled:F,title:s}),l.default.createElement(`label`,{htmlFor:n,className:`text-sm font-medium leading-none text-foreground`},t.label))}));return l.default.createElement(Z,{className:X(S,_)},o&&l.default.createElement(l.default.Fragment,null,l.default.createElement(fo,{label:o,required:r}),l.default.createElement(`hr`,{className:`mt-0`})),c||u?l.default.createElement(Z,{className:X(Ra,`flex-nowrap items-stretch`)},c&&l.default.createElement(To,{side:`before`},c),I,u&&l.default.createElement(To,{side:`after`},u)):I,C?l.default.createElement(qa,{message:C}):d&&l.default.createElement(`div`,{className:`mt-1 text-xs text-muted-foreground`},d))};function ko(e,t){if(!t)return e;let n=e.indexOf(`?`),r=n===-1?e:e.slice(0,n),i=n===-1?``:e.slice(n),a=r.lastIndexOf(`.`);return a===-1?`${r}${t}${i}`:`${r.slice(0,a)}${t}${r.slice(a)}${i}`}function Ao(e,t){return t.mode===`explicit`?t.variants.map(e=>`width`in e?`${e.src} ${e.width}w`:`${e.src} ${e.density}x`).join(`, `):t.mode===`density`?(t.densities??[1,2]).map(n=>`${ko(e,t.suffix?t.suffix(n):n===1?``:`@${n}x`)} ${n}x`).join(`, `):t.widths.map(n=>`${ko(e,t.suffix?t.suffix(n):`-${n}w`)} ${n}w`).join(`, `)}function jo(e,t){let n=e.priority?`eager`:e.loading??`lazy`,r={src:e.src,alt:e.alt,width:e.width,height:e.height,loading:n,decoding:e.decoding??`async`,...e.priority&&{fetchpriority:`high`},...e.title&&{title:e.title},...e.className&&{class:e.className},...e.crossorigin&&{crossorigin:e.crossorigin},...e.referrerpolicy&&{referrerpolicy:e.referrerpolicy}},i=[];return e.fit&&i.push(`object-fit: ${e.fit}`),e.position&&i.push(`object-position: ${e.position}`),i.length&&(r.style=i.join(`; `)),t&&(r.srcset=Ao(e.src,t),t.mode!==`density`&&t.sizes&&(r.sizes=t.sizes)),Object.fromEntries(Object.entries(r).filter(([,e])=>e!==void 0))}function Mo(e){let t=[`src`,`srcset`,`sizes`,`alt`,`title`,`width`,`height`,`style`,`class`,`loading`,`decoding`,`fetchpriority`,`crossorigin`,`referrerpolicy`].filter(t=>e[t]!==void 0).map(t=>`${t}="${String(e[t])}"`);if(t.length===0)return`<img />`;let[n,...r]=t;return r.length===0?`<img ${n} />`:`<img ${n}\n ${r.join(`
|
|
4
|
+
`)} />`}function No(e){return{toHtml:t=>Mo(jo(e,t)),toJson:t=>JSON.stringify(jo(e,t),null,2),params:t=>jo(e,t)}}async function Po(e,t){return new Promise((n,r)=>{let i=new Image;i.onload=()=>{let r=i.naturalWidth,a=i.naturalHeight,o=e.startsWith(`data:`)?e.slice(5,e.indexOf(`;`)):`image/jpeg`,s=[...t].sort((e,t)=>e-t).filter(e=>e<r).map(e=>{let t=Math.round(e/r*a),n=document.createElement(`canvas`);n.width=e,n.height=t;let s=n.getContext(`2d`);if(!s)throw Error(`Canvas 2D context unavailable`);return s.drawImage(i,0,0,e,t),{src:n.toDataURL(o),width:e}});s.push({src:e,width:r}),n(s)},i.onerror=()=>r(Error(`resizeVariants: failed to load image`)),e.startsWith(`data:`)||(i.crossOrigin=`anonymous`),i.src=e})}async function Fo(e,t){let n=await Po(e,t.length?t:[]),r=n.at(-1)?.width??0,i=n.slice(0,-1);return{variants:await Promise.all(i.map(async e=>{let t=await fetch(e.src).then(e=>e.blob());return{width:e.width,dataUri:e.src,localUrl:URL.createObjectURL(t)}})),naturalWidth:r}}async function Io(e,t,n,r){let i=r.replace(/\.[^/.]+$/,``),a=r.split(`.`).pop()??`jpg`;return Promise.all(e.map(async e=>({url:await t.upload(e.dataUri,`${n}/${i}_${e.width}w.${a}`)??e.localUrl,width:e.width})))}function Lo(e){return[...e].sort((e,t)=>e.width-t.width).map(e=>`${e.url} ${e.width}w`).join(`, `)}function Ro(e){if(e.startsWith(`data:`)||e.startsWith(`blob:`))return`image.jpg`;try{return new URL(e).pathname.split(`/`).pop()||`image.jpg`}catch{return e.split(`/`).pop()||`image.jpg`}}function zo(e){return e.replace(/\.[^/.]+$/,``).replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim().replace(/^(.)/,e=>e.toUpperCase())}var Bo=(0,l.createContext)(null),Vo=({registry:e,defaultKey:t,children:n})=>{let r=(0,l.useMemo)(()=>({registry:e,defaultKey:t}),[e,t]);return l.default.createElement(Bo.Provider,{value:r},n)},Ho=e=>{let t=(0,l.useContext)(Bo);if(!t)return null;let n=e??t.defaultKey;return t.registry[n]??null},Uo=()=>l.default.createElement(`div`,{className:`h-5 w-px bg-border shrink-0 mx-0.5`}),Wo=({src:e,title:t=void 0,width:n=700,height:r=500,mode:i=`inline`,onImageLoad:a=void 0,onClose:o=void 0,onSave:s=void 0})=>{let c=Y(`imageEditor`),u=(0,l.useRef)(null),d=(0,l.useRef)(null),f={width:10,color:`rgba(255,0,0,0.5)`,fill:`transparent`},[p,m]=(0,l.useState)(1);(0,l.useEffect)(()=>{if(!u.current)return;let t,i=!1;return(async()=>{let[{default:o}]=await Promise.all([import(`tui-image-editor`),import(`tui-image-editor/dist/tui-image-editor.css`)]);i||!u.current||(t=new o(u.current,{cssMaxWidth:n,cssMaxHeight:r,selectionStyle:{cornerSize:10,rotatingPointOffset:70,cornerColor:`white`,cornerStrokeColor:`red`,borderColor:`red`}}),d.current=t,e&&t.loadImageFromURL(e,`Sample Image`).then(()=>{a?.(),t.clearUndoStack(),t.clearRedoStack()}).catch(e=>{console.error(`Error loading image:`,e)}),t.on(`objectAdded`,e=>{console.log(`objectAdded`,e),t.stopDrawingMode()}),t.on(`addText`,e=>{let n=e;t.stopDrawingMode(),t.addText(`init text`,{styles:{fill:`#FF0000`,fontSize:30,fontWeight:`bold`},position:{x:n.originPosition?.x,y:n.originPosition?.y}})}))})(),()=>{i=!0,t?.destroy(),d.current=null}},[n,r]);let h=(0,l.useCallback)(()=>{let t=d.current;!e||!t||t.loadImageFromURL(e,`Sample Image`).then(()=>{a?.(),t.clearUndoStack(),t.clearRedoStack()}).catch(e=>{console.error(`Error loading image:`,e)})},[e,a]);(0,l.useEffect)(()=>{d.current&&h()},[h]);let g=(e,t)=>{e.preventDefault();let n=d.current;if(n)switch(t){case`ZOOMIN`:p<3&&m(e=>e*1.2);break;case`ZOOMOUT`:p>1&&m(e=>Math.max(e*.8,1));break;case`UNDO`:n.isEmptyUndoStack()||n.undo();break;case`REDO`:n.isEmptyRedoStack()||n.redo();break;case`FLIPX`:n.flipX();break;case`FLIPY`:n.flipY();break;case`ROTATE`:n.rotate(90);break;case`CROPPER`:n.startDrawingMode(t);break;case`FREE_DRAWING`:n.startDrawingMode(t,{width:f.width,color:f.color});break;case`LINE_DRAWING`:n.startDrawingMode(t,{width:f.width,color:f.color,arrowType:{tail:`chevron`}});break;case`TEXT`:n.startDrawingMode(t);break;case`circle`:case`rect`:case`triangle`:n.setDrawingShape(t,{fill:f.fill,stroke:f.color,strokeWidth:3}),n.startDrawingMode(`SHAPE`);break;default:break}};(0,l.useEffect)(()=>{if(i===`modal`)return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}},[i]);let _=async()=>{let e=d.current;if(e){try{let t=e.getCropzoneRect?.();t&&t.width>0&&t.height>0&&await e.crop(t)}catch{}await s?.(e.toDataURL())}},v=()=>{o?.()},y=`inline-flex h-8 w-8 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,b=l.default.createElement(l.default.Fragment,null,l.default.createElement(`button`,{className:y,title:c.undo,onClick:e=>g(e,`UNDO`)},l.default.createElement(Q,{name:`arrow-arc-left`,size:16})),l.default.createElement(`button`,{className:y,title:c.redo,onClick:e=>g(e,`REDO`)},l.default.createElement(Q,{name:`arrow-arc-right`,size:16})),l.default.createElement(`button`,{className:y,title:c.zoomOut,onClick:e=>g(e,`ZOOMOUT`)},l.default.createElement(Q,{name:`magnifying-glass-minus`,size:16})),l.default.createElement(`button`,{className:y,title:c.zoomIn,onClick:e=>g(e,`ZOOMIN`)},l.default.createElement(Q,{name:`magnifying-glass-plus`,size:16})),l.default.createElement(Uo,null),l.default.createElement(`button`,{className:y,title:c.crop,onClick:e=>g(e,`CROPPER`)},l.default.createElement(Q,{name:`crop`,size:16})),l.default.createElement(`button`,{className:y,title:c.flipHorizontal,onClick:e=>g(e,`FLIPX`)},l.default.createElement(Q,{name:`arrow-line-right`,size:16})),l.default.createElement(`button`,{className:y,title:c.flipVertical,onClick:e=>g(e,`FLIPY`)},l.default.createElement(Q,{name:`arrow-line-down`,size:16})),l.default.createElement(`button`,{className:y,title:c.rotate,onClick:e=>g(e,`ROTATE`)},l.default.createElement(Q,{name:`camera-rotate`,size:16})),l.default.createElement(Uo,null),l.default.createElement(`button`,{className:y,title:c.freeDrawing,onClick:e=>g(e,`FREE_DRAWING`)},l.default.createElement(Q,{name:`pencil`,size:16})),l.default.createElement(`button`,{className:y,title:c.arrow,onClick:e=>g(e,`LINE_DRAWING`)},l.default.createElement(Q,{name:`arrow-right`,size:16})),l.default.createElement(`button`,{className:y,title:c.text,onClick:e=>g(e,`TEXT`)},l.default.createElement(Q,{name:`text-t`,size:16})),l.default.createElement(`button`,{className:y,title:c.rectangle,onClick:e=>g(e,`rect`)},l.default.createElement(Q,{name:`rectangle`,size:16})),l.default.createElement(`button`,{className:y,title:c.circle,onClick:e=>g(e,`circle`)},l.default.createElement(Q,{name:`circle`,size:16})),l.default.createElement(`button`,{className:y,title:c.triangle,onClick:e=>g(e,`triangle`)},l.default.createElement(Q,{name:`triangle`,size:16}))),x=l.default.createElement(`div`,{className:`flex flex-1 min-w-0 items-center gap-0.5 overflow-x-auto`},l.default.createElement(`span`,{className:`shrink-0 text-sm font-semibold text-foreground pr-2 mr-1`},t||c.title),l.default.createElement(Uo,null),b,s&&l.default.createElement(l.default.Fragment,null,l.default.createElement(Uo,null),l.default.createElement(Cn,{className:`btn-primary h-8 px-3 text-xs ml-1`,onClick:_,icon:`floppy-disk`,label:c.save}))),S=l.default.createElement(`div`,{className:`flex items-center gap-0.5 border-b px-2 py-1`},b,s&&l.default.createElement(`div`,{className:`ml-auto pl-2`},l.default.createElement(Cn,{className:`btn-primary h-8 px-3 text-xs`,onClick:_,icon:`floppy-disk`,label:c.save}))),C=l.default.createElement(`div`,{className:X(`flex w-full items-center justify-center overflow-auto pt-3`,`[background-image:repeating-conic-gradient(#e4e4e4_0%_25%,#f5f5f5_0%_50%)]`,`dark:[background-image:repeating-conic-gradient(#2a2a2a_0%_25%,#343434_0%_50%)]`,`[background-size:16px_16px]`),style:{minHeight:r*p+`px`}},l.default.createElement(`style`,null,`.tui-image-editor,.tui-image-editor canvas{background:transparent!important}`),l.default.createElement(`div`,{ref:u,style:{transform:`scale(${p})`,transformOrigin:`center center`,display:`inline-block`,userSelect:`none`,width:n+`px`,height:r*p+`px`}}));return i===`modal`?l.default.createElement(mr,{size:`xl`,header:x,bodyClassName:`overflow-hidden p-0`,onClose:v,footer:!1},C):l.default.createElement(l.default.Fragment,null,S,C)},Go=({srcset:e})=>{let t=e.split(`,`).map(e=>e.trim()).map(e=>{let[t,n]=e.split(` `);return{url:t,width:parseInt(n,10)}}).filter(e=>e.url&&!isNaN(e.width));return t.length<2?null:l.default.createElement(`div`,{className:`mt-2 flex flex-col gap-1`},l.default.createElement(`p`,{className:`text-xs font-medium text-muted-foreground`},`Responsive variants`,l.default.createElement(`span`,{className:`ml-1 font-normal opacity-60`},`(`,t.length,` generated)`)),l.default.createElement(`div`,{className:`flex gap-1.5`},t.map(e=>l.default.createElement(`a`,{key:e.width,href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`group relative flex-1 overflow-hidden rounded border border-border`,style:{backgroundImage:`repeating-conic-gradient(#e4e4e4 0% 25%, #f5f5f5 0% 50%)`,backgroundSize:`8px 8px`}},l.default.createElement(`img`,{src:e.url,alt:`${e.width}w`,className:`h-12 w-full object-contain transition-opacity group-hover:opacity-80`}),l.default.createElement(`span`,{className:`absolute bottom-0.5 left-0.5 rounded bg-black/60 px-1 py-0.5 text-[9px] font-mono leading-none text-white`},e.width,`px`),l.default.createElement(`div`,{className:`absolute inset-0 flex items-center justify-center opacity-0 transition-opacity group-hover:opacity-100`},l.default.createElement(`div`,{className:`rounded-md bg-black/60 p-1`},l.default.createElement(Q,{name:`external-link`,size:11,className:`text-white`})))))))},Ko=({name:e,onChange:t=void 0,defaultValue:n=void 0,label:r=void 0,required:i=!1,disabled:a=!1,feedback:o=void 0,srcsetWidths:s=[],uploadPath:c=void 0,id:u=void 0,labelClassName:d=void 0,inheritWrapperClassName:f=!0,wrapperClassName:p=void 0,className:m=void 0,before:h=void 0,after:g=void 0})=>{let{value:_,handleChange:v,formWrapClass:y}=Nl({name:e,onChange:t,defaultValue:n,wrapperClassName:p,inheritWrapperClassName:f}),b=Ml(e,{required:i,label:r}),x=_&&typeof _==`object`&&!Array.isArray(_)?_:{},S=x.src??``,C=x.alt??``,w=x.srcset??``,T=x.sizes??``,E=Ho(),[D,O]=(0,l.useState)(!1),[k,A]=(0,l.useState)(!1),j=(0,l.useRef)(null),M=(0,l.useCallback)(t=>{v?.({target:{name:e,value:{...x,...t}}})},[v,e,x]),N=(0,l.useRef)(``);(0,l.useEffect)(()=>{S&&S!==N.current&&!C&&M({alt:zo(Ro(S))}),N.current=S},[S]),(0,l.useEffect)(()=>{if(!S||!s.length)return;let e=!1;return O(!0),(async()=>{let{variants:t,naturalWidth:n}=await Fo(S,s);if(e)return;let r=Ro(S),i,a=S.startsWith(`data:`)?URL.createObjectURL(await fetch(S).then(e=>e.blob())):S;i=E&&c&&t.length?[...await Io(t,E,c,r),{url:a,width:n}]:[...t.map(e=>({url:e.localUrl,width:e.width})),{url:a,width:n}],e||(M({srcset:Lo(i),sizes:`(max-width: 640px) 100vw, 800px`}),O(!1))})().catch(()=>{e||O(!1)}),()=>{e=!0}},[S,s.join(`,`)]);let P=e=>{M({src:e,srcset:``,sizes:``}),A(!1)},F=!!b;return l.default.createElement(Z,{className:y},h,r&&l.default.createElement(fo,{label:r,required:i,htmlFor:u??e,className:d}),l.default.createElement(`div`,{className:X(`rounded-lg border border-input bg-background shadow-sm transition-colors`,`focus-within:ring-1 focus-within:ring-ring`,F&&`border-destructive focus-within:ring-destructive/20`,a&&`cursor-not-allowed opacity-50`,m)},l.default.createElement(`div`,{className:X(`group relative flex min-h-[120px] items-center justify-center overflow-hidden rounded-t-lg transition-colors`,`[background-image:repeating-conic-gradient(#e4e4e4_0%_25%,#f5f5f5_0%_50%)]`,`dark:[background-image:repeating-conic-gradient(#2a2a2a_0%_25%,#343434_0%_50%)]`,`[background-size:16px_16px]`)},S?l.default.createElement(`img`,{src:S,srcSet:w||void 0,sizes:T||void 0,alt:``,className:`max-h-[180px] max-w-full object-contain`}):l.default.createElement(Q,{name:`image`,size:36,className:`opacity-20 text-muted-foreground`}),S&&l.default.createElement(`div`,{className:`absolute right-2 top-2 flex gap-1 opacity-0 transition-opacity group-hover:opacity-100`},l.default.createElement(`a`,{href:S,target:`_blank`,rel:`noopener noreferrer`,title:`Open original`,className:`flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80`},l.default.createElement(Q,{name:`external-link`,size:13})),l.default.createElement(`button`,{type:`button`,title:`Crop`,disabled:a,onClick:()=>A(!0),className:`flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80 disabled:cursor-not-allowed disabled:opacity-40`},l.default.createElement(Q,{name:`crop`,size:13}))),D&&l.default.createElement(`div`,{className:`absolute inset-0 flex items-center justify-center bg-background/70 backdrop-blur-sm`},l.default.createElement(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`},l.default.createElement(Q,{name:`loader-circle`,size:14,className:`animate-spin`}),`Generating variants…`))),l.default.createElement(`div`,{className:`flex flex-col gap-3 p-3`},l.default.createElement(`div`,{className:`flex flex-col gap-1`},l.default.createElement(`label`,{className:`text-xs font-medium text-muted-foreground`},`Image URL `,l.default.createElement(`span`,{className:`font-normal opacity-60`},`(path or https://…)`)),l.default.createElement(`input`,{type:`url`,value:S,disabled:a,onChange:e=>M({src:e.target.value,srcset:``,sizes:``}),placeholder:`https://example.com/image.jpg`,className:`h-8 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring disabled:opacity-50`})),l.default.createElement(`div`,{className:`flex flex-col gap-1`},l.default.createElement(`label`,{className:`text-xs font-medium text-muted-foreground`},`Alt text`,` `,l.default.createElement(`span`,{className:`font-normal opacity-60`},`(accessibility & SEO)`),i&&l.default.createElement(`span`,{className:`ml-1 text-destructive`},`*`)),l.default.createElement(`input`,{ref:j,type:`text`,value:C,disabled:a,onChange:e=>M({alt:e.target.value}),placeholder:`E.g. Product hero shot`,className:X(`h-8 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring disabled:opacity-50`,F&&`border-destructive`)})),w&&l.default.createElement(Go,{srcset:w}))),b&&l.default.createElement(qa,{message:b}),!b&&o&&l.default.createElement(`p`,{className:`mt-1 text-xs text-muted-foreground`},o),g,k&&S&&l.default.createElement(Wo,{src:S,mode:`modal`,title:`Crop — ${Ro(S)}`,onClose:()=>A(!1),onSave:P}))},qo={"1:1":1,"3:4":3/4,"4:3":4/3},Jo=48,Yo=(e,t)=>{let n=e.split(`.`).pop()??``;return`${e.replace(/\.[^/.]+$/,``)}${`_${t.replace(`:`,`x`)}`}.${n}`},Xo={nw:`nwse-resize`,n:`ns-resize`,ne:`nesw-resize`,e:`ew-resize`,se:`nwse-resize`,s:`ns-resize`,sw:`nesw-resize`,w:`ew-resize`},Zo=()=>{let[e,t]=(0,l.useState)(()=>document.documentElement.classList.contains(`dark`));return(0,l.useEffect)(()=>{let e=new MutationObserver(()=>t(document.documentElement.classList.contains(`dark`)));return e.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>e.disconnect()},[]),e},Qo=(0,l.forwardRef)(({img:e,title:t,scales:n},r)=>{let i=n??qo,a=Y(`crop`),o=(0,l.useRef)(null),s=(0,l.useRef)(null),c=()=>{let t=Object.keys(e.variants??{}).filter(e=>e in i);return t.length?t:Object.keys(i)},u=Zo(),[d,f]=(0,l.useState)(c),[p,m]=(0,l.useState)(()=>c()[0]??Object.keys(i)[0]),[h,g]=(0,l.useState)(e.fileName),[_,v]=(0,l.useState)(e.variants??{}),[y,b]=(0,l.useState)(null),[x,S]=(0,l.useState)(!1),[C,w]=(0,l.useState)(!1),T=(0,l.useRef)(_),E=(0,l.useRef)(y),D=(0,l.useRef)(p),O=(0,l.useRef)(d),k=(0,l.useRef)(h);(0,l.useEffect)(()=>{T.current=_},[_]),(0,l.useEffect)(()=>{E.current=y},[y]),(0,l.useEffect)(()=>{D.current=p},[p]),(0,l.useEffect)(()=>{O.current=d},[d]),(0,l.useEffect)(()=>{k.current=h},[h]),(0,l.useEffect)(()=>{v(e=>{let t={};for(let[n,r]of Object.entries(e))t[n]={...r,fileName:Yo(h,n)};return t})},[h]);let A=(0,l.useRef)(null),j=(0,l.useRef)(null);(0,l.useEffect)(()=>{let e=e=>{let t=A.current,n=j.current;if(!t&&!n)return;let r=D.current,a=E.current,o=T.current[r];if(!a||!o)return;let s=i[r]??1;if(t){let n=Math.max(0,Math.min(e.clientX-t.offsetX,a.width-o.width)),i=Math.max(0,Math.min(e.clientY-t.offsetY,a.height-o.height));v(e=>({...e,[r]:{...e[r],left:n,top:i}}))}if(n){let{handle:t,sx:i,sy:o,sl:c,st:l,sw:u,sh:d}=n,f=e.clientX-i,p=e.clientY-o,m=c,h=l,g=u,_=d;if(t===`n`||t===`s`){let e=t===`n`?-p:p;_=Math.max(Jo,d+e),g=_*s,t===`n`&&(h=l+d-_),m=c+(u-g)/2}else if(t===`e`||t===`w`){let e=t===`w`?-f:f;g=Math.max(Jo,u+e),_=g/s,t===`w`&&(m=c+u-g),h=l+(d-_)/2}else{let e=t.includes(`e`)?f:-f,n=t.includes(`s`)?p:-p;g=Math.max(Jo,u+(Math.abs(e)>Math.abs(n)?e:n)),_=g/s,t.includes(`n`)&&(h=l+d-_),t.includes(`w`)&&(m=c+u-g)}m=Math.max(0,m),h=Math.max(0,h);let y=a.width-m,b=a.height-h;if(g>y||_>b){let e=Math.min(y/g,b/_);g*=e,_*=e}g<Jo&&(g=Jo,_=g/s),_<Jo&&(_=Jo,g=_*s),v(e=>({...e,[r]:{...e[r],left:m,top:h,width:g,height:_}}))}},t=()=>{A.current=null,j.current=null,w(!1)};return window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,t),()=>{window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,t)}},[]),(0,l.useLayoutEffect)(()=>{if(!x)return;let t=s.current;if(!t)return;let{width:n,height:r}=t.getBoundingClientRect();if(!(!n||!r)&&(b(e=>e&&e.width===n&&e.height===r?e:{width:n,height:r}),!T.current[p])){let t=i[p]??1,a=Math.min(n*.78,r*t*.78),o=a/t;v(t=>({...t,[p]:{fileName:Yo(k.current,p),type:e.type,scale:p,left:(n-a)/2,top:(r-o)/2,width:a,height:o,base64:``}}))}},[p,x]),(0,l.useImperativeHandle)(r,()=>({handleSave:()=>{let e=o.current,t=e?.getContext(`2d`),n=s.current;if(!e||!t||!n)return{fileName:k.current,variants:{}};let r=E.current,i={};for(let a of O.current){let o=T.current[a];if(!o||!r)continue;let s=n.naturalWidth/r.width,c=n.naturalHeight/r.height,{top:l,left:u,width:d,height:f}=o;e.width=Math.round(d*s),e.height=Math.round(f*c),t.clearRect(0,0,e.width,e.height),t.drawImage(n,u*s,l*c,d*s,f*c,0,0,e.width,e.height),i[a]={...o,base64:e.toDataURL(o.type)}}return{fileName:k.current,variants:i}}}));let M=e=>{d.includes(e)||f(t=>[...t,e]),m(e)},N=(e,t)=>{t.stopPropagation();let n=d.filter(t=>t!==e);if(f(n),e===p){let t=n.filter(e=>e in i);m(t[0]??Object.keys(i).find(t=>t!==e)??Object.keys(i)[0])}},P=e=>{e.preventDefault(),e.stopPropagation();let t=T.current[p];t&&(A.current={offsetX:e.clientX-t.left,offsetY:e.clientY-t.top},w(!0))},F=(e,t)=>{e.preventDefault(),e.stopPropagation();let n=T.current[p];n&&(j.current={handle:t,sx:e.clientX,sy:e.clientY,sl:n.left,st:n.top,sw:n.width,sh:n.height},w(!0))},I=d.includes(p),L=_[p];return l.default.createElement(`div`,{className:[`flex gap-4 h-full min-h-0`,t?`flex-col`:``].join(` `)},t&&l.default.createElement(`h3`,{className:`text-base font-semibold shrink-0`},t),l.default.createElement(`div`,{className:`flex gap-4 flex-1 min-h-0`},l.default.createElement(`div`,{className:`flex-1 min-w-0 min-h-0 flex items-center justify-center rounded-xl overflow-hidden`,style:{cursor:C?`grabbing`:void 0,...u?{backgroundColor:`#1a1a1a`,backgroundImage:`linear-gradient(45deg,#272727 25%,transparent 25%),linear-gradient(-45deg,#272727 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#272727 75%),linear-gradient(-45deg,transparent 75%,#272727 75%)`}:{backgroundColor:`#f0f0f0`,backgroundImage:`linear-gradient(45deg,#dcdcdc 25%,transparent 25%),linear-gradient(-45deg,#dcdcdc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#dcdcdc 75%),linear-gradient(-45deg,transparent 75%,#dcdcdc 75%)`},backgroundSize:`20px 20px`,backgroundPosition:`0 0,0 10px,10px -10px,-10px 0`}},I?l.default.createElement(`div`,{className:`relative select-none`,style:{display:`inline-block`,lineHeight:0}},l.default.createElement(`img`,{src:fs(e),alt:`Crop target`,ref:s,style:{maxHeight:`calc(100dvh - 200px)`,maxWidth:`100%`,display:`block`},draggable:!1,onLoad:()=>S(!0)}),L&&y&&l.default.createElement(rs,{crop:L,onMoveStart:P,onResizeStart:F})):l.default.createElement(`div`,{className:`flex flex-col items-center gap-3 text-zinc-500 select-none`},l.default.createElement(`svg`,{className:`w-10 h-10 opacity-30`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},l.default.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:1.5,d:`M4 8V6a2 2 0 012-2h2M4 16v2a2 2 0 002 2h2M16 4h2a2 2 0 012 2v2M16 20h2a2 2 0 002-2v-2M9 12l2 2 4-4`})),l.default.createElement(`p`,{className:`text-sm`},a.enableCrop.split(`{scale}`)[0],l.default.createElement(`strong`,{className:`text-zinc-300`},p),a.enableCrop.split(`{scale}`)[1]))),l.default.createElement(`div`,{className:`w-52 shrink-0 flex flex-col gap-4 min-h-0`},l.default.createElement(`div`,null,l.default.createElement(is,{value:h,onChange:g,label:a.fileName})),l.default.createElement(`div`,{className:`flex-1 min-h-0 flex flex-col gap-2 overflow-y-auto`},l.default.createElement(`p`,{className:`text-xs font-semibold text-muted-foreground uppercase tracking-wide shrink-0`},a.variants),Object.keys(i).map(t=>l.default.createElement(ns,{key:t,scale:t,ratio:i[t],img:e,crop:_[t],bounds:y,enabled:d.includes(t),active:t===p,onClick:()=>M(t),onRemove:e=>N(t,e)}))),I&&L&&l.default.createElement(`div`,{className:`shrink-0 pt-3 border-t border-border`},l.default.createElement(`p`,{className:`text-xs font-medium text-muted-foreground mb-1`},a.outputFile),l.default.createElement(`p`,{className:`text-xs text-foreground/70 truncate tabular-nums`,title:L.fileName},L.fileName??Yo(h,p))))),l.default.createElement(`canvas`,{ref:o,className:`hidden`}))});Qo.displayName=`CropImage`;var $o=120,es=88,ts=e=>{let t=es*e,n=es;return t>$o&&(t=$o,n=$o/e),{w:Math.round(t),h:Math.round(n)}},ns=({scale:e,ratio:t,img:n,crop:r,bounds:i,enabled:a,active:o,onClick:s,onRemove:c})=>{let u=Y(`crop`),{w:d,h:f}=ts(t),p=(()=>{if(!r||!i||!r.width)return{background:`hsl(var(--muted))`};let e=d/r.width;return{backgroundImage:`url(${fs(n)})`,backgroundSize:`${Math.round(i.width*e)}px ${Math.round(i.height*e)}px`,backgroundPosition:`-${Math.round(r.left*e)}px -${Math.round(r.top*e)}px`,backgroundRepeat:`no-repeat`}})();return l.default.createElement(`button`,{type:`button`,onClick:s,className:[`relative group flex flex-col rounded-lg border-2 transition-all overflow-hidden w-full text-left`,o?`border-primary bg-primary/5 shadow-sm`:a?`border-border hover:border-primary/40 bg-card`:`border-dashed border-muted-foreground/25 bg-transparent hover:border-muted-foreground/50`].join(` `)},l.default.createElement(`div`,{className:`flex items-center justify-center py-3 px-3 bg-muted/20`},a&&r&&i?l.default.createElement(`div`,{className:`rounded shadow-sm overflow-hidden shrink-0`,style:{width:d,height:f,...p}}):l.default.createElement(`div`,{className:`rounded border border-dashed border-muted-foreground/30 flex items-center justify-center shrink-0`,style:{width:d,height:f}},l.default.createElement(`svg`,{className:`w-5 h-5 text-muted-foreground/40`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},l.default.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:1.5,d:`M12 4v16m8-8H4`})))),l.default.createElement(`div`,{className:`flex items-center justify-between px-2.5 py-1.5 border-t border-border/60`},l.default.createElement(`span`,{className:[`text-xs font-semibold tabular-nums`,o?`text-primary`:`text-foreground`].join(` `)},e),o&&a&&l.default.createElement(`span`,{className:`text-xs text-primary/60 font-normal`},u.active),a&&l.default.createElement(`span`,{role:`button`,tabIndex:-1,onClick:c,title:lt(u.removeVariant,{scale:e}),className:`ml-auto w-5 h-5 flex items-center justify-center rounded-full text-muted-foreground hover:bg-destructive/10 hover:text-destructive transition-colors text-base leading-none`},`×`)))},rs=({crop:e,onMoveStart:t,onResizeStart:n})=>{let{top:r,left:i,width:a,height:o}=e;return l.default.createElement(`div`,{className:`absolute inset-0 pointer-events-none`},l.default.createElement(`div`,{className:`absolute`,style:{top:0,left:0,right:0,height:r,background:`rgba(0,0,0,0.55)`}}),l.default.createElement(`div`,{className:`absolute`,style:{top:r+o,left:0,right:0,bottom:0,background:`rgba(0,0,0,0.55)`}}),l.default.createElement(`div`,{className:`absolute`,style:{top:r,left:0,width:i,height:o,background:`rgba(0,0,0,0.55)`}}),l.default.createElement(`div`,{className:`absolute`,style:{top:r,left:i+a,right:0,height:o,background:`rgba(0,0,0,0.55)`}}),l.default.createElement(`div`,{onMouseDown:t,className:`absolute pointer-events-auto cursor-grab active:cursor-grabbing`,style:{top:r,left:i,width:a,height:o,border:`1.5px solid rgba(255,255,255,0.92)`,boxSizing:`border-box`}},l.default.createElement(`div`,{className:`absolute inset-0 pointer-events-none`,style:{backgroundImage:`linear-gradient(to right, rgba(255,255,255,0.18) 1px, transparent 1px),linear-gradient(to bottom, rgba(255,255,255,0.18) 1px, transparent 1px)`,backgroundSize:`33.33% 33.33%`}}),[`nw`,`ne`,`sw`,`se`].map(e=>l.default.createElement(`div`,{key:e,onMouseDown:t=>{t.stopPropagation(),n(t,e)},className:`absolute pointer-events-auto`,style:{cursor:Xo[e],width:22,height:22,display:`flex`,alignItems:e.includes(`n`)?`flex-start`:`flex-end`,justifyContent:e.includes(`w`)?`flex-start`:`flex-end`,...e.includes(`n`)?{top:-2}:{bottom:-2},...e.includes(`w`)?{left:-2}:{right:-2}}},l.default.createElement(`span`,{style:{display:`block`,width:10,height:10,background:`#fff`,borderRadius:2,boxShadow:`0 1px 3px rgba(0,0,0,0.5)`}}))),[`n`,`s`].map(e=>l.default.createElement(`div`,{key:e,onMouseDown:t=>{t.stopPropagation(),n(t,e)},className:`absolute pointer-events-auto`,style:{cursor:Xo[e],...e===`n`?{top:-4}:{bottom:-4},left:`50%`,transform:`translateX(-50%)`,width:24,height:12,display:`flex`,alignItems:`center`,justifyContent:`center`}},l.default.createElement(`span`,{style:{display:`block`,width:20,height:4,background:`#fff`,borderRadius:2,boxShadow:`0 1px 3px rgba(0,0,0,0.5)`}}))),[`e`,`w`].map(e=>l.default.createElement(`div`,{key:e,onMouseDown:t=>{t.stopPropagation(),n(t,e)},className:`absolute pointer-events-auto`,style:{cursor:Xo[e],...e===`w`?{left:-4}:{right:-4},top:`50%`,transform:`translateY(-50%)`,width:12,height:24,display:`flex`,alignItems:`center`,justifyContent:`center`}},l.default.createElement(`span`,{style:{display:`block`,width:4,height:20,background:`#fff`,borderRadius:2,boxShadow:`0 1px 3px rgba(0,0,0,0.5)`}})))))},is=({value:e,onChange:t,label:n,scale:r})=>{let i=e?.split(`.`).pop()??``,a=r?`_${r.replace(`:`,`x`)}`:void 0;return l.default.createElement(`div`,{className:`flex flex-col gap-1`},n&&l.default.createElement(`label`,{className:`text-xs font-medium text-muted-foreground`},n),l.default.createElement(`div`,{className:`flex items-center gap-1.5`},l.default.createElement(`input`,{type:`text`,defaultValue:(e=>{let t=e.replace(/\.[^/.]+$/,``);return a&&t.endsWith(a)?t.slice(0,-a.length):t})(e||``),onBlur:e=>t(`${e.target.value.trim()}${a??``}.${i}`),className:`flex-1 h-8 min-w-0 rounded-md border border-input bg-background px-2.5 text-sm focus:outline-none focus:ring-1 focus:ring-ring`}),a&&l.default.createElement(`span`,{className:`text-xs text-muted-foreground shrink-0 tabular-nums`},a,`.`,i)))},as=is,os=({onFilesChange:e,onFileReady:t,uploadPath:n,srcsetWidths:r,initialFiles:i,storageKey:a,storageProvider:o})=>{let[s,c]=(0,l.useState)(i??[]),u=o??Ho(a),d=(0,l.useRef)(null),f=(0,l.useRef)(e);f.current=e;let p=(0,l.useRef)(t);p.current=t;let m=(0,l.useRef)(new Set);(0,l.useEffect)(()=>{f.current?.(s);for(let e of s)e.progress===100&&!m.current.has(e.key)&&(m.current.add(e.key),p.current?.(e))},[s]);let h=(0,l.useCallback)((e,t)=>{c(n=>n.map(n=>n.key===e?{...n,...t}:n))},[]),g=(0,l.useCallback)(e=>{c(t=>t.filter(t=>t.key!==e)),m.current.delete(e)},[]),_=(0,l.useCallback)(e=>{c(t=>{let n=[...t];return e.forEach(e=>{let t={key:e.name,fileName:e.name,size:e.size,type:e.type,progress:0,url:``,base64:``,variants:{}},r=n.findIndex(t=>t.key===e.name);r===-1?n.push(t):n[r]=t}),n}),e.forEach(e=>{let t=new FileReader;t.onprogress=t=>{t.lengthComputable&&h(e.name,{progress:Math.round(t.loaded/t.total*75)})},t.onloadend=async()=>{let i=me(t.result),a=`data:${e.type};base64,${i}`;if(h(e.name,{base64:i,progress:80}),r?.length)try{let{variants:t,naturalWidth:i}=await Fo(a,r),o=u&&n?await Io(t,u,n,e.name):t.map(e=>({url:e.localUrl,width:e.width})),s=e.name.split(`.`).pop()??`jpg`,c=e.name.replace(/\.[^/.]+$/,``),l=u&&n?await u.upload(a,`${n}/${c}_${i}w.${s}`)??a:URL.createObjectURL(await fetch(a).then(e=>e.blob())),d=[...o,{url:l,width:i}];if(d.length>0){h(e.name,{url:l,srcset:Lo(d),sizes:`(max-width: 640px) 100vw, 800px`,progress:100});return}}catch{}else if(u&&n)try{let t=await u.upload(a,`${n}/${e.name}`);if(t){h(e.name,{url:t,progress:100});return}}catch{}h(e.name,{progress:100})},t.readAsArrayBuffer(e)}),d.current&&(d.current.value=``)},[u,n,r,h]);return{files:s,setFiles:c,fileInputRef:d,updateFile:h,handleFiles:_,handleUpload:()=>d.current?.click(),handleUploadChange:(0,l.useCallback)(e=>{_(Array.from(e.target.files??[]))},[_]),handleRemove:g}},ss=(e,t,n,r,i,a,o)=>{let{value:s,handleChange:c,formWrapClass:u}=Nl({name:e,onChange:t,wrapperClassName:n}),[d,f]=(0,l.useState)(null),p=os({initialFiles:Array.isArray(s)?s:[],onFilesChange:t=>c({target:{name:e,value:t}}),uploadPath:r,srcsetWidths:i,storageKey:a,storageProvider:o}),m=e=>{d&&(p.updateFile(d.key,e),f(null))};return{...p,formWrapClass:u,currentFile:d,handleSave:m,handleEdit:e=>f(e),handleClose:()=>f(null)}},cs=({name:e,fileInputRef:t,accept:n,onUpload:r,onChange:i,required:a=!1,multiple:o=!1,height:s,width:c,feedback:u})=>l.default.createElement(l.default.Fragment,null,l.default.createElement(`button`,{type:`button`,onClick:r,className:`flex flex-col items-center justify-center rounded-lg border-2 border-dashed border-muted-foreground/25 bg-muted/30 text-muted-foreground/50 transition-all hover:border-primary/40 hover:bg-primary/5 hover:text-primary/60 cursor-pointer`,style:{width:c,height:s}},l.default.createElement(Q,{name:`upload`,className:`w-8 h-8`}),u&&l.default.createElement(`span`,{className:`mt-1.5 max-w-full px-1.5 text-center text-[10px] font-medium leading-tight whitespace-pre-wrap`},u)),l.default.createElement(`input`,{name:e,type:`file`,accept:n,ref:t,multiple:o,required:a,className:`hidden`,onChange:i})),ls=({title:e,file:t,type:n,onSave:r,onClose:i})=>{let[a,o]=(0,l.useState)(t.fileName),s=(0,l.useRef)(null);return l.default.createElement(mr,{title:e,onSave:async()=>(r?.(s.current?s.current.handleSave():{fileName:a,variants:{}}),!0),onClose:i,size:n===`img`?`fullscreen`:void 0},n===`document`&&l.default.createElement(as,{value:a,onChange:o,label:`File name`}),n===`img`&&l.default.createElement(Qo,{ref:s,img:t}))},us=(e,t,n)=>e.length<t&&(n||e.length===0),ds=new Map,fs=(e,t=`origin`)=>{if(e.url)return e.url;if(e.base64){let n=`${e.fileName} ${t}`;return ds.has(n)||ds.set(n,ge(e.base64,e.type)??`data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InRyYW5zcGFyZW50Ii8+PGNpcmNsZSBjeD0iNjUiIGN5PSIzNSIgcj0iMTAiIGZpbGw9IiM5Y2EzYWYiLz48cGF0aCBkPSJNMTAsNzUgTDMyLDUwIEw1Miw3MCBMNjgsNTIgTDkwLDcyIEw5MCw4MCBIMTAgWiIgZmlsbD0iIzljYTNhZiIvPjwvc3ZnPg==`),ds.get(n)??`data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InRyYW5zcGFyZW50Ii8+PGNpcmNsZSBjeD0iNjUiIGN5PSIzNSIgcj0iMTAiIGZpbGw9IiM5Y2EzYWYiLz48cGF0aCBkPSJNMTAsNzUgTDMyLDUwIEw1Miw3MCBMNjgsNTIgTDkwLDcyIEw5MCw4MCBIMTAgWiIgZmlsbD0iIzljYTNhZiIvPjwvc3ZnPg==`}return``},ps=({name:e,onChange:t=void 0,label:n=void 0,required:r=!1,editable:i=!1,multiple:a=!1,max:o=100,accept:s=`.pdf,.doc,.docx,.txt,.iso`,uploadPath:c=void 0,storageKey:u=void 0,storageProvider:d=void 0,before:f=void 0,after:p=void 0,wrapperClassName:m=void 0,className:h=void 0})=>{let{files:g,currentFile:_,fileInputRef:v,formWrapClass:y,handleFiles:b,handleUploadChange:x,handleUpload:S,handleRemove:C,handleSave:w,handleEdit:T,handleClose:E}=ss(e,t,m,c,void 0,u,d),D=Ml(e,{required:r,label:n}),O=Y(`upload`),[k,A]=(0,l.useState)(!1),j=us(g,o,a),M=e=>{e.preventDefault(),j&&A(!0)},N=()=>A(!1),P=e=>{e.preventDefault(),A(!1),j&&b(a?Array.from(e.dataTransfer.files):[e.dataTransfer.files[0]])};return l.default.createElement(Z,{className:y},f,l.default.createElement(`div`,{className:h},n&&l.default.createElement(fo,{label:n,required:r}),j&&g.length===0&&l.default.createElement(`button`,{type:`button`,onClick:S,onDragOver:M,onDragLeave:N,onDrop:P,className:[`w-full flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed py-8 px-4 transition-colors cursor-pointer`,k?`border-primary/60 bg-primary/8 text-primary`:`border-muted-foreground/25 bg-muted/30 text-muted-foreground hover:border-primary/40 hover:bg-primary/5 hover:text-primary/70`].join(` `)},l.default.createElement(Q,{name:`upload`,className:`w-8 h-8`}),l.default.createElement(`span`,{className:`text-sm font-medium`},k?O.dropToUpload:O.clickOrDrag),l.default.createElement(`span`,{className:`text-xs opacity-60`},s)),g.length>0&&l.default.createElement(`div`,{className:`rounded-lg border border-border overflow-hidden`},l.default.createElement(`table`,{className:`w-full text-sm`},l.default.createElement(`tbody`,null,g.map(e=>l.default.createElement(`tr`,{key:e.key,className:`border-b border-border last:border-0 ${i?`cursor-pointer hover:bg-muted/40`:``}`,onClick:()=>i&&T(e)},l.default.createElement(`td`,{className:`px-3 py-2.5`},l.default.createElement(`div`,{className:`flex items-center gap-2`},l.default.createElement(Q,{name:`file`,className:`w-4 h-4 shrink-0 text-muted-foreground`}),e.progress===100?l.default.createElement(`a`,{href:fs(e),target:`_blank`,rel:`noopener noreferrer`,className:`hover:underline truncate max-w-xs`,onClick:e=>e.stopPropagation()},e.fileName):l.default.createElement(`span`,{className:`truncate max-w-xs text-muted-foreground`},e.fileName))),l.default.createElement(`td`,{className:`px-3 py-2.5 text-muted-foreground text-right whitespace-nowrap w-24`},e.progress===100?(e.size/1024).toFixed(2)+` KB`:l.default.createElement(ja,{max:100,min:0,value:e.progress,appearance:`bar`})),l.default.createElement(`td`,{className:`px-3 py-2.5 w-10 text-right`},l.default.createElement(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),C(e.key)},className:`flex items-center justify-center w-6 h-6 rounded-full text-muted-foreground hover:bg-red-50 hover:text-red-500 transition-colors ml-auto`},l.default.createElement(Q,{name:`x`,className:`w-3.5 h-3.5`}))))))),j&&l.default.createElement(`div`,{className:`px-3 py-2 border-t border-border bg-muted/20 ${k?`bg-primary/5`:``}`,onDragOver:M,onDragLeave:N,onDrop:P},l.default.createElement(`button`,{type:`button`,onClick:S,className:`flex items-center gap-1.5 text-xs text-muted-foreground hover:text-primary transition-colors`},l.default.createElement(Q,{name:`upload`,className:`w-3.5 h-3.5`}),O.uploadMore))),l.default.createElement(`input`,{name:e,type:`file`,accept:s,ref:v,multiple:a,required:r,className:`hidden`,onChange:x}),D&&l.default.createElement(qa,{message:D})),i&&_&&l.default.createElement(ls,{title:O.editFileName,file:_,type:`document`,onSave:w,onClose:E}),p)},ms=({name:e,onChange:t=void 0,label:n=void 0,feedback:r=void 0,editable:i=!1,multiple:a=!1,accept:o=`image/*`,required:s=!1,max:c=100,previewHeight:u=100,previewWidth:d=100,uploadPath:f=void 0,srcsetWidths:p=void 0,storageKey:m=void 0,storageProvider:h=void 0,before:g=void 0,after:_=void 0,wrapperClassName:v=void 0,className:y=void 0})=>{let{files:b,currentFile:x,fileInputRef:S,formWrapClass:C,handleUploadChange:w,handleUpload:T,handleRemove:E,handleSave:D,handleEdit:O,handleClose:k}=ss(e,t,v,f,p,m,h),A=Ml(e,{required:s,label:n}),j=Y(`upload`),[M,N]=(0,l.useState)(null),[P,F]=(0,l.useState)(new Set),I=(e,t)=>{let n=e.currentTarget,r=n.naturalWidth>0&&n.naturalHeight>0&&(n.naturalWidth<d||n.naturalHeight<u);F(e=>{let n=new Set(e);return r?n.add(t):n.delete(t),n})},L=({scales:e})=>{if(!e)return;let t=Object.keys(e);return t.length===0?null:t.map(t=>l.default.createElement(Nt,{key:t},l.default.createElement(`a`,{href:fs(e[t],t),className:`text-white`,target:`_blank`,rel:`noopener noreferrer`},t)))};return l.default.createElement(Z,{className:C},g,l.default.createElement(Z,{className:y},n&&l.default.createElement(fo,{label:n,required:s}),l.default.createElement(`div`,{className:`flex gap-2 flex-wrap`},b.map((e,t)=>l.default.createElement(`div`,{key:t,className:`relative overflow-hidden rounded-lg border border-border`,style:{width:d,height:u},onMouseEnter:()=>N(t),onMouseLeave:()=>N(null)},e.progress===100?l.default.createElement(l.default.Fragment,null,P.has(e.key)&&l.default.createElement(l.default.Fragment,null,l.default.createElement(`div`,{className:`absolute inset-0 dark:hidden`,style:{backgroundColor:`#f0f0f0`,backgroundImage:`linear-gradient(45deg,#dcdcdc 25%,transparent 25%),linear-gradient(-45deg,#dcdcdc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#dcdcdc 75%),linear-gradient(-45deg,transparent 75%,#dcdcdc 75%)`,backgroundSize:`10px 10px`,backgroundPosition:`0 0,0 5px,5px -5px,-5px 0`}}),l.default.createElement(`div`,{className:`absolute inset-0 hidden dark:block`,style:{backgroundColor:`#1a1a1a`,backgroundImage:`linear-gradient(45deg,#272727 25%,transparent 25%),linear-gradient(-45deg,#272727 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#272727 75%),linear-gradient(-45deg,transparent 75%,#272727 75%)`,backgroundSize:`10px 10px`,backgroundPosition:`0 0,0 5px,5px -5px,-5px 0`}})),l.default.createElement(`img`,{src:fs(e),alt:`preview-${t}`,className:`absolute inset-0 w-full h-full ${P.has(e.key)?`object-contain p-1`:`object-cover`}`,onLoad:t=>I(t,e.key)}),l.default.createElement(`div`,{className:`absolute inset-0 bg-black/55 backdrop-blur-[1px] flex flex-col items-center justify-end pb-2 gap-1 transition-opacity`,style:{display:M===t?`flex`:`none`}},l.default.createElement(`div`,{className:`flex items-center gap-1.5`},l.default.createElement(`a`,{href:fs(e),target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center justify-center w-7 h-7 rounded-full bg-white/20 hover:bg-white/35 text-white transition-colors`},l.default.createElement(Q,{name:`eye`,className:`w-4 h-4`})),i&&l.default.createElement(`button`,{type:`button`,onClick:()=>O(e),className:`flex items-center justify-center w-7 h-7 rounded-full bg-white/20 hover:bg-white/35 text-white transition-colors`},l.default.createElement(Q,{name:`pencil`,className:`w-4 h-4`})),l.default.createElement(`button`,{type:`button`,onClick:t=>{t.preventDefault(),t.stopPropagation(),E(e.key)},className:`flex items-center justify-center w-7 h-7 rounded-full bg-red-500/70 hover:bg-red-500/90 text-white transition-colors`},l.default.createElement(Q,{name:`x`,className:`w-4 h-4`}))),i&&e.variants&&Object.keys(e.variants).length>0&&l.default.createElement(`div`,{className:`flex flex-wrap gap-1 px-1`},l.default.createElement(L,{scales:e.variants})))):l.default.createElement(ja,{max:100,min:0,value:e.progress,appearance:`circle`}))),us(b,c,a)&&l.default.createElement(cs,{name:e,fileInputRef:S,accept:o,onUpload:T,onChange:w,required:s,multiple:a,height:u,width:d,feedback:r})),A&&l.default.createElement(qa,{message:A})),i&&x&&l.default.createElement(ls,{title:j.editorImage,file:x,type:`img`,onSave:D,onClose:k}),_)},hs={US:`United States`,CN:`中国`,IT:`Italia`,FR:`France`,DE:`Deutschland`,ES:`España`,PT:`Portugal`,RU:`Россия`,JP:`日本`},gs={it:`Italiano`,en:`English`,fr:`Français`,de:`Deutsch`,es:`Español`,pt:`Português`,ru:`Русский`,ja:`日本語`,ko:`한국어`},_s=(e=!1)=>{let t=typeof localStorage<`u`?localStorage.getItem(`user.country`):null,n=typeof navigator<`u`?navigator.language.split(`-`)[1]:null,r=t||n||`US`;return e?r:hs[r]},vs=(e=!1)=>{let t=typeof localStorage<`u`?localStorage.getItem(`user.lang`):null,n=typeof navigator<`u`?navigator.language.split(`-`)[0]:null,r=t||n||`en`;return e?r:gs[r]},ys=`Please ignore all previous instructions.`,bs=`Do not repeat yourself. Do not self reference. Do not explain what you are doing.`;`${ys}`,`${ys}${bs}`,`${ys}${bs}`,`${ys}${bs}`,`${ys}${bs}`,`${ys}${bs}`,`${ys}${bs}`,`${ys}${bs}`,`${ys}${bs}`,`${ys}${bs}`,`${ys}${bs}`,`${ys}${bs}`,`${ys}${bs}`;var xs=`default`,Ss=`Informative`,Cs=`Argumentative`,ws=`Authoritative.Caring.Casual.Cheerful.Coarse.Conservative.Conversational.Creative.Dry.Edgy.Enthusiastic.Expository.Formal.Frank.Friendly.Fun.Funny.Humorous.Informative.Irreverent.Journalistic.Matter of fact.Nostalgic.Objective.Passionate.Poetic.Playful.Professional.Provocative.Quirky.Respectful.Romantic.Sarcastic.Serious.Smart.Snarky.Subjective.Sympathetic.Trendy.Trustworthy.Unapologetic.Upbeat.Witty`.split(`.`),Ts=[`Academic`,`Analytical`,`Argumentative`,`Conversational`,`Creative`,`Critical`,`Descriptive`,`Epigrammatic`,`Epistolary`,`Expository`,`Informative`,`Instructive`,`Journalistic`,`Metaphorical`,`Narrative`,`Persuasive`,`Poetic`,`Satirical`,`Technical`],Es={default:`You are a highly skilled and versatile AI assistant who can adapt to any task or context. You write in fluent {language}, using a {voice} tone of voice and a {style} writing style. You provide clear, concise, and well-structured responses, ensuring both accuracy and creativity according to the user's needs.`,copywriter:`You are an expert copywriter who writes catchy text in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,seo_expert:`You are an experienced SEO specialist who writes optimized, keyword-rich content in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,storyteller:`You are a talented storyteller who crafts engaging narratives in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,translator:`You are a professional translator who accurately translates content into {language}, maintaining meaning, nuance, and cultural relevance. You have a {voice} tone of voice. You have a {style} writing style.`,marketing_strategist:`You are a skilled marketing strategist who creates persuasive campaigns in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,teacher:`You are a knowledgeable teacher who explains concepts clearly and simply in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,technical_writer:`You are a precise and detail-oriented technical writer who produces clear documentation in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,interviewer:`You are a skilled interviewer who formulates relevant and engaging questions in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,product_describer:`You are an e-commerce product description specialist who writes compelling, benefit-focused descriptions in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,social_media_manager:`You are a creative social media manager who writes engaging, platform-specific posts in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,ux_writer:`You are a UX writer who creates clear, concise, and user-friendly interface text in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,press_officer:`You are an experienced press officer who writes impactful press releases in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,legal_drafter:`You are a legal expert who drafts precise and compliant legal texts in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,recruiter:`You are a professional recruiter who writes compelling job descriptions and outreach messages in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,news_reporter:`You are a news reporter who writes objective and concise news articles in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,search_intent_analyst:`You are a keyword research expert who analyzes search intent from given keywords and writes in fluent {language}.`,keyword_generator:`You are a keyword research expert who generates related keywords in fluent {language}.`,long_tail_keyword_generator:`You are a keyword research expert who generates long-tail keywords in fluent {language}.`,seo_content_planner:`You are a market research expert and SEO strategist who develops a full SEO content plan in fluent {language}.`,blog_title_specialist:`You are an expert copywriter who writes catchy blog after titles in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,blog_description_specialist:`You are an expert copywriter who writes compelling blog after descriptions in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,blog_outline_specialist:`You are an expert copywriter who creates structured content outlines in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,blog_writer_from_outline:`You are an expert copywriter who writes complete blog posts from outlines in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,blog_writer_from_topic:`You are an expert copywriter who writes complete blog posts from topics in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,blog_intro_specialist:`You are an expert copywriter who writes engaging introductions using known copywriting frameworks in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,paragraph_writer:`You are an expert copywriter who writes single, impactful paragraphs in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,dictionary_writer:`You are a copywriter who writes concise and clear definitions in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`,creative_free_writer:`You are an expert copywriter who writes any kind of catchy text in fluent {language}. You have a {voice} tone of voice. You have a {style} writing style.`},Ds=class{static getRoles(){return Object.keys(Es)}static getLangs(){return Object.values(gs)}static getCountries(){return Object.values(hs)}static getVoices(){return ws}static getStyles(){return Ts}static defaults(){return{role:xs,language:vs(),country:_s(),voice:localStorage.getItem(`prompt.voice`)||Ss,style:localStorage.getItem(`prompt.style`)||Cs}}static parseRole(e,t={}){return N.parse({...this.defaults(),...t},Es[e??this.defaults().role])}static parsePrompt(e,t={}){return N.parse({...this.defaults(),...t},e)}},Os=(e,t)=>`${e}/${t}`,ks=e=>{if(!e)return null;let t=e.indexOf(`/`);return t<=0||t===e.length-1?null:{provider:e.slice(0,t),model:e.slice(t+1)}},As=(0,l.createContext)(null),js=({registry:e,defaultKey:t,children:n})=>{let r=(0,l.useMemo)(()=>({registry:e,defaultKey:t}),[e,t]);return l.default.createElement(As.Provider,{value:r},n)},Ms=e=>{let t=(0,l.useContext)(As);if(!t)return null;let n=e??t.defaultKey;return t.registry[n]??null},Ns=()=>(0,l.useContext)(As),Ps=`x-llmnative-proxy`,Fs=e=>{if(!e||e.startsWith(`/`))return!1;try{let t=new URL(e);if(typeof window<`u`){let e=new URL(window.location.href);if(t.origin===e.origin||[`localhost`,`127.0.0.1`].includes(t.hostname)&&[`localhost`,`127.0.0.1`].includes(e.hostname))return!1}return!0}catch{return!1}},Is=null,Ls=e=>{Is=e??null};ai(e=>{Ls(e.proxy)});var Rs=(e,t)=>{if(!Is?.enabled)return globalThis.fetch(e,t);let n=typeof e==`string`?e:e instanceof URL?e.toString():e.url;if(!Fs(n))return globalThis.fetch(e,t);let r=Is.route?.trim()||`/api/proxy`,i=`${r}${r.includes(`?`)?`&`:`?`}url=${encodeURIComponent(n)}`,a=e instanceof Request?e.headers:t?.headers,o=new Headers(a);o.set(Ps,`1`);let s=(e instanceof Request?e.method:t?.method??`GET`).toUpperCase(),c=[`GET`,`HEAD`].includes(s)?void 0:t?.body??(e instanceof Request?e.body:void 0);return globalThis.fetch(i,{method:s,headers:o,body:c,...c instanceof ReadableStream?{duplex:`half`}:{},signal:t?.signal??(e instanceof Request?e.signal:void 0)})},zs=()=>Rs,Bs=()=>!!Is?.enabled,Vs=`ai.models.`,Hs=1e3*60*60*24,Us=e=>{if(e instanceof Error)return e.message;if(typeof e==`object`&&e){let t=e;if(t.error&&typeof t.error==`object`){let e=t.error;if(typeof e.message==`string`)return e.message;if(typeof e.type==`string`)return e.type}if(typeof t.error==`string`)return t.error;if(typeof t.message==`string`)return t.message;if(typeof t.detail==`string`)return t.detail;if(typeof t.status==`number`)return`HTTP ${t.status}`;try{return JSON.stringify(t)}catch{}}return String(e)},Ws=e=>{let t=Bs()?`The proxy is enabled but the request still failed - check that the proxy route is reachable.`:`No proxy is enabled. Cross-origin AI requests are blocked by CORS in the browser. Set VITE_PROXY_ENABLED=true and VITE_PROXY_PROVIDER=viteDevProxy to route requests server-side.`;return Error(`${e} request failed (CORS). ${t}`)},Gs=e=>typeof e==`string`?e:Array.isArray(e)&&e.map(e=>typeof e==`string`?e:e&&typeof e==`object`&&`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
|
|
5
|
+
`)||null,Ks=e=>{if(typeof localStorage>`u`)return null;try{let t=localStorage.getItem(`${Vs}${e}`);if(!t)return null;let n=JSON.parse(t);return!n.fetchedAt||!Array.isArray(n.items)||Date.now()-n.fetchedAt>Hs?null:n.items}catch{return null}},qs=(e,t)=>{if(!(typeof localStorage>`u`))try{localStorage.setItem(`${Vs}${e}`,JSON.stringify({fetchedAt:Date.now(),items:t}))}catch{}},Js=(e,t,n)=>n.map(n=>({id:Os(e,n),provider:e,model:n,label:`${t} / ${n}`})),Ys=async(e,t=!1)=>{let n=await Promise.all(Object.entries(e).map(async([e,n])=>[e,await n.getCapabilities(t)])),r=n.reduce((e,[t,n])=>(e[t]=n,e),{}),i=n.reduce((e,[t,n])=>(e[t]=n.models,e),{}),a=new Set;return{models:n.flatMap(([,e])=>e.models).filter(e=>a.has(e.id)?!1:(a.add(e.id),!0)),modelsByProvider:i,capabilitiesByProvider:r}},Xs=class{id;label;defaultModel;dashboardUrl;definition;apiKey;constructor(e,t){this.definition=e,this.id=e.id,this.label=e.label,this.defaultModel=e.defaultModel,this.dashboardUrl=e.dashboardUrl,this.apiKey=t}isConfigured(){return!!this.apiKey}getConfigurationState(){let e=this.definition.requiredConfigKeys??(this.definition.configKey?[`ai.${this.definition.configKey}`]:[]);return Hn(`AIProvider:${this.id}`,this.isConfigured()?[]:e)}async getCapabilities(e=!1){let t=e?null:Ks(this.id);if(t)return{...this.definition.capabilities,models:t};let n=Js(this.id,this.label,this.definition.fallbackModels);try{let e=await this.definition.discoverModels(this.apiKey);e.length>0&&(n=Js(this.id,this.label,e))}catch(e){console.warn(`AIProvider:${this.id} model discovery failed`,e)}return qs(this.id,n),{...this.definition.capabilities,models:n}}complete(e){return this.definition.complete(this.apiKey,{...e,model:e.model||this.defaultModel,prompt:Ds.parsePrompt(e.prompt,{...e.data,...e})})}async validateApiKey(){let e=this.definition.dashboardUrl;if(this.definition.validateApiKey)return{...await this.definition.validateApiKey(this.apiKey),dashboardUrl:e};try{return await this.definition.discoverModels(this.apiKey),{valid:!0,dashboardUrl:e}}catch(t){return{valid:!1,error:Us(t),dashboardUrl:e}}}},Zs=10,Qs=e=>{if(e instanceof HTMLTextAreaElement)return!0;if(!(e instanceof HTMLInputElement))return!1;let t=e.type.toLowerCase();return t===``||[`text`,`search`,`email`,`url`,`tel`].includes(t)},$s=e=>e.getClientRects().length>0&&window.getComputedStyle(e).visibility!==`hidden`,ec=e=>Array.from(e.querySelectorAll(`textarea, input`)).filter(Qs),tc=(e,t)=>{let n=document.activeElement;if(Qs(n)&&e.contains(n)&&$s(n))return n;if(t&&e.contains(t)&&$s(t))return t;let r=ec(e);return r.find($s)??r[0]??null},nc=({label:e,value:t,icon:n,description:r,className:i,onSelect:a,active:o})=>l.default.createElement(`button`,{type:`button`,role:`menuitem`,className:X(`flex w-full cursor-pointer select-none items-start gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground`,o&&`bg-accent text-accent-foreground`,i),onMouseDown:i=>{i.preventDefault(),i.stopPropagation(),a?.({label:e,value:t,icon:n,description:r})}},n&&l.default.createElement(Q,{name:n,size:16,className:`mt-0.5 shrink-0 text-muted-foreground`}),l.default.createElement(`span`,{className:`min-w-0 flex-1 text-left`},l.default.createElement(`span`,{className:`block truncate`},e),r&&l.default.createElement(`span`,{className:`block truncate text-xs text-muted-foreground`},r))),rc=({children:e,className:t})=>l.default.createElement(`div`,{className:X(`px-2 py-1.5 text-xs font-medium uppercase tracking-wide text-muted-foreground`,t)},e),ic=({className:e})=>l.default.createElement(`div`,{className:X(`-mx-1 my-1 h-px bg-border`,e)}),ac=new Set([rc,ic]),oc=(e,t)=>{if(!t)return!1;let n=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return RegExp(`^\\s*${n}`).test(e)},sc=(e,t)=>{if(!t)return 0;let n=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return e.match(RegExp(`^\\s*${n}`))?.[0].length??0},cc=(e,t,n,r)=>{if(!n)return null;let i=e.slice(0,t),a=i.lastIndexOf(n);if(a===-1)return null;if(r?.requireWhitespacePrefix){let e=a===0?``:i[a-1];if(e&&!/\s/.test(e))return null}let o=i.slice(a+n.length);return(r?.queryPattern?!r.queryPattern.test(o):/\s/.test(o))?null:{query:o,start:a,end:t}},lc=(e,t,n)=>cc(e,t,n),uc=e=>({value:e.value.slice(0,e.triggerRange.start)+e.value.slice(e.triggerRange.end),textBeforeCaret:e.value.slice(0,e.triggerRange.start),textAfterCaret:e.value.slice(e.triggerRange.end),trigger:e.trigger,query:e.query}),dc=(e,t)=>{let n=window.getComputedStyle(e),r=e.getBoundingClientRect(),i=parseFloat(n.lineHeight)||20,a=parseFloat(n.borderLeftWidth)||0,o=parseFloat(n.paddingLeft)||0,s=e.value.slice(0,t.start),c=s.lastIndexOf(`
|
|
6
|
+
`)+1,l=e.value.slice(c,t.start),u=s.split(`
|
|
7
|
+
`).length-1,d=document.createElement(`span`);d.style.all=`initial`;for(let e of[`fontFamily`,`fontSize`,`fontWeight`,`fontStyle`,`fontVariant`,`letterSpacing`,`wordSpacing`,`lineHeight`,`textAlign`,`textIndent`,`textRendering`,`textTransform`,`whiteSpace`,`wordBreak`,`wordWrap`]){let t=n.getPropertyValue(e);t&&d.style.setProperty(e,t)}d.style.whiteSpace=`pre`,d.style.position=`absolute`,d.style.visibility=`hidden`,d.style.pointerEvents=`none`,d.style.margin=`0`,d.style.padding=`0`,d.style.border=`0`,d.textContent=l,document.body.appendChild(d);let f=d.offsetWidth;return document.body.removeChild(d),{left:r.left+a+o+f-e.scrollLeft,top:r.top+(u+1)*i-e.scrollTop}},fc=(e,t)=>{let n=e.selectionStart??e.value.length,r=e.selectionEnd??n,i=e.value;return lc(i,n,t)?((n,r,i=r)=>{let a=lc(n,r,t)??{query:``,start:r,end:r};return{value:n,textBeforeCaret:n.slice(0,r),textAfterCaret:n.slice(i),trigger:t,query:a.query,triggerRange:{start:a.start,end:a.end},insert:t=>{let r=e.selectionStart??n.length,i=e.selectionEnd??r;e.value=n.slice(0,r)+t+n.slice(i),e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.selectionStart=e.selectionEnd=r+t.length,e.focus()},replace:(t,r,i)=>{e.value=n.slice(0,t)+i+n.slice(r),e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.selectionStart=e.selectionEnd=t+i.length,e.focus()}}})(i,n,r):null},pc=(0,l.forwardRef)(({trigger:e,searchable:t=!1,controlled:n,onSelect:r,children:i,before:a,after:o,wrapperClassName:s,className:c},u)=>{let d=(0,l.useId)(),f=(0,l.useRef)(null),p=(0,l.useRef)(null),m=(0,l.useRef)(null),[g,_]=(0,l.useState)(0),[v,y]=(0,l.useState)({open:!1,anchorPosition:null,query:``,editorContext:null}),b=(0,l.useMemo)(()=>{let e=[];return l.default.Children.forEach(i,t=>{l.default.isValidElement(t)&&t.type===nc&&e.push({label:t.props.label,value:t.props.value,icon:t.props.icon,description:t.props.description})}),e},[i]),x=n?{open:n.open,anchorPosition:n.anchorPosition,query:n.query,editorContext:n.editorContext}:v,S=(0,l.useMemo)(()=>{if(!x.query)return b;let e=x.query.toLowerCase();return b.filter(t=>t.label.toLowerCase().includes(e)||t.value.toLowerCase().includes(e))},[b,x.query]),C=(0,l.useCallback)(()=>{if(n){n.onClose();return}y({open:!1,anchorPosition:null,query:``,editorContext:null})},[n]),w=(0,l.useCallback)(e=>{let t=x.editorContext;t&&(r?r(e,t):t.replace(t.triggerRange.start,t.triggerRange.end,e.value),C())},[C,r,x.editorContext]);(0,l.useImperativeHandle)(u,()=>({moveNext:()=>{!x.open||S.length===0||_(e=>(e+1)%S.length)},movePrev:()=>{!x.open||S.length===0||_(e=>(e-1+S.length)%S.length)},selectActive:()=>{!x.open||S.length===0||w(S[g]??S[0])},close:()=>{C()}}),[g,C,S,x.open,w]),(0,l.useEffect)(()=>{_(0)},[x.query]),(0,l.useEffect)(()=>{if(n)return;let t=f.current;if(!t)return;let r=ec(t);if(r.length===0)return;m.current=tc(t,m.current);let i=()=>{let n=tc(t,m.current);if(!n)return;m.current=n;let r=n.selectionStart??n.value.length,i=lc(n.value,r,e);if(!i){y(e=>e.open?{open:!1,anchorPosition:null,query:``,editorContext:null}:e);return}let a=dc(n,i),o=fc(n,e);!a||!o||y({open:!0,anchorPosition:a,query:i.query,editorContext:o})},a=e=>{let t=e;if(v.open)switch(t.key){case`ArrowDown`:if(S.length===0)return;t.preventDefault(),_(e=>(e+1)%S.length);return;case`ArrowUp`:if(S.length===0)return;t.preventDefault(),_(e=>(e-1+S.length)%S.length);return;case`Enter`:case`Tab`:if(S.length===0)return;t.preventDefault(),w(S[g]??S[0]);return;case`Escape`:t.preventDefault(),C();return;default:return}},o=e=>{let t=e;[`ArrowDown`,`ArrowUp`,`Enter`,`Tab`,`Escape`].includes(t.key)||i()},s=()=>{i()},c=e=>{let n=Qs(e.target)?e.target:null;m.current=n&&$s(n)?n:tc(t,m.current),i()},l=()=>{window.setTimeout(()=>{let e=document.activeElement,t=p.current?.contains(e),n=f.current?.contains(e);!t&&!n&&C()},0)};return t.addEventListener(`focusin`,c),r.forEach(e=>{e.addEventListener(`keydown`,a),e.addEventListener(`keyup`,o),e.addEventListener(`input`,o),e.addEventListener(`change`,o),e.addEventListener(`click`,s),e.addEventListener(`blur`,l)}),()=>{t.removeEventListener(`focusin`,c),r.forEach(e=>{e.removeEventListener(`keydown`,a),e.removeEventListener(`keyup`,o),e.removeEventListener(`input`,o),e.removeEventListener(`change`,o),e.removeEventListener(`click`,s),e.removeEventListener(`blur`,l)})}},[g,C,n,S,v.open,w,e]),(0,l.useEffect)(()=>{if(!x.open)return;let e=e=>{let t=e.target,n=f.current?.contains(t),r=p.current?.contains(t);!n&&!r&&C()};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[C,x.open]);let{domChildren:T,renderedItems:E}=(0,l.useMemo)(()=>{let e=[],t=[],n=-1;return l.default.Children.forEach(i,r=>{if(!l.default.isValidElement(r)){e.push(r);return}if(r.type===nc){let e=r.props;if(S.findIndex(t=>t.label===e.label&&t.value===e.value&&t.icon===e.icon)===-1)return;n+=1,t.push(l.default.cloneElement(r,{onSelect:w,active:n===g}));return}if(ac.has(r.type)){t.push(r);return}e.push(r)}),{domChildren:e,renderedItems:t}},[g,i,S,w]);return l.default.createElement(l.default.Fragment,null,l.default.createElement(`div`,{ref:f,className:X(c,s)},a,T,o),x.open&&x.anchorPosition&&S.length>0&&(0,h.createPortal)(l.default.createElement(`div`,{ref:p,role:`menu`,id:d,className:`fixed z-[200] min-w-44 overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md outline-none`,style:{top:x.anchorPosition.top,left:x.anchorPosition.left,maxHeight:240}},E),document.body))});pc.displayName=`ContextMenu`,pc.Item=nc,pc.Heading=rc,pc.Separator=ic;var mc={"gpt-4o":128e3,"gpt-4o-mini":128e3,"gpt-4-turbo":128e3,"gpt-4":8192,"gpt-3.5-turbo":16385,"claude-opus-4-8":2e5,"claude-sonnet-4-6":2e5,"claude-haiku-4-5":2e5,"claude-3-5-sonnet-20241022":2e5,"claude-3-5-haiku-20241022":2e5,"gemini-2.0-flash":1048576,"gemini-1.5-pro":2097152,"gemini-1.5-flash":1048576,"deepseek-chat":64e3,"deepseek-coder":128e3,"mistral-large-latest":131072,"mistral-medium":32768,"mistral-small-latest":131072,"open-mistral-nemo":128e3,"llama-3.1-70b-instruct":131072,"llama-3.1-8b-instruct":131072},hc={"gpt-4o":[2.5,10],"gpt-4o-mini":[.15,.6],"gpt-4-turbo":[10,30],"gpt-4":[30,60],"gpt-3.5-turbo":[.5,1.5],"claude-opus-4-8":[15,75],"claude-sonnet-4-6":[3,15],"claude-haiku-4-5":[.8,4],"claude-3-5-sonnet-20241022":[3,15],"claude-3-5-haiku-20241022":[.8,4],"gemini-2.0-flash":[.1,.4],"gemini-1.5-pro":[1.25,5],"gemini-1.5-flash":[.075,.3],"deepseek-chat":[.14,.28],"mistral-large-latest":[2,6],"mistral-medium":[2.7,8.1],"mistral-small-latest":[.1,.3]},gc=e=>ks(e)?.model??e,_c=e=>new Promise((t,n)=>{if(typeof FileReader>`u`){n(Error(`FileReader is not available in this environment.`));return}let r=new FileReader;r.onload=()=>t(String(r.result??``)),r.onerror=()=>n(r.error??Error(`Failed to read file "${e.name}".`)),r.readAsDataURL(e)}),vc={countTokens(e){return Math.ceil(e.length/4)},modelContextWindow(e){return mc[gc(e)]??null},contextPercent(e,t){let n=vc.modelContextWindow(t);return!n||n<=0?0:Math.min(100,e/n*100)},estimateCost(e,t,n){let r=hc[gc(n)];return r?(e*r[0]+t*r[1])/1e6:NaN},async fileToAttachment(e){let t=await _c(e),n=t.includes(`,`)?t.split(`,`)[1]:``;return{mimeType:e.type||`application/octet-stream`,base64:n,name:e.name}}},yc=function(e){return e.EDIT=`edit`,e.RUN=`run`,e}({}),bc=`space-y-2`,xc=`flex items-center justify-between gap-3`,Sc=`mb-0 min-w-0 text-sm font-medium leading-5 text-foreground`,Cc=`ml-auto shrink-0`,wc=()=>[],Tc=(e,t=`Prompt execution failed.`)=>{if(e instanceof Error&&e.message)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){if(`reason`in e&&typeof e.reason==`string`)return e.reason;if(`error`in e&&typeof e.error==`string`)return e.error;if(`message`in e&&typeof e.message==`string`)return e.message}return t},Ec=({htmlFor:e,label:t,required:n=!1,action:r})=>l.default.createElement(`div`,{className:xc},l.default.createElement(fo,{htmlFor:e,label:t,required:n,className:Sc}),r?l.default.createElement(`div`,{className:Cc},r):null);function Dc(){let e=Ns(),[t,n]=(0,l.useState)({modelOptions:wc(),capabilitiesByProvider:{}});return(0,l.useEffect)(()=>{let t=!1;return(async()=>{if(!e||Object.keys(e.registry).length===0){t||n({modelOptions:wc(),capabilitiesByProvider:{}});return}let r=await Ys(e.registry);if(t)return;let i=r.models.map(e=>({label:e.label,value:e.id}));n({modelOptions:i.length>0?i:wc(),capabilitiesByProvider:r.capabilitiesByProvider})})(),()=>{t=!0}},[e]),t}function Oc(e,t=!1){let n=Ms(),r=Ns(),i=ks(e),a=Object.keys(r?.registry??{}),o=i?.provider??n?.id??(r?.defaultKey&&a.includes(r.defaultKey)?r.defaultKey:null),s=o?r?.registry[o]??(n?.id===o?n:null):n??null;if(t)return{provider:s,providerId:o,configured:!0};if(a.length===0&&!s)return{provider:null,providerId:null,configured:!1,reason:void 0};let c=Un(s,o?`AI provider "${o}"`:`AI provider`);return{provider:s,providerId:o,configured:c.configured,reason:c.reason}}var kc=({mode:e,availability:t,renderAIUnavailable:n})=>{let r=Y(`prompt`);if(t.configured)return null;let i=n?.({mode:e,providerId:t.providerId,reason:t.reason,configured:t.configured});return i==null?l.default.createElement(ma,{variant:`warning`,icon:`warning`,className:`text-xs leading-5`},e===`edit`?t.reason||r.aiNotConfiguredEdit:t.reason||r.aiNotConfiguredRun):l.default.createElement(l.default.Fragment,null,i)},Ac=({mode:e=`edit`,...t})=>{let{value:n}=Nl({name:t.name}),r=typeof n==`object`&&n&&!Array.isArray(n)?n:void 0,i=jc(r?.prompt?.enabled,t.defaultValue?.enabled,r?.prompt);return e===`edit`?l.default.createElement(Nc,{...t,value:r}):i?l.default.createElement(Rc,{...t,value:r}):l.default.createElement(zc,t)},jc=(e,t,n)=>typeof e==`string`?e===`on`||e===`true`:typeof e==`boolean`?e:typeof e==`number`?e!==0:n&&typeof n==`object`?!1:!!t,Mc=(e,t)=>e?t.toggleOnTitle:t.toggleOffTitle,Nc=({name:e,label:t=void 0,value:n=void 0,required:r=!1,onChange:i=void 0,defaultValue:a=void 0,minHeight:o=160,maxHeight:s=240,before:c=void 0,after:u=void 0,wrapperClassName:d=void 0,className:f=void 0,renderAIUnavailable:p=void 0})=>{let{handleChange:m}=Nl({name:e}),h=J(`prompt`),g=Y(`prompt`),_=t||e,v=jc(n?.prompt?.enabled,a?.enabled,n?.prompt),y=Mc(v,g),b=(0,l.useId)(),x=Oc(n?.prompt?.model?.toString()||a?.model);return l.default.createElement(Z,{className:d||h.Prompt.wrapperClassName},l.default.createElement(`div`,{className:`flex items-center gap-2`},c&&l.default.createElement(`div`,{className:`shrink-0`},c),l.default.createElement(`div`,{className:`${bc} min-w-0 flex-1`},l.default.createElement(Ec,{htmlFor:b,label:v?g.promptLabel+_:_,required:r,action:l.default.createElement(uo,{name:e+`.prompt.enabled`,ariaLabel:y,title:y,defaultValue:v?`on`:``,inheritWrapperClassName:!1,onChange:({event:t})=>{m({target:{name:e+`.prompt.value`,value:t.target.value&&a?.value}})}})}),l.default.createElement(po,{id:b,className:f||h.Prompt.className,name:e+(v?`.prompt.value`:`.value`),defaultValue:v?a?.value:void 0,onChange:i,required:r,inheritWrapperClassName:!1,wrapperClassName:``,minHeight:o,maxHeight:s}),l.default.createElement(kc,{mode:`edit`,availability:x,renderAIUnavailable:p})),u&&l.default.createElement(`div`,{className:`shrink-0`},u)))},Pc=`border-0 shadow-none rounded-none focus-visible:ring-0 resize-none`,Fc=`h-7 w-7 cursor-pointer rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,Ic=`h-7 max-w-[140px] rounded-md px-2 text-xs gap-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground truncate`,Lc=(e,t)=>({value:String(e?.value??t?.value??``),role:String(e?.role??t?.role??``),language:String(e?.language??t?.language??``),voice:String(e?.voice??t?.voice??``),style:String(e?.style??t?.style??``),model:String(e?.model??t?.model??``),temperature:typeof e?.temperature==`number`?e.temperature:t?.temperature}),Rc=({name:e,label:t,value:n,required:r,onChange:i,defaultValue:a,minHeight:o=120,maxHeight:s=160,before:c,after:u,wrapperClassName:d,className:f,onRunPrompt:p,renderAIUnavailable:m,variables:h,commands:g,commandsTrigger:_,attachments:v,actions:y,statusItems:b})=>{let{handleChange:x,record:S}=Nl({name:e}),C=J(`prompt`),w=Y(`prompt`),T=t||e,[E,D]=(0,l.useState)(!1),[O,k]=(0,l.useState)(a?.value??``),[A,j]=(0,l.useState)(!1),[M,N]=(0,l.useState)([]),P=(0,l.useRef)(null),F=l.default.useCallback(e=>{N(t=>(URL.revokeObjectURL(t[e].objectUrl),t.filter((t,n)=>n!==e)))},[]),[I,L]=(0,l.useState)(null),R=(0,l.useRef)(null),z=Ms(),B=Ns(),V=Ds.defaults(),ee=typeof localStorage<`u`&&localStorage.getItem(`prompt.model`)||(z?Os(z.id,z.defaultModel):``),{modelOptions:te,capabilitiesByProvider:ne}=Dc(),H=l.default.useMemo(()=>Lc(n?.prompt,a),[a,n?.prompt]),re=H.model||ee,U=ks(re)?.provider,ie=U?ne[U]:void 0,ae=ie?.supportsTemperature??!0,oe=ie?.supportsVision??!!p,se=ie?.supportsDocuments??!!p,ce=(0,l.useId)(),W=Oc(re,!!p),le=!W.configured,ue=le?W.reason||w.aiNotConfiguredRun:void 0,[G,K]=(0,l.useState)(null),q=!G&&!W.configured?m?.({mode:`run`,providerId:W.providerId,reason:W.reason,configured:W.configured}):null,de=l.default.useMemo(()=>{if(!O)return``;let e={...S,...h};return Ds.parsePrompt(O,e)},[O,S,h]),fe=de!==O,pe=re?(ks(re)?.model||re).split(`/`).pop()||re:null,me=!!ie||!!p,he=!!v&&!E&&(!W.configured&&!p||me&&!oe&&!se),ge=he?!W.configured&&!p?W.reason||w.aiNotConfiguredRun:w.attachmentsNotSupported:w.attachFiles;(0,l.useEffect)(()=>()=>{M.forEach(({objectUrl:e})=>URL.revokeObjectURL(e))},[M]);let _e=g?.length?_??`/`:void 0,ve=(g?.length??0)>=10,ye=l.default.useMemo(()=>new Map((g??[]).map(e=>[e.name,e])),[g]),be=l.default.useMemo(()=>(g??[]).map(e=>({key:e.name,label:`${_e??`/`}${e.name}`,value:e.name,icon:e.icon})),[g,_e]),xe=l.default.useCallback(async(e,t)=>{let n=ye.get(e.value);if(n){if(n.handler){let e=await n.handler(uc(t)),r=n.consumeSuffix?sc(t.textAfterCaret,n.consumeSuffix):0;t.replace(t.triggerRange.start,t.triggerRange.end+r,e);return}t.replace(t.triggerRange.start,t.triggerRange.end,`${t.trigger}${n.name} `)}},[ye]),Se=async()=>{let t=n?.prompt?.model?.toString()||ee,r=ks(t),i=r?B?.registry[r.provider]??z??void 0:z??void 0,a=Date.now();try{let n={...S,...h},r=await Promise.all(M.map(({file:e})=>vc.fileToAttachment(e))),o=await Bc(H,n,p,i,r.length>0?r:void 0,{noProvider:w.noProvider,noResponse:w.noResponse}),s=Date.now()-a;if(K(null),x?.({target:{name:e+`.value`,value:o}}),b&&b.length>0){let e=Ds.parsePrompt(H.value??``,n),r=vc.countTokens(e),i=vc.countTokens(o??``),a=vc.contextPercent(r,t),c=vc.estimateCost(r,i,t);L({tokensIn:r,tokensOut:i,contextPercent:a>0?a:null,model:t,durationMs:s,estimatedCost:isFinite(c)?c:null})}}catch(e){K(Tc(e,w.runFailed))}},Ce=(e,t)=>x?.({target:{name:e,value:t}}),we=l.default.createElement(po,{name:e+`.value`,onChange:i,textareaRef:P,required:r,inheritWrapperClassName:!1,wrapperClassName:``,className:`${f||C.Prompt.className} ${Pc}`,minHeight:o,maxHeight:s});return l.default.createElement(Z,{className:d||C.Prompt.wrapperClassName},l.default.createElement(`div`,{className:`flex items-center gap-2`},c&&l.default.createElement(`div`,{className:`shrink-0`},c),l.default.createElement(`div`,{className:`${bc} min-w-0 flex-1`},T&&l.default.createElement(Ec,{htmlFor:ce,label:E?`${w.promptLabel}${T}`:T,required:r}),l.default.createElement(`div`,{className:`group relative rounded-xl border border-input shadow-sm transition-shadow focus-within:shadow-md focus-within:ring-2 focus-within:ring-offset-0 ${E?`focus-within:ring-warning`:`focus-within:ring-ring`}`},l.default.createElement(`button`,{type:`button`,title:E?w.closeEditor:w.editSettings,className:`absolute right-2 top-2 z-10 flex h-6 w-6 items-center justify-center rounded-md transition-all ${E?`bg-warning/10 text-warning opacity-100`:`bg-background/80 text-muted-foreground opacity-0 group-hover:opacity-100 hover:bg-muted hover:text-foreground`}`,onClick:()=>D(e=>!e)},l.default.createElement(Q,{name:E?`x`:`settings`,size:13})),l.default.createElement(`div`,{className:`overflow-hidden rounded-t-xl`},l.default.createElement(`div`,{className:E?``:`hidden`},l.default.createElement(po,{id:ce,name:e+`.prompt.value`,defaultValue:a?.value,onChange:e=>{k(String(e.event.target.value??``)),i?.(e)},required:!0,inheritWrapperClassName:!1,wrapperClassName:``,className:`${f||C.Prompt.className} ${Pc}`,minHeight:o,maxHeight:s}),E&&fe&&A&&l.default.createElement(`div`,{className:`border-t border-input px-4 py-3 bg-muted/20`},l.default.createElement(`p`,{className:`whitespace-pre-wrap text-sm text-foreground/70`},de))),l.default.createElement(`div`,{className:E?`hidden`:``},M.length>0&&l.default.createElement(`div`,{className:`flex gap-2 overflow-x-auto border-b border-input px-3 py-2.5`},M.map(({file:e,objectUrl:t},n)=>l.default.createElement(`div`,{key:t,className:`relative shrink-0`},e.type.startsWith(`image/`)?l.default.createElement(`div`,{className:`h-16 w-16 overflow-hidden rounded-lg border border-input bg-muted/30`},l.default.createElement(`img`,{src:t,alt:e.name,className:`h-full w-full object-cover`})):l.default.createElement(`div`,{className:`flex items-center gap-2 rounded-lg border border-input bg-muted/30 px-2.5 py-2 text-xs`},l.default.createElement(Q,{name:`file-text`,size:18,className:`shrink-0 text-muted-foreground`}),l.default.createElement(`div`,{className:`max-w-[100px]`},l.default.createElement(`p`,{className:`truncate font-medium text-foreground`},e.name),l.default.createElement(`p`,{className:`text-muted-foreground`},(e.size/1024).toFixed(0),` KB`))),l.default.createElement(`button`,{type:`button`,className:`absolute -right-1.5 -top-1.5 flex h-4 w-4 cursor-pointer items-center justify-center rounded-full bg-foreground text-background shadow`,onClick:()=>F(n)},l.default.createElement(Q,{name:`x`,size:9}))))),_e&&be.length>0?l.default.createElement(pc,{trigger:_e,searchable:ve,onSelect:(e,t)=>{xe(e,t)}},be.map(e=>l.default.createElement(pc.Item,{key:e.key,label:e.label,value:e.value,icon:e.icon})),we):we)),v&&l.default.createElement(`input`,{ref:R,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{if(e.target.files){let t=Array.from(e.target.files).map(e=>({file:e,objectUrl:URL.createObjectURL(e)}));N(e=>[...e,...t]),e.target.value=``}}}),l.default.createElement(`div`,{className:`relative flex items-center gap-1 border-t border-input px-2 py-1 rounded-b-xl`},!E&&(v||(y?.length??0)>0)&&l.default.createElement(l.default.Fragment,null,v&&l.default.createElement(`button`,{type:`button`,title:ge,className:`${Fc} flex items-center justify-center`,disabled:he,onClick:()=>R.current?.click()},l.default.createElement(Q,{name:`paperclip`,size:13})),y?.map(e=>e.key===`tokenUsage`||e.content?l.default.createElement(yr,{key:e.key,trigger:{icon:e.icon,title:e.label},placement:`top`,position:`start`,triggerClassName:Fc},e.key===`tokenUsage`?I?l.default.createElement(`div`,{className:`px-3 py-2 text-xs space-y-1`},l.default.createElement(`p`,{className:`font-medium text-foreground`},w.tokenUsage),l.default.createElement(`p`,{className:`text-muted-foreground`},lt(w.tokenInput,{count:String(I.tokensIn)})),l.default.createElement(`p`,{className:`text-muted-foreground`},lt(w.tokenOutput,{count:String(I.tokensOut)})),I.contextPercent!==null&&l.default.createElement(`p`,{className:`text-muted-foreground`},lt(w.tokenContext,{percent:I.contextPercent.toFixed(1)})),I.estimatedCost!==null&&l.default.createElement(`p`,{className:`text-muted-foreground`},lt(w.tokenCost,{amount:I.estimatedCost.toFixed(5)})),l.default.createElement(`p`,{className:`text-muted-foreground`},lt(w.tokenTime,{seconds:(I.durationMs/1e3).toFixed(1)}))):l.default.createElement(`p`,{className:`px-3 py-2 text-xs text-muted-foreground`},w.tokenUsageEmpty):e.content):l.default.createElement(`button`,{key:e.key,type:`button`,title:e.label,className:`${Fc} flex items-center justify-center`},l.default.createElement(Q,{name:e.icon,size:13}))),l.default.createElement(`div`,{className:`mx-1 h-4 w-px shrink-0 bg-border`})),!E&&!G&&W.configured&&l.default.createElement(l.default.Fragment,null,l.default.createElement(yr,{trigger:{icon:`cpu`,text:pe??`Model`},placement:`top`,position:`start`,triggerClassName:Ic},l.default.createElement(Sr,{onClick:()=>Ce(e+`.prompt.model`,``)},w.defaultOption),te.map(t=>l.default.createElement(Sr,{key:t.value,onClick:()=>Ce(e+`.prompt.model`,t.value)},t.label))),l.default.createElement(yr,{trigger:{icon:`user`,title:`Role`},placement:`top`,position:`start`,triggerClassName:Fc},l.default.createElement(Sr,{onClick:()=>Ce(e+`.prompt.role`,``)},w.defaultOption,` (`,V.role,`)`),Ds.getRoles().map(t=>l.default.createElement(Sr,{key:t,onClick:()=>Ce(e+`.prompt.role`,t)},t))),l.default.createElement(yr,{trigger:{icon:`globe`,title:`Language`},placement:`top`,position:`start`,triggerClassName:Fc},l.default.createElement(Sr,{onClick:()=>Ce(e+`.prompt.language`,``)},w.defaultOption,` (`,V.language,`)`),Ds.getLangs().map(t=>l.default.createElement(Sr,{key:t,onClick:()=>Ce(e+`.prompt.language`,t)},t))),l.default.createElement(yr,{trigger:{icon:`mic`,title:`Voice`},placement:`top`,position:`start`,triggerClassName:Fc},l.default.createElement(Sr,{onClick:()=>Ce(e+`.prompt.voice`,``)},w.defaultOption,` (`,V.voice,`)`),Ds.getVoices().map(t=>l.default.createElement(Sr,{key:t,onClick:()=>Ce(e+`.prompt.voice`,t)},t))),l.default.createElement(yr,{trigger:{icon:`feather`,title:`Style`},placement:`top`,position:`start`,triggerClassName:Fc},l.default.createElement(Sr,{onClick:()=>Ce(e+`.prompt.style`,``)},w.defaultOption,` (`,V.style,`)`),Ds.getStyles().map(t=>l.default.createElement(Sr,{key:t,onClick:()=>Ce(e+`.prompt.style`,t)},t))),ae&&l.default.createElement(yr,{trigger:{icon:`thermometer`,title:`Temperature`},placement:`top`,position:`start`,triggerClassName:Fc},l.default.createElement(Sr,null,l.default.createElement(oo,{name:e+`.prompt.temperature`,label:`Temperature`,defaultValue:a?.temperature,inheritWrapperClassName:!1,min:0,max:1,step:.1})))),l.default.createElement(`div`,{className:`flex-1`}),!E&&(G||!W.configured)&&(q?l.default.createElement(`div`,{className:`mr-1 min-w-0`},q):l.default.createElement(`span`,{className:`flex min-w-0 items-center gap-1 text-xs text-warning truncate mr-1`},l.default.createElement(Q,{name:`triangle-alert`,size:13,className:`shrink-0`}),l.default.createElement(`span`,{className:`truncate`},G??(W.reason||w.aiNotConfiguredShort)))),E&&fe&&l.default.createElement(`button`,{type:`button`,title:A?w.hidePreview:w.showPreview,className:`${Fc} flex items-center justify-center ${A?`bg-muted text-foreground`:``}`,onClick:()=>j(e=>!e)},l.default.createElement(Q,{name:A?`eye-off`:`eye`,size:13})),!E&&l.default.createElement(Cn,{icon:`send`,loadingLabel:``,disabled:le,ariaLabel:w.run,title:ue??w.run,variant:`primary`,className:`!p-0 h-8 w-8`,onClick:Se})),b&&b.length>0&&I&&!E&&l.default.createElement(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-0.5 rounded-b-xl border-t border-input/50 bg-muted/20 px-4 py-1.5 text-[11px] text-muted-foreground`},b.map(e=>{if(typeof e==`string`)switch(e){case`tokensIn`:return l.default.createElement(`span`,{key:`tokensIn`},lt(w.tokenInput,{count:I.tokensIn}));case`tokensOut`:return l.default.createElement(`span`,{key:`tokensOut`},lt(w.tokenOutput,{count:I.tokensOut}));case`contextPercent`:return I.contextPercent===null?null:l.default.createElement(`span`,{key:`ctx`},lt(w.tokenContext,{percent:I.contextPercent.toFixed(1)}));case`model`:return l.default.createElement(`span`,{key:`model`,className:`font-mono`},(ks(I.model)?.model||I.model).split(`/`).pop());case`duration`:return l.default.createElement(`span`,{key:`dur`},lt(w.tokenTime,{seconds:(I.durationMs/1e3).toFixed(1)}));default:return null}return l.default.createElement(`span`,{key:e.key},e.render(I))}),I.estimatedCost!==null&&!b.some(e=>typeof e==`object`&&e.key===`cost`)&&l.default.createElement(`span`,{className:`ml-auto font-mono`},`~$`,I.estimatedCost.toFixed(5))))),u&&l.default.createElement(`div`,{className:`shrink-0`},u)))},zc=({name:e,label:t,required:n,onChange:r,minHeight:i=96,maxHeight:a=120,before:o,after:s,wrapperClassName:c,className:u,renderFallback:d})=>{let f=J(`prompt`),p=(0,l.useId)();return l.default.createElement(Z,{className:c||f.Prompt.wrapperClassName},l.default.createElement(`div`,{className:`flex items-center gap-2`},o&&l.default.createElement(`div`,{className:`shrink-0`},o),l.default.createElement(`div`,{className:`min-w-0 flex-1`},d?.({name:e,label:t,required:n,onChange:r})??l.default.createElement(`div`,{className:bc},t&&l.default.createElement(Ec,{htmlFor:p,label:t,required:n}),l.default.createElement(po,{id:p,className:u||f.Prompt.className,name:e+`.value`,onChange:r,required:n,inheritWrapperClassName:!1,wrapperClassName:``,minHeight:i,maxHeight:a}))),s&&l.default.createElement(`div`,{className:`shrink-0`},s)))},Bc=async(e,t,n,r,i,a)=>{let{value:o,model:s,...c}=e??{};if(n)return n(o,{...c,model:s,attachments:i},t);if(!o)return``;if(!r)throw Error(a?.noProvider??`No AI provider is available for this prompt.`);let l=ks(s)?.model||s||r.defaultModel,u=await r.complete({...c,model:l,prompt:[ys,o,bs].join(`
|
|
8
|
+
`),data:t,attachments:i});if(u?.type!==`text`||!u.text.trim())throw Error(a?.noResponse??`The AI provider returned no response.`);return u.text},Vc=class extends Error{language;from;to;line;column;nodeName;constructor(e,t){super(e),this.name=`CodeSyntaxError`,this.language=t.language,this.from=t.from,this.to=t.to,this.line=t.line,this.column=t.column,this.nodeName=t.nodeName}},Hc={},Uc=null,Wc=e=>{switch(e){case`html`:return async()=>{let{html:e}=await import(`@codemirror/lang-html`);return e({matchClosingTags:!0}).language.parser};case`json`:return async()=>{let{json:e}=await import(`@codemirror/lang-json`);return e().language.parser};case`js`:return async()=>{let{javascript:e}=await import(`@codemirror/lang-javascript`);return e().language.parser};case`ts`:return async()=>{let{javascript:e}=await import(`@codemirror/lang-javascript`);return e({typescript:!0}).language.parser};case`css`:return async()=>{let{css:e}=await import(`@codemirror/lang-css`);return e().language.parser}}},Gc=e=>(Hc[e]??=Wc(e)(),Hc[e]),Kc=async()=>(Uc??=import(`liquidjs`).then(({Liquid:e})=>new e({strictFilters:!0,strictVariables:!0})),Uc),qc=(e,t)=>{let n=1,r=1;for(let i=0;i<t&&i<e.length;i++)e[i]===`
|
|
9
|
+
`?(n+=1,r=1):r+=1;return{line:n,column:r}},Jc=(e,t,n,r,i,a=`Syntax error`)=>{let{line:o,column:s}=qc(e,n);return new Vc(`${a}${i?` near ${i}`:``} at line ${o}, column ${s}.`,{language:t,from:n,to:r,line:o,column:s,nodeName:i})},Yc=e=>{do if(e.type.isError)return{from:e.from,to:e.to,nodeName:e.name};while(e.next());return null},Xc=async(e,t)=>{if(e.trim()){if(t===`liquid`){try{(await Kc()).parse(e)}catch(n){if(n instanceof Vc)throw n;let r=n&&typeof n==`object`&&`token`in n?n.token:void 0,i=r?.begin??0,a=r?.end??i,o=n instanceof Error?n.message.split(`, line:`)[0]:`Invalid Liquid syntax`;throw Jc(e,t,i,a,r?.name,o)}return}try{let n=Yc((await Gc(t)).parse(e).cursor());if(n)throw Jc(e,t,n.from,n.to,n.nodeName)}catch(n){if(n instanceof Vc)throw n;if(t===`json`&&n instanceof Error){let r=n.message.match(/position\s+(\d+)/i),i=r?Number(r[1]):0;throw Jc(e,t,i,i,void 0,`Invalid JSON`)}throw new Vc(`Unable to validate ${t} code.`,{language:t,from:0,to:0,line:1,column:1})}}},Zc=async(e,t)=>{try{return await Xc(e,t),{valid:!0}}catch(e){if(e instanceof Vc)return{valid:!1,error:e};throw e}},Qc=e=>{switch(e){case`html`:return()=>import(`@codemirror/lang-html`).then(e=>e.html());case`liquid`:return()=>import(`@codemirror/lang-liquid`).then(e=>e.liquid());case`json`:return()=>import(`@codemirror/lang-json`).then(e=>e.json());case`js`:return()=>import(`@codemirror/lang-javascript`).then(e=>e.javascript());case`ts`:return()=>import(`@codemirror/lang-javascript`).then(e=>e.javascript({typescript:!0}));case`css`:return()=>import(`@codemirror/lang-css`).then(e=>e.css())}},$c=async e=>{let[t,n,r,i]=await Promise.all([import(`codemirror`),import(`@codemirror/view`),import(`@codemirror/state`),Qc(e)()]);return{basicSetup:t.basicSetup,EditorView:n.EditorView,EditorState:r.EditorState,keymap:n.keymap,language:i,Prec:r.Prec}},el={},tl={},nl=e=>el[e]?Promise.resolve(el[e]):(tl[e]||(tl[e]=$c(e).then(t=>(el[e]=t,t))),tl[e]),rl=(e,t)=>{t.fill?(e.style.height=`100%`,e.style.minHeight=``,e.style.maxHeight=``):(e.style.height=``,e.style.minHeight=`${t.resolvedMinHeight}px`,e.style.maxHeight=t.resolvedMaxHeight?`${t.resolvedMaxHeight}px`:``)},il=(e,t,n)=>cc(e,t,n,{queryPattern:/^[A-Za-z0-9_.-]*$/}),al=(e,t)=>{let n=e.state.doc.toString(),r=e.state.selection.main;if(r.from!==r.to)return null;let i=il(n,r.from,t);return i?{value:n,textBeforeCaret:n.slice(0,r.from),textAfterCaret:n.slice(r.to),trigger:t,query:i.query,triggerRange:{start:i.start,end:i.end},insert:t=>{let n=e.state.selection.main;e.dispatch({changes:{from:n.from,to:n.to,insert:t},selection:{anchor:n.from+t.length}}),e.focus()},replace:(t,n,r)=>{e.dispatch({changes:{from:t,to:n,insert:r},selection:{anchor:t+r.length}}),e.focus()}}:null},ol=({name:e,onChange:t=void 0,defaultValue:n=void 0,className:r=void 0,label:i,language:a=`html`,placeholder:o,minHeight:s,maxHeight:c,required:u,disabled:d,feedback:f,labelClassName:p,validateSyntax:m=!0,validator:h,extensions:g,commands:_,commandsTrigger:v,wrapperClassName:y,inheritWrapperClassName:b=!0,before:x,after:S})=>{let C=(0,l.useId)(),w=J(`CodeEditor`),T=Na({minHeight:s,maxHeight:c}),{value:E,handleChange:D,formWrapClass:O}=Nl({name:e,onChange:t,defaultValue:n,wrapperClassName:y,inheritWrapperClassName:b}),k=Ml(e,{required:u,label:i,validator:async e=>{let t=typeof e==`string`?e:`${e??``}`;if(m)try{await Xc(t,a)}catch(e){if(e instanceof Vc)return e.message;throw e}return await h?.(e)}}),A=(0,l.useRef)(null),j=(0,l.useRef)(null),M=(0,l.useRef)(null),[N,P]=(0,l.useState)(!0),[F,I]=(0,l.useState)({open:!1,query:``,anchorPosition:null,editorContext:null}),L=(0,l.useRef)(E??``),R=(0,l.useRef)(F);R.current=F;let z=_?.length?v??`/`:void 0,B=(_?.length??0)>=10,V=l.default.useMemo(()=>new Map((_??[]).map(e=>[e.name,e])),[_]),ee=l.default.useMemo(()=>(_??[]).map(e=>({key:e.name,label:`${z??`/`}${e.name}`,value:e.name,icon:e.icon,description:e.description,group:e.group})),[_,z]),te=l.default.useMemo(()=>{let e=[],t;return ee.forEach(n=>{n.group!==t&&(t=n.group,n.group&&e.push(l.default.createElement(pc.Heading,{key:`group:${n.group}`},n.group))),e.push(l.default.createElement(pc.Item,{key:n.key,label:n.label,value:n.value,icon:n.icon,description:n.description}))}),e},[ee]);(0,l.useEffect)(()=>{j.current||(L.current=E??``)},[E]);let ne=(0,l.useCallback)(t=>{L.current=t,D({target:{name:e,value:t}})},[D,e]),H=(0,l.useCallback)(()=>{I({open:!1,query:``,anchorPosition:null,editorContext:null})},[]),re=(0,l.useCallback)(async(e,t)=>{let n=V.get(e.value);if(n){if(n.handler){let e=await n.handler(uc(t)),r=n.consumeSuffix?sc(t.textAfterCaret,n.consumeSuffix):0;t.replace(t.triggerRange.start,t.triggerRange.end+r,e);return}t.replace(t.triggerRange.start,t.triggerRange.end,`${t.trigger}${n.name} `)}},[V]);(0,l.useEffect)(()=>{let e=!1,t=null;return nl(a).then(n=>{if(e||!A.current)return;let r=n.EditorView.theme({"&":{backgroundColor:`hsl(var(--rf-background))`,height:`100%`},".cm-scroller":{fontFamily:`var(--font-mono, ui-monospace, SFMono-Regular, monospace)`,paddingBottom:`0.5rem`,minHeight:`100%`},".cm-content":{caretColor:`hsl(var(--rf-foreground))`,color:`hsl(var(--rf-foreground))`,paddingBottom:`0.75rem`,minHeight:`100%`},".cm-cursor, .cm-dropCursor":{borderLeftColor:`hsl(var(--rf-primary))`},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:`hsl(var(--rf-primary)) !important`},".cm-activeLine":{backgroundColor:`hsl(var(--rf-muted) / 0.6)`},".cm-gutters":{backgroundColor:`hsl(var(--rf-muted))`,color:`hsl(var(--rf-muted-foreground))`,border:`none`},".cm-activeLineGutter":{backgroundColor:`hsl(var(--rf-accent))`},".cm-foldPlaceholder":{backgroundColor:`hsl(var(--rf-muted))`,color:`hsl(var(--rf-muted-foreground))`},".cm-tooltip":{backgroundColor:`hsl(var(--rf-popover))`,border:`1px solid hsl(var(--rf-border))`,color:`hsl(var(--rf-popover-foreground))`},".cm-tooltip-autocomplete ul li[aria-selected]":{backgroundColor:`hsl(var(--rf-accent))`,color:`hsl(var(--rf-accent-foreground))`},"&.cm-focused":{outline:`none`},".cm-placeholder":{color:`hsl(var(--rf-muted-foreground))`}}),i=[n.basicSetup,n.language,r,n.EditorView.updateListener.of(e=>{e.docChanged&&ne(e.state.doc.toString())}),...g??[]];z&&i.push(n.EditorView.updateListener.of(e=>{let t=e.state.selection.main;if(t.from!==t.to){R.current.open&&H();return}let n=il(e.state.doc.toString(),t.from,z);if(!n){R.current.open&&H();return}let r=e.view.coordsAtPos(t.from),i=al(e.view,z);!r||!i||I({open:!0,query:n.query,anchorPosition:{top:r.bottom,left:r.left},editorContext:i})}),n.Prec.highest(n.keymap.of([{key:`ArrowDown`,run:()=>R.current.open?(M.current?.moveNext(),!0):!1},{key:`ArrowUp`,run:()=>R.current.open?(M.current?.movePrev(),!0):!1},{key:`Enter`,run:()=>R.current.open?(M.current?.selectActive(),!0):!1},{key:`Tab`,run:()=>R.current.open?(M.current?.selectActive(),!0):!1},{key:`Escape`,run:()=>R.current.open?(M.current?.close(),!0):!1}])),n.EditorView.domEventHandlers({keydown:e=>{if(!R.current.open)return!1;switch(e.key){case`ArrowDown`:return e.preventDefault(),M.current?.moveNext(),!0;case`ArrowUp`:return e.preventDefault(),M.current?.movePrev(),!0;case`Enter`:case`Tab`:return e.preventDefault(),M.current?.selectActive(),!0;case`Escape`:return e.preventDefault(),M.current?.close(),!0;default:return!1}}})),d&&i.push(n.EditorView.editable.of(!1));let a=n.EditorState.create({doc:L.current,extensions:i});t=new n.EditorView({state:a,parent:A.current}),rl(t.scrollDOM,T),j.current=t,P(!1)}).catch(t=>{e||(console.error(`[CodeEditor] Failed to load CodeMirror:`,t),P(!1))}),()=>{e=!0,t&&(t.destroy(),j.current=null)}},[H,g,d,a,ne,o,z]),(0,l.useEffect)(()=>{let e=E??``,t=j.current;t&&e!==L.current&&(L.current=e,t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e}}))},[E]),(0,l.useEffect)(()=>{let e=j.current;e&&rl(e.scrollDOM,T)},[T.fill,T.resolvedMinHeight,T.resolvedMaxHeight]);let U=X(`w-full overflow-hidden border border-input`,w.CodeEditor?.className,r,N&&`flex items-center justify-center bg-muted text-muted-foreground text-sm`,k&&`border-destructive`,x?`rounded-l-none`:`rounded-l-md`,S?`rounded-r-none`:`rounded-r-md`),ie=l.default.createElement(`div`,{className:X(`min-w-0 flex-1`,T.fill&&`h-full flex flex-col`,U)},N&&l.default.createElement(`div`,{style:{minHeight:T.fill?void 0:T.resolvedMinHeight},className:`flex items-center justify-center`},l.default.createElement(Q,{name:`loader-circle`,size:16,className:`animate-spin text-muted-foreground`})),l.default.createElement(`div`,{ref:A,className:X(N&&`hidden`,T.fill&&`h-full min-h-0 flex-1`)}));return l.default.createElement(Z,{className:X(O,T.fill&&`h-full flex flex-col min-h-0`,w.CodeEditor?.wrapperClassName)},i&&l.default.createElement(fo,{label:i,required:u,htmlFor:C,className:p}),l.default.createElement(`div`,{className:X(x||S?Ra:``,T.fill&&`flex-1 min-h-0 flex flex-col`)},x&&l.default.createElement(`span`,{className:X(`inline-flex shrink-0 items-center border border-input bg-muted px-3 py-1 text-sm text-muted-foreground`,`rounded-l-md rounded-r-none border-r-0`)},x),z&&ee.length>0?l.default.createElement(pc,{ref:M,className:X(T.fill&&`flex-1 min-h-0 flex flex-col`),trigger:z,searchable:B,controlled:F.editorContext?{open:F.open,anchorPosition:F.anchorPosition,query:F.query,editorContext:F.editorContext,onClose:H}:void 0,onSelect:(e,t)=>{re(e,t)}},te,ie):ie,S&&l.default.createElement(`span`,{className:X(`inline-flex shrink-0 items-center border border-input bg-muted px-3 py-1 text-sm text-muted-foreground`,`rounded-l-none rounded-r-md border-l-0`)},S)),k&&l.default.createElement(qa,{message:k}),f&&l.default.createElement(`p`,{className:`mt-1 text-xs text-muted-foreground`},f))},sl={string:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(Xa,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),number:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(Za,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),email:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(Qa,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),password:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement($a,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),color:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(eo,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),date:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(to,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),time:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(no,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),datetime:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(ro,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),week:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(io,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),month:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(ao,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),textarea:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(po,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),checkbox:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(lo,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),switch:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(uo,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),select:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(Eo,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),autocomplete:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(Do,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),checklist:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(Oo,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),uploadImage:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(ms,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),uploadDocument:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(ps,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),prompt:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(Ac,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})}),imageField:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(Ko,{name:t??e.name,label:n??t,...e,...r})}),menu:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue}),render:({name:t,label:n,...r}={})=>l.default.createElement(Eo,{key:t,name:t,label:n??t,...e,...r})}),codeEditor:(e={})=>({__props:e,getDefaults:t=>({[t]:e.defaultValue??``}),render:({name:t,label:n,...r}={})=>l.default.createElement(ol,{key:t??e.name,name:t??e.name,label:n??e.label??t,...e,...r})})},$=sl,cl={layout:Ma,input:sl,schema:{string:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),placeholder:$.string({label:`Placeholder`,defaultValue:e.placeholder}),defaultValue:$.string({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),readOnlyAfterSet:$.switch({label:`Read-only dopo set`,defaultValue:e.readOnlyAfterSet}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),number:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),placeholder:$.string({label:`Placeholder`,defaultValue:e.placeholder}),defaultValue:$.number({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),min:$.number({label:`Minimo`,defaultValue:e.min}),max:$.number({label:`Massimo`,defaultValue:e.max}),step:$.number({label:`Step`,min:0,defaultValue:e.step}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),readOnlyAfterSet:$.switch({label:`Read-only dopo set`,defaultValue:e.readOnlyAfterSet}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),email:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),placeholder:$.string({label:`Placeholder`,defaultValue:e.placeholder}),defaultValue:$.email({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),readOnlyAfterSet:$.switch({label:`Read-only dopo set`,defaultValue:e.readOnlyAfterSet}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),password:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),placeholder:$.string({label:`Placeholder`,defaultValue:e.placeholder}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),readOnlyAfterSet:$.switch({label:`Read-only dopo set`,defaultValue:e.readOnlyAfterSet}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),color:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),defaultValue:$.color({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),date:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),defaultValue:$.date({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),min:$.number({label:`Data minima`,defaultValue:e.min}),max:$.number({label:`Data massima`,defaultValue:e.max}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),time:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),defaultValue:$.time({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),datetime:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),defaultValue:$.datetime({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),week:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),defaultValue:$.week({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),month:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),defaultValue:$.month({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),textarea:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),placeholder:$.string({label:`Placeholder`,defaultValue:e.placeholder}),defaultValue:$.textarea({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),minHeight:$.number({label:`Altezza minima`,min:0,defaultValue:e.minHeight}),maxHeight:$.number({label:`Altezza massima`,min:0,defaultValue:e.maxHeight}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),readOnlyAfterSet:$.switch({label:`Read-only dopo set`,defaultValue:e.readOnlyAfterSet}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),checkbox:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),defaultValue:$.switch({label:`Valore default`,defaultValue:e.defaultValue}),title:$.string({label:`Titolo tooltip`,defaultValue:e.title}),valueChecked:$.string({label:`Valore checked`,defaultValue:e.valueChecked?.toString()})}),switch:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),defaultValue:$.switch({label:`Valore default`,defaultValue:e.defaultValue}),title:$.string({label:`Titolo tooltip`,defaultValue:e.title}),valueChecked:$.string({label:`Valore checked`,defaultValue:e.valueChecked?.toString()})}),select:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),defaultValue:$.string({label:`Valore default`,defaultValue:e.defaultValue}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),readOnlyAfterSet:$.switch({label:`Read-only dopo set`,defaultValue:e.readOnlyAfterSet}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),autocomplete:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),placeholder:$.string({label:`Placeholder`,defaultValue:e.placeholder}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),minItems:$.number({label:`Min selezioni`,min:0,defaultValue:e.minItems}),maxItems:$.number({label:`Max selezioni`,min:1,defaultValue:e.maxItems}),creatable:$.switch({label:`Creazione libera`,defaultValue:e.creatable}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),checklist:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),feedback:$.string({label:`Messaggio helper`,defaultValue:e.feedback}),disabled:$.switch({label:`Disabilitato`,defaultValue:e.disabled})}),uploadImage:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),multiple:$.switch({label:`Multiplo`,defaultValue:e.multiple}),editable:$.switch({label:`Modificabile`,defaultValue:e.editable}),max:$.number({label:`Max file`,min:1,defaultValue:e.max}),accept:$.string({label:`Formati accettati`,defaultValue:e.accept}),previewWidth:$.number({label:`Larghezza preview`,min:0,defaultValue:e.previewWidth}),previewHeight:$.number({label:`Altezza preview`,min:0,defaultValue:e.previewHeight})}),uploadDocument:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required}),multiple:$.switch({label:`Multiplo`,defaultValue:e.multiple}),editable:$.switch({label:`Modificabile`,defaultValue:e.editable}),max:$.number({label:`Max file`,min:1,defaultValue:e.max}),accept:$.string({label:`Formati accettati`,defaultValue:e.accept})}),imageField:(e={})=>({label:$.string({label:`Label`,required:!0,defaultValue:e.label}),required:$.switch({label:`Obbligatorio`,defaultValue:e.required})})},block:{},section:{}},ll=class{verifyRequiredMethods(){if(!this.model||typeof this.model!=`object`)throw Error(`[ComponentBlock] Missing property: "model"`);for(let e of[`html`,`form`])if(typeof this[e]!=`function`)throw Error(`[ComponentBlock] Missing method: "${e}()"`)}static default(e){let t=new this;return t.verifyRequiredMethods(),()=>{let[n,r]=l.default.useMemo(()=>pl(t.model),[t.model]);return l.default.createElement(Ll,{defaultValues:r,path:e?.path},t.form(n))}}};function ul(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.render==`function`&&typeof t.getDefaults==`function`}function dl(e){return typeof e==`function`&&e.prototype instanceof ll}function fl(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!l.default.isValidElement(e)&&!ul(e)}function pl(e){let t={},n={};function r(e){for(let[t,r]of Object.entries(e))n[t]=r}for(let[n,i]of Object.entries(e))if(ul(i))t[n]=i.render({name:n}),r(i.getDefaults(n));else if(dl(i)){let e=new i,[a,o]=pl(e.model);t[n]=e.form(a),r(o)}else if(Array.isArray(i)){console.warn(`[buildFormFields] ⚠️ The field "${n}" is defined as an array. It has been automatically converted into an object with generated keys (e.g., "${n}_0"). Consider refactoring your model to use an explicit object instead of an array.`);let e={};i.forEach((t,r)=>{let i=`${n}_${r}`;e[i]=t});let[a,o]=pl(e);r(o),t[n]=a}else if(fl(i)){let[e,a]=pl(i);t[n]=e,r(a)}else t[n]=i;return[t,n]}var ml=Symbol(`llmnative.form-controller-store`),hl=()=>({record:void 0,isNewRecord:!0,isDirty:!1,canSave:!1,canDelete:!1,isSaving:!1,isDeleting:!1,saveDisabled:!0,deleteDisabled:!0,hasDraft:!1,draftStatus:null,errors:{},hasErrors:!1}),gl=async()=>!1,_l=()=>void 0;function vl(){let e=hl(),t,n=new Set,r={save:gl,delete:gl,reset:_l,restoreDraft:_l,discardDraft:_l},i=()=>{t={...e,save:r.save,delete:r.delete,reset:r.reset,restoreDraft:r.restoreDraft,discardDraft:r.discardDraft,[ml]:a},n.forEach(e=>e())},a={bindActions(e){let t=!1;e.save&&r.save!==e.save&&(r.save=e.save,t=!0),e.delete&&r.delete!==e.delete&&(r.delete=e.delete,t=!0),e.reset&&r.reset!==e.reset&&(r.reset=e.reset,t=!0),e.restoreDraft&&r.restoreDraft!==e.restoreDraft&&(r.restoreDraft=e.restoreDraft,t=!0),e.discardDraft&&r.discardDraft!==e.discardDraft&&(r.discardDraft=e.discardDraft,t=!0),t&&i()},getControllerSnapshot:()=>t,getState:()=>e,setState(t){let n={...e,...t};Object.keys(n).some(t=>e[t]!==n[t])&&(e=n,i())},subscribe(e){return n.add(e),()=>n.delete(e)}};return t={...e,save:r.save,delete:r.delete,reset:r.reset,restoreDraft:r.restoreDraft,discardDraft:r.discardDraft,[ml]:a},a}function yl(e){return e?.[ml]??vl()}function bl(e){return yl(e)}function xl(e){let t=bl(e);t.setState(hl()),t.bindActions({save:gl,delete:gl,reset:_l,restoreDraft:_l,discardDraft:_l})}var Sl=(0,l.createContext)(null);function Cl(e){let t=(0,l.useRef)(void 0);t.current||=e?yl(e):vl();let n=e?yl(e):t.current;return(0,l.useSyncExternalStore)(n.subscribe,n.getControllerSnapshot,n.getControllerSnapshot)}function wl(){let e=(0,l.useContext)(Sl);if(!e)throw Error(`useFormActions must be used within a FormControllerContext`);return e}var Tl=e=>Array.isArray(e)?[...e]:e&&typeof e==`object`?{...e}:{},El=e=>!Number.isNaN(Number(e)),Dl=(e,t)=>[`number`,`range`].includes(t)?e===``||e==null?``:Number(e):e,Ol=e=>e!==void 0&&El(e)?[]:{},kl=(e,t,n)=>{let r=t.target.name.split(`.`),i=Dl(t.target.value,n),a=Tl(e??{}),o=a;for(let e=0;e<r.length-1;e++){let t=r[e],n=r[e+1],i=o[t];o[t]=typeof i==`object`&&i?Tl(i):Ol(n),o=o[t]}let s=r[r.length-1];return i==null||i===``?Array.isArray(o)&&El(s)?o.splice(Number(s),1):delete o[s]:o[s]=i,a},Al=(0,l.createContext)(null),jl=(0,l.createContext)(null),Ml=(e,t)=>{let n=(0,l.useContext)(jl),r=(0,l.useRef)(t);return r.current=t,(0,l.useEffect)(()=>{if(n)return n.registerField(e,r),()=>n.unregisterField(e)},[e]),n?.errors[e]},Nl=({name:e,onChange:t,wrapperClassName:n,inputType:r=`text`,defaultValue:i,inheritWrapperClassName:a=!0})=>{let o=(0,l.useContext)(Al);if(!o)throw Error(`useFormContext must be used within a FormContext.Provider`);if(!e)throw Error(`useFormContext: name is required`);let s=(0,l.useContext)(jl);return{value:(0,l.useMemo)(()=>{let t=e.split(`.`).reduce((e,t)=>{if(e!=null){if(Array.isArray(e)){let n=Number(t);return isNaN(n)?void 0:e[n]}if(typeof e==`object`)return e[t]}},o.record);return t===void 0&&i!==void 0?i??``:t??``},[e,o.record,i]),handleChange:(0,l.useCallback)(n=>{s?.clearFieldError(n.target.name);let i;o.setRecord(e=>(i=kl(e,n,r),i)),t?.({event:n,name:e,value:n.target.value,record:i??{},onChange:e=>{o.setRecord(t=>kl(t,e,r))}})},[s,o.setRecord,t,e,r]),formWrapClass:[n,a?o.wrapperClassName:void 0].filter(Boolean).join(` `),record:o.record??{}}},Pl=({name:e,value:t,handleChange:n})=>l.default.useCallback(r=>{r.preventDefault();let i=r.target,a=`${r.dataTransfer.getData(`text/plain`)}`;i.focus();let o=(()=>{let e=document.caretPositionFromPoint?.(r.clientX,r.clientY)??document.caretRangeFromPoint?.(r.clientX,r.clientY);return e&&`offset`in e?e.offset??i.value.length:i.value.length})(),s=String(t??``),c=s.slice(0,o)+a+s.slice(o);n?.({target:{value:c.trim(),name:e}}),requestAnimationFrame(()=>{let e=o+a.length;i.setSelectionRange(e,e)})},[e,t,n]);function Fl(e,t){if(e.indexOf(`.`)===-1||t.indexOf(`.`)===-1)return`${t}.${e}`;let n=Math.min(e.length,t.length),r=0;for(;r<n&&e.charCodeAt(r)===t.charCodeAt(r);)r++;let i=e.lastIndexOf(`.`,r-1);return i===-1?`${t}.${e}`:`${t}.${e.slice(i+1)}`}var Il=({children:e,parentName:t,parentKey:n,wrapperClassName:r})=>l.default.Children.map(e,e=>{if(!t||!l.default.isValidElement(e))return e;let{name:i,children:a}=e.props,o={};return i&&(o.name=Fl(i,t),o.key=n??o.name,o.wrapperClassName=e.props.wrapperClassName??r,e.props.before&&l.default.isValidElement(e.props.before)&&(o.before=Il({children:e.props.before,parentName:t,parentKey:`${o.key}.before`})),e.props.after&&l.default.isValidElement(e.props.after)&&(o.after=Il({children:e.props.after,parentName:t,parentKey:`${o.key}.after`}))),a&&typeof a!=`function`&&(o.children=Il({children:a,parentName:t,parentKey:n,wrapperClassName:r})),l.default.cloneElement(e,o)});function Ll(e){let t=(0,u.useLocation)(),{path:n,keyGenerator:r,defaultValues:i,children:a,...o}=e,s=(e=>e??(t.hash?`${B(t.pathname)}/${t.hash.slice(1)}`:void 0))(n);return i||!s||r?l.default.createElement(Vl,{children:a,defaultValues:i,path:n,keyGenerator:r,...o}):l.default.createElement(Rl,{children:a,defaultValues:i,path:s,keyGenerator:r,...o})}var Rl=e=>{let{path:t,defaultValues:n,...r}=e,i=sr(),[a,o]=(0,l.useState)(void 0);return(0,l.useEffect)(()=>{i.read(t).then(e=>{o({...n,...e})}).catch(e=>{console.error(e),o({})})},[i,t,n]),a?l.default.createElement(Vl,{...r,defaultValues:a,path:t}):l.default.createElement(`p`,{className:`p-4`},l.default.createElement(`span`,{className:`mr-2 inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}),`Loading...`)},zl=e=>JSON.stringify(ve(e??{})),Bl=e=>{if(e)try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return t}catch{return}},Vl=({children:e,appearance:t=void 0,controller:n=void 0,header:r=void 0,footer:i=void 0,path:a=void 0,defaultValues:o=void 0,keyGenerator:s=void 0,onLoad:c=void 0,onRecordChange:d=void 0,onSave:f=void 0,onDelete:p=void 0,onComplete:m=void 0,log:g=!1,showNotice:_=!0,draftBucket:v=void 0,noticeAnchorRef:y=void 0,showBack:b=!1,wrapperClassName:x=void 0,headerClassName:S=void 0,className:C=void 0,footerClassName:w=void 0,formClassName:T=void 0})=>{let E=(0,u.useLocation)(),D=J(`form`),O=Y(`form`),k=sr(),A=Cl(n),j=bl(A),[M,N]=(0,l.useState)(o),[P,F]=(0,l.useState)(!1),[I,L]=(0,l.useState)(!1),R=!o?.[bi],z=(0,l.useRef)(K(o??{})),[ee,te]=(0,l.useState)(()=>zl(o)),[ne,H]=(0,l.useState)(null),re=(0,l.useRef)({isDirty:!1}),U=(0,l.useMemo)(()=>{if(!v)return;let e=V(v),t=V(a||`${E.pathname}${E.hash||``}`);return e&&t?`llmnative.form-draft.${e}.${t}`:void 0},[v,E.pathname,E.hash,a]),ie=!!(f||a||!R),ae=!!(p||!R),oe=(0,l.useMemo)(()=>zl(M)!==ee,[M,ee]),se=O.noChangesToSave??`No changes to save`,ce=O.draftRestoreTitle??`Unsaved changes found`,W=O.draftRestoreMessage??`A local draft is available for this form. Restore it or discard it.`,le=O.draftRestoreAction??`Restore`,ue=O.draftDiscardAction??`Discard`,G=O.draftRestoredTitle??`Draft restored`,q=O.draftRestoredMessage??`The local draft has been restored. You can still discard it for a few seconds.`,de=(0,l.useCallback)(()=>{!U||typeof localStorage>`u`||localStorage.removeItem(U)},[U]),fe=(0,l.useCallback)(()=>{if(!(!U||typeof localStorage>`u`))return Bl(localStorage.getItem(U))},[U]),pe=(0,l.useCallback)(()=>{N(K(z.current))},[]),[me,he]=(0,l.useState)(void 0),ge=(0,l.useCallback)(({message:e,type:t=`danger`})=>{_&&he({type:t,message:e})},[_]),[_e,ye]=(0,l.useState)({}),be=(0,l.useRef)({}),xe=(0,l.useRef)(null),Se=(0,l.useRef)(M),Ce=(0,l.useRef)(o),we=(0,l.useRef)(f),Te=(0,l.useRef)(p),Ee=(0,l.useRef)(m),De=(0,l.useRef)(a),Oe=(0,l.useRef)(g),ke=(0,l.useCallback)(()=>{de(),pe(),H(null)},[de,pe]),Ae=(0,l.useCallback)(()=>{let e=fe();if(!e){H(null);return}N(K(e)),H(`restored`)},[fe]),je=(0,l.useCallback)(()=>{ye({}),he(void 0),H(null),pe()},[pe]),Me=(0,l.useCallback)((e,t)=>{be.current[e]=t},[]),Ne=(0,l.useCallback)(e=>{delete be.current[e]},[]),Pe=(0,l.useCallback)(e=>{ye(t=>{if(!t[e])return t;let{[e]:n,...r}=t;return r})},[]),Fe=(0,l.useCallback)(async()=>{let e={};for(let[t,n]of Object.entries(be.current)){let{required:r,label:i,validator:a}=n.current,o=t.split(`.`).reduce((e,t)=>{if(e!=null){if(Array.isArray(e))return e[Number(t)];if(typeof e==`object`)return e[t]}},Se.current);if(r&&(o==null||typeof o==`string`&&o.trim()===``||Array.isArray(o)&&o.length===0)){e[t]=i?lt(O.requiredField,{field:i}):O.requiredFieldGeneric;continue}if(a){let n=await a(o);n&&(e[t]=n)}}if(ye(e),Object.keys(e).length>0){let t=Object.keys(e)[0];requestAnimationFrame(()=>{xe.current?.querySelector(`[name="${CSS.escape(t)}"]`)?.focus()})}return Object.keys(e).length===0},[O]),Ie=(0,l.useCallback)(e=>{if(!a)return;let t=B(a);if(R)return t.split(`/`).filter(Boolean).length%2==0&&!s?`/${t}`:`/${t}/${s?.(e)??Date.now().toString()}`;let n=e[bi];if(!n)return a;let r=t.split(`/`).filter(Boolean);return`/${r[r.length-1]===n?r.slice(0,-1).join(`/`):t}/${n}`},[a,s,R]),Le=(0,l.useCallback)(async e=>{if(Oe.current&&De.current&&k){let t=new Date().toISOString(),n=Nn(`user`);k.set(`/log/${De.current}/${V(t)}`,{user:n?.email??`unknown`,when:t,action:e,record:Se.current})}return ge({message:e===`delete`?O.deleteSuccess:O.saveSuccess,type:`success`}),await Ee.current?.({record:Se.current,action:e})??!0},[k,ge,O]),Re=(0,l.useCallback)(async e=>{if(e?.preventDefault?.(),!oe)return _&&he({message:se,type:`info`}),!1;if((0,h.flushSync)(()=>{ye({}),_&&he(void 0)}),!await Fe())return _&&he({message:O.noticeRequiredFields,type:`warning`}),!1;let t=R?`create`:`update`;F(!0);try{let e=(we.current&&await we.current({record:Se.current,prevRecord:Ce.current,action:t,storagePath:De.current}))??Ie(Se.current??{});return e&&await k.set(e,ve(Se.current)),z.current=K(Se.current??{}),te(zl(Se.current)),de(),H(null),await Le(t)}finally{F(!1)}},[de,Ie,k,O.noticeRequiredFields,Le,oe,R,se,_,Fe]),ze=(0,l.useCallback)(async e=>{e?.preventDefault?.(),_&&he(void 0),L(!0);try{let e=(Te.current&&await Te.current({record:Se.current}))??Ie(Se.current??{});return e&&await k.remove(e),de(),H(null),await Le(`delete`)}finally{L(!1)}},[de,Ie,k,Le,_]);(0,l.useEffect)(()=>{let e=K(o??{});if(o&&(N(e),c?.(K(e))),z.current=e,te(zl(e)),!v){H(null);return}let t=fe();if(t&&zl(t)!==zl(e)){H(`restore`);return}H(null)},[JSON.stringify(o),v,c,fe]),(0,l.useEffect)(()=>{Se.current=M,M!==void 0&&d?.(M)},[M,d]),(0,l.useEffect)(()=>{Ce.current=o,we.current=f,Te.current=p,Ee.current=m,De.current=a,Oe.current=g},[o,g,m,p,f,a]),(0,l.useEffect)(()=>{if(!U||typeof localStorage>`u`||M===void 0)return;if(!oe){let e=fe();if(e&&zl(e)!==ee)return;localStorage.removeItem(U);return}let e=window.setTimeout(()=>{localStorage.setItem(U,JSON.stringify(ve(M)))},150);return()=>window.clearTimeout(e)},[ee,U,oe,fe,M]),(0,l.useEffect)(()=>{re.current={storageKey:U,record:M,isDirty:oe}},[U,oe,M]),(0,l.useEffect)(()=>()=>{let{storageKey:e,record:t,isDirty:n}=re.current;!e||!n||!t||typeof localStorage>`u`||localStorage.setItem(e,JSON.stringify(ve(t)))},[]),(0,l.useEffect)(()=>{j.bindActions({save:Re,delete:ze,reset:je,restoreDraft:Ae,discardDraft:ke})},[j,ke,ze,Re,je,Ae]),(0,l.useEffect)(()=>{j.setState({record:Se.current,isNewRecord:R,isDirty:oe,canSave:ie,canDelete:ae,isSaving:P,isDeleting:I,saveDisabled:!ie||!oe||P,deleteDisabled:!ae||I,hasDraft:ne!==null,draftStatus:ne,errors:_e,hasErrors:Object.keys(_e).length>0})},[ae,ie,j,ne,_e,I,oe,R,P,M]),(0,l.useEffect)(()=>()=>xl(A),[j]);let Be=(0,l.useCallback)(e=>{e.defaultPrevented||!((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`)||A.saveDisabled||(e.preventDefault(),A.save())},[A]),Ve=(0,l.useMemo)(()=>({registerField:Me,unregisterField:Ne,clearFieldError:Pe,errors:_e}),[Me,Ne,Pe,_e]),He=(0,l.useMemo)(()=>({record:M,setRecord:N,wrapperClassName:`mb-3`}),[M,N]),Ue=(0,l.useMemo)(()=>l.default.createElement(Sl.Provider,{value:A},l.default.createElement(Al.Provider,{value:He},l.default.createElement(jl.Provider,{value:Ve},typeof e==`function`?e({record:M}):e))),[e,A,He,M,Ve]),We=(0,l.useMemo)(()=>me?l.default.createElement(ma,{variant:me.type,appearance:y?`default`:`text`,placement:y?`sticky`:`inline`,anchorRef:y,timeout:me.type===`success`?3e3:void 0,onClose:me.type===`success`?()=>he(void 0):void 0},me.message):null,[me,y]),Ge=(0,l.useMemo)(()=>{if(!ne)return null;let e=ne===`restore`?ce:G,t=ne===`restore`?W:q;return l.default.createElement(ma,{variant:ne===`restore`?`warning`:`info`,timeout:ne===`restored`?6e3:void 0,onClose:ne===`restored`?()=>H(null):void 0},l.default.createElement(`div`,{className:`flex items-start justify-between gap-3`},l.default.createElement(`div`,{className:`min-w-0`},l.default.createElement(`div`,{className:`font-medium`},e),l.default.createElement(`div`,{className:`text-sm opacity-90`},t)),l.default.createElement(`div`,{className:`flex shrink-0 items-center gap-2`},ne===`restore`?l.default.createElement(l.default.Fragment,null,l.default.createElement(wn,{label:le,variant:`warning`,onClick:()=>Ae()}),l.default.createElement(wn,{label:ue,variant:`outline-secondary`,onClick:()=>ke()})):l.default.createElement(wn,{label:ue,variant:`outline-secondary`,onClick:()=>ke()}))))},[ke,ue,ne,le,W,ce,q,G,Ae]),Ke=(0,l.useMemo)(()=>{switch(t){case`empty`:return l.default.createElement(l.default.Fragment,null,Ge,Ue,We);default:return l.default.createElement(pr,{header:r||l.default.createElement(Fr,{rootItem:R?O.headerAdd:O.headerEdit,trail:a||void 0}),footer:(i||!R||f||p||b||!!a)&&l.default.createElement(l.default.Fragment,null,i,We,(f||!!a||!R)&&l.default.createElement(Cn,{className:X(D.Form.buttonSaveClass,A.saveDisabled&&`cursor-not-allowed opacity-50`),label:O.buttonSave,title:A.saveDisabled&&!oe?se:void 0,disabled:A.saveDisabled,loading:A.isSaving,onClick:e=>A.save(e)}),(p||!R)&&l.default.createElement(Cn,{className:D.Form.buttonDeleteClass,label:O.buttonDelete,disabled:A.deleteDisabled,loading:A.isDeleting,onClick:e=>A.delete(e)}),b&&l.default.createElement(Tn,{className:D.Form.buttonBackClass,label:O.buttonBack})),headerClassName:S||D.Form.Card.headerClassName,bodyClassName:C||D.Form.Card.bodyClassName,footerClassName:w||D.Form.Card.footerClassName},l.default.createElement(l.default.Fragment,null,Ge,Ue))}},[t,C,Ue,O.buttonBack,O.buttonDelete,O.buttonSave,O.headerAdd,O.headerEdit,Ge,i,w,A,r,S,oe,R,se,We,p,f,a,b,D.Form.buttonDeleteClass,D.Form.buttonSaveClass,D.Form.buttonBackClass,D.Form.Card.bodyClassName,D.Form.Card.footerClassName,D.Form.Card.headerClassName]);return l.default.createElement(Z,{className:x||D.Form.wrapperClassName},l.default.createElement(`form`,{ref:xe,className:T,noValidate:!0,onSubmit:e=>e.preventDefault(),onKeyDownCapture:Be,onKeyDown:Be},Ke))},Hl=`rounded-xl border border-border/60 bg-card/80 shadow-sm`,Ul=`flex items-center justify-between gap-3 border-b border-border/50 px-3 py-2`,Wl=`text-xs font-medium uppercase tracking-[0.14em] text-muted-foreground`,Gl=`px-3 py-3`,Kl=`h-7 w-7 rounded-md bg-transparent p-0 text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,ql=({name:e,children:t,onChange:n,onAdd:r,onRemove:i,className:a,layout:o=`horizontal`,minItems:s=void 0,maxItems:c=void 0,label:u=void 0,labelPosition:d=`top`,hideRemoveButton:f=!1,readOnly:p=!1})=>{let{value:m,handleChange:h}=Nl({name:e,onChange:n}),g=Array.isArray(m)?m:[],_=(n,r)=>Il({children:typeof t==`function`?t({record:g[n],records:g,index:n,remove:()=>x(n)}):t,parentName:`${e}.${n}`,wrapperClassName:r}),v=(e,t)=>{switch(o){case`horizontal`:return l.default.createElement(`div`,{className:Hl},l.default.createElement(`div`,{className:Ul},l.default.createElement(`span`,{className:Wl},`#`,e+1),t&&!f?l.default.createElement(wn,{className:Kl,icon:`x`,onClick:()=>x(e)}):l.default.createElement(`span`,{className:`h-7 w-7`,"aria-hidden":`true`})),l.default.createElement(`div`,{className:Gl},_(e)));case`vertical`:return l.default.createElement(l.default.Fragment,null);case`inline`:return l.default.createElement(`div`,{className:X(Hl,`px-3 py-2`)},l.default.createElement(`div`,{className:`flex items-start gap-2`},l.default.createElement(`div`,{className:`flex-1 min-w-0`},_(e,`!mb-0`)),t&&!f&&l.default.createElement(wn,{className:X(Kl,`mt-1 shrink-0`),icon:`x`,onClick:()=>x(e)})))}},y=(g.length>0?g:Array.from({length:s||0},()=>({})))?.map((t,n)=>{let r=!p&&n>=(s||0);return l.default.createElement(l.default.Fragment,{key:`${e}-${n}`},v(n,r))}),b=()=>{let t=g.length>0?[...g,{}]:Array.from({length:y.length+1},()=>({}));r?.(t),h({target:{name:`${e}.${t.length-1}`,value:{}}})},x=t=>{i?.(t),h({target:{name:`${e}.${t}`}})},S=(0,l.useMemo)(()=>p?null:!c||y.length<c?u&&d===`bottom`?l.default.createElement(wn,{icon:`plus`,label:u,variant:`link`,className:`w-full justify-start gap-1 rounded-lg border border-dashed border-border/60 px-3 py-2 text-sm text-muted-foreground hover:border-border hover:bg-muted/40 hover:text-foreground`,onClick:b}):l.default.createElement(wn,{icon:`plus`,label:u?void 0:`Add`,variant:u?`link`:`secondary`,className:u?`h-8 w-8 rounded-lg p-0 text-muted-foreground hover:bg-muted/50 hover:text-foreground`:void 0,onClick:b}):null,[p,c,y.length,u,d]);return l.default.createElement(`div`,{className:X(`space-y-3`,a)},u&&d===`top`&&l.default.createElement(`div`,{className:`flex items-center justify-between gap-3`},l.default.createElement(`span`,{className:`text-sm font-medium text-foreground`},u),S),y,!u&&S,u&&d===`bottom`&&S)},Jl={default:{shellClassName:`space-y-4`,menuClassName:`flex flex-wrap items-end gap-2 border-b border-border/70`,contentClassName:`min-w-0`,itemClassName:`shrink-0`,triggerClassName:`inline-flex items-center rounded-t-lg border-b-2 px-3 py-2 text-sm font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background`,activeTriggerClassName:`border-primary text-foreground`,inactiveTriggerClassName:`border-transparent text-muted-foreground hover:text-foreground hover:border-border/80`},top:{shellClassName:`space-y-4`,menuClassName:`inline-flex max-w-full flex-wrap gap-2 rounded-xl bg-muted/50 p-1.5`,contentClassName:`min-w-0`,itemClassName:`shrink-0`,triggerClassName:`inline-flex items-center rounded-lg px-3 py-2 text-sm font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background`,activeTriggerClassName:`bg-card text-foreground shadow-sm ring-1 ring-border/60`,inactiveTriggerClassName:`text-muted-foreground hover:bg-background/80 hover:text-foreground`},left:{shellClassName:`flex h-full min-h-0 flex-col gap-5 md:flex-row md:items-start`,menuClassName:`flex shrink-0 gap-2 overflow-x-auto md:w-64 md:flex-col md:overflow-visible`,contentClassName:`min-h-0 min-w-0 flex-1 overflow-hidden rounded-2xl border border-border/60 bg-card/80 p-4 shadow-sm`,itemClassName:`shrink-0 md:w-full`,triggerClassName:`inline-flex w-full items-center justify-between rounded-xl px-3 py-2.5 text-left text-sm font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background`,activeTriggerClassName:`bg-primary/10 text-primary shadow-sm ring-1 ring-primary/15`,inactiveTriggerClassName:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`},right:{shellClassName:`flex h-full min-h-0 flex-col gap-5 md:flex-row md:items-start`,menuClassName:`order-1 flex shrink-0 gap-2 overflow-x-auto md:order-2 md:w-64 md:flex-col md:overflow-visible`,contentClassName:`order-2 min-h-0 min-w-0 flex-1 overflow-hidden rounded-2xl border border-border/60 bg-card/80 p-4 shadow-sm md:order-1`,itemClassName:`shrink-0 md:w-full`,triggerClassName:`inline-flex w-full items-center justify-between rounded-xl px-3 py-2.5 text-left text-sm font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background`,activeTriggerClassName:`bg-primary/10 text-primary shadow-sm ring-1 ring-primary/15`,inactiveTriggerClassName:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`},bottom:{shellClassName:`space-y-4`,menuClassName:`flex flex-wrap gap-2 rounded-xl bg-muted/50 p-1.5`,contentClassName:`min-w-0 rounded-2xl border border-border/60 bg-card p-4 shadow-sm`,itemClassName:`shrink-0`,triggerClassName:`inline-flex items-center rounded-lg px-3 py-2 text-sm font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background`,activeTriggerClassName:`bg-card text-foreground shadow-sm ring-1 ring-border/60`,inactiveTriggerClassName:`text-muted-foreground hover:bg-background/80 hover:text-foreground`}};function Yl(e){return Jl[e]}function Xl(e,t,n){let r=Yl(e),i=J(`tab`);return X(`cursor-pointer`,r.triggerClassName,i.Tab.triggerClassName,t?r.activeTriggerClassName:r.inactiveTriggerClassName,t?i.Tab.activeTriggerClassName:i.Tab.inactiveTriggerClassName,n)}function Zl(e){return X(`min-h-0 min-w-0 h-full overflow-x-hidden overflow-y-auto`,J(`tab`).Tab.contentClassName,e)}var Ql={default:({menu:e,content:t,menuClassName:n,contentClassName:r})=>{let i=Yl(`default`),a=J(`tab`);return l.default.createElement(`div`,{className:i.shellClassName},l.default.createElement(`div`,{role:`tablist`,"aria-orientation":`horizontal`,className:X(i.menuClassName,a.Tab.menuClassName,n)},e),l.default.createElement(`div`,{className:X(i.contentClassName,a.Tab.contentClassName,r)},t))},top:({menu:e,content:t,menuClassName:n,contentClassName:r})=>{let i=Yl(`top`),a=J(`tab`);return l.default.createElement(`div`,{className:i.shellClassName},l.default.createElement(`div`,{role:`tablist`,"aria-orientation":`horizontal`,className:X(i.menuClassName,a.Tab.menuClassName,n)},e),l.default.createElement(`div`,{className:X(i.contentClassName,a.Tab.contentClassName,r)},t))},left:({menu:e,content:t,menuClassName:n,contentClassName:r})=>{let i=Yl(`left`),a=J(`tab`);return l.default.createElement(`div`,{className:i.shellClassName},l.default.createElement(`div`,{role:`tablist`,"aria-orientation":`vertical`,className:X(i.menuClassName,a.Tab.menuClassName,n)},e),l.default.createElement(`div`,{className:X(i.contentClassName,a.Tab.contentClassName,r)},t))},right:({menu:e,content:t,menuClassName:n,contentClassName:r})=>{let i=Yl(`right`),a=J(`tab`);return l.default.createElement(`div`,{className:i.shellClassName},l.default.createElement(`div`,{role:`tablist`,"aria-orientation":`vertical`,className:X(i.menuClassName,a.Tab.menuClassName,n)},e),l.default.createElement(`div`,{className:X(i.contentClassName,a.Tab.contentClassName,r)},t))},bottom:({menu:e,content:t,menuClassName:n,contentClassName:r})=>{let i=Yl(`bottom`),a=J(`tab`);return l.default.createElement(`div`,{className:i.shellClassName},l.default.createElement(`div`,{className:X(i.contentClassName,a.Tab.contentClassName,r)},t),l.default.createElement(`div`,{role:`tablist`,"aria-orientation":`horizontal`,className:X(i.menuClassName,a.Tab.menuClassName,n)},e))}},$l=()=>null,eu=({children:e,motion:t})=>{let n=J(`tab`),r=Ut(void 0,t??n.Tab.motion?.enter??`fadeUp`,n.Tab.motion?.enter??`fadeUp`);return l.default.createElement(`div`,{style:r,className:Zl()},e)},tu=({children:e,defaultIndex:t=0,onChange:n,layout:r=`default`,menuClassName:i=void 0,contentClassName:a=void 0,before:o=void 0,after:s=void 0,wrapperClassName:c=void 0,className:u=void 0,motion:d=void 0})=>{let[f,p]=(0,l.useState)(t),m=e=>{p(e),n?.(e)},h=l.Children.toArray(e).filter(e=>l.default.isValidElement(e)&&e.type===$l),g=(0,l.useMemo)(()=>Yl(r),[r]),_=Ql[r],v=J(`tab`);return l.default.createElement(Z,{className:X(v.Tab.wrapperClassName,c)},o,l.default.createElement(`div`,{className:X(`min-w-0`,v.Tab.className,u)},l.default.createElement(_,{menuClassName:i,contentClassName:a,menu:h.map((e,t)=>l.default.createElement(`div`,{key:t,className:X(g.itemClassName,v.Tab.itemClassName)},l.default.createElement(`button`,{type:`button`,role:`tab`,"aria-selected":t===f,onClick:()=>m(t),className:Xl(r,t===f)},e.props.label))),content:l.default.createElement(eu,{key:f,motion:d},h[f]?.props?.children)})),s)};function nu({records:e,selectedKeys:t,onSelectionChange:n,getRecordKey:r}){let i=t,a=i!==void 0&&!!n,[o,s]=(0,l.useState)(i??[]);(0,l.useEffect)(()=>{i!==void 0&&!a&&s(i)},[i,a]);let c=a?i||[]:o,u=!!n||i!==void 0,d=(0,l.useCallback)(t=>{let n=new Set(t);return{keys:t,records:e.filter((e,t)=>n.has(r(e,t))),hasSelection:t.length>0}},[r,e]),f=(0,l.useCallback)(e=>{a||s(e);let t=d(e);n?.({...t,clear:()=>f([])})},[d,a,n]),p=(0,l.useCallback)(()=>{f([])},[f]);return{activeSelectedKeys:c,selectionState:(0,l.useMemo)(()=>({...d(c),clear:p}),[c,d,p]),showSelection:u,updateSelection:f}}function ru(e){let t=(0,l.useRef)(new WeakMap),n=(0,l.useRef)(0);return(0,l.useCallback)((r,i)=>{if(r._key)return r[bi];let a=r,o=t.current.get(a);if(o)return o;let s=`${e}-${n.current++}`;return t.current.set(a,s),s},[e])}function iu({columns:e=void 0,records:t=void 0,footer:n=void 0,onRowClick:r=void 0,onReorder:i=void 0,onSelectionChange:a=void 0,selection:o=`multiple`,sortable:s=!1,pagination:c=void 0,activeKey:u=void 0,selectedKeys:d=void 0,groupBy:f=void 0,before:m=void 0,after:h=void 0,wrapperClassName:g=void 0,className:_=void 0,headerClassName:v=void 0,bodyClassName:y=void 0,footerClassName:b=void 0,heightClassName:x=void 0,scrollClassName:S=void 0,selectedClassName:C=void 0,renderCell:w=void 0}){let T=J(`table`),E=Y(`table`),D=C||T.Table.selectedClassName,[O,k]=(0,l.useState)(t||[]),A=(0,l.useMemo)(()=>{if(!(!s||typeof s==`boolean`))return s},[typeof s==`object`?s?.dir:void 0,typeof s==`object`?s?.field:void 0]),j=s!==!1,[M,N]=(0,l.useState)(A),[P,F]=(0,l.useState)(null),[I,L]=(0,l.useState)(null),[R,z]=(0,l.useState)(null),[B,V]=(0,l.useState)(null),[ee,te]=(0,l.useState)(null),ne=(0,l.useRef)(!1),H=(0,l.useCallback)(e=>{e&&F(e)},[]),re=(0,l.useId)(),U=!!i,ie=j||!!vo.normalize(A),ae=U&&ie,oe=!ae&&j,se=ae?void 0:A;(0,l.useEffect)(()=>{k(t||[])},[t]),(0,l.useEffect)(()=>{N(se)},[se?.field,se?.dir]),(0,l.useEffect)(()=>{!ae||ne.current||(console.warn("Table: `onReorder` cannot be combined with sortable sorting on the same view. Manual reorder takes precedence and sorting is ignored."),ne.current=!0)},[ae]);let ce=ru(`row`),W=(0,l.useCallback)((e,t)=>ce(e,t),[ce]),{activeSelectedKeys:le,selectionState:ue,showSelection:G,updateSelection:K}=nu({records:O,selectedKeys:d,onSelectionChange:a,getRecordKey:W});(0,l.useEffect)(()=>{ee&&(O.some((e,t)=>W(e,t)===ee)||te(null))},[ee,W,O]),(0,l.useEffect)(()=>{if(M||!e?.length||U)return;let t=e.find(e=>oe&&e.sort!==!1);t&&N({field:t.key,dir:`asc`})},[M,oe,e,U]);let q=(0,l.useMemo)(()=>vo.records(O,M)||[],[O,M]),de=(e,t,n)=>{let i=e.target;for(;i&&i.tagName!==`TR`;){if([`A`,`BUTTON`,`INPUT`,`LABEL`].includes(i.tagName))return;i=i.parentNode}let a=W(t,n);D&&u===void 0&&te(e=>e===a?null:a),r?.(t)},fe=(e,t,n)=>{if(w)return w(e,t,n);let r=e[t],i=typeof r==`object`&&r&&!Array.isArray(r)?r:null,a=i?.prompt&&i?.value||r;return l.default.isValidElement(a)||typeof a!=`object`||!a?a:Array.isArray(a)&&!a.some(e=>typeof e==`object`&&e)?a.join(`, `):``},pe=(0,l.useCallback)((e,t)=>{let n=W(e,t),r=le.includes(n)?le.filter(e=>e!==n):[...le,n];K(r)},[le,W,K]),me=(0,l.useCallback)((e,t)=>{let n=W(e,t);K(le.includes(n)?[]:[n])},[le,W,K]),he=(0,l.useCallback)((e,t)=>{if(!I)return;let n=q.findIndex((e,t)=>W(e,t)===I),r=q.findIndex((n,r)=>W(n,r)===W(e,t));z(null),L(null);let a=B?.position||`after`;if(V(null),n<0||r<0||n===r)return;let o=[...q],[s]=o.splice(n,1),c=n<r?r+(a===`after`?0:-1):r+ +(a===`after`);o.splice(c,0,s),N(void 0),k(o),i?.(o,{fromIndex:n,toIndex:c,record:s})},[I,B?.position,W,i,q]);if(q.length===0)return l.default.createElement(`p`,{className:`p-4`},E.noDataFound);let ge=e||Object.keys(q[0]).map(e=>({key:e,label:e,sort:j})),_e=[`w-full`,T.Table.scrollClassName,x?`${x} overflow-auto`:``,S||``].filter(Boolean).join(` `),ve=ge.length+ +!!G+ +!!U,ye=(e,t,n,r)=>!B||B.key!==e||B.position!==t?null:l.default.createElement(`tr`,{"aria-hidden":`true`,onDragOver:n=>{U&&(n.preventDefault(),R!==e&&z(e),V({key:e,position:t}))},onDrop:i=>{U&&(i.preventDefault(),V({key:e,position:t}),he(n,r))}},l.default.createElement(`td`,{colSpan:ve,className:`border-0 p-0`},l.default.createElement(`div`,{className:`relative h-5 cursor-grab`},l.default.createElement(`div`,{className:`absolute inset-x-2 top-1/2 -translate-y-1/2`},l.default.createElement(`div`,{className:`h-0 rounded-full border-t-2 border-primary/80`}),l.default.createElement(`div`,{className:`absolute left-0 top-1/2 h-2 w-2 -translate-y-1/2 rounded-full bg-primary shadow-sm`})))));return l.default.createElement(`div`,{className:`flex items-stretch gap-3`},m&&l.default.createElement(`div`,{className:`table-before flex shrink-0 items-center self-stretch`},m),l.default.createElement(`div`,{ref:H,className:`min-w-0 flex-1 overflow-x-auto `+(g||T.Table.wrapperClassName)},l.default.createElement(`div`,{className:_e},l.default.createElement(`table`,{className:`w-full min-w-full text-left text-sm border-collapse `+(_||T.Table.className)},l.default.createElement(`thead`,{className:`border-b `+(v||T.Table.headerClassName)},l.default.createElement(`tr`,null,G&&l.default.createElement(`th`,{className:`px-3 py-2 font-semibold text-muted-foreground`,style:{width:`1%`,whiteSpace:`nowrap`}},o===`single`?l.default.createElement(`div`,{className:`th-inner py-1`}):l.default.createElement(`div`,{className:`th-inner py-1`},l.default.createElement(`input`,{type:`checkbox`,"aria-label":E.selectAllRows,checked:ue.records.length>0&&ue.records.length===O.length,onChange:e=>{let t=e.target.checked?q.map((e,t)=>W(e,t)):[];K(t)}}))),U&&l.default.createElement(`th`,{className:`px-3 py-2 font-semibold text-muted-foreground`,style:{width:`1%`,whiteSpace:`nowrap`}},l.default.createElement(`div`,{className:`th-inner py-1`})),ge.map(e=>e.label?(()=>{let t=oe&&e.sort!==!1,n=t&&M?.field===e.key,r=n?M?.dir===`desc`?`descending`:`ascending`:`none`;return l.default.createElement(`th`,{key:e.key,className:`px-3 py-2 font-semibold text-muted-foreground`+(e.className?` `+e.className:``),"aria-sort":r},t?l.default.createElement(`button`,{type:`button`,className:`th-inner group inline-flex w-full cursor-pointer items-center gap-2 rounded-sm border-0 bg-transparent px-0 py-1 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 `+(n?`font-semibold text-foreground`:`text-muted-foreground hover:text-foreground`),onClick:()=>N(t=>vo.toggle(t,e.key)),"aria-label":n?lt(E.sortByCurrent,{label:e.label,direction:M?.dir===`desc`?`descending`:`ascending`}):lt(E.sortBy,{label:e.label}),title:n?`${e.label}: ${M?.dir===`desc`?`descending`:`ascending`}`:lt(E.sortBy,{label:e.label})},l.default.createElement(`span`,{className:`inline-flex h-4 w-4 flex-none items-center justify-center transition-colors `+(n?`text-primary`:`text-muted-foreground/70 group-hover:text-foreground/80`),"aria-hidden":`true`},n?M?.dir===`desc`?l.default.createElement(p.ArrowDown,{size:14}):l.default.createElement(p.ArrowUp,{size:14}):l.default.createElement(p.ArrowUpDown,{size:14})),l.default.createElement(`span`,null,e.label)):l.default.createElement(`div`,{className:`th-inner py-1`},e.label))})():l.default.createElement(`th`,{key:e.key,className:`px-3 py-2 font-semibold text-muted-foreground`,style:{width:`1%`,whiteSpace:`nowrap`}})))),l.default.createElement(`tbody`,{className:y||T.Table.bodyClassName},l.default.createElement(nf,{records:q,appendTo:P,wrapperClassName:`px-3 pt-4 pb-2`,...c||{}},(e,t)=>{let n=f?Array.isArray(f)?f:[f]:null,i;return e.map((e,a)=>{let s=t+a,c=W(e,s),d=n?n.map(t=>String(e[t]??``)).join(` · `):void 0,f=d!==void 0&&d!==i;i=d;let m=le.includes(c),h=R===c,g=I===c,_=D&&(u===void 0?ee:u)===c;return l.default.createElement(l.default.Fragment,{key:c},f&&l.default.createElement(`tr`,{"aria-hidden":`true`},l.default.createElement(`td`,{colSpan:ve,className:`bg-muted/40 px-3 py-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground`},d)),ye(c,`before`,e,s),l.default.createElement(`tr`,{draggable:U,className:[`odd:bg-muted/30 hover:bg-muted/20 transition-colors`,h?`bg-muted/30`:``,_?D:``].filter(Boolean).join(` `)||void 0,style:{cursor:r?`pointer`:U?`grab`:`default`,opacity:g?.45:1},onClick:t=>{r&&de(t,e,s)},onDragStart:()=>{L(c)},onDragOver:e=>{if(!U)return;e.preventDefault();let t=e.currentTarget.getBoundingClientRect(),n=e.clientY<t.top+t.height/2?`before`:`after`;R!==c&&z(c),I!==c&&V(e=>e?.key===c&&e.position===n?e:{key:c,position:n})},onDragLeave:()=>{R===c&&z(null)},onDragEnd:()=>{L(null),z(null),V(null)},onDrop:t=>{U&&(t.preventDefault(),he(e,s))}},G&&l.default.createElement(`td`,{className:`px-3 py-2 border-b border-border/50`,style:{width:`1%`,whiteSpace:`nowrap`}},l.default.createElement(`input`,{type:o===`single`?`radio`:`checkbox`,name:o===`single`?re:void 0,"aria-label":lt(E.selectRow,{key:c}),checked:m,onChange:()=>{if(o===`single`){me(e,s);return}pe(e,s)},onClick:t=>{t.stopPropagation(),o===`single`&&(t.preventDefault(),me(e,s))}})),U&&l.default.createElement(`td`,{className:`px-3 py-2 border-b border-border/50`,style:{width:`1%`,whiteSpace:`nowrap`}},l.default.createElement(`button`,{type:`button`,draggable:U,className:`inline-flex cursor-grab items-center justify-center rounded-sm border-0 bg-transparent p-0 text-muted-foreground`,"aria-label":lt(E.reorderRow,{key:c}),onClick:e=>e.preventDefault(),onDragStart:e=>{e.stopPropagation(),L(c)},onDragEnd:e=>{e.stopPropagation(),L(null),z(null),V(null)}},l.default.createElement(p.GripVertical,{size:14}))),ge.map(t=>l.default.createElement(`td`,{key:t.key,className:`px-3 py-2 border-b border-border/50`},fe(e,t.key,s)))),ye(c,`after`,e,s))})})),n&&l.default.createElement(`tfoot`,{className:b||T.Table.footerClassName},n)))),h&&l.default.createElement(`div`,{className:`table-after flex shrink-0 items-center self-stretch`},h))}var au=12,ou=12,su=(e,t,n)=>Math.max(t,Math.min(n,e)),cu=e=>{if(!e)return``;let t=e.trim().replace(/^\{/,``).replace(/\}$/,``).trim(),n=t.split(`.`);return(n[n.length-1]||t).trim()},lu=(e,t)=>{let n=e-t.left,r=t.width/au;return su(Math.floor(n/r),0,au-1)},uu=()=>`${Date.now()}_${Math.random().toString(16).slice(2)}`,du=(e,t,n)=>{let r=e=>{let r=e+t;return r>au?!1:!n.some(t=>{let n=e,i=r,a=t.colStart;return n<t.colStart+t.colSpan&&a<i})};for(let n=e;n<=au-t;n++)if(r(n))return n;for(let e=0;e<=au-t;e++)if(r(e))return e;return null},fu=(e,t,n)=>{let r=e.find(e=>e.id===t);if(!r)return e;let i=e.filter(e=>e.id!==t),a=du(su(n,0,au-r.colSpan),r.colSpan,i);return a===null?e:e.map(e=>e.id===t?{...e,colStart:a}:e)},pu=(e,t,n)=>{let r=e.find(e=>e.id===t);if(!r)return e;let i=e.filter(e=>e.id!==t),a=su(n,1,au-r.colStart),o=e=>{let t=r.colStart,n=r.colStart+e;return i.some(e=>{let r=e.colStart,i=e.colStart+e.colSpan;return t<i&&r<n})};for(;a>1&&o(a);)a--;return o(a)?e:e.map(e=>e.id===t?{...e,colSpan:a}:e)},mu=(e,t,n)=>{if(n<=0)return null;let r=e.map(e=>{let n=e.colStart+e.colSpan/2;return{it:e,dist:Math.abs(n-(t+.5))}}).sort((e,t)=>e.dist-t.dist).map(e=>e.it);for(let t of r){if(t.colSpan-1<n)continue;let r=t.colSpan-n,i=t.colStart+r;if(!(i<0||i+n>au))return{nextItems:e.map(e=>e.id===t.id?{...e,colSpan:r}:e),insertCol:i}}return null},hu=(0,l.forwardRef)(({name:e,defaultSpan:t=1,heightPx:n=100},r)=>{let i=(0,l.useRef)(null),a=Y(`layout`),{value:o,handleChange:s}=Nl({name:e,defaultValue:[]}),c=Array.isArray(o)?o:[],u=t=>{let n=typeof t==`function`?t(c):t;s({target:{name:e,value:n}})},[d,f]=(0,l.useState)(null),[p,m]=(0,l.useState)(null),[h,g]=(0,l.useState)(``),_=(0,l.useRef)(null),v=e=>{g(e),_.current&&window.clearTimeout(_.current),_.current=window.setTimeout(()=>g(``),2500)};(0,l.useEffect)(()=>()=>{_.current&&window.clearTimeout(_.current)},[]),(0,l.useImperativeHandle)(r,()=>({getValue:()=>c,setValue:e=>u(e),clear:()=>u([])}));let y=(0,l.useMemo)(()=>Array.from({length:au},(e,t)=>t),[]),b=e=>{e.preventDefault()},x=e=>{if(e.preventDefault(),e.dataTransfer.getData(`application/x-layoutbuilder-internal`)){f(null);return}if(c.length>=ou){v(a.maxElements);return}let n=i.current;if(!n)return;let r=n.getBoundingClientRect(),o=lu(e.clientX,r),s=cu(e.dataTransfer.getData(`text/plain`)||e.dataTransfer.getData(`label`)||``)||`unknown`,l=su(t,1,au),d=du(su(o,0,au-l),l,c);if(d!==null){u(e=>[...e,{id:uu(),fieldName:s,colStart:d,colSpan:l}]);return}if(!mu(c,o,l)){v(a.noSpace);return}u(e=>{if(e.length>=ou)return v(a.maxElements),e;let t=mu(e,o,l);if(!t)return v(a.noSpace),e;let n={id:uu(),fieldName:s,colStart:t.insertCol,colSpan:l};return[...t.nextItems,n]})},S=e=>t=>{f(e),t.dataTransfer.setData(`application/x-layoutbuilder-internal`,e),t.dataTransfer.effectAllowed=`move`},C=e=>{if(e.preventDefault(),!d)return;let t=i.current;if(!t)return;let n=t.getBoundingClientRect(),r=lu(e.clientX,n);u(e=>fu(e,d,r))},w=()=>f(null),T=e=>t=>{t.stopPropagation(),t.preventDefault();let n=c.find(t=>t.id===e);n&&m({id:e,startClientX:t.clientX,startSpan:n.colSpan})},E=e=>{if(!p)return;let t=i.current;if(!t)return;let n=t.getBoundingClientRect().width/au,r=e.clientX-p.startClientX,a=Math.round(r/n),o=p.startSpan+a;u(e=>pu(e,p.id,o))},D=()=>{p&&m(null)},O=e=>u(t=>t.filter(t=>t.id!==e));return l.default.createElement(`div`,{onMouseMove:E,onMouseUp:D,onMouseLeave:D},h&&l.default.createElement(`div`,{style:{marginBottom:8,padding:`8px 10px`,borderRadius:10,border:`1px solid rgba(255,255,255,0.15)`,background:`rgba(255,255,255,0.04)`,fontSize:12,opacity:.95}},h),l.default.createElement(`div`,{ref:i,onDragOver:e=>{b(e),C(e)},onDrop:x,onDragEnd:w,style:{position:`relative`,height:n,borderRadius:12,border:`2px dashed rgba(255, 255, 255, 0.25)`,background:`rgba(0,0,0,0.02)`,overflow:`hidden`}},y.map(e=>l.default.createElement(`div`,{key:e,style:{position:`absolute`,top:0,bottom:0,left:`${e/au*100}%`,width:1,background:`rgba(255, 255, 255, 0.06)`,pointerEvents:`none`}})),c.map(e=>l.default.createElement(`div`,{key:e.id,draggable:!0,onDragStart:S(e.id),style:{position:`absolute`,top:12,bottom:12,left:`${e.colStart/au*100}%`,width:`${e.colSpan/au*100}%`,padding:10,borderRadius:12,border:`1px solid rgba(255, 255, 255, 0.18)`,boxShadow:`0 1px 2px rgba(0,0,0,0.06)`,cursor:d===e.id?`grabbing`:`grab`,display:`flex`,alignItems:`center`,justifyContent:`center`,userSelect:`none`},title:a.dragToMove},l.default.createElement(`div`,{style:{fontSize:10,fontWeight:400,opacity:.9}},e.fieldName),l.default.createElement(`button`,{type:`button`,onClick:()=>O(e.id),style:{position:`absolute`,border:`none`,top:3,right:3,color:`white`,background:`rgba(255, 255, 255, 0.03)`,fontSize:12,cursor:`pointer`},title:a.remove},`×`),l.default.createElement(`div`,{onMouseDown:T(e.id),style:{position:`absolute`,right:4,top:`50%`,transform:`translateY(-50%)`,width:10,height:30,borderRadius:6,background:`rgba(255, 255, 255, 0.12)`,cursor:`ew-resize`},title:a.dragToResize}))),c.length===0&&l.default.createElement(`div`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,pointerEvents:`none`}},a.dragHere)))}),gu=({name:e,onDataLoaded:t,onClear:n=void 0,onParseField:r=void 0,label:i=void 0,icon:a=`upload`,delimiter:o=void 0,normalizeKeys:s=!1,removeEmptyFields:c=!1,required:u=!1,before:d=void 0,after:f=void 0,wrapperClassName:p=void 0,className:m=void 0})=>{let h=Y(`upload`),[g,_]=(0,l.useState)(null),[v,y]=(0,l.useState)(!1),[b,S]=(0,l.useState)(null),C=(0,l.useRef)(null),w=([e,t])=>{if(![``,null,void 0].includes(e)&&t!==void 0&&!(c&&[``,null].includes(t)))return s&&(e=V(e)),r?r([e,t]):[e.trim(),ye(t)]},T=e=>{e&&x.default.parse(e,{header:!0,skipEmptyLines:!0,delimiter:o,dynamicTyping:!1,complete:n=>{_(null),S(e),t({data:n.data.map(e=>Object.fromEntries(Object.entries(e).reduce((e,[t,n])=>{let r=w([t,n]);return r&&e.push(r),e},[]))),fields:(n.meta?.fields||[]).reduce((e,t)=>(t&&e.push(s?V(t):t),e),[]),file:e})},error:e=>{_(e instanceof Error?e.message:String(e)),S(null)}})},E=e=>{T(e.target.files?.[0]??null),e.target.value=``},D=e=>{e.preventDefault(),e.stopPropagation(),y(!0)},O=e=>{e.preventDefault(),e.stopPropagation(),y(!1)},k=e=>{e.preventDefault(),e.stopPropagation(),y(!1),T(e.dataTransfer.files?.[0]??null)},A=()=>C.current?.click();return l.default.createElement(Z,{className:p},d,l.default.createElement(`div`,{className:X(m),"data-name":e},i&&l.default.createElement(fo,{label:i,required:u}),l.default.createElement(`input`,{ref:C,type:`file`,accept:`.csv,.tsv,text/csv,text/plain`,className:`hidden`,onChange:E}),b?l.default.createElement(`div`,{className:`rounded-lg border border-border overflow-hidden`},l.default.createElement(`div`,{className:`flex items-center gap-3 px-3 py-3`},l.default.createElement(`div`,{className:`w-9 h-9 rounded-md bg-emerald-500/10 flex items-center justify-center shrink-0`},l.default.createElement(Q,{name:`file-text`,className:`w-4 h-4 text-emerald-600`})),l.default.createElement(`div`,{className:`flex-1 min-w-0`},l.default.createElement(`p`,{className:`text-sm font-medium truncate`},b.name),l.default.createElement(`p`,{className:`text-xs text-muted-foreground`},(e=>e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`)(b.size))),l.default.createElement(`div`,{className:`flex items-center gap-1 text-xs text-emerald-600 font-medium shrink-0`},l.default.createElement(Q,{name:`check-circle`,className:`w-4 h-4`}),h.loaded),l.default.createElement(`button`,{type:`button`,onClick:()=>{S(null),n?.()},className:`w-7 h-7 flex items-center justify-center rounded-full text-muted-foreground hover:bg-red-50 hover:text-red-500 transition-colors`,title:h.removeFile},l.default.createElement(Q,{name:`x`,className:`w-3.5 h-3.5`}))),l.default.createElement(`div`,{className:`px-3 py-2 border-t border-border bg-muted/20`},l.default.createElement(`button`,{type:`button`,onClick:A,className:`flex items-center gap-1.5 text-xs text-muted-foreground hover:text-primary transition-colors`},l.default.createElement(Q,{name:`refresh-cw`,className:`w-3.5 h-3.5`}),h.uploadAnother))):l.default.createElement(`button`,{type:`button`,onClick:A,onDragOver:D,onDragLeave:O,onDrop:k,className:X(`w-full flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed py-8 px-4 transition-colors cursor-pointer`,v?`border-primary/60 bg-primary/8 text-primary`:`border-muted-foreground/25 bg-muted/30 text-muted-foreground hover:border-primary/40 hover:bg-primary/5 hover:text-primary/70`)},l.default.createElement(Q,{name:a,className:`w-8 h-8`}),l.default.createElement(`span`,{className:`text-sm font-medium`},v?h.dropToParse:h.clickOrDrag),l.default.createElement(`span`,{className:`text-xs opacity-60`},`.csv, .tsv`)),g&&l.default.createElement(qa,{message:`Parse error: ${g}`})),f)},_u=()=>Promise.all([import(`@tiptap/react`),import(`@tiptap/react/menus`),import(`@tiptap/starter-kit`),import(`@tiptap/extension-underline`),import(`@tiptap/extension-link`),import(`@tiptap/extension-image`),import(`@tiptap/extension-table`),import(`@tiptap/extension-placeholder`),import(`@tiptap/extension-character-count`)]),vu=null,yu=null,bu=()=>vu?Promise.resolve(vu):(yu||=_u().then(e=>(vu=e,e)),yu),xu=`bold.italic.underline.strike.|.headings.|.bulletList.orderedList.|.blockquote.code.codeBlock.|.link.|.imageUpload.documentUpload.|.table.|.sourceCode.|.undo.redo.clearFormat`.split(`.`),Su=e=>e===!0?{tagBreadcrumb:!0,wordCount:!0,charCount:!1}:e===!1?{}:{tagBreadcrumb:!0,wordCount:!0,charCount:!1,...e},Cu=8,wu={bold:{icon:`bold`,label:`Bold`,isActive:e=>e.isActive(`bold`),execute:e=>e.chain().focus().toggleBold().run()},italic:{icon:`italic`,label:`Italic`,isActive:e=>e.isActive(`italic`),execute:e=>e.chain().focus().toggleItalic().run()},underline:{icon:`underline`,label:`Underline`,isActive:e=>e.isActive(`underline`),execute:e=>e.chain().focus().toggleUnderline().run()},strike:{icon:`strikethrough`,label:`Strikethrough`,isActive:e=>e.isActive(`strike`),execute:e=>e.chain().focus().toggleStrike().run()},heading1:{icon:`heading-1`,label:`Heading 1`,isActive:e=>e.isActive(`heading`,{level:1}),execute:e=>e.chain().focus().toggleHeading({level:1}).run()},heading2:{icon:`heading-2`,label:`Heading 2`,isActive:e=>e.isActive(`heading`,{level:2}),execute:e=>e.chain().focus().toggleHeading({level:2}).run()},heading3:{icon:`heading-3`,label:`Heading 3`,isActive:e=>e.isActive(`heading`,{level:3}),execute:e=>e.chain().focus().toggleHeading({level:3}).run()},bulletList:{icon:`list`,label:`Bullet List`,isActive:e=>e.isActive(`bulletList`),execute:e=>e.chain().focus().toggleBulletList().run()},orderedList:{icon:`list-ordered`,label:`Ordered List`,isActive:e=>e.isActive(`orderedList`),execute:e=>e.chain().focus().toggleOrderedList().run()},blockquote:{icon:`quote`,label:`Blockquote`,isActive:e=>e.isActive(`blockquote`),execute:e=>e.chain().focus().toggleBlockquote().run()},code:{icon:`code`,label:`Inline Code`,isActive:e=>e.isActive(`code`),execute:e=>e.chain().focus().toggleCode().run()},codeBlock:{icon:`square-code`,label:`Code Block`,isActive:e=>e.isActive(`codeBlock`),execute:e=>e.chain().focus().toggleCodeBlock().run()},link:{icon:`link`,label:`Link`,isActive:e=>e.isActive(`link`),execute:e=>{if(e.isActive(`link`)){e.chain().focus().unsetLink().run();return}let t=window.prompt(`URL`);t&&e.chain().focus().setLink({href:t}).run()}},undo:{icon:`undo-2`,label:`Undo`,execute:e=>e.chain().focus().undo().run()},redo:{icon:`redo-2`,label:`Redo`,execute:e=>e.chain().focus().redo().run()},clearFormat:{icon:`eraser`,label:`Clear Format`,execute:e=>e.chain().focus().clearNodes().unsetAllMarks().run()}},Tu=({def:e,editor:t})=>{let n=e.isActive?.(t)??!1;return l.default.createElement(`button`,{type:`button`,title:e.label,onMouseDown:n=>{n.preventDefault(),e.execute(t)},className:X(`inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors`,`hover:bg-muted disabled:cursor-not-allowed disabled:opacity-40`,n&&`bg-muted text-primary`)},l.default.createElement(Q,{name:e.icon,size:14}))},Eu=[{value:0,label:`Normal`,previewClass:`text-sm`,execute:e=>e.chain().focus().setParagraph().run()},{value:1,label:`Heading 1`,previewClass:`text-2xl font-bold`,execute:e=>e.chain().focus().setHeading({level:1}).run()},{value:2,label:`Heading 2`,previewClass:`text-xl font-semibold`,execute:e=>e.chain().focus().setHeading({level:2}).run()},{value:3,label:`Heading 3`,previewClass:`text-lg font-semibold`,execute:e=>e.chain().focus().setHeading({level:3}).run()}],Du=({editor:e})=>{let[t,n]=l.default.useState(!1),r=(0,l.useRef)(null);l.default.useEffect(()=>{let e=e=>{r.current&&!r.current.contains(e.target)&&n(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let i=e.isActive(`heading`,{level:1})?`H1`:e.isActive(`heading`,{level:2})?`H2`:e.isActive(`heading`,{level:3})?`H3`:`P`;return l.default.createElement(`div`,{ref:r,className:`relative`},l.default.createElement(`button`,{type:`button`,title:`Paragraph style`,onMouseDown:e=>{e.preventDefault(),n(e=>!e)},className:`inline-flex h-7 items-center gap-0.5 rounded px-1.5 text-xs font-medium transition-colors hover:bg-muted`},i,l.default.createElement(Q,{name:`chevron-down`,size:10})),t&&l.default.createElement(`div`,{className:`absolute left-0 top-full z-50 mt-1 w-44 overflow-hidden rounded-md border border-border bg-background shadow-lg`},Eu.map(t=>l.default.createElement(`button`,{key:t.value,type:`button`,onMouseDown:r=>{r.preventDefault(),t.execute(e),n(!1)},className:X(`block w-full px-3 py-1.5 text-left leading-snug transition-colors hover:bg-muted`,t.previewClass,t.value===0&&e.isActive(`paragraph`)&&`bg-muted/60`,t.value!==0&&e.isActive(`heading`,{level:t.value})&&`bg-muted/60`)},t.label))))},Ou=({editor:e})=>{let[t,n]=l.default.useState(!1),[r,i]=l.default.useState(3),[a,o]=l.default.useState(3),s=(0,l.useRef)(null);l.default.useEffect(()=>{let e=e=>{s.current&&!s.current.contains(e.target)&&n(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let c=(t,r)=>{e.chain().focus().insertTable({rows:t,cols:r,withHeaderRow:!0}).run(),n(!1)};return l.default.createElement(`div`,{ref:s,className:`relative`},l.default.createElement(`button`,{type:`button`,title:`Insert Table`,onMouseDown:e=>{e.preventDefault(),n(e=>!e)},className:`inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors hover:bg-muted`},l.default.createElement(Q,{name:`table`,size:14})),t&&l.default.createElement(`div`,{className:`absolute left-0 top-full z-50 mt-1 rounded-md border border-border bg-background p-3 shadow-lg`},l.default.createElement(`div`,{className:`grid gap-1.5`,style:{gridTemplateColumns:`repeat(${Cu}, 18px)`,width:`fit-content`}},Array.from({length:Cu*Cu},(e,t)=>{let n=Math.floor(t/Cu)+1,s=t%Cu+1,u=n<=r&&s<=a;return l.default.createElement(`button`,{key:`${n}-${s}`,type:`button`,"aria-label":`Insert ${n} by ${s} table`,onMouseEnter:()=>{i(n),o(s)},onFocus:()=>{i(n),o(s)},onMouseDown:e=>{e.preventDefault(),c(n,s)},className:X(`h-[18px] w-[18px] rounded-[4px] border transition-colors`,u?`border-primary bg-primary/25 shadow-[inset_0_0_0_1px_rgba(59,130,246,0.35)]`:`border-border bg-background hover:border-primary/50 hover:bg-muted/60`)})})),l.default.createElement(`div`,{className:`mt-3 text-center text-xs font-medium text-muted-foreground`},r,` x `,a)))},ku=({editor:e})=>l.default.createElement(`div`,{className:`flex items-center gap-0.5 rounded-md border border-border bg-background px-1 py-0.5 shadow-lg`},[{icon:`rows-2`,label:`Add row above`,execute:()=>e.chain().focus().addRowBefore().run()},{icon:`rows-3`,label:`Add row below`,execute:()=>e.chain().focus().addRowAfter().run()},{icon:`columns-2`,label:`Add column left`,execute:()=>e.chain().focus().addColumnBefore().run()},{icon:`columns-3`,label:`Add column right`,execute:()=>e.chain().focus().addColumnAfter().run()},{icon:`minus-square`,label:`Delete row`,execute:()=>e.chain().focus().deleteRow().run()},{icon:`rectangle-ellipsis`,label:`Delete column`,execute:()=>e.chain().focus().deleteColumn().run()},{icon:`trash-2`,label:`Delete table`,execute:()=>e.chain().focus().deleteTable().run()}].map((e,t)=>l.default.createElement(l.default.Fragment,{key:e.label},t>0&&t!==4&&l.default.createElement(`div`,{className:`mx-0.5 h-4 w-px bg-border`}),l.default.createElement(`button`,{type:`button`,title:e.label,onMouseDown:t=>{t.preventDefault(),e.execute()},className:`inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors hover:bg-muted`},l.default.createElement(Q,{name:e.icon,size:14}))))),Au=({editor:e,commands:t,sourceMode:n,onImageUpload:r,onDocumentUpload:i,onSourceToggle:a,compact:o})=>{let[,s]=l.default.useReducer(e=>e+1,0);return l.default.useEffect(()=>(e.on(`selectionUpdate`,s),e.on(`transaction`,s),()=>{e.off(`selectionUpdate`,s),e.off(`transaction`,s)}),[e]),l.default.createElement(`div`,{className:X(`flex flex-wrap items-center gap-0.5 px-2 py-1`,!o&&`border-b border-border`)},t.map((t,o)=>{if(t===`|`)return l.default.createElement(`div`,{key:o,className:`mx-0.5 h-4 w-px bg-border`});if(t===`headings`)return l.default.createElement(Du,{key:t,editor:e});if(t===`table`)return l.default.createElement(Ou,{key:t,editor:e});if(t===`imageUpload`)return l.default.createElement(`button`,{key:t,type:`button`,title:`Upload Image`,onMouseDown:e=>{e.preventDefault(),r()},className:`inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors hover:bg-muted`},l.default.createElement(Q,{name:`image`,size:14}));if(t===`documentUpload`)return l.default.createElement(`button`,{key:t,type:`button`,title:`Upload Document`,onMouseDown:e=>{e.preventDefault(),i()},className:`inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors hover:bg-muted`},l.default.createElement(Q,{name:`file-up`,size:14}));if(t===`sourceCode`)return l.default.createElement(`button`,{key:t,type:`button`,title:`Source Code`,onMouseDown:e=>{e.preventDefault(),a()},className:X(`inline-flex h-7 w-7 items-center justify-center rounded text-sm transition-colors hover:bg-muted`,n&&`bg-muted text-primary`)},l.default.createElement(Q,{name:`code`,size:14}));let s=wu[t];return s?l.default.createElement(Tu,{key:t,def:s,editor:e}):null}))},ju=e=>{try{let{$anchor:t}=e.state.selection,n=[];for(let e=t.depth;e>=0;e--){let r=t.node(e).type.name;r!==`doc`&&n.unshift(r)}return n}catch{return[]}},Mu=({editor:e,config:t})=>{let[n,r]=(0,l.useState)(0);(0,l.useEffect)(()=>{let t=()=>r(e=>e+1);return e.on(`selectionUpdate`,t),e.on(`transaction`,t),()=>{e.off(`selectionUpdate`,t),e.off(`transaction`,t)}},[e]);let i=t.tagBreadcrumb?ju(e):[],a=e.storage.characterCount;return l.default.createElement(`div`,{className:`flex items-center gap-3 border-t border-border px-3 py-1 text-xs text-muted-foreground select-none`},t.tagBreadcrumb&&i.length>0&&l.default.createElement(`div`,{className:`flex items-center gap-1 font-mono`},i.map((e,t)=>l.default.createElement(l.Fragment,{key:t},t>0&&l.default.createElement(`span`,{className:`opacity-40`},`›`),l.default.createElement(`span`,null,e)))),l.default.createElement(`div`,{className:`ml-auto flex items-center gap-3`},t.wordCount&&a&&l.default.createElement(`span`,null,a.words(),` words`),t.charCount&&a&&l.default.createElement(`span`,null,a.characters(),` chars`)))},Nu=({srcset:e})=>{let t=e.split(`,`).map(e=>e.trim()).map(e=>{let[t,n]=e.split(` `);return{src:t,width:parseInt(n,10)}}).filter(e=>e.src&&!isNaN(e.width));return t.length?l.default.createElement(`div`,{className:`flex flex-col gap-1.5`},l.default.createElement(`p`,{className:`text-xs font-medium text-muted-foreground`},`Responsive variants `,l.default.createElement(`span`,{className:`font-normal opacity-60`},`(`,t.length,` generated)`)),l.default.createElement(`div`,{className:`flex gap-1.5`},t.map(e=>l.default.createElement(`a`,{key:e.width,href:e.src,target:`_blank`,rel:`noopener noreferrer`,className:`group relative flex-1 overflow-hidden rounded border border-border`,style:{backgroundImage:`repeating-conic-gradient(#e4e4e4 0% 25%, #f5f5f5 0% 50%)`,backgroundSize:`8px 8px`}},l.default.createElement(`img`,{src:e.src,alt:`${e.width}w`,className:`h-12 w-full object-contain transition-opacity group-hover:opacity-80`}),l.default.createElement(`span`,{className:`absolute bottom-0.5 left-0.5 rounded bg-black/60 px-1 py-0.5 text-[9px] font-mono leading-none text-white`},e.width,`px`),l.default.createElement(`div`,{className:`absolute inset-0 flex items-center justify-center opacity-0 transition-opacity group-hover:opacity-100`},l.default.createElement(`div`,{className:`rounded-md bg-black/60 p-1`},l.default.createElement(Q,{name:`external-link`,size:11,className:`text-white`}))))))):null},Pu=({items:e,onInsertAll:t,onCropSave:n,onCancel:r})=>{let[i,a]=(0,l.useState)(0),[o,s]=(0,l.useState)(()=>e.map(e=>({alt:e.defaultAlt,href:``,target:`_blank`,enabled:!0}))),[c,u]=(0,l.useState)(!1),d=(0,l.useRef)(null);(0,l.useEffect)(()=>{d.current?.focus()},[i]),(0,l.useEffect)(()=>{s(t=>{if(e.length<=t.length)return t;let n=e.slice(t.length).map(e=>({alt:e.defaultAlt,href:``,target:`_blank`,enabled:!0}));return[...t,...n]})},[e.length]);let f=e.length,p=e[i]??e[0],m=o[i]??{alt:``,href:``,target:`_blank`,enabled:!0},h=o.filter(e=>e.enabled).length,g=e=>s(t=>t.map((t,n)=>n===i?{...t,...e}:t));return l.default.createElement(l.default.Fragment,null,l.default.createElement(mr,{title:f===1?`Insert image`:`Insert images`,onClose:r,size:`md`,footer:l.default.createElement(`div`,{className:`flex w-full items-center justify-between`},l.default.createElement(`label`,{className:`flex cursor-pointer select-none items-center gap-2 text-sm`},l.default.createElement(`input`,{type:`checkbox`,checked:m.enabled,onChange:e=>g({enabled:e.target.checked}),className:`h-4 w-4 rounded accent-primary`}),`Include`),l.default.createElement(`div`,{className:`flex gap-2`},l.default.createElement(`button`,{type:`button`,onClick:r,className:`h-8 rounded-md px-3 text-sm transition-colors hover:bg-muted`},`Cancel`),l.default.createElement(`button`,{type:`button`,onClick:()=>t(o),disabled:h===0,className:`h-8 rounded-md bg-primary px-3 text-sm text-primary-foreground transition-colors hover:bg-primary/90 disabled:opacity-50`},f===1?`Insert`:`Insert (${h})`)))},f>1&&l.default.createElement(`div`,{className:`mb-3 flex items-center justify-between gap-3`},l.default.createElement(`div`,{className:`flex gap-1.5 overflow-x-auto pb-0.5`},e.map((e,t)=>l.default.createElement(`button`,{key:t,type:`button`,onClick:()=>a(t),title:e.fileProps.fileName,className:X(`relative h-12 w-12 flex-shrink-0 overflow-hidden rounded-md border-2 transition-all`,t===i?`border-primary shadow-md`:`border-transparent opacity-50 hover:opacity-90`,!o[t]?.enabled&&`opacity-20 grayscale`)},l.default.createElement(`img`,{src:e.preview,alt:``,className:`h-full w-full object-cover`})))),l.default.createElement(`div`,{className:`flex flex-shrink-0 items-center gap-0.5`},l.default.createElement(`button`,{type:`button`,onClick:()=>a(e=>Math.max(0,e-1)),disabled:i===0,className:`flex h-7 w-7 items-center justify-center rounded hover:bg-muted disabled:opacity-30`},l.default.createElement(Q,{name:`chevron-left`,size:14})),l.default.createElement(`span`,{className:`w-10 text-center text-xs tabular-nums text-muted-foreground`},i+1,` / `,f),l.default.createElement(`button`,{type:`button`,onClick:()=>a(t=>Math.min(e.length-1,t+1)),disabled:i>=e.length-1,className:`flex h-7 w-7 items-center justify-center rounded hover:bg-muted disabled:opacity-30`},l.default.createElement(Q,{name:`chevron-right`,size:14})))),l.default.createElement(`div`,{className:X(`group relative flex min-h-[160px] items-center justify-center overflow-hidden rounded-lg transition-opacity`,`[background-image:repeating-conic-gradient(#e4e4e4_0%_25%,#f5f5f5_0%_50%)]`,`dark:[background-image:repeating-conic-gradient(#2a2a2a_0%_25%,#343434_0%_50%)]`,`[background-size:16px_16px]`,!m.enabled&&`opacity-40`)},l.default.createElement(`img`,{src:p.preview,alt:``,className:`max-h-[160px] max-w-full object-contain`}),l.default.createElement(`div`,{className:`absolute right-2 top-2 flex gap-1 opacity-0 transition-opacity group-hover:opacity-100`},l.default.createElement(`a`,{href:p.preview,target:`_blank`,rel:`noopener noreferrer`,title:`Open original`,className:`flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80`},l.default.createElement(Q,{name:`external-link`,size:13})),l.default.createElement(`button`,{type:`button`,title:`Crop`,onClick:()=>u(!0),className:`flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80`},l.default.createElement(Q,{name:`crop`,size:13})))),l.default.createElement(`p`,{className:`mt-1.5 truncate font-mono text-xs text-muted-foreground`},p.fileProps.fileName),p.fileProps.srcset&&l.default.createElement(Nu,{srcset:p.fileProps.srcset}),l.default.createElement(`div`,{className:`mt-3 flex flex-col gap-1`},l.default.createElement(`label`,{className:`text-xs font-medium text-muted-foreground`},`Alt text `,l.default.createElement(`span`,{className:`font-normal opacity-60`},`(accessibility & SEO)`)),l.default.createElement(`input`,{ref:d,type:`text`,value:m.alt,onChange:e=>g({alt:e.target.value}),placeholder:`E.g. Team photo at company retreat`,className:`h-8 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring`})),l.default.createElement(`div`,{className:`mt-2 flex flex-col gap-1`},l.default.createElement(`label`,{className:`text-xs font-medium text-muted-foreground`},`Link URL `,l.default.createElement(`span`,{className:`font-normal opacity-60`},`(optional)`)),l.default.createElement(`div`,{className:`flex gap-1.5`},l.default.createElement(`input`,{type:`url`,value:m.href,onChange:e=>g({href:e.target.value}),placeholder:`https://...`,className:`h-8 min-w-0 flex-1 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring`}),l.default.createElement(`select`,{value:m.target,onChange:e=>g({target:e.target.value}),disabled:!m.href,className:`h-8 rounded-md border border-input bg-background px-2 text-xs outline-none focus:ring-1 focus:ring-ring disabled:opacity-40`},l.default.createElement(`option`,{value:`_blank`},`New tab`),l.default.createElement(`option`,{value:`_self`},`Same tab`))))),c&&l.default.createElement(Wo,{src:p.preview,mode:`modal`,title:`Crop — ${p.fileProps.fileName}`,onClose:()=>u(!1),onSave:e=>{n(i,e),u(!1)}}))},Fu=({state:e,onConfirm:t,onCancel:n})=>{let[r,i]=(0,l.useState)(e.attrs.src??``),[a,o]=(0,l.useState)(e.attrs.alt??``),[s,c]=(0,l.useState)(e.attrs.href??``),[u,d]=(0,l.useState)(e.attrs.target??`_blank`),[f,p]=(0,l.useState)(!1),m=(0,l.useRef)(null);(0,l.useEffect)(()=>{m.current?.focus()},[]);let h=e.attrs.srcset;return l.default.createElement(l.default.Fragment,null,l.default.createElement(mr,{title:`Edit image`,onClose:n,size:`sm`,footer:l.default.createElement(`div`,{className:`flex justify-end gap-2`},l.default.createElement(`button`,{type:`button`,onClick:n,className:`h-8 rounded-md px-3 text-sm transition-colors hover:bg-muted`},`Cancel`),l.default.createElement(`button`,{type:`button`,onClick:()=>t({src:r,alt:a,href:s,target:u,enabled:!0}),className:`h-8 rounded-md bg-primary px-3 text-sm text-primary-foreground transition-colors hover:bg-primary/90`},`Save`))},r&&l.default.createElement(`div`,{className:`group relative mb-3 overflow-hidden rounded-lg bg-muted/40`},l.default.createElement(Er,{src:r,fit:`contain`,height:140,wrapperClassName:`w-full`,className:`w-full`}),l.default.createElement(`div`,{className:`absolute right-2 top-2 flex gap-1 opacity-0 transition-opacity group-hover:opacity-100`},l.default.createElement(`a`,{href:r,target:`_blank`,rel:`noopener noreferrer`,title:`Open original`,className:`flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80`},l.default.createElement(Q,{name:`external-link`,size:13})),l.default.createElement(`button`,{type:`button`,title:`Crop`,onClick:()=>p(!0),className:`flex h-7 w-7 items-center justify-center rounded-md bg-black/60 text-white backdrop-blur-sm transition-colors hover:bg-black/80`},l.default.createElement(Q,{name:`crop`,size:13})))),h&&l.default.createElement(Nu,{srcset:h}),l.default.createElement(`div`,{className:`flex flex-col gap-1`},l.default.createElement(`label`,{className:`text-xs font-medium text-muted-foreground`},`Image URL `,l.default.createElement(`span`,{className:`font-normal opacity-60`},`(path or https://…)`)),l.default.createElement(`input`,{type:`url`,value:r,onChange:e=>i(e.target.value),placeholder:`https://example.com/image.jpg`,className:`h-8 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring`})),l.default.createElement(`div`,{className:`mt-2 flex flex-col gap-1`},l.default.createElement(`label`,{className:`text-xs font-medium text-muted-foreground`},`Alt text `,l.default.createElement(`span`,{className:`font-normal opacity-60`},`(accessibility & SEO)`)),l.default.createElement(`input`,{ref:m,type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`E.g. Team photo at company retreat`,className:`h-8 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring`})),l.default.createElement(`div`,{className:`mt-2 flex flex-col gap-1`},l.default.createElement(`label`,{className:`text-xs font-medium text-muted-foreground`},`Link URL `,l.default.createElement(`span`,{className:`font-normal opacity-60`},`(optional)`)),l.default.createElement(`div`,{className:`flex gap-1.5`},l.default.createElement(`input`,{type:`url`,value:s,onChange:e=>c(e.target.value),placeholder:`https://...`,className:`h-8 min-w-0 flex-1 rounded-md border border-input bg-background px-2.5 text-sm outline-none focus:ring-1 focus:ring-ring`}),l.default.createElement(`select`,{value:u,onChange:e=>d(e.target.value),disabled:!s,className:`h-8 rounded-md border border-input bg-background px-2 text-xs outline-none focus:ring-1 focus:ring-ring disabled:opacity-40`},l.default.createElement(`option`,{value:`_blank`},`New tab`),l.default.createElement(`option`,{value:`_self`},`Same tab`))))),f&&l.default.createElement(Wo,{src:r,mode:`modal`,title:`Crop image`,onClose:()=>p(!1),onSave:e=>{i(e),p(!1)}}))},Iu=(e,t,n)=>cc(e,t,n,{queryPattern:/^[A-Za-z0-9-]*$/}),Lu=({modules:e,name:t,value:n,outputFormat:r,placeholder:i,disabled:a,toolbar:o,toolbarCommands:s,statusBar:c,minHeight:u,maxHeight:d,imageUpload:f,documentUpload:p,hasError:m,className:h,onEditorChange:g,commands:_,commandsTrigger:v})=>{let{useEditor:y,EditorContent:b}=e[0],{BubbleMenu:x}=e[1],S=e[2].default,C=e[3].default,w=e[4].default,T=e[5].default.extend({addAttributes(){return{...this.parent?.()??{},srcset:{default:null},sizes:{default:null},loading:{default:null},decoding:{default:null},href:{default:null},target:{default:null}}},renderHTML({HTMLAttributes:e}){let{href:t,target:n,...r}=e,i=this.options.HTMLAttributes??{},a=[`img`,Object.fromEntries(Object.entries({...i,...r}).filter(([,e])=>e!=null))];return t?[`a`,{"data-href":t,"data-target":n??`_blank`,rel:`noopener noreferrer`},a]:a}}),{Table:E,TableRow:D,TableHeader:O,TableCell:k}=e[6],A=e[7].default,j=e[8].default,[M,N]=(0,l.useState)(!1),[P,F]=(0,l.useState)(``),[I,L]=(0,l.useState)([]),[R,z]=(0,l.useState)(null),[,B]=l.default.useReducer(e=>e+1,0),V=(0,l.useRef)(null),ee=(0,l.useRef)(null),[te,ne]=(0,l.useState)({open:!1,query:``,anchorPosition:null,editorContext:null}),H=(0,l.useRef)(te);H.current=te;let re=_?.length?v??`/`:void 0,U=(_?.length??0)>=10,ie=l.default.useMemo(()=>new Map((_??[]).map(e=>[e.name,e])),[_]),ae=l.default.useMemo(()=>(_??[]).map(e=>({key:e.name,label:`${re??`/`}${e.name}`,value:e.name,icon:e.icon})),[_,re]),oe=f?.srcsetWidths===void 0?[400,800]:f.srcsetWidths,se=Ho(),ce=os({uploadPath:f?.path,srcsetWidths:oe,onFileReady:e=>{let t=e.fileName.replace(/\.[^/.]+$/,``).replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim().replace(/^(.)/,e=>e.toUpperCase()),n=e.url||(e.base64?`data:${e.type};base64,${e.base64}`:``);L(r=>[...r,{fileProps:e,preview:n,defaultAlt:t}])}}),W=Na({minHeight:u,maxHeight:d,paddingOffset:16}),le=(0,l.useCallback)(()=>{ne({open:!1,query:``,anchorPosition:null,editorContext:null})},[]),ue=(0,l.useCallback)((e,t)=>{let n=e.state.selection;if(!n.empty)return null;let{$from:r}=n,i=r.parent;if(!i.isTextblock)return null;let a=i.textContent??``,o=r.parentOffset,s=Iu(a,o,t);if(!s)return null;let c=n.from-o,l=c+s.start,u=c+s.end;return{value:e.getText(),textBeforeCaret:a.slice(0,o),textAfterCaret:a.slice(o),trigger:t,query:s.query,triggerRange:{start:l,end:u},insert:t=>{let{from:n,to:r}=e.state.selection,i=e.state.tr.insertText(t,n,r);e.view.dispatch(i),e.commands.focus()},replace:(t,n,r)=>{let i=e.state.tr.insertText(r,t,n);e.view.dispatch(i),e.commands.focus()}}},[]),G=y({extensions:[S,C,w.configure({openOnClick:!1,HTMLAttributes:{target:null,rel:`noopener noreferrer nofollow`}}),T.configure({allowBase64:!0}),E.configure({resizable:!0}),D,O,k,A.configure({placeholder:i??``}),j],content:n||``,editable:!a,editorProps:{attributes:{style:`min-height: ${W.adjustedMinHeight}px`},handleClick(e,t,n){if(n.ctrlKey||n.metaKey){let n=e.state.doc.resolve(t).marks().find(e=>e.type.name===`link`);if(n?.attrs.href)return window.open(n.attrs.href,`_blank`,`noopener,noreferrer`),!0}let r=n.target;if(r.tagName===`IMG`)try{let t=e.posAtDOM(r,0),n=e.state.doc.nodeAt(t);if(n?.type.name===`image`){let e={...n.attrs};if(!e.href){let t=n.marks?.find(e=>e.type.name===`link`);t&&(t.attrs.href&&(e.href=t.attrs.href),t.attrs.target&&(e.target=t.attrs.target))}return z({pos:t,attrs:e}),!0}}catch{}return!1},handleKeyDown(e,t){if(!H.current.open)return!1;switch(t.key){case`ArrowDown`:return t.preventDefault(),ee.current?.moveNext(),!0;case`ArrowUp`:return t.preventDefault(),ee.current?.movePrev(),!0;case`Enter`:case`Tab`:return t.preventDefault(),ee.current?.selectActive(),!0;case`Escape`:return t.preventDefault(),ee.current?.close(),!0;default:return!1}}},onUpdate:({editor:e})=>{g(r===`json`?JSON.stringify(e.getJSON()):r===`text`?e.getText():e.getHTML().replace(/<a([^>]*?)data-href="([^"]*?)"/g,`<a$1href="$2"`).replace(/data-target="([^"]*?)"/g,`target="$1"`))}}),K=(0,l.useRef)(n);(0,l.useEffect)(()=>{!G||n===K.current||(K.current=n,n!==(r===`json`?JSON.stringify(G.getJSON()):r===`text`?G.getText():G.getHTML().replace(/<a([^>]*?)data-href="([^"]*?)"/g,`<a$1href="$2"`).replace(/data-target="([^"]*?)"/g,`target="$1"`))&&G.commands.setContent(r===`json`&&n?JSON.parse(n):n||``))},[n,G,r]),(0,l.useEffect)(()=>{if(G)return G.view.dom.style.minHeight=`${W.adjustedMinHeight}px`,G.on(`selectionUpdate`,B),()=>{G.off(`selectionUpdate`,B)}},[G,W.adjustedMinHeight]),(0,l.useEffect)(()=>{if(!G||!re||M){H.current.open&&le();return}let e=()=>{if(!G.isFocused){H.current.open&&le();return}let e=G.state.selection;if(!e.empty){H.current.open&&le();return}let{$from:t}=e,n=t.parent;if(!n.isTextblock){H.current.open&&le();return}let r=n.textContent??``,i=t.parentOffset,a=Iu(r,i,re);if(!a){H.current.open&&le();return}let o=G.view.coordsAtPos(e.from),s=ue(G,re);!o||!s||ne({open:!0,query:a.query,anchorPosition:{top:o.bottom,left:o.left},editorContext:s})};return e(),G.on(`selectionUpdate`,e),G.on(`transaction`,e),()=>{G.off(`selectionUpdate`,e),G.off(`transaction`,e)}},[le,G,ue,re,M]);let q=(0,l.useCallback)(async(e,t)=>{let n=ie.get(e.value);if(n){if(n.handler){let e=await n.handler(uc(t)),r=n.consumeSuffix?sc(t.textAfterCaret,n.consumeSuffix):0;t.replace(t.triggerRange.start,t.triggerRange.end+r,e);return}t.replace(t.triggerRange.start,t.triggerRange.end,`${t.trigger}${n.name} `)}},[ie]),de=()=>{G&&(M?G.commands.setContent(P):F(G.getHTML()),N(e=>!e))},fe=e=>new Promise(t=>{let n=new FileReader;n.onload=e=>t(e.target?.result),n.readAsDataURL(e)}),pe=async e=>{if(!G)return;let t=p?.maxBytes??20971520;for(let n of e){if(n.size>t){alert(`"${n.name}" exceeds the ${Math.round(t/1048576)} MB limit.`);continue}let e;if(se&&p?.path)try{e=await se.upload(n,`${p.path}/${n.name}`)??await fe(n)}catch{e=await fe(n)}else e=await fe(n);let r=n.size<1048576?`${Math.round(n.size/1024)} KB`:`${(n.size/1048576).toFixed(1)} MB`;G.chain().focus().insertContent([{type:`text`,marks:[{type:`link`,attrs:{href:e,target:`_blank`,rel:`noopener noreferrer`}}],text:`📎 ${n.name} (${r})`},{type:`text`,text:` `}]).run()}},me=e=>{if(!G)return;let t=[];e.forEach(({alt:e,href:n,target:r,enabled:i},a)=>{if(!i)return;let o=I[a];if(!o)return;ce.handleRemove(o.fileProps.key);let s=o.fileProps.url||o.preview,c={alt:e||null,href:n||null,target:n?r||`_blank`:null},l=o.fileProps.srcset?{...c,src:s,srcset:o.fileProps.srcset,sizes:o.fileProps.sizes??`(max-width: 640px) 100vw, 800px`,loading:`lazy`,decoding:`async`}:{...c,src:s};t.push({type:`image`,attrs:l})}),t.length&&G.chain().focus().insertContent(t).run(),L([])},he=(0,l.useCallback)(async(e,t)=>{let n=`image.jpg`;if(L(r=>(n=r[e]?.fileProps.fileName??`image.jpg`,r.map((n,r)=>r===e?{...n,preview:t,fileProps:{...n.fileProps,url:t,srcset:``,sizes:``}}:n))),oe.length)try{let{variants:r,naturalWidth:i}=await Fo(t,oe),a=se&&f?.path?await Io(r,se,f.path,n):r.map(e=>({url:e.localUrl,width:e.width})),o=await fetch(t).then(e=>e.blob()),s=URL.createObjectURL(o),c=Lo([...a,{url:s,width:i}]);L(t=>t.map((t,n)=>n===e?{...t,fileProps:{...t.fileProps,srcset:c,sizes:`(max-width: 640px) 100vw, 800px`}}:t))}catch{}},[oe,se,f?.path]),ge=({src:e,alt:t,href:n,target:r})=>{if(!G||!R)return;let{pos:i,attrs:a}=R,o=G.state.doc.nodeAt(i);if(o?.type.name===`image`){let{tr:s,schema:c}=G.state,l=e!==void 0&&e!==a.src,u={...a,...l?{src:e||null,srcset:null,sizes:null}:{},alt:t||null,href:n||null,target:n?r||`_blank`:null},d=o.marks??[],f=d.some(e=>e.type.name===`link`),p=d;n?f||(p=[...d,c.marks.link.create({href:n,target:r||`_blank`})]):p=d.filter(e=>e.type.name!==`link`),s.setNodeMarkup(i,null,u,p),G.view.dispatch(s)}z(null)},_e=s.filter(e=>e!==`imageUpload`&&e!==`documentUpload`&&e!==`sourceCode`);return l.default.createElement(l.default.Fragment,null,I.length>0&&l.default.createElement(Pu,{items:I,onInsertAll:me,onCropSave:he,onCancel:()=>{I.forEach(e=>ce.handleRemove(e.fileProps.key)),L([])}}),R&&l.default.createElement(Fu,{state:R,onConfirm:ge,onCancel:()=>z(null)}),l.default.createElement(`div`,{className:X(`rounded-md border border-input bg-background shadow-sm transition-colors`,`focus-within:ring-1 focus-within:ring-ring`,m&&`border-destructive focus-within:ring-destructive/20`,a&&`cursor-not-allowed opacity-50`,h)},o===`fixed`&&G&&l.default.createElement(Au,{editor:G,commands:s,sourceMode:M,onImageUpload:ce.handleUpload,onDocumentUpload:()=>V.current?.click(),onSourceToggle:de}),o===`floating`&&G&&l.default.createElement(x,{editor:G},l.default.createElement(`div`,{className:`flex items-center gap-0.5 rounded-md border border-border bg-background px-1 py-0.5 shadow-lg`},l.default.createElement(Au,{editor:G,commands:_e,sourceMode:M,onImageUpload:ce.handleUpload,onDocumentUpload:()=>V.current?.click(),onSourceToggle:de,compact:!0}))),G&&!M&&l.default.createElement(x,{editor:G,shouldShow:({editor:e,from:t,to:n})=>t!==n||!e.isActive(`link`)?!1:!!e.getAttributes(`link`).href,options:{placement:`bottom-start`,offset:6}},(()=>{let e=G.getAttributes(`link`).href??``;return l.default.createElement(`div`,{className:`flex items-center gap-1.5 rounded-md border border-border bg-background px-2 py-1.5 shadow-md`},l.default.createElement(Q,{name:`link`,size:12,className:`shrink-0 text-muted-foreground`}),l.default.createElement(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`max-w-[220px] truncate text-xs text-primary underline`},e),l.default.createElement(`div`,{className:`mx-0.5 h-3 w-px bg-border`}),l.default.createElement(`button`,{type:`button`,title:`Edit link`,onMouseDown:t=>{t.preventDefault();let n=window.prompt(`URL`,e);n?G.chain().focus().setLink({href:n}).run():n===``&&G.chain().focus().unsetLink().run()},className:`inline-flex h-5 w-5 items-center justify-center rounded transition-colors hover:bg-muted`},l.default.createElement(Q,{name:`pencil`,size:11})),l.default.createElement(`button`,{type:`button`,title:`Remove link`,onMouseDown:e=>{e.preventDefault(),G.chain().focus().unsetLink().run()},className:`inline-flex h-5 w-5 items-center justify-center rounded transition-colors hover:bg-muted`},l.default.createElement(Q,{name:`unlink`,size:11})))})()),G&&!M&&l.default.createElement(x,{editor:G,shouldShow:({editor:e})=>e.isActive(`table`),options:{placement:`top-start`,offset:8}},l.default.createElement(ku,{editor:G})),M?l.default.createElement(`textarea`,{"aria-label":`${t} source`,className:`w-full resize-none bg-background px-3 py-2 font-mono text-xs text-foreground outline-none`,style:{minHeight:W.adjustedMinHeight,maxHeight:d,overflowY:`auto`},value:P,onChange:e=>F(e.target.value)}):(()=>{let e=l.default.createElement(`div`,{style:W.wrapperStyle,className:X(`w-full px-3 py-2 text-sm`,`[&_.ProseMirror]:outline-none`,`[&_.ProseMirror_p]:my-1`,`[&_.ProseMirror_h1]:my-2 [&_.ProseMirror_h1]:text-2xl [&_.ProseMirror_h1]:font-bold`,`[&_.ProseMirror_h2]:my-2 [&_.ProseMirror_h2]:text-xl [&_.ProseMirror_h2]:font-semibold`,`[&_.ProseMirror_h3]:my-1 [&_.ProseMirror_h3]:text-lg [&_.ProseMirror_h3]:font-semibold`,`[&_.ProseMirror_ul]:list-disc [&_.ProseMirror_ul]:pl-6`,`[&_.ProseMirror_ol]:list-decimal [&_.ProseMirror_ol]:pl-6`,`[&_.ProseMirror_blockquote]:my-2 [&_.ProseMirror_blockquote]:border-l-4 [&_.ProseMirror_blockquote]:border-border [&_.ProseMirror_blockquote]:pl-4 [&_.ProseMirror_blockquote]:text-muted-foreground`,`[&_.ProseMirror_code]:rounded [&_.ProseMirror_code]:bg-muted [&_.ProseMirror_code]:px-1 [&_.ProseMirror_code]:font-mono [&_.ProseMirror_code]:text-xs`,`[&_.ProseMirror_pre]:my-2 [&_.ProseMirror_pre]:overflow-x-auto [&_.ProseMirror_pre]:rounded [&_.ProseMirror_pre]:bg-muted [&_.ProseMirror_pre]:p-3`,`[&_.ProseMirror_table]:w-full [&_.ProseMirror_table]:border-collapse`,`[&_.ProseMirror_td]:border [&_.ProseMirror_td]:border-border [&_.ProseMirror_td]:px-2 [&_.ProseMirror_td]:py-1`,`[&_.ProseMirror_th]:border [&_.ProseMirror_th]:border-border [&_.ProseMirror_th]:bg-muted [&_.ProseMirror_th]:px-2 [&_.ProseMirror_th]:py-1 [&_.ProseMirror_th]:font-semibold`,`[&_.ProseMirror_a]:text-primary [&_.ProseMirror_a]:underline [&_.ProseMirror_a]:pointer-events-none`,`[&_.ProseMirror_a_img]:pointer-events-auto`,`[&_.ProseMirror_.is-editor-empty:first-child::before]:pointer-events-none [&_.ProseMirror_.is-editor-empty:first-child::before]:float-left [&_.ProseMirror_.is-editor-empty:first-child::before]:h-0 [&_.ProseMirror_.is-editor-empty:first-child::before]:text-muted-foreground [&_.ProseMirror_.is-editor-empty:first-child::before]:content-[attr(data-placeholder)]`)},l.default.createElement(b,{editor:G}));return re&&ae.length>0?l.default.createElement(pc,{ref:ee,trigger:re,searchable:U,controlled:te.editorContext?{open:te.open,anchorPosition:te.anchorPosition,query:te.query,editorContext:te.editorContext,onClose:le}:void 0,onSelect:(e,t)=>{q(e,t)}},ae.map(e=>l.default.createElement(pc.Item,{key:e.key,label:e.label,value:e.value,icon:e.icon})),e):e})(),c&&G&&l.default.createElement(Mu,{editor:G,config:c}),l.default.createElement(`input`,{ref:ce.fileInputRef,type:`file`,multiple:!0,accept:f?.accept??`image/*`,className:`hidden`,onChange:e=>{let t=f?.maxBytes??10485760,n=Array.from(e.target.files??[]).find(e=>e.size>t);if(n){alert(`"${n.name}" exceeds the ${Math.round(t/1048576)} MB limit.`),e.target.value=``;return}ce.handleUploadChange(e)}}),l.default.createElement(`input`,{ref:V,type:`file`,multiple:!0,accept:p?.accept??`.pdf,.doc,.docx,.txt,.csv`,className:`hidden`,onChange:e=>{let t=Array.from(e.target.files??[]);t.length&&pe(t),e.target.value=``}})))},Ru=({name:e,onChange:t=void 0,defaultValue:n=void 0,label:r=void 0,required:i=!1,placeholder:a=void 0,disabled:o=!1,feedback:s=void 0,toolbar:c=`fixed`,toolbarCommands:u=xu,outputFormat:d=`html`,statusBar:f=!1,minHeight:p=120,maxHeight:m=void 0,imageUpload:h=void 0,documentUpload:g=void 0,labelClassName:_=void 0,inheritWrapperClassName:v=!0,wrapperClassName:y=void 0,className:b=void 0,before:x=void 0,after:S=void 0,validator:C=void 0,commands:w=void 0,commandsTrigger:T=void 0})=>{let{value:E,handleChange:D,formWrapClass:O}=Nl({name:e,onChange:t,wrapperClassName:y,defaultValue:n,inheritWrapperClassName:v}),k=Ml(e,{required:i,label:r,validator:C}),A=(0,l.useId)(),[j,M]=(0,l.useState)(vu);(0,l.useEffect)(()=>{j||bu().then(M)},[j]);let N=(0,l.useCallback)(t=>{D?.({target:{name:e,value:t}})},[D,e]),P=f!==!1&&Su(f);return l.default.createElement(Z,{className:O},r&&l.default.createElement(fo,{label:r,required:i,htmlFor:A,className:_}),l.default.createElement(`div`,{className:X(x||S?Ra:``)},x&&l.default.createElement(`span`,{className:X(`inline-flex shrink-0 items-center border border-input bg-muted px-3 py-1 text-sm text-muted-foreground`,`rounded-l-md rounded-r-none border-r-0`)},x),l.default.createElement(`div`,{className:`min-w-0 flex-1`},j?l.default.createElement(Lu,{modules:j,name:e,value:E??``,outputFormat:d,placeholder:a,disabled:o,toolbar:c,toolbarCommands:u,statusBar:P,minHeight:p,maxHeight:m,imageUpload:h,documentUpload:g,hasError:!!k,className:b,onEditorChange:N,commands:w,commandsTrigger:T}):l.default.createElement(`div`,{className:X(`rounded-md border border-input bg-muted/30 shadow-sm`,k&&`border-destructive`),style:{minHeight:p},"aria-busy":`true`,"aria-label":r})),S&&l.default.createElement(`span`,{className:X(`inline-flex shrink-0 items-center border border-input bg-muted px-3 py-1 text-sm text-muted-foreground`,`rounded-l-none rounded-r-md border-l-0`)},S)),k?l.default.createElement(qa,{message:k}):s&&l.default.createElement(`div`,{className:`mt-1 text-xs text-muted-foreground`},s))};function zu(e){return e?typeof e==`string`?l.default.createElement(Q,{name:e,size:16}):e:null}function Bu({title:e=void 0,description:t=void 0,meta:n=void 0,badge:r=void 0,icon:i=void 0,trailing:a=void 0,footer:o=void 0,children:s=void 0,href:c=void 0,external:d=!1,active:f=!1,disabled:p=!1,dashed:m=!1,compact:h=!1,align:g=`start`,onClick:_=void 0,before:v=void 0,after:y=void 0,wrapperClassName:b=void 0,className:x=void 0,titleClassName:S=void 0,descriptionClassName:C=void 0,metaClassName:w=void 0,badgeClassName:T=void 0,leadingClassName:E=void 0,bodyClassName:D=void 0,headerClassName:O=void 0,trailingClassName:k=void 0,footerClassName:A=void 0,style:j=void 0,motion:M=void 0}){let N=J(`listCard`),P=!!c||!!_,F=Ht(p||!P,j,M??N.ListCard.motion?.press??`press`),I=zu(i),L=o??s,R=X(`flex w-full gap-3 rounded-xl border border-border/60 bg-background p-4 text-left transition-[background-color,border-color,box-shadow,color] duration-150`,g===`center`?`items-center`:`items-start`,P&&!p&&`cursor-pointer`,N.ListCard.className,f?N.ListCard.activeClassName:N.ListCard.inactiveClassName,p&&N.ListCard.disabledClassName,m&&N.ListCard.dashedClassName,h&&N.ListCard.compactClassName,x),z=l.default.createElement(l.default.Fragment,null,I?l.default.createElement(`div`,{className:X(`mt-0.5 flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,g===`center`&&`mt-0`,N.ListCard.leadingClassName,E)},I):null,l.default.createElement(`div`,{className:X(`min-w-0 flex-1`,N.ListCard.bodyClassName,D)},e||r?l.default.createElement(`div`,{className:X(`flex items-center gap-2`,N.ListCard.headerClassName,O)},e?l.default.createElement(`div`,{className:X(`min-w-0 flex-1 truncate text-sm font-semibold text-foreground`,N.ListCard.titleClassName,S)},e):l.default.createElement(`div`,{className:`flex-1`}),r?l.default.createElement(`div`,{className:X(`shrink-0`,N.ListCard.badgeClassName,T)},r):null):null,t?l.default.createElement(`div`,{className:X(`mt-1 text-sm text-muted-foreground`,N.ListCard.descriptionClassName,C)},t):null,n?l.default.createElement(`div`,{className:X(`mt-1 text-xs text-muted-foreground`,N.ListCard.metaClassName,w)},n):null,L?l.default.createElement(`div`,{className:X(`mt-3`,N.ListCard.footerClassName,A)},L):null),a?l.default.createElement(`div`,{className:X(`shrink-0 self-center`,N.ListCard.trailingClassName,k)},a):null),B=e=>{if(p){e.preventDefault(),e.stopPropagation();return}_?.(e)},V;return V=c&&!p?d?l.default.createElement(`a`,{href:c,target:`_blank`,rel:`noreferrer noopener`,className:R,style:F.style,...F.pressHandlers,onClick:B},z):l.default.createElement(u.Link,{to:c,className:R,style:F.style,...F.pressHandlers,onClick:B},z):P?l.default.createElement(`button`,{type:`button`,className:R,style:F.style,disabled:p,...F.pressHandlers,onClick:B},z):l.default.createElement(`div`,{className:R,style:j,"aria-disabled":p||void 0},z),l.default.createElement(Z,{className:X(N.ListCard.wrapperClassName,b)},v,V,y)}var Vu=208,Hu=52;function Uu(e){return e.map(e=>({path:e.path,title:e.title,icon:e.icon,group:e.group,end:e.end,badge:e.badge,children:e.children?Uu(e.children):void 0}))}function Wu(e,t,n){return n?e===t:e===t||t!==`/`&&e.startsWith(t+`/`)}function Gu(e){let t=new Map;for(let n of e){let e=n.group??`General`;t.has(e)||t.set(e,[]),t.get(e).push(n)}return[...t.entries()].map(([e,t])=>({key:e,items:t}))}function Ku({value:e}){let t=J(`sideNav`);return l.default.createElement(`span`,{className:X(`ml-auto shrink-0 text-[10px] font-semibold leading-none px-1.5 py-[3px] rounded-full bg-primary/15 text-primary`,t.SideNav.itemBadgeClassName)},e)}function qu({children:e,open:t}){let{pathname:n}=(0,u.useLocation)(),r=J(`sideNav`);return l.default.createElement(`div`,{style:{maxHeight:t?`${e.length*34+8}px`:`0px`,overflow:`hidden`,transition:`max-height 200ms ease`}},l.default.createElement(`div`,{className:`py-0.5 space-y-0.5`},e.map(e=>{let t=Wu(n,e.path,e.end);return l.default.createElement(u.Link,{key:e.path,to:e.path,className:X(`flex items-center rounded-md pl-9 pr-3 py-[6px] text-sm transition-colors`,r.SideNav.subItemClassName,t?r.SideNav.subItemActiveClassName:r.SideNav.subItemInactiveClassName)},l.default.createElement(`span`,{className:`flex-1 truncate`},e.title),e.badge!==void 0&&l.default.createElement(Ku,{value:e.badge}))})))}function Ju({item:e,expanded:t,open:n,showIcons:r,onToggle:i}){let{pathname:a}=(0,u.useLocation)(),o=J(`sideNav`),s=(e.children?.length??0)>0,c=Wu(a,e.path,e.end),d=s&&e.children.some(e=>Wu(a,e.path,e.end)),f=c?o.SideNav.itemActiveClassName:d?o.SideNav.itemChildActiveClassName:o.SideNav.itemInactiveClassName,p=r?l.default.createElement(`span`,{className:X(`relative shrink-0 flex items-center justify-center w-[18px] h-[18px]`,o.SideNav.itemIconClassName)},e.icon?l.default.createElement(Q,{name:e.icon,size:17}):l.default.createElement(`span`,{className:`w-1.5 h-1.5 rounded-full bg-current opacity-30`}),!t&&e.badge!==void 0&&l.default.createElement(`span`,{className:X(`absolute -top-0.5 -right-1 w-[7px] h-[7px] rounded-full bg-primary ring-1 ring-background`,o.SideNav.itemCollapsedBadgeClassName)})):null,m={opacity:+!!t,maxWidth:t?`200px`:`0px`,overflow:`hidden`,whiteSpace:`nowrap`,transition:`opacity 150ms ease, max-width 200ms ease`},h=X(`flex items-center w-full rounded-md px-2 py-[7px] text-sm transition-colors gap-2.5`,o.SideNav.itemClassName);return s?l.default.createElement(`div`,null,l.default.createElement(`div`,{className:`flex items-center gap-0.5`},l.default.createElement(u.Link,{to:e.path,title:t?void 0:e.title,className:X(`flex-1 flex items-center gap-2.5 rounded-md px-2 py-[7px] text-sm transition-colors`,o.SideNav.itemClassName,f)},p,l.default.createElement(`span`,{style:m,className:o.SideNav.itemTextClassName},e.title),t&&e.badge!==void 0&&l.default.createElement(Ku,{value:e.badge})),t&&l.default.createElement(`button`,{onClick:()=>i(e.path),className:X(`shrink-0 flex items-center justify-center w-6 h-6 rounded transition-colors text-muted-foreground/50 hover:text-foreground hover:bg-accent`,o.SideNav.itemToggleClassName),title:n?`Collapse`:`Expand`},l.default.createElement(`span`,{style:{transform:n?`rotate(180deg)`:`rotate(0deg)`,transition:`transform 200ms ease`}},l.default.createElement(Q,{name:`chevron-down`,size:13})))),t&&l.default.createElement(qu,{children:e.children,open:n})):l.default.createElement(u.Link,{to:e.path,title:t?void 0:e.title,className:X(h,f)},p,l.default.createElement(`span`,{style:m,className:o.SideNav.itemTextClassName},e.title),t&&e.badge!==void 0&&l.default.createElement(Ku,{value:e.badge}))}function Yu({group:e,expanded:t,openItems:n,showIcons:r,onToggle:i}){let a=e.key===`General`,o=J(`sideNav`);return l.default.createElement(`div`,{className:`mb-1`},!a&&l.default.createElement(`div`,{style:{height:t?void 0:`1px`},className:t?`px-2 pb-0.5 pt-3 first:pt-1`:X(`mx-2 my-2 bg-border/40`,o.SideNav.groupDividerClassName)},t&&l.default.createElement(`span`,{className:X(`text-[10.5px] font-semibold uppercase tracking-widest text-muted-foreground/50 select-none`,o.SideNav.groupLabelClassName)},e.key)),l.default.createElement(`div`,{className:`space-y-0.5`},e.items.map(e=>l.default.createElement(Ju,{key:e.path,item:e,expanded:t,open:n.has(e.path),showIcons:r,onToggle:i}))))}function Xu({menuKey:e,items:t,defaultCollapsed:n=!1,showIcons:r=!0,showCollapseButton:i=!0,footer:a,header:o,embedded:s=!1}){let{pathname:c}=(0,u.useLocation)(),d=J(`sideNav`),f=Xp(e??``),p=t??(e?Uu(f):[]),[m,h]=(0,l.useState)(n),[g,_]=(0,l.useState)(!1),[v,y]=(0,l.useState)(new Set),b=(0,l.useRef)(null),x=!m||g;(0,l.useEffect)(()=>{y(e=>{let t=new Set(e);return p.forEach(e=>{e.children?.some(e=>Wu(c,e.path,e.end))&&t.add(e.path)}),t})},[c]);let S=(0,l.useCallback)(e=>{y(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),C=()=>{m&&(b.current&&clearTimeout(b.current),_(!0))},w=()=>{m&&(b.current=setTimeout(()=>_(!1),80))};if(p.length===0)return null;let T=Gu(p);return s?l.default.createElement(`nav`,{className:X(`px-1.5 py-2`,d.SideNav.navClassName)},T.map(e=>l.default.createElement(Yu,{key:e.key,group:e,expanded:!0,openItems:v,showIcons:r,onToggle:S}))):l.default.createElement(`div`,{className:X(`min-h-0`,d.SideNav.wrapperClassName),style:{width:m?Hu:Vu,height:`100%`,transition:`width 220ms cubic-bezier(0.4,0,0.2,1)`,flexShrink:0,position:`relative`}},l.default.createElement(`aside`,{style:{width:x?Vu:Hu,transition:`width 220ms cubic-bezier(0.4,0,0.2,1)`,position:m?`absolute`:`sticky`,top:0,zIndex:m&&g?50:10,boxShadow:m&&g?`4px 0 24px rgba(0,0,0,0.10)`:`none`,height:`100%`,overflowX:`hidden`,overflowY:`hidden`},className:X(`flex min-h-0 flex-col border-r bg-background`,d.SideNav.shellClassName,m&&g&&d.SideNav.overlayClassName),onMouseEnter:C,onMouseLeave:w},o&&l.default.createElement(`div`,{className:X(`flex h-14 shrink-0 items-center border-b px-1.5`,d.SideNav.headerClassName),style:{opacity:+!!x,maxWidth:x?`100%`:`0px`,overflow:`hidden`,transition:`opacity 150ms ease, max-width 200ms ease`}},l.default.createElement(`div`,{className:`min-w-0 flex-1`},o)),l.default.createElement(`nav`,{className:X(`min-h-0 flex-1 overflow-y-auto overflow-x-hidden px-1.5 py-2`,d.SideNav.navClassName)},T.map(e=>l.default.createElement(Yu,{key:e.key,group:e,expanded:x,openItems:v,showIcons:r,onToggle:S}))),(i||a)&&l.default.createElement(`div`,{className:X(`shrink-0 border-t px-1.5 py-2 flex items-center gap-1`,d.SideNav.footerClassName)},i&&l.default.createElement(`button`,{onClick:()=>{h(e=>!e),_(!1)},title:m?`Expand sidebar`:`Collapse sidebar`,className:X(`shrink-0 flex items-center justify-center rounded-md w-8 h-8 transition-colors text-muted-foreground hover:text-foreground hover:bg-accent`,d.SideNav.collapseButtonClassName)},l.default.createElement(Q,{name:m?`chevrons-right`:`chevrons-left`,size:16})),a&&l.default.createElement(`div`,{style:{flex:1,minWidth:0,opacity:+!!x,maxWidth:x?`100%`:`0px`,overflow:`hidden`,transition:`opacity 150ms ease, max-width 200ms ease`}},a))))}function Zu({path:e,where:t,order:n,fieldMap:r}){let i=sr(),[a,o]=(0,l.useState)([]),s=(0,l.useMemo)(()=>{if(!(!t&&!n&&!r))return{where:t,order:n,fieldMap:r}},[r,n,t]);return(0,l.useEffect)(()=>i.subscribe(e,o,s),[i,s,e]),a}function Qu(e){if(e)return e}function $u({path:e,fromUrl:t,where:n,order:r,fieldMap:i,recordId:a=bi,...o}){let s=(0,u.useLocation)(),c=t?Qu(s.pathname):e,d=Zu({path:c,where:n,order:r,fieldMap:i}),f=l.default.useMemo(()=>{if(!r)return;let e=Object.entries(r)[0];if(!e)return;let[t,n]=e;return{field:t,dir:n}},[r]),p=o.sortable===void 0||o.sortable===!0?f??o.sortable:o.sortable;return l.default.createElement(df,{...o,records:d,recordId:a,sourcePath:c,sortable:p})}var ed=e=>e.replace(/[^a-zA-Z0-9_-]/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``),td=e=>t=>{if(typeof e==`function`)return String(e(t));let n=t[e];return n==null||n===``?``:String(n)},nd=(e,t)=>{if(e==null||e===`text`)return t;if(e===`boolean`)return t?`Yes`:`No`;if(e===`json`)return t==null?``:JSON.stringify(t,null,2);if(e===`badge`||e===`image`||e===`email`)return t;let n=N[e===`datetime`?`dateTime`:e];return n?n(t):t},rd=(e,t)=>typeof e.render==`function`?e.render(t):nd(e.render,t.value),id=e=>({key:e,label:N.toCamel(e,` `),sortable:!0}),ad=(e,t)=>{let n=[],r=e=>{l.default.Children.forEach(e,e=>{if(!l.default.isValidElement(e))return;let{props:i}=e;i.name?n.push(t(i)):i.children&&r(i.children)})};return r(Array.isArray(e)?e:[e]),n},od=(e,t,n)=>{if(e?.length)return e;if(l.default.isValidElement(n)){let e=ad(n,e=>id(e.name));if(e.length>0)return e}let r=t[0];return r?Object.entries(r).reduce((e,[t,n])=>(t.startsWith(`_`)||(l.default.isValidElement(n)||typeof n!=`object`||Array.isArray(n))&&e.push(id(t)),e),[]):[]},sd=(e,t)=>Array.isArray(e)?e.reduce((e,t)=>(t===`delete`?e[t]={kind:`delete`}:e[t]={kind:`modal`},e),{}):e?Object.entries(e).reduce((e,[t,n])=>(n&&(e[t]=n),e),{}):t?{add:{kind:`modal`},edit:{kind:`modal`},delete:{kind:`delete`}}:{},cd=(e,t)=>e?.visible?typeof e.visible==`function`?e.visible(t):e.visible:!0,ld=(e,t)=>e?.disabled?typeof e.disabled==`function`?e.disabled(t):e.disabled:!1,ud=(e,t,n)=>t?.label?t.label:e===`add`?n?.add??`Add`:e===`edit`?n?.edit??`Edit`:e===`delete`?n?.delete??`Delete`:N.toCamel(e,` `),dd=e=>{if(!(!e||typeof e==`boolean`))return e};function fd({records:e,recordId:t,columns:n,runAction:r,sortable:i,pagination:a,selection:o=!1,selectedKeys:s,onSelectionChange:c,onRowClick:u,reorderable:d=!1,onReorder:f,activeKey:p,groupBy:m,wrapperClassName:h,before:g,after:_}){let v=(0,l.useMemo)(()=>td(t),[t]),y=(0,l.useRef)(new Map),b=(0,l.useMemo)(()=>e.reduce((e,t)=>(e.set(v(t),t),e),new Map),[v,e]),x=(0,l.useMemo)(()=>n.reduce((e,t)=>(e.set(String(t.key),t),e),new Map),[n]);(0,l.useEffect)(()=>{let t=new Set(e.map(e=>v(e)));for(let e of y.current.keys())t.has(e)||y.current.delete(e)},[v,e]);let S=(0,l.useCallback)((e,t,n)=>{let i=e,a=v(i),o=x.get(t);if(!o)return _e(i,t);let s=_e(i,t),c=y.current.get(a)??new Map,l=c.get(t),u=typeof o.render==`function`;if(l&&l.recordRef===i&&l.valueRef===s&&l.renderRef===o.render&&(!u||l.rowIndex===n))return l.output;let d=rd(o,{record:i,value:s,key:t,rowIndex:n,runAction:e=>r(e,i)});return c.set(t,{recordRef:i,valueRef:s,renderRef:o.render,rowIndex:n,output:d}),y.current.set(a,c),d},[x,v,r]);return l.default.createElement(iu,{columns:n.map(e=>({key:String(e.key),label:e.label,className:e.className,sort:e.sortable})),records:e,sortable:i,pagination:a,renderCell:S,selection:o===`single`?`single`:`multiple`,selectedKeys:o?s:void 0,onSelectionChange:o?t=>{let n=new Set(t.keys),r=e.filter(e=>n.has(v(e))),i=t.keys;if(o===`single`&&t.keys.length>1){let e=t.keys[t.keys.length-1];i=e?[e]:[],r=e&&b.get(e)?[b.get(e)]:[]}let a={keys:i,records:r,hasSelection:i.length>0,clear:()=>c?.({keys:[],records:[],hasSelection:!1,clear:()=>void 0})};c?.(a)}:void 0,onRowClick:u?e=>{let t=v(e),n=b.get(t);n&&u(n)}:void 0,onReorder:d&&f?(e,t)=>{let n=e.map(e=>b.get(v(e))).filter(Boolean),r=b.get(v(t.record));r&&f(n,{fromIndex:t.fromIndex,toIndex:t.toIndex,record:r})}:void 0,activeKey:p,groupBy:m,wrapperClassName:h,before:g,after:_})}var pd=(0,l.createContext)(null),md=0,hd=`LLM Native`,gd={charset:`UTF-8`,viewport:`width=device-width, initial-scale=1.0`},_d={lang:`en`};function vd(e,t){return t.includes(`:`)?t:`${e}:${t}`}function yd(e){return Array.isArray(e)?e.join(`, `):e}function bd(e){return e===`siteName`?`og:site_name`:vd(`og`,e)}function xd(e){return[...e.canonical?[{rel:`canonical`,href:e.canonical}]:[],...e.ampHtml?[{rel:`amphtml`,href:e.ampHtml}]:[],...e.sitemap?[{rel:`sitemap`,href:e.sitemap,type:`application/xml`}]:[],...e.links??[]]}function Sd(e){return[...e.prev?[{rel:`prev`,href:e.prev}]:[],...e.next?[{rel:`next`,href:e.next}]:[]]}function Cd(e){return(e.alternates??[]).map(e=>({rel:`alternate`,href:e.href,hrefLang:e.hrefLang,media:e.media,type:e.type,title:e.title}))}function wd(e,t,n){return{name:{description:e.description,...e.meta??{},robots:n.robots??e.meta?.robots,googlebot:n.googlebot,keywords:yd(n.keywords),author:n.author,publisher:n.publisher,referrer:n.referrer,...n.meta??{},...Object.fromEntries(Object.entries(t.twitter??{}).map(([e,t])=>[vd(`twitter`,e),t]))},property:Object.fromEntries(Object.entries(t.openGraph??{}).map(([e,t])=>[bd(e),t]))}}function Td(e,t,n,r){return[...xd(t),...Sd(r),...Cd(n),...e.canonical&&!t.canonical?[{rel:`canonical`,href:e.canonical}]:[],...e.links??[]]}function Ed(e){return[...(e.fonts??[]).flatMap(e=>[...(e.dnsPrefetch??[]).map(e=>({rel:`dns-prefetch`,href:e})),...(e.preconnect??[]).map(t=>({rel:`preconnect`,href:t,crossOrigin:e.crossOrigin})),...e.preload?[{rel:`preload`,href:e.href,as:e.as??`font`,type:e.type,media:e.media,crossOrigin:e.crossOrigin}]:[],{rel:`stylesheet`,href:e.href,media:e.media,crossOrigin:e.crossOrigin}])]}function Dd(e){return[...e.manifest?[{rel:`manifest`,href:e.manifest}]:[],...e.favicon?[{rel:`icon`,href:e.favicon}]:[],...e.appleTouchIcon?[{rel:`apple-touch-icon`,href:e.appleTouchIcon}]:[],...e.icons??[]]}function Od(e){return{"theme-color":e.themeColor,"msapplication-TileColor":e.backgroundColor,"color-scheme":e.colorScheme,"application-name":e.applicationName,"mobile-web-app-capable":e.mobileWebAppCapable===void 0?void 0:String(e.mobileWebAppCapable),"apple-mobile-web-app-capable":e.appleMobileWebAppCapable===void 0?void 0:String(e.appleMobileWebAppCapable),"apple-mobile-web-app-title":e.appleMobileWebAppTitle,"apple-mobile-web-app-status-bar-style":e.appleMobileWebAppStatusBarStyle}}function kd(e){return Array.isArray(e.jsonLd)?e.jsonLd:e.jsonLd?[e.jsonLd]:[]}function Ad(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>!!e))}function jd(e){let{inline:t,...n}=e;return Object.fromEntries(Object.entries(n).filter(([,e])=>e!==void 0&&e!==!1))}function Md(e){let{inline:t,...n}=e;return Object.fromEntries(Object.entries(n).filter(([,e])=>e!==void 0&&e!==!1))}function Nd({appName:e,metadata:t,social:n,links:r,pagination:i,language:a,document:o,assets:s,pwa:c,schemaOrg:u}){if(globalThis.document===void 0)return null;let d=wd(t,n,o),f=Od(c),p=[...Td(r,o,a,i),...Ed(s),...Dd(c)],m=kd(u);return(0,h.createPortal)(l.default.createElement(l.default.Fragment,null,o.charset?l.default.createElement(`meta`,{charSet:o.charset,"data-rfs-head":`document`}):null,o.base?.href||o.base?.target?l.default.createElement(`base`,{href:o.base.href,target:o.base.target,"data-rfs-head":`document`}):null,o.viewport?l.default.createElement(`meta`,{name:`viewport`,content:o.viewport,"data-rfs-head":`document`}):null,Object.entries(o.httpEquiv??{}).map(([e,t])=>t?l.default.createElement(`meta`,{key:`http-equiv:${e}`,httpEquiv:e,content:t,"data-rfs-head":`document`}):null),Object.entries(d.name).map(([e,t])=>t?l.default.createElement(`meta`,{key:`name:${e}`,name:e,content:t,"data-rfs-head":`meta`}):null),Object.entries(d.property).map(([e,t])=>t?l.default.createElement(`meta`,{key:`property:${e}`,property:e,content:t,"data-rfs-head":`meta`}):null),Object.entries(f).map(([e,t])=>t?l.default.createElement(`meta`,{key:`pwa:${e}`,name:e,content:t,"data-rfs-head":`pwa`}):null),p.map((e,t)=>l.default.createElement(`link`,{key:`${e.rel}:${e.href??t}`,...Ad(e),"data-rfs-head":`link`})),(s.styles??[]).map((e,t)=>l.default.createElement(l.default.Fragment,{key:`style:${e.href??t}`},e.href?l.default.createElement(`link`,{rel:`stylesheet`,href:e.href,...Md(e),"data-rfs-head":`asset-style`}):null,e.inline?l.default.createElement(`style`,{id:e.id,nonce:e.nonce,media:e.media,title:e.title,"data-rfs-head":`asset-style`},e.inline):null)),(s.scripts??[]).map((e,t)=>l.default.createElement(l.default.Fragment,{key:`script:${e.src??t}`},e.src?l.default.createElement(`script`,{...jd(e),"data-rfs-head":`asset-script`}):null,e.inline?l.default.createElement(`script`,{type:e.type,id:e.id,nonce:e.nonce,"data-rfs-head":`asset-script`},e.inline):null)),m.map((e,t)=>l.default.createElement(`script`,{key:`schema-org:${t}`,type:`application/ld+json`,"data-rfs-head":`schema-org`},JSON.stringify(e)))),globalThis.document.head)}function Pd({appName:e=hd,children:t}){let n=e||`LLM Native`,r=l.default.useRef(globalThis.document===void 0?``:globalThis.document.documentElement.lang),i=l.default.useRef(globalThis.document===void 0?``:globalThis.document.documentElement.dir),[a,o]=(0,l.useState)({}),[s,c]=(0,l.useState)([]),[u,d]=(0,l.useState)({}),[f,p]=(0,l.useState)({}),[m,h]=(0,l.useState)({}),[g,_]=(0,l.useState)(_d),[v,y]=(0,l.useState)(gd),[b,x]=(0,l.useState)({}),[S,C]=(0,l.useState)({}),[w,T]=(0,l.useState)({}),E=(0,l.useCallback)(()=>o({}),[]),D=(0,l.useCallback)((e,t)=>{c(n=>[...n.filter(t=>t.id!==e),{id:e,metadata:t}])},[]),O=(0,l.useCallback)(e=>{c(t=>t.filter(t=>t.id!==e))},[]),k=(0,l.useCallback)(()=>d({}),[]),A=(0,l.useCallback)(()=>p({}),[]),j=(0,l.useCallback)(()=>h({}),[]),M=(0,l.useCallback)(()=>_(_d),[]),N=(0,l.useCallback)(()=>y(gd),[]),P=(0,l.useCallback)(()=>x({}),[]),F=(0,l.useCallback)(()=>C({}),[]),I=(0,l.useCallback)(()=>T({}),[]);(0,l.useEffect)(()=>{globalThis.document!==void 0&&(globalThis.document.documentElement.lang=g.lang??r.current,globalThis.document.documentElement.dir=g.dir??i.current)},[g.lang,g.dir]);let L=s.length>0?s[s.length-1].metadata:a;(0,l.useEffect)(()=>{globalThis.document!==void 0&&(globalThis.document.title=L.title??n)},[L.title,n]);let R=(0,l.useMemo)(()=>({metadata:L,social:u,links:f,pagination:m,language:g,document:v,assets:b,pwa:S,schemaOrg:w,setPageMetadata:o,clearPageMetadata:E,setPageMetadataEntry:D,clearPageMetadataEntry:O,setSocialHead:d,clearSocialHead:k,setHeadLinks:p,clearHeadLinks:A,setPaginationHead:h,clearPaginationHead:j,setLanguageHead:_,clearLanguageHead:M,setDocumentHead:y,clearDocumentHead:N,setAssetsHead:x,clearAssetsHead:P,setPwaHead:C,clearPwaHead:F,setSchemaOrg:T,clearSchemaOrg:I}),[L,u,f,m,g,v,b,S,w,E,D,O,k,A,j,M,N,P,F,I]);return l.default.createElement(pd.Provider,{value:R},t,l.default.createElement(Nd,{appName:n,metadata:L,social:u,links:f,pagination:m,language:g,document:v,assets:b,pwa:S,schemaOrg:w}))}function Fd(){return(0,l.useContext)(pd)}function Id(e){return JSON.stringify(e??{})}function Ld(e){let t=Fd(),n=l.default.useRef(null);n.current||=(md+=1,`metadata-${md}`);let r=Id(e);return(0,l.useEffect)(()=>{if(!t||!e)return;let r=n.current;return t.setPageMetadataEntry(r,e),()=>t.clearPageMetadataEntry(r)},[t?.setPageMetadataEntry,t?.clearPageMetadataEntry,r]),t}function Rd(e){let t=Fd(),n=Id(e);return(0,l.useEffect)(()=>{if(!t||!e)return;let n=t.social;return t.setSocialHead(e),()=>t.setSocialHead(n)},[t?.setSocialHead,n]),t}function zd(e){let t=Fd(),n=Id(e);return(0,l.useEffect)(()=>{if(!t||!e)return;let n=t.links;return t.setHeadLinks(e),()=>t.setHeadLinks(n)},[t?.setHeadLinks,n]),t}function Bd(e){let t=Fd(),n=Id(e);return(0,l.useEffect)(()=>{if(!t||!e)return;let n=t.pagination;return t.setPaginationHead(e),()=>t.setPaginationHead(n)},[t?.setPaginationHead,n]),t}function Vd(e){let t=Fd(),n=Id(e);return(0,l.useEffect)(()=>{if(!t||!e)return;let n=t.language;return t.setLanguageHead(e),()=>t.setLanguageHead(n)},[t?.setLanguageHead,n]),t}function Hd(e){let t=Fd(),n=Id(e);return(0,l.useEffect)(()=>{if(!t||!e)return;let n=t.document;return t.setDocumentHead({...n,...e}),()=>t.setDocumentHead(n)},[t?.setDocumentHead,n]),t}function Ud(e){let t=Fd(),n=Id(e);return(0,l.useEffect)(()=>{if(!t||!e)return;let n=t.assets;return t.setAssetsHead(e),()=>t.setAssetsHead(n)},[t?.setAssetsHead,n]),t}function Wd(e){let t=Fd(),n=Id(e);return(0,l.useEffect)(()=>{if(!t||!e)return;let n=t.pwa;return t.setPwaHead(e),()=>t.setPwaHead(n)},[t?.setPwaHead,n]),t}function Gd(e){let t=Fd(),n=Id(e);return(0,l.useEffect)(()=>{if(!t||!e)return;let n=t.schemaOrg;return t.setSchemaOrg(e),()=>t.setSchemaOrg(n)},[t?.setSchemaOrg,n]),t}function Kd(e){return Ld(e),null}var qd=e=>/^(https?:)?\/\//.test(e)||e.startsWith(`mailto:`)||e.startsWith(`tel:`),Jd=e=>!!e&&!qd(e)&&!e.startsWith(`#`),Yd=e=>e.startsWith(`#`),Xd=e=>typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(Xd).join(``):l.default.isValidElement(e)?Xd(e.props.children):``,Zd=e=>{if(l.default.isValidElement(e))return/language-([\w-]+)/.exec(e.props.className||``)?.[1]};function Qd({code:e,language:t}){let[n,r]=l.default.useState(!1),i=Y(`code`);return l.default.createElement(`div`,{className:`relative my-4 overflow-hidden rounded-md border bg-muted/50`},l.default.createElement(`div`,{className:`flex h-9 items-center justify-between border-b px-3`},l.default.createElement(`span`,{className:`text-xs font-medium text-muted-foreground`},t||i.codeLanguageDefault),l.default.createElement(`button`,{type:`button`,className:`rounded border bg-background px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,onClick:()=>{L(e),r(!0),window.setTimeout(()=>r(!1),1600)}},n?i.copied:i.copy)),l.default.createElement(`pre`,{className:`m-0 overflow-x-auto p-4 text-xs leading-relaxed`},l.default.createElement(`code`,{className:t?`language-${t}`:void 0},e)))}var $d=e=>({h1:({className:e,...t})=>l.default.createElement(`h1`,{className:X(`mt-8 scroll-m-20 text-3xl font-bold tracking-normal first:mt-0 [&>a]:no-underline [&>a:hover]:opacity-80`,e),...t}),h2:({className:e,...t})=>l.default.createElement(`h2`,{className:X(`mt-8 scroll-m-20 border-b pb-2 text-2xl font-semibold tracking-normal first:mt-0 [&>a]:no-underline [&>a:hover]:opacity-80`,e),...t}),h3:({className:e,...t})=>l.default.createElement(`h3`,{className:X(`mt-6 scroll-m-20 text-xl font-semibold tracking-normal [&>a]:no-underline [&>a:hover]:opacity-80`,e),...t}),h4:({className:e,...t})=>l.default.createElement(`h4`,{className:X(`mt-5 scroll-m-20 text-base font-semibold tracking-normal [&>a]:no-underline [&>a:hover]:opacity-80`,e),...t}),p:({className:e,...t})=>l.default.createElement(`p`,{className:X(`my-4 leading-7 text-foreground`,e),...t}),ul:({className:e,...t})=>l.default.createElement(`ul`,{className:X(`my-4 ml-6 list-disc space-y-2`,e),...t}),ol:({className:e,...t})=>l.default.createElement(`ol`,{className:X(`my-4 ml-6 list-decimal space-y-2`,e),...t}),li:({className:e,...t})=>l.default.createElement(`li`,{className:X(`leading-7`,e),...t}),blockquote:({className:e,...t})=>l.default.createElement(`blockquote`,{className:X(`my-4 border-l-4 border-primary bg-muted/40 px-4 py-3 text-sm text-muted-foreground`,e),...t}),table:({className:e,...t})=>l.default.createElement(`div`,{className:`my-4 w-full overflow-x-auto`},l.default.createElement(`table`,{className:X(`w-full border-collapse text-sm`,e),...t})),th:({className:e,...t})=>l.default.createElement(`th`,{className:X(`border bg-muted px-3 py-2 text-left font-semibold`,e),...t}),td:({className:e,...t})=>l.default.createElement(`td`,{className:X(`border px-3 py-2 align-top`,e),...t}),hr:({className:e,...t})=>l.default.createElement(`hr`,{className:X(`my-8 border-border`,e),...t}),a:({className:t,href:n=``,onClick:r,...i})=>l.default.createElement(`a`,{className:X(Yd(n)?`text-primary no-underline transition-opacity hover:opacity-80`:`font-medium text-primary no-underline transition-opacity hover:opacity-80`,t),href:n,target:qd(n)?`_blank`:void 0,rel:qd(n)?`noreferrer`:void 0,onClick:t=>{r?.(t),!t.defaultPrevented&&e&&Jd(n)&&(t.preventDefault(),e(n,t))},...i}),pre:({children:e})=>l.default.createElement(Qd,{code:Xd(e).replace(/\n$/,``),language:Zd(e)}),code:({className:e,children:t,...n})=>typeof e==`string`&&e.startsWith(`language-`)?l.default.createElement(`code`,{className:e,...n},t):l.default.createElement(`code`,{className:X(`rounded bg-muted px-1.5 py-0.5 text-[0.9em]`,e),...n},t),input:({className:e,...t})=>l.default.createElement(`input`,{className:X(`mr-2 align-middle`,e),disabled:!0,...t})});function ef({content:e,components:t,className:n,wrapperClassName:r,metadata:i,onInternalLinkClick:a}){let o=l.default.useMemo(()=>e.match(/^#[ \t]+(.+)/m)?.[1]?.trim(),[e]);Ld(i||o?{...i??{},title:i?.title??o}:void 0);let s=l.default.useMemo(()=>$d(a),[a]);return l.default.createElement(`div`,{className:X(`rf-markdown-reader max-w-none text-sm text-foreground`,r,n)},l.default.createElement(S.default,{remarkPlugins:[C.default],rehypePlugins:[w.default,[T.default,{behavior:`wrap`}],E.default],components:{...s,...t}},e))}var tf=({children:e,name:t,onChange:n=void 0,onAdd:r=void 0,onRemove:i=void 0,label:a=`Tab`,min:o=1,max:s=void 0,activeIndex:c=0,title:u=void 0,readOnly:d=!1,tabPosition:f=`default`})=>{let{value:p,handleChange:m}=Nl({name:t,onChange:n}),h=Array.isArray(p)?p:[],[g,_]=(0,l.useState)(c),[v,y]=(0,l.useState)(0),b=(0,l.useMemo)(()=>(h.length>0?h:Array.from({length:o},()=>({})))?.map((e,t)=>a.includes(`{`)?N.parse(h[t]??{},a):a+` `+(t+1)),[h,a,o,v]),x=typeof e==`function`?e({record:h[g]??{},records:h,currentIndex:g}):e,S=(0,l.useMemo)(()=>Il({children:x,parentName:`${t}.${g}`,parentKey:`${t}-${g}-${v}`}),[g,x,t,v]),C=()=>{let e=h.length>0?[...h,{}]:Array.from({length:b.length+1},()=>({}));r?.(e),m({target:{name:`${t}.${e.length-1}`,value:{}}}),_(e.length-1),y(e=>e+1)},w=e=>{let n=b.length-1;i?.(e),m({target:{name:`${t}.${e}`}}),g>=n&&_(e=>e-1),y(e=>e+1)},T=Ql[f],E=Yl(f);return l.default.createElement(`div`,null,u&&l.default.createElement(`h3`,null,u),l.default.createElement(T,{menu:l.default.createElement(l.default.Fragment,null,b?.map((e,n)=>l.default.createElement(`div`,{key:`${t}-${n}`,className:`${E.itemClassName} relative`},l.default.createElement(`button`,{type:`button`,role:`tab`,"aria-selected":n===g,onClick:()=>_(n),className:Xl(f,n===g,!d&&b.length-1>=o&&n===g?`pr-9`:void 0)},e),!d&&b.length-1>=o&&n===g&&l.default.createElement(wn,{className:`absolute right-2 top-1/2 -translate-y-1/2 p-1 text-current opacity-70 hover:opacity-100`,icon:`x`,onClick:()=>w(n)}))),!d&&(!s||b.length<s)&&l.default.createElement(`div`,{key:b.length+1,className:E.itemClassName},l.default.createElement(wn,{className:Xl(f,!1,`border border-dashed border-border/70 justify-center`),icon:`plus`,title:`Add tab`,onClick:C}))),content:l.default.createElement(`div`,{className:Zl()},S)}))},nf=({records:e,children:t,limit:n=void 0,page:r=void 0,maxPageButtons:i=void 0,appendTo:a=void 0,before:o=void 0,after:s=void 0,className:c=void 0,wrapperClassName:u=void 0,scrollToTopOnChange:d=void 0,scrollBehavior:f=void 0,align:p=void 0,sticky:m=void 0})=>{let g=J(`pagination`),_=Y(`common`),[v,y]=(0,l.useState)(r||1),b=n||e.length,x=Math.ceil(e.length/b),S=(v-1)*b,C=S+b,w=(0,l.useMemo)(()=>e.slice(S,C),[e,S,C]),T=e=>{e>=1&&e<=x&&y(e)};(0,l.useEffect)(()=>{(d||g.Pagination.scrollToTop)&&window.scrollTo({top:0,behavior:f||g.Pagination.scrollBehavior})},[v,d,f]);let E=(0,l.useMemo)(()=>{let e=Math.min(i||g.Pagination.maxItems,x),t=Math.max(1,v-Math.floor(e/2)),n=t+e-1;return n>x&&(n=x,t=Math.max(1,n-e+1)),Array.from({length:n-t+1},(e,n)=>t+n)},[v,i,x]),D=v===1?`disabled`:``,O=v===x?`disabled`:``,k={start:`justify-start`,center:`justify-center`,end:`justify-end`}[p||g.Pagination.align]||`justify-end`,A=l.default.createElement(Z,{className:(u||g.Pagination.wrapperClassName)+(m||g.Pagination.sticky?` ${g.Pagination.stickyClassName}`:``),style:m||g.Pagination.sticky?{backdropFilter:`blur(10px)`,backgroundColor:`rgba(255, 255, 255, 0.1)`}:{}},o,e.length>b&&l.default.createElement(`nav`,{"aria-label":_.pageNavigation,className:`${c||g.Pagination.className} flex w-full ${k}`},l.default.createElement(`ul`,{className:`flex items-center gap-1`},l.default.createElement(`li`,{className:`mr-2`},l.default.createElement(`button`,{type:`button`,onClick:()=>T(1),disabled:D===`disabled`,className:X(`inline-flex h-9 min-w-[2.25rem] items-center justify-center rounded-md border bg-background px-3 text-sm transition-colors`,D===`disabled`?`pointer-events-none opacity-40`:`cursor-pointer hover:bg-accent hover:text-accent-foreground`)},l.default.createElement(`span`,null,`«`))),l.default.createElement(`li`,null,l.default.createElement(`button`,{type:`button`,disabled:D===`disabled`,className:X(`inline-flex h-9 min-w-[2.25rem] items-center justify-center rounded-md border bg-background px-3 text-sm transition-colors`,D===`disabled`?`pointer-events-none opacity-40`:`cursor-pointer hover:bg-accent hover:text-accent-foreground`),onClick:()=>T(v-1)},l.default.createElement(`span`,null,`‹`))),E.map(e=>l.default.createElement(`li`,{key:e},l.default.createElement(`button`,{type:`button`,onClick:()=>T(e),className:X(`inline-flex h-9 min-w-[2.25rem] items-center justify-center rounded-md border bg-background px-3 text-sm transition-colors cursor-pointer hover:bg-accent hover:text-accent-foreground`,v===e&&`border-primary bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground`)},e))),l.default.createElement(`li`,{className:`ml-2`},l.default.createElement(`button`,{type:`button`,disabled:O===`disabled`,className:X(`inline-flex h-9 min-w-[2.25rem] items-center justify-center rounded-md border bg-background px-3 text-sm transition-colors`,O===`disabled`?`pointer-events-none opacity-40`:`cursor-pointer hover:bg-accent hover:text-accent-foreground`),onClick:()=>T(v+1)},l.default.createElement(`span`,null,`›`))),l.default.createElement(`li`,null,l.default.createElement(`button`,{type:`button`,onClick:()=>T(x),disabled:O===`disabled`,className:X(`inline-flex h-9 min-w-[2.25rem] items-center justify-center rounded-md border bg-background px-3 text-sm transition-colors`,O===`disabled`?`pointer-events-none opacity-40`:`cursor-pointer hover:bg-accent hover:text-accent-foreground`)},l.default.createElement(`span`,null,`»`))))),s);return l.default.createElement(l.default.Fragment,null,t(w,S),a?(0,h.createPortal)(A,a):a===void 0&&A)},rf=({records:e=void 0,header:t=void 0,footer:n=void 0,overlays:r=void 0,onRowClick:i=void 0,onSelectionChange:a=void 0,sortable:o=!1,pagination:s=void 0,gap:c=void 0,columns:u=void 0,groupBy:d=void 0,selectedKeys:f=void 0,before:p=void 0,after:m=void 0,wrapperClassName:h=void 0,className:g=void 0,headerClassName:_=void 0,scrollClassName:v=void 0,bodyClassName:y=void 0,footerClassName:b=void 0,selectedClassName:x=void 0})=>{let S=J(`gallery`),C=Y(`gallery`),w=Y(`common`),T=x||S.Gallery.selectedClassName,[E,D]=(0,l.useState)(null),O=(0,l.useCallback)(e=>{e&&D(e)},[]),k=c??S.Gallery.gap,A=u??S.Gallery.rowCols,j={0:`0`,1:`0.25rem`,2:`0.5rem`,3:`1rem`,4:`1.5rem`,5:`3rem`},M=j[k]??j[2],N=`0.75rem`,P=`calc(50% - 1rem)`,F=k===0?`${(100/A).toFixed(4)}%`:`calc((100% - (${M} * ${A-1})) / ${A})`,I=e||[],L=(0,l.useMemo)(()=>{if(!o)return;if(typeof o==`object`)return o;let t=e?.[0];if(!t)return;let n=Object.keys(t).find(e=>!e.startsWith(`_`));if(n)return{field:n,dir:`asc`}},[e,typeof o==`object`?o?.dir:void 0,typeof o==`object`?o?.field:void 0,o]),R=ru(`item`),z=(0,l.useCallback)((e,t)=>R(e,t),[R]),{activeSelectedKeys:B,showSelection:V,updateSelection:ee}=nu({records:I,selectedKeys:f,onSelectionChange:a,getRecordKey:z}),te=(0,l.useRef)(new Map);(0,l.useEffect)(()=>{let e=new Set(I.map((e,t)=>z(e,t)));for(let t of te.current.keys())e.has(t)||te.current.delete(t)},[I,z]);let ne=(e,t)=>{if(T){let t=T.split(/\s+/).filter(Boolean),n=e.target;for(;n&&!n.classList.contains(`item`);){if([`A`,`BUTTON`,`INPUT`,`LABEL`].includes(n.tagName))return;n=n.parentNode}t.every(e=>n.classList.contains(e))||(Array.from(n.parentNode?.children||[]).forEach(e=>{e.classList.remove(...t)}),n.classList.add(...t))}i?.(t)},H=(0,l.useCallback)((e,t)=>{let n=z(e,t),r=B.includes(n)?B.filter(e=>e!==n):[...B,n];ee(r)},[B,z,ee]),re=(e,t)=>{let n=e.img;return n&&l.default.isValidElement(n)?l.default.cloneElement(n,{className:X(`block h-auto w-full max-w-full rounded-lg object-cover`,n.props.className),style:{...n.props.style||{},aspectRatio:n.props.style?.aspectRatio||`16 / 11`,cursor:i?`pointer`:`default`},onClick:i?(t=>{ne(t,e),n.props.onClick?.(t)}):n.props.onClick}):l.default.createElement(`img`,{className:`block h-auto w-full max-w-full rounded-lg object-cover`,src:e.thumbnail?e.mimetype+e.thumbnail:`data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAgAAAAwAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==`,alt:e.name,width:e.width,height:e.height,style:{aspectRatio:`16 / 11`,cursor:i?`pointer`:`default`},onClick:i?(t=>ne(t,e)):void 0})},U=e=>l.default.isValidElement(e)?e:l.default.createElement(`span`,{className:`inline-block max-w-full overflow-hidden text-ellipsis align-top`},l.default.createElement(Mt,{badge:e,className:`badge-overlay`})),ie=(e,t,n=`left`,r)=>l.default.createElement(`div`,{className:X(`absolute z-10 overflow-hidden text-ellipsis whitespace-nowrap leading-none`,n===`right`?`text-right`:`text-left`,r),style:{width:P,maxWidth:P,pointerEvents:`none`,...t}},U(e)),ae={topLeft:{style:{left:N,top:N}},topRight:{style:{right:N,top:N},align:`right`},bottomLeft:{style:{bottom:N,left:N}},bottomRight:{style:{bottom:N,right:N},align:`right`},middleLeft:{style:{left:N,top:`50%`,transform:`translateY(-50%)`}},middleRight:{style:{right:N,top:`50%`,transform:`translateY(-50%)`},align:`right`}},oe=(e,t,n)=>e.when?typeof e.when==`function`?e.when(t,n):Object.entries(e.when).every(([e,n])=>t[e]===n):!0,se=(e,t,n)=>e.render?e.render(t,n):typeof e.badge==`function`?e.badge(t,n):e.badge,ce=(e,t)=>r?.length?r.map((n,r)=>{if(!n.position||!oe(n,e,t))return null;let i=se(n,e,t);if(i==null||i===!1)return null;let a=ae[n.position];return a?l.default.createElement(l.default.Fragment,{key:`${n.position}-${r}`},ie(i,{...a.style,...n.style},a.align,n.className)):null}):null,W=(0,l.useCallback)((e,t)=>{let n=z(e,t),a=te.current.get(n);if(a&&a.recordRef===e&&a.overlaysRef===r&&a.onClickRef===i&&a.rowIndex===t)return{image:a.image,overlays:a.overlays};let o={image:re(e,t),overlays:ce(e,t)};return te.current.set(n,{recordRef:e,overlaysRef:r,onClickRef:i,rowIndex:t,image:o.image,overlays:o.overlays}),o},[z,i,r]),le=(e,t)=>{let n=z(t,e),r=B.includes(n),i=T?.split(/\s+/).filter(Boolean)||[],a=W(t,e);return l.default.createElement(`div`,{key:n,className:X(`item min-w-0`,r&&i),style:{flex:`0 0 ${F}`,maxWidth:F}},l.default.createElement(`div`,{className:`relative overflow-hidden rounded-lg`},V&&l.default.createElement(`label`,{className:`absolute left-3 top-3 z-20 inline-flex items-center rounded bg-background/90 px-2 py-1 shadow-sm`},l.default.createElement(`input`,{type:`checkbox`,"aria-label":lt(C.selectItem,{key:n}),checked:r,onChange:()=>H(t,e),onClick:e=>e.stopPropagation()})),a.image,a.overlays))},ue=(e,t)=>{let n=Array.isArray(t)?t:[t],r=new Map;return e.forEach((e,t)=>{let i=n.map(t=>String(e[t]??``)).join(` · `)||`-`;r.has(i)||r.set(i,[]),r.get(i).push({item:e,index:t})}),Array.from(r.entries()).map(([e,t])=>({kind:`group`,groupName:e,items:t}))},G=(0,l.useMemo)(()=>{if(!Array.isArray(e))return;let t=vo.records(e,L)||[];return d?ue(t,d):t.map((e,t)=>({kind:`item`,item:e,index:t}))},[e,d,L]);return G===void 0?l.default.createElement(`p`,{className:`p-4`},l.default.createElement(`span`,{className:`mr-2 inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`}),w.loading):G.length===0?l.default.createElement(`p`,{className:`p-4`},w.noDataFound):l.default.createElement(`div`,{className:X(`flex items-stretch gap-3`,h||S.Gallery.wrapperClassName)},p&&l.default.createElement(`div`,{className:`gallery-before flex shrink-0 items-center self-stretch`},p),l.default.createElement(Z,{className:X(`min-w-0 flex-1 flex flex-col`,g||S.Gallery.className)},t&&l.default.createElement(`div`,{className:_||S.Gallery.headerClassName},t),l.default.createElement(Z,{className:X(`min-w-0 flex-1`,v||S.Gallery.scrollClassName)},l.default.createElement(nf,{records:G,appendTo:E,wrapperClassName:`px-3 pt-4 pb-2`,...s||{}},e=>l.default.createElement(`div`,{className:`p-3`},l.default.createElement(`div`,{className:`flex flex-wrap text-center items-center `+(y||S.Gallery.bodyClassName),style:{gap:M}},e.map(e=>e.kind===`group`?l.default.createElement(`section`,{key:e.groupName,className:`gallery-group rounded-lg border bg-card p-3 text-left`},l.default.createElement(`h3`,{className:`mb-3 text-sm font-semibold uppercase tracking-wide text-muted-foreground`},e.groupName),l.default.createElement(`div`,{className:X(`flex flex-wrap items-center`),style:{gap:M}},e.items.map(({item:e,index:t})=>le(t,e)))):le(e.index,e.item)))))),l.default.createElement(`div`,{ref:O,className:`mt-auto`}),n&&l.default.createElement(`div`,{className:b||S.Gallery.footerClassName},n)),m&&l.default.createElement(`div`,{className:`gallery-after flex shrink-0 items-center self-stretch`},m))};function af({records:e,recordId:t,sortable:n,pagination:r,selection:i=!1,selectedKeys:a,onSelectionChange:o,onRowClick:s,groupBy:c,wrapperClassName:u,before:d,after:f,columns:p,overlays:m}){let h=(0,l.useMemo)(()=>td(t),[t]),g=(0,l.useMemo)(()=>e.reduce((e,t)=>(e.set(h(t),t),e),new Map),[h,e]),_=(0,l.useMemo)(()=>e.map(e=>({...e,[bi]:h(e)})),[e,h]);return l.default.createElement(rf,{records:_,overlays:m,sortable:n,pagination:r,selectedKeys:i?a:void 0,onSelectionChange:i?e=>{let t=e.keys,n=e.records;if(i===`single`&&e.keys.length>1){let r=e.keys[e.keys.length-1];t=r?[r]:[],n=r&&g.get(r)?[g.get(r)]:[]}let r={keys:t,records:n,hasSelection:t.length>0,clear:()=>o?.({keys:[],records:[],hasSelection:!1,clear:()=>void 0})};o?.(r)}:void 0,onRowClick:s?e=>s(e):void 0,groupBy:c,wrapperClassName:u,before:d,after:f,columns:p})}function of({actions:e,form:t,editDeepLink:n,preparedRecords:r,recordId:i,sourcePath:a,db:o,onSave:s,onDelete:c,onComplete:d,audit:f=!1}){let p=(0,u.useLocation)(),m=(0,u.useNavigate)(),h=(0,l.useId)(),g=Cl(),_=(0,l.useMemo)(()=>td(i),[i]),v=(0,l.useMemo)(()=>sd(e,!!t),[e,t]),[y,b]=(0,l.useState)(null),x=(0,l.useMemo)(()=>`${ed(a||`grid-records`)}-${ed(h)}`,[h,a]),S=(0,l.useCallback)(()=>{b(null),n&&p.hash.startsWith(`#${x}:`)&&m({pathname:p.pathname,search:p.search,hash:``},{replace:!0})},[n,x,p.hash,p.pathname,p.search,m]),C=(0,l.useCallback)(async(e,t=!0)=>{let n=c?await c({record:e}):a?`${a}/${_(e)}`:void 0;if(!n&&!c)return!1;n&&await o.remove(n);let r=await d?.({record:e,action:`delete`})??!0;return r&&t&&S(),r},[S,o,_,d,c,a]),w=(0,l.useCallback)(async()=>g.save(),[g]),T=(0,l.useCallback)(async(e,t)=>{let r=v[e];if(!r||!cd(r,t)||ld(r,t))return;let i={actionKey:e,record:t,recordKey:t?_(t):void 0,rowIndex:t?._index,isNewRecord:!t,close:S,save:w,remove:async()=>t?C(t,!0):!1,runAction:(e,t)=>T(e,t)};if(r.kind===`route`){let e=typeof r.to==`function`?r.to(i):r.to;m(e);return}if(r.kind===`external`){let e=typeof r.href==`function`?r.href(i):r.href;window.open(e,`_blank`,`noopener,noreferrer`);return}if(r.kind===`inline`){await r.run(i);return}e===`edit`&&n&&t&&m({hash:`${x}:${encodeURIComponent(_(t))}`},{replace:!1}),b({actionKey:e,record:t})},[S,n,_,x,m,v,C,w]),E=(0,l.useCallback)((e,t)=>({actionKey:e,record:t,recordKey:t?_(t):void 0,rowIndex:t?._index,isNewRecord:!t,runAction:(e,t)=>T(e,t)}),[_,T]),D=(0,l.useCallback)(async e=>{let t=y?.record;if(e===`cancel`){S();return}if(e===`save`){await w();return}if(e===`remove`){if(!t)return;await C(t,!0);return}await T(e,t)},[y?.record,S,C,T,w]),O=(0,l.useCallback)((e,t)=>({actionKey:e,record:t,recordKey:t?_(t):void 0,rowIndex:t?._index,isNewRecord:!t,runAction:e=>{D(e)}}),[_,D]);(0,l.useEffect)(()=>{if(!n)return;let e=p.hash.replace(/^#/,``),t=`${x}:`;if(!e.startsWith(t)){y?.actionKey===`edit`&&b(null);return}let i=decodeURIComponent(e.slice(t.length)),a=r.find(e=>_(e)===i);a&&b(e=>e?.actionKey===`edit`&&e.record&&_(e.record)===i?e:{actionKey:`edit`,record:a})},[y?.actionKey,n,_,x,p.hash,r]);let k=y?v[y.actionKey]:void 0;return{normalizedActions:v,activeAction:y,activeActionConfig:k,activeActionBody:(0,l.useMemo)(()=>{if(!y||!k)return null;let e=E(y.actionKey,y.record),n=O(y.actionKey,y.record);if(k.kind===`delete`)return typeof k.body==`function`?k.body(n):k.body===void 0?l.default.createElement(`div`,{className:`space-y-2`},l.default.createElement(`p`,null,`Delete this record?`),y.record&&l.default.createElement(`p`,{className:`text-sm text-muted-foreground`},_(y.record))):k.body;if((y.actionKey===`add`||y.actionKey===`edit`)&&t){let r=k.kind===`modal`&&k.body!==void 0?typeof k.body==`function`?k.body(n):k.body:typeof t==`function`?t({...e,record:y.record}):t;return l.default.isValidElement(r)?l.default.createElement(Ll,{appearance:`empty`,controller:g,defaultValues:y.record,log:f,onSave:s?async({record:e,action:t,storagePath:n})=>s({record:e,action:t,storagePath:n}):void 0,onDelete:c?async({record:e})=>c({record:e}):void 0,onComplete:async({record:e,action:t})=>{let n=await d?.({record:e,action:t})??!0;return n&&S(),n},path:a},r):r}return k.kind===`modal`&&k.body!==void 0?typeof k.body==`function`?k.body(n):k.body:null},[y,k,f,S,t,g,E,O,_,d,c,s,a]),activeKey:y?.actionKey===`edit`&&y.record?_(y.record):null,runAction:T,runModalAction:D,close:S,getActionContext:E,getModalActionContext:O,getRecordKey:_,formController:g,gridHashId:x}}function sf({columns:e,records:t,form:n}){return(0,l.useMemo)(()=>od(e,t,n),[e,n,t])}function cf({records:e,onLoad:t}){let[n,r]=(0,l.useState)(e),[i,a]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{if(!t){r(e),a(!1);return}let n=!0,i=t(K(e));if(i instanceof Promise)return a(!0),i.then(e=>{n&&r(e)}).finally(()=>{n&&a(!1)}),()=>{n=!1};r(i),a(!1)},[e,t]),{preparedRecords:n,loading:i}}function lf({selection:e}){let t=e!==null&&e!==!1&&typeof e==`object`,n=e?typeof e==`string`?e:e.mode:!1,r=t?e.defaultKeys:void 0,i=t?e.onChange:void 0,[a,o]=(0,l.useState)(r??[]),[s,c]=(0,l.useState)([]);(0,l.useEffect)(()=>{o(r??[]),c([])},[r?.join(`\0`)??``]);let u=(0,l.useCallback)(()=>{o([]),c([]),i?.({keys:[],records:[],hasSelection:!1,clear:()=>void 0})},[i]);return{mode:n,activeSelectionKeys:a,selectionState:(0,l.useMemo)(()=>({keys:a,records:s,hasSelection:a.length>0,clear:u}),[u,a,s]),handleSelectionChange:(0,l.useCallback)(e=>{o(e.keys),c(e.records),i?.(e)},[i])}}var uf=(e,t,n,r,i)=>t?.kind===`delete`?typeof t.title==`function`?t.title(n):t.title||r:t?.kind===`modal`?typeof t.title==`function`?t.title(n):t.title||ud(e,t,i):ud(e,t,i);function df({records:e,recordId:t,sourcePath:n,columns:r,actions:i,form:a,editDeepLink:o,header:s,footer:c,view:u=`table`,views:d,sticky:f,wrapperClassName:p,loading:m=!1,title:h,before:g,after:_,sortable:v=!0,pagination:y,selection:b,onRowClick:x,reorderable:S=!1,onReorder:C,groupBy:w,onSave:T,onDelete:E,onComplete:D,audit:O=!1,onLoad:k}){let A=J(`grid`),j=Y(`grid`),M=(0,l.useMemo)(()=>({add:j.buttonAdd}),[j.buttonAdd]),N=sr(),{preparedRecords:P,loading:F}=cf({records:e,onLoad:k}),I=sf({columns:r,records:P,form:a}),L=d??{},R=L.table??{},z=L.gallery??{},[B,V]=(0,l.useState)(u);(0,l.useEffect)(()=>{V(u)},[u]);let[ee,te]=(0,l.useState)(()=>new Set(I.filter(e=>e.defaultVisible===!1).map(e=>String(e.key)))),ne=(0,l.useCallback)(e=>{te(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),H=(0,l.useMemo)(()=>I.filter(e=>!ee.has(String(e.key))),[I,ee]),re=z.fields??[],[U,ie]=(0,l.useState)(()=>new Set(re.filter(e=>e.defaultVisible===!1).map(e=>String(e.key)))),ae=(0,l.useCallback)(e=>{ie(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),oe=(0,l.useMemo)(()=>re.filter(e=>!U.has(String(e.key))),[re,U]),se=(0,l.useMemo)(()=>{let e=[];if(oe.length){let t=new Map;oe.forEach(e=>{let n=e.position??`bottomLeft`;t.has(n)||t.set(n,[]),t.get(n).push(e)}),e.push(...Array.from(t.entries()).map(([e,t])=>({position:e,render:e=>l.default.createElement(`div`,{className:`w-full space-y-0.5 bg-background/90 px-2 py-1 text-xs`},t.map(t=>{let n=_e(e,String(t.key));return l.default.createElement(`div`,{key:String(t.key),className:`truncate font-medium`},t.render?t.render(n,e):String(n??``))}))})))}let t=[...z.overlays??[],...e];return t.length?t:void 0},[z.overlays,oe]),{mode:ce,activeSelectionKeys:W,selectionState:le,handleSelectionChange:ue}=lf({selection:b}),{normalizedActions:G,activeAction:K,activeActionConfig:q,activeActionBody:de,activeKey:fe,runAction:pe,close:me,getActionContext:he,getModalActionContext:ge,getRecordKey:ve,formController:ye}=of({actions:i,form:a,editDeepLink:o,preparedRecords:P,recordId:t,sourcePath:n,db:N,onSave:T,onDelete:E,onComplete:D,audit:O}),be=G.edit,xe=!!be&&(be.kind!==`modal`||!!a),Se=(0,l.useCallback)(e=>{if(x?.(e),!xe)return;let t=ve(e);if(K?.actionKey===`edit`&&K.record&&ve(K.record)===t){me();return}pe(`edit`,e)},[K?.actionKey,K?.record,xe,me,ve,x,pe]),Ce=x||xe?Se:void 0,we=(0,l.useCallback)((e,t,n)=>{let r=G[e];return!r||!cd(r,t)?null:l.default.createElement(wn,{className:n||(e===`add`?`btn-primary`:void 0),icon:r.icon,label:ud(e,r,M),disabled:ld(r,t),onClick:()=>pe(e,t)})},[G,pe,M]),Te=(0,l.useMemo)(()=>Object.entries(G).filter(([e,t])=>e!==`edit`&&e!==`delete`&&cd(t,void 0)).map(([e])=>e),[G]),Ee=(0,l.useMemo)(()=>({title:h,records:P,selection:le,runAction:pe}),[P,pe,le,h]),De=(0,l.useMemo)(()=>({records:P,selection:le,runAction:pe}),[P,pe,le]),Oe=L.toggle?l.default.createElement(`span`,{className:`inline-flex rounded-md border border-border overflow-hidden`},l.default.createElement(wn,{icon:`list`,ariaLabel:`Table view`,title:`Table view`,className:`rounded-none border-0 `+(B===`table`?`bg-card text-foreground shadow-sm`:`bg-transparent text-muted-foreground`),onClick:()=>V(`table`)}),l.default.createElement(wn,{icon:`layout-grid`,ariaLabel:`Gallery view`,title:`Gallery view`,className:`rounded-none border-0 border-l border-border `+(B===`gallery`?`bg-card text-foreground shadow-sm`:`bg-transparent text-muted-foreground`),onClick:()=>V(`gallery`)})):null,ke=R.columnPicker&&B===`table`?l.default.createElement(yr,{trigger:{icon:`columns`,title:`Columns`},triggerClassName:`btn btn-outline-secondary`,position:`end`},I.map(e=>{let t=String(e.key);return l.default.createElement(`label`,{key:t,className:`flex cursor-pointer items-center gap-2 px-3 py-1.5 text-sm hover:bg-accent`},l.default.createElement(`input`,{type:`checkbox`,checked:!ee.has(t),onChange:()=>ne(t)}),e.label)})):null,Ae=z.fieldPicker&&B===`gallery`&&re.length?l.default.createElement(yr,{trigger:{icon:`sliders-horizontal`,title:`Fields`},triggerClassName:`btn btn-outline-secondary`,position:`end`},re.map(e=>{let t=String(e.key);return l.default.createElement(`label`,{key:t,className:`flex cursor-pointer items-center gap-2 px-3 py-1.5 text-sm hover:bg-accent`},l.default.createElement(`input`,{type:`checkbox`,checked:!U.has(t),onChange:()=>ae(t)}),e.label)})):null,je=(0,l.useMemo)(()=>{if(s!==void 0)return typeof s==`function`?s(Ee):s;if(!(!h&&!Te.length&&!Oe&&!ke&&!Ae))return l.default.createElement(l.default.Fragment,null,h||l.default.createElement(`span`,null),Te.length||Oe||ke||Ae?l.default.createElement(`span`,{className:`flex flex-wrap items-center gap-2`},ke,Ae,Oe,Te.map(e=>l.default.createElement(l.default.Fragment,{key:e},we(e)))):null)},[we,s,Te,Ee,h,Oe,ke,Ae]),Me=(0,l.useMemo)(()=>{if(c!==void 0)return typeof c==`function`?c(De):c},[c,De]),Ne=(0,l.useMemo)(()=>{if(!(!K||!q||q.kind!==`modal`&&q.kind!==`delete`))return ge(K.actionKey,K.record)},[K,q,ge]),Pe=(0,l.useMemo)(()=>{if(!(!q||q.kind!==`modal`&&q.kind!==`delete`||q.header===void 0||!Ne))return typeof q.header==`function`?q.header(Ne):q.header},[q,Ne]),Fe=(0,l.useMemo)(()=>{if(!(!q||q.kind!==`modal`&&q.kind!==`delete`)){if(q.footer===!1)return!1;if(!(q.footer===void 0||!Ne))return typeof q.footer==`function`?q.footer(Ne):q.footer}},[q,Ne]),Ie=dd(v);return l.default.createElement(l.default.Fragment,null,l.default.createElement(pr,{wrapperClassName:p,header:je,footer:Me,className:(A.Grid.Card.className+(f?` sticky-${f}`:``)).trim(),headerClassName:A.Grid.Card.headerClassName,bodyClassName:A.Grid.Card.bodyClassName,footerClassName:A.Grid.Card.footerClassName,loading:m||F},B===`gallery`?l.default.createElement(af,{records:P,recordId:t,sortable:Ie||v,pagination:y,selection:ce,selectedKeys:W,onSelectionChange:ce?ue:void 0,onRowClick:Ce,groupBy:w,wrapperClassName:A.Grid.Gallery.wrapperClassName,before:g,after:_,columns:z.columns,overlays:se}):l.default.createElement(fd,{records:P,recordId:t,columns:H,runAction:pe,sortable:Ie||v,pagination:y,selection:ce,selectedKeys:W,onSelectionChange:ce?ue:void 0,onRowClick:Ce,reorderable:S,onReorder:C,activeKey:fe,groupBy:w,wrapperClassName:A.Grid.Table.wrapperClassName,before:g,after:_})),K&&q&&(q.kind===`modal`||q.kind===`delete`)&&l.default.createElement(mr,{size:(q.kind===`modal`||q.kind===`delete`)&&q.size||A.Grid.Modal.size,position:(q.kind===`modal`||q.kind===`delete`)&&q.position||A.Grid.Modal.position,header:Pe,title:uf(K.actionKey,q,q.kind===`modal`||q.kind===`delete`?ge(K.actionKey,K.record):he(K.actionKey,K.record),j.deleteConfirm,M),onClose:me,onSave:q.kind===`modal`&&q.footer===void 0&&(K.actionKey===`add`||K.actionKey===`edit`)?e=>ye.save(e):void 0,onDelete:q.kind===`delete`?async()=>{let e=K.record;if(!e)return!1;let t=E?await E({record:e}):n?`${n}/${ve(e)}`:void 0;if(!t&&!E)return!1;t&&await N.remove(t);let r=await D?.({record:e,action:`delete`})??!0;return r&&me(),r}:q.kind===`modal`&&q.footer===void 0&&K.actionKey===`edit`&&K.record&&G.delete?async()=>(await ge(K.actionKey,K.record).runAction(`remove`),!1):void 0,footer:Fe,showCancel:q.kind===`modal`||q.kind===`delete`?q.footer===void 0:!0,allowFullscreen:q.kind===`modal`||q.kind===`delete`?q.allowFullscreen:!0,wrapperClassName:A.Grid.Modal.wrapperClassName,className:A.Grid.Modal.className,headerClassName:A.Grid.Modal.headerClassName,titleClassName:A.Grid.Modal.titleClassName,bodyClassName:A.Grid.Modal.bodyClassName,footerClassName:A.Grid.Modal.footerClassName},de))}function ff(e){return l.default.createElement(df,e)}function pf(e){return`records`in e?l.default.createElement(ff,e):l.default.createElement($u,e)}function mf(){return l.default.createElement(pf,{path:`/users`,recordId:e=>`${e.email??``}`.replace(`@`,`-`),form:l.default.createElement(l.default.Fragment,null,l.default.createElement(Xa,{name:`username`,label:`Username`}),l.default.createElement(Qa,{name:`email`,label:`Email`,required:!0,readOnlyAfterSet:!0}),l.default.createElement(Eo,{name:`permission`,label:`Permission`,options:[{value:`admin`,label:`Admin`},{value:`user`,label:`User`}],required:!0}))})}var hf=()=>{let e=Y(`common`);return l.default.createElement(`div`,{className:`flex flex-col justify-center items-center vh-100`},l.default.createElement(`h1`,null,`404`),l.default.createElement(`p`,null,e.notFoundMessage),l.default.createElement(u.Link,{to:`/`},l.default.createElement(Q,{name:`house-door`}),` `,e.goHome))},gf=({size:e=28})=>l.default.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`},l.default.createElement(`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z`}),l.default.createElement(`line`,{x1:`12`,x2:`12`,y1:`9`,y2:`13`}),l.default.createElement(`line`,{x1:`12`,x2:`12.01`,y1:`17`,y2:`17`})),_f=({open:e})=>l.default.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,style:{transition:`transform 0.18s`,transform:e?`rotate(180deg)`:`none`,flexShrink:0}},l.default.createElement(`polyline`,{points:`6 9 12 15 18 9`})),vf=()=>l.default.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},l.default.createElement(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),l.default.createElement(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})),yf=()=>l.default.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},l.default.createElement(`path`,{d:`m22 2-7 20-4-9-9-4Z`}),l.default.createElement(`path`,{d:`M22 2 11 13`})),bf=()=>l.default.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`},l.default.createElement(`path`,{d:`m8 2 1.88 1.88M14.12 3.88 16 2`}),l.default.createElement(`path`,{d:`M9 7.13v-1a3.003 3.003 0 1 1 6 0v1`}),l.default.createElement(`path`,{d:`M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6z`}),l.default.createElement(`path`,{d:`M12 20v-9`}),l.default.createElement(`path`,{d:`M6.53 9C4.6 8.8 3 7.1 3 5`}),l.default.createElement(`path`,{d:`M6 13H2`}),l.default.createElement(`path`,{d:`M3 21c0-2.1 1.7-3.9 3.8-4`}),l.default.createElement(`path`,{d:`M20.97 5c0 2.1-1.6 3.8-3.5 4`}),l.default.createElement(`path`,{d:`M22 13h-4`}),l.default.createElement(`path`,{d:`M17.2 17c2.1.1 3.8 1.9 3.8 4`})),xf=(e,t)=>({error:{message:e.message,stack:e.stack??``},componentStack:t?.componentStack??``,context:{url:typeof window<`u`?window.location.href:``,userAgent:typeof navigator<`u`?navigator.userAgent:``,timestamp:new Date().toISOString()}}),Sf=(e,t)=>{let n=xf(e,t);return[`Error: ${n.error.message}`,``,`--- Stack Trace ---`,n.error.stack,``,`--- Component Stack ---`,n.componentStack,``,`--- Context ---`,`URL: ${n.context.url}`,`Timestamp: ${n.context.timestamp}`,`Agent: ${n.context.userAgent}`].join(`
|
|
10
|
+
`)},Cf=class extends l.default.Component{constructor(e){super(e),this.state={error:null,errorInfo:null,detailsOpen:!1,debugOpen:!1,copied:!1,reportState:`idle`}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){this.setState({errorInfo:t}),console.error(`[ErrorBoundary]`,e.message,t.componentStack)}reset=()=>{window.location.reload()};copy=()=>{let{error:e,errorInfo:t}=this.state;e&&navigator.clipboard?.writeText(Sf(e,t)).then(()=>{this.setState({copied:!0}),setTimeout(()=>this.setState({copied:!1}),2e3)})};sendReport=()=>{let{error:e,errorInfo:t}=this.state,{reportUrl:n}=this.props;!e||!n||(this.setState({reportState:`sending`}),fetch(n,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(xf(e,t))}).then(e=>this.setState({reportState:e.ok?`sent`:`failed`})).catch(()=>this.setState({reportState:`failed`})))};render(){let{error:e,errorInfo:t,detailsOpen:n,debugOpen:r,copied:i,reportState:a}=this.state;if(!e)return this.props.children;let{fallback:o,reportUrl:s,fullPage:c}=this.props,u=this.props.debug??!1??!1;if(typeof o==`function`)return o(e,this.reset);if(o!=null)return o;let d=(e.stack??e.message).split(`
|
|
11
|
+
`).map(e=>e.trim()).filter(Boolean),f=(t?.componentStack??``).split(`
|
|
12
|
+
`).map(e=>e.trim()).filter(Boolean),p=c?`flex min-h-screen flex-col items-center justify-center bg-background p-8`:`flex min-h-[calc(100vh-4rem)] flex-col items-center justify-center p-8`;return l.default.createElement(`div`,{className:p},l.default.createElement(`div`,{className:`flex w-full max-w-xl flex-col gap-4 rounded-xl border border-destructive/25 bg-destructive/5 p-6`},l.default.createElement(`div`,{className:`flex items-start gap-4`},l.default.createElement(`div`,{className:`flex h-11 w-11 shrink-0 items-center justify-center rounded-full bg-destructive/12 text-destructive`},l.default.createElement(gf,{size:22})),l.default.createElement(`div`,null,l.default.createElement(`p`,{className:`text-sm font-semibold text-foreground`},`This page ran into a problem`),l.default.createElement(`p`,{className:`mt-0.5 text-xs text-muted-foreground`},`An unexpected error occurred while rendering this content.`))),l.default.createElement(`div`,{className:`rounded-lg border bg-background/60`},l.default.createElement(`button`,{onClick:()=>this.setState(e=>({detailsOpen:!e.detailsOpen})),className:`flex w-full items-center gap-2 px-3 py-2.5 text-left text-xs font-medium text-muted-foreground transition-colors hover:text-foreground`},l.default.createElement(_f,{open:n}),`Technical details`,l.default.createElement(`span`,{className:`ml-auto truncate max-w-[280px] font-mono text-[11px] text-muted-foreground/70`},e.message)),n&&l.default.createElement(`div`,{className:`border-t`},l.default.createElement(`pre`,{className:`max-h-48 overflow-y-auto px-3 py-3 text-[11px] leading-relaxed text-muted-foreground font-mono whitespace-before-wrap break-all`},d.join(`
|
|
13
|
+
`)))),u&&l.default.createElement(`div`,{className:`rounded-lg border border-amber-200/60 bg-amber-50/40 dark:border-amber-900/40 dark:bg-amber-950/20`},l.default.createElement(`button`,{onClick:()=>this.setState(e=>({debugOpen:!e.debugOpen})),className:`flex w-full items-center gap-2 px-3 py-2.5 text-left text-xs font-medium text-amber-700 dark:text-amber-400 transition-colors hover:opacity-80`},l.default.createElement(bf,null),l.default.createElement(_f,{open:r}),`Debug information`,l.default.createElement(`span`,{className:`ml-auto text-[10px] font-normal opacity-60`},`DEV`)),r&&l.default.createElement(`div`,{className:`border-t border-amber-200/60 dark:border-amber-900/40 px-3 py-3 space-y-3`},l.default.createElement(`div`,{className:`space-y-1`},l.default.createElement(`p`,{className:`text-[10px] font-semibold uppercase tracking-wide text-amber-700/70 dark:text-amber-400/70`},`Context`),l.default.createElement(`dl`,{className:`grid grid-cols-[5rem_1fr] gap-x-2 gap-y-0.5 text-[11px] font-mono`},l.default.createElement(`dt`,{className:`text-muted-foreground`},`URL`),l.default.createElement(`dd`,{className:`truncate text-foreground`},typeof window<`u`?window.location.href:`-`),l.default.createElement(`dt`,{className:`text-muted-foreground`},`Time`),l.default.createElement(`dd`,{className:`text-foreground`},new Date().toISOString()),l.default.createElement(`dt`,{className:`text-muted-foreground`},`Agent`),l.default.createElement(`dd`,{className:`truncate text-foreground opacity-70`},typeof navigator<`u`?navigator.userAgent:`-`))),f.length>0&&l.default.createElement(`div`,{className:`space-y-1`},l.default.createElement(`p`,{className:`text-[10px] font-semibold uppercase tracking-wide text-amber-700/70 dark:text-amber-400/70`},`Component tree`),l.default.createElement(`pre`,{className:`max-h-36 overflow-y-auto text-[11px] font-mono leading-relaxed text-foreground/80 whitespace-before-wrap`},f.join(`
|
|
14
|
+
`))),l.default.createElement(`button`,{onClick:this.copy,className:`flex items-center gap-1.5 rounded border px-2.5 py-1 text-[11px] font-medium transition-colors hover:bg-accent`},l.default.createElement(vf,null),i?`Copied!`:`Copy debug info`))),l.default.createElement(`div`,{className:`flex flex-wrap items-center gap-2`},l.default.createElement(`button`,{onClick:this.reset,className:`rounded-md border bg-background px-4 py-1.5 text-sm font-medium shadow-sm transition-colors hover:bg-accent`},`Try again`),l.default.createElement(`a`,{href:`/`,className:`rounded-md bg-destructive/10 px-4 py-1.5 text-sm font-medium text-destructive transition-colors hover:bg-destructive/20`},`Go to home`),s&&l.default.createElement(`button`,{onClick:this.sendReport,disabled:a===`sending`||a===`sent`,className:`ml-auto flex items-center gap-1.5 rounded-md border px-4 py-1.5 text-sm font-medium transition-colors hover:bg-accent disabled:opacity-50`},l.default.createElement(yf,null),a===`idle`&&`Send report`,a===`sending`&&`Sending...`,a===`sent`&&`Report sent ✓`,a===`failed`&&`Failed - retry`))))}},wf=async()=>{window.google?.accounts?.id||(se([{src:`https://accounts.google.com/gsi/client`,async:!0,clean:!0}]),await new Promise(e=>setTimeout(e,0)))},Tf=class{getConfigurationState(){return Hn(`GoogleAuthProvider`,Vn(li(`oAuth2`),[`clientId`],`google.oAuth2.`))}isConfigured(){return this.getConfigurationState().configured}getUser(){if(!this.isConfigured())return null;let e=Nn(`user`);if(!e)return null;let t=e.profile??{};return{...t,uid:e.uid,email:e.email??t.email,displayName:e.displayName??t.name,photoURL:e.photoURL??t.picture}}async signIn(e={}){let t=li(`oAuth2`);if(!this.isConfigured()||!t?.clientId)throw Error(`GoogleAuthProvider: missing google.oAuth2.clientId configuration.`);return await wf(),new Promise((n,r)=>{if(!window.google?.accounts?.id){r(Error(`GoogleAuthProvider: Google Identity Services script is not available.`));return}window.handleGoogleSignIn=async({credential:t})=>{try{let i=I(t);localStorage.setItem(`googleCredentialToken`,t);let a=gi();if(!a){r(Error(`GoogleAuthProvider: Firebase auth is not initialized.`));return}let o=await(0,_.signInWithCredential)(a,_.GoogleAuthProvider.credential(t)),s=(0,_.getAdditionalUserInfo)(o);Pn({...o.user,profile:s?.profile??i},`user`),e.scopes?.length&&await this.getAccessToken(e.scopes),n(this.getUser())}catch(e){r(e)}},window.google.accounts.id.initialize({client_id:t.clientId,callback:window.handleGoogleSignIn,auto_select:!1,cancel_on_tap_outside:!0}),window.google.accounts.id.prompt()})}async signOut(){let e=Nn(`user`);e?.profile?.sub&&window.google?.accounts?.id?.revoke(e.profile.sub),localStorage.removeItem(`googleCredentialToken`),Fn(`user`);let t=gi();t&&await(0,_.signOut)(t)}onAuthChange(e){let t=gi();return t?(0,_.onAuthStateChanged)(t,t=>{let n=this.getUser();if(!t){e(n);return}let r=Nn(`user`)?.profile??{};e({...r,uid:t.uid,email:t.email??r.email,displayName:t.displayName??r.name,photoURL:t.photoURL??r.picture})}):(e(this.getUser()),()=>{})}getAccessToken(e=[]){let t=li(`oAuth2`);if(!this.isConfigured()||!t?.clientId)return Promise.reject(`Google client ID not found`);let n=e.join(` `),r=`googleAccessToken::${n}`,i=`googleExpiresAt::${n}`;return new Promise((e,a)=>{let o=localStorage.getItem(r),s=localStorage.getItem(i),c=!s||new Date(s).getTime()<Date.now();if(o&&!c){e(o);return}let l=window.google?.accounts?.oauth2?.initTokenClient({client_id:t.clientId,scope:n,callback:t=>{t.access_token?(localStorage.setItem(r,t.access_token),localStorage.setItem(i,new Date(Date.now()+t.expires_in*1e3).toISOString()),e(t.access_token)):a(`Failed to obtain access token`)}});if(!l){a(`Google token client is not available`);return}l.requestAccessToken()})}isAuthenticated(){return!!this.getUser()}},Ef=(0,l.createContext)(null),Df=({registry:e,defaultKey:t,children:n})=>{let r=(0,l.useMemo)(()=>({registry:e,defaultKey:t}),[e,t]);return l.default.createElement(Ef.Provider,{value:r},n)},Of=e=>{let t=(0,l.useContext)(Ef);if(!t)return null;let n=e??t.defaultKey;return t.registry[n]??null},kf=(0,l.createContext)(null),Af=({registry:e,defaultKey:t,children:n})=>{let r=(0,l.useMemo)(()=>({registry:e,defaultKey:t}),[e,t]);return l.default.createElement(kf.Provider,{value:r},n)},jf=e=>{let t=(0,l.useContext)(kf);if(!t)throw Error(`useCredentialsProvider must be used inside <App providers={...} />.`);let n=e??t.defaultKey,r=t.registry[n];if(!r)throw Error(`CredentialsProvider '${n}' is not registered. Available: ${Object.keys(t.registry).join(`, `)}`);return r},Mf={key:`@key`,value:`@value`},Nf=()=>(0,D.getDatabase)(),Pf=(e,t,n)=>{let r=`Error during ${e}: ${String(t)}`;if(n)throw Error(r);console.error(r)},Ff=(e,t)=>{if(!e||!(t in e))return e;let{[t]:n,...r}=e;return Object.keys(r).length?r:void 0},If=e=>{let t=typeof e==`object`&&e&&!Array.isArray(e)?e:Array.isArray(e)?{in:e}:{eq:e},n;return t.gt!==void 0&&(n={...n,gt:t.gt}),t.lt!==void 0&&(n={...n,lt:t.lt}),t.in!==void 0&&(n={...n,in:t.in}),t.nin!==void 0&&(n={...n,nin:t.nin}),{condition:t,clientCondition:n}},Lf=(e,t)=>{switch(t){case Mf.key:return(0,D.query)(e,(0,D.orderByKey)());case Mf.value:return(0,D.query)(e,(0,D.orderByValue)());default:return(0,D.query)(e,(0,D.orderByChild)(t))}},Rf=(e,t,n)=>{let[r]=Object.entries(t||{});if(!r)return{dbRef:e,clientWhere:n};let[i]=r,a=Lf(e,i),o=n?.[i];if(o==null)return{dbRef:a,clientWhere:n};let{condition:s,clientCondition:c}=If(o);switch(!0){case s.eq!==void 0:return{dbRef:(0,D.query)(a,(0,D.equalTo)(s.eq)),clientWhere:Ff(n,i)};case s.gte!==void 0&&s.lte!==void 0:a=(0,D.query)(a,(0,D.startAt)(s.gte),(0,D.endAt)(s.lte));break;case s.gte!==void 0&&s.lt!==void 0:a=(0,D.query)(a,(0,D.startAt)(s.gte),(0,D.endAt)(s.lt));break;case s.gt!==void 0&&s.lte!==void 0:a=(0,D.query)(a,(0,D.startAt)(s.gt),(0,D.endAt)(s.lte));break;case s.gt!==void 0&&s.lt!==void 0:a=(0,D.query)(a,(0,D.startAt)(s.gt),(0,D.endAt)(s.lt));break;case s.gte!==void 0:a=(0,D.query)(a,(0,D.startAt)(s.gte));break;case s.gt!==void 0:a=(0,D.query)(a,(0,D.startAt)(s.gt));break;case s.lte!==void 0:a=(0,D.query)(a,(0,D.endAt)(s.lte));break;case s.lt!==void 0:a=(0,D.query)(a,(0,D.endAt)(s.lt));break}return{dbRef:a,clientWhere:c?{...Ff(n,i)||{},[i]:c}:Ff(n,i)}},zf=(e,t)=>{if(!t)return e;let n=t.split(`.`),r=e;for(let e of n){if(r==null)return;r=r[e]}return r},Bf=(e,t)=>e===t?0:e==null?-1:t==null?1:typeof e==`number`&&typeof t==`number`?e-t:typeof e==`boolean`&&typeof t==`boolean`?Number(e)-Number(t):globalThis.String(e).localeCompare(globalThis.String(t),void 0,{numeric:!0,sensitivity:`base`}),Vf=(e,t)=>{let n=typeof t==`object`&&t&&!Array.isArray(t)?t:{eq:t};for(let[t,r]of Object.entries(n))switch(t){case`eq`:if(e!==r)return!1;break;case`gt`:if(!(e>r))return!1;break;case`gte`:if(!(e>=r))return!1;break;case`lt`:if(!(e<r))return!1;break;case`lte`:if(!(e<=r))return!1;break;case`in`:if(!Array.isArray(r)||!r.includes(e))return!1;break;case`nin`:if(Array.isArray(r)&&r.includes(e))return!1;break;default:return!1}return!0},Hf=(e,t,n)=>{let[r,...i]=Object.entries(n||{}),a=Object.entries(t||{}),o=Object.entries(e);if(a.length&&(o=o.filter(([,e])=>a.every(([t,n])=>Vf(zf(e,t),n)))),r){let e=[r,...i];o.sort((t,n)=>{for(let[r,i]of e){let e=Bf(zf(t[1],r),zf(n[1],r));if(e)return i===`desc`?-e:e}return 0})}return Object.fromEntries(o)},Uf=async e=>{let t=await gi()?.currentUser?.getIdToken().catch(()=>void 0),n=new URL(`${e}.json`,(0,D.ref)(Nf()).toString());return n.searchParams.set(`shallow`,`true`),t&&n.searchParams.set(`auth`,t),n.toString()},Wf=class e{static listenerRegistered=!1;constructor(){!e.listenerRegistered&&typeof ai==`function`&&(e.listenerRegistered=!0,ai(e=>{e.firebase&&vi(e.firebase)}))}getConfigurationState(){return mi()}isConfigured(){return this.getConfigurationState().configured}readShallow=async(e,t=!1)=>{try{let t=await Uf(e),n=await fetch(t);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);let r=await n.json();return r?Object.keys(r):[]}catch(n){return Pf(`reading SHALLOW data in Firebase for ${e}`,n,t),[]}};read=async(e,{where:t,order:n,toArray:r=!1,exception:i=!1}={})=>{let{dbRef:a,clientWhere:o}=Rf((0,D.ref)(Nf(),e),n,t);try{let t=await(0,D.get)(a);if(t.exists()){`${e}`;let i=Hf(t.val(),o,n);return r?Object.values(i):i}else i&&Pf(`Data not found in Firebase for path ${e}`,null,i)}catch(t){Pf(`reading data in Firebase for ${e}`,t,i)}};update=async(e,t,n=!1)=>{try{await(0,D.update)((0,D.ref)(Nf(),e),t),`${e}`}catch(t){Pf(`updating data in Firebase for ${e}`,t,n)}};set=async(e,t,n=!1)=>{try{await(0,D.set)((0,D.ref)(Nf(),e),t),`${e}`}catch(t){Pf(`updating data in Firebase for ${e}`,t,n)}};setChunks=async(e,t,{chunkSize:n=1e3,purge:r=!1,onProgress:i}={})=>{let a=(0,D.ref)(Nf(),e);try{r&&(await(0,D.remove)(a),i?.(0,0,`Purging existing data at ${e}`));let o=Object.entries(ve(t)),s=Math.ceil(o.length/n);for(let e=0;e<o.length;e+=n){await(0,D.update)(a,Object.fromEntries(o.slice(e,e+n)));let t=Math.floor(e/n)+1;i?.(t,s,`Saving chunk ${t}/${s}`)}}catch(t){Pf(`setting data in chunks in Firebase for ${e}`,t,!1)}};remove=async(e,t=!1)=>{try{await(0,D.remove)((0,D.ref)(Nf(),e)),`${e}`}catch(n){Pf(`removing data from Firebase for ${e}`,n,t)}};count=async e=>(await this.readShallow(e)).length;subscribe=(e,t,{where:n,order:r,fieldMap:i,onLoad:a}={})=>{let o=gi();if(!o||!e)return()=>void 0;let s=()=>{let{dbRef:o,clientWhere:s}=Rf((0,D.ref)(Nf(),e),r,n);return(0,D.onValue)(o,e=>{let n=e.val();if(!n){t([]);return}let o=a?a(Hf(n,s,r)):Hf(n,s,r),c=Object.entries(o);if(!i){t(c.map(([e,t],n)=>typeof t==`object`&&t?{_index:n,[bi]:e,...t}:{_index:n,[bi]:e,[Mf.value]:t}));return}let l=Object.keys(i);t(c.map(([e,t],n)=>{let r=typeof t==`object`&&t?{[Mf.key]:e,...t}:{[Mf.key]:e,[Mf.value]:t},a={};for(let n of l){let o=i[n];a[n]=o.includes(`{`)?N.parse(r,o):o===Mf.key?e:o===Mf.value?t:r[o]}return{[bi]:e,_index:n,...a}}))})},c,l=(0,_.onAuthStateChanged)(o,e=>{c?.(),c=void 0,e?c=s():t([])});return()=>{c?.(),l()}}};new Wf;var Gf={github:`github.com`,apple:`apple.com`,microsoft:`microsoft.com`,yahoo:`yahoo.com`,twitter:`twitter.com`,facebook:`facebook.com`};function Kf(e){return new _.OAuthProvider(Gf[e]??e)}function qf(e){return e?{uid:e.uid,email:e.email??void 0,displayName:e.displayName??void 0,photoURL:e.photoURL??void 0,isAnonymous:e.isAnonymous}:null}var Jf=class{options;appName;initPromise;constructor(e={}){this.options=e,this.appName=e.appName,this.initPromise=e.config?vi(e.config,this.appName).then(()=>void 0):Promise.resolve()}getConfigurationState(){return mi(this.appName)}isConfigured(){return this.getConfigurationState().configured}getUser(){return qf(gi(this.appName)?.currentUser??null)}isAuthenticated(){return!!this.getUser()}async signIn(e={}){await this.initPromise;let t=gi(this.appName);if(!t)throw Error(`FirebaseAuthProvider: Firebase auth is not initialized`);let n=e.method??`password`;if(n===`anonymous`){let{user:e}=await(0,_.signInAnonymously)(t);return qf(e)}if(n===`oauth`){let{provider:n}=e;if(!n)throw Error(`FirebaseAuthProvider.signIn: provider is required for oauth`);let{user:r}=await(0,_.signInWithPopup)(t,Kf(n));return qf(r)}let{email:r,password:i}=e;if(!r||!i)throw Error(`FirebaseAuthProvider.signIn: email and password are required`);let{user:a}=await(0,_.signInWithEmailAndPassword)(t,r,i);return qf(a)}async signOut(){await this.initPromise;let e=gi(this.appName);if(!e)throw Error(`FirebaseAuthProvider: Firebase auth is not initialized`);await(0,_.signOut)(e)}onAuthChange(e){if(!this.options.config){let t=gi(this.appName);return t?(0,_.onAuthStateChanged)(t,t=>e(qf(t))):(e(null),()=>{})}let t=()=>{},n=!1;return this.initPromise.then(()=>{if(n)return;let r=gi(this.appName);if(!r){e(null);return}t=(0,_.onAuthStateChanged)(r,t=>e(qf(t)))}),()=>{n=!0,t()}}async getAccessToken(){await this.initPromise;let e=gi(this.appName);if(!e?.currentUser)throw Error(`FirebaseAuthProvider: no active session`);return e.currentUser.getIdToken()}async getIdTokenClaims(){await this.initPromise;let e=gi(this.appName);if(!e?.currentUser)return null;let{claims:t}=await e.currentUser.getIdTokenResult();return t}},Yf=`https://oauth2.googleapis.com/token`;function Xf(e){let t=e.replace(/-----BEGIN PRIVATE KEY-----/,``).replace(/-----END PRIVATE KEY-----/,``).replace(/\s+/g,``),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r.buffer}function Zf(e){return btoa(typeof e==`string`?e:String.fromCharCode(...new Uint8Array(e))).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}async function Qf(e,t){let n=`${Zf(JSON.stringify({alg:`RS256`,typ:`JWT`}))}.${Zf(JSON.stringify(e))}`,r=await crypto.subtle.importKey(`pkcs8`,Xf(t),{name:`RSASSA-PKCS1-v1_5`,hash:`SHA-256`},!1,[`sign`]);return`${n}.${Zf(await crypto.subtle.sign(`RSASSA-PKCS1-v1_5`,r,new TextEncoder().encode(n)))}`}var $f=class{config;cache=new Map;constructor(e){this.config=e}async getToken(e=`https://www.googleapis.com/auth/cloud-platform`){let t=this.cache.get(e);if(t&&t.expiresAt>Date.now()+6e4)return t.token;let n=Math.floor(Date.now()/1e3),r=await Qf({iss:this.config.client_email,scope:e,aud:Yf,iat:n,exp:n+3600},this.config.private_key),i=await fetch(Yf,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams({grant_type:`urn:ietf:params:oauth:grant-type:jwt-bearer`,assertion:r})});if(!i.ok){let e=await i.text();throw Error(`GoogleServiceAccountProvider: token request failed - ${e}`)}let a=await i.json();return this.cache.set(e,{token:a.access_token,expiresAt:Date.now()+(a.expires_in??3600)*1e3}),a.access_token}},ep=`www.dropbox.com/oauth2`,tp=class{config;constructor(e){this.config=e}getConfigurationState(){return Hn(`DropboxAuthProvider`,Vn(this.config,[`clientId`],`dropbox.`))}isConfigured(){return this.getConfigurationState().configured}getUser(){if(!this.isConfigured())return null;let e=er(this.config.clientId);return e?.access_token?{uid:e.account_id??this.config.clientId,displayName:`Dropbox`,provider:`dropbox`,accountId:e.account_id}:null}async signIn(e={}){if(!this.isConfigured())throw Error(`DropboxAuthProvider: missing dropbox.clientId configuration.`);return Yn({authServer:ep,clientID:this.config.clientId,scopes:e.scopes,refreshParamName:`token_access_type`}),this.getUser()}async signOut(){tr(this.config.clientId)}onAuthChange(e){return e(this.getUser()),()=>{}}async getAccessToken(){if(!this.isConfigured())throw Error(`DropboxAuthProvider: missing dropbox.clientId configuration.`);let e=await nr(this.config.clientId);if(!e)throw Error(`DropboxAuthProvider: access token not found.`);return e}isAuthenticated(){return this.isConfigured()?!!er(this.config.clientId)?.access_token:!1}},np=e=>{let t=li(`oAuth2`);if(!t)return console.warn(`GoogleAuth: Missing oAuth2.clientId in configuration`),Promise.reject(`Google client ID not found`);let n=e.join(` `),r=`googleAccessToken::${n}`,i=`googleExpiresAt::${n}`;return new Promise((e,a)=>{let o=localStorage.getItem(r),s=localStorage.getItem(i),c=!s||new Date(s).getTime()<Date.now();o&&!c?e(o):window.google.accounts.oauth2.initTokenClient({client_id:t.clientId,scope:n,callback:t=>{t.access_token?(localStorage.setItem(r,t.access_token),localStorage.setItem(i,new Date(Date.now()+t.expires_in*1e3).toISOString()),e(t.access_token)):a(`Failed to obtain access token`)}}).requestAccessToken()})};async function rp({to:e,bcc:t,subject:n,message:r}){let i=await np([`https://www.googleapis.com/auth/gmail.send`]),a=[`To: ${e.join(`, `)}`];t&&t.length&&a.push(`Bcc: ${t.join(`, `)}`);let o=[...a,`Content-Type: text/html; charset=utf-8`,`MIME-Version: 1.0`,`Subject: ${n}`,``,r].join(`
|
|
15
|
+
`),s=new TextEncoder().encode(o),c=``;for(let e of s)c+=String.fromCharCode(e);let l=btoa(c).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``),u=await fetch(`https://gmail.googleapis.com/gmail/v1/users/me/messages/send`,{method:`POST`,headers:{Authorization:`Bearer ${i}`,"Content-Type":`application/json`},body:JSON.stringify({raw:l})});if(!u.ok)throw Error(`Failed to send email`);let d=await u.json();return console.log(`Email sent:`,d),d}var ip=class{getConfigurationState(){return Hn(`GmailEmailProvider`,Vn(li(`oAuth2`),[`clientId`],`google.oAuth2.`))}isConfigured(){return this.getConfigurationState().configured}async send(e){if(!this.isConfigured())throw Error(this.getConfigurationState().reason||`GmailEmailProvider is not configured.`);await rp({to:Array.isArray(e.to)?e.to:[e.to],bcc:e.bcc?Array.isArray(e.bcc)?e.bcc:[e.bcc]:void 0,subject:e.subject,message:e.message})}};function ap(e){return e?{uid:e.id,email:e.email??void 0,displayName:e.user_metadata?.full_name??e.user_metadata?.name??e.email??void 0,photoURL:e.user_metadata?.avatar_url??void 0,raw:e}:null}var op=class{config;get client(){return Mi(this.config.url,this.config.anonKey)}constructor(e){this.config=e}getConfigurationState(){return Fi(this.config)}isConfigured(){return this.getConfigurationState().configured}getUser(){return ap((this.client.auth?._session??null)?.user??null)}isAuthenticated(){return!!this.getUser()}async signIn(e={}){let t=e.method??`password`;if(t===`anonymous`){let{data:e,error:t}=await this.client.auth.signInAnonymously();if(t)throw t;return ap(e.user)}if(t===`magic_link`){let t=e.email;if(!t)throw Error(`SupabaseAuthProvider.signIn: email is required for magic_link`);let{error:n}=await this.client.auth.signInWithOtp({email:t,options:{emailRedirectTo:e.redirectTo}});if(n)throw n;return null}if(t===`oauth`){let t=e.provider;if(!t)throw Error(`SupabaseAuthProvider.signIn: provider is required for oauth`);let{error:n}=await this.client.auth.signInWithOAuth({provider:t,options:{redirectTo:e.redirectTo}});if(n)throw n;return null}let{email:n,password:r}=e;if(!n||!r)throw Error(`SupabaseAuthProvider.signIn: email and password are required`);let{data:i,error:a}=await this.client.auth.signInWithPassword({email:n,password:r});if(a)throw a;return ap(i.user)}async signOut(){let{error:e}=await this.client.auth.signOut();if(e)throw e}onAuthChange(e){this.client.auth.getSession().then(({data:t})=>{e(ap(t.session?.user??null))});let{data:{subscription:t}}=this.client.auth.onAuthStateChange((t,n)=>{e(ap(n?.user??null))});return()=>t.unsubscribe()}async getAccessToken(){let{data:e,error:t}=await this.client.auth.getSession();if(t)throw t;let n=e.session?.access_token;if(!n)throw Error(`SupabaseAuthProvider: no active session`);return n}},sp=`https://api.anthropic.com/v1/models`,cp=`https://api.anthropic.com/v1/messages`;function lp(e){return{name:e.name,description:e.description,input_schema:e.inputSchema}}function up(e){if(e.role===`user`)return{role:`user`,content:e.content};if(e.role===`assistant`){let t=[];e.content&&t.push({type:`text`,text:e.content});for(let n of e.toolCalls??[])t.push({type:`tool_use`,id:n.id,name:n.name,input:n.input});return{role:`assistant`,content:t}}return{role:`user`,content:e.results.map(e=>({type:`tool_result`,tool_use_id:e.toolCallId,content:typeof e.output==`string`?e.output:JSON.stringify(e.output),...e.isError?{is_error:!0}:{}}))}}function dp(e){let t=e?.content;if(!Array.isArray(t))return null;let n=t.filter(e=>e?.type===`text`).map(e=>String(e.text??``)),r=t.filter(e=>e?.type===`tool_use`);if(r.length>0)return{type:`tool_calls`,toolCalls:r.map(e=>({id:String(e.id),name:String(e.name),input:e.input??{}})),text:n.length?n.join(`
|
|
16
|
+
`):void 0};let i=n.join(`
|
|
17
|
+
`);return i?{type:`text`,text:i}:null}var fp={id:`anthropic`,label:`Anthropic`,description:`Claude models via the Anthropic API.`,configKey:`anthropicApiKey`,defaultModel:`claude-sonnet-4-0`,fallbackModels:[`claude-sonnet-4-0`,`claude-opus-4-1`,`claude-3-7-sonnet-latest`],dashboardUrl:`https://console.anthropic.com/settings/keys`,credentialsHint:`Anthropic Console → Settings → API Keys → Create Key.`,credentialFields:[{key:`apiKey`,label:`API Key`,type:`password`}],capabilities:{supportsTemperature:!0,supportsVision:!0,supportsDocuments:!0},discoverModels:async e=>{let t=await De(sp,{headers:{"x-api-key":e,"anthropic-version":`2023-06-01`}},Rs);return Array.isArray(t?.data)?t.data.map(e=>e.id).filter(Boolean):[]},complete:async(e,t)=>{let n=t.attachments??[],r=n.length>0?[...n.map(e=>e.mimeType.startsWith(`image/`)?{type:`image`,source:{type:`base64`,media_type:e.mimeType,data:e.base64}}:{type:`document`,source:{type:`base64`,media_type:e.mimeType,data:e.base64}}),{type:`text`,text:t.prompt}]:t.prompt;return dp(await De(cp,{method:`POST`,headers:{"x-api-key":e,"anthropic-version":`2023-06-01`},body:{model:t.model,max_tokens:4096,...t.role?{system:Ds.parseRole(t.role,t)}:{},messages:[...(t.history??[]).map(up),...t.prompt?[{role:`user`,content:r}]:[]],...t.tools?.length?{tools:t.tools.map(lp)}:{},...typeof t.temperature==`number`?{temperature:t.temperature}:{}},signal:t.signal},Rs))}},pp=e=>e.replace(/\/+$/,``);function mp(e){return{type:`function`,function:{name:e.name,description:e.description,parameters:e.inputSchema}}}function hp(e){if(typeof e!=`string`)return{};try{return JSON.parse(e)}catch{return{}}}function gp(e){return e.role===`user`?[{role:`user`,content:e.content}]:e.role===`assistant`?[{role:`assistant`,content:e.content??null,...e.toolCalls?.length?{tool_calls:e.toolCalls.map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.input)}}))}:{}}]:e.results.map(e=>({role:`tool`,tool_call_id:e.toolCallId,content:typeof e.output==`string`?e.output:JSON.stringify(e.output)}))}function _p(e){let t=e?.choices?.[0]?.message;if(!t)return null;let n=Array.isArray(t.tool_calls)?t.tool_calls:[];if(n.length>0){let e=typeof t.content==`string`?t.content:void 0;return{type:`tool_calls`,toolCalls:n.map(e=>{let t=e.function??{};return{id:String(e.id),name:String(t.name??``),input:hp(t.arguments)}}),text:e||void 0}}let r=Gs(t.content);return r?{type:`text`,text:r}:null}var vp=({id:e,label:t,description:n,configKey:r,requiredConfigKeys:i,defaultModel:a,fallbackModels:o,baseUrl:s,modelsUrl:c,chatCompletionsUrl:l,dashboardUrl:u,credentialsHint:d,validateApiKey:f})=>{let p=pp(s),m=c||`${p}/models`,h=l||`${p}/chat/completions`;return{id:e,label:t,description:n,configKey:r,requiredConfigKeys:i,defaultModel:a,fallbackModels:o,dashboardUrl:u,credentialsHint:d,credentialFields:e===`openai-compatible`?[{key:`apiKey`,label:`API Key`,type:`password`},{key:`baseUrl`,label:`Base URL`,type:`text`,placeholder:`https://api.example.com/v1`}]:[{key:`apiKey`,label:`API Key`,type:`password`}],capabilities:{supportsTemperature:!0,supportsVision:!0,supportsDocuments:!0},validateApiKey:f??(async e=>{try{let t=await De(m,{headers:{Authorization:`Bearer ${e}`}},Rs);return t===null?{valid:!1,error:`Nessuna risposta dal server (CORS o proxy non attivo)`}:typeof t?.message==`string`&&!Array.isArray(t?.data)?{valid:!1,error:t.message}:{valid:!0}}catch(e){return{valid:!1,error:Us(e)}}}),discoverModels:async e=>{let t=await De(m,{headers:{Authorization:`Bearer ${e}`}},Rs);return Array.isArray(t?.data)?t.data.map(e=>e.id).filter(Boolean):[]},complete:async(e,n)=>{let r=n.attachments??[],i=/^text\/|^application\/(json|csv|xml|javascript|typescript)/,a=r.length>0?r.map(e=>{if(e.mimeType.startsWith(`image/`))return{type:`image_url`,image_url:{url:`data:${e.mimeType};base64,${e.base64}`}};if(i.test(e.mimeType)){let t=globalThis.atob(e.base64);return{type:`text`,text:`[File: ${e.name}]\n${t}`}}return{type:`text`,text:`[File attached: ${e.name} (${e.mimeType})]`}}).concat({type:`text`,text:n.prompt}):n.prompt,o=await De(h,{method:`POST`,headers:{Authorization:`Bearer ${e}`},body:{model:n.model,messages:[...n.role?[{role:`system`,content:Ds.parseRole(n.role,n)}]:[],...(n.history??[]).flatMap(gp),...n.prompt?[{role:`user`,content:a}]:[]],...n.tools?.length?{tools:n.tools.map(mp)}:{},...typeof n.temperature==`number`?{temperature:n.temperature}:{}},signal:n.signal},Rs);if(!o)throw Ws(t);return _p(o)}}},yp=vp({id:`deepseek`,label:`DeepSeek`,description:`Cost-efficient reasoning and chat models.`,configKey:`deepSeekApiKey`,defaultModel:`deepseek-chat`,fallbackModels:[`deepseek-chat`,`deepseek-reasoner`],baseUrl:`https://api.deepseek.com`,dashboardUrl:`https://platform.deepseek.com/api_keys`,credentialsHint:`DeepSeek platform → API Keys → Create new API key.`}),bp=`https://generativelanguage.googleapis.com/v1beta/models`,xp=`https://generativelanguage.googleapis.com/v1beta/models`;function Sp(e){return[{function_declarations:e.map(e=>({name:e.name,description:e.description,parameters:e.inputSchema}))}]}function Cp(e){if(e.role===`user`)return{role:`user`,parts:[{text:e.content}]};if(e.role===`assistant`){let t=[];e.content&&t.push({text:e.content});for(let n of e.toolCalls??[])t.push({functionCall:{name:n.name,args:n.input}});return{role:`model`,parts:t}}return{role:`function`,parts:e.results.map(e=>({functionResponse:{name:e.name,response:{result:e.output}}}))}}function wp(e){let t=e?.candidates?.[0]?.content?.parts;if(!Array.isArray(t))return null;let n=t.filter(e=>typeof e?.text==`string`).map(e=>e.text),r=t.filter(e=>e?.functionCall);if(r.length>0)return{type:`tool_calls`,toolCalls:r.map(e=>({id:`${e.functionCall.name}-${crypto.randomUUID()}`,name:e.functionCall.name,input:e.functionCall.args??{}})),text:n.length?n.join(`
|
|
18
|
+
`).trim():void 0};let i=n.join(`
|
|
19
|
+
`).trim();return i?{type:`text`,text:i}:null}var Tp={id:`gemini`,label:`Gemini`,description:`Google's multimodal Gemini model family.`,configKey:`geminiApiKey`,defaultModel:`gemini-2.5-pro`,fallbackModels:[`gemini-2.5-pro`,`gemini-2.5-flash`,`gemini-2.5-flash-lite`],dashboardUrl:`https://aistudio.google.com/app/apikey`,credentialsHint:`Google AI Studio → Get API key → Create API key.`,credentialFields:[{key:`apiKey`,label:`API Key`,type:`password`}],capabilities:{supportsTemperature:!0,supportsVision:!0,supportsDocuments:!0},discoverModels:async e=>{let t=await De(`${bp}?key=${e}`,null,Rs);return Array.isArray(t?.models)?t.models.map(e=>e.name?.replace(/^models\//,``)).filter(Boolean):[]},validateApiKey:async e=>{try{let t=await De(`${bp}?key=${e}`,null,Rs);return t===null?{valid:!1,error:`Nessuna risposta dal server (CORS o rete)`}:t?.error?{valid:!1,error:typeof t.error==`object`&&`message`in t.error?String(t.error.message):String(t.error)}:{valid:!0}}catch(e){let t=e;return{valid:!1,error:t?.error&&typeof t.error==`object`?String(t.error.message??e):String(e)}}},complete:async(e,t)=>{let n=[...(t.attachments??[]).map(e=>({inline_data:{mime_type:e.mimeType,data:e.base64}})),{text:t.prompt}];return wp(await De(`${xp}/${t.model}:generateContent?key=${e}`,{method:`POST`,body:{contents:[...(t.history??[]).map(Cp),...t.prompt?[{role:`user`,parts:n}]:[]],...t.role?{systemInstruction:{parts:[{text:Ds.parseRole(t.role,t)}]}}:{},...t.tools?.length?{tools:Sp(t.tools)}:{},generationConfig:typeof t.temperature==`number`?{temperature:t.temperature}:void 0},signal:t.signal},Rs))}},Ep=vp({id:`mistral`,label:`Mistral`,description:`European-hosted open and commercial language models.`,configKey:`mistralApiKey`,defaultModel:`mistral-medium-3`,fallbackModels:[`mistral-medium-3`,`mistral-small-3.1`,`ministral-8b-latest`],baseUrl:`https://api.mistral.ai/v1`,dashboardUrl:`https://console.mistral.ai/api-keys`,credentialsHint:`Mistral Console → API Keys → Create new key.`}),Dp=vp({id:`openai`,label:`OpenAI`,description:`GPT models via the OpenAI API.`,configKey:`openaiApiKey`,defaultModel:`gpt-5.2`,fallbackModels:[`gpt-5.2`,`gpt-5`,`gpt-5-mini`,`gpt-5-nano`,`gpt-4.1`,`gpt-4.1-mini`,`gpt-4.1-nano`],baseUrl:`https://api.openai.com/v1`,dashboardUrl:`https://platform.openai.com/api-keys`,credentialsHint:`OpenAI dashboard → API keys → Create new secret key.`}),Op=`https://opencode.ai/zen/v1/models`,kp=`https://opencode.ai/zen/v1/chat/completions`,Ap=[`big-pickle`,`deepseek-v4-flash-free`,`glm-5`,`glm-5.1`,`grok-build-0.1`,`kimi-k2.5`,`kimi-k2.6`,`mimo-v2.5-free`,`minimax-m2.5`,`minimax-m2.7`,`nemotron-3-super-free`],jp=e=>{let t=e.endpoint||``,n=e.ai_sdk_package||e.aiSdkPackage||``;return t.includes(`/chat/completions`)||n.includes(`openai-compatible`)},Mp={id:`opencode`,label:`OpenCode`,description:`OpenCode Zen — a curated set of coding-focused models.`,configKey:`openCodeApiKey`,defaultModel:`deepseek-v4-flash-free`,fallbackModels:Ap,dashboardUrl:`https://opencode.ai`,credentialsHint:`OpenCode Zen dashboard → API Keys → Create Key.`,credentialFields:[{key:`apiKey`,label:`API Key`,type:`password`}],capabilities:{supportsTemperature:!0},discoverModels:async e=>{let t=await De(Op,{headers:{Authorization:`Bearer ${e}`}},Rs);return(Array.isArray(t?.data)?t.data:Array.isArray(t?.models)?t.models:Array.isArray(t)?t:[]).filter(e=>jp(e)).map(e=>e.id).filter(e=>typeof e==`string`&&e.length>0)},complete:async(e,t)=>{let n=await De(kp,{method:`POST`,headers:{Authorization:`Bearer ${e}`},body:{model:t.model,messages:[...t.role?[{role:`system`,content:Ds.parseRole(t.role,t)}]:[],...(t.history??[]).flatMap(gp),...t.prompt?[{role:`user`,content:t.prompt}]:[]],...t.tools?.length?{tools:t.tools.map(mp)}:{},...typeof t.temperature==`number`?{temperature:t.temperature}:{}},signal:t.signal},Rs);if(!n)throw Ws(`OpenCode`);return _p(n)}},Np=vp({id:`openrouter`,label:`OpenRouter`,description:`Unified access to many model providers through one API.`,configKey:`openRouterApiKey`,defaultModel:`openai/gpt-4`,fallbackModels:[`openai/gpt-4`,`openai/gpt-5-nano`,`anthropic/claude-3.7-sonnet`],baseUrl:`https://openrouter.ai/api/v1`,dashboardUrl:`https://openrouter.ai/settings/keys`,credentialsHint:`OpenRouter → Settings → API Keys → Create Key.`,validateApiKey:async e=>{try{let t=await De(`https://openrouter.ai/api/v1/auth/key`,{headers:{Authorization:`Bearer ${e}`}},Rs);return t===null?{valid:!1,error:`Nessuna risposta dal server (CORS o proxy non attivo)`}:t?.data?.label!==void 0||t?.data?.usage!==void 0?{valid:!0}:t?.error?{valid:!1,error:Us(t)}:{valid:!1,error:`Chiave non riconosciuta da OpenRouter`}}catch(e){return{valid:!1,error:Us(e)}}}}),Pp={dbRealtime:{service:`data`,create:()=>new Wf},firestoreDb:{service:`data`,create:()=>new Ai},firestorage:{service:`storage`,create:()=>new na},firebaseAuth:{service:`auth`,create:()=>new Jf}},Fp={googleAuth:{service:`auth`,create:()=>new Tf},gmail:{service:`email`,create:()=>new ip},googleServiceAccount:{service:`credentials`,create:e=>new $f(e.serviceAccount),when:e=>!!e.serviceAccount}},Ip={dropboxAuth:{service:`auth`,create:e=>new tp(e)}},Lp={supabaseDb:{service:`data`,create:e=>new Ui(e)},supabaseStorage:{service:`storage`,create:e=>new ra(e)},supabaseAuth:{service:`auth`,create:e=>new op(e)}},Rp={mock:{service:`data`,create:e=>new Xi(e?.data)}},zp=(e,t)=>({service:`ai`,create:n=>new Xs(e,n?.[t]||``),when:e=>!!e?.[t]}),Bp={firebase:Pp,google:Fp,dropbox:Ip,supabase:Lp,mock:Rp,ai:{openai:zp(Dp,`openaiApiKey`),openrouter:zp(Np,`openRouterApiKey`),opencode:zp(Mp,`openCodeApiKey`),deepseek:zp(yp,`deepSeekApiKey`),gemini:zp(Tp,`geminiApiKey`),anthropic:zp(fp,`anthropicApiKey`),mistral:zp(Ep,`mistralApiKey`)}},Vp=()=>l.default.createElement(`div`,{className:`flex min-h-[calc(100vh-4rem)] items-center justify-center`},l.default.createElement(`div`,{className:`h-8 w-8 animate-spin rounded-full border-2 border-muted border-t-primary`}));function Hp(e,t){if(!t)return;let n=t,r=typeof t==`object`&&!Array.isArray(t)?Object.entries(n):[];if(r.length>0&&r.every(([,e])=>typeof e==`object`&&!!e)){Object.assign(e,n);return}e.custom=t}function Up(e,t,n=`default`){return t&&e[t]?t:Object.keys(e)[0]??n}function Wp(e={}){let t={data:{},storage:{},auth:{},email:{},ai:{},credentials:{}},n=e=>t[e]??={};for(let[t,r]of Object.entries(Bp)){let i=e[t];if(i!==void 0)for(let[e,t]of Object.entries(r))t.when&&!t.when(i)||(n(t.service)[e]=t.create(i))}for(let[t,r]of Object.entries(e.custom??{}))Hp(n(t),r);Object.keys(t.data).length===0&&(t.data.mock=new Xi),Object.keys(t.auth).length===0&&(t.auth.googleAuth=new Tf);let r=e.services??{},i={};for(let[e,n]of Object.entries(t))i[e]={registry:n,defaultKey:Up(n,r[e])};return i}var Gp={},Kp=e=>{Gp=e},qp=e=>Gp[e]||[];function Jp({contextProviders:e,providers:t={},appName:n=`LLM Native`,scrapeConfig:r,iconProvider:i,themeProvider:a,i18n:o,children:s,errorReportUrl:c,debug:d,basename:f}){let[p,m]=(0,l.useState)(()=>Wp(t)),h=(0,l.useRef)(p);h.current=p;let g=(0,l.useRef)(void 0);g.current||=(async(e,t,n)=>{await(h.current[e]?.registry)?.[t]?.dispose?.(),m(r=>({...r,[e]:{defaultKey:r[e]?.defaultKey??t,registry:{...r[e]?.registry,[t]:n}}}))});let _=g.current,v=e??l.default.Fragment;return l.default.createElement(Cf,{fullPage:!0,reportUrl:c,debug:d},l.default.createElement(u.BrowserRouter,{basename:f},l.default.createElement(oi,{defaultConfig:{title:n,firebase:t.firebase,google:t.google?{oAuth2:{clientId:t.google.clientId,scope:t.google.scope},serviceAccount:t.google.serviceAccount,developerToken:t.google.developerToken}:void 0,dropbox:t.dropbox,ai:t.ai,scrape:r,proxy:t.proxy}},l.default.createElement(Zr,{registries:p,setProvider:_},l.default.createElement(Ln,p.auth,l.default.createElement(Af,p.credentials,l.default.createElement(or,p.data,l.default.createElement(Vo,p.storage,l.default.createElement(Df,p.email,l.default.createElement(js,p.ai,l.default.createElement(rn,{config:i},l.default.createElement(Pd,{appName:n},l.default.createElement(gt,{config:o},l.default.createElement(rt,{config:a},l.default.createElement(v,null,s)))))))))))))))}function Yp({importPage:e,LayoutDefault:t=void 0,menuConfig:n={},children:r,...i}){Kp(n);let a=({children:e})=>l.default.createElement(l.default.Fragment,null,e),o=({pageSource:e,message:t})=>l.default.createElement(ma,{variant:`warning`},`Missing Page: `,e,t&&l.default.createElement(`code`,{className:`ml-2`},t));function s(n,r,s){let c=`./pages${r.component?`/`+r.component:r.path===`/`?`/Home`:N.toCamel(r.path.split(`*`)[0])}.js`,d=r.page||l.default.lazy(()=>e(c).then(e=>typeof e.default==`function`?{default:e.default}:(console.warn(`⚠️ Invalid default export in ${c}`),{default:()=>l.default.createElement(o,{pageSource:c})})).catch(e=>(console.error(`❌ Failed to load ${c}:`,e),{default:()=>l.default.createElement(o,{pageSource:c,message:e.message})}))),f=r.layout||t||a;return l.default.createElement(u.Route,{key:`${n}-${s}`,path:r.path,element:l.default.createElement(f,null,l.default.createElement(Cf,{key:r.path,reportUrl:i.errorReportUrl,debug:i.debug},l.default.createElement(l.Suspense,{fallback:l.default.createElement(Vp,null)},l.default.createElement(d,null))))})}let c=e=>Object.keys(e).flatMap(t=>e[t].flatMap((e,n)=>[e.path&&s(t,e,n),e.children&&c({children:e.children})].filter(Boolean)));return l.default.createElement(Jp,i,r,l.default.createElement(u.Routes,null,l.default.createElement(u.Route,{path:Wn,element:l.default.createElement(Zn,null)}),l.default.createElement(l.default.Fragment,null,c({default:[{path:`/`}],...Gp,_auth:[{path:`/users`,page:mf,layout:t}]})),l.default.createElement(u.Route,{path:`*`,element:l.default.createElement(hf,null)})))}var Xp=e=>{let t=qp(e),n=(0,u.useLocation)(),r=e=>e.map(e=>{let t=n.pathname===e.path,i=e.children?r(e.children):[],a=t||i.some(e=>e.active);return{...e,active:a,children:i}});return(0,l.useMemo)(()=>r(t),[n.pathname])},Zp={common:{save:`Salva`,cancel:`Annulla`,delete:`Elimina`,close:`Chiudi`,back:`Indietro`,search:`Cerca`,loading:`Caricamento...`,noDataFound:`Nessun dato trovato`,pageNavigation:`Navigazione pagine`,previous:`Precedente`,next:`Successivo`,notFoundMessage:`Ops! Pagina non trovata.`,goHome:`Vai alla Home`},auth:{signIn:`Accedi`,signOut:`Esci`,connect:`Connetti`,connected:`Connesso`,authenticated:`Autenticato`,notConfigured:`Il provider auth "{provider}" non è configurato. Controlla le chiavi API.`,notImplemented:`Il provider non implementa signIn().`},form:{headerAdd:`Aggiungi`,headerEdit:`Modifica`,buttonSave:`Salva`,buttonDelete:`Elimina`,buttonBack:`Indietro`,requiredField:`Il campo "{field}" è obbligatorio`,requiredFieldGeneric:`I campi obbligatori non sono compilati`,saveSuccess:`Salvato con successo`,deleteSuccess:`Eliminato con successo`,noticeRequiredFields:`Completa i campi obbligatori prima di salvare.`},grid:{buttonAdd:`Aggiungi`,deleteConfirm:`Sei sicuro di voler eliminare questo elemento?`,emptyState:`Nessun elemento da mostrare`},select:{placeholder:`Seleziona...`,loading:`Caricamento...`},modal:{save:`Salva`,delete:`Elimina`,cancel:`Annulla`,close:`Chiudi`,ok:`Ok`,yes:`Sì`,no:`No`},upload:{clickOrDrag:`Clicca o trascina per caricare...`,dropToUpload:`Rilascia per caricare`,uploadMore:`Aggiungi altri file`,editFileName:`Modifica nome file`,editorImage:`Editor immagine`,loaded:`Caricato`,removeFile:`Rimuovi`,uploadAnother:`Carica un altro file`,dropToParse:`Rilascia per analizzare`},notifications:{title:`Notifiche`,seeAll:`Vedi tutte`},code:{copyCode:`Copia codice`,copy:`Copia`,copied:`Copiato!`,codeLanguageDefault:`Testo`},table:{noDataFound:`Nessun dato trovato`,selectAllRows:`Seleziona tutte le righe`,sortBy:`Ordina per {label}`,sortByCurrent:`Ordina per {label} ({direction})`,selectRow:`Seleziona riga {key}`,reorderRow:`Riordina riga {key}`},gallery:{selectItem:`Seleziona elemento {key}`},crop:{enableCrop:`Abilita ritaglio a scala {scale}`,variants:`Varianti`,outputFile:`File di output`,active:`Attivo`,removeVariant:`Rimuovi variante {scale}`,fileName:`Nome file`},imageEditor:{title:`Editor immagine`,save:`Salva`,undo:`Annulla`,redo:`Ripristina`,zoomOut:`Riduci zoom`,zoomIn:`Aumenta zoom`,crop:`Ritaglia`,flipHorizontal:`Capovolgi orizzontalmente`,flipVertical:`Capovolgi verticalmente`,rotate:`Ruota 90°`,freeDrawing:`Disegno libero`,arrow:`Freccia`,text:`Testo`,rectangle:`Rettangolo`,circle:`Cerchio`,triangle:`Triangolo`},prompt:{noProviders:`Nessun provider AI registrato.`,aiNotConfiguredEdit:`L'AI non è configurata. Puoi comunque modificare e salvare questo prompt.`,aiNotConfiguredRun:`L'AI non è configurata. Impossibile eseguire questo prompt.`,aiNotConfiguredShort:`AI non configurata`,toggleOnTitle:`Prompt ATTIVO. Il testo viene usato come template e può essere eseguito.`,toggleOffTitle:`Prompt DISATTIVO. Il testo viene usato direttamente senza elaborazione AI.`,closeEditor:`Chiudi editor`,editSettings:`Modifica impostazioni`,attachFiles:`Allega file`,attachmentsNotSupported:`Il provider AI selezionato non supporta allegati immagini o documenti.`,run:`Esegui`,runFailed:`Esecuzione del prompt fallita.`,noMatchingCommands:`Nessun comando corrispondente`,tokenUsage:`Utilizzo token`,tokenInput:`In: {count} tok`,tokenOutput:`Out: {count} tok`,tokenContext:`Contesto: {percent}%`,tokenCost:"Costo: ~${amount}",tokenTime:`Tempo: {seconds}s`,tokenUsageEmpty:`Esegui il prompt per vedere l'utilizzo token.`,hidePreview:`Nascondi anteprima`,showPreview:`Mostra anteprima risolta`,noProvider:`Nessun provider AI disponibile per questo prompt.`,noResponse:`Il provider AI non ha restituito alcuna risposta.`,promptLabel:`Prompt: `,defaultOption:`Predefinito`},layout:{maxElements:`Hai già 12 elementi nella riga: rimuovine uno prima.`,noSpace:`Nessuno spazio: impossibile ridurre gli elementi per inserire questo campo.`,dragToMove:`Trascina per spostare`,remove:`Rimuovi`,dragToResize:`Trascina per ridimensionare`,dragHere:`Trascina un elemento qui dentro`}},Qp={common:{save:`Speichern`,cancel:`Abbrechen`,delete:`Löschen`,close:`Schließen`,back:`Zurück`,search:`Suchen`,loading:`Laden...`,noDataFound:`Keine Daten gefunden`,pageNavigation:`Seitennavigation`,previous:`Zurück`,next:`Weiter`,notFoundMessage:`Ups! Seite nicht gefunden.`,goHome:`Zur Startseite`},auth:{signIn:`Anmelden`,signOut:`Abmelden`,connect:`Verbinden`,connected:`Verbunden`,authenticated:`Authentifiziert`,notConfigured:`Auth-Provider "{provider}" ist nicht konfiguriert. API-Schlüssel prüfen.`,notImplemented:`Der Provider implementiert signIn() nicht.`},form:{headerAdd:`Hinzufügen`,headerEdit:`Bearbeiten`,buttonSave:`Speichern`,buttonDelete:`Löschen`,buttonBack:`Zurück`,requiredField:`Das Feld "{field}" ist erforderlich`,requiredFieldGeneric:`Pflichtfelder sind nicht ausgefüllt`,saveSuccess:`Erfolgreich gespeichert`,deleteSuccess:`Erfolgreich gelöscht`,noticeRequiredFields:`Pflichtfelder vor dem Speichern ausfüllen.`},grid:{buttonAdd:`Hinzufügen`,deleteConfirm:`Dieses Element wirklich löschen?`,emptyState:`Keine Elemente vorhanden`},select:{placeholder:`Auswählen...`,loading:`Lädt...`},modal:{save:`Speichern`,delete:`Löschen`,cancel:`Abbrechen`,close:`Schließen`,ok:`Ok`,yes:`Ja`,no:`Nein`},upload:{clickOrDrag:`Klicken oder ziehen zum Hochladen...`,dropToUpload:`Loslassen zum Hochladen`,uploadMore:`Weitere Dateien hinzufügen`,editFileName:`Dateiname bearbeiten`,editorImage:`Bildeditor`,loaded:`Geladen`,removeFile:`Entfernen`,uploadAnother:`Eine weitere Datei hochladen`,dropToParse:`Loslassen zum Analysieren`},notifications:{title:`Benachrichtigungen`,seeAll:`Alle anzeigen`},code:{copyCode:`Code kopieren`,copy:`Kopieren`,copied:`Kopiert!`,codeLanguageDefault:`Text`},table:{noDataFound:`Keine Daten gefunden`,selectAllRows:`Alle Zeilen auswählen`,sortBy:`Nach {label} sortieren`,sortByCurrent:`Nach {label} sortieren ({direction})`,selectRow:`Zeile {key} auswählen`,reorderRow:`Zeile {key} neu anordnen`},gallery:{selectItem:`Element {key} auswählen`},crop:{enableCrop:`Zuschnitt mit Skalierung {scale} aktivieren`,variants:`Varianten`,outputFile:`Ausgabedatei`,active:`Aktiv`,removeVariant:`Variante {scale} entfernen`,fileName:`Dateiname`},imageEditor:{title:`Bildeditor`,save:`Speichern`,undo:`Rückgängig`,redo:`Wiederherstellen`,zoomOut:`Herauszoomen`,zoomIn:`Hineinzoomen`,crop:`Zuschneiden`,flipHorizontal:`Horizontal spiegeln`,flipVertical:`Vertikal spiegeln`,rotate:`90° drehen`,freeDrawing:`Freihandzeichnen`,arrow:`Pfeil`,text:`Text`,rectangle:`Rechteck`,circle:`Kreis`,triangle:`Dreieck`},prompt:{noProviders:`Keine AI-Provider registriert.`,aiNotConfiguredEdit:`AI ist nicht konfiguriert. Sie können diesen Prompt trotzdem bearbeiten.`,aiNotConfiguredRun:`AI ist nicht konfiguriert. Dieser Prompt kann nicht ausgeführt werden.`,aiNotConfiguredShort:`AI nicht konfiguriert`,toggleOnTitle:`Prompt AKTIV. Der Text wird als Vorlage verwendet und kann ausgeführt werden.`,toggleOffTitle:`Prompt INAKTIV. Der Text wird direkt ohne AI-Verarbeitung verwendet.`,closeEditor:`Editor schließen`,editSettings:`Einstellungen bearbeiten`,attachFiles:`Dateien anhängen`,attachmentsNotSupported:`Der ausgewählte AI-Provider unterstützt keine Bild- oder Dokumentanlagen.`,run:`Ausführen`,runFailed:`Prompt-Ausführung fehlgeschlagen.`,noMatchingCommands:`Keine passenden Befehle`,tokenUsage:`Token-Nutzung`,tokenInput:`Eingabe: {count} tok`,tokenOutput:`Ausgabe: {count} tok`,tokenContext:`Kontext: {percent}%`,tokenCost:"Kosten: ~${amount}",tokenTime:`Zeit: {seconds}s`,tokenUsageEmpty:`Prompt ausführen, um Token-Nutzung zu sehen.`,hidePreview:`Vorschau ausblenden`,showPreview:`Aufgelöste Vorschau anzeigen`,noProvider:`Kein AI-Provider für diesen Prompt verfügbar.`,noResponse:`Der AI-Provider hat keine Antwort zurückgegeben.`,promptLabel:`Prompt: `,defaultOption:`Standard`},layout:{maxElements:`Bereits 12 Elemente in der Zeile: Eines entfernen.`,noSpace:`Kein Platz: Elemente können nicht genug verkleinert werden.`,dragToMove:`Zum Verschieben ziehen`,remove:`Entfernen`,dragToResize:`Zum Verkleinern ziehen`,dragHere:`Element hierher ziehen`}},$p={common:{save:`Сохранить`,cancel:`Отменить`,delete:`Удалить`,close:`Закрыть`,back:`Назад`,search:`Поиск`,loading:`Загрузка...`,noDataFound:`Данные не найдены`,pageNavigation:`Навигация по страницам`,previous:`Назад`,next:`Вперёд`,notFoundMessage:`Упс! Страница не найдена.`,goHome:`На главную`},auth:{signIn:`Войти`,signOut:`Выйти`,connect:`Подключить`,connected:`Подключено`,authenticated:`Авторизован`,notConfigured:`Провайдер "{provider}" не настроен. Проверьте API-ключи.`,notImplemented:`Провайдер не реализует signIn().`},form:{headerAdd:`Добавить`,headerEdit:`Редактировать`,buttonSave:`Сохранить`,buttonDelete:`Удалить`,buttonBack:`Назад`,requiredField:`Поле "{field}" обязательно для заполнения`,requiredFieldGeneric:`Обязательные поля не заполнены`,saveSuccess:`Успешно сохранено`,deleteSuccess:`Успешно удалено`,noticeRequiredFields:`Заполните обязательные поля перед сохранением.`},grid:{buttonAdd:`Добавить`,deleteConfirm:`Вы уверены, что хотите удалить этот элемент?`,emptyState:`Нет элементов для отображения`},select:{placeholder:`Выбрать...`,loading:`Загрузка...`},modal:{save:`Сохранить`,delete:`Удалить`,cancel:`Отменить`,close:`Закрыть`,ok:`Ок`,yes:`Да`,no:`Нет`},upload:{clickOrDrag:`Нажмите или перетащите для загрузки...`,dropToUpload:`Отпустите для загрузки`,uploadMore:`Добавить ещё файлы`,editFileName:`Изменить имя файла`,editorImage:`Редактор изображений`,loaded:`Загружено`,removeFile:`Удалить`,uploadAnother:`Загрузить ещё один файл`,dropToParse:`Отпустите для анализа`},notifications:{title:`Уведомления`,seeAll:`Смотреть все`},code:{copyCode:`Копировать код`,copy:`Копировать`,copied:`Скопировано!`,codeLanguageDefault:`Текст`},table:{noDataFound:`Данные не найдены`,selectAllRows:`Выбрать все строки`,sortBy:`Сортировать по {label}`,sortByCurrent:`Сортировать по {label} ({direction})`,selectRow:`Выбрать строку {key}`,reorderRow:`Переместить строку {key}`},gallery:{selectItem:`Выбрать элемент {key}`},crop:{enableCrop:`Включить обрезку в масштабе {scale}`,variants:`Варианты`,outputFile:`Выходной файл`,active:`Активно`,removeVariant:`Удалить вариант {scale}`,fileName:`Имя файла`},imageEditor:{title:`Редактор изображений`,save:`Сохранить`,undo:`Отменить`,redo:`Повторить`,zoomOut:`Уменьшить`,zoomIn:`Увеличить`,crop:`Обрезать`,flipHorizontal:`Отразить горизонтально`,flipVertical:`Отразить вертикально`,rotate:`Повернуть на 90°`,freeDrawing:`Свободное рисование`,arrow:`Стрелка`,text:`Текст`,rectangle:`Прямоугольник`,circle:`Круг`,triangle:`Треугольник`},prompt:{noProviders:`Нет зарегистрированных AI-провайдеров.`,aiNotConfiguredEdit:`AI не настроен. Вы можете редактировать и сохранять этот промпт.`,aiNotConfiguredRun:`AI не настроен. Запуск этого промпта невозможен.`,aiNotConfiguredShort:`AI не настроен`,toggleOnTitle:`Промпт ВКЛЮЧЁН. Текст используется как шаблон и может быть выполнен.`,toggleOffTitle:`Промпт ВЫКЛЮЧЕН. Текст используется напрямую без AI.`,closeEditor:`Закрыть редактор`,editSettings:`Изменить настройки`,attachFiles:`Прикрепить файлы`,attachmentsNotSupported:`Выбранный AI-провайдер не поддерживает изображения или документы.`,run:`Запустить`,runFailed:`Ошибка выполнения промпта.`,noMatchingCommands:`Нет подходящих команд`,tokenUsage:`Использование токенов`,tokenInput:`Вход: {count} tok`,tokenOutput:`Выход: {count} tok`,tokenContext:`Контекст: {percent}%`,tokenCost:"Стоимость: ~${amount}",tokenTime:`Время: {seconds}с`,tokenUsageEmpty:`Запустите промпт для просмотра статистики.`,hidePreview:`Скрыть предпросмотр`,showPreview:`Показать предпросмотр`,noProvider:`AI-провайдер недоступен для этого промпта.`,noResponse:`AI-провайдер не вернул ответа.`,promptLabel:`Промпт: `,defaultOption:`По умолчанию`},layout:{maxElements:`В строке уже 12 элементов: сначала удалите один.`,noSpace:`Нет места: невозможно сжать элементы для добавления.`,dragToMove:`Перетащить для перемещения`,remove:`Удалить`,dragToResize:`Перетащить для изменения размера`,dragHere:`Перетащите элемент сюда`}},em={common:{save:`保存`,cancel:`取消`,delete:`删除`,close:`关闭`,back:`返回`,search:`搜索`,loading:`加载中...`,noDataFound:`未找到数据`,pageNavigation:`页面导航`,previous:`上一页`,next:`下一页`,notFoundMessage:`哎呀!页面未找到。`,goHome:`返回首页`},auth:{signIn:`登录`,signOut:`退出`,connect:`连接`,connected:`已连接`,authenticated:`已认证`,notConfigured:`授权提供商"{provider}"未配置。请检查API密钥。`,notImplemented:`提供商未实现signIn()。`},form:{headerAdd:`添加`,headerEdit:`编辑`,buttonSave:`保存`,buttonDelete:`删除`,buttonBack:`返回`,requiredField:`字段"{field}"为必填项`,requiredFieldGeneric:`必填字段未填写`,saveSuccess:`保存成功`,deleteSuccess:`删除成功`,noticeRequiredFields:`请在保存前填写必填字段。`},grid:{buttonAdd:`添加`,deleteConfirm:`确定要删除此项目吗?`,emptyState:`暂无数据`},select:{placeholder:`请选择...`,loading:`加载中...`},modal:{save:`保存`,delete:`删除`,cancel:`取消`,close:`关闭`,ok:`确定`,yes:`是`,no:`否`},upload:{clickOrDrag:`点击或拖拽上传...`,dropToUpload:`松开上传`,uploadMore:`添加更多文件`,editFileName:`编辑文件名`,editorImage:`图片编辑器`,loaded:`已加载`,removeFile:`删除`,uploadAnother:`上传另一个文件`,dropToParse:`松开解析`},notifications:{title:`通知`,seeAll:`查看全部`},code:{copyCode:`复制代码`,copy:`复制`,copied:`已复制!`,codeLanguageDefault:`文本`},table:{noDataFound:`未找到数据`,selectAllRows:`选择所有行`,sortBy:`按{label}排序`,sortByCurrent:`按{label}排序({direction})`,selectRow:`选择行{key}`,reorderRow:`重排行{key}`},gallery:{selectItem:`选择项目{key}`},crop:{enableCrop:`启用{scale}比例裁剪`,variants:`变体`,outputFile:`输出文件`,active:`活跃`,removeVariant:`删除变体{scale}`,fileName:`文件名`},imageEditor:{title:`图片编辑器`,save:`保存`,undo:`撤销`,redo:`重做`,zoomOut:`缩小`,zoomIn:`放大`,crop:`裁剪`,flipHorizontal:`水平翻转`,flipVertical:`垂直翻转`,rotate:`旋转90°`,freeDrawing:`自由绘制`,arrow:`箭头`,text:`文本`,rectangle:`矩形`,circle:`圆形`,triangle:`三角形`},prompt:{noProviders:`没有已注册的AI提供商。`,aiNotConfiguredEdit:`AI未配置。您仍然可以编辑并保存此提示词。`,aiNotConfiguredRun:`AI未配置。无法运行此提示词。`,aiNotConfiguredShort:`AI未配置`,toggleOnTitle:`提示词已启用。文本用作模板并可执行。`,toggleOffTitle:`提示词已禁用。文本直接使用,不经AI处理。`,closeEditor:`关闭编辑器`,editSettings:`编辑设置`,attachFiles:`附加文件`,attachmentsNotSupported:`所选AI提供商不支持图像或文档附件。`,run:`运行`,runFailed:`提示词执行失败。`,noMatchingCommands:`没有匹配的命令`,tokenUsage:`Token用量`,tokenInput:`输入:{count} tok`,tokenOutput:`输出:{count} tok`,tokenContext:`上下文:{percent}%`,tokenCost:"费用:~${amount}",tokenTime:`时间:{seconds}秒`,tokenUsageEmpty:`运行提示词以查看Token用量。`,hidePreview:`隐藏预览`,showPreview:`显示解析预览`,noProvider:`此提示词没有可用的AI提供商。`,noResponse:`AI提供商未返回任何响应。`,promptLabel:`Prompt: `,defaultOption:`默认`},layout:{maxElements:`行中已有12个元素:请先删除一个。`,noSpace:`空间不足:无法缩小元素以插入此字段。`,dragToMove:`拖拽移动`,remove:`删除`,dragToResize:`拖拽调整大小`,dragHere:`拖拽元素到此处`}},tm={common:{save:`حفظ`,cancel:`إلغاء`,delete:`حذف`,close:`إغلاق`,back:`رجوع`,search:`بحث`,loading:`جاري التحميل...`,noDataFound:`لم يتم العثور على بيانات`,pageNavigation:`تنقل الصفحات`,previous:`السابق`,next:`التالي`,notFoundMessage:`عفوًا! الصفحة غير موجودة.`,goHome:`الذهاب إلى الرئيسية`},auth:{signIn:`تسجيل الدخول`,signOut:`تسجيل الخروج`,connect:`ربط`,connected:`مرتبط`,authenticated:`موثق`,notConfigured:`مزود المصادقة "{provider}" غير مكوّن. يرجى التحقق من مفاتيح API.`,notImplemented:`المزود لا ينفّذ signIn().`},form:{headerAdd:`إضافة`,headerEdit:`تعديل`,buttonSave:`حفظ`,buttonDelete:`حذف`,buttonBack:`رجوع`,requiredField:`الحقل "{field}" إلزامي`,requiredFieldGeneric:`الحقول الإلزامية غير مكتملة`,saveSuccess:`تم الحفظ بنجاح`,deleteSuccess:`تم الحذف بنجاح`,noticeRequiredFields:`يرجى ملء الحقول الإلزامية قبل الحفظ.`},grid:{buttonAdd:`إضافة`,deleteConfirm:`هل أنت متأكد من حذف هذا العنصر؟`,emptyState:`لا توجد عناصر للعرض`},select:{placeholder:`اختر...`,loading:`جارٍ التحميل...`},modal:{save:`حفظ`,delete:`حذف`,cancel:`إلغاء`,close:`إغلاق`,ok:`موافق`,yes:`نعم`,no:`لا`},upload:{clickOrDrag:`انقر أو اسحب للتحميل...`,dropToUpload:`أفلت للتحميل`,uploadMore:`إضافة المزيد من الملفات`,editFileName:`تعديل اسم الملف`,editorImage:`محرر الصور`,loaded:`محمّل`,removeFile:`إزالة`,uploadAnother:`تحميل ملف آخر`,dropToParse:`أفلت للتحليل`},notifications:{title:`الإشعارات`,seeAll:`عرض الكل`},code:{copyCode:`نسخ الكود`,copy:`نسخ`,copied:`تم النسخ!`,codeLanguageDefault:`نص`},table:{noDataFound:`لم يتم العثور على بيانات`,selectAllRows:`تحديد جميع الصفوف`,sortBy:`ترتيب حسب {label}`,sortByCurrent:`ترتيب حسب {label} ({direction})`,selectRow:`تحديد الصف {key}`,reorderRow:`إعادة ترتيب الصف {key}`},gallery:{selectItem:`تحديد العنصر {key}`},crop:{enableCrop:`تفعيل الاقتصاص بمقياس {scale}`,variants:`المتغيرات`,outputFile:`ملف الإخراج`,active:`نشط`,removeVariant:`إزالة المتغير {scale}`,fileName:`اسم الملف`},imageEditor:{title:`محرر الصور`,save:`حفظ`,undo:`تراجع`,redo:`إعادة`,zoomOut:`تصغير`,zoomIn:`تكبير`,crop:`اقتصاص`,flipHorizontal:`قلب أفقي`,flipVertical:`قلب رأسي`,rotate:`تدوير 90°`,freeDrawing:`رسم حر`,arrow:`سهم`,text:`نص`,rectangle:`مستطيل`,circle:`دائرة`,triangle:`مثلث`},prompt:{noProviders:`لا توجد مزودات AI مسجّلة.`,aiNotConfiguredEdit:`AI غير مكوّن. يمكنك تعديل وحفظ هذا الأمر.`,aiNotConfiguredRun:`AI غير مكوّن. لا يمكن تشغيل هذا الأمر.`,aiNotConfiguredShort:`AI غير مكوّن`,toggleOnTitle:`الأمر مفعّل. النص يُستخدم كقالب ويمكن تشغيله.`,toggleOffTitle:`الأمر معطّل. النص يُستخدم مباشرةً دون معالجة AI.`,closeEditor:`إغلاق المحرر`,editSettings:`تعديل الإعدادات`,attachFiles:`إرفاق الملفات`,attachmentsNotSupported:`مزوّد AI المحدد لا يدعم مرفقات الصور أو المستندات.`,run:`تشغيل`,runFailed:`فشل تنفيذ الأمر.`,noMatchingCommands:`لا توجد أوامر مطابقة`,tokenUsage:`استخدام الرموز`,tokenInput:`دخل: {count} tok`,tokenOutput:`خرج: {count} tok`,tokenContext:`السياق: {percent}%`,tokenCost:"التكلفة: ~${amount}",tokenTime:`الوقت: {seconds}ث`,tokenUsageEmpty:`شغّل الأمر لعرض إحصائيات الرموز.`,hidePreview:`إخفاء المعاينة`,showPreview:`عرض المعاينة المحلولة`,noProvider:`لا يوجد مزود AI متاح لهذا الأمر.`,noResponse:`لم يُرجع مزود AI أي استجابة.`,promptLabel:`أمر: `,defaultOption:`افتراضي`},layout:{maxElements:`الصف يحتوي بالفعل على 12 عنصرًا: احذف عنصرًا أولاً.`,noSpace:`لا مساحة: لا يمكن تصغير العناصر لإضافة هذا الحقل.`,dragToMove:`اسحب للتحريك`,remove:`إزالة`,dragToResize:`اسحب لتغيير الحجم`,dragHere:`اسحب عنصرًا إلى هنا`}},nm=o({ar:()=>tm,de:()=>Qp,en:()=>ot,it:()=>Zp,ru:()=>$p,zh:()=>em}),rm=e=>ei(`api`,e);async function im(e){if(!e.ok)throw Error(`ApiProvider request failed: ${e.status} ${e.statusText}`);let t=await e.text();return t?JSON.parse(t):void 0}var am=class{config;constructor(e){this.config=e}async fetch(e){let t=(e.method??`POST`).toUpperCase(),n=new URL(this.config.baseUrl.replace(/\/+$/,``)+`/`+e.path.replace(/^\/+/,``));Object.entries({...e.query,...this.config.query}).forEach(([e,t])=>n.searchParams.set(e,t));let r={...e.body,...this.config.body};return im(await Rs(n.toString(),{method:t,headers:{"Content-Type":`application/json`,...this.config.header},body:t===`GET`||t===`HEAD`?void 0:JSON.stringify(r)}))}},om=class{resolver;constructor(e){this.resolver=e}async fetch(e){return this.resolver(e)}},sm=class{config;constructor(e){this.config=e}async fetch(e){return yi(this.config.functionName,{provider:this.config.providerName,request:e},void 0,this.config.region)}},cm=class{config;constructor(e){this.config=e}async fetch(e){let{data:t,error:n}=await Mi(this.config.url,this.config.anonKey).functions.invoke(this.config.functionName,{body:{provider:this.config.providerName,request:e}});if(n)throw n;return t}},lm=[{id:`resend`,label:`Resend`,description:`Developer-first transactional email API.`,credentialFields:[{key:`apiKey`,label:`API Key`,type:`password`,placeholder:`re_...`}],credentialsUrl:`https://resend.com/api-keys`,credentialsHint:`Resend dashboard → API Keys → Create API Key.`},{id:`sendgrid`,label:`SendGrid`,description:`Scalable email delivery by Twilio.`,credentialFields:[{key:`apiKey`,label:`API Key`,type:`password`,placeholder:`SG...`}],credentialsUrl:`https://app.sendgrid.com/settings/api_keys`,credentialsHint:`SendGrid dashboard → Settings → API Keys → Create API Key.`},{id:`mailgun`,label:`Mailgun`,description:`Email API with analytics and webhooks.`,credentialFields:[{key:`apiKey`,label:`API Key`,type:`password`},{key:`domain`,label:`Mailgun domain`,type:`text`,placeholder:`mg.yourdomain.com`}],credentialsUrl:`https://app.mailgun.com/settings/api_security/api_keys`,credentialsHint:`Mailgun dashboard → Security → API Keys. The domain is the sending domain you verified under Sending → Domains.`},{id:`postmark`,label:`Postmark`,description:`High-deliverability transactional email.`,credentialFields:[{key:`serverToken`,label:`Server API Token`,type:`password`}],credentialsUrl:`https://account.postmarkapp.com/servers`,credentialsHint:`Postmark → your Server → API Tokens tab (each server has its own token).`},{id:`ses`,label:`AWS SES`,description:`Amazon Simple Email Service.`,credentialFields:[{key:`accessKeyId`,label:`Access Key ID`,type:`text`},{key:`secretAccessKey`,label:`Secret Access Key`,type:`password`},{key:`region`,label:`Region`,type:`text`,placeholder:`us-east-1`}],credentialsUrl:`https://console.aws.amazon.com/iam/home#/security_credentials`,credentialsHint:`AWS IAM → Security credentials → Access keys, for a user with SES send permissions.`},{id:`smtp`,label:`SMTP`,description:`Any SMTP-compatible mail server.`,credentialFields:[{key:`host`,label:`Host`,type:`text`,placeholder:`smtp.example.com`},{key:`port`,label:`Port`,type:`text`,placeholder:`587`},{key:`username`,label:`Username`,type:`text`},{key:`password`,label:`Password`,type:`password`}],credentialsHint:`Ask your mail host or hosting provider for the SMTP host, port, and credentials.`}],um=[{id:`cloudflare_pages`,label:`Cloudflare Pages`,description:`Static hosting on Cloudflare's edge network, with native rollback.`,credentialFields:[{key:`apiToken`,label:`API Token`,type:`password`},{key:`accountId`,label:`Account ID`,type:`text`},{key:`projectName`,label:`Project name`,type:`text`,placeholder:`my-site`}],credentialsUrl:`https://dash.cloudflare.com/profile/api-tokens`,credentialsHint:`Cloudflare dashboard → My Profile → API Tokens → Create Token (Pages edit permission).`},{id:`firebase_hosting`,label:`Firebase Hosting`,description:`Google's static hosting, same project family as Firestore/Auth.`,credentialFields:[{key:`projectId`,label:`Firebase project ID`,type:`text`},{key:`siteId`,label:`Hosting site ID`,type:`text`},{key:`serviceAccountJson`,label:`Service account JSON`,type:`password`}],credentialsUrl:`https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk`,credentialsHint:`Firebase Console → Project settings → Service accounts → Generate new private key.`},{id:`supabase_storage`,label:`Supabase (Storage + custom domain)`,description:`Not a hosting product — serves the static build from a public Storage bucket behind your own domain. DIY, not officially supported by Supabase.`,credentialFields:[{key:`projectUrl`,label:`Project URL`,type:`text`,placeholder:`https://xyzcompany.supabase.co`},{key:`serviceKey`,label:`Service role key`,type:`password`},{key:`bucketName`,label:`Bucket name`,type:`text`}],credentialsUrl:`https://supabase.com/dashboard/project/_/settings/api`,credentialsHint:`Supabase dashboard → Project Settings → API → service_role key (never the anon key).`},{id:`ftp`,label:`FTP`,description:`Direct upload to any server over plain FTP — legacy, usually unencrypted; prefer SFTP when the server supports it.`,credentialFields:[{key:`host`,label:`Host`,type:`text`,placeholder:`ftp.example.com`},{key:`port`,label:`Port`,type:`text`,placeholder:`21`},{key:`username`,label:`Username`,type:`text`},{key:`password`,label:`Password`,type:`password`},{key:`remotePath`,label:`Remote path`,type:`text`,placeholder:`/var/www/html`}],credentialsHint:`Ask your hosting provider or server admin for FTP host, port, and credentials.`},{id:`sftp`,label:`SFTP`,description:`Direct upload to any server over SFTP (SSH) — no vendor lock-in.`,credentialFields:[{key:`host`,label:`Host`,type:`text`,placeholder:`sftp.example.com`},{key:`port`,label:`Port`,type:`text`,placeholder:`22`},{key:`username`,label:`Username`,type:`text`},{key:`password`,label:`Password / key`,type:`password`},{key:`remotePath`,label:`Remote path`,type:`text`,placeholder:`/var/www/html`}],credentialsHint:`Ask your hosting provider or server admin for SFTP host, port, and credentials.`},{id:`netlify`,label:`Netlify`,description:`Popular JAMstack hosting with a simple deploy API.`,credentialFields:[{key:`accessToken`,label:`Personal access token`,type:`password`},{key:`siteId`,label:`Site ID`,type:`text`}],credentialsUrl:`https://app.netlify.com/user/applications#personal-access-tokens`,credentialsHint:`Netlify → User settings → Applications → New access token.`},{id:`github_pages`,label:`GitHub Pages`,description:`Publishes by pushing the build to a branch of a GitHub repository.`,credentialFields:[{key:`repo`,label:`Repository`,type:`text`,placeholder:`owner/repo`},{key:`branch`,label:`Branch`,type:`text`,placeholder:`gh-pages`},{key:`token`,label:`Access token`,type:`password`}],credentialsUrl:`https://github.com/settings/tokens`,credentialsHint:`GitHub → Settings → Developer settings → Personal access tokens (repo scope).`},{id:`s3_cloudfront`,label:`AWS S3 + CloudFront`,description:`Classic static hosting on S3, served and cached through a CloudFront distribution.`,credentialFields:[{key:`accessKeyId`,label:`Access Key ID`,type:`text`},{key:`secretAccessKey`,label:`Secret Access Key`,type:`password`},{key:`bucketName`,label:`Bucket name`,type:`text`},{key:`distributionId`,label:`CloudFront distribution ID`,type:`text`},{key:`region`,label:`Region`,type:`text`,placeholder:`us-east-1`}],credentialsUrl:`https://console.aws.amazon.com/iam/home#/security_credentials`,credentialsHint:`AWS IAM → Security credentials → Access keys, for a user with S3 + CloudFront invalidation permissions.`},{id:`static_export`,label:`Static export (download)`,description:`No vendor — packages the build as a downloadable archive for self-hosting anywhere else.`,credentialFields:[]}],dm=[Dp,Np,Mp,yp,Tp,fp,Ep,vp({id:`glm`,label:`ZhipuAI (GLM)`,description:`Zhipu AI's GLM model family.`,configKey:`glmApiKey`,defaultModel:`glm-4-flash`,fallbackModels:[`glm-4-flash`,`glm-4`,`glm-z1-preview`,`glm-z1-plus`,`glm-4-long`],baseUrl:`https://open.bigmodel.cn/api/paas/v4`,dashboardUrl:`https://bigmodel.cn/usercenter/apikeys`,credentialsHint:`Zhipu BigModel → User Center → API Keys → Create Key.`})],fm=e=>({id:e.id,label:e.label,description:e.description??``,credentialFields:e.credentialFields??[{key:`apiKey`,label:`API Key`,type:`password`}],credentialsUrl:e.dashboardUrl,credentialsHint:e.credentialsHint}),pm=dm.map(fm),mm={id:`openai-compatible`,label:`OpenAI-compatible`,description:`Any OpenAI-compatible endpoint (self-hosted or third-party).`,credentialFields:[{key:`apiKey`,label:`API Key`,type:`password`},{key:`baseUrl`,label:`Base URL`,type:`text`,placeholder:`https://api.example.com/v1`}]},hm=e=>{let t=e?.openAICompatible?.baseUrl?.trim();return t?[vp({id:`openai-compatible`,label:e?.openAICompatible?.label?.trim()||`OpenAI-compatible`,description:`Any OpenAI-compatible endpoint (self-hosted or third-party).`,configKey:`openAICompatible`,requiredConfigKeys:[`ai.openAICompatible.apiKey`,`ai.openAICompatible.baseUrl`],defaultModel:e?.openAICompatible?.defaultModel?.trim()||`default`,fallbackModels:e?.openAICompatible?.fallbackModels?.filter(Boolean)||[`default`],baseUrl:t,modelsUrl:e?.openAICompatible?.modelsUrl?.trim()||void 0,chatCompletionsUrl:e?.openAICompatible?.chatCompletionsUrl?.trim()||void 0})]:[]},gm=e=>e?[...dm,...hm(e)].reduce((t,n)=>{let r=n.id===`openai-compatible`?e.openAICompatible?.apiKey?.trim()||``:typeof n.configKey==`string`&&typeof e[n.configKey]==`string`?String(e[n.configKey]||``).trim():``;return r&&(t[n.id]=new Xs(n,r)),t},{}):{},_m=void 0;typeof ai==`function`&&ai(e=>{_m=e.google});var vm={ita:`geoTargetConstants/2380`,rome:`geoTargetConstants/1033236`,mil:`geoTargetConstants/1033239`,nap:`geoTargetConstants/1033245`,tor:`geoTargetConstants/1033247`},ym={it:`languageConstants/1000`,en:`languageConstants/1001`,fr:`languageConstants/1002`,es:`languageConstants/1003`,de:`languageConstants/1005`};function bm(e){return vm[e.toLowerCase()]||`geoTargetConstants/2380`}function xm(e){return ym[e.toLowerCase()]||`languageConstants/1000`}async function Sm({keyword:e,googleAdsAccountId:t,geoCode:n=`ita`,languageCode:r=`it`}){if(!_m?.developerToken)return console.error(`
|
|
23
20
|
❌ Google Ads API: developerToken non configurato.
|
|
24
21
|
|
|
25
22
|
Per ottenere un developerToken segui questi passaggi:
|
|
@@ -33,4 +30,4 @@ Per ottenere un developerToken segui questi passaggi:
|
|
|
33
30
|
config.google.developerToken
|
|
34
31
|
|
|
35
32
|
ℹ️ Attenzione: Inizialmente il token sarà in modalità di test. Per usarlo in produzione, dovrai richiedere l'approvazione da Google Ads.
|
|
36
|
-
`),[];const o=await Mo(["https://www.googleapis.com/auth/adwords"]),s=Rh(n),l=_h(a),i=`https://googleads.googleapis.com/v13/customers/${t}:generateKeywordIdeas`,c={keywordSeed:{keywords:[e]},geoTargetConstants:[s],language:l},d=await fetch(i,{method:"POST",headers:{Authorization:`Bearer ${o}`,"developer-token":Dr.developerToken,"Content-Type":"application/json"},body:JSON.stringify(c)});if(!d.ok){const f=await d.text();throw new Error(`Keyword planner error: ${d.status} - ${f}`)}return((u=(await d.json()).results)==null?void 0:u.map(f=>{var p,h,g,b;return{keyword:f.text,avgMonthlySearches:((p=f.keywordIdeaMetrics)==null?void 0:p.avgMonthlySearches)??0,competition:((h=f.keywordIdeaMetrics)==null?void 0:h.competition)??"UNSPECIFIED",cpc:(b=(g=f.keywordIdeaMetrics)==null?void 0:g.averageCpc)!=null&&b.micros?f.keywordIdeaMetrics.averageCpc.micros/1e6:null}}))??[]}async function Oh(e,t="IT",n="today 12-m"){const a=`https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify({comparisonItem:[{keyword:e,geo:t,time:n}],category:0,property:""}))}&_=${Date.now()}`,s=await(await fetch(a)).text(),i=JSON.parse(s.replace(")]}',","")).widgets.find(g=>g.id==="TIMESERIES");if(!i)throw new Error("Timeline widget not found");const c=i.token,d=i.request,m=`https://trends.google.com/trends/api/widgetdata/multiline?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify(d))}&token=${c}&_=${Date.now()}`,f=await(await fetch(m)).text(),h=JSON.parse(f.replace(")]}',","")).default.timelineData.map(g=>{var b;return{date:g.formattedTime,value:(b=g.value)==null?void 0:b[0]}});return{keyword:e,timeline:h}}async function $h(e,t="IT",n="today 12-m"){var h,g,b,y,E,x;const a=`https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify({comparisonItem:[{keyword:e,geo:t,time:n}],category:0,property:""}))}&_=${Date.now()}`,s=await(await fetch(a)).text(),i=JSON.parse(s.replace(")]}',","")).widgets.find(N=>N.id==="RELATED_QUERIES");if(!i)throw new Error("Related queries widget not found");const c=`https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify(i.request))}&token=${i.token}&_=${Date.now()}`,m=await(await fetch(c)).text(),u=JSON.parse(m.replace(")]}',","")),f=((b=(g=(h=u.default.rankedList)==null?void 0:h[0])==null?void 0:g.rankedKeyword)==null?void 0:b.map(N=>({query:N.query,value:N.value})))||[],p=((x=(E=(y=u.default.rankedList)==null?void 0:y[1])==null?void 0:E.rankedKeyword)==null?void 0:x.map(N=>({query:N.query,value:N.value})))||[];return{keyword:e,top:f,rising:p}}const Lh=5e3,jh="https://www.dropbox.com/home";let st;typeof Je=="function"&&Je(e=>{st=e.dropbox});const Bh=async(e,t,n={})=>{if(!st)return console.error("DropBox: Config not found"),null;const a=await Sn(st.clientId);if(!a)throw new Error("DropBox: Access token not found");return await fetch(e,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/octet-stream",...n},body:t}).catch(o=>(console.error("There was a problem with the fetch operation:",o),null)).finally(()=>{console.log("DropBox: Fetch operation completed")})},vt=async(e,t,n={})=>{if(!st){console.error("DropBox: Config not found");return}const a=await Sn(st.clientId);if(!a){console.error("DropBox: Access token not found");return}return await Ra(e,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json",...n},body:JSON.stringify(t)}).then(async o=>{if(o.status===409){const s=await o.json();(!s.error_summary||!s.error_summary.includes("not_found"))&&console.error("DropBox: Fetch operation failed:",s,e,t);return}return o}).catch(o=>{console.error("There was a problem with the fetch operation:",o,e,t)}).finally(()=>{console.log("DropBox: Fetch operation completed",e,t)})},mt=(e,t=!1)=>{const n=(st==null?void 0:st.rootPath)||"";return(t?jh:"")+(e.startsWith(n)?e:n+e)},zh=async(e,t="",n=!1)=>{const a={};return(await Wc.listFolders({path:`${e+t}`,recursive:!0})).forEach(s=>{s[".tag"]!=="folder"&&(a[n?pr.changeFilename(s.path_display,{ext:""}):s.path_display]=s.name)}),a},qc=async(e,t)=>{if(!e.async_job_id)return Promise.reject(e);let n,a=!0;for(;a;)await Yr(100),n=await vt(`https://api.dropboxapi.com/2/${t}/check`,{async_job_id:e.async_job_id}),console.log("DropBox: Check folders response: ",n),(n==null?void 0:n[".tag"])!=="in_progress"&&(a=!1);return(n==null?void 0:n[".tag"])==="complete"?Promise.resolve(n.entries):Promise.reject(n)},Uh=async(e,t="")=>{const n="files/create_folder_batch",a=await vt(`https://api.dropboxapi.com/2/${n}`,{autorename:!1,force_async:!0,paths:e.map(o=>mt(t+o))});return a?qc(a,n):void 0},Hh=async(e,t="")=>{const n="files/create_folder_batch",a=await vt(`https://api.dropboxapi.com/2/${n}`,{entries:e.map(o=>({path:mt(t+o)}))});return a?qc(a,n):void 0},Vh=async(e,t)=>vt("https://api.dropboxapi.com/2/files/tags/add",{path:e,tag_text:t.toLowerCase().replaceAll(/[^a-z0-9]/g,"")}),Kh=async(e,t="")=>{for(const n in e)for(const a of e[n])await Vh(mt(t+n),a)},Gh=async({path:e="",recursive:t=!1}={})=>{const n=[],a=async({path:s,cursor:l,recursive:i})=>s?await vt("https://api.dropboxapi.com/2/files/list_folder",{include_deleted:!1,include_has_explicit_shared_members:!1,include_media_info:!1,include_mounted_folders:!0,include_non_downloadable_files:!0,path:mt(s),recursive:i}):await vt("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:l});let o={has_more:!0,cursor:"",entries:[]};for(;o!=null&&o.has_more;)o=await a(o.cursor?{cursor:o.cursor,recursive:t}:{path:e,recursive:t}),o&&n.push(...o.entries);return n},qh=async e=>{const n=async l=>await vt("https://api.dropboxapi.com/2/files/copy_batch_v2",{entries:l,autorename:!1}),a=async l=>await vt("https://api.dropboxapi.com/2/files/copy_batch/check_v2",{async_job_id:l}),o=[];let s=[];for(let l=0;l<e.length;l+=900){s=e.slice(l,l+900).map(d=>({from_path:mt(d.from),to_path:mt(d.to)}));const i=await n(s);if(!i)continue;if(i.error)throw new Error(`Error starting copy: ${i.error}`);let c=i;for(;(c==null?void 0:c[".tag"])==="async_job_id"||(c==null?void 0:c[".tag"])==="in_progress";)await Yr(Lh),c=await a(i.async_job_id??"");if((c==null?void 0:c[".tag"])==="failed")throw new Error(`Copy operation failed: ${c[".tag"]}`);(c==null?void 0:c[".tag"])==="complete"&&c.entries&&o.push(...c.entries)}return o.filter(l=>l[".tag"]==="failure").map(l=>l.failure)},Yh=async e=>{const t=async n=>await vt("https://api.dropboxapi.com/2/files/move_v2",{...n,autorename:!0});for(const n of e)await t({from_path:mt(n.from),to_path:mt(n.to)})},Wh=async({thumbnailsRequest:e=[],size:t="w64h64",format:n="jpeg",mode:a="strict"},o)=>{const l="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAgAAAAwAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==";let i={};const c=[];for(let d=0;d<e.length;d+=25){const m=e.slice(d,d+25),u=m.map(f=>({path:mt(f.path),format:n,size:t,mode:a}));await Yr(100),c.push(vt("https://content.dropboxapi.com/2/files/get_thumbnail_batch",{entries:u}).then(f=>{if(!f)return;const h=f.entries.reduce((g,b,y)=>{const E=m[y].path,[x,N]=t.replace("w","").split("h").map(Number),P=b;return g[E]={...m[y],thumbnail:(P==null?void 0:P[".tag"])==="success"?P.thumbnail:l,mimetype:"data:image/jpeg;base64,",width:x,height:N},g},{});console.log("DropBox: setThumbnails",h),o==null||o(h),i={...i,...h}}))}return Promise.all(c).then(()=>i)},Jh=(e,t="application/octet-stream",n=512)=>{const a=atob(e),o=[];for(let s=0;s<a.length;s+=n){const l=a.slice(s,s+n),i=new Array(l.length);for(let d=0;d<l.length;d++)i[d]=l.charCodeAt(d);const c=new Uint8Array(i);o.push(c)}return new Blob(o,{type:t})},Xh=async(e,t)=>{try{const n=t.split(",")[1],a=Jh(n,"application/octet-stream");Bh("https://content.dropboxapi.com/2/files/upload",a,{"Dropbox-API-Arg":JSON.stringify({path:mt(e),mode:"overwrite",autorename:!0,mute:!1})}).then(o=>{console.log("DropBox: Upload response",o)})}catch(n){console.error("Errore durante il caricamento su Dropbox:",n)}},Yc=(e=!1)=>st?_l(st.clientId,e):!1,Zh=(e={})=>{if(!st)return r.createElement("div",{title:`DropBox: configurazione mancante. Recupera il "Client ID" accedendo a https://www.dropbox.com/developers, vai su "App Console", seleziona un'app esistente o chiedi il Client ID a chi ha configurato il sistema.`,className:"text-danger flex items-center gap-2"},r.createElement(J,{name:"warning"}),r.createElement("span",null,"Dropbox non configurato"));const t=Yc(!0);return r.createElement(Fl,{provider:"dropboxAuth",intent:"connect",aspect:"button",options:{...e,className:(e==null?void 0:e.className)+(t?" text-success":" text-danger"),icon:t?"link":"link-break",title:t?"DropBox Connected":"DropBox Disconnected"}})},Wc={setRootPath:e=>{st&&(st.rootPath=e)},resolvePath:mt,createFolders:Uh,deleteBulk:Hh,addTags:Kh,listFolders:Gh,getThumbnails:Wh,search:zh,upload:Xh,copy:qh,move:Yh},Ds="https://api.serpapi.com/search",Na="google",Ca="google_images",ka="google_autocomplete",Sa="google_trends",Aa="google_maps",Pa="google_maps_photos",Ia="google_maps_reviews",qt={engine:null,device:null,no_cache:!1,async:!1,output:"json"},Ar={q:null},aa={tbs:null,safe:"active",nfpr:0,filter:1};function Qh(e){const t=da(),n=da(!0),a=Fi(!0),o={location:t,uule:null},s={geo:t,region:null},l={google_domain:"google.com",gl:n.toLowerCase(),hl:a,cr:"country"+n,lr:"lang_"+a},i={data_id:null,hl:a};return{[Na]:{...qt,...o,...l,...aa,...Ar,engine:Na,ludocid:null,lsig:null,kgmid:null,si:null,tbm:null,start:null,num:null},[Ca]:{...qt,...o,...l,...aa,...Ar,engine:Ca,chips:null,ijn:null},[ka]:{...qt,...l,...Ar,engine:ka,cp:null,client:null},[Sa]:{...qt,...s,...Ar,engine:Sa,data_type:null,tz:null,cat:null,gprop:null,date:null,csv:null},[Aa]:{...qt,...o,...l,...aa,...Ar,engine:Aa},[Pa]:{...qt,...i,engine:Pa},[Ia]:{...qt,...i,engine:Ia}}[e]??{}}let un;typeof Je=="function"&&Je(e=>{un=e.scrape});function eb(e){const t={};for(const n in e)e[n]!==null&&(t[n]=e[n]);return t}let oa=0;function Rs(e=!1){var n;const t=((n=un==null?void 0:un.serpApiKey)==null?void 0:n.split(",").map(a=>a.trim()).filter(Boolean))||[];return t.length===0?null:(e&&oa++,oa<t.length?t[oa]:null)}const tb=async(e,t)=>{const n=o=>{const s=eb({...Qh(t),api_key:o,q:e});console.log(Ds,s);const l=new URLSearchParams(s);return`${Ds}?${l}`};let a=Rs();for(;a;)try{return await ot(n(a))}catch(o){if((o==null?void 0:o.error)==="quota_exceeded"){console.warn(`SerpApi: invalid api key: ${a}`,o),a=Rs(!0);continue}throw console.error(`SerpApi: ${a}`,o),o}return null},Yt=async(e,t,n)=>{const a=`${im}/${Ft(t)}/${Ft(e)}`,o=await n.read(a);if(o)return o;const s=await tb(e,t);return s?n.set(a,s):console.warn(`SerpApi ${t}: No Result`),s??{}},rb=e=>({googleSearch:async t=>Yt(t,Na,e),googleImages:async t=>Yt(t,Ca,e),googleAutocomplete:async t=>Yt(t,ka,e),googleTrends:async t=>Yt(t,Sa,e),googleMaps:async t=>Yt(t,Aa,e),googleMapsPhotos:async t=>Yt(t,Pa,e),googleMapsReviews:async t=>Yt(t,Ia,e)}),_o={"+":"+","﹢":"+","-":"-","﹣":"-","–":"-","—":"-","@":"@","#":"#","$":"$","%":"%","&":"&","*":"*","0":"0","1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7","8":"8","9":"9",A:"A",B:"B",C:"C",D:"D",E:"E",F:"F",G:"G",H:"H",I:"I",J:"J",K:"K",L:"L",M:"M",N:"N",O:"O",P:"P",Q:"Q",R:"R",S:"S",T:"T",U:"U",V:"V",W:"W",X:"X",Y:"Y",Z:"Z",a:"a",b:"b",c:"c",d:"d",e:"e",f:"f",g:"g",h:"h",i:"i",j:"j",k:"k",l:"l",m:"m",n:"n",o:"o",p:"p",q:"q",r:"r",s:"s",t:"t",u:"u",v:"v",w:"w",x:"x",y:"y",z:"z"},nb={email:{description:"Email: no spaces -> Lower/Trim",transformations:[{pattern:"\\s+",replace:""}],mask:["toLower","trim"]},phone:{description:"Phone: Digits only",transformations:[{pattern:"\\D",replace:""}],mask:[]},price:{description:"Price: Digits/Dot/Comma/Minus -> toCurrency",transformations:[{pattern:"[^0-9.-]",replace:""},{pattern:",",replace:"."}],mask:["toCurrency"]},name:{description:"Name: All chars -> UcWords/Trim",transformations:[],mask:["ucwords","trim"]},date:{description:"Date: All chars -> toDate (YYYY-MM-DD)",transformations:[],mask:[{func:"toDate",arg:"YYYY-MM-DD"}]},slug:{description:"Slug: All chars -> toSlug",transformations:[],mask:["toSlug"]}},ab=[{pattern:"email*",use:"email"},{pattern:"*_price",use:"price"},{pattern:"name*",use:"name"},{pattern:"date*",use:"date"}],ob=new RegExp(Object.keys(_o).join("|"),"g");function Jc(e){return e?e.normalize("NFKC").replace(ob,t=>_o[t]??t):""}class sb{constructor(t={},n=[]){this.config={...nb,...t},this.matches=[...ab,...n]}apply(t,n,a=!1){const o=this.config[t];if(!o)return a?fn(n):n;let s=n;s=Jc(String(s??""));const l=o.exclusions;if(Array.isArray(l)&&l.length){const i=String(s).toLowerCase();for(const c of l){const d=((c==null?void 0:c.phrase)??"").trim().toLowerCase();if(d&&i.includes(d)){s="";break}}}for(const{pattern:i,replace:c=""}of o.transformations||[])try{s=String(s).replace(new RegExp(i,"g"),String(c))}catch{console.warn(`Invalid regex in rule ${String(t)}: ${i}`)}for(const i of o.mask||[]){let c,d;typeof i=="object"&&i!==null&&"func"in i?(c=i.func,d=i.arg):c=i;const m=Ue[c];if(typeof m=="function")try{s=m(s,d)}catch(u){console.warn(`Error applying mask ${c} for rule ${t}:`,u)}}return a?fn(s):s}applyMatches(t,n=!1){const a={...t};for(const[o,s]of Object.entries(t))for(const l of this.matches)if(this.wildcardToRegExp(l.pattern).test(o)){a[o]=this.apply(l.use,s,n);break}return a}getOptions(){return Object.keys(this.config).sort().map(t=>({label:this.config[t].description??Ue.toCamel(t),value:t}))}addRule(t,n){this.config[t]=n}addMatch(t,n){this.matches.push({pattern:t,use:n})}wildcardToRegExp(t){const n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&");return new RegExp(`^${n.replace(/\*/g,".*")}$`,"i")}}exports.AIProvider=Oi;exports.AI_PROVIDER_DEFINITIONS=Ro;exports.AI_PROVIDER_DESCRIPTORS=kh;exports.ActionButton=Qe;exports.Alert=Vr;exports.App=ch;exports.AppProvider=Kc;exports.AuthButton=Fl;exports.AuthProvider=Ml;exports.Autocomplete=xi;exports.BUILT_IN_THEMES=Et;exports.BUILT_IN_THEME_IDS=Ud;exports.BackLink=kl;exports.Badge=jr;exports.BadgeOverlay=Jr;exports.Brand=_u;exports.Breadcrumbs=Bl;exports.CONTEXT_MENU_SEARCH_THRESHOLD=Dn;exports.Card=Ua;exports.Carousel=Bu;exports.Checkbox=bi;exports.Checklist=Ei;exports.Code=Cm;exports.CodeEditor=Zi;exports.CodeSyntaxError=rr;exports.Col=nl;exports.Color=di;exports.Component=Uf;exports.ComponentBlock=ec;exports.Container=tl;exports.ContextMenu=ut;exports.CropImage=io;exports.DEFAULT_DOCUMENT_HEAD=ya;exports.DEFAULT_HEAD_APP_NAME=va;exports.DEFAULT_LANGUAGE_HEAD=wa;exports.DEFAULT_ORDER=vi;exports.DataProvider=$l;exports.Date=ui;exports.DateTime=fi;exports.DirectApiProviderAdapter=vh;exports.DropBoxConnectButton=Zh;exports.DropboxAuthProvider=_c;exports.Dropdown=gt;exports.DropdownButton=Ul;exports.DropdownDivider=Ur;exports.DropdownHeader=Hl;exports.DropdownItem=at;exports.DropdownMenu=zu;exports.EMAIL_PROVIDER_DEFINITIONS=Eh;exports.Email=eo;exports.EmailProvider=Mc;exports.FieldError=tt;exports.FileNameEditor=Ai;exports.FirebaseApiProviderAdapter=wh;exports.FirebaseAuthProvider=Dc;exports.FirebaseDataProvider=Gr;exports.FirebaseStorageProvider=vr;exports.FirestoreDataProvider=Hr;exports.Form=Eo;exports.FormControllerContext=yo;exports.Gallery=Ec;exports.GmailEmailProvider=Oc;exports.GoSite=vu;exports.GoogleAuthProvider=Io;exports.GoogleServiceAccountProvider=Rc;exports.Grid=kc;exports.GridArray=Cc;exports.GridCore=Po;exports.GridDB=hc;exports.GridGalleryView=Nc;exports.GridTableView=vc;exports.Head=cg;exports.HeadProvider=xc;exports.Hidden=Om;exports.I18nProvider=el;exports.Icon=J;exports.IconProvider=cl;exports.Image=Va;exports.ImageAvatar=Tl;exports.ImageEditor=Mn;exports.ImageField=ki;exports.Input=lt;exports.Label=rt;exports.LayoutBuilder=ip;exports.ListCard=Ap;exports.ListGroup=$m;exports.Loader=Ll;exports.LoadingButton=bt;exports.LocaleSwitcher=Sm;exports.LucideIconProvider=Oa;exports.MarkdownReader=gg;exports.Menu=zl;exports.MockApiProviderAdapter=yh;exports.MockDataProvider=An;exports.Modal=lr;exports.ModalOk=Ru;exports.ModalYesNo=Du;exports.Month=gi;exports.NORMALIZE_MAP=_o;exports.Notifications=Uu;exports.Number=ii;exports.OPENAI_COMPATIBLE_PROVIDER_DESCRIPTOR=Sh;exports.Order=gr;exports.PUBLISH_PROVIDER_DEFINITIONS=Nh;exports.PageUsers=Sc;exports.Pagination=Ao;exports.Password=ci;exports.Percentage=Za;exports.PhosphorIconProvider=$a;exports.Prompt=Yi;exports.PromptMode=Gi;exports.PromptUtils=Xt;exports.ProviderSwitcher=ym;exports.Range=hi;exports.ReferSite=yu;exports.Repeat=tp;exports.RichText=kp;exports.Row=rl;exports.Sanitizer=sb;exports.Search=Vu;exports.Select=hn;exports.SideNav=Tp;exports.StorageProvider=Ci;exports.String=Qa;exports.SupabaseApiProviderAdapter=xh;exports.SupabaseAuthProvider=$c;exports.SupabaseDataProvider=Ja;exports.SupabaseStorageProvider=Xa;exports.Switch=to;exports.Tab=ap;exports.TabDynamic=hg;exports.TabItem=cc;exports.TabLayouts=Co;exports.Table=mc;exports.TextArea=yr;exports.ThemeSwitcher=Qu;exports.Time=mi;exports.Toolbar=qu;exports.UploadCSV=cp;exports.UploadDocument=Ti;exports.UploadImage=Di;exports.Url=Fm;exports.Week=pi;exports.Wrapper=Ne;exports.arrayUnique=xn;exports.arraysEqual=Ta;exports.base64Encode=Sd;exports.base64ToBlob=Hs;exports.base64ToUrl=Vs;exports.buildBreadcrumbSchema=jl;exports.buildTextCommandContext=_n;exports.buttonBaseClass=Cn;exports.buttonDangerClass=fl;exports.buttonDarkClass=vl;exports.buttonInfoClass=hl;exports.buttonLightClass=bl;exports.buttonLinkClass=Nl;exports.buttonOutlineDangerClass=xl;exports.buttonOutlinePrimaryClass=yl;exports.buttonOutlineSecondaryClass=wl;exports.buttonOutlineSuccessClass=El;exports.buttonPrimaryClass=La;exports.buttonSecondaryClass=ml;exports.buttonSuccessClass=pl;exports.buttonWarningClass=gl;exports.callFirebaseFunction=Yl;exports.checkConditions=Ed;exports.cleanRecord=nr;exports.cn=S;exports.configureProxy=$i;exports.converter=Ue;exports.copyToClipboard=Ma;exports.crc32=Nd;exports.createAIProviderRegistry=Ph;exports.createMotionTransition=ol;exports.createTranslations=Xd;exports.decodeJWT=Ls;exports.defineLocaleMessages=Jd;exports.dirname=vd;exports.dropBox=Wc;exports.eventClosest=wd;exports.fetchJson=ot;exports.fetchRest=En;exports.fetchWithRetry=Ra;exports.fieldAddonClass=or;exports.fieldControlBaseClass=en;exports.fieldFeedbackClass=St;exports.fieldGroupClass=Lt;exports.fieldLabelClass=ni;exports.fieldTextAreaBaseClass=ai;exports.formatAIModelRef=uo;exports.generateUniqueId=yd;exports.getAIModelCatalog=zi;exports.getAccessToken=Sn;exports.getCodeValidationResult=Of;exports.getFileUrl=tr;exports.getGlobalVars=Qt;exports.getGoogleTrendsData=Oh;exports.getGoogleTrendsRelated=$h;exports.getKeywordIdeas=Fh;exports.getProviderConfigurationState=Ba;exports.getRecordValue=Lr;exports.getTabLayoutConfig=Nt;exports.getTabPaneClassName=No;exports.getTabTriggerClassName=yn;exports.googleGetAccessToken=Mo;exports.interpolate=Be;exports.intersectObjects=kd;exports.isBadgeDescriptor=Fa;exports.isEmpty=Wr;exports.isInteractiveElement=Da;exports.isProxyEnabled=Li;exports.loadScripts=Bs;exports.locales=gh;exports.matchCommandTrigger=Rn;exports.normalizeBadgeProps=al;exports.normalizeKey=Ft;exports.normalizePath=mn;exports.normalizeVisualChars=Jc;exports.parseAIModelRef=Dt;exports.path=pr;exports.proxyFetch=et;exports.registerProviderSessionFactory=xr;exports.removeGlobalVars=Pl;exports.render2Base64=Us;exports.replacePlaceholders=js;exports.replaceVariables=sa;exports.resolveMotionEffect=sl;exports.runPrompt=Ji;exports.safeClone=Mt;exports.sanitizeKey=zs;exports.scrape=rb;exports.sendEmail=Fc;exports.setGlobalVars=kn;exports.sleep=Yr;exports.smartTypeCast=fn;exports.substrCount=xd;exports.toProviderDescriptor=Gc;exports.trimPath=bd;exports.trimSlash=qr;exports.ucfirst=Cd;exports.useAIProvider=fo;exports.useAIProviderRegistry=Tn;exports.useAccessToken=_l;exports.useApiProvider=hh;exports.useAssetsHead=sg;exports.useAuthProvider=ja;exports.useCredentialsProvider=Tg;exports.useDataProvider=$t;exports.useDocumentHead=og;exports.useDropBoxConnect=Yc;exports.useEditorHeight=Pn;exports.useEmailProvider=Ig;exports.useEnterMotion=Zr;exports.useFileUploadCore=co;exports.useFormActions=Gf;exports.useFormContext=Ve;exports.useFormController=wo;exports.useGlobalVars=Al;exports.useHead=So;exports.useHeadLinks=rg;exports.useI18n=Te;exports.useIconController=ul;exports.useIconProvider=dl;exports.useImage=Um;exports.useLanguageHead=ag;exports.useMenu=Do;exports.useMotionEffect=Nn;exports.useMotionState=ar;exports.usePaginationHead=ng;exports.usePressMotion=Xr;exports.useProvider=ql;exports.useProviderSession=ti;exports.useProxy=cf;exports.usePwaHead=lg;exports.useSchemaOrgHead=ig;exports.useSetProvider=Gl;exports.useSocialHead=tg;exports.useStorageProvider=In;exports.useTheme=we;exports.useThemeController=Xs;exports.validateCodeSyntax=vo;
|
|
33
|
+
`),[];let i=await np([`https://www.googleapis.com/auth/adwords`]),a=bm(n),o=xm(r),s=`https://googleads.googleapis.com/v13/customers/${t}:generateKeywordIdeas`,c={keywordSeed:{keywords:[e]},geoTargetConstants:[a],language:o},l=await fetch(s,{method:`POST`,headers:{Authorization:`Bearer ${i}`,"developer-token":_m.developerToken,"Content-Type":`application/json`},body:JSON.stringify(c)});if(!l.ok){let e=await l.text();throw Error(`Keyword planner error: ${l.status} - ${e}`)}return(await l.json()).results?.map(e=>({keyword:e.text,avgMonthlySearches:e.keywordIdeaMetrics?.avgMonthlySearches??0,competition:e.keywordIdeaMetrics?.competition??`UNSPECIFIED`,cpc:e.keywordIdeaMetrics?.averageCpc?.micros?e.keywordIdeaMetrics.averageCpc.micros/1e6:null}))??[]}async function Cm(e,t=`IT`,n=`today 12-m`){let r=`https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify({comparisonItem:[{keyword:e,geo:t,time:n}],category:0,property:``}))}&_=${Date.now()}`,i=await(await fetch(r)).text(),a=JSON.parse(i.replace(`)]}',`,``)).widgets.find(e=>e.id===`TIMESERIES`);if(!a)throw Error(`Timeline widget not found`);let o=a.token,s=a.request,c=`https://trends.google.com/trends/api/widgetdata/multiline?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify(s))}&token=${o}&_=${Date.now()}`,l=await(await fetch(c)).text();return{keyword:e,timeline:JSON.parse(l.replace(`)]}',`,``)).default.timelineData.map(e=>({date:e.formattedTime,value:e.value?.[0]}))}}async function wm(e,t=`IT`,n=`today 12-m`){let r=`https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify({comparisonItem:[{keyword:e,geo:t,time:n}],category:0,property:``}))}&_=${Date.now()}`,i=await(await fetch(r)).text(),a=JSON.parse(i.replace(`)]}',`,``)).widgets.find(e=>e.id===`RELATED_QUERIES`);if(!a)throw Error(`Related queries widget not found`);let o=`https://trends.google.com/trends/api/widgetdata/relatedsearches?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify(a.request))}&token=${a.token}&_=${Date.now()}`,s=await(await fetch(o)).text(),c=JSON.parse(s.replace(`)]}',`,``));return{keyword:e,top:c.default.rankedList?.[0]?.rankedKeyword?.map(e=>({query:e.query,value:e.value}))||[],rising:c.default.rankedList?.[1]?.rankedKeyword?.map(e=>({query:e.query,value:e.value}))||[]}}var Tm=5e3,Em=`https://www.dropbox.com/home`,Dm=void 0;typeof ai==`function`&&ai(e=>{Dm=e.dropbox});var Om=async(e,t,n={})=>{if(!Dm)return console.error(`DropBox: Config not found`),null;let r=await nr(Dm.clientId);if(!r)throw Error(`DropBox: Access token not found`);return await fetch(e,{method:`POST`,headers:{Authorization:`Bearer ${r}`,"Content-Type":`application/octet-stream`,...n},body:t instanceof Uint8Array?Uint8Array.from(t):t}).catch(e=>(console.error(`There was a problem with the fetch operation:`,e),null)).finally(()=>{console.log(`DropBox: Fetch operation completed`)})},km=async(e,t,n={})=>{if(!Dm){console.error(`DropBox: Config not found`);return}let r=await nr(Dm.clientId);if(!r){console.error(`DropBox: Access token not found`);return}return await Oe(e,{method:`POST`,headers:{Authorization:`Bearer ${r}`,"Content-Type":`application/json`,...n},body:JSON.stringify(t)}).then(async n=>{if(n.status===409){let r=await n.json();(!r.error_summary||!r.error_summary.includes(`not_found`))&&console.error(`DropBox: Fetch operation failed:`,r,e,t);return}return n}).catch(n=>{console.error(`There was a problem with the fetch operation:`,n,e,t)}).finally(()=>{console.log(`DropBox: Fetch operation completed`,e,t)})},Am=(e,t=!1)=>{let n=Dm?.rootPath||``;return(t?Em:``)+(e.startsWith(n)?e:n+e)},jm=async(e,t=``,n=!1)=>{let r={};return(await Gm.listFolders({path:`${e+t}`,recursive:!0})).forEach(e=>{e[`.tag`]!==`folder`&&(r[n?zn.changeFilename(e.path_display,{ext:``}):e.path_display]=e.name)}),r},Mm=async(e,t)=>{if(!e.async_job_id)return Promise.reject(e);let n,r=!0;for(;r;)await te(100),n=await km(`https://api.dropboxapi.com/2/${t}/check`,{async_job_id:e.async_job_id}),console.log(`DropBox: Check folders response: `,n),n?.[`.tag`]!==`in_progress`&&(r=!1);return n?.[`.tag`]===`complete`?Promise.resolve(n.entries):Promise.reject(n)},Nm=async(e,t=``)=>{let n=`files/create_folder_batch`,r=await km(`https://api.dropboxapi.com/2/${n}`,{autorename:!1,force_async:!0,paths:e.map(e=>Am(t+e))});return r?Mm(r,n):void 0},Pm=async(e,t=``)=>{let n=`files/create_folder_batch`,r=await km(`https://api.dropboxapi.com/2/${n}`,{entries:e.map(e=>({path:Am(t+e)}))});return r?Mm(r,n):void 0},Fm=async(e,t)=>km(`https://api.dropboxapi.com/2/files/tags/add`,{path:e,tag_text:t.toLowerCase().replaceAll(/[^a-z0-9]/g,``)}),Im=async(e,t=``)=>{for(let n in e)for(let r of e[n])await Fm(Am(t+n),r)},Lm=async({path:e=``,recursive:t=!1}={})=>{let n=[],r=async({path:e,cursor:t,recursive:n})=>e?await km(`https://api.dropboxapi.com/2/files/list_folder`,{include_deleted:!1,include_has_explicit_shared_members:!1,include_media_info:!1,include_mounted_folders:!0,include_non_downloadable_files:!0,path:Am(e),recursive:n}):await km(`https://api.dropboxapi.com/2/files/list_folder/continue`,{cursor:t}),i={has_more:!0,cursor:``,entries:[]};for(;i?.has_more;)i=await r(i.cursor?{cursor:i.cursor,recursive:t}:{path:e,recursive:t}),i&&n.push(...i.entries);return n},Rm=async e=>{let t=async e=>await km(`https://api.dropboxapi.com/2/files/copy_batch_v2`,{entries:e,autorename:!1}),n=async e=>await km(`https://api.dropboxapi.com/2/files/copy_batch/check_v2`,{async_job_id:e}),r=[],i=[];for(let a=0;a<e.length;a+=900){i=e.slice(a,a+900).map(e=>({from_path:Am(e.from),to_path:Am(e.to)}));let o=await t(i);if(!o)continue;if(o.error)throw Error(`Error starting copy: ${o.error}`);let s=o;for(;s?.[`.tag`]===`async_job_id`||s?.[`.tag`]===`in_progress`;)await te(Tm),s=await n(o.async_job_id??``);if(s?.[`.tag`]===`failed`)throw Error(`Copy operation failed: ${s[`.tag`]}`);s?.[`.tag`]===`complete`&&s.entries&&r.push(...s.entries)}return r.filter(e=>e[`.tag`]===`failure`).map(e=>e.failure)},zm=async e=>{let t=async e=>await km(`https://api.dropboxapi.com/2/files/move_v2`,{...e,autorename:!0});for(let n of e)await t({from_path:Am(n.from),to_path:Am(n.to)})},Bm=async({thumbnailsRequest:e=[],size:t=`w64h64`,format:n=`jpeg`,mode:r=`strict`},i)=>{let a={},o=[];for(let s=0;s<e.length;s+=25){let c=e.slice(s,s+25),l=c.map(e=>({path:Am(e.path),format:n,size:t,mode:r}));await te(100),o.push(km(`https://content.dropboxapi.com/2/files/get_thumbnail_batch`,{entries:l}).then(e=>{if(!e)return;let n=e.entries.reduce((e,n,r)=>{let i=c[r].path,[a,o]=t.replace(`w`,``).split(`h`).map(Number),s=n;return e[i]={...c[r],thumbnail:s?.[`.tag`]===`success`?s.thumbnail:`data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAgAAAAwAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==`,mimetype:`data:image/jpeg;base64,`,width:a,height:o},e},{});console.log(`DropBox: setThumbnails`,n),i?.(n),a={...a,...n}}))}return Promise.all(o).then(()=>a)},Vm=(e,t=`application/octet-stream`,n=512)=>{let r=atob(e),i=[];for(let e=0;e<r.length;e+=n){let t=r.slice(e,e+n),a=Array(t.length);for(let e=0;e<t.length;e++)a[e]=t.charCodeAt(e);let o=new Uint8Array(a);i.push(o)}return new Blob(i,{type:t})},Hm=async(e,t)=>{try{let n=t.split(`,`)[1];Om(`https://content.dropboxapi.com/2/files/upload`,Vm(n,`application/octet-stream`),{"Dropbox-API-Arg":JSON.stringify({path:Am(e),mode:`overwrite`,autorename:!0,mute:!1})}).then(e=>{console.log(`DropBox: Upload response`,e)})}catch(e){console.error(`Errore durante il caricamento su Dropbox:`,e)}},Um=(e=!1)=>Dm?$n(Dm.clientId,e):!1,Wm=(e={})=>{if(!Dm)return l.default.createElement(`div`,{title:`DropBox: configurazione mancante. Recupera il "Client ID" accedendo a https://www.dropbox.com/developers, vai su "App Console", seleziona un'app esistente o chiedi il Client ID a chi ha configurato il sistema.`,className:`text-danger flex items-center gap-2`},l.default.createElement(Q,{name:`warning`}),l.default.createElement(`span`,null,`Dropbox non configurato`));let t=Um(!0);return l.default.createElement(ir,{provider:`dropboxAuth`,intent:`connect`,aspect:`button`,options:{...e,className:e?.className+(t?` text-success`:` text-danger`),icon:t?`link`:`link-break`,title:t?`DropBox Connected`:`DropBox Disconnected`}})},Gm={setRootPath:e=>{Dm&&(Dm.rootPath=e)},resolvePath:Am,createFolders:Nm,deleteBulk:Pm,addTags:Im,listFolders:Lm,getThumbnails:Bm,search:jm,upload:Hm,copy:Rm,move:zm},Km=`https://api.serpapi.com/search`,qm=`google`,Jm=`google_images`,Ym=`google_autocomplete`,Xm=`google_trends`,Zm=`google_maps`,Qm=`google_maps_photos`,$m=`google_maps_reviews`,eh={engine:null,device:null,no_cache:!1,async:!1,output:`json`},th={q:null},nh={tbs:null,safe:`active`,nfpr:0,filter:1};function rh(e){let t=_s(),n=_s(!0),r=vs(!0),i={location:t,uule:null},a={geo:t,region:null},o={google_domain:`google.com`,gl:n.toLowerCase(),hl:r,cr:`country`+n,lr:`lang_`+r},s={data_id:null,hl:r};return{[qm]:{...eh,...i,...o,...nh,...th,engine:qm,ludocid:null,lsig:null,kgmid:null,si:null,tbm:null,start:null,num:null},[Jm]:{...eh,...i,...o,...nh,...th,engine:Jm,chips:null,ijn:null},[Ym]:{...eh,...o,...th,engine:Ym,cp:null,client:null},[Xm]:{...eh,...a,...th,engine:Xm,data_type:null,tz:null,cat:null,gprop:null,date:null,csv:null},[Zm]:{...eh,...i,...o,...nh,...th,engine:Zm},[Qm]:{...eh,...s,engine:Qm},[$m]:{...eh,...s,engine:$m}}[e]??{}}var ih=void 0;typeof ai==`function`&&ai(e=>{ih=e.scrape});function ah(e){let t={};for(let n in e)e[n]!==null&&(t[n]=e[n]);return t}var oh=0;function sh(e=!1){let t=ih?.serpApiKey?.split(`,`).map(e=>e.trim()).filter(Boolean)||[];return t.length===0?null:(e&&oh++,oh<t.length?t[oh]:null)}var ch=async(e,t)=>{let n=n=>{let r=ah({...rh(t),api_key:n,q:e});return console.log(Km,r),`${Km}?${new URLSearchParams(r)}`},r=sh();for(;r;)try{return await De(n(r))}catch(e){if(e?.error===`quota_exceeded`){console.warn(`SerpApi: invalid api key: ${r}`,e),r=sh(!0);continue}throw console.error(`SerpApi: ${r}`,e),e}return null},lh=async(e,t,n)=>{let r=`${ui}/${V(t)}/${V(e)}`,i=await n.read(r);if(i)return i;let a=await ch(e,t);return a?n.set(r,a):console.warn(`SerpApi ${t}: No Result`),a??{}},uh=e=>({googleSearch:async t=>lh(t,qm,e),googleImages:async t=>lh(t,Jm,e),googleAutocomplete:async t=>lh(t,Ym,e),googleTrends:async t=>lh(t,Xm,e),googleMaps:async t=>lh(t,Zm,e),googleMapsPhotos:async t=>lh(t,Qm,e),googleMapsReviews:async t=>lh(t,$m,e)}),dh={"+":`+`,"﹢":`+`,"-":`-`,"﹣":`-`,"–":`-`,"—":`-`,"@":`@`,"#":`#`,"$":`$`,"%":`%`,"&":`&`,"*":`*`,"0":`0`,"1":`1`,"2":`2`,"3":`3`,"4":`4`,"5":`5`,"6":`6`,"7":`7`,"8":`8`,"9":`9`,A:`A`,B:`B`,C:`C`,D:`D`,E:`E`,F:`F`,G:`G`,H:`H`,I:`I`,J:`J`,K:`K`,L:`L`,M:`M`,N:`N`,O:`O`,P:`P`,Q:`Q`,R:`R`,S:`S`,T:`T`,U:`U`,V:`V`,W:`W`,X:`X`,Y:`Y`,Z:`Z`,a:`a`,b:`b`,c:`c`,d:`d`,e:`e`,f:`f`,g:`g`,h:`h`,i:`i`,j:`j`,k:`k`,l:`l`,m:`m`,n:`n`,o:`o`,p:`p`,q:`q`,r:`r`,s:`s`,t:`t`,u:`u`,v:`v`,w:`w`,x:`x`,y:`y`,z:`z`},fh={email:{description:`Email: no spaces -> Lower/Trim`,transformations:[{pattern:`\\s+`,replace:``}],mask:[`toLower`,`trim`]},phone:{description:`Phone: Digits only`,transformations:[{pattern:`\\D`,replace:``}],mask:[]},price:{description:`Price: Digits/Dot/Comma/Minus -> toCurrency`,transformations:[{pattern:`[^0-9.-]`,replace:``},{pattern:`,`,replace:`.`}],mask:[`toCurrency`]},name:{description:`Name: All chars -> UcWords/Trim`,transformations:[],mask:[`ucwords`,`trim`]},date:{description:`Date: All chars -> toDate (YYYY-MM-DD)`,transformations:[],mask:[{func:`toDate`,arg:`YYYY-MM-DD`}]},slug:{description:`Slug: All chars -> toSlug`,transformations:[],mask:[`toSlug`]}},ph=[{pattern:`email*`,use:`email`},{pattern:`*_price`,use:`price`},{pattern:`name*`,use:`name`},{pattern:`date*`,use:`date`}],mh=new RegExp(Object.keys(dh).join(`|`),`g`);function hh(e){return e?e.normalize(`NFKC`).replace(mh,e=>dh[e]??e):``}var gh=class{config;matches;constructor(e={},t=[]){this.config={...fh,...e},this.matches=[...ph,...t]}apply(e,t,n=!1){let r=this.config[e];if(!r)return n?ye(t):t;let i=t;i=hh(String(i??``));let a=r.exclusions;if(Array.isArray(a)&&a.length){let e=String(i).toLowerCase();for(let t of a){let n=(t?.phrase??``).trim().toLowerCase();if(n&&e.includes(n)){i=``;break}}}for(let{pattern:t,replace:n=``}of r.transformations||[])try{i=String(i).replace(new RegExp(t,`g`),String(n))}catch{console.warn(`Invalid regex in rule ${String(e)}: ${t}`)}for(let t of r.mask||[]){let n,r;typeof t==`object`&&t&&`func`in t?(n=t.func,r=t.arg):n=t;let a=N[n];if(typeof a==`function`)try{i=a(i,r)}catch(t){console.warn(`Error applying mask ${n} for rule ${e}:`,t)}}return n?ye(i):i}applyMatches(e,t=!1){let n={...e};for(let[r,i]of Object.entries(e))for(let e of this.matches)if(this.wildcardToRegExp(e.pattern).test(r)){n[r]=this.apply(e.use,i,t);break}return n}getOptions(){return Object.keys(this.config).sort().map(e=>({label:this.config[e].description??N.toCamel(e),value:e}))}addRule(e,t){this.config[e]=t}addMatch(e,t){this.matches.push({pattern:e,use:t})}wildcardToRegExp(e){let t=e.replace(/[.+^${}()|[\]\\]/g,`\\$&`);return RegExp(`^${t.replace(/\*/g,`.*`)}$`,`i`)}};exports.AIProvider=js,exports.AI_PROVIDER_DEFINITIONS=dm,exports.AI_PROVIDER_DESCRIPTORS=pm,exports.ActionButton=wn,exports.Alert=ma,exports.App=Yp,exports.AppProvider=Jp,exports.AsyncDropdown=br,exports.AuthButton=ir,exports.AuthProvider=Ln,exports.Autocomplete=Do,exports.BUILT_IN_THEMES=Ue,exports.BUILT_IN_THEME_IDS=ze,exports.BackLink=Tn,exports.Badge=Nt,exports.BadgeOverlay=Mt,exports.Brand=Dr,exports.Breadcrumbs=Fr,exports.CONTEXT_MENU_SEARCH_THRESHOLD=Zs,exports.Card=pr,exports.Carousel=Ir,exports.Checkbox=lo,exports.Checklist=Oo,exports.Code=Ca,exports.CodeEditor=ol,exports.CodeSyntaxError=Vc,exports.Col=kt,exports.Color=eo,exports.Component=cl,exports.ComponentBlock=ll,exports.Container=Dt,exports.ContextMenu=pc,exports.CropImage=Qo,exports.DEFAULT_DOCUMENT_HEAD=gd,exports.DEFAULT_HEAD_APP_NAME=hd,exports.DEFAULT_LANGUAGE_HEAD=_d,exports.DEFAULT_ORDER=ho,exports.DataProvider=or,exports.Date=to,exports.DateTime=ro,exports.DirectApiProviderAdapter=am,exports.DropBoxConnectButton=Wm,exports.DropboxAuthProvider=tp,exports.Dropdown=yr,exports.DropdownButton=xr,exports.DropdownDivider=wr,exports.DropdownHeader=Cr,exports.DropdownItem=Sr,exports.DropdownMenu=Tr,exports.EMAIL_PROVIDER_DEFINITIONS=lm,exports.Email=Qa,exports.EmailProvider=Df,exports.FieldError=qa,exports.FileNameEditor=as,exports.FirebaseApiProviderAdapter=sm,exports.FirebaseAuthProvider=Jf,exports.FirebaseDataProvider=Wf,exports.FirebaseStorageProvider=na,exports.FirestoreDataProvider=Ai,exports.Form=Ll,exports.FormControllerContext=Sl,exports.Gallery=rf,exports.GmailEmailProvider=ip,exports.GoSite=En,exports.GoogleAuthProvider=Tf,exports.GoogleServiceAccountProvider=$f,exports.Grid=pf,exports.GridArray=ff,exports.GridCore=df,exports.GridDB=$u,exports.GridGalleryView=af,exports.GridTableView=fd,exports.Head=Kd,exports.HeadProvider=Pd,exports.Hidden=co,exports.I18nProvider=gt,exports.Icon=Q,exports.IconProvider=rn,exports.Image=Er,exports.ImageAvatar=Bn,exports.ImageEditor=Wo,exports.ImageField=Ko,exports.Input=Ya,exports.Label=fo,exports.LayoutBuilder=hu,exports.ListCard=Bu,exports.ListGroup=mo,exports.Loader=cr,exports.LoadingButton=Cn,exports.LocaleSwitcher=Ta,exports.LucideIconProvider=Kt,exports.MarkdownReader=ef,exports.Menu=vr,exports.MockApiProviderAdapter=om,exports.MockDataProvider=Xi,exports.Modal=mr,exports.ModalOk=_r,exports.ModalYesNo=gr,exports.Month=ao,exports.NORMALIZE_MAP=dh,exports.Notifications=Lr,exports.Number=Za,exports.OPENAI_COMPATIBLE_PROVIDER_DESCRIPTOR=mm,exports.Order=vo,exports.PUBLISH_PROVIDER_DEFINITIONS=um,exports.PageUsers=mf,exports.Pagination=nf,exports.Password=$a,exports.Percentage=ja,exports.PhosphorIconProvider=Yt,exports.Prompt=Ac,exports.PromptMode=yc,exports.PromptUtils=vc,exports.ProviderSwitcher=da,exports.Range=oo,exports.ReferSite=Dn,exports.Repeat=ql,exports.RichText=Ru,exports.Row=Ot,exports.Sanitizer=gh,exports.Search=zr,exports.Select=Eo,exports.SideNav=Xu,exports.StorageProvider=Vo,exports.String=Xa,exports.SupabaseApiProviderAdapter=cm,exports.SupabaseAuthProvider=op,exports.SupabaseDataProvider=Ui,exports.SupabaseStorageProvider=ra,exports.Switch=uo,exports.Tab=tu,exports.TabDynamic=tf,exports.TabItem=$l,exports.TabLayouts=Ql,exports.Table=iu,exports.TextArea=po,exports.ThemeSwitcher=Yr,exports.Time=no,exports.Toolbar=Hr,exports.UploadCSV=gu,exports.UploadDocument=ps,exports.UploadImage=ms,exports.Url=so,exports.Week=io,exports.Wrapper=Z,exports.arrayUnique=le,exports.arraysEqual=de,exports.base64Encode=q,exports.base64ToBlob=he,exports.base64ToUrl=ge,exports.buildBreadcrumbSchema=Or,exports.buildTextCommandContext=uc,exports.buttonBaseClass=cn,exports.buttonDangerClass=dn,exports.buttonDarkClass=gn,exports.buttonInfoClass=mn,exports.buttonLightClass=hn,exports.buttonLinkClass=xn,exports.buttonOutlineDangerClass=yn,exports.buttonOutlinePrimaryClass=_n,exports.buttonOutlineSecondaryClass=vn,exports.buttonOutlineSuccessClass=bn,exports.buttonPrimaryClass=ln,exports.buttonSecondaryClass=un,exports.buttonSuccessClass=fn,exports.buttonWarningClass=pn,exports.callFirebaseFunction=yi,exports.checkConditions=ie,exports.cleanRecord=ve,exports.cn=X,exports.configureProxy=Ls,exports.converter=N,exports.copyToClipboard=L,exports.crc32=ae,exports.createAIProviderRegistry=gm,exports.createMotionTransition=Rt,exports.createTranslations=ct,exports.decodeJWT=I,exports.defineLocaleMessages=st,exports.dirname=ee,exports.dropBox=Gm,exports.eventClosest=H,exports.fetchJson=De,exports.fetchRest=Ee,exports.fetchWithRetry=Oe,exports.fieldAddonClass=za,exports.fieldControlBaseClass=Ia,exports.fieldFeedbackClass=Fa,exports.fieldGroupClass=Ra,exports.fieldLabelClass=Pa,exports.fieldTextAreaBaseClass=La,exports.formatAIModelRef=Os,exports.generateUniqueId=ne,exports.getAIModelCatalog=Ys,exports.getAccessToken=nr,exports.getAutoClosedSuffixLength=sc,exports.getCodeValidationResult=Zc,exports.getFileUrl=fs,exports.getGlobalVars=Nn,exports.getGoogleTrendsData=Cm,exports.getGoogleTrendsRelated=wm,exports.getKeywordIdeas=Sm,exports.getProviderConfigurationState=Un,exports.getRecordValue=_e,exports.getTabLayoutConfig=Yl,exports.getTabPaneClassName=Zl,exports.getTabTriggerClassName=Xl,exports.googleGetAccessToken=np,exports.hasAutoClosedSuffix=oc,exports.interpolate=lt,exports.intersectObjects=ce,exports.isBadgeDescriptor=At,exports.isEmpty=ue,exports.isInteractiveElement=pe,exports.isProxyEnabled=Bs,exports.loadScripts=se,Object.defineProperty(exports,"locales",{enumerable:!0,get:function(){return nm}}),exports.matchCommandTrigger=cc,exports.normalizeBadgeProps=jt,exports.normalizeKey=V,exports.normalizePath=z,exports.normalizeVisualChars=hh,exports.parseAIModelRef=ks,exports.path=zn,exports.proxyFetch=Rs,exports.registerProviderSessionFactory=aa,exports.removeGlobalVars=Fn,exports.render2Base64=me,exports.replacePlaceholders=U,exports.replaceVariables=W,exports.resolveMotionEffect=zt,exports.runPrompt=Bc,exports.safeClone=K,exports.sanitizeKey=fe,exports.scrape=uh,exports.sendEmail=rp,exports.setGlobalVars=Pn,exports.sleep=te,exports.smartTypeCast=ye,exports.substrCount=re,exports.toProviderDescriptor=fm,exports.trimPath=R,exports.trimSlash=B,exports.ucfirst=oe,exports.useAIProvider=Ms,exports.useAIProviderRegistry=Ns,exports.useAccessToken=$n,exports.useApiProvider=rm,exports.useAssetsHead=Ud,exports.useAuthProvider=Rn,exports.useCredentialsProvider=jf,exports.useDataProvider=sr,exports.useDocumentHead=Hd,exports.useDropBoxConnect=Um,exports.useEditorHeight=Na,exports.useEmailProvider=Of,exports.useEnterMotion=Ut,exports.useFileUploadCore=os,exports.useFormActions=wl,exports.useFormContext=Nl,exports.useFormController=Cl,exports.useGlobalVars=Mn,exports.useHead=Ld,exports.useHeadLinks=zd,exports.useI18n=Y,exports.useIconController=on,exports.useIconProvider=an,exports.useImage=No,exports.useLanguageHead=Vd,exports.useMenu=Xp,exports.useMotionEffect=Bt,exports.useMotionState=Vt,exports.usePaginationHead=Bd,exports.usePressMotion=Ht,exports.useProvider=ei,exports.useProviderSession=la,exports.useProxy=zs,exports.usePwaHead=Wd,exports.useSchemaOrgHead=Gd,exports.useSetProvider=$r,exports.useSocialHead=Rd,exports.useStorageProvider=Ho,exports.useTheme=J,exports.useThemeController=at,exports.validateCodeSyntax=Xc;
|