@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/dist/tui.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // src/adapters/opencode/tui/plugin.tsx
3
3
  import { Plugin } from "@opencode/plugin/tui";
4
4
  import { createClipboard, createHostClipboard, createRendererClipboardAdapter } from "@opentui/core";
5
- import { createSignal as createSignal10 } from "solid-js";
5
+ import { createSignal as createSignal11 } from "solid-js";
6
6
 
7
7
  // src/adapters/opencode/rpc/contract.ts
8
8
  import { Rpc } from "@opencode/plugin/rpc";
@@ -135,6 +135,11 @@ var explorationStatusSchema = z4.object({
135
135
  locationUnlockThreshold: z4.number().int().positive(),
136
136
  regionComplete: z4.boolean()
137
137
  });
138
+ function locationUnlockThreshold(input) {
139
+ const capped = Math.min(Math.max(input.index, 0), input.championIndex);
140
+ const cumulative = (i) => input.curve.baseTokens * (i + 1) ** input.curve.exponent * (input.championIndex + 1) ** input.curve.regionExponent;
141
+ return Math.round(cumulative(capped + 1) - cumulative(capped));
142
+ }
138
143
  function calculateUnlockProgress(input) {
139
144
  if (!input.currentLocationIsLatestUnlocked)
140
145
  return { kind: "not-latest" };
@@ -229,10 +234,11 @@ var starterChoiceResultSchema = z8.object({
229
234
  });
230
235
  var gameplayConfigSchema = z8.object({
231
236
  pauseOnPendingChoice: z8.boolean().default(true),
232
- xpTokensPerPoint: z8.number().int().positive().default(1000),
233
237
  encounterMinimumTokens: z8.number().int().positive().default(200000),
234
238
  encounterMaximumTokens: z8.number().int().positive().default(400000),
235
- locationUnlockTokens: z8.number().int().positive().default(2160000)
239
+ locationUnlockBaseTokens: z8.number().int().positive().default(4214000),
240
+ locationUnlockExponent: z8.number().positive().default(2.64),
241
+ locationUnlockRegionExponent: z8.number().default(-1.72)
236
242
  });
237
243
  var usageInputSchema = z8.object({
238
244
  sessionId: z8.string().min(1),
@@ -609,6 +615,53 @@ function createPokemonTuiClient(transport) {
609
615
  };
610
616
  }
611
617
 
618
+ // src/adapters/opencode/tui/components/image-protocol.ts
619
+ import { createSignal } from "solid-js";
620
+ var graphicsCorrections = [
621
+ {
622
+ terminalName: /^xterm\.js$/i,
623
+ requires: { sixel: true },
624
+ protocol: "sixel",
625
+ reason: "xterm.js image addon Kitty path drops OpenTUI placements"
626
+ },
627
+ {
628
+ terminalName: /orca/i,
629
+ protocol: "blocks",
630
+ reason: "stablyai/orca#23547"
631
+ }
632
+ ];
633
+ var requirementsMet = (requires, capabilities) => {
634
+ if (requires === undefined)
635
+ return true;
636
+ if (requires.sixel !== undefined && capabilities?.sixel !== requires.sixel)
637
+ return false;
638
+ if (requires.kitty_graphics !== undefined && capabilities?.kitty_graphics !== requires.kitty_graphics) {
639
+ return false;
640
+ }
641
+ return true;
642
+ };
643
+ function spriteImageProtocol(capabilities) {
644
+ const configured = capabilities?.image_protocol;
645
+ if (configured !== undefined && configured !== "auto")
646
+ return configured;
647
+ const name = capabilities?.terminal.name ?? "";
648
+ const correction = graphicsCorrections.find((entry) => entry.terminalName.test(name) && requirementsMet(entry.requires, capabilities));
649
+ return correction?.protocol ?? "auto";
650
+ }
651
+ function createImageProtocolState(source) {
652
+ const [protocol, setProtocol] = createSignal(spriteImageProtocol(source.capabilities));
653
+ const listener = (capabilities) => {
654
+ setProtocol(spriteImageProtocol(capabilities));
655
+ };
656
+ source.on("capabilities", listener);
657
+ return {
658
+ protocol,
659
+ dispose: () => {
660
+ source.off("capabilities", listener);
661
+ }
662
+ };
663
+ }
664
+
612
665
  // src/adapters/opencode/tui/dex/actions.tsx
613
666
  import { createComponent as _$createComponent2 } from "@opentui/solid";
614
667
 
@@ -717,24 +770,82 @@ import { insert as _$insert } from "@opentui/solid";
717
770
  import { setProp as _$setProp } from "@opentui/solid";
718
771
  import { createElement as _$createElement } from "@opentui/solid";
719
772
  import { createTextAttributes } from "@opentui/core";
773
+
774
+ // src/adapters/opencode/tui/theme.ts
775
+ import { RGBA } from "@opentui/core";
776
+ var hovered = (color) => color.state({ hovered: true }) ?? color.base;
777
+ var toActionColors = (background, label) => ({
778
+ background: background.base,
779
+ backgroundHovered: hovered(background),
780
+ label: label.base,
781
+ labelHovered: hovered(label)
782
+ });
783
+ var toSurface = (theme) => ({
784
+ text: theme.text.base,
785
+ muted: theme.text.muted,
786
+ accent: theme.hue.accent[200] ?? theme.text.action.primary.base,
787
+ success: theme.text.feedback.success.base,
788
+ error: theme.text.feedback.error.base,
789
+ info: theme.text.feedback.info.base,
790
+ background: theme.background.base,
791
+ raised: theme.background.raised.base,
792
+ highlight: theme.background.raised.max,
793
+ border: theme.border.base,
794
+ primary: toActionColors(theme.background.action.primary, theme.text.action.primary),
795
+ secondary: toActionColors(theme.background.action.secondary, theme.text.action.secondary)
796
+ });
797
+ var toPokecodeTheme = (theme) => ({
798
+ current: toSurface(theme),
799
+ dialog: toSurface(theme.surface("dialog"))
800
+ });
801
+ var transparent = RGBA.fromInts(0, 0, 0, 0);
802
+ var flat = (color) => ({ base: color, state: () => color });
803
+ var fallbackResolvedTheme = (() => {
804
+ const text = RGBA.fromHex("#d4d4d4");
805
+ const muted = RGBA.fromHex("#808080");
806
+ const theme = {
807
+ hue: { accent: { 200: RGBA.fromHex("#a78bfa") } },
808
+ text: {
809
+ base: text,
810
+ muted,
811
+ action: {
812
+ primary: flat(text),
813
+ secondary: flat(muted)
814
+ },
815
+ feedback: {
816
+ error: { base: RGBA.fromHex("#ef4444") },
817
+ success: { base: RGBA.fromHex("#22c55e") },
818
+ info: { base: RGBA.fromHex("#3b82f6") }
819
+ }
820
+ },
821
+ background: {
822
+ base: RGBA.fromHex("#111827"),
823
+ raised: { base: RGBA.fromHex("#1f2937"), max: RGBA.fromHex("#374151") },
824
+ action: {
825
+ primary: flat(transparent),
826
+ secondary: flat(transparent)
827
+ }
828
+ },
829
+ border: { base: RGBA.fromHex("#4b5563") },
830
+ surface: () => theme
831
+ };
832
+ return theme;
833
+ })();
834
+ var fallbackPokecodeTheme = toPokecodeTheme(fallbackResolvedTheme);
835
+
836
+ // src/adapters/opencode/tui/components/action-button.tsx
720
837
  var bold = createTextAttributes({
721
838
  bold: true
722
839
  });
723
840
  function PokecodeActionButton(properties) {
724
- const colors = {
725
- primary: {
726
- base: "#2563eb",
727
- hovered: "#1d4ed8"
728
- },
729
- secondary: {
730
- base: "#6b7280",
731
- hovered: "#4b5563"
732
- },
733
- success: {
734
- base: "#16a34a",
735
- hovered: "#15803d"
736
- }
737
- }[properties.tone];
841
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
842
+ const colors = () => {
843
+ const action = properties.tone === "secondary" ? surface().secondary : surface().primary;
844
+ return {
845
+ background: properties.hovered() ? action.backgroundHovered : action.background,
846
+ label: properties.tone === "success" ? surface().success : properties.hovered() ? action.labelHovered : action.label
847
+ };
848
+ };
738
849
  return (() => {
739
850
  var _el$ = _$createElement("button"), _el$2 = _$createElement("text");
740
851
  _$insertNode(_el$, _el$2);
@@ -745,22 +856,23 @@ function PokecodeActionButton(properties) {
745
856
  _$setProp(_el$, "paddingRight", 2);
746
857
  _$setProp(_el$, "type", "button");
747
858
  _$setProp(_el$, "onMouseUp", () => void properties.onActivate());
748
- _$setProp(_el$2, "fg", "#ffffff");
749
859
  _$insert(_el$2, () => properties.label);
750
860
  _$effect((_p$) => {
751
- var _v$ = properties.hovered() ? colors.hovered : colors.base, _v$2 = properties.onLeave, _v$3 = properties.onHover, _v$4 = properties.onLeave, _v$5 = properties.onHover;
861
+ var _v$ = colors().background, _v$2 = properties.onLeave, _v$3 = properties.onHover, _v$4 = properties.onLeave, _v$5 = properties.onHover, _v$6 = colors().label;
752
862
  _v$ !== _p$.e && (_p$.e = _$setProp(_el$, "backgroundColor", _v$, _p$.e));
753
863
  _v$2 !== _p$.t && (_p$.t = _$setProp(_el$, "onBlur", _v$2, _p$.t));
754
864
  _v$3 !== _p$.a && (_p$.a = _$setProp(_el$, "onFocus", _v$3, _p$.a));
755
865
  _v$4 !== _p$.o && (_p$.o = _$setProp(_el$, "onMouseOut", _v$4, _p$.o));
756
866
  _v$5 !== _p$.i && (_p$.i = _$setProp(_el$, "onMouseOver", _v$5, _p$.i));
867
+ _v$6 !== _p$.n && (_p$.n = _$setProp(_el$2, "fg", _v$6, _p$.n));
757
868
  return _p$;
758
869
  }, {
759
870
  e: undefined,
760
871
  t: undefined,
761
872
  a: undefined,
762
873
  o: undefined,
763
- i: undefined
874
+ i: undefined,
875
+ n: undefined
764
876
  });
765
877
  return _el$;
766
878
  })();
@@ -792,6 +904,7 @@ function isDexCloseKey(key) {
792
904
  }
793
905
  function PokemonDexDialog(properties) {
794
906
  const context = usePlugin();
907
+ const surface = () => toPokecodeTheme(context.theme).dialog;
795
908
  const dimensions = useTerminalDimensions();
796
909
  const height = () => Math.max(10, Math.floor(dimensions().height / 2) - 1);
797
910
  const width = () => dexModalWidth(dimensions().width);
@@ -870,24 +983,34 @@ function PokemonDexDialog(properties) {
870
983
  _$insertNode2(_el$9, _el$1);
871
984
  _$insert2(_el$9, () => pokemon.number.toString().padStart(4, "0"), _el$1);
872
985
  _$insert2(_el$9, () => dexDisplayName(pokemon.name, pokemon.status), null);
873
- _$effect2((_$p) => _$setProp2(_el$8, "fg", pokemon.status === "caught" ? "#22c55e" : context.theme.text.muted, _$p));
986
+ _$effect2((_p$) => {
987
+ var _v$6 = pokemon.status === "caught" ? surface().success : surface().muted, _v$7 = pokemon.status === "unknown" ? surface().muted : surface().text;
988
+ _v$6 !== _p$.e && (_p$.e = _$setProp2(_el$8, "fg", _v$6, _p$.e));
989
+ _v$7 !== _p$.t && (_p$.t = _$setProp2(_el$9, "fg", _v$7, _p$.t));
990
+ return _p$;
991
+ }, {
992
+ e: undefined,
993
+ t: undefined
994
+ });
874
995
  return _el$7;
875
996
  })()
876
997
  }));
877
998
  _$insertNode2(_el$5, _$createTextNode(`\u2191\u2193: 1 item \xB7 \u2190\u2192: 10 items \xB7 Esc: Close`));
878
999
  _$setProp2(_el$5, "flexShrink", 0);
879
1000
  _$effect2((_p$) => {
880
- var _v$ = height(), _v$2 = width(), _v$3 = context.theme.text.base, _v$4 = height() - 2;
1001
+ var _v$ = height(), _v$2 = width(), _v$3 = surface().text, _v$4 = height() - 2, _v$5 = surface().muted;
881
1002
  _v$ !== _p$.e && (_p$.e = _$setProp2(_el$, "height", _v$, _p$.e));
882
1003
  _v$2 !== _p$.t && (_p$.t = _$setProp2(_el$, "width", _v$2, _p$.t));
883
1004
  _v$3 !== _p$.a && (_p$.a = _$setProp2(_el$2, "fg", _v$3, _p$.a));
884
1005
  _v$4 !== _p$.o && (_p$.o = _$setProp2(_el$3, "height", _v$4, _p$.o));
1006
+ _v$5 !== _p$.i && (_p$.i = _$setProp2(_el$5, "fg", _v$5, _p$.i));
885
1007
  return _p$;
886
1008
  }, {
887
1009
  e: undefined,
888
1010
  t: undefined,
889
1011
  a: undefined,
890
- o: undefined
1012
+ o: undefined,
1013
+ i: undefined
891
1014
  });
892
1015
  return _el$;
893
1016
  })();
