1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,487486,e=>{"use strict";var t=e.i(176782),a=e.i(552245),r=e.i(225913),i=e.i(975157);let n=(0,r.cva)("group/badge inline-flex h-6 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-md border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:r="default",render:s,...l}){var o;return o={defaultTagName:"span",props:(0,t.mergeProps)({className:(0,i.cn)(n({variant:r}),e)},l),render:s,state:{slot:"badge",variant:r}},(0,a.useRenderElement)(o.defaultTagName??"div",o,o)}],487486)},793479,e=>{"use strict";var t,a=e.i(843476);e.i(247167);var r=e.i(271645);e.s([],166432),e.i(166432);var i=e.i(146376),n=e.i(667865),s=e.i(733332),l=e.i(956789);let o=((t={}).disabled="data-disabled",t.valid="data-valid",t.invalid="data-invalid",t.touched="data-touched",t.dirty="data-dirty",t.filled="data-filled",t.focused="data-focused",t),c={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},d={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},u={disabled:!1,...d},m={valid:e=>null===e?null:e?{[o.valid]:""}:{[o.invalid]:""}},f={invalid:void 0,name:void 0,validityData:{state:c,errors:[],error:"",value:"",initialValue:null},setValidityData:l.NOOP,disabled:void 0,touched:d.touched,setTouched:l.NOOP,dirty:d.dirty,setDirty:l.NOOP,filled:d.filled,setFilled:l.NOOP,focused:d.focused,setFocused:l.NOOP,validate:()=>null,validationMode:"onSubmit",validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:u,markedDirtyRef:{current:!1},registerFieldControl:l.NOOP,validation:{getValidationProps:(e,t=l.EMPTY_OBJECT)=>t,inputRef:{current:null},registerInput:l.NOOP,commit:async()=>{},change:l.NOOP}},p=r.createContext(f);function h(e=!0){let t=r.useContext(p);if(t.setValidityData===l.NOOP&&!e)throw Error((0,s.default)(28));return t}let v=r.createContext(void 0),g=r.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:l.NOOP,validationMode:"onSubmit",submitAttemptedRef:{current:!1}});function b(){return r.useContext(g)}var x=e.i(388940),y=e.i(788015);let w=r.createContext({controlId:void 0,registerControlId:l.NOOP,labelId:void 0,setLabelId:l.NOOP,messageIds:[],setMessageIds:l.NOOP,getDescriptionProps:e=>e});function j(){return r.useContext(w)}let C=function(e){let t=(0,y.useBaseUiId)(),i=void 0===e.controlId?t:e.controlId,[s,l]=r.useState(i),[o,c]=r.useState(e.labelId),[d,u]=r.useState([]),m=(0,x.useRefWithInit)(()=>new Map),{messageIds:f}
1=j(),p=(0,n.useStableCallback)((e,t)=>{let a=m.current;void 0===t?a.delete(e):(a.set(e,t),l(e=>{let t;if(0!==a.size){for(let r of a.values()){if(void 0!==e&&r===e)return e;void 0===t&&(t=r)}return t}}))}),h=r.useCallback(e=>{let t=e["aria-describedby"]?e["aria-describedby"].split(" "):[];return t.push(...f,...d),{...e,"aria-describedby":Array.from(new Set(t)).join(" ")||void 0}},[f,d]),v=r.useMemo(()=>({controlId:s,registerControlId:p,labelId:o,setLabelId:c,messageIds:d,setMessageIds:u,getDescriptionProps:h}),[s,p,o,c,d,u,h]);return(0,a.jsx)(w.Provider,{value:v,children:e.children})};var k=e.i(552245),N=e.i(439957),V=e.i(176782);function A(e,t){return{...e,state:{...e.state,valid:!t&&e.state.valid}}}let H=Object.keys(c);function E(e,t){let a=!1;for(let r of t)r.setCustomValidity(""),a||=r===e;a||e.setCustomValidity("")}let S=r.forwardRef(function(e,t){let{errors:o,validationMode:d,submitAttemptedRef:u}=b(),{render:f,className:h,validate:g,validationDebounceTime:y=0,validationMode:w=d,name:C,disabled:S=!1,invalid:M,dirty:R,touched:O,actionsRef:P,style:Z,...z}=e,I=function(e=!1){let t=r.useContext(v);if(!t&&!e)throw Error((0,s.default)(86));return t}(!0)?.disabled,T=(0,n.useStableCallback)(g||(()=>null)),L=I||S,[U,D]=r.useState(!1),[_,$]=r.useState(!1),[F,B]=r.useState(!1),[q,J]=r.useState(!1),Q=R??_,K=O??U,W=r.useRef(Q),G=r.useRef(void 0),[Y,X]=r.useState(),ee=C??Y;(0,i.useIsoLayoutEffect)(()=>{void 0!==R&&(W.current=R)},[R]);let et=r.useCallback(()=>G.current,[]),ea=r.useCallback(e=>{G.current=e},[]),er=(0,n.useStableCallback)(e=>{void 0===R&&(e&&(W.current=!0),$(e))}),ei=(0,n.useStableCallback)(e=>{void 0===O&&D(e)}),en=(0,n.useStableCallback)(()=>"onChange"===w||"onSubmit"===w&&u.current),es=ee&&Object.hasOwn(o,ee)?o[ee]:null,el=!!(Array.isArray(es)?es.length:es),eo=!0===M||el,[ec,ed]=r.useState({state:c,error:"",errors:[],value:null,initialValue:null}),eu=L?null:!eo&&ec.state.valid,em=r.useMemo(()=>({disabled:L,touched:K,dirty:Q,valid:eu,filled:F,focused:q}),[L,K,Q,eu,F,q]),ef=function(e){let{formRef:t}=b(),{setValidityData:a,validate:i,validityData:s,validationDebounceTime:o,invalid:d,markedDirtyRef:u,state:m,shouldValidateOnChange:f,getRegisteredFieldId:p}=e,{controlId:h,getDescriptionProps:v}=j(),g=(0,N.useTimeout)(),y=r.useRef(null),w=(0,x.useRefWithInit)(()=>new Set).current,C=r.useRef(0),k=r.useCallback(e=>{if(e)return w.add(e),()=>{w.delete(e)}},[w]),S=(0,n.useStableCallback)(async(e,r=!1)=>{let n,l=function(e){let t=null;for(let a of e)if(!a.disabled){if(!a.validity.valid)return a;t??=a}return t}(w)??y.current;if(!l)return;C.current+=1;let o=C.current;function v(e,a=d){let r=p()??h;if(null==r)return;let i=t.current.fields.get(r);if(!i)return;let n=A(e,a);t.current.fields.set(r,{...i,validityData:n})}if(r){if(!1!==m.valid)return;let t=l.validity;if(!t.valueMissing){let t={value:e,state:{...c,valid:!0},error:"",errors:[],initialValue:s.initialValue};E(l,w),v(t,!1),a(t);return}let r=H.reduce((e,a)=>(e[a]=t[a],e),{});if(!r.valid&&!function(e){if(!e||e.valid||!e.valueMissing)return!1;let t=!1;for(let a of H)"valid"!==a&&("valueMissing"===a?t=e[a]:e[a]&&(t=!1));return t}(r))return}g.clear();let b=null,x=[],j=function(e){let t=H.reduce((t,a)=>(t[a]=e.validity[a],t),{}),a=!1;for(let e of H)if("valid"!==e){if("valueMissing"===e&&t[e])a=!0;else if(t[e])return t}return a&&!u.current&&(t.valid=!0,t.valueMissing=!1),t}(l),k=f();if(l.validationMessage&&!k)n=l.validationMessage,x=[l.validationMessage];else{let a=i(e,Array.from(t.current.fields.values()).reduce((e,t)=>(t.name&&(e[t.name]=t.getValue()),e),{}));if("object"==typeof a&&null!==a&&"then"in a){if(b=await a,o!==C.current)return}else b=a;null!==b?(j.valid=!1,j.customError=!0,Array.isArray(b)?(x=b,l.setCustomValidity(b.join("\n"))):b&&(x=[b],l.setCustomValidity(b))):k&&(E(l,w),j.customError=!1,l.validationMessage?(n=l.validationMessage,x=[l.validationMessage]):l.validity.valid&&!j.valid&&(j.valid=!0))}let N={value:e,state:j,error:n??(Array.isArray(b)?b[0]:b??""),errors:x,initialValue:s.initialValue};v(N),a(N)}),M=(0,n.useStableCallback)(e=>{g.clear();let t=f();t&&""!==e&&o?(C.current+=1,g.start(o,()=>{S(e)})):S(e,!t)}),R=r.useCallback((e,t={})=>(0,V.mergeProps)(v(t),!1!==m.valid||m.disabled||e?l.EMPTY_OBJECT:{"aria-invalid":!0}),[v,m.disabled,m.valid]);return r.useMemo(()=>({getValidationProps:R,inputRef:y,registerInput:k,commit:S,change:M}),[R,k,S,M])}({setValidityData:ed,validate:T,validityData:ec,validationDebounceTime:y,invalid:eo,markedDirtyRef:W,state:em,shouldValidateOnChange:en,getRegisteredFieldId:et}
1),[ep,eh]=function(e){let{commit:t,invalid:a,markedDirtyRef:s,name:l,setRegisteredFieldName:o,setRegisteredFieldId:c,setValidityData:d,validityData:u}=e,{formRef:m}=b(),f=r.useRef(null),p=r.useRef(null),h=r.useRef(null),v=(0,n.useStableCallback)(()=>{let e=p.current;if(e)return e.getValue?e.getValue():e.value});function g(e){return void 0===e.value?v():e.value}let x=(0,n.useStableCallback)(()=>{let e=p.current;(s.current=!0,e)?t(g(e)):t(u.value)});function y(e=p.current?.id){e&&m.current.fields.delete(e)}(0,i.useIsoLayoutEffect)(()=>{let e=p.current;e&&e.id&&(o(l?void 0:e.name),m.current.fields.set(e.id,{getValue:v,name:l??e.name,controlRef:e.controlRef??h,validityData:A(u,a),validate:x}))},[m,v,a,l,o,x,u]),(0,i.useIsoLayoutEffect)(()=>{let e=m.current.fields;return()=>{let t=p.current?.id;t&&e.delete(t)}},[m]);let w=(0,n.useStableCallback)((e,t)=>{let r;if(!t){f.current===e&&(f.current=null,y(),p.current=null,o(void 0),c(void 0));return}let i=p.current?.id;f.current=e,p.current=t,l||o(t.name),c(t.id),i&&i!==t.id&&y(i),function(){let e=p.current;if(!e)return;let t=g(e);null===u.initialValue&&null!==t&&d(e=>({...e,initialValue:t}))}(),(r=p.current)&&r.id&&m.current.fields.set(r.id,{getValue:v,name:l??r.name,controlRef:r.controlRef??h,validityData:A(u,a),validate:x})});return[x,w]}({commit:ef.commit,invalid:eo,markedDirtyRef:W,name:C,setRegisteredFieldName:X,setRegisteredFieldId:ea,setValidityData:ed,validityData:ec});r.useImperativeHandle(P,()=>({validate:ep}),[ep]);let ev=r.useMemo(()=>({invalid:eo,name:ee,validityData:ec,setValidityData:ed,disabled:L,touched:K,setTouched:ei,dirty:Q,setDirty:er,filled:F,setFilled:B,focused:q,setFocused:J,validate:T,validationMode:w,validationDebounceTime:y,shouldValidateOnChange:en,state:em,markedDirtyRef:W,registerFieldControl:eh,validation:ef}),[eo,ee,ec,L,K,ei,Q,er,F,B,q,J,T,w,y,en,em,eh,ef]),eg=(0,k.useRenderElement)("div",e,{ref:t,state:em,props:z,stateAttributesMapping:m});return(0,a.jsx)(p.Provider,{value:ev,children:eg})}),M=r.forwardRef(function(e,t){return(0,a.jsx)(C,{children:(0,a.jsx)(S,{...e,ref:t})})});var R=e.i(229315),O=e.i(108868),P=e.i(647554);let Z=r.createContext({disabled:!1});function z(){return r.useContext(Z)}let I=r.forwardRef(function(e,t){let{render:a,className:s,style:l,id:o,nativeLabel:c=!0,...d}=e,u=h(!1),f=z(),{labelId:p}=j(),v={...u.state,disabled:u.disabled||f.disabled},g=r.useRef(null),b=function(e={}){let t,{id:a,fallbackControlId:r,native:s=!1,setLabelId:l,focusControl:o}=e,{controlId:c,setLabelId:d}=j(),u=(0,n.useStableCallback)(e=>{d(e),l?.(e)}),m=(t=(0,y.useBaseUiId)(a),(0,i.useIsoLayoutEffect)(()=>(u(t),()=>{u(void 0)}),[t,u]),t),f=c??r;function p(e){let t=(0,P.getTarget)(e.nativeEvent);t?.closest("button,input,select,textarea")||(!e.defaultPrevented&&e.detail>1&&e.preventDefault(),s||function(e){if(o)return o(e,f);if(!f)return;let t=(0,O.ownerDocument)(e.currentTarget).getElementById(f);(0,R.isHTMLElement)(t)&&t.focus({focusVisible:!0})}(e))}return s?{id:m,htmlFor:f??void 0,onMouseDown:p}:{id:m,onClick:p,onPointerDown(e){e.preventDefault()}}}({id:p??o,native:c});return(0,k.useRenderElement)("label",e,{ref:[t,g],state:v,props:[b,d],stateAttributesMapping:m})});var T=e.i(137584),L=e.i(209407),U=e.i(223910);let D={...m,...L.transitionStatusMapping},_=r.forwardRef(function(e,t){let{render:n,id:s,className:l,match:o,style:c,...d}=e,u=(0,y.useBaseUiId)(s),{validityData:m,state:f,name:p}=h(!1),{setMessageIds:v}=j(),{errors:g}=b(),x=p&&Object.hasOwn(g,p)?g[p]:null,w=!!(Array.isArray(x)?x.length:x),C="string"==typeof o,N=!1;N=!0===o||!f.disabled&&(C?!!m.state[o]:w||!1===m.state.valid);let{mounted:V,transitionStatus:A,setMounted:H}=(0,U.useTransitionStatus)(N);(0,i.useIsoLayoutEffect)(()=>{if(N&&u)return v(e=>e.concat(u)),()=>{v(e=>e.filter(e=>e!==u))}},[N,u,v]);let E=r.useRef(null),[S,M]=r.useState(null),[R,O]=r.useState(null),P=m.error;!C&&w?P=x:m.errors.length>1&&(P=m.errors);let Z=P??"";Array.isArray(P)&&(Z=P.length>1?(0,a.jsx)("ul",{children:P.map(e=>(0,a.jsx)("li",{children:e},e))}):P[0]??"");let z=Array.isArray(P)?JSON.stringify(P):P;N&&z!==R&&(O(z),M(Z)),(0,T.useOpenChangeComplete)({open:N,ref:E,onComplete(){N||H(!1)}});let I={...f,transitionStatus:A},L=(0,k.useRenderElement)("div",e,{ref:[t,E],state:I,props:[{id:u,children:N?Z:S},d],stateAttributesMapping:D,enabled:V});return V?L:null}),$=r.forwardRef(function(e,t){let{render:a,id:r,className:n,style:s,...l}=e,o=(0,y.useBaseUiId)(r),c=h(!1),d=z(),{setMessageIds:u}=j(),f={...c.state,disabled:c.disabled||d.disabled};return(0,i.useIsoLayoutEffect)(()=>
1{if(o)return u(e=>e.concat(o)),()=>{u(e=>e.filter(e=>e!==o))}},[o,u]),(0,k.useRenderElement)("p",e,{ref:t,state:f,props:[{id:o},l],stateAttributesMapping:m})});var F=e.i(951437),B=e.i(675606),q=e.i(56434);let J=r.forwardRef(function(e,t){let{render:a,className:s,id:o,name:c,value:d,disabled:u=!1,onValueChange:f,defaultValue:p,autoFocus:v=!1,style:g,...w}=e,{state:C,name:N,disabled:V,setTouched:A,setDirty:H,validityData:E,setFocused:S,setFilled:M,validationMode:Z,validation:z}=h(),{clearErrors:I}=b(),T=V||u,L=N??c,U={...C,disabled:T},{labelId:D}=j(),_=function(e={}){let{id:t,implicit:a=!1,controlRef:s}=e,{controlId:o,registerControlId:c}=j(),d=(0,y.useBaseUiId)(t),u=a?o:void 0,m=(0,x.useRefWithInit)(()=>Symbol("labelable-control")),f=r.useRef(!1),p=r.useRef(null!=t),h=(0,n.useStableCallback)(()=>{f.current&&c!==l.NOOP&&(f.current=!1,c(m.current,void 0))});return(0,i.useIsoLayoutEffect)(()=>{let e;if(c!==l.NOOP){if(a){let a=s?.current;e=(0,R.isElement)(a)&&null!=a.closest("label")?t??null:u??d}else if(null!=t)p.current=!0,e=t;else{if(!p.current)return void h();e=d}if(void 0===e)return void h();f.current=!0,c(m.current,e)}},[t,s,u,c,a,d,m,h]),r.useEffect(()=>h,[h]),o??d}({id:o});(0,i.useIsoLayoutEffect)(()=>{let e=null!=d;z.inputRef.current?.value||e&&""!==d?M(!0):e&&""===d&&M(!1)},[z.inputRef,M,d]);let $=r.useRef(null);(0,i.useIsoLayoutEffect)(()=>{v&&$.current===(0,P.activeElement)((0,O.ownerDocument)($.current))&&S(!0)},[v,S]);let[J]=(0,F.useControlled)({controlled:d,default:p,name:"FieldControl",state:"value"}),Q=void 0!==d,K=Q?J:void 0,W=(0,n.useStableCallback)(()=>z.inputRef.current?.value);return!function(e,t,a,n,s=!0,l){let{registerFieldControl:o}=h(),c=r.useRef(null);c.current||(c.current=Symbol()),(0,i.useIsoLayoutEffect)(()=>{let r=c.current;if(r&&s)return o(r,{controlRef:e,getValue:n,id:t,name:l,value:a}),()=>{o(r,void 0)}},[e,s,n,t,l,o,a])}(z.inputRef,_,K,W,!T,c),(0,k.useRenderElement)("input",e,{ref:[t,$],state:U,props:[{id:_,disabled:T,name:L,ref:z.inputRef,"aria-labelledby":D,autoFocus:v,...Q?{value:K}:{defaultValue:p},onChange(e){let t=e.currentTarget.value;f?.(t,(0,B.createChangeEventDetails)(q.REASONS.none,e.nativeEvent)),H(t!==E.initialValue),M(""!==t),e.nativeEvent.defaultPrevented||(I(L),z.change(t))},onFocus(){S(!0)},onBlur(e){A(!0),S(!1),"onBlur"===Z&&z.commit(e.currentTarget.value)},onKeyDown(e){"INPUT"===e.currentTarget.tagName&&"Enter"===e.key&&(A(!0),z.commit(e.currentTarget.value))}},w,e=>z.getValidationProps(T,e)],stateAttributesMapping:m})}),Q=r.createContext(void 0),K=r.forwardRef(function(e,t){let{render:i,className:n,style:l,disabled:o=!1,...c}=e,{state:d,disabled:u}=h(!1),f=u||o,p={...d,disabled:f},v=function(e=!0){let t=r.useContext(Q);if(void 0===t&&!e)throw Error((0,s.default)(3));return t}(),g=v?.allValues!==void 0?v?.parent.id:void 0,b=r.useMemo(()=>({disabled:f}),[f]),x=(0,k.useRenderElement)("div",e,{ref:t,state:p,props:c,stateAttributesMapping:m});return(0,a.jsx)(C,{controlId:g,children:(0,a.jsx)(Z.Provider,{value:b,children:x})})});e.s(["Control",0,J,"Description",0,$,"Error",0,_,"Item",0,K,"Label",0,I,"Root",0,M,"Validity",0,function(e){let{children:t}=e,{validityData:i,invalid:n}=h(!1),s=r.useMemo(()=>A(i,n),[i,n]),l=!1===s.state.valid,{transitionStatus:o}=(0,U.useTransitionStatus)(l),c=r.useMemo(()=>({...s,validity:s.state,transitionStatus:o}),[s,o]);return(0,a.jsx)(r.Fragment,{children:t(c)})}],305359);var W=e.i(305359),W=W;let G=r.forwardRef(function(e,t){return(0,a.jsx)(W.Control,{ref:t,...e})});var Y=e.i(225913),X=e.i(975157);let ee=(0,Y.cva)("w-full min-w-0 rounded-lg border border-input bg-surface px-3 text-sm transition-[border-color,box-shadow,background-color] duration-150 outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/20 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-muted disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20",{variants:{size:{default:"h-10 py-2",lg:"h-12 py-3 text-base"}},defaultVariants:{size:"default"}});e.s(["Input",0,function({className:e,type:t,size:r,...i}){return(0,a.jsx)(G,{type:t,"data-slot":"input",className:(0,X.cn)(ee({size:r}),e),...i})}],793479)},794909,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0});var r={default:function(){return d},getImageProps:function(){return c}};for(var i in r)Object.defineProperty(a,i,{enumerable:!0,get:r[i]});let n=e.r(563141),s=e.r(908927),l=e.r(605500),o=n._(e.r(1948));function c(e){let{props:t}=(0,s.getImgProps)(e,{defaultLoader:o.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qual
1ities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,a]of Object.entries(t))void 0===a&&delete t[e];return{props:t}}let d=l.Image},657688,(e,t,a)=>{t.exports=e.r(794909)},946697,188963,e=>{"use strict";let t={all:["projects"],comments:e=>[...t.detail(e),"comments"],detail:e=>[...t.all,e],list:()=>[...t.all,"list"],votes:e=>[...t.detail(e),"votes"]};class a extends Error{values;errors;constructor(e,t){super(e.errors?.form??t),this.name="ProjectFormError",this.values=e.values??{},this.errors=e.errors??{form:t}}}async function r(e){return await e.json()}async function i(e){try{return await e.json()}catch{return null}}async function n(e,t){try{let a=await r(e);return Error(a.errors?.body??a.error??t)}catch{return Error(t)}}async function s(){let e=await fetch("/api/projects",{cache:"no-store"});if(!e.ok)throw Error("Could not load projects.");return(await r(e)).projects}async function l(e){let t=await fetch(`/api/projects/${e}/votes`,{cache:"no-store"});if(!t.ok)throw Error("Could not load votes.");return r(t)}async function o(e){let t=await fetch(`/api/projects/${e}/votes`,{method:"POST"});if(!t.ok)throw await n(t,"Could not vote.");return r(t)}async function c(e){let t=await fetch(`/api/projects/${e}/comments`,{cache:"no-store"});if(!t.ok)throw Error("Could not load comments.");return(await r(t)).comments}async function d(e,t){let a=await fetch(`/api/projects/${e}/comments`,{body:JSON.stringify({body:t}),headers:{"Content-Type":"application/json"},method:"POST"});if(!a.ok)throw await n(a,"Could not add comment.");return r(a)}async function u(e,t){let a=await fetch(`/api/projects/${e}/comments/${t}/votes`,{method:"POST"});if(!a.ok)throw await n(a,"Could not vote.");return r(a)}async function m({projectId:e,values:t}){let r;try{r=await fetch(e?`/api/projects/${e}`:"/api/projects",{body:JSON.stringify(t),headers:{"Content-Type":"application/json"},method:e?"PATCH":"POST",signal:AbortSignal.timeout(45e3)})}catch(e){throw new a({values:t},e instanceof DOMException&&"TimeoutError"===e.name?"The server took too long to respond. Please try again.":"Network error. Check your connection and try again.")}if(!r.ok)throw new a(await i(r)??{values:t},"Could not save project.");let n=await i(r);if(!n?.project)throw new a({values:t},"The project may not have been saved. Please refresh and check.");return n.project}async function f(e){let t=await fetch(`/api/projects/${e}`,{method:"DELETE"});if(!t.ok)throw await n(t,"Could not delete project.")}e.s(["ProjectFormError",0,a,"createProjectComment",0,d,"deleteProject",0,f,"fetchProjectComments",0,c,"fetchProjectVote",0,l,"fetchProjects",0,s,"projectQueryKeys",0,t,"saveProject",0,m,"toggleProjectCommentVote",0,u,"toggleProjectVote",0,o],946697);var p=e.i(681307);let h=["ready_to_use","in_development","idea"],v=["latam","venezuela","colombia"],g=["youtube.com","www.youtube.com","youtu.be","vimeo.com","www.vimeo.com","loom.com","www.loom.com","screen.studio","www.screen.studio","screenstudio.com","www.screenstudio.com","instagram.com","www.instagram.com","tiktok.com","www.tiktok.com","m.tiktok.com","vm.tiktok.com","vt.tiktok.com"],b=p.z.string().trim().min(3,"Use at least 3 characters.").max(64,"Use 64 characters or fewer.").regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"Use lowercase letters, numbers, and single hyphens."),x=p.z.string().trim().url("Enter a valid URL."),y=["github.com","linkedin.com","www.linkedin.com","x.com","twitter.com","instagram.com","www.instagram.com","bsky.app","dev.to"];p.z.object({slug:b,name:p.z.string().trim().min(2,"Name is required.").max(120),lifecycleStatus:p.z.enum(h).default("ready_to_use"),applicability:p.z.enum(v).default("latam"),projectUrl:x,countries:p.z.string().trim().min(2,"Add at least one participant country."),participantName:p.z.string().trim().min(2,"Team or participant name is required.").max(120),ownerSocialUrls:p.z.string().trim().refine(e=>!e||e.split(",").every(e=>{try{let t=new URL(e.trim());return"https:"===t.protocol&&y.includes(t.hostname.toLowerCase())}catch{return!1}}),"Use comma-separated public GitHub, LinkedIn, X, Instagram, Bluesky, or DEV profile links.").default(""),videoUrl:p.z.string().trim().refine(e=>{if(!e)return!0;try{let t=new URL(e).hostname.toLowerCase();return g.includes(t)}catch{return!1}},"Use YouTube, Vimeo, Loom, Screen Studio, Instagram, TikTok, or a similar hosted video link."),imageUrl:p.z.string().trim().refine(e=>{if(!e)return!0;try{let t=new URL(e);return"https:"===t.protocol&&t.hostname.endsWith(".public.blob.vercel-storage.com")}catch{return!1}},"Upload a valid project image."),contributeInUrl:p.z.string().trim().refine(e=>{if(!e)return!0;try{let t=new URL(e);return["http:","https:"].includes(t.protocol)}catch{return!1}},"Enter a valid http(s) URL."),descriptionMarkdown:p.z.string().trim().min(80,"Add a fuller markdown description.").max(12e3,"Keep the description under 12,000 characters.")}),p.z.object({body:p.z.string().trim().min(3,"Add at least 3 characters.").max(1200,"Keep comments under 1,200 characters.")}),e.s(["isProjectApplicableTo",0,function(e,t){return"latam"===e.applicability||e.applicability===t},"projectApplicabilities",0,v,"projectLifecycleStatuses",0,h,"sortCommentsByVotes",0,function(e){return[...e].sort((e,t)=>
1t.votesCount-e.votesCount||e.createdAt.localeCompare(t.createdAt))},"sortProjectsByVotes",0,function(e){return[...e].sort((e,t)=>t.votesCount-e.votesCount||Number(!!t.videoUrl)-Number(!!e.videoUrl)||(t.publishedAt??t.createdAt).localeCompare(e.publishedAt??e.createdAt))}],188963)},929592,e=>{"use strict";var t=e.i(843476),a=e.i(225913),r=e.i(975157);let i=(0,a.cva)("group/alert relative grid w-full gap-1 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-3 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"}},defaultVariants:{variant:"default"}});e.s(["Alert",0,function({className:e,variant:a,...n}){return(0,t.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,r.cn)(i({variant:a}),e),...n})},"AlertDescription",0,function({className:e,...a}){return(0,t.jsx)("div",{"data-slot":"alert-description",className:(0,r.cn)("text-xs/relaxed text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-2",e),...a})},"AlertTitle",0,function({className:e,...a}){return(0,t.jsx)("div",{"data-slot":"alert-title",className:(0,r.cn)("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",e),...a})}])},515288,e=>{"use strict";var t=e.i(843476),a=e.i(975157);e.s(["Card",0,function({className:e,size:r="default",...i}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-border [--card-spacing:--spacing(5)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(4)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...i})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-xs/relaxed text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("font-heading text-sm font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},266027,e=>{"use strict";let t;var a=e.i(869230);e.i(247167);var r=e.i(271645),i=e.i(273911),n=e.i(619273),s=e.i(540143),l=e.i(912598);e.i(843476);var o=r.createContext((t=!1,{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t})),c=r.createContext(!1);c.Provider;var d=(e,t,a)=>t.fetchOptimistic(e).catch(()=>{a.clearReset()});e.s(["useQuery",0,function(e,t){return function(e,t,a){let u,m=r.useContext(c),f=r.useContext(o),p=(0,l.useQueryClient)(a),h=p.defaultQueryOptions(e);p.getDefaultOptions().queries?._experimental_beforeQuery?.(h);let v=p.getQueryCache().get(h.queryHash),g=!1!==e.subscribed;if(h._optimisticResults=m?"isRestoring":g?"optimistic":void 0,h.suspense){let e=e=>"static"===e?e:Math.max(e??1e3,1e3),t=h.staleTime;h.staleTime="function"==typeof t?(...a)=>e(t(...a)):e(t),"number"==typeof h.gcTime&&(h.gcTime=Math.max(h.gcTime,1e3))}u=v?.state.error&&"function"==typeof h.throwOnError?(0,n.shouldThrowError)(h.throwOnError,[v.state.error,v]):h.throwOnError,(h.suspense||h.experimental_prefetchInRender||u)&&!f.isReset()&&(h.retryOnMount=!1),r.useEffect(()=>{f.clearReset()},[f]);let b=!p.getQueryCache().get(h.queryHash),[x]=r.useState(()=>new t(p,h)),y=x.getOptimisticResult(h),w=!m&&g;if(r.useSyncExternalStore(r.useCallback(e=>{let t=w?x.subscribe(s.notifyManager.batchCalls(e)):n.noop;return x.updateResult(),t},[x,w]),()=>x.getCurrentResult(),()=>x.getCurrentResult()),r.useEffect(()=>{x.setOptions(h)},[h,x]),h?.suspense&&y.isPending)throw d(h,x,f);if((({result:e,errorResetBoundary:t,throwOnError:a,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&void 0===e.data||(0,n.shouldThrowError)(a,[e.error,r])))({result:y,errorResetBoundary:f,throwOnError:h.throwOnError,query:v,suspense:h.suspense}))throw y.error;if(p.getDefaultOptions().queries?._experimental_afterQuery?.(h,y),h.experimental_prefetchInRender&&!i.environmentManager.isServer()&&y.isLoading&&y.isFetching&&!m){let e=b?d(h,x,f):v?.promise;e?.catch(n.noop).finally(()=>{x.updateResult()})}return h.notifyOnChangeProps?y:x.trackResult(y)}(e,a.QueryObserver,t)}],266027)},172509,e=>{"use strict";var t=e.i(843476),a=e.i(657688),r=e.i(975157);e.s(["AuthorBadge",0,function({name:e,imageUrl:i,meta:n,className:s,imageClassName:l,nameClassName:o,metaClassName:c}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex min-w-0 max-w-full items-center gap-3",s),children:[i?(0,t.jsx)(a.default,{alt:"",className:(0,r.cn)("size-10 shrink-0 rounded-full border border-border object-cover grayscale",l),height:40,src:i,unoptimized:!0,width:40}):(0,t.jsx)("div",{className:(0,r.cn)("flex size-10 shrink-0 items-center justify-center rounded-full border border-border bg-card font-mono text-xs font-black uppercase tracking-[-0.04em] text-muted-foreground",l),children:e.split(/\s+/).filter(
1Boolean).slice(0,2).map(e=>e[0]?.toUpperCase()).join("")||"BV"}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:(0,r.cn)("truncate font-mono text-sm font-bold uppercase tracking-[0.14em]",o),children:e}),n?(0,t.jsx)("p",{className:(0,r.cn)("mt-1 truncate font-mono text-xs uppercase tracking-[0.16em] text-muted-foreground",c),children:n}):null]})]})}])},144849,e=>{"use strict";var t=e.i(843476),a=e.i(525209),r=e.i(271645),i=e.i(769464);let n=new Map([["bold",r.createElement(r.Fragment,null,r.createElement("path",{d:"M208,136H48a20,20,0,0,0-20,20v36a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V156A20,20,0,0,0,208,136Zm-4,52H52V160H204Zm4-144H48A20,20,0,0,0,28,64v36a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V64A20,20,0,0,0,208,44Zm-4,52H52V68H204Z"}))],["duotone",r.createElement(r.Fragment,null,r.createElement("path",{d:"M216,152v40a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V152a8,8,0,0,1,8-8H208A8,8,0,0,1,216,152Zm-8-96H48a8,8,0,0,0-8,8v40a8,8,0,0,0,8,8H208a8,8,0,0,0,8-8V64A8,8,0,0,0,208,56Z",opacity:"0.2"}),r.createElement("path",{d:"M208,136H48a16,16,0,0,0-16,16v40a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V152A16,16,0,0,0,208,136Zm0,56H48V152H208v40Zm0-144H48A16,16,0,0,0,32,64v40a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V64A16,16,0,0,0,208,48Zm0,56H48V64H208v40Z"}))],["fill",r.createElement(r.Fragment,null,r.createElement("path",{d:"M224,152v40a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V152a16,16,0,0,1,16-16H208A16,16,0,0,1,224,152ZM208,48H48A16,16,0,0,0,32,64v40a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V64A16,16,0,0,0,208,48Z"}))],["light",r.createElement(r.Fragment,null,r.createElement("path",{d:"M208,138H48a14,14,0,0,0-14,14v40a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V152A14,14,0,0,0,208,138Zm2,54a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V152a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2ZM208,50H48A14,14,0,0,0,34,64v40a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V64A14,14,0,0,0,208,50Zm2,54a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V64a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2Z"}))],["regular",r.createElement(r.Fragment,null,r.createElement("path",{d:"M208,136H48a16,16,0,0,0-16,16v40a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V152A16,16,0,0,0,208,136Zm0,56H48V152H208v40Zm0-144H48A16,16,0,0,0,32,64v40a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V64A16,16,0,0,0,208,48Zm0,56H48V64H208v40Z"}))],["thin",r.createElement(r.Fragment,null,r.createElement("path",{d:"M208,140H48a12,12,0,0,0-12,12v40a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V152A12,12,0,0,0,208,140Zm4,52a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V152a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4ZM208,52H48A12,12,0,0,0,36,64v40a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V64A12,12,0,0,0,208,52Zm4,52a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V64a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4Z"}))]]),s=r.forwardRef((e,t)=>r.createElement(i.default,{ref:t,...e,weights:n}));s.displayName="RowsIcon";let l=new Map([["bold",r.createElement(r.Fragment,null,r.createElement("path",{d:"M100,36H56A20,20,0,0,0,36,56v44a20,20,0,0,0,20,20h44a20,20,0,0,0,20-20V56A20,20,0,0,0,100,36ZM96,96H60V60H96ZM200,36H156a20,20,0,0,0-20,20v44a20,20,0,0,0,20,20h44a20,20,0,0,0,20-20V56A20,20,0,0,0,200,36Zm-4,60H160V60h36Zm-96,40H56a20,20,0,0,0-20,20v44a20,20,0,0,0,20,20h44a20,20,0,0,0,20-20V156A20,20,0,0,0,100,136Zm-4,60H60V160H96Zm104-60H156a20,20,0,0,0-20,20v44a20,20,0,0,0,20,20h44a20,20,0,0,0,20-20V156A20,20,0,0,0,200,136Zm-4,60H160V160h36Z"}))],["duotone",r.createElement(r.Fragment,null,r.createElement("path",{d:"M112,56v48a8,8,0,0,1-8,8H56a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8h48A8,8,0,0,1,112,56Zm88-8H152a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V56A8,8,0,0,0,200,48Zm-96,96H56a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V152A8,8,0,0,0,104,144Zm96,0H152a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V152A8,8,0,0,0,200,144Z",opacity:"0.2"}),r.createElement("path",{d:"M200,136H152a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V152A16,16,0,0,0,200,136Zm0,64H152V152h48v48ZM104,40H56A16,16,0,0,0,40,56v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V56A16,16,0,0,0,104,40Zm0,64H56V56h48v48Zm96-64H152a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,64H152V56h48v48Zm-96,32H56a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V152A16,16,0,0,0,104,136Zm0,64H56V152h48v48Z"}))],["fill",r.createElement(r.Fragment,null,r.createElement("path",{d:"M120,56v48a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40h48A16,16,0,0,1,120,56Zm80-16H152a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm-96,96H56a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V152A16,16,0,0,0,104,136Zm96,0H152a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V152A16,16,0,0,0,200,136Z"}))],["light",r.createElement(r.Fragment,null,r.createElement("path",{d:"M104,42H56A14,14,0,0,0,42,56v48a14,14,0,0,0,14,14h48a14,14,0,0,0,14-14V56A14,14,0,0,0,104,42Zm2,62a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V56a2,2,0,0,1,2-2h48a2,2,0,0,1,2,2Zm94-62H152a14,14,0,0,0-14,14v48a14,14,0,0,0,14,14h48a14,14,0,0,0,14-14V56A14,14,0,0,0,200,42Zm2,62a2,2,0,0,1-2,2H152a2,2,0,0,1-2-2V56a2,2,0,0,1,2-2h48a2,2,0,0,1,2,2Zm-98,34H56a14,14,0,0,0-14,14v48a14,14,0,0,0,14,14h48a14,14,0,0,0,14-14V152A14,14,0,0,0,104,138Zm2,62a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V152a2,2,0,0,1,2-2h48a2,2,0,0,1,2,2Zm94-62H152a14,14,0,0,0-14,14v48a14,14,0,0,0,14,14h48a14,14,0,0,0,14-14V152A14,14,0,0,0,200,138Zm2,62a2,2,0,0,1-2,2H152a2,2,0,0,1-2-2V152a2,2,0,0,1,2-2h48a2,2,0,0,1,2,2Z"}))],["regular",r.createElement(r.Fragment,null,r.createElement("path",{d:"M104,40H56A16,16,0,0,0,40,56v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V56A16,16,0,0,0,104,40Zm0,64H56V56h48v48Zm96-64H152a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,64H152V56h48v48Zm-96,32H56a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V152A16,16,0,0,0,104,136Zm0,64H56V152h48v48Zm96-64H152a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V152A16,16,0,0,0,200,136Zm0,64H152V152h48v48Z"}))],["thin",r.createElement(r.Fragment,null,r.createElement("path",{d:"M104,44H
156A12,12,0,0,0,44,56v48a12,12,0,0,0,12,12h48a12,12,0,0,0,12-12V56A12,12,0,0,0,104,44Zm4,60a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V56a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4Zm92-60H152a12,12,0,0,0-12,12v48a12,12,0,0,0,12,12h48a12,12,0,0,0,12-12V56A12,12,0,0,0,200,44Zm4,60a4,4,0,0,1-4,4H152a4,4,0,0,1-4-4V56a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4ZM104,140H56a12,12,0,0,0-12,12v48a12,12,0,0,0,12,12h48a12,12,0,0,0,12-12V152A12,12,0,0,0,104,140Zm4,60a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V152a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4Zm92-60H152a12,12,0,0,0-12,12v48a12,12,0,0,0,12,12h48a12,12,0,0,0,12-12V152A12,12,0,0,0,200,140Zm4,60a4,4,0,0,1-4,4H152a4,4,0,0,1-4-4V152a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4Z"}))]]),o=r.forwardRef((e,t)=>r.createElement(i.default,{ref:t,...e,weights:l}));o.displayName="SquaresFourIcon";var c=e.i(266027),d=e.i(861745),u=e.i(948148),m=e.i(657688),f=e.i(522016),p=e.i(487486),h=e.i(975157),v=e.i(172509);let g={ready_to_use:"border-success/20 bg-success/10 text-success",in_development:"border-brand-blue/20 bg-brand-blue/10 text-link",idea:"border-warning/20 bg-warning/10 text-warning"};function b({project:e,href:a,imageLoading:r,applicabilityLabel:i,lifecycleLabel:n,openLabel:s,voteLabel:l,disabledLabel:o,categoryLabel:c,className:d}){let u=e.ownerName||e.participantName,m=e.ownerName&&e.ownerName!==e.participantName?e.participantName:void 0;return(0,t.jsxs)("article",{className:(0,h.cn)("group flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card shadow-sm transition-[border-color,box-shadow,transform] duration-200 ease-[var(--ease-out)] hover:-translate-y-0.5 hover:border-line-strong hover:shadow-lg motion-reduce:hover:translate-y-0",d),children:[(0,t.jsx)(y,{href:a,imageLoading:r,project:e}),(0,t.jsxs)("div",{className:"flex flex-1 flex-col p-5 sm:p-6",children:[(0,t.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:["disabled"===e.status&&o?(0,t.jsx)(p.Badge,{className:"shrink-0 font-mono font-bold uppercase tracking-[0.08em]",variant:"destructive",children:o}):null,(0,t.jsx)(p.Badge,{className:(0,h.cn)("shrink-0 font-mono font-bold uppercase tracking-[0.08em]",g[e.lifecycleStatus]),variant:"outline",children:n}),(0,t.jsx)("span",{className:"truncate text-xs text-muted-foreground",children:c||i})]}),(0,t.jsx)("h3",{className:"mt-4 text-balance text-xl font-semibold leading-tight tracking-[-0.025em]",children:(0,t.jsx)(f.default,{className:"ui-focus transition-colors group-hover:text-link",href:a,children:e.name})}),(0,t.jsx)("p",{className:"mt-2 line-clamp-2 text-sm leading-6 text-muted-foreground",children:w(e)}),(0,t.jsx)(v.AuthorBadge,{className:"mt-5",imageClassName:"size-8",imageUrl:e.ownerImageUrl,meta:m,metaClassName:"text-xs normal-case tracking-normal",name:u,nameClassName:"font-sans text-sm normal-case tracking-normal"}),(0,t.jsxs)("div",{className:"mt-5 flex min-w-0 items-center justify-between gap-4 border-t pt-4",children:[(0,t.jsx)("p",{className:"truncate text-xs text-muted-foreground",children:e.countries.join(" · ")}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-3",children:[(0,t.jsxs)("span",{className:"font-mono text-xs text-muted-foreground tabular-nums",children:[e.votesCount," ",l]}),(0,t.jsxs)(f.default,{"aria-label":`${s} ${e.name}`,className:"ui-focus text-sm font-semibold text-link",href:a,children:[s," ",(0,t.jsx)("span",{"aria-hidden":"true",children:"â"})]})]})]})]})]})}function x({project:e,href:a,applicabilityLabel:r,lifecycleLabel:i,openLabel:n,voteLabel:s,disabledLabel:l,categoryLabel:o}){let c=e.ownerName||e.participantName;return(0,t.jsxs)("article",{className:"group grid min-w-0 grid-cols-[6.5rem_minmax(0,1fr)] items-start gap-4 roun
1ded-xl border bg-card p-4 transition-[border-color,box-shadow] hover:border-line-strong hover:shadow-md sm:grid-cols-[10rem_minmax(0,1fr)_auto] sm:items-center sm:gap-5",children:[(0,t.jsx)(y,{compact:!0,href:a,project:e}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:["disabled"===e.status&&l?(0,t.jsx)(p.Badge,{className:"font-mono font-bold uppercase tracking-[0.08em]",variant:"destructive",children:l}):null,(0,t.jsx)(p.Badge,{className:(0,h.cn)("font-mono font-bold uppercase tracking-[0.08em]",g[e.lifecycleStatus]),variant:"outline",children:i}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:o||r})]}),(0,t.jsx)("h3",{className:"mt-2 truncate text-lg font-semibold tracking-[-0.02em]",children:(0,t.jsx)(f.default,{className:"ui-focus transition-colors group-hover:text-link",href:a,children:e.name})}),(0,t.jsx)("p",{className:"mt-1 line-clamp-1 text-sm text-muted-foreground",children:w(e)}),(0,t.jsxs)("p",{className:"mt-2 truncate text-xs text-muted-foreground",children:[c," · ",e.countries.join(" · ")]})]}),(0,t.jsxs)("div",{className:"col-span-2 flex items-center justify-between gap-4 border-t pt-3 sm:col-span-1 sm:flex-col sm:items-end sm:border-t-0 sm:pt-0",children:[(0,t.jsxs)("span",{className:"font-mono text-xs text-muted-foreground tabular-nums",children:[e.votesCount," ",s]}),(0,t.jsxs)(f.default,{"aria-label":`${n} ${e.name}`,className:"ui-focus text-sm font-semibold text-link",href:a,children:[n," ",(0,t.jsx)("span",{"aria-hidden":"true",children:"â"})]})]})]})}function y({compact:e=!1,href:a,imageLoading:r,project:i}){return(0,t.jsx)(f.default,{"aria-label":i.name,className:(0,h.cn)("relative block overflow-hidden bg-muted",e?"aspect-square rounded-lg sm:aspect-[5/3]":"aspect-[16/10] rounded-t-xl"),href:a,children:i.imageUrl?(0,t.jsx)(m.default,{alt:`${i.name} project preview`,className:"object-cover transition-transform duration-300 ease-[var(--ease-out)] group-hover:scale-[1.02] motion-reduce:transition-none",fill:!0,loading:r,sizes:e?"(max-width: 640px) 104px, 160px":"(max-width: 768px) 100vw, 33vw",src:i.imageUrl}):(0,t.jsx)("div",{className:"bg-grid absolute inset-0 flex items-center justify-center bg-surface-subtle",children:(0,t.jsx)("span",{className:"font-mono text-4xl font-black tracking-[-0.08em] text-foreground/15 sm:text-5xl",children:i.name.split(/\s+/).filter(Boolean).slice(0,2).map(e=>e[0]?.toUpperCase()).join("")})})})}function w(e){return e.descriptionMarkdown.replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/[#>*_`~|-]/g," ").replace(/\s+/g," ").trim()||e.name}var j=e.i(929592),C=e.i(519455),k=e.i(515288),N=e.i(793479);let V=[{id:"personas",label:"Find People",title:"Missing & Found People",description:"Report, search, and reunite missing people and pets â WhatsApp/Telegram bots, facial recognition, and rescue maps. Join here if you want to help families find each other.",keywords:["desaparecid","personas encontrad","personas localizad","missing person","reunif","reencuentr","localizad","found people","find people","buscar persona","facial","rostro","face match","mascota","lost pet","rescate","rescue","atrapad","te busca","seres queridos"]},{id:"recursos",label:"Aid Coordination",title:"Aid & Resource Coordination",description:"Live maps and directories of shelters, collection centers, hospitals, volunteers, and needs by zone. Join here to help route help to where it's needed.",keywords:["refugio","albergue","acopio","shelter","collection center","voluntari","volunteer","centros de salud","hospital","insumos","necesidad","zonas afectadas","affected zones","heatmap","directorio","centraliza","mapa vivo"]},{id:"data",label:"Data & APIs",title:"Data, Dedup & Shared APIs",description:"The shared data layer â scraping, normalization, deduplication, and open APIs other tools build on. Join here to make every other tool speak the same truth.",keywords:["dedup","deduplic","normaliz","rag","scrap","indice consultable","index","pgvector","embedding","registros","unificad","fuente de informaci","single source","public api"]},{id:"damage",label:"Damage Assessment",title:"Structural Damage Assessment",description:"Crowdsourced and AI-assisted assessment of building damage, habitability, and structural risk. Join here if you work with engineering, CV, or satellite data.",keywords:["daño estructural","structural damage","habitabilidad","atc-20","ems-98","ingeniero civil","satelital","satellite","infraestructura perdida","clasificación de daño","damage mapping"]},{id:"donations",label:"Donations",title:"Donations & Funding",description:"Crowdfunding, donor matching, and transparent aid payments. Join here to move money and supplies to people who need them.",keywords:["donaci","donation","crowdfunding","campaña","usdc","payment","pago","cripto","crypto","fiat","recaud","donante"]},{id:"infra",label:"Connectivity & Infra",title:"Connectivity & Infrastru
1cture",description:"Offline mesh networking, edge inference, sensing, and alerts that keep tools running when the grid is down. Join here for the hardest, highest-leverage bets.",keywords:["mesh","offline","sin internet","bluetooth","wifi direct","csi","esp32","inferencia","inference","swarm","p2p","sensing","sensor","alarma","alerta","muestras de audio","señales de radio"]},{id:"info",label:"Verified Info",title:"Verified Info & Anti-misinformation",description:"Fighting rumors with verified, real-time information. Join here to keep the public informed and the noise down.",keywords:["desinformaci","misinformation","rumor","verificad","verified","fact-check","última hora","noticias","fake"]},{id:"other",label:"Other",title:"Community & Other",description:"Community, meta, and builds that don't fit a single cluster yet.",keywords:[]}];Object.fromEntries(V.map(e=>[e.id,e]));let A={"reencuentros-terremoto-venezuela":"personas","busco-familiar":"personas","te-encontramos":"personas","venezuela-juntos":"personas","busca-chat":"personas","found-people-telegram-bot":"personas","red-apoyo-venezuela":"personas","venezuelan-tracker":"personas","rescue-map-venezuela":"personas",sospatitas:"personas",rsh:"recursos","civis-venezuela":"recursos",resqlink:"recursos",sosvenezuelanet:"recursos","apoyo-venezuela":"recursos",martinezdan:"recursos","medical-supplies":"recursos","avapre-redh":"recursos","unidos-venezuela":"recursos","reporte-ve":"recursos",juxchxx:"recursos","ayuda-venezuela":"recursos","miranda-conecta":"recursos",statuslocal:"recursos","directorio-sismo":"recursos","centraliza-ayuda":"recursos","data-team":"data","desaparecidos-rag-unificado":"data","rag-whatsapp-consultas":"data",sismoayudave:"damage",terrave:"damage","reporta-venezuela":"damage",pote:"donations","proyecto-slug-kommercio":"donations","entre-panas":"donations","achylo-pay":"donations","mesh-sync-offline":"infra",caribellm:"infra",esperanza:"infra","mapeo-de-signos-vitales-tiempo-real":"infra",doomedag:"infra",verive:"info","crafter-station":"other"};V.map(e=>e.id);var H=e.i(946697),E=e.i(188963);function S({active:e,icon:a,label:r,onClick:i}){return(0,t.jsx)(C.Button,{"aria-label":r,"aria-pressed":e,size:"icon-sm",variant:e?"default":"ghost",onClick:i,title:r,type:"button",children:a})}function M({active:e,count:a,label:r,onClick:i}){return(0,t.jsxs)(C.Button,{"aria-pressed":e,onClick:i,size:"sm",type:"button",variant:e?"default":"outline",children:[(0,t.jsx)("span",{children:r}),(0,t.jsx)("span",{className:"font-mono text-[0.68rem] opacity-70 tabular-nums",children:a})]})}e.s(["ProjectsGrid",0,function({initialProjects:e,clusters:i,assignments:n,initialCountry:l}){let m=(0,d.useLocale)(),f=(0,u.useTranslations)("Projects.grid"),[p,h]=(0,r.useState)("all"),[v,g]=(0,r.useState)("all"),[y,w]=(0,r.useState)(l??"all"),[C,R]=(0,r.useState)("grid"),[O,P]=(0,r.useState)(""),Z=(0,r.useDeferredValue)(O.trim().toLocaleLowerCase(m)),{data:z=[],isFetching:I}=(0,c.useQuery)({initialData:e,queryFn:H.fetchProjects,queryKey:H.projectQueryKeys.list(),refetchInterval:3e4,refetchIntervalInBackground:!1}),T=new Map(i.map(e=>[e.id,e])),L=z.map(e=>({project:e,categoryId:n[e.slug]??function(e){let t=A[e.slug];if(t)return t;let a=`${e.name} ${e.descriptionMarkdown}`.toLowerCase(),r="other",i=0;for(let e of V){if("other"===e.id)continue;let t=0;for(let r of e.keywords)a.includes(r)&&(t+=1);t>i&&(i=t,r=e.id)}return r}(e)})),U=new Map,D=new Map;for(let{categoryId:e,project:t}of L)U.set(e,(U.get(e)??0)+1),D.set(t.lifecycleStatus,(D.get(t.lifecycleStatus)??0)+1);let _=i.filter(e=>(U.get(e.id)??0)>0),$=L.filter(({categoryId:e,project:t})=>{let a="all"===p||e===p,r="all"===v||t.lifecycleStatus===v,i="all"===y||(0,E.isProjectApplicableTo)(t,y),n=!Z||`${t.name} ${t.descriptionMarkdown} ${t.ownerName} ${t.participantName} ${t.countries.join(" ")}`.toLocaleLowerCase(m).includes(Z);return a&&r&&i&&n}),F="all"===p?null:T.get(p);return 0===z.length?(0,t.jsx)(k.Card,{children:(0,t.jsx)(k.CardContent,{className:"text-muted-foreground",children:f("empty")})}):(0,t.jsxs)("div",{children:[(0,t.jsx)(k.Card,{className:"shadow-sm",size:"sm",children:(0,t.jsxs)(k.CardContent,{children:[(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(a.MagnifyingGlassIcon,{className:"pointer-events-none absolute top-1/2 left-3 -translate-y-1/2 text-muted-foreground"}),(0,t.jsx)(N.Input,{"aria-label":f("searchPlaceholder"),className:"bg-background pl-10",onChange:e=>P(e.target.value),placeholder:f("searchPlaceholder"),type:"search",value:O})]}),(0,t.jsxs)("div",{className:"mt-3 flex gap-2 overflow-x-auto pb-1",children:[(0,t.jsx)(M,{active:"all"===p,count:z.length,label:f("all"),onClick:()=>h("all")}),_.map(e=>(0,t.jsx)(M,{active:p===e.id,count:U.get(e.id)??0,label:e.label,onClick:()=>h(e.id)},e.id))]}),(0,t.jsxs)("div",{className:"mt-2 flex gap-2 overflow-x-auto border-t pt-3 pb-1",children:[(0,t.jsx)(M,{active:"all"===y,count:z.length,label:f("all"),onClick:()=>w("all")}),(0,t.jsx)(M,{active:"venezuela"===y,count:z.filter(e=>(0,E.isProjectApplicableTo)(e,"venezuela")).length,label:f("applicabilities.venezuela"),onClick:()=>w("venezuela")}),(0,t.jsx)(M,{active:"colombia"===y,count:z.filter(e=>(0,E.isProjectApplicableTo)(e,"colombia")).length,label:f("applicabilities.colombia"),onClick:()=>w("colombia")})]}),(0,t.jsxs)("div",{className:"mt-2 flex gap-2 overflow-x-auto border-t pt-3 pb-1",children:[(0,t.jsx)(M,{active:"all"===v,count:z.length,label:f("statuses.all"),onClick:()=>g("all")}),E.projectLifecycleStatuses.map(e=>(0,t.jsx)(M,{active:v===e,count:D.get(e)??0,label:f(`statuses.${e}`),onClick:()=>g(e)},e))]})]})}),F?(0,t.jsxs)(j.Alert,{className:"mt-4 border-brand-blue/20 bg-brand-blue/5",children:[(0,t.jsx)(j.AlertTitle,{className:"text-link",children:F.title}),(0,t.jsx)(j.AlertDescription,{className:"max-w-3xl",children:F.description})]}):null,(0,t.jsxs)("div",{className:"my-6 flex items-center justify-between gap-4",children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground",children:[(0,t.jsx)("span",{className:"font-medium text-foreground tabular-nums",children:$.length})," ",1===$.length?f("project"):f("projects"),(0,t.jsx)("span",{className:"ml-2 hidden text-xs sm:inline",children:I?f("syncing"):f("live")})]}),(0,t.jsxs)("div",{className:"inline-flex rounded-lg border bg-card p-1",children:[(0,t.jsx)(S,{active:"grid"===C,icon:(0,t.jsx)(o,{}),label:f("views.grid"),onClick:()=>R("grid")}),(0,t.jsx)(S,{active:"list"===C,icon:(0,t.jsx)(s,{}),label:f("views.list"),onClick:()=>R("list")})]})]}),0===$.length?(0,t.jsx)(k.Card,{children:(0,t.jsx)(k.CardContent,{className:"text-center text-muted-foreground",children:f("empty")})}):"grid"===C?(0,t.jsx)("div",{className:"grid gap-5 md:grid-cols-2 lg:grid-cols-3",children:$.map(({categoryId:e,project:a},r)=>(0,t.jsx)(b,{applicabilityLabel:f(`applicabilities.${a.applicability}`),categoryLabel:T.get(e)?.label,disabledLabel:f("disabled"),href:`/${m}/p/${a.slug}`,imageLoading:r<3?"eager":void 0,lifecycleLabel:f(`statuses.${a.lifecycleStatus}`),openLabel:f("open"),project:a,voteLabel:1===a.votesCount?f("vote"):f("votes")},a.id))}):(0,t.jsx)("div",{className:"flex flex-col gap-3",children:$.map(({categoryId:e,project:a})=>(0,t.jsx)(x,{applicabilityLabel:f(`applicabilities.${a.applicability}`),categoryLabel:T.get(e)?.label,disabledLabel:f("disabled"),href:`/${m}/p/${a.slug}`,lifecycleLabel:f(`statuses.${a.lifecycleStatus}`),openLabel:f("open"),project:a,voteLabel:1===a.votesCount?f("vote"):f("votes")},a.id))})]})}],144849)},971179,e=>{"use strict";
1var t=e.i(843476),a=e.i(885897),r=e.i(853355),i=e.i(719658),n=e.i(861745),s=e.i(948148);let l=(0,e.i(519455).buttonVariants)({size:"lg"});e.s(["SubmitProjectCta",0,function(){let e=(0,n.useLocale)(),o=(0,s.useTranslations)("Projects.submitCta"),c=`/${e}/submit`;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(a.ClerkLoading,{children:(0,t.jsx)("button",{"aria-label":"Loading submit project action",className:`${l} pointer-events-none opacity-60`,disabled:!0,type:"button",children:(0,t.jsx)("span",{className:"invisible",children:o("label")})})}),(0,t.jsx)(r.Show,{when:"signed-in",children:(0,t.jsx)("a",{className:l,href:c,children:o("label")})}),(0,t.jsx)(r.Show,{when:"signed-out",children:(0,t.jsx)(i.SignInButton,{forceRedirectUrl:c,mode:"modal",signUpForceRedirectUrl:c,children:(0,t.jsx)("button",{className:l,type:"button",children:o("label")})})})]})}])}]);
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.