PageSourceSearch

https://planitperfectly.ai/assets/CollabBundleGuide-DROXfbPK.js

js planitperfectly.ai collected 2026-10-05 12:26:47 UTC 9,923 bytes, 1 lines download raw bytes

1import{t as u,r as g,j as e,H as p,aq as i,B as d,L as h,A as f,F as x,v as y,U as b,q as w,n as v}from"./index-CZ_Jv48R.js";import{E as k}from"./EmailGate-C02y0E0B.js";import{u as j}from"./useToolUnlock-CuasQK4E.js";import{L as N}from"./layers-BOx_-PoS.js";import{F as C}from"./flower-2-O1LE-i2p.js";import{S as B}from"./shield-vwkV0VtD.js";import{C as T}from"./car-Bim8BOpu.js";import{G as A}from"./gift-CMh3pKYL.js";import{B as S}from"./baby-CfhkdRMz.js";import{C as E}from"./camera-Bv7QxKPW.js";import{S as G}from"./sparkles-0gsKI4C6.js";import{G as L}from"./graduation-cap-CpK8WM1J.js";import{A as M}from"./armchair-4nlGE6mr.js";import{M as P}from"./music-BeyPLJNF.js";import{C as _}from"./calendar-check-CwxuFsid.js";import{U as F}from"./utensils-crossed-DwIistWC.js";const H={catering:"Catering",planning:"Planning",entertainment:"Entertainment",venues:"Venue",rentals:"Rentals",workshops:"Workshops",beauty:"Hair & Makeup",invitations:"Invitations",photography:"Photography","kids-entertainment":"Kids' Entertainment",favors:"Favors",transportation:"Transportation",staffing:"Staffing",security:"Security",florists:"Florals","day-of-helper":"Day-of Helper"},n=[{slug:"backyard-bbq",name:"The Backyard Bash",occasion:"Summer party at home",blurb:"Loud, warm, and everyone's fed — the kind of night people text about the next day.",categories:["catering","rentals","entertainment","photography"],why:"A caterer (or a grill team) frees you to actually host; rentals cover tables, seating, and shade; a DJ or live act sets the energy; a photographer catches the candid stuff your phone misses."},{slug:"garden-bridal-shower",name:"The Garden Shower",occasion:"Bridal or baby shower",blurb:"Soft, pretty, and unhurried — brunch in bloom.",categories:["florists","catering","invitations","favors"],why:"Florals carry the whole look on a small budget; a light catering or grazing spread keeps it relaxed; cohesive invitations set the tone before anyone arrives; favors send guests home with the feeling."},{slug:"milestone-birthday",name:"The Milestone Dinner",occasion:"30th / 40th / 50th birthday",blurb:"Grown-up, glowing, and worth getting dressed up for.",categories:["venues","catering","entertainment","photography","florists"],why:"A venue makes it feel like an occasion; plated or family-style catering anchors the night; music keeps it moving; a photographer and a few florals turn a dinner into a memory."},{slug:"kids-birthday",name:"The Kids' Party",occasion:"Children's birthday",blurb:"Joyful chaos, handled. The grown-ups get to breathe.",categories:["kids-entertainment","catering","rentals","favors"],why:"A kids' entertainer (or character / face painter) is the heart of it; easy catering feeds big and little appetites; rentals bring tables, a bounce house, or a tent; favor bags are the happy goodbye."},{slug:"cozy-holiday",name:"The Cozy Holiday Gathering",occasion:"Holiday party at home",blurb:"Candlelight, good food, and nowhere else you'd rather be.",categories:["catering","florists","staffing","rentals"],why:"Catering means you sit down with your guests; seasonal florals and greenery set the scene; a server or two keeps glasses full and the kitchen calm; rentals add the extra seats and place settings a full house needs."},{slug:"elegant-anniversary",name:"The Anniversary Soirée",occasion:"Anniversary or vow renewal",blurb:"Romantic, polished, and a little nostalgic.",categories:["venues","catering","photography","florists","entertainment"],why:"A venue and florals create the romance; catering handles the meal you'll linger over; a photographer captures the people who've been there all along; live music or a DJ carries the dancing."},{slug:"corporate-mixer",name:"The Corporate Mixer",occasion:"Company event or client mixer",blurb:"Professional, easy, and actually fun.",categories:["venues","catering","staffing","photography"],why:"A venue sets the right tone; passed bites and a bar keep people mingling; staff keep service running so your team can host; a photographer gets the brand and team shots you'll actually use."},{slug:"baby-shower-brunch",name:"The Shower Brunch",occasion:"Baby shower brunch",blurb
1:"Bright, easy, and full of morning light.",categories:["catering","florists","invitations","rentals"],why:"A brunch spread keeps it low-key and lovely; fresh florals do the decorating; coordinated invitations make it feel intentional; rentals fill in the seating and the pretty table you don't own."},{slug:"graduation-party",name:"The Graduation Party",occasion:"Graduation celebration",blurb:"Proud, casual, and packed with people who showed up for them.",categories:["catering","rentals","entertainment","photography"],why:"Crowd-friendly catering feeds a come-and-go crowd; rentals handle the tent and tables for a big guest list; music keeps the energy up; a photographer marks the milestone properly."},{slug:"micro-wedding",name:"The Micro-Wedding",occasion:"Intimate wedding (under 50)",blurb:"Small, personal, and every detail felt.",categories:["venues","catering","photography","florists","beauty"],why:"With fewer guests, each piece shines: an intimate venue, a meal you'd serve friends, florals up close, photography that doesn't miss a face, and hair & makeup so you feel like yourself."}];new Map(n.map(a=>[a.slug,a]));const U={catering:F,planning:_,entertainment:P,venues:v,rentals:M,workshops:L,beauty:G,invitations:w,photography:E,"kids-entertainment":S,favors:A,transportation:T,staffing:b,security:B,florists:C,"day-of-helper":y},c=2;function l({b:a}){return e.jsxs("article",{className:"bg-white rounded-2xl border border-midnight/10 p-6 md:p-7 flex flex-col",children:[e.jsx("p",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-teal mb-1.5",children:a.occasion}),e.jsx("h2",{className:"font-serif text-2xl text-midnight leading-tight mb-2",children:a.name}),e.jsx("p",{className:"text-midnight/70 leading-relaxed mb-4",children:a.blurb}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-4",children:a.categories.map(r=>{const s=U[r];return e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-midnight/15 bg-cream px-3 py-1.5 text-sm font-medium text-midnight/75",children:[e.jsx(s,{className:"h-3.5 w-3.5 text-coral","aria-hidden":!0}),H[r]]},r)})}),e.jsxs("p",{className:"text-[15px] text-midnight/70 leading-relaxed mt-auto",children:[e.jsx("span",{className:"font-semibold text-midnight/85",children:"Why it works:"})," ",a.why]})]})}function ae(){const{unlocked:a,unlock:r}=j(),s=u.leadMagnet.captureBundleGuideLead.useMutation();g.useEffect(()=>{document.title="Party Bundle Ideas — which vendors to book together | Plan It Perfectly"},[]);const m=n.slice(0,c),o=n.slice(c);return e.jsxs("div",{className:"min-h-screen flex flex-col bg-cream",children:[e.jsx(p,{}),e.jsxs("main",{className:"flex-1 relative overflow-hidden",children:[e.jsxs("div",{className:"pointer-events-none absolute inset-0 overflow-hidden","aria-hidden":!0,children:[e.jsx("div",{className:"absolute -top-24 -left-20 h-72 w-72 rounded-full bg-coral/15 blur-3xl"}),e.jsx("div",{className:"absolute top-24 -right-24 h-80 w-80 rounded-full bg-teal/15 blur-3xl"})]}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-4 py-12 md:py-16",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full bg-coral/10 px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.2em] text-coral mb-5",children:[e.jsx(N,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Party Bundle Ideas"]}),e.jsx("h1",{className:"headline-section text-midnight mb-4",children:"The vendors that work beautifully together"}),e.jsxs("p",{className:"text-lg text-midnight/70 leading-relaxed max-w-2xl mx-auto","data-testid":"tool-pitch",children:["The hardest part of planning isn't picking one vendor — it's knowing which ones to book as a set so the whole night feels intentional. Here's how the pieces tend to fit, by the kind of event you're throwing",!a&&" — the first pairings are free, and your email opens the rest","."]})]}),e.jsxs("div",{className:"grid sm:grid-cols-2 gap-5",children:[m.map(t=>e.jsx(l,{b:t},t.slug)),a&&o.map(t=>e.jsx(l,{b:t},t.slug))]}),!a&&o.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"grid sm:grid-cols-2 gap-5 mt-5 blur-[5px] select-none","aria-hidden":!0,
1children:o.slice(0,2).map(t=>e.jsx(l,{b:t},t.slug))}),e.jsx("div",{className:"mt-6 max-w-xl mx-auto",children:e.jsx(k,{title:`Enter your email to see all ${n.length} bundle ideas`,body:"We'll reveal every pairing here and email you the full guide to keep. No spam, unsubscribe anytime.",buttonLabel:"Show me all the bundles",pendingLabel:"Unlocking…",onSubmit:async t=>{await s.mutateAsync({email:t,consent:!0}),i("generate_lead",{source:"party_bundles"})},onUnlocked:r})})]}),e.jsxs("div",{className:"mt-12 text-center bg-white rounded-2xl border border-midnight/10 p-8",children:[e.jsx("h2",{className:"font-serif text-2xl text-midnight mb-2",children:"Found your combination?"}),e.jsx("p",{className:"text-midnight/70 leading-relaxed max-w-xl mx-auto mb-6",children:"Start an event and we'll help you book vendors that fit your style, date, and budget."}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 justify-center",children:[e.jsx(d,{asChild:!0,className:"bg-coral hover:bg-coral/90 text-white rounded-full h-12 px-7 text-base shadow-lg shadow-coral/25",children:e.jsxs(h,{href:"/plan/new",onClick:()=>i("collab_bundle_cta",{action:"plan"}),children:["Start planning free ",e.jsx(f,{className:"ml-2 h-4 w-4"})]})}),e.jsx(d,{asChild:!0,variant:"outline",className:"rounded-full h-12 px-7 text-base border-midnight/15 text-midnight/75 hover:bg-midnight/5",children:e.jsx(h,{href:"/marketplace",onClick:()=>i("collab_bundle_cta",{action:"browse"}),children:"Browse vendors"})})]})]})]})]}),e.jsx(x,{})]})}export{ae 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.