@@ -958,12 +1081,12 @@ function createExportAction(dependencies) {
958
1081
 
959
1082
  // src/adapters/opencode/tui/pc/actions.tsx
960
1083
  import { createComponent as _$createComponent7 } from "@opentui/solid";
961
- import { createSignal as createSignal4 } from "solid-js";
1084
+ import { createSignal as createSignal5 } from "solid-js";
962
1085
 
963
1086
  // src/adapters/opencode/tui/pc/dialog.tsx
964
1087
  import { memo as _$memo5 } from "@opentui/solid";
965
- import { effect as _$effect6 } from "@opentui/solid";
966
1088
  import { insertNode as _$insertNode6 } from "@opentui/solid";
1089
+ import { effect as _$effect6 } from "@opentui/solid";
967
1090
  import { createComponent as _$createComponent6 } from "@opentui/solid";
968
1091
  import { use as _$use3 } from "@opentui/solid";
969
1092
  import { insert as _$insert6 } from "@opentui/solid";
@@ -971,7 +1094,7 @@ import { setProp as _$setProp6 } from "@opentui/solid";
971
1094
  import { createElement as _$createElement6 } from "@opentui/solid";
972
1095
  import { createTextAttributes as createTextAttributes2, MouseButton as MouseButton2 } from "@opentui/core";
973
1096
  import { useKeyboard as useKeyboard2, useTerminalDimensions as useTerminalDimensions2 } from "@opentui/solid";
974
- import { createSignal as createSignal3, For as For4, Show as Show3 } from "solid-js";
1097
+ import { createSignal as createSignal4, For as For4, Show as Show3 } from "solid-js";
975
1098
 
976
1099
  // src/adapters/presentation/pc-copy.ts
977
1100
  var english2 = {
@@ -106360,7 +106483,7 @@ import { use as _$use2 } from "@opentui/solid";
106360
106483
  import { createElement as _$createElement3 } from "@opentui/solid";
106361
106484
  import { createComponent as _$createComponent3 } from "@opentui/solid";
106362
106485
  import { MouseButton } from "@opentui/core";
106363
- import { createSignal, For as For2, Show } from "solid-js";
106486
+ import { createSignal as createSignal2, For as For2, Show } from "solid-js";
106364
106487
 
106365
106488
  // src/domain/content/catalogs/abilities-catalog.ts
106366
106489
  var abilitiesCatalog = [
@@ -108440,6 +108563,7 @@ var alolaLocationsCatalog = {
108440
108563
  maximumLevel: 50
108441
108564
  }
108442
108565
  ],
108566
+ championLocationId: "alola-pokemon-league",
108443
108567
  locations: [
108444
108568
  {
108445
108569
  id: "iki-town",
@@ -114445,6 +114569,7 @@ var galarLocationsCatalog = {
114445
114569
  maximumLevel: 70
114446
114570
  }
114447
114571
  ],
114572
+ championLocationId: "energy-plant",
114448
114573
  locations: [
114449
114574
  {
114450
114575
  id: "postwick",
@@ -122517,6 +122642,7 @@ var hoennLocationsCatalog = {
122517
122642
  maximumLevel: 5
122518
122643
  }
122519
122644
  ],
122645
+ championLocationId: "ever-grande-city",
122520
122646
  locations: [
122521
122647
  {
122522
122648
  id: "littleroot-town",
@@ -126071,6 +126197,7 @@ var johtoLocationsCatalog = {
126071
126197
  maximumLevel: 40
126072
126198
  }
126073
126199
  ],
126200
+ championLocationId: "johto-indigo-plateau",
126074
126201
  locations: [
126075
126202
  {
126076
126203
  id: "new-bark-town",
@@ -130223,6 +130350,7 @@ var kalosLocationsCatalog = {
130223
130350
  maximumLevel: 70
130224
130351
  }
130225
130352
  ],
130353
+ championLocationId: "kalos-pokemon-league",
130226
130354
  locations: [
130227
130355
  {
130228
130356
  id: "vaniville-town",
@@ -134551,6 +134679,7 @@ var kantoLocationsCatalog = {
134551
134679
  "squirtle"
134552
134680
  ],
134553
134681
  specialEncounters: [],
134682
+ championLocationId: "indigo-plateau",
134554
134683
  locations: [
134555
134684
  {
134556
134685
  id: "pallet-town",
@@ -150232,6 +150361,7 @@ var paldeaLocationsCatalog = {
150232
150361
  "quaxly"
150233
150362
  ],
150234
150363
  specialEncounters: [],
150364
+ championLocationId: "paldea-pokemon-league",
150235
150365
  locations: [
150236
150366
  {
150237
150367
  id: "cabo-poco",
@@ -168069,6 +168199,7 @@ var sinnohLocationsCatalog = {
168069
168199
  maximumLevel: 50
168070
168200
  }
168071
168201
  ],
168202
+ championLocationId: "victory-road",
168072
168203
  locations: [
168073
168204
  {
168074
168205
  id: "twinleaf-town",
@@ -175272,6 +175403,7 @@ var unovaLocationsCatalog = {
175272
175403
  maximumLevel: 15
175273
175404
  }
175274
175405
  ],
175406
+ championLocationId: "unova-pokemon-league",
175275
175407
  locations: [
175276
175408
  {
175277
175409
  id: "nuvema-town",
@@ -181835,6 +181967,7 @@ var regionSchema = namedIdSchema.extend({
181835
181967
  locations: z10.array(locationSchema).min(1),
181836
181968
  starterSpeciesIds: z10.array(z10.string().min(1)).length(3),
181837
181969
  starterCatchLocationId: z10.string().min(1),
181970
+ championLocationId: z10.string().min(1),
181838
181971
  specials: z10.array(specialSchema)
181839
181972
  });
181840
181973
  var speciesSchema = namedIdSchema.extend({
@@ -181928,6 +182061,7 @@ var catalog = generatedCatalogSchema.parse({
181928
182061
  localization: region.localization,
181929
182062
  starterSpeciesIds: regionalCatalog.starterPokemons,
181930
182063
  starterCatchLocationId: locations[0]?.id ?? "",
182064
+ championLocationId: regionalCatalog.championLocationId,
181931
182065
  specials: specialsForCatalog(regionalCatalog).flatMap((special) => {
181932
182066
  const pokemon = pokemonById.get(special.id);
181933
182067
  const ability = englishAbilityName(pokemon?.abilities[0]);
@@ -181976,6 +182110,12 @@ var catalog = generatedCatalogSchema.parse({
181976
182110
  ]))))
181977
182111
  });
181978
182112
  var generatedContentCatalog = catalog;
182113
+ var championIndexByRegion = new Map(catalog.regions.map((region) => {
182114
+ const index = region.locations.findIndex((location) => location.id === region.championLocationId);
182115
+ if (index < 0)
182116
+ throw new Error(`Unknown championLocationId ${region.championLocationId}`);
182117
+ return [region.id, index];
182118
+ }));
181979
182119
  var regionsById = new Map(catalog.regions.map((region) => [region.id, region]));
181980
182120
  var speciesById = new Map([...catalog.species, ...catalog.regionalForms].map((species) => [species.id, species]));
181981
182121
  var movesById = new Map(movesCatalog.map((move) => [move.id, move]));
@@ -182028,6 +182168,13 @@ function nextLocation(regionId, locationId) {
182028
182168
  const index = locations.findIndex((location) => location.id === locationId);
182029
182169
  return index < 0 ? null : locations[index + 1] ?? null;
182030
182170
  }
182171
+ function championIndexForRegion(regionId) {
182172
+ return championIndexByRegion.get(regionId) ?? null;
182173
+ }
182174
+ function locationIndexFor(regionId, locationId) {
182175
+ const index = locationsForRegion(regionId).findIndex((location) => location.id === locationId);
182176
+ return index < 0 ? null : index;
182177
+ }
182031
182178
  function startersForRegion(regionId, language = "en") {
182032
182179
  return regionsById.get(regionId)?.starterSpeciesIds.flatMap((speciesId) => {
182033
182180
  const species = speciesById.get(speciesId);
@@ -182185,8 +182332,9 @@ extend({ button: StarterButtonRenderable });
182185
182332
 
182186
182333
  // src/adapters/opencode/tui/components/move-list.tsx
182187
182334
  function MoveList(properties) {
182188
- const [hovered, setHovered] = createSignal(null);
182189
- const [inspected, setInspected] = createSignal(null);
182335
+ const [hovered2, setHovered] = createSignal2(null);
182336
+ const [inspected, setInspected] = createSignal2(null);
182337
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
182190
182338
  const moves = () => properties.moves.map((move) => presentMove(move, properties.language));
182191
182339
  const description = () => moves().find((move) => move.id === inspected())?.description;
182192
182340
  let list;
@@ -182216,6 +182364,8 @@ function MoveList(properties) {
182216
182364
  }
182217
182365
  };
182218
182366
  const secondary = () => move.id === properties.offeredMoveId;
182367
+ const action = () => secondary() ? surface().secondary : surface().primary;
182368
+ const hoveredRow = () => hovered2() === move.id;
182219
182369
  return (() => {
182220
182370
  var _el$ = _$createElement3("box"), _el$2 = _$createElement3("button"), _el$3 = _$createElement3("text"), _el$4 = _$createElement3("text"), _el$5 = _$createElement3("text");
182221
182371
  _$insertNode3(_el$, _el$2);
@@ -182252,7 +182402,6 @@ function MoveList(properties) {
182252
182402
  event.stopPropagation();
182253
182403
  properties.onActivate(move.id);
182254
182404
  });
182255
- _$setProp3(_el$3, "fg", "#ffffff");
182256
182405
  _$setProp3(_el$3, "wrapMode", "word");
182257
182406
  _$insert3(_el$3, () => move.name);
182258
182407
  _$setProp3(_el$4, "maxWidth", "100%");
@@ -182262,13 +182411,16 @@ function MoveList(properties) {
182262
182411
  _$setProp3(_el$5, "wrapMode", "word");
182263
182412
  _$insert3(_el$5, () => move.stats);
182264
182413
  _$effect3((_p$) => {
182265
- var _v$ = properties.leftAlignMoves ? "flex-start" : "center", _v$2 = `move-${move.id}`, _v$3 = secondary() ? hovered() === move.id ? "#4b5563" : "#6b7280" : hovered() === move.id ? "#1d4ed8" : "#2563eb", _v$4 = properties.centered && !properties.leftAlignMoves ? "center" : "left", _v$5 = properties.centered && !properties.leftAlignMoves ? "center" : "left", _v$6 = properties.centered && !properties.leftAlignMoves ? "center" : "left";
182414
+ var _v$ = properties.leftAlignMoves ? "flex-start" : "center", _v$2 = `move-${move.id}`, _v$3 = hoveredRow() ? action().backgroundHovered : action().background, _v$4 = hoveredRow() ? action().labelHovered : action().label, _v$5 = properties.centered && !properties.leftAlignMoves ? "center" : "left", _v$6 = surface().muted, _v$7 = properties.centered && !properties.leftAlignMoves ? "center" : "left", _v$8 = surface().muted, _v$9 = properties.centered && !properties.leftAlignMoves ? "center" : "left";
182266
182415
  _v$ !== _p$.e && (_p$.e = _$setProp3(_el$, "alignItems", _v$, _p$.e));
182267
182416
  _v$2 !== _p$.t && (_p$.t = _$setProp3(_el$2, "id", _v$2, _p$.t));
182268
182417
  _v$3 !== _p$.a && (_p$.a = _$setProp3(_el$2, "backgroundColor", _v$3, _p$.a));
182269
- _v$4 !== _p$.o && (_p$.o = _$setProp3(_el$3, "textAlign", _v$4, _p$.o));
182270
- _v$5 !== _p$.i && (_p$.i = _$setProp3(_el$4, "textAlign", _v$5, _p$.i));
182271
- _v$6 !== _p$.n && (_p$.n = _$setProp3(_el$5, "textAlign", _v$6, _p$.n));
182418
+ _v$4 !== _p$.o && (_p$.o = _$setProp3(_el$3, "fg", _v$4, _p$.o));
182419
+ _v$5 !== _p$.i && (_p$.i = _$setProp3(_el$3, "textAlign", _v$5, _p$.i));
182420
+ _v$6 !== _p$.n && (_p$.n = _$setProp3(_el$4, "fg", _v$6, _p$.n));
182421
+ _v$7 !== _p$.s && (_p$.s = _$setProp3(_el$4, "textAlign", _v$7, _p$.s));
182422
+ _v$8 !== _p$.h && (_p$.h = _$setProp3(_el$5, "fg", _v$8, _p$.h));
182423
+ _v$9 !== _p$.r && (_p$.r = _$setProp3(_el$5, "textAlign", _v$9, _p$.r));
182272
182424
  return _p$;
182273
182425
  }, {
182274
182426
  e: undefined,
@@ -182276,7 +182428,10 @@ function MoveList(properties) {
182276
182428
  a: undefined,
182277
182429
  o: undefined,
182278
182430
  i: undefined,
182279
- n: undefined
182431
+ n: undefined,
182432
+ s: undefined,
182433
+ h: undefined,
182434
+ r: undefined
182280
182435
  });
182281
182436
  return _el$;
182282
182437
  })();
@@ -182344,15 +182499,17 @@ function MoveList(properties) {
182344
182499
  _$setProp3(_el$9, "wrapMode", "word");
182345
182500
  _$insert3(_el$9, () => description() || moveInspectionHint(properties.language));
182346
182501
  _$effect3((_p$) => {
182347
- var _v$7 = properties.height ?? "auto", _v$8 = properties.height === undefined ? 6 : Math.min(6, Math.max(2, Math.floor(properties.height / 4))), _v$9 = properties.centered ? "center" : "left";
182348
- _v$7 !== _p$.e && (_p$.e = _$setProp3(_el$6, "height", _v$7, _p$.e));
182349
- _v$8 !== _p$.t && (_p$.t = _$setProp3(_el$8, "height", _v$8, _p$.t));
182350
- _v$9 !== _p$.a && (_p$.a = _$setProp3(_el$9, "textAlign", _v$9, _p$.a));
182502
+ var _v$0 = properties.height ?? "auto", _v$1 = properties.height === undefined ? 6 : Math.min(6, Math.max(2, Math.floor(properties.height / 4))), _v$10 = surface().text, _v$11 = properties.centered ? "center" : "left";
182503
+ _v$0 !== _p$.e && (_p$.e = _$setProp3(_el$6, "height", _v$0, _p$.e));
182504
+ _v$1 !== _p$.t && (_p$.t = _$setProp3(_el$8, "height", _v$1, _p$.t));
182505
+ _v$10 !== _p$.a && (_p$.a = _$setProp3(_el$9, "fg", _v$10, _p$.a));
182506
+ _v$11 !== _p$.o && (_p$.o = _$setProp3(_el$9, "textAlign", _v$11, _p$.o));
182351
182507
  return _p$;
182352
182508
  }, {
182353
182509
  e: undefined,
182354
182510
  t: undefined,
182355
- a: undefined
182511
+ a: undefined,
182512
+ o: undefined
182356
182513
  });
182357
182514
  return _el$6;
182358
182515
  })();
@@ -182366,9 +182523,9 @@ import { memo as _$memo3 } from "@opentui/solid";
182366
182523
  import { setProp as _$setProp4 } from "@opentui/solid";
182367
182524
  import { createElement as _$createElement4 } from "@opentui/solid";
182368
182525
  import { createComponent as _$createComponent4 } from "@opentui/solid";
182369
- import { createSignal as createSignal2, Show as Show2 } from "solid-js";
182526
+ import { createSignal as createSignal3, Show as Show2 } from "solid-js";
182370
182527
  function Sprite(properties) {
182371
- const [sprite, setSprite] = createSignal2(null);
182528
+ const [sprite, setSprite] = createSignal3(null);
182372
182529
  const setSpriteIfOwned = createOwnerBoundCallback(setSprite);
182373
182530
  const width = properties.width ?? 8;
182374
182531
  const height = properties.height ?? 4;
@@ -182377,6 +182534,7 @@ function Sprite(properties) {
182377
182534
  const resolved = sprite();
182378
182535
  return resolved?.kind === "cached" ? resolved.source : null;
182379
182536
  };
182537
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
182380
182538
  return _$createComponent4(Show2, {
182381
182539
  get when() {
182382
182540
  return source();
@@ -182393,6 +182551,7 @@ function Sprite(properties) {
182393
182551
  var _c$ = _$memo3(() => properties.compactFallback === true);
182394
182552
  return () => _c$() ? sprite() === null ? "\u2026" : "?" : _$memo3(() => sprite() === null)() ? uiCopy(properties.language?.() ?? "en").loadingSprite : uiCopy(properties.language?.() ?? "en").spriteUnavailable;
182395
182553
  })());
182554
+ _$effect4((_$p) => _$setProp4(_el$2, "fg", surface().muted, _$p));
182396
182555
  return _el$;
182397
182556
  })();
182398
182557
  },
@@ -182401,7 +182560,15 @@ function Sprite(properties) {
182401
182560
  _$setProp4(_el$3, "fit", "fit");
182402
182561
  _$setProp4(_el$3, "width", width);
182403
182562
  _$setProp4(_el$3, "height", height);
182404
- _$effect4((_$p) => _$setProp4(_el$3, "source", cachedSource(), _$p));
182563
+ _$effect4((_p$) => {
182564
+ var _v$ = cachedSource(), _v$2 = properties.protocol?.() ?? "auto";
182565
+ _v$ !== _p$.e && (_p$.e = _$setProp4(_el$3, "source", _v$, _p$.e));
182566
+ _v$2 !== _p$.t && (_p$.t = _$setProp4(_el$3, "protocol", _v$2, _p$.t));
182567
+ return _p$;
182568
+ }, {
182569
+ e: undefined,
182570
+ t: undefined
182571
+ });
182405
182572
  return _el$3;
182406
182573
  })()
182407
182574
  });
@@ -182411,6 +182578,7 @@ function Sprite(properties) {
182411
182578
  var stats = ["hp", "attack", "defense", "specialAttack", "specialDefense", "speed"];
182412
182579
  function PcDetails(properties) {
182413
182580
  const copy = () => pcCopy(properties.language);
182581
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
182414
182582
  const values = () => pokemonStats(properties.pokemon);
182415
182583
  const nature = () => pokemonNatureModifiers(properties.pokemon.nature);
182416
182584
  const gender = () => properties.pokemon.gender;
@@ -182435,6 +182603,10 @@ function PcDetails(properties) {
182435
182603
  get resolve() {
182436
182604
  return properties.resolveSprite;
182437
182605
  },
182606
+ get protocol() {
182607
+ return properties.imageProtocol;
182608
+ },
182609
+ theme: surface,
182438
182610
  get shiny() {
182439
182611
  return properties.pokemon.shiny;
182440
182612
  },
@@ -182463,7 +182635,7 @@ function PcDetails(properties) {
182463
182635
  return (() => {
182464
182636
  var _el$1 = _$createElement5("text");
182465
182637
  _$insert5(_el$1, () => statLine([name(), String(values()[stat]), String(properties.pokemon.evs[stat]), String(properties.pokemon.ivs[stat])], stat === nature().increased ? "\u2191" : stat === nature().decreased ? "\u2193" : " "));
182466
- _$effect5((_$p) => _$setProp5(_el$1, "fg", stat === nature().increased ? "#ef4444" : stat === nature().decreased ? "#3b82f6" : properties.textColor, _$p));
182638
+ _$effect5((_$p) => _$setProp5(_el$1, "fg", stat === nature().increased ? surface().error : stat === nature().decreased ? surface().info : surface().text, _$p));
182467
182639
  return _el$1;
182468
182640
  })();
182469
182641
  }
@@ -182479,6 +182651,7 @@ function PcDetails(properties) {
182479
182651
  return () => _c$() ? (() => {
182480
182652
  var _el$10 = _$createElement5("text");
182481
182653
  _$insertNode5(_el$10, _$createTextNode2(`\u2014`));
182654
+ _$effect5((_$p) => _$setProp5(_el$10, "fg", surface().muted, _$p));
182482
182655
  return _el$10;
182483
182656
  })() : _$createComponent5(MoveList, {
182484
182657
  get moves() {
@@ -182486,9 +182659,25 @@ function PcDetails(properties) {
182486
182659
  },
182487
182660
  get language() {
182488
182661
  return properties.language;
182489
- }
182662
+ },
182663
+ theme: surface
182490
182664
  });
182491
182665
  })(), null);
182666
+ _$effect5((_p$) => {
182667
+ var _v$ = surface().text, _v$2 = surface().text, _v$3 = surface().text, _v$4 = surface().muted, _v$5 = surface().muted;
182668
+ _v$ !== _p$.e && (_p$.e = _$setProp5(_el$3, "fg", _v$, _p$.e));
182669
+ _v$2 !== _p$.t && (_p$.t = _$setProp5(_el$5, "fg", _v$2, _p$.t));
182670
+ _v$3 !== _p$.a && (_p$.a = _$setProp5(_el$6, "fg", _v$3, _p$.a));
182671
+ _v$4 !== _p$.o && (_p$.o = _$setProp5(_el$8, "fg", _v$4, _p$.o));
182672
+ _v$5 !== _p$.i && (_p$.i = _$setProp5(_el$0, "fg", _v$5, _p$.i));
182673
+ return _p$;
182674
+ }, {
182675
+ e: undefined,
182676
+ t: undefined,
182677
+ a: undefined,
182678
+ o: undefined,
182679
+ i: undefined
182680
+ });
182492
182681
  return _el$;
182493
182682
  })();
182494
182683
  }
@@ -182500,16 +182689,15 @@ var bold2 = createTextAttributes2({
182500
182689
  function PokemonPcDialog(properties) {
182501
182690
  const dimensions = useTerminalDimensions2();
182502
182691
  const height = () => Math.min(44, Math.max(1, dimensions().height - 6));
182503
- const [index, setIndex] = createSignal3(0);
182504
- const [selected, setSelected] = createSignal3([...properties.partyIds]);
182505
- const [busy, setBusy] = createSignal3(false);
182506
- const [feedback, setFeedback] = createSignal3("");
182507
- const [mode, setMode] = createSignal3("browse");
182508
- const [name, setName] = createSignal3("");
182692
+ const [index, setIndex] = createSignal4(0);
182693
+ const [selected, setSelected] = createSignal4([...properties.partyIds]);
182694
+ const [busy, setBusy] = createSignal4(false);
182695
+ const [feedback, setFeedback] = createSignal4("");
182696
+ const [mode, setMode] = createSignal4("browse");
182697
+ const [name, setName] = createSignal4("");
182509
182698
  const isOwned = createOwnerGuard();
182510
182699
  const copy = () => pcCopy(properties.language);
182511
- const textColor = () => typeof properties.textColor === "function" ? properties.textColor() : properties.textColor;
182512
- const mutedColor = () => typeof properties.mutedColor === "function" ? properties.mutedColor() : properties.mutedColor;
182700
+ const surface = () => properties.theme?.().dialog ?? fallbackPokecodeTheme.dialog;
182513
182701
  const inspected = () => properties.pokemon[index()];
182514
182702
  let list;
182515
182703
  let details;
@@ -182721,7 +182909,7 @@ function PokemonPcDialog(properties) {
182721
182909
  });
182722
182910
  _$insert6(_el$21, () => `${pokemon.name} Lv.${pokemon.level}`);
182723
182911
  _$effect6((_p$) => {
182724
- var _v$7 = selected().includes(pokemon.id) ? "#22c55e" : mutedColor(), _v$8 = index() === row() ? "#2563eb" : undefined, _v$9 = index() === row() ? "#ffffff" : textColor();
182912
+ var _v$7 = selected().includes(pokemon.id) ? surface().success : surface().muted, _v$8 = index() === row() ? surface().highlight : undefined, _v$9 = surface().text;
182725
182913
  _v$7 !== _p$.e && (_p$.e = _$setProp6(_el$19, "fg", _v$7, _p$.e));
182726
182914
  _v$8 !== _p$.t && (_p$.t = _$setProp6(_el$20, "backgroundColor", _v$8, _p$.t));
182727
182915
  _v$9 !== _p$.a && (_p$.a = _$setProp6(_el$21, "fg", _v$9, _p$.a));
@@ -182741,6 +182929,7 @@ function PokemonPcDialog(properties) {
182741
182929
  get children() {
182742
182930
  var _el$6 = _$createElement6("text");
182743
182931
  _$insert6(_el$6, () => copy().empty);
182932
+ _$effect6((_$p) => _$setProp6(_el$6, "fg", surface().muted, _$p));
182744
182933
  return _el$6;
182745
182934
  }
182746
182935
  }), null);
@@ -182771,11 +182960,12 @@ function PokemonPcDialog(properties) {
182771
182960
  get language() {
182772
182961
  return properties.language;
182773
182962
  },
182774
- get textColor() {
182775
- return textColor();
182776
- },
182963
+ theme: surface,
182777
182964
  get resolveSprite() {
182778
182965
  return properties.resolveSprite;
182966
+ },
182967
+ get imageProtocol() {
182968
+ return properties.imageProtocol;
182779
182969
  }
182780
182970
  })
182781
182971
  }));
@@ -182788,7 +182978,7 @@ function PokemonPcDialog(properties) {
182788
182978
  var _el$8 = _$createElement6("text");
182789
182979
  _$setProp6(_el$8, "flexShrink", 0);
182790
182980
  _$insert6(_el$8, () => copy().renamePrompt);
182791
- _$effect6((_$p) => _$setProp6(_el$8, "fg", textColor(), _$p));
182981
+ _$effect6((_$p) => _$setProp6(_el$8, "fg", surface().text, _$p));
182792
182982
  return _el$8;
182793
182983
  })(), (() => {
182794
182984
  var _el$9 = _$createElement6("input");
@@ -182817,7 +183007,7 @@ function PokemonPcDialog(properties) {
182817
183007
  var _el$0 = _$createElement6("text");
182818
183008
  _$setProp6(_el$0, "flexShrink", 0);
182819
183009
  _$insert6(_el$0, () => `${inspected()?.name ?? ""}: ${copy().releasePrompt}`);
182820
- _$effect6((_$p) => _$setProp6(_el$0, "fg", textColor(), _$p));
183010
+ _$effect6((_$p) => _$setProp6(_el$0, "fg", surface().text, _$p));
182821
183011
  return _el$0;
182822
183012
  }
182823
183013
  }), null);
@@ -182829,7 +183019,7 @@ function PokemonPcDialog(properties) {
182829
183019
  var _el$1 = _$createElement6("text");
182830
183020
  _$setProp6(_el$1, "flexShrink", 0);
182831
183021
  _$insert6(_el$1, feedback);
182832
- _$effect6((_$p) => _$setProp6(_el$1, "fg", mutedColor(), _$p));
183022
+ _$effect6((_$p) => _$setProp6(_el$1, "fg", surface().muted, _$p));
182833
183023
  return _el$1;
182834
183024
  }
182835
183025
  }), null);
@@ -182842,7 +183032,7 @@ function PokemonPcDialog(properties) {
182842
183032
  var _el$22 = _$createElement6("text");
182843
183033
  _$setProp6(_el$22, "flexShrink", 0);
182844
183034
  _$insert6(_el$22, () => copy().editActions);
182845
- _$effect6((_$p) => _$setProp6(_el$22, "fg", mutedColor(), _$p));
183035
+ _$effect6((_$p) => _$setProp6(_el$22, "fg", surface().muted, _$p));
182846
183036
  return _el$22;
182847
183037
  })();
182848
183038
  },
@@ -182869,7 +183059,7 @@ function PokemonPcDialog(properties) {
182869
183059
  });
182870
183060
  _$insert6(_el$14, () => `F: ${copy().release}`);
182871
183061
  _$effect6((_p$) => {
182872
- var _v$3 = mutedColor(), _v$4 = mutedColor();
183062
+ var _v$3 = surface().muted, _v$4 = surface().muted;
182873
183063
  _v$3 !== _p$.e && (_p$.e = _$setProp6(_el$12, "fg", _v$3, _p$.e));
182874
183064
  _v$4 !== _p$.t && (_p$.t = _$setProp6(_el$14, "fg", _v$4, _p$.t));
182875
183065
  return _p$;
@@ -182882,19 +183072,19 @@ function PokemonPcDialog(properties) {
182882
183072
  var _el$15 = _$createElement6("text");
182883
183073
  _$setProp6(_el$15, "flexShrink", 0);
182884
183074
  _$insert6(_el$15, () => copy().navigation);
182885
- _$effect6((_$p) => _$setProp6(_el$15, "fg", mutedColor(), _$p));
183075
+ _$effect6((_$p) => _$setProp6(_el$15, "fg", surface().muted, _$p));
182886
183076
  return _el$15;
182887
183077
  })(), (() => {
182888
183078
  var _el$16 = _$createElement6("text");
182889
183079
  _$setProp6(_el$16, "flexShrink", 0);
182890
183080
  _$insert6(_el$16, () => copy().actions);
182891
- _$effect6((_$p) => _$setProp6(_el$16, "fg", mutedColor(), _$p));
183081
+ _$effect6((_$p) => _$setProp6(_el$16, "fg", surface().muted, _$p));
182892
183082
  return _el$16;
182893
183083
  })()];
182894
183084
  }
182895
183085
  }), null);
