PageSourceSearch

https://hq0.com/assets/Blog-Bf7Y7vGC.js

js hq0.com collected 2026-10-08 23:02:13 UTC 7,002 bytes, 1 lines download raw bytes

1import{r as b,j as e}from"./index-ulJQSrBi.js";import{s as o,M as u,q as f,X as h,a as y}from"./main-PG-dEEgK.js";import{F as v}from"./filter-CS_UGGyp.js";import{C as w}from"./calendar-IqoBkXIr.js";import{C}from"./clock-B_03dIHR.js";function $({post:t}){const{data:d=[]}=o({queryKey:[`/api/blog/${t.id}/categories`]}),{data:a=[]}=o({queryKey:[`/api/blog/${t.id}/tags`]});return e.jsx(y,{href:`/blog/${t.slug}`,children:e.jsx("div",{className:"h-full border-2 border-foreground bg-card text-card-foreground neo-card overflow-visible","data-testid":`card-blog-post-${t.slug}`,children:e.jsxs("div",{className:"p-6",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground mb-3",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(w,{className:"w-4 h-4"}),e.jsx("span",{children:new Date(t.publishedAt).toLocaleDateString()})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(C,{className:"w-4 h-4"}),e.jsx("span",{children:"5 min read"})]})]}),(d.length>0||a.length>0)&&e.jsxs("div",{className:"flex flex-wrap gap-2 mb-3",children:[d.map(r=>e.jsx("span",{className:"px-2 py-1 bg-secondary text-secondary-foreground text-xs font-bold border-2 border-foreground","data-testid":`badge-category-${r.slug}`,children:r.name},r.id)),a.map(r=>e.jsx("span",{className:"px-2 py-1 bg-secondary/20 text-secondary text-xs font-bold border-2 border-foreground","data-testid":`badge-tag-${r.slug}`,children:r.name},r.id))]}),e.jsx("h2",{className:"text-xl font-bold mb-2 line-clamp-2",children:t.title}),e.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed line-clamp-3 mb-4",children:t.excerpt}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm font-medium",children:t.author}),e.jsxs("span",{className:"text-sm font-bold text-secondary group",children:["Read more",e.jsx("span",{className:"ml-1 inline-block group-hover:translate-x-1 transition-transform",children:"→"})]})]})]})})})}function B(){const[t,d]=b.useState(),[a,r]=b.useState(),{data:l=[]}=o({queryKey:["/api/blog/categories"]}),{data:n=[]}=o({queryKey:["/api/blog/tags"]}),{data:i,isLoading:j}=o({queryKey:["/api/blog",{categoryId:t,tagId:a}],queryFn:async()=>{const s=new URLSearchParams;t&&s.append("categoryId",t),a&&s.append("tagId",a);const g=s.toString(),N=`/api/blog${g?`?${g}`:""}`,p=await fetch(N);if(!p.ok)throw new Error("Failed to fetch posts");return p.json()}}),c=l.find(s=>s.id===t),x=n.find(s=>s.id===a),m=()=>{d(void 0),r(void 0)};return j?e.jsxs(u,{children:[e.jsx(f,{title:"Blog - Sales Best Practices & Meeting Tips | hq0",description:"Learn how top sales teams use branded meetings to close more deals. Expert tips, best practices, and strategies for professional video meetings."}),e.jsx("div",{className:"container mx-auto px-6 py-16",children:e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:[1,2,3,4,5,6].map(s=>e.jsxs("div",{className:"border-2 border-foreground bg-card p-6 animate-pulse",children:[e.jsx("div",{className:"w-full h-48 bg-muted mb-4"}),e.jsx("div",{className:"h-4 bg-muted w-3/4 mb-2"}),e.jsx("div",{className:"h-4 bg-muted w-1/2"})]},s))})})]}):e.jsxs(u,{children:[e.jsx(f,{title:"Blog - Sales Best Practices & Meeting Tips | hq0",description:"Learn how top sales teams use branded meetings to close more deals. Expert tips, best practices, and strategies for professional video meetings."}),e.jsx("section",{className:"py-16 border-b-2 border-foreground",children:e.jsx("div",{className:"container mx-auto px-6",children:e.jsxs("div",{className:"max-w-3xl mx-auto text-center",children:[e.jsx("h1",{className:"text-5xl font-bold mb-6","data-testid":"text-blog-title",children:"Sales Best Practices & Meeting Tips"}),e.jsx("p",{className:"text-xl text-muted-foreground leading-relaxed",children:"Learn how top sales teams use branded meetings to close more deals"})]})})}),e.jsx("section",{className:"py-8 border-b-2 border-foreground",children:e.jsx("div",{className:"container mx-auto px-6",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(v,{className:"w-5 h-5 text-muted-foreground"}),e.jsx("h2",{className:"text-lg font-bold",children:"Filter Posts"})]}),(t||a)&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Active filters:"}),c&&e.jsxs("span",{className:"inline-flex items-center gap-2 px-3 py-1 bg-secondary text-secondary-foreground text-sm font-bold border-2 border-foreground","data-testid":"badge-active-category",children:[c.name,e.jsx("button",{onClick:()=>d(void 0),className:"hover:opacity-70","data-testid":"button-clear-category",children:e.jsx(h,{className:"w-3 h-3"})})]}),x&&e.jsxs("span",{className:"inline-flex items-center gap-2 px-3 py-1 bg-secondary/20 text-secondary text-sm font-bold border-2 border-foreground","data-testid":"badge-active-tag",children:[x.name,e.jsx("button",{onClick:()=>r(void 0),className:"hover:opacity-70","data-testid":"button-clear-tag",children:e.jsx(h,{className:"w-3 h-3"})})]}),e.jsx("button",{onClick:m,className:"text-sm font-bold text-muted-foreground hover:text-foreground","data-testid":"button-clear-all-filters",children:"Clear all"})]}),l.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-bold",children:"Categories:"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:l.map(s=>e.jsx("button",{onClick:()=>d(t===s.id?void 0:s.id),className:`px-4 py-2 text-sm font-bold border-2 border-foreground neo-btn ${t===s.id?"bg-secondary text-secondary-foreground":"bg-card text-card-foreground"}`,"data-testid":`button-filter-category-${s.slug}`,children:s.name},s.id))})]}),n.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-bold",children:"Tags:"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:n.map(s=>e.jsx("button",{onClick:()=>r(a===s.id?void 0:s.id),className:`px-4 py-2 text-sm font-bold border-2 border-foreground neo-btn ${a===s.id?"bg-secondary text-secondary-foreground":"bg-card text-card-foreground"}`,"data-testid":`button-filter-tag-${s.slug}`,children:s.name},s.id))})]})]})})}),e.jsx("section",{className:"py-16",children:e.jsx("div",{className:"container mx-auto px-6",children:i&&i.length>0?e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:i.map(s=>e.jsx($,{post:s},s.id))}):e.jsxs("div",{className:"text-center py-16",children:[e.jsx("p",{className:"text-muted-foreground text-lg","data-testid":"text-no-posts",children:t||a?"No blog posts match the selected filters.":"No blog posts available yet."}),(t||a)&&e.jsx("button",{onClick:m,className:"mt-4 px-6 py-3 font-bold border-2 border-foreground bg-card text-card-foreground neo-btn","data-testid":"button-clear-filters-empty",children:"Clear filters"})]})})})]})}export{B 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.