overengineeringstudio / overengineeringstudio/effect-utils
notion-react: add coverage for nested children on list-ish blocks
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 82
- Forks
- 2
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 121
Description
Part of v0.1 block-coverage epic (see context/notion-block-coverage/).
Problem
The host reconciler (packages/@overeng/notion-react/src/renderer/host-config.ts) hard-codes children -> rich_text for every block in TEXT_LEAF (paragraph, headings, quote, callout, code, bulleted_list_item, numbered_list_item, to_do, table_row, plus toggle via title). Authors cannot nest blocks under list items, to_dos, callouts, quotes, or toggles — making idiomatic Notion trees unreachable from JSX.
Deliverables
- Host (components/blocks.tsx + renderer/host-config.ts): split rich_text children from block children so list-ish containers accept both. Add nested-children reconciliation for: bulleted_list_item, numbered_list_item, to_do, toggle, quote, callout.
- Web mirror (web/blocks.tsx): render nested children in the DOM.
- CSS (web/styles.css): ensure nested indent is styled.
- E2E (test/integration/blocks.integration.test.tsx): at least one nested case per container.
Acceptance
- Nested list trees round-trip Notion -> JSX -> Notion without data loss.
- Existing rich-text-only tests still pass.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with packages/@overeng/notion-react/src/renderer/host-config.ts and components/blocks.tsx to trace how rich_text and block children are reconciled. Compare web/blocks.tsx and web/styles.css, then use test/integration/blocks.integration.test.tsx for cases covering each listed container. Done means nested children round-trip without data loss and existing rich-text-only tests pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- css, react, typescript
- Domain
- frontend, web-dev
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 52/100