182896
183086
  _$effect6((_p$) => {
182897
- var _v$5 = height(), _v$6 = textColor();
183087
+ var _v$5 = height(), _v$6 = surface().text;
182898
183088
  _v$5 !== _p$.e && (_p$.e = _$setProp6(_el$, "height", _v$5, _p$.e));
182899
183089
  _v$6 !== _p$.t && (_p$.t = _$setProp6(_el$2, "fg", _v$6, _p$.t));
182900
183090
  return _p$;
@@ -182925,7 +183115,7 @@ function createPcAction(dependencies) {
182925
183115
  const collection = await dependencies.rpc.collection({});
182926
183116
  if (dependencies.state.isDisposed())
182927
183117
  return;
182928
- const [pokemon, setPokemon] = createSignal4(collection.pokemon);
183118
+ const [pokemon, setPokemon] = createSignal5(collection.pokemon);
182929
183119
  const manage = async (operation, update) => {
182930
183120
  const result = await operation;
182931
183121
  dependencies.state.apply(result.state);
@@ -182948,15 +183138,15 @@ function createPcAction(dependencies) {
182948
183138
  get language() {
182949
183139
  return dependencies.state.state().locale;
182950
183140
  },
182951
- get textColor() {
182952
- return dependencies.theme.base;
182953
- },
182954
- get mutedColor() {
182955
- return dependencies.theme.muted;
183141
+ get theme() {
183142
+ return dependencies.theme;
182956
183143
  },
182957
183144
  get resolveSprite() {
182958
183145
  return dependencies.resolveSprite;
182959
183146
  },
183147
+ get imageProtocol() {
183148
+ return dependencies.imageProtocol;
183149
+ },
182960
183150
  onClose: () => {
182961
183151
  if (!dependencies.state.isDisposed())
182962
183152
  dependencies.dialog.clear();
@@ -182981,7 +183171,7 @@ function createPcAction(dependencies) {
182981
183171
  }
182982
183172
 
182983
183173
  // src/adapters/opencode/tui/sidebar/actions.ts
182984
- import { createSignal as createSignal5 } from "solid-js";
183174
+ import { createSignal as createSignal6 } from "solid-js";
182985
183175
 
182986
183176
  // src/adapters/presentation/localization.ts
182987
183177
  function localizePokemon(pokemon, language) {
@@ -183140,8 +183330,8 @@ function captureNotification(encounter, destination, language) {
183140
183330
 
183141
183331
  // src/adapters/opencode/tui/sidebar/actions.ts
183142
183332
  function createSidebarActions(dependencies) {
183143
- const [selectingStarter, setSelectingStarter] = createSignal5(null);
183144
- const [resolvingEncounterId, setResolvingEncounterId] = createSignal5(null);
183333
+ const [selectingStarter, setSelectingStarter] = createSignal6(null);
183334
+ const [resolvingEncounterId, setResolvingEncounterId] = createSignal6(null);
183145
183335
  return {
183146
183336
  travelToLocation: async (locationId) => {
183147
183337
  const result = await dependencies.rpc.travelTo({ locationId });
@@ -183274,16 +183464,16 @@ function ExportCommand(properties) {
183274
183464
  }
183275
183465
 
183276
183466
  // src/adapters/opencode/tui/sidebar/view.tsx
183277
- import { effect as _$effect9 } from "@opentui/solid";
183278
183467
  import { mergeProps as _$mergeProps } from "@opentui/solid";
183279
183468
  import { insertNode as _$insertNode9 } from "@opentui/solid";
183280
183469
  import { memo as _$memo6 } from "@opentui/solid";
183281
183470
  import { createComponent as _$createComponent10 } from "@opentui/solid";
183471
+ import { effect as _$effect9 } from "@opentui/solid";
183282
183472
  import { insert as _$insert9 } from "@opentui/solid";
183283
183473
  import { setProp as _$setProp9 } from "@opentui/solid";
183284
183474
  import { createElement as _$createElement9 } from "@opentui/solid";
183285
183475
  import { MouseButton as MouseButton4 } from "@opentui/core";
183286
- import { createSignal as createSignal7, Match as Match2, Show as Show5, Switch as Switch2 } from "solid-js";
183476
+ import { createSignal as createSignal8, Match as Match2, Show as Show5, Switch as Switch2 } from "solid-js";
183287
183477
 
183288
183478
  // src/domain/choices/choices.ts
183289
183479
  import { z as z11 } from "zod";
@@ -183344,7 +183534,7 @@ import { createElement as _$createElement7 } from "@opentui/solid";
183344
183534
  import { createComponent as _$createComponent8 } from "@opentui/solid";
183345
183535
  import { MouseButton as MouseButton3 } from "@opentui/core";
183346
183536
  import { useTerminalDimensions as useTerminalDimensions3 } from "@opentui/solid";
183347
- import { createSignal as createSignal6, Match, Show as Show4, Switch } from "solid-js";
183537
+ import { createSignal as createSignal7, Match, Show as Show4, Switch } from "solid-js";
183348
183538
  function PendingChoiceCard(properties) {
183349
183539
  const choice = () => properties.state().pendingChoices[0];
183350
183540
  return _$createComponent8(Show4, {
@@ -183369,8 +183559,14 @@ function PendingChoiceCard(properties) {
183369
183559
  get resolveSprite() {
183370
183560
  return properties.resolveSprite;
183371
183561
  },
183562
+ get imageProtocol() {
183563
+ return properties.imageProtocol;
183564
+ },
183372
183565
  get language() {
183373
183566
  return properties.language;
183567
+ },
183568
+ get theme() {
183569
+ return properties.theme;
183374
183570
  }
183375
183571
  });
183376
183572
  }
@@ -183386,11 +183582,17 @@ function PendingChoiceCard(properties) {
183386
183582
  get resolveSprite() {
183387
183583
  return properties.resolveSprite;
183388
183584
  },
183585
+ get imageProtocol() {
183586
+ return properties.imageProtocol;
183587
+ },
183389
183588
  get language() {
183390
183589
  return properties.language;
183391
183590
  },
183392
183591
  get onResolve() {
183393
183592
  return properties.onResolveEvolution;
183593
+ },
183594
+ get theme() {
183595
+ return properties.theme;
183394
183596
  }
183395
183597
  });
183396
183598
  }
@@ -183411,6 +183613,7 @@ function MoveChoiceCard(properties) {
183411
183613
  return null;
183412
183614
  const dimensions = useTerminalDimensions3();
183413
183615
  const language = () => properties.language?.() ?? "en";
183616
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
183414
183617
  const moves = [...pokemon.moves, payload.move];
183415
183618
  const copy = () => uiCopy(language());
183416
183619
  return (() => {
@@ -183436,6 +183639,10 @@ function MoveChoiceCard(properties) {
183436
183639
  get resolve() {
183437
183640
  return properties.resolveSprite;
183438
183641
  },
183642
+ get protocol() {
183643
+ return properties.imageProtocol;
183644
+ },
183645
+ theme: surface,
183439
183646
  get shiny() {
183440
183647
  return pokemon.shiny;
183441
183648
  },
@@ -183463,8 +183670,20 @@ function MoveChoiceCard(properties) {
183463
183670
  get height() {
183464
183671
  return Math.min(28, Math.max(6, dimensions().height - 19));
183465
183672
  },
183466
- onActivate: (moveId) => properties.onResolve(choice.id, moveId)
183673
+ onActivate: (moveId) => properties.onResolve(choice.id, moveId),
183674
+ get theme() {
183675
+ return properties.theme;
183676
+ }
183467
183677
  }), null);
183678
+ _$effect7((_p$) => {
183679
+ var _v$ = surface().text, _v$2 = surface().muted;
183680
+ _v$ !== _p$.e && (_p$.e = _$setProp7(_el$2, "fg", _v$, _p$.e));
183681
+ _v$2 !== _p$.t && (_p$.t = _$setProp7(_el$3, "fg", _v$2, _p$.t));
183682
+ return _p$;
183683
+ }, {
183684
+ e: undefined,
183685
+ t: undefined
183686
+ });
183468
183687
  return _el$;
183469
183688
  })();
183470
183689
  }
@@ -183478,7 +183697,8 @@ function EvolutionChoiceCard(properties) {
183478
183697
  const pokemon = properties.party().find((slot) => slot.pokemon?.id === payload.pokemonId)?.pokemon ?? properties.choicePokemon().find((instance) => instance.id === payload.pokemonId);
183479
183698
  if (pokemon === undefined || pokemon === null)
183480
183699
  return null;
183481
- const [hoveredOption, setHoveredOption] = createSignal6(null);
183700
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
183701
+ const [hoveredOption, setHoveredOption] = createSignal7(null);
183482
183702
  return (() => {
183483
183703
  var _el$4 = _$createElement7("box"), _el$5 = _$createElement7("text"), _el$6 = _$createElement7("text"), _el$7 = _$createElement7("box");
183484
183704
  _$insertNode7(_el$4, _el$5);
@@ -183498,6 +183718,10 @@ function EvolutionChoiceCard(properties) {
183498
183718
  get resolve() {
183499
183719
  return properties.resolveSprite;
183500
183720
  },
183721
+ get protocol() {
183722
+ return properties.imageProtocol;
183723
+ },
183724
+ theme: surface,
183501
183725
  get shiny() {
183502
183726
  return pokemon.shiny;
183503
183727
  },
@@ -183524,14 +183748,28 @@ function EvolutionChoiceCard(properties) {
183524
183748
  get resolveSprite() {
183525
183749
  return properties.resolveSprite;
183526
183750
  },
183751
+ get imageProtocol() {
183752
+ return properties.imageProtocol;
183753
+ },
183527
183754
  get language() {
183528
183755
  return properties.language;
183529
- }
183756
+ },
183757
+ theme: surface
183530
183758
  })));
183759
+ _$effect7((_p$) => {
183760
+ var _v$3 = surface().text, _v$4 = surface().muted;
183761
+ _v$3 !== _p$.e && (_p$.e = _$setProp7(_el$5, "fg", _v$3, _p$.e));
183762
+ _v$4 !== _p$.t && (_p$.t = _$setProp7(_el$6, "fg", _v$4, _p$.t));
183763
+ return _p$;
183764
+ }, {
183765
+ e: undefined,
183766
+ t: undefined
183767
+ });
183531
183768
  return _el$4;
183532
183769
  })();
183533
183770
  }
183534
183771
  function EvolutionOptionCard(properties) {
183772
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
183535
183773
  return (() => {
183536
183774
  var _el$8 = _$createElement7("button"), _el$9 = _$createElement7("box"), _el$0 = _$createElement7("box"), _el$1 = _$createElement7("text");
183537
183775
  _$insertNode7(_el$8, _el$9);
@@ -183564,6 +183802,10 @@ function EvolutionOptionCard(properties) {
183564
183802
  get resolve() {
183565
183803
  return properties.resolveSprite;
183566
183804
  },
183805
+ get protocol() {
183806
+ return properties.imageProtocol;
183807
+ },
183808
+ theme: surface,
183567
183809
  get shiny() {
183568
183810
  return properties.pokemon.shiny;
183569
183811
  },
@@ -183580,19 +183822,21 @@ function EvolutionOptionCard(properties) {
183580
183822
  _$setProp7(_el$0, "width", "100%");
183581
183823
  _$insert7(_el$1, () => properties.option.name);
183582
183824
  _$effect7((_p$) => {
183583
- var _v$ = properties.hovered() ? "#404040" : undefined, _v$2 = properties.onHover, _v$3 = properties.onLeave, _v$4 = properties.onHover, _v$5 = properties.onLeave;
183584
- _v$ !== _p$.e && (_p$.e = _$setProp7(_el$8, "backgroundColor", _v$, _p$.e));
183585
- _v$2 !== _p$.t && (_p$.t = _$setProp7(_el$8, "onMouseOver", _v$2, _p$.t));
183586
- _v$3 !== _p$.a && (_p$.a = _$setProp7(_el$8, "onMouseOut", _v$3, _p$.a));
183587
- _v$4 !== _p$.o && (_p$.o = _$setProp7(_el$8, "onFocus", _v$4, _p$.o));
183588
- _v$5 !== _p$.i && (_p$.i = _$setProp7(_el$8, "onBlur", _v$5, _p$.i));
183825
+ var _v$5 = properties.hovered() ? surface().highlight : undefined, _v$6 = properties.onHover, _v$7 = properties.onLeave, _v$8 = properties.onHover, _v$9 = properties.onLeave, _v$0 = surface().text;
183826
+ _v$5 !== _p$.e && (_p$.e = _$setProp7(_el$8, "backgroundColor", _v$5, _p$.e));
183827
+ _v$6 !== _p$.t && (_p$.t = _$setProp7(_el$8, "onMouseOver", _v$6, _p$.t));
183828
+ _v$7 !== _p$.a && (_p$.a = _$setProp7(_el$8, "onMouseOut", _v$7, _p$.a));
183829
+ _v$8 !== _p$.o && (_p$.o = _$setProp7(_el$8, "onFocus", _v$8, _p$.o));
183830
+ _v$9 !== _p$.i && (_p$.i = _$setProp7(_el$8, "onBlur", _v$9, _p$.i));
183831
+ _v$0 !== _p$.n && (_p$.n = _$setProp7(_el$1, "fg", _v$0, _p$.n));
183589
183832
  return _p$;
183590
183833
  }, {
183591
183834
  e: undefined,
183592
183835
  t: undefined,
183593
183836
  a: undefined,
183594
183837
  o: undefined,
183595
- i: undefined
183838
+ i: undefined,
183839
+ n: undefined
183596
183840
  });
183597
183841
  return _el$8;
183598
183842
  })();
@@ -183604,7 +183848,8 @@ function RegionChoiceCard(properties) {
183604
183848
  const payload = decodeRegionChoiceProjection(choice.payload);
183605
183849
  if (payload === null)
183606
183850
  return null;
183607
- const [hoveredRegion, setHoveredRegion] = createSignal6(null);
183851
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
183852
+ const [hoveredRegion, setHoveredRegion] = createSignal7(null);
183608
183853
  const availableRegions = () => regions(properties.language?.() ?? "en");
183609
183854
  const completedRegionName = () => availableRegions().find((region) => region.id === payload.region)?.name ?? payload.region;
183610
183855
  return (() => {
@@ -183650,9 +183895,26 @@ function RegionChoiceCard(properties) {
183650
183895
  }
183651
183896
  });
183652
183897
  _$insert7(_el$15, () => region.name);
183653
- _$effect7((_$p) => _$setProp7(_el$14, "backgroundColor", hoveredRegion() === region.id ? "#404040" : undefined, _$p));
183898
+ _$effect7((_p$) => {
183899
+ var _v$11 = hoveredRegion() === region.id ? surface().highlight : undefined, _v$12 = surface().text;
183900
+ _v$11 !== _p$.e && (_p$.e = _$setProp7(_el$14, "backgroundColor", _v$11, _p$.e));
183901
+ _v$12 !== _p$.t && (_p$.t = _$setProp7(_el$15, "fg", _v$12, _p$.t));
183902
+ return _p$;
183903
+ }, {
183904
+ e: undefined,
183905
+ t: undefined
183906
+ });
183654
183907
  return _el$14;
183655
183908
  })()));
183909
+ _$effect7((_p$) => {
183910
+ var _v$1 = surface().text, _v$10 = surface().muted;
183911
+ _v$1 !== _p$.e && (_p$.e = _$setProp7(_el$11, "fg", _v$1, _p$.e));
183912
+ _v$10 !== _p$.t && (_p$.t = _$setProp7(_el$12, "fg", _v$10, _p$.t));
183913
+ return _p$;
183914
+ }, {
183915
+ e: undefined,
183916
+ t: undefined
183917
+ });
183656
183918
  return _el$10;
183657
183919
  })();
183658
183920
  }
@@ -183669,6 +183931,7 @@ function EncounterCard(properties) {
183669
183931
  const encounter = properties.encounter();
183670
183932
  if (encounter === null)
183671
183933
  return null;
183934
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
183672
183935
  const genderSymbol = encounter.gender === "male" ? "\u2642" : encounter.gender === "female" ? "\u2640" : "\u2014";
183673
183936
  const copy = uiCopy(properties.language?.() ?? "en");
183674
183937
  return (() => {
@@ -183699,6 +183962,10 @@ function EncounterCard(properties) {
183699
183962
  get resolve() {
183700
183963
  return properties.resolveSprite;
183701
183964
  },
183965
+ get protocol() {
183966
+ return properties.imageProtocol;
183967
+ },
183968
+ theme: surface,
183702
183969
  get shiny() {
183703
183970
  return encounter.shiny;
183704
183971
  },
@@ -183720,6 +183987,7 @@ function EncounterCard(properties) {
183720
183987
  onActivate: () => properties.onResolve(encounter.id, encounter, true),
183721
183988
  onHover: () => properties.onHover("catch"),
183722
183989
  onLeave: () => properties.onHover(null),
183990
+ theme: surface,
183723
183991
  tone: "primary"
183724
183992
  }), null);
183725
183993
  _$insert8(_el$6, _$createComponent9(PokecodeActionButton, {
@@ -183730,9 +183998,18 @@ function EncounterCard(properties) {
183730
183998
  onActivate: () => properties.onResolve(encounter.id, encounter, false),
183731
183999
  onHover: () => properties.onHover("run"),
183732
184000
  onLeave: () => properties.onHover(null),
184001
+ theme: surface,
183733
184002
  tone: "secondary"
183734
184003
  }), null);
183735
- _$effect8((_$p) => _$setProp8(_el$3, "fg", properties.encounter()?.caught ? "#22c55e" : properties.mutedColor(), _$p));
184004
+ _$effect8((_p$) => {
184005
+ var _v$ = properties.encounter()?.caught ? surface().success : surface().muted, _v$2 = surface().text;
184006
+ _v$ !== _p$.e && (_p$.e = _$setProp8(_el$3, "fg", _v$, _p$.e));
184007
+ _v$2 !== _p$.t && (_p$.t = _$setProp8(_el$5, "fg", _v$2, _p$.t));
184008
+ return _p$;
184009
+ }, {
184010
+ e: undefined,
184011
+ t: undefined
184012
+ });
183736
184013
  return _el$;
183737
184014
  })();
183738
184015
  }
@@ -183755,6 +184032,7 @@ function sidebarViewFor(state) {
183755
184032
  return "team";
183756
184033
  }
183757
184034
  function SidebarView(properties) {
184035
+ const surface = () => properties.theme().current;
183758
184036
  const view = () => sidebarViewFor(properties.state());
183759
184037
  const decisionCount = () => properties.state().pendingChoices.filter((choice) => choice.kind !== "catch").length;
183760
184038
  const encounterCount = () => properties.state().pendingEncounterCount;
@@ -183769,6 +184047,7 @@ function SidebarView(properties) {
183769
184047
  get children() {
183770
184048
  var _el$2 = _$createElement9("text");
183771
184049
  _$insert9(_el$2, () => uiCopy(properties.state().locale).queueCounts(decisionCount(), encounterCount()));
184050
+ _$effect9((_$p) => _$setProp9(_el$2, "fg", surface().text, _$p));
183772
184051
  return _el$2;
183773
184052
  }
183774
184053
  }), null);
@@ -183783,9 +184062,6 @@ function SidebarView(properties) {
183783
184062
  get hovered() {
183784
184063
  return properties.hoveredStarter;
183785
184064
  },
183786
- get hoverBackground() {
183787
- return properties.starterHoverBackground;
183788
- },
183789
184065
  language: () => properties.state().locale,
183790
184066
  regionId: () => {
183791
184067
  const choice = properties.state().pendingChoices[0];
@@ -183799,7 +184075,11 @@ function SidebarView(properties) {
183799
184075
  },
183800
184076
  get resolveSprite() {
183801
184077
  return properties.resolveSprite;
183802
- }
184078
+ },
184079
+ get imageProtocol() {
184080
+ return properties.imageProtocol;
184081
+ },
184082
+ theme: surface
183803
184083
  });
183804
184084
  }
183805
184085
  }), _$createComponent10(Match2, {
@@ -183820,7 +184100,11 @@ function SidebarView(properties) {
183820
184100
  get resolveSprite() {
183821
184101
  return properties.resolveSprite;
183822
184102
  },
183823
- language: () => properties.state().locale
184103
+ get imageProtocol() {
184104
+ return properties.imageProtocol;
184105
+ },
184106
+ language: () => properties.state().locale,
184107
+ theme: surface
183824
184108
  });
183825
184109
  }
