@sbugallo/pokecode 0.2.1 → 0.3.1

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 (143) hide show
  1. package/README.md +17 -11
  2. package/dist/adapters/opencode/tui/choices/cards.d.ts +9 -0
  3. package/dist/adapters/opencode/tui/choices/cards.d.ts.map +1 -1
  4. package/dist/adapters/opencode/tui/choices/cards.jsx +24 -17
  5. package/dist/adapters/opencode/tui/choices/cards.jsx.map +1 -1
  6. package/dist/adapters/opencode/tui/choices/encounter.d.ts +4 -1
  7. package/dist/adapters/opencode/tui/choices/encounter.d.ts.map +1 -1
  8. package/dist/adapters/opencode/tui/choices/encounter.jsx +7 -5
  9. package/dist/adapters/opencode/tui/choices/encounter.jsx.map +1 -1
  10. package/dist/adapters/opencode/tui/components/action-button.d.ts +3 -2
  11. package/dist/adapters/opencode/tui/components/action-button.d.ts.map +1 -1
  12. package/dist/adapters/opencode/tui/components/action-button.jsx +15 -7
  13. package/dist/adapters/opencode/tui/components/action-button.jsx.map +1 -1
  14. package/dist/adapters/opencode/tui/components/image-protocol.d.ts +31 -0
  15. package/dist/adapters/opencode/tui/components/image-protocol.d.ts.map +1 -0
  16. package/dist/adapters/opencode/tui/components/image-protocol.js +83 -0
  17. package/dist/adapters/opencode/tui/components/image-protocol.js.map +1 -0
  18. package/dist/adapters/opencode/tui/components/move-list.d.ts +2 -0
  19. package/dist/adapters/opencode/tui/components/move-list.d.ts.map +1 -1
  20. package/dist/adapters/opencode/tui/components/move-list.jsx +9 -11
  21. package/dist/adapters/opencode/tui/components/move-list.jsx.map +1 -1
  22. package/dist/adapters/opencode/tui/components/sprite.d.ts +4 -0
  23. package/dist/adapters/opencode/tui/components/sprite.d.ts.map +1 -1
  24. package/dist/adapters/opencode/tui/components/sprite.jsx +4 -2
  25. package/dist/adapters/opencode/tui/components/sprite.jsx.map +1 -1
  26. package/dist/adapters/opencode/tui/dex/dialog.d.ts.map +1 -1
  27. package/dist/adapters/opencode/tui/dex/dialog.jsx +8 -4
  28. package/dist/adapters/opencode/tui/dex/dialog.jsx.map +1 -1
  29. package/dist/adapters/opencode/tui/pc/actions.d.ts +4 -4
  30. package/dist/adapters/opencode/tui/pc/actions.d.ts.map +1 -1
  31. package/dist/adapters/opencode/tui/pc/actions.jsx +1 -1
  32. package/dist/adapters/opencode/tui/pc/actions.jsx.map +1 -1
  33. package/dist/adapters/opencode/tui/pc/details.d.ts +4 -1
  34. package/dist/adapters/opencode/tui/pc/details.d.ts.map +1 -1
  35. package/dist/adapters/opencode/tui/pc/details.jsx +14 -10
  36. package/dist/adapters/opencode/tui/pc/details.jsx.map +1 -1
  37. package/dist/adapters/opencode/tui/pc/dialog.d.ts +4 -3
  38. package/dist/adapters/opencode/tui/pc/dialog.d.ts.map +1 -1
  39. package/dist/adapters/opencode/tui/pc/dialog.jsx +16 -18
  40. package/dist/adapters/opencode/tui/pc/dialog.jsx.map +1 -1
  41. package/dist/adapters/opencode/tui/plugin.d.ts.map +1 -1
  42. package/dist/adapters/opencode/tui/plugin.jsx +14 -8
  43. package/dist/adapters/opencode/tui/plugin.jsx.map +1 -1
  44. package/dist/adapters/opencode/tui/sidebar/register.d.ts +6 -5
  45. package/dist/adapters/opencode/tui/sidebar/register.d.ts.map +1 -1
  46. package/dist/adapters/opencode/tui/sidebar/register.jsx +2 -2
  47. package/dist/adapters/opencode/tui/sidebar/register.jsx.map +1 -1
  48. package/dist/adapters/opencode/tui/sidebar/view.d.ts +9 -4
  49. package/dist/adapters/opencode/tui/sidebar/view.d.ts.map +1 -1
  50. package/dist/adapters/opencode/tui/sidebar/view.jsx +27 -23
  51. package/dist/adapters/opencode/tui/sidebar/view.jsx.map +1 -1
  52. package/dist/adapters/opencode/tui/state/cleanup.d.ts +1 -0
  53. package/dist/adapters/opencode/tui/state/cleanup.d.ts.map +1 -1
  54. package/dist/adapters/opencode/tui/state/cleanup.js +1 -0
  55. package/dist/adapters/opencode/tui/state/cleanup.js.map +1 -1
  56. package/dist/adapters/opencode/tui/theme.d.ts +81 -0
  57. package/dist/adapters/opencode/tui/theme.d.ts.map +1 -0
  58. package/dist/adapters/opencode/tui/theme.js +64 -0
  59. package/dist/adapters/opencode/tui/theme.js.map +1 -0
  60. package/dist/adapters/opencode/tui/travel/actions.d.ts +4 -0
  61. package/dist/adapters/opencode/tui/travel/actions.d.ts.map +1 -1
  62. package/dist/adapters/opencode/tui/travel/actions.jsx +1 -1
  63. package/dist/adapters/opencode/tui/travel/actions.jsx.map +1 -1
  64. package/dist/adapters/opencode/tui/travel/dialog.d.ts +4 -0
  65. package/dist/adapters/opencode/tui/travel/dialog.d.ts.map +1 -1
  66. package/dist/adapters/opencode/tui/travel/dialog.jsx +28 -18
  67. package/dist/adapters/opencode/tui/travel/dialog.jsx.map +1 -1
  68. package/dist/adapters/sqlite/game-repository.d.ts +2 -1
  69. package/dist/adapters/sqlite/game-repository.d.ts.map +1 -1
  70. package/dist/adapters/sqlite/game-repository.js +9 -1
  71. package/dist/adapters/sqlite/game-repository.js.map +1 -1
  72. package/dist/adapters/sqlite/queries/game-state.d.ts +2 -1
  73. package/dist/adapters/sqlite/queries/game-state.d.ts.map +1 -1
  74. package/dist/adapters/sqlite/queries/game-state.js +9 -3
  75. package/dist/adapters/sqlite/queries/game-state.js.map +1 -1
  76. package/dist/application/contracts/game.d.ts +3 -2
  77. package/dist/application/contracts/game.d.ts.map +1 -1
  78. package/dist/application/contracts/game.js +3 -2
  79. package/dist/application/contracts/game.js.map +1 -1
  80. package/dist/application/game.d.ts.map +1 -1
  81. package/dist/application/game.js +5 -1
  82. package/dist/application/game.js.map +1 -1
  83. package/dist/application/ports/game.d.ts +2 -1
  84. package/dist/application/ports/game.d.ts.map +1 -1
  85. package/dist/application/use-cases/record-usage.d.ts.map +1 -1
  86. package/dist/application/use-cases/record-usage.js +17 -4
  87. package/dist/application/use-cases/record-usage.js.map +1 -1
  88. package/dist/domain/content/catalog.d.ts +4 -0
  89. package/dist/domain/content/catalog.d.ts.map +1 -1
  90. package/dist/domain/content/catalog.js +17 -0
  91. package/dist/domain/content/catalog.js.map +1 -1
  92. package/dist/domain/content/catalogs/alola-locations-catalog.d.ts +1 -0
  93. package/dist/domain/content/catalogs/alola-locations-catalog.d.ts.map +1 -1
  94. package/dist/domain/content/catalogs/alola-locations-catalog.js +1 -0
  95. package/dist/domain/content/catalogs/alola-locations-catalog.js.map +1 -1
  96. package/dist/domain/content/catalogs/galar-locations-catalog.d.ts +1 -0
  97. package/dist/domain/content/catalogs/galar-locations-catalog.d.ts.map +1 -1
  98. package/dist/domain/content/catalogs/galar-locations-catalog.js +1 -0
  99. package/dist/domain/content/catalogs/galar-locations-catalog.js.map +1 -1
  100. package/dist/domain/content/catalogs/hoenn-locations-catalog.d.ts +1 -0
  101. package/dist/domain/content/catalogs/hoenn-locations-catalog.d.ts.map +1 -1
  102. package/dist/domain/content/catalogs/hoenn-locations-catalog.js +1 -0
  103. package/dist/domain/content/catalogs/hoenn-locations-catalog.js.map +1 -1
  104. package/dist/domain/content/catalogs/johto-locations-catalog.d.ts +1 -0
  105. package/dist/domain/content/catalogs/johto-locations-catalog.d.ts.map +1 -1
  106. package/dist/domain/content/catalogs/johto-locations-catalog.js +1 -0
  107. package/dist/domain/content/catalogs/johto-locations-catalog.js.map +1 -1
  108. package/dist/domain/content/catalogs/kalos-locations-catalog.d.ts +1 -0
  109. package/dist/domain/content/catalogs/kalos-locations-catalog.d.ts.map +1 -1
  110. package/dist/domain/content/catalogs/kalos-locations-catalog.js +1 -0
  111. package/dist/domain/content/catalogs/kalos-locations-catalog.js.map +1 -1
  112. package/dist/domain/content/catalogs/kanto-locations-catalog.d.ts +1 -0
  113. package/dist/domain/content/catalogs/kanto-locations-catalog.d.ts.map +1 -1
  114. package/dist/domain/content/catalogs/kanto-locations-catalog.js +1 -0
  115. package/dist/domain/content/catalogs/kanto-locations-catalog.js.map +1 -1
  116. package/dist/domain/content/catalogs/paldea-locations-catalog.d.ts +1 -0
  117. package/dist/domain/content/catalogs/paldea-locations-catalog.d.ts.map +1 -1
  118. package/dist/domain/content/catalogs/paldea-locations-catalog.js +1 -0
  119. package/dist/domain/content/catalogs/paldea-locations-catalog.js.map +1 -1
  120. package/dist/domain/content/catalogs/sinnoh-locations-catalog.d.ts +1 -0
  121. package/dist/domain/content/catalogs/sinnoh-locations-catalog.d.ts.map +1 -1
  122. package/dist/domain/content/catalogs/sinnoh-locations-catalog.js +1 -0
  123. package/dist/domain/content/catalogs/sinnoh-locations-catalog.js.map +1 -1
  124. package/dist/domain/content/catalogs/unova-locations-catalog.d.ts +1 -0
  125. package/dist/domain/content/catalogs/unova-locations-catalog.d.ts.map +1 -1
  126. package/dist/domain/content/catalogs/unova-locations-catalog.js +1 -0
  127. package/dist/domain/content/catalogs/unova-locations-catalog.js.map +1 -1
  128. package/dist/domain/content/schema.d.ts +1 -0
  129. package/dist/domain/content/schema.d.ts.map +1 -1
  130. package/dist/domain/content/schema.js +2 -0
  131. package/dist/domain/content/schema.js.map +1 -1
  132. package/dist/domain/exploration/exploration.d.ts +20 -0
  133. package/dist/domain/exploration/exploration.d.ts.map +1 -1
  134. package/dist/domain/exploration/exploration.js +17 -0
  135. package/dist/domain/exploration/exploration.js.map +1 -1
  136. package/dist/domain/usage/usage.d.ts +3 -3
  137. package/dist/domain/usage/usage.d.ts.map +1 -1
  138. package/dist/domain/usage/usage.js +4 -2
  139. package/dist/domain/usage/usage.js.map +1 -1
  140. package/dist/index.js +67 -10
  141. package/dist/rpc.js +8 -2
  142. package/dist/tui.js +530 -150
  143. package/package.json +1 -1
