// Shared community + changelog data for all three directions.
// Exported to window so each direction's JSX can read from one source.

const CHANGELOG = [
  {
    id: "rel-44",
    version: "v1.44",
    date: "May 18, 2026",
    tag: "Featured",
    tone: "amber",
    title: "Multi-property revenue forecasting",
    body: "relax.host now projects 30/60/90-day revenue per property using your real booking pace, local event data, and competitor occupancy. Forecasts update every 6 hours and you can drill into the assumptions behind each number.",
    bullets: [
      "Per-property 30/60/90-day revenue forecasts",
      "“Why this number” drill-down showing demand factors",
      "Compare scenarios — current pricing vs. AI-suggested vs. manual",
      "Slack & email weekly summary digest",
    ],
    image: "forecast",
    author: "Mira K. · Product",
  },
  {
    id: "rel-43",
    version: "v1.43.2",
    date: "May 14, 2026",
    tag: "Minor",
    tone: "ink",
    title: "Booking.com sync stability + faster invoice PDFs",
    bullets: [
      "Fixed: occasional 12-hour delay in Booking.com price pushes (affected ~0.3% of properties)",
      "Invoice PDF generation is 4× faster on portfolios over 10 properties",
      "Polish translation tuned for legal/finance terminology",
    ],
    author: "Eng team",
  },
  {
    id: "rel-42",
    version: "v1.43",
    date: "May 7, 2026",
    tag: "Feature",
    tone: "blue",
    title: "AI mood tracking, now portfolio-wide",
    body: "Mood signals are no longer just per-guest. The dashboard now shows portfolio-level sentiment over time, flags hosts that may need a check-in, and lets you set thresholds for proactive nudges.",
    bullets: [
      "Portfolio mood timeline (7d, 30d, 90d)",
      "Stay-level mood, not just message-level",
      "Custom thresholds (“notify me when 2+ stays go negative”)",
    ],
    image: "mood",
    author: "Sasha P. · Design",
  },
  {
    id: "rel-41",
    version: "v1.42",
    date: "Apr 29, 2026",
    tag: "Feature",
    tone: "emerald",
    title: "Cleaning team mobile companion",
    body: "Cleaners can now confirm completion, flag damage, and request restocks from a stripped-down web app. No login needed — just a per-stay magic link sent automatically.",
    bullets: [
      "Mobile-first checkout confirmation flow",
      "Photo-based damage + restock requests",
      "Owner gets a digest, not 12 WhatsApp messages",
    ],
    image: "cleaner",
    author: "Tomas L. · Mobile",
  },
  {
    id: "rel-40",
    version: "v1.41.4",
    date: "Apr 22, 2026",
    tag: "Minor",
    tone: "ink",
    title: "Czech VAT export + dashboard polish",
    bullets: [
      "New: Czech monthly VAT export (PDF + XML for Pohoda / Money S3)",
      "Dashboard cards now respect your light/dark preference per device",
      "Fixed: occasional duplicate guest message on Airbnb reconnect",
    ],
    author: "Eng team",
  },
  {
    id: "rel-39",
    version: "v1.41",
    date: "Apr 15, 2026",
    tag: "Feature",
    tone: "amber",
    title: "Smart Access — Nuki & TTLock support",
    body: "relax.host now generates codes directly inside Nuki and TTLock without third-party middleware. Codes rotate per guest, expire automatically at checkout, and you can revoke remotely in one tap.",
    bullets: [
      "Native Nuki Web API integration",
      "Native TTLock cloud integration",
      "Auto-revoke on cancellation, with audit trail",
    ],
    image: "lock",
    author: "Kasia R. · Integrations",
  },
  {
    id: "rel-38",
    version: "v1.40.1",
    date: "Apr 8, 2026",
    tag: "Minor",
    tone: "ink",
    title: "AI tone presets + 6 small fixes",
    bullets: [
      "Tone presets: Warm host, Boutique concierge, Direct/efficient, Casual local",
      "Receipt parser now handles Romanian + Bulgarian receipts",
      "Calendar export (.ics) includes cleaning slots",
      "Fixed: Slack notifications duplicating on retry",
    ],
    author: "Eng team",
  },
  {
    id: "rel-37",
    version: "v1.40",
    date: "Apr 1, 2026",
    tag: "Featured",
    tone: "violet",
    title: "Dynamic pricing v2 — event-aware",
    body: "The pricing engine now reads ~40 local event sources per city — concerts, conferences, sports, public holidays. Prices adjust days ahead, not just based on occupancy curves.",
    bullets: [
      "Event-aware pricing across 18 EU cities",
      "Per-property guardrails honored, always",
      "New “why did the price change” log",
      "23% average revenue lift in beta cohort",
    ],
    image: "pricing",
    author: "Ravi M. · ML",
  },
  {
    id: "rel-36",
    version: "v1.39",
    date: "Mar 24, 2026",
    tag: "Feature",
    tone: "blue",
    title: "Bulk messaging templates",
    body: "Send a personalized message to every guest checking in this week — with property-specific variables — in one composition. Approve once, ship to ten guests.",
    bullets: [
      "Variable insertion across multiple properties",
      "Send-window scheduling (off-hours guardrail)",
      "Per-guest preview before send",
    ],
    author: "Mira K. · Product",
  },
  {
    id: "rel-35",
    version: "v1.38.3",
    date: "Mar 18, 2026",
    tag: "Minor",
    tone: "ink",
    title: "Performance + accessibility pass",
    bullets: [
      "Dashboard initial load 38% faster on portfolios > 20 properties",
      "Full keyboard nav across reservation detail",
      "Screen reader labels on every status pill",
      "Reduced motion respected throughout",
    ],
    author: "Eng team",
  },
  {
    id: "rel-34",
    version: "v1.38",
    date: "Mar 11, 2026",
    tag: "Feature",
    tone: "emerald",
    title: "Expense AI — multi-currency, multi-VAT",
    body: "Photograph any receipt, in any currency, in any of 11 languages. relax.host extracts vendor, amount, VAT, and assigns it to the right property automatically.",
    bullets: [
      "11 receipt languages supported",
      "Auto-currency conversion to your reporting currency",
      "Per-line VAT split for mixed receipts",
    ],
    image: "expense",
    author: "Lukas D. · AI",
  },
  {
    id: "rel-33",
    version: "v1.37",
    date: "Mar 4, 2026",
    tag: "Feature",
    tone: "amber",
    title: "Guest book — fully customizable",
    body: "The auto-generated welcome guide is now yours to edit, theme, and translate. Set a custom domain, drop in your own photos, and let AI fill the local-tips section per neighborhood.",
    bullets: [
      "Custom subdomain per property",
      "Branded theme + cover photo",
      "AI-generated local tips, fact-checked against your area",
    ],
    image: "guestbook",
    author: "Sasha P. · Design",
  },
  {
    id: "rel-32",
    version: "v1.36.5",
    date: "Feb 26, 2026",
    tag: "Minor",
    tone: "ink",
    title: "Refinements + 3 bug fixes",
    bullets: [
      "Improved: VRBO message thread parsing",
      "Fixed: monthly export sometimes missing the last day",
      "Fixed: dashboard chart tooltip clipping at viewport edge",
    ],
    author: "Eng team",
  },
  {
    id: "rel-31",
    version: "v1.36",
    date: "Feb 18, 2026",
    tag: "Feature",
    tone: "blue",
    title: "Teammate access + role permissions",
    body: "Bring your co-host, cleaner coordinator, or accountant into relax.host. Three preset roles or build your own from 22 granular permissions.",
    bullets: [
      "Roles: Co-host, Cleaner lead, Accountant",
      "Activity log per teammate",
      "SAML SSO on Portfolio plan",
    ],
    author: "Mira K. · Product",
  },
];