183826
184110
  }), _$createComponent10(Match2, {
@@ -183834,7 +184118,8 @@ function SidebarView(properties) {
183834
184118
  visitedRegionIds: () => properties.state().exploration?.regions.filter((region) => region.visited).map((region) => region.id) ?? [],
183835
184119
  get onTravel() {
183836
184120
  return properties.onTravelRegion;
183837
- }
184121
+ },
184122
+ theme: surface
183838
184123
  });
183839
184124
  }
183840
184125
  }), _$createComponent10(Match2, {
@@ -183849,9 +184134,6 @@ function SidebarView(properties) {
183849
184134
  keyed: true,
183850
184135
  children: (encounter) => _$createComponent10(EncounterCard, {
183851
184136
  encounter: () => encounter,
183852
- get mutedColor() {
183853
- return properties.mutedColor;
183854
- },
183855
184137
  get hoveredAction() {
183856
184138
  return properties.hoveredEncounterAction;
183857
184139
  },
@@ -183864,7 +184146,11 @@ function SidebarView(properties) {
183864
184146
  get resolveSprite() {
183865
184147
  return properties.resolveSprite;
183866
184148
  },
183867
- language: () => properties.state().locale
184149
+ get imageProtocol() {
184150
+ return properties.imageProtocol;
184151
+ },
184152
+ language: () => properties.state().locale,
184153
+ theme: surface
183868
184154
  })
183869
184155
  });
183870
184156
  }
@@ -183879,13 +184165,18 @@ function SidebarView(properties) {
183879
184165
  },
183880
184166
  get onTravel() {
183881
184167
  return properties.onTravelLocation;
183882
- }
184168
+ },
184169
+ theme: surface
183883
184170
  }), _$createComponent10(PartyGrid, {
183884
184171
  language: () => properties.state().locale,
183885
184172
  party: () => properties.state().party,
183886
184173
  get resolveSprite() {
183887
184174
  return properties.resolveSprite;
183888
- }
184175
+ },
184176
+ get imageProtocol() {
184177
+ return properties.imageProtocol;
184178
+ },
184179
+ theme: surface
183889
184180
  })];
