Block reference
This is the complete reference for every block you insert in the Cursiva content editor. Each block is listed under the same section it appears in on the / slash menu, with what it does and the rules that apply to it.
How the block menu works
The content body is a free-writing document into which you insert structured blocks. Type / on any line of the body to open the menu; start typing to filter by title, description, or search terms. The menu keeps the canonical section order and ranks the results within each section by relevance.
The menu organizes blocks into six sections, always in this order:
| Section | What it's for |
|---|---|
| Basics | Text, headings, lists, and basic reading structure |
| Media | Image, video, audio, files, and embeds |
| Code & data | Code, diagrams, and equations |
| Interactive | Visual organization and non-graded interaction |
| Graded | Graded activities that feed progress and mastery |
| Course | Composing content by reference |
Headings (Heading) have an extra role: each heading in the body starts a section of the content, and sections are the steps a learner completes. Content with no headings counts as a single section. See Progress and certificates for how completion is calculated.
Basics
Reading and structure blocks. They form the main narrative of the lesson.
| Block | What it does |
|---|---|
| Text | A plain-text paragraph |
| Heading 1 | Large section heading — starts a step of the content |
| Heading 2 | Medium section heading — starts a step of the content |
| Heading 3 | Small section heading — starts a step of the content |
| Bullet list | An unordered list |
| Numbered list | An ordered list |
| To-do list | A task list with checkable boxes |
| Quote | A block quote |
| Callout | A highlight box for notes, tips, and warnings |
| Divider | A horizontal dividing line |
| Table | Inserts a 3×3 table with a header row |
Media
Visual resources and files. Always pair media with alt text and context.
| Block | What it does |
|---|---|
| Image | Opens the file picker and uploads an image |
| Video | Embeds a YouTube, Vimeo, or Loom link, or uploads your own video file |
| Audio | An inline player for lessons, podcasts, and music |
| File | Uploads a file for download (stores name, size, and type) |
| Embed | Embeds an interactive iframe from allowed providers |
Video
The block recognizes YouTube, Vimeo, and Loom links in their most common URL forms and turns them into an embedded player (YouTube uses the cookieless domain). URLs that point directly to a video file (mp4, webm, ogg, ogv, mov, m4v) play in a native player. Your own uploads are supported too. Any other URL is not recognized.
Embed
Only providers on the allowlist can be embedded, and only over https. Any other host — or a URL without https — is refused with an error message, rather than embedding an arbitrary page.
| Provider | Accepts |
|---|---|
| StackBlitz | StackBlitz projects |
| CodeSandbox | Sandboxes (new editor or classic) |
| CodePen | Pens |
| Figma | Files, prototypes, and design |
| Desmos | Graphing calculator |
| GeoGebra | Materials and apps (calculator, classic) |
Code & data
Technical blocks for code, diagrams, and math.
| Block | What it does |
|---|---|
| Code block | A formatted code block |
| Code tabs | One snippet in several dialects (for example, bun or npm), with tabs |
| Code diff | Before/after with the changes highlighted |
| Diagram | A Mermaid diagram — flowcharts, sequences, and states |
| Math | A display equation in LaTeX, rendered with KaTeX |
| Inline math | A LaTeX expression inside a line of text |
Interactive
Blocks for visual organization and non-graded interaction. They help you present, hide, and navigate content, but they don't produce a grade.
| Block | What it does |
|---|---|
| Slides | A navigable presentation of rich slides |
| Tabs | Rich tabbed panels — for example, Beginner and Advanced |
| Accordion | Multiple collapsible items — FAQs, common mistakes |
| Steps | A numbered walkthrough with a connecting line |
| Timeline | Vertical milestones — roadmap, history, phases |
| Reveal | Content hidden until the learner clicks — solutions, spoilers |
| Poll | A poll for the cohort — the learner votes and sees the distribution |
| Flashcards | A recall deck with flip-to-reveal |
Reveal
Hides rich content until the learner clicks to reveal it — the natural companion to an exercise, with the solution folded away just below the challenge. While editing, the block stays open with a "hidden from the learner" indicator.
Poll
A cohort poll: no grade and no right answer. The learner votes and sees the community distribution. Votes are tied to the block's stable pollId, so republishing the content never loses the votes already recorded. Distributions also show up in the author's analytics. See Insights.
Flashcards
Retention practice: the learner flips each card and does an honest self-assessment. Each card has a rich front and back (they accept headings, code, images) and a stable id that is the grading key. The result feeds the same mastery history used by quizzes: a card marked correct counts as a "hit." Like a quiz, the cards are ordered adaptively — the ones the learner missed lead the session, and the already-mastered ones close it out. The back is not a secret, so the cards are sent in full.
Graded
Graded activities. They all run on the same server-side grading engine and feed the learner's mastery history. The central security point is the same for all of them: the correct answer is never sent to the client — grading happens on the server.
| Block | What it does | How it's graded |
|---|---|---|
| Question pool | Multiple-choice quiz with random sampling | Per question, against the server's answer key |
| Fill in the blank | Sentences with a gap for the learner to type (cloze) | Per blank, normalized free text |
| Matching | Pair up two columns | Per pair, like a quiz |
| Ordering | Put the steps in the right order | One question, all-or-nothing |
Question pool
The author writes N questions and sets how many (reveal) each learner sees. The sample is drawn at render time and is deterministic per learner: a stable seed (for example, user:content) guarantees the same sample and the same option order on every reload, so saved answers stay aligned. Before it's sent to the learner, the correctOptionId is stripped from each question and the options are shuffled, so the order doesn't give away the answer.
Sampling is mastery-adaptive: questions the learner missed come back first, the not-yet-seen ones come next, and the already-mastered ones make room for new material.
Fill in the blank (cloze)
Free-text blanks that go through the same grading and mastery engine as quizzes. Each sentence has a blank with its own stable id, so partial credit and mastery work per blank. The expected answer lives only in the author's document — the learner's document is sent with just the fragments around the blank. Grading normalizes both sides identically: it trims the ends, lowercases, and collapses repeated spaces. Then it compares with strict equality.
Matching
The author writes pairs (left, right). The learner sees the left column in the author's order and chooses, for each row, the correct text from a flat, shuffled list of all the right-hand texts — detached from their pairs. Reconnecting them is the exercise. Grading is per pair, with the same normalization as cloze.
Ordering
The author writes the steps in the correct order — the array order in the author's document is the answer. The learner receives the steps shuffled (with the same stable per-learner seed) and rearranges them. The step ids are opaque and reveal nothing; there's a safeguard so the list is never handed over already in the right order.
Course
Composition: assembling content out of other existing content.
| Block | What it does |
|---|---|
| Reference | Embeds other content as a navigable module |
Reference
References other content by its stable key, to compose courses and paths out of reusable content. Each reference becomes a module card that the learner navigates within the same enrollment — no new sign-up per module. The card stores a denormalized title and slug for display, but the content key is the source of truth, resolved at render time.
The release (pacing) rule belongs to the reference and is owned by the parent document — the same child content can be released in different ways in different courses:
| Rule | Behavior |
|---|---|
| Time drip | Releases after a number of hours |
| Drip anchor | Counts time from the enrollment or from the completion of the previous step |
| Prerequisites | Requires other steps to be completed before releasing |
See Content and Platform concepts for the relationship between content and reference.
Glossary term (inline menu)
Not every component comes from the / menu. The glossary term is applied to selected text, like a link, from the selection bubble menu — it's not a standalone block. The marked text gets a dotted underline; on hover or focus, the definition floats up. The author clicks the term to edit the word and the definition in place. It's the natural companion for vocabulary-heavy lessons (languages, medicine, tech).
How grading protects answers
Every graded block shares the same guarantees, which are worth knowing when you build assessments:
- The correct answer never leaves the server. The correct option, the blank's answer, the pair's link, and the right order stay only in the author's document. The document sent to the learner is sanitized before it goes out.
- Deterministic per-learner sampling. A stable seed per learner and content keeps the sample and the order constant across reloads, so saved answers snap back into place when the learner returns.
- Adaptive mastery. Question pool and flashcards prioritize what needs work, then the unseen, and finally the already-mastered. Every hit or miss updates that history.
- Sections with a quiz only complete after submission. A section that carries a graded activity is not marked complete until the learner submits.