const FEATURE_REQUESTS = [
  {
    id: "fr-1",
    title: "Automated turnover photos via cleaner phone",
    body: "Force the cleaner to upload 6 photos of the property post-cleaning, AI checks against “golden” photos and flags discrepancies.",
    votes: 248,
    status: "in-progress",
    tag: "Operations",
    author: "Linda K.",
    avatar: "amber",
    comments: 34,
    age: "2 weeks ago",
    pinned: true,
  },
  {
    id: "fr-2",
    title: "Slack workspace integration for portfolio teams",
    body: "Get reservation events, mood flags, and daily summaries into a dedicated Slack channel. Per-property routing.",
    votes: 192,
    status: "planned",
    tag: "Integrations",
    author: "Marek S.",
    avatar: "blue",
    comments: 28,
    age: "1 month ago",
  },
  {
    id: "fr-3",
    title: "Custom AI tone per property",
    body: "I have 1 boutique loft (warm, intimate) and 4 city-center studios (efficient, direct). One global tone doesn’t fit both.",
    votes: 167,
    status: "in-progress",
    tag: "AI",
    author: "Anna F.",
    avatar: "emerald",
    comments: 41,
    age: "3 weeks ago",
  },
  {
    id: "fr-4",
    title: "Direct booking checkout page with relax.host payments",
    body: "Move guests off OTAs over time. Hosted Stripe checkout with the property guestbook as the upsell page.",
    votes: 134,
    status: "planned",
    tag: "Revenue",
    author: "Petr O.",
    avatar: "violet",
    comments: 22,
    age: "1 month ago",
  },
  {
    id: "fr-5",
    title: "Hospitú + Lodgify channel sync",
    body: "Two regional channels missing. Hospitú is huge for SK/CZ direct bookings, Lodgify covers smaller hosts.",
    votes: 98,
    status: "open",
    tag: "Integrations",
    author: "Juraj M.",
    avatar: "amber",
    comments: 12,
    age: "2 months ago",
  },
  {
    id: "fr-6",
    title: "Damage deposit AI — photo evidence + dispute flow",
    body: "Cleaner reports damage. AI drafts the dispute. I review, approve, and relax.host files it with Airbnb resolution center.",
    votes: 87,
    status: "open",
    tag: "Operations",
    author: "Eva H.",
    avatar: "blue",
    comments: 18,
    age: "3 weeks ago",
  },
  {
    id: "fr-7",
    title: "Per-guest tax exemption (corporate stays)",
    body: "Corporate guests in some EU jurisdictions are city tax exempt. Need a flag on the reservation and exclusion from monthly filing.",
    votes: 64,
    status: "planned",
    tag: "Finance",
    author: "Tomáš R.",
    avatar: "emerald",
    comments: 9,
    age: "1 month ago",
  },
  {
    id: "fr-8",
    title: "Voice notes for cleaning team",
    body: "Sometimes a 10-second voice memo is faster than typing. Auto-transcribe + translate to cleaner’s preferred language.",
    votes: 52,
    status: "open",
    tag: "Operations",
    author: "Carla V.",
    avatar: "violet",
    comments: 7,
    age: "2 weeks ago",
  },
  {
    id: "fr-9",
    title: "Two-way calendar sync with Google Calendar",
    body: "Block dates from my personal calendar (kids in the apartment for the holidays) and have it push to Airbnb + Booking.",
    votes: 41,
    status: "open",
    tag: "Operations",
    author: "Marie L.",
    avatar: "amber",
    comments: 5,
    age: "1 week ago",
  },
];

