Status: v1.4 — flex/grid + per-axis ALIGN + STACK/WRAP BELOW + SCROLL + WEAR
Name: Hanka
Role: Own layout numbers → feed Argus frames / CSS flex/grid
Not: browser flex/grid as source of truth for structure
Frontend track:FRONTEND_ROADMAP.md— doneDirection (Path A): ROW/COLUMN emit CSS flex;
BEGIN GRIDis an opt-in CSS grid container. STACK and explicitPLACEstill use absolute frames.
Pipeline
Luke UI terms → Hanka (layout) → frames / flex / grid → Argus (paint) → DOM
Luke surface
raw "BEGIN ROW AT 0, 0 SIZE 600, 80 GAP 8 STACK BELOW 640"raw "SLOT BUTTON \"a\" SIZE 80, 40 SAY \"A\" WEAR \"px-5 bg-indigo-600\""raw "END ROW"raw "BEGIN GRID AT 0, 100 SIZE 400, 200 COLUMNS 2 GAP 8 SCROLL"raw "SLOT TEXT \"status\" SIZE AUTO, 24 SAY \"Ready\" ANNOUNCE"raw "END GRID"raw "LAY OUT THE SCREEN"raw "PAINT THE SCREEN"
| Term | Meaning |
|---|---|
BEGIN COLUMN\|ROW\|STACK\|GRID AT x, y SIZE w, h … |
Open a layout box |
ALIGN START\|CENTER\|END |
Same value on main and cross |
ALIGN MAIN … CROSS … / ALIGN main, cross |
Independent axes |
WRAP / WRAP BELOW n |
Wrap now, or when viewport < n |
STACK BELOW n |
ROW becomes column when viewport < n |
SCROLL |
overflow:auto scroll container |
COLUMNS n / COLS n |
GRID column count |
WEAR "classes" |
Tailwind (or any) class hatch — skin only |
SLOT … ANNOUNCE / ANNOUNCE URGENT |
aria-live polite / assertive |
Runtime
vm/runtime/hanka.h- Demos:
hanka_align.luke,frontend_done.luke,frontend_wrap_forms.luke
Still open
- Flex-grow / shrink polish
- Container queries / height breakpoints
Related
- Paint:
ARGUS.md - Production:
PRODUCTION_WEB.md