183890
184181
  }
183891
184182
  })];
@@ -183895,6 +184186,7 @@ function SidebarView(properties) {
183895
184186
  })();
183896
184187
  }
183897
184188
  function StarterButtons(properties) {
184189
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
183898
184190
  return (() => {
183899
184191
  var _el$3 = _$createElement9("box"), _el$4 = _$createElement9("text");
183900
184192
  _$insertNode9(_el$3, _el$4);
@@ -183904,18 +184196,20 @@ function StarterButtons(properties) {
183904
184196
  _$insert9(_el$3, () => regions(properties.language?.() ?? "en").filter((region) => properties.regionId?.() === undefined || region.id === properties.regionId()).map((region) => _$createComponent10(StarterRegionCard, _$mergeProps(properties, {
183905
184197
  region
183906
184198
  }))), null);
184199
+ _$effect9((_$p) => _$setProp9(_el$4, "fg", surface().accent, _$p));
183907
184200
  return _el$3;
183908
184201
  })();
183909
184202
  }
183910
184203
  function StarterRegionCard(properties) {
183911
- const [rowWidth, setRowWidth] = createSignal7(0);
184204
+ const [rowWidth, setRowWidth] = createSignal8(0);
183912
184205
  const cellWidth = () => {
183913
184206
  const width = Math.max(1, Math.floor((rowWidth() - 2) / 3));
183914
184207
  return width % 2 === 0 ? width - 1 : width;
183915
184208
  };
183916
184209
  const columnGap = () => Math.min(3, Math.max(1, Math.floor((rowWidth() - cellWidth() * 3) / 2)));
183917
184210
  const gridInset = () => Math.max(0, Math.floor((rowWidth() - (cellWidth() * 3 + columnGap() * 2)) / 2));
183918
- const hoverBackground = () => typeof properties.hoverBackground === "function" ? properties.hoverBackground() : properties.hoverBackground;
184211
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
184212
+ const hoverBackground = () => surface().highlight;
183919
184213
  const starters = () => startersForRegion(properties.region.id, properties.language?.() ?? "en");
183920
184214
  return (() => {
183921
184215
  var _el$5 = _$createElement9("box"), _el$6 = _$createElement9("text"), _el$7 = _$createElement9("box"), _el$8 = _$createElement9("box");
@@ -183979,6 +184273,10 @@ function StarterRegionCard(properties) {
183979
184273
  get resolve() {
183980
184274
  return properties.resolveSprite;
183981
184275
  },
184276
+ get protocol() {
184277
+ return properties.imageProtocol;
184278
+ },
184279
+ theme: surface,
183982
184280
  shiny: false,
183983
184281
  gender: "male",
183984
184282
  get speciesId() {
@@ -183986,11 +184284,11 @@ function StarterRegionCard(properties) {
183986
184284
  }
183987
184285
  }));
183988
184286
  _$effect9((_p$) => {
183989
- var _v$3 = properties.hovered() === starter.speciesId ? hoverBackground() : undefined, _v$4 = cellWidth(), _v$5 = cellWidth() + 2, _v$6 = properties.hovered() === starter.speciesId ? hoverBackground() : "transparent";
183990
- _v$3 !== _p$.e && (_p$.e = _$setProp9(_el$9, "backgroundColor", _v$3, _p$.e));
183991
- _v$4 !== _p$.t && (_p$.t = _$setProp9(_el$9, "width", _v$4, _p$.t));
183992
- _v$5 !== _p$.a && (_p$.a = _$setProp9(_el$0, "width", _v$5, _p$.a));
183993
- _v$6 !== _p$.o && (_p$.o = _$setProp9(_el$0, "backgroundColor", _v$6, _p$.o));
184287
+ var _v$4 = properties.hovered() === starter.speciesId ? hoverBackground() : undefined, _v$5 = cellWidth(), _v$6 = cellWidth() + 2, _v$7 = properties.hovered() === starter.speciesId ? hoverBackground() : "transparent";
184288
+ _v$4 !== _p$.e && (_p$.e = _$setProp9(_el$9, "backgroundColor", _v$4, _p$.e));
184289
+ _v$5 !== _p$.t && (_p$.t = _$setProp9(_el$9, "width", _v$5, _p$.t));
184290
+ _v$6 !== _p$.a && (_p$.a = _$setProp9(_el$0, "width", _v$6, _p$.a));
184291
+ _v$7 !== _p$.o && (_p$.o = _$setProp9(_el$0, "backgroundColor", _v$7, _p$.o));
183994
184292
  return _p$;
183995
184293
  }, {
183996
184294
  e: undefined,
@@ -184001,20 +184299,23 @@ function StarterRegionCard(properties) {
184001
184299
  return _el$9;
184002
184300
  })()));
184003
184301
  _$effect9((_p$) => {
184004
- var _v$ = columnGap(), _v$2 = gridInset();
184005
- _v$ !== _p$.e && (_p$.e = _$setProp9(_el$8, "gap", _v$, _p$.e));
184006
- _v$2 !== _p$.t && (_p$.t = _$setProp9(_el$8, "marginLeft", _v$2, _p$.t));
184302
+ var _v$ = surface().accent, _v$2 = columnGap(), _v$3 = gridInset();
184303
+ _v$ !== _p$.e && (_p$.e = _$setProp9(_el$6, "fg", _v$, _p$.e));
184304
+ _v$2 !== _p$.t && (_p$.t = _$setProp9(_el$8, "gap", _v$2, _p$.t));
184305
+ _v$3 !== _p$.a && (_p$.a = _$setProp9(_el$8, "marginLeft", _v$3, _p$.a));
184007
184306
  return _p$;
184008
184307
  }, {
184009
184308
  e: undefined,
184010
- t: undefined
184309
+ t: undefined,
184310
+ a: undefined
184011
184311
  });
184012
184312
  return _el$5;
184013
184313
  })();
