@origingame/engine 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/bin/og.mjs +1 -1
  2. package/dist/web/origin-engine.d.ts +219 -5
  3. package/dist/web/origin-engine.js +1344 -125
  4. package/dist/web/origin-engine_bg.wasm +0 -0
  5. package/dist/web/origin-engine_bg.wasm.d.ts +68 -3
  6. package/dist/web-publish/origin-engine-lanes.js +1007 -22
  7. package/dist/web-publish/origin-engine-lanes_bg.wasm +0 -0
  8. package/dist/web-publish/origin-engine.d.ts +162 -5
  9. package/dist/web-publish/origin-engine.js +1004 -19
  10. package/dist/web-publish/origin-engine_bg.wasm +0 -0
  11. package/dist/web-publish/origin-engine_bg.wasm.d.ts +52 -3
  12. package/dist/web-publish-2d/origin-engine-lanes.js +1007 -22
  13. package/dist/web-publish-2d/origin-engine-lanes_bg.wasm +0 -0
  14. package/dist/web-publish-2d/origin-engine.d.ts +162 -5
  15. package/dist/web-publish-2d/origin-engine.js +1004 -19
  16. package/dist/web-publish-2d/origin-engine_bg.wasm +0 -0
  17. package/dist/web-publish-2d/origin-engine_bg.wasm.d.ts +52 -3
  18. package/knowledge/looks/catalogue.json +40 -40
  19. package/knowledge/package.json +1 -1
  20. package/knowledge/scaffold/distribution.json +14 -0
  21. package/knowledge/scaffold/origin-engine.json +2 -2
  22. package/knowledge/scaffold/template/README.md +2 -1
  23. package/knowledge/scaffold/template/assets/audio/sting.ogt +10 -0
  24. package/knowledge/scaffold/template/assets/timelines/intro.ogt +101 -0
  25. package/knowledge/scaffold/template/assets/timelines/narration.srt +11 -0
  26. package/knowledge/scaffold/template/host.d.ts +46 -0
  27. package/knowledge/scaffold/template/package.json +1 -1
  28. package/knowledge/scaffold/template/project.ogt +1 -1
  29. package/knowledge/scaffold/template/src/main.ts +1 -1
  30. package/knowledge/scaffold/template/tests/frames.ts +134 -0
  31. package/knowledge/scaffold/template/tests/intro.og.ts +65 -0
  32. package/knowledge/scaffold/template/tests/smoke.og.ts +30 -36
  33. package/knowledge/scaffold/template/tsconfig.json +1 -1
  34. package/knowledge/scripts/mount.ts +2 -1
  35. package/knowledge/scripts/validate.ts +19 -10
  36. package/knowledge/skills/og-build/SKILL.md +8 -5
  37. package/knowledge/skills/og-core/SKILL.md +11 -0
  38. package/knowledge/skills/og-game/SKILL.md +877 -8
  39. package/knowledge/skills/og-platform-sdk/SKILL.md +1 -0
  40. package/knowledge/skills/og-taste/SKILL.md +82 -73
  41. package/knowledge/skills/og-ui/SKILL.md +65 -50
  42. package/knowledge/wiki/ai.md +20 -20
  43. package/knowledge/wiki/anim.md +384 -41
  44. package/knowledge/wiki/atmosphere.md +36 -13
  45. package/knowledge/wiki/audio.md +18 -18
  46. package/knowledge/wiki/camera.md +19 -13
  47. package/knowledge/wiki/commands.md +19 -13
  48. package/knowledge/wiki/debug.md +414 -0
  49. package/knowledge/wiki/game.md +8 -8
  50. package/knowledge/wiki/i18n.md +7 -7
  51. package/knowledge/wiki/index.md +262 -7
  52. package/knowledge/wiki/input.md +47 -47
  53. package/knowledge/wiki/load.md +236 -68
  54. package/knowledge/wiki/math.md +2607 -0
  55. package/knowledge/wiki/nav.md +34 -34
  56. package/knowledge/wiki/net.md +340 -0
  57. package/knowledge/wiki/path.md +402 -0
  58. package/knowledge/wiki/physics.md +95 -95
  59. package/knowledge/wiki/platform.md +463 -29
  60. package/knowledge/wiki/probe.md +681 -67
  61. package/knowledge/wiki/reflect.md +15 -15
  62. package/knowledge/wiki/render.md +3893 -1896
  63. package/knowledge/wiki/rng.md +14 -14
  64. package/knowledge/wiki/stream.md +15 -15
  65. package/knowledge/wiki/system.md +8 -8
  66. package/knowledge/wiki/systems.md +2 -2
  67. package/knowledge/wiki/terrain.md +19 -19
  68. package/knowledge/wiki/tilemap.md +13 -13
  69. package/knowledge/wiki/time.md +4 -4
  70. package/knowledge/wiki/timeline.md +396 -0
  71. package/knowledge/wiki/transform.md +8 -8
  72. package/knowledge/wiki/tween.md +17 -17
  73. package/knowledge/wiki/ui.md +559 -629
  74. package/knowledge/wiki/video.md +157 -0
  75. package/knowledge/wiki/world.md +36 -36
  76. package/package.json +4 -3
  77. package/schema/api.schema.json +21707 -14725
  78. package/shell/page.ts +26 -2
  79. package/shell/platform.ts +46 -0
  80. package/shell/player.ts +7 -0
  81. package/src/depth.ts +71 -0
  82. package/src/e6.ts +32 -1
  83. package/src/env.d.ts +5 -1
  84. package/src/generated/abi.ts +189 -3
  85. package/src/index.ts +25 -4
  86. package/src/light.ts +18 -0
  87. package/src/math.ts +622 -0
  88. package/src/node/index.ts +17 -0
  89. package/src/node/playtest-run.ts +114 -18
  90. package/src/node/polish.ts +13 -3
  91. package/src/node/render.ts +291 -0
  92. package/src/node/run.ts +86 -5
  93. package/src/p2.ts +19 -1
  94. package/src/playtest.ts +57 -4
  95. package/src/runtime.ts +13 -3
  96. package/src/targets.ts +28 -0
  97. package/src/trace.ts +169 -0
  98. package/src/ui-kit/huds.ts +34 -34
  99. package/src/ui-kit/menus.ts +12 -12
  100. package/src/ui-kit/settings.ts +2 -2
  101. package/src/ui-kit/store.ts +18 -18
  102. package/src/ui-kit/story.ts +6 -4
  103. package/src/ui-kit/util.ts +8 -8
  104. package/src/web/shell.ts +58 -0
  105. package/src/web/worker.ts +103 -2
  106. package/types/bindings.json +9101 -6647
  107. package/types/index.d.ts +15503 -11564
@@ -2,7 +2,7 @@
2
2
 
3
3
  # The `ui` module
4
4
 
5
- The engine's UI: an immediate-mode toolkit. Systems describe the tree every tick with these calls; the engine lays it out Clay-style, themes it with the platform's design tokens, draws it over the frame and answers the probe (dump_ui, touch_move_to, move_to_text) from it.
5
+ The engine's UI: an immediate-mode toolkit. Systems describe the tree every tick with these calls; the engine lays it out Clay-style, styles it with the game's UI style (the placeholder prototype style until the game picks one), draws it over the frame and answers the probe (dump_ui, touch_move_to, move_to_text) from it.
6
6
 
7
7
  The engine opens the frame before the game's systems (from og.Input and the play surface) and closes it after them, so calls belong inside systems; outside one they do nothing and log a warning. Interaction is decided against the previous tick's rectangles, which are also what the probe resolves, so a scripted touch_move_to and a click agree; response edges (clicked, changed, submitted) last one tick.
8
8
 
