@bitmagic/cli 0.1.83-dev.1 → 0.1.83-dev.3
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.
- package/README.md +69 -0
- package/assets/skills/publishing-to-steam/SKILL.md +218 -0
- package/dist/assets/vxl-summary.d.ts +6 -20
- package/dist/assets/vxl-summary.js +9 -100
- package/dist/assets/vxl-summary.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/check.js +5 -0
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/forge.js +1 -1
- package/dist/commands/forge.js.map +1 -1
- package/dist/commands/ios.js +88 -136
- package/dist/commands/ios.js.map +1 -1
- package/dist/commands/steam-build.d.ts +67 -0
- package/dist/commands/steam-build.js +286 -0
- package/dist/commands/steam-build.js.map +1 -0
- package/dist/commands/steam-portal.d.ts +1 -0
- package/dist/commands/steam-portal.js +319 -0
- package/dist/commands/steam-portal.js.map +1 -0
- package/dist/commands/steam-upload.d.ts +37 -0
- package/dist/commands/steam-upload.js +174 -0
- package/dist/commands/steam-upload.js.map +1 -0
- package/dist/commands/steam.d.ts +1 -0
- package/dist/commands/steam.js +504 -0
- package/dist/commands/steam.js.map +1 -0
- package/dist/commands/verify.js +6 -0
- package/dist/commands/verify.js.map +1 -1
- package/dist/editor/asset-viewer.js +5 -4
- package/dist/editor/asset-viewer.js.map +1 -1
- package/dist/editor/server.js +1 -1
- package/dist/editor/server.js.map +1 -1
- package/dist/editor/shell-page.js +3 -3
- package/dist/forge/browser-host.d.ts +1 -1
- package/dist/forge/browser-host.js +1 -1
- package/dist/forge/browser-host.js.map +1 -1
- package/dist/ios/native-overrides.d.ts +27 -0
- package/dist/ios/native-overrides.js +87 -0
- package/dist/ios/native-overrides.js.map +1 -0
- package/dist/ios/record-validate.d.ts +1 -33
- package/dist/ios/record-validate.js +2 -100
- package/dist/ios/record-validate.js.map +1 -1
- package/dist/ios/store-bridge.d.ts +26 -0
- package/dist/ios/store-bridge.js +224 -0
- package/dist/ios/store-bridge.js.map +1 -0
- package/dist/ios/storekit-config.d.ts +15 -0
- package/dist/ios/storekit-config.js +106 -0
- package/dist/ios/storekit-config.js.map +1 -0
- package/dist/ios/xcode-template.d.ts +12 -3
- package/dist/ios/xcode-template.js +158 -27
- package/dist/ios/xcode-template.js.map +1 -1
- package/dist/package/collect-urls.d.ts +1 -1
- package/dist/package/collect-urls.js +10 -2
- package/dist/package/collect-urls.js.map +1 -1
- package/dist/package/offline-payload.d.ts +35 -0
- package/dist/package/offline-payload.js +142 -0
- package/dist/package/offline-payload.js.map +1 -0
- package/dist/package/packaged-check.d.ts +39 -0
- package/dist/package/packaged-check.js +104 -0
- package/dist/package/packaged-check.js.map +1 -0
- package/dist/package/transform.d.ts +4 -4
- package/dist/package/transform.js +3 -3
- package/dist/project/published-three.d.ts +14 -0
- package/dist/project/published-three.js +91 -0
- package/dist/project/published-three.js.map +1 -0
- package/dist/publish/bundle.js +6 -0
- package/dist/publish/bundle.js.map +1 -1
- package/dist/scaffold/project-files.js +7 -4
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/project.js +2 -0
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/skill-files.js +3 -1
- package/dist/scaffold/skill-files.js.map +1 -1
- package/dist/scaffold/steam-skill-files.d.ts +2 -0
- package/dist/scaffold/steam-skill-files.js +7 -0
- package/dist/scaffold/steam-skill-files.js.map +1 -0
- package/dist/steam/art-generate.d.ts +55 -0
- package/dist/steam/art-generate.js +174 -0
- package/dist/steam/art-generate.js.map +1 -0
- package/dist/steam/art-render.d.ts +25 -0
- package/dist/steam/art-render.js +157 -0
- package/dist/steam/art-render.js.map +1 -0
- package/dist/steam/art-use.d.ts +20 -0
- package/dist/steam/art-use.js +84 -0
- package/dist/steam/art-use.js.map +1 -0
- package/dist/steam/art.d.ts +98 -0
- package/dist/steam/art.js +243 -0
- package/dist/steam/art.js.map +1 -0
- package/dist/steam/check.d.ts +21 -0
- package/dist/steam/check.js +113 -0
- package/dist/steam/check.js.map +1 -0
- package/dist/steam/config.d.ts +57 -0
- package/dist/steam/config.js +145 -0
- package/dist/steam/config.js.map +1 -0
- package/dist/steam/electron-cache.d.ts +11 -0
- package/dist/steam/electron-cache.js +105 -0
- package/dist/steam/electron-cache.js.map +1 -0
- package/dist/steam/fuses.d.ts +16 -0
- package/dist/steam/fuses.js +75 -0
- package/dist/steam/fuses.js.map +1 -0
- package/dist/steam/icon-files.d.ts +16 -0
- package/dist/steam/icon-files.js +70 -0
- package/dist/steam/icon-files.js.map +1 -0
- package/dist/steam/image-info.d.ts +16 -0
- package/dist/steam/image-info.js +89 -0
- package/dist/steam/image-info.js.map +1 -0
- package/dist/steam/launch-check.d.ts +12 -0
- package/dist/steam/launch-check.js +101 -0
- package/dist/steam/launch-check.js.map +1 -0
- package/dist/steam/media.d.ts +48 -0
- package/dist/steam/media.js +155 -0
- package/dist/steam/media.js.map +1 -0
- package/dist/steam/package-macos.d.ts +52 -0
- package/dist/steam/package-macos.js +268 -0
- package/dist/steam/package-macos.js.map +1 -0
- package/dist/steam/package-windows.d.ts +23 -0
- package/dist/steam/package-windows.js +83 -0
- package/dist/steam/package-windows.js.map +1 -0
- package/dist/steam/paths.d.ts +35 -0
- package/dist/steam/paths.js +44 -0
- package/dist/steam/paths.js.map +1 -0
- package/dist/steam/playtest-shots.d.ts +18 -0
- package/dist/steam/playtest-shots.js +83 -0
- package/dist/steam/playtest-shots.js.map +1 -0
- package/dist/steam/portal-recipes.d.ts +25 -0
- package/dist/steam/portal-recipes.js +61 -0
- package/dist/steam/portal-recipes.js.map +1 -0
- package/dist/steam/portal.d.ts +58 -0
- package/dist/steam/portal.js +340 -0
- package/dist/steam/portal.js.map +1 -0
- package/dist/steam/raster.d.ts +58 -0
- package/dist/steam/raster.js +285 -0
- package/dist/steam/raster.js.map +1 -0
- package/dist/steam/shell-files.d.ts +17 -0
- package/dist/steam/shell-files.js +268 -0
- package/dist/steam/shell-files.js.map +1 -0
- package/dist/steam/specs.d.ts +61 -0
- package/dist/steam/specs.js +103 -0
- package/dist/steam/specs.js.map +1 -0
- package/dist/steam/steampipe.d.ts +46 -0
- package/dist/steam/steampipe.js +170 -0
- package/dist/steam/steampipe.js.map +1 -0
- package/dist/steam/store-copy.d.ts +88 -0
- package/dist/steam/store-copy.js +214 -0
- package/dist/steam/store-copy.js.map +1 -0
- package/dist/steam/tags.d.ts +9 -0
- package/dist/steam/tags.js +52 -0
- package/dist/steam/tags.js.map +1 -0
- package/dist/steam/trailer.d.ts +34 -0
- package/dist/steam/trailer.js +141 -0
- package/dist/steam/trailer.js.map +1 -0
- package/dist/theme/kernel.d.ts +14 -0
- package/dist/theme/kernel.js +15 -0
- package/dist/theme/kernel.js.map +1 -0
- package/dist/theme/theme-io.js +11 -16
- package/dist/theme/theme-io.js.map +1 -1
- package/dist/vendor/hud-theme/catalog.js +71 -0
- package/dist/vendor/hud-theme/engine/hud/ThemeTokens.js +115 -0
- package/dist/{theme/theme-color-math.js → vendor/hud-theme/engine/hud/colorMath.js} +13 -14
- package/dist/vendor/hud-theme/engine/hud/decorations.js +179 -0
- package/dist/vendor/hud-theme/engine/hud/fonts.js +147 -0
- package/dist/vendor/hud-theme/engine/hud/presets.js +80 -0
- package/dist/vendor/hud-theme/engine/hud/resolveWorldTheme.js +66 -0
- package/dist/vendor/hud-theme/engine/hud/themes/bitmagic.js +29 -0
- package/dist/vendor/hud-theme/engine/hud/themes/nexus.js +69 -0
- package/dist/vendor/hud-theme/engine/hud/themes/racing.js +57 -0
- package/dist/vendor/hud-theme/engine/hud/themes/rift-raider.js +63 -0
- package/dist/vendor/hud-theme/engine/hud/themes/simulator.js +55 -0
- package/dist/vendor/hud-theme/engine/hud/themes/village-keep.js +108 -0
- package/dist/vendor/hud-theme/engine/hud/validateTheme.js +535 -0
- package/dist/vendor/hud-theme/index.js +26 -0
- package/dist/{theme/theme-merge.js → vendor/hud-theme/merge.js} +0 -1
- package/dist/{theme/theme-report.js → vendor/hud-theme/report.js} +8 -9
- package/dist/{theme/theme-stored.js → vendor/hud-theme/stored.js} +6 -9
- package/dist/{theme/theme-validate.js → vendor/hud-theme/validate-strict.js} +102 -164
- package/dist/verify/browser.d.ts +11 -0
- package/dist/verify/browser.js +222 -155
- package/dist/verify/browser.js.map +1 -1
- package/dist/verify/categories.d.ts +1 -1
- package/dist/verify/categories.js +1 -0
- package/dist/verify/categories.js.map +1 -1
- package/dist/verify/classify.d.ts +14 -2
- package/dist/verify/classify.js +23 -4
- package/dist/verify/classify.js.map +1 -1
- package/dist/verify/hud-theme.d.ts +19 -14
- package/dist/verify/hud-theme.js +23 -17
- package/dist/verify/hud-theme.js.map +1 -1
- package/dist/verify/mobile-parity.d.ts +1 -1
- package/dist/verify/mobile-parity.js +1 -1
- package/dist/verify/start.d.ts +3 -2
- package/dist/verify/start.js +1 -1
- package/dist/verify/start.js.map +1 -1
- package/package.json +8 -6
- package/dist/theme/hud-theme-catalog.d.ts +0 -235
- package/dist/theme/hud-theme-catalog.js +0 -389
- package/dist/theme/hud-theme-catalog.js.map +0 -1
- package/dist/theme/theme-color-math.d.ts +0 -21
- package/dist/theme/theme-color-math.js.map +0 -1
- package/dist/theme/theme-merge.d.ts +0 -36
- package/dist/theme/theme-merge.js.map +0 -1
- package/dist/theme/theme-report.d.ts +0 -28
- package/dist/theme/theme-report.js.map +0 -1
- package/dist/theme/theme-stored.d.ts +0 -21
- package/dist/theme/theme-stored.js.map +0 -1
- package/dist/theme/theme-validate.d.ts +0 -41
- package/dist/theme/theme-validate.js.map +0 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Racing theme — motorsport telemetry conventions (the "Racing" kit style):
|
|
2
|
+
// white line-art structure on near-black, red reserved for STATE, tall condensed
|
|
3
|
+
// display caps, hard corners, nothing glazed. Danger is a hot red-orange kept
|
|
4
|
+
// distinct from the crimson brand; caution is amber; sectors are green.
|
|
5
|
+
export const RACING_THEME_DATA = {
|
|
6
|
+
name: 'Racing',
|
|
7
|
+
// One-line mood label, read by the agent catalogue so an AI picks the right
|
|
8
|
+
// preset without trying each one. It lives HERE, beside the tokens it
|
|
9
|
+
// describes, so that changing the style and changing its description are the
|
|
10
|
+
// same edit — it drifted badly when it lived only in the agent mirror. The
|
|
11
|
+
// engine validator ignores unknown top-level keys, so this never reaches
|
|
12
|
+
// ThemeTokens; `PRESET_EVOKES` in presets.ts is what exposes it.
|
|
13
|
+
evokes: 'Motorsport telemetry — white line-art chrome on black with red reserved for state, tall narrow gothic caps, amber caution / green sector',
|
|
14
|
+
font: {
|
|
15
|
+
key: 'archivo-narrow',
|
|
16
|
+
case: 'upper',
|
|
17
|
+
weightBody: 500,
|
|
18
|
+
weightHeading: 700,
|
|
19
|
+
trackingLabel: 1.2,
|
|
20
|
+
outlineWidth: 0,
|
|
21
|
+
},
|
|
22
|
+
colors: {
|
|
23
|
+
// NOT red. The engine spends `primary` on both FILLS and accent TYPE —
|
|
24
|
+
// 13 `color: var(--hud-color-primary)` sites in hudBaseStyles/modalCard
|
|
25
|
+
// (lobby title + status, success toast, reticle, counters, modal title)
|
|
26
|
+
// plus whatever the game's own panels use it for. Any red here is red
|
|
27
|
+
// TYPE on a near-black HUD, which is what kept getting reported, and no
|
|
28
|
+
// saturated red can be fixed by tuning: even pure #FF0000 tops out at
|
|
29
|
+
// 4.87:1 on this surface.
|
|
30
|
+
//
|
|
31
|
+
// So Racing takes the OTHER half of its own reference: white line-art
|
|
32
|
+
// chrome, with red reserved for state. Red did not leave the style — it
|
|
33
|
+
// moved to `danger` below, where it means the redline, a failed run and
|
|
34
|
+
// critical health, which is exactly how a real timing board uses it.
|
|
35
|
+
primary: '#E8EDF2',
|
|
36
|
+
danger: '#FF4D3A',
|
|
37
|
+
warning: '#FFB000',
|
|
38
|
+
success: '#22C55E',
|
|
39
|
+
background: '#07090C',
|
|
40
|
+
surface: '#0E1319',
|
|
41
|
+
text: '#F2F5F8',
|
|
42
|
+
textMuted: '#9BA4AE', // 5.99:1 -> 7.39:1 under bebas-neue's narrow strokes
|
|
43
|
+
outline: '#C9D2DA',
|
|
44
|
+
},
|
|
45
|
+
shape: {
|
|
46
|
+
// Buttons are OBJECTS even when the panels are flat: `bevel` paints the
|
|
47
|
+
// white-top/dark-bottom gradient over buttons, counters and bars, and a
|
|
48
|
+
// 2px border in colors.outline follows the radius. The plates keep their
|
|
49
|
+
// hairline language — only the controls gain relief.
|
|
50
|
+
radiusPill: 4,
|
|
51
|
+
radiusCard: 2,
|
|
52
|
+
glow: 'none',
|
|
53
|
+
imageRendering: 'auto',
|
|
54
|
+
borderWidth: 2,
|
|
55
|
+
bevel: 0.5,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Rift Raider theme — mobile action-RPG conventions (the "Rift Raider" kit
|
|
2
|
+
// style): cast-gold medallion frames on dark INDIGO glass, cream display type
|
|
3
|
+
// with a dark bronze stroke, ornate royal borders and a leather-grain backdrop.
|
|
4
|
+
// The outline token is the dark keyline, not the gold: it edges gold buttons AND
|
|
5
|
+
// strokes cream text, and both read right in bronze.
|
|
6
|
+
//
|
|
7
|
+
// The reference's material law is that GOLD IS TRIM, NOT FILL — it belongs to
|
|
8
|
+
// the band around a dark face, never to the face itself. `primary` stays gold
|
|
9
|
+
// because the engine spends it on frames, rules and accent type; the faces it
|
|
10
|
+
// sits against come from `surface`.
|
|
11
|
+
export const RIFT_RAIDER_THEME_DATA = {
|
|
12
|
+
name: 'Rift Raider',
|
|
13
|
+
// One-line mood label, read by the agent catalogue so an AI picks the right
|
|
14
|
+
// preset without trying each one. It lives HERE, beside the tokens it
|
|
15
|
+
// describes, so that changing the style and changing its description are the
|
|
16
|
+
// same edit — it drifted badly when it lived only in the agent mirror. The
|
|
17
|
+
// engine validator ignores unknown top-level keys, so this never reaches
|
|
18
|
+
// ThemeTokens; `PRESET_EVOKES` in presets.ts is what exposes it.
|
|
19
|
+
evokes: 'Mobile action-RPG — cast-gold medallion frames on dark indigo glass, chunky cream type with a dark ink ring, royal borders (Diablo-style)',
|
|
20
|
+
font: {
|
|
21
|
+
// Baloo 2, not lilita-one: Google serves Lilita One at a single weight,
|
|
22
|
+
// so `weightBody` and `weightHeading` both collapsed to 400 and this
|
|
23
|
+
// preset had NO type hierarchy at all — the one thing a HUD needs to
|
|
24
|
+
// separate a label from the value it labels. Baloo 2 is the same
|
|
25
|
+
// rounded chunky voice and ships 400-800, and it is the face the kit
|
|
26
|
+
// half of this style already uses.
|
|
27
|
+
key: 'baloo-2',
|
|
28
|
+
case: 'upper',
|
|
29
|
+
weightBody: 500,
|
|
30
|
+
weightHeading: 700,
|
|
31
|
+
trackingLabel: 0.8,
|
|
32
|
+
outlineWidth: 2,
|
|
33
|
+
},
|
|
34
|
+
colors: {
|
|
35
|
+
primary: '#F0B23A',
|
|
36
|
+
danger: '#D6332E',
|
|
37
|
+
warning: '#E07A28',
|
|
38
|
+
success: '#5FB35A',
|
|
39
|
+
// The dark ladder sits at hue ~256, not the old ~217. This style's
|
|
40
|
+
// violet accents live at 269, and against a hue-217 navy the surfaces
|
|
41
|
+
// and the accents read as two unrelated colour families sharing a
|
|
42
|
+
// screen. Lightness is held; only hue moves.
|
|
43
|
+
background: '#0B0716',
|
|
44
|
+
surface: '#191228',
|
|
45
|
+
text: '#FFF6E2',
|
|
46
|
+
textMuted: '#B9A889',
|
|
47
|
+
outline: '#5A3D0C',
|
|
48
|
+
},
|
|
49
|
+
shape: {
|
|
50
|
+
radiusPill: 14,
|
|
51
|
+
radiusCard: 14,
|
|
52
|
+
glow: 'gold',
|
|
53
|
+
imageRendering: 'auto',
|
|
54
|
+
borderWidth: 2,
|
|
55
|
+
bevel: 0.85,
|
|
56
|
+
},
|
|
57
|
+
decorations: {
|
|
58
|
+
progressBar: { borderImage: 'royal-frame' },
|
|
59
|
+
healthBar: { borderImage: 'royal-frame' },
|
|
60
|
+
toast: { borderImage: 'royal-frame' },
|
|
61
|
+
controls: { backdrop: 'grain-texture' },
|
|
62
|
+
},
|
|
63
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Simulator theme — instrument-panel conventions (the "Simulator" kit style):
|
|
2
|
+
// flat slate plates, hard corners, neutral grey-blue structure and ONE azure
|
|
3
|
+
// accent reserved for state. No glow and no decoration on the plates — the seriousness
|
|
4
|
+
// IS the absence of jewellery. Bars run semantic green / amber / red.
|
|
5
|
+
export const SIMULATOR_THEME_DATA = {
|
|
6
|
+
name: 'Simulator',
|
|
7
|
+
// One-line mood label, read by the agent catalogue so an AI picks the right
|
|
8
|
+
// preset without trying each one. It lives HERE, beside the tokens it
|
|
9
|
+
// describes, so that changing the style and changing its description are the
|
|
10
|
+
// same edit — it drifted badly when it lived only in the agent mirror. The
|
|
11
|
+
// engine validator ignores unknown top-level keys, so this never reaches
|
|
12
|
+
// ThemeTokens; `PRESET_EVOKES` in presets.ts is what exposes it.
|
|
13
|
+
evokes: 'Serious instrument panel — flat slate, hard corners, one azure accent for state, thin meters and a bare dial, no glow or ornament (flight/truck sim)',
|
|
14
|
+
font: {
|
|
15
|
+
key: 'ibm-plex-sans',
|
|
16
|
+
case: 'upper',
|
|
17
|
+
weightBody: 400,
|
|
18
|
+
weightHeading: 700,
|
|
19
|
+
trackingLabel: 0.8,
|
|
20
|
+
outlineWidth: 0,
|
|
21
|
+
},
|
|
22
|
+
colors: {
|
|
23
|
+
primary: '#2E9BDB',
|
|
24
|
+
danger: '#C8453F',
|
|
25
|
+
warning: '#D8A32E',
|
|
26
|
+
success: '#4E9E57',
|
|
27
|
+
background: '#0E141B',
|
|
28
|
+
surface: '#161E27',
|
|
29
|
+
text: '#DDE5EC',
|
|
30
|
+
textMuted: '#A2B0BE', // 4.84:1 -> 7.60:1; 4.5:1 is a 12-14px bar, not a 10px one
|
|
31
|
+
outline: '#46586A',
|
|
32
|
+
},
|
|
33
|
+
shape: {
|
|
34
|
+
// CONTOURED, NOT MOULDED — and that split is deliberate.
|
|
35
|
+
//
|
|
36
|
+
// The reference has neither: across eight screens of the Farming
|
|
37
|
+
// Simulator UI there is not one moulded control, and the first pass
|
|
38
|
+
// took it literally and set `bevel: 0`. Dead flat read as underdrawn
|
|
39
|
+
// next to the rest of the kit, so the call was made to depart from the
|
|
40
|
+
// reference here: `bevel` is what paints the white-top/dark-bottom
|
|
41
|
+
// gradient over buttons, counters and bars, and a modest 0.35 gives the
|
|
42
|
+
// fill and edge some depth.
|
|
43
|
+
//
|
|
44
|
+
// What stays gone is the SILHOUETTE moulding — the lip, the dome, the
|
|
45
|
+
// cast shadow — which is what made this style look like a mobile game
|
|
46
|
+
// wearing a simulator's palette. `borderWidth` stays 1: the edge here is
|
|
47
|
+
// a hairline, not the 2px rim the four physical styles carry.
|
|
48
|
+
radiusPill: 4,
|
|
49
|
+
radiusCard: 2,
|
|
50
|
+
glow: 'none',
|
|
51
|
+
imageRendering: 'auto',
|
|
52
|
+
borderWidth: 1,
|
|
53
|
+
bevel: 0.35,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Village Keep theme — cartoon-strategy conventions (the "Village Keep" kit
|
|
2
|
+
// style): a light parchment ground for the big UI, darker moulded furniture for
|
|
3
|
+
// the HUD itself, candy-green buttons, rounded everything, maximum gloss and
|
|
4
|
+
// zero glow.
|
|
5
|
+
//
|
|
6
|
+
// THREE LEVELS, and they are the whole point of this preset:
|
|
7
|
+
//
|
|
8
|
+
// background #E9E1CE the light ground the BIG UI stands on — a game's own
|
|
9
|
+
// dialogs and panels paint themselves with this, and the
|
|
10
|
+
// lobby's text input is a light well because of it.
|
|
11
|
+
// surface #6E5C44 the HUD FURNITURE — counters, timers, toasts, the
|
|
12
|
+
// controls box, bubbles. 4.92:1 darker than the ground it
|
|
13
|
+
// sits on and 3.29:1 against a sunny-green world, so it
|
|
14
|
+
// reads as an object laid over the field rather than a
|
|
15
|
+
// patch of it.
|
|
16
|
+
// trough #3A3126 per-element, for the two bars: a channel has to be the
|
|
17
|
+
// darkest thing in the widget or the fill cannot be the
|
|
18
|
+
// brightest.
|
|
19
|
+
//
|
|
20
|
+
// Getting those three apart needed an engine token. `text` used to carry two
|
|
21
|
+
// jobs — ink on the light ground AND ink on the furniture — which only agree on a
|
|
22
|
+
// uniformly dark theme. With one ink the furniture caps out around #9E9276, which
|
|
23
|
+
// is 1.4:1 against grass and so is not furniture at all; that ceiling is why this
|
|
24
|
+
// style spent three rounds flipping between a washed-out HUD and a uniformly dark
|
|
25
|
+
// one. `--hud-color-on-surface` (see ThemeManager) derives the second ink, so the
|
|
26
|
+
// ground can stay light while the furniture goes as dark as it needs to. Here it
|
|
27
|
+
// resolves to white at 6.41:1, and its muted companion to #DEDAD5 at 4.65:1.
|
|
28
|
+
//
|
|
29
|
+
// What the palette still has to solve by hand:
|
|
30
|
+
//
|
|
31
|
+
// - `primary`, `danger` and `warning` are each a FILL colour and an accent TYPE
|
|
32
|
+
// colour, and on this style the type sits on `surface` (five of the six
|
|
33
|
+
// `color: var(--hud-color-primary)` rules do). Type wants a light value,
|
|
34
|
+
// which is the opposite of the usual instinct for a fill — but going light
|
|
35
|
+
// lets `--hud-color-on-primary` / `--hud-color-on-danger` derive BLACK, and a
|
|
36
|
+
// dark label on a bright candy fill clears far more than white on a mid one.
|
|
37
|
+
// Both jobs come out ahead.
|
|
38
|
+
// - the one place that trade does NOT hold is the health bar, whose fill sits in
|
|
39
|
+
// a near-black trough where a pale salmon reads as neither red nor alarming.
|
|
40
|
+
// That is what the per-element overrides at the bottom are for.
|
|
41
|
+
export const VILLAGE_KEEP_THEME_DATA = {
|
|
42
|
+
name: 'Village Keep',
|
|
43
|
+
// One-line mood label, read by the agent catalogue so an AI picks the right
|
|
44
|
+
// preset without trying each one. It lives HERE, beside the tokens it
|
|
45
|
+
// describes, so that changing the style and changing its description are the
|
|
46
|
+
// same edit — it drifted badly when it lived only in the agent mirror. The
|
|
47
|
+
// engine validator ignores unknown top-level keys, so this never reaches
|
|
48
|
+
// ThemeTokens; `PRESET_EVOKES` in presets.ts is what exposes it.
|
|
49
|
+
evokes: 'Cartoon strategy — light parchment panels with darker moulded HUD chips over a sunny world, candy-green glossy buttons, ink-outlined type, zero glow (Clash-style)',
|
|
50
|
+
font: {
|
|
51
|
+
key: 'fredoka',
|
|
52
|
+
case: 'upper',
|
|
53
|
+
weightBody: 500,
|
|
54
|
+
weightHeading: 700,
|
|
55
|
+
trackingLabel: 0.6,
|
|
56
|
+
// Light type on the furniture wants a dark ring — the pairing the ink
|
|
57
|
+
// ring was invented for, and what keeps the bar's inside-value legible
|
|
58
|
+
// where it crosses its own fill.
|
|
59
|
+
outlineWidth: 2,
|
|
60
|
+
},
|
|
61
|
+
colors: {
|
|
62
|
+
primary: '#9BDB4F', // 3.86:1 as accent type on the furniture; auto-label black 12.64
|
|
63
|
+
danger: '#FFA898', // 3.45:1 as type; auto-label black 11.31
|
|
64
|
+
warning: '#FFC46B', // 4.08:1 as type; the mobile button's black label 13.36
|
|
65
|
+
success: '#A5E27E', // 4.20:1 as type
|
|
66
|
+
background: '#E9E1CE',
|
|
67
|
+
surface: '#6E5C44',
|
|
68
|
+
text: '#413A2C', // 8.64:1 on the ground — this ink is for the BIG UI
|
|
69
|
+
textMuted: '#585040', // 6.12:1 on the ground
|
|
70
|
+
outline: '#3A6212', // dark forest edge: the button's ring and the panel's border
|
|
71
|
+
},
|
|
72
|
+
shape: {
|
|
73
|
+
radiusPill: 14,
|
|
74
|
+
radiusCard: 18,
|
|
75
|
+
glow: 'none',
|
|
76
|
+
imageRendering: 'auto',
|
|
77
|
+
borderWidth: 3,
|
|
78
|
+
bevel: 0.9,
|
|
79
|
+
},
|
|
80
|
+
decorations: {
|
|
81
|
+
// The gloss is on the small pill only. On a near-black surface it cost
|
|
82
|
+
// nothing to put it on the controls box as well, but against mid-brown
|
|
83
|
+
// furniture the highlight lifts the backdrop under the first key rows far
|
|
84
|
+
// enough to take their muted label from 4.65:1 to 3.88:1 — and a
|
|
85
|
+
// highlight is a button-and-chip device in the reference anyway, not
|
|
86
|
+
// something laid across an information panel.
|
|
87
|
+
toast: { backdrop: 'candy-gloss' },
|
|
88
|
+
},
|
|
89
|
+
elements: {
|
|
90
|
+
// `background` is the light ground now, and `hudBaseStyles` paints a bar
|
|
91
|
+
// TRACK with it — which would put a light fill inside a light channel and
|
|
92
|
+
// leave the reading to guesswork. The reference settles it the same way:
|
|
93
|
+
// its resource meters are near-black troughs precisely so the coloured
|
|
94
|
+
// fill is the brightest thing in the bar.
|
|
95
|
+
progressBar: { colors: { background: '#3A3126' } },
|
|
96
|
+
healthBar: {
|
|
97
|
+
colors: {
|
|
98
|
+
background: '#3A3126',
|
|
99
|
+
// Deeper than the global values, which are tuned to be legible as
|
|
100
|
+
// TYPE on the mid-brown furniture. In a near-black trough that
|
|
101
|
+
// tuning inverts: a pale salmon is 1.9:1 there and reads as
|
|
102
|
+
// neither red nor urgent, where this is 3.11:1 and unmistakable.
|
|
103
|
+
danger: '#E2452F',
|
|
104
|
+
warning: '#E89A2A',
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
};
|