// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0-or-later // @source: https://gitlab.com/soapbox-pub/ditto/-/tree/f0a3877c import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{A as t,Bt as n,M as r,_n as i,a,bt as o,ii as s,jn as c,li as l,qi as u}from"./lucide-icons-BdRF0moN.js";import{t as d}from"./jsx-runtime-By8HlURe.js";import{t as f}from"./useTheme-B8n3R7ig.js";import{c as p,l as m,o as h,r as g,s as _}from"./fontLoader-C8ZADbrS.js";import{s as v,t as y}from"./useCurrentUser-C6OJJlWo.js";import{t as b}from"./utils-BFSTDHdM.js";import{t as x}from"./dist-BI-be9Ir.js";import{t as S}from"./button-Cs26nq0r.js";import{t as C}from"./input-CM5Fnyvy.js";import{t as w}from"./dist-CpRh64jj.js";import{t as T}from"./dist-BeEGgqo9.js";import{i as E,r as D,t as O}from"./popover-Dw5E1auH.js";import{t as k}from"./useUploadFile-BpPXwoE0.js";import{a as A,n as j,o as M,s as N}from"./dist-DW2GM_Ig.js";import"./dialog-C3CFmras.js";import{t as P}from"./resizeImage-LOlp-rx5.js";var F=e(u(),1),I=d(),L=/^#[0-9a-fA-F]{6}$/;function R({value:e,onChange:t,label:r,className:i,disabled:a}){let[o,s]=F.useState(e),c=F.useRef(null),l=F.useRef(null),[u,d]=F.useState(()=>z(e)),[f,p]=F.useState(!1),[m,h]=F.useState(!1),[g,_]=F.useState(!1);F.useEffect(()=>{s(e),d(z(e))},[e]),F.useEffect(()=>{if(!g)return;let e=requestAnimationFrame(()=>{let e=c.current;if(!e)return;let t=e.getContext(`2d`);if(!t)return;let n=e.width,r=e.height,i=t.createLinearGradient(0,0,n,0);i.addColorStop(0,`#ffffff`),i.addColorStop(1,`hsl(${u}, 100%, 50%)`),t.fillStyle=i,t.fillRect(0,0,n,r);let a=t.createLinearGradient(0,0,0,r);a.addColorStop(0,`rgba(0,0,0,0)`),a.addColorStop(1,`#000000`),t.fillStyle=a,t.fillRect(0,0,n,r)});return()=>cancelAnimationFrame(e)},[u,g]),F.useEffect(()=>{if(!g)return;let e=requestAnimationFrame(()=>{let e=l.current;if(!e)return;let t=e.getContext(`2d`);if(!t)return;let n=e.width,r=e.height,i=t.createLinearGradient(0,0,n,0);for(let e=0;e<=360;e+=30)i.addColorStop(e/360,`hsl(${e}, 100%, 50%)`);t.fillStyle=i,t.fillRect(0,0,n,r)});return()=>cancelAnimationFrame(e)},[g]);let v=e=>{if(`touches`in e){let t=e.touches[0]??e.changedTouches[0];return{clientX:t.clientX,clientY:t.clientY}}return{clientX:e.clientX,clientY:e.clientY}},y=F.useCallback(e=>{let n=c.current;if(!n)return;let{clientX:r,clientY:i}=v(e),a=n.getBoundingClientRect(),o=Math.max(0,Math.min(1,(r-a.left)/a.width)),l=Math.max(0,Math.min(1,(i-a.top)/a.height)),d=o*100,f=(1-l)*100,p=f*(1-d/200),m=p===0||p===100?0:(f-p)/Math.min(p,100-p)*100,h=ee(u,m,p);s(h),t(h)},[u,t]),x=F.useCallback(e=>{let n=l.current;if(!n)return;let{clientX:r}=v(e),i=n.getBoundingClientRect(),a=Math.max(0,Math.min(1,(r-i.left)/i.width)),c=Math.round(a*360);d(c);let{s:u,l:f}=B(o),p=ee(c,u,f);s(p),t(p)},[o,t]);F.useEffect(()=>{if(!f&&!m)return;let e=e=>{f&&y(e),m&&x(e)},t=()=>{p(!1),h(!1)};return window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,t),window.addEventListener(`touchmove`,e,{passive:!1}),window.addEventListener(`touchend`,t),()=>{window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,t),window.removeEventListener(`touchmove`,e),window.removeEventListener(`touchend`,t)}},[f,m,y,x]);let S=e=>{let n=e.target.value;n.startsWith(`#`)||(n=`#`+n),s(n),L.test(n)&&(t(n),d(z(n)))},{s:w,l:T}=B(e),k=T+w*Math.min(T,100-T)/100,A=(k===0?0:2*(1-T/k))*100,j=(1-k/100)*100,M=u/360*100;return(0,I.jsxs)(O,{open:g,onOpenChange:_,children:[(0,I.jsx)(E,{asChild:!0,disabled:a,children:(0,I.jsxs)(`button`,{type:`button`,className:b(`group transition-colors`,`flex flex-col items-center gap-1.5`,`sidebar:flex-row sidebar:items-center sidebar:gap-2.5`,a&&`opacity-50 cursor-not-allowed`,i),children:[(0,I.jsx)(`div`,{className:`relative size-12 rounded-full border-2 border-border shadow-sm cursor-pointer transition-all group-hover:scale-105 group-hover:shadow-md group-hover:border-foreground/20 shrink-0`,style:{backgroundColor:e},children:(0,I.jsx)(`div`,{className:`absolute inset-0 rounded-full flex items-center justify-center transition-colors`,children:(0,I.jsx)(n,{className:`size-3.5 text-white drop-shadow-sm`})})}),r&&(0,I.jsxs)(`div`,{className:`flex flex-col items-center gap-0.5`,children:[(0,I.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:r}),(0,I.jsx)(`span`,{className:`text-[10px] text-muted-foreground font-mono uppercase`,children:e})]})]})}),(0,I.jsxs)(D,{className:`w-64 p-3 space-y-3`,align:`center`,sideOffset:8,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,I.jsxs)(`div`,{className:`relative w-full aspect-square rounded-lg overflow-hidden cursor-crosshair`,children:[(0,I.jsx)(`canvas`,{ref:c,width:256,height:256,className:`w-full h-full touch-none`,onMouseDown:e=>{p(!0),y(e)},onTouchStart:e=>{p(!0),y(e)}}),(0,I.jsx)(`div`,{className:`absolute size-4 rounded-full border-2 border-white shadow-[0_0_0_1px_rgba(0,0,0,0.3)] pointer-events-none -translate-x-1/2 -translate-y-1/2`,style:{left:`${A}%`,top:`${j}%`}})]}),(0,I.jsxs)(`div`,{className:`relative w-full h-3 rounded-full overflow-hidden cursor-pointer`,children:[(0,I.jsx)(`canvas`,{ref:l,width:256,height:12,className:`w-full h-full touch-none`,onMouseDown:e=>{h(!0),x(e)},onTouchStart:e=>{h(!0),x(e)}}),(0,I.jsx)(`div`,{className:`absolute top-1/2 -translate-y-1/2 -translate-x-1/2 size-4 rounded-full border-2 border-white shadow-[0_0_0_1px_rgba(0,0,0,0.3)] pointer-events-none`,style:{left:`${M}%`}})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(`div`,{className:`size-8 rounded-md border border-border shrink-0`,style:{backgroundColor:o}}),(0,I.jsx)(C,{value:o,onChange:S,className:`h-8 font-mono text-base uppercase`,maxLength:7,spellCheck:!1})]})]})]})}function z(e){return B(e).h}function B(e){e=e.replace(`#`,``),e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]);let t=parseInt(e.slice(0,2),16)/255,n=parseInt(e.slice(2,4),16)/255,r=parseInt(e.slice(4,6),16)/255,i=Math.max(t,n,r),a=Math.min(t,n,r),o=(i+a)/2;if(i===a)return{h:0,s:0,l:o*100};let s=i-a,c=o>.5?s/(2-i-a):s/(i+a),l=0;return l=i===t?((n-r)/s+(n(t+e/30)%12,i=t*Math.min(n,1-n),a=e=>n-i*Math.max(-1,Math.min(r(e)-3,Math.min(9-r(e),1))),o=e=>Math.round(e*255).toString(16).padStart(2,`0`);return`#${o(a(0))}${o(a(8))}${o(a(4))}`}var te=1,ne=.9,re=.8,ie=.17,V=.1,H=.999,ae=.9999,oe=.99,se=/[\\\/_+.#"@\[\(\{&]/,ce=/[\\\/_+.#"@\[\(\{&]/g,le=/[\s-]/,ue=/[\s-]/g;function U(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?te:oe;var s=`${i},${a}`;if(o[s]!==void 0)return o[s];for(var c=r.charAt(a),l=n.indexOf(c,i),u=0,d,f,p,m;l>=0;)d=U(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=te:se.test(e.charAt(l-1))?(d*=re,p=e.slice(i,l-1).match(ce),p&&i>0&&(d*=H**+p.length)):le.test(e.charAt(l-1))?(d*=ne,m=e.slice(i,l-1).match(ue),m&&i>0&&(d*=H**+m.length)):(d*=ie,i>0&&(d*=H**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=ae)),(dd&&(d=f*V)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function de(e){return e.toLowerCase().replace(ue,` `)}function fe(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,U(e,t,de(e),de(t),0,0,{})}var W=`[cmdk-group=""]`,pe=`[cmdk-group-items=""]`,me=`[cmdk-group-heading=""]`,he=`[cmdk-item=""]`,ge=`${he}:not([aria-disabled="true"])`,_e=`cmdk-item-select`,G=`data-value`,ve=(e,t,n)=>fe(e,t,n),ye=F.createContext(void 0),K=()=>F.useContext(ye),be=F.createContext(void 0),xe=()=>F.useContext(be),Se=F.createContext(void 0),Ce=F.forwardRef((e,t)=>{let n=Y(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),r=Y(()=>new Set),i=Y(()=>new Map),a=Y(()=>new Map),o=Y(()=>new Set),s=Pe(e),{label:c,children:l,value:u,onValueChange:d,filter:f,shouldFilter:p,loop:m,disablePointerSelection:h=!1,vimBindings:g=!0,..._}=e,v=T(),y=T(),b=T(),x=F.useRef(null),S=Ie();J(()=>{if(u!==void 0){let e=u.trim();n.current.value=e,C.emit()}},[u]),J(()=>{S(6,j)},[]);let C=F.useMemo(()=>({subscribe:e=>(o.current.add(e),()=>o.current.delete(e)),snapshot:()=>n.current,setState:(e,t,r)=>{var i,a,o;if(!Object.is(n.current[e],t)){if(n.current[e]=t,e===`search`)A(),O(),S(1,k);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(b);e?e.focus():(i=document.getElementById(v))==null||i.focus()}if(S(7,()=>{n.current.selectedItemId=M()?.id,C.emit()}),r||S(5,j),s.current?.value!==void 0){let e=t??``;(o=(a=s.current).onValueChange)==null||o.call(a,e);return}}C.emit()}},emit:()=>{o.current.forEach(e=>e())}}),[]),E=F.useMemo(()=>({value:(e,t,r)=>{t!==a.current.get(e)?.value&&(a.current.set(e,{value:t,keywords:r}),n.current.filtered.items.set(e,D(t,r)),S(2,()=>{O(),C.emit()}))},item:(e,t)=>(r.current.add(e),t&&(i.current.has(t)?i.current.get(t).add(e):i.current.set(t,new Set([e]))),S(3,()=>{A(),O(),n.current.value||k(),C.emit()}),()=>{a.current.delete(e),r.current.delete(e),n.current.filtered.items.delete(e);let t=M();S(4,()=>{A(),t?.getAttribute(`id`)===e&&k(),C.emit()})}),group:e=>(i.current.has(e)||i.current.set(e,new Set),()=>{a.current.delete(e),i.current.delete(e)}),filter:()=>s.current.shouldFilter,label:c||e[`aria-label`],getDisablePointerSelection:()=>s.current.disablePointerSelection,listId:v,inputId:b,labelId:y,listInnerRef:x}),[]);function D(e,t){let r=s.current?.filter??ve;return e?r(e,n.current.search,t):0}function O(){if(!n.current.search||s.current.shouldFilter===!1)return;let e=n.current.filtered.items,t=[];n.current.filtered.groups.forEach(n=>{let r=i.current.get(n),a=0;r.forEach(t=>{let n=e.get(t);a=Math.max(n,a)}),t.push([n,a])});let r=x.current;N().sort((t,n)=>{let r=t.getAttribute(`id`),i=n.getAttribute(`id`);return(e.get(i)??0)-(e.get(r)??0)}).forEach(e=>{let t=e.closest(pe);t?t.appendChild(e.parentElement===t?e:e.closest(`${pe} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${pe} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=x.current?.querySelector(`${W}[${G}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function k(){let e=N().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(G);C.setState(`value`,e||void 0)}function A(){if(!n.current.search||s.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let t of r.current){let r=D(a.current.get(t)?.value??``,a.current.get(t)?.keywords??[]);n.current.filtered.items.set(t,r),r>0&&e++}for(let[e,t]of i.current)for(let r of t)if(n.current.filtered.items.get(r)>0){n.current.filtered.groups.add(e);break}n.current.filtered.count=e}function j(){var e;let t=M();t&&(t.parentElement?.firstChild===t&&((e=t.closest(W)?.querySelector(me))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function M(){return x.current?.querySelector(`${he}[aria-selected="true"]`)}function N(){return Array.from(x.current?.querySelectorAll(ge)||[])}function P(e){let t=N()[e];t&&C.setState(`value`,t.getAttribute(G))}function I(e){var t;let n=M(),r=N(),i=r.findIndex(e=>e===n),a=r[i+e];(t=s.current)!=null&&t.loop&&(a=i+e<0?r[r.length-1]:i+e===r.length?r[0]:r[i+e]),a&&C.setState(`value`,a.getAttribute(G))}function L(e){let t=M()?.closest(W),n;for(;t&&!n;)t=e>0?Me(t,W):Ne(t,W),n=t?.querySelector(ge);n?C.setState(`value`,n.getAttribute(G)):I(e)}let R=()=>P(N().length-1),z=e=>{e.preventDefault(),e.metaKey?R():e.altKey?L(1):I(1)},B=e=>{e.preventDefault(),e.metaKey?P(0):e.altKey?L(-1):I(-1)};return F.createElement(w.div,{ref:t,tabIndex:-1,..._,"cmdk-root":``,onKeyDown:e=>{var t;(t=_.onKeyDown)==null||t.call(_,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:g&&e.ctrlKey&&z(e);break;case`ArrowDown`:z(e);break;case`p`:case`k`:g&&e.ctrlKey&&B(e);break;case`ArrowUp`:B(e);break;case`Home`:e.preventDefault(),P(0);break;case`End`:e.preventDefault(),R();break;case`Enter`:{e.preventDefault();let t=M();if(t){let e=new Event(_e);t.dispatchEvent(e)}}}}},F.createElement(`label`,{"cmdk-label":``,htmlFor:E.inputId,id:E.labelId,style:Re},c),Z(e,e=>F.createElement(be.Provider,{value:C},F.createElement(ye.Provider,{value:E},e))))}),we=F.forwardRef((e,t)=>{let n=T(),r=F.useRef(null),i=F.useContext(Se),a=K(),o=Pe(e),s=o.current?.forceMount??i?.forceMount;J(()=>{if(!s)return a.item(n,i?.id)},[s]);let c=Fe(n,r,[e.value,e.children,r],e.keywords),l=xe(),u=X(e=>e.value&&e.value===c.current),d=X(e=>s||a.filter()===!1?!0:e.search?e.filtered.items.get(n)>0:!0);F.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(_e,f),()=>t.removeEventListener(_e,f)},[d,e.onSelect,e.disabled]);function f(){var e,t;p(),(t=(e=o.current).onSelect)==null||t.call(e,c.current)}function p(){l.setState(`value`,c.current,!0)}if(!d)return null;let{disabled:m,value:h,onSelect:g,forceMount:_,keywords:v,...y}=e;return F.createElement(w.div,{ref:x(r,t),...y,id:n,"cmdk-item":``,role:`option`,"aria-disabled":!!m,"aria-selected":!!u,"data-disabled":!!m,"data-selected":!!u,onPointerMove:m||a.getDisablePointerSelection()?void 0:p,onClick:m?void 0:f},e.children)}),Te=F.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:i,...a}=e,o=T(),s=F.useRef(null),c=F.useRef(null),l=T(),u=K(),d=X(e=>i||u.filter()===!1?!0:e.search?e.filtered.groups.has(o):!0);J(()=>u.group(o),[]),Fe(o,s,[e.value,e.heading,c]);let f=F.useMemo(()=>({id:o,forceMount:i}),[i]);return F.createElement(w.div,{ref:x(s,t),...a,"cmdk-group":``,role:`presentation`,hidden:d?void 0:!0},n&&F.createElement(`div`,{ref:c,"cmdk-group-heading":``,"aria-hidden":!0,id:l},n),Z(e,e=>F.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?l:void 0},F.createElement(Se.Provider,{value:f},e))))}),Ee=F.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,i=F.useRef(null),a=X(e=>!e.search);return!n&&!a?null:F.createElement(w.div,{ref:x(i,t),...r,"cmdk-separator":``,role:`separator`})}),De=F.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,i=e.value!=null,a=xe(),o=X(e=>e.search),s=X(e=>e.selectedItemId),c=K();return F.useEffect(()=>{e.value!=null&&a.setState(`search`,e.value)},[e.value]),F.createElement(w.input,{ref:t,...r,"cmdk-input":``,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,"aria-autocomplete":`list`,role:`combobox`,"aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":s,id:c.inputId,type:`text`,value:i?e.value:o,onChange:e=>{i||a.setState(`search`,e.target.value),n?.(e.target.value)}})}),Oe=F.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...i}=e,a=F.useRef(null),o=F.useRef(null),s=X(e=>e.selectedItemId),c=K();return F.useEffect(()=>{if(o.current&&a.current){let e=o.current,t=a.current,n,r=new ResizeObserver(()=>{n=requestAnimationFrame(()=>{let n=e.offsetHeight;t.style.setProperty(`--cmdk-list-height`,n.toFixed(1)+`px`)})});return r.observe(e),()=>{cancelAnimationFrame(n),r.unobserve(e)}}},[]),F.createElement(w.div,{ref:x(a,t),...i,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":s,"aria-label":r,id:c.listId},Z(e,e=>F.createElement(`div`,{ref:x(o,c.listInnerRef),"cmdk-list-sizer":``},e)))}),ke=F.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...s}=e;return F.createElement(N,{open:n,onOpenChange:r},F.createElement(M,{container:o},F.createElement(A,{"cmdk-overlay":``,className:i}),F.createElement(j,{"aria-label":e.label,"cmdk-dialog":``,className:a},F.createElement(Ce,{ref:t,...s}))))}),Ae=F.forwardRef((e,t)=>X(e=>e.filtered.count===0)?F.createElement(w.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),je=F.forwardRef((e,t)=>{let{progress:n,children:r,label:i=`Loading...`,...a}=e;return F.createElement(w.div,{ref:t,...a,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":i},Z(e,e=>F.createElement(`div`,{"aria-hidden":!0},e)))}),q=Object.assign(Ce,{List:Oe,Item:we,Input:De,Group:Te,Separator:Ee,Dialog:ke,Empty:Ae,Loading:je});function Me(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function Ne(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function Pe(e){let t=F.useRef(e);return J(()=>{t.current=e}),t}var J=typeof window>`u`?F.useEffect:F.useLayoutEffect;function Y(e){let t=F.useRef();return t.current===void 0&&(t.current=e()),t}function X(e){let t=xe(),n=()=>e(t.snapshot());return F.useSyncExternalStore(t.subscribe,n,n)}function Fe(e,t,n,r=[]){let i=F.useRef(),a=K();return J(()=>{var o;let s=(()=>{for(let e of n){if(typeof e==`string`)return e.trim();if(typeof e==`object`&&`current`in e)return e.current?e.current.textContent?.trim():i.current}})(),c=r.map(e=>e.trim());a.value(e,s,c),(o=t.current)==null||o.setAttribute(G,s),i.current=s}),i}var Ie=()=>{let[e,t]=F.useState(),n=Y(()=>new Map);return J(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function Le(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function Z({asChild:e,children:t},n){return e&&F.isValidElement(t)?F.cloneElement(Le(t),{ref:t.ref},n(t.props.children)):n(t)}var Re={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`},ze=F.forwardRef(({className:e,...t},n)=>(0,I.jsx)(q,{ref:n,className:b(`flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground`,e),...t}));ze.displayName=q.displayName;var Be=F.forwardRef(({className:e,...t},n)=>(0,I.jsxs)(`div`,{className:`flex items-center border-b px-3`,"cmdk-input-wrapper":``,children:[(0,I.jsx)(o,{className:`mr-2 h-4 w-4 shrink-0 opacity-50`}),(0,I.jsx)(q.Input,{ref:n,className:b(`flex h-11 w-full rounded-md bg-transparent py-3 text-base outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`,e),...t})]}));Be.displayName=q.Input.displayName;var Ve=F.forwardRef(({className:e,...t},n)=>(0,I.jsx)(q.List,{ref:n,className:b(`max-h-[300px] overflow-y-auto overflow-x-hidden`,e),...t}));Ve.displayName=q.List.displayName;var He=F.forwardRef((e,t)=>(0,I.jsx)(q.Empty,{ref:t,className:`py-6 text-center text-sm`,...e}));He.displayName=q.Empty.displayName;var Q=F.forwardRef(({className:e,...t},n)=>(0,I.jsx)(q.Group,{ref:n,className:b(`overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground`,e),...t}));Q.displayName=q.Group.displayName;var Ue=F.forwardRef(({className:e,...t},n)=>(0,I.jsx)(q.Separator,{ref:n,className:b(`-mx-1 h-px bg-border`,e),...t}));Ue.displayName=q.Separator.displayName;var $=F.forwardRef(({className:e,...t},n)=>(0,I.jsx)(q.Item,{ref:n,className:b(`relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50`,e),...t}));$.displayName=q.Item.displayName;var We=({className:e,...t})=>(0,I.jsx)(`span`,{className:b(`ml-auto text-xs tracking-widest text-muted-foreground`,e),...t});We.displayName=`CommandShortcut`;var Ge=`.woff2,.woff,.ttf,.otf`,Ke={sans:`Sans Serif`,serif:`Serif`,mono:`Monospace`,display:`Display`,handwriting:`Handwriting`},qe=[`sans`,`serif`,`mono`,`display`,`handwriting`].map(e=>({category:e,label:Ke[e],fonts:h.filter(t=>t.category===e)})).filter(e=>e.fonts.length>0);function Je(e){(0,F.useEffect)(()=>{if(!e)return;let t=setTimeout(()=>{for(let e of h)p(e.family)},100);return()=>clearTimeout(t)},[e])}function Ye(e){let t=e.replace(/\.(woff2?|ttf|otf)$/i,``);return t.replace(/[-_\s]?(Regular|Bold|Italic|Light|Medium|SemiBold|ExtraBold|Thin|Black|Variable|VF)$/i,``).replace(/[-_]/g,` `).trim()||t}function Xe({value:e,onChange:n,placeholder:r=`Default (Inter)`,placeholderFont:o}={}){let{theme:c,customTheme:u,applyCustomTheme:d}=f(),{user:p}=y(),{mutateAsync:h,isPending:x}=k(),{toast:C}=v(),[w,T]=(0,F.useState)(!1),[A,j]=(0,F.useState)(``),M=(0,F.useRef)(null),N=n!==void 0;Je(w);let P=N?e:c===`custom`?u?.font:void 0,L=P?.url&&!_(P.family),R=e=>{if(N)n(e);else{let t=u?.colors??{background:`228 20% 10%`,text:`210 40% 98%`,primary:`258 70% 60%`};d({...u,colors:t,font:e})}},z=e=>{P?.family===e?B():R({family:e}),T(!1),j(``)},B=()=>{R(void 0)};return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(O,{open:w,onOpenChange:T,modal:!0,children:[(0,I.jsx)(E,{asChild:!0,children:(0,I.jsxs)(S,{variant:`outline`,role:`combobox`,"aria-expanded":w,className:`w-full justify-between font-normal h-9 text-sm`,style:P?{fontFamily:`"${m(P.family)}", sans-serif`}:o?{fontFamily:`"${m(o.family)}", sans-serif`}:void 0,children:[(0,I.jsxs)(`span`,{className:`truncate`,children:[P?.family??r,L&&(0,I.jsx)(`span`,{className:`ml-1.5 text-muted-foreground text-xs`,children:`(uploaded)`})]}),(0,I.jsx)(s,{className:`ml-2 size-4 shrink-0 opacity-50`})]})}),(0,I.jsx)(D,{className:`w-[--radix-popover-trigger-width] p-0 overflow-hidden`,align:`start`,onOpenAutoFocus:e=>e.preventDefault(),children:(0,I.jsxs)(ze,{shouldFilter:!0,children:[(0,I.jsx)(Be,{placeholder:`Search fonts...`,value:A,onValueChange:j}),(0,I.jsxs)(Ve,{children:[(0,I.jsx)(He,{children:(0,I.jsx)(`span`,{className:`text-muted-foreground`,children:`No matching fonts`})}),L&&P&&(0,I.jsx)(Q,{heading:`Custom`,children:(0,I.jsxs)($,{value:P.family,onSelect:()=>z(P.family),style:{fontFamily:`"${P.family}", sans-serif`},children:[(0,I.jsx)(l,{className:`mr-2 size-4 opacity-100`}),(0,I.jsx)(`span`,{className:`flex-1 truncate`,children:P.family}),(0,I.jsx)(`button`,{onClick:e=>{e.stopPropagation(),B(),T(!1)},className:`ml-2 p-0.5 rounded-sm text-muted-foreground hover:text-foreground transition-colors`,"aria-label":`Remove custom font`,children:(0,I.jsx)(a,{className:`size-3.5`})})]})}),qe.map(e=>(0,I.jsx)(Q,{heading:e.label,children:e.fonts.map(e=>(0,I.jsxs)($,{value:e.family,onSelect:()=>z(e.family),style:{fontFamily:`"${e.cssFamily}", sans-serif`},children:[(0,I.jsx)(l,{className:b(`mr-2 size-4`,P?.family===e.family?`opacity-100`:`opacity-0`)}),e.family]},e.family))},e.category)),p&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(Ue,{}),(0,I.jsx)(Q,{children:(0,I.jsxs)($,{value:`__upload_custom_font__`,onSelect:()=>{M.current?.click()},disabled:x,className:`text-muted-foreground`,children:[x?(0,I.jsx)(i,{className:`mr-2 size-4 animate-spin`}):(0,I.jsx)(t,{className:`mr-2 size-4`}),x?`Uploading...`:`Upload custom font...`]})})]})]})]})})]}),(0,I.jsx)(`input`,{ref:M,type:`file`,accept:Ge,className:`hidden`,onChange:async e=>{let t=e.target.files?.[0];if(!t)return;e.target.value=``;let n=[`.woff2`,`.woff`,`.ttf`,`.otf`],r=t.name.slice(t.name.lastIndexOf(`.`)).toLowerCase();if(!n.includes(r)){C({title:`Invalid file`,description:`Please select a .woff2, .woff, .ttf, or .otf font file.`,variant:`destructive`});return}try{let e=(await h(t))[0][1],n=Ye(t.name);await g(n,e),R({family:n,url:e}),T(!1),j(``),C({title:`Font uploaded`,description:`"${n}" is now active.`})}catch(e){console.error(`Failed to upload font:`,e),C({title:`Upload failed`,description:`Could not upload the font file.`,variant:`destructive`})}}})]})}function Ze({bodyFont:e,onBodyFontChange:t,titleFont:n,onTitleFontChange:i}){return(0,I.jsxs)(`div`,{className:`space-y-3`,children:[(0,I.jsxs)(`span`,{className:`text-xs font-medium text-muted-foreground flex items-center gap-1.5`,children:[(0,I.jsx)(r,{className:`size-3.5`}),`Fonts`]}),(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(`span`,{className:`text-xs text-muted-foreground w-10 shrink-0`,children:`Title`}),(0,I.jsx)(`div`,{className:`flex-1`,children:(0,I.jsx)(Xe,{value:n,onChange:i,placeholder:e?.family??`Default (Inter)`,placeholderFont:e})})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(`span`,{className:`text-xs text-muted-foreground w-10 shrink-0`,children:`Body`}),(0,I.jsx)(`div`,{className:`flex-1`,children:(0,I.jsx)(Xe,{value:e,onChange:t})})]})]})]})}function Qe({value:e,onChange:t}={}){let{theme:n,customTheme:r,applyCustomTheme:o}=f(),{mutateAsync:s,isPending:l}=k(),{toast:u}=v(),d=(0,F.useRef)(null),p=t!==void 0,m=p?e:n===`custom`?r?.background:void 0,h=async e=>{let n=e.target.files?.[0];if(n){if(e.target.value=``,!n.type.startsWith(`image/`)){u({title:`Invalid file`,description:`Please select an image file.`,variant:`destructive`});return}try{let{file:e,dimensions:i}=await P(n),a={url:(await s(e))[0][1],mode:`cover`,mimeType:e.type,dimensions:i};if(p)t(a);else{let e=r?.colors??{background:`228 20% 10%`,text:`210 40% 98%`,primary:`258 70% 60%`};o({...r,colors:e,background:a})}}catch(e){console.error(`Failed to upload background:`,e),u({title:`Upload failed`,description:`Could not upload the image.`,variant:`destructive`})}}},g=()=>{if(p){t(void 0);return}r&&o({...r,background:void 0})},_=n=>{if(p){if(!e)return;t({...e,mode:n});return}r?.background&&o({...r,background:{...r.background,mode:n}})};return(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`Background`}),m?(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsxs)(`div`,{className:`relative rounded-lg overflow-hidden border border-border`,children:[(0,I.jsx)(`img`,{src:m.url,alt:`Theme background`,className:`w-full h-24 object-cover`,decoding:`async`}),(0,I.jsx)(S,{variant:`secondary`,size:`icon`,className:`absolute top-1.5 right-1.5 size-6 rounded-full bg-background/80 backdrop-blur-sm hover:bg-background`,onClick:g,children:(0,I.jsx)(a,{className:`size-3.5`})})]}),(0,I.jsx)(`div`,{className:`flex gap-1 rounded-lg border border-border p-0.5 w-fit`,children:[`cover`,`tile`].map(e=>(0,I.jsx)(`button`,{onClick:()=>_(e),className:b(`px-3 py-1 rounded-md text-xs font-medium transition-colors`,(m.mode??`cover`)===e?`bg-primary text-primary-foreground`:`text-muted-foreground hover:text-foreground`),children:e===`cover`?`Cover`:`Tile`},e))})]}):(0,I.jsx)(`button`,{onClick:()=>d.current?.click(),disabled:l,className:`w-full h-20 rounded-lg border-2 border-dashed border-border hover:border-primary/40 transition-colors flex flex-col items-center justify-center gap-1.5 text-muted-foreground hover:text-foreground disabled:opacity-50`,children:l?(0,I.jsx)(i,{className:`size-4 animate-spin`}):(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(c,{className:`size-4`}),(0,I.jsx)(`span`,{className:`text-xs`,children:`Upload image`})]})}),(0,I.jsx)(`input`,{ref:d,type:`file`,accept:`image/*`,className:`hidden`,onChange:h})]})}export{Ze as n,R as r,Qe as t}; // @license-end