package/README.md CHANGED
@@ -54,7 +54,7 @@ Your active team gains experience from the tokens reported for completed assista
54
54
  includes input, output, reasoning, and cache read/write tokens. Usage is deduplicated across
55
55
  sessions and restarts so the same message is never counted twice.
56
56
 
57
- By default, **every 1,000 counted tokens grants 1 XP to each active Pokémon**. Fractional XP carries
57
+ **Every 1,000 counted tokens grants 1 XP to each active Pokémon**. Fractional XP carries
58
58
  forward. Your team can hold up to six Pokémon, and only active team members earn new XP; Pokémon in
59
59
  the PC remain idle. The level cap is 100.
60
60
 
@@ -166,10 +166,13 @@ evolve during the next applied usage event; it does not have to hit the exact le
166
166
 
167
167
  Start in any of the nine regions and choose one of its three native starters.
168
168
 
169
- By default, spending **2,160,000 eligible tokens at your newest unlocked location** unlocks the
170
- next stop. Use `/pokecode-locations` to travel there before working toward the following location.
171
- Returning to an older location preserves your unlock progress, but usage there does not advance the
172
- next unlock.
169
+ Each location has its own unlock cost, charged for eligible tokens spent at your newest unlocked
170
+ location. Costs follow a power curve over the location's position in its region's story, normalized
171
+ by region length and calibrated against main-series gym-leader and champion ace levels, so your
172
+ party keeps pace with the narrative. After a region's champion, further locations cost no more than
173
+ the final approach. Use `/pokecode-locations` to travel there before working toward the following
174
+ location. Returning to an older location preserves your unlock progress, but usage there does not
175
+ advance the next unlock.
173
176
 
