penguin-harness-frontend

Featured

Use when changing the PenguinHarness Web App (`packages/web`) — adding or restyling any UI, picking a status colour, adding an icon, laying out a row or a form field, writing user-facing copy, or building a popup. Covers the semantic tone tokens, the icon size/stroke/gap scale, the semantic-versus-formatting rule for explanatory text, the two-dictionary i18n contract, and the portal-panel pattern with its Esc and scroll caveats.

Web & Frontend 2,099 stars 222 forks Updated today Apache-2.0

Install

View on GitHub

Quality Score: 93/100

Stars 20%
100
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Web App frontend conventions `packages/web` is React 19 + Vite + Tailwind CSS 4, with no `cn`/`clsx`, no `tailwind-merge`, and no variants library. Classes are composed with template literals, and a component's variants are a `Record<Key, string>` next to it (`button.tsx`'s `variantClass`, `input.tsx`'s `sizeClass`). Match that shape; do not introduce a styling dependency. This file records the decisions that already exist so they are not re-litigated per PR. Read `penguin-harness-dev` for the repo-wide contract (verification chain, changelog, two-repo layout). ## Status colour: pick a tone, never a palette class `src/lib/tone.ts` is the only place a status colour is spelled. Five tones, chosen by **meaning**: | tone | meaning | when | | --- | --- | --- | | `busy` | executing right now | spinners, live titles, running dots | | `attention` | unfinished — waiting on time, a queue, or the user | hourglass glyphs, pending-approval marks, near-limit rings, warning strips | | `success` | finished well, connected, healthy | completed badges, connected servers | | `danger` | failed, destructive, over a limit | errors, delete affordances | | `muted` | settled; the mark should recede | a done row's glyph | Four maps, by the shape of the thing being coloured: `toneInk` (a glyph or a line of status text), `toneSurface` (a tinted pill with its own text — badges), `toneDot` (the 6px state dots), `toneStrip` (a bordered notice that owns a row). Rules: - **Two states may share a to...

Details

Author
Prism-Shadow
Repository
Prism-Shadow/penguin-harness
Created
1 months ago
Last Updated
today
Language
TypeScript
License
Apache-2.0

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category