const ROADMAP = {
  inProgress: [
    { id: "rm-1", title: "Multi-property revenue forecasting", eta: "Shipping w/ v1.44", tag: "Revenue", votes: 312 },
    { id: "rm-2", title: "Automated turnover photo QC", eta: "Late June 2026", tag: "Operations", votes: 248 },
    { id: "rm-3", title: "Per-property AI tone & personality", eta: "Late June 2026", tag: "AI", votes: 167 },
    { id: "rm-4", title: "Slack workspace integration", eta: "July 2026", tag: "Integrations", votes: 192 },
  ],
  planned: [
    { id: "rm-5", title: "Direct booking checkout (hosted)", eta: "Q3 2026", tag: "Revenue", votes: 134 },
    { id: "rm-6", title: "Corporate stay tax exemption", eta: "Q3 2026", tag: "Finance", votes: 64 },
    { id: "rm-7", title: "Native iOS + Android apps", eta: "Q3 2026", tag: "Platform", votes: 421 },
    { id: "rm-8", title: "Auto guest review responses", eta: "Q4 2026", tag: "AI", votes: 88 },
  ],
  exploring: [
    { id: "rm-9", title: "relax.host for serviced offices", eta: "Research", tag: "New segment", votes: 23 },
    { id: "rm-10", title: "AI concierge upsell engine", eta: "Research", tag: "Revenue", votes: 71 },
    { id: "rm-11", title: "Owner co-pilot — voice mode", eta: "Research", tag: "AI", votes: 36 },
  ],
  shipped: [
    { id: "rm-12", title: "Dynamic pricing v2 (event-aware)", date: "v1.40 · Apr 1", tag: "Revenue" },
    { id: "rm-13", title: "Nuki + TTLock native integrations", date: "v1.41 · Apr 15", tag: "Integrations" },
    { id: "rm-14", title: "Cleaning team mobile companion", date: "v1.42 · Apr 29", tag: "Operations" },
    { id: "rm-15", title: "Portfolio mood tracking", date: "v1.43 · May 7", tag: "AI" },
  ],
};

