{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "media",
  "type": "registry:lib",
  "title": "Demo media",
  "description": "Sample people and photos the demos use, as initials and flat placeholder shapes.",
  "categories": [
    "foundation"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "src/lib/media.ts",
      "content": "/**\n * Shared demo media: the cast from docs/demo-world.md and flat placeholder pictures. Avatars have no image, so\n * components show initials; every photo is the same neutral placeholder, described by its alt text.\n */\n\nexport interface MediaPerson {\n  id: string;\n  name: string;\n  role?: string;\n  src: string;\n}\n\nexport interface MediaPhoto {\n  id: string;\n  alt: string;\n  src: string;\n  width: number;\n  height: number;\n}\n\nconst PLACEHOLDER =\n  \"data:image/svg+xml,%3Csvg class='iris-placeholder' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 1000'%3E%3Crect width='1600' height='1000' fill='%23e3e7ee'/%3E%3Crect x='0' y='640' width='1600' height='360' fill='%23d3d9e3'/%3E%3Ccircle cx='1180' cy='330' r='150' fill='%23c4ccd9'/%3E%3Crect x='220' y='420' width='420' height='320' rx='14' fill='%23cbd2de'/%3E%3C/svg%3E\";\n\nexport const people = [\n  { id: \"katerina-vlachou\", name: \"Katerina Vlachou\", role: \"Product lead\", src: \"\" },\n  { id: \"stelios-antoniou\", name: \"Stelios Antoniou\", role: \"Backend engineer\", src: \"\" },\n  { id: \"nefeli-kontou\", name: \"Nefeli Kontou\", role: \"Product designer\", src: \"\" },\n  { id: \"myrto-lekka\", name: \"Myrto Lekka\", role: \"Desk editor\", src: \"\" },\n  { id: \"thanos-galanis\", name: \"Thanos Galanis\", role: \"Property manager\", src: \"\" },\n  { id: \"ioanna-sarri\", name: \"Ioanna Sarri\", role: \"Compliance reviewer\", src: \"\" },\n  { id: \"dafni-rokka\", name: \"Dafni Rokka\", role: \"Student\", src: \"\" },\n  { id: \"pavlos-kyriazis\", name: \"Pavlos Kyriazis\", role: \"Founder\", src: \"\" },\n  { id: \"ana-ferreira\", name: \"Ana Ferreira\", role: \"Relocating engineer\", src: \"\" },\n  { id: \"clara-weiss\", name: \"Clara Weiss\", role: \"Data analyst\", src: \"\" },\n  { id: \"giulia-ferri\", name: \"Giulia Ferri\", role: \"Marketing manager\", src: \"\" },\n  { id: \"tomasz-wrona\", name: \"Tomasz Wrona\", role: \"Frontend engineer\", src: \"\" },\n  { id: \"henrik-aas\", name: \"Henrik Aas\", role: \"Operations lead\", src: \"\" },\n  { id: \"noor-haddad\", name: \"Noor Haddad\", role: \"Growth lead\", src: \"\" },\n  { id: \"liam-doyle\", name: \"Liam Doyle\", role: \"Investor relations\", src: \"\" },\n] as const satisfies readonly MediaPerson[];\n\nexport const photos = [\n  {\n    id: \"pangrati-room\",\n    alt: \"A furnished private room in a shared flat in Pangrati\",\n    src: PLACEHOLDER,\n    width: 1600,\n    height: 1000,\n  },\n  {\n    id: \"kypseli-floor-plan\",\n    alt: \"Floor plan of a two-bedroom flat in Kypseli\",\n    src: PLACEHOLDER,\n    width: 1600,\n    height: 1000,\n  },\n  { id: \"anasa-note\", alt: \"A note page open in an Anasa vault\", src: PLACEHOLDER, width: 1600, height: 1000 },\n  {\n    id: \"capydb-overview\",\n    alt: \"The CapyDB project overview with storage and connection meters\",\n    src: PLACEHOLDER,\n    width: 1600,\n    height: 1000,\n  },\n  {\n    id: \"notdocs-spec\",\n    alt: \"A notdocs spec page with tasks and decisions\",\n    src: PLACEHOLDER,\n    width: 1600,\n    height: 1000,\n  },\n  {\n    id: \"ermisai-desk\",\n    alt: \"The ErmisAI review queue on the evening desk\",\n    src: PLACEHOLDER,\n    width: 1600,\n    height: 1000,\n  },\n  {\n    id: \"entrolytics-board\",\n    alt: \"An Entrolytics board comparing two websites\",\n    src: PLACEHOLDER,\n    width: 1600,\n    height: 1000,\n  },\n  {\n    id: \"mpath-board\",\n    alt: \"The mpath expedition board for the public launch\",\n    src: PLACEHOLDER,\n    width: 1600,\n    height: 1000,\n  },\n  {\n    id: \"meltemi-inbox\",\n    alt: \"A Meltemi inbox sorted into Now, Later and Outbox\",\n    src: PLACEHOLDER,\n    width: 1600,\n    height: 1000,\n  },\n  {\n    id: \"kumbatio-levels\",\n    alt: \"Kumbatio's five levels from Peak to Rest\",\n    src: PLACEHOLDER,\n    width: 1600,\n    height: 1000,\n  },\n  { id: \"polaris-draft\", alt: \"A Polaris draft with its voice score\", src: PLACEHOLDER, width: 1600, height: 1000 },\n  { id: \"opsisid-review\", alt: \"An OpsisID session waiting for review\", src: PLACEHOLDER, width: 1600, height: 1000 },\n] as const satisfies readonly MediaPhoto[];\n\nexport type PersonId = (typeof people)[number][\"id\"];\nexport type PhotoId = (typeof photos)[number][\"id\"];\n\n/** Looks up a person by id. */\nexport function person(id: PersonId): MediaPerson {\n  return people.find((entry) => entry.id === id)!;\n}\n\n/** Looks up a photo by id. */\nexport function photo(id: PhotoId): MediaPhoto {\n  return photos.find((entry) => entry.id === id)!;\n}\n\n/** Avatar source for a person id, for `src` props (empty, so initials show). */\nexport const avatar = (id: PersonId) => person(id).src;\n\n/** The first `count` people, for avatar stacks and lists. */\nexport const peopleSample = (count: number) => people.slice(0, count);\n",
      "type": "registry:lib",
      "target": "@components/iris/lib/media.ts"
    }
  ],
  "docs": "Docs and live preview: https://irisui.dev/components/media",
  "meta": {
    "kind": "lib",
    "docs": "https://irisui.dev/components/media"
  }
}
