test(ui): a component with no stylesheet reads the theme's :root variables

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-24 22:07:05 +03:00
parent 077b38e684
commit ae61e99e06
10 changed files with 36 additions and 1 deletions

View file

@ -0,0 +1,15 @@
# ui_theme.ludic — a component with no stylesheet of its own still reads the theme's :root variables,
# inherited from the screen that uses it, in its style="..." declarations.
import "ludic.ui"
import "ui_theme_parts/Bare.ludic"
import "ui_theme_parts/Shell.ludic"
program UiTheme {
numbers float
entry {
ui_backend(new UiBackend)
let root: UiNode = ui_nodes("Shell", null)
ui_place(root, 0.0, 0.0, 400.0, 400.0)
let bare = root.children[0].children[0]
print(`accent {ui_hex(bare.children[0].fg)} gap {int(bare.gap)}`)
}
}

View file

@ -0,0 +1,3 @@
# Bare.ludic - a component with no stylesheet: it reads the theme's variables from where it is used
component Bare {
}

View file

@ -0,0 +1,4 @@
<div style="gap: var(--gap)">
<p style="color: var(--accent)">hot</p>
<p>plain</p>
</div>

View file

@ -0,0 +1,2 @@
@import "theme.lss";
.shell { width: 300px }

View file

@ -0,0 +1,3 @@
# Shell.ludic - a screen whose sheet imports the theme, around a component with no sheet of its own
component Shell {
}

View file

@ -0,0 +1,3 @@
<div class="shell">
<Bare/>
</div>

View file

@ -0,0 +1 @@
:root { --accent: #ff0000; --gap: 7px }