1import{j as e,c as V,P as ce,a as de,D as me,b as ue,d as U,B as g,e as he,f as xe,g as pe,N as fe,G as ge}from"./index-BBlr5mjY.js";import{r as t,a0 as J,a1 as Q,a2 as be,c as $,j as je,a3 as Z,a4 as ye,a5 as we,Z as Ne,X as K,a6 as ve,J as ke}from"./vendor-icons-DdDstFZX.js";import Se from"./Footer-BcvGzZsu.js";import{B as Te}from"./Breadcrumbs-CDTNKeNl.js";import{S as Ce}from"./SEOHead-Wid-dq_R.js";import{I as P}from"./input-LQyS_ux5.js";import{B as G}from"./badge-DK7TVT4D.js";import{F as f,P as B,a as H,C as Ae,c as Y}from"./featureCatalog-CKyZkH0h.js";import{A as Ee,a as Ie,b as qe,c as Re}from"./accordion-DX2KIfGS.js";const X=t.forwardRef(({className:n,...l},r)=>e.jsx("textarea",{className:V("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",n),ref:r,...l}));X.displayName="Textarea";var Pe="Label",ee=t.forwardRef((n,l)=>e.jsx(ce.label,{...n,ref:l,onMouseDown:r=>{var i;r.target.closest("button, input, select, textarea")||((i=n.onMouseDown)==null||i.call(n,r),!r.defaultPrevented&&r.detail>1&&r.preventDefault())}}));ee.displayName=Pe;var se=ee;const De=de("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),R=t.forwardRef(({className:n,...l},r)=>e.jsx(se,{ref:r,className:V(De(),n),...l}));R.displayName=se.displayName;const W="https://v3.api.rentaltide.com/public/feature-ask",te=({open:n,onOpenChange:l,initialFeature:r="",question:h})=>{const[i,v]=t.useState(""),[x,y]=t.useState(""),[w,S]=t.useState(r),[s,j]=t.useState(""),[c,p]=t.useState("idle"),[E,k]=t.useState(""),[T,I]=t.useState({}),[C,F]=t.useState(r);n&&r!==C&&(F(r),S(r),p("idle"));const m=async()=>{if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(i)){k("Enter a valid email so we can confirm within 48 hours."),p("error");return}if(w.trim().length<3){k("Tell us what the feature is."),p("error");return}p("sending"),k("");try{const u=await fetch(`${W}/request`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:i,business:x,feature:w,detail:s,question:h,source:"everything page"})});if(!u.ok)throw new Error(`HTTP ${u.status}`);const N=await u.json();I({url:N==null?void 0:N.url,ref:N==null?void 0:N.ref}),p("done")}catch{k("Something broke on our side. Email [email protected] and we will log it manually."),p("error")}};return e.jsx(me,{open:n,onOpenChange:l,children:e.jsx(ue,{className:"sm:max-w-lg",children:c==="done"?e.jsxs("div",{className:"py-4 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-primary/10",children:e.jsx(J,{className:"h-7 w-7 text-primary"})}),e.jsx(U,{className:"mb-2 text-xl",children:"You found a gap. Clock started."}),e.jsx("p",{className:"mx-auto max-w-sm text-sm text-muted-foreground",children:"Your request is on the board and our team is pinged. We confirm scope within 48 hours. If we accept it and do not ship it in 30 days, your platform fee is on us for a month."}),T.ref&&e.jsxs("p",{className:"mt-4 text-xs text-muted-foreground",children:["Reference ",e.jsx("span",{className:"font-mono text-foreground",children:T.ref})]}),e.jsxs("div",{className:"mt-6 flex justify-center gap-3",children:[T.url&&e.jsx(g,{asChild:!0,variant:"outline",children:e.jsx("a",{href:T.url,target:"_blank",rel:"noreferrer",children:"Track it publicly"})}),e.jsx(g,{onClick:()=>l(!1),children:"Done"})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs(he,{children:[e.jsx(U,{children:"Request it. We build it in 30 days."}),e.jsx(xe,{children:"If we accept your request and do not ship it within 30 days, your platform fee is free for a month. Terms are short and listed below the form."})]}),e.jsxs("div",{className:"space-y-4 py-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(R,{htmlFor:"req-feature",children:"What should we build?"}),e.jsx(P,{id:"req-feature",value:w,onChange:u=>S(u.target.value),placeholder:"Split a deposit across two cards"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(R,{htmlFor:"req-detail",children:"How would you use it? (optional)"}),e.jsx(X,{id:"req-detail",value:s,onChange:u=>j(u.target.value),rows:3,placeholder:"Context helps us scope it fast, which helps you."})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(R,{htmlFor:"req-email",children:"Email"}),e.jsx(P,{id:"req-email",type:"email",value:i,onChange:u=>v(u.target.value),placeholder:"[email protected]"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(R,{htmlFor:"req-business",children:"Business (optional)"}),e.jsx(P,{id:"req-business",value:x,onChange:u=>y(u.target.value),placeholder:"Downtown Marina"})]})]}),c==="error"&&e.jsx("p",{className:"text-sm text-destructive",children:E}),e.jsxs("div",{className:"rounded-lg border border-border/60 bg-muted/30 p-3 text-xs leading-relaxed text-muted-foreground",children:[e.jsx("p",{className:"mb-1 font-medium text-foreground",children:"The short version of the terms"}),e.jsxs("ul",{className:"list-inside list-disc space-y-1",children:[e.jsx("li",{children:"We confirm in writing within 48 hours whether we accept the request."}),e.jsx("li",{children:"It has to be a rental, booking, or operations feature we can ship responsibly."}),e.jsx("li",{children:"The 30 days start from our written acceptance, not from this form."}),e.jsx("li",{children:"One active guaranteed request per account at a time."}),e.jsx("li",{children:"If we miss, your RentalTide platform fee is waived for one month from the missed date."})]})]})]}),e.jsxs(pe,{children:[e.jsx(g,{variant:"ghost",onClick:()=>l(!1),children:"Cancel"}),e.jsx(g,{onClick:m,disabled:c==="sending",children:c==="sending"?e.jsxs(e.Fragment,{children:[e.jsx(Q,{className:"mr-2 h-4 w-4 animate-spin"})," Sending"]}):e.jsxs(e.Fragment,{children:[e.jsx(be,{className:"mr-2 h-4 w-4"})," Start the 30-day clock"]})})]})]})})})},L=["Can I split one payment across two different cards?","Do you charge for late returns automatically?","Can customers sign a waiver on a pinpad at the counter?","Do you track engine hours from a GPS tracker?","Can I run a marina slip contract with metered power billing?","Does the AI answer my phone and take a booking?","Can I sell a bundle of a boat, fuel and a guide as one product?","Do you do dynamic pricing based on how full my day is?"],Oe={have:{label:"We do this",className:"bg-primary/15 text-primary border-primary/30",icon:$},partial:{label:"Partly, here is the honest answer",className:"bg-amber-500/15 text-amber-400 border-amber-500/30",icon:Ne},gap:{label:"You got us. We do not do this yet",className:"bg-rose-500/15 text-rose-400 border-rose-500/30",icon:K}},$e=()=>{const[n,l]=t.useState(""),[r,h]=t.useState(!1),[i,v]=t.useState(null),[x,y]=t.useState(""),[w,S]=t.useState(0),[s,j]=t.useState(0),[c,p]=t.useState(0),[E,k]=t.useState(0),[T,I]=t.useState(!1),[C,F]=t.useState(!1),[m,u]=t.useState(null),[N,ae]=t.useState([]),[re,ne]=t.useState(0),ie=t.useRef(null);t.useEffect(()=>{if(n)return;const a=setInterval(()=>ne(o=>(o+1)%L.length),3800);return()=>clearInterval(a)},[n]),t.useEffect(()=>{let a=!1;return fetch(`${W}/most-wanted`).then(o=>o.ok?o.json():null).then(o=>{!a&&Array.isArray(o==null?void 0:o.items)&&ae(o.items.slice(0,6))}).catch(()=>{}),()=>{a=!0}},[]);const D=t.useCallback(async a=>{const o=a.trim();if(!(o.length<3||r||C||m)){h(!0),y("");try{const q=await fetch(W,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({question:o})});if(q.status===429){const d=await q.json().catch(()=>({}));
1if(d!=null&&d.penalty){u({seconds:Number(d.retryAfterSeconds)||60,message:String(d.error||"Timeout.")});return}y((d==null?void 0:d.error)||"That is the daily limit for the assistant. The full list below is complete and always available."),F(!0);return}if(!q.ok)throw new Error(`HTTP ${q.status}`);const b=await q.json(),_=["have","partial","gap"].includes(b==null?void 0:b.verdict)?b.verdict:"partial";v({verdict:_,answer:String((b==null?void 0:b.answer)||"").slice(0,2e3),matches:Array.isArray(b==null?void 0:b.matches)?b.matches.slice(0,6):[],question:o}),S(d=>d+1),_==="gap"?(p(d=>d+1),k(0)):(j(d=>d+1),k(d=>d+1))}catch{y("Our assistant is having a moment. Try again, or just search the list below.")}finally{h(!1)}}},[r,C,m]);t.useEffect(()=>{if(!m)return;if(m.seconds<=0){u(null);return}const a=setTimeout(()=>u(o=>o?{...o,seconds:o.seconds-1}:null),1e3);return()=>clearTimeout(a)},[m]);const[M,le]=t.useState(!1);t.useEffect(()=>{var o;if(M||typeof window>"u")return;const a=new URLSearchParams(window.location.search).get("q");le(!0),a&&(l(a),D(a),(o=document.getElementById("ask"))==null||o.scrollIntoView({behavior:"smooth",block:"start"}))},[D,M]);const A=i?Oe[i.verdict]:null,oe=(A==null?void 0:A.icon)??$;return e.jsxs("section",{id:"ask",className:"scroll-mt-24",children:[e.jsxs("div",{className:"rounded-2xl border border-border/60 bg-card/40 p-5 sm:p-8",children:[e.jsxs("div",{className:"mb-5 flex flex-wrap items-center gap-3",children:[e.jsxs(G,{variant:"outline",className:"gap-1.5 border-primary/30 bg-primary/10 text-primary",children:[e.jsx(je,{className:"h-3.5 w-3.5"}),"Ask us if we do it"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["We probably do. ",f," things say so."]})]}),e.jsx("h2",{className:"mb-2 text-2xl font-bold sm:text-3xl",children:"Try to name something we cannot do."}),e.jsx("p",{className:"mb-6 max-w-2xl text-muted-foreground",children:"Ask in plain English. Our AI answers from the real feature list on this page, so it cannot invent something we do not ship. If you find a genuine gap, you can claim it and we build it in 30 days."}),e.jsxs("form",{onSubmit:a=>{a.preventDefault(),D(n)},className:"flex flex-col gap-3 sm:flex-row",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Z,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(P,{ref:ie,value:n,onChange:a=>l(a.target.value),placeholder:L[re],className:"h-12 pl-9 text-base",maxLength:400,"aria-label":"Ask whether RentalTide does something"})]}),e.jsx(g,{type:"submit",size:"lg",className:"h-12 shrink-0",disabled:r||C||!!m,children:r?e.jsxs(e.Fragment,{children:[e.jsx(Q,{className:"mr-2 h-4 w-4 animate-spin"})," Checking"]}):"Do you do this?"})]}),!i&&e.jsx("div",{className:"mt-4 flex flex-wrap gap-2",children:L.slice(0,4).map(a=>e.jsx("button",{type:"button",onClick:()=>{l(a),D(a)},className:"rounded-full border border-border/60 px-3 py-1.5 text-xs text-muted-foreground transition-colors hover:border-primary/40 hover:text-foreground",children:a},a))}),m&&e.jsx("div",{className:"mt-6 overflow-hidden rounded-xl border border-rose-500/30 bg-rose-500/5",children:e.jsxs("div",{className:"flex flex-col items-center gap-3 p-6 text-center sm:flex-row sm:text-left",children:[e.jsxs("div",{className:"relative flex h-20 w-20 shrink-0 items-center justify-center",children:[e.jsxs("svg",{className:"absolute inset-0 -rotate-90",viewBox:"0 0 80 80","aria-hidden":"true",children:[e.jsx("circle",{cx:"40",cy:"40",r:"34",fill:"none",strokeWidth:"5",className:"stroke-rose-500/15"}),e.jsx("circle",{cx:"40",cy:"40",r:"34",fill:"none",strokeWidth:"5",strokeLinecap:"round",className:"stroke-rose-400 transition-[stroke-dashoffset] duration-1000 ease-linear",strokeDasharray:2*Math.PI*34,strokeDashoffset:2*Math.PI*34*(1-m.seconds/60)})]}),e.jsx("span",{className:"font-mono text-2xl font-bold tabular-nums text-rose-300",children:m.seconds})]}),e.jsxs("div",{children:[e.jsx("p",{className:"mb-1 text-sm font-semibold text-rose-300",children:"Penalty box"}
1),e.jsx("p",{className:"text-sm text-foreground/90",children:m.message}),e.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:m.seconds>45?"Plenty of time to read the list below. It is right there. All 789 of them.":m.seconds>20?"Still counting. The feature list does not have a penalty box.":m.seconds>5?"Almost out. Try an actual question this time.":"Released. Behave."})]})]})}),x&&e.jsxs("div",{className:"mt-4",children:[e.jsx("p",{className:"text-sm text-destructive",children:x}),C&&e.jsx(g,{variant:"outline",className:"mt-3",onClick:()=>I(!0),children:"Request a feature instead"})]}),i&&A&&e.jsxs("div",{className:"mt-6 rounded-xl border border-border/60 bg-background/60 p-5",children:[e.jsxs("div",{className:"mb-3 flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:`inline-flex items-center gap-1.5 rounded-full border px-3 py-1 text-xs font-semibold ${A.className}`,children:[e.jsx(oe,{className:"h-3.5 w-3.5"}),A.label]}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["You asked: ",i.question]})]}),e.jsx("p",{className:"whitespace-pre-line text-sm leading-relaxed text-foreground/90",children:i.answer}),i.matches.length>0&&e.jsxs("div",{className:"mt-4",children:[e.jsx("p",{className:"mb-2 text-xs uppercase tracking-wide text-muted-foreground",children:"The features behind that answer"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:i.matches.map(a=>e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-border/60 bg-muted/40 px-2.5 py-1 text-xs",children:[e.jsx($,{className:"h-3 w-3 text-primary"}),a.name,e.jsxs("span",{className:"text-muted-foreground",children:["· ",a.category]})]},`${a.category}-${a.name}`))})]}),i.verdict!=="have"&&e.jsxs("div",{className:"mt-5 rounded-lg border border-primary/30 bg-primary/5 p-4",children:[e.jsxs("p",{className:"mb-3 text-sm font-medium",children:[i.verdict==="gap"?"Nice. That one is not on the list.":"Not a clean yes, so it counts."," ","Claim it and we will build it."]}),e.jsx("p",{className:"mb-4 text-xs text-muted-foreground",children:"Request it and if we accept it and do not ship it in 30 days, your platform fee is on us for a month."}),e.jsx(g,{onClick:()=>I(!0),children:"Claim this build"})]})]}),e.jsxs("div",{className:"mt-6 grid grid-cols-2 gap-3 sm:grid-cols-4",children:[e.jsx(O,{label:"Attempts",value:w}),e.jsx(O,{label:"We had it",value:s,accent:"text-primary"}),e.jsx(O,{label:"Gaps found",value:c,accent:c>0?"text-rose-400":void 0}),e.jsx(O,{label:"Current streak",value:E,accent:E>=3?"text-amber-400":void 0,icon:E>=3?ye:void 0})]}),e.jsx("p",{className:"mt-3 text-xs text-muted-foreground",children:w===0?`House is undefeated so far today. ${f} features on the board.`:c===0?`${s} for ${w}. The house is still undefeated. Go harder.`:`${c} gap${c===1?"":"s"} found. That is a free build, and possibly a free month.`})]}),N.length>0&&e.jsxs("div",{className:"mt-6 rounded-2xl border border-border/60 bg-card/30 p-5 sm:p-6",children:[e.jsxs("div",{className:"mb-4 flex items-center gap-2",children:[e.jsx(we,{className:"h-4 w-4 text-primary"}),e.jsx("h3",{className:"text-sm font-semibold uppercase tracking-wide text-muted-foreground",children:"Most wanted right now"})]}),e.jsx("ul",{className:"grid gap-2 sm:grid-cols-2",children:N.map(a=>e.jsxs("li",{className:"flex items-center justify-between gap-3 rounded-lg border border-border/50 bg-background/50 px-3 py-2",children:[e.jsx("span",{className:"truncate text-sm",children:a.url?e.jsx("a",{href:a.url,target:"_blank",rel:"noreferrer",className:"hover:text-primary",children:a.title}):a.title}),e.jsxs("span",{className:"flex shrink-0 items-center gap-2",children:[e.jsx(G,{variant:"outline",className:"text-[10px] capitalize",children:a.status.replace(/_/g," ")}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[a.votes," votes"]})]})]},a.title))})]}),e.jsx(te,{open:T,onOpenChange:I,initialFeature:(i==null?void 0:i.question)??"",question:i==null?void 0:i.question})]})},O=({label:n,value:l,accent:r,icon:h})=>e.jsxs("div",{className:"rounded-lg border border-border/50 bg-background/40 px-3 py-2.5 text-center",children:[e.jsxs("div",{className:`flex items-center justify-center gap-1.5 text-xl font-bold ${r??""}`,children:[h&&e.jsx(h,{className:"h-4 w-4"}),l]}),e.jsx("div",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:n})]}),Fe=Object.fromEntries(B.map(n=>[n.key,n])),ze=()=>{const[n,l]=t.useState(""),[r,h]=t.useState("all"),[i,v]=t.useState(!1);t.useEffect(()=>{window.scrollTo(0,0)},[]);const x=n.trim().toLowerCase(),y=t.useMemo(()=>H.map(s=>{if(r!=="all"&&s.product!==r)return null;if(!x)return s;const c=`${s.title} ${s.blurb}`.toLowerCase().includes(x)?s.items:s.items.filter(p=>`${p.n} ${p.d} ${p.k??""}`.toLowerCase().includes(x));return c.length?{...s,items:c}:null}
1).filter(Boolean),[x,r]),w=y.reduce((s,j)=>s+j.items.length,0),S={"@context":"https://schema.org","@type":"ItemList",name:"Every RentalTide feature",description:`The complete list of ${f} features across RentalTide, Boardwalk, Lyncta, Vectra, SignlOS and PipeBase.`,numberOfItems:f,itemListElement:H.slice(0,20).map((s,j)=>({"@type":"ListItem",position:j+1,name:s.title,description:s.blurb}))};return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(Ce,{title:`Every Feature We Ship (${f} of Them) | RentalTide`,description:`The complete RentalTide feature list: ${f} features across bookings, POS, marina, GPS, AI, websites and marketing. Ask our AI if we do something. If we do not, request it and we build it in 30 days.`,path:"/everything",keywords:"rental software feature list, all rental management features, booking software features, marina software features, rental POS features, GPS tracking features"}),e.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(S)}}),e.jsx(fe,{}),e.jsx("div",{className:"pt-20",children:e.jsx(Te,{})}),e.jsxs("header",{className:"rt-pagehead rt-pagehead--flush",children:[e.jsx(ge,{variant:"page"}),e.jsxs("div",{className:"rt-container",children:[e.jsx("p",{className:"rt-eyebrow",children:"The whole list, nothing held back"}),e.jsxs("h1",{className:"text-h1 text-ink [text-wrap:balance] max-w-[18ch]",children:[f," features. Every single one included."]}),e.jsxs("p",{className:"rt-lead mt-4",children:['No tiers. No add-on pricing. No "contact sales for that module". This page lists everything RentalTide, Boardwalk, Lyncta, Vectra, SignlOS and PipeBase actually do, across'," ",Ae," categories. Ask our AI whether we handle your weird edge case. If we do not, claim it and we build it in 30 days."]}),e.jsxs("div",{className:"mt-8 flex flex-col gap-3 sm:flex-row",children:[e.jsx(g,{asChild:!0,size:"lg",children:e.jsxs("a",{href:"#ask",children:["Ask if we do it",e.jsx(ve,{className:"h-4 w-4","aria-hidden":"true"})]})}),e.jsx(g,{asChild:!0,size:"lg",variant:"secondary","data-rt-secondary":"",children:e.jsxs("a",{href:"#list",children:["Browse all ",f]})})]}),e.jsx("ul",{className:"mt-10 flex flex-wrap gap-x-8 gap-y-2",children:B.map(s=>e.jsxs("li",{className:"flex items-baseline gap-2",children:[e.jsx("span",{className:"text-small text-ink",children:s.name}),e.jsx("span",{dir:"ltr",className:"rt-readout text-readout text-ink-subtle",children:Y(s.key)})]},s.key))})]})]}),e.jsx("div",{className:"container mx-auto px-4 py-12 sm:px-6",children:e.jsx($e,{})}),e.jsxs("div",{id:"list",className:"container mx-auto scroll-mt-20 px-4 pb-8 sm:px-6",children:[e.jsxs("div",{className:"sticky top-16 z-30 -mx-4 border-y border-hairline bg-surface px-4 py-3 sm:-mx-6 sm:px-6",children:[e.jsxs("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-center",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Z,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(P,{value:n,onChange:s=>l(s.target.value),placeholder:`Search ${f} features: waiver, slip, geofence, tip, refund, manifest...`,className:"h-10 pl-9","aria-label":"Search the feature list"}),n&&e.jsx("button",{type:"button",onClick:()=>l(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground","aria-label":"Clear search",children:e.jsx(K,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(z,{label:"Everything",count:f,active:r==="all",onClick:()=>h("all")}),B.map(s=>e.jsx(z,{label:s.name,count:Y(s.key),active:r===s.key,onClick:()=>h(s.key)},s.key))]})]}),e.jsxs("p",{className:"mt-2 text-xs text-muted-foreground",children:["Showing ",w," of ",f," features",x?` matching "${n.trim()}"`:"","."]})]}),y.length===0?e.jsxs("div",{className:"py-20",children:[e.jsx("h3",{className:"mb-2 text-xl font-semibold",children:x?`Nothing matches "${n.trim()}"`:"Nothing listed under that filter yet"}),e.jsx("p",{className:"mb-6 max-w-md text-muted-foreground",children:x?"Either we call it something else, or you found a real gap. Ask the AI to be sure, then claim the build.":"Clear the filter to see the full list, or ask the AI whether we handle what you need."}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsx(g,{asChild:!0,variant:"secondary","data-rt-secondary":"",children:e.jsx("a",{href:"#ask",children:"Ask the AI"})}),e.jsx(g,{onClick:()=>v(!0),children:"Request it"})]})]}):e.jsx("div",{className:"space-y-10 py-10",children:y.map(s=>{const j=Fe[s.product];return e.jsxs("section",{id:s.id,className:"scroll-mt-40",children:[e.jsxs("div",{className:"mb-4 flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[e.jsx("h2",{className:"text-xl font-bold sm:text-2xl",children:s.title}),e.jsx("span",{className:"rt-chip",children:j.name}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[s.items.length," features"]})]}),e.jsx("p",{className:"mb-5 max-w-2xl text-sm text-muted-foreground",children:s.blurb}),e.jsx("div",{className:"grid gap-x-6 gap-y-3 sm:grid-cols-2 xl:grid-cols-3",children:s.items.map(c=>e.jsxs("div",{className:"flex gap-2.5",children:[e.jsx($,{className:"mt-0.5 h-4 w-4 shrink-0 text-brand-strong"}),e.jsxs("div",{children:[e.jsx("div",{className:"text-sm font-medium leading-snug",children:c.n}),e.jsx("div",{className:"text-xs leading-relaxed text-muted-foreground",children:c.d})]})]},c.n))})]},s.id)})})]}),e.jsx("section",{className:"rt-section rt-section--tint",children:e.jsx("div",{className:"rt-container",children:e.jsxs("div",{className:"max-w-[72ch]",children:[e.jsx("span",{className:"rt-icon-tile mb-5",children:e.jsx(J,{className:"h-5 w-5",strokeWidth:1.5,"aria-hidden":"true"})}),e.jsxs("h2",{className:"rt-h2",children:["Found something in that list of ",f," that is missing?"]}),e.jsx("p",{className:"rt-lead mt-4",children:"Request it. If we accept it and do not ship it within 30 days, your platform fee is on us for a full month. That is the whole offer."}),e.jsxs(g,{size:"lg",className:"mt-8",onClick:()=>v(!0),children:["Request a feature",e.jsx(ke,{className:"rt-arrow h-4 w-4","aria-hidden":"true"})]}),e.jsx(Ee,{type:"single",collapsible:!0,className:"mt-10 max-w-2xl text-left",children:e.jsxs(Ie,{value:"terms",children:[e.jsx(qe,{className:"text-sm",children:"Read the terms (they are short)"}),e.jsxs(Re,{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsx("p",{children:"1. Submit the request with your email. We reply in writing within 48 hours saying whether we accept it."}),e.jsx("p",{children:"2. We accept requests that are rental, booking, marina, tour, POS, or operations features we can build and support responsibly. We will not accept requests that require breaking the law, breaking payment network rules, integrating with a partner who will not work with us, or rebuilding an unrelated product category."}),e.jsx("p",{children:"3. The 30 days run from our written acceptance, not from the day you submit."}),e.jsx("p",{children:"4. If we miss the 30 days, your RentalTide platform fee is waived for one month
1starting the day we missed. Card processing costs charged by Stripe are not ours to waive and are not included."}),e.jsx("p",{children:"5. One active guaranteed request per account at a time, so nobody can queue fifty of them. Ship one, start the next."}),e.jsx("p",{children:"6. Every accepted request goes on our public board so you can watch it move. We ship it for everyone, not just you."})]})]})})]})})}),e.jsx(te,{open:i,onOpenChange:v}),e.jsx(Se,{})]})},z=({label:n,count:l,active:r,onClick:h})=>e.jsxs("button",{type:"button",onClick:h,"aria-pressed":r,className:`rt-chip transition-colors ${r?"border-brand-border bg-brand-tint font-semibold text-ink":"hover:border-hairline-strong hover:text-ink"}`,children:[n,e.jsx("span",{dir:"ltr",className:"rt-readout text-[11px] text-ink-subtle",children:l})]});export{ze 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.