1import{n as _,B as t,h as e,j as f,c as v,e as a,F as u,U as m,X as r,l,ag as x,k as g,g as h,Y as b,I as y,_ as k,a1 as T,a3 as N}from"./CabtbKQ0.js";import{_ as w}from"./ByG4XcSt.js";import{u as F}from"./CfXyDX9q.js";import{u as B,a as H}from"./P1GVrMnI.js";import"./DMDgZv8M.js";import"./BoMPFYab.js";const O={class:"relative",style:{background:"var(--bg-light)",padding:"156px 0 56px"}},S=_({__name:"ToolsHero",setup(c){return(d,s)=>(t(),e("section",O,[...s[0]||(s[0]=[f('<div class="container" data-v-45a2dbbc><div class="reveal flex justify-center items-center gap-[10px] font-mono text-[11px] tracking-[0.10em] uppercase text-[color:var(--fg-light-subtle)] mb-7" data-v-45a2dbbc><span class="live-dot" style="background:var(--accent);" aria-hidden="true" data-v-45a2dbbc></span> Free tools </div><h1 class="reveal text-center mx-auto tools-hero__title" data-delay="1" data-v-45a2dbbc> Small tools that do <span class="serif" style="color:var(--accent);font-style:italic;font-weight:400;" data-v-45a2dbbc>one thing</span> properly. </h1><p class="reveal text-center mx-auto tools-hero__dek" data-delay="2" data-v-45a2dbbc> Templates, calculators and writers for product teams. Open one, use it, take the result with you. No account, no email wall, no trial timer. </p><ul class="reveal tools-hero__promises" data-delay="3" data-v-45a2dbbc><li data-v-45a2dbbc>No login</li><li data-v-45a2dbbc>No email required</li><li data-v-45a2dbbc>Yours to keep</li></ul></div>',1)])]))}}),V=Object.assign(v(S,[["__scopeId","data-v-45a2dbbc"]]),{__name:"ToolsHero"}),$={style:{background:"var(--bg-light)",padding:"8px 0 96px"}},j={class:"container"},C={key:0,class:"tools-groups"},G=["data-delay"],I={class:"tools-group__head"},L={class:"tools-group__label font-mono"},M={class:"tools-group__count font-mono"},q={class:"tools-grid"},D={class:"tool-card__name"},E={key:0,class:"tool-card__draft font-mono"},Y={class:"tool-card__description"},A={class:"tool-card__foot"},P={key:0,class:"tool-card__variants font-mono"},R={class:"tool-card__cta font-mono"},U={key:1,class:"tools-groups__empty"},X=_({__name:"ToolsGrid",props:{groups:{}},setup(c){return(d,s)=>{const p=k;return t(),e("section",$,[a("div",j,[c.groups.length?(t(),e("div",C,[(t(!0),e(u,null,m(c.groups,(n,i)=>(t(),e("section",{key:n.category,class:"reveal","data-delay":String(Math.min(i+1,4))},[a("header",I,[a("h2",L,r(n.category),1),s[0]||(s[0]=a("span",{class:"tools-group__rule","aria-hidden":"true"},null,-1)),a("span",M,r(n.tools.length),1)]),a("ul",q,[(t(!0),e(u,null,m(n.tools,o=>(t(),e("li",{key:o.slug},[l(p,{to:`/tools/${o.slug}`,class:"tool-card"},{default:x(()=>[a("h3",D,[g(r(o.name)+" ",1),o.draft?(t(),e("span",E,"Draft")):h("",!0)]),a("p",Y,r(o.description),1),a("span",A,[o.variants?.length?(t(),e("span",P,r(o.variants.length)+" "+r(o.variants.length===1?"version":"versions"),1)):h("",!0),a("span",R,[s[1]||(s[1]=g(" Open ",-1)),l(b(y),{class:"w-[13px] h-[13px]","aria-hidden":"true"})])])]),_:2},1032,["to"])]))),128))])],8,G))),128))])):(t(),e("p",U,"More tools are on the way."))])])}}}),z=Object.assign(v(X,[["__scopeId","data-v-db76a6ac"]]),{__name:"ToolsGrid"}),et=_({__name:"index",setup(c){T({title:"Free Product Management Tools",meta:[{name:"description",content:"Free templates, calculators and writers for product teams. No login, no email required, and the output is yours to keep."}]}),B([H({itemListElement:[{name:"Home",item:"/"},{name:"Free tools"}]})]),N();const{groups:d}=F();return(s,p)=>{const n=V,i=z,o=w;return t(),e("div",null,[l(n),l(i,{groups:b(d)},null,8,["groups"]),l(o)])}}});export{et 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.