// data.jsx — content for LifeAfterCall.
// ALL editorial copy lives here. Edit this file to update the site.
// Anything in {CURLY_BRACES} or marked "TODO" is a placeholder you should replace.

// ── Global site metadata ───────────────────────────────────────
// Used across the nav, footer, hero, about page, subscribe page.
const SITE = {
  editor:        '{EDITOR_NAME}',          // e.g. "Dr. Jane Smith, M.D."
  editorShort:   '{EDITOR_SHORT}',          // short attribution e.g. "Smith studio"
  foundedDate:   '{FOUNDED_DATE}',          // e.g. "1 Jun 2026"
  subscribers:   '{SUBSCRIBER_COUNT}',      // display string e.g. "1,200" — shown on home
  cadence:       'Weekly · Sun 06:14 a.m.',
  shipTime:      '06:14 a.m.',
  medianLength:  '{MIN} min · {WORDS} words',
  // Volume / issue numbering used in footer copyline
  volume:        'I',
  issuesRange:   'Iss. 001',                // e.g. "Iss. 001–014" once you have a backlog
  estYear:       '2026',
  // Contact
  contactEmail:  'desk@lifeaftercall.com',
};

// ── Editor's note (About page) ──────────────────────────────────
const EDITOR_NOTE = {
  kicker: '↳ from the editor',
  // Two-part headline. The italic part is the colon-and-after.
  title: ['We have one job', { italic: ': give back your weekend.' }],
  paras: [
    '{Paragraph 1 of the editor\'s note — the personal story behind why LifeAfterCall exists. Replace with your own voice.}',
    '{Paragraph 2 — what the publication does NOT do, and how it relates to medicine.}',
  ],
  // Caption under the editor's portrait placeholder
  portraitCaption: '[ portrait · editor · backlit ]',
  portraitTime:    '07:02 a.m.',
};

// ── The current week's issue (homepage hero, /issue route) ─────
// Replace every {PLACEHOLDER} with real copy before launch.
const CURRENT_ISSUE = {
  no:        '001',
  vol:       'I',
  date:      '{ISSUE_DATE}',                // e.g. "7 Jun 2026"
  dateShort: '{DATE_SHORT}',                // e.g. "7 Jun"
  day:       'Sunday',
  pillar:    { no: '01', name: 'The Efficient Home', when: 'am' },
  byline:    '{BYLINE}',
  readMin:   0,
  hoursSaved: 0,
  title:     ['{TITLE_LEAD}', { italic: '{TITLE_ITALIC}' }],
  deck:      '{One-sentence deck that summarises the essay.}',
  body: [
    '{Paragraph 1 of the essay goes here. The home page and /issue route both render this array — each item is its own paragraph.}',
    '{Paragraph 2.}',
    '{Paragraph 3.}',
  ],
  pullQuote: '"{A memorable pull quote from the essay.}"',
  prompt: [
    '{prompt line 1}',
    '{prompt line 2}',
    '{prompt line 3}',
  ],
  marginalia: '{Editor\'s small commentary on the prompt — why it\'s shaped this way, how to adapt it.}',
};

// Reference to next week's issue (used in the issue-page footer).
const NEXT_ISSUE = { no: '002', date: '{NEXT_ISSUE_DATE}' };

// ── Cross-promoted articles in this issue ──────────────────────
// Empty array hides the "Also in this issue" section.
const ALSO_IN_ISSUE = [
  // { when: 'am', no: '02', name: 'Pillar Name', title: 'Headline', min: 4 },
];

// ── Archive of past issues (newest first) ──────────────────────
// Empty array shows an empty state on /archive. Add issues as you publish them.
const ARCHIVE = [
  // {
  //   no: '001', date: '7 Jun 2026', day: 'Sun',
  //   title: 'First issue title',
  //   when: 'am',                       // 'am' | 'noon' | 'pm'
  //   dept: '01 · The Efficient Home',
  //   latest: true,
  //   min: 4,
  // },
];

// ── Editorial pillars ──────────────────────────────────────────
// These are your standing categories. Edit names/blurbs but keep the shape.
// `when` drives the accent colour (am = amber, pm = teal, noon = mixed).
const PILLARS = [
  { no: '01', name: 'The Efficient Home', when: 'am',   blurb: 'Meals, household logistics, the things you stopped thinking about.' },
  { no: '02', name: 'Elevated Leisure',   when: 'am',   blurb: 'Travel, hobbies, optimizing off-time.' },
  { no: '03', name: 'Parenting & Family', when: 'pm',   blurb: 'School schedules, creative projects, family events.' },
  { no: '04', name: 'Career & Wealth',    when: 'pm',   blurb: 'Real estate, financial planning, side things.' },
  { no: '05', name: 'Technical Insight',  when: 'noon', blurb: 'Agents, prompt engineering, in plain talk.' },
];