184014
184314
  }
184015
184315
  function LocationProgress(properties) {
184016
184316
  const state = properties.state;
184017
- const [hoveredTravel, setHoveredTravel] = createSignal7(false);
184317
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
184318
+ const [hoveredTravel, setHoveredTravel] = createSignal8(false);
184018
184319
  const currentLocation = () => state().exploration?.locations.find((location) => location.id === state().location)?.name ?? uiCopy(state().locale).unknown;
184019
184320
  const currentRegion = () => regions(state().locale).find((region) => region.id === state().region)?.name ?? uiCopy(state().locale).unknown;
184020
184321
  const latestUnlockedLocation = () => {
@@ -184049,6 +184350,7 @@ function LocationProgress(properties) {
184049
184350
  return () => _c$() ? (() => {
184050
184351
  var _el$14 = _$createElement9("text");
184051
184352
  _$insert9(_el$14, () => `${percentage().toFixed(2)}%`);
184353
+ _$effect9((_$p) => _$setProp9(_el$14, "fg", surface().muted, _$p));
184052
184354
  return _el$14;
184053
184355
  })() : _$createComponent10(PokecodeActionButton, {
184054
184356
  hovered: hoveredTravel,
@@ -184058,9 +184360,21 @@ function LocationProgress(properties) {
184058
184360
  onActivate: travelToUnlockedLocation,
184059
184361
  onHover: () => setHoveredTravel(true),
184060
184362
  onLeave: () => setHoveredTravel(false),
184363
+ get theme() {
184364
+ return properties.theme;
184365
+ },
184061
184366
  tone: "success"
184062
184367
  });
184063
184368
  })(), null);
184369
+ _$effect9((_p$) => {
184370
+ var _v$8 = surface().text, _v$9 = surface().muted;
184371
+ _v$8 !== _p$.e && (_p$.e = _$setProp9(_el$11, "fg", _v$8, _p$.e));
184372
+ _v$9 !== _p$.t && (_p$.t = _$setProp9(_el$13, "fg", _v$9, _p$.t));
184373
+ return _p$;
184374
+ }, {
184375
+ e: undefined,
184376
+ t: undefined
184377
+ });
184064
184378
  return _el$10;
184065
184379
  })();
