Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .github/assets/rarity-ladder.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/types.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 8 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,10 +154,15 @@ a line and make the site address a repository as if it were you.

## Art

Every frame, type icon and energy icon is original. **No assets from The Pokémon Company, no fan
icons** from the reference repositories — not even as a temporary placeholder. Frames, foil and
metals are generated by `npm run assets`; the 18 type icons are build inputs in
Frames, foils, metals and the coloured discs of the type icons are original. **No assets from The
Pokémon Company, no fan icons** from the reference repositories — not even as a temporary
placeholder. The one third-party art in the project is the glyph inside each type disc, which comes
from [Lucide](https://lucide.dev) under the ISC licence and is credited in the README.

Frames, foil and metals are generated by `npm run assets`; the 18 type icons are build inputs in
`scripts/assets/types/`, and the palette in `palette.json` is extracted from them, not the reverse.
That direction is the rule: a new icon set changes the frames with it, so replacing the icons means
re-extracting the palette and re-running `npm run assets`, never hand-editing a hex.

## Commits

Expand Down
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ A static image URL, no login, embeddable in any README, that keeps itself up to

<img src=".github/assets/types.png" alt="The 18 energy types: normal, fire, water, grass, electric, ice, fighting, poison, ground, flying, psychic, bug, rock, ghost, dragon, dark, steel and fairy" width="760">

<sub>Eighteen types, one per dominant language. Every icon here is original art — see <a href="docs/assets-brief.md">the brief</a>.</sub>
<sub>Eighteen types, one per dominant language. The discs are original art; the glyphs are <a href="https://lucide.dev">Lucide</a> (ISC) — see <a href="docs/assets-brief.md">the brief</a>.</sub>

<br>

Expand Down Expand Up @@ -225,8 +225,11 @@ the card, render it and say in the PR what you saw.

## Copyright

No assets from The Pokémon Company, no fan icons from the reference repositories. All frame, type
and energy art in this project is original. See `docs/assets-brief.md`.
No assets from The Pokémon Company, no fan icons from the reference repositories. The frames, the
foils, the metals and the coloured discs of the type icons are original. The glyph inside each disc
comes from [Lucide](https://lucide.dev), used under the ISC licence — Copyright (c) for portions of
Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT); all other copyright (c) for Lucide
are held by Lucide Contributors 2022. See `docs/assets-brief.md`.

The tier names `Illustration Rare`, `Special Illustration Rare` and `Hyper Rare` are product
terminology from The Pokémon Company, adopted here as TCG vocabulary. This is an open question —
Expand Down
4 changes: 2 additions & 2 deletions components/card/TypeIcon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export function TypeIcon({
size = 18,
}: {
element: Element;
/** Lado do disco em px. O SVG é quadrado (viewBox 256×256). */
/** Lado do disco em px. O SVG é quadrado (viewBox 64×64). */
size?: number;
}) {
return (
Expand All @@ -29,7 +29,7 @@ export function TypeIcon({
aria-hidden="true"
width={size}
height={size}
// `loading="eager"`: são 18 arquivos de ~1KB e no máximo três aparecem por
// `loading="eager"`: são 18 arquivos de ~2KB e no máximo três aparecem por
// página. Adiar carrega depois do primeiro quadro e o disco aparece
// pulando, que é pior do que o custo de carregar junto.
loading="eager"
Expand Down
19 changes: 19 additions & 0 deletions docs/assets-brief.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,25 @@ compor na carta e uma cópia do SVG em `public/assets/types/` para a interface w
usar sem rasterizar. A paleta de `palette.json` foi extraída deles, e não o
contrário.

### Revisão v2

A segunda leva trocou os 18 ícones. O disco continua original — cor chapada,
realce radial no alto à esquerda, sombra vertical e um aro branco a 22% —, mas o
**glifo deixou de ser desenhado à mão e passou a vir do [Lucide](https://lucide.dev)**,
sob licença ISC. É a única arte de terceiros no projeto, e o crédito está no
README junto do aviso de copyright.

Duas consequências que valem registro:

- Os SVGs vêm em `width`/`viewBox` de **64**, não de 256 como a v1. O PNG de
energia não herda mais esse número: `build-assets.mjs` fixa o lado em
`ENERGY_PX`, senão trocar a arte mudaria em silêncio a resolução do que o
Satori compõe.
- Os discos da v2 são bem mais saturados que os da v1 (`fire` foi de `#E4613E`
para `#FF3B14`). Como `palette.json` é extraída do disco, **as molduras
mudaram junto** — a regra de fonte única foi mantida, e é ela que fez a carta
inteira acompanhar a troca dos ícones.

## Caminho escolhido — a decidir

O RFC seção 8 deixou três caminhos abertos e **recomenda começar pelo C**:
Expand Down
2 changes: 1 addition & 1 deletion docs/design-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Dark-only. Sem modo claro.

São 18, não os 7 elementos da RFC 4.4 — ver o adendo naquela seção.

`normal #828282` · `fire #E4613E` · `water #3099E1` · `grass #439837` · `electric #DFBC28` · `ice #47C8C8` · `fighting #E49021` · `poison #9354CB` · `ground #A4733C` · `flying #74AAD0` · `psychic #E96C8C` · `bug #9F9F28` · `rock #A9A481` · `ghost #6F4570` · `dragon #576FBC` · `dark #4F4747` · `steel #74B0CB` · `fairy #E18CE1`
`normal #8FA0B3` · `fire #FF3B14` · `water #1E90FF` · `grass #14C445` · `electric #FFCC00` · `ice #17DCDC` · `fighting #FF6A00` · `poison #A733FF` · `ground #E08A2E` · `flying #35BFF5` · `psychic #FF2E7E` · `bug #B8E000` · `rock #D4A72C` · `ghost #8A45E8` · `dragon #2E5BFF` · `dark #4A3846` · `steel #4FB2E0` · `fairy #FF7ED4`

Nenhuma dessas cores foi escolhida à mão: cada `base` foi **extraída do disco
colorido do ícone** do tipo em `scripts/assets/types/`. É o que garante que o
Expand Down
36 changes: 18 additions & 18 deletions lib/cards/palette.json
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
{
"_comment": "Cor de identidade de cada tipo. Fonte única — lida pelo gerador de arte (scripts/) e pelo runtime (lib/cards/elements.ts). O `base` de cada tipo foi EXTRAÍDO do disco colorido do respectivo ícone em scripts/assets/types/, não escolhido à mão: assim o ícone e a moldura nunca divergem. `dark`, `light` e `ink` são derivados do base por mistura fixa (45% preto, 78% branco, 80% preto).",

"normal": { "base": "#828282", "dark": "#484848", "light": "#E4E4E4", "ink": "#1A1A1A" },
"fire": { "base": "#E4613E", "dark": "#7D3522", "light": "#F9DCD5", "ink": "#2E130C" },
"water": { "base": "#3099E1", "dark": "#1A547C", "light": "#D1E9F8", "ink": "#0A1F2D" },
"grass": { "base": "#439837", "dark": "#25541E", "light": "#D6E8D3", "ink": "#0D1E0B" },
"electric": { "base": "#DFBC28", "dark": "#7B6716", "light": "#F8F0D0", "ink": "#2D2608" },
"ice": { "base": "#47C8C8", "dark": "#276E6E", "light": "#D7F3F3", "ink": "#0E2828" },
"fighting": { "base": "#E49021", "dark": "#7D4F12", "light": "#F9E7CE", "ink": "#2E1D07" },
"poison": { "base": "#9354CB", "dark": "#512E70", "light": "#E7D9F4", "ink": "#1D1129" },
"ground": { "base": "#A4733C", "dark": "#5A3F21", "light": "#EBE0D4", "ink": "#21170C" },
"flying": { "base": "#74AAD0", "dark": "#405E72", "light": "#E0ECF5", "ink": "#17222A" },
"psychic": { "base": "#E96C8C", "dark": "#803B4D", "light": "#FADFE6", "ink": "#2F161C" },
"bug": { "base": "#9F9F28", "dark": "#575716", "light": "#EAEAD0", "ink": "#202008" },
"rock": { "base": "#A9A481", "dark": "#5D5A47", "light": "#ECEBE3", "ink": "#22211A" },
"ghost": { "base": "#6F4570", "dark": "#3D263E", "light": "#DFD6E0", "ink": "#160E16" },
"dragon": { "base": "#576FBC", "dark": "#303D67", "light": "#DADFF0", "ink": "#111626" },
"dark": { "base": "#4F4747", "dark": "#2B2727", "light": "#D8D7D7", "ink": "#100E0E" },
"steel": { "base": "#74B0CB", "dark": "#406170", "light": "#E0EEF4", "ink": "#172329" },
"fairy": { "base": "#E18CE1", "dark": "#7C4D7C", "light": "#F8E6F8", "ink": "#2D1C2D" }
"normal": { "base": "#8FA0B3", "dark": "#4F5862", "light": "#E6EAEE", "ink": "#1D2024" },
"fire": { "base": "#FF3B14", "dark": "#8C200B", "light": "#FFD4CB", "ink": "#330C04" },
"water": { "base": "#1E90FF", "dark": "#114F8C", "light": "#CEE7FF", "ink": "#061D33" },
"grass": { "base": "#14C445", "dark": "#0B6C26", "light": "#CBF2D6", "ink": "#04270E" },
"electric": { "base": "#FFCC00", "dark": "#8C7000", "light": "#FFF4C7", "ink": "#332900" },
"ice": { "base": "#17DCDC", "dark": "#0D7979", "light": "#CCF7F7", "ink": "#052C2C" },
"fighting": { "base": "#FF6A00", "dark": "#8C3A00", "light": "#FFDEC7", "ink": "#331500" },
"poison": { "base": "#A733FF", "dark": "#5C1C8C", "light": "#ECD2FF", "ink": "#210A33" },
"ground": { "base": "#E08A2E", "dark": "#7B4C19", "light": "#F8E5D1", "ink": "#2D1C09" },
"flying": { "base": "#35BFF5", "dark": "#1D6987", "light": "#D3F1FD", "ink": "#0B2631" },
"psychic": { "base": "#FF2E7E", "dark": "#8C1945", "light": "#FFD1E3", "ink": "#330919" },
"bug": { "base": "#B8E000", "dark": "#657B00", "light": "#EFF8C7", "ink": "#252D00" },
"rock": { "base": "#D4A72C", "dark": "#755C18", "light": "#F6ECD1", "ink": "#2A2109" },
"ghost": { "base": "#8A45E8", "dark": "#4C2680", "light": "#E5D6FA", "ink": "#1C0E2E" },
"dragon": { "base": "#2E5BFF", "dark": "#19328C", "light": "#D1DBFF", "ink": "#091233" },
"dark": { "base": "#4A3846", "dark": "#291F27", "light": "#D7D3D6", "ink": "#0F0B0E" },
"steel": { "base": "#4FB2E0", "dark": "#2B627B", "light": "#D8EEF8", "ink": "#10242D" },
"fairy": { "base": "#FF7ED4", "dark": "#8C4575", "light": "#FFE3F6", "ink": "#33192A" }
}
Binary file modified public/assets/energy/bug.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/dragon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/electric.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/fairy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/fighting.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/fire.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/flying.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/ghost.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/grass.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/ground.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/ice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/normal.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/poison.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/psychic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/rock.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/steel.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/energy/water.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/frames/bug.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/frames/dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/frames/dragon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/frames/electric.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/frames/fairy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/assets/frames/fighting.png
Binary file modified public/assets/frames/fire.png
Binary file modified public/assets/frames/flying.png
Binary file modified public/assets/frames/fullart-bug.png
Binary file modified public/assets/frames/fullart-dark.png
Binary file modified public/assets/frames/fullart-dragon.png
Binary file modified public/assets/frames/fullart-electric.png
Binary file modified public/assets/frames/fullart-fairy.png
Binary file modified public/assets/frames/fullart-fighting.png
Binary file modified public/assets/frames/fullart-fire.png
Binary file modified public/assets/frames/fullart-flying.png
Binary file modified public/assets/frames/fullart-ghost.png
Binary file modified public/assets/frames/fullart-grass.png
Binary file modified public/assets/frames/fullart-ground.png
Binary file modified public/assets/frames/fullart-ice.png
Binary file modified public/assets/frames/fullart-normal.png
Binary file modified public/assets/frames/fullart-poison.png
Binary file modified public/assets/frames/fullart-psychic.png
Binary file modified public/assets/frames/fullart-rock.png
Binary file modified public/assets/frames/fullart-steel.png
Binary file modified public/assets/frames/fullart-water.png
Binary file modified public/assets/frames/ghost.png
Binary file modified public/assets/frames/grass.png
Binary file modified public/assets/frames/ground.png
Binary file modified public/assets/frames/ice.png
Binary file modified public/assets/frames/normal.png
Binary file modified public/assets/frames/poison.png
Binary file modified public/assets/frames/psychic.png
Binary file modified public/assets/frames/rock.png
Binary file modified public/assets/frames/steel.png
Binary file modified public/assets/frames/water.png
34 changes: 17 additions & 17 deletions public/assets/types/bug.svg
31 changes: 17 additions & 14 deletions public/assets/types/dark.svg
34 changes: 17 additions & 17 deletions public/assets/types/dragon.svg
Loading
Loading