ludic/packages/ludic.ui
Orkuncakilkaya 7d8f34de17 feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size
- flex-shrink: a line whose children want more room than it has takes it back from those that
  shrink, in proportion to shrink times size and never below a min size, a fixed size or the
  content. A scroll box shrinks (and scrolls), and a box in a column shrinks as far as the scroll
  boxes inside it let it, so a list in a column takes the room its siblings leave with no height.
  `flex: grow shrink`, and `flex-shrink` by name.
- A row wider than its room measures its texts (and boxes without a width) again in the room the
  rest leave them, so a line wraps beside an icon.
- calc() with + - * / and brackets over px, %, em, rem, vw, vh, plain numbers and var(); a width
  or height keeps its percentage, taken of the room it is given. Lengths lists (padding, margin)
  keep a calc()'s spaces.
- `order` places a box's children without touching the tree.
- width: 0 and height: 0 are 0: an unset size is UI_AUTO now, not 0.
- A component root that is itself a component takes each user's class, style and id in turn (the
  outermost's id wins), and the rules of all their sheets are weighed by specificity together; a
  user's rule wins a tie. The parent's sheet used to override the child's whatever its specificity,
  and a middle component's sheet was lost.
- The default sheet lays .ui-track out as a row, so a range's fill is as tall as its track and a
  checked box's knob goes right; a range's thumb is centred on the fill's end.
- ui_boxes.ludic.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 19:54:14 +03:00
..
act.ludic feat(lang): a component's event may be called set, a string prop reads a number, one name per component 2026-09-24 19:53:53 +03:00
anim.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
attr.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
attr_border.ludic feat(ui): per-side borders (border-top/right/bottom/left) 2026-09-24 17:43:42 +03:00
attr_box.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
attr_edge.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
attr_more.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
attr_place.ludic feat(ui): ludic.ui grows toward HTML, CSS and React (Phase 0.U1-U4) 2026-09-24 16:17:25 +03:00
backend.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
build.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
build_class.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
build_more.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
calc.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
calc_terms.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
cascade.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
cascade_merge.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
class.ludic feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss 2026-09-24 16:50:12 +03:00
color.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
consts.ludic feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss 2026-09-24 16:50:12 +03:00
controls.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
controls_build.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
dev.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
draw.ludic feat(ui): per-side borders (border-top/right/bottom/left) 2026-09-24 17:43:42 +03:00
draw_order.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
dump.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
elem.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
env.ludic feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss 2026-09-24 16:50:12 +03:00
eval.ludic feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss 2026-09-24 16:50:12 +03:00
expr.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
expr_parse.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
expr_prim.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
focus.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
frame.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
index.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
input.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
instance.ludic feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss 2026-09-24 16:50:12 +03:00
layout.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
layout_box.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
layout_run.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
layout_shrink.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
layout_text.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
layout_wrap.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
lib.ludic feat(ui): ludic.ui grows toward HTML, CSS and React (Phase 0.U1-U4) 2026-09-24 16:17:25 +03:00
lib_util.ludic feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss 2026-09-24 16:50:12 +03:00
life.ludic feat(ui): ludic.ui grows toward HTML, CSS and React (Phase 0.U1-U4) 2026-09-24 16:17:25 +03:00
link.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
media.ludic feat(ui): ludic.ui grows toward HTML, CSS and React (Phase 0.U1-U4) 2026-09-24 16:17:25 +03:00
native.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
node.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
node_more.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
package.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
pointer.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
popover.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
reload.ludic feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss 2026-09-24 16:50:12 +03:00
render3d.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
render3d_image.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
screen.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
screen_class.ludic feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss 2026-09-24 16:50:12 +03:00
scroll.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
select.ludic feat(ui): ludic.ui grows toward HTML, CSS and React (Phase 0.U1-U4) 2026-09-24 16:17:25 +03:00
select_match.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
select_parts.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
state.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
style.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
style_rule.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
tooltip.ludic feat(ui): popovers, tooltips, progress; the render3d backend installs itself; duplicate names caught first 2026-09-24 17:41:02 +03:00
tpl.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
tpl_lines.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
transition.ludic feat(ui): ludic.ui is a UI framework - input, controls, render3d backend, the CSS a game needs 2026-09-24 17:26:09 +03:00
ua.ludic feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size 2026-09-24 19:54:14 +03:00
units.ludic feat(ui): ludic.ui grows toward HTML, CSS and React (Phase 0.U1-U4) 2026-09-24 16:17:25 +03:00
values.ludic feat(lang): a component's event may be called set, a string prop reads a number, one name per component 2026-09-24 19:53:53 +03:00
view.ludic feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss 2026-09-24 16:50:12 +03:00