const THREADS = [
  {
    id: "th-1",
    title: "How are you handling guests who insist on calling before booking?",
    excerpt: "Some guests want to negotiate over phone before they’ll book direct. Most of mine drop off. Curious if anyone’s found a flow that works.",
    author: "Lukas R.",
    avatar: "amber",
    location: "Vienna",
    properties: 3,
    replies: 24,
    views: 412,
    lastReply: "2h ago",
    tag: "Guests",
    pinned: false,
    hot: true,
  },
  {
    id: "th-2",
    title: "⚡ v1.44 Forecasting — what are you using it for in your business?",
    excerpt: "Started using the new forecast on 8 properties this week. Curious how you’re acting on the numbers — do you change pricing? Marketing spend? Listings?",
    author: "Petra K.",
    avatar: "emerald",
    location: "Prague",
    properties: 5,
    replies: 41,
    views: 892,
    lastReply: "12m ago",
    tag: "Revenue",
    pinned: true,
    hot: true,
    shTeam: true,
  },
  {
    id: "th-3",
    title: "Best practice: handling Booking.com Genius discount and relax.host pricing",
    excerpt: "When BDC offers 10% Genius and relax.host’s also adjusting, am I stacking discounts I don’t want to give? How do you guardrail this?",
    author: "Marc D.",
    avatar: "blue",
    location: "Barcelona",
    properties: 4,
    replies: 18,
    views: 304,
    lastReply: "5h ago",
    tag: "Revenue",
  },
  {
    id: "th-4",
    title: "AI replies on a sensitive issue — do you have it draft or stay quiet?",
    excerpt: "Guest had a medical emergency mid-stay. AI drafted a fine response but I want to handle that one personally. How do you configure this kind of triage?",
    author: "Anna F.",
    avatar: "emerald",
    location: "Bratislava",
    properties: 2,
    replies: 32,
    views: 567,
    lastReply: "1d ago",
    tag: "AI",
    hot: true,
  },
  {
    id: "th-5",
    title: "Show-and-tell: my relax.host × Notion accounting workflow",
    excerpt: "Wrote up how I export relax.host monthly bundles into Notion + sync to my accountant. ~12 minutes saved a month. Sharing the template.",
    author: "Tomáš H.",
    avatar: "violet",
    location: "Bratislava",
    properties: 4,
    replies: 14,
    views: 218,
    lastReply: "6h ago",
    tag: "Templates",
  },
  {
    id: "th-6",
    title: "Cleaner says new mobile companion is ‘better than WhatsApp’ — wins from week 1",
    excerpt: "Two weeks in. Cleaner adoption: 100%. Damage reports up (in a good way — we’re catching things earlier). Photos coming in within 20 min of checkout.",
    author: "Carla V.",
    avatar: "amber",
    location: "Madrid",
    properties: 6,
    replies: 22,
    views: 488,
    lastReply: "3h ago",
    tag: "Operations",
  },
  {
    id: "th-7",
    title: "Feature request: per-property AI tone (anyone else?)",
    excerpt: "Boutique loft vs. studio rentals shouldn’t have the same voice. Linking the FR thread — give it an upvote if you agree.",
    author: "Anna F.",
    avatar: "emerald",
    location: "Bratislava",
    properties: 2,
    replies: 11,
    views: 156,
    lastReply: "8h ago",
    tag: "AI",
  },
];

const STORIES = [
  {
    id: "st-1",
    title: "From 3 properties to 11 in 18 months without hiring",
    host: "Lukas Rauch",
    location: "Vienna, AT",
    avatar: "amber",
    portfolio: "11 properties",
    lift: "+28% revenue",
    time: "8 min read",
    excerpt: "Lukas runs eleven boutique apartments across Vienna. No assistant, no co-host. Here’s how he uses relax.host as the system between him and scale.",
  },
  {
    id: "st-2",
    title: "How Petra rebuilt occupancy from 64% to 81% in 90 days",
    host: "Petra Kollárová",
    location: "Prague, CZ",
    avatar: "emerald",
    portfolio: "5 properties",
    lift: "+17pp occupancy",
    time: "6 min read",
    excerpt: "Two underperforming flats were dragging down her portfolio. A focused 90-day pricing experiment turned them into her top earners.",
  },
  {
    id: "st-3",
    title: "Going off the OTA grid — 60% direct bookings, year three",
    host: "Marc Delvecchio",
    location: "Barcelona, ES",
    avatar: "blue",
    portfolio: "4 properties",
    lift: "60% direct",
    time: "9 min read",
    excerpt: "Marc walked us through the slow shift away from OTAs. Repeat guests, branded guestbooks, and a payment flow that just works.",
  },
];

