Taleem Slide Schema — deck-v1

Status: Stable · Frozen

This document is the authoring reference for Taleem slides. All examples below are valid, canonical, and safe to copy.

Deck Skeleton (with background)

{
  "version": "deck-v1",
  "name": "Example Deck",
  "background": {
    "backgroundColor": "#0f172a",
    "backgroundImage": "bg.png",
    "backgroundImageOpacity": 0.15
  },
  "deck": [ /* slides */ ]
}

Slide Grammar (applies to all slides)

{
  "type": "slideType",
  "start": 0,
  "end": 5,
  "data": [ /* semantic items */ ]
}

Canonical Slide Types

1. titleSlide

{
  "type": "titleSlide",
  "start": 0,
  "end": 5,
  "data": [
    { "name": "title", "content": "My Title", "showAt": 0 }
  ]
}

2. titleAndSubtitle

{
  "type": "titleAndSubtitle",
  "start": 5,
  "end": 10,
  "data": [
    { "name": "title", "content": "Main Title", "showAt": 5 },
    { "name": "subtitle", "content": "Secondary line", "showAt": 6 }
  ]
}

3. titleAndPara

{
  "type": "titleAndPara",
  "start": 10,
  "end": 15,
  "data": [
    { "name": "title", "content": "Concept", "showAt": 10 },
    { "name": "para", "content": "Explanation text", "showAt": 11 }
  ]
}

4. bulletList

{
  "type": "bulletList",
  "start": 15,
  "end": 20,
  "data": [
    { "name": "bullet", "content": "First point", "showAt": 15 },
    { "name": "bullet", "content": "Second point", "showAt": 16 },
    { "name": "bullet", "content": "Third point", "showAt": 17 }
  ]
}

5. twoColumnText

{
  "type": "twoColumnText",
  "start": 20,
  "end": 25,
  "data": [
    { "name": "left", "content": "Left column text", "showAt": 20 },
    { "name": "right", "content": "Right column text", "showAt": 21 }
  ]
}

6. imageSlide

{
  "type": "imageSlide",
  "start": 25,
  "end": 30,
  "data": [
    { "name": "image", "content": "image.png", "showAt": 25 }
  ]
}

7. imageWithTitle

{
  "type": "imageWithTitle",
  "start": 30,
  "end": 35,
  "data": [
    { "name": "title", "content": "Visual Concept", "showAt": 30 },
    { "name": "image", "content": "image.png", "showAt": 31 }
  ]
}

8. imageWithCaption

{
  "type": "imageWithCaption",
  "start": 35,
  "end": 40,
  "data": [
    { "name": "image", "content": "image.png", "showAt": 35 },
    { "name": "caption", "content": "Caption text", "showAt": 36 }
  ]
}

9. imageLeftBulletsRight

{
  "type": "imageLeftBulletsRight",
  "start": 40,
  "end": 45,
  "data": [
    { "name": "image", "content": "image.png", "showAt": 40 },
    { "name": "bullet", "content": "Point one", "showAt": 41 },
    { "name": "bullet", "content": "Point two", "showAt": 42 }
  ]
}

10. imageRightBulletsLeft

{
  "type": "imageRightBulletsLeft",
  "start": 45,
  "end": 50,
  "data": [
    { "name": "image", "content": "image.png", "showAt": 45 },
    { "name": "bullet", "content": "Point one", "showAt": 46 },
    { "name": "bullet", "content": "Point two", "showAt": 47 }
  ]
}

11. table

{
  "type": "table",
  "start": 50,
  "end": 55,
  "data": [
    ["Column A", "Column B"],
    ["Value 1", "Value 2"],
    ["Value 3", "Value 4"]
  ]
}

12. statistic

{
  "type": "statistic",
  "start": 55,
  "end": 60,
  "data": [
    { "name": "number", "content": "42", "showAt": 55 },
    { "name": "label", "content": "Answer", "showAt": 56 }
  ]
}

13. donutChart

{
  "type": "donutChart",
  "start": 60,
  "end": 65,
  "data": [
    { "name": "percent", "content": "75", "showAt": 60 },
    { "name": "label", "content": "Completed", "showAt": 61 },
    { "name": "color", "content": "#ff9900", "showAt": 62 }
  ]
}

14. bigNumber

{
  "type": "bigNumber",
  "start": 65,
  "end": 70,
  "data": [
    { "name": "number", "content": "100%", "showAt": 65 },
    { "name": "label", "content": "Accuracy", "showAt": 66 }
  ]
}

15. barChart

{
  "type": "barChart",
  "start": 70,
  "end": 75,
  "data": [
    { "name": "bar", "label": "A", "value": 3, "showAt": 70 },
    { "name": "bar", "label": "B", "value": 5, "showAt": 71 }
  ]
}

16. quoteSlide

{
  "type": "quoteSlide",
  "start": 75,
  "end": 80,
  "data": [
    { "name": "quote", "content": "Clarity matters.", "showAt": 75 },
    { "name": "author", "content": "— Taleem", "showAt": 76 }
  ]
}

17. quoteWithImage

{
  "type": "quoteWithImage",
  "start": 80,
  "end": 85,
  "data": [
    { "name": "quote", "content": "Structure beats chaos.", "showAt": 80 },
    { "name": "author", "content": "— Taleem", "showAt": 81 },
    { "name": "image", "content": "image.png", "showAt": 82 }
  ]
}

18. cornerWordsSlide

{
  "type": "cornerWordsSlide",
  "start": 85,
  "end": 90,
  "data": [
    { "name": "card", "icon": "🧠", "label": "Focus", "showAt": 85 },
    { "name": "card", "icon": "📘", "label": "Clarity", "showAt": 86 }
  ]
}

19. contactSlide

{
  "type": "contactSlide",
  "start": 90,
  "end": 95,
  "data": [
    { "name": "headline", "content": "Taleem", "showAt": 90 },
    { "name": "email", "content": "hello@example.com", "showAt": 91 },
    { "name": "phone", "content": "+00 0000000", "showAt": 92 }
  ]
}

20. eq

{
  "type": "eq",
  "start": 95,
  "end": 100,
  "data": [
    {
      "name": "line",
      "type": "heading",
      "content": "Key Equation",
      "showAt": 95
    },
    {
      "name": "line",
      "type": "math",
      "content": "render(data) ⇒ same output",
      "showAt": 96,
      "spItems": [
        { "type": "spText", "content": "No hidden state" }
      ]
    }
  ]
}