Simplify the import dialog copy; spell it "color"

- The save-import dialog body is now just "N seen · N caught in this
  save." — the button labels carry the merge/replace meaning.
- "colour" → "color" throughout (the visible "Accent color" field, plus
  comments and README for consistency).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Ve7HLspzeG2xDPtJQ8vmu
This commit is contained in:
chris 2026-09-10 10:01:54 -04:00
parent 840031c48a
commit d275117569
6 changed files with 12 additions and 14 deletions

View File

@ -92,19 +92,19 @@ Working app with a type-themed UI:
snapshot; a pill switcher on the detail page rebuilds types / stats /
matchups / abilities / learnset / artwork for the chosen form. Purely
cosmetic variants (Unown's 27 letters, Vivillon's 19 patterns, Furfrou
trims, seasonal Deerling/Sawsbuck, Flabébé line colours, Alcremie's 62
trims, seasonal Deerling/Sawsbuck, Flabébé line colors, Alcremie's 62
decorations, Pikachu caps — 278 across 50 species) get a separate compact
"Appearance" dropdown that only swaps the sprite. Cards show a "+N forms"
badge.
- **Detail** — type-gradient hero + tabbed sheet (About / Stats / Evolution /
Moves / Locations); coloured animated stat bars; defensive type matchups;
Moves / Locations); colored animated stat bars; defensive type matchups;
evolution chain re-parented to the selected game's generation; learnset with
per-move power/type/accuracy/PP/effect (era-accurate via `past_values`,
incl. pre-Gen-4 physical/special-by-type), the TM/HM group ordered by
TM number for the selected game; wild encounter locations.
- **Game-aware** — abilities gated to Gen 3+ (hidden to Gen 5+); type chart
applies Gen 1 / pre-Gen 6 rules.
- **Games** — overlay picker with stylised version-colour cover tiles,
- **Games** — overlay picker with stylised version-color cover tiles,
sub-dex switch, and an "All games" (National, no gen limits) option.
- **Search** — tabbed lookup: Pokémon, Moves, Items and Abilities, all
browsable offline from the snapshot. Moves filter by type / damage class
@ -133,7 +133,7 @@ Working app with a type-themed UI:
chart (tap a type for its offensive + defensive breakdown; both
gen-aware).
- **Settings** — theme (System / Light / Dark / Black / Sepia) + accent
colour, text size, an in-app reduce-motion override (on top of the OS
color, text size, an in-app reduce-motion override (on top of the OS
preference, which is always respected too), sprite style, haptic
feedback on catch (Vibration API), which screen to land on at launch,
JSON export/import.

View File

@ -10,7 +10,7 @@ import { prettify } from '../data/pokedex-resolver.js';
/**
* One Pokémon in the dex feed. Tinted by its primary type: a soft top-down
* gradient, a type-coloured spotlight behind an oversized sprite that lifts
* gradient, a type-colored spotlight behind an oversized sprite that lifts
* above the card, a number chip, and a big ghost number in the corner.
*/
export function Card(species, number, { spriteStyle = 'official', versionGroup, gen = 9, boxed = false, metric = null } = {}) {

View File

@ -1,7 +1,7 @@
/**
* Signature colours for each game, used to render a stylised "cover" tile in
* Signature colors for each game, used to render a stylised "cover" tile in
* the game picker (real box art is Nintendo's and not in the API). Two
* colours = the paired versions; games without a listed entry fall back to
* colors = the paired versions; games without a listed entry fall back to
* a per-generation hue.
*/
const GAME = {

View File

@ -1,5 +1,5 @@
// Resolve a Pokémon type to its hex colour by reading the --type-* CSS
// custom properties once and memoising. Type colours don't change between
// Resolve a Pokémon type to its hex color by reading the --type-* CSS
// custom properties once and memoising. Type colors do not change between
// light and dark, so the cache is safe for the session.
const TYPES = [
'normal', 'fire', 'water', 'electric', 'grass', 'ice', 'fighting', 'poison',

View File

@ -647,7 +647,7 @@
text-transform: capitalize;
}
/* Cover tiles: a clean split of the two version colours, no gloss. */
/* Cover tiles: a clean split of the two version colors, no gloss. */
.gamecard--cover {
position: relative;
overflow: hidden;

View File

@ -51,7 +51,7 @@ export async function SettingsView() {
}),
),
);
const accentField = el('div', { class: 'field' }, el('span', {}, 'Accent colour'), accentRow);
const accentField = el('div', { class: 'field' }, el('span', {}, 'Accent color'), accentRow);
const fontSizeField = selectField('Text size', st.fontScale || 'default', [
['small', 'Small'],
@ -145,9 +145,7 @@ export async function SettingsView() {
const who = dex.trainer || dex.game;
const choice = await chooseDialog({
title: `${dex.game}${dex.trainer ? ` · ${dex.trainer}` : ''}`,
body: `${dex.seen.length} seen · ${dex.caught.length} caught in this save (${dex.caught.length} of ${
[151, 251, 386][dex.gen - 1]
} for the game). Your caught record is shared across every game imported species also count toward the National Dex and any other game they appear in.`,
body: `${dex.seen.length} seen · ${dex.caught.length} caught in this save.`,
choices: [
{ key: 'merge', label: 'Add to my Pokédex' },
{ key: 'replace', label: 'Replace mine with this', class: 'button--danger' },