PageSourceSearch

https://splashiq.ai/assets/resources.index-BRbfXnaB.js

js splashiq.ai collected 2026-10-05 12:44:10 UTC 4,835 bytes, 1 lines download raw bytes

1import{ct as l,j as e,L as r,D as i,A as a,S as n,cq as o}from"./index-CzAkNt2W.js";import{B as c,a as d}from"./RelatedContent-BIgmiA5W.js";import{C as m}from"./calculator-BTY3cD8m.js";const x=o.filter(t=>t.kind==="calculator"),u=o.filter(t=>t.kind==="reference");function f(){const{articles:t}=l.useLoaderData();return e.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[e.jsxs("main",{className:"flex-1",children:[e.jsxs("section",{className:"relative overflow-hidden border-b border-border/40",children:[e.jsx("div",{className:"absolute inset-0 caustics opacity-40 pointer-events-none"}),e.jsxs("div",{className:"relative mx-auto max-w-5xl px-6 py-16",children:[e.jsxs("nav",{"aria-label":"Breadcrumb",className:"mb-5 text-sm text-muted-foreground",children:[e.jsx(r,{to:"/",className:"transition-colors hover:text-foreground",children:"Home"}),e.jsx("span",{"aria-hidden":!0,className:"mx-2",children:"/"}),e.jsx("span",{"aria-current":"page",className:"text-foreground",children:"Pool service calculators"})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold uppercase tracking-widest text-primary",children:[e.jsx(i,{className:"size-4"})," Free contractor tools"]}),e.jsx("h1",{className:"mt-3 font-display text-4xl md:text-5xl font-bold tracking-tight",children:"Free pool service calculators for contractors"}),e.jsx("p",{className:"mt-5 max-w-2xl text-lg text-muted-foreground",children:"Fast, field-ready math for pool service contractors and technicians: calculate volume, chlorine and shock dosing, pH and alkalinity corrections, salt and stabilizer, pump turnover, and service pricing. Every tool is free and works without an account."})]})]}),e.jsxs("section",{className:"mx-auto max-w-5xl px-6 py-14",children:[e.jsx("h2",{className:"font-display text-2xl font-bold tracking-tight",children:"Pool service calculators"}),e.jsx("p",{className:"mt-3 max-w-3xl text-sm leading-relaxed text-muted-foreground",children:"Bookmark the calculators your route uses most. They show the underlying method, return practical field units, and link to the next calculation so you can move from pool volume to a treatment or operating-cost decision without re-entering the job in a spreadsheet."}),e.jsx("div",{className:"mt-5 grid gap-4 md:grid-cols-2 lg:grid-cols-3",children:x.map(s=>e.jsxs(r,{to:"/resources/$slug",params:{slug:s.slug},className:"group flex h-full flex-col rounded-2xl border border-border/60 bg-card p-6 transition-colors hover:bg-accent/40",children:[e.jsxs("span",{className:"flex items-center gap-2 text-xs font-semibold uppercase tracking-widest text-primary",children:[e.jsx(m,{className:"size-3.5"})," Calculator"]}),e.jsx("h3",{className:"mt-2 font-semibold",children:s.label}),e.jsx("p",{className:"mt-1.5 flex-1 text-sm text-muted-foreground",children:s.cardBlurb}),e.jsxs("span",{className:"mt-4 inline-flex items-center gap-1 text-sm font-medium text-primary",children:["Open"," ",e.jsx(a,{className:"size-3.5 transition-transform group-hover:translate-x-0.5"})]})]},s.slug))}),e.jsx("h2",{className:"mt-14 font-display text-2xl font-bold tracking-tight",children:"References"}),e.jsx("div",{className:"mt-5 grid gap-4 md:grid-cols-2 lg:grid-cols-3",children:u.map(s=>e.jsxs(r,{to:"/resources/$slug",params:{slug:s.slug},className:"group flex h-full flex-col rounded-2xl border border-border/60 bg-card p-6 transition-colors hover:bg-accent/40",children:[e.jsxs("span",{className:"flex items-center gap-2 text-xs font-semibold uppercase tracking-widest text-primary",children:[e.jsx(c,{className:"size-3.5"})," Reference"]}),e.jsx("h3",{className:"mt-2 font-semibold",children:s.label}),e.jsx("p",{className:"mt-1.5 flex-1 text-sm text-muted-foreground",children:s.cardBlurb}),e.jsxs("span",{className:"mt-4 inline-flex items-center gap-1 text-sm font-medium text-primary",children:["Open"," ",e.jsx(a,{className:"size-3.5 transition-transform group-hover:translate-x-0.5"})]})]},s.slug))}),e.jsxs("div",{className:"mt-14 rounded-2xl border border-border/60 bg-card p-6",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-widest text-primary",children:"For your bot"}),e.jsx("h2",{className:"mt-2 font-display text-2xl font-bold",children:"Set up your SplashIQ workspace with AI"}),e.jsx("p",{className:"mt-2 max-w-2xl text-sm text-muted-foreground",children:"Learn how an owner-controlled, revocable setup token lets an assistant import 
1customers, properties, service rates, and visits or prepare email drafts—without billing or send access."}),e.jsxs(r,{to:"/resources/for-your-bot",className:"mt-4 inline-flex items-center gap-1 text-sm font-medium text-primary",children:["Read the setup guide ",e.jsx(a,{className:"size-3.5"})]})]}),e.jsx(d,{articles:t,heading:"From the blog"})]})]}),e.jsx(n,{})]})}export{f as component};

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.