/* eslint-disable */
/* ============================================================
   data.jsx — content for every card in every section
   Generated by editor.html (Carousel Editor).
   Apps:   id, name, lede, status, platforms[], stack[],
           image?, overlayImage?, gallery[]?, appStore?, body[],
           thumbKind, archived?
   Prints: id, name, lede, status, material, printTime, glyph,
           image?, gallery[]?, body[], archived?
   Essays: id, name, lede, date, readTime, topic, image?, body[]
   Home:   tagline, subtitle, bio, links[]{label,href,newTab?}
   ============================================================ */

const APPS = [
  {
    id: 'task15',
    name: 'Task15',
    lede: 'A task manager built around fifteen-minute blocks.',
    status: 'live',
    platforms: ['iOS', 'OSX', 'iPadOS'],
    stack: ['SwiftUI', 'CloudKit', 'FoundationAI'],
    appStore: 'https://apps.apple.com/us/app/task15-manage-your-time/id6767433288',
    image: 'images/task15.jpg',
    gallery: ['images/task15.png', 'images/task15.jpg'],
    body: [
      {
        h: 'Why fifteen minutes',
        p: 'Hours are a lie we tell ourselves. Most working blocks are interrupted before they finish, and most useful work is shorter than people pretend. Task15 makes the smallest meaningful unit the canvas, so the day becomes honest.'
      },
      {
        p: 'The result is a planner that feels less like a list and more like a map of the day — chunked, colour-coded, and forgiving when you misjudge.'
      },
      {
        h: 'Design notes',
        p: 'A single-screen day view that doubles as the focus surface. No notifications, no streaks, no badges.'
      }
    ],
    thumbKind: 'app-task15'
  },
  {
    id: 'rapport',
    name: 'Rapport',
    lede: 'Record a quick voice note after meeting; on-device intelligence turns it into useful information.',
    status: 'beta',
    platforms: ['iOS'],
    stack: ['SwiftUI', 'FoundationAI', 'Speech-to-Text'],
    image: 'images/rapport.png',
    overlayImage: 'images/rapport-overlay.png',
    gallery: ['images/rapport.png', 'images/rapport-overlay.png'],
    body: [
      {
        p: 'Meet someone, record a quick note about when, where, who, and any follow ups. Apple intelligence parses this into useable data.\n\nSee who you’ve met, track follow ups and surface information when needed.'
      },
      {
        p: 'Have you ever met someone weeks, months or even years back, and can’t quite remember what you connected about? Do you not want to deal with long-form recording to keep a record, or not know how to turn data into information?\n\nRapport solves this by simplifying the input to a voice note and using AI to parse it into something useful.'
      }
    ],
    thumbKind: 'app-task15'
  },
  {
    id: 'geopin',
    name: 'GeoPin CRM',
    lede: 'Your contacts, mapped geographically.',
    status: 'beta',
    platforms: ['iOS'],
    stack: ['SwiftUI', 'CoreLocation'],
    image: 'images/geopin.png',
    body: [
      {
        h: 'Never miss a contact',
        p: 'I used to travel a lot, but it was never easy to visualise all my stakeholders across cities, states and sometimes countries.'
      },
      {
        p: 'Data stays owned by you — simple export to a .csv file. No lock-in, no ads, no fluff.'
      }
    ],
    thumbKind: 'app-cipher'
  },
  {
    id: 'setlo',
    name: 'Setlo',
    lede: 'Helping you navigate the vagaries of UK immigration.',
    status: 'alpha',
    platforms: ['iOS'],
    stack: ['SwiftUI'],
    body: [
      {
        h: 'UKVI assistant',
        p: 'The UK visa application process is complex and opaque. Setlo helps you understand the requirements and walks you through them step by step.'
      }
    ],
    thumbKind: 'app-northbound'
  },
  {
    id: 'bodyrecord',
    name: 'Body Record',
    lede: 'A canvas for recording your aches, ailments and blemishes.',
    status: 'idea',
    platforms: ['iOS'],
    stack: ['SwiftUI'],
    body: [
      {
        h: 'Tracking your ailments',
        p: 'Still in pre-release development.'
      }
    ],
    thumbKind: 'app-lattice',
    archived: true
  }
];

const PRINTS = [
  {
    id: 'taipei101',
    name: 'Taipei 101',
    lede: 'Repeating modular pieces make this an ideal first design.',
    status: 'beta',
    material: 'PETG · 0.2mm',
    printTime: '7h 20m',
    glyph: 'caddy',
    body: [
      {
        p: 'A multipart replica of the Taipei 101 building, largely made in TinkerCAD.'
      }
    ]
  },
  {
    id: 'razorbin',
    name: 'Safety Razor Bin',
    lede: 'Single-piece print with an anti-spill lip for used blades.',
    status: 'live',
    material: 'PLA · 0.2mm',
    printTime: '3h 10m',
    glyph: 'bracket',
    body: [
      {
        p: 'A disposable safety razor bin that holds around 20 used blades. A reverse-lip design makes it hard for them to fall out — though it’s not fool proof.\n\nDesigned primarily in TinkerCAD.'
      }
    ]
  }
];

const ESSAYS = [
  {
    id: 'Holder',
    name: 'I’m working on this',
    lede: 'Fine… have some inspiration from classical Chinese.',
    date: 'MAR 2026',
    readTime: '10 min',
    topic: 'Time · Productivity',
    body: [
      {
        p: '孟子見梁惠王。\n王曰：「叟不遠千里而來，亦將有以利吾國乎？」\n孟子對曰：「王何必曰利？亦有仁義而已矣。王曰『何以利吾國』？大夫曰『何以利吾家』？士庶人曰『何以利吾身』？上下交征利而國危矣。萬乘之國弒其君者，必千乘之家；千乘之國弒其君者，必百乘之家。萬取千焉，千取百焉，不為不多矣。苟為後義而先利，不奪不饜。未有仁而遺其親者也，未有義而後其君者也。王亦曰仁義而已矣，何必曰利？」'
      },
      {
        p: '孔子曰：“生而知之者，上也；学而知之者，次也：困而学之，又其次也；困而不学，民斯为下矣。”'
      }
    ]
  }
];

const HOME = {
  tagline: 'staying curious',
  subtitle: 'What I\'m thinking about doing,\nand doing about my thinking.',
  bio: 'Founder & technology enthusiast in London. Recovering sinologist, Royal Marines, and banker. Now making apps, 3D-printed objects, and the occasional thought piece.',
  links: [
    {
      label: 'Email',
      href: 'mailto:tom@liddellworks.com'
    },
    {
      label: 'GitHub',
      href: '#'
    },
    {
      label: 'LinkedIn',
      href: 'https://www.linkedin.com/in/tliddell/',
      newTab: true
    },
    {
      label: 'About',
      href: '#'
    }
  ]
};

window.APPS   = APPS;
window.PRINTS = PRINTS;
window.ESSAYS = ESSAYS;
window.HOME   = HOME;