184066
184380
  }
@@ -184077,6 +184391,12 @@ function PartyGrid(properties) {
184077
184391
  get resolveSprite() {
184078
184392
  return properties.resolveSprite;
184079
184393
  },
184394
+ get imageProtocol() {
184395
+ return properties.imageProtocol;
184396
+ },
184397
+ get theme() {
184398
+ return properties.theme;
184399
+ },
184080
184400
  slots: () => occupiedSlots().slice(0, 2)
184081
184401
  }), null);
184082
184402
  _$insert9(_el$15, _$createComponent10(PartyRow, {
@@ -184086,6 +184406,12 @@ function PartyGrid(properties) {
184086
184406
  get resolveSprite() {
184087
184407
  return properties.resolveSprite;
184088
184408
  },
184409
+ get imageProtocol() {
184410
+ return properties.imageProtocol;
184411
+ },
184412
+ get theme() {
184413
+ return properties.theme;
184414
+ },
184089
184415
  slots: () => occupiedSlots().slice(2, 4)
184090
184416
  }), null);
184091
184417
  _$insert9(_el$15, _$createComponent10(PartyRow, {
@@ -184095,12 +184421,19 @@ function PartyGrid(properties) {
184095
184421
  get resolveSprite() {
184096
184422
  return properties.resolveSprite;
184097
184423
  },
184424
+ get imageProtocol() {
184425
+ return properties.imageProtocol;
184426
+ },
184427
+ get theme() {
184428
+ return properties.theme;
184429
+ },
184098
184430
  slots: () => occupiedSlots().slice(4, 6)
184099
184431
  }), null);
184100
184432
  return _el$15;
184101
184433
  })();
184102
184434
  }
184103
184435
  function PartyRow(properties) {
184436
+ const surface = () => properties.theme?.() ?? fallbackPokecodeTheme.current;
184104
184437
  return (() => {
184105
184438
  var _el$16 = _$createElement9("box");
184106
184439
  _$setProp9(_el$16, "flexDirection", "row");
@@ -184120,6 +184453,10 @@ function PartyRow(properties) {
184120
184453
  get resolve() {
184121
184454
  return properties.resolveSprite;
184122
184455
  },
184456
+ get protocol() {
184457
+ return properties.imageProtocol;
184458
+ },
184459
+ theme: surface,
184123
184460
  get shiny() {
184124
184461
  return slot.pokemon.shiny;
184125
184462
  },
@@ -184132,10 +184469,12 @@ function PartyRow(properties) {
184132
184469
  }), (() => {
184133
184470
  var _el$18 = _$createElement9("text");
184134
184471
  _$insert9(_el$18, () => `${slot.pokemon.name} ${slot.pokemon.gender === "male" ? "\u2642" : slot.pokemon.gender === "female" ? "\u2640" : "\u2014"}`);
184472
+ _$effect9((_$p) => _$setProp9(_el$18, "fg", surface().text, _$p));
184135
184473
  return _el$18;
184136
184474
  })(), (() => {
184137
184475
  var _el$19 = _$createElement9("text");
184138
184476
  _$insert9(_el$19, () => `Lv.${slot.pokemon.level}`);
184477
+ _$effect9((_$p) => _$setProp9(_el$19, "fg", surface().muted, _$p));
184139
184478
  return _el$19;
184140
184479
  })()];
184141
184480
  })());
