PageSourceSearch

https://rentaltide.com/assets/AppStore-Btb-yJCf.js

js rentaltide.com collected 2026-10-02 07:00:06 UTC 9,643 bytes, 1 lines download raw bytes

1import{j as e,N as S,B as c}from"./index-BP495Wq2.js";import{r as n,a3 as I,j as f,br as j,aw as N,a1 as C,bs as P,bt as R,E as B}from"./vendor-icons-DySKCv4q.js";import{S as L}from"./SEOHead-IgzOZ5qK.js";import E from"./Footer-BXft8DOF.js";import{B as F}from"./Breadcrumbs-C9of0Twm.js";import{C as b,c as v}from"./card-CsY_PLNl.js";import{B as m}from"./badge-BIXEAq5n.js";import{I as M}from"./input-C3Od9FAT.js";const T="https://v3.api.rentaltide.com",U="https://app.rentaltide.com",w=[{id:"all",name:"All Apps"},{id:"integrations",name:"Integrations"},{id:"analytics",name:"Analytics"},{id:"marketing",name:"Marketing"},{id:"operations",name:"Operations"},{id:"accounting",name:"Accounting"},{id:"communication",name:"Communication"}],H=()=>{var h;const[i,y]=n.useState([]),[d,x]=n.useState(!0),[l,k]=n.useState(""),[r,A]=n.useState("all");n.useEffect(()=>{async function s(){x(!0);try{const t=await fetch(`${T}/marketplace/apps/public`);if(t.ok){const a=await t.json();y(a.apps||[])}}catch(t){console.error("Error fetching apps:",t)}finally{x(!1)}}s()},[]);const u=n.useMemo(()=>{const s=i.filter(a=>a.isPromoted),t=i.filter(a=>!a.isPromoted&&(a.totalInstalls||0)>10);return[...s,...t].slice(0,4)},[i]),o=n.useMemo(()=>i.filter(s=>{var t;if(r!=="all"&&!({integrations:["integrations","Integrations"],analytics:["analytics","Analytics & Reporting"],marketing:["marketing","Marketing & Sales"],operations:["operations","Operations & Logistics"],accounting:["accounting","Accounting & Finance"],communication:["communication","Customer Service"]}[r]||[r]).includes(s.category))return!1;if(l){const a=l.toLowerCase();return s.appName.toLowerCase().includes(a)||((t=s.description)==null?void 0:t.toLowerCase().includes(a))}return!0}).sort((s,t)=>s.isPromoted&&!t.isPromoted?-1:!s.isPromoted&&t.isPromoted?1:(t.totalInstalls||0)-(s.totalInstalls||0)),[i,r,l]),g=s=>{if(s.pricingModel==="free"||!s.pricingAmount)return"Free";const t=`$${s.pricingAmount.toFixed(2)}`;return s.pricingModel==="subscription"?`${t}/mo`:t},p=s=>{window.location.href=`${U}/app-store?install=${s.appSlug}`};return new Date().toISOString(),e.jsxs("div",{className:"min-h-screen bg-background overflow-x-hidden",children:[e.jsx(L,{title:"RentalTide App Store | Integrations & Add-ons",description:"Browse RentalTide's app store for integrations with Stripe, QuickBooks, GPS tracking, security cameras, and more for your rental business.",path:"/apps",keywords:"RentalTide integrations, rental software apps, rental add-ons, rental platform marketplace"}),e.jsx(S,{}),e.jsx("div",{className:"pt-20",children:e.jsx(F,{})}),e.jsxs("main",{className:"overflow-x-hidden",children:[e.jsxs("section",{className:"relative pt-5 pb-16 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-primary/5 via-transparent to-secondary/5 dark:from-primary/10 dark:to-secondary/10"}),e.jsx("div",{className:"container mx-auto px-4 relative z-10",children:e.jsxs("div",{className:"max-w-4xl mx-auto text-center",children:[e.jsx("div",{className:"inline-flex items-center gap-2 mb-6",children:e.jsx(m,{variant:"outline",className:"text-primary border-primary",children:"App Marketplace"})}),e.jsxs("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-bold text-foreground mb-6",children:["Extend Your"," ",e.jsx("span",{className:"text-primary",children:"RentalTide Experience"})]}),e.jsx("p",{className:"text-xl text-muted-foreground mb-8 max-w-2xl mx-auto",children:"Discover powerful integrations and tools built by our partners to streamline your rental business operations."}),e.jsxs("div",{className:"max-w-xl mx-auto relative",children:[e.jsx(I,{className:"absolute left-4 top-1/2 -translate-y-1/2 h-5 w-5 text-muted-foreground"}),e.jsx(M,{placeholder:"Search apps...",value:l,onChange:s=>k(s.target.value),className:"pl-12 h-14 text-lg rounded-xl border-border bg-background"})]})]})})]}),u.length>0&&!l&&r==="all"&&e.jsx("section",{className:"py-12 bg-muted/50",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-8",children:[e.jsx(f,{className:"h-6 w-6 text-yellow-500"}),e.jsx("h2",{className:"text-2xl font-bold text-foreground",children:"Featured Apps"})]}),e.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-4 gap-6",children:u.map(s=>e.jsx(b,{className:"border-border hover:shadow-lg transition-all duration-300 bg-card overflow-hidden group cursor-pointer",onClick:()=>p(s),children:e.jsxs(v,{className:"p-6",children:[e.jsxs("div",{className:"flex items-start gap-4 mb-4",children:[s.logoUrl?e.jsx("img",{src:s.logoUrl,alt:s.appName,className:"w-14 h-14 roun
1ded-xl object-contain bg-muted p-1"}):e.jsx("div",{className:"w-14 h-14 rounded-xl bg-primary/10 flex items-center justify-center",children:e.jsx(j,{className:"h-7 w-7 text-primary"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"font-semibold text-foreground truncate",children:s.appName}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.developerName||"Partner"})]})]}),e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2 mb-4",children:s.description}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{variant:"secondary",className:"text-xs",children:g(s)}),s.averageRating&&e.jsxs("div",{className:"flex items-center gap-1 text-sm",children:[e.jsx(N,{className:"h-4 w-4 text-yellow-500 fill-yellow-500"}),e.jsx("span",{children:s.averageRating.toFixed(1)})]})]})]})},s.appId))})]})})}),e.jsx("section",{className:"py-12",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("div",{className:"flex flex-wrap gap-2 mb-8",children:w.map(s=>e.jsx(c,{variant:r===s.id?"default":"outline",size:"sm",onClick:()=>A(s.id),className:"rounded-full",children:s.name},s.id))}),d&&e.jsx("div",{className:"flex items-center justify-center py-24",children:e.jsx(C,{className:"h-8 w-8 animate-spin text-primary"})}),!d&&o.length===0&&e.jsxs("div",{className:"text-center py-24 bg-muted/30 rounded-2xl",children:[e.jsx(P,{className:"h-16 w-16 text-muted-foreground mx-auto mb-4 opacity-50"}),e.jsx("p",{className:"text-xl font-semibold text-foreground mb-2",children:"No apps found"}),e.jsx("p",{className:"text-muted-foreground",children:"Try adjusting your search or filters"})]}),!d&&o.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex items-center justify-between mb-6",children:e.jsxs("h2",{className:"text-xl font-semibold text-foreground",children:[r!=="all"?(h=w.find(s=>s.id===r))==null?void 0:h.name:"All Apps",e.jsxs("span",{className:"text-muted-foreground font-normal ml-2",children:["(",o.length,")"]})]})}),e.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-6",children:o.map(s=>e.jsx(b,{className:"border-border hover:shadow-lg transition-all duration-300 bg-card overflow-hidden",children:e.jsxs(v,{className:"p-6",children:[e.jsxs("div",{className:"flex items-start gap-4 mb-4",children:[s.logoUrl?e.jsx("img",{src:s.logoUrl,alt:s.appName,className:"w-16 h-16 rounded-xl object-contain bg-muted p-1"}):e.jsx("div",{className:"w-16 h-16 rounded-xl bg-primary/10 flex items-center justify-center",children:e.jsx(j,{className:"h-8 w-8 text-primary"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold text-foreground truncate",children:s.appName}),s.isPromoted&&e.jsx(f,{className:"h-4 w-4 text-yellow-500 flex-shrink-0"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.developerName||"Partner Developer"}),e.jsxs("div",{className:"flex items-center gap-3 mt-1",children:[e.jsx(m,{variant:"outline",className:"text-xs",children:s.category}),s.averageRating&&e.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[e.jsx(N,{className:"h-3 w-3 text-yellow-500 fill-yellow-500"}),e.jsxs("span",{children:[s.averageRating.toFixed(1)," (",s.totalReviews,")"]})]})]})]})]}),e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2 mb-4 min-h-[40px]",children:s.description}),e.jsxs("div",{className:"flex items-center justify-between pt-4 border-t border-border",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-sm font-medium text-foreground",children:g(s)}),s.totalInstalls&&s.totalInstalls>0&&e.jsxs("span",{className:"text-xs text-muted-foreground flex items-center gap-1",children:[e.jsx(R,{className:"h-3 w-3"}),s.totalInstalls,"+ installs"]})]}),e.jsxs(c,{size:"sm",onClick:()=>p(s),className:"gap-1",children:["Install",e.jsx(B,{className:"h-3 w-3"})]})]})]})},s.appId))})]})]})})}),e.jsx("section",{className:"py-24 bg-gradient-to-br from-primary/5 to-secondary/5",children:e.jsx("div",{className:"container mx-auto px-4",children:e.jsxs("div",{className:"max-w-3xl mx-auto text-center",children:[e.jsx("h2",{className:"text-3xl md:text-4xl font-bold text-foreground mb-4",children:"Build Your Own Integration"}),e.jsx("p",{className:"text-xl text-muted-foreground mb-8",children:"Join our partner program and build apps that reach thousands of rental businesses using RentalTide."}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[e.jsx(c,{size:"lg",onClick:()=>window.location.href="https://partners.rentaltide.com",children:"Become a Partner"}),e.jsx(c,{size:"lg",variant:"outline",onClick:()=>window.open("https://partners.rentaltide.com","_blank"),children:"View API Docs"})]})]})})})]}),e.jsx(E,{})]})};export{H 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.