PageSourceSearch

https://reconnected.base44.app/assets/DateNightIdeas-CeoIXfKa.js

js reconnected.base44.app collected 2026-10-03 03:09:23 UTC 8,858 bytes, 1 lines download raw bytes

1import{u as k,d as w,r as m,a as C,e as S,j as t,H as D,b as h}from"./index-DlxKQYxv.js";import{M as P}from"./MobilePageHeader-DNYEwe8m.js";import{C as z}from"./calendar-BJgYjWLk.js";import{S as O}from"./search-CuoEGFW5.js";import{D as I}from"./dollar-sign-CUFiDgoT.js";import{C as A}from"./clock-D6rZcuYP.js";import{M as B}from"./map-pin-BY3MsdMr.js";import{C as F}from"./check-Div_VZLH.js";import"./chevron-left-DlFClWfe.js";const g=[{id:"picnic",title:"Sunset Picnic",category:"Romantic",emoji:"🧺",desc:"Pack your favourite snacks and a blanket. Find a scenic spot and watch the sunset together.",cost:"£",duration:"2 hours",location:"Outdoors"},{id:"cooking",title:"Cook a New Cuisine Together",category:"Adventure",emoji:"🍳",desc:"Pick a cuisine you've never tried. Shop for ingredients together and cook a meal from scratch.",cost:"££",duration:"3 hours",location:"Home"},{id:"stargazing",title:"Stargazing Night",category:"Romantic",emoji:"✨",desc:"Drive away from city lights. Bring a blanket, hot drinks, and a stargazing app. Lie back and wonder together.",cost:"£",duration:"2 hours",location:"Outdoors"},{id:"museum",title:"Museum or Art Gallery",category:"Culture",emoji:"🎨",desc:"Explore a local museum or gallery. Discuss your favourite pieces and what they mean to you.",cost:"££",duration:"3 hours",location:"Indoors"},{id:"hike",title:"Nature Hike",category:"Adventure",emoji:"🥾",desc:"Find a trail you've never explored. Pack snacks and water. Disconnect from phones and connect with nature and each other.",cost:"£",duration:"4 hours",location:"Outdoors"},{id:"movie-marathon",title:"Childhood Movie Marathon",category:"Cozy",emoji:"🎬",desc:"Each pick 2 movies from your childhood. Snuggle up with snacks and share memories.",cost:"£",duration:"4 hours",location:"Home"},{id:"dance",title:"Living Room Dance Party",category:"Fun",emoji:"💃",desc:"Create a playlist of songs from your relationship. Dance like nobody's watching — because they aren't.",cost:"£",duration:"1 hour",location:"Home"},{id:"spa",title:"DIY Spa Night",category:"Cozy",emoji:"🧖",desc:"Candles, face masks, massage oil. Take turns giving each other a massage and relaxing.",cost:"£",duration:"2 hours",location:"Home"},{id:"game-cafe",title:"Board Game Cafe",category:"Fun",emoji:"🎲",desc:"Visit a board game cafe. Try a new game together — collaboration or competition, your choice.",cost:"££",duration:"3 hours",location:"Outdoors"},{id:"road-trip",title:"Surprise Road Trip",category:"Adventure",emoji:"🚗",desc:"One partner drives, the other navigates. Pick a town 1-2 hours away and explore with no plan.",cost:"££",duration:"Full day",location:"Outdoors"},{id:"painting",title:"Paint and Sip at Home",category:"Creative",emoji:"🖌️",desc:"Get canvases and paints. Follow a tutorial together or paint each other. Compare results!",cost:"£",duration:"2 hours",location:"Home"},{id:"bookstore",title:"Bookstore Date",category:"Culture",emoji:"📚",desc:"Browse a local bookstore. Each pick a book for the other. Find a cafe and read the first chapter together.",cost:"££",duration:"2 hours",location:"Outdoors"},{id:"ice-cream",title:"Ice Cream Walk",category:"Romantic",emoji:"🍦",desc:"Walk to an ice cream shop. Try each other's flavours. Walk slowly and talk about everything and nothing.",cost:"£",duration:"1 hour",location:"Outdoors"},{id:"concert",title:"Live Music Night",category:"Culture",emoji:"🎵",desc:"Find a local gig or open mic night. Discover new music together and support local artists.",cost:"££",duration:"3 hours",location:"Outdoors"},{id:"breakfast",title:"Breakfast in Bed",category:"Romantic",emoji:"🥐",desc:"Wake up early and surprise your partner with breakfast in bed. Stay in pyjamas all morning.",cost:"£",duration:"2 hours",location:"Home"},{id:"pottery",title:"Pottery Class",category:"Creative",emoji:"🏺",desc:"Book a pottery class together. Get messy, laugh a lot, and create something uniquely yours.",cost:"£££",duration:"2 hours",location:"Outdoors"}
1],H=["All","Romantic","Adventure","Culture","Cozy","Fun","Creative"];function $(){const p=k(),x=w(),[i,y]=m.useState("All"),[n,f]=m.useState(""),{data:l}=C({queryKey:["dateNightProfiles"],queryFn:async()=>h.entities.CoupleProfile.list()}),s=l==null?void 0:l[0],r=((s==null?void 0:s.wishlist)||[]).filter(e=>e.cat==="date_idea"),b=r.filter(e=>e.done).map(e=>e.text),d=r.map(e=>e.text),c=S({mutationFn:async e=>{await h.entities.CoupleProfile.update(s.id,{wishlist:e})},onSuccess:()=>x.invalidateQueries({queryKey:["dateNightProfiles"]})}),j=e=>{const o=((s==null?void 0:s.wishlist)||[]).filter(a=>!(a.cat==="date_idea"&&a.text===e.id));d.includes(e.id)?c.mutate(o):c.mutate([...o,{text:e.id,cat:"date_idea",done:!1,date:new Date().toISOString().split("T")[0]}])},v=e=>{const o=((s==null?void 0:s.wishlist)||[]).map(a=>a.cat==="date_idea"&&a.text===e.id?{...a,done:!a.done,date:a.done?a.date:new Date().toISOString().split("T")[0]}:a);c.mutate(o)},u=g.filter(e=>{const o=i==="All"||e.category===i,a=e.title.toLowerCase().includes(n.toLowerCase())||e.desc.toLowerCase().includes(n.toLowerCase());return o&&a});return t.jsxs("div",{className:"min-h-screen bg-gradient-to-br from-pink-50 via-white to-purple-50 pb-20",children:[t.jsx(P,{title:"Date Night Ideas",onBack:()=>p("/reconnect")}),t.jsxs("div",{className:"max-w-4xl mx-auto px-4 pt-6",children:[t.jsxs("div",{className:"text-center mb-8",children:[t.jsx("div",{className:"w-16 h-16 rounded-2xl bg-gradient-to-br from-[#702963] to-[#9B59B6] flex items-center justify-center mx-auto mb-4 shadow-lg",children:t.jsx(z,{size:32,className:"text-white"})}),t.jsx("h1",{className:"text-3xl font-black text-gray-800 mb-2",children:"Date Night Ideas"}),t.jsx("p",{className:"text-gray-500",children:"Browse curated date ideas, save your favourites, and mark them as completed."})]}),t.jsxs("div",{className:"relative mb-4",children:[t.jsx(O,{size:18,className:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-400"}),t.jsx("input",{type:"text",value:n,onChange:e=>f(e.target.value),placeholder:"Search date ideas...",className:"w-full pl-10 pr-4 py-3 border border-gray-300 rounded-xl text-sm outline-none focus:border-purple-500 focus:ring-2 focus:ring-purple-200"})]}),t.jsx("div",{className:"flex gap-2 mb-6 overflow-x-auto pb-2",children:H.map(e=>t.jsx("button",{onClick:()=>y(e),className:`px-4 py-2 rounded-lg text-xs font-bold whitespace-nowrap ${i===e?"bg-[#702963] text-white":"bg-white text-gray-500 border border-gray-200"}`,children:e},e))}),t.jsx("div",{className:"grid md:grid-cols-2 gap-4",children:u.map(e=>{const o=d.includes(e.id),a=b.includes(e.id);return t.jsxs("div",{className:`bg-white border rounded-2xl p-5 shadow-sm ${a?"border-emerald-200":"border-purple-100"}`,children:[t.jsxs("div",{className:"flex items-start gap-3 mb-3",children:[t.jsx("span",{className:"text-3xl",children:e.emoji}),t.jsxs("div",{className:"flex-1",children:[t.jsx("h3",{className:"font-bold text-gray-800",children:e.title}),t.jsx("span",{className:"text-[10px] font-bold px-2 py-0.5 rounded-full bg-purple-50 text-purple-600",children:e.category})]}),t.jsx("button",{onClick:()=>j(e),className:`w-8 h-8 rounded-full flex items-center justify-center ${o?"bg-[#702963] text-white":"bg-gray-100 text-gray-400"}`,children:t.jsx(D,{size:16,className:o?"fill-white":""})})]}),t.jsx("p",{className:"text-xs text-gray-500 mb-3 leading-relaxed",children:e.desc}),t.jsxs("div",{className:"flex items-center gap-3 text-[10px] text-gray-400 mb-3",children:[t.jsxs("span",{className:"flex items-center gap-1",children:[t.jsx(I,{size:12})," ",e.cost]}),t.jsxs("span",{className:"flex items-center gap-1",children:[t.jsx(A,{size:12})," ",e.duration]}),t.jsxs("span",{className:"flex items-center gap-1",children:[t.jsx(B,{size:12})," ",e.location]})]}),o&&t.jsx("button",{onClick:()=>v(e),className:`w-full py-2 rounded-lg text-xs font-bold ${a?"bg-emerald-100 text-emerald-600":"bg-purple-100 text-purple-600"}`,children:a?t.jsxs("span",{className:"flex items-center justify-center gap-1",children:[t.jsx(F,{size:14})," Completed!"]}):"Mark as Completed"})]},e.id)})}),u.length===0&&t.jsx("p",{className:"text-center py-8 text-gray-400 text-sm",children:"No date ideas found."}),r.length>0&&t.jsxs("div",{className:"mt-8 bg-white border border-purple-100 rounded-2xl p-5 shadow-lg",children:[t.jsxs("h2",{className:"font-bold text-gray-800 mb
1-3",children:["Your Saved Dates (",r.length,")"]}),t.jsx("div",{className:"flex flex-wrap gap-2",children:r.map((e,o)=>{const a=g.find(N=>N.id===e.text);return a?t.jsxs("span",{className:`flex items-center gap-1 px-3 py-1.5 rounded-full text-xs font-bold ${e.done?"bg-emerald-100 text-emerald-600":"bg-purple-100 text-purple-600"}`,children:[a.emoji," ",a.title," ",e.done&&"✓"]},o):null})})]})]})]})}export{$ 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.