@@ -184156,9 +184495,7 @@ function registerPokemonSidebar(dependencies) {
184156
184495
  _$setProp10(_el$, "paddingTop", 1);
184157
184496
  _$setProp10(_el$, "gap", 1);
184158
184497
  _$insert10(_el$, _$createComponent11(SidebarTitle, {
184159
- get color() {
184160
- return dependencies.theme.base;
184161
- },
184498
+ color: () => dependencies.theme().current.text,
184162
184499
  get title() {
184163
184500
  return copy().title;
184164
184501
  }
@@ -184200,9 +184537,6 @@ function registerPokemonSidebar(dependencies) {
184200
184537
  get hoverStarter() {
184201
184538
  return dependencies.setHoveredStarter;
184202
184539
  },
184203
- get mutedColor() {
184204
- return dependencies.theme.muted;
184205
- },
184206
184540
  get onChooseStarter() {
184207
184541
  return dependencies.actions.chooseStarter;
184208
184542
  },
@@ -184224,11 +184558,14 @@ function registerPokemonSidebar(dependencies) {
184224
184558
  get resolveSprite() {
184225
184559
  return dependencies.resolveSprite;
184226
184560
  },
184561
+ get imageProtocol() {
184562
+ return dependencies.imageProtocol;
184563
+ },
184227
184564
  get setHoveredEncounterAction() {
184228
184565
  return dependencies.setHoveredEncounterAction;
184229
184566
  },
184230
- get starterHoverBackground() {
184231
- return dependencies.theme.muted;
184567
+ get theme() {
184568
+ return dependencies.theme;
184232
184569
  },
184233
184570
  get state() {
184234
184571
  return dependencies.state;
@@ -184272,6 +184609,7 @@ function createTuiCleanup(dependencies) {
184272
184609
  };
184273
184610
  runSynchronousDisposer(dependencies.unsubscribe);
184274
184611
  runSynchronousDisposer(dependencies.unregisterSlot);
184612
+ runSynchronousDisposer(dependencies.disposeImageProtocol);
184275
184613
  const finish = () => {
184276
184614
  if (failures.length === 1)
184277
184615
  throw failures[0];
@@ -184311,7 +184649,7 @@ function createTuiCleanup(dependencies) {
184311
184649
  }
184312
184650
 
184313
184651
  // src/adapters/opencode/tui/state/coordinator.ts
184314
- import { createSignal as createSignal8 } from "solid-js";
184652
+ import { createSignal as createSignal9 } from "solid-js";
184315
184653
  function initialTuiState() {
184316
184654
  return gameStateSchema.parse({
184317
184655
  phase: "onboarding",
@@ -184324,7 +184662,7 @@ function initialTuiState() {
184324
184662
  });
184325
184663
  }
184326
184664
  function createTuiStateCoordinator(initial, notify) {
184327
- const [state, setState] = createSignal8(initial);
184665
+ const [state, setState] = createSignal9(initial);
184328
184666
  let disposed = false;
184329
184667
  return {
184330
184668
  state,
@@ -184373,11 +184711,12 @@ import { insert as _$insert11 } from "@opentui/solid";
184373
184711
  import { setProp as _$setProp11 } from "@opentui/solid";
184374
184712
  import { createElement as _$createElement11 } from "@opentui/solid";
184375
184713
  import { useKeyboard as useKeyboard3 } from "@opentui/solid";
184376
- import { createSignal as createSignal9, For as For5, Show as Show6 } from "solid-js";
184714
+ import { createSignal as createSignal10, For as For5, Show as Show6 } from "solid-js";
184377
184715
  function LocationTravelDialog(properties) {
184716
+ const surface = () => properties.theme?.().dialog ?? fallbackPokecodeTheme.dialog;
184378
184717
  const copy = () => uiCopy(properties.language);
184379
184718
  const initialLocationId = properties.locations.some((location) => location.id === properties.currentLocationId) ? properties.currentLocationId : properties.locations[0]?.id ?? "";
184380
- const [selectedLocationId, setSelectedLocationId] = createSignal9(initialLocationId);
184719
+ const [selectedLocationId, setSelectedLocationId] = createSignal10(initialLocationId);
184381
184720
  let locationsScrollbox;
184382
184721
  let pokemonScrollbox;
184383
184722
  const selectedLocation = () => properties.locations.find((location) => location.id === selectedLocationId());
@@ -184441,9 +184780,7 @@ function LocationTravelDialog(properties) {
184441
184780
  _$insertNode10(_el$, _el$2);
184442
184781
  _$insertNode10(_el$, _el$3);
184443
184782
  _$insertNode10(_el$, _el$8);
184444
- _$setProp11(_el$, "backgroundColor", "#111827");
184445
184783
  _$setProp11(_el$, "border", true);
184446
- _$setProp11(_el$, "borderColor", "#4b5563");
184447
184784
  _$setProp11(_el$, "borderStyle", "rounded");
184448
184785
  _$setProp11(_el$, "flexDirection", "column");
184449
184786
  _$setProp11(_el$, "gap", 1);
@@ -184455,7 +184792,6 @@ function LocationTravelDialog(properties) {
184455
184792
  _$insert11(_el$2, () => copy().locationsDialog);
184456
184793
  _$insertNode10(_el$3, _el$4);
184457
184794
  _$insertNode10(_el$3, _el$5);
184458
- _$setProp11(_el$3, "backgroundColor", "#111827");
184459
184795
  _$setProp11(_el$3, "flexDirection", "row");
184460
184796
  _$setProp11(_el$3, "flexGrow", 1);
184461
184797
  _$setProp11(_el$3, "gap", 1);
@@ -184464,7 +184800,6 @@ function LocationTravelDialog(properties) {
184464
184800
  _$use4((renderable) => {
184465
184801
  locationsScrollbox = renderable;
184466
184802
  }, _el$4);
184467
- _$setProp11(_el$4, "backgroundColor", "#111827");
184468
184803
  _$setProp11(_el$4, "contentOptions", {
184469
184804
  flexDirection: "column"
184470
184805
  });
@@ -184492,6 +184827,7 @@ function LocationTravelDialog(properties) {
184492
184827
  var _el$0 = _$createElement11("text");
184493
184828
  _$setProp11(_el$0, "attributes", bold);
184494
184829
  _$insert11(_el$0, () => region.name);
184830
+ _$effect11((_$p) => _$setProp11(_el$0, "fg", surface().accent, _$p));
184495
184831
  return _el$0;
184496
184832
  }
184497
184833
  }), null);
@@ -184509,9 +184845,9 @@ function LocationTravelDialog(properties) {
184509
184845
  _$setProp11(_el$1, "onMouseUp", () => selectLocation(location.id));
184510
184846
  _$insert11(_el$10, () => `${selectedLocationId() === location.id ? "\u203A " : " "}${location.name}`);
184511
184847
  _$effect11((_p$) => {
184512
- var _v$ = `travel-location-${location.id}`, _v$2 = selectedLocationId() === location.id ? "#22c55e" : "#d1d5db";
184513
- _v$ !== _p$.e && (_p$.e = _$setProp11(_el$1, "id", _v$, _p$.e));
184514
- _v$2 !== _p$.t && (_p$.t = _$setProp11(_el$10, "fg", _v$2, _p$.t));
184848
+ var _v$9 = `travel-location-${location.id}`, _v$0 = selectedLocationId() === location.id ? surface().accent : surface().text;
184849
+ _v$9 !== _p$.e && (_p$.e = _$setProp11(_el$1, "id", _v$9, _p$.e));
184850
+ _v$0 !== _p$.t && (_p$.t = _$setProp11(_el$10, "fg", _v$0, _p$.t));
184515
184851
  return _p$;
184516
184852
  }, {
184517
184853
  e: undefined,
@@ -184525,7 +184861,6 @@ function LocationTravelDialog(properties) {
184525
184861
  }));
184526
184862
  _$insertNode10(_el$5, _el$6);
184527
184863
  _$insertNode10(_el$5, _el$7);
184528
- _$setProp11(_el$5, "backgroundColor", "#111827");
184529
184864
  _$setProp11(_el$5, "flexDirection", "column");
184530
184865
  _$setProp11(_el$5, "flexGrow", 1);
184531
184866
  _$setProp11(_el$5, "minWidth", 0);
@@ -184536,7 +184871,6 @@ function LocationTravelDialog(properties) {
184536
184871
  _$use4((renderable) => {
184537
184872
  pokemonScrollbox = renderable;
184538
184873
  }, _el$7);
184539
- _$setProp11(_el$7, "backgroundColor", "#111827");
184540
184874
  _$setProp11(_el$7, "contentOptions", {
184541
184875
  flexDirection: "column"
184542
184876
  });
@@ -184557,6 +184891,7 @@ function LocationTravelDialog(properties) {
184557
184891
  return (() => {
184558
184892
  var _el$11 = _$createElement11("text");
184559
184893
  _$insert11(_el$11, () => copy().noLocationPokemon);
184894
+ _$effect11((_$p) => _$setProp11(_el$11, "fg", surface().muted, _$p));
184560
184895
  return _el$11;
184561
184896
  })();
184562
184897
  },
@@ -184577,7 +184912,6 @@ function LocationTravelDialog(properties) {
184577
184912
  _$insertNode10(_el$13, _el$14);
184578
184913
  _$insertNode10(_el$13, _el$15);
184579
184914
  _$setProp11(_el$13, "alignItems", "center");
184580
- _$setProp11(_el$13, "backgroundColor", "#111827");
184581
184915
  _$setProp11(_el$13, "flexBasis", 0);
184582
184916
  _$setProp11(_el$13, "flexDirection", "column");
184583
184917
  _$setProp11(_el$13, "flexGrow", 1);
@@ -184597,6 +184931,10 @@ function LocationTravelDialog(properties) {
184597
184931
  get resolve() {
184598
184932
  return properties.resolveSprite;
184599
184933
  },
184934
+ get protocol() {
184935
+ return properties.imageProtocol;
184936
+ },
184937
+ theme: surface,
184600
184938
  shiny: false,
184601
184939
  gender: "genderless",
184602
184940
  get speciesId() {
@@ -184616,7 +184954,17 @@ function LocationTravelDialog(properties) {
184616
184954
  var _c$ = _$memo7(() => pokemon.status === "unknown");
184617
184955
  return () => _c$() ? "???" : pokemon.name;
184618
184956
  })());
184619
- _$effect11((_$p) => _$setProp11(_el$16, "fg", pokemon.status === "caught" ? "#22c55e" : pokemon.status === "seen" ? "#9ca3af" : "#ffffff", _$p));
184957
+ _$effect11((_p$) => {
184958
+ var _v$1 = surface().background, _v$10 = pokemon.status === "caught" ? surface().success : pokemon.status === "seen" ? surface().muted : surface().text, _v$11 = pokemon.status === "unknown" ? surface().muted : surface().text;
184959
+ _v$1 !== _p$.e && (_p$.e = _$setProp11(_el$13, "backgroundColor", _v$1, _p$.e));
184960
+ _v$10 !== _p$.t && (_p$.t = _$setProp11(_el$16, "fg", _v$10, _p$.t));
184961
+ _v$11 !== _p$.a && (_p$.a = _$setProp11(_el$17, "fg", _v$11, _p$.a));
184962
+ return _p$;
184963
+ }, {
184964
+ e: undefined,
184965
+ t: undefined,
184966
+ a: undefined
184967
+ });
184620
184968
  return _el$13;
184621
184969
  })()
184622
184970
  }));
@@ -184636,6 +184984,7 @@ function LocationTravelDialog(properties) {
184636
184984
  onActivate: async () => properties.onClose(),
184637
184985
  onHover: () => {},
184638
184986
  onLeave: () => {},
184987
+ theme: surface,
184639
184988
  tone: "secondary"
184640
184989
  }), null);
184641
184990
  _$insert11(_el$8, _$createComponent12(PokecodeActionButton, {
@@ -184646,8 +184995,30 @@ function LocationTravelDialog(properties) {
184646
184995
  onActivate: async () => travel(),
184647
184996
  onHover: () => {},
184648
184997
  onLeave: () => {},
184998
+ theme: surface,
184649
184999
  tone: "success"
184650
185000
  }), null);
185001
+ _$effect11((_p$) => {
185002
+ var _v$ = surface().background, _v$2 = surface().border, _v$3 = surface().accent, _v$4 = surface().background, _v$5 = surface().background, _v$6 = surface().background, _v$7 = surface().accent, _v$8 = surface().background;
185003
+ _v$ !== _p$.e && (_p$.e = _$setProp11(_el$, "backgroundColor", _v$, _p$.e));
185004
+ _v$2 !== _p$.t && (_p$.t = _$setProp11(_el$, "borderColor", _v$2, _p$.t));
185005
+ _v$3 !== _p$.a && (_p$.a = _$setProp11(_el$2, "fg", _v$3, _p$.a));
185006
+ _v$4 !== _p$.o && (_p$.o = _$setProp11(_el$3, "backgroundColor", _v$4, _p$.o));
185007
+ _v$5 !== _p$.i && (_p$.i = _$setProp11(_el$4, "backgroundColor", _v$5, _p$.i));
185008
+ _v$6 !== _p$.n && (_p$.n = _$setProp11(_el$5, "backgroundColor", _v$6, _p$.n));
185009
+ _v$7 !== _p$.s && (_p$.s = _$setProp11(_el$6, "fg", _v$7, _p$.s));
185010
+ _v$8 !== _p$.h && (_p$.h = _$setProp11(_el$7, "backgroundColor", _v$8, _p$.h));
185011
+ return _p$;
185012
+ }, {
185013
+ e: undefined,
185014
+ t: undefined,
185015
+ a: undefined,
185016
+ o: undefined,
185017
+ i: undefined,
185018
+ n: undefined,
185019
+ s: undefined,
185020
+ h: undefined
185021
+ });
184651
185022
  return _el$;
184652
185023
  })();
184653
185024
  }
@@ -184719,6 +185090,12 @@ function createLocationTravelAction(dependencies) {
184719
185090
  },
184720
185091
  get resolveSprite() {
184721
185092
  return dependencies.resolveSprite;
185093
+ },
185094
+ get imageProtocol() {
185095
+ return dependencies.imageProtocol;
185096
+ },
185097
+ get theme() {
185098
+ return dependencies.theme;
184722
185099
  }
184723
185100
  })));
184724
185101
  dependencies.dialog.set({
@@ -184745,20 +185122,24 @@ function createPokemonTuiPlugin(dependencies = defaultDependencies) {
184745
185122
  let clipboard;
184746
185123
  let unsubscribe;
184747
185124
  let unregisterSlot;
185125
+ let disposeImageProtocol;
184748
185126
  const cleanup = createTuiCleanup({
184749
185127
  state,
184750
185128
  unsubscribe: () => unsubscribe?.(),
184751
185129
  unregisterSlot: () => unregisterSlot?.(),
184752
- disposeClipboard: () => clipboard?.dispose()
185130
+ disposeClipboard: () => clipboard?.dispose(),
185131
+ disposeImageProtocol: () => disposeImageProtocol?.()
184753
185132
  });
184754
185133
  try {
184755
185134
  const rpc = createPokemonTuiClient(context.client.rpc(PokecodeRpc));
184756
185135
  clipboard = dependencies.createClipboard(context);
185136
+ const imageProtocol = createImageProtocolState(context.renderer);
185137
+ disposeImageProtocol = imageProtocol.dispose;
184757
185138
  const initialStatus = await rpc.status({});
184758
185139
  state.initialize(initialStatus);
184759
185140
  unsubscribe = rpc.onStatusChanged(state.apply);
184760
- const [hoveredStarter, setHoveredStarter] = createSignal10(null);
184761
- const [hoveredEncounterAction, setHoveredEncounterAction] = createSignal10(null);
185141
+ const [hoveredStarter, setHoveredStarter] = createSignal11(null);
185142
+ const [hoveredEncounterAction, setHoveredEncounterAction] = createSignal11(null);
184762
185143
  const resolveSprite = (speciesId, shiny, gender) => rpc.sprite({
184763
185144
  speciesId,
184764
185145
  shiny,
@@ -184769,11 +185150,14 @@ function createPokemonTuiPlugin(dependencies = defaultDependencies) {
184769
185150
  state,
184770
185151
  toast: (options) => context.ui.toast.show(options)
184771
185152
  });
185153
+ const theme = () => toPokecodeTheme(context.theme);
184772
185154
  const chooseLocation = createLocationTravelAction({
184773
185155
  rpc,
184774
185156
  state,
184775
185157
  dialog: context.ui.dialog,
184776
185158
  resolveSprite,
185159
+ imageProtocol: imageProtocol.protocol,
185160
+ theme,
184777
185161
  travelToLocation: sidebarActions.travelToLocation
184778
185162
  });
184779
185163
  const showDex = createDexAction({
@@ -184785,11 +185169,9 @@ function createPokemonTuiPlugin(dependencies = defaultDependencies) {
184785
185169
  rpc,
184786
185170
  state,
184787
185171
  dialog: context.ui.dialog,
184788
- theme: {
184789
- base: () => context.theme.text.base,
184790
- muted: () => context.theme.text.muted
184791
- },
184792
- resolveSprite
185172
+ theme,
185173
+ resolveSprite,
185174
+ imageProtocol: imageProtocol.protocol
184793
185175
  });
184794
185176
  const exportTeam = createExportAction({
184795
185177
  rpc,
@@ -184800,10 +185182,7 @@ function createPokemonTuiPlugin(dependencies = defaultDependencies) {
184800
185182
  unregisterSlot = (dependencies.registerSidebar ?? registerPokemonSidebar)({
184801
185183
  slot: context.ui.slot,
184802
185184
  state: state.state,
184803
- theme: {
184804
- base: () => context.theme.text.base,
184805
- muted: () => context.theme.text.muted
184806
- },
185185
+ theme,
184807
185186
  hoveredStarter,
184808
185187
  setHoveredStarter,
184809
185188
  hoveredEncounterAction,
@@ -184813,7 +185192,8 @@ function createPokemonTuiPlugin(dependencies = defaultDependencies) {
184813
185192
  showDex,
184814
185193
  chooseParty,
184815
185194
  exportTeam,
184816
- resolveSprite
185195
+ resolveSprite,
185196
+ imageProtocol: imageProtocol.protocol
184817
185197
  });
184818
185198
  return cleanup;
184819
185199
  } catch (error) {