174
177
  A single usage event can unlock at most one location; excess unlock progress is discarded. Travel is
175
178
  always manual, even in continuous mode.
@@ -262,10 +265,11 @@ default:
262
265
  "options": {
263
266
  "language": "en",
264
267
  "pauseOnPendingChoice": true,
265
- "xpTokensPerPoint": 1000,
266
268
  "encounterMinimumTokens": 200000,
267
269
  "encounterMaximumTokens": 400000,
268
- "locationUnlockTokens": 2160000
270
+ "locationUnlockBaseTokens": 4214000,
271
+ "locationUnlockExponent": 2.64,
272
+ "locationUnlockRegionExponent": -1.72
269
273
  }
270
274
  }
271
275
  ]
@@ -276,13 +280,15 @@ default:
276
280
  | --- | --- |
277
281
  | `language` | `en` for English or `es` for Spanish. Localizes Pokémon, locations, regions, moves, abilities, and interface text. Missing translations fall back to English. |
278
282
  | `pauseOnPendingChoice` | Pauses XP, encounters, and exploration while decisions are pending. Set to `false` for continuous progression and persistent queues. |
279
- | `xpTokensPerPoint` | Counted tokens required for 1 XP per active Pokémon. Lower values mean faster leveling. |
280
283
  | `encounterMinimumTokens` | Minimum eligible-token interval between encounter opportunities. |
281
284
  | `encounterMaximumTokens` | Maximum eligible-token interval between encounter opportunities. |
282
- | `locationUnlockTokens` | Eligible tokens required at the newest unlocked location to unlock the next stop. |
285
+ | `locationUnlockBaseTokens` | Scale of the location-unlock cost curve. |
286
+ | `locationUnlockExponent` | How quickly unlock costs grow along a region's story. |
287
+ | `locationUnlockRegionExponent` | Normalization applied by region length so short and long regions pace alike. Typically negative. |
283
288
 
284
- Token thresholds must be positive integers. Reload or restart OpenCode after changing options.
285
- Because the save is shared, use consistent gameplay settings across concurrently running instances.
289
+ Token thresholds must be positive integers; the exponents are plain numbers. Reload or restart
290
+ OpenCode after changing options. Because the save is shared, use consistent gameplay settings
291
+ across concurrently running instances.
286
292
 
287
293
  ## Storage
288
294
 
@@ -1,11 +1,15 @@
1
1
  import type { GameState } from "../../../../application/contracts/game.js";
2
2
  import type { SpriteResolver } from "../../../sprites/contracts.js";
3
+ import type { ImageProtocolAccessor } from "../components/image-protocol.js";
4
+ import { type PokecodeSurface } from "../theme.js";
3
5
  export declare function PendingChoiceCard(properties: {
4
6
  readonly state: () => GameState;
5
7
  readonly onResolveMove: (choiceId: string, selectedMoveId: string) => Promise<void>;
6
8
  readonly onResolveEvolution: (choiceId: string, selectedSpeciesId: string) => Promise<void>;
7
9
  readonly resolveSprite: SpriteResolver;
10
+ readonly imageProtocol: ImageProtocolAccessor;
8
11
  readonly language: () => GameState["locale"];
12
+ readonly theme?: (() => PokecodeSurface) | undefined;
9
13
  }): any;