// ── Subscribe tiers ────────────────────────────────────────────
// Set real prices here. `featured: true` highlights the recommended tier.
const TIERS = [
  {
    id: 'reader', name: 'Reader', price: 'Free', cadence: '/ forever',
    when: 'am',
    pitch: 'The Sunday brief in your inbox. Six minutes of reading. No medical content.',
    perks: [
      'The weekly Horizon Brief',
      'Full single-issue articles',
      'Access to the public archive',
    ],
    cta: 'Subscribe · free',
  },
  {
    id: 'member', name: 'Member', price: '${TBD}', cadence: '/ month',
    when: 'noon',
    pitch: 'The brief, plus every prompt as a copy-and-run shortcut. The library grows weekly.',
    perks: [
      'Everything in Reader',
      'The Prompt library',
      'Annotated A.M. / P.M. workflows',
      'Member-only Thursday postscript',
    ],
    cta: 'Become a member',
    note: '${TBD} billed annually.',
    featured: true,
  },
  {
    id: 'founding', name: 'Founding', price: '${TBD}', cadence: '/ year',
    when: 'pm',
    pitch: 'A small circle of physicians shaping the periodical.',
    perks: [
      'Everything in Member',
      'Founding name in the colophon',
      'Quarterly dinner',
      'Direct line to the desk · 48 hr reply',
      'First read · drafts on Friday',
    ],
    cta: 'Apply',
    note: 'Limited seats. Applications reviewed Sundays.',
  },
];

// ── About / colophon page ──────────────────────────────────────
const ABOUT = {
  kicker: '↳ colophon · what this is',
  title:  ['A periodical,', { italic: 'not a feed.' }],
  lead:
    "LifeAfterCall is a weekly read for physicians who are very good at their day job and would like the rest of life to require less of them. Written by one of you. Edited like a magazine. Delivered Sundays at 06:14 a.m.",
  paras: [
    "We do not cover medicine. We do not cover the news. We cover the part of your week that should not need your attention — the meals, the trips, the schools, the inbox, the spreadsheets — and how to hand it to an agent that runs while you are at the hospital.",
    "Each issue is one essay and one prompt. The essay is short. The prompt is the part you keep. We index everything by five pillars and by time of day: A.M. is for the warm, generative work; P.M. is for the cool, administrative work. The horizon mark you keep seeing is the sun on either side of that line.",
    "The audience is small on purpose. Most weeks we ship a single voice. Some weeks a guest. Never an algorithm.",
  ],
  // Facts shown in the colophon. Pull from SITE so you only edit in one place.
  facts: [
    { k: 'Founded',        v: SITE.foundedDate },
    { k: 'Issues to date', v: CURRENT_ISSUE.no },
    { k: 'Editor',         v: SITE.editor },
    { k: 'Cadence',        v: SITE.cadence },
    { k: 'Median length',  v: SITE.medianLength },
    { k: 'Subscribers',    v: SITE.subscribers },
  ],
  principles: [
    { no: '01', when: 'am',   p: 'Reliability beats novelty.',     d: 'A system that works every time is the entire product.' },
    { no: '02', when: 'am',   p: 'A periodical, not a feed.',      d: 'Sunday morning. Once a week. Out by lunch.' },
    { no: '03', when: 'noon', p: 'Peer to peer.',                  d: 'Written by a physician, for physicians. No outside voice.' },
    { no: '04', when: 'pm',   p: 'Italics carry meaning.',         d: 'The thing in italics is the thing to remember.' },
    { no: '05', when: 'pm',   p: 'Short essay. One prompt. End.',  d: 'If the prompt fits on a phone screen, the essay is done.' },
  ],
};

// ── Contact form reasons ───────────────────────────────────────
const CONTACT_REASONS = [
  { id: 'tip',   label: 'Submit a tip',         hint: 'A prompt or workflow that has saved you weekend hours.' },
  { id: 'guest', label: 'Pitch a guest essay',  hint: 'One issue, one pillar. 600–900 words.' },
  { id: 'press', label: 'Press · interview',    hint: "We don't talk to many. Tell us what you're working on." },
  { id: 'fix',   label: 'A correction',         hint: 'Tell us what we got wrong. We will print it.' },
  { id: 'misc',  label: 'Something else',       hint: 'Anything that does not fit the above.' },
];

// Back-compat alias so existing references in chrome/home/pages.jsx still work
// while you migrate them to CURRENT_ISSUE. Will be removed once all refs use CURRENT_ISSUE.
const ISSUE_014 = CURRENT_ISSUE;

Object.assign(window, {
  SITE, CURRENT_ISSUE, NEXT_ISSUE, ISSUE_014, EDITOR_NOTE,
  ALSO_IN_ISSUE, ARCHIVE, PILLARS, TIERS, ABOUT, CONTACT_REASONS,
});
