Every interface must earn its place by creating clear user value.
Prefilled as the decision system for every future page.
| State | Theme path | Rule |
|---|---|---|
Default | theme.palette.text.primary | Clear, enabled, and ready. |
Hover | theme.palette.action.hover | Pointer feedback only. |
Selected | theme.palette.action.selected | Persistent chosen state. |
Loading | theme.palette.action.disabledBackground | Show honest work underway. |
Disabled | theme.palette.action.disabled | Unavailable until the cause is resolved. |
One primary action per screen.
Remove local measurements.
Use the shared primitive before inventing.
Start with the user outcome and keep only UI that helps the user understand, decide, act, recover, or trust the product.
A named user outcome.
A decision rule that removes subjective taste.
A standard component or theme reference whenever the rule reaches UI.
A deletion test: if the element does not create value, simplify or remove it.
The system improves once and every product inherits the fix.
A component earns a place only when it helps the user decide, act, recover, or understand.
Local UI creates drift; library contracts create standardization.
A local primitive splits behavior and future migrations.
Values live in @socra/theme and are consumed by name.
If the hierarchy is weak, fix the hierarchy.
<Stack spacing={2}>
<LazyLiveExample kind="Value" />
</Stack>