10
14
  export declare function MoveChoiceCard(properties: {
11
15
  readonly choice: () => GameState["pendingChoices"][number] | undefined;
@@ -13,20 +17,25 @@ export declare function MoveChoiceCard(properties: {
13
17
  readonly choicePokemon: () => GameState["choicePokemon"];
14
18
  readonly onResolve: (choiceId: string, selectedMoveId: string) => Promise<void>;
15
19
  readonly resolveSprite: SpriteResolver;
20
+ readonly imageProtocol: ImageProtocolAccessor;
16
21
  readonly language?: (() => GameState["locale"]) | undefined;
22
+ readonly theme?: (() => PokecodeSurface) | undefined;
17
23
  }): any;
18
24
  export declare function EvolutionChoiceCard(properties: {
19
25
  readonly choice: () => GameState["pendingChoices"][number] | undefined;
20
26
  readonly party: () => GameState["party"];
21
27
  readonly choicePokemon: () => GameState["choicePokemon"];
22
28
  readonly resolveSprite: SpriteResolver;
29
+ readonly imageProtocol: ImageProtocolAccessor;
23
30
  readonly language: () => GameState["locale"];
24
31
  readonly onResolve: (choiceId: string, selectedSpeciesId: string) => Promise<void>;
32
+ readonly theme?: (() => PokecodeSurface) | undefined;
25
33
  }): any;
26
34
  export declare function RegionChoiceCard(properties: {
27
35
  readonly choice: () => GameState["pendingChoices"][number] | undefined;
28
36
  readonly visitedRegionIds: () => readonly string[];
29
37
  readonly onTravel: (regionId: string) => Promise<void>;
30
38
  readonly language?: (() => GameState["locale"]) | undefined;
39
+ readonly theme?: (() => PokecodeSurface) | undefined;
31
40
  }): any;
32
41
  //# sourceMappingURL=cards.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/choices/cards.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AAQ1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAInE,wBAAgB,iBAAiB,CAAC,UAAU,EAAE;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,SAAS,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnF,QAAQ,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3F,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAA;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;CAC7C,OA8BA;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,SAAS,CAAC,eAAe,CAAC,CAAA;IACxD,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/E,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAA;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;CAC5D,OAgDA;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,SAAS,CAAC,eAAe,CAAC,CAAA;IACxD,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAA;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC5C,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACnF,OA4CA;AAmDD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IACtE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,SAAS,MAAM,EAAE,CAAA;IAClD,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;CAC5D,OAwDA"}
1
+ {"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/choices/cards.tsx"],"names":[],"mappings":"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"}
@@ -6,15 +6,16 @@ import { regions } from "../../../../domain/content/catalog.js";
6
6
  import { uiCopy } from "../../../presentation/ui-copy.js";
7
7
  import { MoveList } from "../components/move-list.js";
8
8
  import { Sprite } from "../components/sprite.js";
9
+ import { fallbackPokecodeTheme } from "../theme.js";
9
10
  export function PendingChoiceCard(properties) {
10
11
  const choice = () => properties.state().pendingChoices[0];
11
12
  return (<Show when={choice()} keyed>
12
13
  {(activeChoice) => (<Switch>
13
14
  <Match when={activeChoice.kind === "move"}>
14
- <MoveChoiceCard choice={() => activeChoice} party={() => properties.state().party} choicePokemon={() => properties.state().choicePokemon} onResolve={properties.onResolveMove} resolveSprite={properties.resolveSprite} language={properties.language}/>
15
+ <MoveChoiceCard choice={() => activeChoice} party={() => properties.state().party} choicePokemon={() => properties.state().choicePokemon} onResolve={properties.onResolveMove} resolveSprite={properties.resolveSprite} imageProtocol={properties.imageProtocol} language={properties.language} theme={properties.theme}/>
15
16
  </Match>
16
17
  <Match when={activeChoice.kind === "evolution"}>
17
- <EvolutionChoiceCard choice={() => activeChoice} party={() => properties.state().party} choicePokemon={() => properties.state().choicePokemon} resolveSprite={properties.resolveSprite} language={properties.language} onResolve={properties.onResolveEvolution}/>
18
+ <EvolutionChoiceCard choice={() => activeChoice} party={() => properties.state().party} choicePokemon={() => properties.state().choicePokemon} resolveSprite={properties.resolveSprite} imageProtocol={properties.imageProtocol} language={properties.language} onResolve={properties.onResolveEvolution} theme={properties.theme}/>
18
19
  </Match>
19
20
  </Switch>)}
20
21
  </Show>);
@@ -32,17 +33,18 @@ export function MoveChoiceCard(properties) {
32
33
  return null;
33
34
  const dimensions = useTerminalDimensions();
34
35
  const language = () => properties.language?.() ?? "en";
36
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
35
37
  const moves = [...pokemon.moves, payload.move];
36
38
  const copy = () => uiCopy(language());
37
39
  return (<box alignItems="center" border borderStyle="rounded" flexDirection="column" gap={1} padding={1} width="100%" minWidth={0}>
38
- <text width="100%" wrapMode="word" textAlign="center">
40
+ <text fg={surface().text} width="100%" wrapMode="word" textAlign="center">
39
41
  {copy().movePrompt(pokemon.name)}
40
42
  </text>
41
- <Sprite language={properties.language} resolve={properties.resolveSprite} shiny={pokemon.shiny} gender={pokemon.gender} speciesId={pokemon.speciesId}/>
42
- <text width="100%" wrapMode="word" textAlign="center">
43
+ <Sprite language={properties.language} resolve={properties.resolveSprite} protocol={properties.imageProtocol} theme={surface} shiny={pokemon.shiny} gender={pokemon.gender} speciesId={pokemon.speciesId}/>
44
+ <text fg={surface().muted} width="100%" wrapMode="word" textAlign="center">
43
45
  {copy().moveDescription}
44
46
  </text>
45
- <MoveList centered leftAlignMoves moves={moves} language={language()} offeredMoveId={payload.move.id} height={Math.min(28, Math.max(6, dimensions().height - 19))} onActivate={(moveId) => properties.onResolve(choice.id, moveId)}/>
47
+ <MoveList centered leftAlignMoves moves={moves} language={language()} offeredMoveId={payload.move.id} height={Math.min(28, Math.max(6, dimensions().height - 19))} onActivate={(moveId) => properties.onResolve(choice.id, moveId)} theme={properties.theme}/>
46
48
  </box>);
47
49
  }
48
50
  export function EvolutionChoiceCard(properties) {
@@ -56,18 +58,20 @@ export function EvolutionChoiceCard(properties) {
56
58
  properties.choicePokemon().find((instance) => instance.id === payload.pokemonId);
57
59
  if (pokemon === undefined || pokemon === null)
58
60
  return null;
61
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
59
62
  const [hoveredOption, setHoveredOption] = createSignal(null);
60
63
  return (<box alignItems="center" border borderStyle="rounded" flexDirection="column" gap={1} padding={1}>
61
- <text>{uiCopy(properties.language()).evolutionPrompt(pokemon.name)}</text>
62
- <Sprite language={properties.language} resolve={properties.resolveSprite} shiny={pokemon.shiny} gender={pokemon.gender} speciesId={pokemon.speciesId}/>
63
- <text>{uiCopy(properties.language()).chooseEvolution}</text>
64
+ <text fg={surface().text}>{uiCopy(properties.language()).evolutionPrompt(pokemon.name)}</text>
65
+ <Sprite language={properties.language} resolve={properties.resolveSprite} protocol={properties.imageProtocol} theme={surface} shiny={pokemon.shiny} gender={pokemon.gender} speciesId={pokemon.speciesId}/>
66
+ <text fg={surface().muted}>{uiCopy(properties.language()).chooseEvolution}</text>
64
67
  <box flexDirection="row" flexWrap="wrap" gap={1} justifyContent="center" width="100%">
65
- {payload.options.map((option) => (<EvolutionOptionCard option={option} pokemon={pokemon} hovered={() => hoveredOption() === option.speciesId} onHover={() => setHoveredOption(option.speciesId)} onLeave={() => setHoveredOption(null)} onResolve={() => properties.onResolve(choice.id, option.speciesId)} resolveSprite={properties.resolveSprite} language={properties.language}/>))}
68
+ {payload.options.map((option) => (<EvolutionOptionCard option={option} pokemon={pokemon} hovered={() => hoveredOption() === option.speciesId} onHover={() => setHoveredOption(option.speciesId)} onLeave={() => setHoveredOption(null)} onResolve={() => properties.onResolve(choice.id, option.speciesId)} resolveSprite={properties.resolveSprite} imageProtocol={properties.imageProtocol} language={properties.language} theme={surface}/>))}
66
69
  </box>
67
70
  </box>);
68
71
  }
69
72
  function EvolutionOptionCard(properties) {
70
- return (<button alignItems="center" backgroundColor={properties.hovered() ? "#404040" : undefined} border={false} flexDirection="column" flexShrink={0} focusable width={14} padding={1} type="button" onMouseOver={properties.onHover} onMouseOut={properties.onLeave} onFocus={properties.onHover} onBlur={properties.onLeave} onMouseUp={(event) => {
73
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
74
+ return (<button alignItems="center" backgroundColor={properties.hovered() ? surface().highlight : undefined} border={false} flexDirection="column" flexShrink={0} focusable width={14} padding={1} type="button" onMouseOver={properties.onHover} onMouseOut={properties.onLeave} onFocus={properties.onHover} onBlur={properties.onLeave} onMouseUp={(event) => {
71
75
  if (event.button === MouseButton.LEFT)
72
76
  void properties.onResolve();
73
77
  }} onKeyDown={(event) => {
@@ -75,10 +79,10 @@ function EvolutionOptionCard(properties) {
75
79
  void properties.onResolve();
76
80
  }}>
77
81
  <box flexDirection="row" height={4} justifyContent="center" width="100%">
78
- <Sprite compactFallback language={properties.language} resolve={properties.resolveSprite} shiny={properties.pokemon.shiny} gender={properties.pokemon.gender} speciesId={properties.option.speciesId}/>
82
+ <Sprite compactFallback language={properties.language} resolve={properties.resolveSprite} protocol={properties.imageProtocol} theme={surface} shiny={properties.pokemon.shiny} gender={properties.pokemon.gender} speciesId={properties.option.speciesId}/>
79
83
  </box>
80
84
  <box flexDirection="row" justifyContent="center" width="100%">
81
- <text>{properties.option.name}</text>
85
+ <text fg={surface().text}>{properties.option.name}</text>
82
86
  </box>
83
87
  </button>);
84
88
  }
@@ -89,16 +93,19 @@ export function RegionChoiceCard(properties) {
89
93
  const payload = decodeRegionChoiceProjection(choice.payload);
90
94
  if (payload === null)
91
95
  return null;
96
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
92
97
  const [hoveredRegion, setHoveredRegion] = createSignal(null);
93
98
  const availableRegions = () => regions(properties.language?.() ?? "en");
94
99
  const completedRegionName = () => availableRegions().find((region) => region.id === payload.region)?.name ?? payload.region;
95
100
  return (<box alignItems="center" border borderStyle="rounded" flexDirection="column" gap={1} padding={1}>
96
- <text>{uiCopy(properties.language?.() ?? "en").regionComplete(completedRegionName())}</text>
97
- <text>{uiCopy(properties.language?.() ?? "en").chooseNextRegion}</text>
101
+ <text fg={surface().text}>
102
+ {uiCopy(properties.language?.() ?? "en").regionComplete(completedRegionName())}
103
+ </text>
104
+ <text fg={surface().muted}>{uiCopy(properties.language?.() ?? "en").chooseNextRegion}</text>
98
105
  <box flexDirection="row" flexWrap="wrap" gap={1} justifyContent="center" width="100%">
99
106
  {availableRegions()
100
107
  .filter((region) => region.id !== payload.region && !properties.visitedRegionIds().includes(region.id))
101
- .map((region) => (<button alignItems="center" backgroundColor={hoveredRegion() === region.id ? "#404040" : undefined} border={false} flexShrink={0} focusable justifyContent="center" padding={1} type="button" width={14} onMouseOver={() => setHoveredRegion(region.id)} onMouseOut={() => setHoveredRegion(null)} onFocus={() => setHoveredRegion(region.id)} onBlur={() => setHoveredRegion(null)} onMouseUp={(event) => {
108
+ .map((region) => (<button alignItems="center" backgroundColor={hoveredRegion() === region.id ? surface().highlight : undefined} border={false} flexShrink={0} focusable justifyContent="center" padding={1} type="button" width={14} onMouseOver={() => setHoveredRegion(region.id)} onMouseOut={() => setHoveredRegion(null)} onFocus={() => setHoveredRegion(region.id)} onBlur={() => setHoveredRegion(null)} onMouseUp={(event) => {
102
109
  if (event.button === MouseButton.LEFT)
103
110
  void properties.onTravel(region.id);
104
111
  }} onKeyDown={(event) => {
@@ -106,7 +113,7 @@ export function RegionChoiceCard(properties) {
106
113
  void properties.onTravel(region.id);
107
114
  }
108
115
  }}>
109
- <text>{region.name}</text>
116
+ <text fg={surface().text}>{region.name}</text>
110
117
  </button>))}
111
118
  </box>
112
119
  </box>);
@@ -1 +1 @@
1
- {"version":3,"file":"cards.jsx","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/choices/cards.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cards.jsx","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/choices/cards.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +1,16 @@
1
1
  import type { GameState } from "../../../../application/contracts/game.js";
2
2
  import type { PendingEncounter } from "../../../../domain/encounters/encounter.js";
3
3
  import type { SpriteResolver } from "../../../sprites/contracts.js";
4
+ import type { ImageProtocolAccessor } from "../components/image-protocol.js";
5
+ import { type PokecodeSurface } from "../theme.js";
4
6
  export declare function EncounterCard(properties: {
5
7
  readonly encounter: () => GameState["pendingEncounter"];
6
- readonly mutedColor: () => string;
7
8
  readonly hoveredAction: () => "catch" | "run" | null;
8
9
  readonly onHover: (action: "catch" | "run" | null) => void;
9
10
  readonly onResolve: (encounterId: string, encounter: PendingEncounter, capture: boolean) => Promise<void>;
10
11
  readonly resolveSprite: SpriteResolver;
12
+ readonly imageProtocol: ImageProtocolAccessor;
11
13
  readonly language?: (() => GameState["locale"]) | undefined;
14
+ readonly theme?: (() => PokecodeSurface) | undefined;
12
15
  }): any;
13
16
  //# sourceMappingURL=encounter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encounter.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/choices/encounter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAA;AAElF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAInE,wBAAgB,aAAa,CAAC,UAAU,EAAE;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,SAAS,CAAC,kBAAkB,CAAC,CAAA;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,CAAA;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,GAAG,KAAK,GAAG,IAAI,CAAA;IACpD,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,QAAQ,CAAC,SAAS,EAAE,CAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAA;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;CAC5D,OAqDA"}
1
+ {"version":3,"file":"encounter.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/choices/encounter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAA;AAElF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAE5E,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAEzE,wBAAgB,aAAa,CAAC,UAAU,EAAE;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,SAAS,CAAC,kBAAkB,CAAC,CAAA;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,GAAG,KAAK,GAAG,IAAI,CAAA;IACpD,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,QAAQ,CAAC,SAAS,EAAE,CAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAA;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,eAAe,CAAC,GAAG,SAAS,CAAA;CACrD,OA0DA"}
@@ -1,16 +1,18 @@
1
1
  import { uiCopy } from "../../../presentation/ui-copy.js";
2
2
  import { PokecodeActionButton } from "../components/action-button.js";
3
3
  import { Sprite } from "../components/sprite.js";
4
+ import { fallbackPokecodeTheme } from "../theme.js";
4
5
  export function EncounterCard(properties) {
5
6
  const encounter = properties.encounter();
6
7
  if (encounter === null)
7
8
  return null;
9
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
8
10
  const genderSymbol = encounter.gender === "male" ? "♂" : encounter.gender === "female" ? "♀" : "—";
9
11
  const copy = uiCopy(properties.language?.() ?? "en");
10
12
  return (<box alignItems="center" border borderStyle="rounded" flexDirection="column" gap={1} padding={1}>
11
13
  <box flexDirection="row">
12
- <text fg={properties.encounter()?.caught ? "#22c55e" : properties.mutedColor()}>● </text>
13
- <text>
14
+ <text fg={properties.encounter()?.caught ? surface().success : surface().muted}>● </text>
15
+ <text fg={surface().text}>
14
16
  {copy.encounter({
15
17
  genderSymbol,
16
18
  kind: encounter.kind,
@@ -20,10 +22,10 @@ export function EncounterCard(properties) {
20
22
  })}
21
23
  </text>
22
24
  </box>
23
- <Sprite language={properties.language} resolve={properties.resolveSprite} shiny={encounter.shiny} gender={encounter.gender} speciesId={encounter.speciesId}/>
25
+ <Sprite language={properties.language} resolve={properties.resolveSprite} protocol={properties.imageProtocol} theme={surface} shiny={encounter.shiny} gender={encounter.gender} speciesId={encounter.speciesId}/>
24
26
  <box flexDirection="row" gap={1} justifyContent="center">
25
- <PokecodeActionButton hovered={() => properties.hoveredAction() === "catch"} label={copy.catch} onActivate={() => properties.onResolve(encounter.id, encounter, true)} onHover={() => properties.onHover("catch")} onLeave={() => properties.onHover(null)} tone="primary"/>
26
- <PokecodeActionButton hovered={() => properties.hoveredAction() === "run"} label={copy.run} onActivate={() => properties.onResolve(encounter.id, encounter, false)} onHover={() => properties.onHover("run")} onLeave={() => properties.onHover(null)} tone="secondary"/>
27
+ <PokecodeActionButton hovered={() => properties.hoveredAction() === "catch"} label={copy.catch} onActivate={() => properties.onResolve(encounter.id, encounter, true)} onHover={() => properties.onHover("catch")} onLeave={() => properties.onHover(null)} theme={surface} tone="primary"/>
28
+ <PokecodeActionButton hovered={() => properties.hoveredAction() === "run"} label={copy.run} onActivate={() => properties.onResolve(encounter.id, encounter, false)} onHover={() => properties.onHover("run")} onLeave={() => properties.onHover(null)} theme={surface} tone="secondary"/>
27
29
  </box>
28
30
  </box>);
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"encounter.jsx","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/choices/encounter.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encounter.jsx","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/choices/encounter.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
+ import { type PokecodeSurface } from "../theme.js";
1
2
  export declare const bold: number;
2
- type ActionTone = "primary" | "secondary" | "success";
3
+ export type ActionTone = "primary" | "secondary" | "success";
3
4
  export declare function PokecodeActionButton(properties: {
4
5
  readonly hovered: () => boolean;
5
6
  readonly label: string;
6
7
  readonly onActivate: () => Promise<void>;
7
8
  readonly onHover: () => void;
8
9
  readonly onLeave: () => void;
10
+ readonly theme?: (() => PokecodeSurface) | undefined;
9
11
  readonly tone: ActionTone;
10
12
  }): any;
11
- export {};
12
13
  //# sourceMappingURL=action-button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"action-button.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/components/action-button.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,QAAuC,CAAA;AAExD,KAAK,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;AAErD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAC1B,OAwBA"}
1
+ {"version":3,"file":"action-button.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/components/action-button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAEzE,eAAO,MAAM,IAAI,QAAuC,CAAA;AAExD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;AAE5D,wBAAgB,oBAAoB,CAAC,UAAU,EAAE;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,eAAe,CAAC,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAC1B,OAgCA"}
@@ -1,13 +1,21 @@
1
1
  import { createTextAttributes } from "@opentui/core";
2
+ import { fallbackPokecodeTheme } from "../theme.js";
2
3
  export const bold = createTextAttributes({ bold: true });
3
4
  export function PokecodeActionButton(properties) {
4
- const colors = {
5
- primary: { base: "#2563eb", hovered: "#1d4ed8" },
6
- secondary: { base: "#6b7280", hovered: "#4b5563" },
7
- success: { base: "#16a34a", hovered: "#15803d" },
8
- }[properties.tone];
9
- return (<button alignItems="center" backgroundColor={properties.hovered() ? colors.hovered : colors.base} focusable justifyContent="center" paddingLeft={2} paddingRight={2} type="button" onBlur={properties.onLeave} onFocus={properties.onHover} onMouseOut={properties.onLeave} onMouseOver={properties.onHover} onMouseUp={() => void properties.onActivate()}>
10
- <text fg="#ffffff">{properties.label}</text>
5
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
6
+ const colors = () => {
7
+ const action = properties.tone === "secondary" ? surface().secondary : surface().primary;
8
+ return {
9
+ background: properties.hovered() ? action.backgroundHovered : action.background,
10
+ label: properties.tone === "success"
11
+ ? surface().success
12
+ : properties.hovered()
13
+ ? action.labelHovered
14
+ : action.label,
15
+ };
16
+ };
17
+ return (<button alignItems="center" backgroundColor={colors().background} focusable justifyContent="center" paddingLeft={2} paddingRight={2} type="button" onBlur={properties.onLeave} onFocus={properties.onHover} onMouseOut={properties.onLeave} onMouseOver={properties.onHover} onMouseUp={() => void properties.onActivate()}>
18
+ <text fg={colors().label}>{properties.label}</text>
11
19
  </button>);
12
20
  }
13
21
  //# sourceMappingURL=action-button.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"action-button.jsx","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/components/action-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEpD,MAAM,CAAC,MAAM,IAAI,GAAG,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AAIxD,MAAM,UAAU,oBAAoB,CAAC,UAOpC;IACC,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;QAChD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;QAClD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;KACjD,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAClB,OAAO,CACL,CAAC,MAAM,CACL,UAAU,CAAC,QAAQ,CACnB,eAAe,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACrE,SAAS,CACT,cAAc,CAAC,QAAQ,CACvB,WAAW,CAAC,CAAC,CAAC,CAAC,CACf,YAAY,CAAC,CAAC,CAAC,CAAC,CAChB,IAAI,CAAC,QAAQ,CACb,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAC3B,OAAO,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAC5B,UAAU,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAC/B,WAAW,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAChC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,UAAU,CAAC,UAAU,EAAE,CAAC,CAE9C;MAAA,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAC7C;IAAA,EAAE,MAAM,CAAC,CACV,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"action-button.jsx","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/components/action-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAwB,MAAM,aAAa,CAAA;AAEzE,MAAM,CAAC,MAAM,IAAI,GAAG,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AAIxD,MAAM,UAAU,oBAAoB,CAAC,UAQpC;IACC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,qBAAqB,CAAC,OAAO,CAAA;IAC3E,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAA;QACxF,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;YAC/E,KAAK,EACH,UAAU,CAAC,IAAI,KAAK,SAAS;gBAC3B,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO;gBACnB,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE;oBACpB,CAAC,CAAC,MAAM,CAAC,YAAY;oBACrB,CAAC,CAAC,MAAM,CAAC,KAAK;SACrB,CAAA;IACH,CAAC,CAAA;IACD,OAAO,CACL,CAAC,MAAM,CACL,UAAU,CAAC,QAAQ,CACnB,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CACrC,SAAS,CACT,cAAc,CAAC,QAAQ,CACvB,WAAW,CAAC,CAAC,CAAC,CAAC,CACf,YAAY,CAAC,CAAC,CAAC,CAAC,CAChB,IAAI,CAAC,QAAQ,CACb,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAC3B,OAAO,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAC5B,UAAU,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAC/B,WAAW,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAChC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,UAAU,CAAC,UAAU,EAAE,CAAC,CAE9C;MAAA,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CACpD;IAAA,EAAE,MAAM,CAAC,CACV,CAAA;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { ImageRenderProtocol, TerminalCapabilities } from "@opentui/core";
2
+ import { type Accessor } from "solid-js";
3
+ export type ImageProtocolCapabilities = Pick<TerminalCapabilities, "terminal" | "image_protocol" | "sixel" | "kitty_graphics">;
4
+ export type ImageProtocolAccessor = Accessor<ImageRenderProtocol>;
5
+ /** Minimal structural view of the renderer's capability events. */
6
+ export type CapabilitiesEventSource = Readonly<{
7
+ readonly capabilities: ImageProtocolCapabilities | null;
8
+ on(event: "capabilities", listener: (capabilities: ImageProtocolCapabilities) => void): unknown;
9
+ off(event: "capabilities", listener: (capabilities: ImageProtocolCapabilities) => void): unknown;
10
+ }>;
11
+ /**
12
+ * Picks the sprite image protocol for the detected terminal.
13
+ *
14
+ * Capability-first: an explicit OPENTUI_IMAGE_PROTOCOL override (surfaced by
15
+ * OpenTUI as the image_protocol capability) always wins, and everything else
16
+ * stays "auto" so OpenTUI resolves from real capability queries — Kitty
17
+ * graphics first, then Sixel (which the xterm.js image addon behind VS Code's
18
+ * terminal.integrated.enableImages advertises through DA1), then half-blocks.
19
+ * Only terminals known to misreport their capabilities need a correction
20
+ * from the table above.
21
+ */
22
+ export declare function spriteImageProtocol(capabilities: ImageProtocolCapabilities | null): ImageRenderProtocol;
23
+ /**
24
+ * Tracks the resolved protocol reactively: capability detection answers
25
+ * after startup, so the accessor flips once the terminal identifies itself.
26
+ */
27
+ export declare function createImageProtocolState(source: CapabilitiesEventSource): {
28
+ readonly protocol: ImageProtocolAccessor;
29
+ readonly dispose: () => void;
30
+ };
31
+ //# sourceMappingURL=image-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-protocol.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/components/image-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,UAAU,CAAA;AAEtD,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,oBAAoB,EACpB,UAAU,GAAG,gBAAgB,GAAG,OAAO,GAAG,gBAAgB,CAC3D,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAA;AAEjE,mEAAmE;AACnE,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,yBAAyB,GAAG,IAAI,CAAA;IACvD,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,yBAAyB,KAAK,IAAI,GAAG,OAAO,CAAA;IAC/F,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,yBAAyB,KAAK,IAAI,GAAG,OAAO,CAAA;CACjG,CAAC,CAAA;AAyDF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,yBAAyB,GAAG,IAAI,GAC7C,mBAAmB,CAQrB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,uBAAuB,GAAG;IACzE,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAC7B,CAYA"}
@@ -0,0 +1,83 @@
1
+ import { createSignal } from "solid-js";
2
+ /**
3
+ * Terminals that advertise image capabilities they cannot honor. Capability
4
+ * detection is only as honest as the answering terminal, so the rare terminal
5
+ * that lies needs a correction keyed by its identity — the same technique
6
+ * OpenTUI's own native detection uses (applyKnownGraphicsIdentity, and the
7
+ * TERM_PROGRAM=vscode kitty_graphics correction). Entries are data: add one
8
+ * here, never a new branch in the resolver.
9
+ */
10
+ const graphicsCorrections = [
11
+ {
12
+ // VS Code and Orca both present as "xterm.js": XTVERSION answers with the
13
+ // library name, which outranks the TERM_PROGRAM identity fallback, so no
14
+ // per-product name ever surfaces here. The xterm.js image addon behind
15
+ // terminal.integrated.enableImages advertises BOTH Kitty graphics and
16
+ // Sixel — but its Kitty path drops OpenTUI's placements while Sixel
17
+ // renders reliably. Prefer Sixel whenever this identity advertises it;
18
+ // addon disabled → no Sixel advertised → the entry does not match and
19
+ // auto falls through to half-blocks.
20
+ terminalName: /^xterm\.js$/i,
21
+ requires: { sixel: true },
22
+ protocol: "sixel",
23
+ reason: "xterm.js image addon Kitty path drops OpenTUI placements",
24
+ },
25
+ {
26
+ // Orca answers the Kitty graphics probe with OK, so no capability query
27
+ // distinguishes it from Kitty; placements blank once its per-pane image
28
+ // budget evicts them (stablyai/orca#23547, open as of October 2026).
29
+ // Keyed on the TERM_PROGRAM identity for the case where Orca stops
30
+ // answering XTVERSION.
31
+ terminalName: /orca/i,
32
+ protocol: "blocks",
33
+ reason: "stablyai/orca#23547",
34
+ },
35
+ ];
36
+ const requirementsMet = (requires, capabilities) => {
37
+ if (requires === undefined)
38
+ return true;
39
+ if (requires.sixel !== undefined && capabilities?.sixel !== requires.sixel)
40
+ return false;
41
+ if (requires.kitty_graphics !== undefined &&
42
+ capabilities?.kitty_graphics !== requires.kitty_graphics) {
43
+ return false;
44
+ }
45
+ return true;
46
+ };
47
+ /**
48
+ * Picks the sprite image protocol for the detected terminal.
49
+ *
50
+ * Capability-first: an explicit OPENTUI_IMAGE_PROTOCOL override (surfaced by
51
+ * OpenTUI as the image_protocol capability) always wins, and everything else
52
+ * stays "auto" so OpenTUI resolves from real capability queries — Kitty
53
+ * graphics first, then Sixel (which the xterm.js image addon behind VS Code's
54
+ * terminal.integrated.enableImages advertises through DA1), then half-blocks.
55
+ * Only terminals known to misreport their capabilities need a correction
56
+ * from the table above.
57
+ */
58
+ export function spriteImageProtocol(capabilities) {
59
+ const configured = capabilities?.image_protocol;
60
+ if (configured !== undefined && configured !== "auto")
61
+ return configured;
62
+ const name = capabilities?.terminal.name ?? "";
63
+ const correction = graphicsCorrections.find((entry) => entry.terminalName.test(name) && requirementsMet(entry.requires, capabilities));
64
+ return correction?.protocol ?? "auto";
65
+ }
66
+ /**
67
+ * Tracks the resolved protocol reactively: capability detection answers
68
+ * after startup, so the accessor flips once the terminal identifies itself.
69
+ */
70
+ export function createImageProtocolState(source) {
71
+ const [protocol, setProtocol] = createSignal(spriteImageProtocol(source.capabilities));
72
+ const listener = (capabilities) => {
73
+ setProtocol(spriteImageProtocol(capabilities));
74
+ };
75
+ source.on("capabilities", listener);
76
+ return {
77
+ protocol,
78
+ dispose: () => {
79
+ source.off("capabilities", listener);
80
+ },
81
+ };
82
+ }
83
+ //# sourceMappingURL=image-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-protocol.js","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/components/image-protocol.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,YAAY,EAAE,MAAM,UAAU,CAAA;AAgBtD;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAKnB;IACJ;QACE,0EAA0E;QAC1E,yEAAyE;QACzE,uEAAuE;QACvE,sEAAsE;QACtE,oEAAoE;QACpE,uEAAuE;QACvE,sEAAsE;QACtE,qCAAqC;QACrC,YAAY,EAAE,cAAc;QAC5B,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QACzB,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,0DAA0D;KACnE;IACD;QACE,wEAAwE;QACxE,wEAAwE;QACxE,qEAAqE;QACrE,mEAAmE;QACnE,uBAAuB;QACvB,YAAY,EAAE,OAAO;QACrB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,qBAAqB;KAC9B;CACF,CAAA;AAED,MAAM,eAAe,GAAG,CACtB,QAAqF,EACrF,YAA8C,EACrC,EAAE;IACX,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACvC,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,YAAY,EAAE,KAAK,KAAK,QAAQ,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IACxF,IACE,QAAQ,CAAC,cAAc,KAAK,SAAS;QACrC,YAAY,EAAE,cAAc,KAAK,QAAQ,CAAC,cAAc,EACxD,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAA8C;IAE9C,MAAM,UAAU,GAAG,YAAY,EAAE,cAAc,CAAA;IAC/C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,UAAU,CAAA;IACxE,MAAM,IAAI,GAAG,YAAY,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAA;IAC9C,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CACzC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAC1F,CAAA;IACD,OAAO,UAAU,EAAE,QAAQ,IAAI,MAAM,CAAA;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAA+B;IAItE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;IACtF,MAAM,QAAQ,GAAG,CAAC,YAAuC,EAAQ,EAAE;QACjE,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAA;IAChD,CAAC,CAAA;IACD,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;IACnC,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QACtC,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Move } from "../../../../domain/pokemon/types.js";
2
2
  import type { Language } from "../../../../domain/shared/language.js";
3
+ import { type PokecodeSurface } from "../theme.js";
3
4
  import "../controls/native.js";
4
5
  export declare function MoveList(properties: {
5
6
  readonly moves: readonly Move[];
@@ -9,5 +10,6 @@ export declare function MoveList(properties: {
9
10
  readonly centered?: boolean;
10
11
  readonly leftAlignMoves?: boolean;
11
12
  readonly onActivate?: (moveId: string) => Promise<void>;
13
+ readonly theme?: (() => PokecodeSurface) | undefined;
12
14
  }): any;
13
15
  //# sourceMappingURL=move-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"move-list.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/components/move-list.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAErE,OAAO,uBAAuB,CAAA;AAE9B,wBAAgB,QAAQ,CAAC,UAAU,EAAE;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACxD,OA4JA"}
1
+ {"version":3,"file":"move-list.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/opencode/tui/components/move-list.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAErE,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,uBAAuB,CAAA;AAE9B,wBAAgB,QAAQ,CAAC,UAAU,EAAE;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,eAAe,CAAC,GAAG,SAAS,CAAA;CACrD,OA8JA"}