1import{a as re}from"/build/_shared/chunk-3WB4UKGV.js";import{a as Kr}from"/build/_shared/chunk-AYAN7HC2.js";import{a as Lt,b as St,c as _t,d as Le,e as Dt,f as Ft}from"/build/_shared/chunk-O5UTLDIO.js";import{a as be,b as P,c as A,d as le,e as V,f as me,g as It,h as oe,i as Z,j as Ie,k as ue,l as At}from"/build/_shared/chunk-W4NF7UQN.js";import{a as Tt,l as kt}from"/build/_shared/chunk-RV2S7WUC.js";import{e as Nt}from"/build/_shared/chunk-7YDC2KKM.js";import{a as de}from"/build/_shared/chunk-TCR5UQ3C.js";import{c as Et}from"/build/_shared/chunk-VD35SDND.js";import{c as Pt,g as Mt}from"/build/_shared/chunk-3ZBK7V2Y.js";import{a as Ct,b as U,d as xe,e as D,g as G}from"/build/_shared/chunk-AXTHWPB6.js";import{a as gt,b as he,c as ft,f as wt,i as Or,j as X,l as vt,m as ht,n as xt,q as bt,r as yt,t as Rt}from"/build/_shared/chunk-TWDNCO62.js";import{a as J,b as z}from"/build/_shared/chunk-HCAQEN7C.js";import{a as Vr}from"/build/_shared/chunk-GRTEO3EB.js";import{d as M}from"/build/_shared/chunk-W6WK5VNR.js";var Eo=M(Vr());var Pe=M(J());var Vt=M(J());var zt=M(J());Or();function Ot(){let{toast:e}=re(),t=he(),r=ft();return(0,zt.useEffect)(()=>{let o=new URLSearchParams(t.search),a=o.get("verified");a==="true"?setTimeout(()=>{e({title:"Verification Successful",description:"You will now start receiving our newsletter."}),o.delete("verified"),r({search:o.toString()},{replace:!0})},0):a==="false"&&setTimeout(()=>{e({title:"Verification Failed",description:"The verification link is invalid or expired."})},0)},[t,e,r]),null}var R=M(z());function Kt(){let e=bt(),{toast:t}=re();return(0,Vt.useEffect)(()=>{e.data?.success?e.data.existing?t({title:"Already Subscribed",description:"You are already subscribed to the newsletter."}):t({title:"Verify your email",description:"Thanks for subscribing! We have sent you an email to verify your address."}):e.data?.error&&t({variant:"destructive",title:"Subscription Failed",description:e.data.error})},[e.data,t]),(0,R.jsxs)("footer",{className:"mx-auto mt-20 max-w-5xl border-t border-gray-200 bg-white px-4 py-12 sm:px-6 lg:px-8",children:[(0,R.jsx)("div",{className:"mx-auto max-w-7xl",children:(0,R.jsxs)("div",{className:"grid grid-cols-2 gap-8 md:grid-cols-5",children:[(0,R.jsxs)("div",{className:"col-span-2 flex flex-col items-center space-y-4 md:col-span-3 md:items-start",children:[(0,R.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,R.jsx)(Nt,{className:"h-6 w-6","aria-hidden":"true"}),(0,R.jsx)("h2",{className:"font-heading text-xl font-bold",children:"OpenSourceAlternative.to"})]}),(0,R.jsx)("p",{className:"max-w-md text-sm text-gray-600",children:"Replace proprietary software products with open source alternatives."}),(0,R.jsxs)(e.Form,{method:"post",action:"/api/subscribe",className:"flex w-full max-w-md
1space-x-2",children:[(0,R.jsx)(de,{type:"email",name:"email",placeholder:"Your email here...",className:"flex-grow","aria-label":"Email for newsletter",required:!0}),(0,R.jsx)(G,{type:"submit",variant:"default",children:"Subscribe"})]}),(0,R.jsxs)("div",{className:"flex flex-row space-x-1",children:[(0,R.jsx)(G,{variant:"ghost",asChild:!0,className:"p-1",size:"lg",children:(0,R.jsx)("a",{href:"mailto:[email protected]","aria-label":"Email us",children:(0,R.jsx)(Tt,{size:38,round:!0,bgStyle:{fill:"transparent"},iconFillColor:"currentColor"})})}),(0,R.jsx)(G,{variant:"ghost",asChild:!0,className:"p-1",size:"lg",children:(0,R.jsx)("a",{href:"https://x.com/osalternativeto",target:"_blank",rel:"noopener noreferrer","aria-label":"Follow us on X",children:(0,R.jsx)(kt,{size:38,round:!0,bgStyle:{fill:"transparent"},iconFillColor:"currentColor"})})})]}),(0,R.jsxs)("p",{className:"max-w-md text-sm text-gray-600",children:["Learn more about"," ",(0,R.jsx)(X,{to:"/social-listening",className:"text-blue-600 hover:underline",children:"social listening"})]})]}),(0,R.jsxs)("div",{className:"flex flex-col items-center md:items-start",children:[(0,R.jsx)("h3",{className:"mb-4 font-heading text-lg font-semibold",children:"Discover"}),(0,R.jsx)("ul",{className:"space-y-2",children:[{name:"Alternatives",path:"/alternatives-to"},{name:"Categories",path:"/categories"},{name:"Languages",path:"/languages"},{name:"Licenses",path:"/licenses"}].map(r=>(0,R.jsx)("li",{children:(0,R.jsx)(X,{to:r.path,className:"text-sm text-gray-600 hover:text-gray-900",children:r.name})},r.name))})]}),(0,R.jsxs)("div",{className:"flex flex-col items-center md:items-start",children:[(0,R.jsx)("h3",{className:"mb-4 font-heading text-lg font-semibold",children:"About Us"}),(0,R.jsx)("ul",{className:"space-y-2",children:[{name:"About us",path:"/about"},{name:"Sponsor",path:"/sponsor"},{name:"Submit",path:"/submit"},{name:"Contact Us",path:"mailto:[email protected]"}].map(r=>(0,R.jsx)("li",{children:r.name==="Contact Us"?(0,R.jsx)("a",{href:r.path,className:"text-sm text-gray-600 hover:text-gray-900",children:r.name}):(0,R.jsx)(X,{to:r.path,className:"text-sm text-gray-600 hover:text-gray-900",children:r.name})},r.name))})]})]})}),(0,R.jsx)(Ot,{})]})}var pr=M(J());var ee=M(J());var c=M(J(),1),Wt=M(gt(),1);var w=M(z(),1),ie="NavigationMenu",[Fe,Xt,jr]=ue(ie),[Se,Yr,Wr]=ue(ie),[ze,ra]=be(ie,[jr,Wr]),[Xr,j]=ze(ie),[Br,Hr]=ze(ie),Bt=c.forwardRef((e,t)=>{let{__scopeNavigationMenu:r,value:o,onValueChange:a,defaultValue:i,delayDuration:n=200,skipDelayDuration:p=300,orientation:l="horizontal",dir:m,...d}=e,[x,S]=c.useState(null),I=U(t,L=>S(L)),T=It(m),f=c.useRef(0),u=c.useRef(0),E=c.useRef(0),[C,g]=c.useState(!0),[b="",h]=me({prop:o,onChange:L=>{let O=L!=="",W=p>0;O?(window.clearTimeout(E.current),W&&g(!1)):(window.clearTimeout(E.current),E.current=window.setTimeout(()=>g(!0),p)),a?.(L)},defaultProp:i}),y=c.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>h(""),150)},[h]),F=c.useCallback(L=>{window.clearTimeout(u.current),h(L)},[h]),K=c.useCallback(L=>{b===L?window.clearTimeout(u.current):f.current=window.setTimeout(()=>{window.clearTimeout(u.current),h(L)},n)},[b,h,n]);return c.useEffect(()=>()=>{window.clearTimeout(f.current),window.clearTimeout(u.current),window.clearTimeout(E.current)},[]),(0,w.jsx)(Ut,{scope:r,isRootMenu:!0,value:b,dir:T,orientation:l,rootNavigationMenu:x,onTriggerEnter:L=>{window.clearTimeout(f.current),C?K(L):F(L)},onTriggerLeave:()=>{window.clearTimeout(f.current),y()},onContentEnter:()=>window.clearTimeout(u.current),onContentLeave:y,onItemSelect:L=>{h(O=>O===L?"":L)},onItemDismiss:()=>h(""),children:(0,w.jsx)(A.nav,{"aria-label":"Main","data-orientation":l,dir:T,...d,ref:I})})});Bt.displayName=ie;var Ht="NavigationMenuSub",Ur=c.forwardRef((e,t)=>{let{__scopeNavigationMenu:r,value:o,onValueChange:a,defaultValue:i,orientation:n="horizontal",...p}=e,l=j(Ht,r),[m="",d]=me({prop:o,onChange:a,defaultProp:i});return(0,w.jsx)(Ut,{scope:r,isRootMenu:!1,value:m,dir:l.dir,orientation:n,rootNavigationMenu:l.rootNavigationMenu,onTriggerEnter:x=>d(x),onItemSelect:x=>d(x),onItemDismiss:()=>d(""),children:(0,w.jsx)(A.div,{"data-orientation":n,...p,ref:t})})});Ur.displayName=Ht;var Ut=e=>{let{scope:t,isRootMenu:r,rootNavigationMenu:o,dir:a,orientation:i,children:n,value:p,onItemSelect:l,onItemDismiss:m,onTriggerEnter:d,onTriggerLeave:x,onContentEnter:S,onContentLeave:I}=e,[T,f]=c.useState(null),[u,E]=c.useState(new Map),[C,g]=c.useState(null);return(0,w.jsx)(Xr,{scope:t,isRootMenu:r,rootNavigationMenu:o,value:p,previousValue:At(p),baseId:Ie(),dir:a,orientation:i,viewport:T,onViewportChange:f,indicatorTrack:C,onIndicatorTrackChange:g,onTriggerEnter:V(d),onTriggerLeave:V(x),onContentEnter:V(S),onContentLeave:V(I),onItemSelect:V(l),onItemDismiss:V(m),onViewportContentChange:c.useCallback((b,h)=>{E(y=>(y.set(b,h),new Map(y)))},[]),onViewportContentRemove:c.useCallback(b=>{E(h=>h.has(b)?(h.delete(b),new Map(h)):h)},[]),children:(0,w.jsx)(Fe.Provider,{scope:t,children:(0,w.jsx)(Br,{scope:t,items:u,children:n})})})},Gt="NavigationMenuList",$t=c.forwardRef((e,t)=>
vendor: 4,182 bytes, line 1
1{let{__scopeNavigationMenu:r,...o}=e,a=j(Gt,r),i=(0,w.jsx)(A.ul,{"data-orientation":a.orientation,...o,ref:t});return(0,w.jsx)(A.div,{style:{position:"relative"},ref:a.onIndicatorTrackChange,children:(0,w.jsx)(Fe.Slot,{scope:r,children:a.isRootMenu?(0,w.jsx)(ir,{asChild:!0,children:i}):i})})});$t.displayName=Gt;var qt="NavigationMenuItem",[Gr,Jt]=ze(qt),Qt=c.forwardRef((e,t)=>{let{__scopeNavigationMenu:r,value:o,...a}=e,i=Ie(),n=o||i||"LEGACY_REACT_AUTO_VALUE",p=c.useRef(null),l=c.useRef(null),m=c.useRef(null),d=c.useRef(()=>{}),x=c.useRef(!1),S=c.useCallback((T="start")=>{if(p.current){d.current();let f=Ae(p.current);f.length&&Ke(T==="start"?f:f.reverse())}},[]),I=c.useCallback(()=>{if(p.current){let T=Ae(p.current);T.length&&(d.current=to(T))}},[]);return(0,w.jsx)(Gr,{scope:r,value:n,triggerRef:l,contentRef:p,focusProxyRef:m,wasEscapeCloseRef:x,onEntryKeyDown:S,onFocusProxyEnter:S,onRootContentClose:I,onContentFocusOutside:I,children:(0,w.jsx)(A.li,{...a,ref:t})})});Qt.displayName=qt;var _e="NavigationMenuTrigger",Zt=c.forwardRef((e,t)=>{let{__scopeNavigationMenu:r,disabled:o,...a}=e,i=j(_e,e.__scopeNavigationMenu),n=Jt(_e,e.__scopeNavigationMenu),p=c.useRef(null),l=U(p,n.triggerRef,t),m=sr(i.baseId,n.value),d=cr(i.baseId,n.value),x=c.useRef(!1),S=c.useRef(!1),I=n.value===i.value;return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(Fe.ItemSlot,{scope:r,value:n.value,children:(0,w.jsx)(nr,{asChild:!0,children:(0,w.jsx)(A.button,{id:m,disabled:o,"data-disabled":o?"":void 0,"data-state":je(I),"aria-expanded":I,"aria-controls":d,...a,ref:l,onPointerEnter:P(e.onPointerEnter,()=>{S.current=!1,n.wasEscapeCloseRef.current=!1}),onPointerMove:P(e.onPointerMove,Re(()=>{o||S.current||n.wasEscapeCloseRef.current||x.current||(i.onTriggerEnter(n.value),x.current=!0)})),onPointerLeave:P(e.onPointerLeave,Re(()=>{o||(i.onTriggerLeave(),x.current=!1)})),onClick:P(e.onClick,()=>{i.onItemSelect(n.value),S.current=I}),onKeyDown:P(e.onKeyDown,T=>{let u={horizontal:"ArrowDown",vertical:i.dir==="rtl"?"ArrowLeft":"ArrowRight"}[i.orientation];I&&T.key===u&&(n.onEntryKeyDown(),T.preventDefault())})})})}),I&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(Dt,{"aria-hidden":!0,tabIndex:0,ref:n.focusProxyRef,onFocus:T=>{let f=n.contentRef.current,u=T.relatedTarget,E=u===p.current,C=f?.contains(u);(E||!C)&&n.onFocusProxyEnter(E?"start":"end")}}),i.viewport&&(0,w.jsx)("span",{"aria-owns":d})]})]})});Zt.displayName=_e;var $r="NavigationMenuLink",jt="navigationMenu.linkSelect",er=c.forwardRef((e,t)=>{let{__scopeNavigationMenu:r,active:o,onSelect:a,...i}=e;return(0,w.jsx)(nr,{asChild:!0,children:(0,w.jsx)(A.a,{"data-active":o?"":void 0,"aria-current":o?"page":void 0,...i,ref:t,onClick:P(e.onClick,n=>{let p=n.target,l=new CustomEvent(jt,{bubbles:!0,cancelable:!0});if(p.addEventListener(jt,m=>a?.(m),{once:!0}),le(p,l),!l.defaultPrevented&&!n.metaKey){let m=new CustomEvent(ye,{bubbles:!0,cancelable:!0});le(p,m)}},{checkForDefaultPrevented:!1})})})});er.displayName=$r;var Oe="NavigationMenuIndicator",tr=c.forwardRef((e,t)=>{let{forceMount:r,...o}=e,a=j(Oe,e.__scopeNavigationMenu),i=Boolean(a.value);return a.indicatorTrack?Wt.default.createPortal((0,w.jsx)(Z,{present:r||i,children:(0,w.jsx)(qr,{...o,ref:t})}),a.indicatorTrack):null});tr.displayName=Oe;var qr=c.forwardRef((e,t)=>{let{__scopeNavigationMenu:r,...o}=e,a=j(Oe,r),i=Xt(r),[n,p]=c.useState(null),[l,m]=c.useState(null),d=a.orientation==="horizontal",x=Boolean(a.value);c.useEffect(()=>{let T=i().find(f=>f.value===a.value)?.ref.current;T&&p(T)},[i,a.value]);let S=()=>{n&&m({size:d?n.offsetWidth:n.offsetHeight,offset:d?n.offsetLeft:n.offsetTop})};return De(n,S),De(a.indicatorTrack,S),l?(0,w.jsx)(A.div,{"aria-hidden":!0,"data-state":x?"visible":"hidden","data-orientation":a.orientation,...o,ref:t,style:{position:"absolute",...d?{left:0,width:l.size+"px",transform:`translateX(${l.offset}px)`}:{top:0,height:l.size+"px",transform:`translateY(${l.offset}px)`},...o.style}}):null}),ae="NavigationMenuContent",rr=c.forwardRef((e,t)=>{let{forceMount:r,...o}=e,a=j(ae,e.__scopeNavigationMenu),i=Jt(ae,e.__scopeNavigationMenu),n=U(i.contentRef,t),p=i.value===a.value,l={value:i.value,triggerRef:i.triggerRef,focu
1sProxyRef:i.focusProxyRef,wasEscapeCloseRef:i.wasEscapeCloseRef,onContentFocusOutside:i.onContentFocusOutside,onRootContentClose:i.onRootContentClose,...o};return a.viewport?(0,w.jsx)(Jr,{forceMount:r,...l,ref:n}):(0,w.jsx)(Z,{present:r||p,children:(0,w.jsx)(or,{"data-state":je(p),...l,ref:n,onPointerEnter:P(e.onPointerEnter,a.onContentEnter),onPointerLeave:P(e.onPointerLeave,Re(a.onContentLeave)),style:{pointerEvents:!p&&a.isRootMenu?"none":void 0,...l.style}})})});rr.displayName=ae;var Jr=c.forwardRef((e,t)=>{let r=j(ae,e.__scopeNavigationMenu),{onViewportContentChange:o,onViewportContentRemove:a}=r;return oe(()=>{o(e.value,{ref:t,...e})},[e,t,o]),oe(()=>()=>a(e.value),[e.value,a]),null}),ye="navigationMenu.rootContentDismiss",or=c.forwardRef((e,t)=>{let{__scopeNavigationMenu:r,value:o,triggerRef:a,focusProxyRef:i,wasEscapeCloseRef:n,onRootContentClose:p,onContentFocusOutside:l,...m}=e,d=j(ae,r),x=c.useRef(null),S=U(x,t),I=sr(d.baseId,o),T=cr(d.baseId,o),f=Xt(r),u=c.useRef(null),{onItemDismiss:E}=d;c.useEffect(()=>{let g=x.current;if(d.isRootMenu&&g){let b=()=>{E(),p(),g.contains(document.activeElement)&&a.current?.focus()};return g.addEventListener(ye,b),()=>g.removeEventListener(ye,b)}},[d.isRootMenu,e.value,a,E,p]);let C=c.useMemo(()=>{let b=f().map(O=>O.value);d.dir==="rtl"&&b.reverse();let h=b.indexOf(d.value),y=b.indexOf(d.previousValue),F=o===d.value,K=y===b.indexOf(o);if(!F&&!K)return u.current;let L=(()=>{if(h!==y){if(F&&y!==-1)return h>y?"from-end":"from-start";if(K&&h!==-1)return h>y?"to-start":"to-end"}return null})();return u.current=L,L},[d.previousValue,d.value,d.dir,f,o]);return(0,w.jsx)(ir,{asChild:!0,children:(0,w.jsx)(Lt,{id:T,"aria-labelledby":I,"data-motion":C,"data-orientation":d.orientation,...m,ref:S,disableOutsidePointerEvents:!1,onDismiss:()=>{let g=new Event(ye,{bubbles:!0,cancelable:!0});x.current?.dispatchEvent(g)},onFocusOutside:P(e.onFocusOutside,g=>{l();let b=g.target;d.rootNavigationMenu?.contains(b)&&g.preventDefault()}),onPointerDownOutside:P(e.onPointerDownOutside,g=>{let b=g.target,h=f().some(F=>F.ref.current?.contains(b)),y=d.isRootMenu&&d.viewport?.contains(b);(h||y||!d.isRootMenu)&&g.preventDefault()}),onKeyDown:P(e.onKeyDown,g=>{let b=g.altKey||g.ctrlKey||g.metaKey;if(g.key==="Tab"&&!b){let y=Ae(g.currentTarget),F=document.activeElement,K=y.findIndex(W=>W===F),O=g.shiftKey?y.slice(0,K).reverse():y.slice(K+1,y.length);Ke(O)?g.preventDefault():i.current?.focus()}}),onEscapeKeyDown:P(e.onEscapeKeyDown,g=>{n.current=!0})})})}),Ve="NavigationMenuViewport",ar=c.forwardRef((e,t)=>{let{forceMount:r,...o}=e,a=j(Ve,e.__scopeNavigationMenu),i=Boolean(a.value);return(0,w.jsx)(Z,{present:r||i,children:(0,w.jsx)(Qr,{...o,ref:t})})});ar.displayName=Ve;var Qr=c.forwardRef((e,t)=>{let{__scopeNavigationMenu:r,children:o,...a}=e,i=j(Ve,r),n=U(t,i.onViewportChange),p=Hr(ae,e.__scopeNavigationMenu),[l,m]=c.useState(null),[d,x]=c.useState(null),S=l?l?.width+"px":void 0,I=l?l?.height+"px":void 0,T=Boolean(i.value),f=T?i.value:i.previousValue;return De(d,()=>{d&&m({width:d.offsetWidth,height:d.offsetHeight})}),(0,w.jsx)(A.div,{"data-state":je(T),"data-orientation":i.orientation,...a,ref:n,style:{pointerEvents:!T&&i.isRootMenu?"none":void 0,["--radix-navigation-menu-viewport-width"]:S,["--radix-navigation-menu-viewport-height"]:I,...a.style},onPointerEnter:P(e.onPointerEnter,i.onContentEnter),onPointerLeave:P(e.onPointerLeave,Re(i.onContentLeave)),children:Array.from(p.items).map(([E,{ref:C,forceMount:g,...b}])=>{let h=f===E;return(0,w.jsx)(Z,{present:g||h,children:(0,w.jsx)(or,{...b,ref:Ct(C,y=>{h&&y&&x(y)})})},E)})})}),Zr="FocusGroup",ir=c.forwardRef((e,t)=>{let{__scopeNavigationMenu:r,...o}=e,a=j(Zr,r);return(0,w.jsx)(Se.Provider,{scope:r,children:(0,w.jsx)(Se.Slot,{scope:r,children:(0,w.jsx)(A.div,{dir:a.dir,...o,ref:t})})})}),Yt=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"],eo="FocusGroupItem",nr=c.forwardRef((e,t)=>{let{__scopeNavigationMenu:r,...o}=e,a=Yr(r),i=j(eo,r);return(0,w.jsx)(Se.ItemSlot,{scope:r,children:(0,w.jsx)(A.button,{...o,ref:t,onKeyDown:P(e.onKeyDown,n=>{if(["Home","End",...Yt].includes(n.key)){let l=a().map(x=>x.ref.current);if([i.dir==="rtl"?"ArrowRight":"ArrowLeft","ArrowUp","End"].includes(n.key)&&l.reverse(),Yt.includes(n.key)){let x=l.indexOf(n.currentTarget);l=l.slice(x+1)}setTimeout(()=>Ke(l)),n.preventDefault()}})})})});function Ae(e){let t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{let a=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||a?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function Ke(e){let t=document.activeElement;return e.some(r=>r===t?!0:(r.focus(),document.activeElement!==t))}function to(e){return e.forEach(t=>{t.dataset.tabindex=t.getAttribute("tabindex")||"",t.setAttribute("tabindex","-1")}),()=>{e.forEach(t=>{let r=t.dataset.tabindex;t.setAttribute("tabindex",r)})}}function De(e,t){let r=V(t);oe(()=>{let o=0;if(e){let a=new ResizeObserver(()=>{cancelAnimationFrame(o),o=window.requestAnimationFrame(r)});return a.observe(e),()=>{window.cancelAnimationFrame(o),a.unobserve(e)}}},[e,r])}function je(e){return e?"open":"closed"}function sr(e,t){return`${e}-trigger-${t}`}function cr(e,t){return`${e}-content-${t}`}function Re(e){return t=>t.pointerType==="mouse"?e(t):void 0}var Ye=Bt;var We=$t,dr=Qt,Xe=Zt,lr=er,Be=tr,He=rr,Ue=ar;var Y=M(z()),pe=ee.forwardRef(({className:e,children:t,...r},o)=>(0,Y.jsxs)(Ye,{ref:o,className:D("relative z-10 flex max-w-max flex-1 items-center justify-center",e),...r,children:[t,(0,Y.jsx)(ur,{})]}));pe.displayName=Ye.displayName;var ge=ee.forwardRef(({className:e,...t},r)=>(0,Y.jsx)(We,{ref:r,className:D("group flex flex-1 list-none items-center justify-center space-x-1",e),...t}));ge.displayName=We.displayName;var ne=dr,oo=xe("group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"),Ne=ee.forwardRef(({className:e,children:t,...r},o)=>(0,Y.jsxs)(Xe,{ref:o,className:D(oo(),"group",e),...r,children:[t," ",(0,Y.jsx)(Pt,{className:"relative top-[1px] ml-1 h-3 w-3 transition duration-300 group-data-[state=open]:rotate-180","aria-hidden":"true"})]}));Ne.displayName=Xe.displayName;var Te=ee.forwardRef(({className:e,...t},r)=>(0,Y.jsx)(He,{ref:r,className:D("left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",e),...t}));Te.displayName=He.displayName;var mr=lr,ur=ee.forwardRef(({className:e,...t},r)=>(0,Y.jsx)("div",{className:D("absolute left-0 top-full flex justify-center"),children:(0,Y.jsx)(Ue,{className:D("origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",e),ref:r,...t})}));ur.displayName=Ue.displayName;var ao=ee.forwardRef(({className:e,...t},r)=>(0,Y.jsx)(Be,{ref:r,className:D("top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",e),...t,children:(0,Y.jsx)("div",{className:"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md"})}));ao.displayName=Be.displayName;var s=M(z()),B=pr.default.forwardRef(({className:e,title:t,...r},o)=>(0,s.jsx)("li",{children:(0,s.jsx)(mr,{asChild:!0,children:(0,s.jsx)("a",{ref:o,className:D("block w-48 select-none rounded-md px-3 py-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",e),...r,children:(0,s.jsx)("div",{className:"text-sm leading-none",children:t})})})}));B.displayName="ListItem";function gr(){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"bg-white",children:(0,s.jsxs)("div",{className:"max-w-5xl mx-auto px-4 py-2 flex items-center justify-center gap-2 text-sm",children:[(0,s.jsx)("span",{className:"hidden sm:inline",children:"Sponsored by"}),(0,s.jsx)("span",{children:"Octolens \u2014 The #1 Social Listening Tool Built For Developers"}),(0,s.jsx)(X,{to:"https://octolens.com/?ref=opensourcealternative.to",className:"text-gray-600 hover:text-gray-900",children:"Learn More"})]})}),(0,s.jsx)("nav",{className:"sticky top-0 z-10 mx-auto max-w-5xl rounded-xl border border-gray-100 bg-white p-4 shadow-sm mt-2",children:(0,s.jsxs)("div",{className:"container mx-auto flex items-center justify-between",children:[(0,s.jsxs)(X,{to:"/",className:"flex items-center gap-2",children:[(0,s.jsx)("img",{src:"/logo.png",alt:"Open Source Alternatives",className:"h-5 w-5"}),(0,s.jsx)("span",{className:"font-heading font-medium",children:"opensourcealternative.to"})]}),(0,s.jsxs)("div",{className:"space-x-4",children:[(0,s.jsx)("div",{className:"flex md:hidden",children:(0,s.jsx)(pe,{children:(0,s.jsx)(ge,{children:(0,s.jsxs)(ne,{children:[(0,s.jsx)(Ne,{className:"text-sm font-normal",children:(0,s.jsx)(Et,{className:"h-5 w-5"})}),(0,s.jsx)(Te,{children:(0,s.jsxs)("ul",{className:"fixed right-0 top-[110px] flex max-h-[calc(100vh-120px)] w-full flex-col space-y-2 overflow-y-auto rounded-lg bg-white p-4 text-gray-500 shadow-lg",children:[(0,s.jsx)("li",{className:"w-full",children:(0,s.jsx)(de,{type:"text",placeholder:"Search alternatives...",className:"h-8 w-full text-sm",onKeyDown:e=>{if(e.key==="Enter"){let t=e.currentTarget.value;window.location.href=`/?searchTerm=${encodeURIComponent(t)}`}}})}),(0,s.jsx)(B,{href:"/?orderBy=createdAt",title:"Latest",children:"Latest"}
1),(0,s.jsx)(B,{href:"/categories",title:"Categories",children:"Browse alternatives by software categories."}),(0,s.jsx)(B,{href:"/tools",title:"Alternatives to",children:"Find open source replacements for proprietary software."}),(0,s.jsx)(B,{href:"/languages",title:"Languages",children:"Discover alternatives by programming language."}),(0,s.jsx)(B,{href:"/licenses",title:"Licenses",children:"Learn about different open source licenses."}),(0,s.jsx)("li",{className:"w-full",children:(0,s.jsx)(G,{variant:"outline",size:"sm",className:"w-full",asChild:!0,children:(0,s.jsx)(X,{to:"/sponsor",children:"Sponsor"})})}),(0,s.jsx)("li",{className:"w-full",children:(0,s.jsx)(G,{variant:"outline",size:"sm",className:"w-full",asChild:!0,children:(0,s.jsx)(X,{to:"/submit",children:"Submit project"})})})]})})]})})})}),(0,s.jsxs)("div",{className:"hidden md:flex",children:[(0,s.jsxs)(pe,{className:"mr-4",children:[(0,s.jsx)(ge,{className:"space-x-3",children:(0,s.jsx)(ne,{children:(0,s.jsx)(de,{type:"text",placeholder:"Search alternatives...",className:"h-8 w-48 text-sm",onKeyDown:e=>{if(e.key==="Enter"){let t=e.currentTarget.value;window.location.href=`/?searchTerm=${encodeURIComponent(t)}`}}})})})," "]}),(0,s.jsx)(pe,{children:(0,s.jsxs)(ge,{children:[(0,s.jsxs)(ne,{children:[(0,s.jsx)(Ne,{className:"text-sm font-normal text-gray-500",children:"Discover"}),(0,s.jsx)(Te,{children:(0,s.jsxs)("ul",{className:"grid w-48 gap-1 p-4 text-sm text-gray-500",children:[(0,s.jsx)(B,{className:"w-40",href:"/?orderBy=createdAt",title:"Latest",children:"Latest"}),(0,s.jsx)(B,{className:"w-40",href:"/categories",title:"Categories",children:"Browse alternatives by software categories."}),(0,s.jsx)(B,{className:"w-40",href:"/alternatives-to",title:"Alternatives to",children:"Find open source replacements for proprietary software."}),(0,s.jsx)(B,{className:"w-40",href:"/languages",title:"Languages",children:"Discover alternatives by programming language."}),(0,s.jsx)(B,{className:"w-40",href:"/licenses",title:"Licenses",children:"Learn about different open source licenses."})]})})]}),(0,s.jsx)(ne,{children:(0,s.jsx)(G,{variant:"ghost",className:"text-sm text-gray-500",asChild:!0,children:(0,s.jsx)(X,{to:"/sponsor",children:"Sponsor"})})}),(0,s.jsx)(ne,{children:(0,s.jsx)(G,{variant:"ghost",className:"text-sm text-gray-500",asChild:!0,children:(0,s.jsx)(X,{to:"/submit",children:"Submit project"})})})]})})]})]})]})})]})}var te=M(J());var v=M(J(),1),wr=M(gt(),1);var k=M(z(),1),Qe="ToastProvider",[Ze,io,no]=ue("Toast"),[vr,Ca]=be("Toast",[no]),[so,Ce]=vr(Qe),hr=e=>{let{__scopeToast:t,label:r="Notification",duration:o=5e3,swipeDirection:a="right",swipeThreshold:i=50,children:n}=e,[p,l]=v.useState(null),[m,d]=v.useState(0),x=v.useRef(!1),S=v.useRef(!1);return r.trim()||console.error(`Invalid prop \`label\` supplied to \`${Qe}\`. Expected non-empty \`string\`.`),(0,k.jsx)(Ze.Provider,{scope:t,children:(0,k.jsx)(so,{scope:t,label:r,duration:o,swipeDirection:a,swipeThreshold:i,toastCount:m,viewport:p,onViewportChange:l,onToastAdd:v.useCallback(()=>d(I=>I+1),[]),onToastRemove:v.useCallback(()=>d(I=>I-1),[]),isFocusedToastEscapeKeyDownRef:x,isClosePausedRef:S,children:n})})};hr.displayName=Qe;var xr="ToastViewport",co=["F8"],$e="toast.viewportPause",qe="toast.viewportResume",br=v.forwardRef((e,t)=>{let{__scopeToast:r,hotkey:o=co,label:a="Notifications ({hotkey})",...i}=e,n=Ce(xr,r),p=io(r),l=v.useRef(null),m=v.useRef(null),d=v.useRef(null),x=v.useRef(null),S=U(t,x,n.onViewportChange),I=o.join("+").replace(/Key/g,"").replace(/Digit/g,""),T=n.toastCount>0;v.useEffect(()=>{let u=E=>{o.every(g=>E[g]||E.code===g)&&x.current?.focus()};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[o]),v.useEffect(()=>{let u=l.current,E=x.current;if(T&&u&&E){let C=()=>{if(!n.isClosePausedRef.current){let y=new CustomEvent($e);E.dispatchEvent(y),n.isClosePausedRef.current=!0}},g=()=>{if(n.isClosePausedRef.current){let y=new CustomEvent(qe);E.dispatchEvent(y),n.isClosePausedRef.current=!1}},b=y=>{!u.contains(y.relatedTarget)&&g()},h=()=>{u.contains(document.activeElement)||g()};return u.addEventListener("focusin",C),u.addEventListener("focusout",b),u.addEventListener("pointermove",C),u.addEventListener("pointerleave",h),window.addEventListener("blur",C),window.addEventListener("focus",g),()=>{u.removeEventListener("focusin",C),u.removeEventListener("focusout",b),u.removeEventListener("pointermove",C),u.removeEventListener("pointerleave",h),window.removeEventListener("blur",C),window.removeEventListener("focus",g)}}},[T,n.isClosePausedRef]);let f=v.useCallback(({tabbingDirection:u})=>{let C=p().map(g=>{let b=g.ref.current,h=[b,...Ro(b)];return u==="forwards"?h:h.reverse()});return(u==="forwards"?C.reverse():C).flat()}
1,[p]);return v.useEffect(()=>{let u=x.current;if(u){let E=C=>{let g=C.altKey||C.ctrlKey||C.metaKey;if(C.key==="Tab"&&!g){let h=document.activeElement,y=C.shiftKey;if(C.target===u&&y){m.current?.focus();return}let L=f({tabbingDirection:y?"backwards":"forwards"}),O=L.findIndex(W=>W===h);Ge(L.slice(O+1))?C.preventDefault():y?m.current?.focus():d.current?.focus()}};return u.addEventListener("keydown",E),()=>u.removeEventListener("keydown",E)}},[p,f]),(0,k.jsxs)(_t,{ref:l,role:"region","aria-label":a.replace("{hotkey}",I),tabIndex:-1,style:{pointerEvents:T?void 0:"none"},children:[T&&(0,k.jsx)(Je,{ref:m,onFocusFromOutsideViewport:()=>{let u=f({tabbingDirection:"forwards"});Ge(u)}}),(0,k.jsx)(Ze.Slot,{scope:r,children:(0,k.jsx)(A.ol,{tabIndex:-1,...i,ref:S})}),T&&(0,k.jsx)(Je,{ref:d,onFocusFromOutsideViewport:()=>{let u=f({tabbingDirection:"backwards"});Ge(u)}})]})});br.displayName=xr;var yr="ToastFocusProxy",Je=v.forwardRef((e,t)=>{let{__scopeToast:r,onFocusFromOutsideViewport:o,...a}=e,i=Ce(yr,r);return(0,k.jsx)(Le,{"aria-hidden":!0,tabIndex:0,...a,ref:t,style:{position:"fixed"},onFocus:n=>{let p=n.relatedTarget;!i.viewport?.contains(p)&&o()}})});Je.displayName=yr;var Ee="Toast",lo="toast.swipeStart",mo="toast.swipeMove",uo="toast.swipeCancel",po="toast.swipeEnd",Rr=v.forwardRef((e,t)=>{let{forceMount:r,open:o,defaultOpen:a,onOpenChange:i,...n}=e,[p=!0,l]=me({prop:o,defaultProp:a,onChange:i});return(0,k.jsx)(Z,{present:r||p,children:(0,k.jsx)(wo,{open:p,...n,ref:t,onClose:()=>l(!1),onPause:V(e.onPause),onResume:V(e.onResume),onSwipeStart:P(e.onSwipeStart,m=>{m.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:P(e.onSwipeMove,m=>{let{x:d,y:x}=m.detail.delta;m.currentTarget.setAttribute("data-swipe","move"),m.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${d}px`),m.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${x}px`)}),onSwipeCancel:P(e.onSwipeCancel,m=>{m.currentTarget.setAttribute("data-swipe","cancel"),m.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),m.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),m.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),m.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:P(e.onSwipeEnd,m=>{let{x:d,y:x}=m.detail.delta;m.currentTarget.setAttribute("data-swipe","end"),m.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),m.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),m.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${d}px`),m.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${x}px`),l(!1)})})})});Rr.displayName=Ee;var[go,fo]=vr(Ee,{onClose(){}}),wo=v.forwardRef((e,t)=>{let{__scopeToast:r,type:o="foreground",duration:a,open:i,onClose:n,onEscapeKeyDown:p,onPause:l,onResume:m,onSwipeStart:d,onSwipeMove:x,onSwipeCancel:S,onSwipeEnd:I,...T}=e,f=Ce(Ee,r),[u,E]=v.useState(null),C=U(t,N=>E(N)),g=v.useRef(null),b=v.useRef(null),h=a||f.duration,y=v.useRef(0),F=v.useRef(h),K=v.useRef(0),{onToastAdd:L,onToastRemove:O}=f,W=V(()=>{u?.contains(document.activeElement)&&f.viewport?.focus(),n()}),fe=v.useCallback(N=>{!N||N===1/0||(window.clearTimeout(K.current),y.current=new Date().getTime(),K.current=window.setTimeout(W,N))},[W]);v.useEffect(()=>{let N=f.viewport;if(N){let H=()=>{fe(F.current),m?.()},q=()=>{let se=new Date().getTime()-y.current;F.current=F.current-se,window.clearTimeout(K.current),l?.()};return N.addEventListener($e,q),N.addEventListener(qe,H),()=>{N.removeEventListener($e,q),N.removeEventListener(qe,H)}}},[f.viewport,h,l,m,fe]),v.useEffect(()=>{i&&!f.isClosePausedRef.current&&fe(h)},[i,h,f.isClosePausedRef,fe]),v.useEffect(()=>(L(),()=>O()),[L,O]);let ut=v.useMemo(()=>u?Mr(u):null,[u]);return f.viewport?(0,k.jsxs)(k.Fragment,{children:[ut&&(0,k.jsx)(vo,{__scopeToast:r,role:"status","aria-live":o==="foreground"?"assertive":"polite","aria-atomic":!0,children:ut}),(0,k.jsx)(go,{scope:r,onClose:W,children:wr.createPortal((0,k.jsx)(Ze.ItemSlot,{scope:r,children:(0,k.jsx)(St,{asChild:!0,onEscapeKeyDown:P(p,()=>{f.isFocusedToastEscapeKeyDownRef.current||W(),f.isFocusedToastEscapeKeyDownRef.current=!1}),children:(0,k.jsx)(A.li,{role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":i?"open":"closed","data-swipe-direction":f.swipeDirection,...T,ref:C,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:P(e.onKeyDown,N=>{N.key==="Escape"&&(p?.(N.nativeEvent),N.nativeEvent.defaultPrevented||(f.is
1FocusedToastEscapeKeyDownRef.current=!0,W()))}),onPointerDown:P(e.onPointerDown,N=>{N.button===0&&(g.current={x:N.clientX,y:N.clientY})}),onPointerMove:P(e.onPointerMove,N=>{if(!g.current)return;let H=N.clientX-g.current.x,q=N.clientY-g.current.y,se=Boolean(b.current),ce=["left","right"].includes(f.swipeDirection),we=["left","up"].includes(f.swipeDirection)?Math.min:Math.max,Fr=ce?we(0,H):0,zr=ce?0:we(0,q),Me=N.pointerType==="touch"?10:2,ve={x:Fr,y:zr},pt={originalEvent:N,delta:ve};se?(b.current=ve,ke(mo,x,pt,{discrete:!1})):fr(ve,f.swipeDirection,Me)?(b.current=ve,ke(lo,d,pt,{discrete:!1}),N.target.setPointerCapture(N.pointerId)):(Math.abs(H)>Me||Math.abs(q)>Me)&&(g.current=null)}),onPointerUp:P(e.onPointerUp,N=>{let H=b.current,q=N.target;if(q.hasPointerCapture(N.pointerId)&&q.releasePointerCapture(N.pointerId),b.current=null,g.current=null,H){let se=N.currentTarget,ce={originalEvent:N,delta:H};fr(H,f.swipeDirection,f.swipeThreshold)?ke(po,I,ce,{discrete:!0}):ke(uo,S,ce,{discrete:!0}),se.addEventListener("click",we=>we.preventDefault(),{once:!0})}})})})}),f.viewport)})]}):null}),vo=e=>{let{__scopeToast:t,children:r,...o}=e,a=Ce(Ee,t),[i,n]=v.useState(!1),[p,l]=v.useState(!1);return bo(()=>n(!0)),v.useEffect(()=>{let m=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(m)},[]),p?null:(0,k.jsx)(Ft,{asChild:!0,children:(0,k.jsx)(Le,{...o,children:i&&(0,k.jsxs)(k.Fragment,{children:[a.label," ",r]})})})},ho="ToastTitle",Nr=v.forwardRef((e,t)=>{let{__scopeToast:r,...o}=e;return(0,k.jsx)(A.div,{...o,ref:t})});Nr.displayName=ho;var xo="ToastDescription",Tr=v.forwardRef((e,t)=>{let{__scopeToast:r,...o}=e;return(0,k.jsx)(A.div,{...o,ref:t})});Tr.displayName=xo;var kr="ToastAction",Cr=v.forwardRef((e,t)=>{let{altText:r,...o}=e;return r.trim()?(0,k.jsx)(Pr,{altText:r,asChild:!0,children:(0,k.jsx)(et,{...o,ref:t})}):(console.error(`Invalid prop \`altText\` supplied to \`${kr}\`. Expected non-empty \`string\`.`),null)});Cr.displayName=kr;var Er="ToastClose",et=v.forwardRef((e,t)=>{let{__scopeToast:r,...o}=e,a=fo(Er,r);return(0,k.jsx)(Pr,{asChild:!0,children:(0,k.jsx)(A.button,{type:"button",...o,ref:t,onClick:P(e.onClick,a.onClose)})})});et.displayName=Er;var Pr=v.forwardRef((e,t)=>{let{__scopeToast:r,altText:o,...a}=e;return(0,k.jsx)(A.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":o||void 0,...a,ref:t})});function Mr(e){let t=[];return Array.from(e.childNodes).forEach(o=>{if(o.nodeType===o.TEXT_NODE&&o.textContent&&t.push(o.textContent),yo(o)){let a=o.ariaHidden||o.hidden||o.style.display==="none",i=o.dataset.radixToastAnnounceExclude==="";if(!a)if(i){let n=o.dataset.radixToastAnnounceAlt;n&&t.push(n)}else t.push(...Mr(o))}}),t}function ke(e,t,r,{discrete:o}){let a=r.originalEvent.currentTarget,i=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:r});t&&a.addEventListener(e,t,{once:!0}),o?le(a,i):a.dispatchEvent(i)}var fr=(e,t,r=0)=>{let o=Math.abs(e.x),a=Math.abs(e.y),i=o>a;return t==="left"||t==="right"?i&&o>r:!i&&a>r};function bo(e=()=>{}){let t=V(e);oe(()=>{let r=0,o=0;return r=window.requestAnimationFrame(()=>o=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(r),window.cancelAnimationFrame(o)}},[t])}function yo(e){return e.nodeType===e.ELEMENT_NODE}function Ro(e){let t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{let a=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||a?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function Ge(e){let t=document.activeElement;return e.some(r=>r===t?!0:(r.focus(),document.activeElement!==t))}var Ir=hr,tt=br,rt=Rr,ot=Nr,at=Tr,it=Cr,nt=et;var Q=M(z()),Lr=Ir,st=te.forwardRef(({className:e,...t},r)=>(0,Q.jsx)(tt,{ref:r,className:D("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));st.displayName=tt.displayName;var To=xe("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),ct=te.forwardRef(({className:e,variant:t,...r},o)=>(0,Q.jsx)(rt,{ref:o,className:D(To({variant:t}),e),...r}));ct.displayName=rt.displayName;var ko=te.forwardRef(({className:e,...t},r)=>(0,Q.jsx)(it,{ref:r,className:D("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t}));ko.displayName=it.displayName;var dt=te.forwardRef(({className:e,...t},r)=>(0,Q.jsx)(nt,{ref:r,className:D("absolute right-1 top-1 rounded-md p-1 text-foreground
1/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:(0,Q.jsx)(Mt,{className:"h-4 w-4"})}));dt.displayName=nt.displayName;var lt=te.forwardRef(({className:e,...t},r)=>(0,Q.jsx)(ot,{ref:r,className:D("text-sm font-semibold [&+div]:text-xs",e),...t}));lt.displayName=ot.displayName;var mt=te.forwardRef(({className:e,...t},r)=>(0,Q.jsx)(at,{ref:r,className:D("text-sm opacity-90",e),...t}));mt.displayName=at.displayName;var $=M(z());function Sr(){let{toasts:e}=re();return(0,$.jsxs)(Lr,{children:[e.map(function({id:t,title:r,description:o,action:a,...i}){return(0,$.jsxs)(ct,{...i,children:[(0,$.jsxs)("div",{className:"grid gap-1",children:[r&&(0,$.jsx)(lt,{children:r}),o&&(0,$.jsx)(mt,{children:o})]}),a,(0,$.jsx)(dt,{})]},t)}),(0,$.jsx)(st,{})]})}var Po=M(Kr());var _r="/build/_assets/tailwind-4BDCAPZZ.css";var _=M(z()),Mo=()=>[{rel:"stylesheet",href:_r},{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Space+Grotesk:[email protected]&display=swap"},...void 0?[{rel:"stylesheet",href:void 0}]:[]];function Dr(){let e=he(),t=(0,Pe.useRef)(null);return(0,Pe.useEffect)(()=>{t.current&&t.current.scrollTo(0,0)},[e.pathname]),(0,_.jsxs)("html",{lang:"en",className:"h-full font-sans",children:[(0,_.jsxs)("head",{children:[(0,_.jsx)("meta",{charSet:"utf-8"}),(0,_.jsx)("meta",{name:"viewport",content:"width=device-width,initial-scale=1"}),(0,_.jsx)(ht,{}),(0,_.jsx)(vt,{}),(0,_.jsx)("meta",{property:"og:image",content:"https://lafptocsuil8sakp.public.blob.vercel-storage.com/og-8hD3z53UHLHVtSFHRJlooI2zNiPKaN.png"}),(0,_.jsx)("script",{defer:!0,"data-domain":"opensourcealternative.to",src:"https://plausible.io/js/script.js"}),(0,_.jsx)("script",{async:!0,src:"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8774316631969790",crossOrigin:"anonymous"}),(0,_.jsx)("script",{async:!0,src:"https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX",crossOrigin:"anonymous"})]}),(0,_.jsxs)("body",{className:"overflow-hidden",children:[(0,_.jsxs)("main",{ref:t,className:"h-screen overflow-x-hidden overflow-y-scroll px-4 md:px-10",children:[(0,_.jsx)(gr,{}),(0,_.jsx)("div",{className:"mx-auto mb-10 max-w-5xl pt-16 md:pt-20",children:(0,_.jsx)(wt,{})}),(0,_.jsx)(Kt,{})]}),(0,_.jsx)(Sr,{}),(0,_.jsx)(Rt,{}),(0,_.jsx)(xt,{}),(0,_.jsx)(yt,{})]})]})}export{Dr as default,Mo as links};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.