@@ -18,7 +18,7 @@ module ui {
18
18
  # declarations follow, each quoted below
19
19
  ```
20
20
 
21
- <sub>`api.ogt` line 7804</sub>
21
+ <sub>`api.ogt` line 9552</sub>
22
22
 
23
23
  ## Contents
24
24
 
@@ -29,12 +29,12 @@ module ui {
29
29
  | [`Cross`](#type-Cross) | enum | Where children sit across the main axis. |
30
30
  | [`TextAlign`](#type-TextAlign) | enum | How the lines of a label align. |
31
31
  | [`FontRole`](#type-FontRole) | enum | Which configured font text uses; display and mono fall back to body, rounded to display, then body. |
32
- | [`ButtonVariant`](#type-ButtonVariant) | enum | Button looks, as the design language's buttons. |
32
+ | [`ButtonVariant`](#type-ButtonVariant) | enum | Button roles: how the style draws each. |
33
33
  | [`ControlSize`](#type-ControlSize) | enum | Control heights from the density (h-control-sm, -md, -lg). |
34
34
  | [`Scheme`](#type-Scheme) | enum | The palette: games run on a stage, so dark is the default. |
35
- | [`DensityMode`](#type-DensityMode) | enum | Control sizes: auto picks touch sizes on a coarse pointer or a play surface under 768 px, compact otherwise. |
36
- | [`ThemeColor`](#type-ThemeColor) | enum | A semantic colour of the design tokens (tokens.json `color`, in the current scheme). |
37
- | [`TypeStepName`](#type-TypeStepName) | enum | A step of the type ramp (tokens.json `font.scale`). |
35
+ | [`DensityMode`](#type-DensityMode) | enum | Control sizes by the input the player holds: auto picks touch sizes on a coarse pointer or a play surface under 768 px, mouse sizes otherwise. |
36
+ | [`ThemeColor`](#type-ThemeColor) | enum | A colour role of the UI style in effect (the game's style, or the prototype style before it picks one). |
37
+ | [`TypeStepName`](#type-TypeStepName) | enum | A step of the style's type ramp. |
38
38
  | [`SizeRange`](#type-SizeRange) | struct | The bounds of a fit or grow size. |
39
39
  | [`FixedSize`](#type-FixedSize) | struct | A fixed size. |
40
40
  | [`PercentSize`](#type-PercentSize) | struct | A size relative to the parent. |
@@ -44,7 +44,7 @@ module ui {
44
44
  | [`ElementDesc`](#type-ElementDesc) | desc struct | A container: its layout and its look. |
45
45
  | [`LabelDesc`](#type-LabelDesc) | desc struct | How a label draws its text. |
46
46
  | [`ButtonDesc`](#type-ButtonDesc) | desc struct | A button's look. |
47
- | [`PanelDesc`](#type-PanelDesc) | desc struct | A card: surface, the card radius, padded and spaced by the tokens. |
47
+ | [`PanelDesc`](#type-PanelDesc) | desc struct | A card: panel, the panel radius, padded and spaced by the style. |
48
48
  | [`ScrollAxes`](#type-ScrollAxes) | enum | Which ways a scroll container scrolls. |
49
49
  | [`ScrollDesc`](#type-ScrollDesc) | desc struct | A scroll container: the wheel (both axes, deltaX and deltaY) or a drag scrolls it, and a released drag keeps its momentum, slowing over motion.spring.momentum's response (none under reduced motion); it clips its content; a scrollbar on each scrolling axis shows the position, and a press on one grabs and drags it. Nested containers hand off: what the innermost under the pointer cannot take (it reached its end, or does not scroll that way) goes to the one around it. |
50
50
  | [`ImageDesc`](#type-ImageDesc) | desc struct | A texture region, or a solid rectangle without a texture. |
@@ -59,16 +59,16 @@ module ui {
59
59
  | [`ToggleResult`](#type-ToggleResult) | struct | A toggle's response and its state after this tick's input. |
60
60
  | [`FieldResult`](#type-FieldResult) | struct | A text field's response and its text after this tick's input. |
61
61
  | [`Viewport`](#type-Viewport) | struct | The play surface the UI lays out in. |
62
- | [`UiDesc`](#type-UiDesc) | desc struct | How the UI looks: the scheme, the density, its fonts, the contrast, the game's accent, motion, transparency, the icon atlas, the skin and the sounds. og.ui.configure takes it in part: a field left out keeps the value the last call (or a look's skin) gave it, null clears it. |
62
+ | [`UiDesc`](#type-UiDesc) | desc struct | How the UI looks: the scheme, the density, its fonts, the contrast, the game's primary colour, motion, transparency, the icon atlas, the style and the sounds. og.ui.configure takes it in part: a field left out keeps the value the last call (or a look's style) gave it, null clears it. |
63
63
  | [`UiSounds`](#type-UiSounds) | desc struct | Sounds the UI plays through og-audio (the ui bus) on its events; null is silent. |
64
- | [`SkinPart`](#type-SkinPart) | enum | An element class a skin dresses with a nine-slice frame. |
64
+ | [`StylePart`](#type-StylePart) | enum | An element class a style dresses with a nine-slice frame. |
65
65
  | [`TypeStep`](#type-TypeStep) | struct | One step of the type ramp. |
66
66
  | [`ControlSizes`](#type-ControlSizes) | struct | The control, row and header heights and the gutter of the density in effect. |
67
- | [`UiTheme`](#type-UiTheme) | struct | The design tokens the UI draws with, read-only. |
67
+ | [`UiTheme`](#type-UiTheme) | struct | The style values the UI draws with, read-only. |
68
68
  | [`UiBuild`](#type-UiBuild) | callback | Builds a container's children: ui calls made inside it nest under the container. |
69
- | [`og.ui.configure`](#fn-configure) | function | Set how the UI looks (the scheme, density, fonts, skin, sounds, motion…), typically in GameDesc.start; it takes effect from the next tick. The desc is a partial: a field left out keeps the last UiDesc's value, the one an earlier call or a look's skin (og.render.applyLook) gave it, so a settings screen that configures sounds or reducedMotion keeps the skin and the fonts; null clears a field to its default (`skin: null` goes back to the platform tokens). A UI left with no font at all (no font, no skin with fonts, no fallback or locale font) warns: it would draw no text. |
69
+ | [`og.ui.configure`](#fn-configure) | function | Set how the UI looks (the scheme, density, fonts, style, sounds, motion…), typically in GameDesc.start; it takes effect from the next tick. The desc is a partial: a field left out keeps the last UiDesc's value, the one an earlier call or a look's style (og.render.applyLook) gave it, so a settings screen that configures sounds or reducedMotion keeps the style and the fonts; null clears a field to its default (`style: null` goes back to the prototype style). A UI left with no font at all (no font, no style with fonts, no fallback or locale font) warns: it would draw no text. |
70
70
  | [`og.ui.viewport`](#fn-viewport) | function | This tick's play surface: the render target's size in CSS pixels, its DPR and safe area, as the host reports them. |
71
- | [`og.ui.theme`](#fn-theme) | function | The design tokens the UI draws with. |
71
+ | [`og.ui.theme`](#fn-theme) | function | The style values the UI draws with. |
72
72
  | [`og.ui.open`](#fn-open) | function | Open a container; the calls until its close() build its children. |
73
73
  | [`og.ui.openPanel`](#fn-openPanel) | function | Open a card, closed by close(): og.ui.panel without the callback. |
74
74
  | [`og.ui.openScroll`](#fn-openScroll) | function | Open a vertical scroll container, closed by close(): og.ui.scroll without the callback. |
@@ -79,12 +79,12 @@ module ui {
79
79
  | [`og.ui.scroll`](#fn-scroll) | function | A vertical scroll container built by `build`: openScroll(id, desc), build(), close(). |
80
80
  | [`RichTextDesc`](#type-RichTextDesc) | desc struct | How a rich text paragraph draws: its defaults, which its markup's spans override. |
81
81
  | [`RichTextResult`](#type-RichTextResult) | struct | What a rich text's links did this tick. |
82
- | [`og.ui.richText`](#fn-richText) | function | A paragraph of inline spans from markup, for a string-table message (og.i18n.t) so a translation carries its own emphasis: `[b]bold[/b]` (thickened in the distance field as far as it reaches, plus a second copy one device pixel right), `[color=danger]` or `[color=#ff8800]` (a ThemeColor follows the skin), `[size=xl]` (a TypeStepName), `[font=mono]`, `[icon=coin]` (a cell of the icon atlas, one em), `[link=shop]Open the shop[/link]` (accent ink, underlined, focusable by keys and pads; a child element `<id>/shop` of kind link for the probe) and per-glyph motion `[wave]`, `[shake]`, `[pulse]` (by the tick; still under reduced motion). `[[` is a literal bracket. Lines break between the spans' words (a word restyled mid-way stays whole), each as tall as its tallest span on one baseline. Markup it cannot read shows as text and logs a warning. |
82
+ | [`og.ui.richText`](#fn-richText) | function | A paragraph of inline spans from markup, for a string-table message (og.i18n.t) so a translation carries its own emphasis: `[b]bold[/b]` (thickened in the distance field as far as it reaches, plus a second copy one device pixel right), `[color=danger]` or `[color=#ff8800]` (a ThemeColor follows the style), `[size=xl]` (a TypeStepName), `[font=mono]`, `[icon=coin]` (a cell of the icon atlas, one em), `[link=shop]Open the shop[/link]` (accent ink, underlined, focusable by keys and pads; a child element `<id>/shop` of kind link for the probe) and per-glyph motion `[wave]`, `[shake]`, `[pulse]` (by the tick; still under reduced motion). `[[` is a literal bracket. Lines break between the spans' words (a word restyled mid-way stays whole), each as tall as its tallest span on one baseline. Markup it cannot read shows as text and logs a warning. |
83
83
  | [`og.ui.label`](#fn-label) | function | MSDF text that wraps at its width (word breaks; between CJK characters under kinsoku, katakana words kept whole; long words between characters) unless nowrap. The probe reads its text. |
84
- | [`og.ui.button`](#fn-button) | function | A capsule button with a label; `clicked` is a press and a release inside it. The probe reads its label. |
84
+ | [`og.ui.button`](#fn-button) | function | A button with a label; `clicked` is a press and a release inside it. The probe reads its label. |
85
85
  | [`og.ui.image`](#fn-image) | function | A texture region, or a solid rectangle; with ImageDesc.aspect, a fitting side follows the other. |
86
86
  | [`og.ui.zoomView`](#fn-zoomView) | function | A zoomable picture (a map, an artwork): two fingers pinch it to zoom about their centre and pan it as they move (og.Pointers), the wheel zooms about the pointer, a drag pans; Tab or a pad focuses it, and then + (= and the keypad's) and - zoom it about its centre, 0 fits it again and the arrows pan it a tenth of its size. It stays on its picture and within its zoom limits; its zoom and centre are UI state (snapshots carry them). Two fingers over a scroll container scroll it the same way, and fling it as they lift. The probe reads its zoom as its value. |
87
- | [`og.ui.progress`](#fn-progress) | function | A capsule track filled to a fraction. |
87
+ | [`og.ui.progress`](#fn-progress) | function | A track filled to a fraction. |
88
88
  | [`og.ui.slider`](#fn-slider) | function | A track with a fill and a thumb: a press anywhere on it sets the value and dragging follows. Pass back the value it answers next tick. |
89
89
  | [`og.ui.toggle`](#fn-toggle) | function | A switch with a label; a click flips it. Pass back the state it answers next tick. The probe reads its label. |
90
90
  | [`og.ui.textField`](#fn-textField) | function | One line of text: a press focuses it with the caret at the press, a drag selects (and scrolls the text past the field's ends), a double click selects a word and a triple click everything; typed text (og.input's TextInput events: the page's typing, the probe's type: and commit:; until a world has had one, a printable key pressed types its US-layout character, and after it keys only edit) replaces the selection at the caret; Backspace, Delete, arrows, Home and End edit, Shift with them selects, Alt or Ctrl with them moves or deletes by words (Ctrl with Home and End: the text's ends); Ctrl or Cmd with A selects all, with C copies and with X cuts (the page's clipboard, through the shell), with Z undoes and with Shift+Z or Y redoes (a history of 100 steps per field, typing undone a word at a time; a text the game sets starts it again); an input method's composition shows underlined at the caret until it commits; Enter submits and leaves, Escape leaves. The text scrolls to keep the caret in view and the caret blinks by the tick (steady under reduced motion). Pass back the text it answers next tick. The probe reads its text, or the placeholder while empty. |
@@ -93,16 +93,15 @@ module ui {
93
93
  | [`og.ui.idi`](#fn-idi) | function | The id of the index-th of several siblings of one name: `idi("Slot", 3)` is `Slot#3`. |
94
94
  | [`Anchor`](#type-Anchor) | enum | A point of the safe area an anchored group sits at. |
95
95
  | [`TransitionKind`](#type-TransitionKind) | enum | How a transition moves its content in and out. Under reduced motion every kind only fades. |
96
- | [`Tone`](#type-Tone) | enum | A status tone, as the design language's badges and toasts. |
96
+ | [`Tone`](#type-Tone) | enum | A status tone of badges, toasts and map markers. |
97
97
  | [`MeterKind`](#type-MeterKind) | enum | What a meter measures, which sets its colour. |
98
98
  | [`Breakpoint`](#type-Breakpoint) | enum | The play surface's size class. |
99
- | [`Contrast`](#type-Contrast) | enum | The theme variant: high contrast remaps muted inks, fills and borders to stronger tokens and outlines every control (no new colour). |
100
- | [`HueName`](#type-HueName) | enum | One of the twelve category hues of the tokens, for a game's accent. |
99
+ | [`Contrast`](#type-Contrast) | enum | The theme variant: high contrast remaps muted inks, fills and lines to the style's stronger ones and outlines every control (no new colour). |
101
100
  | [`NavIntent`](#type-NavIntent) | enum | A focus-navigation intent, as the arrow keys, Tab, Enter, Space, Escape and a gamepad's d-pad, stick, A and B give. |
102
101
  | [`UiRect`](#type-UiRect) | struct | A rectangle of the play surface. |
103
102
  | [`IconAtlasDesc`](#type-IconAtlasDesc) | desc struct | The icon atlas: a texture of equal cells in a grid, named in reading order, or an icon set cooked like a font (font). |
104
103
  | [`AnchorDesc`](#type-AnchorDesc) | desc struct | An anchored group: a layer at a point of the safe area, over the tree (HUD corners, a centred title, a bar of touch controls). |
105
- | [`TransitionDesc`](#type-TransitionDesc) | desc struct | How a transition moves, timed in ticks from the motion tokens. |
104
+ | [`TransitionDesc`](#type-TransitionDesc) | desc struct | How a transition moves, timed in ticks from the style's motion. |
106
105
  | [`Presence`](#type-Presence) | struct | Where a transition or dialog is this tick. |
107
106
  | [`ModalDesc`](#type-ModalDesc) | desc struct | A dialog: a scrim over everything and a centred panel. Focus moves in and stays while it is the topmost; Back and the backdrop dismiss it unless locked. |
108
107
  | [`ModalResult`](#type-ModalResult) | struct | A dialog's answer this tick. |
@@ -120,7 +119,7 @@ module ui {
120
119
  | [`CheckListResult`](#type-CheckListResult) | struct | A checkbox list's response and values after this tick's input. |
121
120
  | [`ToastDesc`](#type-ToastDesc) | desc struct | A toast's tone and time. |
122
121
  | [`ChipDesc`](#type-ChipDesc) | desc struct | A chip's state. |
123
- | [`MeterDesc`](#type-MeterDesc) | desc struct | A meter: a capsule track with a fill that animates its changes by the tick. |
122
+ | [`MeterDesc`](#type-MeterDesc) | desc struct | A meter: a track with a fill that animates its changes by the tick. |
124
123
  | [`CooldownDesc`](#type-CooldownDesc) | desc struct | A cooldown ring's size and centre. |
125
124
  | [`IconDesc`](#type-IconDesc) | desc struct | An icon's size, ink and name. |
126
125
  | [`MapMarker`](#type-MapMarker) | desc struct | A marker on a mini-map. |
@@ -131,27 +130,27 @@ module ui {
131
130
  | [`JoystickResult`](#type-JoystickResult) | struct | A joystick's vector this tick. |
132
131
  | [`DpadDesc`](#type-DpadDesc) | desc struct | A d-pad. |
133
132
  | [`DpadResult`](#type-DpadResult) | struct | Which arms of a d-pad are held this tick. |
134
- | [`ActionButtonDesc`](#type-ActionButtonDesc) | desc struct | A round touch action button (jump, fire). |
133
+ | [`ActionButtonDesc`](#type-ActionButtonDesc) | desc struct | A square touch action button (jump, fire), cornered by the style's control radius. |
135
134
  | [`SkeletonDesc`](#type-SkeletonDesc) | desc struct | A skeleton: the neutral fill standing in for content that is loading. |
136
135
  | [`UiItemBuild`](#type-UiItemBuild) | callback | Builds one row or cell of a virtualised list or grid: ui calls made inside nest under it. |
137
136
  | [`og.ui.breakpoint`](#fn-breakpoint) | function | The size class of the play surface of the frame being built (desktop outside a frame). |
138
137
  | [`og.ui.frameViewport`](#fn-frameViewport) | function | The play surface of the frame being built: og.ui.viewport without the world, for code that only builds UI. |
139
138
  | [`og.ui.hasIcon`](#fn-hasIcon) | function | Whether the icon atlas has an icon of this name (templates draw a fallback otherwise). |
140
139
  | [`og.ui.seconds`](#fn-seconds) | function | The UI's clock in seconds: frames built over the tick rate (simulation time, never the wall clock). |
141
- | [`og.ui.frameTheme`](#fn-frameTheme) | function | The design tokens of the frame being built: og.ui.theme without the world, for code that only builds UI (the templates). |
140
+ | [`og.ui.frameTheme`](#fn-frameTheme) | function | The style values of the frame being built: og.ui.theme without the world, for code that only builds UI (the templates). |
142
141
  | [`og.ui.openAnchor`](#fn-openAnchor) | function | Open an anchored group, closed by close(): og.ui.anchor without the callback. |
143
142
  | [`og.ui.anchor`](#fn-anchor) | function | An anchored group built by `build`: a layer at a point of the safe area, over the tree, for HUD corners and touch controls. |
144
143
  | [`og.ui.openTransition`](#fn-openTransition) | function | Open a transition container (a column), closed by close(); build its children only while the answer is visible: it stays visible while it leaves. Its content takes no input while it moves. |
145
- | [`og.ui.transition`](#fn-transition) | function | Content that enters and leaves: fade, slide or scale by the tick from the motion tokens. `build` runs while it is visible. |
144
+ | [`og.ui.transition`](#fn-transition) | function | Content that enters and leaves: fade, slide or scale by the tick from the style's motion. `build` runs while it is visible. |
146
145
  | [`og.ui.openModal`](#fn-openModal) | function | Open a dialog, closed by closeModal(); build its content only while the answer is visible. The probe sees the backdrop as `<id>` and the panel as `<id>/Panel`. |
147
146
  | [`og.ui.closeModal`](#fn-closeModal) | function | Close a dialog opened with openModal (its panel and backdrop). |
148
147
  | [`og.ui.modal`](#fn-modal) | function | A dialog built by `build` while visible: scrim, centred panel, focus kept inside, Back and the backdrop dismiss it unless locked. Set your open flag false on `dismissed`. |
149
- | [`og.ui.spotlight`](#fn-spotlight) | function | A spotlight over everything (a tutorial step): the scrim on four sides of the hole, an amber edge around it. Presses on the dimmed parts stop there (clicked); presses in the hole reach what is under it. Shades are `<id>/Top`, `Left`, `Right`, `Bottom`; the hole is `<id>/Hole`. |
148
+ | [`og.ui.spotlight`](#fn-spotlight) | function | A spotlight over everything (a tutorial step): the scrim on four sides of the hole, a primary edge around it. Presses on the dimmed parts stop there (clicked); presses in the hole reach what is under it. Shades are `<id>/Top`, `Left`, `Right`, `Bottom`; the hole is `<id>/Hole`. |
150
149
  | [`og.ui.bounds`](#fn-bounds) | function | Where an element was in the last frame, by id or `Parent/Child` path (topmost first), as touch_move_to resolves it. |
151
150
  | [`og.ui.openList`](#fn-openList) | function | Open a virtualised list (a scroll column) and learn which rows to build: listItem(i) and close() for each, then closeList(). |
152
151
  | [`og.ui.openGrid`](#fn-openGrid) | function | Open a virtualised grid and learn which cells to build: gridItem(i) and close() for each, then closeList(). |
153
152
  | [`og.ui.listItem`](#fn-listItem) | function | Open row `index` of the open list (`Row#index`): selectable and focusable; its content follows until close(). A press that started on one row and is released on this one answers `dropped`. |
154
- | [`og.ui.gridItem`](#fn-gridItem) | function | Open cell `index` of the open grid (`Cell#index`): a slot on fill, focusable; its content follows until close(). Drops answer `dropped` as listItem's. |
153
+ | [`og.ui.gridItem`](#fn-gridItem) | function | Open cell `index` of the open grid (`Cell#index`): a slot on control, focusable; its content follows until close(). Drops answer `dropped` as listItem's. |
155
154
  | [`og.ui.closeList`](#fn-closeList) | function | Close a list or grid opened with openList or openGrid. |
156
155
  | [`og.ui.dragging`](#fn-dragging) | function | The row or cell a held press started on in the list or grid of this id (built under the same parent): a drag in progress, to draw what is dragged under the pointer. |
157
156
  | [`og.ui.list`](#fn-list) | function | A virtualised list built by `build(index)` for the rows in view. |
@@ -159,24 +158,24 @@ module ui {
159
158
  | [`og.ui.tabs`](#fn-tabs) | function | A segmented control: a neutral track, the chosen tab on the thumb. Tabs are `Tab#i` and the probe reads their labels. |
160
159
  | [`og.ui.select`](#fn-select) | function | A select: a field-like trigger with the chosen label and a chevron; a press or Activate opens its menu `<id>.menu` (options `Option#i`) under it, a focus scope; choosing closes it with changed. Back or a press outside closes it. |
161
160
  | [`og.ui.stepper`](#fn-stepper) | function | A number stepper: `Dec`, `Value`, `Inc`. The buttons step within the range; Left and Right step it while a button is focused; a screen reader's increment and decrement on the stepper itself (its spinbutton, which the web shell mirrors as an adjustable range) step it too. |
162
- | [`og.ui.radio`](#fn-radio) | function | A radio group of `Option#i` rows: a ring, filled amber when chosen, and a label. |
161
+ | [`og.ui.radio`](#fn-radio) | function | A radio group of `Option#i` rows: a ring, filled primary when chosen, and a label. |
163
162
  | [`og.ui.checkbox`](#fn-checkbox) | function | A checkbox with a label; a press flips it. |
164
163
  | [`og.ui.checkboxList`](#fn-checkboxList) | function | Checkboxes in a column (`Option#i`). |
165
- | [`og.ui.chip`](#fn-chip) | function | A chip: a capsule on fill; selected inverts to fg. For filters and tags. |
166
- | [`og.ui.badge`](#fn-badge) | function | A badge: a small status capsule in its tone. |
164
+ | [`og.ui.chip`](#fn-chip) | function | A chip: a control-filled tag; selected inverts to ink. For filters and tags. |
165
+ | [`og.ui.badge`](#fn-badge) | function | A badge: a small status tag in its tone. |
167
166
  | [`og.ui.divider`](#fn-divider) | function | A hairline in the border colour across its parent. |
168
167
  | [`og.ui.spacer`](#fn-spacer) | function | Empty space. |
169
- | [`og.ui.keyValue`](#fn-keyValue) | function | A key (fg-muted) and its value (fg, at the end) on one row: stats, settings summaries, receipts. |
168
+ | [`og.ui.keyValue`](#fn-keyValue) | function | A key (inkMuted) and its value (ink, at the end) on one row: stats, settings summaries, receipts. |
170
169
  | [`og.ui.skeleton`](#fn-skeleton) | function | A skeleton: the neutral fill standing in for content that is loading, with a sheen that passes every 1.6 s (still under reduced motion). |
171
170
  | [`og.ui.spinner`](#fn-spinner) | function | A loading spinner: eight dots around a circle, the bright one turning by the tick. |
172
171
  | [`og.ui.icon`](#fn-icon) | function | An icon of the atlas (UiDesc.icons) by name: a texture cell, or an icon set's distance-field glyph fitted to its square; an unknown name draws an empty slot and warns. Rich text takes the same icons inline with `[icon=name]`. The probe reads the name. |
173
172
  | [`og.ui.meter`](#fn-meter) | function | A health, mana or xp bar. A drop shows at once and leaves a pale trail that follows after a beat; a rise grows into place with a ghost of the target; both by the tick. |
174
- | [`og.ui.cooldown`](#fn-cooldown) | function | A cooldown: a disc whose amber ring fills clockwise from the top as it runs out, bright and full when ready, a label or icon in the middle. A press reports clicked (ready or not). |
175
- | [`og.ui.minimap`](#fn-minimap) | function | A mini-map frame: the map in a border-strong frame, markers as dots (the player amber and ringed), an N mark and a zone label. |
176
- | [`og.ui.dialogue`](#fn-dialogue) | function | A dialogue box: a portrait slot, the speaker in amber ink and the line typed out by the tick. A press or Activate while typing shows the whole line; once shown it answers advanced. The line is `<id>/Body/Line` and the probe reads what is shown. |
173
+ | [`og.ui.cooldown`](#fn-cooldown) | function | A cooldown: a disc whose primary ring fills clockwise from the top as it runs out, bright and full when ready, a label or icon in the middle. A press reports clicked (ready or not). |
174
+ | [`og.ui.minimap`](#fn-minimap) | function | A mini-map frame: the map in a lineStrong frame, markers as dots (the player primary and ringed), an N mark and a zone label. |
175
+ | [`og.ui.dialogue`](#fn-dialogue) | function | A dialogue box: a portrait slot, the speaker in primary ink and the line typed out by the tick. A press or Activate while typing shows the whole line; once shown it answers advanced. The line is `<id>/Body/Line` and the probe reads what is shown. |
177
176
  | [`og.ui.joystick`](#fn-joystick) | function | A virtual joystick: a base and a knob that follows a press that started on it. It keeps the finger that grabbed it (any of og.Pointers), so another finger can hold an action button at the same time. |
178
177
  | [`og.ui.dpad`](#fn-dpad) | function | A d-pad of four arms (`Up`, `Down`, `Left`, `Right`), each at least 44 CSS px. |
179
- | [`og.ui.actionButton`](#fn-actionButton) | function | A round touch action button: pressed while held (jump, fire), clicked on a tap; at least 44 CSS px. |
178
+ | [`og.ui.actionButton`](#fn-actionButton) | function | A square touch action button, cornered by the style's control radius: pressed while held (jump, fire), clicked on a tap; at least 44 CSS px. |
180
179
  | [`og.ui.toast`](#fn-toast) | function | Queue a toast: it stacks at UiDesc.toastAnchor, enters, stays its time and leaves; at most three are up (older ones leave first); a press dismisses it. Callable anywhere (systems, commands, start); it is world state, so snapshots carry it. |
181
180
  | [`og.ui.dismissToast`](#fn-dismissToast) | function | Start a toast's exit. |
182
181
  | [`og.ui.navigate`](#fn-navigate) | function | Queue a navigation intent for the next tick: a gamepad og.Input does not read yet, a custom binding, a command. A move queued while the focus is on nothing puts the focus on the first control, whatever its direction, and no further: moves asked again before the focus lands (each tick until og.ui.focus answers a path) land on that same first control. |
@@ -191,11 +190,11 @@ module ui {
191
190
  | [`og.ui.remember`](#fn-remember) | function | Set a number memory (see memory). |
192
191
  | [`og.ui.tick`](#fn-tick) | function | Frames the UI has built: its clock, for animations by the tick. |
193
192
  | [`CounterDesc`](#type-CounterDesc) | desc struct | A number that counts to its value. |
194
- | [`og.ui.counter`](#fn-counter) | function | A number label that counts (ease-out cubic, by the tick) from where it was to the value each time the value changes, grouped with commas; a skin with motion.pop bumps it when it lands. Scores, currency, rewards. |
193
+ | [`og.ui.counter`](#fn-counter) | function | A number label that counts (ease-out cubic, by the tick) from where it was to the value each time the value changes, grouped with commas; a style with motion.pop bumps it when it lands. Scores, currency, rewards. |
195
194
  | [`BurstDesc`](#type-BurstDesc) | desc struct | Rays and sparks thrown from an element. |
196
195
  | [`og.ui.burst`](#fn-burst) | function | Throw rays and sparks from the element built just before (a star landing, a reward), once, from when it first appears. Off under reduced motion. |
197
196
  | [`ShakeDesc`](#type-ShakeDesc) | desc struct | A shake of an element: three sideways swings decaying to rest. |
198
- | [`og.ui.shake`](#fn-shake) | function | Shake the element built just before, from this tick (a wrong answer, a locked door, a refused purchase): call it once, on the tick it happens; the element swings and comes to rest by itself, and snapshots carry it. Still under reduced motion. A refused press on a disabled button already shakes when the skin's motion.shake is set. |
197
+ | [`og.ui.shake`](#fn-shake) | function | Shake the element built just before, from this tick (a wrong answer, a locked door, a refused purchase): call it once, on the tick it happens; the element swings and comes to rest by itself, and snapshots carry it. Still under reduced motion. A refused press on a disabled button already shakes when the style's motion.shake is set. |
199
198
  | [`ScreenWipe`](#type-ScreenWipe) | enum | How a screen transition covers the old screen and reveals the new one. |
200
199
  | [`WipeSide`](#type-WipeSide) | enum | Where a wipe or a slide comes from. |
201
200
  | [`ScreenTransitionDesc`](#type-ScreenTransitionDesc) | desc struct | How a screen transition looks. |
@@ -275,7 +274,7 @@ module ui {
275
274
 
276
275
  ### `og.ui.configure`
277
276
 
278
- Set how the UI looks (the scheme, density, fonts, skin, sounds, motion…), typically in GameDesc.start; it takes effect from the next tick. The desc is a partial: a field left out keeps the last UiDesc's value, the one an earlier call or a look's skin (og.render.applyLook) gave it, so a settings screen that configures sounds or reducedMotion keeps the skin and the fonts; null clears a field to its default (`skin: null` goes back to the platform tokens). A UI left with no font at all (no font, no skin with fonts, no fallback or locale font) warns: it would draw no text.
277
+ Set how the UI looks (the scheme, density, fonts, style, sounds, motion…), typically in GameDesc.start; it takes effect from the next tick. The desc is a partial: a field left out keeps the last UiDesc's value, the one an earlier call or a look's style (og.render.applyLook) gave it, so a settings screen that configures sounds or reducedMotion keeps the style and the fonts; null clears a field to its default (`style: null` goes back to the prototype style). A UI left with no font at all (no font, no style with fonts, no fallback or locale font) warns: it would draw no text.
279
278
 
280
279
  ```ts
281
280
  og.ui.configure(world: World, desc?: UiDesc): Result<void>
@@ -286,20 +285,20 @@ og.ui.configure(world: World, desc?: UiDesc): Result<void>
286
285
  | `world` | `World` | no | The world whose UI is configured. |
287
286
  | `desc` | `UiDesc` | yes | The fields to change; the others keep their values. |
288
287
 
289
- **Returns** `Result<void>`: Refused for a dead font or skin, or a desc that is not an object.
288
+ **Returns** `Result<void>`: Refused for a dead font or style, or a desc that is not an object.
290
289
 
291
290
  Binding symbol `og_ui_configure` · publish builds: kept
292
291
 
293
292
  ```ogt
294
293
  fn configure {
295
- doc "Set how the UI looks (the scheme, density, fonts, skin, sounds, motion…), typically in GameDesc.start; it takes effect from the next tick. The desc is a partial: a field left out keeps the last UiDesc's value, the one an earlier call or a look's skin (og.render.applyLook) gave it, so a settings screen that configures sounds or reducedMotion keeps the skin and the fonts; null clears a field to its default (`skin: null` goes back to the platform tokens). A UI left with no font at all (no font, no skin with fonts, no fallback or locale font) warns: it would draw no text."
294
+ doc "Set how the UI looks (the scheme, density, fonts, style, sounds, motion…), typically in GameDesc.start; it takes effect from the next tick. The desc is a partial: a field left out keeps the last UiDesc's value, the one an earlier call or a look's style (og.render.applyLook) gave it, so a settings screen that configures sounds or reducedMotion keeps the style and the fonts; null clears a field to its default (`style: null` goes back to the prototype style). A UI left with no font at all (no font, no style with fonts, no fallback or locale font) warns: it would draw no text."
296
295
  param world World "The world whose UI is configured."
297
296
  param desc UiDesc "The fields to change; the others keep their values."
298
- returns Result.Void "Refused for a dead font or skin, or a desc that is not an object."
297
+ returns Result.Void "Refused for a dead font or style, or a desc that is not an object."
299
298
  }
300
299
  ```
301
300
 
302
- <sub>`api.ogt` line 8333</sub>
301
+ <sub>`api.ogt` line 10068</sub>
303
302
 
304
303
  <a id="fn-viewport"></a>
305
304
 
@@ -327,13 +326,13 @@ fn viewport {
327
326
  }
328
327
  ```
329
328
 
330
- <sub>`api.ogt` line 8340</sub>
329
+ <sub>`api.ogt` line 10075</sub>
331
330
 
332
331
  <a id="fn-theme"></a>
333
332
 
334
333
  ### `og.ui.theme`
335
334
 
336
- The design tokens the UI draws with.
335
+ The style values the UI draws with.
337
336
 
338
337
  ```ts
339
338
  og.ui.theme(world: World): UiTheme
@@ -349,13 +348,13 @@ Binding symbol `og_ui_theme` · publish builds: kept
349
348
 
350
349
  ```ogt
351
350
  fn theme {
352
- doc "The design tokens the UI draws with."
351
+ doc "The style values the UI draws with."
353
352
  param world World "The world."
354
353
  returns UiTheme
355
354
  }
356
355
  ```
357
356
 
358
- <sub>`api.ogt` line 8346</sub>
357
+ <sub>`api.ogt` line 10081</sub>
359
358
 
360
359
  <a id="fn-open"></a>
361
360
 
@@ -385,7 +384,7 @@ fn open {
385
384
  }
386
385
  ```
387
386
 
388
- <sub>`api.ogt` line 8352</sub>
387
+ <sub>`api.ogt` line 10087</sub>
389
388
 
390
389
  <a id="fn-openPanel"></a>
391
390
 
@@ -415,7 +414,7 @@ fn openPanel {
415
414
  }
416
415
  ```
417
416
 
418
- <sub>`api.ogt` line 8359</sub>
417
+ <sub>`api.ogt` line 10094</sub>
419
418
 
420
419
  <a id="fn-openScroll"></a>
421
420
 
@@ -445,7 +444,7 @@ fn openScroll {
445
444
  }
446
445
  ```
447
446
 
448
- <sub>`api.ogt` line 8366</sub>
447
+ <sub>`api.ogt` line 10101</sub>
449
448
 
450
449
  <a id="fn-close"></a>
451
450
 
@@ -468,7 +467,7 @@ fn close {
468
467
  }
469
468
  ```
470
469
 
471
- <sub>`api.ogt` line 8373</sub>
470
+ <sub>`api.ogt` line 10108</sub>
472
471
 
473
472
  <a id="fn-row"></a>
474
473
 
@@ -501,7 +500,7 @@ fn row {
501
500
  }
502
501
  ```
503
502
 
504
- <sub>`api.ogt` line 8378</sub>
503
+ <sub>`api.ogt` line 10113</sub>
505
504
 
506
505
  <a id="fn-column"></a>
507
506
 
@@ -534,7 +533,7 @@ fn column {
534
533
  }
535
534
  ```
536
535
 
537
- <sub>`api.ogt` line 8387</sub>
536
+ <sub>`api.ogt` line 10122</sub>
538
537
 
539
538
  <a id="fn-panel"></a>
540
539
 
@@ -567,7 +566,7 @@ fn panel {
567
566
  }
568
567
  ```
569
568
 
570
- <sub>`api.ogt` line 8396</sub>
569
+ <sub>`api.ogt` line 10131</sub>
571
570
 
572
571
  <a id="fn-scroll"></a>
573
572
 
@@ -600,13 +599,13 @@ fn scroll {
600
599
  }
601
600
  ```
602
601
 
603
- <sub>`api.ogt` line 8405</sub>
602
+ <sub>`api.ogt` line 10140</sub>
604
603
 
605
604
  <a id="fn-richText"></a>
606
605
 
607
606
  ### `og.ui.richText`
608
607
 
609
- A paragraph of inline spans from markup, for a string-table message (og.i18n.t) so a translation carries its own emphasis: `[b]bold[/b]` (thickened in the distance field as far as it reaches, plus a second copy one device pixel right), `[color=danger]` or `[color=#ff8800]` (a ThemeColor follows the skin), `[size=xl]` (a TypeStepName), `[font=mono]`, `[icon=coin]` (a cell of the icon atlas, one em), `[link=shop]Open the shop[/link]` (accent ink, underlined, focusable by keys and pads; a child element `<id>/shop` of kind link for the probe) and per-glyph motion `[wave]`, `[shake]`, `[pulse]` (by the tick; still under reduced motion). `[[` is a literal bracket. Lines break between the spans' words (a word restyled mid-way stays whole), each as tall as its tallest span on one baseline. Markup it cannot read shows as text and logs a warning.
608
+ A paragraph of inline spans from markup, for a string-table message (og.i18n.t) so a translation carries its own emphasis: `[b]bold[/b]` (thickened in the distance field as far as it reaches, plus a second copy one device pixel right), `[color=danger]` or `[color=#ff8800]` (a ThemeColor follows the style), `[size=xl]` (a TypeStepName), `[font=mono]`, `[icon=coin]` (a cell of the icon atlas, one em), `[link=shop]Open the shop[/link]` (accent ink, underlined, focusable by keys and pads; a child element `<id>/shop` of kind link for the probe) and per-glyph motion `[wave]`, `[shake]`, `[pulse]` (by the tick; still under reduced motion). `[[` is a literal bracket. Lines break between the spans' words (a word restyled mid-way stays whole), each as tall as its tallest span on one baseline. Markup it cannot read shows as text and logs a warning.
610
609
 
611
610
  ```ts
612
611
  og.ui.richText(id: string, markup: string, desc?: RichTextDesc): RichTextResult
@@ -624,7 +623,7 @@ Binding symbol `og_ui_rich_text` · publish builds: kept
624
623
 
625
624
  ```ogt
626
625
  fn richText {
627
- doc "A paragraph of inline spans from markup, for a string-table message (og.i18n.t) so a translation carries its own emphasis: `[b]bold[/b]` (thickened in the distance field as far as it reaches, plus a second copy one device pixel right), `[color=danger]` or `[color=#ff8800]` (a ThemeColor follows the skin), `[size=xl]` (a TypeStepName), `[font=mono]`, `[icon=coin]` (a cell of the icon atlas, one em), `[link=shop]Open the shop[/link]` (accent ink, underlined, focusable by keys and pads; a child element `<id>/shop` of kind link for the probe) and per-glyph motion `[wave]`, `[shake]`, `[pulse]` (by the tick; still under reduced motion). `[[` is a literal bracket. Lines break between the spans' words (a word restyled mid-way stays whole), each as tall as its tallest span on one baseline. Markup it cannot read shows as text and logs a warning."
626
+ doc "A paragraph of inline spans from markup, for a string-table message (og.i18n.t) so a translation carries its own emphasis: `[b]bold[/b]` (thickened in the distance field as far as it reaches, plus a second copy one device pixel right), `[color=danger]` or `[color=#ff8800]` (a ThemeColor follows the style), `[size=xl]` (a TypeStepName), `[font=mono]`, `[icon=coin]` (a cell of the icon atlas, one em), `[link=shop]Open the shop[/link]` (accent ink, underlined, focusable by keys and pads; a child element `<id>/shop` of kind link for the probe) and per-glyph motion `[wave]`, `[shake]`, `[pulse]` (by the tick; still under reduced motion). `[[` is a literal bracket. Lines break between the spans' words (a word restyled mid-way stays whole), each as tall as its tallest span on one baseline. Markup it cannot read shows as text and logs a warning."
628
627
  param id String "Its id."
629
628
  param markup String "The markup."
630
629
  param desc RichTextDesc "Defaults for its spans: type step, ink, alignment, wrapping, width and font."
@@ -632,7 +631,7 @@ fn richText {
632
631
  }
633
632
  ```
634
633
 
635
- <sub>`api.ogt` line 8432</sub>
634
+ <sub>`api.ogt` line 10167</sub>
636
635
 
637
636
  <a id="fn-label"></a>
638
637
 
@@ -664,13 +663,13 @@ fn label {
664
663
  }
665
664
  ```
666
665
 
667
- <sub>`api.ogt` line 8440</sub>
666
+ <sub>`api.ogt` line 10175</sub>
668
667
 
669
668
  <a id="fn-button"></a>
670
669
 
671
670
  ### `og.ui.button`
672
671
 
673
- A capsule button with a label; `clicked` is a press and a release inside it. The probe reads its label.
672
+ A button with a label; `clicked` is a press and a release inside it. The probe reads its label.
674
673
 
675
674
  ```ts
676
675
  og.ui.button(id: string, text: string, desc?: ButtonDesc): Response
@@ -688,7 +687,7 @@ Binding symbol `og_ui_button` · publish builds: kept
688
687
 
689
688
  ```ogt
690
689
  fn button {
691
- doc "A capsule button with a label; `clicked` is a press and a release inside it. The probe reads its label."
690
+ doc "A button with a label; `clicked` is a press and a release inside it. The probe reads its label."
692
691
  param id String "Its id."
693
692
  param text String "The label."
694
693
  param desc ButtonDesc "Variant, size, disabled and width."
@@ -696,7 +695,7 @@ fn button {
696
695
  }
697
696
  ```
698
697
 
699
- <sub>`api.ogt` line 8448</sub>
698
+ <sub>`api.ogt` line 10183</sub>
700
699
 
701
700
  <a id="fn-image"></a>
702
701
 
@@ -726,7 +725,7 @@ fn image {
726
725
  }
727
726
  ```
728
727
 
729
- <sub>`api.ogt` line 8456</sub>
728
+ <sub>`api.ogt` line 10191</sub>
730
729
 
731
730
  <a id="fn-zoomView"></a>
732
731
 
@@ -756,13 +755,13 @@ fn zoomView {
756
755
  }
757
756
  ```
758
757
 
759
- <sub>`api.ogt` line 8463</sub>
758
+ <sub>`api.ogt` line 10198</sub>
760
759
 
761
760
  <a id="fn-progress"></a>
762
761
 
763
762
  ### `og.ui.progress`
764
763
 
765
- A capsule track filled to a fraction.
764
+ A track filled to a fraction.
766
765
 
767
766
  ```ts
768
767
  og.ui.progress(id: string, value: number, desc?: ProgressDesc): void
@@ -780,7 +779,7 @@ Binding symbol `og_ui_progress` · publish builds: kept
780
779
 
781
780
  ```ogt
782
781
  fn progress {
783
- doc "A capsule track filled to a fraction."
782
+ doc "A track filled to a fraction."
784
783
  param id String "Its id."
785
784
  param value f32 "How full it is, from 0 to 1."
786
785
  param desc ProgressDesc "Its width."
@@ -788,7 +787,7 @@ fn progress {
788
787
  }
789
788
  ```
790
789
 
791
- <sub>`api.ogt` line 8470</sub>
790
+ <sub>`api.ogt` line 10205</sub>
792
791
 
793
792
  <a id="fn-slider"></a>
794
793
 
@@ -820,7 +819,7 @@ fn slider {
820
819
  }
821
820
  ```
822
821
 
823
- <sub>`api.ogt` line 8478</sub>
822
+ <sub>`api.ogt` line 10213</sub>
824
823
 
825
824
  <a id="fn-toggle"></a>
826
825
 
@@ -852,7 +851,7 @@ fn toggle {
852
851
  }
853
852
  ```
854
853
 
855
- <sub>`api.ogt` line 8486</sub>
854
+ <sub>`api.ogt` line 10221</sub>
856
855
 
857
856
  <a id="fn-textField"></a>
858
857
 
@@ -884,7 +883,7 @@ fn textField {
884
883
  }
885
884
  ```
886
885
 
887
- <sub>`api.ogt` line 8494</sub>
886
+ <sub>`api.ogt` line 10229</sub>
888
887
 
889
888
  <a id="fn-textArea"></a>
890
889
 
@@ -916,7 +915,7 @@ fn textArea {
916
915
  }
917
916
  ```
918
917
 
919
- <sub>`api.ogt` line 8502</sub>
918
+ <sub>`api.ogt` line 10237</sub>
920
919
 
921
920
  <a id="fn-tooltip"></a>
922
921
 
@@ -944,7 +943,7 @@ fn tooltip {
944
943
  }
945
944
  ```
946
945
 
947
- <sub>`api.ogt` line 8510</sub>
946
+ <sub>`api.ogt` line 10245</sub>
948
947
 
949
948
  <a id="fn-idi"></a>
950
949
 
@@ -975,7 +974,7 @@ fn idi {
975
974
  }
976
975
  ```
977
976
 
978
- <sub>`api.ogt` line 8516</sub>
977
+ <sub>`api.ogt` line 10251</sub>
979
978
 
980
979
  <a id="fn-breakpoint"></a>
981
980
 
@@ -998,7 +997,7 @@ fn breakpoint {
998
997
  }
999
998
  ```
1000
999
 
1001
- <sub>`api.ogt` line 8997</sub>
1000
+ <sub>`api.ogt` line 10716</sub>
1002
1001
 
1003
1002
  <a id="fn-frameViewport"></a>
1004
1003
 
@@ -1021,7 +1020,7 @@ fn frameViewport {
1021
1020
  }
1022
1021
  ```
1023
1022
 
1024
- <sub>`api.ogt` line 9002</sub>
1023
+ <sub>`api.ogt` line 10721</sub>
1025
1024
 
1026
1025
  <a id="fn-hasIcon"></a>
1027
1026
 
@@ -1049,7 +1048,7 @@ fn hasIcon {
1049
1048
  }
1050
1049
  ```
1051
1050
 
1052
- <sub>`api.ogt` line 9007</sub>
1051
+ <sub>`api.ogt` line 10726</sub>
1053
1052
 
1054
1053
  <a id="fn-seconds"></a>
1055
1054
 
@@ -1072,13 +1071,13 @@ fn seconds {
1072
1071
  }
1073
1072
  ```
1074
1073
 
1075
- <sub>`api.ogt` line 9013</sub>
1074
+ <sub>`api.ogt` line 10732</sub>
1076
1075
 
1077
1076
  <a id="fn-frameTheme"></a>
1078
1077
 
1079
1078
  ### `og.ui.frameTheme`
1080
1079
 
1081
- The design tokens of the frame being built: og.ui.theme without the world, for code that only builds UI (the templates).
1080
+ The style values of the frame being built: og.ui.theme without the world, for code that only builds UI (the templates).
1082
1081
 
1083
1082
  ```ts
1084
1083
  og.ui.frameTheme(): UiTheme
@@ -1090,12 +1089,12 @@ Binding symbol `og_ui_frame_theme` · publish builds: kept
1090
1089
 
1091
1090
  ```ogt
1092
1091
  fn frameTheme {
1093
- doc "The design tokens of the frame being built: og.ui.theme without the world, for code that only builds UI (the templates)."
1092
+ doc "The style values of the frame being built: og.ui.theme without the world, for code that only builds UI (the templates)."
1094
1093
  returns UiTheme
1095
1094
  }
1096
1095
  ```
1097
1096
 
1098
- <sub>`api.ogt` line 9018</sub>
1097
+ <sub>`api.ogt` line 10737</sub>
1099
1098
 
1100
1099
  <a id="fn-openAnchor"></a>
1101
1100
 
@@ -1125,7 +1124,7 @@ fn openAnchor {
1125
1124
  }
1126
1125
  ```
1127
1126
 
1128
- <sub>`api.ogt` line 9023</sub>
1127
+ <sub>`api.ogt` line 10742</sub>
1129
1128
 
1130
1129
  <a id="fn-anchor"></a>
1131
1130
 
@@ -1158,7 +1157,7 @@ fn anchor {
1158
1157
  }
1159
1158
  ```
1160
1159
 
1161
- <sub>`api.ogt` line 9030</sub>
1160
+ <sub>`api.ogt` line 10749</sub>
1162
1161
 
1163
1162
  <a id="fn-openTransition"></a>
1164
1163
 
@@ -1190,13 +1189,13 @@ fn openTransition {
1190
1189
  }
1191
1190
  ```
1192
1191
 
1193
- <sub>`api.ogt` line 9039</sub>
1192
+ <sub>`api.ogt` line 10758</sub>
1194
1193
 
1195
1194
  <a id="fn-transition"></a>
1196
1195
 
1197
1196
  ### `og.ui.transition`
1198
1197
 
1199
- Content that enters and leaves: fade, slide or scale by the tick from the motion tokens. `build` runs while it is visible.
1198
+ Content that enters and leaves: fade, slide or scale by the tick from the style's motion. `build` runs while it is visible.
1200
1199
 
1201
1200
  ```ts
1202
1201
  og.ui.transition(id: string, show: boolean, desc: TransitionDesc, build: UiBuild): Presence
@@ -1215,7 +1214,7 @@ Implemented by the TypeScript runtime over the members of this module: no bindin
1215
1214
 
1216
1215
  ```ogt
1217
1216
  fn transition {
1218
- doc "Content that enters and leaves: fade, slide or scale by the tick from the motion tokens. `build` runs while it is visible."
1217
+ doc "Content that enters and leaves: fade, slide or scale by the tick from the style's motion. `build` runs while it is visible."
1219
1218
  host false
1220
1219
  param id String "Its id."
1221
1220
  param show bool "Whether it should be shown."
@@ -1225,7 +1224,7 @@ fn transition {
1225
1224
  }
1226
1225
  ```
1227
1226
 
1228
- <sub>`api.ogt` line 9047</sub>
1227
+ <sub>`api.ogt` line 10766</sub>
1229
1228
 
1230
1229
  <a id="fn-openModal"></a>
1231
1230
 
@@ -1257,7 +1256,7 @@ fn openModal {
1257
1256
  }
1258
1257
  ```
1259
1258
 
1260
- <sub>`api.ogt` line 9057</sub>
1259
+ <sub>`api.ogt` line 10776</sub>
1261
1260
 
1262
1261
  <a id="fn-closeModal"></a>
1263
1262
 
@@ -1280,7 +1279,7 @@ fn closeModal {
1280
1279
  }
1281
1280
  ```
1282
1281
 
1283
- <sub>`api.ogt` line 9065</sub>
1282
+ <sub>`api.ogt` line 10784</sub>
1284
1283
 
1285
1284
  <a id="fn-modal"></a>
1286
1285
 
@@ -1315,13 +1314,13 @@ fn modal {
1315
1314
  }
1316
1315
  ```
1317
1316
 
1318
- <sub>`api.ogt` line 9070</sub>
1317
+ <sub>`api.ogt` line 10789</sub>
1319
1318
 
1320
1319
  <a id="fn-spotlight"></a>
1321
1320
 
1322
1321
  ### `og.ui.spotlight`
1323
1322
 
1324
- A spotlight over everything (a tutorial step): the scrim on four sides of the hole, an amber edge around it. Presses on the dimmed parts stop there (clicked); presses in the hole reach what is under it. Shades are `<id>/Top`, `Left`, `Right`, `Bottom`; the hole is `<id>/Hole`.
1323
+ A spotlight over everything (a tutorial step): the scrim on four sides of the hole, a primary edge around it. Presses on the dimmed parts stop there (clicked); presses in the hole reach what is under it. Shades are `<id>/Top`, `Left`, `Right`, `Bottom`; the hole is `<id>/Hole`.
1325
1324
 
1326
1325
  ```ts
1327
1326
  og.ui.spotlight(id: string, hole: UiRect | null, desc?: SpotlightDesc): Response
@@ -1339,7 +1338,7 @@ Binding symbol `og_ui_spotlight` · publish builds: kept
1339
1338
 
1340
1339
  ```ogt
1341
1340
  fn spotlight {
1342
- doc "A spotlight over everything (a tutorial step): the scrim on four sides of the hole, an amber edge around it. Presses on the dimmed parts stop there (clicked); presses in the hole reach what is under it. Shades are `<id>/Top`, `Left`, `Right`, `Bottom`; the hole is `<id>/Hole`."
1341
+ doc "A spotlight over everything (a tutorial step): the scrim on four sides of the hole, a primary edge around it. Presses on the dimmed parts stop there (clicked); presses in the hole reach what is under it. Shades are `<id>/Top`, `Left`, `Right`, `Bottom`; the hole is `<id>/Hole`."
1343
1342
  param id String "Its id."
1344
1343
  param hole Option.UiRect "The rectangle to leave lit, as og.ui.bounds answers; null dims everything."
1345
1344
  param desc SpotlightDesc "Room around the hole."
@@ -1347,7 +1346,7 @@ fn spotlight {
1347
1346
  }
1348
1347
  ```
1349
1348
 
1350
- <sub>`api.ogt` line 9080</sub>
1349
+ <sub>`api.ogt` line 10799</sub>
1351
1350
 
1352
1351
  <a id="fn-bounds"></a>
1353
1352
 
@@ -1375,7 +1374,7 @@ fn bounds {
1375
1374
  }
1376
1375
  ```
1377
1376
 
1378
- <sub>`api.ogt` line 9088</sub>
1377
+ <sub>`api.ogt` line 10807</sub>
1379
1378
 
1380
1379
  <a id="fn-openList"></a>
1381
1380
 
@@ -1405,7 +1404,7 @@ fn openList {
1405
1404
  }
1406
1405
  ```
1407
1406
 
1408
- <sub>`api.ogt` line 9094</sub>
1407
+ <sub>`api.ogt` line 10813</sub>
1409
1408
 
1410
1409
  <a id="fn-openGrid"></a>
1411
1410
 
@@ -1435,7 +1434,7 @@ fn openGrid {
1435
1434
  }
1436
1435
  ```
1437
1436
 
1438
- <sub>`api.ogt` line 9101</sub>
1437
+ <sub>`api.ogt` line 10820</sub>
1439
1438
 
1440
1439
  <a id="fn-listItem"></a>
1441
1440
 
@@ -1450,7 +1449,7 @@ og.ui.listItem(index: number, selected: boolean): Response
1450
1449
  | Parameter | Type | Optional | Doc |
1451
1450
  |---|---|---|---|
1452
1451
  | `index` | `number` | no | Its index. |
1453
- | `selected` | `boolean` | no | Drawn selected (fill-strong). |
1452
+ | `selected` | `boolean` | no | Drawn selected (controlStrong). |
1454
1453
 
1455
1454
  **Returns** `Response`.
1456
1455
 
@@ -1460,18 +1459,18 @@ Binding symbol `og_ui_list_item` · publish builds: kept
1460
1459
  fn listItem {
1461
1460
  doc "Open row `index` of the open list (`Row#index`): selectable and focusable; its content follows until close(). A press that started on one row and is released on this one answers `dropped`."
1462
1461
  param index u32 "Its index."
1463
- param selected bool "Drawn selected (fill-strong)."
1462
+ param selected bool "Drawn selected (controlStrong)."
1464
1463
  returns Response
1465
1464
  }
1466
1465
  ```
1467
1466
 
1468
- <sub>`api.ogt` line 9108</sub>
1467
+ <sub>`api.ogt` line 10827</sub>
1469
1468
 
1470
1469
  <a id="fn-gridItem"></a>
1471
1470
 
1472
1471
  ### `og.ui.gridItem`
1473
1472
 
1474
- Open cell `index` of the open grid (`Cell#index`): a slot on fill, focusable; its content follows until close(). Drops answer `dropped` as listItem's.
1473
+ Open cell `index` of the open grid (`Cell#index`): a slot on control, focusable; its content follows until close(). Drops answer `dropped` as listItem's.
1475
1474
 
1476
1475
  ```ts
1477
1476
  og.ui.gridItem(index: number, selected: boolean): Response
@@ -1480,7 +1479,7 @@ og.ui.gridItem(index: number, selected: boolean): Response
1480
1479
  | Parameter | Type | Optional | Doc |
1481
1480
  |---|---|---|---|
1482
1481
  | `index` | `number` | no | Its index. |
1483
- | `selected` | `boolean` | no | Drawn selected (fill-strong with an amber bar). |
1482
+ | `selected` | `boolean` | no | Drawn selected (controlStrong with a primary bar). |
1484
1483
 
1485
1484
  **Returns** `Response`.
1486
1485
 
@@ -1488,14 +1487,14 @@ Binding symbol `og_ui_grid_item` · publish builds: kept
1488
1487
 
1489
1488
  ```ogt
1490
1489
  fn gridItem {
1491
- doc "Open cell `index` of the open grid (`Cell#index`): a slot on fill, focusable; its content follows until close(). Drops answer `dropped` as listItem's."
1490
+ doc "Open cell `index` of the open grid (`Cell#index`): a slot on control, focusable; its content follows until close(). Drops answer `dropped` as listItem's."
1492
1491
  param index u32 "Its index."
1493
- param selected bool "Drawn selected (fill-strong with an amber bar)."
1492
+ param selected bool "Drawn selected (controlStrong with a primary bar)."
1494
1493
  returns Response
1495
1494
  }
1496
1495
  ```
1497
1496
 
1498
- <sub>`api.ogt` line 9115</sub>
1497
+ <sub>`api.ogt` line 10834</sub>
1499
1498
 
1500
1499
  <a id="fn-closeList"></a>
1501
1500
 
@@ -1518,7 +1517,7 @@ fn closeList {
1518
1517
  }
1519
1518
  ```
1520
1519
 
1521
- <sub>`api.ogt` line 9122</sub>
1520
+ <sub>`api.ogt` line 10841</sub>
1522
1521
 
1523
1522
  <a id="fn-dragging"></a>
1524
1523
 
@@ -1546,7 +1545,7 @@ fn dragging {
1546
1545
  }
1547
1546
  ```
1548
1547
 
1549
- <sub>`api.ogt` line 9127</sub>
1548
+ <sub>`api.ogt` line 10846</sub>
1550
1549
 
1551
1550
  <a id="fn-list"></a>
1552
1551
 
@@ -1579,7 +1578,7 @@ fn list {
1579
1578
  }
1580
1579
  ```
1581
1580
 
1582
- <sub>`api.ogt` line 9133</sub>
1581
+ <sub>`api.ogt` line 10852</sub>
1583
1582
 
1584
1583
  <a id="fn-grid"></a>
1585
1584
 
@@ -1612,7 +1611,7 @@ fn grid {
1612
1611
  }
1613
1612
  ```
1614
1613
 
1615
- <sub>`api.ogt` line 9142</sub>
1614
+ <sub>`api.ogt` line 10861</sub>
1616
1615
 
1617
1616
  <a id="fn-tabs"></a>
1618
1617
 
@@ -1646,7 +1645,7 @@ fn tabs {
1646
1645
  }
1647
1646
  ```
1648
1647
 
1649
- <sub>`api.ogt` line 9151</sub>
1648
+ <sub>`api.ogt` line 10870</sub>
1650
1649
 
1651
1650
  <a id="fn-select"></a>
1652
1651
 
@@ -1680,7 +1679,7 @@ fn select {
1680
1679
  }
1681
1680
  ```
1682
1681
 
1683
- <sub>`api.ogt` line 9160</sub>
1682
+ <sub>`api.ogt` line 10879</sub>
1684
1683
 
1685
1684
  <a id="fn-stepper"></a>
1686
1685
 
@@ -1712,13 +1711,13 @@ fn stepper {
1712
1711
  }
1713
1712
  ```
1714
1713
 
1715
- <sub>`api.ogt` line 9169</sub>
1714
+ <sub>`api.ogt` line 10888</sub>
1716
1715
 
1717
1716
  <a id="fn-radio"></a>
1718
1717
 
1719
1718
  ### `og.ui.radio`
1720
1719
 
1721
- A radio group of `Option#i` rows: a ring, filled amber when chosen, and a label.
1720
+ A radio group of `Option#i` rows: a ring, filled primary when chosen, and a label.
1722
1721
 
1723
1722
  ```ts
1724
1723
  og.ui.radio(id: string, options: readonly string[], selected: number, desc?: RadioDesc): ChoiceResult
@@ -1737,7 +1736,7 @@ Binding symbol `og_ui_radio` · publish builds: kept
1737
1736
 
1738
1737
  ```ogt
1739
1738
  fn radio {
1740
- doc "A radio group of `Option#i` rows: a ring, filled amber when chosen, and a label."
1739
+ doc "A radio group of `Option#i` rows: a ring, filled primary when chosen, and a label."
1741
1740
  param id String "Its id."
1742
1741
  param options List.String "The option labels."
1743
1742
  param selected u32 "The chosen index from game state."
@@ -1746,7 +1745,7 @@ fn radio {
1746
1745
  }
1747
1746
  ```
1748
1747
 
1749
- <sub>`api.ogt` line 9177</sub>
1748
+ <sub>`api.ogt` line 10896</sub>
1750
1749
 
1751
1750
  <a id="fn-checkbox"></a>
1752
1751
 
@@ -1778,7 +1777,7 @@ fn checkbox {
1778
1777
  }
1779
1778
  ```
1780
1779
 
1781
- <sub>`api.ogt` line 9186</sub>
1780
+ <sub>`api.ogt` line 10905</sub>
1782
1781
 
1783
1782
  <a id="fn-checkboxList"></a>
1784
1783
 
@@ -1810,13 +1809,13 @@ fn checkboxList {
1810
1809
  }
1811
1810
  ```
1812
1811
 
1813
- <sub>`api.ogt` line 9194</sub>
1812
+ <sub>`api.ogt` line 10913</sub>
1814
1813
 
1815
1814
  <a id="fn-chip"></a>
1816
1815
 
1817
1816
  ### `og.ui.chip`
1818
1817
 
1819
- A chip: a capsule on fill; selected inverts to fg. For filters and tags.
1818
+ A chip: a control-filled tag; selected inverts to ink. For filters and tags.
1820
1819
 
1821
1820
  ```ts
1822
1821
  og.ui.chip(id: string, text: string, desc?: ChipDesc): Response
@@ -1834,7 +1833,7 @@ Binding symbol `og_ui_chip` · publish builds: kept
1834
1833
 
1835
1834
  ```ogt
1836
1835
  fn chip {
1837
- doc "A chip: a capsule on fill; selected inverts to fg. For filters and tags."
1836
+ doc "A chip: a control-filled tag; selected inverts to ink. For filters and tags."
1838
1837
  param id String "Its id."
1839
1838
  param text String "The label."
1840
1839
  param desc ChipDesc "Selected and disabled."
@@ -1842,13 +1841,13 @@ fn chip {
1842
1841
  }
1843
1842
  ```
1844
1843
 
1845
- <sub>`api.ogt` line 9202</sub>
1844
+ <sub>`api.ogt` line 10921</sub>
1846
1845
 
1847
1846
  <a id="fn-badge"></a>
1848
1847
 
1849
1848
  ### `og.ui.badge`
1850
1849
 
1851
- A badge: a small status capsule in its tone.
1850
+ A badge: a small status tag in its tone.
1852
1851
 
1853
1852
  ```ts
1854
1853
  og.ui.badge(id: string, text: string, tone: Tone): void
@@ -1866,7 +1865,7 @@ Binding symbol `og_ui_badge` · publish builds: kept
1866
1865
 
1867
1866
  ```ogt
1868
1867
  fn badge {
1869
- doc "A badge: a small status capsule in its tone."
1868
+ doc "A badge: a small status tag in its tone."
1870
1869
  param id String "Its id."
1871
1870
  param text String "The label (a count, a word)."
1872
1871
  param tone Tone "Its tone."
@@ -1874,7 +1873,7 @@ fn badge {
1874
1873
  }
1875
1874
  ```
1876
1875
 
1877
- <sub>`api.ogt` line 9210</sub>
1876
+ <sub>`api.ogt` line 10929</sub>
1878
1877
 
1879
1878
  <a id="fn-divider"></a>
1880
1879
 
@@ -1904,7 +1903,7 @@ fn divider {
1904
1903
  }
1905
1904
  ```
1906
1905
 
1907
- <sub>`api.ogt` line 9218</sub>
1906
+ <sub>`api.ogt` line 10937</sub>
1908
1907
 
1909
1908
  <a id="fn-spacer"></a>
1910
1909
 
@@ -1934,13 +1933,13 @@ fn spacer {
1934
1933
  }
1935
1934
  ```
1936
1935
 
1937
- <sub>`api.ogt` line 9225</sub>
1936
+ <sub>`api.ogt` line 10944</sub>
1938
1937
 
1939
1938
  <a id="fn-keyValue"></a>
1940
1939
 
1941
1940
  ### `og.ui.keyValue`
1942
1941
 
1943
- A key (fg-muted) and its value (fg, at the end) on one row: stats, settings summaries, receipts.
1942
+ A key (inkMuted) and its value (ink, at the end) on one row: stats, settings summaries, receipts.
1944
1943
 
1945
1944
  ```ts
1946
1945
  og.ui.keyValue(id: string, key: string, value: string, mono: boolean): void
@@ -1959,7 +1958,7 @@ Binding symbol `og_ui_key_value` · publish builds: kept
1959
1958
 
1960
1959
  ```ogt
1961
1960
  fn keyValue {
1962
- doc "A key (fg-muted) and its value (fg, at the end) on one row: stats, settings summaries, receipts."
1961
+ doc "A key (inkMuted) and its value (ink, at the end) on one row: stats, settings summaries, receipts."
1963
1962
  param id String "Its id."
1964
1963
  param key String "The key."
1965
1964
  param value String "The value."
@@ -1968,7 +1967,7 @@ fn keyValue {
1968
1967
  }
1969
1968
  ```
1970
1969
 
1971
- <sub>`api.ogt` line 9232</sub>
1970
+ <sub>`api.ogt` line 10951</sub>
1972
1971
 
1973
1972
  <a id="fn-skeleton"></a>
1974
1973
 
@@ -1998,7 +1997,7 @@ fn skeleton {
1998
1997
  }
1999
1998
  ```
2000
1999
 
2001
- <sub>`api.ogt` line 9241</sub>
2000
+ <sub>`api.ogt` line 10960</sub>
2002
2001
 
2003
2002
  <a id="fn-spinner"></a>
2004
2003
 
@@ -2028,7 +2027,7 @@ fn spinner {
2028
2027
  }
2029
2028
  ```
2030
2029
 
2031
- <sub>`api.ogt` line 9248</sub>
2030
+ <sub>`api.ogt` line 10967</sub>
2032
2031
 
2033
2032
  <a id="fn-icon"></a>
2034
2033
 
@@ -2060,7 +2059,7 @@ fn icon {
2060
2059
  }
2061
2060
  ```
2062
2061
 
2063
- <sub>`api.ogt` line 9255</sub>
2062
+ <sub>`api.ogt` line 10974</sub>
2064
2063
 
2065
2064
  <a id="fn-meter"></a>
2066
2065
 
@@ -2094,13 +2093,13 @@ fn meter {
2094
2093
  }
2095
2094
  ```
2096
2095
 
2097
- <sub>`api.ogt` line 9263</sub>
2096
+ <sub>`api.ogt` line 10982</sub>
2098
2097
 
2099
2098
  <a id="fn-cooldown"></a>
2100
2099
 
2101
2100
  ### `og.ui.cooldown`
2102
2101
 
2103
- A cooldown: a disc whose amber ring fills clockwise from the top as it runs out, bright and full when ready, a label or icon in the middle. A press reports clicked (ready or not).
2102
+ A cooldown: a disc whose primary ring fills clockwise from the top as it runs out, bright and full when ready, a label or icon in the middle. A press reports clicked (ready or not).
2104
2103
 
2105
2104
  ```ts
2106
2105
  og.ui.cooldown(id: string, remaining: number, desc?: CooldownDesc): Response
@@ -2118,7 +2117,7 @@ Binding symbol `og_ui_cooldown` · publish builds: kept
2118
2117
 
2119
2118
  ```ogt
2120
2119
  fn cooldown {
2121
- doc "A cooldown: a disc whose amber ring fills clockwise from the top as it runs out, bright and full when ready, a label or icon in the middle. A press reports clicked (ready or not)."
2120
+ doc "A cooldown: a disc whose primary ring fills clockwise from the top as it runs out, bright and full when ready, a label or icon in the middle. A press reports clicked (ready or not)."
2122
2121
  param id String "Its id."
2123
2122
  param remaining f32 "How much of the cooldown is left, 0 to 1: 1 just used, 0 ready."
2124
2123
  param desc CooldownDesc "Size, label and icon."
@@ -2126,13 +2125,13 @@ fn cooldown {
2126
2125
  }
2127
2126
  ```
2128
2127
 
2129
- <sub>`api.ogt` line 9272</sub>
2128
+ <sub>`api.ogt` line 10991</sub>
2130
2129
 
2131
2130
  <a id="fn-minimap"></a>
2132
2131
 
2133
2132
  ### `og.ui.minimap`
2134
2133
 
2135
- A mini-map frame: the map in a border-strong frame, markers as dots (the player amber and ringed), an N mark and a zone label.
2134
+ A mini-map frame: the map in a lineStrong frame, markers as dots (the player primary and ringed), an N mark and a zone label.
2136
2135
 
2137
2136
  ```ts
2138
2137
  og.ui.minimap(id: string, desc?: MinimapDesc): void
@@ -2149,20 +2148,20 @@ Binding symbol `og_ui_minimap` · publish builds: kept
2149
2148
 
2150
2149
  ```ogt
2151
2150
  fn minimap {
2152
- doc "A mini-map frame: the map in a border-strong frame, markers as dots (the player amber and ringed), an N mark and a zone label."
2151
+ doc "A mini-map frame: the map in a lineStrong frame, markers as dots (the player primary and ringed), an N mark and a zone label."
2153
2152
  param id String "Its id."
2154
2153
  param desc MinimapDesc "Map, markers and label."
2155
2154
  returns Void
2156
2155
  }
2157
2156
  ```
2158
2157
 
2159
- <sub>`api.ogt` line 9280</sub>
2158
+ <sub>`api.ogt` line 10999</sub>
2160
2159
 
2161
2160
  <a id="fn-dialogue"></a>
2162
2161
 
2163
2162
  ### `og.ui.dialogue`
2164
2163
 
2165
- A dialogue box: a portrait slot, the speaker in amber ink and the line typed out by the tick. A press or Activate while typing shows the whole line; once shown it answers advanced. The line is `<id>/Body/Line` and the probe reads what is shown.
2164
+ A dialogue box: a portrait slot, the speaker in primary ink and the line typed out by the tick. A press or Activate while typing shows the whole line; once shown it answers advanced. The line is `<id>/Body/Line` and the probe reads what is shown.
2166
2165
 
2167
2166
  ```ts
2168
2167
  og.ui.dialogue(id: string, desc?: DialogueDesc): DialogueResult
@@ -2179,14 +2178,14 @@ Binding symbol `og_ui_dialogue` · publish builds: kept
2179
2178
 
2180
2179
  ```ogt
2181
2180
  fn dialogue {
2182
- doc "A dialogue box: a portrait slot, the speaker in amber ink and the line typed out by the tick. A press or Activate while typing shows the whole line; once shown it answers advanced. The line is `<id>/Body/Line` and the probe reads what is shown."
2181
+ doc "A dialogue box: a portrait slot, the speaker in primary ink and the line typed out by the tick. A press or Activate while typing shows the whole line; once shown it answers advanced. The line is `<id>/Body/Line` and the probe reads what is shown."
2183
2182
  param id String "Its id."
2184
2183
  param desc DialogueDesc "Speaker, text, portrait and speed."
2185
2184
  returns DialogueResult
2186
2185
  }
2187
2186
  ```
2188
2187
 
2189
- <sub>`api.ogt` line 9287</sub>
2188
+ <sub>`api.ogt` line 11006</sub>
2190
2189
 
2191
2190
  <a id="fn-joystick"></a>
2192
2191
 
@@ -2216,7 +2215,7 @@ fn joystick {
2216
2215
  }
2217
2216
  ```
2218
2217
 
2219
- <sub>`api.ogt` line 9294</sub>
2218
+ <sub>`api.ogt` line 11013</sub>
2220
2219
 
2221
2220
  <a id="fn-dpad"></a>
2222
2221
 
@@ -2246,13 +2245,13 @@ fn dpad {
2246
2245
  }
2247
2246
  ```
2248
2247
 
2249
- <sub>`api.ogt` line 9301</sub>
2248
+ <sub>`api.ogt` line 11020</sub>
2250
2249
 
2251
2250
  <a id="fn-actionButton"></a>
2252
2251
 
2253
2252
  ### `og.ui.actionButton`
2254
2253
 
2255
- A round touch action button: pressed while held (jump, fire), clicked on a tap; at least 44 CSS px.
2254
+ A square touch action button, cornered by the style's control radius: pressed while held (jump, fire), clicked on a tap; at least 44 CSS px.
2256
2255
 
2257
2256
  ```ts
2258
2257
  og.ui.actionButton(id: string, text: string, desc?: ActionButtonDesc): Response
@@ -2270,7 +2269,7 @@ Binding symbol `og_ui_action_button` · publish builds: kept
2270
2269
 
2271
2270
  ```ogt
2272
2271
  fn actionButton {
2273
- doc "A round touch action button: pressed while held (jump, fire), clicked on a tap; at least 44 CSS px."
2272
+ doc "A square touch action button, cornered by the style's control radius: pressed while held (jump, fire), clicked on a tap; at least 44 CSS px."
2274
2273
  param id String "Its id."
2275
2274
  param text String "Its label (and what the probe reads)."
2276
2275
  param desc ActionButtonDesc "Size, primary and icon."
@@ -2278,7 +2277,7 @@ fn actionButton {
2278
2277
  }
2279
2278
  ```
2280
2279
 
2281
- <sub>`api.ogt` line 9308</sub>
2280
+ <sub>`api.ogt` line 11027</sub>
2282
2281
 
2283
2282
  <a id="fn-toast"></a>
2284
2283
 
@@ -2310,7 +2309,7 @@ fn toast {
2310
2309
  }
2311
2310
  ```
2312
2311
 
2313
- <sub>`api.ogt` line 9316</sub>
2312
+ <sub>`api.ogt` line 11035</sub>
2314
2313
 
2315
2314
  <a id="fn-dismissToast"></a>
2316
2315
 
@@ -2340,7 +2339,7 @@ fn dismissToast {
2340
2339
  }
2341
2340
  ```
2342
2341
 
2343
- <sub>`api.ogt` line 9324</sub>
2342
+ <sub>`api.ogt` line 11043</sub>
2344
2343
 
2345
2344
  <a id="fn-navigate"></a>
2346
2345
 
@@ -2370,7 +2369,7 @@ fn navigate {
2370
2369
  }
2371
2370
  ```
2372
2371
 
2373
- <sub>`api.ogt` line 9331</sub>
2372
+ <sub>`api.ogt` line 11050</sub>
2374
2373
 
2375
2374
  <a id="fn-back"></a>
2376
2375
 
@@ -2393,7 +2392,7 @@ fn back {
2393
2392
  }
2394
2393
  ```
2395
2394
 
2396
- <sub>`api.ogt` line 9338</sub>
2395
+ <sub>`api.ogt` line 11057</sub>
2397
2396
 
2398
2397
  <a id="fn-setPlayers"></a>
2399
2398
 
@@ -2421,7 +2420,7 @@ fn setPlayers {
2421
2420
  }
2422
2421
  ```
2423
2422
 
2424
- <sub>`api.ogt` line 9343</sub>
2423
+ <sub>`api.ogt` line 11062</sub>
2425
2424
 
2426
2425
  <a id="fn-focus"></a>
2427
2426
 
@@ -2449,7 +2448,7 @@ fn focus {
2449
2448
  }
2450
2449
  ```
2451
2450
 
2452
- <sub>`api.ogt` line 9349</sub>
2451
+ <sub>`api.ogt` line 11068</sub>
2453
2452
 
2454
2453
  <a id="fn-a11y"></a>
2455
2454
 
@@ -2472,7 +2471,7 @@ fn a11y {
2472
2471
  }
2473
2472
  ```
2474
2473
 
2475
- <sub>`api.ogt` line 9388</sub>
2474
+ <sub>`api.ogt` line 11107</sub>
2476
2475
 
2477
2476
  <a id="fn-setNavigation"></a>
2478
2477
 
@@ -2500,7 +2499,7 @@ fn setNavigation {
2500
2499
  }
2501
2500
  ```
2502
2501
 
2503
- <sub>`api.ogt` line 9393</sub>
2502
+ <sub>`api.ogt` line 11112</sub>
2504
2503
 
2505
2504
  <a id="fn-memory"></a>
2506
2505
 
@@ -2530,7 +2529,7 @@ fn memory {
2530
2529
  }
2531
2530
  ```
2532
2531
 
2533
- <sub>`api.ogt` line 9399</sub>
2532
+ <sub>`api.ogt` line 11118</sub>
2534
2533
 
2535
2534
  <a id="fn-remember"></a>
2536
2535
 
@@ -2560,7 +2559,7 @@ fn remember {
2560
2559
  }
2561
2560
  ```
2562
2561
 
2563
- <sub>`api.ogt` line 9406</sub>
2562
+ <sub>`api.ogt` line 11125</sub>
2564
2563
 
2565
2564
  <a id="fn-tick"></a>
2566
2565
 
@@ -2583,13 +2582,13 @@ fn tick {
2583
2582
  }
2584
2583
  ```
2585
2584
 
2586
- <sub>`api.ogt` line 9413</sub>
2585
+ <sub>`api.ogt` line 11132</sub>
2587
2586
 
2588
2587
  <a id="fn-counter"></a>
2589
2588
 
2590
2589
  ### `og.ui.counter`
2591
2590
 
2592
- A number label that counts (ease-out cubic, by the tick) from where it was to the value each time the value changes, grouped with commas; a skin with motion.pop bumps it when it lands. Scores, currency, rewards.
2591
+ A number label that counts (ease-out cubic, by the tick) from where it was to the value each time the value changes, grouped with commas; a style with motion.pop bumps it when it lands. Scores, currency, rewards.
2593
2592
 
2594
2593
  ```ts
2595
2594
  og.ui.counter(id: string, value: number, desc?: CounterDesc): number
@@ -2607,7 +2606,7 @@ Binding symbol `og_ui_counter` · publish builds: kept
2607
2606
 
2608
2607
  ```ogt
2609
2608
  fn counter {
2610
- doc "A number label that counts (ease-out cubic, by the tick) from where it was to the value each time the value changes, grouped with commas; a skin with motion.pop bumps it when it lands. Scores, currency, rewards."
2609
+ doc "A number label that counts (ease-out cubic, by the tick) from where it was to the value each time the value changes, grouped with commas; a style with motion.pop bumps it when it lands. Scores, currency, rewards."
2611
2610
  param id String "Its id."
2612
2611
  param value f64 "The value to count to."
2613
2612
  param desc CounterDesc "Look, duration, start and format."
@@ -2615,7 +2614,7 @@ fn counter {
2615
2614
  }
2616
2615
  ```
2617
2616
 
2618
- <sub>`api.ogt` line 9436</sub>
2617
+ <sub>`api.ogt` line 11155</sub>
2619
2618
 
2620
2619
  <a id="fn-burst"></a>
2621
2620
 
@@ -2643,13 +2642,13 @@ fn burst {
2643
2642
  }
2644
2643
  ```
2645
2644
 
2646
- <sub>`api.ogt` line 9463</sub>
2645
+ <sub>`api.ogt` line 11182</sub>
2647
2646
 
2648
2647
  <a id="fn-shake"></a>
2649
2648
 
2650
2649
  ### `og.ui.shake`
2651
2650
 
2652
- Shake the element built just before, from this tick (a wrong answer, a locked door, a refused purchase): call it once, on the tick it happens; the element swings and comes to rest by itself, and snapshots carry it. Still under reduced motion. A refused press on a disabled button already shakes when the skin's motion.shake is set.
2651
+ Shake the element built just before, from this tick (a wrong answer, a locked door, a refused purchase): call it once, on the tick it happens; the element swings and comes to rest by itself, and snapshots carry it. Still under reduced motion. A refused press on a disabled button already shakes when the style's motion.shake is set.
2653
2652
 
2654
2653
  ```ts
2655
2654
  og.ui.shake(desc?: ShakeDesc): void
@@ -2665,13 +2664,13 @@ Binding symbol `og_ui_shake` · publish builds: kept
2665
2664
 
2666
2665
  ```ogt
2667
2666
  fn shake {
2668
- doc "Shake the element built just before, from this tick (a wrong answer, a locked door, a refused purchase): call it once, on the tick it happens; the element swings and comes to rest by itself, and snapshots carry it. Still under reduced motion. A refused press on a disabled button already shakes when the skin's motion.shake is set."
2667
+ doc "Shake the element built just before, from this tick (a wrong answer, a locked door, a refused purchase): call it once, on the tick it happens; the element swings and comes to rest by itself, and snapshots carry it. Still under reduced motion. A refused press on a disabled button already shakes when the style's motion.shake is set."
2669
2668
  param desc ShakeDesc "Amount, duration and sound."
2670
2669
  returns Void
2671
2670
  }
2672
2671
  ```
2673
2672
 
2674
- <sub>`api.ogt` line 9483</sub>
2673
+ <sub>`api.ogt` line 11202</sub>
2675
2674
 
2676
2675
  <a id="fn-screenTransition"></a>
2677
2676
 
@@ -2703,7 +2702,7 @@ fn screenTransition {
2703
2702
  }
2704
2703
  ```
2705
2704
 
2706
- <sub>`api.ogt` line 9529</sub>
2705
+ <sub>`api.ogt` line 11248</sub>
2707
2706
 
2708
2707
  <a id="fn-previewViewport"></a>
2709
2708
 
@@ -2733,7 +2732,7 @@ fn previewViewport {
2733
2732
  }
2734
2733
  ```
2735
2734
 
2736
- <sub>`api.ogt` line 9537</sub>
2735
+ <sub>`api.ogt` line 11256</sub>
2737
2736
 
2738
2737
  <a id="fn-mainMenu"></a>
2739
2738
 
@@ -2764,7 +2763,7 @@ fn mainMenu {
2764
2763
  }
2765
2764
  ```
2766
2765
 
2767
- <sub>`api.ogt` line 10264</sub>
2766
+ <sub>`api.ogt` line 11983</sub>
2768
2767
 
2769
2768
  <a id="fn-pauseMenu"></a>
2770
2769
 
@@ -2795,7 +2794,7 @@ fn pauseMenu {
2795
2794
  }
2796
2795
  ```
2797
2796
 
2798
- <sub>`api.ogt` line 10272</sub>
2797
+ <sub>`api.ogt` line 11991</sub>
2799
2798
 
2800
2799
  <a id="fn-settingsScreen"></a>
2801
2800
 
@@ -2826,7 +2825,7 @@ fn settingsScreen {
2826
2825
  }
2827
2826
  ```
2828
2827
 
2829
- <sub>`api.ogt` line 10280</sub>
2828
+ <sub>`api.ogt` line 11999</sub>
2830
2829
 
2831
2830
  <a id="fn-platformerHud"></a>
2832
2831
 
@@ -2857,7 +2856,7 @@ fn platformerHud {
2857
2856
  }
2858
2857
  ```
2859
2858
 
2860
- <sub>`api.ogt` line 10288</sub>
2859
+ <sub>`api.ogt` line 12007</sub>
2861
2860
 
2862
2861
  <a id="fn-shooterHud"></a>
2863
2862
 
@@ -2888,7 +2887,7 @@ fn shooterHud {
2888
2887
  }
2889
2888
  ```
2890
2889
 
2891
- <sub>`api.ogt` line 10296</sub>
2890
+ <sub>`api.ogt` line 12015</sub>
2892
2891
 
2893
2892
  <a id="fn-puzzleHud"></a>
2894
2893
 
@@ -2919,7 +2918,7 @@ fn puzzleHud {
2919
2918
  }
2920
2919
  ```
2921
2920
 
2922
- <sub>`api.ogt` line 10304</sub>
2921
+ <sub>`api.ogt` line 12023</sub>
2923
2922
 
2924
2923
  <a id="fn-idleHud"></a>
2925
2924
 
@@ -2950,7 +2949,7 @@ fn idleHud {
2950
2949
  }
2951
2950
  ```
2952
2951
 
2953
- <sub>`api.ogt` line 10312</sub>
2952
+ <sub>`api.ogt` line 12031</sub>
2954
2953
 
2955
2954
  <a id="fn-racingHud"></a>
2956
2955
 
@@ -2981,7 +2980,7 @@ fn racingHud {
2981
2980
  }
2982
2981
  ```
2983
2982
 
2984
- <sub>`api.ogt` line 10320</sub>
2983
+ <sub>`api.ogt` line 12039</sub>
2985
2984
 
2986
2985
  <a id="fn-cutscene"></a>
2987
2986
 
@@ -3012,7 +3011,7 @@ fn cutscene {
3012
3011
  }
3013
3012
  ```
3014
3013
 
3015
- <sub>`api.ogt` line 10328</sub>
3014
+ <sub>`api.ogt` line 12047</sub>
3016
3015
 
3017
3016
  <a id="fn-shopScreen"></a>
3018
3017
 
@@ -3043,7 +3042,7 @@ fn shopScreen {
3043
3042
  }
3044
3043
  ```
3045
3044
 
3046
- <sub>`api.ogt` line 10336</sub>
3045
+ <sub>`api.ogt` line 12055</sub>
3047
3046
 
3048
3047
  <a id="fn-inventoryScreen"></a>
3049
3048
 
@@ -3074,7 +3073,7 @@ fn inventoryScreen {
3074
3073
  }
3075
3074
  ```
3076
3075
 
3077
- <sub>`api.ogt` line 10344</sub>
3076
+ <sub>`api.ogt` line 12063</sub>
3078
3077
 
3079
3078
  <a id="fn-levelSelect"></a>
3080
3079
 
@@ -3105,7 +3104,7 @@ fn levelSelect {
3105
3104
  }
3106
3105
  ```
3107
3106
 
3108
- <sub>`api.ogt` line 10352</sub>
3107
+ <sub>`api.ogt` line 12071</sub>
3109
3108
 
3110
3109
  <a id="fn-resultsScreen"></a>
3111
3110
 
@@ -3136,7 +3135,7 @@ fn resultsScreen {
3136
3135
  }
3137
3136
  ```
3138
3137
 
3139
- <sub>`api.ogt` line 10360</sub>
3138
+ <sub>`api.ogt` line 12079</sub>
3140
3139
 
3141
3140
  <a id="fn-leaderboardScreen"></a>
3142
3141
 
@@ -3167,7 +3166,7 @@ fn leaderboardScreen {
3167
3166
  }
3168
3167
  ```
3169
3168
 
3170
- <sub>`api.ogt` line 10368</sub>
3169
+ <sub>`api.ogt` line 12087</sub>
3171
3170
 
3172
3171
  <a id="fn-tutorialOverlay"></a>
3173
3172
 
@@ -3198,7 +3197,7 @@ fn tutorialOverlay {
3198
3197
  }
3199
3198
  ```
3200
3199
 
3201
- <sub>`api.ogt` line 10376</sub>
3200
+ <sub>`api.ogt` line 12095</sub>
3202
3201
 
3203
3202
  <a id="fn-loadingScreen"></a>
3204
3203
 
@@ -3229,7 +3228,7 @@ fn loadingScreen {
3229
3228
  }
3230
3229
  ```
3231
3230
 
3232
- <sub>`api.ogt` line 10384</sub>
3231
+ <sub>`api.ogt` line 12103</sub>
3233
3232
 
3234
3233
  <a id="fn-confirmDialog"></a>
3235
3234
 
@@ -3260,7 +3259,7 @@ fn confirmDialog {
3260
3259
  }
3261
3260
  ```
3262
3261
 
3263
- <sub>`api.ogt` line 10392</sub>
3262
+ <sub>`api.ogt` line 12111</sub>
3264
3263
 
3265
3264
  <a id="fn-alertDialog"></a>
3266
3265
 
@@ -3291,7 +3290,7 @@ fn alertDialog {
3291
3290
  }
3292
3291
  ```
3293
3292
 
3294
- <sub>`api.ogt` line 10400</sub>
3293
+ <sub>`api.ogt` line 12119</sub>
3295
3294
 
3296
3295
  ## Types
3297
3296
 
@@ -3316,7 +3315,7 @@ enum Direction {
3316
3315
  }
3317
3316
  ```
3318
3317
 
3319
- <sub>`api.ogt` line 7810</sub>
3318
+ <sub>`api.ogt` line 9558</sub>
3320
3319
 
3321
3320
  <a id="type-Align"></a>
3322
3321
 
@@ -3343,7 +3342,7 @@ enum Align {
3343
3342
  }
3344
3343
  ```
3345
3344
 
3346
- <sub>`api.ogt` line 7816</sub>
3345
+ <sub>`api.ogt` line 9564</sub>
3347
3346
 
3348
3347
  <a id="type-Cross"></a>
3349
3348
 
@@ -3370,7 +3369,7 @@ enum Cross {
3370
3369
  }
3371
3370
  ```
3372
3371
 
3373
- <sub>`api.ogt` line 7824</sub>
3372
+ <sub>`api.ogt` line 9572</sub>
3374
3373
 
3375
3374
  <a id="type-TextAlign"></a>
3376
3375
 
@@ -3395,7 +3394,7 @@ enum TextAlign {
3395
3394
  }
3396
3395
  ```
3397
3396
 
3398
- <sub>`api.ogt` line 7832</sub>
3397
+ <sub>`api.ogt` line 9580</sub>
3399
3398
 
3400
3399
  <a id="type-FontRole"></a>
3401
3400
 
@@ -3410,7 +3409,7 @@ A string: one of the variants below. The zero value is `"body"`.
3410
3409
  | `"body"` | The body font. |
3411
3410
  | `"display"` | The display font. |
3412
3411
  | `"mono"` | The monospaced font. |
3413
- | `"rounded"` | The rounded font, for levels and scores (the design language's font-rounded). |
3412
+ | `"rounded"` | The rounded font, for levels and scores. |
3414
3413
 
3415
3414
  ```ogt
3416
3415
  enum FontRole {
@@ -3418,38 +3417,38 @@ enum FontRole {
3418
3417
  variant body "The body font."
3419
3418
  variant display "The display font."
3420
3419
  variant mono "The monospaced font."
3421
- variant rounded "The rounded font, for levels and scores (the design language's font-rounded)."
3420
+ variant rounded "The rounded font, for levels and scores."
3422
3421
  }
3423
3422
  ```
3424
3423
 
3425
- <sub>`api.ogt` line 7839</sub>
3424
+ <sub>`api.ogt` line 9587</sub>
3426
3425
 
3427
3426
  <a id="type-ButtonVariant"></a>
3428
3427
 
3429
3428
  ### `ButtonVariant` (enum)
3430
3429
 
3431
- Button looks, as the design language's buttons.
3430
+ Button roles: how the style draws each.
3432
3431
 
3433
3432
  A string: one of the variants below. The zero value is `"secondary"`.
3434
3433
 
3435
3434
  | Variant | Doc |
3436
3435
  |---|---|
3437
3436
  | `"secondary"` | A neutral fill (the default). |
3438
- | `"primary"` | The amber action: one per screen. |
3437
+ | `"primary"` | The primary action: one per screen. |
3439
3438
  | `"quiet"` | Text until hovered. |
3440
3439
  | `"danger"` | A destructive action: danger ink on the danger tint. |
3441
3440
 
3442
3441
  ```ogt
3443
3442
  enum ButtonVariant {
3444
- doc "Button looks, as the design language's buttons."
3443
+ doc "Button roles: how the style draws each."
3445
3444
  variant secondary "A neutral fill (the default)."
3446
- variant primary "The amber action: one per screen."
3445
+ variant primary "The primary action: one per screen."
3447
3446
  variant quiet "Text until hovered."
3448
3447
  variant danger "A destructive action: danger ink on the danger tint."
3449
3448
  }
3450
3449
  ```
3451
3450
 
3452
- <sub>`api.ogt` line 7847</sub>
3451
+ <sub>`api.ogt` line 9595</sub>
3453
3452
 
3454
3453
  <a id="type-ControlSize"></a>
3455
3454
 
@@ -3474,7 +3473,7 @@ enum ControlSize {
3474
3473
  }
3475
3474
  ```
3476
3475
 
3477
- <sub>`api.ogt` line 7855</sub>
3476
+ <sub>`api.ogt` line 9603</sub>
3478
3477
 
3479
3478
  <a id="type-Scheme"></a>
3480
3479
 
@@ -3497,204 +3496,180 @@ enum Scheme {
3497
3496
  }
3498
3497
  ```
3499
3498
 
3500
- <sub>`api.ogt` line 7862</sub>
3499
+ <sub>`api.ogt` line 9610</sub>
3501
3500
 
3502
3501
  <a id="type-DensityMode"></a>
3503
3502
 
3504
3503
  ### `DensityMode` (enum)
3505
3504
 
3506
- Control sizes: auto picks touch sizes on a coarse pointer or a play surface under 768 px, compact otherwise.
3505
+ Control sizes by the input the player holds: auto picks touch sizes on a coarse pointer or a play surface under 768 px, mouse sizes otherwise.
3507
3506
 
3508
3507
  A string: one of the variants below. The zero value is `"auto"`.
3509
3508
 
3510
3509
  | Variant | Doc |
3511
3510
  |---|---|
3512
- | `"auto"` | Touch sizes on a coarse pointer or a narrow surface, compact otherwise. |
3513
- | `"compact"` | Compact controls. |
3514
- | `"comfortable"` | Comfortable controls. |
3515
- | `"touch"` | Touch-sized controls. |
3511
+ | `"auto"` | Touch sizes on a coarse pointer or a narrow surface, mouse sizes otherwise. |
3512
+ | `"mouse"` | A mouse and keyboard: the tightest controls. |
3513
+ | `"pad"` | A gamepad across a room: larger controls, rows and gutters that read from a couch. |
3514
+ | `"touch"` | A finger: every control at least 44 CSS px. |
3516
3515
 
3517
3516
  ```ogt
3518
3517
  enum DensityMode {
3519
- doc "Control sizes: auto picks touch sizes on a coarse pointer or a play surface under 768 px, compact otherwise."
3520
- variant auto "Touch sizes on a coarse pointer or a narrow surface, compact otherwise."
3521
- variant compact "Compact controls."
3522
- variant comfortable "Comfortable controls."
3523
- variant touch "Touch-sized controls."
3518
+ doc "Control sizes by the input the player holds: auto picks touch sizes on a coarse pointer or a play surface under 768 px, mouse sizes otherwise."
3519
+ variant auto "Touch sizes on a coarse pointer or a narrow surface, mouse sizes otherwise."
3520
+ variant mouse "A mouse and keyboard: the tightest controls."
3521
+ variant pad "A gamepad across a room: larger controls, rows and gutters that read from a couch."
3522
+ variant touch "A finger: every control at least 44 CSS px."
3524
3523
  }
3525
3524
  ```
3526
3525
 
3527
- <sub>`api.ogt` line 7868</sub>
3526
+ <sub>`api.ogt` line 9616</sub>
3528
3527
 
3529
3528
  <a id="type-ThemeColor"></a>
3530
3529
 
3531
3530
  ### `ThemeColor` (enum)
3532
3531
 
3533
- A semantic colour of the design tokens (tokens.json `color`, in the current scheme).
3532
+ A colour role of the UI style in effect (the game's style, or the prototype style before it picks one).
3534
3533
 
3535
- A string: one of the variants below. The zero value is `"accent"`.
3534
+ A string: one of the variants below. The zero value is `"backdrop"`.
3536
3535
 
3537
3536
  | Variant | Doc |
3538
3537
  |---|---|
3539
- | `"accent"` | accent: the amber action colour. |
3540
- | `"accentActive"` | accent-active. |
3541
- | `"accentFg"` | accent-fg: ink on the accent. |
3542
- | `"accentHover"` | accent-hover. |
3543
- | `"accentInk"` | accent-ink: the accent as text. |
3544
- | `"accentSoft"` | accent-soft: a translucent accent wash. |
3545
- | `"bg"` | bg: the page. |
3546
- | `"bgSubtle"` | bg-subtle. |
3547
- | `"border"` | border. |
3548
- | `"borderStrong"` | border-strong. |
3549
- | `"danger"` | danger. |
3550
- | `"fg"` | fg: the primary ink. |
3551
- | `"fgInverse"` | fg-inverse. |
3552
- | `"fgMuted"` | fg-muted. |
3553
- | `"fgSubtle"` | fg-subtle: placeholders. |
3554
- | `"fill"` | fill: neutral control fills. |
3555
- | `"fillStrong"` | fill-strong. |
3556
- | `"focus"` | focus: the focus ring. |
3557
- | `"info"` | info. |
3558
- | `"materialControl"` | material-control. |
3559
- | `"materialControlHover"` | material-control-hover. |
3560
- | `"materialEdge"` | material-edge. |
3561
- | `"materialGlow"` | material-glow. |
3562
- | `"materialRegular"` | material-regular. |
3563
- | `"materialRimSoft"` | material-rim-soft. |
3564
- | `"materialSheen"` | material-sheen. |
3565
- | `"materialShine"` | material-shine. |
3566
- | `"materialThick"` | material-thick. |
3567
- | `"materialThin"` | material-thin. |
3568
- | `"scrim"` | scrim. |
3569
- | `"shadow"` | shadow. |
3570
- | `"sheen"` | sheen. |
3571
- | `"stage"` | stage: the game stage. |
3572
- | `"stageBorder"` | stage-border. |
3573
- | `"stageDanger"` | stage-danger. |
3574
- | `"stageFg"` | stage-fg. |
3575
- | `"stageMuted"` | stage-muted. |
3576
- | `"stageRaised"` | stage-raised. |
3577
- | `"stageSurface"` | stage-surface. |
3578
- | `"success"` | success. |
3579
- | `"surface"` | surface: cards and panels. |
3580
- | `"surfaceHover"` | surface-hover. |
3581
- | `"surfaceRaised"` | surface-raised: tooltips. |
3582
- | `"thumb"` | thumb: slider and switch thumbs. |
3583
- | `"warn"` | warn. |
3538
+ | `"backdrop"` | The screen behind the UI where nothing else is. |
3539
+ | `"well"` | A recessed ground inside a panel: wells, map frames, empty slots. |
3540
+ | `"panel"` | Panels and cards. |
3541
+ | `"panelHover"` | A panel under the pointer. |
3542
+ | `"panelRaised"` | Dialogs, menus and tooltips. |
3543
+ | `"line"` | Hairlines and frames. |
3544
+ | `"lineStrong"` | Stronger frames: high contrast, map borders, scrollbars. |
3545
+ | `"ink"` | The main ink. |
3546
+ | `"inkMuted"` | Secondary ink: captions, keys, inactive tabs. |
3547
+ | `"inkFaint"` | The faintest ink that still reads: placeholders, hints. |
3548
+ | `"inkInverse"` | Ink on a ground of ink (a selected chip). |
3549
+ | `"control"` | Neutral control fills: secondary buttons, tracks, fields. |
3550
+ | `"controlStrong"` | A neutral control hovered or pressed; selection. |
3551
+ | `"primary"` | The one directed action: primary buttons, a slider's fill, a switch that is on, the caret. |
3552
+ | `"primaryHover"` | primary hovered. |
3553
+ | `"primaryActive"` | primary pressed. |
3554
+ | `"onPrimary"` | Ink on primary. |
3555
+ | `"primarySoft"` | A translucent wash of primary. |
3556
+ | `"highlight"` | Emphasised ink: a speaker's name, a price, a link, the player's map dot. |
3557
+ | `"focus"` | The focus ring of key and pad navigation. |
3558
+ | `"knob"` | Slider and switch knobs. |
3559
+ | `"hud"` | HUD capsules over the game (scores, timers, toasts). |
3560
+ | `"scrim"` | Behind a dialog. |
3561
+ | `"shadow"` | Drop shadows. |
3562
+ | `"sheen"` | A skeleton's passing sheen. |
3563
+ | `"success"` | Success. |
3564
+ | `"warn"` | Warnings. |
3565
+ | `"danger"` | Danger and errors. |
3566
+ | `"info"` | Information. |
3567
+ | `"health"` | A health meter. |
3568
+ | `"mana"` | A mana meter. |
3569
+ | `"xp"` | An experience meter. |
3570
+ | `"gold"` | Currency: coins, gold, prices that can be paid. |
3584
3571
 
3585
3572
  ```ogt
3586
3573
  enum ThemeColor {
3587
- doc "A semantic colour of the design tokens (tokens.json `color`, in the current scheme)."
3588
- variant accent "accent: the amber action colour."
3589
- variant accentActive "accent-active."
3590
- variant accentFg "accent-fg: ink on the accent."
3591
- variant accentHover "accent-hover."
3592
- variant accentInk "accent-ink: the accent as text."
3593
- variant accentSoft "accent-soft: a translucent accent wash."
3594
- variant bg "bg: the page."
3595
- variant bgSubtle "bg-subtle."
3596
- variant border "border."
3597
- variant borderStrong "border-strong."
3598
- variant danger "danger."
3599
- variant fg "fg: the primary ink."
3600
- variant fgInverse "fg-inverse."
3601
- variant fgMuted "fg-muted."
3602
- variant fgSubtle "fg-subtle: placeholders."
3603
- variant fill "fill: neutral control fills."
3604
- variant fillStrong "fill-strong."
3605
- variant focus "focus: the focus ring."
3606
- variant info "info."
3607
- variant materialControl "material-control."
3608
- variant materialControlHover "material-control-hover."
3609
- variant materialEdge "material-edge."
3610
- variant materialGlow "material-glow."
3611
- variant materialRegular "material-regular."
3612
- variant materialRimSoft "material-rim-soft."
3613
- variant materialSheen "material-sheen."
3614
- variant materialShine "material-shine."
3615
- variant materialThick "material-thick."
3616
- variant materialThin "material-thin."
3617
- variant scrim "scrim."
3618
- variant shadow "shadow."
3619
- variant sheen "sheen."
3620
- variant stage "stage: the game stage."
3621
- variant stageBorder "stage-border."
3622
- variant stageDanger "stage-danger."
3623
- variant stageFg "stage-fg."
3624
- variant stageMuted "stage-muted."
3625
- variant stageRaised "stage-raised."
3626
- variant stageSurface "stage-surface."
3627
- variant success "success."
3628
- variant surface "surface: cards and panels."
3629
- variant surfaceHover "surface-hover."
3630
- variant surfaceRaised "surface-raised: tooltips."
3631
- variant thumb "thumb: slider and switch thumbs."
3632
- variant warn "warn."
3633
- }
3634
- ```
3635
-
3636
- <sub>`api.ogt` line 7876</sub>
3574
+ doc "A colour role of the UI style in effect (the game's style, or the prototype style before it picks one)."
3575
+ variant backdrop "The screen behind the UI where nothing else is."
3576
+ variant well "A recessed ground inside a panel: wells, map frames, empty slots."
3577
+ variant panel "Panels and cards."
3578
+ variant panelHover "A panel under the pointer."
3579
+ variant panelRaised "Dialogs, menus and tooltips."
3580
+ variant line "Hairlines and frames."
3581
+ variant lineStrong "Stronger frames: high contrast, map borders, scrollbars."
3582
+ variant ink "The main ink."
3583
+ variant inkMuted "Secondary ink: captions, keys, inactive tabs."
3584
+ variant inkFaint "The faintest ink that still reads: placeholders, hints."
3585
+ variant inkInverse "Ink on a ground of ink (a selected chip)."
3586
+ variant control "Neutral control fills: secondary buttons, tracks, fields."
3587
+ variant controlStrong "A neutral control hovered or pressed; selection."
3588
+ variant primary "The one directed action: primary buttons, a slider's fill, a switch that is on, the caret."
3589
+ variant primaryHover "primary hovered."
3590
+ variant primaryActive "primary pressed."
3591
+ variant onPrimary "Ink on primary."
3592
+ variant primarySoft "A translucent wash of primary."
3593
+ variant highlight "Emphasised ink: a speaker's name, a price, a link, the player's map dot."
3594
+ variant focus "The focus ring of key and pad navigation."
3595
+ variant knob "Slider and switch knobs."
3596
+ variant hud "HUD capsules over the game (scores, timers, toasts)."
3597
+ variant scrim "Behind a dialog."
3598
+ variant shadow "Drop shadows."
3599
+ variant sheen "A skeleton's passing sheen."
3600
+ variant success "Success."
3601
+ variant warn "Warnings."
3602
+ variant danger "Danger and errors."
3603
+ variant info "Information."
3604
+ variant health "A health meter."
3605
+ variant mana "A mana meter."
3606
+ variant xp "An experience meter."
3607
+ variant gold "Currency: coins, gold, prices that can be paid."
3608
+ }
3609
+ ```
3610
+
3611
+ <sub>`api.ogt` line 9624</sub>
3637
3612
 
3638
3613
  <a id="type-TypeStepName"></a>
3639
3614
 
3640
3615
  ### `TypeStepName` (enum)
3641
3616
 
3642
- A step of the type ramp (tokens.json `font.scale`).
3617
+ A step of the style's type ramp.
3643
3618
 
3644
3619
  A string: one of the variants below. The zero value is `"body"`.
3645
3620
 
3646
3621
  | Variant | Doc |
3647
3622
  |---|---|
3648
- | `"body"` | text-body, the default. |
3649
- | `"xs"` | text-xs. |
3650
- | `"meta"` | text-meta. |
3651
- | `"caption"` | text-caption. |
3652
- | `"sm"` | text-sm. |
3653
- | `"reading"` | text-reading. |
3654
- | `"base"` | text-base. |
3655
- | `"lg"` | text-lg. |
3656
- | `"xl"` | text-xl. |
3657
- | `"xl2"` | text-2xl. |
3658
- | `"xl3"` | text-3xl. |
3659
- | `"xl4"` | text-4xl. |
3660
- | `"xl5"` | text-5xl. |
3661
- | `"xl6"` | text-6xl. |
3662
- | `"xl7"` | text-7xl. |
3663
- | `"xl8"` | text-8xl. |
3664
- | `"displaySm"` | text-display-sm. |
3665
- | `"displayMd"` | text-display-md. |
3666
- | `"displayLg"` | text-display-lg. |
3667
- | `"displayXl"` | text-display-xl. |
3668
- | `"displayXl2"` | text-display-2xl. |
3623
+ | `"body"` | The default step. |
3624
+ | `"xs"` | A step of the ramp. |
3625
+ | `"meta"` | A step of the ramp. |
3626
+ | `"caption"` | A step of the ramp. |
3627
+ | `"sm"` | A step of the ramp. |
3628
+ | `"reading"` | A step of the ramp. |
3629
+ | `"base"` | A step of the ramp. |
3630
+ | `"lg"` | A step of the ramp. |
3631
+ | `"xl"` | A step of the ramp. |
3632
+ | `"xl2"` | A step of the ramp. |
3633
+ | `"xl3"` | A step of the ramp. |
3634
+ | `"xl4"` | A step of the ramp. |
3635
+ | `"xl5"` | A step of the ramp. |
3636
+ | `"xl6"` | A step of the ramp. |
3637
+ | `"xl7"` | A step of the ramp. |
3638
+ | `"xl8"` | A step of the ramp. |
3639
+ | `"displaySm"` | A step of the ramp. |
3640
+ | `"displayMd"` | A step of the ramp. |
3641
+ | `"displayLg"` | A step of the ramp. |
3642
+ | `"displayXl"` | A step of the ramp. |
3643
+ | `"displayXl2"` | A step of the ramp. |
3669
3644
 
3670
3645
  ```ogt
3671
3646
  enum TypeStepName {
3672
- doc "A step of the type ramp (tokens.json `font.scale`)."
3673
- variant body "text-body, the default."
3674
- variant xs "text-xs."
3675
- variant meta "text-meta."
3676
- variant caption "text-caption."
3677
- variant sm "text-sm."
3678
- variant reading "text-reading."
3679
- variant base "text-base."
3680
- variant lg "text-lg."
3681
- variant xl "text-xl."
3682
- variant xl2 "text-2xl."
3683
- variant xl3 "text-3xl."
3684
- variant xl4 "text-4xl."
3685
- variant xl5 "text-5xl."
3686
- variant xl6 "text-6xl."
3687
- variant xl7 "text-7xl."
3688
- variant xl8 "text-8xl."
3689
- variant displaySm "text-display-sm."
3690
- variant displayMd "text-display-md."
3691
- variant displayLg "text-display-lg."
3692
- variant displayXl "text-display-xl."
3693
- variant displayXl2 "text-display-2xl."
3694
- }
3695
- ```
3696
-
3697
- <sub>`api.ogt` line 7925</sub>
3647
+ doc "A step of the style's type ramp."
3648
+ variant body "The default step."
3649
+ variant xs "A step of the ramp."
3650
+ variant meta "A step of the ramp."
3651
+ variant caption "A step of the ramp."
3652
+ variant sm "A step of the ramp."
3653
+ variant reading "A step of the ramp."
3654
+ variant base "A step of the ramp."
3655
+ variant lg "A step of the ramp."
3656
+ variant xl "A step of the ramp."
3657
+ variant xl2 "A step of the ramp."
3658
+ variant xl3 "A step of the ramp."
3659
+ variant xl4 "A step of the ramp."
3660
+ variant xl5 "A step of the ramp."
3661
+ variant xl6 "A step of the ramp."
3662
+ variant xl7 "A step of the ramp."
3663
+ variant xl8 "A step of the ramp."
3664
+ variant displaySm "A step of the ramp."
3665
+ variant displayMd "A step of the ramp."
3666
+ variant displayLg "A step of the ramp."
3667
+ variant displayXl "A step of the ramp."
3668
+ variant displayXl2 "A step of the ramp."
3669
+ }
3670
+ ```
3671
+
3672
+ <sub>`api.ogt` line 9661</sub>
3698
3673
 
3699
3674
  <a id="type-SizeRange"></a>
3700
3675
 
@@ -3721,7 +3696,7 @@ struct SizeRange {
3721
3696
  }
3722
3697
  ```
3723
3698
 
3724
- <sub>`api.ogt` line 7950</sub>
3699
+ <sub>`api.ogt` line 9686</sub>
3725
3700
 
3726
3701
  <a id="type-FixedSize"></a>
3727
3702
 
@@ -3742,7 +3717,7 @@ struct FixedSize {
3742
3717
  }
3743
3718
  ```
3744
3719
 
3745
- <sub>`api.ogt` line 7962</sub>
3720
+ <sub>`api.ogt` line 9698</sub>
3746
3721
 
3747
3722
  <a id="type-PercentSize"></a>
3748
3723
 
@@ -3763,7 +3738,7 @@ struct PercentSize {
3763
3738
  }
3764
3739
  ```
3765
3740
 
3766
- <sub>`api.ogt` line 7969</sub>
3741
+ <sub>`api.ogt` line 9705</sub>
3767
3742
 
3768
3743
  <a id="type-Size"></a>
3769
3744
 
@@ -3791,7 +3766,7 @@ union Size {
3791
3766
  }
3792
3767
  ```
3793
3768
 
3794
- <sub>`api.ogt` line 7976</sub>
3769
+ <sub>`api.ogt` line 9712</sub>
3795
3770
 
3796
3771
  <a id="type-Insets"></a>
3797
3772
 
@@ -3824,7 +3799,7 @@ struct Insets {
3824
3799
  }
3825
3800
  ```
3826
3801
 
3827
- <sub>`api.ogt` line 7985</sub>
3802
+ <sub>`api.ogt` line 9721</sub>
3828
3803
 
3829
3804
  <a id="type-Paint"></a>
3830
3805
 
@@ -3854,7 +3829,7 @@ struct Paint {
3854
3829
  }
3855
3830
  ```
3856
3831
 
3857
- <sub>`api.ogt` line 8001</sub>
3832
+ <sub>`api.ogt` line 9737</sub>
3858
3833
 
3859
3834
  <a id="type-ElementDesc"></a>
3860
3835
 
@@ -3879,7 +3854,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
3879
3854
  | `interactive` | `boolean` | `false` | — | — | — | Report a Response from close(), as a button does. |
3880
3855
  | `background` | `Paint \| null` | `null` | — | — | — | Its fill; null draws none. |
3881
3856
  | `radius` | `number` | `0` | — | `cssPx` | — | Corner radius. |
3882
- | `frame` | `SkinPart \| null` | `null` | — | — | — | The skin frame its background takes (a HUD capsule, a card); null is a plain fill. Without a skin the fill is drawn either way. |
3857
+ | `frame` | `StylePart \| null` | `null` | — | — | — | The style frame its background takes (a HUD element, a card); null is a plain fill. Without a style the fill is drawn either way. |
3883
3858
  | `aspect` | `number` | `0` | ≥ 0 | — | — | Width over height (0: none): with the height left to fit, it is as tall as its laid-out width over this; with a fixed height and the width left to fit, as wide as the height times it. |
3884
3859
 
3885
3860
  ```ogt
@@ -3903,14 +3878,14 @@ struct ElementDesc {
3903
3878
  field radius f32 "Corner radius." {
3904
3879
  unit cssPx
3905
3880
  }
3906
- field frame Option.SkinPart "The skin frame its background takes (a HUD capsule, a card); null is a plain fill. Without a skin the fill is drawn either way."
3881
+ field frame Option.StylePart "The style frame its background takes (a HUD element, a card); null is a plain fill. Without a style the fill is drawn either way."
3907
3882
  field aspect f32 "Width over height (0: none): with the height left to fit, it is as tall as its laid-out width over this; with a fixed height and the width left to fit, as wide as the height times it." {
3908
3883
  min 0
3909
3884
  }
3910
3885
  }
3911
3886
  ```
3912
3887
 
3913
- <sub>`api.ogt` line 8013</sub>
3888
+ <sub>`api.ogt` line 9749</sub>
3914
3889
 
3915
3890
  <a id="type-LabelDesc"></a>
3916
3891
 
@@ -3923,12 +3898,12 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
3923
3898
  | Field | Type | Default | Range | Unit | Notes | Doc |
3924
3899
  |---|---|---|---|---|---|---|
3925
3900
  | `step` | `TypeStepName \| null` | `null` | — | — | — | The type step; null is body. |
3926
- | `color` | `Paint \| null` | `null` | — | — | — | The ink; null is fg. |
3901
+ | `color` | `Paint \| null` | `null` | — | — | — | The ink; null is ink. |
3927
3902
  | `align` | `TextAlign` | `"start"` | — | — | — | How the lines align. |
3928
3903
  | `nowrap` | `boolean` | `false` | — | — | — | Keep to one line (breaking only at `\n`). |
3929
3904
  | `width` | `Size \| null` | `null` | — | — | — | Its width; null fits the text. |
3930
3905
  | `font` | `FontRole` | `"body"` | — | — | — | Which font. |
3931
- | `heading` | `boolean` | `false` | — | — | — | A heading: a skin with a flourish frames it. |
3906
+ | `heading` | `boolean` | `false` | — | — | — | A heading: a style with a flourish frames it. |
3932
3907
  | `ellipsis` | `boolean` | `false` | — | — | — | Cut with an ellipsis where the text does not fit its width: on its one line (with nowrap; the label can then shrink in a row) or on its last line (maxLines). The probe still reads the whole text. |
3933
3908
  | `maxLines` | `number` | `0` | — | — | — | The most lines a wrapping label shows; 0 is no limit. With ellipsis the last ends in an ellipsis when text is left out. |
3934
3909
 
@@ -3937,18 +3912,18 @@ struct LabelDesc {
3937
3912
  doc "How a label draws its text."
3938
3913
  desc true
3939
3914
  field step Option.TypeStepName "The type step; null is body."
3940
- field color Option.Paint "The ink; null is fg."
3915
+ field color Option.Paint "The ink; null is ink."
3941
3916
  field align TextAlign "How the lines align."
3942
3917
  field nowrap bool "Keep to one line (breaking only at `\\n`)."
3943
3918
  field width Option.Size "Its width; null fits the text."
3944
3919
  field font FontRole "Which font."
3945
- field heading bool "A heading: a skin with a flourish frames it."
3920
+ field heading bool "A heading: a style with a flourish frames it."
3946
3921
  field ellipsis bool "Cut with an ellipsis where the text does not fit its width: on its one line (with nowrap; the label can then shrink in a row) or on its last line (maxLines). The probe still reads the whole text."
3947
3922
  field maxLines u32 "The most lines a wrapping label shows; 0 is no limit. With ellipsis the last ends in an ellipsis when text is left out."
3948
3923
  }
3949
3924
  ```
3950
3925
 
3951
- <sub>`api.ogt` line 8039</sub>
3926
+ <sub>`api.ogt` line 9775</sub>
3952
3927
 
3953
3928
  <a id="type-ButtonDesc"></a>
3954
3929
 
@@ -3978,13 +3953,13 @@ struct ButtonDesc {
3978
3953
  }
3979
3954
  ```
3980
3955
 
3981
- <sub>`api.ogt` line 8053</sub>
3956
+ <sub>`api.ogt` line 9789</sub>
3982
3957
 
3983
3958
  <a id="type-PanelDesc"></a>
3984
3959
 
3985
3960
  ### `PanelDesc` (desc struct)
3986
3961
 
3987
- A card: surface, the card radius, padded and spaced by the tokens.
3962
+ A card: panel, the panel radius, padded and spaced by the style.
3988
3963
 
3989
3964
  A desc: every field may be omitted and takes its default; `{}` is valid.
3990
3965
 
@@ -3997,11 +3972,11 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
3997
3972
  | `gap` | `number \| null` | `null` | — | — | — | Space between children; null is space.md. |
3998
3973
  | `align` | `Align` | `"start"` | — | — | — | Where children sit along the main axis. |
3999
3974
  | `cross` | `Cross` | `"start"` | — | — | — | Where children sit across it. |
4000
- | `background` | `Paint \| null` | `null` | — | — | — | Its fill; null is surface. |
3975
+ | `background` | `Paint \| null` | `null` | — | — | — | Its fill; null is panel. |
4001
3976
 
4002
3977
  ```ogt
4003
3978
  struct PanelDesc {
4004
- doc "A card: surface, the card radius, padded and spaced by the tokens."
3979
+ doc "A card: panel, the panel radius, padded and spaced by the style."
4005
3980
  desc true
4006
3981
  field row bool "Lay children left to right (the default is top to bottom)."
4007
3982
  field width Option.Size "Its width; null fits the content."
@@ -4010,11 +3985,11 @@ struct PanelDesc {
4010
3985
  field gap Option.f32 "Space between children; null is space.md."
4011
3986
  field align Align "Where children sit along the main axis."
4012
3987
  field cross Cross "Where children sit across it."
4013
- field background Option.Paint "Its fill; null is surface."
3988
+ field background Option.Paint "Its fill; null is panel."
4014
3989
  }
4015
3990
  ```
4016
3991
 
4017
- <sub>`api.ogt` line 8063</sub>
3992
+ <sub>`api.ogt` line 9799</sub>
4018
3993
 
4019
3994
  <a id="type-ScrollAxes"></a>
4020
3995
 
@@ -4039,7 +4014,7 @@ enum ScrollAxes {
4039
4014
  }
4040
4015
  ```
4041
4016
 
4042
- <sub>`api.ogt` line 8076</sub>
4017
+ <sub>`api.ogt` line 9812</sub>
4043
4018
 
4044
4019
  <a id="type-ScrollDesc"></a>
4045
4020
 
@@ -4071,7 +4046,7 @@ struct ScrollDesc {
4071
4046
  }
4072
4047
  ```
4073
4048
 
4074
- <sub>`api.ogt` line 8083</sub>
4049
+ <sub>`api.ogt` line 9819</sub>
4075
4050
 
4076
4051
  <a id="type-ImageDesc"></a>
4077
4052
 
@@ -4107,7 +4082,7 @@ struct ImageDesc {
4107
4082
  }
4108
4083
  ```
4109
4084
 
4110
- <sub>`api.ogt` line 8095</sub>
4085
+ <sub>`api.ogt` line 9831</sub>
4111
4086
 
4112
4087
  <a id="type-ZoomViewDesc"></a>
4113
4088
 
@@ -4149,7 +4124,7 @@ struct ZoomViewDesc {
4149
4124
  }
4150
4125
  ```
4151
4126
 
4152
- <sub>`api.ogt` line 8109</sub>
4127
+ <sub>`api.ogt` line 9845</sub>
4153
4128
 
4154
4129
  <a id="type-ZoomResult"></a>
4155
4130
 
@@ -4172,7 +4147,7 @@ struct ZoomResult {
4172
4147
  }
4173
4148
  ```
4174
4149
 
4175
- <sub>`api.ogt` line 8128</sub>
4150
+ <sub>`api.ogt` line 9864</sub>
4176
4151
 
4177
4152
  <a id="type-ProgressDesc"></a>
4178
4153
 
@@ -4194,7 +4169,7 @@ struct ProgressDesc {
4194
4169
  }
4195
4170
  ```
4196
4171
 
4197
- <sub>`api.ogt` line 8135</sub>
4172
+ <sub>`api.ogt` line 9871</sub>
4198
4173
 
4199
4174
  <a id="type-SliderDesc"></a>
4200
4175
 
@@ -4224,7 +4199,7 @@ struct SliderDesc {
4224
4199
  }
4225
4200
  ```
4226
4201
 
4227
- <sub>`api.ogt` line 8141</sub>
4202
+ <sub>`api.ogt` line 9877</sub>
4228
4203
 
4229
4204
  <a id="type-FieldDesc"></a>
4230
4205
 
@@ -4250,7 +4225,7 @@ struct FieldDesc {
4250
4225
  }
4251
4226
  ```
4252
4227
 
4253
- <sub>`api.ogt` line 8152</sub>
4228
+ <sub>`api.ogt` line 9888</sub>
4254
4229
 
4255
4230
  <a id="type-TextAreaDesc"></a>
4256
4231
 
@@ -4278,7 +4253,7 @@ struct TextAreaDesc {
4278
4253
  }
4279
4254
  ```
4280
4255
 
4281
- <sub>`api.ogt` line 8160</sub>
4256
+ <sub>`api.ogt` line 9896</sub>
4282
4257
 
4283
4258
  <a id="type-Response"></a>
4284
4259
 
@@ -4313,7 +4288,7 @@ struct Response {
4313
4288
  }
4314
4289
  ```
4315
4290
 
4316
- <sub>`api.ogt` line 8169</sub>
4291
+ <sub>`api.ogt` line 9905</sub>
4317
4292
 
4318
4293
  <a id="type-SliderResult"></a>
4319
4294
 
@@ -4334,7 +4309,7 @@ struct SliderResult {
4334
4309
  }
4335
4310
  ```
4336
4311
 
4337
- <sub>`api.ogt` line 8182</sub>
4312
+ <sub>`api.ogt` line 9918</sub>
4338
4313
 
4339
4314
  <a id="type-ToggleResult"></a>
4340
4315
 
@@ -4355,7 +4330,7 @@ struct ToggleResult {
4355
4330
  }
4356
4331
  ```
4357
4332
 
4358
- <sub>`api.ogt` line 8188</sub>
4333
+ <sub>`api.ogt` line 9924</sub>
4359
4334
 
4360
4335
  <a id="type-FieldResult"></a>
4361
4336
 
@@ -4376,7 +4351,7 @@ struct FieldResult {
4376
4351
  }
4377
4352
  ```
4378
4353
 
4379
- <sub>`api.ogt` line 8194</sub>
4354
+ <sub>`api.ogt` line 9930</sub>
4380
4355
 
4381
4356
  <a id="type-Viewport"></a>
4382
4357
 
@@ -4431,13 +4406,13 @@ struct Viewport {
4431
4406
  }
4432
4407
  ```
4433
4408
 
4434
- <sub>`api.ogt` line 8200</sub>
4409
+ <sub>`api.ogt` line 9936</sub>
4435
4410
 
4436
4411
  <a id="type-UiDesc"></a>
4437
4412
 
4438
4413
  ### `UiDesc` (desc struct)
4439
4414
 
4440
- How the UI looks: the scheme, the density, its fonts, the contrast, the game's accent, motion, transparency, the icon atlas, the skin and the sounds. og.ui.configure takes it in part: a field left out keeps the value the last call (or a look's skin) gave it, null clears it.
4415
+ How the UI looks: the scheme, the density, its fonts, the contrast, the game's primary colour, motion, transparency, the icon atlas, the style and the sounds. og.ui.configure takes it in part: a field left out keeps the value the last call (or a look's style) gave it, null clears it.
4441
4416
 
4442
4417
  A desc: every field may be omitted and takes its default; `{}` is valid.
4443
4418
 
@@ -4451,18 +4426,17 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
4451
4426
  | `roundedFont` | `Font \| null` | `null` | — | — | — | The rounded font (levels and scores); null uses the display font, then the body font. |
4452
4427
  | `fallbackFonts` | `readonly Font[]` | `[]` | — | — | — | Fonts for other scripts (Hebrew, Devanagari, a CJK face with `font { runtime true }`), tried in order after the locale's (og.i18n) for a text the role's font cannot draw whole. A text mixing scripts takes each run from the first font that has it (the role's for its Latin, a fallback for its CJK or Arabic), one label in several fonts. |
4453
4428
  | `contrast` | `Contrast` | `"standard"` | — | — | — | Standard or high contrast. The page's prefers-contrast: more takes high contrast too (Viewport.highContrast). |
4454
- | `accentHue` | `HueName \| null` | `null` | — | — | — | A token hue as the game's accent (its hover, active, ink and focus tones derived as the tokens derive amber's); null keeps amber. |
4455
- | `accentColor` | `Color \| null` | `null` | — | — | — | An sRGB colour as the game's accent, when no hue is given. |
4429
+ | `primaryColor` | `Color \| null` | `null` | — | — | — | An sRGB colour as the game's primary (its hover, pressed and soft tones derived from it, the ink on it whichever of ink and inkInverse reads better); null keeps the style's. |
4456
4430
  | `reducedMotion` | `boolean` | `false` | — | — | — | Transitions only fade; sheens stop. The page's prefers-reduced-motion turns it on too (Viewport.reducedMotion). |
4457
- | `reducedTransparency` | `boolean` | `false` | — | — | — | Nothing is see-through: glass parts (a skin's glass line) are opaque surfaces (no blur of the frame under them, their frame whole), the scrim is the opaque colour it makes over bg and the translucent fills (fill, fillStrong, accentSoft, the material grounds) the opaque colours they make over surface. The page's prefers-reduced-transparency turns it on too (Viewport.reducedTransparency); UiTheme.reducedTransparency says it is on. |
4458
- | `icons` | `IconAtlasDesc \| null` | `null` | — | — | — | The icon atlas og.ui.icon draws from; null takes the skin's. |
4431
+ | `reducedTransparency` | `boolean` | `false` | — | — | — | Nothing is see-through: glass parts (a style's glass line) are opaque surfaces (no blur of the frame under them, their frame whole), the scrim is the opaque colour it makes over backdrop and the translucent fills (control, controlStrong, primarySoft, hud) the opaque colours they make over panel. The page's prefers-reduced-transparency turns it on too (Viewport.reducedTransparency); UiTheme.reducedTransparency says it is on. |
4432
+ | `icons` | `IconAtlasDesc \| null` | `null` | — | — | — | The icon atlas og.ui.icon draws from; null takes the style's. |
4459
4433
  | `toastAnchor` | `Anchor \| null` | `null` | — | — | — | Where toasts stack; null is the bottom centre. |
4460
- | `skin` | `Skin \| null` | `null` | — | — | — | A skin from og.load.skin: its palette, radii, type ramp, fonts, icons, frames, ornaments, motion and sounds replace the token look (fonts, icons and an accent given here still win); null is the platform tokens. |
4461
- | `sounds` | `UiSounds \| null` | `null` | — | — | — | Sounds for UI events (they win over the skin's). |
4434
+ | `style` | `Style \| null` | `null` | — | — | — | A UI style from og.load.style: its palette, radii, type ramp, fonts, icons, frames, ornaments, motion and sounds replace the prototype style (fonts, icons and a primary colour given here still win); null is the prototype style, the engine's placeholder. |
4435
+ | `sounds` | `UiSounds \| null` | `null` | — | — | — | Sounds for UI events (they win over the style's). |
4462
4436
 
4463
4437
  ```ogt
4464
4438
  struct UiDesc {
4465
- doc "How the UI looks: the scheme, the density, its fonts, the contrast, the game's accent, motion, transparency, the icon atlas, the skin and the sounds. og.ui.configure takes it in part: a field left out keeps the value the last call (or a look's skin) gave it, null clears it."
4439
+ doc "How the UI looks: the scheme, the density, its fonts, the contrast, the game's primary colour, motion, transparency, the icon atlas, the style and the sounds. og.ui.configure takes it in part: a field left out keeps the value the last call (or a look's style) gave it, null clears it."
4466
4440
  desc true
4467
4441
  field scheme Scheme "The palette."
4468
4442
  field density DensityMode "The control sizes."
@@ -4472,18 +4446,17 @@ struct UiDesc {
4472
4446
  field roundedFont Option.Font "The rounded font (levels and scores); null uses the display font, then the body font."
4473
4447
  field fallbackFonts List.Font "Fonts for other scripts (Hebrew, Devanagari, a CJK face with `font { runtime true }`), tried in order after the locale's (og.i18n) for a text the role's font cannot draw whole. A text mixing scripts takes each run from the first font that has it (the role's for its Latin, a fallback for its CJK or Arabic), one label in several fonts."
4474
4448
  field contrast Contrast "Standard or high contrast. The page's prefers-contrast: more takes high contrast too (Viewport.highContrast)."
4475
- field accentHue Option.HueName "A token hue as the game's accent (its hover, active, ink and focus tones derived as the tokens derive amber's); null keeps amber."
4476
- field accentColor Option.Color "An sRGB colour as the game's accent, when no hue is given."
4449
+ field primaryColor Option.Color "An sRGB colour as the game's primary (its hover, pressed and soft tones derived from it, the ink on it whichever of ink and inkInverse reads better); null keeps the style's."
4477
4450
  field reducedMotion bool "Transitions only fade; sheens stop. The page's prefers-reduced-motion turns it on too (Viewport.reducedMotion)."
4478
- field reducedTransparency bool "Nothing is see-through: glass parts (a skin's glass line) are opaque surfaces (no blur of the frame under them, their frame whole), the scrim is the opaque colour it makes over bg and the translucent fills (fill, fillStrong, accentSoft, the material grounds) the opaque colours they make over surface. The page's prefers-reduced-transparency turns it on too (Viewport.reducedTransparency); UiTheme.reducedTransparency says it is on."
4479
- field icons Option.IconAtlasDesc "The icon atlas og.ui.icon draws from; null takes the skin's."
4451
+ field reducedTransparency bool "Nothing is see-through: glass parts (a style's glass line) are opaque surfaces (no blur of the frame under them, their frame whole), the scrim is the opaque colour it makes over backdrop and the translucent fills (control, controlStrong, primarySoft, hud) the opaque colours they make over panel. The page's prefers-reduced-transparency turns it on too (Viewport.reducedTransparency); UiTheme.reducedTransparency says it is on."
4452
+ field icons Option.IconAtlasDesc "The icon atlas og.ui.icon draws from; null takes the style's."
4480
4453
  field toastAnchor Option.Anchor "Where toasts stack; null is the bottom centre."
4481
- field skin Option.Skin "A skin from og.load.skin: its palette, radii, type ramp, fonts, icons, frames, ornaments, motion and sounds replace the token look (fonts, icons and an accent given here still win); null is the platform tokens."
4482
- field sounds Option.UiSounds "Sounds for UI events (they win over the skin's)."
4454
+ field style Option.Style "A UI style from og.load.style: its palette, radii, type ramp, fonts, icons, frames, ornaments, motion and sounds replace the prototype style (fonts, icons and a primary colour given here still win); null is the prototype style, the engine's placeholder."
4455
+ field sounds Option.UiSounds "Sounds for UI events (they win over the style's)."
4483
4456
  }
4484
4457
  ```
4485
4458
 
4486
- <sub>`api.ogt` line 8231</sub>
4459
+ <sub>`api.ogt` line 9967</sub>
4487
4460
 
4488
4461
  <a id="type-UiSounds"></a>
4489
4462
 
@@ -4515,13 +4488,13 @@ struct UiSounds {
4515
4488
  }
4516
4489
  ```
4517
4490
 
4518
- <sub>`api.ogt` line 8252</sub>
4491
+ <sub>`api.ogt` line 9987</sub>
4519
4492
 
4520
- <a id="type-SkinPart"></a>
4493
+ <a id="type-StylePart"></a>
4521
4494
 
4522
- ### `SkinPart` (enum)
4495
+ ### `StylePart` (enum)
4523
4496
 
4524
- An element class a skin dresses with a nine-slice frame.
4497
+ An element class a style dresses with a nine-slice frame.
4525
4498
 
4526
4499
  A string: one of the variants below. The zero value is `"panel"`.
4527
4500
 
@@ -4533,24 +4506,24 @@ A string: one of the variants below. The zero value is `"panel"`.
4533
4506
  | `"field"` | Text fields. |
4534
4507
  | `"slot"` | Inventory and grid cells. |
4535
4508
  | `"tooltip"` | Tooltips. |
4536
- | `"capsule"` | HUD capsules and toasts. |
4509
+ | `"hud"` | HUD elements over the game (counters, timers) and toasts. |
4537
4510
  | `"track"` | A progress bar's track. |
4538
4511
 
4539
4512
  ```ogt
4540
- enum SkinPart {
4541
- doc "An element class a skin dresses with a nine-slice frame."
4513
+ enum StylePart {
4514
+ doc "An element class a style dresses with a nine-slice frame."
4542
4515
  variant panel "Dialogs and screen panels."
4543
4516
  variant card "Cards."
4544
4517
  variant button "Buttons (with hover, pressed and disabled states)."
4545
4518
  variant field "Text fields."
4546
4519
  variant slot "Inventory and grid cells."
4547
4520
  variant tooltip "Tooltips."
4548
- variant capsule "HUD capsules and toasts."
4521
+ variant hud "HUD elements over the game (counters, timers) and toasts."
4549
4522
  variant track "A progress bar's track."
4550
4523
  }
4551
4524
  ```
4552
4525
 
4553
- <sub>`api.ogt` line 8263</sub>
4526
+ <sub>`api.ogt` line 9998</sub>
4554
4527
 
4555
4528
  <a id="type-TypeStep"></a>
4556
4529
 
@@ -4581,7 +4554,7 @@ struct TypeStep {
4581
4554
  }
4582
4555
  ```
4583
4556
 
4584
- <sub>`api.ogt` line 8275</sub>
4557
+ <sub>`api.ogt` line 10010</sub>
4585
4558
 
4586
4559
  <a id="type-ControlSizes"></a>
4587
4560
 
@@ -4591,9 +4564,9 @@ The control, row and header heights and the gutter of the density in effect.
4591
4564
 
4592
4565
  | Field | Type | Default | Range | Unit | Notes | Doc |
4593
4566
  |---|---|---|---|---|---|---|
4594
- | `controlSm` | `number` | `0` | — | `cssPx` | — | h-control-sm. |
4595
- | `controlMd` | `number` | `0` | — | `cssPx` | — | h-control-md. |
4596
- | `controlLg` | `number` | `0` | — | `cssPx` | — | h-control-lg. |
4567
+ | `controlSm` | `number` | `0` | — | `cssPx` | — | A small control's height. |
4568
+ | `controlMd` | `number` | `0` | — | `cssPx` | — | A control's height. |
4569
+ | `controlLg` | `number` | `0` | — | `cssPx` | — | A large control's height. |
4597
4570
  | `gutter` | `number` | `0` | — | `cssPx` | — | The gutter. |
4598
4571
  | `header` | `number` | `0` | — | `cssPx` | — | The header height. |
4599
4572
  | `row` | `number` | `0` | — | `cssPx` | — | The row height. |
@@ -4602,13 +4575,13 @@ The control, row and header heights and the gutter of the density in effect.
4602
4575
  ```ogt
4603
4576
  struct ControlSizes {
4604
4577
  doc "The control, row and header heights and the gutter of the density in effect."
4605
- field controlSm f32 "h-control-sm." {
4578
+ field controlSm f32 "A small control's height." {
4606
4579
  unit cssPx
4607
4580
  }
4608
- field controlMd f32 "h-control-md." {
4581
+ field controlMd f32 "A control's height." {
4609
4582
  unit cssPx
4610
4583
  }
4611
- field controlLg f32 "h-control-lg." {
4584
+ field controlLg f32 "A large control's height." {
4612
4585
  unit cssPx
4613
4586
  }
4614
4587
  field gutter f32 "The gutter." {
@@ -4626,46 +4599,46 @@ struct ControlSizes {
4626
4599
  }
4627
4600
  ```
4628
4601
 
4629
- <sub>`api.ogt` line 8289</sub>
4602
+ <sub>`api.ogt` line 10024</sub>
4630
4603
 
4631
4604
  <a id="type-UiTheme"></a>
4632
4605
 
4633
4606
  ### `UiTheme` (struct)
4634
4607
 
4635
- The design tokens the UI draws with, read-only.
4608
+ The style values the UI draws with, read-only.
4636
4609
 
4637
4610
  | Field | Type | Default | Range | Unit | Notes | Doc |
4638
4611
  |---|---|---|---|---|---|---|
4639
4612
  | `scheme` | `Scheme` | `"dark"` | — | — | — | The palette in use. |
4640
4613
  | `palette` | `Readonly<Record<string, string>>` | `{}` | — | — | — | Each ThemeColor as `#rrggbb` or `#rrggbbaa` (sRGB as authored). |
4641
4614
  | `space` | `Readonly<Record<string, number>>` | `{}` | — | — | — | The spacing scale by name (xxs, xs, sm, md, lg, xl, xxl, xl3), in CSS pixels. |
4642
- | `radius` | `Readonly<Record<string, number>>` | `{}` | — | — | — | The radius scale by name (control, field, block, card, panel, sheet, button), in CSS pixels. |
4615
+ | `radius` | `Readonly<Record<string, number>>` | `{}` | — | — | — | The corner radii by name (small, control, bar, panel), in CSS pixels. |
4643
4616
  | `typeRamp` | `Readonly<Record<string, TypeStep>>` | `{}` | — | — | — | Each TypeStepName's step. |
4644
4617
  | `sizes` | `ControlSizes` | `{ controlSm: 0, controlMd: 0, controlLg: 0, gutter: 0, header: 0, row: 0, section: 0 }` | — | — | — | The control sizes of the density in effect. |
4645
4618
  | `durationsMs` | `Readonly<Record<string, number>>` | `{}` | — | — | — | The motion durations by name (instant, fast, base, slow, spring, bounce), in milliseconds. |
4646
- | `skin` | `string` | `""` | — | — | — | The configured skin's name; empty for the platform tokens. |
4619
+ | `style` | `string` | `""` | — | — | — | The configured style's name; empty for the prototype style. |
4647
4620
  | `contrast` | `Contrast` | `"standard"` | — | — | — | The variant in effect: high when the game asked for it or the page prefers more contrast. |
4648
4621
  | `reducedMotion` | `boolean` | `false` | — | — | — | Transitions only fade and sheens stop: the game asked for it or the page prefers reduced motion. A game's own animations read it to keep their state changes and drop their movement. |
4649
- | `reducedTransparency` | `boolean` | `false` | — | — | — | Nothing is see-through: the scrim and the translucent fills of `palette` are already the opaque colours they make over the surface (the scrim over bg) and glass is an opaque surface; the game asked for it or the page prefers reduced transparency. A game's own translucent overlays read it to draw opaque too. |
4622
+ | `reducedTransparency` | `boolean` | `false` | — | — | — | Nothing is see-through: the scrim and the translucent fills of `palette` are already the opaque colours they make over panel (the scrim over backdrop) and glass is an opaque surface; the game asked for it or the page prefers reduced transparency. A game's own translucent overlays read it to draw opaque too. |
4650
4623
 
4651
4624
  ```ogt
4652
4625
  struct UiTheme {
4653
- doc "The design tokens the UI draws with, read-only."
4626
+ doc "The style values the UI draws with, read-only."
4654
4627
  field scheme Scheme "The palette in use."
4655
4628
  field palette Map.String "Each ThemeColor as `#rrggbb` or `#rrggbbaa` (sRGB as authored)."
4656
4629
  field space Map.f32 "The spacing scale by name (xxs, xs, sm, md, lg, xl, xxl, xl3), in CSS pixels."
4657
- field radius Map.f32 "The radius scale by name (control, field, block, card, panel, sheet, button), in CSS pixels."
4630
+ field radius Map.f32 "The corner radii by name (small, control, bar, panel), in CSS pixels."
4658
4631
  field typeRamp Map.TypeStep "Each TypeStepName's step."
4659
4632
  field sizes ControlSizes "The control sizes of the density in effect."
4660
4633
  field durationsMs Map.f32 "The motion durations by name (instant, fast, base, slow, spring, bounce), in milliseconds."
4661
- field skin String "The configured skin's name; empty for the platform tokens."
4634
+ field style String "The configured style's name; empty for the prototype style."
4662
4635
  field contrast Contrast "The variant in effect: high when the game asked for it or the page prefers more contrast."
4663
4636
  field reducedMotion bool "Transitions only fade and sheens stop: the game asked for it or the page prefers reduced motion. A game's own animations read it to keep their state changes and drop their movement."
4664
- field reducedTransparency bool "Nothing is see-through: the scrim and the translucent fills of `palette` are already the opaque colours they make over the surface (the scrim over bg) and glass is an opaque surface; the game asked for it or the page prefers reduced transparency. A game's own translucent overlays read it to draw opaque too."
4637
+ field reducedTransparency bool "Nothing is see-through: the scrim and the translucent fills of `palette` are already the opaque colours they make over panel (the scrim over backdrop) and glass is an opaque surface; the game asked for it or the page prefers reduced transparency. A game's own translucent overlays read it to draw opaque too."
4665
4638
  }
4666
4639
  ```
4667
4640
 
4668
- <sub>`api.ogt` line 8314</sub>
4641
+ <sub>`api.ogt` line 10049</sub>
4669
4642
 
4670
4643
  <a id="type-UiBuild"></a>
4671
4644
 
@@ -4685,7 +4658,7 @@ callback UiBuild {
4685
4658
  }
4686
4659
  ```
4687
4660
 
4688
- <sub>`api.ogt` line 8329</sub>
4661
+ <sub>`api.ogt` line 10064</sub>
4689
4662
 
4690
4663
  <a id="type-RichTextDesc"></a>
4691
4664
 
@@ -4698,7 +4671,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
4698
4671
  | Field | Type | Default | Range | Unit | Notes | Doc |
4699
4672
  |---|---|---|---|---|---|---|
4700
4673
  | `step` | `TypeStepName \| null` | `null` | — | — | — | The type step; null is body. |
4701
- | `color` | `Paint \| null` | `null` | — | — | — | The ink; null is fg. |
4674
+ | `color` | `Paint \| null` | `null` | — | — | — | The ink; null is ink. |
4702
4675
  | `align` | `TextAlign` | `"start"` | — | — | — | How the lines align. |
4703
4676
  | `nowrap` | `boolean` | `false` | — | — | — | Keep to one line (breaking only at `\n`). |
4704
4677
  | `width` | `Size \| null` | `null` | — | — | — | Its width; null fits the text. |
@@ -4709,7 +4682,7 @@ struct RichTextDesc {
4709
4682
  doc "How a rich text paragraph draws: its defaults, which its markup's spans override."
4710
4683
  desc true
4711
4684
  field step Option.TypeStepName "The type step; null is body."
4712
- field color Option.Paint "The ink; null is fg."
4685
+ field color Option.Paint "The ink; null is ink."
4713
4686
  field align TextAlign "How the lines align."
4714
4687
  field nowrap bool "Keep to one line (breaking only at `\\n`)."
4715
4688
  field width Option.Size "Its width; null fits the text."
@@ -4717,7 +4690,7 @@ struct RichTextDesc {
4717
4690
  }
4718
4691
  ```
4719
4692
 
4720
- <sub>`api.ogt` line 8414</sub>
4693
+ <sub>`api.ogt` line 10149</sub>
4721
4694
 
4722
4695
  <a id="type-RichTextResult"></a>
4723
4696
 
@@ -4740,7 +4713,7 @@ struct RichTextResult {
4740
4713
  }
4741
4714
  ```
4742
4715
 
4743
- <sub>`api.ogt` line 8425</sub>
4716
+ <sub>`api.ogt` line 10160</sub>
4744
4717
 
4745
4718
  <a id="type-Anchor"></a>
4746
4719
 
@@ -4777,7 +4750,7 @@ enum Anchor {
4777
4750
  }
4778
4751
  ```
4779
4752
 
4780
- <sub>`api.ogt` line 8526</sub>
4753
+ <sub>`api.ogt` line 10261</sub>
4781
4754
 
4782
4755
  <a id="type-TransitionKind"></a>
4783
4756
 
@@ -4810,40 +4783,40 @@ enum TransitionKind {
4810
4783
  }
4811
4784
  ```
4812
4785
 
4813
- <sub>`api.ogt` line 8539</sub>
4786
+ <sub>`api.ogt` line 10274</sub>
4814
4787
 
4815
4788
  <a id="type-Tone"></a>
4816
4789
 
4817
4790
  ### `Tone` (enum)
4818
4791
 
4819
- A status tone, as the design language's badges and toasts.
4792
+ A status tone of badges, toasts and map markers.
4820
4793
 
4821
4794
  A string: one of the variants below. The zero value is `"neutral"`.
4822
4795
 
4823
4796
  | Variant | Doc |
4824
4797
  |---|---|
4825
- | `"neutral"` | Neutral: fill and muted ink. |
4798
+ | `"neutral"` | Neutral: control fill and muted ink. |
4826
4799
  | `"success"` | Success. |
4827
4800
  | `"warn"` | Warning (orange). |
4828
4801
  | `"danger"` | Danger. |
4829
4802
  | `"info"` | Information. |
4830
- | `"accent"` | Amber identity: the soft accent and amber ink. |
4831
- | `"inverse"` | Neutral emphasis: fg fill, inverse ink. |
4803
+ | `"primary"` | The game's identity: the primary's soft wash and highlight ink. |
4804
+ | `"inverse"` | Neutral emphasis: ink fill, inverse ink. |
4832
4805
 
4833
4806
  ```ogt
4834
4807
  enum Tone {
4835
- doc "A status tone, as the design language's badges and toasts."
4836
- variant neutral "Neutral: fill and muted ink."
4808
+ doc "A status tone of badges, toasts and map markers."
4809
+ variant neutral "Neutral: control fill and muted ink."
4837
4810
  variant success "Success."
4838
4811
  variant warn "Warning (orange)."
4839
4812
  variant danger "Danger."
4840
4813
  variant info "Information."
4841
- variant accent "Amber identity: the soft accent and amber ink."
4842
- variant inverse "Neutral emphasis: fg fill, inverse ink."
4814
+ variant primary "The game's identity: the primary's soft wash and highlight ink."
4815
+ variant inverse "Neutral emphasis: ink fill, inverse ink."
4843
4816
  }
4844
4817
  ```
4845
4818
 
4846
- <sub>`api.ogt` line 8550</sub>
4819
+ <sub>`api.ogt` line 10285</sub>
4847
4820
 
4848
4821
  <a id="type-MeterKind"></a>
4849
4822
 
@@ -4855,22 +4828,22 @@ A string: one of the variants below. The zero value is `"health"`.
4855
4828
 
4856
4829
  | Variant | Doc |
4857
4830
  |---|---|
4858
- | `"health"` | Green, warning orange under 30 %, danger red under 15 %. |
4859
- | `"mana"` | The blue hue. |
4860
- | `"xp"` | The purple hue. |
4861
- | `"accent"` | The accent. |
4831
+ | `"health"` | health; warn under 30 %, danger under 15 %. |
4832
+ | `"mana"` | mana. |
4833
+ | `"xp"` | xp. |
4834
+ | `"primary"` | primary. |
4862
4835
 
4863
4836
  ```ogt
4864
4837
  enum MeterKind {
4865
4838
  doc "What a meter measures, which sets its colour."
4866
- variant health "Green, warning orange under 30 %, danger red under 15 %."
4867
- variant mana "The blue hue."
4868
- variant xp "The purple hue."
4869
- variant accent "The accent."
4839
+ variant health "health; warn under 30 %, danger under 15 %."
4840
+ variant mana "mana."
4841
+ variant xp "xp."
4842
+ variant primary "primary."
4870
4843
  }
4871
4844
  ```
4872
4845
 
4873
- <sub>`api.ogt` line 8561</sub>
4846
+ <sub>`api.ogt` line 10296</sub>
4874
4847
 
4875
4848
  <a id="type-Breakpoint"></a>
4876
4849
 
@@ -4897,73 +4870,30 @@ enum Breakpoint {
4897
4870
  }
4898
4871
  ```
4899
4872
 
4900
- <sub>`api.ogt` line 8569</sub>
4873
+ <sub>`api.ogt` line 10304</sub>
4901
4874
 
4902
4875
  <a id="type-Contrast"></a>
4903
4876
 
4904
4877
  ### `Contrast` (enum)
4905
4878
 
4906
- The theme variant: high contrast remaps muted inks, fills and borders to stronger tokens and outlines every control (no new colour).
4879
+ The theme variant: high contrast remaps muted inks, fills and lines to the style's stronger ones and outlines every control (no new colour).
4907
4880
 
4908
4881
  A string: one of the variants below. The zero value is `"standard"`.
4909
4882
 
4910
4883
  | Variant | Doc |
4911
4884
  |---|---|
4912
- | `"standard"` | The token palette as it is. |
4885
+ | `"standard"` | The style's palette as it is. |
4913
4886
  | `"high"` | Stronger inks, fills and edges. |
4914
4887
 
4915
4888
  ```ogt
4916
4889
  enum Contrast {
4917
- doc "The theme variant: high contrast remaps muted inks, fills and borders to stronger tokens and outlines every control (no new colour)."
4918
- variant standard "The token palette as it is."
4890
+ doc "The theme variant: high contrast remaps muted inks, fills and lines to the style's stronger ones and outlines every control (no new colour)."
4891
+ variant standard "The style's palette as it is."
4919
4892
  variant high "Stronger inks, fills and edges."
4920
4893
  }
4921
4894
  ```
4922
4895
 
4923
- <sub>`api.ogt` line 8577</sub>
4924
-
4925
- <a id="type-HueName"></a>
4926
-
4927
- ### `HueName` (enum)
4928
-
4929
- One of the twelve category hues of the tokens, for a game's accent.
4930
-
4931
- A string: one of the variants below. The zero value is `"red"`.
4932
-
4933
- | Variant | Doc |
4934
- |---|---|
4935
- | `"red"` | hue-red. |
4936
- | `"orange"` | hue-orange. |
4937
- | `"yellow"` | hue-yellow. |
4938
- | `"green"` | hue-green. |
4939
- | `"mint"` | hue-mint. |
4940
- | `"teal"` | hue-teal. |
4941
- | `"cyan"` | hue-cyan. |
4942
- | `"blue"` | hue-blue. |
4943
- | `"indigo"` | hue-indigo. |
4944
- | `"purple"` | hue-purple. |
4945
- | `"pink"` | hue-pink. |
4946
- | `"brown"` | hue-brown. |
4947
-
4948
- ```ogt
4949
- enum HueName {
4950
- doc "One of the twelve category hues of the tokens, for a game's accent."
4951
- variant red "hue-red."
4952
- variant orange "hue-orange."
4953
- variant yellow "hue-yellow."
4954
- variant green "hue-green."
4955
- variant mint "hue-mint."
4956
- variant teal "hue-teal."
4957
- variant cyan "hue-cyan."
4958
- variant blue "hue-blue."
4959
- variant indigo "hue-indigo."
4960
- variant purple "hue-purple."
4961
- variant pink "hue-pink."
4962
- variant brown "hue-brown."
4963
- }
4964
- ```
4965
-
4966
- <sub>`api.ogt` line 8583</sub>
4896
+ <sub>`api.ogt` line 10312</sub>
4967
4897
 
4968
4898
  <a id="type-NavIntent"></a>
4969
4899
 
@@ -4998,7 +4928,7 @@ enum NavIntent {
4998
4928
  }
4999
4929
  ```
5000
4930
 
5001
- <sub>`api.ogt` line 8599</sub>
4931
+ <sub>`api.ogt` line 10318</sub>
5002
4932
 
5003
4933
  <a id="type-UiRect"></a>
5004
4934
 
@@ -5031,7 +4961,7 @@ struct UiRect {
5031
4961
  }
5032
4962
  ```
5033
4963
 
5034
- <sub>`api.ogt` line 8611</sub>
4964
+ <sub>`api.ogt` line 10330</sub>
5035
4965
 
5036
4966
  <a id="type-IconAtlasDesc"></a>
5037
4967
 
@@ -5067,7 +4997,7 @@ struct IconAtlasDesc {
5067
4997
  }
5068
4998
  ```
5069
4999
 
5070
- <sub>`api.ogt` line 8627</sub>
5000
+ <sub>`api.ogt` line 10346</sub>
5071
5001
 
5072
5002
  <a id="type-AnchorDesc"></a>
5073
5003
 
@@ -5093,8 +5023,8 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
5093
5023
  | `width` | `Size \| null` | `null` | — | — | — | Its width; null fits the content. |
5094
5024
  | `height` | `Size \| null` | `null` | — | — | — | Its height; null fits the content. |
5095
5025
  | `over` | `boolean` | `false` | — | — | — | Draw over dialogs and spotlights (a tutorial callout, a dragged item); the default draws under them. |
5096
- | `frame` | `SkinPart \| null` | `null` | — | — | — | The skin frame its background takes; null is the panel's. |
5097
- | `instant` | `boolean` | `false` | — | — | — | Shown settled the first time it is built: no skin entrance or stagger, its controls answering at once. For the screen a game opens on while it is that: the web draws it behind the play gate, where an entrance would stay part-way until the tap. |
5026
+ | `frame` | `StylePart \| null` | `null` | — | — | — | The style frame its background takes; null is the panel's. |
5027
+ | `instant` | `boolean` | `false` | — | — | — | Shown settled the first time it is built: no style entrance or stagger, its controls answering at once. For the screen a game opens on while it is that: the web draws it behind the play gate, where an entrance would stay part-way until the tap. |
5098
5028
 
5099
5029
  ```ogt
5100
5030
  struct AnchorDesc {
@@ -5122,18 +5052,18 @@ struct AnchorDesc {
5122
5052
  field width Option.Size "Its width; null fits the content."
5123
5053
  field height Option.Size "Its height; null fits the content."
5124
5054
  field over bool "Draw over dialogs and spotlights (a tutorial callout, a dragged item); the default draws under them."
5125
- field frame Option.SkinPart "The skin frame its background takes; null is the panel's."
5126
- field instant bool "Shown settled the first time it is built: no skin entrance or stagger, its controls answering at once. For the screen a game opens on while it is that: the web draws it behind the play gate, where an entrance would stay part-way until the tap."
5055
+ field frame Option.StylePart "The style frame its background takes; null is the panel's."
5056
+ field instant bool "Shown settled the first time it is built: no style entrance or stagger, its controls answering at once. For the screen a game opens on while it is that: the web draws it behind the play gate, where an entrance would stay part-way until the tap."
5127
5057
  }
5128
5058
  ```
5129
5059
 
5130
- <sub>`api.ogt` line 8643</sub>
5060
+ <sub>`api.ogt` line 10362</sub>
5131
5061
 
5132
5062
  <a id="type-TransitionDesc"></a>
5133
5063
 
5134
5064
  ### `TransitionDesc` (desc struct)
5135
5065
 
5136
- How a transition moves, timed in ticks from the motion tokens.
5066
+ How a transition moves, timed in ticks from the style's motion.
5137
5067
 
5138
5068
  A desc: every field may be omitted and takes its default; `{}` is valid.
5139
5069
 
@@ -5146,7 +5076,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
5146
5076
 
5147
5077
  ```ogt
5148
5078
  struct TransitionDesc {
5149
- doc "How a transition moves, timed in ticks from the motion tokens."
5079
+ doc "How a transition moves, timed in ticks from the style's motion."
5150
5080
  desc true
5151
5081
  field kind TransitionKind "The movement."
5152
5082
  field durationMs f32 "How long entering and leaving take; 0 is motion.duration.base (240 ms)." {
@@ -5161,7 +5091,7 @@ struct TransitionDesc {
5161
5091
  }
5162
5092
  ```
5163
5093
 
5164
- <sub>`api.ogt` line 8672</sub>
5094
+ <sub>`api.ogt` line 10391</sub>
5165
5095
 
5166
5096
  <a id="type-Presence"></a>
5167
5097
 
@@ -5188,7 +5118,7 @@ struct Presence {
5188
5118
  }
5189
5119
  ```
5190
5120
 
5191
- <sub>`api.ogt` line 8687</sub>
5121
+ <sub>`api.ogt` line 10406</sub>
5192
5122
 
5193
5123
  <a id="type-ModalDesc"></a>
5194
5124
 
@@ -5222,7 +5152,7 @@ struct ModalDesc {
5222
5152
  }
5223
5153
  ```
5224
5154
 
5225
- <sub>`api.ogt` line 8697</sub>
5155
+ <sub>`api.ogt` line 10416</sub>
5226
5156
 
5227
5157
  <a id="type-ModalResult"></a>
5228
5158
 
@@ -5243,7 +5173,7 @@ struct ModalResult {
5243
5173
  }
5244
5174
  ```
5245
5175
 
5246
- <sub>`api.ogt` line 8709</sub>
5176
+ <sub>`api.ogt` line 10428</sub>
5247
5177
 
5248
5178
  <a id="type-SpotlightDesc"></a>
5249
5179
 
@@ -5268,7 +5198,7 @@ struct SpotlightDesc {
5268
5198
  }
5269
5199
  ```
5270
5200
 
5271
- <sub>`api.ogt` line 8715</sub>
5201
+ <sub>`api.ogt` line 10434</sub>
5272
5202
 
5273
5203
  <a id="type-ListDesc"></a>
5274
5204
 
@@ -5286,7 +5216,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
5286
5216
  | `width` | `Size \| null` | `null` | — | — | — | Its width; null fits. |
5287
5217
  | `height` | `Size \| null` | `null` | — | — | — | Its height (it scrolls inside); null grows. |
5288
5218
  | `padding` | `Insets` | `{ left: 0, top: 0, right: 0, bottom: 0 }` | — | — | — | Space inside. |
5289
- | `selected` | `number \| null` | `null` | — | — | — | The selected row (fill-strong), for og.ui.list. |
5219
+ | `selected` | `number \| null` | `null` | — | — | — | The selected row (controlStrong), for og.ui.list. |
5290
5220
 
5291
5221
  ```ogt
5292
5222
  struct ListDesc {
@@ -5303,11 +5233,11 @@ struct ListDesc {
5303
5233
  field width Option.Size "Its width; null fits."
5304
5234
  field height Option.Size "Its height (it scrolls inside); null grows."
5305
5235
  field padding Insets "Space inside."
5306
- field selected Option.u32 "The selected row (fill-strong), for og.ui.list."
5236
+ field selected Option.u32 "The selected row (controlStrong), for og.ui.list."
5307
5237
  }
5308
5238
  ```
5309
5239
 
5310
- <sub>`api.ogt` line 8724</sub>
5240
+ <sub>`api.ogt` line 10443</sub>
5311
5241
 
5312
5242
  <a id="type-ListRange"></a>
5313
5243
 
@@ -5328,7 +5258,7 @@ struct ListRange {
5328
5258
  }
5329
5259
  ```
5330
5260
 
5331
- <sub>`api.ogt` line 8741</sub>
5261
+ <sub>`api.ogt` line 10460</sub>
5332
5262
 
5333
5263
  <a id="type-ListResult"></a>
5334
5264
 
@@ -5351,7 +5281,7 @@ struct ListResult {
5351
5281
  }
5352
5282
  ```
5353
5283
 
5354
- <sub>`api.ogt` line 8747</sub>
5284
+ <sub>`api.ogt` line 10466</sub>
5355
5285
 
5356
5286
  <a id="type-GridDesc"></a>
5357
5287
 
@@ -5398,7 +5328,7 @@ struct GridDesc {
5398
5328
  }
5399
5329
  ```
5400
5330
 
5401
- <sub>`api.ogt` line 8754</sub>
5331
+ <sub>`api.ogt` line 10473</sub>
5402
5332
 
5403
5333
  <a id="type-TabsDesc"></a>
5404
5334
 
@@ -5424,7 +5354,7 @@ struct TabsDesc {
5424
5354
  }
5425
5355
  ```
5426
5356
 
5427
- <sub>`api.ogt` line 8777</sub>
5357
+ <sub>`api.ogt` line 10496</sub>
5428
5358
 
5429
5359
  <a id="type-ChoiceResult"></a>
5430
5360
 
@@ -5445,7 +5375,7 @@ struct ChoiceResult {
5445
5375
  }
5446
5376
  ```
5447
5377
 
5448
- <sub>`api.ogt` line 8785</sub>
5378
+ <sub>`api.ogt` line 10504</sub>
5449
5379
 
5450
5380
  <a id="type-SelectDesc"></a>
5451
5381
 
@@ -5473,7 +5403,7 @@ struct SelectDesc {
5473
5403
  }
5474
5404
  ```
5475
5405
 
5476
- <sub>`api.ogt` line 8791</sub>
5406
+ <sub>`api.ogt` line 10510</sub>
5477
5407
 
5478
5408
  <a id="type-StepperDesc"></a>
5479
5409
 
@@ -5505,7 +5435,7 @@ struct StepperDesc {
5505
5435
  }
5506
5436
  ```
5507
5437
 
5508
- <sub>`api.ogt` line 8800</sub>
5438
+ <sub>`api.ogt` line 10519</sub>
5509
5439
 
5510
5440
  <a id="type-StepperResult"></a>
5511
5441
 
@@ -5526,7 +5456,7 @@ struct StepperResult {
5526
5456
  }
5527
5457
  ```
5528
5458
 
5529
- <sub>`api.ogt` line 8813</sub>
5459
+ <sub>`api.ogt` line 10532</sub>
5530
5460
 
5531
5461
  <a id="type-RadioDesc"></a>
5532
5462
 
@@ -5550,7 +5480,7 @@ struct RadioDesc {
5550
5480
  }
5551
5481
  ```
5552
5482
 
5553
- <sub>`api.ogt` line 8819</sub>
5483
+ <sub>`api.ogt` line 10538</sub>
5554
5484
 
5555
5485
  <a id="type-CheckListResult"></a>
5556
5486
 
@@ -5571,7 +5501,7 @@ struct CheckListResult {
5571
5501
  }
5572
5502
  ```
5573
5503
 
5574
- <sub>`api.ogt` line 8826</sub>
5504
+ <sub>`api.ogt` line 10545</sub>
5575
5505
 
5576
5506
  <a id="type-ToastDesc"></a>
5577
5507
 
@@ -5598,7 +5528,7 @@ struct ToastDesc {
5598
5528
  }
5599
5529
  ```
5600
5530
 
5601
- <sub>`api.ogt` line 8832</sub>
5531
+ <sub>`api.ogt` line 10551</sub>
5602
5532
 
5603
5533
  <a id="type-ChipDesc"></a>
5604
5534
 
@@ -5610,25 +5540,25 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
5610
5540
 
5611
5541
  | Field | Type | Default | Range | Unit | Notes | Doc |
5612
5542
  |---|---|---|---|---|---|---|
5613
- | `selected` | `boolean` | `false` | — | — | — | Selected: inverted to fg. |
5543
+ | `selected` | `boolean` | `false` | — | — | — | Selected: inverted to ink. |
5614
5544
  | `disabled` | `boolean` | `false` | — | — | — | Neutral and inert. |
5615
5545
 
5616
5546
  ```ogt
5617
5547
  struct ChipDesc {
5618
5548
  doc "A chip's state."
5619
5549
  desc true
5620
- field selected bool "Selected: inverted to fg."
5550
+ field selected bool "Selected: inverted to ink."
5621
5551
  field disabled bool "Neutral and inert."
5622
5552
  }
5623
5553
  ```
5624
5554
 
5625
- <sub>`api.ogt` line 8842</sub>
5555
+ <sub>`api.ogt` line 10561</sub>
5626
5556
 
5627
5557
  <a id="type-MeterDesc"></a>
5628
5558
 
5629
5559
  ### `MeterDesc` (desc struct)
5630
5560
 
5631
- A meter: a capsule track with a fill that animates its changes by the tick.
5561
+ A meter: a track with a fill that animates its changes by the tick.
5632
5562
 
5633
5563
  A desc: every field may be omitted and takes its default; `{}` is valid.
5634
5564
 
@@ -5643,7 +5573,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
5643
5573
 
5644
5574
  ```ogt
5645
5575
  struct MeterDesc {
5646
- doc "A meter: a capsule track with a fill that animates its changes by the tick."
5576
+ doc "A meter: a track with a fill that animates its changes by the tick."
5647
5577
  desc true
5648
5578
  field kind MeterKind "What it measures, which sets its colour."
5649
5579
  field color Option.Paint "A colour of your own instead of the kind's."
@@ -5657,7 +5587,7 @@ struct MeterDesc {
5657
5587
  }
5658
5588
  ```
5659
5589
 
5660
- <sub>`api.ogt` line 8849</sub>
5590
+ <sub>`api.ogt` line 10568</sub>
5661
5591
 
5662
5592
  <a id="type-CooldownDesc"></a>
5663
5593
 
@@ -5686,7 +5616,7 @@ struct CooldownDesc {
5686
5616
  }
5687
5617
  ```
5688
5618
 
5689
- <sub>`api.ogt` line 8863</sub>
5619
+ <sub>`api.ogt` line 10582</sub>
5690
5620
 
5691
5621
  <a id="type-IconDesc"></a>
5692
5622
 
@@ -5699,7 +5629,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
5699
5629
  | Field | Type | Default | Range | Unit | Notes | Doc |
5700
5630
  |---|---|---|---|---|---|---|
5701
5631
  | `size` | `number` | `0` | ≥ 0 | `cssPx` | — | Its size; 0 is 24. |
5702
- | `tint` | `Paint \| null` | `null` | — | — | — | Its ink; null is fg. |
5632
+ | `tint` | `Paint \| null` | `null` | — | — | — | Its ink; null is ink. |
5703
5633
  | `label` | `string \| null` | `null` | — | — | — | What a screen reader calls it (and the probe's text): null is the icon's name in the atlas (an English word: `star`); empty is decoration, named by nothing, so a card or button it sits on is named by its other text. A localised game names a meaningful icon from its string table. |
5704
5634
 
5705
5635
  ```ogt
@@ -5710,12 +5640,12 @@ struct IconDesc {
5710
5640
  unit cssPx
5711
5641
  min 0
5712
5642
  }
5713
- field tint Option.Paint "Its ink; null is fg."
5643
+ field tint Option.Paint "Its ink; null is ink."
5714
5644
  field label Option.String "What a screen reader calls it (and the probe's text): null is the icon's name in the atlas (an English word: `star`); empty is decoration, named by nothing, so a card or button it sits on is named by its other text. A localised game names a meaningful icon from its string table."
5715
5645
  }
5716
5646
  ```
5717
5647
 
5718
- <sub>`api.ogt` line 8874</sub>
5648
+ <sub>`api.ogt` line 10593</sub>
5719
5649
 
5720
5650
  <a id="type-MapMarker"></a>
5721
5651
 
@@ -5730,7 +5660,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
5730
5660
  | `x` | `number` | `0` | — | `ratio` | — | Across the map, 0 to 1. |
5731
5661
  | `y` | `number` | `0` | — | `ratio` | — | Down the map, 0 to 1. |
5732
5662
  | `tone` | `Tone` | `"neutral"` | — | — | — | Its colour; neutral is the stage ink. |
5733
- | `player` | `boolean` | `false` | — | — | — | The player: the accent, larger, ringed. |
5663
+ | `player` | `boolean` | `false` | — | — | — | The player: the primary, larger, ringed. |
5734
5664
 
5735
5665
  ```ogt
5736
5666
  struct MapMarker {
@@ -5743,11 +5673,11 @@ struct MapMarker {
5743
5673
  unit ratio
5744
5674
  }
5745
5675
  field tone Tone "Its colour; neutral is the stage ink."
5746
- field player bool "The player: the accent, larger, ringed."
5676
+ field player bool "The player: the primary, larger, ringed."
5747
5677
  }
5748
5678
  ```
5749
5679
 
5750
- <sub>`api.ogt` line 8885</sub>
5680
+ <sub>`api.ogt` line 10604</sub>
5751
5681
 
5752
5682
  <a id="type-MinimapDesc"></a>
5753
5683
 
@@ -5780,7 +5710,7 @@ struct MinimapDesc {
5780
5710
  }
5781
5711
  ```
5782
5712
 
5783
- <sub>`api.ogt` line 8898</sub>
5713
+ <sub>`api.ogt` line 10617</sub>
5784
5714
 
5785
5715
  <a id="type-DialogueDesc"></a>
5786
5716
 
@@ -5792,7 +5722,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
5792
5722
 
5793
5723
  | Field | Type | Default | Range | Unit | Notes | Doc |
5794
5724
  |---|---|---|---|---|---|---|
5795
- | `speaker` | `string` | `""` | — | — | — | Who speaks (amber ink). |
5725
+ | `speaker` | `string` | `""` | — | — | — | Who speaks (primary ink). |
5796
5726
  | `text` | `string` | `""` | — | — | — | The line. A new text starts typing again. |
5797
5727
  | `portrait` | `Texture \| null` | `null` | — | — | — | A portrait texture; null is the speaker's initial. |
5798
5728
  | `portraitUv` | `[number, number, number, number] \| null` | `null` | — | — | — | The portrait's region of the texture; null is the whole texture. |
@@ -5804,7 +5734,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
5804
5734
  struct DialogueDesc {
5805
5735
  doc "A dialogue box: a portrait slot, the speaker and the line typed out by the tick."
5806
5736
  desc true
5807
- field speaker String "Who speaks (amber ink)."
5737
+ field speaker String "Who speaks (primary ink)."
5808
5738
  field text String "The line. A new text starts typing again."
5809
5739
  field portrait Option.Texture "A portrait texture; null is the speaker's initial."
5810
5740
  field portraitUv Option.Array.f32.4 "The portrait's region of the texture; null is the whole texture."
@@ -5816,7 +5746,7 @@ struct DialogueDesc {
5816
5746
  }
5817
5747
  ```
5818
5748
 
5819
- <sub>`api.ogt` line 8911</sub>
5749
+ <sub>`api.ogt` line 10630</sub>
5820
5750
 
5821
5751
  <a id="type-DialogueResult"></a>
5822
5752
 
@@ -5839,7 +5769,7 @@ struct DialogueResult {
5839
5769
  }
5840
5770
  ```
5841
5771
 
5842
- <sub>`api.ogt` line 8925</sub>
5772
+ <sub>`api.ogt` line 10644</sub>
5843
5773
 
5844
5774
  <a id="type-JoystickDesc"></a>
5845
5775
 
@@ -5870,7 +5800,7 @@ struct JoystickDesc {
5870
5800
  }
5871
5801
  ```
5872
5802
 
5873
- <sub>`api.ogt` line 8932</sub>
5803
+ <sub>`api.ogt` line 10651</sub>
5874
5804
 
5875
5805
  <a id="type-JoystickResult"></a>
5876
5806
 
@@ -5893,7 +5823,7 @@ struct JoystickResult {
5893
5823
  }
5894
5824
  ```
5895
5825
 
5896
- <sub>`api.ogt` line 8946</sub>
5826
+ <sub>`api.ogt` line 10665</sub>
5897
5827
 
5898
5828
  <a id="type-DpadDesc"></a>
5899
5829
 
@@ -5918,7 +5848,7 @@ struct DpadDesc {
5918
5848
  }
5919
5849
  ```
5920
5850
 
5921
- <sub>`api.ogt` line 8953</sub>
5851
+ <sub>`api.ogt` line 10672</sub>
5922
5852
 
5923
5853
  <a id="type-DpadResult"></a>
5924
5854
 
@@ -5943,36 +5873,36 @@ struct DpadResult {
5943
5873
  }
5944
5874
  ```
5945
5875
 
5946
- <sub>`api.ogt` line 8962</sub>
5876
+ <sub>`api.ogt` line 10681</sub>
5947
5877
 
5948
5878
  <a id="type-ActionButtonDesc"></a>
5949
5879
 
5950
5880
  ### `ActionButtonDesc` (desc struct)
5951
5881
 
5952
- A round touch action button (jump, fire).
5882
+ A square touch action button (jump, fire), cornered by the style's control radius.
5953
5883
 
5954
5884
  A desc: every field may be omitted and takes its default; `{}` is valid.
5955
5885
 
5956
5886
  | Field | Type | Default | Range | Unit | Notes | Doc |
5957
5887
  |---|---|---|---|---|---|---|
5958
- | `size` | `number` | `0` | ≥ 0 | `cssPx` | — | Its diameter; 0 is 64 (never under 44). |
5959
- | `primary` | `boolean` | `false` | — | — | — | The amber button (one per screen). |
5888
+ | `size` | `number` | `0` | ≥ 0 | `cssPx` | — | Its side; 0 is 64 (never under 44). |
5889
+ | `primary` | `boolean` | `false` | — | — | — | The primary button (one per screen). |
5960
5890
  | `icon` | `string` | `""` | — | — | — | An icon of the atlas by name, instead of the label; empty is the label. |
5961
5891
 
5962
5892
  ```ogt
5963
5893
  struct ActionButtonDesc {
5964
- doc "A round touch action button (jump, fire)."
5894
+ doc "A square touch action button (jump, fire), cornered by the style's control radius."
5965
5895
  desc true
5966
- field size f32 "Its diameter; 0 is 64 (never under 44)." {
5896
+ field size f32 "Its side; 0 is 64 (never under 44)." {
5967
5897
  unit cssPx
5968
5898
  min 0
5969
5899
  }
5970
- field primary bool "The amber button (one per screen)."
5900
+ field primary bool "The primary button (one per screen)."
5971
5901
  field icon String "An icon of the atlas by name, instead of the label; empty is the label."
5972
5902
  }
5973
5903
  ```
5974
5904
 
5975
- <sub>`api.ogt` line 8970</sub>
5905
+ <sub>`api.ogt` line 10689</sub>
5976
5906
 
5977
5907
  <a id="type-SkeletonDesc"></a>
5978
5908
 
@@ -6001,7 +5931,7 @@ struct SkeletonDesc {
6001
5931
  }
6002
5932
  ```
6003
5933
 
6004
- <sub>`api.ogt` line 8981</sub>
5934
+ <sub>`api.ogt` line 10700</sub>
6005
5935
 
6006
5936
  <a id="type-UiItemBuild"></a>
6007
5937
 
@@ -6026,7 +5956,7 @@ callback UiItemBuild {
6026
5956
  }
6027
5957
  ```
6028
5958
 
6029
- <sub>`api.ogt` line 8992</sub>
5959
+ <sub>`api.ogt` line 10711</sub>
6030
5960
 
6031
5961
  <a id="type-A11yNode"></a>
6032
5962
 
@@ -6079,7 +6009,7 @@ struct A11yNode {
6079
6009
  }
6080
6010
  ```
6081
6011
 
6082
- <sub>`api.ogt` line 9355</sub>
6012
+ <sub>`api.ogt` line 11074</sub>
6083
6013
 
6084
6014
  <a id="type-A11yTree"></a>
6085
6015
 
@@ -6102,7 +6032,7 @@ struct A11yTree {
6102
6032
  }
6103
6033
  ```
6104
6034
 
6105
- <sub>`api.ogt` line 9381</sub>
6035
+ <sub>`api.ogt` line 11100</sub>
6106
6036
 
6107
6037
  <a id="type-CounterDesc"></a>
6108
6038
 
@@ -6116,7 +6046,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
6116
6046
  |---|---|---|---|---|---|---|
6117
6047
  | `step` | `TypeStepName \| null` | `null` | — | — | — | The type step; null is body. |
6118
6048
  | `font` | `FontRole` | `"body"` | — | — | — | Which font: mono (the numeric role) for counts in a row, display for a big score. |
6119
- | `color` | `Paint \| null` | `null` | — | — | — | The ink; null is fg. |
6049
+ | `color` | `Paint \| null` | `null` | — | — | — | The ink; null is ink. |
6120
6050
  | `align` | `TextAlign` | `"start"` | — | — | — | How it aligns in its width. |
6121
6051
  | `width` | `Size \| null` | `null` | — | — | — | Its width; null fits the text. |
6122
6052
  | `durationMs` | `number` | `0` | ≥ 0 | `ms` | — | How long a change takes to count; 0 is 900 ms. |
@@ -6131,7 +6061,7 @@ struct CounterDesc {
6131
6061
  desc true
6132
6062
  field step Option.TypeStepName "The type step; null is body."
6133
6063
  field font FontRole "Which font: mono (the numeric role) for counts in a row, display for a big score."
6134
- field color Option.Paint "The ink; null is fg."
6064
+ field color Option.Paint "The ink; null is ink."
6135
6065
  field align TextAlign "How it aligns in its width."
6136
6066
  field width Option.Size "Its width; null fits the text."
6137
6067
  field durationMs f32 "How long a change takes to count; 0 is 900 ms." {
@@ -6145,7 +6075,7 @@ struct CounterDesc {
6145
6075
  }
6146
6076
  ```
6147
6077
 
6148
- <sub>`api.ogt` line 9418</sub>
6078
+ <sub>`api.ogt` line 11137</sub>
6149
6079
 
6150
6080
  <a id="type-BurstDesc"></a>
6151
6081
 
@@ -6158,7 +6088,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
6158
6088
  | Field | Type | Default | Range | Unit | Notes | Doc |
6159
6089
  |---|---|---|---|---|---|---|
6160
6090
  | `count` | `number` | `0` | — | — | — | Rays; 0 is 8. |
6161
- | `color` | `Paint \| null` | `null` | — | — | — | Their ink; null is the accent. |
6091
+ | `color` | `Paint \| null` | `null` | — | — | — | Their ink; null is the primary. |
6162
6092
  | `radius` | `number` | `0` | ≥ 0 | `cssPx` | — | How far they fly from the element's centre; 0 is 1.4 times its size. |
6163
6093
  | `durationMs` | `number` | `0` | ≥ 0 | `ms` | — | How long they fly; 0 is motion.duration.slow plus base. |
6164
6094
  | `delayMs` | `number` | `0` | ≥ 0 | `ms` | — | Wait this long after the element first appears. |
@@ -6168,7 +6098,7 @@ struct BurstDesc {
6168
6098
  doc "Rays and sparks thrown from an element."
6169
6099
  desc true
6170
6100
  field count u32 "Rays; 0 is 8."
6171
- field color Option.Paint "Their ink; null is the accent."
6101
+ field color Option.Paint "Their ink; null is the primary."
6172
6102
  field radius f32 "How far they fly from the element's centre; 0 is 1.4 times its size." {
6173
6103
  unit cssPx
6174
6104
  min 0
@@ -6184,7 +6114,7 @@ struct BurstDesc {
6184
6114
  }
6185
6115
  ```
6186
6116
 
6187
- <sub>`api.ogt` line 9444</sub>
6117
+ <sub>`api.ogt` line 11163</sub>
6188
6118
 
6189
6119
  <a id="type-ShakeDesc"></a>
6190
6120
 
@@ -6196,15 +6126,15 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
6196
6126
 
6197
6127
  | Field | Type | Default | Range | Unit | Notes | Doc |
6198
6128
  |---|---|---|---|---|---|---|
6199
- | `amount` | `number` | `0` | ≥ 0 | `cssPx` | — | The first swing; 0 is the skin's motion.shake, else 6. |
6129
+ | `amount` | `number` | `0` | ≥ 0 | `cssPx` | — | The first swing; 0 is the style's motion.shake, else 6. |
6200
6130
  | `durationMs` | `number` | `0` | ≥ 0 | `ms` | — | How long it takes to come to rest; 0 is motion.duration.slow. |
6201
- | `sound` | `boolean` | `false` | — | — | — | Also play the skin's error sound, as a refused press does. |
6131
+ | `sound` | `boolean` | `false` | — | — | — | Also play the style's error sound, as a refused press does. |
6202
6132
 
6203
6133
  ```ogt
6204
6134
  struct ShakeDesc {
6205
6135
  doc "A shake of an element: three sideways swings decaying to rest."
6206
6136
  desc true
6207
- field amount f32 "The first swing; 0 is the skin's motion.shake, else 6." {
6137
+ field amount f32 "The first swing; 0 is the style's motion.shake, else 6." {
6208
6138
  unit cssPx
6209
6139
  min 0
6210
6140
  }
@@ -6212,11 +6142,11 @@ struct ShakeDesc {
6212
6142
  unit ms
6213
6143
  min 0
6214
6144
  }
6215
- field sound bool "Also play the skin's error sound, as a refused press does."
6145
+ field sound bool "Also play the style's error sound, as a refused press does."
6216
6146
  }
6217
6147
  ```
6218
6148
 
6219
- <sub>`api.ogt` line 9469</sub>
6149
+ <sub>`api.ogt` line 11188</sub>
6220
6150
 
6221
6151
  <a id="type-ScreenWipe"></a>
6222
6152
 
@@ -6245,7 +6175,7 @@ enum ScreenWipe {
6245
6175
  }
6246
6176
  ```
6247
6177
 
6248
- <sub>`api.ogt` line 9489</sub>
6178
+ <sub>`api.ogt` line 11208</sub>
6249
6179
 
6250
6180
  <a id="type-WipeSide"></a>
6251
6181
 
@@ -6272,7 +6202,7 @@ enum WipeSide {
6272
6202
  }
6273
6203
  ```
6274
6204
 
6275
- <sub>`api.ogt` line 9498</sub>
6205
+ <sub>`api.ogt` line 11217</sub>
6276
6206
 
6277
6207
  <a id="type-ScreenTransitionDesc"></a>
6278
6208
 
@@ -6286,7 +6216,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
6286
6216
  |---|---|---|---|---|---|---|
6287
6217
  | `kind` | `ScreenWipe` | `"fade"` | — | — | — | The movement. |
6288
6218
  | `durationMs` | `number` | `0` | ≥ 0 | `ms` | — | Cover and reveal together; 0 is twice motion.duration.slow. |
6289
- | `color` | `Paint \| null` | `null` | — | — | — | The cover's colour (the texture's tint); null is bg. |
6219
+ | `color` | `Paint \| null` | `null` | — | — | — | The cover's colour (the texture's tint); null is backdrop. |
6290
6220
  | `texture` | `Texture \| null` | `null` | — | — | — | A texture stretched over the surface as the cover; null is the flat colour. |
6291
6221
  | `from` | `WipeSide` | `"left"` | — | — | — | Where a wipe or a slide comes from. |
6292
6222
 
@@ -6299,13 +6229,13 @@ struct ScreenTransitionDesc {
6299
6229
  unit ms
6300
6230
  min 0
6301
6231
  }
6302
- field color Option.Paint "The cover's colour (the texture's tint); null is bg."
6232
+ field color Option.Paint "The cover's colour (the texture's tint); null is backdrop."
6303
6233
  field texture Option.Texture "A texture stretched over the surface as the cover; null is the flat colour."
6304
6234
  field from WipeSide "Where a wipe or a slide comes from."
6305
6235
  }
6306
6236
  ```
6307
6237
 
6308
- <sub>`api.ogt` line 9506</sub>
6238
+ <sub>`api.ogt` line 11225</sub>
6309
6239
 
6310
6240
  <a id="type-ScreenTransitionResult"></a>
6311
6241
 
@@ -6332,7 +6262,7 @@ struct ScreenTransitionResult {
6332
6262
  }
6333
6263
  ```
6334
6264
 
6335
- <sub>`api.ogt` line 9519</sub>
6265
+ <sub>`api.ogt` line 11238</sub>
6336
6266
 
6337
6267
  <a id="type-GraphicsQuality"></a>
6338
6268
 
@@ -6357,7 +6287,7 @@ enum GraphicsQuality {
6357
6287
  }
6358
6288
  ```
6359
6289
 
6360
- <sub>`api.ogt` line 9546</sub>
6290
+ <sub>`api.ogt` line 11265</sub>
6361
6291
 
6362
6292
  <a id="type-UiAction"></a>
6363
6293
 
@@ -6382,7 +6312,7 @@ callback UiAction {
6382
6312
  }
6383
6313
  ```
6384
6314
 
6385
- <sub>`api.ogt` line 9553</sub>
6315
+ <sub>`api.ogt` line 11272</sub>
6386
6316
 
6387
6317
  <a id="type-SettingsChanged"></a>
6388
6318
 
@@ -6407,7 +6337,7 @@ callback SettingsChanged {
6407
6337
  }
6408
6338
  ```
6409
6339
 
6410
- <sub>`api.ogt` line 9558</sub>
6340
+ <sub>`api.ogt` line 11277</sub>
6411
6341
 
6412
6342
  <a id="type-MenuItem"></a>
6413
6343
 
@@ -6422,7 +6352,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
6422
6352
  | `id` | `string` | `""` | — | — | — | The id answered when it is chosen; also its probe id. |
6423
6353
  | `label` | `string` | `""` | — | — | — | What it says. |
6424
6354
  | `disabled` | `boolean` | `false` | — | — | — | Shown but inert. |
6425
- | `primary` | `boolean` | `false` | — | — | — | The amber action (one per screen). |
6355
+ | `primary` | `boolean` | `false` | — | — | — | The primary action (one per screen). |
6426
6356
 
6427
6357
  ```ogt
6428
6358
  struct MenuItem {
@@ -6431,11 +6361,11 @@ struct MenuItem {
6431
6361
  field id String "The id answered when it is chosen; also its probe id."
6432
6362
  field label String "What it says."
6433
6363
  field disabled bool "Shown but inert."
6434
- field primary bool "The amber action (one per screen)."
6364
+ field primary bool "The primary action (one per screen)."
6435
6365
  }
6436
6366
  ```
6437
6367
 
6438
- <sub>`api.ogt` line 9563</sub>
6368
+ <sub>`api.ogt` line 11282</sub>
6439
6369
 
6440
6370
  <a id="type-MenuResult"></a>
6441
6371
 
@@ -6454,7 +6384,7 @@ struct MenuResult {
6454
6384
  }
6455
6385
  ```
6456
6386
 
6457
- <sub>`api.ogt` line 9572</sub>
6387
+ <sub>`api.ogt` line 11291</sub>
6458
6388
 
6459
6389
  <a id="type-MainMenuDesc"></a>
6460
6390
 
@@ -6471,7 +6401,7 @@ A desc: every field may be omitted and takes its default; `{}` is valid.
6471
6401
  | `items` | `readonly MenuItem[]` | `[]` | — | — | — | The items, such as Play, Continue, Settings, Quit. |
6472
6402
  | `footer` | `string` | `""` | — | — | — | A line at the bottom (a version, credits); empty is none. |
6473
6403
  | `onSelect` | `UiAction \| null` | `null` | — | — | — | Called with the chosen item's id. |
6474
- | `instant` | `boolean` | `false` | — | — | — | Shown settled the first time it is built (AnchorDesc.instant): pass it while the title is the screen the game opens on, so the frame behind the web's play gate is the whole title; a title the player comes back to enters with the skin. |
6404
+ | `instant` | `boolean` | `false` | — | — | — | Shown settled the first time it is built (AnchorDesc.instant): pass it while the title is the screen the game opens on, so the frame behind the web's play gate is the whole title; a title the player comes back to enters with the style. |
6475
6405
 
6476
6406
  ```ogt
6477
6407
  struct MainMenuDesc {
@@ -6482,11 +6412,11 @@ struct MainMenuDesc {
6482
6412
  field items List.MenuItem "The items, such as Play, Continue, Settings, Quit."
6483
6413
  field footer String "A line at the bottom (a version, credits); empty is none."
6484
6414
  field onSelect Option.UiAction "Called with the chosen item's id."
6485
- field instant bool "Shown settled the first time it is built (AnchorDesc.instant): pass it while the title is the screen the game opens on, so the frame behind the web's play gate is the whole title; a title the player comes back to enters with the skin."
6415
+ field instant bool "Shown settled the first time it is built (AnchorDesc.instant): pass it while the title is the screen the game opens on, so the frame behind the web's play gate is the whole title; a title the player comes back to enters with the style."
6486
6416
  }
6487
6417
  ```
6488
6418
 
6489
- <sub>`api.ogt` line 9577</sub>
6419
+ <sub>`api.ogt` line 11296</sub>
6490
6420
 
6491
6421
  <a id="type-PauseMenuDesc"></a>
6492
6422
 
@@ -6516,7 +6446,7 @@ struct PauseMenuDesc {
6516
6446
  }
6517
6447
  ```
6518
6448
 
6519
- <sub>`api.ogt` line 9588</sub>
6449
+ <sub>`api.ogt` line 11307</sub>
6520
6450
 
6521
6451
  <a id="type-KeyBinding"></a>
6522
6452
 
@@ -6542,7 +6472,7 @@ struct KeyBinding {
6542
6472
  }
6543
6473
  ```
6544
6474
 
6545
- <sub>`api.ogt` line 9599</sub>
6475
+ <sub>`api.ogt` line 11318</sub>
6546
6476
 
6547
6477
  <a id="type-LanguageOption"></a>
6548
6478
 
@@ -6566,7 +6496,7 @@ struct LanguageOption {
6566
6496
  }
6567
6497
  ```
6568
6498
 
6569
- <sub>`api.ogt` line 9607</sub>
6499
+ <sub>`api.ogt` line 11326</sub>
6570
6500
 
6571
6501
  <a id="type-GameSettings"></a>
6572
6502
 
@@ -6635,7 +6565,7 @@ struct GameSettings {
6635
6565
  }
6636
6566
  ```
6637
6567
 
6638
- <sub>`api.ogt` line 9614</sub>
6568
+ <sub>`api.ogt` line 11333</sub>
6639
6569
 
6640
6570
  <a id="type-SettingsDesc"></a>
6641
6571
 
@@ -6753,7 +6683,7 @@ struct SettingsDesc {
6753
6683
  }
6754
6684
  ```
6755
6685
 
6756
- <sub>`api.ogt` line 9655</sub>
6686
+ <sub>`api.ogt` line 11374</sub>
6757
6687
 
6758
6688
  <a id="type-SettingsResult"></a>
6759
6689
 
@@ -6776,7 +6706,7 @@ struct SettingsResult {
6776
6706
  }
6777
6707
  ```
6778
6708
 
6779
- <sub>`api.ogt` line 9731</sub>
6709
+ <sub>`api.ogt` line 11450</sub>
6780
6710
 
6781
6711
  <a id="type-Ability"></a>
6782
6712
 
@@ -6806,7 +6736,7 @@ struct Ability {
6806
6736
  }
6807
6737
  ```
6808
6738
 
6809
- <sub>`api.ogt` line 9738</sub>
6739
+ <sub>`api.ogt` line 11457</sub>
6810
6740
 
6811
6741
  <a id="type-PlatformerHudDesc"></a>
6812
6742
 
@@ -6852,7 +6782,7 @@ struct PlatformerHudDesc {
6852
6782
  }
6853
6783
  ```
6854
6784
 
6855
- <sub>`api.ogt` line 9749</sub>
6785
+ <sub>`api.ogt` line 11468</sub>
6856
6786
 
6857
6787
  <a id="type-HudResult"></a>
6858
6788
 
@@ -6879,7 +6809,7 @@ struct HudResult {
6879
6809
  }
6880
6810
  ```
6881
6811
 
6882
- <sub>`api.ogt` line 9770</sub>
6812
+ <sub>`api.ogt` line 11489</sub>
6883
6813
 
6884
6814
  <a id="type-ShooterHudDesc"></a>
6885
6815
 
@@ -6941,7 +6871,7 @@ struct ShooterHudDesc {
6941
6871
  }
6942
6872
  ```
6943
6873
 
6944
- <sub>`api.ogt` line 9779</sub>
6874
+ <sub>`api.ogt` line 11498</sub>
6945
6875
 
6946
6876
  <a id="type-PuzzleHudDesc"></a>
6947
6877
 
@@ -6987,7 +6917,7 @@ struct PuzzleHudDesc {
6987
6917
  }
6988
6918
  ```
6989
6919
 
6990
- <sub>`api.ogt` line 9810</sub>
6920
+ <sub>`api.ogt` line 11529</sub>
6991
6921
 
6992
6922
  <a id="type-Currency"></a>
6993
6923
 
@@ -7017,7 +6947,7 @@ struct Currency {
7017
6947
  }
7018
6948
  ```
7019
6949
 
7020
- <sub>`api.ogt` line 9832</sub>
6950
+ <sub>`api.ogt` line 11551</sub>
7021
6951
 
7022
6952
  <a id="type-Generator"></a>
7023
6953
 
@@ -7053,7 +6983,7 @@ struct Generator {
7053
6983
  }
7054
6984
  ```
7055
6985
 
7056
- <sub>`api.ogt` line 9842</sub>
6986
+ <sub>`api.ogt` line 11561</sub>
7057
6987
 
7058
6988
  <a id="type-IdleHudDesc"></a>
7059
6989
 
@@ -7093,7 +7023,7 @@ struct IdleHudDesc {
7093
7023
  }
7094
7024
  ```
7095
7025
 
7096
- <sub>`api.ogt` line 9856</sub>
7026
+ <sub>`api.ogt` line 11575</sub>
7097
7027
 
7098
7028
  <a id="type-RaceSplit"></a>
7099
7029
 
@@ -7119,7 +7049,7 @@ struct RaceSplit {
7119
7049
  }
7120
7050
  ```
7121
7051
 
7122
- <sub>`api.ogt` line 9875</sub>
7052
+ <sub>`api.ogt` line 11594</sub>
7123
7053
 
7124
7054
  <a id="type-RacingHudDesc"></a>
7125
7055
 
@@ -7215,7 +7145,7 @@ struct RacingHudDesc {
7215
7145
  }
7216
7146
  ```
7217
7147
 
7218
- <sub>`api.ogt` line 9883</sub>
7148
+ <sub>`api.ogt` line 11602</sub>
7219
7149
 
7220
7150
  <a id="type-DialogueLine"></a>
7221
7151
 
@@ -7241,7 +7171,7 @@ struct DialogueLine {
7241
7171
  }
7242
7172
  ```
7243
7173
 
7244
- <sub>`api.ogt` line 9941</sub>
7174
+ <sub>`api.ogt` line 11660</sub>
7245
7175
 
7246
7176
  <a id="type-CutsceneDesc"></a>
7247
7177
 
@@ -7279,7 +7209,7 @@ struct CutsceneDesc {
7279
7209
  }
7280
7210
  ```
7281
7211
 
7282
- <sub>`api.ogt` line 9949</sub>
7212
+ <sub>`api.ogt` line 11668</sub>
7283
7213
 
7284
7214
  <a id="type-CutsceneResult"></a>
7285
7215
 
@@ -7302,7 +7232,7 @@ struct CutsceneResult {
7302
7232
  }
7303
7233
  ```
7304
7234
 
7305
- <sub>`api.ogt` line 9966</sub>
7235
+ <sub>`api.ogt` line 11685</sub>
7306
7236
 
7307
7237
  <a id="type-ShopItem"></a>
7308
7238
 
@@ -7336,7 +7266,7 @@ struct ShopItem {
7336
7266
  }
7337
7267
  ```
7338
7268
 
7339
- <sub>`api.ogt` line 9973</sub>
7269
+ <sub>`api.ogt` line 11692</sub>
7340
7270
 
7341
7271
  <a id="type-ShopDesc"></a>
7342
7272
 
@@ -7394,7 +7324,7 @@ struct ShopDesc {
7394
7324
  }
7395
7325
  ```
7396
7326
 
7397
- <sub>`api.ogt` line 9985</sub>
7327
+ <sub>`api.ogt` line 11704</sub>
7398
7328
 
7399
7329
  <a id="type-ShopResult"></a>
7400
7330
 
@@ -7417,7 +7347,7 @@ struct ShopResult {
7417
7347
  }
7418
7348
  ```
7419
7349
 
7420
- <sub>`api.ogt` line 10016</sub>
7350
+ <sub>`api.ogt` line 11735</sub>
7421
7351
 
7422
7352
  <a id="type-InventoryItem"></a>
7423
7353
 
@@ -7449,7 +7379,7 @@ struct InventoryItem {
7449
7379
  }
7450
7380
  ```
7451
7381
 
7452
- <sub>`api.ogt` line 10023</sub>
7382
+ <sub>`api.ogt` line 11742</sub>
7453
7383
 
7454
7384
  <a id="type-InventoryDesc"></a>
7455
7385
 
@@ -7493,7 +7423,7 @@ struct InventoryDesc {
7493
7423
  }
7494
7424
  ```
7495
7425
 
7496
- <sub>`api.ogt` line 10034</sub>
7426
+ <sub>`api.ogt` line 11753</sub>
7497
7427
 
7498
7428
  <a id="type-SlotMove"></a>
7499
7429
 
@@ -7514,7 +7444,7 @@ struct SlotMove {
7514
7444
  }
7515
7445
  ```
7516
7446
 
7517
- <sub>`api.ogt` line 10056</sub>
7447
+ <sub>`api.ogt` line 11775</sub>
7518
7448
 
7519
7449
  <a id="type-InventoryResult"></a>
7520
7450
 
@@ -7539,7 +7469,7 @@ struct InventoryResult {
7539
7469
  }
7540
7470
  ```
7541
7471
 
7542
- <sub>`api.ogt` line 10062</sub>
7472
+ <sub>`api.ogt` line 11781</sub>
7543
7473
 
7544
7474
  <a id="type-LevelInfo"></a>
7545
7475
 
@@ -7567,7 +7497,7 @@ struct LevelInfo {
7567
7497
  }
7568
7498
  ```
7569
7499
 
7570
- <sub>`api.ogt` line 10070</sub>
7500
+ <sub>`api.ogt` line 11789</sub>
7571
7501
 
7572
7502
  <a id="type-LevelSelectDesc"></a>
7573
7503
 
@@ -7607,7 +7537,7 @@ struct LevelSelectDesc {
7607
7537
  }
7608
7538
  ```
7609
7539
 
7610
- <sub>`api.ogt` line 10079</sub>
7540
+ <sub>`api.ogt` line 11798</sub>
7611
7541
 
7612
7542
  <a id="type-LevelSelectResult"></a>
7613
7543
 
@@ -7628,7 +7558,7 @@ struct LevelSelectResult {
7628
7558
  }
7629
7559
  ```
7630
7560
 
7631
- <sub>`api.ogt` line 10098</sub>
7561
+ <sub>`api.ogt` line 11817</sub>
7632
7562
 
7633
7563
  <a id="type-StatRow"></a>
7634
7564
 
@@ -7652,7 +7582,7 @@ struct StatRow {
7652
7582
  }
7653
7583
  ```
7654
7584
 
7655
- <sub>`api.ogt` line 10104</sub>
7585
+ <sub>`api.ogt` line 11823</sub>
7656
7586
 
7657
7587
  <a id="type-ScoreFormat"></a>
7658
7588
 
@@ -7675,7 +7605,7 @@ enum ScoreFormat {
7675
7605
  }
7676
7606
  ```
7677
7607
 
7678
- <sub>`api.ogt` line 10111</sub>
7608
+ <sub>`api.ogt` line 11830</sub>
7679
7609
 
7680
7610
  <a id="type-ResultsDesc"></a>
7681
7611
 
@@ -7737,7 +7667,7 @@ struct ResultsDesc {
7737
7667
  }
7738
7668
  ```
7739
7669
 
7740
- <sub>`api.ogt` line 10117</sub>
7670
+ <sub>`api.ogt` line 11836</sub>
7741
7671
 
7742
7672
  <a id="type-LeaderboardEntry"></a>
7743
7673
 
@@ -7765,7 +7695,7 @@ struct LeaderboardEntry {
7765
7695
  }
7766
7696
  ```
7767
7697
 
7768
- <sub>`api.ogt` line 10148</sub>
7698
+ <sub>`api.ogt` line 11867</sub>
7769
7699
 
7770
7700
  <a id="type-LeaderboardDesc"></a>
7771
7701
 
@@ -7805,7 +7735,7 @@ struct LeaderboardDesc {
7805
7735
  }
7806
7736
  ```
7807
7737
 
7808
- <sub>`api.ogt` line 10157</sub>
7738
+ <sub>`api.ogt` line 11876</sub>
7809
7739
 
7810
7740
  <a id="type-LeaderboardResult"></a>
7811
7741
 
@@ -7830,7 +7760,7 @@ struct LeaderboardResult {
7830
7760
  }
7831
7761
  ```
7832
7762
 
7833
- <sub>`api.ogt` line 10175</sub>
7763
+ <sub>`api.ogt` line 11894</sub>
7834
7764
 
7835
7765
  <a id="type-TutorialStep"></a>
7836
7766
 
@@ -7856,7 +7786,7 @@ struct TutorialStep {
7856
7786
  }
7857
7787
  ```
7858
7788
 
7859
- <sub>`api.ogt` line 10183</sub>
7789
+ <sub>`api.ogt` line 11902</sub>
7860
7790
 
7861
7791
  <a id="type-TutorialDesc"></a>
7862
7792
 
@@ -7898,7 +7828,7 @@ struct TutorialDesc {
7898
7828
  }
7899
7829
  ```
7900
7830
 
7901
- <sub>`api.ogt` line 10191</sub>
7831
+ <sub>`api.ogt` line 11910</sub>
7902
7832
 
7903
7833
  <a id="type-TutorialResult"></a>
7904
7834
 
@@ -7921,7 +7851,7 @@ struct TutorialResult {
7921
7851
  }
7922
7852
  ```
7923
7853
 
7924
- <sub>`api.ogt` line 10211</sub>
7854
+ <sub>`api.ogt` line 11930</sub>
7925
7855
 
7926
7856
  <a id="type-LoadingDesc"></a>
7927
7857
 
@@ -7954,7 +7884,7 @@ struct LoadingDesc {
7954
7884
  }
7955
7885
  ```
7956
7886
 
7957
- <sub>`api.ogt` line 10218</sub>
7887
+ <sub>`api.ogt` line 11937</sub>
7958
7888
 
7959
7889
  <a id="type-ConfirmDesc"></a>
7960
7890
 
@@ -7990,7 +7920,7 @@ struct ConfirmDesc {
7990
7920
  }
7991
7921
  ```
7992
7922
 
7993
- <sub>`api.ogt` line 10232</sub>
7923
+ <sub>`api.ogt` line 11951</sub>
7994
7924
 
7995
7925
  <a id="type-ConfirmResult"></a>
7996
7926
 
@@ -8011,7 +7941,7 @@ struct ConfirmResult {
8011
7941
  }
8012
7942
  ```
8013
7943
 
8014
- <sub>`api.ogt` line 10247</sub>
7944
+ <sub>`api.ogt` line 11966</sub>
8015
7945
 
8016
7946
  <a id="type-AlertDesc"></a>
8017
7947
 
@@ -8041,4 +7971,4 @@ struct AlertDesc {
8041
7971
  }
8042
7972
  ```
8043
7973
 
8044
- <sub>`api.ogt` line 10253</sub>
7974
+ <sub>`api.ogt` line 11972</sub>