Skip to content

feat: add ## {.row} flex layout primitive with alignment support#91

Open
teezeit wants to merge 1 commit intoakonan:mainfrom
teezeit:upstream/feat-rows
Open

feat: add ## {.row} flex layout primitive with alignment support#91
teezeit wants to merge 1 commit intoakonan:mainfrom
teezeit:upstream/feat-rows

Conversation

@teezeit
Copy link
Copy Markdown
Contributor

@teezeit teezeit commented Apr 21, 2026

Summary

  • Adds {.row} heading syntax — ## Toolbar {.row} creates a horizontal flex row
  • Content directly under ## {.row} is auto-wrapped as implicit flex items (no ### needed)
  • ### children with {.left} / {.center} / {.right} enable per-item alignment via margin-push pattern
  • Row-level alignment via {.right} / {.center} on the ## heading maps to justify-content
  • Shared structural CSS injected into all themes (sketch, clean, wireframe, material, tailwind, brutal, none)
  • Implemented in HTML, React, and Tailwind renderers

Example

## Toolbar {.row}

### {.left}
[All]* [Active] [Archived]

### {.right}
[+ New Item]*

Renders as a flex row with the filter buttons left-aligned and the action button pushed to the right.

Test plan

  • 478 tests pass (npm test)
  • ## {.row} parses to row AST node
  • Direct children are auto-wrapped as grid-item nodes
  • ### {.right} / ### {.left} / ### {.center} attach alignment classes to items
  • Row-level {.right} / {.center} render correct justify-content in all renderers
  • row class not duplicated in props.classes

🤖 Generated with Claude Code

Adds `{.row}` as a new layout heading syntax alongside `{.grid-N}`.
Content directly under `## {.row}` is auto-wrapped as implicit flex items;
`###` children enable per-item `{.left}`/`{.center}`/`{.right}` alignment
using the margin-push pattern. Row-level `{.right}` and `{.center}` on the
`##` heading map to `justify-content`.

Implemented across all renderers (HTML, React, Tailwind) with shared
structural CSS injected into all themes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant