1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5493],{326:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var a=r(1509),s=r(3829),n=r(4359),i=r(4943),l=r(4079),o=r(4037);let d=function(e){let{data:t,className:r}=e;return(0,a.jsx)("div",{className:(0,o.cn)("relative",r),children:(0,a.jsx)(l.N_,{href:"/blog/".concat(t.slug),className:"group block",children:(0,a.jsx)("div",{className:"relative overflow-hidden rounded-xl",children:(0,a.jsx)(i.Zp,{className:"overflow-hidden border py-0 shadow-sm hover:shadow-md transition-all duration-300",children:(0,a.jsxs)("div",{className:"grid md:grid-cols-2",children:[(0,a.jsx)("div",{className:"aspect-[16/9] md:aspect-auto relative w-full overflow-hidden",children:(0,a.jsx)(s.default,{src:t.coverImage,alt:t.title,fill:!0,className:"object-cover transition-transform group-hover:scale-105 duration-500",sizes:"(max-width: 768px) 100vw, 50vw",priority:!0})}),(0,a.jsxs)(i.Wu,{className:"p-4 md:p-6 flex flex-col justify-between h-full",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex flex-wrap gap-1.5 mb-3 md:mb-4",children:[t.tags.slice(0,3).map(e=>(0,a.jsx)(n.E,{variant:"outline",className:"text-xs capitalize px-2 py-0 h-5",children:e},e)),t.tags.length>3&&(0,a.jsxs)(n.E,{variant:"outline",className:"text-xs px-2 py-0 h-5",children:["+",t.tags.length-3]})]}),(0,a.jsx)("h2",{className:"text-xl sm:text-2xl md:text-3xl font-bold mb-2 md:mb-3 line-clamp-2 group-hover:text-primary transition-colors",children:t.title}),(0,a.jsx)("p",{className:"text-muted-foreground mb-4 text-sm md:text-base line-clamp-2 md:line-clamp-3",children:t.description})]}),(0,a.jsxs)("div",{className:"flex items-center gap-3 pt-3 border-t border-border/40",children:[(0,a.jsx)("div",{className:"w-8 h-8 md:w-10 md:h-10 rounded-full overflow-hidden relative flex-shrink-0 ring-1 ring-border/50",children:(0,a.jsx)(s.default,{src:t.authorImage,alt:t.author,fill:!0,className:"object-cover",sizes:"(max-width: 768px) 32px, 40px"})}),(0,a.jsxs)("div",{className:"flex-grow min-w-0",children:[(0,a.jsx)("p",{className:"text-sm md:text-base font-medium truncate",children:t.author}),(0,a.jsxs)("p",{className:"text-xs text-muted-foreground truncate",children:[(0,o.Y)(t.date)," \xb7 ",t.readingTime]})]})]})]})]})})})})})}},426:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return o},getImageProps:function(){return l}});let a=r(3772),s=r(4002),n=r(4170),i=a._(r(4338));function l(e){let{props:t}=(0,s.getImgProps)(e,{defaultLoader:i.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920],imageSizes:[16,32,48,64,96,128,256],qualities:[75,85,90,95,100],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let o=n.Image},3829:(e,t,r)=>{"use strict";r.d(t,{default:()=>s.a});var a=r(426),s=r.n(a)},4037:(e,t,r)=>{"use strict";r.d(t,{Y:()=>i,cn:()=>n});var a=r(9127),s=r(428);function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,s.QP)((0,a.$)(t))}function i(e){return new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}},4079:(e,t,r)=>{"use strict";r.d(t,{N_:()=>n,a8:()=>l,rd:()=>o});var a=r(9937),s=r(7637);let{Link:n,redirect:i,usePathname:l,useRouter:o,getPathname:d}=(0,a.A)(s.D)},4359:(e,t,r)=>{"use strict";r.d(t,{E:()=>o});var a=r(1509),s=r(161),n=r(2623),i=r(4037);let l=(0,n.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function o(e){let{className:t,variant:r,asChild:n=!1,...o}
1=e,d=n?s.Slot:"span";return(0,a.jsx)(d,{"data-slot":"badge",className:(0,i.cn)(l({variant:r}),t),...o})}},4832:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var a=r(1509),s=r(300);let n=(0,s.A)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),i=(0,s.A)("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);var l=r(9027),o=r(8982),d=r(4037);function c(e){let{currentPage:t,totalPages:r,onPageChange:s,className:c}=e;if(r<=1)return null;let u=(()=>{let e=[],a=[];for(let a=Math.max(2,t-2);a<=Math.min(r-1,t+2);a++)e.push(a);return t-2>2?a.push(1,"..."):a.push(1),a.push(...e),t+2<r-1?a.push("...",r):a.push(r),a})();return(0,a.jsxs)("nav",{className:(0,d.cn)("flex items-center justify-center space-x-1",c),"aria-label":"Pagination",children:[(0,a.jsx)(o.$,{variant:"outline",size:"sm",onClick:()=>s(t-1),disabled:1===t,className:"h-8 w-8 p-0","aria-label":"Previous page",children:(0,a.jsx)(n,{className:"h-4 w-4"})}),u.map((e,r)=>{if("..."===e)return(0,a.jsx)("span",{className:"flex h-8 w-8 items-center justify-center text-muted-foreground",children:(0,a.jsx)(i,{className:"h-4 w-4"})},"dots-".concat(r));let n=e===t;return(0,a.jsx)(o.$,{variant:n?"default":"outline",size:"sm",onClick:()=>s(e),className:"h-8 w-8 p-0","aria-label":"Page ".concat(e),"aria-current":n?"page":void 0,children:e},e)}),(0,a.jsx)(o.$,{variant:"outline",size:"sm",onClick:()=>s(t+1),disabled:t===r,className:"h-8 w-8 p-0","aria-label":"Next page",children:(0,a.jsx)(l.A,{className:"h-4 w-4"})})]})}},4943:(e,t,r)=>{"use strict";r.d(t,{BT:()=>o,Wu:()=>d,ZB:()=>l,Zp:()=>n,aR:()=>i,wL:()=>c});var a=r(1509),s=r(4037);function n(e){let{className:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"card",className:(0,s.cn)("bg-card text-card-foreground flex flex-col gap-4 roun
1ded-xl border py-6 shadow-sm",t),...r})}function i(e){let{className:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"card-header",className:(0,s.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...r})}function l(e){let{className:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"card-title",className:(0,s.cn)("leading-none font-semibold",t),...r})}function o(e){let{className:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"card-description",className:(0,s.cn)("text-muted-foreground text-sm",t),...r})}function d(e){let{className:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"card-content",className:(0,s.cn)("px-6",t),...r})}function c(e){let{className:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"card-footer",className:(0,s.cn)("flex items-center px-6 [.border-t]:pt-6",t),...r})}},6003:(e,t,r)=>{Promise.resolve().then(r.bind(r,8109)),Promise.resolve().then(r.t.bind(r,5920,23)),Promise.resolve().then(r.bind(r,8382)),Promise.resolve().then(r.bind(r,8651)),Promise.resolve().then(r.bind(r,9686))},7637:(e,t,r)=>{"use strict";r.d(t,{D:()=>a});let a=(0,r(8149).A)({locales:["en","vi"],defaultLocale:"en",localePrefix:"as-needed"})},8382:(e,t,r)=>{"use strict";r.d(t,{default:()=>h});var a=r(1509),s=r(6870),n=r(8337),i=r(326),l=r(3829),o=r(4359),d=r(4943),c=r(4079),u=r(4037);let m=function(e){let{data:t,className:r}=e;return(0,a.jsx)("div",{className:(0,u.cn)("relative",r),children:(0,a.jsx)(c.N_,{href:"/blog/".concat(t.slug),className:"group block h-full",children:(0,a.jsx)("div",{className:"relative overflow-hidden rounded-xl h-full",children:(0,a.jsx)(d.Zp,{className:"overflow-hidden border py-0 shadow-sm hover:shadow-md transition-all duration-300 h-full flex flex-col",children:(0,a.jsxs)("div",{className:"grid sm:grid-cols-1 h-full",children:[(0,a.jsx)("div",{className:"relative w-full aspect-[16/9] sm:aspect-[16/9] overflow-hidden",children:(0,a.jsx)(l.default,{src:t.coverImage,alt:t.title,fill:!0,className:"object-cover transition-transform group-hover:scale-105 duration-500",sizes:"(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw",priority:!0})}),(0,a.jsxs)(d.Wu,{className:"p-3 sm:p-4 flex flex-col justify-between flex-grow",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex flex-wrap gap-1.5 mb-2 sm:mb-3",children:[t.tags.slice(0,2).map(e=>(0,a.jsx)(o.E,{variant:"outline",className:"text-xs capitalize px-2 py-0 h-5",children:e},e)),t.tags.length>2&&(0,a.jsxs)(o.E,{variant:"outline",className:"text-xs px-2 py-0 h-5",children:["+",t.tags.length-2]})]}),(0,a.jsx)("h2",{className:"text-sm font-bold mb-2 sm:mb-3 line-clamp-2 group-hover:text-primary transition-colors",children:t.title}),(0,a.jsx)("p",{className:"text-muted-foreground text-xs line-clamp-2 sm:line-clamp-3 mb-3 sm:mb-4",children:t.description})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mt-auto pt-2 border-t border-border/40",children:[(0,a.jsx)("div",{className:"w-5 h-5 sm:w-6 sm:h-6 rounded-full overflow-hidden relative flex-shrink-0 ring-1 ring-border/50",children:(0,a.jsx)(l.default,{src:t.authorImage,alt:t.author,fill:!0,className:"object-cover",sizes:"(max-width: 640px) 20px, 24px"})}),(0,a.jsxs)("div",{className:"flex-grow min-w-0",children:[(0,a.jsx)("p",{className:"text-xs sm:text-sm font-medium truncate",children:t.author}),(0,a.jsxs)("p",{className:"text-xs text-muted-foreground truncate",children:[(0,u.Y)(t.date)," \xb7 ",t.readingTime]})]})]})]})]})})})})})};var x=r(4832);let h=function(e){let{posts:t,postsPerPage:r=10}=e,l=(0,s.useRouter)(),o=(0,s.useSearchParams)(),d=(0,n.useMemo)(()=>{let e=o.get("page");if(e){let t=parseInt(e,10);return t>0?t:1}return 1},[o]),c=Math.ceil(t.length/r),u=(0,n.useMemo)(()=>{let e=(d-1)*r;return t.slice(e,e+r)},[t,d,r]);if(0===t.length)return(0,a.jsx)("div",{className:"text-center py-12",children:(0,a.jsx)("p",{className:"text-muted-foreground text-lg",children:"No posts found"})});let h=1===d?u[0]:null,g=1===d?u.slice(1):u;return(0,a.jsxs)("div",{className:"space-y-8",children:[(0,a.jsxs)("div",{className:"space-y-6 sm:space-y-8",children:[h&&(0,a.jsx)(i.A,{data:h},h.slug),g.length>0&&(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-6",children:g.map(e=>(0,a.jsx)(m,{data:e},e.slug))})]}),c>1&&(0,a.jsx)("div",{className:"flex justify-center pt-8",children:(0,a.jsx)(x.A,{currentPage:d,totalPages:c,onPageChange:e=>{let t=new URLSearchParams(o.toString());t.set("page",e.toString());let r=t.toString()?"?".concat(t.toString()):"";l.push(r)}})})]})}},8651:(e,t,r)=>{"use strict";r.d(t,{default:()=>o});var a=r(1509),s=r(6870),n=r(8337),i=r(326),l=r(4832);let o=function(e){let{posts:t,searchQuery:r,postsPerPage:o=10}
1=e,d=(0,s.useRouter)(),c=(0,s.useSearchParams)(),u=(0,n.useMemo)(()=>{let e=c.get("page");if(e){let t=parseInt(e,10);return t>0?t:1}return 1},[c]),m=Math.ceil(t.length/o),x=(0,n.useMemo)(()=>{let e=(u-1)*o;return t.slice(e,e+o)},[t,u,o]);return 0===t.length?(0,a.jsx)("div",{className:"text-center py-12",children:(0,a.jsxs)("p",{className:"text-muted-foreground text-lg",children:["No results found for â",r,"â"]})}):(0,a.jsxs)("div",{className:"space-y-8",children:[(0,a.jsx)("div",{className:"space-y-6",children:x.map(e=>(0,a.jsx)(i.A,{data:e},e.slug))}),m>1&&(0,a.jsx)("div",{className:"flex justify-center pt-8",children:(0,a.jsx)(l.A,{currentPage:u,totalPages:m,onPageChange:e=>{let t=new URLSearchParams(c.toString());t.set("page",e.toString());let r=t.toString()?"?".concat(t.toString()):"";d.push(r)}})})]})}},8982:(e,t,r)=>{"use strict";r.d(t,{$:()=>o});var a=r(1509),s=r(161),n=r(2623),i=r(4037);let l=(0,n.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function o(e){let{className:t,variant:r,size:n,asChild:o=!1,...d}=e,c=o?s.Slot:"button";return(0,a.jsx)(c,{"data-slot":"button",className:(0,i.cn)(l({variant:r,size:n,className:t})),...d})}},9027:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(300).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},9686:(e,t,r)=>{"use strict";r.d(t,{Tabs:()=>i,TabsContent:()=>d,TabsList:()=>l,TabsTrigger:()=>o});var a=r(1509),s=r(9768),n=r(4037);function i(e){let{className:t,...r}=e;return(0,a.jsx)(s.bL,{"data-slot":"tabs",className:(0,n.cn)("flex flex-col gap-2",t),...r})}function l(e){let{className:t,...r}=e;return(0,a.jsx)(s.B8,{"data-slot":"tabs-list",className:(0,n.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",t),...r})}function o(e){let{className:t,...r}=e;return(0,a.jsx)(s.l9,{"data-slot":"tabs-trigger",className:(0,n.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...r})}function d(e){let{className:t,...r}=e;return(0,a.jsx)(s.UC,{"data-slot":"tabs-content",className:(0,n.cn)("flex-1 outline-none",t),...r})}},9768:(e,t,r)=>{"use strict";r.d(t,{B8:()=>S,UC:()=>I,bL:()=>C,l9:()=>A});var a=r(8337),s=r(6445),n=r(2780),i=r(6518),l=r(737),o=r(1024),d=r(8417),c=r(6119),u=r(9391),m=r(1509),x="Tabs",[h,g]=(0,n.A)(x,[i.RG]),f=(0,i.RG)(),[v,p]=h(x),b=a.forwardRef((e,t)=>
1{let{__scopeTabs:r,value:a,onValueChange:s,defaultValue:n,orientation:i="horizontal",dir:l,activationMode:h="automatic",...g}=e,f=(0,d.jH)(l),[p,b]=(0,c.i)({prop:a,onChange:s,defaultProp:null!=n?n:"",caller:x});return(0,m.jsx)(v,{scope:r,baseId:(0,u.B)(),value:p,onValueChange:b,orientation:i,dir:f,activationMode:h,children:(0,m.jsx)(o.sG.div,{dir:f,"data-orientation":i,...g,ref:t})})});b.displayName=x;var j="TabsList",w=a.forwardRef((e,t)=>{let{__scopeTabs:r,loop:a=!0,...s}=e,n=p(j,r),l=f(r);return(0,m.jsx)(i.bL,{asChild:!0,...l,orientation:n.orientation,dir:n.dir,loop:a,children:(0,m.jsx)(o.sG.div,{role:"tablist","aria-orientation":n.orientation,...s,ref:t})})});w.displayName=j;var N="TabsTrigger",y=a.forwardRef((e,t)=>{let{__scopeTabs:r,value:a,disabled:n=!1,...l}=e,d=p(N,r),c=f(r),u=z(d.baseId,a),x=_(d.baseId,a),h=a===d.value;return(0,m.jsx)(i.q7,{asChild:!0,...c,focusable:!n,active:h,children:(0,m.jsx)(o.sG.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":x,"data-state":h?"active":"inactive","data-disabled":n?"":void 0,disabled:n,id:u,...l,ref:t,onMouseDown:(0,s.m)(e.onMouseDown,e=>{n||0!==e.button||!1!==e.ctrlKey?e.preventDefault():d.onValueChange(a)}),onKeyDown:(0,s.m)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&d.onValueChange(a)}),onFocus:(0,s.m)(e.onFocus,()=>{let e="manual"!==d.activationMode;h||n||!e||d.onValueChange(a)})})})});y.displayName=N;var k="TabsContent",P=a.forwardRef((e,t)=>{let{__scopeTabs:r,value:s,forceMount:n,children:i,...d}=e,c=p(k,r),u=z(c.baseId,s),x=_(c.baseId,s),h=s===c.value,g=a.useRef(h);return a.useEffect(()=>{let e=requestAnimationFrame(()=>g.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,m.jsx)(l.C,{present:n||h,children:r=>{let{present:a}=r;return(0,m.jsx)(o.sG.div,{"data-state":h?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":u,hidden:!a,id:x,tabIndex:0,...d,ref:t,style:{...e.style,animationDuration:g.current?"0s":void 0},children:a&&i})}})});function z(e,t){return"".concat(e,"-trigger-").concat(t)}function _(e,t){return"".concat(e,"-content-").concat(t)}P.displayName=k;var C=b,S=w,A=y,I=P}},e=>{e.O(0,[1093,9191,2260,4799,6082,4537,1129,7358],()=>e(e.s=6003)),_N_E=e.O()}]);
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.