PageSourceSearch

https://gitnasr.com/_next/static/chunks/e080fce08f358c82.js

js gitnasr.com collected 2026-10-02 01:30:50 UTC 22,607 bytes, 1 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,66027,69230,69637,e=>{"use strict";let t;var r=e.i(75555),s=e.i(40143),i=e.i(86491),a=e.i(15823),n=e.i(93803),l=e.i(19273),o=e.i(80166),c=class extends a.Subscribable{constructor(e,t){super(),this.options=t,this.#e=e,this.#t=null,this.#r=(0,n.pendingThenable)(),this.bindMethods(),this.setOptions(t)}#e;#s=void 0;#i=void 0;#a=void 0;#n;#l;#r;#t;#o;#c;#u;#d;#h;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#s.addObserver(this),u(this.#s,this.options)?this.#f():this.updateResult(),this.#g())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return d(this.#s,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return d(this.#s,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#x(),this.#b(),this.#s.removeObserver(this)}setOptions(e){let t=this.options,r=this.#s;if(this.options=this.#e.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof(0,l.resolveEnabled)(this.options.enabled,this.#s))throw Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#v(),this.#s.setOptions(this.options),t._defaulted&&!(0,l.shallowEqualObjects)(this.options,t)&&this.#e.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#s,observer:this});let s=this.hasListeners();s&&h(this.#s,r,this.options,t)&&this.#f(),this.updateResult(),s&&(this.#s!==r||(0,l.resolveEnabled)(this.options.enabled,this.#s)!==(0,l.resolveEnabled)(t.enabled,this.#s)||(0,l.resolveStaleTime)(this.options.staleTime,this.#s)!==(0,l.resolveStaleTime)(t.staleTime,this.#s))&&this.#y();let i=this.#j();s&&(this.#s!==r||(0,l.resolveEnabled)(this.options.enabled,this.#s)!==(0,l.resolveEnabled)(t.enabled,this.#s)||i!==this.#p)&&this.#R(i)}getOptimisticResult(e){var t,r;let s=this.#e.getQueryCache().build(this.#e,e),i=this.createResult(s,e);return t=this,r=i,(0,l.shallowEqualObjects)(t.getCurrentResult(),r)||(this.#a=i,this.#l=this.options,this.#n=this.#s.state),i}getCurrentResult(){return this.#a}trackResult(e,t){return new Proxy(e,{get:(e,r)=>(this.trackProp(r),t?.(r),"promise"===r&&(this.trackProp("data"),this.options.experimental_prefetchInRender||"pending"!==this.#r.status||this.#r.reject(Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(e,r))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#s}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),r=this.#e.getQueryCache().build(this.#e,t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){return this.#f({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#a))}#f(e){this.#v();let t=this.#s.fetch(this.options,e);return e?.throwOnError||(t=t.catch(l.noop)),t}#y(){this.#x();let e=(0,l.resolveStaleTime)(this.options.staleTime,this.#s);if(l.isServer||this.#a.isStale||!(0,l.isValidTimeout)(e))return;let t=(0,l.timeUntilStale)(this.#a.dataUpdatedAt,e);this.#d=o.timeoutManager.setTimeout(()=>{this.#a.isStale||this.updateResult()},t+1)}#j(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#s):this.options.refetchInterval)??!1}#R(e){this.#b(),this.#p=e,!l.isServer&&!1!==(0,l.resolveEnabled)(this.options.enabled,this.#s)&&(0,l.isValidTimeout)(this.#p)&&0!==this.#p&&(this.#h=o.timeoutManager.setInterval(()=>{(this.options.refetchIntervalInBackground||r.focusManager.isFocused())&&this.#f()},this.#p))}#g(){this.#y(),this.#R(this.#j())}#x(){this.#d&&(o.timeoutManager.clearTimeout(this.#d),this.#d=void 0)}#b(){this.#h&&(o.timeoutManager.clearInterval(this.#h),this.#h=void 0)}createResult(e,t){let r,s=this.#s,a=this.options,o=this.#a,c=this.#n,d=this.#l,m=e!==s?e.state:this.#i,{state:f}=e,g={...f},x=!1;if(t._optimisticResults){let r=this.hasListeners(),n=!r&&u(e,t),l=r&&h(e,s,t,a);(n||l)&&(g={...g,...(0,i.fetchState)(f.data,e.options)}),"isRestoring"===t._optimisticResults&&(g.fetchStatus="idle")}let{error:b,errorUpdatedAt:v,status:y}=g;r=g.data;let j=!1;if(void 0!==t.placeholderData&&void 0===r&&"pending"===y){let e;o?.isPlaceholderData&&t.placeholderData===d?.placeholderData?(e=
1o.data,j=!0):e="function"==typeof t.placeholderData?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,void 0!==e&&(y="success",r=(0,l.replaceData)(o?.data,e,t),x=!0)}if(t.select&&void 0!==r&&!j)if(o&&r===c?.data&&t.select===this.#o)r=this.#c;else try{this.#o=t.select,r=t.select(r),r=(0,l.replaceData)(o?.data,r,t),this.#c=r,this.#t=null}catch(e){this.#t=e}this.#t&&(b=this.#t,r=this.#c,v=Date.now(),y="error");let R="fetching"===g.fetchStatus,w="pending"===y,N="error"===y,Q=w&&R,C=void 0!==r,k={status:y,fetchStatus:g.fetchStatus,isPending:w,isSuccess:"success"===y,isError:N,isInitialLoading:Q,isLoading:Q,data:r,dataUpdatedAt:g.dataUpdatedAt,error:b,errorUpdatedAt:v,failureCount:g.fetchFailureCount,failureReason:g.fetchFailureReason,errorUpdateCount:g.errorUpdateCount,isFetched:g.dataUpdateCount>0||g.errorUpdateCount>0,isFetchedAfterMount:g.dataUpdateCount>m.dataUpdateCount||g.errorUpdateCount>m.errorUpdateCount,isFetching:R,isRefetching:R&&!w,isLoadingError:N&&!C,isPaused:"paused"===g.fetchStatus,isPlaceholderData:x,isRefetchError:N&&C,isStale:p(e,t),refetch:this.refetch,promise:this.#r,isEnabled:!1!==(0,l.resolveEnabled)(t.enabled,e)};if(this.options.experimental_prefetchInRender){let t=void 0!==k.data,r="error"===k.status&&!t,i=e=>{r?e.reject(k.error):t&&e.resolve(k.data)},a=()=>{i(this.#r=k.promise=(0,n.pendingThenable)())},l=this.#r;switch(l.status){case"pending":e.queryHash===s.queryHash&&i(l);break;case"fulfilled":(r||k.data!==l.value)&&a();break;case"rejected":r&&k.error===l.reason||a()}}return k}updateResult(){let e=this.#a,t=this.createResult(this.#s,this.options);if(this.#n=this.#s.state,this.#l=this.options,void 0!==this.#n.data&&(this.#u=this.#s),(0,l.shallowEqualObjects)(t,e))return;this.#a=t;let r=()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,r="function"==typeof t?t():t;if("all"===r||!r&&!this.#m.size)return!0;let s=new Set(r??this.#m);return this.options.throwOnError&&s.add("error"),Object.keys(this.#a).some(t=>this.#a[t]!==e[t]&&s.has(t))};this.#w({listeners:r()})}#v(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#s)return;let t=this.#s;this.#s=e,this.#i=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#g()}#w(e){s.notifyManager.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#a)}),this.#e.getQueryCache().notify({query:this.#s,type:"observerResultsUpdated"})})}};function u(e,t){return!1!==(0,l.resolveEnabled)(t.enabled,e)&&void 0===e.state.data&&("error"!==e.state.status||!1!==t.retryOnMount)||void 0!==e.state.data&&d(e,t,t.refetchOnMount)}function d(e,t,r){if(!1!==(0,l.resolveEnabled)(t.enabled,e)&&"static"!==(0,l.resolveStaleTime)(t.staleTime,e)){let s="function"==typeof r?r(e):r;return"always"===s||!1!==s&&p(e,t)}return!1}function h(e,t,r,s){return(e!==t||!1===(0,l.resolveEnabled)(s.enabled,e))&&(!r.suspense||"error"!==e.state.status)&&p(e,r)}function p(e,t){return!1!==(0,l.resolveEnabled)(t.enabled,e)&&e.isStaleByTime((0,l.resolveStaleTime)(t.staleTime,e))}e.s(["QueryObserver",()=>c],69230),e.i(47167);var m=e.i(71645),f=e.i(12598);e.i(18050);var g=m.createContext((t=!1,{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t})),x=m.createContext(!1);x.Provider;var b=(e,t,r)=>t.fetchOptimistic(e).catch(()=>{r.clearReset()});function v(e,t,r){let i,a=m.useContext(x),n=m.useContext(g),o=(0,f.useQueryClient)(r),c=o.defaultQueryOptions(e);o.getDefaultOptions().queries?._experimental_beforeQuery?.(c);let u=o.getQueryCache().get(c.queryHash);if(c._optimisticResults=a?"isRestoring":"optimistic",c.suspense){let e=e=>"static"===e?e:Math.max(e??1e3,1e3),t=c.staleTime;c.staleTime="function"==typeof t?(...r)=>e(t(...r)):e(t),"number"==typeof c.gcTime&&(c.gcTime=Math.max(c.gcTime,1e3))}i=u?.state.error&&"function"==typeof c.throwOnError?(0,l.shouldThrowError)(c.throwOnError,[u.state.error,u]):c.throwOnError,(c.suspense||c.experimental_prefetchInRender||i)&&!n.isReset()&&(c.retryOnMount=!1),m.useEffect(()=>{n.clearReset()},[n]);let d=!o.getQueryCache().get(c.queryHash),[h]=m.useState(()=>new t(o,c)),p=h.getOptimisticResult(c),v=!a&&!1!==e.subscribed;if(m.useSyncExternalStore(m.useCallback(e=>{let t=v?h.subscribe(s.notifyManager.batchCalls(e)):l.noop;return h.updateResult(),t},[h,v]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),m.useEffect(()=>{h.setOptions(c)},[c,h]),c?.suspense&&p.isPending)throw b(c,h,n);if((({result:e,errorResetBoundary:t,throwOnError:r,query:s,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&s&&(i&&void 0===e.data||(0,l.shouldThrowError)(r,[e.error,s])))({result:p,errorResetBoundary:n,throwOnError:c.throwOnError,query:u,suspense:c.suspense}))throw p.error;if(o.getDefaultOptions().queries?._experimental_afterQuery?.(c,p),c.experimental_prefetchInRender&&!l.isServer&&p.isLoading&&p.isFetching&&!a){let e=d?b(c,h,n):u?.promise;e?.catch(l.noop).finally(()=>{h.updateResult()})}return c.notifyOnChangeProps?p:h.trackResult(p)}function y(e,t){return v(e,c,t)}e.s(["useBaseQuery",()=>v],69637),e.s(["useQuery",()=>y],66027)},12492,e=>{"use strict";var t=e.i(11629);async function r(){if(!(0,t.isContentfulConfigured)())return console.warn("Contentful not configured, returning empty tags"),[];try{return(await t.contentfulClient.getTags()).items.map(e=>({id:e.sys.id,name:e.name})).sort((e,t)=>
1e.name.localeCompare(t.name))}catch(e){return console.error("Error fetching tags from Contentful:",e),[]}}e.s(["getAllTags",()=>r])},76859,74049,e=>{"use strict";var t=e.i(18050),r=e.i(22016);function s({project:e}){let s="slug"in e?e.slug:e.title.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,""),i=(e.tags||[]).map(e=>"string"==typeof e?e:e.name),a=e.techstack||[],n="shortDescription"in e&&e.shortDescription?e.shortDescription:"string"==typeof e.content?e.content.replace(/#{1,6}\s+/g,"").replace(/\*\*(.+?)\*\*/g,"$1").replace(/\*(.+?)\*/g,"$1").replace(/`{1,3}[^`\n]+`{1,3}/g,"").replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/^[-*+]\s+/gm,"").replace(/^\d+\.\s+/gm,"").replace(/\n{2,}/g," ").replace(/\n/g," ").trim().slice(0,150)+"...":"";return(0,t.jsxs)(r.default,{href:`/projects/${s}`,className:"group bg-card-dark border border-border-dark hover:border-primary transition-all duration-300 block",children:[(0,t.jsxs)("div",{className:"h-56 md:h-64 w-full bg-cover bg-center relative grayscale group-hover:grayscale-0 transition-all duration-500 border-b border-border-dark",style:{backgroundImage:`url('${e.image}')`},children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-background-dark/50 group-hover:bg-transparent transition-all"}),i.length>0&&(0,t.jsxs)("div",{className:"absolute top-0 right-0 flex flex-wrap justify-end gap-1 max-w-[70%]",children:[i.slice(0,2).map((e,r)=>(0,t.jsx)("div",{className:"bg-primary text-white px-3 py-1 text-[10px] font-bold uppercase tracking-widest",children:e},r)),i.length>2&&(0,t.jsxs)("div",{className:"bg-primary/80 text-white px-2 py-1 text-[10px] font-bold uppercase tracking-widest",children:["+",i.length-2]})]})]}),(0,t.jsxs)("div",{className:"p-6 md:p-8 flex flex-col gap-6 h-full",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-xl md:text-2xl font-bold text-white mb-2 group-hover:text-primary transition-colors tracking-tight",children:e.title}),(0,t.jsx)("p",{className:"text-cream-muted text-sm leading-relaxed font-normal line-clamp-3",children:n})]}),a.length>0&&(0,t.jsx)("div",{className:"mt-auto pt-6 border-t border-border-dark flex flex-wrap gap-2",children:a.map((e,r)=>(0,t.jsxs)("span",{children:[(0,t.jsx)("span",{className:"text-[10px] font-bold uppercase tracking-widest text-primary",children:e}),r<a.length-1&&(0,t.jsx)("span",{className:"text-[10px] font-bold uppercase tracking-widest text-primary ml-2",children:"/"})]},r))})]})]})}e.s(["default",()=>s],76859);var i=e.i(69230),a=e.i(92571),n=class extends i.QueryObserver{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){super.setOptions({...e,behavior:(0,a.infiniteQueryBehavior)()})}getOptimisticResult(e){return e.behavior=(0,a.infiniteQueryBehavior)(),super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"backward"}}})}createResult(e,t){let{state:r}=e,s=super.createResult(e,t),{isFetching:i,isRefetching:n,isError:l,isRefetchError:o}=s,c=r.fetchMeta?.fetchMore?.direction,u=l&&"forward"===c,d=i&&"forward"===c,h=l&&"backward"===c,p=i&&"backward"===c;return{...s,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:(0,a.hasNextPage)(t,r.data),hasPreviousPage:(0,a.hasPreviousPage)(t,r.data),isFetchNextPageError:u,isFetchingNextPage:d,isFetchPreviousPageError:h,isFetchingPreviousPage:p,isRefetchError:o&&!u&&!h,isRefetching:n&&!d&&!p}}},l=e.i(69637),o=e.i(66027),c=e.i(671),u=e.i(11629);function d(e={}){var t;let{tagIds:r=[],enabled:s=!0}=e,i=(t={queryKey:["projects",{tagIds:r}],queryFn:async({pageParam:e=0})=>r.length>0?(0,c.getProjectsByTag)(r,e):(0,c.getProjects)(e),getNextPageParam:e=>{if(e.hasNextPage)return Math.floor((e.skip+e.limit)/e.limit)},initialPageParam:0,enabled:s&&(0,u.isContentfulConfigured)(),staleTime:3e5},(0,l.useBaseQuery)(t,n,void 0));return{projects:i.data?.pages.flatMap(e=>e.projects)||[],total:i.data?.pages[0]?.total||0,isLoading:i.isLoading,isFetchingNextPage:i.isFetchingNextPage,isError:i.isError,error:i.error,hasNextPage:i.hasNextPage??!1,fetchNextPage:i.fetchNextPage,refetch:i.refetch,isConfigured:(0,u.isContentfulConfigured)()}}function h(){let e=(0,o.useQuery)({queryKey:["projects","featured"],queryFn:c.getFeaturedProjects,enabled:(0,u.isContentfulConfigured)(),staleTime:3e5});return{projects:e.data??[],isLoading:e.isLoading,isError:e.isError,isConfigured:(0,u.isContentfulConfigured)()}}e.s(["useFeaturedProjectsFromCMS",()=>h,"useProjects",()=>d],74049)},60678,e=>{"use strict";var t=e.i(71645);e.i(47167);var r=e.i(93803),s=e.i(19273);function i(e){return e}function a(e,t,a){if("object"!=typeof t||null===t)return;let n=e.getMutationCache(),l=e.getQueryCache(),o=a?.defaultOptions?.deserializeData??e.getDefaultOptions().hydrate?.deserializeData??i,c=t.mutations||[],u=t.queries||[];
1c.forEach(({state:t,...r})=>{n.build(e,{...e.getDefaultOptions().hydrate?.mutations,...a?.defaultOptions?.mutations,...r},t)}),u.forEach(({queryKey:t,state:i,queryHash:n,meta:c,promise:u,dehydratedAt:d})=>{let h=u?(0,r.tryResolveSync)(u):void 0,p=void 0===i.data?h?.data:i.data,m=void 0===p?p:o(p),f=l.get(n),g=f?.state.status==="pending",x=f?.state.fetchStatus==="fetching";if(f){let e=h&&void 0!==d&&d>f.state.dataUpdatedAt;if(i.dataUpdatedAt>f.state.dataUpdatedAt||e){let{fetchStatus:e,...t}=i;f.setState({...t,data:m})}}else f=l.build(e,{...e.getDefaultOptions().hydrate?.queries,...a?.defaultOptions?.queries,queryKey:t,queryHash:n,meta:c},{...i,data:m,fetchStatus:"idle",status:void 0!==m?"success":i.status});u&&!g&&!x&&(void 0===d||d>f.state.dataUpdatedAt)&&f.fetch(void 0,{initialPromise:Promise.resolve(u).then(o)}).catch(s.noop)})}var n=e.i(12598),l=({children:e,options:r={},state:s,queryClient:i})=>{let l=(0,n.useQueryClient)(i),o=t.useRef(r);t.useEffect(()=>{o.current=r});let c=t.useMemo(()=>{if(s){if("object"!=typeof s)return;let e=l.getQueryCache(),t=s.queries||[],r=[],i=[];for(let s of t){let t=e.get(s.queryHash);t?(s.state.dataUpdatedAt>t.state.dataUpdatedAt||s.promise&&"pending"!==t.state.status&&"fetching"!==t.state.fetchStatus&&void 0!==s.dehydratedAt&&s.dehydratedAt>t.state.dataUpdatedAt)&&i.push(s):r.push(s)}if(r.length>0&&a(l,{queries:r},o.current),i.length>0)return i}},[l,s]);return t.useEffect(()=>{c&&a(l,{queries:c},o.current)},[l,c]),e};e.s(["HydrationBoundary",()=>l],60678)},93658,e=>{"use strict";var t=e.i(18050),r=e.i(71645),s=e.i(76859);function i({tags:e,selectedTagIds:r,onTagSelect:s,onClearAll:i,isLoading:a=!1}){return a?(0,t.jsx)("div",{className:"flex flex-wrap gap-2 mb-8",children:Array.from({length:5}).map((e,r)=>(0,t.jsx)("div",{className:"h-9 w-20 bg-card-dark animate-pulse border border-border-dark"},r))}):0===e.length?null:(0,t.jsxs)("div",{className:"mb-8",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsx)("button",{onClick:i,className:`px-4 py-2 text-xs font-bold uppercase tracking-widest transition-all border ${0===r.length?"bg-primary text-white border-primary":"bg-transparent text-cream-muted border-border-dark hover:border-cream/30 hover:text-cream"}`,children:"All"}),e.map(e=>{let i=r.includes(e.id);return(0,t.jsx)("button",{onClick:()=>s(e.id),className:`px-4 py-2 text-xs font-bold uppercase tracking-widest transition-all border ${i?"bg-primary text-white border-primary":"bg-transparent text-cream-muted border-border-dark hover:border-cream/30 hover:text-cream"}`,children:e.name},e.id)})]}),r.length>0&&(0,t.jsxs)("div",{className:"mt-4 flex items-center gap-2 text-sm text-cream-muted",children:[(0,t.jsx)("span",{children:"Filtering by:"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:r.map(r=>{let i=e.find(e=>e.id===r);return i?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 bg-primary/20 text-primary text-xs font-medium",children:[i.name,(0,t.jsx)("button",{onClick:()=>s(r),className:"hover:text-white transition-colors","aria-label":`Remove ${i.name} filter`,children:(0,t.jsx)("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]},r):null})}),(0,t.jsx)("button",{onClick:i,className:"text-xs text-cream-muted hover:text-cream underline transition-colors ml-2",children:"Clear all"})]})]})}var a=e.i(74049),n=e.i(66027),l=e.i(12492),o=e.i(76135);function c(){let e,[c,u]=(0,r.useState)([]),{tags:d,isLoading:h}=(e=(0,n.useQuery)({queryKey:["tags"],queryFn:l.getAllTags,staleTime:6e5,gcTime:18e5}),(0,r.useEffect)(()=>{e.data&&(0,o.setTagNameMap)(e.data)},[e.data]),{tags:e.data||[],isLoading:e.isLoading,isError:e.isError,error:e.error,refetch:e.refetch}),{projects:p,total:m,isLoading:f,isFetchingNextPage:g,isError:x,hasNextPage:b,fetchNextPage:v,isConfigured:y}=(0,a.useProjects)({tagIds:c}),j=(0,r.useCallback)(e=>{u(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),R=(0,r.useCallback)(()=>{u([])},[]),w=function(e,t,s={rootMargin:"100px"}){let i=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let r=new IntersectionObserver(r=>{let[s]=r;s.isIntersecting&&t&&e()},s),a=i.current;return a&&r.observe(a),()=>{a&&r.unobserve(a)}},[t,e]),i}(v,!!(b&&!g));return y?(0,t.jsx)("div",{className:"min-h-screen pt-28 md:pt-32 pb-16 md:pb-24",children:(0,t.jsxs)("div",{className:"max-w-350 mx-auto px-6 md:px-12 lg:px-24",children:[(0,t.jsxs)("div",{className:"mb-16 md:mb-20",children:[(0,t.jsxs)("div",{className:"flex items-center gap-4 mb-8",children:[(0,t.jsx)("span",{className:"h-px w-12 md:w-16 bg-primary"}),(0,t.jsx)("h1",{className:"text-3xl md:text-5xl lg:text-6xl font-black text-white uppercase tracking-tight",children:"All Projects"})]}),(0,t.jsx)("p",{className:"text-cream-muted text-base md:text-lg lg:text-xl max-w-3xl",children:"A comprehensive archive of my engineering work spanning web development, mobile apps, DevOps, automation, and AI integration."})]}),(0,t.jsxs)("div",{className:"mb-16 pb-8 border-b border-border-dark",children:[(0,t.jsx)(i,{tags:d,selectedTagIds:c,onTagSelect:j,onClearAll:R,isLoading:h}),!f&&p.length>0&&(0,t.jsxs)("div",{className:"mt-4 text-sm text-cream-muted",children:["Showing ",p.length," of ",m," projects"]})]}),f?(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:Array.from({length:6}).map((e,r)=>(0,t.jsxs)("div",{className:"bg-card-dark border border-border-dark animate-pulse",children:[(0,t.jsx)("div",{className:"h-56 md:h-64 bg-border-dark/30"}),(0,t.jsxs)("div",{className:"p-6 md:p-8",children:[(0,t.jsx)("div",{className:"h-6 bg-border-dark/30 w-3/4 mb-4"}),(0,t.jsx)("div",{className:"h-4 bg-border-dark/30 w-full mb-2"}),(0,t.jsx)("div",{className:"h-4 bg-border-dark/30 w-2/3"})]})]},r))}):x?(0,t.jsx)("div",{className:"flex items-center justify-center min-h-96",children:(0,t.jsx)("div",{className:"text-primary text-lg",children:"Failed to load projects"})}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:p.map(e=>(0,t.jsx)(s.default,{project:e},e.id))}),0===p.length&&(0,t.jsx)("div",{className:"flex items-center justify-center min-h-96",children:(0,t.jsx)("div",{className:"text-cream-muted text-lg",children:c.length>0?"No projects found with the selected tags":"No projects found"})}),(0,t.jsxs)("div",{ref:w,className:"h-20 flex items-center justify-center",children:[g&&(0,t.jsxs)("div",{className:"flex items-center gap-3 text-cream-muted",children:[(0,t.jsxs)("svg",{className:"animate-spin h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[(0,t.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,t.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),(0,t.jsx)("span",{children:"Loading more projects..."})]}),!b&&p.length>0&&(0,t.jsx)("div",{className:"text-cream-muted text-sm",children:"You've reached the end"})]})]})]})}):(0,t.jsx)("div",{className:"min-h-screen pt-28 md:pt-32 pb-16 md:pb-24",children:(0,t.jsx)("div",{className:"max-w-350 mx-auto px-6 md:px-12 lg:px-24",children:(0,t.jsx)("div",{className:"flex items-center justify-center min-h-96",children:(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("h2",{className:"text-2xl font-bold text-cream mb-4",children:"Contentful Not Configured"}),(0,t.jsx)("p",{className:"text-cream-muted",children:"Please set up your Contentful credentials in .env.local to display projects."})]})})})})}e.s(["default",()=>c],93658)}]);

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.