@usableapp/cardds 0.7.97 → 0.7.98

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.
package/docs/reference.md CHANGED
@@ -957,8 +957,8 @@ Rules:
957
957
  - **cardds does not pick the colours; it measures two things about them.** A theme's
958
958
  values are the project's call and the derivations are only starting points; any
959
959
  role can be set outright. What cardds checks is that the member can see each card
960
- ([`cardGrounds()`](#can-the-member-see-the-card) names a tone whose fill and edge both
961
- sit under 3:1 on its ground) and read what stands on it
960
+ ([`cardGrounds()`](#can-the-member-see-the-card) names a tone whose fill
961
+ sits under 3:1 on its ground)
962
962
  ([`inkGrounds()`](#ink-follows-its-ground) names a word or icon under 4.5:1 or 3:1).
963
963
  Both name the tokens to move.
964
964
  - The member's text-size setting is the same `--fs-base`, written on `<html>`
@@ -1024,10 +1024,9 @@ and with every card turned to each tone 1–5, about 27,000 pieces a pass, in `n
1024
1024
  ## Can the member see the card?
1025
1025
 
1026
1026
  A card is one boundary, and a boundary the member cannot see is no boundary (WCAG 2.2 SC 1.4.11, non-text contrast: 3:1 against what is
1027
- next to it). A card's boundary is its fill against the ground it stands on, or its edge (`--card-border`, or a finish's line).
1028
- In coloured mode the edge is `--on-surface-muted`, the ground's muted words, which a palette holds to AA on its surface; the wireframe's
1029
- is its black line. A light card on a light ground cannot reach 3:1 by its fill (a tone-1 card in a tone-1 sheet is 1:1), so the edge
1030
- carries it.
1027
+ next to it). A card stands apart from the ground it stands on by its FILL. In coloured mode and under every finish a card has no edge
1028
+ (`--card-border: transparent`; print and ink draw their own line as part of the finish); the wireframe keeps its black line. A card the
1029
+ member cannot see is answered by its fill or its ground, never by a border (Lh 2026-10-18).
1031
1030
 
1032
1031
  Your theme decides the colours, so run the check on your theme. `cardGrounds()` builds a card of each tone (1–5) on each ground a card
1033
1032
  stands on (the screen, a sheet's body, a `paper` sheet's body) where your theme is loaded, reads what the browser draws and returns one
@@ -1043,10 +1042,9 @@ expect(rows.filter((r) => !r.pass).map((r) => r.problem)).toEqual([]);
1043
1042
  ```
1044
1043
 
1045
1044
  A failing row names the tokens and the shortfall, for example
1046
- `tone 1 card on the screen: fill 1:1 (--card-1-bg #ffffff on --surface #ffffff), edge 1:1 (--card-border); one of them needs 3:1 — the fill is short by 2, or give --card-border a colour of 3:1 on #ffffff`.
1045
+ `tone 1 card on the screen: fill 1:1 (--card-1-bg #ffffff on --surface #ffffff); the fill needs 3:1 and is short by 2 — move --card-1-bg or --surface, never an edge`.
1047
1046
  It reports and changes nothing: which knob you move is your call. It runs in a browser on purpose: your theme's `var()` aliases,
1048
- `[data-palette]` blocks, finish and `color-mix()` are resolved by the same engine that draws the screen. A stock palette is held to the
1049
- same check in every finish (`tests/card-grounds.spec.js`).
1047
+ `[data-palette]` blocks, finish and `color-mix()` are resolved by the same engine that draws the screen.
1050
1048
 
1051
1049
  ## New palette
1052
1050
 
@@ -1080,7 +1078,7 @@ Four values, one attribute (`css/finish.css`; the header names each and its knob
1080
1078
  | `sticker` | a die-cut sticker: a white cut line, a short hard drop, a lone card leans (never one in a stack, a list or a feed), buttons with a bottom edge that press down | `--sticker-cut` (5px) · `--sticker-tilt` (0.8deg; `0deg` = straight) |
1081
1079
  | `ink` | a poster / comic print: a thick line in the surface's ink round every boundary and control, a hard offset in the same ink | `--ink-w` (2.5px) · `--ink-off` (5px) |
1082
1080
 
1083
- Under every finish the controls' wireframe border steps back (`--action-border`; ink puts its own line there) and the card keeps its edge (`--card-border`: lit's ring and sticker's cut do not reach 3:1 on a light ground, see [Can the member see the card?](#can-the-member-see-the-card)), a card in a closed stack's base stays flat, and the information inside a card stays flat — only a container or a control gets an edge. Colours are mixes of the roles, so a finish sits in any palette. The gallery's nav has a finish switch (key `f`); `Card · Finishes` shows the four side by side, `Home · Finish` a home under `print`.
1081
+ Under every finish the wireframe's two borders step back (`--card-border`, `--action-border`; ink puts its own line there), a card in a closed stack's base stays flat, and the information inside a card stays flat — only a container or a control gets an edge. Colours are mixes of the roles, so a finish sits in any palette. The gallery's nav has a finish switch (key `f`); `Card · Finishes` shows the four side by side, `Home · Finish` a home under `print`.
1084
1082
 
1085
1083
  ## Scale: everything is rem
1086
1084
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usableapp/cardds",
3
- "version": "0.7.97",
3
+ "version": "0.7.98",
4
4
  "license": "UNLICENSED",
5
5
  "type": "module",
6
6
  "description": "card-first mobile design system, React-first: the components in src/ are thin wrappers over the CSS contract (css/*.css stays the only truth); gallery/ shows every story live (npm run dev), tests/ measures the geometry.",