新增后端图标校验与色槽规范化,前端展示 BoardBadge/骨架屏,发帖与板块管理页增加未保存确认。 Co-authored-by: Cursor <cursoragent@cursor.com>
3 lines
93 KiB
JavaScript
3 lines
93 KiB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-B75SKkZF.js","assets/react-vendor-BdyZmpPe.js","assets/virtual-vendor-rtLkLCpN.js","assets/PinnedIcon-Dc0ZpCCq.js","assets/ui-vendor-B26O8baZ.js","assets/content-BrFHUpp8.js","assets/PostDetailPage-Ca0chGU-.js","assets/badge-xzbTTsRq.js","assets/postContent-ClrHK1rL.js","assets/purify-vendor-Cx4rtWv4.js","assets/LoginPage-jlZcJP-F.js","assets/form-DggfNWHU.js","assets/input-y6vZyHhN.js","assets/RegisterPage-g5r_djmM.js","assets/ComposePage-eRDSuLA7.js","assets/dialog-DXwuwWJi.js","assets/alert-dialog-C2PKamsV.js","assets/BoardsManagePage-DxLu9n3N.js","assets/textarea-Dcf0-FNg.js","assets/ProfilePage-BxbMpG9W.js","assets/FavoritesPage-rLr3pZbU.js","assets/AdminDashboardPage-C2c-F2-X.js","assets/AdminPostsPage-Boh0BdYW.js","assets/AdminCommentsPage-B23tMV_-.js","assets/AdminUsersPage-GP-G5C8H.js","assets/AdminSettingsPage-BKTiLKhD.js"])))=>i.map(i=>d[i]);
|
||
var Js=Object.defineProperty;var Ks=(e,t,s)=>t in e?Js(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var xt=(e,t,s)=>Ks(e,typeof t!="symbol"?t+"":t,s);import{r as b,j as o,e as Je,g as Lt,i as Dt,k as u,m as Xs,O as Mt,N as Qs,n as Zs,p as eo,q as to,t as U,v as vt,w as so}from"./react-vendor-BdyZmpPe.js";import{S as Bt,C as oo,a as $t,P as ao,b as Ft,I as Vt,c as Gt,d as Ut,e as ro,R as Wt,f as no,L as Ht,g as Yt,h as io,T as lo,i as co,M as uo,F as at,j as qt,k as Jt,l as Kt,m as rt,n as Xt,B as Qt,G as Zt,o as es,p as mo,q as po,H as fo,Z as ho,r as go,U as nt,s as bo,t as yo,u as xo,v as vo,w as ts,x as ss,y as wo,W as ko,z as jo,A as No,D as os,E as So,J as _o,K as Eo,N as To,O as as,Q as Co,V as Io,X as Po,Y as Ro,_ as Ao}from"./ui-vendor-B26O8baZ.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))a(i);new MutationObserver(i=>{for(const l of i)if(l.type==="childList")for(const n of l.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&a(n)}).observe(document,{childList:!0,subtree:!0});function s(i){const l={};return i.integrity&&(l.integrity=i.integrity),i.referrerPolicy&&(l.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?l.credentials="include":i.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function a(i){if(i.ep)return;i.ep=!0;const l=s(i);fetch(i.href,l)}})();const rs="j13-theme";function ns(){return localStorage.getItem(rs)==="dark"?"dark":"light"}function is(e){const t=document.documentElement;t.classList.toggle("dark",e==="dark"),t.style.colorScheme=e,localStorage.setItem(rs,e)}const zo="modulepreload",Oo=function(e){return"/"+e},wt={},ae=function(t,s,a){let i=Promise.resolve();if(s&&s.length>0){document.getElementsByTagName("link");const n=document.querySelector("meta[property=csp-nonce]"),d=(n==null?void 0:n.nonce)||(n==null?void 0:n.getAttribute("nonce"));i=Promise.allSettled(s.map(m=>{if(m=Oo(m),m in wt)return;wt[m]=!0;const c=m.endsWith(".css"),y=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${y}`))return;const r=document.createElement("link");if(r.rel=c?"stylesheet":zo,c||(r.as="script"),r.crossOrigin="",r.href=m,d&&r.setAttribute("nonce",d),document.head.appendChild(r),c)return new Promise((j,T)=>{r.addEventListener("load",j),r.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${m}`)))})}))}function l(n){const d=new Event("vite:preloadError",{cancelable:!0});if(d.payload=n,window.dispatchEvent(d),!d.defaultPrevented)throw n}return i.then(n=>{for(const d of n||[])d.status==="rejected"&&l(d.reason);return t().catch(l)})},Lo="";async function v(e,t={}){const s=await fetch(Lo+e,{credentials:"same-origin",...t,headers:{...t.body instanceof FormData?{}:{"Content-Type":"application/json"},...t.headers}});let a;try{a=await s.json()}catch{throw new Error("服务器响应异常")}if(!s.ok)throw new Error(a.error||"请求失败");return a}const he={me:()=>v("/api/me"),stats:()=>v("/api/stats"),forumLimits:()=>v("/api/forum-limits"),boards:()=>v("/api/boards"),posts:e=>{const t=new URLSearchParams(e).toString();return v(`/api/posts?${t}`)},hotPosts:()=>v("/api/posts/hot"),post:(e,t)=>{const s=t!=null&&t.skipView?"?skip_view=1":"";return v(`/api/posts/${e}${s}`)},comments:(e,t)=>{const s=t!=null&&t.length?`?my_ids=${t.join(",")}`:"";return v(`/api/posts/${e}/comments${s}`)},notifications:()=>v("/api/notifications"),online:()=>v("/api/online"),presence:()=>v("/api/presence",{method:"POST"}),favorites:()=>v("/api/favorites"),createBoard:e=>v("/api/admin/boards",{method:"POST",body:JSON.stringify(e)}),updateBoard:(e,t)=>v(`/api/admin/boards/${e}`,{method:"PUT",body:JSON.stringify(t)}),deleteBoard:e=>v(`/api/admin/boards/${e}`,{method:"DELETE"}),adminDashboard:()=>v("/api/admin/dashboard"),adminSettings:()=>v("/api/admin/settings"),adminPosts:e=>{const t=new URLSearchParams;e.page&&t.set("page",String(e.page)),e.keyword&&t.set("keyword",e.keyword);const s=t.toString();return v(`/api/admin/posts${s?`?${s}`:""}`)},adminPinPost:(e,t)=>v(`/api/admin/posts/${e}/pin`,{method:"POST",body:JSON.stringify({pinned:t})}),adminLockPost:(e,t)=>v(`/api/admin/posts/${e}/lock`,{method:"POST",body:JSON.stringify({locked:t})}),adminUpdateForumSettings:e=>v("/api/admin/settings/forum",{method:"PUT",body:JSON.stringify(e)}),adminUpdateFilterWords:e=>v("/api/admin/settings/filter-words",{method:"PUT",body:JSON.stringify({content:e})}),postRevisions:e=>v(`/api/posts/${e}/revisions`),postRevision:(e,t)=>v(`/api/posts/${e}/revisions/${t}`),adminDeletePost:e=>v(`/api/admin/posts/${e}`,{method:"DELETE"}),adminComments:(e=1)=>v(`/api/admin/comments?page=${e}`),adminDeleteComment:e=>v(`/api/admin/comments/${e}`,{method:"DELETE"}),adminUsers:(e=1)=>v(`/api/admin/users?page=${e}`),adminBanUser:(e,t)=>v(`/api/admin/users/${e}/ban`,{method:"POST",body:JSON.stringify({banned:t})}),adminBackup:()=>v("/api/admin/backup",{method:"POST"}),updateNickname:e=>{const t=new FormData;return t.append("nickname",e),v("/api/profile/nickname",{method:"POST",body:t,headers:{}})},updatePassword:(e,t)=>{const s=new FormData;return s.append("old_password",e),s.append("new_password",t),v("/api/profile/password",{method:"POST",body:s,headers:{}})},uploadAvatar:e=>{const t=new FormData;return t.append("avatar",e),v("/api/profile/avatar",{method:"POST",body:t,headers:{}})},uploadPostImage:e=>{const t=new FormData;return t.append("image",e),v("/api/uploads/image",{method:"POST",body:t,headers:{}})},createPost:e=>{const t=new FormData;return t.append("board_id",e.board_id),t.append("title",e.title),t.append("content",e.content),t.append("tags",e.tags||""),v("/api/posts",{method:"POST",body:t,headers:{}})},updatePost:(e,t)=>{const s=new FormData;return s.append("title",t.title),s.append("content",t.content),s.append("tags",t.tags||""),v(`/api/posts/${e}`,{method:"PUT",body:s,headers:{}})},login:(e,t)=>{const s=new FormData;return s.append("username",e),s.append("password",t),v("/api/login",{method:"POST",body:s,headers:{}})},register:(e,t,s)=>{const a=new FormData;return a.append("username",e),a.append("password",t),a.append("nickname",s),v("/api/register",{method:"POST",body:a,headers:{}})},logout:()=>v("/api/logout",{method:"POST"}),like:e=>v(`/api/posts/${e}/like`,{method:"POST"}),favorite:e=>v(`/api/posts/${e}/favorite`,{method:"POST"}),addComment:(e,t)=>{const s=new FormData;return s.append("content",t.content),t.replyTo&&s.append("reply_to",String(t.replyTo)),t.guestNick&&s.append("guest_nick",t.guestNick),t.guestEmail&&s.append("guest_email",t.guestEmail),t.guestUrl&&s.append("guest_url",t.guestUrl),t.isPrivate&&s.append("is_private","1"),v(`/api/posts/${e}/comments`,{method:"POST",body:s,headers:{}})},ping:()=>v("/api/ping",{method:"POST"})},ls=b.createContext({user:null,loading:!0,refresh:async()=>{},logout:async()=>{}});function Do({children:e}){const[t,s]=b.useState(null),[a,i]=b.useState(!0),l=b.useCallback(async()=>{try{const d=await he.me();s(d.user??null)}catch{s(null)}finally{i(!1)}},[]);b.useEffect(()=>{l()},[l]);const n=async()=>{await he.logout(),s(null)};return o.jsx(ls.Provider,{value:{user:t,loading:a,refresh:l,logout:n},children:e})}const Ke=()=>b.useContext(ls),cs=b.createContext({theme:"light",toggle:()=>{}});function Mo({children:e}){const[t,s]=b.useState(ns);b.useLayoutEffect(()=>{is(t)},[t]);const a=()=>s(i=>i==="light"?"dark":"light");return o.jsx(cs.Provider,{value:{theme:t,toggle:a},children:e})}const ds=()=>b.useContext(cs);function Bo(e){const[t,s]=b.useState(()=>window.matchMedia(e).matches);return b.useLayoutEffect(()=>{const a=window.matchMedia(e),i=()=>s(a.matches);return a.addEventListener("change",i),()=>a.removeEventListener("change",i)},[e]),t}function xe(){return o.jsxs("div",{className:"page-loader",role:"status","aria-live":"polite",children:[o.jsx("span",{className:"page-loader__dot"}),"加载中…"]})}function us(e){var t,s,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(s=us(e[t]))&&(a&&(a+=" "),a+=s)}else for(s in e)e[s]&&(a&&(a+=" "),a+=s);return a}function ms(){for(var e,t,s=0,a="",i=arguments.length;s<i;s++)(e=arguments[s])&&(t=us(e))&&(a&&(a+=" "),a+=t);return a}const $o=(e,t)=>{const s=new Array(e.length+t.length);for(let a=0;a<e.length;a++)s[a]=e[a];for(let a=0;a<t.length;a++)s[e.length+a]=t[a];return s},Fo=(e,t)=>({classGroupId:e,validator:t}),ps=(e=new Map,t=null,s)=>({nextPart:e,validators:t,classGroupId:s}),He="-",kt=[],Vo="arbitrary..",Go=e=>{const t=Wo(e),{conflictingClassGroups:s,conflictingClassGroupModifiers:a}=e;return{getClassGroupId:n=>{if(n.startsWith("[")&&n.endsWith("]"))return Uo(n);const d=n.split(He),m=d[0]===""&&d.length>1?1:0;return fs(d,m,t)},getConflictingClassGroupIds:(n,d)=>{if(d){const m=a[n],c=s[n];return m?c?$o(c,m):m:c||kt}return s[n]||kt}}},fs=(e,t,s)=>{if(e.length-t===0)return s.classGroupId;const i=e[t],l=s.nextPart.get(i);if(l){const c=fs(e,t+1,l);if(c)return c}const n=s.validators;if(n===null)return;const d=t===0?e.join(He):e.slice(t).join(He),m=n.length;for(let c=0;c<m;c++){const y=n[c];if(y.validator(d))return y.classGroupId}},Uo=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),s=t.indexOf(":"),a=t.slice(0,s);return a?Vo+a:void 0})(),Wo=e=>{const{theme:t,classGroups:s}=e;return Ho(s,t)},Ho=(e,t)=>{const s=ps();for(const a in e){const i=e[a];it(i,s,a,t)}return s},it=(e,t,s,a)=>{const i=e.length;for(let l=0;l<i;l++){const n=e[l];Yo(n,t,s,a)}},Yo=(e,t,s,a)=>{if(typeof e=="string"){qo(e,t,s);return}if(typeof e=="function"){Jo(e,t,s,a);return}Ko(e,t,s,a)},qo=(e,t,s)=>{const a=e===""?t:hs(t,e);a.classGroupId=s},Jo=(e,t,s,a)=>{if(Xo(e)){it(e(a),t,s,a);return}t.validators===null&&(t.validators=[]),t.validators.push(Fo(s,e))},Ko=(e,t,s,a)=>{const i=Object.entries(e),l=i.length;for(let n=0;n<l;n++){const[d,m]=i[n];it(m,hs(t,d),s,a)}},hs=(e,t)=>{let s=e;const a=t.split(He),i=a.length;for(let l=0;l<i;l++){const n=a[l];let d=s.nextPart.get(n);d||(d=ps(),s.nextPart.set(n,d)),s=d}return s},Xo=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,Qo=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,s=Object.create(null),a=Object.create(null);const i=(l,n)=>{s[l]=n,t++,t>e&&(t=0,a=s,s=Object.create(null))};return{get(l){let n=s[l];if(n!==void 0)return n;if((n=a[l])!==void 0)return i(l,n),n},set(l,n){l in s?s[l]=n:i(l,n)}}},tt="!",jt=":",Zo=[],Nt=(e,t,s,a,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:s,maybePostfixModifierPosition:a,isExternal:i}),ea=e=>{const{prefix:t,experimentalParseClassName:s}=e;let a=i=>{const l=[];let n=0,d=0,m=0,c;const y=i.length;for(let L=0;L<y;L++){const O=i[L];if(n===0&&d===0){if(O===jt){l.push(i.slice(m,L)),m=L+1;continue}if(O==="/"){c=L;continue}}O==="["?n++:O==="]"?n--:O==="("?d++:O===")"&&d--}const r=l.length===0?i:i.slice(m);let j=r,T=!1;r.endsWith(tt)?(j=r.slice(0,-1),T=!0):r.startsWith(tt)&&(j=r.slice(1),T=!0);const P=c&&c>m?c-m:void 0;return Nt(l,T,j,P)};if(t){const i=t+jt,l=a;a=n=>n.startsWith(i)?l(n.slice(i.length)):Nt(Zo,!1,n,void 0,!0)}if(s){const i=a;a=l=>s({className:l,parseClassName:i})}return a},ta=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((s,a)=>{t.set(s,1e6+a)}),s=>{const a=[];let i=[];for(let l=0;l<s.length;l++){const n=s[l],d=n[0]==="[",m=t.has(n);d||m?(i.length>0&&(i.sort(),a.push(...i),i=[]),a.push(n)):i.push(n)}return i.length>0&&(i.sort(),a.push(...i)),a}},sa=e=>({cache:Qo(e.cacheSize),parseClassName:ea(e),sortModifiers:ta(e),postfixLookupClassGroupIds:oa(e),...Go(e)}),oa=e=>{const t=Object.create(null),s=e.postfixLookupClassGroups;if(s)for(let a=0;a<s.length;a++)t[s[a]]=!0;return t},aa=/\s+/,ra=(e,t)=>{const{parseClassName:s,getClassGroupId:a,getConflictingClassGroupIds:i,sortModifiers:l,postfixLookupClassGroupIds:n}=t,d=[],m=e.trim().split(aa);let c="";for(let y=m.length-1;y>=0;y-=1){const r=m[y],{isExternal:j,modifiers:T,hasImportantModifier:P,baseClassName:L,maybePostfixModifierPosition:O}=s(r);if(j){c=r+(c.length>0?" "+c:c);continue}let _=!!O,$;if(_){const M=L.substring(0,O);$=a(M);const f=$&&n[$]?a(L):void 0;f&&f!==$&&($=f,_=!1)}else $=a(L);if(!$){if(!_){c=r+(c.length>0?" "+c:c);continue}if($=a(L),!$){c=r+(c.length>0?" "+c:c);continue}_=!1}const Q=T.length===0?"":T.length===1?T[0]:l(T).join(":"),te=P?Q+tt:Q,re=te+$;if(d.indexOf(re)>-1)continue;d.push(re);const F=i($,_);for(let M=0;M<F.length;++M){const f=F[M];d.push(te+f)}c=r+(c.length>0?" "+c:c)}return c},na=(...e)=>{let t=0,s,a,i="";for(;t<e.length;)(s=e[t++])&&(a=gs(s))&&(i&&(i+=" "),i+=a);return i},gs=e=>{if(typeof e=="string")return e;let t,s="";for(let a=0;a<e.length;a++)e[a]&&(t=gs(e[a]))&&(s&&(s+=" "),s+=t);return s},ia=(e,...t)=>{let s,a,i,l;const n=m=>{const c=t.reduce((y,r)=>r(y),e());return s=sa(c),a=s.cache.get,i=s.cache.set,l=d,d(m)},d=m=>{const c=a(m);if(c)return c;const y=ra(m,s);return i(m,y),y};return l=n,(...m)=>l(na(...m))},la=[],V=e=>{const t=s=>s[e]||la;return t.isThemeGetter=!0,t},bs=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ys=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ca=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,da=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ua=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ma=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,pa=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,fa=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ke=e=>ca.test(e),N=e=>!!e&&!Number.isNaN(Number(e)),pe=e=>!!e&&Number.isInteger(Number(e)),Ze=e=>e.endsWith("%")&&N(e.slice(0,-1)),ye=e=>da.test(e),xs=()=>!0,ha=e=>ua.test(e)&&!ma.test(e),lt=()=>!1,ga=e=>pa.test(e),ba=e=>fa.test(e),ya=e=>!h(e)&&!g(e),xa=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),va=e=>je(e,ks,lt),h=e=>bs.test(e),Ee=e=>je(e,js,ha),St=e=>je(e,Ta,N),wa=e=>je(e,Ss,xs),ka=e=>je(e,Ns,lt),_t=e=>je(e,vs,lt),ja=e=>je(e,ws,ba),Ve=e=>je(e,_s,ga),g=e=>ys.test(e),Oe=e=>Te(e,js),Na=e=>Te(e,Ns),Et=e=>Te(e,vs),Sa=e=>Te(e,ks),_a=e=>Te(e,ws),Ge=e=>Te(e,_s,!0),Ea=e=>Te(e,Ss,!0),je=(e,t,s)=>{const a=bs.exec(e);return a?a[1]?t(a[1]):s(a[2]):!1},Te=(e,t,s=!1)=>{const a=ys.exec(e);return a?a[1]?t(a[1]):s:!1},vs=e=>e==="position"||e==="percentage",ws=e=>e==="image"||e==="url",ks=e=>e==="length"||e==="size"||e==="bg-size",js=e=>e==="length",Ta=e=>e==="number",Ns=e=>e==="family-name",Ss=e=>e==="number"||e==="weight",_s=e=>e==="shadow",Ca=()=>{const e=V("color"),t=V("font"),s=V("text"),a=V("font-weight"),i=V("tracking"),l=V("leading"),n=V("breakpoint"),d=V("container"),m=V("spacing"),c=V("radius"),y=V("shadow"),r=V("inset-shadow"),j=V("text-shadow"),T=V("drop-shadow"),P=V("blur"),L=V("perspective"),O=V("aspect"),_=V("ease"),$=V("animate"),Q=()=>["auto","avoid","all","avoid-page","page","left","right","column"],te=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],re=()=>[...te(),g,h],F=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],f=()=>[g,h,m],B=()=>[ke,"full","auto",...f()],ue=()=>[pe,"none","subgrid",g,h],K=()=>["auto",{span:["full",pe,g,h]},pe,g,h],X=()=>[pe,"auto",g,h],W=()=>["auto","min","max","fr",g,h],me=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Z=()=>["start","end","center","stretch","center-safe","end-safe"],w=()=>["auto",...f()],C=()=>[ke,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...f()],x=()=>[ke,"screen","full","dvw","lvw","svw","min","max","fit",...f()],D=()=>[ke,"screen","full","lh","dvh","lvh","svh","min","max","fit",...f()],p=()=>[e,g,h],Y=()=>[...te(),Et,_t,{position:[g,h]}],Ne=()=>["no-repeat",{repeat:["","x","y","space","round"]}],E=()=>["auto","cover","contain",Sa,va,{size:[g,h]}],A=()=>[Ze,Oe,Ee],S=()=>["","none","full",c,g,h],I=()=>["",N,Oe,Ee],ie=()=>["solid","dashed","dotted","double"],R=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],z=()=>[N,Ze,Et,_t],Se=()=>["","none",P,g,h],ge=()=>["none",N,g,h],le=()=>["none",N,g,h],Ae=()=>[N,g,h],ve=()=>[ke,"full",...f()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[ye],breakpoint:[ye],color:[xs],container:[ye],"drop-shadow":[ye],ease:["in","out","in-out"],font:[ya],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[ye],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[ye],shadow:[ye],spacing:["px",N],text:[ye],"text-shadow":[ye],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ke,h,g,O]}],container:["container"],"container-type":[{"@container":["","normal","size",g,h]}],"container-named":[xa],columns:[{columns:[N,h,g,d]}],"break-after":[{"break-after":Q()}],"break-before":[{"break-before":Q()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:re()}],overflow:[{overflow:F()}],"overflow-x":[{"overflow-x":F()}],"overflow-y":[{"overflow-y":F()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:B()}],"inset-x":[{"inset-x":B()}],"inset-y":[{"inset-y":B()}],start:[{"inset-s":B(),start:B()}],end:[{"inset-e":B(),end:B()}],"inset-bs":[{"inset-bs":B()}],"inset-be":[{"inset-be":B()}],top:[{top:B()}],right:[{right:B()}],bottom:[{bottom:B()}],left:[{left:B()}],visibility:["visible","invisible","collapse"],z:[{z:[pe,"auto",g,h]}],basis:[{basis:[ke,"full","auto",d,...f()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[N,ke,"auto","initial","none",h]}],grow:[{grow:["",N,g,h]}],shrink:[{shrink:["",N,g,h]}],order:[{order:[pe,"first","last","none",g,h]}],"grid-cols":[{"grid-cols":ue()}],"col-start-end":[{col:K()}],"col-start":[{"col-start":X()}],"col-end":[{"col-end":X()}],"grid-rows":[{"grid-rows":ue()}],"row-start-end":[{row:K()}],"row-start":[{"row-start":X()}],"row-end":[{"row-end":X()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":W()}],"auto-rows":[{"auto-rows":W()}],gap:[{gap:f()}],"gap-x":[{"gap-x":f()}],"gap-y":[{"gap-y":f()}],"justify-content":[{justify:[...me(),"normal"]}],"justify-items":[{"justify-items":[...Z(),"normal"]}],"justify-self":[{"justify-self":["auto",...Z()]}],"align-content":[{content:["normal",...me()]}],"align-items":[{items:[...Z(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Z(),{baseline:["","last"]}]}],"place-content":[{"place-content":me()}],"place-items":[{"place-items":[...Z(),"baseline"]}],"place-self":[{"place-self":["auto",...Z()]}],p:[{p:f()}],px:[{px:f()}],py:[{py:f()}],ps:[{ps:f()}],pe:[{pe:f()}],pbs:[{pbs:f()}],pbe:[{pbe:f()}],pt:[{pt:f()}],pr:[{pr:f()}],pb:[{pb:f()}],pl:[{pl:f()}],m:[{m:w()}],mx:[{mx:w()}],my:[{my:w()}],ms:[{ms:w()}],me:[{me:w()}],mbs:[{mbs:w()}],mbe:[{mbe:w()}],mt:[{mt:w()}],mr:[{mr:w()}],mb:[{mb:w()}],ml:[{ml:w()}],"space-x":[{"space-x":f()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":f()}],"space-y-reverse":["space-y-reverse"],size:[{size:C()}],"inline-size":[{inline:["auto",...x()]}],"min-inline-size":[{"min-inline":["auto",...x()]}],"max-inline-size":[{"max-inline":["none",...x()]}],"block-size":[{block:["auto",...D()]}],"min-block-size":[{"min-block":["auto",...D()]}],"max-block-size":[{"max-block":["none",...D()]}],w:[{w:[d,"screen",...C()]}],"min-w":[{"min-w":[d,"screen","none",...C()]}],"max-w":[{"max-w":[d,"screen","none","prose",{screen:[n]},...C()]}],h:[{h:["screen","lh",...C()]}],"min-h":[{"min-h":["screen","lh","none",...C()]}],"max-h":[{"max-h":["screen","lh",...C()]}],"font-size":[{text:["base",s,Oe,Ee]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[a,Ea,wa]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Ze,h]}],"font-family":[{font:[Na,ka,t]}],"font-features":[{"font-features":[h]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[i,g,h]}],"line-clamp":[{"line-clamp":[N,"none",g,St]}],leading:[{leading:[l,...f()]}],"list-image":[{"list-image":["none",g,h]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",g,h]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:p()}],"text-color":[{text:p()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ie(),"wavy"]}],"text-decoration-thickness":[{decoration:[N,"from-font","auto",g,Ee]}],"text-decoration-color":[{decoration:p()}],"underline-offset":[{"underline-offset":[N,"auto",g,h]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:f()}],"tab-size":[{tab:[pe,g,h]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",g,h]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",g,h]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Y()}],"bg-repeat":[{bg:Ne()}],"bg-size":[{bg:E()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},pe,g,h],radial:["",g,h],conic:[pe,g,h]},_a,ja]}],"bg-color":[{bg:p()}],"gradient-from-pos":[{from:A()}],"gradient-via-pos":[{via:A()}],"gradient-to-pos":[{to:A()}],"gradient-from":[{from:p()}],"gradient-via":[{via:p()}],"gradient-to":[{to:p()}],rounded:[{rounded:S()}],"rounded-s":[{"rounded-s":S()}],"rounded-e":[{"rounded-e":S()}],"rounded-t":[{"rounded-t":S()}],"rounded-r":[{"rounded-r":S()}],"rounded-b":[{"rounded-b":S()}],"rounded-l":[{"rounded-l":S()}],"rounded-ss":[{"rounded-ss":S()}],"rounded-se":[{"rounded-se":S()}],"rounded-ee":[{"rounded-ee":S()}],"rounded-es":[{"rounded-es":S()}],"rounded-tl":[{"rounded-tl":S()}],"rounded-tr":[{"rounded-tr":S()}],"rounded-br":[{"rounded-br":S()}],"rounded-bl":[{"rounded-bl":S()}],"border-w":[{border:I()}],"border-w-x":[{"border-x":I()}],"border-w-y":[{"border-y":I()}],"border-w-s":[{"border-s":I()}],"border-w-e":[{"border-e":I()}],"border-w-bs":[{"border-bs":I()}],"border-w-be":[{"border-be":I()}],"border-w-t":[{"border-t":I()}],"border-w-r":[{"border-r":I()}],"border-w-b":[{"border-b":I()}],"border-w-l":[{"border-l":I()}],"divide-x":[{"divide-x":I()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":I()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ie(),"hidden","none"]}],"divide-style":[{divide:[...ie(),"hidden","none"]}],"border-color":[{border:p()}],"border-color-x":[{"border-x":p()}],"border-color-y":[{"border-y":p()}],"border-color-s":[{"border-s":p()}],"border-color-e":[{"border-e":p()}],"border-color-bs":[{"border-bs":p()}],"border-color-be":[{"border-be":p()}],"border-color-t":[{"border-t":p()}],"border-color-r":[{"border-r":p()}],"border-color-b":[{"border-b":p()}],"border-color-l":[{"border-l":p()}],"divide-color":[{divide:p()}],"outline-style":[{outline:[...ie(),"none","hidden"]}],"outline-offset":[{"outline-offset":[N,g,h]}],"outline-w":[{outline:["",N,Oe,Ee]}],"outline-color":[{outline:p()}],shadow:[{shadow:["","none",y,Ge,Ve]}],"shadow-color":[{shadow:p()}],"inset-shadow":[{"inset-shadow":["none",r,Ge,Ve]}],"inset-shadow-color":[{"inset-shadow":p()}],"ring-w":[{ring:I()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:p()}],"ring-offset-w":[{"ring-offset":[N,Ee]}],"ring-offset-color":[{"ring-offset":p()}],"inset-ring-w":[{"inset-ring":I()}],"inset-ring-color":[{"inset-ring":p()}],"text-shadow":[{"text-shadow":["none",j,Ge,Ve]}],"text-shadow-color":[{"text-shadow":p()}],opacity:[{opacity:[N,g,h]}],"mix-blend":[{"mix-blend":[...R(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":R()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[N]}],"mask-image-linear-from-pos":[{"mask-linear-from":z()}],"mask-image-linear-to-pos":[{"mask-linear-to":z()}],"mask-image-linear-from-color":[{"mask-linear-from":p()}],"mask-image-linear-to-color":[{"mask-linear-to":p()}],"mask-image-t-from-pos":[{"mask-t-from":z()}],"mask-image-t-to-pos":[{"mask-t-to":z()}],"mask-image-t-from-color":[{"mask-t-from":p()}],"mask-image-t-to-color":[{"mask-t-to":p()}],"mask-image-r-from-pos":[{"mask-r-from":z()}],"mask-image-r-to-pos":[{"mask-r-to":z()}],"mask-image-r-from-color":[{"mask-r-from":p()}],"mask-image-r-to-color":[{"mask-r-to":p()}],"mask-image-b-from-pos":[{"mask-b-from":z()}],"mask-image-b-to-pos":[{"mask-b-to":z()}],"mask-image-b-from-color":[{"mask-b-from":p()}],"mask-image-b-to-color":[{"mask-b-to":p()}],"mask-image-l-from-pos":[{"mask-l-from":z()}],"mask-image-l-to-pos":[{"mask-l-to":z()}],"mask-image-l-from-color":[{"mask-l-from":p()}],"mask-image-l-to-color":[{"mask-l-to":p()}],"mask-image-x-from-pos":[{"mask-x-from":z()}],"mask-image-x-to-pos":[{"mask-x-to":z()}],"mask-image-x-from-color":[{"mask-x-from":p()}],"mask-image-x-to-color":[{"mask-x-to":p()}],"mask-image-y-from-pos":[{"mask-y-from":z()}],"mask-image-y-to-pos":[{"mask-y-to":z()}],"mask-image-y-from-color":[{"mask-y-from":p()}],"mask-image-y-to-color":[{"mask-y-to":p()}],"mask-image-radial":[{"mask-radial":[g,h]}],"mask-image-radial-from-pos":[{"mask-radial-from":z()}],"mask-image-radial-to-pos":[{"mask-radial-to":z()}],"mask-image-radial-from-color":[{"mask-radial-from":p()}],"mask-image-radial-to-color":[{"mask-radial-to":p()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":te()}],"mask-image-conic-pos":[{"mask-conic":[N]}],"mask-image-conic-from-pos":[{"mask-conic-from":z()}],"mask-image-conic-to-pos":[{"mask-conic-to":z()}],"mask-image-conic-from-color":[{"mask-conic-from":p()}],"mask-image-conic-to-color":[{"mask-conic-to":p()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Y()}],"mask-repeat":[{mask:Ne()}],"mask-size":[{mask:E()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",g,h]}],filter:[{filter:["","none",g,h]}],blur:[{blur:Se()}],brightness:[{brightness:[N,g,h]}],contrast:[{contrast:[N,g,h]}],"drop-shadow":[{"drop-shadow":["","none",T,Ge,Ve]}],"drop-shadow-color":[{"drop-shadow":p()}],grayscale:[{grayscale:["",N,g,h]}],"hue-rotate":[{"hue-rotate":[N,g,h]}],invert:[{invert:["",N,g,h]}],saturate:[{saturate:[N,g,h]}],sepia:[{sepia:["",N,g,h]}],"backdrop-filter":[{"backdrop-filter":["","none",g,h]}],"backdrop-blur":[{"backdrop-blur":Se()}],"backdrop-brightness":[{"backdrop-brightness":[N,g,h]}],"backdrop-contrast":[{"backdrop-contrast":[N,g,h]}],"backdrop-grayscale":[{"backdrop-grayscale":["",N,g,h]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[N,g,h]}],"backdrop-invert":[{"backdrop-invert":["",N,g,h]}],"backdrop-opacity":[{"backdrop-opacity":[N,g,h]}],"backdrop-saturate":[{"backdrop-saturate":[N,g,h]}],"backdrop-sepia":[{"backdrop-sepia":["",N,g,h]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":f()}],"border-spacing-x":[{"border-spacing-x":f()}],"border-spacing-y":[{"border-spacing-y":f()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",g,h]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[N,"initial",g,h]}],ease:[{ease:["linear","initial",_,g,h]}],delay:[{delay:[N,g,h]}],animate:[{animate:["none",$,g,h]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[L,g,h]}],"perspective-origin":[{"perspective-origin":re()}],rotate:[{rotate:ge()}],"rotate-x":[{"rotate-x":ge()}],"rotate-y":[{"rotate-y":ge()}],"rotate-z":[{"rotate-z":ge()}],scale:[{scale:le()}],"scale-x":[{"scale-x":le()}],"scale-y":[{"scale-y":le()}],"scale-z":[{"scale-z":le()}],"scale-3d":["scale-3d"],skew:[{skew:Ae()}],"skew-x":[{"skew-x":Ae()}],"skew-y":[{"skew-y":Ae()}],transform:[{transform:[g,h,"","none","gpu","cpu"]}],"transform-origin":[{origin:re()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ve()}],"translate-x":[{"translate-x":ve()}],"translate-y":[{"translate-y":ve()}],"translate-z":[{"translate-z":ve()}],"translate-none":["translate-none"],zoom:[{zoom:[pe,g,h]}],accent:[{accent:p()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:p()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",g,h]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":p()}],"scrollbar-track-color":[{"scrollbar-track":p()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":f()}],"scroll-mx":[{"scroll-mx":f()}],"scroll-my":[{"scroll-my":f()}],"scroll-ms":[{"scroll-ms":f()}],"scroll-me":[{"scroll-me":f()}],"scroll-mbs":[{"scroll-mbs":f()}],"scroll-mbe":[{"scroll-mbe":f()}],"scroll-mt":[{"scroll-mt":f()}],"scroll-mr":[{"scroll-mr":f()}],"scroll-mb":[{"scroll-mb":f()}],"scroll-ml":[{"scroll-ml":f()}],"scroll-p":[{"scroll-p":f()}],"scroll-px":[{"scroll-px":f()}],"scroll-py":[{"scroll-py":f()}],"scroll-ps":[{"scroll-ps":f()}],"scroll-pe":[{"scroll-pe":f()}],"scroll-pbs":[{"scroll-pbs":f()}],"scroll-pbe":[{"scroll-pbe":f()}],"scroll-pt":[{"scroll-pt":f()}],"scroll-pr":[{"scroll-pr":f()}],"scroll-pb":[{"scroll-pb":f()}],"scroll-pl":[{"scroll-pl":f()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",g,h]}],fill:[{fill:["none",...p()]}],"stroke-w":[{stroke:[N,Oe,Ee,St]}],stroke:[{stroke:["none",...p()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Ia=ia(Ca);function J(...e){return Ia(ms(e))}const Pa=io,Ra=lo,Aa=b.forwardRef(({className:e,inset:t,children:s,...a},i)=>o.jsxs(Bt,{ref:i,className:J("flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t&&"pl-8",e),...a,children:[s,o.jsx(oo,{className:"ml-auto"})]}));Aa.displayName=Bt.displayName;const za=b.forwardRef(({className:e,...t},s)=>o.jsx($t,{ref:s,className:J("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...t}));za.displayName=$t.displayName;const Es=b.forwardRef(({className:e,sideOffset:t=4,...s},a)=>o.jsx(ao,{children:o.jsx(Ft,{ref:a,sideOffset:t,className:J("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...s})}));Es.displayName=Ft.displayName;const De=b.forwardRef(({className:e,inset:t,...s},a)=>o.jsx(Vt,{ref:a,className:J("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",t&&"pl-8",e),...s}));De.displayName=Vt.displayName;const Oa=b.forwardRef(({className:e,children:t,checked:s,...a},i)=>o.jsxs(Gt,{ref:i,className:J("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:s,...a,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(Ut,{children:o.jsx(ro,{className:"h-4 w-4"})})}),t]}));Oa.displayName=Gt.displayName;const La=b.forwardRef(({className:e,children:t,...s},a)=>o.jsxs(Wt,{ref:a,className:J("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...s,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(Ut,{children:o.jsx(no,{className:"h-2 w-2 fill-current"})})}),t]}));La.displayName=Wt.displayName;const Da=b.forwardRef(({className:e,inset:t,...s},a)=>o.jsx(Ht,{ref:a,className:J("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",e),...s}));Da.displayName=Ht.displayName;const st=b.forwardRef(({className:e,...t},s)=>o.jsx(Yt,{ref:s,className:J("-mx-1 my-1 h-px bg-muted",e),...t}));st.displayName=Yt.displayName;const Ts="j13-cache-boards",Cs="j13-cache-stats";function Is(e){try{const t=sessionStorage.getItem(e);return t?JSON.parse(t):null}catch{return null}}function Ps(e,t){try{sessionStorage.setItem(e,JSON.stringify(t))}catch{}}function Tt(){return Is(Ts)??[]}function Ct(){return Is(Cs)}function Ma(e){Ps(Ts,e)}function Ba(e){Ps(Cs,e)}const $a=[{key:"latest",label:"最新发帖",hint:"按发布时间",icon:co},{key:"reply",label:"最新回复",hint:"最近有人回复",icon:uo},{key:"hot",label:"热门讨论",hint:"按互动热度",icon:at}];function Rs(e){return e==="reply"||e==="hot"?e:"latest"}function Ye(e,t="latest"){const s=new URLSearchParams;e&&s.set("board",String(e)),t!=="latest"&&s.set("sort",t);const a=s.toString();return a?`/?${a}`:"/"}function en({value:e,onChange:t,postTotal:s}){return o.jsxs("div",{className:"feed-toolbar",children:[o.jsx("div",{className:"feed-sort-bar",role:"tablist","aria-label":"帖子排序",children:$a.map(({key:a,label:i,hint:l,icon:n})=>o.jsxs("button",{type:"button",role:"tab","aria-selected":e===a,title:`${i} · ${l}`,className:J("feed-sort-tab",e===a&&"active"),onClick:()=>t(a),children:[o.jsx(n,{"aria-hidden":!0}),o.jsx("span",{className:"feed-sort-tab__label",children:i})]},a))}),s!=null&&o.jsxs("span",{className:"feed-toolbar__count",children:["共 ",s," 条"]})]})}const As="j13-feed-cache:";function zs(e,t,s){return`${As}${e}:${t}:${s}`}function tn(e,t,s){try{const a=sessionStorage.getItem(zs(e,t,s));return a?JSON.parse(a):null}catch{return null}}function sn(e,t,s,a){try{sessionStorage.setItem(zs(e,t,s),JSON.stringify(a))}catch{}}function Fa(){try{for(let e=sessionStorage.length-1;e>=0;e--){const t=sessionStorage.key(e);t!=null&&t.startsWith(As)&&sessionStorage.removeItem(t)}}catch{}}const Va="feed-reset";function Me(e,t){Fa(),window.dispatchEvent(new Event(Va)),e(t,{state:{refreshFeed:!0}})}const Ue=8,Ga=[{key:"code-2",label:"代码",Icon:qt},{key:"coffee",label:"咖啡",Icon:Jt},{key:"help-circle",label:"问答",Icon:Kt},{key:"message-square",label:"讨论",Icon:rt},{key:"lightbulb",label:"灵感",Icon:Xt},{key:"book-open",label:"阅读",Icon:Qt},{key:"gamepad-2",label:"游戏",Icon:Zt},{key:"palette",label:"设计",Icon:es},{key:"music",label:"音乐",Icon:mo},{key:"camera",label:"摄影",Icon:po},{key:"heart",label:"生活",Icon:fo},{key:"zap",label:"快讯",Icon:ho},{key:"globe",label:"综合",Icon:go},{key:"users",label:"社区",Icon:nt},{key:"briefcase",label:"职场",Icon:bo},{key:"graduation-cap",label:"学习",Icon:yo},{key:"shopping-bag",label:"交易",Icon:xo},{key:"map-pin",label:"本地",Icon:vo},{key:"megaphone",label:"公告",Icon:ts},{key:"flame",label:"热门",Icon:at},{key:"star",label:"精华",Icon:ss},{key:"folder",label:"资源",Icon:wo},{key:"wrench",label:"工具",Icon:ko},{key:"cpu",label:"硬件",Icon:jo}],It=Object.fromEntries(Ga.map(e=>[e.key,e.Icon])),Ua=[qt,Jt,Kt,rt,Xt,Qt,Zt,es];function ct(e){return typeof e=="object"&&e.color_index!=null&&e.color_index>=0?e.color_index%Ue:((typeof e=="number"?e:e.id)%Ue+Ue)%Ue}function Wa(e){return typeof e=="object"&&e.icon&&It[e.icon]?It[e.icon]:Ua[ct(e)]}function Ha({board:e,className:t}){const s=Wa(e);return o.jsx(s,{className:t,"aria-hidden":!0})}const Ya=["/post/","/profile"];function Os(e){return Ya.some(t=>e.startsWith(t))}function qa(e,t){return Os(e)?null:e.startsWith("/favorites")?"favorites":e.startsWith("/admin")?"admin":t===0?"all":String(t)}function Ja({boards:e,activeBoard:t,onSelectBoard:s}){const a=Je(),i=Lt(),[l]=Dt(),n=Rs(l.get("sort")),{user:d}=Ke(),m=(d==null?void 0:d.role)==="admin",c=qa(i.pathname,t),y=(r,j,T,P)=>o.jsxs("button",{type:"button",className:J("sidebar-nav-item",c!=null&&c===r&&"active"),onClick:P,children:[T,o.jsx("span",{className:"flex-1 truncate",children:j})]},r);return o.jsxs("aside",{className:"sidebar",children:[o.jsx("div",{className:"sidebar-section",children:"浏览"}),o.jsxs("nav",{className:"sidebar-nav",children:[y("all","全部帖子",o.jsx(No,{}),()=>{s(0),Me(a,Ye(0,n))}),d&&y("favorites","我的收藏",o.jsx(ss,{}),()=>a("/favorites"))]}),e.length>0&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"sidebar-section sidebar-section--boards",children:"板块"}),o.jsx("nav",{className:"sidebar-nav",children:e.map(r=>{const j=c!=null&&c===String(r.id),T=ct(r);return o.jsxs("button",{type:"button",className:J("sidebar-nav-item","sidebar-nav-item--board",j&&"active",j&&`sidebar-nav-item--board-${T}`),onClick:()=>{s(r.id),Me(a,Ye(r.id,n))},children:[o.jsx(Ha,{board:r,className:J("sidebar-board-icon",`sidebar-board-icon--${T}`)}),o.jsx("span",{className:"flex-1 truncate",children:r.name}),(r.post_count??0)>0&&o.jsx("span",{className:"sidebar-nav-item__meta",children:r.post_count})]},r.id)})})]}),m&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"sidebar-section",style:{marginTop:8},children:"管理"}),o.jsx("nav",{className:"sidebar-nav",children:y("admin","管理后台",o.jsx(os,{}),()=>a("/admin/dashboard"))})]})]})}function Ka(e){return e===0?"widget-rank widget-rank--1":e===1?"widget-rank widget-rank--2":e===2?"widget-rank widget-rank--3":"widget-rank"}function Xa({hot:e,notifications:t,online:s,onPostClick:a}){const i=(e==null?void 0:e.slice(0,8))??[],l=(t==null?void 0:t.slice(0,6))??[],n=(s==null?void 0:s.users)??[];return o.jsxs("div",{className:"aside-panel-inner",children:[o.jsxs("div",{className:"widget-card",children:[o.jsxs("div",{className:"widget-card-head",children:[o.jsx(at,{className:"widget-card-icon widget-card-icon--hot","aria-hidden":!0}),"热门帖子"]}),o.jsx("div",{className:"widget-card-body",children:i.length===0?o.jsx("div",{className:"widget-empty",children:"暂无数据"}):i.map((d,m)=>o.jsxs("div",{className:"widget-item",onClick:()=>a(d.id),children:[o.jsx("span",{className:Ka(m),children:m+1}),o.jsx("span",{className:"widget-item-title",children:d.title})]},d.id))})]}),o.jsxs("div",{className:"widget-card",children:[o.jsxs("div",{className:"widget-card-head",children:[o.jsx(ts,{className:"widget-card-icon widget-card-icon--notice","aria-hidden":!0}),"最新动态"]}),o.jsx("div",{className:"widget-card-body",children:l.length===0?o.jsx("div",{className:"widget-empty",children:"暂无动态"}):l.map(d=>o.jsxs("div",{className:"widget-item widget-item--notice",onClick:()=>a(d.id),children:[o.jsx("span",{className:"widget-item-title",children:d.title}),o.jsx("span",{className:"widget-item-time",children:d.created_at})]},d.id))})]}),o.jsxs("div",{className:"widget-card",children:[o.jsxs("div",{className:"widget-card-head",children:[o.jsx(nt,{className:"widget-card-icon widget-card-icon--online","aria-hidden":!0}),"当前浏览 ",o.jsx("span",{className:"widget-head-count",children:(s==null?void 0:s.count)??"—"})," 人"]}),o.jsxs("div",{className:"widget-card-body",children:[o.jsxs("div",{className:"widget-online-meta",children:["会员 ",(s==null?void 0:s.members)??0," · 游客 ",(s==null?void 0:s.guests)??0]}),o.jsxs("div",{className:"widget-online-list",children:[n.map(d=>{var m;return o.jsx("span",{className:"widget-online-avatar",title:d.nickname,children:d.avatar?o.jsx("img",{src:d.avatar,alt:""}):((m=d.nickname)==null?void 0:m[0])||"?"},d.id)}),n.length===0&&o.jsx("span",{className:"widget-empty widget-empty--inline",children:"暂无会员在线"})]})]})]}),o.jsx("div",{className:"widget-card widget-card--about",children:o.jsx("div",{className:"widget-card-body",children:o.jsxs("p",{className:"widget-about-text",children:[o.jsx("strong",{children:"姜十三论坛"}),"拾三一隅,自在交流。轻量社区,专为小圈子打造。"]})})})]})}const Ls={post_title_max:128,post_tags_max:256,post_content_max:5e4,comment_max:5e3,search_keyword_min:1,search_keyword_max:50,page_size_default:30,feed_max_pages:10,feed_max_items:300,password_min_len:6,avatar_max_mb:2};let Re=null,Le=null;function Qa(){return Re?Promise.resolve(Re):Le||(Le=he.forumLimits().then(e=>(Re=e,e)).catch(()=>Ls).finally(()=>{Le=null}),Le)}function Za(){const[e,t]=b.useState(Re??Ls),[s,a]=b.useState(!Re);return b.useEffect(()=>{Qa().then(t).finally(()=>a(!1))},[]),{limits:e,loading:s}}function on(){Re=null}function er(e){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css",t.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}const tr=e=>{switch(e){case"success":return ar;case"info":return nr;case"warning":return rr;case"error":return ir;default:return null}},sr=Array(12).fill(0),or=({visible:e,className:t})=>u.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},u.createElement("div",{className:"sonner-spinner"},sr.map((s,a)=>u.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${a}`})))),ar=u.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},u.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),rr=u.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},u.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),nr=u.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},u.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),ir=u.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},u.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),lr=u.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},u.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),u.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),cr=()=>{const[e,t]=u.useState(document.hidden);return u.useEffect(()=>{const s=()=>{t(document.hidden)};return document.addEventListener("visibilitychange",s),()=>window.removeEventListener("visibilitychange",s)},[]),e};let ot=1;class dr{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{const s=this.subscribers.indexOf(t);this.subscribers.splice(s,1)}),this.publish=t=>{this.subscribers.forEach(s=>s(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var s;const{message:a,...i}=t,l=typeof(t==null?void 0:t.id)=="number"||((s=t.id)==null?void 0:s.length)>0?t.id:ot++,n=this.toasts.find(m=>m.id===l),d=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(l)&&this.dismissedToasts.delete(l),n?this.toasts=this.toasts.map(m=>m.id===l?(this.publish({...m,...t,id:l,title:a}),{...m,...t,id:l,dismissible:d,title:a}):m):this.addToast({title:a,...i,dismissible:d,id:l}),l},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(s=>s({id:t,dismiss:!0})))):this.toasts.forEach(s=>{this.subscribers.forEach(a=>a({id:s.id,dismiss:!0}))}),t),this.message=(t,s)=>this.create({...s,message:t}),this.error=(t,s)=>this.create({...s,message:t,type:"error"}),this.success=(t,s)=>this.create({...s,type:"success",message:t}),this.info=(t,s)=>this.create({...s,type:"info",message:t}),this.warning=(t,s)=>this.create({...s,type:"warning",message:t}),this.loading=(t,s)=>this.create({...s,type:"loading",message:t}),this.promise=(t,s)=>{if(!s)return;let a;s.loading!==void 0&&(a=this.create({...s,promise:t,type:"loading",message:s.loading,description:typeof s.description!="function"?s.description:void 0}));const i=Promise.resolve(t instanceof Function?t():t);let l=a!==void 0,n;const d=i.then(async c=>{if(n=["resolve",c],u.isValidElement(c))l=!1,this.create({id:a,type:"default",message:c});else if(mr(c)&&!c.ok){l=!1;const r=typeof s.error=="function"?await s.error(`HTTP error! status: ${c.status}`):s.error,j=typeof s.description=="function"?await s.description(`HTTP error! status: ${c.status}`):s.description,P=typeof r=="object"&&!u.isValidElement(r)?r:{message:r};this.create({id:a,type:"error",description:j,...P})}else if(c instanceof Error){l=!1;const r=typeof s.error=="function"?await s.error(c):s.error,j=typeof s.description=="function"?await s.description(c):s.description,P=typeof r=="object"&&!u.isValidElement(r)?r:{message:r};this.create({id:a,type:"error",description:j,...P})}else if(s.success!==void 0){l=!1;const r=typeof s.success=="function"?await s.success(c):s.success,j=typeof s.description=="function"?await s.description(c):s.description,P=typeof r=="object"&&!u.isValidElement(r)?r:{message:r};this.create({id:a,type:"success",description:j,...P})}}).catch(async c=>{if(n=["reject",c],s.error!==void 0){l=!1;const y=typeof s.error=="function"?await s.error(c):s.error,r=typeof s.description=="function"?await s.description(c):s.description,T=typeof y=="object"&&!u.isValidElement(y)?y:{message:y};this.create({id:a,type:"error",description:r,...T})}}).finally(()=>{l&&(this.dismiss(a),a=void 0),s.finally==null||s.finally.call(s)}),m=()=>new Promise((c,y)=>d.then(()=>n[0]==="reject"?y(n[1]):c(n[1])).catch(y));return typeof a!="string"&&typeof a!="number"?{unwrap:m}:Object.assign(a,{unwrap:m})},this.custom=(t,s)=>{const a=(s==null?void 0:s.id)||ot++;return this.create({jsx:t(a),id:a,...s}),a},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const ee=new dr,ur=(e,t)=>{const s=(t==null?void 0:t.id)||ot++;return ee.addToast({title:e,...t,id:s}),s},mr=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",pr=ur,fr=()=>ee.toasts,hr=()=>ee.getActiveToasts(),et=Object.assign(pr,{success:ee.success,info:ee.info,warning:ee.warning,error:ee.error,custom:ee.custom,message:ee.message,promise:ee.promise,dismiss:ee.dismiss,loading:ee.loading},{getHistory:fr,getToasts:hr});er("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function We(e){return e.label!==void 0}const gr=3,br="24px",yr="16px",Pt=4e3,xr=356,vr=14,wr=45,kr=200;function fe(...e){return e.filter(Boolean).join(" ")}function jr(e){const[t,s]=e.split("-"),a=[];return t&&a.push(t),s&&a.push(s),a}const Nr=e=>{var t,s,a,i,l,n,d,m,c;const{invert:y,toast:r,unstyled:j,interacting:T,setHeights:P,visibleToasts:L,heights:O,index:_,toasts:$,expanded:Q,removeToast:te,defaultRichColors:re,closeButton:F,style:M,cancelButtonStyle:f,actionButtonStyle:B,className:ue="",descriptionClassName:K="",duration:X,position:W,gap:me,expandByDefault:Z,classNames:w,icons:C,closeButtonAriaLabel:x="Close toast"}=e,[D,p]=u.useState(null),[Y,Ne]=u.useState(null),[E,A]=u.useState(!1),[S,I]=u.useState(!1),[ie,R]=u.useState(!1),[z,Se]=u.useState(!1),[ge,le]=u.useState(!1),[Ae,ve]=u.useState(0),[Ms,dt]=u.useState(0),ze=u.useRef(r.duration||X||Pt),ut=u.useRef(null),be=u.useRef(null),Bs=_===0,$s=_+1<=L,se=r.type,Ce=r.dismissible!==!1,Fs=r.className||"",Vs=r.descriptionClassName||"",Be=u.useMemo(()=>O.findIndex(k=>k.toastId===r.id)||0,[O,r.id]),Gs=u.useMemo(()=>{var k;return(k=r.closeButton)!=null?k:F},[r.closeButton,F]),mt=u.useMemo(()=>r.duration||X||Pt,[r.duration,X]),Xe=u.useRef(0),Ie=u.useRef(0),pt=u.useRef(0),Pe=u.useRef(null),[Us,Ws]=W.split("-"),ft=u.useMemo(()=>O.reduce((k,G,q)=>q>=Be?k:k+G.height,0),[O,Be]),ht=cr(),Hs=r.invert||y,Qe=se==="loading";Ie.current=u.useMemo(()=>Be*me+ft,[Be,ft]),u.useEffect(()=>{ze.current=mt},[mt]),u.useEffect(()=>{A(!0)},[]),u.useEffect(()=>{const k=be.current;if(k){const G=k.getBoundingClientRect().height;return dt(G),P(q=>[{toastId:r.id,height:G,position:r.position},...q]),()=>P(q=>q.filter(oe=>oe.toastId!==r.id))}},[P,r.id]),u.useLayoutEffect(()=>{if(!E)return;const k=be.current,G=k.style.height;k.style.height="auto";const q=k.getBoundingClientRect().height;k.style.height=G,dt(q),P(oe=>oe.find(H=>H.toastId===r.id)?oe.map(H=>H.toastId===r.id?{...H,height:q}:H):[{toastId:r.id,height:q,position:r.position},...oe])},[E,r.title,r.description,P,r.id,r.jsx,r.action,r.cancel]);const we=u.useCallback(()=>{I(!0),ve(Ie.current),P(k=>k.filter(G=>G.toastId!==r.id)),setTimeout(()=>{te(r)},kr)},[r,te,P,Ie]);u.useEffect(()=>{if(r.promise&&se==="loading"||r.duration===1/0||r.type==="loading")return;let k;return Q||T||ht?(()=>{if(pt.current<Xe.current){const oe=new Date().getTime()-Xe.current;ze.current=ze.current-oe}pt.current=new Date().getTime()})():(()=>{ze.current!==1/0&&(Xe.current=new Date().getTime(),k=setTimeout(()=>{r.onAutoClose==null||r.onAutoClose.call(r,r),we()},ze.current))})(),()=>clearTimeout(k)},[Q,T,r,se,ht,we]),u.useEffect(()=>{r.delete&&(we(),r.onDismiss==null||r.onDismiss.call(r,r))},[we,r.delete]);function Ys(){var k;if(C!=null&&C.loading){var G;return u.createElement("div",{className:fe(w==null?void 0:w.loader,r==null||(G=r.classNames)==null?void 0:G.loader,"sonner-loader"),"data-visible":se==="loading"},C.loading)}return u.createElement(or,{className:fe(w==null?void 0:w.loader,r==null||(k=r.classNames)==null?void 0:k.loader),visible:se==="loading"})}const qs=r.icon||(C==null?void 0:C[se])||tr(se);var gt,bt;return u.createElement("li",{tabIndex:0,ref:be,className:fe(ue,Fs,w==null?void 0:w.toast,r==null||(t=r.classNames)==null?void 0:t.toast,w==null?void 0:w.default,w==null?void 0:w[se],r==null||(s=r.classNames)==null?void 0:s[se]),"data-sonner-toast":"","data-rich-colors":(gt=r.richColors)!=null?gt:re,"data-styled":!(r.jsx||r.unstyled||j),"data-mounted":E,"data-promise":!!r.promise,"data-swiped":ge,"data-removed":S,"data-visible":$s,"data-y-position":Us,"data-x-position":Ws,"data-index":_,"data-front":Bs,"data-swiping":ie,"data-dismissible":Ce,"data-type":se,"data-invert":Hs,"data-swipe-out":z,"data-swipe-direction":Y,"data-expanded":!!(Q||Z&&E),"data-testid":r.testId,style:{"--index":_,"--toasts-before":_,"--z-index":$.length-_,"--offset":`${S?Ae:Ie.current}px`,"--initial-height":Z?"auto":`${Ms}px`,...M,...r.style},onDragEnd:()=>{R(!1),p(null),Pe.current=null},onPointerDown:k=>{k.button!==2&&(Qe||!Ce||(ut.current=new Date,ve(Ie.current),k.target.setPointerCapture(k.pointerId),k.target.tagName!=="BUTTON"&&(R(!0),Pe.current={x:k.clientX,y:k.clientY})))},onPointerUp:()=>{var k,G,q;if(z||!Ce)return;Pe.current=null;const oe=Number(((k=be.current)==null?void 0:k.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),$e=Number(((G=be.current)==null?void 0:G.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),H=new Date().getTime()-((q=ut.current)==null?void 0:q.getTime()),ne=D==="x"?oe:$e,Fe=Math.abs(ne)/H;if(Math.abs(ne)>=wr||Fe>.11){ve(Ie.current),r.onDismiss==null||r.onDismiss.call(r,r),Ne(D==="x"?oe>0?"right":"left":$e>0?"down":"up"),we(),Se(!0);return}else{var ce,de;(ce=be.current)==null||ce.style.setProperty("--swipe-amount-x","0px"),(de=be.current)==null||de.style.setProperty("--swipe-amount-y","0px")}le(!1),R(!1),p(null)},onPointerMove:k=>{var G,q,oe;if(!Pe.current||!Ce||((G=window.getSelection())==null?void 0:G.toString().length)>0)return;const H=k.clientY-Pe.current.y,ne=k.clientX-Pe.current.x;var Fe;const ce=(Fe=e.swipeDirections)!=null?Fe:jr(W);!D&&(Math.abs(ne)>1||Math.abs(H)>1)&&p(Math.abs(ne)>Math.abs(H)?"x":"y");let de={x:0,y:0};const yt=_e=>1/(1.5+Math.abs(_e)/20);if(D==="y"){if(ce.includes("top")||ce.includes("bottom"))if(ce.includes("top")&&H<0||ce.includes("bottom")&&H>0)de.y=H;else{const _e=H*yt(H);de.y=Math.abs(_e)<Math.abs(H)?_e:H}}else if(D==="x"&&(ce.includes("left")||ce.includes("right")))if(ce.includes("left")&&ne<0||ce.includes("right")&&ne>0)de.x=ne;else{const _e=ne*yt(ne);de.x=Math.abs(_e)<Math.abs(ne)?_e:ne}(Math.abs(de.x)>0||Math.abs(de.y)>0)&&le(!0),(q=be.current)==null||q.style.setProperty("--swipe-amount-x",`${de.x}px`),(oe=be.current)==null||oe.style.setProperty("--swipe-amount-y",`${de.y}px`)}},Gs&&!r.jsx&&se!=="loading"?u.createElement("button",{"aria-label":x,"data-disabled":Qe,"data-close-button":!0,onClick:Qe||!Ce?()=>{}:()=>{we(),r.onDismiss==null||r.onDismiss.call(r,r)},className:fe(w==null?void 0:w.closeButton,r==null||(a=r.classNames)==null?void 0:a.closeButton)},(bt=C==null?void 0:C.close)!=null?bt:lr):null,(se||r.icon||r.promise)&&r.icon!==null&&((C==null?void 0:C[se])!==null||r.icon)?u.createElement("div",{"data-icon":"",className:fe(w==null?void 0:w.icon,r==null||(i=r.classNames)==null?void 0:i.icon)},r.promise||r.type==="loading"&&!r.icon?r.icon||Ys():null,r.type!=="loading"?qs:null):null,u.createElement("div",{"data-content":"",className:fe(w==null?void 0:w.content,r==null||(l=r.classNames)==null?void 0:l.content)},u.createElement("div",{"data-title":"",className:fe(w==null?void 0:w.title,r==null||(n=r.classNames)==null?void 0:n.title)},r.jsx?r.jsx:typeof r.title=="function"?r.title():r.title),r.description?u.createElement("div",{"data-description":"",className:fe(K,Vs,w==null?void 0:w.description,r==null||(d=r.classNames)==null?void 0:d.description)},typeof r.description=="function"?r.description():r.description):null),u.isValidElement(r.cancel)?r.cancel:r.cancel&&We(r.cancel)?u.createElement("button",{"data-button":!0,"data-cancel":!0,style:r.cancelButtonStyle||f,onClick:k=>{We(r.cancel)&&Ce&&(r.cancel.onClick==null||r.cancel.onClick.call(r.cancel,k),we())},className:fe(w==null?void 0:w.cancelButton,r==null||(m=r.classNames)==null?void 0:m.cancelButton)},r.cancel.label):null,u.isValidElement(r.action)?r.action:r.action&&We(r.action)?u.createElement("button",{"data-button":!0,"data-action":!0,style:r.actionButtonStyle||B,onClick:k=>{We(r.action)&&(r.action.onClick==null||r.action.onClick.call(r.action,k),!k.defaultPrevented&&we())},className:fe(w==null?void 0:w.actionButton,r==null||(c=r.classNames)==null?void 0:c.actionButton)},r.action.label):null)};function Rt(){if(typeof window>"u"||typeof document>"u")return"ltr";const e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function Sr(e,t){const s={};return[e,t].forEach((a,i)=>{const l=i===1,n=l?"--mobile-offset":"--offset",d=l?yr:br;function m(c){["top","right","bottom","left"].forEach(y=>{s[`${n}-${y}`]=typeof c=="number"?`${c}px`:c})}typeof a=="number"||typeof a=="string"?m(a):typeof a=="object"?["top","right","bottom","left"].forEach(c=>{a[c]===void 0?s[`${n}-${c}`]=d:s[`${n}-${c}`]=typeof a[c]=="number"?`${a[c]}px`:a[c]}):m(d)}),s}const _r=u.forwardRef(function(t,s){const{id:a,invert:i,position:l="bottom-right",hotkey:n=["altKey","KeyT"],expand:d,closeButton:m,className:c,offset:y,mobileOffset:r,theme:j="light",richColors:T,duration:P,style:L,visibleToasts:O=gr,toastOptions:_,dir:$=Rt(),gap:Q=vr,icons:te,containerAriaLabel:re="Notifications"}=t,[F,M]=u.useState([]),f=u.useMemo(()=>a?F.filter(E=>E.toasterId===a):F.filter(E=>!E.toasterId),[F,a]),B=u.useMemo(()=>Array.from(new Set([l].concat(f.filter(E=>E.position).map(E=>E.position)))),[f,l]),[ue,K]=u.useState([]),[X,W]=u.useState(!1),[me,Z]=u.useState(!1),[w,C]=u.useState(j!=="system"?j:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),x=u.useRef(null),D=n.join("+").replace(/Key/g,"").replace(/Digit/g,""),p=u.useRef(null),Y=u.useRef(!1),Ne=u.useCallback(E=>{M(A=>{var S;return(S=A.find(I=>I.id===E.id))!=null&&S.delete||ee.dismiss(E.id),A.filter(({id:I})=>I!==E.id)})},[]);return u.useEffect(()=>ee.subscribe(E=>{if(E.dismiss){requestAnimationFrame(()=>{M(A=>A.map(S=>S.id===E.id?{...S,delete:!0}:S))});return}setTimeout(()=>{Xs.flushSync(()=>{M(A=>{const S=A.findIndex(I=>I.id===E.id);return S!==-1?[...A.slice(0,S),{...A[S],...E},...A.slice(S+1)]:[E,...A]})})})}),[F]),u.useEffect(()=>{if(j!=="system"){C(j);return}if(j==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?C("dark"):C("light")),typeof window>"u")return;const E=window.matchMedia("(prefers-color-scheme: dark)");try{E.addEventListener("change",({matches:A})=>{C(A?"dark":"light")})}catch{E.addListener(({matches:S})=>{try{C(S?"dark":"light")}catch(I){console.error(I)}})}},[j]),u.useEffect(()=>{F.length<=1&&W(!1)},[F]),u.useEffect(()=>{const E=A=>{var S;if(n.every(R=>A[R]||A.code===R)){var ie;W(!0),(ie=x.current)==null||ie.focus()}A.code==="Escape"&&(document.activeElement===x.current||(S=x.current)!=null&&S.contains(document.activeElement))&&W(!1)};return document.addEventListener("keydown",E),()=>document.removeEventListener("keydown",E)},[n]),u.useEffect(()=>{if(x.current)return()=>{p.current&&(p.current.focus({preventScroll:!0}),p.current=null,Y.current=!1)}},[x.current]),u.createElement("section",{ref:s,"aria-label":`${re} ${D}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},B.map((E,A)=>{var S;const[I,ie]=E.split("-");return f.length?u.createElement("ol",{key:E,dir:$==="auto"?Rt():$,tabIndex:-1,ref:x,className:c,"data-sonner-toaster":!0,"data-sonner-theme":w,"data-y-position":I,"data-x-position":ie,style:{"--front-toast-height":`${((S=ue[0])==null?void 0:S.height)||0}px`,"--width":`${xr}px`,"--gap":`${Q}px`,...L,...Sr(y,r)},onBlur:R=>{Y.current&&!R.currentTarget.contains(R.relatedTarget)&&(Y.current=!1,p.current&&(p.current.focus({preventScroll:!0}),p.current=null))},onFocus:R=>{R.target instanceof HTMLElement&&R.target.dataset.dismissible==="false"||Y.current||(Y.current=!0,p.current=R.relatedTarget)},onMouseEnter:()=>W(!0),onMouseMove:()=>W(!0),onMouseLeave:()=>{me||W(!1)},onDragEnd:()=>W(!1),onPointerDown:R=>{R.target instanceof HTMLElement&&R.target.dataset.dismissible==="false"||Z(!0)},onPointerUp:()=>Z(!1)},f.filter(R=>!R.position&&A===0||R.position===E).map((R,z)=>{var Se,ge;return u.createElement(Nr,{key:R.id,icons:te,index:z,toast:R,defaultRichColors:T,duration:(Se=_==null?void 0:_.duration)!=null?Se:P,className:_==null?void 0:_.className,descriptionClassName:_==null?void 0:_.descriptionClassName,invert:i,visibleToasts:O,closeButton:(ge=_==null?void 0:_.closeButton)!=null?ge:m,interacting:me,position:E,style:_==null?void 0:_.style,unstyled:_==null?void 0:_.unstyled,classNames:_==null?void 0:_.classNames,cancelButtonStyle:_==null?void 0:_.cancelButtonStyle,actionButtonStyle:_==null?void 0:_.actionButtonStyle,closeButtonAriaLabel:_==null?void 0:_.closeButtonAriaLabel,removeToast:Ne,toasts:f.filter(le=>le.position==R.position),heights:ue.filter(le=>le.position==R.position),setHeights:K,expandByDefault:d,gap:Q,expanded:X,swipeDirections:t.swipeDirections})})):null}))}),qe={success:e=>et.success(e),error:e=>et.error(e),warning:e=>et.warning(e)};function Er(){var C;const{user:e,loading:t,logout:s}=Ke(),{theme:a,toggle:i}=ds(),l=Bo("(max-width: 768px)"),n=Je(),d=Lt(),[m]=Dt(),c=d.pathname.startsWith("/compose")||/\/post\/\d+\/edit$/.test(d.pathname),[y,r]=b.useState(()=>Tt()),[j,T]=b.useState(()=>Ct()),[P,L]=b.useState(()=>Tt().length>0||!!Ct()),[O,_]=b.useState([]),[$,Q]=b.useState([]),[te,re]=b.useState(null),[F,M]=b.useState(Number(m.get("board"))||0),[f,B]=b.useState(m.get("keyword")||""),ue=Rs(m.get("sort")),{limits:K}=Za();b.useEffect(()=>{M(Number(m.get("board"))||0)},[m]),b.useEffect(()=>{B(m.get("keyword")||"")},[m]);const X=b.useCallback(()=>{Promise.all([he.boards().then(x=>{const D=x.boards??[];return r(D),Ma(D),D}).catch(()=>[]),he.stats().then(x=>(T(x),Ba(x),x)).catch(()=>null)]).finally(()=>L(!0))},[]),W=b.useCallback(()=>{he.online().then(x=>{re({count:x.count??0,members:x.members??0,guests:x.guests??0,users:Array.isArray(x.users)?x.users:[]})}).catch(()=>{})},[]);b.useEffect(()=>{X(),he.hotPosts().then(Y=>_(Array.isArray(Y.posts)?Y.posts:[])).catch(()=>{}),he.notifications().then(Y=>Q(Array.isArray(Y.notifications)?Y.notifications:[])).catch(()=>{}),W(),he.presence().catch(()=>{});const x=setInterval(W,3e4),D=setInterval(()=>he.presence().catch(()=>{}),6e4),p=()=>X();return window.addEventListener("boards-refresh",p),()=>{clearInterval(x),clearInterval(D),window.removeEventListener("boards-refresh",p)}},[X,W]);const me=()=>{const x=f.trim();if(!x){n("/");return}const D=[...x].length;if(K.search_keyword_min>0&&D<K.search_keyword_min){qe.warning(`搜索关键词至少 ${K.search_keyword_min} 个字`);return}if(K.search_keyword_max>0&&D>K.search_keyword_max){qe.warning(`搜索关键词最多 ${K.search_keyword_max} 个字`);return}n(`/?keyword=${encodeURIComponent(x)}`)},Z=((C=e==null?void 0:e.nickname)==null?void 0:C.charAt(0))||"?",w=Os(d.pathname)?-1:F;return o.jsx("div",{className:"app-shell",children:o.jsxs("div",{className:"app-frame",children:[o.jsx("header",{className:"app-header",children:o.jsxs("div",{className:"header-inner",children:[o.jsxs("button",{type:"button",className:"header-brand",onClick:()=>Me(n,"/"),children:[o.jsx("span",{className:"header-logo-mark",children:"姜"}),!l&&o.jsx("span",{className:"header-logo-text",children:"姜十三论坛"})]}),!c&&o.jsxs("div",{className:"header-search-wrap",children:[o.jsx(So,{className:"header-search-icon",size:16}),o.jsx("input",{className:"header-search-input",type:"search",placeholder:"搜索帖子...",value:f,onChange:x=>B(x.target.value),maxLength:K.search_keyword_max>0?K.search_keyword_max:void 0,onKeyDown:x=>x.key==="Enter"&&me()}),f&&o.jsx("button",{type:"button",className:"header-search-clear",onClick:()=>{B(""),n("/")},"aria-label":"清除搜索",children:"×"})]}),o.jsxs("div",{className:"header-actions",children:[!c&&o.jsxs("button",{type:"button",className:"header-compose-btn",onClick:()=>n(e?"/compose":"/login"),children:[o.jsx(_o,{size:16}),!l&&o.jsx("span",{children:"发帖"})]}),o.jsxs("div",{className:"header-action-group",children:[o.jsx("button",{type:"button",className:"header-icon-btn",onClick:i,title:a==="light"?"切换暗色模式":"切换亮色模式",children:a==="light"?o.jsx(Eo,{size:18}):o.jsx(To,{size:18})}),t?o.jsx("span",{className:"header-auth-slot header-auth-slot--loading","aria-hidden":!0}):e?o.jsxs(Pa,{children:[o.jsx(Ra,{asChild:!0,children:o.jsx("button",{type:"button",className:"header-user-btn",title:e.nickname,children:e.avatar?o.jsx("img",{src:e.avatar,alt:"",className:"header-user-avatar"}):o.jsx("span",{className:"header-user-initial",children:Z})})}),o.jsxs(Es,{align:"end",className:"w-40",onCloseAutoFocus:x=>x.preventDefault(),children:[o.jsx(De,{onClick:()=>n("/profile"),children:"个人中心"}),o.jsx(De,{onClick:()=>n("/favorites"),children:"我的收藏"}),e.role==="admin"&&o.jsxs(o.Fragment,{children:[o.jsx(st,{}),o.jsx(De,{onClick:()=>n("/admin/dashboard"),children:"管理后台"})]}),o.jsx(st,{}),o.jsx(De,{onClick:()=>s().then(()=>n("/login")),children:"退出登录"})]})]}):o.jsx("button",{type:"button",className:"header-login-btn",onClick:()=>n("/login"),children:"登录"})]})]})]})}),o.jsxs("div",{className:`app-body${c?" app-body--compose":""}`,children:[!c&&o.jsx(Ja,{boards:y,activeBoard:F,onSelectBoard:M}),o.jsxs("div",{className:`content-workspace${c?" content-workspace--compose":""}`,children:[o.jsxs("main",{className:`main-content${c?" main-content--compose":""}`,children:[l&&!c&&o.jsxs("div",{className:"mobile-board-bar",children:[o.jsx("span",{className:`board-chip ${w===0?"active":""}`,onClick:()=>{M(0),Me(n,Ye(0,ue))},children:"全部"}),y.map(x=>{const D=ct(x),p=w===x.id;return o.jsx("span",{className:J("board-chip",p&&"active",p&&`board-chip--${D}`),onClick:()=>{M(x.id),Me(n,Ye(x.id,ue))},children:x.name},x.id)})]}),o.jsx(b.Suspense,{fallback:o.jsx(xe,{}),children:o.jsx(Mt,{context:{boardId:F,keyword:m.get("keyword")||"",setBoardId:M,boards:y,stats:j,layoutReady:P,refreshBoards:X,isMobile:l}})})]}),!c&&o.jsx("aside",{className:"aside-panel",children:o.jsx(Xa,{hot:O,notifications:$,online:te,onPostClick:x=>n(`/post/${x}`)})})]})]})]})})}const Tr={sm:"h-4 w-4",md:"h-5 w-5",lg:"h-8 w-8"};function Cr({className:e,size:t="md"}){return o.jsx(as,{className:J("animate-spin text-[var(--j13-green)]",Tr[t],e),"aria-label":"加载中"})}const Ir=[{to:"/admin/dashboard",label:"仪表盘",icon:os},{to:"/admin/boards",label:"板块管理",icon:Io},{to:"/admin/posts",label:"帖子管理",icon:Po},{to:"/admin/comments",label:"评论管理",icon:rt},{to:"/admin/users",label:"用户管理",icon:nt},{to:"/admin/settings",label:"系统设置",icon:Ro}];function Pr(){const{user:e,loading:t}=Ke(),s=Je();return b.useEffect(()=>{if(!t){if(!e){s("/login");return}e.role!=="admin"&&(qe.warning("需要管理员权限"),s("/"))}},[e,t,s]),t?o.jsx("div",{className:"flex justify-center py-24",children:o.jsx(Cr,{size:"lg"})}):!e||e.role!=="admin"?null:o.jsxs("div",{className:"admin-shell",children:[o.jsxs("header",{className:"admin-topbar",children:[o.jsxs("div",{className:"admin-topbar-brand",children:[o.jsx("div",{className:"admin-topbar-mark",children:"姜"}),o.jsxs("div",{children:[o.jsx("div",{className:"admin-topbar-title",children:"姜十三论坛"}),o.jsx("div",{className:"admin-topbar-sub",children:"管理后台"})]})]}),o.jsxs("div",{className:"admin-topbar-actions",children:[o.jsxs("button",{type:"button",className:"admin-link-btn",onClick:()=>s("/"),children:[o.jsx(Co,{size:16}),"返回论坛"]}),o.jsx("span",{className:"admin-topbar-user",children:e.nickname})]})]}),o.jsxs("div",{className:"admin-body",children:[o.jsx("aside",{className:"admin-sidebar",children:Ir.map(({to:a,label:i,icon:l})=>o.jsxs(Qs,{to:a,className:({isActive:n})=>J("admin-nav-item",n&&"active"),children:[o.jsx(l,{size:16}),i]},a))}),o.jsx("main",{className:"admin-main",children:o.jsx(Mt,{})})]})]})}function an(){const{user:e,loading:t}=Ke(),s=Je();return b.useEffect(()=>{t||(e?e.role!=="admin"&&(qe.warning("需要管理员权限"),s("/")):s("/login"))},[e,t,s]),{user:e,loading:t,ready:!t&&!!e&&e.role==="admin"}}const At=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,zt=ms,Rr=(e,t)=>s=>{var a;if((t==null?void 0:t.variants)==null)return zt(e,s==null?void 0:s.class,s==null?void 0:s.className);const{variants:i,defaultVariants:l}=t,n=Object.keys(i).map(c=>{const y=s==null?void 0:s[c],r=l==null?void 0:l[c];if(y===null)return null;const j=At(y)||At(r);return i[c][j]}),d=s&&Object.entries(s).reduce((c,y)=>{let[r,j]=y;return j===void 0||(c[r]=j),c},{}),m=t==null||(a=t.compoundVariants)===null||a===void 0?void 0:a.reduce((c,y)=>{let{class:r,className:j,...T}=y;return Object.entries(T).every(P=>{let[L,O]=P;return Array.isArray(O)?O.includes({...l,...d}[L]):{...l,...d}[L]===O})?[...c,r,j]:c},[]);return zt(e,n,m,s==null?void 0:s.class,s==null?void 0:s.className)},Ar=Rr("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),Ds=b.forwardRef(({className:e,variant:t,size:s,asChild:a=!1,loading:i,children:l,disabled:n,...d},m)=>{const c=a?Ao:"button";return o.jsxs(c,{className:J(Ar({variant:t,size:s,className:e})),ref:m,disabled:n||i,...d,children:[i?o.jsx(as,{className:"animate-spin"}):null,l]})});Ds.displayName="Button";class zr extends b.Component{constructor(){super(...arguments);xt(this,"state",{error:null})}static getDerivedStateFromError(s){return{error:s}}componentDidCatch(s,a){console.error("[Jiang13Forum]",s,a.componentStack)}render(){return this.state.error?o.jsxs("div",{style:{padding:24,textAlign:"center"},children:[o.jsx("h3",{children:"页面渲染出错"}),o.jsx("p",{style:{color:"var(--color-text-3)",fontSize:13},children:this.state.error.message}),o.jsx(Ds,{size:"sm",onClick:()=>{this.setState({error:null}),window.location.reload()},children:"刷新页面"})]}):this.props.children}}function Or(){const{theme:e}=ds();return o.jsx(_r,{theme:e,position:"top-center",richColors:!0,closeButton:!0,toastOptions:{classNames:{toast:"font-sans"}}})}const Lr=b.lazy(()=>ae(()=>import("./HomePage-B75SKkZF.js"),__vite__mapDeps([0,1,2,3,4,5]))),Dr=b.lazy(()=>ae(()=>import("./PostDetailPage-Ca0chGU-.js"),__vite__mapDeps([6,1,3,4,7,5,8,9]))),Mr=b.lazy(()=>ae(()=>import("./LoginPage-jlZcJP-F.js"),__vite__mapDeps([10,1,11,4,12]))),Br=b.lazy(()=>ae(()=>import("./RegisterPage-g5r_djmM.js"),__vite__mapDeps([13,1,11,4,12]))),Ot=b.lazy(()=>ae(()=>import("./ComposePage-eRDSuLA7.js"),__vite__mapDeps([14,1,8,9,4,15,12,16]))),$r=b.lazy(()=>ae(()=>import("./BoardsManagePage-DxLu9n3N.js"),__vite__mapDeps([17,1,11,4,12,18,7,15,16]))),Fr=b.lazy(()=>ae(()=>import("./ProfilePage-BxbMpG9W.js"),__vite__mapDeps([19,1,11,4,12,7,15]))),Vr=b.lazy(()=>ae(()=>import("./FavoritesPage-rLr3pZbU.js"),__vite__mapDeps([20,1,5,4]))),Gr=b.lazy(()=>ae(()=>import("./AdminDashboardPage-C2c-F2-X.js"),__vite__mapDeps([21,1,7,4]))),Ur=b.lazy(()=>ae(()=>import("./AdminPostsPage-Boh0BdYW.js"),__vite__mapDeps([22,1,12,7,16,4,5]))),Wr=b.lazy(()=>ae(()=>import("./AdminCommentsPage-B23tMV_-.js"),__vite__mapDeps([23,1,7,16,4]))),Hr=b.lazy(()=>ae(()=>import("./AdminUsersPage-GP-G5C8H.js"),__vite__mapDeps([24,1,7,4]))),Yr=b.lazy(()=>ae(()=>import("./AdminSettingsPage-BKTiLKhD.js"),__vite__mapDeps([25,1,12,18,4]))),qr=Zs(eo(o.jsxs(o.Fragment,{children:[o.jsx(U,{path:"/login",element:o.jsx(b.Suspense,{fallback:o.jsx(xe,{}),children:o.jsx(Mr,{})})}),o.jsx(U,{path:"/register",element:o.jsx(b.Suspense,{fallback:o.jsx(xe,{}),children:o.jsx(Br,{})})}),o.jsx(U,{path:"/boards",element:o.jsx(vt,{to:"/admin/boards",replace:!0})}),o.jsxs(U,{path:"/admin",element:o.jsx(Pr,{}),children:[o.jsx(U,{index:!0,element:o.jsx(vt,{to:"/admin/dashboard",replace:!0})}),o.jsx(U,{path:"dashboard",element:o.jsx(b.Suspense,{fallback:o.jsx(xe,{}),children:o.jsx(Gr,{})})}),o.jsx(U,{path:"boards",element:o.jsx(b.Suspense,{fallback:o.jsx(xe,{}),children:o.jsx($r,{})})}),o.jsx(U,{path:"posts",element:o.jsx(b.Suspense,{fallback:o.jsx(xe,{}),children:o.jsx(Ur,{})})}),o.jsx(U,{path:"comments",element:o.jsx(b.Suspense,{fallback:o.jsx(xe,{}),children:o.jsx(Wr,{})})}),o.jsx(U,{path:"users",element:o.jsx(b.Suspense,{fallback:o.jsx(xe,{}),children:o.jsx(Hr,{})})}),o.jsx(U,{path:"settings",element:o.jsx(b.Suspense,{fallback:o.jsx(xe,{}),children:o.jsx(Yr,{})})})]}),o.jsxs(U,{element:o.jsx(Er,{}),children:[o.jsx(U,{path:"/",element:o.jsx(Lr,{})}),o.jsx(U,{path:"/post/:id",element:o.jsx(Dr,{})}),o.jsx(U,{path:"/post/:id/edit",element:o.jsx(Ot,{})}),o.jsx(U,{path:"/compose",element:o.jsx(Ot,{})}),o.jsx(U,{path:"/profile",element:o.jsx(Fr,{})}),o.jsx(U,{path:"/favorites",element:o.jsx(Vr,{})})]})]})));function Jr(){return o.jsx(Mo,{children:o.jsx(Do,{children:o.jsxs(zr,{children:[o.jsx(to,{router:qr}),o.jsx(Or,{})]})})})}is(ns());so.createRoot(document.getElementById("root")).render(o.jsx(u.StrictMode,{children:o.jsx(Jr,{})}));export{Ds as B,Va as F,Cr as S,Fa as a,he as b,J as c,en as d,Me as e,Ye as f,tn as g,Ke as h,ct as i,Wa as j,Ga as k,Ue as l,an as m,qe as n,Ha as o,Rs as p,Rr as q,Ar as r,sn as s,on as t,Za as u};
|