const EVENTS = [
  {
    id: "ev-1",
    title: "Open office hours with the AI team",
    when: "May 23, 2026 · 5:00 PM CET",
    format: "Live · Zoom",
    host: "Ravi M. + Lukas D.",
    seats: "120 / 200",
    topic: "AI tone, mood, and how to override gracefully.",
    going: true,
  },
  {
    id: "ev-2",
    title: "Pricing playbook — summer in EU rentals",
    when: "May 29, 2026 · 4:00 PM CET",
    format: "Webinar",
    host: "Mira K. + guest: Petra K.",
    seats: "284 / 500",
    topic: "Event-aware pricing, festival windows, and shoulder season strategies.",
  },
  {
    id: "ev-3",
    title: "Bratislava host meetup — in person",
    when: "Jun 6, 2026 · 6:30 PM",
    format: "In person · ŽLTý KÕň",
    host: "relax.host HQ",
    seats: "32 / 40",
    topic: "Drinks, demos, and a private tour of Tatra Loft.",
  },
  {
    id: "ev-4",
    title: "Office hours — accounting & VAT",
    when: "Jun 12, 2026 · 3:00 PM CET",
    format: "Live · Zoom",
    host: "Lukas D. + accountant Q&A",
    seats: "47 / 150",
    topic: "Monthly close, city tax, and exporting for your accountant.",
  },
];

const TEMPLATES = [
  {
    id: "tp-1",
    title: "Late check-out request — polite, conditional",
    by: "Lukas R.",
    avatar: "amber",
    type: "Message preset",
    installs: 412,
    rating: 4.9,
    excerpt: "A graceful late-checkout response that offers 1–2 PM free, charges thereafter, and protects same-day cleaning.",
  },
  {
    id: "tp-2",
    title: "Monthly close — relax.host → Pohoda export",
    by: "Tomáš H.",
    avatar: "violet",
    type: "Workflow",
    installs: 188,
    rating: 4.8,
    excerpt: "Step-by-step export that drops cleanly into Pohoda. Includes city tax line items broken out.",
  },
  {
    id: "tp-3",
    title: "Boutique guestbook theme — Vienna 1900",
    by: "Sasha P.",
    avatar: "emerald",
    type: "Guestbook theme",
    installs: 306,
    rating: 4.7,
    excerpt: "Newsreader serif, sepia photo treatment, and an editorial tip layout. Best for >50 m² properties.",
  },
  {
    id: "tp-4",
    title: "Cleaner damage report — photo + form preset",
    by: "Carla V.",
    avatar: "blue",
    type: "Cleaner flow",
    installs: 251,
    rating: 4.9,
    excerpt: "What we ask cleaners to capture, in what order. Cuts disputes and missed restocks.",
  },
];

const SHOWCASE = [
  { id: "sc-1", title: "Tatra Loft", by: "Tomáš H.", location: "Bratislava", listings: 1, accent: "amber" },
  { id: "sc-2", title: "Vienna 7th", by: "Lukas R.", location: "Vienna", listings: 3, accent: "emerald" },
  { id: "sc-3", title: "Studio Setúbal", by: "Marc D.", location: "Barcelona", listings: 4, accent: "blue" },
  { id: "sc-4", title: "Letná Editions", by: "Petra K.", location: "Prague", listings: 5, accent: "violet" },
];

// Daylight palette — coral primary, lavender / peach / teal secondaries
const STATUS_MAP = {
  "open":         { label: "Open",        color: "#807e87", bg: "rgba(10,10,12,0.06)" },
  "planned":      { label: "Planned",     color: "#8b5fdb", bg: "rgba(180,141,255,0.14)" },
  "in-progress":  { label: "In progress", color: "#c43575", bg: "rgba(232,82,140,0.12)" },
  "shipped":      { label: "Shipped",     color: "#2ca6b8", bg: "rgba(77,208,225,0.14)" },
};

// Tone keys stay the same so JSX is unchanged; values shift to brand palette
const TONE_COLOR = {
  amber:   "#e8528c", // coral
  blue:    "#4dd0e1", // teal
  emerald: "#5c6d4f", // sage
  violet:  "#b48dff", // lavender
  ink:     "#807e87", // mid-ink (for minor/quiet entries)
};

const AVATAR_GRADIENT = {
  amber:   "linear-gradient(135deg, #ffb3d6, #e8528c)",
  blue:    "linear-gradient(135deg, #b8e8e8, #4dd0e1)",
  emerald: "linear-gradient(135deg, #c8d3b8, #5c6d4f)",
  violet:  "linear-gradient(135deg, #d4b8ff, #b48dff)",
};

Object.assign(window, {
  CHANGELOG, FEATURE_REQUESTS, ROADMAP, THREADS, STORIES, EVENTS, TEMPLATES, SHOWCASE,
  STATUS_MAP, TONE_COLOR, AVATAR_GRADIENT,
});
