From 3230d29fbe3951091a38d423ce0210d6e81621c9 Mon Sep 17 00:00:00 2001 From: Jack Kingsman Date: Mon, 12 Jan 2026 23:59:36 -0800 Subject: [PATCH] Add new message sending scroll-to-bottom when near --- .../assets/{index-CvVcf00q.js => index-DVwayj9K.js} | 2 +- frontend/dist/index.html | 2 +- frontend/src/components/MessageList.tsx | 12 ++++++++---- 3 files changed, 10 insertions(+), 6 deletions(-) rename frontend/dist/assets/{index-CvVcf00q.js => index-DVwayj9K.js} (99%) diff --git a/frontend/dist/assets/index-CvVcf00q.js b/frontend/dist/assets/index-DVwayj9K.js similarity index 99% rename from frontend/dist/assets/index-CvVcf00q.js rename to frontend/dist/assets/index-DVwayj9K.js index 67fc96b..81046ab 100644 --- a/frontend/dist/assets/index-CvVcf00q.js +++ b/frontend/dist/assets/index-DVwayj9K.js @@ -77,7 +77,7 @@ No ACL entries`;const o=[`ACL (${a.length})`];for(const r of a){const s=r.name|| * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Ek=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Yg=Nu("x",Ek);var Zg=Wg();const Xg=Fr(Zg);function Sk(a){if(typeof document>"u")return;let o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",o.appendChild(r),r.styleSheet?r.styleSheet.cssText=a:r.appendChild(document.createTextNode(a))}const Bk=a=>{switch(a){case"success":return Fk;case"info":return Tk;case"warning":return Rk;case"error":return Pk;default:return null}},_k=Array(12).fill(0),Dk=({visible:a,className:o})=>de.createElement("div",{className:["sonner-loading-wrapper",o].filter(Boolean).join(" "),"data-visible":a},de.createElement("div",{className:"sonner-spinner"},_k.map((r,s)=>de.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${s}`})))),Fk=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},de.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"})),Rk=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},de.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"})),Tk=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},de.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"})),Pk=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},de.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"})),Nk=de.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"},de.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),de.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),Ik=()=>{const[a,o]=de.useState(document.hidden);return de.useEffect(()=>{const r=()=>{o(document.hidden)};return document.addEventListener("visibilitychange",r),()=>window.removeEventListener("visibilitychange",r)},[]),a};let zu=1;class Mk{constructor(){this.subscribe=o=>(this.subscribers.push(o),()=>{const r=this.subscribers.indexOf(o);this.subscribers.splice(r,1)}),this.publish=o=>{this.subscribers.forEach(r=>r(o))},this.addToast=o=>{this.publish(o),this.toasts=[...this.toasts,o]},this.create=o=>{var r;const{message:s,...u}=o,l=typeof(o==null?void 0:o.id)=="number"||((r=o.id)==null?void 0:r.length)>0?o.id:zu++,m=this.toasts.find(h=>h.id===l),c=o.dismissible===void 0?!0:o.dismissible;return this.dismissedToasts.has(l)&&this.dismissedToasts.delete(l),m?this.toasts=this.toasts.map(h=>h.id===l?(this.publish({...h,...o,id:l,title:s}),{...h,...o,id:l,dismissible:c,title:s}):h):this.addToast({title:s,...u,dismissible:c,id:l}),l},this.dismiss=o=>(o?(this.dismissedToasts.add(o),requestAnimationFrame(()=>this.subscribers.forEach(r=>r({id:o,dismiss:!0})))):this.toasts.forEach(r=>{this.subscribers.forEach(s=>s({id:r.id,dismiss:!0}))}),o),this.message=(o,r)=>this.create({...r,message:o}),this.error=(o,r)=>this.create({...r,message:o,type:"error"}),this.success=(o,r)=>this.create({...r,type:"success",message:o}),this.info=(o,r)=>this.create({...r,type:"info",message:o}),this.warning=(o,r)=>this.create({...r,type:"warning",message:o}),this.loading=(o,r)=>this.create({...r,type:"loading",message:o}),this.promise=(o,r)=>{if(!r)return;let s;r.loading!==void 0&&(s=this.create({...r,promise:o,type:"loading",message:r.loading,description:typeof r.description!="function"?r.description:void 0}));const u=Promise.resolve(o instanceof Function?o():o);let l=s!==void 0,m;const c=u.then(async d=>{if(m=["resolve",d],de.isValidElement(d))l=!1,this.create({id:s,type:"default",message:d});else if(Lk(d)&&!d.ok){l=!1;const y=typeof r.error=="function"?await r.error(`HTTP error! status: ${d.status}`):r.error,f=typeof r.description=="function"?await r.description(`HTTP error! status: ${d.status}`):r.description,w=typeof y=="object"&&!de.isValidElement(y)?y:{message:y};this.create({id:s,type:"error",description:f,...w})}else if(d instanceof Error){l=!1;const y=typeof r.error=="function"?await r.error(d):r.error,f=typeof r.description=="function"?await r.description(d):r.description,w=typeof y=="object"&&!de.isValidElement(y)?y:{message:y};this.create({id:s,type:"error",description:f,...w})}else if(r.success!==void 0){l=!1;const y=typeof r.success=="function"?await r.success(d):r.success,f=typeof r.description=="function"?await r.description(d):r.description,w=typeof y=="object"&&!de.isValidElement(y)?y:{message:y};this.create({id:s,type:"success",description:f,...w})}}).catch(async d=>{if(m=["reject",d],r.error!==void 0){l=!1;const g=typeof r.error=="function"?await r.error(d):r.error,y=typeof r.description=="function"?await r.description(d):r.description,z=typeof g=="object"&&!de.isValidElement(g)?g:{message:g};this.create({id:s,type:"error",description:y,...z})}}).finally(()=>{l&&(this.dismiss(s),s=void 0),r.finally==null||r.finally.call(r)}),h=()=>new Promise((d,g)=>c.then(()=>m[0]==="reject"?g(m[1]):d(m[1])).catch(g));return typeof s!="string"&&typeof s!="number"?{unwrap:h}:Object.assign(s,{unwrap:h})},this.custom=(o,r)=>{const s=(r==null?void 0:r.id)||zu++;return this.create({jsx:o(s),id:s,...r}),s},this.getActiveToasts=()=>this.toasts.filter(o=>!this.dismissedToasts.has(o.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const na=new Mk,Ok=(a,o)=>{const r=(o==null?void 0:o.id)||zu++;return na.addToast({title:a,...o,id:r}),r},Lk=a=>a&&typeof a=="object"&&"ok"in a&&typeof a.ok=="boolean"&&"status"in a&&typeof a.status=="number",Hk=Ok,Vk=()=>na.toasts,Uk=()=>na.getActiveToasts(),Po=Object.assign(Hk,{success:na.success,info:na.info,warning:na.warning,error:na.error,custom:na.custom,message:na.message,promise:na.promise,dismiss:na.dismiss,loading:na.loading},{getHistory:Vk,getToasts:Uk});Sk("[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 Xs(a){return a.label!==void 0}const Wk=3,$k="24px",Gk="16px",Ym=4e3,Qk=356,Kk=14,Yk=45,Zk=200;function Na(...a){return a.filter(Boolean).join(" ")}function Xk(a){const[o,r]=a.split("-"),s=[];return o&&s.push(o),r&&s.push(r),s}const Jk=a=>{var o,r,s,u,l,m,c,h,d;const{invert:g,toast:y,unstyled:f,interacting:z,setHeights:w,visibleToasts:k,heights:v,index:j,toasts:q,expanded:x,removeToast:_,defaultRichColors:C,closeButton:D,style:R,cancelButtonStyle:F,actionButtonStyle:M,className:P="",descriptionClassName:T="",duration:U,position:H,gap:K,expandByDefault:ie,classNames:Z,icons:ae,closeButtonAriaLabel:W="Close toast"}=a,[ne,J]=de.useState(null),[A,I]=de.useState(null),[L,$]=de.useState(!1),[le,pe]=de.useState(!1),[me,re]=de.useState(!1),[Ae,Me]=de.useState(!1),[mi,he]=de.useState(!1),[Ce,Be]=de.useState(0),[ci,ui]=de.useState(0),Ye=de.useRef(y.duration||U||Ym),Ue=de.useRef(null),Te=de.useRef(null),ii=j===0,Re=j+1<=k,Ne=y.type,ni=y.dismissible!==!1,Qi=y.className||"",va=y.descriptionClassName||"",ji=de.useMemo(()=>v.findIndex(qe=>qe.toastId===y.id)||0,[v,y.id]),Mi=de.useMemo(()=>{var qe;return(qe=y.closeButton)!=null?qe:D},[y.closeButton,D]),Ki=de.useMemo(()=>y.duration||U||Ym,[y.duration,U]),ra=de.useRef(0),qi=de.useRef(0),di=de.useRef(0),ee=de.useRef(null),[ye,_e]=H.split("-"),X=de.useMemo(()=>v.reduce((qe,Xe,si)=>si>=ji?qe:qe+Xe.height,0),[v,ji]),oe=Ik(),ze=y.invert||g,Ve=Ne==="loading";qi.current=de.useMemo(()=>ji*K+X,[ji,X]),de.useEffect(()=>{Ye.current=Ki},[Ki]),de.useEffect(()=>{$(!0)},[]),de.useEffect(()=>{const qe=Te.current;if(qe){const Xe=qe.getBoundingClientRect().height;return ui(Xe),w(si=>[{toastId:y.id,height:Xe,position:y.position},...si]),()=>w(si=>si.filter(yi=>yi.toastId!==y.id))}},[w,y.id]),de.useLayoutEffect(()=>{if(!L)return;const qe=Te.current,Xe=qe.style.height;qe.style.height="auto";const si=qe.getBoundingClientRect().height;qe.style.height=Xe,ui(si),w(yi=>yi.find(Le=>Le.toastId===y.id)?yi.map(Le=>Le.toastId===y.id?{...Le,height:si}:Le):[{toastId:y.id,height:si,position:y.position},...yi])},[L,y.title,y.description,w,y.id,y.jsx,y.action,y.cancel]);const Fe=de.useCallback(()=>{pe(!0),Be(qi.current),w(qe=>qe.filter(Xe=>Xe.toastId!==y.id)),setTimeout(()=>{_(y)},Zk)},[y,_,w,qi]);de.useEffect(()=>{if(y.promise&&Ne==="loading"||y.duration===1/0||y.type==="loading")return;let qe;return x||z||oe?(()=>{if(di.current{Ye.current!==1/0&&(ra.current=new Date().getTime(),qe=setTimeout(()=>{y.onAutoClose==null||y.onAutoClose.call(y,y),Fe()},Ye.current))})(),()=>clearTimeout(qe)},[x,z,y,Ne,oe,Fe]),de.useEffect(()=>{y.delete&&(Fe(),y.onDismiss==null||y.onDismiss.call(y,y))},[Fe,y.delete]);function Ze(){var qe;if(ae!=null&&ae.loading){var Xe;return de.createElement("div",{className:Na(Z==null?void 0:Z.loader,y==null||(Xe=y.classNames)==null?void 0:Xe.loader,"sonner-loader"),"data-visible":Ne==="loading"},ae.loading)}return de.createElement(Dk,{className:Na(Z==null?void 0:Z.loader,y==null||(qe=y.classNames)==null?void 0:qe.loader),visible:Ne==="loading"})}const Oe=y.icon||(ae==null?void 0:ae[Ne])||Bk(Ne);var Ge,Wi;return de.createElement("li",{tabIndex:0,ref:Te,className:Na(P,Qi,Z==null?void 0:Z.toast,y==null||(o=y.classNames)==null?void 0:o.toast,Z==null?void 0:Z.default,Z==null?void 0:Z[Ne],y==null||(r=y.classNames)==null?void 0:r[Ne]),"data-sonner-toast":"","data-rich-colors":(Ge=y.richColors)!=null?Ge:C,"data-styled":!(y.jsx||y.unstyled||f),"data-mounted":L,"data-promise":!!y.promise,"data-swiped":mi,"data-removed":le,"data-visible":Re,"data-y-position":ye,"data-x-position":_e,"data-index":j,"data-front":ii,"data-swiping":me,"data-dismissible":ni,"data-type":Ne,"data-invert":ze,"data-swipe-out":Ae,"data-swipe-direction":A,"data-expanded":!!(x||ie&&L),"data-testid":y.testId,style:{"--index":j,"--toasts-before":j,"--z-index":q.length-j,"--offset":`${le?Ce:qi.current}px`,"--initial-height":ie?"auto":`${ci}px`,...R,...y.style},onDragEnd:()=>{re(!1),J(null),ee.current=null},onPointerDown:qe=>{qe.button!==2&&(Ve||!ni||(Ue.current=new Date,Be(qi.current),qe.target.setPointerCapture(qe.pointerId),qe.target.tagName!=="BUTTON"&&(re(!0),ee.current={x:qe.clientX,y:qe.clientY})))},onPointerUp:()=>{var qe,Xe,si;if(Ae||!ni)return;ee.current=null;const yi=Number(((qe=Te.current)==null?void 0:qe.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),da=Number(((Xe=Te.current)==null?void 0:Xe.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Le=new Date().getTime()-((si=Ue.current)==null?void 0:si.getTime()),ri=ne==="x"?yi:da,ka=Math.abs(ri)/Le;if(Math.abs(ri)>=Yk||ka>.11){Be(qi.current),y.onDismiss==null||y.onDismiss.call(y,y),I(ne==="x"?yi>0?"right":"left":da>0?"down":"up"),Fe(),Me(!0);return}else{var Je,bi;(Je=Te.current)==null||Je.style.setProperty("--swipe-amount-x","0px"),(bi=Te.current)==null||bi.style.setProperty("--swipe-amount-y","0px")}he(!1),re(!1),J(null)},onPointerMove:qe=>{var Xe,si,yi;if(!ee.current||!ni||((Xe=window.getSelection())==null?void 0:Xe.toString().length)>0)return;const Le=qe.clientY-ee.current.y,ri=qe.clientX-ee.current.x;var ka;const Je=(ka=a.swipeDirections)!=null?ka:Xk(H);!ne&&(Math.abs(ri)>1||Math.abs(Le)>1)&&J(Math.abs(ri)>Math.abs(Le)?"x":"y");let bi={x:0,y:0};const wa=Yi=>1/(1.5+Math.abs(Yi)/20);if(ne==="y"){if(Je.includes("top")||Je.includes("bottom"))if(Je.includes("top")&&Le<0||Je.includes("bottom")&&Le>0)bi.y=Le;else{const Yi=Le*wa(Le);bi.y=Math.abs(Yi)0)bi.x=ri;else{const Yi=ri*wa(ri);bi.x=Math.abs(Yi)0||Math.abs(bi.y)>0)&&he(!0),(si=Te.current)==null||si.style.setProperty("--swipe-amount-x",`${bi.x}px`),(yi=Te.current)==null||yi.style.setProperty("--swipe-amount-y",`${bi.y}px`)}},Mi&&!y.jsx&&Ne!=="loading"?de.createElement("button",{"aria-label":W,"data-disabled":Ve,"data-close-button":!0,onClick:Ve||!ni?()=>{}:()=>{Fe(),y.onDismiss==null||y.onDismiss.call(y,y)},className:Na(Z==null?void 0:Z.closeButton,y==null||(s=y.classNames)==null?void 0:s.closeButton)},(Wi=ae==null?void 0:ae.close)!=null?Wi:Nk):null,(Ne||y.icon||y.promise)&&y.icon!==null&&((ae==null?void 0:ae[Ne])!==null||y.icon)?de.createElement("div",{"data-icon":"",className:Na(Z==null?void 0:Z.icon,y==null||(u=y.classNames)==null?void 0:u.icon)},y.promise||y.type==="loading"&&!y.icon?y.icon||Ze():null,y.type!=="loading"?Oe:null):null,de.createElement("div",{"data-content":"",className:Na(Z==null?void 0:Z.content,y==null||(l=y.classNames)==null?void 0:l.content)},de.createElement("div",{"data-title":"",className:Na(Z==null?void 0:Z.title,y==null||(m=y.classNames)==null?void 0:m.title)},y.jsx?y.jsx:typeof y.title=="function"?y.title():y.title),y.description?de.createElement("div",{"data-description":"",className:Na(T,va,Z==null?void 0:Z.description,y==null||(c=y.classNames)==null?void 0:c.description)},typeof y.description=="function"?y.description():y.description):null),de.isValidElement(y.cancel)?y.cancel:y.cancel&&Xs(y.cancel)?de.createElement("button",{"data-button":!0,"data-cancel":!0,style:y.cancelButtonStyle||F,onClick:qe=>{Xs(y.cancel)&&ni&&(y.cancel.onClick==null||y.cancel.onClick.call(y.cancel,qe),Fe())},className:Na(Z==null?void 0:Z.cancelButton,y==null||(h=y.classNames)==null?void 0:h.cancelButton)},y.cancel.label):null,de.isValidElement(y.action)?y.action:y.action&&Xs(y.action)?de.createElement("button",{"data-button":!0,"data-action":!0,style:y.actionButtonStyle||M,onClick:qe=>{Xs(y.action)&&(y.action.onClick==null||y.action.onClick.call(y.action,qe),!qe.defaultPrevented&&Fe())},className:Na(Z==null?void 0:Z.actionButton,y==null||(d=y.classNames)==null?void 0:d.actionButton)},y.action.label):null)};function Zm(){if(typeof window>"u"||typeof document>"u")return"ltr";const a=document.documentElement.getAttribute("dir");return a==="auto"||!a?window.getComputedStyle(document.documentElement).direction:a}function ew(a,o){const r={};return[a,o].forEach((s,u)=>{const l=u===1,m=l?"--mobile-offset":"--offset",c=l?Gk:$k;function h(d){["top","right","bottom","left"].forEach(g=>{r[`${m}-${g}`]=typeof d=="number"?`${d}px`:d})}typeof s=="number"||typeof s=="string"?h(s):typeof s=="object"?["top","right","bottom","left"].forEach(d=>{s[d]===void 0?r[`${m}-${d}`]=c:r[`${m}-${d}`]=typeof s[d]=="number"?`${s[d]}px`:s[d]}):h(c)}),r}const iw=de.forwardRef(function(o,r){const{id:s,invert:u,position:l="bottom-right",hotkey:m=["altKey","KeyT"],expand:c,closeButton:h,className:d,offset:g,mobileOffset:y,theme:f="light",richColors:z,duration:w,style:k,visibleToasts:v=Wk,toastOptions:j,dir:q=Zm(),gap:x=Kk,icons:_,containerAriaLabel:C="Notifications"}=o,[D,R]=de.useState([]),F=de.useMemo(()=>s?D.filter(L=>L.toasterId===s):D.filter(L=>!L.toasterId),[D,s]),M=de.useMemo(()=>Array.from(new Set([l].concat(F.filter(L=>L.position).map(L=>L.position)))),[F,l]),[P,T]=de.useState([]),[U,H]=de.useState(!1),[K,ie]=de.useState(!1),[Z,ae]=de.useState(f!=="system"?f:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),W=de.useRef(null),ne=m.join("+").replace(/Key/g,"").replace(/Digit/g,""),J=de.useRef(null),A=de.useRef(!1),I=de.useCallback(L=>{R($=>{var le;return(le=$.find(pe=>pe.id===L.id))!=null&&le.delete||na.dismiss(L.id),$.filter(({id:pe})=>pe!==L.id)})},[]);return de.useEffect(()=>na.subscribe(L=>{if(L.dismiss){requestAnimationFrame(()=>{R($=>$.map(le=>le.id===L.id?{...le,delete:!0}:le))});return}setTimeout(()=>{Xg.flushSync(()=>{R($=>{const le=$.findIndex(pe=>pe.id===L.id);return le!==-1?[...$.slice(0,le),{...$[le],...L},...$.slice(le+1)]:[L,...$]})})})}),[D]),de.useEffect(()=>{if(f!=="system"){ae(f);return}if(f==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?ae("dark"):ae("light")),typeof window>"u")return;const L=window.matchMedia("(prefers-color-scheme: dark)");try{L.addEventListener("change",({matches:$})=>{ae($?"dark":"light")})}catch{L.addListener(({matches:le})=>{try{ae(le?"dark":"light")}catch(pe){console.error(pe)}})}},[f]),de.useEffect(()=>{D.length<=1&&H(!1)},[D]),de.useEffect(()=>{const L=$=>{var le;if(m.every(re=>$[re]||$.code===re)){var me;H(!0),(me=W.current)==null||me.focus()}$.code==="Escape"&&(document.activeElement===W.current||(le=W.current)!=null&&le.contains(document.activeElement))&&H(!1)};return document.addEventListener("keydown",L),()=>document.removeEventListener("keydown",L)},[m]),de.useEffect(()=>{if(W.current)return()=>{J.current&&(J.current.focus({preventScroll:!0}),J.current=null,A.current=!1)}},[W.current]),de.createElement("section",{ref:r,"aria-label":`${C} ${ne}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},M.map((L,$)=>{var le;const[pe,me]=L.split("-");return F.length?de.createElement("ol",{key:L,dir:q==="auto"?Zm():q,tabIndex:-1,ref:W,className:d,"data-sonner-toaster":!0,"data-sonner-theme":Z,"data-y-position":pe,"data-x-position":me,style:{"--front-toast-height":`${((le=P[0])==null?void 0:le.height)||0}px`,"--width":`${Qk}px`,"--gap":`${x}px`,...k,...ew(g,y)},onBlur:re=>{A.current&&!re.currentTarget.contains(re.relatedTarget)&&(A.current=!1,J.current&&(J.current.focus({preventScroll:!0}),J.current=null))},onFocus:re=>{re.target instanceof HTMLElement&&re.target.dataset.dismissible==="false"||A.current||(A.current=!0,J.current=re.relatedTarget)},onMouseEnter:()=>H(!0),onMouseMove:()=>H(!0),onMouseLeave:()=>{K||H(!1)},onDragEnd:()=>H(!1),onPointerDown:re=>{re.target instanceof HTMLElement&&re.target.dataset.dismissible==="false"||ie(!0)},onPointerUp:()=>ie(!1)},F.filter(re=>!re.position&&$===0||re.position===L).map((re,Ae)=>{var Me,mi;return de.createElement(Jk,{key:re.id,icons:_,index:Ae,toast:re,defaultRichColors:z,duration:(Me=j==null?void 0:j.duration)!=null?Me:w,className:j==null?void 0:j.className,descriptionClassName:j==null?void 0:j.descriptionClassName,invert:u,visibleToasts:v,closeButton:(mi=j==null?void 0:j.closeButton)!=null?mi:h,interacting:K,position:L,style:j==null?void 0:j.style,unstyled:j==null?void 0:j.unstyled,classNames:j==null?void 0:j.classNames,cancelButtonStyle:j==null?void 0:j.cancelButtonStyle,actionButtonStyle:j==null?void 0:j.actionButtonStyle,closeButtonAriaLabel:j==null?void 0:j.closeButtonAriaLabel,removeToast:I,toasts:F.filter(he=>he.position==re.position),heights:P.filter(he=>he.position==re.position),setHeights:T,expandByDefault:c,gap:x,expanded:U,swipeDirections:o.swipeDirections})})):null}))}),aw=({...a})=>B.jsx(iw,{theme:"dark",className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-card group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",error:"group-[.toaster]:bg-[#2a1a1a] group-[.toaster]:text-[#e8a0a0] group-[.toaster]:border-[#4a2a2a] [&_[data-description]]:text-[#b08080]"}},...a});function nw({health:a,config:o,onConfigClick:r,onAdvertise:s,onMenuClick:u}){const l=(a==null?void 0:a.radio_connected)??!1,[m,c]=E.useState(!1),h=async()=>{c(!0);try{const d=await We.reconnectRadio();d.connected&&Po.success("Reconnected",{description:d.message})}catch(d){Po.error("Reconnection failed",{description:d instanceof Error?d.message:"Check radio connection and power"})}finally{c(!1)}};return B.jsxs("div",{className:"flex items-center gap-4 px-4 py-2 bg-[#252525] border-b border-[#333] text-xs",children:[u&&B.jsx("button",{onClick:u,className:"md:hidden p-1 bg-transparent border-none text-[#e0e0e0] cursor-pointer","aria-label":"Open menu",children:B.jsx(Ck,{className:"h-5 w-5"})}),B.jsx("h1",{className:"hidden lg:block text-base font-semibold mr-auto",children:"RemoteTerm"}),B.jsxs("div",{className:"flex items-center gap-1 text-[#888]",children:[B.jsx("div",{className:`w-2 h-2 rounded-full ${l?"bg-[#4caf50]":"bg-[#666]"}`}),B.jsx("span",{className:"hidden lg:inline text-[#e0e0e0]",children:l?"Connected":"Disconnected"})]}),(a==null?void 0:a.serial_port)&&B.jsxs("div",{className:"hidden xl:flex items-center gap-1 text-[#888]",children:["Port: ",B.jsx("span",{className:"text-[#e0e0e0]",children:a.serial_port})]}),o&&B.jsxs(B.Fragment,{children:[B.jsx("div",{className:"hidden lg:flex items-center gap-1 text-[#888]",children:B.jsx("span",{className:"text-[#e0e0e0]",children:o.name||"Unnamed"})}),B.jsxs("div",{className:"hidden xl:flex items-center gap-1 text-[#888]",children:[o.radio.freq," MHz/SF",o.radio.sf,"/CR",o.radio.cr,"/",o.tx_power,"dBm"]})]}),B.jsx("div",{className:"flex-1 lg:hidden"}),!l&&B.jsx("button",{onClick:h,disabled:m,className:"px-3 py-1 bg-[#4a3000] border border-[#6b4500] text-[#ffa500] rounded text-xs cursor-pointer hover:bg-[#5a3a00] disabled:opacity-50 disabled:cursor-not-allowed",children:m?"Reconnecting...":"Reconnect"}),B.jsx("button",{onClick:s,disabled:!l,className:"px-3 py-1 bg-[#333] border border-[#444] text-[#e0e0e0] rounded text-xs cursor-pointer hover:bg-[#444] disabled:bg-[#333] disabled:text-[#666] disabled:cursor-not-allowed",children:"Advertise"}),B.jsx("button",{onClick:r,className:"px-3 py-1 bg-[#333] border border-[#444] text-[#e0e0e0] rounded text-xs cursor-pointer hover:bg-[#444]",children:"Config"})]})}const xu=2,rw={text:"🛜",background:"#444444",textColor:"#ffffff"};function ow(a){let o=0;for(let r=0;r>8)%30,u=35+(o>>16)%20,l=`hsl(${r}, ${s}%, ${u}%)`,m=u<45?"#ffffff":"#000000";return{background:l,text:m}}function cw(a,o,r){if(r===xu)return rw;const s=tw(a,o),u=lw(o);return{text:s,background:u.background,textColor:u.text}}function Jg({name:a,publicKey:o,size:r=28,contactType:s}){const u=cw(a,o,s);return B.jsx("div",{className:"flex items-center justify-center rounded-full font-semibold flex-shrink-0 select-none",style:{backgroundColor:u.background,color:u.textColor,width:r,height:r,fontSize:r*.45},children:u.text})}function ey(a){var o,r,s="";if(typeof a=="string"||typeof a=="number")s+=a;else if(typeof a=="object")if(Array.isArray(a)){var u=a.length;for(o=0;o{const r=new Array(a.length+o.length);for(let s=0;s({classGroupId:a,validator:o}),ay=(a=new Map,o=null,r)=>({nextPart:a,validators:o,classGroupId:r}),Yt="-",Xm=[],pw="arbitrary..",mw=a=>{const o=gw(a),{conflictingClassGroups:r,conflictingClassGroupModifiers:s}=a;return{getClassGroupId:m=>{if(m.startsWith("[")&&m.endsWith("]"))return hw(m);const c=m.split(Yt),h=c[0]===""&&c.length>1?1:0;return ny(c,h,o)},getConflictingClassGroupIds:(m,c)=>{if(c){const h=s[m],d=r[m];return h?d?uw(d,h):h:d||Xm}return r[m]||Xm}}},ny=(a,o,r)=>{if(a.length-o===0)return r.classGroupId;const u=a[o],l=r.nextPart.get(u);if(l){const d=ny(a,o+1,l);if(d)return d}const m=r.validators;if(m===null)return;const c=o===0?a.join(Yt):a.slice(o).join(Yt),h=m.length;for(let d=0;da.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const o=a.slice(1,-1),r=o.indexOf(":"),s=o.slice(0,r);return s?pw+s:void 0})(),gw=a=>{const{theme:o,classGroups:r}=a;return yw(r,o)},yw=(a,o)=>{const r=ay();for(const s in a){const u=a[s];Iu(u,r,s,o)}return r},Iu=(a,o,r,s)=>{const u=a.length;for(let l=0;l{if(typeof a=="string"){fw(a,o,r);return}if(typeof a=="function"){vw(a,o,r,s);return}kw(a,o,r,s)},fw=(a,o,r)=>{const s=a===""?o:ry(o,a);s.classGroupId=r},vw=(a,o,r,s)=>{if(ww(a)){Iu(a(s),o,r,s);return}o.validators===null&&(o.validators=[]),o.validators.push(dw(r,a))},kw=(a,o,r,s)=>{const u=Object.entries(a),l=u.length;for(let m=0;m{let r=a;const s=o.split(Yt),u=s.length;for(let l=0;l"isThemeGetter"in a&&a.isThemeGetter===!0,zw=a=>{if(a<1)return{get:()=>{},set:()=>{}};let o=0,r=Object.create(null),s=Object.create(null);const u=(l,m)=>{r[l]=m,o++,o>a&&(o=0,s=r,r=Object.create(null))};return{get(l){let m=r[l];if(m!==void 0)return m;if((m=s[l])!==void 0)return u(l,m),m},set(l,m){l in r?r[l]=m:u(l,m)}}},ju="!",Jm=":",xw=[],eh=(a,o,r,s,u)=>({modifiers:a,hasImportantModifier:o,baseClassName:r,maybePostfixModifierPosition:s,isExternal:u}),jw=a=>{const{prefix:o,experimentalParseClassName:r}=a;let s=u=>{const l=[];let m=0,c=0,h=0,d;const g=u.length;for(let k=0;kh?d-h:void 0;return eh(l,z,f,w)};if(o){const u=o+Jm,l=s;s=m=>m.startsWith(u)?l(m.slice(u.length)):eh(xw,!1,m,void 0,!0)}if(r){const u=s;s=l=>r({className:l,parseClassName:u})}return s},qw=a=>{const o=new Map;return a.orderSensitiveModifiers.forEach((r,s)=>{o.set(r,1e6+s)}),r=>{const s=[];let u=[];for(let l=0;l0&&(u.sort(),s.push(...u),u=[]),s.push(m)):u.push(m)}return u.length>0&&(u.sort(),s.push(...u)),s}},Aw=a=>({cache:zw(a.cacheSize),parseClassName:jw(a),sortModifiers:qw(a),...mw(a)}),Cw=/\s+/,Ew=(a,o)=>{const{parseClassName:r,getClassGroupId:s,getConflictingClassGroupIds:u,sortModifiers:l}=o,m=[],c=a.trim().split(Cw);let h="";for(let d=c.length-1;d>=0;d-=1){const g=c[d],{isExternal:y,modifiers:f,hasImportantModifier:z,baseClassName:w,maybePostfixModifierPosition:k}=r(g);if(y){h=g+(h.length>0?" "+h:h);continue}let v=!!k,j=s(v?w.substring(0,k):w);if(!j){if(!v){h=g+(h.length>0?" "+h:h);continue}if(j=s(w),!j){h=g+(h.length>0?" "+h:h);continue}v=!1}const q=f.length===0?"":f.length===1?f[0]:l(f).join(":"),x=z?q+ju:q,_=x+j;if(m.indexOf(_)>-1)continue;m.push(_);const C=u(j,v);for(let D=0;D0?" "+h:h)}return h},Sw=(...a)=>{let o=0,r,s,u="";for(;o{if(typeof a=="string")return a;let o,r="";for(let s=0;s{let r,s,u,l;const m=h=>{const d=o.reduce((g,y)=>y(g),a());return r=Aw(d),s=r.cache.get,u=r.cache.set,l=c,c(h)},c=h=>{const d=s(h);if(d)return d;const g=Ew(h,r);return u(h,g),g};return l=m,(...h)=>l(Sw(...h))},_w=[],Ei=a=>{const o=r=>r[a]||_w;return o.isThemeGetter=!0,o},sy=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ty=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Dw=/^\d+\/\d+$/,Fw=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Rw=/\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$/,Tw=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Pw=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Nw=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,xr=a=>Dw.test(a),Pe=a=>!!a&&!Number.isNaN(Number(a)),xn=a=>!!a&&Number.isInteger(Number(a)),su=a=>a.endsWith("%")&&Pe(a.slice(0,-1)),Xa=a=>Fw.test(a),Iw=()=>!0,Mw=a=>Rw.test(a)&&!Tw.test(a),ly=()=>!1,Ow=a=>Pw.test(a),Lw=a=>Nw.test(a),Hw=a=>!ve(a)&&!ke(a),Vw=a=>Rr(a,dy,ly),ve=a=>sy.test(a),Vn=a=>Rr(a,py,Mw),tu=a=>Rr(a,Qw,Pe),ih=a=>Rr(a,cy,ly),Uw=a=>Rr(a,uy,Lw),Js=a=>Rr(a,my,Ow),ke=a=>ty.test(a),vo=a=>Tr(a,py),Ww=a=>Tr(a,Kw),ah=a=>Tr(a,cy),$w=a=>Tr(a,dy),Gw=a=>Tr(a,uy),et=a=>Tr(a,my,!0),Rr=(a,o,r)=>{const s=sy.exec(a);return s?s[1]?o(s[1]):r(s[2]):!1},Tr=(a,o,r=!1)=>{const s=ty.exec(a);return s?s[1]?o(s[1]):r:!1},cy=a=>a==="position"||a==="percentage",uy=a=>a==="image"||a==="url",dy=a=>a==="length"||a==="size"||a==="bg-size",py=a=>a==="length",Qw=a=>a==="number",Kw=a=>a==="family-name",my=a=>a==="shadow",Yw=()=>{const a=Ei("color"),o=Ei("font"),r=Ei("text"),s=Ei("font-weight"),u=Ei("tracking"),l=Ei("leading"),m=Ei("breakpoint"),c=Ei("container"),h=Ei("spacing"),d=Ei("radius"),g=Ei("shadow"),y=Ei("inset-shadow"),f=Ei("text-shadow"),z=Ei("drop-shadow"),w=Ei("blur"),k=Ei("perspective"),v=Ei("aspect"),j=Ei("ease"),q=Ei("animate"),x=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],C=()=>[..._(),ke,ve],D=()=>["auto","hidden","clip","visible","scroll"],R=()=>["auto","contain","none"],F=()=>[ke,ve,h],M=()=>[xr,"full","auto",...F()],P=()=>[xn,"none","subgrid",ke,ve],T=()=>["auto",{span:["full",xn,ke,ve]},xn,ke,ve],U=()=>[xn,"auto",ke,ve],H=()=>["auto","min","max","fr",ke,ve],K=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ie=()=>["start","end","center","stretch","center-safe","end-safe"],Z=()=>["auto",...F()],ae=()=>[xr,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...F()],W=()=>[a,ke,ve],ne=()=>[..._(),ah,ih,{position:[ke,ve]}],J=()=>["no-repeat",{repeat:["","x","y","space","round"]}],A=()=>["auto","cover","contain",$w,Vw,{size:[ke,ve]}],I=()=>[su,vo,Vn],L=()=>["","none","full",d,ke,ve],$=()=>["",Pe,vo,Vn],le=()=>["solid","dashed","dotted","double"],pe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],me=()=>[Pe,su,ah,ih],re=()=>["","none",w,ke,ve],Ae=()=>["none",Pe,ke,ve],Me=()=>["none",Pe,ke,ve],mi=()=>[Pe,ke,ve],he=()=>[xr,"full",...F()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Xa],breakpoint:[Xa],color:[Iw],container:[Xa],"drop-shadow":[Xa],ease:["in","out","in-out"],font:[Hw],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Xa],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Xa],shadow:[Xa],spacing:["px",Pe],text:[Xa],"text-shadow":[Xa],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",xr,ve,ke,v]}],container:["container"],columns:[{columns:[Pe,ve,ke,c]}],"break-after":[{"break-after":x()}],"break-before":[{"break-before":x()}],"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:C()}],overflow:[{overflow:D()}],"overflow-x":[{"overflow-x":D()}],"overflow-y":[{"overflow-y":D()}],overscroll:[{overscroll:R()}],"overscroll-x":[{"overscroll-x":R()}],"overscroll-y":[{"overscroll-y":R()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:M()}],"inset-x":[{"inset-x":M()}],"inset-y":[{"inset-y":M()}],start:[{start:M()}],end:[{end:M()}],top:[{top:M()}],right:[{right:M()}],bottom:[{bottom:M()}],left:[{left:M()}],visibility:["visible","invisible","collapse"],z:[{z:[xn,"auto",ke,ve]}],basis:[{basis:[xr,"full","auto",c,...F()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Pe,xr,"auto","initial","none",ve]}],grow:[{grow:["",Pe,ke,ve]}],shrink:[{shrink:["",Pe,ke,ve]}],order:[{order:[xn,"first","last","none",ke,ve]}],"grid-cols":[{"grid-cols":P()}],"col-start-end":[{col:T()}],"col-start":[{"col-start":U()}],"col-end":[{"col-end":U()}],"grid-rows":[{"grid-rows":P()}],"row-start-end":[{row:T()}],"row-start":[{"row-start":U()}],"row-end":[{"row-end":U()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":H()}],"auto-rows":[{"auto-rows":H()}],gap:[{gap:F()}],"gap-x":[{"gap-x":F()}],"gap-y":[{"gap-y":F()}],"justify-content":[{justify:[...K(),"normal"]}],"justify-items":[{"justify-items":[...ie(),"normal"]}],"justify-self":[{"justify-self":["auto",...ie()]}],"align-content":[{content:["normal",...K()]}],"align-items":[{items:[...ie(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ie(),{baseline:["","last"]}]}],"place-content":[{"place-content":K()}],"place-items":[{"place-items":[...ie(),"baseline"]}],"place-self":[{"place-self":["auto",...ie()]}],p:[{p:F()}],px:[{px:F()}],py:[{py:F()}],ps:[{ps:F()}],pe:[{pe:F()}],pt:[{pt:F()}],pr:[{pr:F()}],pb:[{pb:F()}],pl:[{pl:F()}],m:[{m:Z()}],mx:[{mx:Z()}],my:[{my:Z()}],ms:[{ms:Z()}],me:[{me:Z()}],mt:[{mt:Z()}],mr:[{mr:Z()}],mb:[{mb:Z()}],ml:[{ml:Z()}],"space-x":[{"space-x":F()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":F()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],w:[{w:[c,"screen",...ae()]}],"min-w":[{"min-w":[c,"screen","none",...ae()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[m]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh",...ae()]}],"font-size":[{text:["base",r,vo,Vn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,ke,tu]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",su,ve]}],"font-family":[{font:[Ww,ve,o]}],"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:[u,ke,ve]}],"line-clamp":[{"line-clamp":[Pe,"none",ke,tu]}],leading:[{leading:[l,...F()]}],"list-image":[{"list-image":["none",ke,ve]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ke,ve]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:W()}],"text-color":[{text:W()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...le(),"wavy"]}],"text-decoration-thickness":[{decoration:[Pe,"from-font","auto",ke,Vn]}],"text-decoration-color":[{decoration:W()}],"underline-offset":[{"underline-offset":[Pe,"auto",ke,ve]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:F()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ke,ve]}],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",ke,ve]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ne()}],"bg-repeat":[{bg:J()}],"bg-size":[{bg:A()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},xn,ke,ve],radial:["",ke,ve],conic:[xn,ke,ve]},Gw,Uw]}],"bg-color":[{bg:W()}],"gradient-from-pos":[{from:I()}],"gradient-via-pos":[{via:I()}],"gradient-to-pos":[{to:I()}],"gradient-from":[{from:W()}],"gradient-via":[{via:W()}],"gradient-to":[{to:W()}],rounded:[{rounded:L()}],"rounded-s":[{"rounded-s":L()}],"rounded-e":[{"rounded-e":L()}],"rounded-t":[{"rounded-t":L()}],"rounded-r":[{"rounded-r":L()}],"rounded-b":[{"rounded-b":L()}],"rounded-l":[{"rounded-l":L()}],"rounded-ss":[{"rounded-ss":L()}],"rounded-se":[{"rounded-se":L()}],"rounded-ee":[{"rounded-ee":L()}],"rounded-es":[{"rounded-es":L()}],"rounded-tl":[{"rounded-tl":L()}],"rounded-tr":[{"rounded-tr":L()}],"rounded-br":[{"rounded-br":L()}],"rounded-bl":[{"rounded-bl":L()}],"border-w":[{border:$()}],"border-w-x":[{"border-x":$()}],"border-w-y":[{"border-y":$()}],"border-w-s":[{"border-s":$()}],"border-w-e":[{"border-e":$()}],"border-w-t":[{"border-t":$()}],"border-w-r":[{"border-r":$()}],"border-w-b":[{"border-b":$()}],"border-w-l":[{"border-l":$()}],"divide-x":[{"divide-x":$()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":$()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...le(),"hidden","none"]}],"divide-style":[{divide:[...le(),"hidden","none"]}],"border-color":[{border:W()}],"border-color-x":[{"border-x":W()}],"border-color-y":[{"border-y":W()}],"border-color-s":[{"border-s":W()}],"border-color-e":[{"border-e":W()}],"border-color-t":[{"border-t":W()}],"border-color-r":[{"border-r":W()}],"border-color-b":[{"border-b":W()}],"border-color-l":[{"border-l":W()}],"divide-color":[{divide:W()}],"outline-style":[{outline:[...le(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Pe,ke,ve]}],"outline-w":[{outline:["",Pe,vo,Vn]}],"outline-color":[{outline:W()}],shadow:[{shadow:["","none",g,et,Js]}],"shadow-color":[{shadow:W()}],"inset-shadow":[{"inset-shadow":["none",y,et,Js]}],"inset-shadow-color":[{"inset-shadow":W()}],"ring-w":[{ring:$()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:W()}],"ring-offset-w":[{"ring-offset":[Pe,Vn]}],"ring-offset-color":[{"ring-offset":W()}],"inset-ring-w":[{"inset-ring":$()}],"inset-ring-color":[{"inset-ring":W()}],"text-shadow":[{"text-shadow":["none",f,et,Js]}],"text-shadow-color":[{"text-shadow":W()}],opacity:[{opacity:[Pe,ke,ve]}],"mix-blend":[{"mix-blend":[...pe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":pe()}],"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":[Pe]}],"mask-image-linear-from-pos":[{"mask-linear-from":me()}],"mask-image-linear-to-pos":[{"mask-linear-to":me()}],"mask-image-linear-from-color":[{"mask-linear-from":W()}],"mask-image-linear-to-color":[{"mask-linear-to":W()}],"mask-image-t-from-pos":[{"mask-t-from":me()}],"mask-image-t-to-pos":[{"mask-t-to":me()}],"mask-image-t-from-color":[{"mask-t-from":W()}],"mask-image-t-to-color":[{"mask-t-to":W()}],"mask-image-r-from-pos":[{"mask-r-from":me()}],"mask-image-r-to-pos":[{"mask-r-to":me()}],"mask-image-r-from-color":[{"mask-r-from":W()}],"mask-image-r-to-color":[{"mask-r-to":W()}],"mask-image-b-from-pos":[{"mask-b-from":me()}],"mask-image-b-to-pos":[{"mask-b-to":me()}],"mask-image-b-from-color":[{"mask-b-from":W()}],"mask-image-b-to-color":[{"mask-b-to":W()}],"mask-image-l-from-pos":[{"mask-l-from":me()}],"mask-image-l-to-pos":[{"mask-l-to":me()}],"mask-image-l-from-color":[{"mask-l-from":W()}],"mask-image-l-to-color":[{"mask-l-to":W()}],"mask-image-x-from-pos":[{"mask-x-from":me()}],"mask-image-x-to-pos":[{"mask-x-to":me()}],"mask-image-x-from-color":[{"mask-x-from":W()}],"mask-image-x-to-color":[{"mask-x-to":W()}],"mask-image-y-from-pos":[{"mask-y-from":me()}],"mask-image-y-to-pos":[{"mask-y-to":me()}],"mask-image-y-from-color":[{"mask-y-from":W()}],"mask-image-y-to-color":[{"mask-y-to":W()}],"mask-image-radial":[{"mask-radial":[ke,ve]}],"mask-image-radial-from-pos":[{"mask-radial-from":me()}],"mask-image-radial-to-pos":[{"mask-radial-to":me()}],"mask-image-radial-from-color":[{"mask-radial-from":W()}],"mask-image-radial-to-color":[{"mask-radial-to":W()}],"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":_()}],"mask-image-conic-pos":[{"mask-conic":[Pe]}],"mask-image-conic-from-pos":[{"mask-conic-from":me()}],"mask-image-conic-to-pos":[{"mask-conic-to":me()}],"mask-image-conic-from-color":[{"mask-conic-from":W()}],"mask-image-conic-to-color":[{"mask-conic-to":W()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ne()}],"mask-repeat":[{mask:J()}],"mask-size":[{mask:A()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ke,ve]}],filter:[{filter:["","none",ke,ve]}],blur:[{blur:re()}],brightness:[{brightness:[Pe,ke,ve]}],contrast:[{contrast:[Pe,ke,ve]}],"drop-shadow":[{"drop-shadow":["","none",z,et,Js]}],"drop-shadow-color":[{"drop-shadow":W()}],grayscale:[{grayscale:["",Pe,ke,ve]}],"hue-rotate":[{"hue-rotate":[Pe,ke,ve]}],invert:[{invert:["",Pe,ke,ve]}],saturate:[{saturate:[Pe,ke,ve]}],sepia:[{sepia:["",Pe,ke,ve]}],"backdrop-filter":[{"backdrop-filter":["","none",ke,ve]}],"backdrop-blur":[{"backdrop-blur":re()}],"backdrop-brightness":[{"backdrop-brightness":[Pe,ke,ve]}],"backdrop-contrast":[{"backdrop-contrast":[Pe,ke,ve]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Pe,ke,ve]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Pe,ke,ve]}],"backdrop-invert":[{"backdrop-invert":["",Pe,ke,ve]}],"backdrop-opacity":[{"backdrop-opacity":[Pe,ke,ve]}],"backdrop-saturate":[{"backdrop-saturate":[Pe,ke,ve]}],"backdrop-sepia":[{"backdrop-sepia":["",Pe,ke,ve]}],"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",ke,ve]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Pe,"initial",ke,ve]}],ease:[{ease:["linear","initial",j,ke,ve]}],delay:[{delay:[Pe,ke,ve]}],animate:[{animate:["none",q,ke,ve]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[k,ke,ve]}],"perspective-origin":[{"perspective-origin":C()}],rotate:[{rotate:Ae()}],"rotate-x":[{"rotate-x":Ae()}],"rotate-y":[{"rotate-y":Ae()}],"rotate-z":[{"rotate-z":Ae()}],scale:[{scale:Me()}],"scale-x":[{"scale-x":Me()}],"scale-y":[{"scale-y":Me()}],"scale-z":[{"scale-z":Me()}],"scale-3d":["scale-3d"],skew:[{skew:mi()}],"skew-x":[{"skew-x":mi()}],"skew-y":[{"skew-y":mi()}],transform:[{transform:[ke,ve,"","none","gpu","cpu"]}],"transform-origin":[{origin:C()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:he()}],"translate-x":[{"translate-x":he()}],"translate-y":[{"translate-y":he()}],"translate-z":[{"translate-z":he()}],"translate-none":["translate-none"],accent:[{accent:W()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:W()}],"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",ke,ve]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"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-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-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",ke,ve]}],fill:[{fill:["none",...W()]}],"stroke-w":[{stroke:[Pe,vo,Vn,tu]}],stroke:[{stroke:["none",...W()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","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","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","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-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-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-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-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"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Zw=Bw(Yw);function $e(...a){return Zw(iy(a))}const xi=E.forwardRef(({className:a,type:o,...r},s)=>B.jsx("input",{type:o,className:$e("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),ref:s,...r}));xi.displayName="Input";function nh(a,o){if(typeof a=="function")return a(o);a!=null&&(a.current=o)}function Lo(...a){return o=>{let r=!1;const s=a.map(u=>{const l=nh(u,o);return!r&&typeof l=="function"&&(r=!0),l});if(r)return()=>{for(let u=0;u{let{children:l,...m}=s;hy(l)&&typeof Zt=="function"&&(l=Zt(l._payload));const c=E.Children.toArray(l),h=c.find(nz);if(h){const d=h.props.children,g=c.map(y=>y===h?E.Children.count(d)>1?E.Children.only(null):E.isValidElement(d)?d.props.children:null:y);return B.jsx(o,{...m,ref:u,children:E.isValidElement(d)?E.cloneElement(d,void 0,g):null})}return B.jsx(o,{...m,ref:u,children:l})});return r.displayName=`${a}.Slot`,r}var ez=Mu("Slot");function iz(a){const o=E.forwardRef((r,s)=>{let{children:u,...l}=r;if(hy(u)&&typeof Zt=="function"&&(u=Zt(u._payload)),E.isValidElement(u)){const m=oz(u),c=rz(l,u.props);return u.type!==E.Fragment&&(c.ref=s?Lo(s,m):m),E.cloneElement(u,c)}return E.Children.count(u)>1?E.Children.only(null):null});return o.displayName=`${a}.SlotClone`,o}var az=Symbol("radix.slottable");function nz(a){return E.isValidElement(a)&&typeof a.type=="function"&&"__radixId"in a.type&&a.type.__radixId===az}function rz(a,o){const r={...o};for(const s in o){const u=a[s],l=o[s];/^on[A-Z]/.test(s)?u&&l?r[s]=(...c)=>{const h=l(...c);return u(...c),h}:u&&(r[s]=u):s==="style"?r[s]={...u,...l}:s==="className"&&(r[s]=[u,l].filter(Boolean).join(" "))}return{...a,...r}}function oz(a){var s,u;let o=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,r=o&&"isReactWarning"in o&&o.isReactWarning;return r?a.ref:(o=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,r=o&&"isReactWarning"in o&&o.isReactWarning,r?a.props.ref:a.props.ref||a.ref)}const rh=a=>typeof a=="boolean"?`${a}`:a===0?"0":a,oh=iy,nl=(a,o)=>r=>{var s;if((o==null?void 0:o.variants)==null)return oh(a,r==null?void 0:r.class,r==null?void 0:r.className);const{variants:u,defaultVariants:l}=o,m=Object.keys(u).map(d=>{const g=r==null?void 0:r[d],y=l==null?void 0:l[d];if(g===null)return null;const f=rh(g)||rh(y);return u[d][f]}),c=r&&Object.entries(r).reduce((d,g)=>{let[y,f]=g;return f===void 0||(d[y]=f),d},{}),h=o==null||(s=o.compoundVariants)===null||s===void 0?void 0:s.reduce((d,g)=>{let{class:y,className:f,...z}=g;return Object.entries(z).every(w=>{let[k,v]=w;return Array.isArray(v)?v.includes({...l,...c}[k]):{...l,...c}[k]===v})?[...d,y,f]:d},[]);return oh(a,m,h,r==null?void 0:r.class,r==null?void 0:r.className)},sz=nl("inline-flex items-center justify-center 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",{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-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),Ha=E.forwardRef(({className:a,variant:o,size:r,asChild:s=!1,...u},l)=>{const m=s?ez:"button";return B.jsx(m,{className:$e(sz({variant:o,size:r,className:a})),ref:l,...u})});Ha.displayName="Button";function tz(){try{return localStorage.getItem("remoteterm-sortOrder")==="alpha"?"alpha":"recent"}catch{return"recent"}}function lz(a){try{localStorage.setItem("remoteterm-sortOrder",a)}catch{}}function cz({contacts:a,channels:o,activeConversation:r,onSelectConversation:s,onNewMessage:u,lastMessageTimes:l,unreadCounts:m,showCracker:c,crackerRunning:h,onToggleCracker:d,onMarkAllRead:g}){const[y,f]=E.useState(tz),[z,w]=E.useState(""),k=()=>{const T=y==="alpha"?"recent":"alpha";f(T),lz(T)},v=T=>{w(""),s(T)},j=(T,U)=>(r==null?void 0:r.type)===T&&(r==null?void 0:r.id)===U,q=(T,U)=>{const H=Oa(T,U);return m[H]||0},x=(T,U)=>{const H=Oa(T,U);return l[H]||0},_=o.reduce((T,U)=>(T.some(H=>H.name===U.name)||T.push(U),T),[]),C=a.filter(T=>T.public_key&&T.public_key.length>0).sort((T,U)=>T.name&&!U.name?-1:!T.name&&U.name?1:(T.name||"").localeCompare(U.name||"")).reduce((T,U)=>{const H=Br(U.public_key);return T.some(K=>Br(K.public_key)===H)||T.push(U),T},[]),D=[..._].sort((T,U)=>{if(T.name==="Public")return-1;if(U.name==="Public")return 1;if(y==="recent"){const H=x("channel",T.key),K=x("channel",U.key);if(H&&K)return K-H;if(H&&!K)return-1;if(!H&&K)return 1}return T.name.localeCompare(U.name)}),R=[...C].sort((T,U)=>{const H=T.type===xu,K=U.type===xu;if(H&&!K)return 1;if(!H&&K)return-1;if(H&&K)return(T.name||T.public_key).localeCompare(U.name||U.public_key);if(y==="recent"){const ie=x("contact",T.public_key),Z=x("contact",U.public_key);if(ie&&Z)return Z-ie;if(ie&&!Z)return-1;if(!ie&&Z)return 1}return(T.name||T.public_key).localeCompare(U.name||U.public_key)}),F=z.toLowerCase().trim(),M=F?D.filter(T=>T.name.toLowerCase().includes(F)):D,P=F?R.filter(T=>{var U;return((U=T.name)==null?void 0:U.toLowerCase().includes(F))||T.public_key.toLowerCase().includes(F)}):R;return B.jsxs("div",{className:"sidebar w-60 h-full min-h-0 bg-card border-r border-border flex flex-col",children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-3 border-b border-border",children:[B.jsx("h2",{className:"text-xs uppercase text-muted-foreground font-medium",children:"Conversations"}),B.jsx(Ha,{variant:"ghost",size:"sm",onClick:u,title:"New Message",className:"h-6 w-6 p-0 text-muted-foreground hover:text-foreground",children:"+"})]}),B.jsxs("div",{className:"relative px-3 py-2 border-b border-border",children:[B.jsx(xi,{type:"text",placeholder:"Search...",value:z,onChange:T=>w(T.target.value),className:"h-8 text-sm pr-8"}),z&&B.jsx("button",{className:"absolute right-4 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground text-lg leading-none",onClick:()=>w(""),title:"Clear search",children:"×"})]}),B.jsxs("div",{className:"flex-1 overflow-y-auto",children:[!F&&B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",j("raw","raw")&&"bg-accent border-l-primary"),onClick:()=>v({type:"raw",id:"raw",name:"Raw Packet Feed"}),children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"📡"}),B.jsx("span",{className:"flex-1 truncate",children:"Packet Feed"})]}),!F&&B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",c&&"bg-accent border-l-primary"),onClick:d,children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"🔓"}),B.jsxs("span",{className:"flex-1 truncate",children:[c?"Hide":"Show"," Cracker",B.jsxs("span",{className:$e("ml-1 text-xs",h?"text-green-500":"text-muted-foreground"),children:["(",h?"running":"stopped",")"]})]})]}),!F&&Object.keys(m).length>0&&B.jsxs("div",{className:"px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",onClick:g,children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"✓"}),B.jsx("span",{className:"flex-1 truncate text-muted-foreground",children:"Mark all as read"})]}),M.length>0&&B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[B.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Channels"}),B.jsx("button",{className:"bg-transparent border border-border text-muted-foreground px-1.5 py-0.5 text-[10px] rounded hover:bg-accent hover:text-foreground",onClick:k,title:y==="alpha"?"Sort by recent":"Sort alphabetically",children:y==="alpha"?"A-Z":"⏱"})]}),M.map(T=>{const U=q("channel",T.key);return B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",j("channel",T.key)&&"bg-accent border-l-primary",U>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>v({type:"channel",id:T.key,name:T.name}),children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"#"}),B.jsx("span",{className:"name flex-1 truncate",children:T.name}),U>0&&B.jsx("span",{className:"bg-primary text-primary-foreground text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",children:U})]},`chan-${T.key}`)})]}),P.length>0&&B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[B.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Contacts"}),M.length===0&&B.jsx("button",{className:"bg-transparent border border-border text-muted-foreground px-1.5 py-0.5 text-[10px] rounded hover:bg-accent hover:text-foreground",onClick:k,title:y==="alpha"?"Sort by recent":"Sort alphabetically",children:y==="alpha"?"A-Z":"⏱"})]}),P.map(T=>{const U=q("contact",T.public_key);return B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",j("contact",T.public_key)&&"bg-accent border-l-primary",U>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>v({type:"contact",id:T.public_key,name:Yn(T.name,T.public_key)}),children:[B.jsx(Jg,{name:T.name,publicKey:T.public_key,size:24,contactType:T.type}),B.jsx("span",{className:"name flex-1 truncate",children:Yn(T.name,T.public_key)}),U>0&&B.jsx("span",{className:"bg-primary text-primary-foreground text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",children:U})]},T.public_key)})]}),P.length===0&&M.length===0&&B.jsx("div",{className:"p-5 text-center text-muted-foreground",children:F?"No matches found":"No conversations yet"})]})]})}function sh(a){const o=a.indexOf(": ");if(o>0&&o<50){const r=a.substring(0,o);if(!r.includes(":"))return{sender:r,content:a.substring(o+2)}}return{sender:null,content:a}}function th(a){const o=new Date(a*1e3),r=new Date,s=o.toDateString()===r.toDateString(),u=o.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return s?u:`${o.toLocaleDateString([],{month:"short",day:"numeric"})} ${u}`}function uz(a,o){if(!o)return a;const r=/@\[([^\]]+)\]/g,s=[];let u=0,l,m=0;for(;(l=r.exec(a))!==null;){l.index>u&&s.push(a.slice(u,l.index));const c=l[1],h=c===o;s.push(B.jsxs("span",{className:$e("rounded px-0.5",h?"bg-primary/30 text-primary font-medium":"bg-muted-foreground/20"),children:["@[",c,"]"]},m++)),u=l.index+l[0].length}return u0?s:a}function dz({messages:a,contacts:o,loading:r,loadingOlder:s=!1,hasOlderMessages:u=!1,onSenderClick:l,onLoadOlder:m,radioName:c}){const h=E.useRef(null),d=E.useRef(0),g=E.useRef(!0),[y,f]=E.useState(!1),z=E.useRef({scrollTop:0,scrollHeight:0,wasNearTop:!1});E.useLayoutEffect(()=>{if(!h.current)return;const C=h.current,D=a.length-d.current;if(g.current&&a.length>0)C.scrollTop=C.scrollHeight,g.current=!1;else if(D>0&&d.current>0){const R=C.scrollHeight-z.current.scrollHeight;z.current.wasNearTop&&R>0?C.scrollTop=z.current.scrollTop+R:z.current.wasNearTop||(C.scrollTop=C.scrollHeight)}d.current=a.length},[a]),E.useEffect(()=>{a.length===0&&(g.current=!0,d.current=0,z.current={scrollTop:0,scrollHeight:0,wasNearTop:!1})},[a.length]);const w=E.useCallback(()=>{if(!h.current)return;const{scrollTop:C,scrollHeight:D,clientHeight:R}=h.current;z.current={scrollTop:C,scrollHeight:D,wasNearTop:C<150};const F=D-C-R;f(F>100),!(!m||s||!u)&&C<100&&m()},[m,s,u]),k=E.useCallback(()=>{h.current&&(h.current.scrollTop=h.current.scrollHeight)},[]),v=C=>C&&o.find(D=>Gg(D.public_key,C))||null,j=C=>o.find(D=>D.name===C)||null;if(r)return B.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"Loading messages..."});if(a.length===0)return B.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"No messages yet"});const x=[...a.reduce((C,D)=>{const R=`${D.type}-${D.conversation_key}-${D.text}-${D.sender_timestamp}`;return C.find(M=>`${M.type}-${M.conversation_key}-${M.text}-${M.sender_timestamp}`===R)||C.push(D),C},[])].sort((C,D)=>C.received_at-D.received_at),_=(C,D)=>C.outgoing?"__outgoing__":C.type==="PRIV"&&C.conversation_key?C.conversation_key:D||"__unknown__";return B.jsxs("div",{className:"flex-1 overflow-hidden relative",children:[B.jsxs("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-0.5",ref:h,onScroll:w,children:[s&&B.jsx("div",{className:"text-center py-2 text-muted-foreground text-sm",children:"Loading older messages..."}),!s&&u&&B.jsx("div",{className:"text-center py-2 text-muted-foreground text-xs",children:"Scroll up for older messages"}),x.map((C,D)=>{var J;const R=C.type==="PRIV"?v(C.conversation_key):null,F=(R==null?void 0:R.type)===$g,{sender:M,content:P}=F?{sender:null,content:C.text}:sh(C.text),T=C.outgoing?"You":(R==null?void 0:R.name)||M||((J=C.conversation_key)==null?void 0:J.slice(0,8))||"Unknown",U=!C.outgoing&&l&&T!=="Unknown",H=_(C,M),K=x[D-1],ie=K?_(K,sh(K.text).sender):null,Z=!C.outgoing&&H!==ie,ae=D===0;let W=null,ne="";if(!C.outgoing){if(C.type==="PRIV"&&C.conversation_key)W=(R==null?void 0:R.name)||null,ne=C.conversation_key;else if(M){const A=j(M);W=M,ne=(A==null?void 0:A.public_key)||`name:${M}`}}return B.jsxs("div",{className:$e("flex items-start max-w-[85%]",C.outgoing&&"flex-row-reverse self-end",Z&&!ae&&"mt-3"),children:[!C.outgoing&&B.jsx("div",{className:"w-10 flex-shrink-0 flex items-start pt-0.5",children:Z&&ne&&B.jsx(Jg,{name:W,publicKey:ne,size:32})}),B.jsxs("div",{className:$e("py-1.5 px-3 rounded-lg min-w-0",C.outgoing?"bg-[#1e3a29]":"bg-muted"),children:[Z&&B.jsxs("div",{className:"text-[13px] font-semibold text-muted-foreground mb-0.5",children:[U?B.jsx("span",{className:"cursor-pointer hover:text-primary hover:underline",onClick:()=>l(T),title:`Mention ${T}`,children:T}):T,B.jsx("span",{className:"font-normal text-muted-foreground/70 ml-2 text-[11px]",children:th(C.sender_timestamp||C.received_at)})]}),B.jsxs("div",{className:"break-words whitespace-pre-wrap",children:[P.split(` + */const Ek=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Yg=Nu("x",Ek);var Zg=Wg();const Xg=Fr(Zg);function Sk(a){if(typeof document>"u")return;let o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",o.appendChild(r),r.styleSheet?r.styleSheet.cssText=a:r.appendChild(document.createTextNode(a))}const Bk=a=>{switch(a){case"success":return Fk;case"info":return Tk;case"warning":return Rk;case"error":return Pk;default:return null}},_k=Array(12).fill(0),Dk=({visible:a,className:o})=>de.createElement("div",{className:["sonner-loading-wrapper",o].filter(Boolean).join(" "),"data-visible":a},de.createElement("div",{className:"sonner-spinner"},_k.map((r,s)=>de.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${s}`})))),Fk=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},de.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"})),Rk=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},de.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"})),Tk=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},de.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"})),Pk=de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},de.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"})),Nk=de.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"},de.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),de.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),Ik=()=>{const[a,o]=de.useState(document.hidden);return de.useEffect(()=>{const r=()=>{o(document.hidden)};return document.addEventListener("visibilitychange",r),()=>window.removeEventListener("visibilitychange",r)},[]),a};let zu=1;class Mk{constructor(){this.subscribe=o=>(this.subscribers.push(o),()=>{const r=this.subscribers.indexOf(o);this.subscribers.splice(r,1)}),this.publish=o=>{this.subscribers.forEach(r=>r(o))},this.addToast=o=>{this.publish(o),this.toasts=[...this.toasts,o]},this.create=o=>{var r;const{message:s,...u}=o,l=typeof(o==null?void 0:o.id)=="number"||((r=o.id)==null?void 0:r.length)>0?o.id:zu++,m=this.toasts.find(h=>h.id===l),c=o.dismissible===void 0?!0:o.dismissible;return this.dismissedToasts.has(l)&&this.dismissedToasts.delete(l),m?this.toasts=this.toasts.map(h=>h.id===l?(this.publish({...h,...o,id:l,title:s}),{...h,...o,id:l,dismissible:c,title:s}):h):this.addToast({title:s,...u,dismissible:c,id:l}),l},this.dismiss=o=>(o?(this.dismissedToasts.add(o),requestAnimationFrame(()=>this.subscribers.forEach(r=>r({id:o,dismiss:!0})))):this.toasts.forEach(r=>{this.subscribers.forEach(s=>s({id:r.id,dismiss:!0}))}),o),this.message=(o,r)=>this.create({...r,message:o}),this.error=(o,r)=>this.create({...r,message:o,type:"error"}),this.success=(o,r)=>this.create({...r,type:"success",message:o}),this.info=(o,r)=>this.create({...r,type:"info",message:o}),this.warning=(o,r)=>this.create({...r,type:"warning",message:o}),this.loading=(o,r)=>this.create({...r,type:"loading",message:o}),this.promise=(o,r)=>{if(!r)return;let s;r.loading!==void 0&&(s=this.create({...r,promise:o,type:"loading",message:r.loading,description:typeof r.description!="function"?r.description:void 0}));const u=Promise.resolve(o instanceof Function?o():o);let l=s!==void 0,m;const c=u.then(async d=>{if(m=["resolve",d],de.isValidElement(d))l=!1,this.create({id:s,type:"default",message:d});else if(Lk(d)&&!d.ok){l=!1;const y=typeof r.error=="function"?await r.error(`HTTP error! status: ${d.status}`):r.error,f=typeof r.description=="function"?await r.description(`HTTP error! status: ${d.status}`):r.description,w=typeof y=="object"&&!de.isValidElement(y)?y:{message:y};this.create({id:s,type:"error",description:f,...w})}else if(d instanceof Error){l=!1;const y=typeof r.error=="function"?await r.error(d):r.error,f=typeof r.description=="function"?await r.description(d):r.description,w=typeof y=="object"&&!de.isValidElement(y)?y:{message:y};this.create({id:s,type:"error",description:f,...w})}else if(r.success!==void 0){l=!1;const y=typeof r.success=="function"?await r.success(d):r.success,f=typeof r.description=="function"?await r.description(d):r.description,w=typeof y=="object"&&!de.isValidElement(y)?y:{message:y};this.create({id:s,type:"success",description:f,...w})}}).catch(async d=>{if(m=["reject",d],r.error!==void 0){l=!1;const g=typeof r.error=="function"?await r.error(d):r.error,y=typeof r.description=="function"?await r.description(d):r.description,z=typeof g=="object"&&!de.isValidElement(g)?g:{message:g};this.create({id:s,type:"error",description:y,...z})}}).finally(()=>{l&&(this.dismiss(s),s=void 0),r.finally==null||r.finally.call(r)}),h=()=>new Promise((d,g)=>c.then(()=>m[0]==="reject"?g(m[1]):d(m[1])).catch(g));return typeof s!="string"&&typeof s!="number"?{unwrap:h}:Object.assign(s,{unwrap:h})},this.custom=(o,r)=>{const s=(r==null?void 0:r.id)||zu++;return this.create({jsx:o(s),id:s,...r}),s},this.getActiveToasts=()=>this.toasts.filter(o=>!this.dismissedToasts.has(o.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const na=new Mk,Ok=(a,o)=>{const r=(o==null?void 0:o.id)||zu++;return na.addToast({title:a,...o,id:r}),r},Lk=a=>a&&typeof a=="object"&&"ok"in a&&typeof a.ok=="boolean"&&"status"in a&&typeof a.status=="number",Hk=Ok,Vk=()=>na.toasts,Uk=()=>na.getActiveToasts(),Po=Object.assign(Hk,{success:na.success,info:na.info,warning:na.warning,error:na.error,custom:na.custom,message:na.message,promise:na.promise,dismiss:na.dismiss,loading:na.loading},{getHistory:Vk,getToasts:Uk});Sk("[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 Xs(a){return a.label!==void 0}const Wk=3,$k="24px",Gk="16px",Ym=4e3,Qk=356,Kk=14,Yk=45,Zk=200;function Na(...a){return a.filter(Boolean).join(" ")}function Xk(a){const[o,r]=a.split("-"),s=[];return o&&s.push(o),r&&s.push(r),s}const Jk=a=>{var o,r,s,u,l,m,c,h,d;const{invert:g,toast:y,unstyled:f,interacting:z,setHeights:w,visibleToasts:k,heights:v,index:j,toasts:q,expanded:x,removeToast:_,defaultRichColors:C,closeButton:D,style:R,cancelButtonStyle:F,actionButtonStyle:M,className:P="",descriptionClassName:T="",duration:U,position:H,gap:K,expandByDefault:ie,classNames:Z,icons:ae,closeButtonAriaLabel:W="Close toast"}=a,[ne,J]=de.useState(null),[A,I]=de.useState(null),[L,$]=de.useState(!1),[le,pe]=de.useState(!1),[me,re]=de.useState(!1),[Ae,Me]=de.useState(!1),[mi,he]=de.useState(!1),[Ce,Be]=de.useState(0),[ci,ui]=de.useState(0),Ye=de.useRef(y.duration||U||Ym),Ue=de.useRef(null),Te=de.useRef(null),ii=j===0,Re=j+1<=k,Ne=y.type,ni=y.dismissible!==!1,Qi=y.className||"",va=y.descriptionClassName||"",ji=de.useMemo(()=>v.findIndex(qe=>qe.toastId===y.id)||0,[v,y.id]),Mi=de.useMemo(()=>{var qe;return(qe=y.closeButton)!=null?qe:D},[y.closeButton,D]),Ki=de.useMemo(()=>y.duration||U||Ym,[y.duration,U]),ra=de.useRef(0),qi=de.useRef(0),di=de.useRef(0),ee=de.useRef(null),[ye,_e]=H.split("-"),X=de.useMemo(()=>v.reduce((qe,Xe,si)=>si>=ji?qe:qe+Xe.height,0),[v,ji]),oe=Ik(),ze=y.invert||g,Ve=Ne==="loading";qi.current=de.useMemo(()=>ji*K+X,[ji,X]),de.useEffect(()=>{Ye.current=Ki},[Ki]),de.useEffect(()=>{$(!0)},[]),de.useEffect(()=>{const qe=Te.current;if(qe){const Xe=qe.getBoundingClientRect().height;return ui(Xe),w(si=>[{toastId:y.id,height:Xe,position:y.position},...si]),()=>w(si=>si.filter(yi=>yi.toastId!==y.id))}},[w,y.id]),de.useLayoutEffect(()=>{if(!L)return;const qe=Te.current,Xe=qe.style.height;qe.style.height="auto";const si=qe.getBoundingClientRect().height;qe.style.height=Xe,ui(si),w(yi=>yi.find(Le=>Le.toastId===y.id)?yi.map(Le=>Le.toastId===y.id?{...Le,height:si}:Le):[{toastId:y.id,height:si,position:y.position},...yi])},[L,y.title,y.description,w,y.id,y.jsx,y.action,y.cancel]);const Fe=de.useCallback(()=>{pe(!0),Be(qi.current),w(qe=>qe.filter(Xe=>Xe.toastId!==y.id)),setTimeout(()=>{_(y)},Zk)},[y,_,w,qi]);de.useEffect(()=>{if(y.promise&&Ne==="loading"||y.duration===1/0||y.type==="loading")return;let qe;return x||z||oe?(()=>{if(di.current{Ye.current!==1/0&&(ra.current=new Date().getTime(),qe=setTimeout(()=>{y.onAutoClose==null||y.onAutoClose.call(y,y),Fe()},Ye.current))})(),()=>clearTimeout(qe)},[x,z,y,Ne,oe,Fe]),de.useEffect(()=>{y.delete&&(Fe(),y.onDismiss==null||y.onDismiss.call(y,y))},[Fe,y.delete]);function Ze(){var qe;if(ae!=null&&ae.loading){var Xe;return de.createElement("div",{className:Na(Z==null?void 0:Z.loader,y==null||(Xe=y.classNames)==null?void 0:Xe.loader,"sonner-loader"),"data-visible":Ne==="loading"},ae.loading)}return de.createElement(Dk,{className:Na(Z==null?void 0:Z.loader,y==null||(qe=y.classNames)==null?void 0:qe.loader),visible:Ne==="loading"})}const Oe=y.icon||(ae==null?void 0:ae[Ne])||Bk(Ne);var Ge,Wi;return de.createElement("li",{tabIndex:0,ref:Te,className:Na(P,Qi,Z==null?void 0:Z.toast,y==null||(o=y.classNames)==null?void 0:o.toast,Z==null?void 0:Z.default,Z==null?void 0:Z[Ne],y==null||(r=y.classNames)==null?void 0:r[Ne]),"data-sonner-toast":"","data-rich-colors":(Ge=y.richColors)!=null?Ge:C,"data-styled":!(y.jsx||y.unstyled||f),"data-mounted":L,"data-promise":!!y.promise,"data-swiped":mi,"data-removed":le,"data-visible":Re,"data-y-position":ye,"data-x-position":_e,"data-index":j,"data-front":ii,"data-swiping":me,"data-dismissible":ni,"data-type":Ne,"data-invert":ze,"data-swipe-out":Ae,"data-swipe-direction":A,"data-expanded":!!(x||ie&&L),"data-testid":y.testId,style:{"--index":j,"--toasts-before":j,"--z-index":q.length-j,"--offset":`${le?Ce:qi.current}px`,"--initial-height":ie?"auto":`${ci}px`,...R,...y.style},onDragEnd:()=>{re(!1),J(null),ee.current=null},onPointerDown:qe=>{qe.button!==2&&(Ve||!ni||(Ue.current=new Date,Be(qi.current),qe.target.setPointerCapture(qe.pointerId),qe.target.tagName!=="BUTTON"&&(re(!0),ee.current={x:qe.clientX,y:qe.clientY})))},onPointerUp:()=>{var qe,Xe,si;if(Ae||!ni)return;ee.current=null;const yi=Number(((qe=Te.current)==null?void 0:qe.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),da=Number(((Xe=Te.current)==null?void 0:Xe.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Le=new Date().getTime()-((si=Ue.current)==null?void 0:si.getTime()),ri=ne==="x"?yi:da,ka=Math.abs(ri)/Le;if(Math.abs(ri)>=Yk||ka>.11){Be(qi.current),y.onDismiss==null||y.onDismiss.call(y,y),I(ne==="x"?yi>0?"right":"left":da>0?"down":"up"),Fe(),Me(!0);return}else{var Je,bi;(Je=Te.current)==null||Je.style.setProperty("--swipe-amount-x","0px"),(bi=Te.current)==null||bi.style.setProperty("--swipe-amount-y","0px")}he(!1),re(!1),J(null)},onPointerMove:qe=>{var Xe,si,yi;if(!ee.current||!ni||((Xe=window.getSelection())==null?void 0:Xe.toString().length)>0)return;const Le=qe.clientY-ee.current.y,ri=qe.clientX-ee.current.x;var ka;const Je=(ka=a.swipeDirections)!=null?ka:Xk(H);!ne&&(Math.abs(ri)>1||Math.abs(Le)>1)&&J(Math.abs(ri)>Math.abs(Le)?"x":"y");let bi={x:0,y:0};const wa=Yi=>1/(1.5+Math.abs(Yi)/20);if(ne==="y"){if(Je.includes("top")||Je.includes("bottom"))if(Je.includes("top")&&Le<0||Je.includes("bottom")&&Le>0)bi.y=Le;else{const Yi=Le*wa(Le);bi.y=Math.abs(Yi)0)bi.x=ri;else{const Yi=ri*wa(ri);bi.x=Math.abs(Yi)0||Math.abs(bi.y)>0)&&he(!0),(si=Te.current)==null||si.style.setProperty("--swipe-amount-x",`${bi.x}px`),(yi=Te.current)==null||yi.style.setProperty("--swipe-amount-y",`${bi.y}px`)}},Mi&&!y.jsx&&Ne!=="loading"?de.createElement("button",{"aria-label":W,"data-disabled":Ve,"data-close-button":!0,onClick:Ve||!ni?()=>{}:()=>{Fe(),y.onDismiss==null||y.onDismiss.call(y,y)},className:Na(Z==null?void 0:Z.closeButton,y==null||(s=y.classNames)==null?void 0:s.closeButton)},(Wi=ae==null?void 0:ae.close)!=null?Wi:Nk):null,(Ne||y.icon||y.promise)&&y.icon!==null&&((ae==null?void 0:ae[Ne])!==null||y.icon)?de.createElement("div",{"data-icon":"",className:Na(Z==null?void 0:Z.icon,y==null||(u=y.classNames)==null?void 0:u.icon)},y.promise||y.type==="loading"&&!y.icon?y.icon||Ze():null,y.type!=="loading"?Oe:null):null,de.createElement("div",{"data-content":"",className:Na(Z==null?void 0:Z.content,y==null||(l=y.classNames)==null?void 0:l.content)},de.createElement("div",{"data-title":"",className:Na(Z==null?void 0:Z.title,y==null||(m=y.classNames)==null?void 0:m.title)},y.jsx?y.jsx:typeof y.title=="function"?y.title():y.title),y.description?de.createElement("div",{"data-description":"",className:Na(T,va,Z==null?void 0:Z.description,y==null||(c=y.classNames)==null?void 0:c.description)},typeof y.description=="function"?y.description():y.description):null),de.isValidElement(y.cancel)?y.cancel:y.cancel&&Xs(y.cancel)?de.createElement("button",{"data-button":!0,"data-cancel":!0,style:y.cancelButtonStyle||F,onClick:qe=>{Xs(y.cancel)&&ni&&(y.cancel.onClick==null||y.cancel.onClick.call(y.cancel,qe),Fe())},className:Na(Z==null?void 0:Z.cancelButton,y==null||(h=y.classNames)==null?void 0:h.cancelButton)},y.cancel.label):null,de.isValidElement(y.action)?y.action:y.action&&Xs(y.action)?de.createElement("button",{"data-button":!0,"data-action":!0,style:y.actionButtonStyle||M,onClick:qe=>{Xs(y.action)&&(y.action.onClick==null||y.action.onClick.call(y.action,qe),!qe.defaultPrevented&&Fe())},className:Na(Z==null?void 0:Z.actionButton,y==null||(d=y.classNames)==null?void 0:d.actionButton)},y.action.label):null)};function Zm(){if(typeof window>"u"||typeof document>"u")return"ltr";const a=document.documentElement.getAttribute("dir");return a==="auto"||!a?window.getComputedStyle(document.documentElement).direction:a}function ew(a,o){const r={};return[a,o].forEach((s,u)=>{const l=u===1,m=l?"--mobile-offset":"--offset",c=l?Gk:$k;function h(d){["top","right","bottom","left"].forEach(g=>{r[`${m}-${g}`]=typeof d=="number"?`${d}px`:d})}typeof s=="number"||typeof s=="string"?h(s):typeof s=="object"?["top","right","bottom","left"].forEach(d=>{s[d]===void 0?r[`${m}-${d}`]=c:r[`${m}-${d}`]=typeof s[d]=="number"?`${s[d]}px`:s[d]}):h(c)}),r}const iw=de.forwardRef(function(o,r){const{id:s,invert:u,position:l="bottom-right",hotkey:m=["altKey","KeyT"],expand:c,closeButton:h,className:d,offset:g,mobileOffset:y,theme:f="light",richColors:z,duration:w,style:k,visibleToasts:v=Wk,toastOptions:j,dir:q=Zm(),gap:x=Kk,icons:_,containerAriaLabel:C="Notifications"}=o,[D,R]=de.useState([]),F=de.useMemo(()=>s?D.filter(L=>L.toasterId===s):D.filter(L=>!L.toasterId),[D,s]),M=de.useMemo(()=>Array.from(new Set([l].concat(F.filter(L=>L.position).map(L=>L.position)))),[F,l]),[P,T]=de.useState([]),[U,H]=de.useState(!1),[K,ie]=de.useState(!1),[Z,ae]=de.useState(f!=="system"?f:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),W=de.useRef(null),ne=m.join("+").replace(/Key/g,"").replace(/Digit/g,""),J=de.useRef(null),A=de.useRef(!1),I=de.useCallback(L=>{R($=>{var le;return(le=$.find(pe=>pe.id===L.id))!=null&&le.delete||na.dismiss(L.id),$.filter(({id:pe})=>pe!==L.id)})},[]);return de.useEffect(()=>na.subscribe(L=>{if(L.dismiss){requestAnimationFrame(()=>{R($=>$.map(le=>le.id===L.id?{...le,delete:!0}:le))});return}setTimeout(()=>{Xg.flushSync(()=>{R($=>{const le=$.findIndex(pe=>pe.id===L.id);return le!==-1?[...$.slice(0,le),{...$[le],...L},...$.slice(le+1)]:[L,...$]})})})}),[D]),de.useEffect(()=>{if(f!=="system"){ae(f);return}if(f==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?ae("dark"):ae("light")),typeof window>"u")return;const L=window.matchMedia("(prefers-color-scheme: dark)");try{L.addEventListener("change",({matches:$})=>{ae($?"dark":"light")})}catch{L.addListener(({matches:le})=>{try{ae(le?"dark":"light")}catch(pe){console.error(pe)}})}},[f]),de.useEffect(()=>{D.length<=1&&H(!1)},[D]),de.useEffect(()=>{const L=$=>{var le;if(m.every(re=>$[re]||$.code===re)){var me;H(!0),(me=W.current)==null||me.focus()}$.code==="Escape"&&(document.activeElement===W.current||(le=W.current)!=null&&le.contains(document.activeElement))&&H(!1)};return document.addEventListener("keydown",L),()=>document.removeEventListener("keydown",L)},[m]),de.useEffect(()=>{if(W.current)return()=>{J.current&&(J.current.focus({preventScroll:!0}),J.current=null,A.current=!1)}},[W.current]),de.createElement("section",{ref:r,"aria-label":`${C} ${ne}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},M.map((L,$)=>{var le;const[pe,me]=L.split("-");return F.length?de.createElement("ol",{key:L,dir:q==="auto"?Zm():q,tabIndex:-1,ref:W,className:d,"data-sonner-toaster":!0,"data-sonner-theme":Z,"data-y-position":pe,"data-x-position":me,style:{"--front-toast-height":`${((le=P[0])==null?void 0:le.height)||0}px`,"--width":`${Qk}px`,"--gap":`${x}px`,...k,...ew(g,y)},onBlur:re=>{A.current&&!re.currentTarget.contains(re.relatedTarget)&&(A.current=!1,J.current&&(J.current.focus({preventScroll:!0}),J.current=null))},onFocus:re=>{re.target instanceof HTMLElement&&re.target.dataset.dismissible==="false"||A.current||(A.current=!0,J.current=re.relatedTarget)},onMouseEnter:()=>H(!0),onMouseMove:()=>H(!0),onMouseLeave:()=>{K||H(!1)},onDragEnd:()=>H(!1),onPointerDown:re=>{re.target instanceof HTMLElement&&re.target.dataset.dismissible==="false"||ie(!0)},onPointerUp:()=>ie(!1)},F.filter(re=>!re.position&&$===0||re.position===L).map((re,Ae)=>{var Me,mi;return de.createElement(Jk,{key:re.id,icons:_,index:Ae,toast:re,defaultRichColors:z,duration:(Me=j==null?void 0:j.duration)!=null?Me:w,className:j==null?void 0:j.className,descriptionClassName:j==null?void 0:j.descriptionClassName,invert:u,visibleToasts:v,closeButton:(mi=j==null?void 0:j.closeButton)!=null?mi:h,interacting:K,position:L,style:j==null?void 0:j.style,unstyled:j==null?void 0:j.unstyled,classNames:j==null?void 0:j.classNames,cancelButtonStyle:j==null?void 0:j.cancelButtonStyle,actionButtonStyle:j==null?void 0:j.actionButtonStyle,closeButtonAriaLabel:j==null?void 0:j.closeButtonAriaLabel,removeToast:I,toasts:F.filter(he=>he.position==re.position),heights:P.filter(he=>he.position==re.position),setHeights:T,expandByDefault:c,gap:x,expanded:U,swipeDirections:o.swipeDirections})})):null}))}),aw=({...a})=>B.jsx(iw,{theme:"dark",className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-card group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",error:"group-[.toaster]:bg-[#2a1a1a] group-[.toaster]:text-[#e8a0a0] group-[.toaster]:border-[#4a2a2a] [&_[data-description]]:text-[#b08080]"}},...a});function nw({health:a,config:o,onConfigClick:r,onAdvertise:s,onMenuClick:u}){const l=(a==null?void 0:a.radio_connected)??!1,[m,c]=E.useState(!1),h=async()=>{c(!0);try{const d=await We.reconnectRadio();d.connected&&Po.success("Reconnected",{description:d.message})}catch(d){Po.error("Reconnection failed",{description:d instanceof Error?d.message:"Check radio connection and power"})}finally{c(!1)}};return B.jsxs("div",{className:"flex items-center gap-4 px-4 py-2 bg-[#252525] border-b border-[#333] text-xs",children:[u&&B.jsx("button",{onClick:u,className:"md:hidden p-1 bg-transparent border-none text-[#e0e0e0] cursor-pointer","aria-label":"Open menu",children:B.jsx(Ck,{className:"h-5 w-5"})}),B.jsx("h1",{className:"hidden lg:block text-base font-semibold mr-auto",children:"RemoteTerm"}),B.jsxs("div",{className:"flex items-center gap-1 text-[#888]",children:[B.jsx("div",{className:`w-2 h-2 rounded-full ${l?"bg-[#4caf50]":"bg-[#666]"}`}),B.jsx("span",{className:"hidden lg:inline text-[#e0e0e0]",children:l?"Connected":"Disconnected"})]}),(a==null?void 0:a.serial_port)&&B.jsxs("div",{className:"hidden xl:flex items-center gap-1 text-[#888]",children:["Port: ",B.jsx("span",{className:"text-[#e0e0e0]",children:a.serial_port})]}),o&&B.jsxs(B.Fragment,{children:[B.jsx("div",{className:"hidden lg:flex items-center gap-1 text-[#888]",children:B.jsx("span",{className:"text-[#e0e0e0]",children:o.name||"Unnamed"})}),B.jsxs("div",{className:"hidden xl:flex items-center gap-1 text-[#888]",children:[o.radio.freq," MHz/SF",o.radio.sf,"/CR",o.radio.cr,"/",o.tx_power,"dBm"]})]}),B.jsx("div",{className:"flex-1 lg:hidden"}),!l&&B.jsx("button",{onClick:h,disabled:m,className:"px-3 py-1 bg-[#4a3000] border border-[#6b4500] text-[#ffa500] rounded text-xs cursor-pointer hover:bg-[#5a3a00] disabled:opacity-50 disabled:cursor-not-allowed",children:m?"Reconnecting...":"Reconnect"}),B.jsx("button",{onClick:s,disabled:!l,className:"px-3 py-1 bg-[#333] border border-[#444] text-[#e0e0e0] rounded text-xs cursor-pointer hover:bg-[#444] disabled:bg-[#333] disabled:text-[#666] disabled:cursor-not-allowed",children:"Advertise"}),B.jsx("button",{onClick:r,className:"px-3 py-1 bg-[#333] border border-[#444] text-[#e0e0e0] rounded text-xs cursor-pointer hover:bg-[#444]",children:"Config"})]})}const xu=2,rw={text:"🛜",background:"#444444",textColor:"#ffffff"};function ow(a){let o=0;for(let r=0;r>8)%30,u=35+(o>>16)%20,l=`hsl(${r}, ${s}%, ${u}%)`,m=u<45?"#ffffff":"#000000";return{background:l,text:m}}function cw(a,o,r){if(r===xu)return rw;const s=tw(a,o),u=lw(o);return{text:s,background:u.background,textColor:u.text}}function Jg({name:a,publicKey:o,size:r=28,contactType:s}){const u=cw(a,o,s);return B.jsx("div",{className:"flex items-center justify-center rounded-full font-semibold flex-shrink-0 select-none",style:{backgroundColor:u.background,color:u.textColor,width:r,height:r,fontSize:r*.45},children:u.text})}function ey(a){var o,r,s="";if(typeof a=="string"||typeof a=="number")s+=a;else if(typeof a=="object")if(Array.isArray(a)){var u=a.length;for(o=0;o{const r=new Array(a.length+o.length);for(let s=0;s({classGroupId:a,validator:o}),ay=(a=new Map,o=null,r)=>({nextPart:a,validators:o,classGroupId:r}),Yt="-",Xm=[],pw="arbitrary..",mw=a=>{const o=gw(a),{conflictingClassGroups:r,conflictingClassGroupModifiers:s}=a;return{getClassGroupId:m=>{if(m.startsWith("[")&&m.endsWith("]"))return hw(m);const c=m.split(Yt),h=c[0]===""&&c.length>1?1:0;return ny(c,h,o)},getConflictingClassGroupIds:(m,c)=>{if(c){const h=s[m],d=r[m];return h?d?uw(d,h):h:d||Xm}return r[m]||Xm}}},ny=(a,o,r)=>{if(a.length-o===0)return r.classGroupId;const u=a[o],l=r.nextPart.get(u);if(l){const d=ny(a,o+1,l);if(d)return d}const m=r.validators;if(m===null)return;const c=o===0?a.join(Yt):a.slice(o).join(Yt),h=m.length;for(let d=0;da.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const o=a.slice(1,-1),r=o.indexOf(":"),s=o.slice(0,r);return s?pw+s:void 0})(),gw=a=>{const{theme:o,classGroups:r}=a;return yw(r,o)},yw=(a,o)=>{const r=ay();for(const s in a){const u=a[s];Iu(u,r,s,o)}return r},Iu=(a,o,r,s)=>{const u=a.length;for(let l=0;l{if(typeof a=="string"){fw(a,o,r);return}if(typeof a=="function"){vw(a,o,r,s);return}kw(a,o,r,s)},fw=(a,o,r)=>{const s=a===""?o:ry(o,a);s.classGroupId=r},vw=(a,o,r,s)=>{if(ww(a)){Iu(a(s),o,r,s);return}o.validators===null&&(o.validators=[]),o.validators.push(dw(r,a))},kw=(a,o,r,s)=>{const u=Object.entries(a),l=u.length;for(let m=0;m{let r=a;const s=o.split(Yt),u=s.length;for(let l=0;l"isThemeGetter"in a&&a.isThemeGetter===!0,zw=a=>{if(a<1)return{get:()=>{},set:()=>{}};let o=0,r=Object.create(null),s=Object.create(null);const u=(l,m)=>{r[l]=m,o++,o>a&&(o=0,s=r,r=Object.create(null))};return{get(l){let m=r[l];if(m!==void 0)return m;if((m=s[l])!==void 0)return u(l,m),m},set(l,m){l in r?r[l]=m:u(l,m)}}},ju="!",Jm=":",xw=[],eh=(a,o,r,s,u)=>({modifiers:a,hasImportantModifier:o,baseClassName:r,maybePostfixModifierPosition:s,isExternal:u}),jw=a=>{const{prefix:o,experimentalParseClassName:r}=a;let s=u=>{const l=[];let m=0,c=0,h=0,d;const g=u.length;for(let k=0;kh?d-h:void 0;return eh(l,z,f,w)};if(o){const u=o+Jm,l=s;s=m=>m.startsWith(u)?l(m.slice(u.length)):eh(xw,!1,m,void 0,!0)}if(r){const u=s;s=l=>r({className:l,parseClassName:u})}return s},qw=a=>{const o=new Map;return a.orderSensitiveModifiers.forEach((r,s)=>{o.set(r,1e6+s)}),r=>{const s=[];let u=[];for(let l=0;l0&&(u.sort(),s.push(...u),u=[]),s.push(m)):u.push(m)}return u.length>0&&(u.sort(),s.push(...u)),s}},Aw=a=>({cache:zw(a.cacheSize),parseClassName:jw(a),sortModifiers:qw(a),...mw(a)}),Cw=/\s+/,Ew=(a,o)=>{const{parseClassName:r,getClassGroupId:s,getConflictingClassGroupIds:u,sortModifiers:l}=o,m=[],c=a.trim().split(Cw);let h="";for(let d=c.length-1;d>=0;d-=1){const g=c[d],{isExternal:y,modifiers:f,hasImportantModifier:z,baseClassName:w,maybePostfixModifierPosition:k}=r(g);if(y){h=g+(h.length>0?" "+h:h);continue}let v=!!k,j=s(v?w.substring(0,k):w);if(!j){if(!v){h=g+(h.length>0?" "+h:h);continue}if(j=s(w),!j){h=g+(h.length>0?" "+h:h);continue}v=!1}const q=f.length===0?"":f.length===1?f[0]:l(f).join(":"),x=z?q+ju:q,_=x+j;if(m.indexOf(_)>-1)continue;m.push(_);const C=u(j,v);for(let D=0;D0?" "+h:h)}return h},Sw=(...a)=>{let o=0,r,s,u="";for(;o{if(typeof a=="string")return a;let o,r="";for(let s=0;s{let r,s,u,l;const m=h=>{const d=o.reduce((g,y)=>y(g),a());return r=Aw(d),s=r.cache.get,u=r.cache.set,l=c,c(h)},c=h=>{const d=s(h);if(d)return d;const g=Ew(h,r);return u(h,g),g};return l=m,(...h)=>l(Sw(...h))},_w=[],Ei=a=>{const o=r=>r[a]||_w;return o.isThemeGetter=!0,o},sy=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ty=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Dw=/^\d+\/\d+$/,Fw=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Rw=/\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$/,Tw=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Pw=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Nw=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,xr=a=>Dw.test(a),Pe=a=>!!a&&!Number.isNaN(Number(a)),xn=a=>!!a&&Number.isInteger(Number(a)),su=a=>a.endsWith("%")&&Pe(a.slice(0,-1)),Xa=a=>Fw.test(a),Iw=()=>!0,Mw=a=>Rw.test(a)&&!Tw.test(a),ly=()=>!1,Ow=a=>Pw.test(a),Lw=a=>Nw.test(a),Hw=a=>!ve(a)&&!ke(a),Vw=a=>Rr(a,dy,ly),ve=a=>sy.test(a),Vn=a=>Rr(a,py,Mw),tu=a=>Rr(a,Qw,Pe),ih=a=>Rr(a,cy,ly),Uw=a=>Rr(a,uy,Lw),Js=a=>Rr(a,my,Ow),ke=a=>ty.test(a),vo=a=>Tr(a,py),Ww=a=>Tr(a,Kw),ah=a=>Tr(a,cy),$w=a=>Tr(a,dy),Gw=a=>Tr(a,uy),et=a=>Tr(a,my,!0),Rr=(a,o,r)=>{const s=sy.exec(a);return s?s[1]?o(s[1]):r(s[2]):!1},Tr=(a,o,r=!1)=>{const s=ty.exec(a);return s?s[1]?o(s[1]):r:!1},cy=a=>a==="position"||a==="percentage",uy=a=>a==="image"||a==="url",dy=a=>a==="length"||a==="size"||a==="bg-size",py=a=>a==="length",Qw=a=>a==="number",Kw=a=>a==="family-name",my=a=>a==="shadow",Yw=()=>{const a=Ei("color"),o=Ei("font"),r=Ei("text"),s=Ei("font-weight"),u=Ei("tracking"),l=Ei("leading"),m=Ei("breakpoint"),c=Ei("container"),h=Ei("spacing"),d=Ei("radius"),g=Ei("shadow"),y=Ei("inset-shadow"),f=Ei("text-shadow"),z=Ei("drop-shadow"),w=Ei("blur"),k=Ei("perspective"),v=Ei("aspect"),j=Ei("ease"),q=Ei("animate"),x=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],C=()=>[..._(),ke,ve],D=()=>["auto","hidden","clip","visible","scroll"],R=()=>["auto","contain","none"],F=()=>[ke,ve,h],M=()=>[xr,"full","auto",...F()],P=()=>[xn,"none","subgrid",ke,ve],T=()=>["auto",{span:["full",xn,ke,ve]},xn,ke,ve],U=()=>[xn,"auto",ke,ve],H=()=>["auto","min","max","fr",ke,ve],K=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ie=()=>["start","end","center","stretch","center-safe","end-safe"],Z=()=>["auto",...F()],ae=()=>[xr,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...F()],W=()=>[a,ke,ve],ne=()=>[..._(),ah,ih,{position:[ke,ve]}],J=()=>["no-repeat",{repeat:["","x","y","space","round"]}],A=()=>["auto","cover","contain",$w,Vw,{size:[ke,ve]}],I=()=>[su,vo,Vn],L=()=>["","none","full",d,ke,ve],$=()=>["",Pe,vo,Vn],le=()=>["solid","dashed","dotted","double"],pe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],me=()=>[Pe,su,ah,ih],re=()=>["","none",w,ke,ve],Ae=()=>["none",Pe,ke,ve],Me=()=>["none",Pe,ke,ve],mi=()=>[Pe,ke,ve],he=()=>[xr,"full",...F()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Xa],breakpoint:[Xa],color:[Iw],container:[Xa],"drop-shadow":[Xa],ease:["in","out","in-out"],font:[Hw],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Xa],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Xa],shadow:[Xa],spacing:["px",Pe],text:[Xa],"text-shadow":[Xa],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",xr,ve,ke,v]}],container:["container"],columns:[{columns:[Pe,ve,ke,c]}],"break-after":[{"break-after":x()}],"break-before":[{"break-before":x()}],"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:C()}],overflow:[{overflow:D()}],"overflow-x":[{"overflow-x":D()}],"overflow-y":[{"overflow-y":D()}],overscroll:[{overscroll:R()}],"overscroll-x":[{"overscroll-x":R()}],"overscroll-y":[{"overscroll-y":R()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:M()}],"inset-x":[{"inset-x":M()}],"inset-y":[{"inset-y":M()}],start:[{start:M()}],end:[{end:M()}],top:[{top:M()}],right:[{right:M()}],bottom:[{bottom:M()}],left:[{left:M()}],visibility:["visible","invisible","collapse"],z:[{z:[xn,"auto",ke,ve]}],basis:[{basis:[xr,"full","auto",c,...F()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Pe,xr,"auto","initial","none",ve]}],grow:[{grow:["",Pe,ke,ve]}],shrink:[{shrink:["",Pe,ke,ve]}],order:[{order:[xn,"first","last","none",ke,ve]}],"grid-cols":[{"grid-cols":P()}],"col-start-end":[{col:T()}],"col-start":[{"col-start":U()}],"col-end":[{"col-end":U()}],"grid-rows":[{"grid-rows":P()}],"row-start-end":[{row:T()}],"row-start":[{"row-start":U()}],"row-end":[{"row-end":U()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":H()}],"auto-rows":[{"auto-rows":H()}],gap:[{gap:F()}],"gap-x":[{"gap-x":F()}],"gap-y":[{"gap-y":F()}],"justify-content":[{justify:[...K(),"normal"]}],"justify-items":[{"justify-items":[...ie(),"normal"]}],"justify-self":[{"justify-self":["auto",...ie()]}],"align-content":[{content:["normal",...K()]}],"align-items":[{items:[...ie(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ie(),{baseline:["","last"]}]}],"place-content":[{"place-content":K()}],"place-items":[{"place-items":[...ie(),"baseline"]}],"place-self":[{"place-self":["auto",...ie()]}],p:[{p:F()}],px:[{px:F()}],py:[{py:F()}],ps:[{ps:F()}],pe:[{pe:F()}],pt:[{pt:F()}],pr:[{pr:F()}],pb:[{pb:F()}],pl:[{pl:F()}],m:[{m:Z()}],mx:[{mx:Z()}],my:[{my:Z()}],ms:[{ms:Z()}],me:[{me:Z()}],mt:[{mt:Z()}],mr:[{mr:Z()}],mb:[{mb:Z()}],ml:[{ml:Z()}],"space-x":[{"space-x":F()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":F()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],w:[{w:[c,"screen",...ae()]}],"min-w":[{"min-w":[c,"screen","none",...ae()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[m]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh",...ae()]}],"font-size":[{text:["base",r,vo,Vn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,ke,tu]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",su,ve]}],"font-family":[{font:[Ww,ve,o]}],"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:[u,ke,ve]}],"line-clamp":[{"line-clamp":[Pe,"none",ke,tu]}],leading:[{leading:[l,...F()]}],"list-image":[{"list-image":["none",ke,ve]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ke,ve]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:W()}],"text-color":[{text:W()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...le(),"wavy"]}],"text-decoration-thickness":[{decoration:[Pe,"from-font","auto",ke,Vn]}],"text-decoration-color":[{decoration:W()}],"underline-offset":[{"underline-offset":[Pe,"auto",ke,ve]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:F()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ke,ve]}],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",ke,ve]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ne()}],"bg-repeat":[{bg:J()}],"bg-size":[{bg:A()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},xn,ke,ve],radial:["",ke,ve],conic:[xn,ke,ve]},Gw,Uw]}],"bg-color":[{bg:W()}],"gradient-from-pos":[{from:I()}],"gradient-via-pos":[{via:I()}],"gradient-to-pos":[{to:I()}],"gradient-from":[{from:W()}],"gradient-via":[{via:W()}],"gradient-to":[{to:W()}],rounded:[{rounded:L()}],"rounded-s":[{"rounded-s":L()}],"rounded-e":[{"rounded-e":L()}],"rounded-t":[{"rounded-t":L()}],"rounded-r":[{"rounded-r":L()}],"rounded-b":[{"rounded-b":L()}],"rounded-l":[{"rounded-l":L()}],"rounded-ss":[{"rounded-ss":L()}],"rounded-se":[{"rounded-se":L()}],"rounded-ee":[{"rounded-ee":L()}],"rounded-es":[{"rounded-es":L()}],"rounded-tl":[{"rounded-tl":L()}],"rounded-tr":[{"rounded-tr":L()}],"rounded-br":[{"rounded-br":L()}],"rounded-bl":[{"rounded-bl":L()}],"border-w":[{border:$()}],"border-w-x":[{"border-x":$()}],"border-w-y":[{"border-y":$()}],"border-w-s":[{"border-s":$()}],"border-w-e":[{"border-e":$()}],"border-w-t":[{"border-t":$()}],"border-w-r":[{"border-r":$()}],"border-w-b":[{"border-b":$()}],"border-w-l":[{"border-l":$()}],"divide-x":[{"divide-x":$()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":$()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...le(),"hidden","none"]}],"divide-style":[{divide:[...le(),"hidden","none"]}],"border-color":[{border:W()}],"border-color-x":[{"border-x":W()}],"border-color-y":[{"border-y":W()}],"border-color-s":[{"border-s":W()}],"border-color-e":[{"border-e":W()}],"border-color-t":[{"border-t":W()}],"border-color-r":[{"border-r":W()}],"border-color-b":[{"border-b":W()}],"border-color-l":[{"border-l":W()}],"divide-color":[{divide:W()}],"outline-style":[{outline:[...le(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Pe,ke,ve]}],"outline-w":[{outline:["",Pe,vo,Vn]}],"outline-color":[{outline:W()}],shadow:[{shadow:["","none",g,et,Js]}],"shadow-color":[{shadow:W()}],"inset-shadow":[{"inset-shadow":["none",y,et,Js]}],"inset-shadow-color":[{"inset-shadow":W()}],"ring-w":[{ring:$()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:W()}],"ring-offset-w":[{"ring-offset":[Pe,Vn]}],"ring-offset-color":[{"ring-offset":W()}],"inset-ring-w":[{"inset-ring":$()}],"inset-ring-color":[{"inset-ring":W()}],"text-shadow":[{"text-shadow":["none",f,et,Js]}],"text-shadow-color":[{"text-shadow":W()}],opacity:[{opacity:[Pe,ke,ve]}],"mix-blend":[{"mix-blend":[...pe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":pe()}],"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":[Pe]}],"mask-image-linear-from-pos":[{"mask-linear-from":me()}],"mask-image-linear-to-pos":[{"mask-linear-to":me()}],"mask-image-linear-from-color":[{"mask-linear-from":W()}],"mask-image-linear-to-color":[{"mask-linear-to":W()}],"mask-image-t-from-pos":[{"mask-t-from":me()}],"mask-image-t-to-pos":[{"mask-t-to":me()}],"mask-image-t-from-color":[{"mask-t-from":W()}],"mask-image-t-to-color":[{"mask-t-to":W()}],"mask-image-r-from-pos":[{"mask-r-from":me()}],"mask-image-r-to-pos":[{"mask-r-to":me()}],"mask-image-r-from-color":[{"mask-r-from":W()}],"mask-image-r-to-color":[{"mask-r-to":W()}],"mask-image-b-from-pos":[{"mask-b-from":me()}],"mask-image-b-to-pos":[{"mask-b-to":me()}],"mask-image-b-from-color":[{"mask-b-from":W()}],"mask-image-b-to-color":[{"mask-b-to":W()}],"mask-image-l-from-pos":[{"mask-l-from":me()}],"mask-image-l-to-pos":[{"mask-l-to":me()}],"mask-image-l-from-color":[{"mask-l-from":W()}],"mask-image-l-to-color":[{"mask-l-to":W()}],"mask-image-x-from-pos":[{"mask-x-from":me()}],"mask-image-x-to-pos":[{"mask-x-to":me()}],"mask-image-x-from-color":[{"mask-x-from":W()}],"mask-image-x-to-color":[{"mask-x-to":W()}],"mask-image-y-from-pos":[{"mask-y-from":me()}],"mask-image-y-to-pos":[{"mask-y-to":me()}],"mask-image-y-from-color":[{"mask-y-from":W()}],"mask-image-y-to-color":[{"mask-y-to":W()}],"mask-image-radial":[{"mask-radial":[ke,ve]}],"mask-image-radial-from-pos":[{"mask-radial-from":me()}],"mask-image-radial-to-pos":[{"mask-radial-to":me()}],"mask-image-radial-from-color":[{"mask-radial-from":W()}],"mask-image-radial-to-color":[{"mask-radial-to":W()}],"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":_()}],"mask-image-conic-pos":[{"mask-conic":[Pe]}],"mask-image-conic-from-pos":[{"mask-conic-from":me()}],"mask-image-conic-to-pos":[{"mask-conic-to":me()}],"mask-image-conic-from-color":[{"mask-conic-from":W()}],"mask-image-conic-to-color":[{"mask-conic-to":W()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ne()}],"mask-repeat":[{mask:J()}],"mask-size":[{mask:A()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ke,ve]}],filter:[{filter:["","none",ke,ve]}],blur:[{blur:re()}],brightness:[{brightness:[Pe,ke,ve]}],contrast:[{contrast:[Pe,ke,ve]}],"drop-shadow":[{"drop-shadow":["","none",z,et,Js]}],"drop-shadow-color":[{"drop-shadow":W()}],grayscale:[{grayscale:["",Pe,ke,ve]}],"hue-rotate":[{"hue-rotate":[Pe,ke,ve]}],invert:[{invert:["",Pe,ke,ve]}],saturate:[{saturate:[Pe,ke,ve]}],sepia:[{sepia:["",Pe,ke,ve]}],"backdrop-filter":[{"backdrop-filter":["","none",ke,ve]}],"backdrop-blur":[{"backdrop-blur":re()}],"backdrop-brightness":[{"backdrop-brightness":[Pe,ke,ve]}],"backdrop-contrast":[{"backdrop-contrast":[Pe,ke,ve]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Pe,ke,ve]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Pe,ke,ve]}],"backdrop-invert":[{"backdrop-invert":["",Pe,ke,ve]}],"backdrop-opacity":[{"backdrop-opacity":[Pe,ke,ve]}],"backdrop-saturate":[{"backdrop-saturate":[Pe,ke,ve]}],"backdrop-sepia":[{"backdrop-sepia":["",Pe,ke,ve]}],"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",ke,ve]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Pe,"initial",ke,ve]}],ease:[{ease:["linear","initial",j,ke,ve]}],delay:[{delay:[Pe,ke,ve]}],animate:[{animate:["none",q,ke,ve]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[k,ke,ve]}],"perspective-origin":[{"perspective-origin":C()}],rotate:[{rotate:Ae()}],"rotate-x":[{"rotate-x":Ae()}],"rotate-y":[{"rotate-y":Ae()}],"rotate-z":[{"rotate-z":Ae()}],scale:[{scale:Me()}],"scale-x":[{"scale-x":Me()}],"scale-y":[{"scale-y":Me()}],"scale-z":[{"scale-z":Me()}],"scale-3d":["scale-3d"],skew:[{skew:mi()}],"skew-x":[{"skew-x":mi()}],"skew-y":[{"skew-y":mi()}],transform:[{transform:[ke,ve,"","none","gpu","cpu"]}],"transform-origin":[{origin:C()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:he()}],"translate-x":[{"translate-x":he()}],"translate-y":[{"translate-y":he()}],"translate-z":[{"translate-z":he()}],"translate-none":["translate-none"],accent:[{accent:W()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:W()}],"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",ke,ve]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"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-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-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",ke,ve]}],fill:[{fill:["none",...W()]}],"stroke-w":[{stroke:[Pe,vo,Vn,tu]}],stroke:[{stroke:["none",...W()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","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","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","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-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-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-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-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"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Zw=Bw(Yw);function $e(...a){return Zw(iy(a))}const xi=E.forwardRef(({className:a,type:o,...r},s)=>B.jsx("input",{type:o,className:$e("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),ref:s,...r}));xi.displayName="Input";function nh(a,o){if(typeof a=="function")return a(o);a!=null&&(a.current=o)}function Lo(...a){return o=>{let r=!1;const s=a.map(u=>{const l=nh(u,o);return!r&&typeof l=="function"&&(r=!0),l});if(r)return()=>{for(let u=0;u{let{children:l,...m}=s;hy(l)&&typeof Zt=="function"&&(l=Zt(l._payload));const c=E.Children.toArray(l),h=c.find(nz);if(h){const d=h.props.children,g=c.map(y=>y===h?E.Children.count(d)>1?E.Children.only(null):E.isValidElement(d)?d.props.children:null:y);return B.jsx(o,{...m,ref:u,children:E.isValidElement(d)?E.cloneElement(d,void 0,g):null})}return B.jsx(o,{...m,ref:u,children:l})});return r.displayName=`${a}.Slot`,r}var ez=Mu("Slot");function iz(a){const o=E.forwardRef((r,s)=>{let{children:u,...l}=r;if(hy(u)&&typeof Zt=="function"&&(u=Zt(u._payload)),E.isValidElement(u)){const m=oz(u),c=rz(l,u.props);return u.type!==E.Fragment&&(c.ref=s?Lo(s,m):m),E.cloneElement(u,c)}return E.Children.count(u)>1?E.Children.only(null):null});return o.displayName=`${a}.SlotClone`,o}var az=Symbol("radix.slottable");function nz(a){return E.isValidElement(a)&&typeof a.type=="function"&&"__radixId"in a.type&&a.type.__radixId===az}function rz(a,o){const r={...o};for(const s in o){const u=a[s],l=o[s];/^on[A-Z]/.test(s)?u&&l?r[s]=(...c)=>{const h=l(...c);return u(...c),h}:u&&(r[s]=u):s==="style"?r[s]={...u,...l}:s==="className"&&(r[s]=[u,l].filter(Boolean).join(" "))}return{...a,...r}}function oz(a){var s,u;let o=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,r=o&&"isReactWarning"in o&&o.isReactWarning;return r?a.ref:(o=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,r=o&&"isReactWarning"in o&&o.isReactWarning,r?a.props.ref:a.props.ref||a.ref)}const rh=a=>typeof a=="boolean"?`${a}`:a===0?"0":a,oh=iy,nl=(a,o)=>r=>{var s;if((o==null?void 0:o.variants)==null)return oh(a,r==null?void 0:r.class,r==null?void 0:r.className);const{variants:u,defaultVariants:l}=o,m=Object.keys(u).map(d=>{const g=r==null?void 0:r[d],y=l==null?void 0:l[d];if(g===null)return null;const f=rh(g)||rh(y);return u[d][f]}),c=r&&Object.entries(r).reduce((d,g)=>{let[y,f]=g;return f===void 0||(d[y]=f),d},{}),h=o==null||(s=o.compoundVariants)===null||s===void 0?void 0:s.reduce((d,g)=>{let{class:y,className:f,...z}=g;return Object.entries(z).every(w=>{let[k,v]=w;return Array.isArray(v)?v.includes({...l,...c}[k]):{...l,...c}[k]===v})?[...d,y,f]:d},[]);return oh(a,m,h,r==null?void 0:r.class,r==null?void 0:r.className)},sz=nl("inline-flex items-center justify-center 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",{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-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),Ha=E.forwardRef(({className:a,variant:o,size:r,asChild:s=!1,...u},l)=>{const m=s?ez:"button";return B.jsx(m,{className:$e(sz({variant:o,size:r,className:a})),ref:l,...u})});Ha.displayName="Button";function tz(){try{return localStorage.getItem("remoteterm-sortOrder")==="alpha"?"alpha":"recent"}catch{return"recent"}}function lz(a){try{localStorage.setItem("remoteterm-sortOrder",a)}catch{}}function cz({contacts:a,channels:o,activeConversation:r,onSelectConversation:s,onNewMessage:u,lastMessageTimes:l,unreadCounts:m,showCracker:c,crackerRunning:h,onToggleCracker:d,onMarkAllRead:g}){const[y,f]=E.useState(tz),[z,w]=E.useState(""),k=()=>{const T=y==="alpha"?"recent":"alpha";f(T),lz(T)},v=T=>{w(""),s(T)},j=(T,U)=>(r==null?void 0:r.type)===T&&(r==null?void 0:r.id)===U,q=(T,U)=>{const H=Oa(T,U);return m[H]||0},x=(T,U)=>{const H=Oa(T,U);return l[H]||0},_=o.reduce((T,U)=>(T.some(H=>H.name===U.name)||T.push(U),T),[]),C=a.filter(T=>T.public_key&&T.public_key.length>0).sort((T,U)=>T.name&&!U.name?-1:!T.name&&U.name?1:(T.name||"").localeCompare(U.name||"")).reduce((T,U)=>{const H=Br(U.public_key);return T.some(K=>Br(K.public_key)===H)||T.push(U),T},[]),D=[..._].sort((T,U)=>{if(T.name==="Public")return-1;if(U.name==="Public")return 1;if(y==="recent"){const H=x("channel",T.key),K=x("channel",U.key);if(H&&K)return K-H;if(H&&!K)return-1;if(!H&&K)return 1}return T.name.localeCompare(U.name)}),R=[...C].sort((T,U)=>{const H=T.type===xu,K=U.type===xu;if(H&&!K)return 1;if(!H&&K)return-1;if(H&&K)return(T.name||T.public_key).localeCompare(U.name||U.public_key);if(y==="recent"){const ie=x("contact",T.public_key),Z=x("contact",U.public_key);if(ie&&Z)return Z-ie;if(ie&&!Z)return-1;if(!ie&&Z)return 1}return(T.name||T.public_key).localeCompare(U.name||U.public_key)}),F=z.toLowerCase().trim(),M=F?D.filter(T=>T.name.toLowerCase().includes(F)):D,P=F?R.filter(T=>{var U;return((U=T.name)==null?void 0:U.toLowerCase().includes(F))||T.public_key.toLowerCase().includes(F)}):R;return B.jsxs("div",{className:"sidebar w-60 h-full min-h-0 bg-card border-r border-border flex flex-col",children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-3 border-b border-border",children:[B.jsx("h2",{className:"text-xs uppercase text-muted-foreground font-medium",children:"Conversations"}),B.jsx(Ha,{variant:"ghost",size:"sm",onClick:u,title:"New Message",className:"h-6 w-6 p-0 text-muted-foreground hover:text-foreground",children:"+"})]}),B.jsxs("div",{className:"relative px-3 py-2 border-b border-border",children:[B.jsx(xi,{type:"text",placeholder:"Search...",value:z,onChange:T=>w(T.target.value),className:"h-8 text-sm pr-8"}),z&&B.jsx("button",{className:"absolute right-4 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground text-lg leading-none",onClick:()=>w(""),title:"Clear search",children:"×"})]}),B.jsxs("div",{className:"flex-1 overflow-y-auto",children:[!F&&B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",j("raw","raw")&&"bg-accent border-l-primary"),onClick:()=>v({type:"raw",id:"raw",name:"Raw Packet Feed"}),children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"📡"}),B.jsx("span",{className:"flex-1 truncate",children:"Packet Feed"})]}),!F&&B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",c&&"bg-accent border-l-primary"),onClick:d,children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"🔓"}),B.jsxs("span",{className:"flex-1 truncate",children:[c?"Hide":"Show"," Cracker",B.jsxs("span",{className:$e("ml-1 text-xs",h?"text-green-500":"text-muted-foreground"),children:["(",h?"running":"stopped",")"]})]})]}),!F&&Object.keys(m).length>0&&B.jsxs("div",{className:"px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",onClick:g,children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"✓"}),B.jsx("span",{className:"flex-1 truncate text-muted-foreground",children:"Mark all as read"})]}),M.length>0&&B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[B.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Channels"}),B.jsx("button",{className:"bg-transparent border border-border text-muted-foreground px-1.5 py-0.5 text-[10px] rounded hover:bg-accent hover:text-foreground",onClick:k,title:y==="alpha"?"Sort by recent":"Sort alphabetically",children:y==="alpha"?"A-Z":"⏱"})]}),M.map(T=>{const U=q("channel",T.key);return B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",j("channel",T.key)&&"bg-accent border-l-primary",U>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>v({type:"channel",id:T.key,name:T.name}),children:[B.jsx("span",{className:"text-muted-foreground text-xs",children:"#"}),B.jsx("span",{className:"name flex-1 truncate",children:T.name}),U>0&&B.jsx("span",{className:"bg-primary text-primary-foreground text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",children:U})]},`chan-${T.key}`)})]}),P.length>0&&B.jsxs(B.Fragment,{children:[B.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[B.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Contacts"}),M.length===0&&B.jsx("button",{className:"bg-transparent border border-border text-muted-foreground px-1.5 py-0.5 text-[10px] rounded hover:bg-accent hover:text-foreground",onClick:k,title:y==="alpha"?"Sort by recent":"Sort alphabetically",children:y==="alpha"?"A-Z":"⏱"})]}),P.map(T=>{const U=q("contact",T.public_key);return B.jsxs("div",{className:$e("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",j("contact",T.public_key)&&"bg-accent border-l-primary",U>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>v({type:"contact",id:T.public_key,name:Yn(T.name,T.public_key)}),children:[B.jsx(Jg,{name:T.name,publicKey:T.public_key,size:24,contactType:T.type}),B.jsx("span",{className:"name flex-1 truncate",children:Yn(T.name,T.public_key)}),U>0&&B.jsx("span",{className:"bg-primary text-primary-foreground text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",children:U})]},T.public_key)})]}),P.length===0&&M.length===0&&B.jsx("div",{className:"p-5 text-center text-muted-foreground",children:F?"No matches found":"No conversations yet"})]})]})}function sh(a){const o=a.indexOf(": ");if(o>0&&o<50){const r=a.substring(0,o);if(!r.includes(":"))return{sender:r,content:a.substring(o+2)}}return{sender:null,content:a}}function th(a){const o=new Date(a*1e3),r=new Date,s=o.toDateString()===r.toDateString(),u=o.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return s?u:`${o.toLocaleDateString([],{month:"short",day:"numeric"})} ${u}`}function uz(a,o){if(!o)return a;const r=/@\[([^\]]+)\]/g,s=[];let u=0,l,m=0;for(;(l=r.exec(a))!==null;){l.index>u&&s.push(a.slice(u,l.index));const c=l[1],h=c===o;s.push(B.jsxs("span",{className:$e("rounded px-0.5",h?"bg-primary/30 text-primary font-medium":"bg-muted-foreground/20"),children:["@[",c,"]"]},m++)),u=l.index+l[0].length}return u0?s:a}function dz({messages:a,contacts:o,loading:r,loadingOlder:s=!1,hasOlderMessages:u=!1,onSenderClick:l,onLoadOlder:m,radioName:c}){const h=E.useRef(null),d=E.useRef(0),g=E.useRef(!0),[y,f]=E.useState(!1),z=E.useRef({scrollTop:0,scrollHeight:0,clientHeight:0,wasNearTop:!1,wasNearBottom:!0});E.useLayoutEffect(()=>{if(!h.current)return;const C=h.current,D=a.length-d.current;if(g.current&&a.length>0)C.scrollTop=C.scrollHeight,g.current=!1;else if(D>0&&d.current>0){const R=C.scrollHeight-z.current.scrollHeight;z.current.wasNearTop&&R>0?C.scrollTop=z.current.scrollTop+R:z.current.wasNearBottom&&(C.scrollTop=C.scrollHeight)}d.current=a.length},[a]),E.useEffect(()=>{a.length===0&&(g.current=!0,d.current=0,z.current={scrollTop:0,scrollHeight:0,clientHeight:0,wasNearTop:!1,wasNearBottom:!0})},[a.length]);const w=E.useCallback(()=>{if(!h.current)return;const{scrollTop:C,scrollHeight:D,clientHeight:R}=h.current,F=D-C-R;z.current={scrollTop:C,scrollHeight:D,clientHeight:R,wasNearTop:C<150,wasNearBottom:F<100},f(F>100),!(!m||s||!u)&&C<100&&m()},[m,s,u]),k=E.useCallback(()=>{h.current&&(h.current.scrollTop=h.current.scrollHeight)},[]),v=C=>C&&o.find(D=>Gg(D.public_key,C))||null,j=C=>o.find(D=>D.name===C)||null;if(r)return B.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"Loading messages..."});if(a.length===0)return B.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"No messages yet"});const x=[...a.reduce((C,D)=>{const R=`${D.type}-${D.conversation_key}-${D.text}-${D.sender_timestamp}`;return C.find(M=>`${M.type}-${M.conversation_key}-${M.text}-${M.sender_timestamp}`===R)||C.push(D),C},[])].sort((C,D)=>C.received_at-D.received_at),_=(C,D)=>C.outgoing?"__outgoing__":C.type==="PRIV"&&C.conversation_key?C.conversation_key:D||"__unknown__";return B.jsxs("div",{className:"flex-1 overflow-hidden relative",children:[B.jsxs("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-0.5",ref:h,onScroll:w,children:[s&&B.jsx("div",{className:"text-center py-2 text-muted-foreground text-sm",children:"Loading older messages..."}),!s&&u&&B.jsx("div",{className:"text-center py-2 text-muted-foreground text-xs",children:"Scroll up for older messages"}),x.map((C,D)=>{var J;const R=C.type==="PRIV"?v(C.conversation_key):null,F=(R==null?void 0:R.type)===$g,{sender:M,content:P}=F?{sender:null,content:C.text}:sh(C.text),T=C.outgoing?"You":(R==null?void 0:R.name)||M||((J=C.conversation_key)==null?void 0:J.slice(0,8))||"Unknown",U=!C.outgoing&&l&&T!=="Unknown",H=_(C,M),K=x[D-1],ie=K?_(K,sh(K.text).sender):null,Z=!C.outgoing&&H!==ie,ae=D===0;let W=null,ne="";if(!C.outgoing){if(C.type==="PRIV"&&C.conversation_key)W=(R==null?void 0:R.name)||null,ne=C.conversation_key;else if(M){const A=j(M);W=M,ne=(A==null?void 0:A.public_key)||`name:${M}`}}return B.jsxs("div",{className:$e("flex items-start max-w-[85%]",C.outgoing&&"flex-row-reverse self-end",Z&&!ae&&"mt-3"),children:[!C.outgoing&&B.jsx("div",{className:"w-10 flex-shrink-0 flex items-start pt-0.5",children:Z&&ne&&B.jsx(Jg,{name:W,publicKey:ne,size:32})}),B.jsxs("div",{className:$e("py-1.5 px-3 rounded-lg min-w-0",C.outgoing?"bg-[#1e3a29]":"bg-muted"),children:[Z&&B.jsxs("div",{className:"text-[13px] font-semibold text-muted-foreground mb-0.5",children:[U?B.jsx("span",{className:"cursor-pointer hover:text-primary hover:underline",onClick:()=>l(T),title:`Mention ${T}`,children:T}):T,B.jsx("span",{className:"font-normal text-muted-foreground/70 ml-2 text-[11px]",children:th(C.sender_timestamp||C.received_at)})]}),B.jsxs("div",{className:"break-words whitespace-pre-wrap",children:[P.split(` `).map((A,I,L)=>B.jsxs("span",{children:[uz(A,c),I0?` ✓${C.acked>1?C.acked:""}`:" ?")]})]})]},C.id)})]}),y&&B.jsx("button",{onClick:k,className:"absolute bottom-4 right-4 w-10 h-10 rounded-full bg-muted hover:bg-accent border border-border flex items-center justify-center shadow-lg transition-opacity",title:"Scroll to bottom",children:B.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-muted-foreground",children:B.jsx("polyline",{points:"6 9 12 15 18 9"})})})]})}const lh=156,pz=140,mz=156,hz=120,gz=8,yz=E.forwardRef(function({onSend:o,disabled:r,placeholder:s,isRepeaterMode:u,conversationType:l,senderName:m},c){const[h,d]=E.useState(""),[g,y]=E.useState(!1),f=E.useRef(null);E.useImperativeHandle(c,()=>({appendText:C=>{var D;d(R=>R+C),(D=f.current)==null||D.focus()}}));const z=E.useMemo(()=>{if(l==="contact")return{warningAt:pz,dangerAt:lh,hardLimit:lh};if(l==="channel"){const C=(m==null?void 0:m.length)??10,D=Math.max(1,mz-C-2);return{warningAt:hz,dangerAt:Math.max(1,D-gz),hardLimit:D}}return null},[l,m]),{limitState:w,warningMessage:k}=E.useMemo(()=>{if(!z)return{limitState:"normal",warningMessage:null};const C=h.length;return C>=z.hardLimit?{limitState:"error",warningMessage:"likely truncated by radio"}:C>=z.dangerAt?{limitState:"danger",warningMessage:"may impact multi-repeater hop delivery"}:C>=z.warningAt?{limitState:"warning",warningMessage:"may impact multi-repeater hop delivery"}:{limitState:"normal",warningMessage:null}},[h.length,z]),v=z?z.hardLimit-h.length:0,j=E.useCallback(async C=>{C.preventDefault();const D=h.trim();if(u){if(g||r)return;const R=D==="."?"":D;y(!0);try{await o(R),d("")}catch(F){console.error("Failed to request telemetry:",F);return}finally{y(!1)}setTimeout(()=>{var F;return(F=f.current)==null?void 0:F.focus()},0)}else{if(!D||g||r)return;y(!0);try{await o(D),d("")}catch(R){console.error("Failed to send message:",R);return}finally{y(!1)}setTimeout(()=>{var R;return(R=f.current)==null?void 0:R.focus()},0)}},[h,g,r,o,u]),q=E.useCallback(C=>{C.key==="Enter"&&!C.shiftKey&&(C.preventDefault(),j(C))},[j]),x=u?h.trim().length>0||h===".":h.trim().length>0,_=!u&&z!==null;return B.jsxs("form",{className:"px-4 py-3 border-t border-border flex flex-col gap-1",onSubmit:j,children:[B.jsxs("div",{className:"flex gap-2",children:[B.jsx(xi,{ref:f,type:u?"password":"text",value:h,onChange:C=>d(C.target.value),onKeyDown:q,placeholder:s||(u?"Enter password (or . for none)...":"Type a message..."),disabled:r||g,className:"flex-1 min-w-0"}),B.jsx(Ha,{type:"submit",disabled:r||g||!x,className:"flex-shrink-0",children:g?u?"Fetching...":"Sending...":u?"Fetch":"Send"})]}),_&&B.jsxs("div",{className:"flex items-center justify-end gap-2 text-xs",children:[B.jsxs("span",{className:$e("tabular-nums",w==="error"||w==="danger"?"text-red-500 font-medium":w==="warning"?"text-yellow-500":"text-muted-foreground"),children:[h.length,"/",z.hardLimit,v<0&&` (${v})`]}),k&&B.jsxs("span",{className:$e(w==="error"?"text-red-500":"text-yellow-500"),children:["— ",k]})]})]})});function Si(a,o,{checkForDefaultPrevented:r=!0}={}){return function(u){if(a==null||a(u),r===!1||!u.defaultPrevented)return o==null?void 0:o(u)}}function bz(a,o){const r=E.createContext(o),s=l=>{const{children:m,...c}=l,h=E.useMemo(()=>c,Object.values(c));return B.jsx(r.Provider,{value:h,children:m})};s.displayName=a+"Provider";function u(l){const m=E.useContext(r);if(m)return m;if(o!==void 0)return o;throw new Error(`\`${l}\` must be used within \`${a}\``)}return[s,u]}function Ho(a,o=[]){let r=[];function s(l,m){const c=E.createContext(m),h=r.length;r=[...r,m];const d=y=>{var j;const{scope:f,children:z,...w}=y,k=((j=f==null?void 0:f[a])==null?void 0:j[h])||c,v=E.useMemo(()=>w,Object.values(w));return B.jsx(k.Provider,{value:v,children:z})};d.displayName=l+"Provider";function g(y,f){var k;const z=((k=f==null?void 0:f[a])==null?void 0:k[h])||c,w=E.useContext(z);if(w)return w;if(m!==void 0)return m;throw new Error(`\`${y}\` must be used within \`${l}\``)}return[d,g]}const u=()=>{const l=r.map(m=>E.createContext(m));return function(c){const h=(c==null?void 0:c[a])||l;return E.useMemo(()=>({[`__scope${a}`]:{...c,[a]:h}}),[c,h])}};return u.scopeName=a,[s,fz(u,...o)]}function fz(...a){const o=a[0];if(a.length===1)return o;const r=()=>{const s=a.map(u=>({useScope:u(),scopeName:u.scopeName}));return function(l){const m=s.reduce((c,{useScope:h,scopeName:d})=>{const y=h(l)[`__scope${d}`];return{...c,...y}},{});return E.useMemo(()=>({[`__scope${o.scopeName}`]:m}),[m])}};return r.scopeName=o.scopeName,r}var _r=globalThis!=null&&globalThis.document?E.useLayoutEffect:()=>{},vz=Pu[" useId ".trim().toString()]||(()=>{}),kz=0;function No(a){const[o,r]=E.useState(vz());return _r(()=>{r(s=>s??String(kz++))},[a]),o?`radix-${o}`:""}var wz=Pu[" useInsertionEffect ".trim().toString()]||_r;function rl({prop:a,defaultProp:o,onChange:r=()=>{},caller:s}){const[u,l,m]=zz({defaultProp:o,onChange:r}),c=a!==void 0,h=c?a:u;{const g=E.useRef(a!==void 0);E.useEffect(()=>{const y=g.current;y!==c&&console.warn(`${s} is changing from ${y?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),g.current=c},[c,s])}const d=E.useCallback(g=>{var y;if(c){const f=xz(g)?g(a):g;f!==a&&((y=m.current)==null||y.call(m,f))}else l(g)},[c,a,l,m]);return[h,d]}function zz({defaultProp:a,onChange:o}){const[r,s]=E.useState(a),u=E.useRef(r),l=E.useRef(o);return wz(()=>{l.current=o},[o]),E.useEffect(()=>{var m;u.current!==r&&((m=l.current)==null||m.call(l,r),u.current=r)},[r,u]),[r,s,l]}function xz(a){return typeof a=="function"}function jz(a){const o=qz(a),r=E.forwardRef((s,u)=>{const{children:l,...m}=s,c=E.Children.toArray(l),h=c.find(Cz);if(h){const d=h.props.children,g=c.map(y=>y===h?E.Children.count(d)>1?E.Children.only(null):E.isValidElement(d)?d.props.children:null:y);return B.jsx(o,{...m,ref:u,children:E.isValidElement(d)?E.cloneElement(d,void 0,g):null})}return B.jsx(o,{...m,ref:u,children:l})});return r.displayName=`${a}.Slot`,r}function qz(a){const o=E.forwardRef((r,s)=>{const{children:u,...l}=r;if(E.isValidElement(u)){const m=Sz(u),c=Ez(l,u.props);return u.type!==E.Fragment&&(c.ref=s?Lo(s,m):m),E.cloneElement(u,c)}return E.Children.count(u)>1?E.Children.only(null):null});return o.displayName=`${a}.SlotClone`,o}var Az=Symbol("radix.slottable");function Cz(a){return E.isValidElement(a)&&typeof a.type=="function"&&"__radixId"in a.type&&a.type.__radixId===Az}function Ez(a,o){const r={...o};for(const s in o){const u=a[s],l=o[s];/^on[A-Z]/.test(s)?u&&l?r[s]=(...c)=>{const h=l(...c);return u(...c),h}:u&&(r[s]=u):s==="style"?r[s]={...u,...l}:s==="className"&&(r[s]=[u,l].filter(Boolean).join(" "))}return{...a,...r}}function Sz(a){var s,u;let o=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,r=o&&"isReactWarning"in o&&o.isReactWarning;return r?a.ref:(o=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,r=o&&"isReactWarning"in o&&o.isReactWarning,r?a.props.ref:a.props.ref||a.ref)}var Bz=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Fi=Bz.reduce((a,o)=>{const r=jz(`Primitive.${o}`),s=E.forwardRef((u,l)=>{const{asChild:m,...c}=u,h=m?r:o;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),B.jsx(h,{...c,ref:l})});return s.displayName=`Primitive.${o}`,{...a,[o]:s}},{});function _z(a,o){a&&Zg.flushSync(()=>a.dispatchEvent(o))}function Dr(a){const o=E.useRef(a);return E.useEffect(()=>{o.current=a}),E.useMemo(()=>(...r)=>{var s;return(s=o.current)==null?void 0:s.call(o,...r)},[])}function Dz(a,o=globalThis==null?void 0:globalThis.document){const r=Dr(a);E.useEffect(()=>{const s=u=>{u.key==="Escape"&&r(u)};return o.addEventListener("keydown",s,{capture:!0}),()=>o.removeEventListener("keydown",s,{capture:!0})},[r,o])}var Fz="DismissableLayer",qu="dismissableLayer.update",Rz="dismissableLayer.pointerDownOutside",Tz="dismissableLayer.focusOutside",ch,gy=E.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),yy=E.forwardRef((a,o)=>{const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:l,onInteractOutside:m,onDismiss:c,...h}=a,d=E.useContext(gy),[g,y]=E.useState(null),f=(g==null?void 0:g.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,z]=E.useState({}),w=fa(o,R=>y(R)),k=Array.from(d.layers),[v]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),j=k.indexOf(v),q=g?k.indexOf(g):-1,x=d.layersWithOutsidePointerEventsDisabled.size>0,_=q>=j,C=Iz(R=>{const F=R.target,M=[...d.branches].some(P=>P.contains(F));!_||M||(u==null||u(R),m==null||m(R),R.defaultPrevented||c==null||c())},f),D=Mz(R=>{const F=R.target;[...d.branches].some(P=>P.contains(F))||(l==null||l(R),m==null||m(R),R.defaultPrevented||c==null||c())},f);return Dz(R=>{q===d.layers.size-1&&(s==null||s(R),!R.defaultPrevented&&c&&(R.preventDefault(),c()))},f),E.useEffect(()=>{if(g)return r&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(ch=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(g)),d.layers.add(g),uh(),()=>{r&&d.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=ch)}},[g,f,r,d]),E.useEffect(()=>()=>{g&&(d.layers.delete(g),d.layersWithOutsidePointerEventsDisabled.delete(g),uh())},[g,d]),E.useEffect(()=>{const R=()=>z({});return document.addEventListener(qu,R),()=>document.removeEventListener(qu,R)},[]),B.jsx(Fi.div,{...h,ref:w,style:{pointerEvents:x?_?"auto":"none":void 0,...a.style},onFocusCapture:Si(a.onFocusCapture,D.onFocusCapture),onBlurCapture:Si(a.onBlurCapture,D.onBlurCapture),onPointerDownCapture:Si(a.onPointerDownCapture,C.onPointerDownCapture)})});yy.displayName=Fz;var Pz="DismissableLayerBranch",Nz=E.forwardRef((a,o)=>{const r=E.useContext(gy),s=E.useRef(null),u=fa(o,s);return E.useEffect(()=>{const l=s.current;if(l)return r.branches.add(l),()=>{r.branches.delete(l)}},[r.branches]),B.jsx(Fi.div,{...a,ref:u})});Nz.displayName=Pz;function Iz(a,o=globalThis==null?void 0:globalThis.document){const r=Dr(a),s=E.useRef(!1),u=E.useRef(()=>{});return E.useEffect(()=>{const l=c=>{if(c.target&&!s.current){let h=function(){by(Rz,r,d,{discrete:!0})};const d={originalEvent:c};c.pointerType==="touch"?(o.removeEventListener("click",u.current),u.current=h,o.addEventListener("click",u.current,{once:!0})):h()}else o.removeEventListener("click",u.current);s.current=!1},m=window.setTimeout(()=>{o.addEventListener("pointerdown",l)},0);return()=>{window.clearTimeout(m),o.removeEventListener("pointerdown",l),o.removeEventListener("click",u.current)}},[o,r]),{onPointerDownCapture:()=>s.current=!0}}function Mz(a,o=globalThis==null?void 0:globalThis.document){const r=Dr(a),s=E.useRef(!1);return E.useEffect(()=>{const u=l=>{l.target&&!s.current&&by(Tz,r,{originalEvent:l},{discrete:!1})};return o.addEventListener("focusin",u),()=>o.removeEventListener("focusin",u)},[o,r]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}function uh(){const a=new CustomEvent(qu);document.dispatchEvent(a)}function by(a,o,r,{discrete:s}){const u=r.originalEvent.target,l=new CustomEvent(a,{bubbles:!1,cancelable:!0,detail:r});o&&u.addEventListener(a,o,{once:!0}),s?_z(u,l):u.dispatchEvent(l)}var lu="focusScope.autoFocusOnMount",cu="focusScope.autoFocusOnUnmount",dh={bubbles:!1,cancelable:!0},Oz="FocusScope",fy=E.forwardRef((a,o)=>{const{loop:r=!1,trapped:s=!1,onMountAutoFocus:u,onUnmountAutoFocus:l,...m}=a,[c,h]=E.useState(null),d=Dr(u),g=Dr(l),y=E.useRef(null),f=fa(o,k=>h(k)),z=E.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;E.useEffect(()=>{if(s){let k=function(x){if(z.paused||!c)return;const _=x.target;c.contains(_)?y.current=_:jn(y.current,{select:!0})},v=function(x){if(z.paused||!c)return;const _=x.relatedTarget;_!==null&&(c.contains(_)||jn(y.current,{select:!0}))},j=function(x){if(document.activeElement===document.body)for(const C of x)C.removedNodes.length>0&&jn(c)};document.addEventListener("focusin",k),document.addEventListener("focusout",v);const q=new MutationObserver(j);return c&&q.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",k),document.removeEventListener("focusout",v),q.disconnect()}}},[s,c,z.paused]),E.useEffect(()=>{if(c){mh.add(z);const k=document.activeElement;if(!c.contains(k)){const j=new CustomEvent(lu,dh);c.addEventListener(lu,d),c.dispatchEvent(j),j.defaultPrevented||(Lz($z(vy(c)),{select:!0}),document.activeElement===k&&jn(c))}return()=>{c.removeEventListener(lu,d),setTimeout(()=>{const j=new CustomEvent(cu,dh);c.addEventListener(cu,g),c.dispatchEvent(j),j.defaultPrevented||jn(k??document.body,{select:!0}),c.removeEventListener(cu,g),mh.remove(z)},0)}}},[c,d,g,z]);const w=E.useCallback(k=>{if(!r&&!s||z.paused)return;const v=k.key==="Tab"&&!k.altKey&&!k.ctrlKey&&!k.metaKey,j=document.activeElement;if(v&&j){const q=k.currentTarget,[x,_]=Hz(q);x&&_?!k.shiftKey&&j===_?(k.preventDefault(),r&&jn(x,{select:!0})):k.shiftKey&&j===x&&(k.preventDefault(),r&&jn(_,{select:!0})):j===q&&k.preventDefault()}},[r,s,z.paused]);return B.jsx(Fi.div,{tabIndex:-1,...m,ref:f,onKeyDown:w})});fy.displayName=Oz;function Lz(a,{select:o=!1}={}){const r=document.activeElement;for(const s of a)if(jn(s,{select:o}),document.activeElement!==r)return}function Hz(a){const o=vy(a),r=ph(o,a),s=ph(o.reverse(),a);return[r,s]}function vy(a){const o=[],r=document.createTreeWalker(a,NodeFilter.SHOW_ELEMENT,{acceptNode:s=>{const u=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||u?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)o.push(r.currentNode);return o}function ph(a,o){for(const r of a)if(!Vz(r,{upTo:o}))return r}function Vz(a,{upTo:o}){if(getComputedStyle(a).visibility==="hidden")return!0;for(;a;){if(o!==void 0&&a===o)return!1;if(getComputedStyle(a).display==="none")return!0;a=a.parentElement}return!1}function Uz(a){return a instanceof HTMLInputElement&&"select"in a}function jn(a,{select:o=!1}={}){if(a&&a.focus){const r=document.activeElement;a.focus({preventScroll:!0}),a!==r&&Uz(a)&&o&&a.select()}}var mh=Wz();function Wz(){let a=[];return{add(o){const r=a[0];o!==r&&(r==null||r.pause()),a=hh(a,o),a.unshift(o)},remove(o){var r;a=hh(a,o),(r=a[0])==null||r.resume()}}}function hh(a,o){const r=[...a],s=r.indexOf(o);return s!==-1&&r.splice(s,1),r}function $z(a){return a.filter(o=>o.tagName!=="A")}var Gz="Portal",ky=E.forwardRef((a,o)=>{var c;const{container:r,...s}=a,[u,l]=E.useState(!1);_r(()=>l(!0),[]);const m=r||u&&((c=globalThis==null?void 0:globalThis.document)==null?void 0:c.body);return m?Xg.createPortal(B.jsx(Fi.div,{...s,ref:o}),m):null});ky.displayName=Gz;function Qz(a,o){return E.useReducer((r,s)=>o[r][s]??r,a)}var Pr=a=>{const{present:o,children:r}=a,s=Kz(o),u=typeof r=="function"?r({present:s.isPresent}):E.Children.only(r),l=fa(s.ref,Yz(u));return typeof r=="function"||s.isPresent?E.cloneElement(u,{ref:l}):null};Pr.displayName="Presence";function Kz(a){const[o,r]=E.useState(),s=E.useRef(null),u=E.useRef(a),l=E.useRef("none"),m=a?"mounted":"unmounted",[c,h]=Qz(m,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return E.useEffect(()=>{const d=it(s.current);l.current=c==="mounted"?d:"none"},[c]),_r(()=>{const d=s.current,g=u.current;if(g!==a){const f=l.current,z=it(d);a?h("MOUNT"):z==="none"||(d==null?void 0:d.display)==="none"?h("UNMOUNT"):h(g&&f!==z?"ANIMATION_OUT":"UNMOUNT"),u.current=a}},[a,h]),_r(()=>{if(o){let d;const g=o.ownerDocument.defaultView??window,y=z=>{const k=it(s.current).includes(CSS.escape(z.animationName));if(z.target===o&&k&&(h("ANIMATION_END"),!u.current)){const v=o.style.animationFillMode;o.style.animationFillMode="forwards",d=g.setTimeout(()=>{o.style.animationFillMode==="forwards"&&(o.style.animationFillMode=v)})}},f=z=>{z.target===o&&(l.current=it(s.current))};return o.addEventListener("animationstart",f),o.addEventListener("animationcancel",y),o.addEventListener("animationend",y),()=>{g.clearTimeout(d),o.removeEventListener("animationstart",f),o.removeEventListener("animationcancel",y),o.removeEventListener("animationend",y)}}else h("ANIMATION_END")},[o,h]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:E.useCallback(d=>{s.current=d?getComputedStyle(d):null,r(d)},[])}}function it(a){return(a==null?void 0:a.animationName)||"none"}function Yz(a){var s,u;let o=(s=Object.getOwnPropertyDescriptor(a.props,"ref"))==null?void 0:s.get,r=o&&"isReactWarning"in o&&o.isReactWarning;return r?a.ref:(o=(u=Object.getOwnPropertyDescriptor(a,"ref"))==null?void 0:u.get,r=o&&"isReactWarning"in o&&o.isReactWarning,r?a.props.ref:a.props.ref||a.ref)}var uu=0;function Zz(){E.useEffect(()=>{const a=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",a[0]??gh()),document.body.insertAdjacentElement("beforeend",a[1]??gh()),uu++,()=>{uu===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(o=>o.remove()),uu--}},[])}function gh(){const a=document.createElement("span");return a.setAttribute("data-radix-focus-guard",""),a.tabIndex=0,a.style.outline="none",a.style.opacity="0",a.style.position="fixed",a.style.pointerEvents="none",a}var La=function(){return La=Object.assign||function(o){for(var r,s=1,u=arguments.length;s"u")return hx;var o=gx(a),r=document.documentElement.clientWidth,s=window.innerWidth;return{left:o[0],top:o[1],right:o[2],gap:Math.max(0,s-r+o[2]-o[0])}},bx=jy(),Er="data-scroll-locked",fx=function(a,o,r,s){var u=a.left,l=a.top,m=a.right,c=a.gap;return r===void 0&&(r="margin"),` .`.concat(Jz,` { overflow: hidden `).concat(s,`; diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 05e01c5..7a8ea93 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -13,7 +13,7 @@ - + diff --git a/frontend/src/components/MessageList.tsx b/frontend/src/components/MessageList.tsx index c066eeb..affa260 100644 --- a/frontend/src/components/MessageList.tsx +++ b/frontend/src/components/MessageList.tsx @@ -80,7 +80,9 @@ export function MessageList({ const scrollStateRef = useRef({ scrollTop: 0, scrollHeight: 0, + clientHeight: 0, wasNearTop: false, + wasNearBottom: true, // Default to true so initial messages scroll to bottom }); // Handle scroll position AFTER render @@ -101,8 +103,8 @@ export function MessageList({ if (scrollStateRef.current.wasNearTop && scrollHeightDiff > 0) { // User was near top (loading older) - preserve position by adding the height diff list.scrollTop = scrollStateRef.current.scrollTop + scrollHeightDiff; - } else if (!scrollStateRef.current.wasNearTop) { - // User was at bottom - scroll to bottom for new messages + } else if (scrollStateRef.current.wasNearBottom) { + // User was near bottom - scroll to bottom for new messages (including sent) list.scrollTop = list.scrollHeight; } } @@ -115,7 +117,7 @@ export function MessageList({ if (messages.length === 0) { isInitialLoadRef.current = true; prevMessagesLengthRef.current = 0; - scrollStateRef.current = { scrollTop: 0, scrollHeight: 0, wasNearTop: false }; + scrollStateRef.current = { scrollTop: 0, scrollHeight: 0, clientHeight: 0, wasNearTop: false, wasNearBottom: true }; } }, [messages.length]); @@ -124,16 +126,18 @@ export function MessageList({ if (!listRef.current) return; const { scrollTop, scrollHeight, clientHeight } = listRef.current; + const distanceFromBottom = scrollHeight - scrollTop - clientHeight; // Always capture current scroll state (needed for scroll preservation) scrollStateRef.current = { scrollTop, scrollHeight, + clientHeight, wasNearTop: scrollTop < 150, + wasNearBottom: distanceFromBottom < 100, }; // Show scroll-to-bottom button when not near the bottom (more than 100px away) - const distanceFromBottom = scrollHeight - scrollTop - clientHeight; setShowScrollToBottom(distanceFromBottom > 100); if (!onLoadOlder || loadingOlder || !hasOlderMessages) return;