PageSourceSearch

https://hacokebu.com/assets/BlogList-E7i3Bl6G.js

js hacokebu.com collected 2026-10-02 01:31:06 UTC 2,812 bytes, 1 lines download raw bytes

1import{j as e}from"./ui-vendor-BDMiHGUE.js";import{i as E,r as w,L as S}from"./react-vendor-BNda8Xh2.js";import{u as A,a as B,c as M,d as P,L as H,H as K}from"./index-C0rEH55V.js";import{P as $,a as O,b as o,c as U,d as I,e as h,f}from"./pagination-B2Jo77tV.js";const g=12,G=()=>{const{t:C}=A(),{getLocalizedPath:v,currentLang:r}=B(),[b,d]=E(),k=parseInt(b.get("page")||"1",10),[m,N]=w.useState("all"),x=M(r),p=m==="all"?x:x.filter(s=>{const n=P.find(i=>i.id===m);if(!n)return!1;const c=s.category.toLowerCase();return c===n.id.toLowerCase()||c===n.name.toLowerCase()||c===n.nameKo.toLowerCase()}),a=Math.ceil(p.length/g),t=Math.max(1,Math.min(k,a||1)),j=p.slice((t-1)*g,t*g),L=s=>{N(s),d({})},l=s=>{d(s===1?{}:{page:s.toString()}),window.scrollTo({top:0,behavior:"smooth"})},y=()=>{const s=[],n=t>3,c=t<a-2;s.push(e.jsx(o,{children:e.jsx(h,{onClick:()=>l(1),isActive:t===1,className:"cursor-pointer",children:"1"})},1)),n&&s.push(e.jsx(o,{children:e.jsx(f,{})},"ellipsis-start"));for(let i=Math.max(2,t-1);i<=Math.min(a-1,t+1);i++)i<=1||i>=a||s.push(e.jsx(o,{children:e.jsx(h,{onClick:()=>l(i),isActive:t===i,className:"cursor-pointer",children:i})},i));return c&&s.push(e.jsx(o,{children:e.jsx(f,{})},"ellipsis-end")),a>1&&s.push(e.jsx(o,{children:e.jsx(h,{onClick:()=>l(a),isActive:t===a,className:"cursor-pointer",children:a})},a)),s},u=`https://hacokebu.com/${r==="ko"?"ko/blog/":"blog/"}`;return e.jsxs(H,{children:[e.jsxs(K,{children:[e.jsx("title",{children:r==="ko"?"블로그 | HACO&KEBU":"Blog | HACO&KEBU"}),e.jsx("meta",{name:"description",content:r==="ko"?"하코케부의 블로그 글 목록":"Blog posts from HACO & KEBU"}),e.jsx("link",{rel:"canonical",href:u}),e.jsx("meta",{property:"og:url",content:u})]}),e.jsx("div",{className:"py-12 md:py-16",children:e.jsxs("div",{className:"container-main",children:[e.jsx("div",{className:"flex gap-3 mb-6 overflow-x-auto scrollbar-hide",children:P.map(s=>e.jsx("button",{onClick:()=>L(s.id),className:`category-filter ${m===s.id?"category-filter-active":"text-ivory"}`,children:r==="ko"?s.nameKo:s.name},s.id))}),j.length>0?e.jsx("div",{children:j.map(s=>e.jsxs(S,{to:v(`/blog/${s.id}`),className:"blog-item blog-item-bordered group",children:[e.jsx("h2",{className:"blog-item-title",children:s.title}),e.jsx("span",{className:"blog-item-date",children:s.date})]},s.id))}):e.jsx("p",{className:"text-muted-foreground text-lg",children:C("blogList.empty")}),a>1&&e.jsx("div",{className:"mt-12",children:e.jsx($,{children:e.jsxs(O,{children:[e.jsx(o,{children:e.jsx(U,{onClick:()=>l(Math.max(1,t-1)),className:`cursor-pointer ${t===1?"pointer-events-none opacity-50":""}`})}),y(),e.jsx(o,{children:e.jsx(I,{onClick:()=>l(Math.min(a,t+1)),className:`cursor-pointer ${t===a?"pointer-events-none opacity-50":""}`})})]})})})]})})]})};export{G as default};

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.