@usableapp/cardds 0.7.96 → 0.7.97

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/bin/cardds.mjs CHANGED
@@ -78,7 +78,7 @@ In the app's entry, once:
78
78
  import './theme.css'; // after cardds.css
79
79
 
80
80
  Start a screen from a template (Walkthrough · Home · CallSheet · Splash) or compose the components —
81
- import them, never copy their markup: the behaviour lives in the component. Gallery: see README.`);
81
+ import them, never copy their markup: the behaviour lives in the component. Gallery: see docs/reference.md.`);
82
82
  return 0;
83
83
  }
84
84
 
package/css/actions.css CHANGED
@@ -199,7 +199,7 @@
199
199
  /* --sm: a small LABEL (a name on a note, a tag in a tight head) — low and tight; never a tap target */
200
200
  .chip--sm { min-height: 0; gap: var(--chip-sm-gap, var(--sp-1)); padding: var(--chip-sm-pad-y, var(--sp-0)) var(--chip-sm-pad-x, var(--sp-2)); }
201
201
  .chip--on { background: var(--chip-on-bg, var(--accent)); --dark: var(--accent-dark); color: var(--chip-on-ink, var(--card-ink)); border-color: transparent; }
202
- /* muted: an untouched default — the words wash out, the edge stays; emphasis is the difference from the neighbours (README 13) */
202
+ /* muted: an untouched default — the words wash out, the edge stays; emphasis is the difference from the neighbours (docs/reference.md 13) */
203
203
  .chip--muted { color: var(--chip-muted-ink, var(--card-muted)); } /* the chip's own fill's muted words: a muted chip on the dark card is still a light chip */
204
204
 
205
205
  .chip-row { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
@@ -229,7 +229,7 @@
229
229
  font-size: var(--fs-body);
230
230
  text-align: left;
231
231
  }
232
- /* muted: the value is still the default (README 13) */
232
+ /* muted: the value is still the default (docs/reference.md 13) */
233
233
  .dropdown--muted .dropdown__btn { color: var(--dropdown-muted-ink, var(--action-muted)); }
234
234
  .dropdown__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
235
235
  .dropdown__btn > .icon { transition: rotate var(--motion-quick) ease; }
package/css/numbers.css CHANGED
@@ -46,7 +46,7 @@
46
46
  --_step: calc(var(--tap-base) * 2 / 3); /* 32 the round of one step */
47
47
  --_pad: calc((var(--header-h) - var(--_step)) / 2); /* 14 round + its room = the top bar's height; the end rounds sit concentric in the pill */
48
48
  /* the track lays down the accent fill of where it stands (the brand on a light card, the card's ink on the brand card), so it is a
49
- surface of that fill's side; its steps re-point the accent to its ink, as the brand card slot does (README rule 10) */
49
+ surface of that fill's side; its steps re-point the accent to its ink, as the brand card slot does (docs/reference.md rule 10) */
50
50
  --dark: var(--accent-dark);
51
51
  list-style: none;
52
52
  margin: 0;
package/css/palette.css CHANGED
@@ -3,7 +3,7 @@
3
3
  Apply with <html data-palette="clay"> (or <body>).
4
4
  No attribute = wireframe grayscale from tokens.css.
5
5
  Each palette overrides role tokens only — components never change.
6
- A palette sets its grounds, its two ink sets (onlight, ondark; README "Ink follows its ground") and the side of any ground
6
+ A palette sets its grounds, its two ink sets (onlight, ondark; docs/reference.md "Ink follows its ground") and the side of any ground
7
7
  that is not the default's (tokens.css: tones 1, 2, 4 and the paper light; tone 3, tone 5 and the brand dark). Each ink set
8
8
  holds 4.5:1 on every ground of its side; a tone with words on its 12% tint (a banner, a step bar, today) holds them there too.
9
9
  ============================================================ */
package/css/stack.css CHANGED
@@ -32,7 +32,7 @@
32
32
  bottom, the headroom above is the base's (block below).
33
33
  --flood (with --closed): an open sheet fills the whole screen, over the top bar.
34
34
  Direct children only, five at most (slots are :nth-child below):
35
- first = the back of the stack, last = the front. README "Sheet stack
35
+ first = the back of the stack, last = the front. docs/reference.md "Sheet stack
36
36
  markup". The SheetStack component opens and closes a --tap stack; without it the
37
37
  stack still renders, it just won't open.
38
38
  ============================================================ */
@@ -43,7 +43,7 @@
43
43
  /* --color-brand: #ef4e0b; */ /* the primary action, the strong card */
44
44
  /* --color-on-brand: #fff4ec; */ /* the words on the brand */
45
45
 
46
- /* ---- ink: two sets, ONLIGHT and ONDARK (README "Ink follows its ground") ----
46
+ /* ---- ink: two sets, ONLIGHT and ONDARK (docs/reference.md "Ink follows its ground") ----
47
47
  Every word and glyph on a light ground is onlight, on a dark ground ondark. Set the two sets; each one's ink and its muted shade
48
48
  hold 4.5:1 on every ground of its side (inkGrounds() measures it). Unset, --color-ink and --color-on-brand derive them.
49
49
  --ink-onlight --ink-onlight-muted --ink-ondark --ink-ondark-muted
@@ -55,7 +55,7 @@
55
55
 
56
56
  /* ---- colour roles: only where a derivation is not what you want — a role set here wins over it ----
57
57
  --surface --card-1-bg … --card-5-bg (five card tones: fills only, their words follow their side)
58
- --card-border (a card's fill or its --card-border holds 3:1 on its ground: cardGrounds(), README)
58
+ --card-border (a card's fill or its --card-border holds 3:1 on its ground: cardGrounds(), docs/reference.md)
59
59
  --accent --action-bg --action-border
60
60
  --pos --neg --dot-a --dot-b
61
61
  --signal-ok-onlight --signal-warn-onlight --signal-error-onlight --signal-info-onlight (the signal set: green · yellow · red ·
package/css/tokens.css CHANGED
@@ -180,7 +180,7 @@
180
180
 
181
181
  /* INK: TWO SETS, ONLIGHT AND ONDARK (Lh 2026-10-18: "there are text colours ONLIGHT and ONDARK. When the ground is light, use
182
182
  onlight; when the ground is dark, use ondark"). Words and glyphs alike (icons, marks, dots, a check, a knob). Each set holds its
183
- ink and its muted shade to 4.5:1 on every ground of its side. README "Ink follows its ground". */
183
+ ink and its muted shade to 4.5:1 on every ground of its side. docs/reference.md "Ink follows its ground". */
184
184
  --ink-onlight: var(--color-ink, #141414);
185
185
  --ink-onlight-muted: var(--_onlight-muted, #575757); /* 4.6:1 on the water note and 4.9 on tone 4's grey, the darkest light grounds */
186
186
  --ink-ondark: var(--color-on-brand, #ffffff);
@@ -279,7 +279,7 @@
279
279
  marks, dots: currentColor), --card-muted (secondary words), the four signals, --on-accent (the ink on the accent fill, whose
280
280
  side is --accent-dark) and --accent-ink (the brand as a glyph). A piece with no fill of its own reads only these, so a dark
281
281
  surface turns everything on it to ondark with no rule per piece. A piece with no fill that stands in for a surface (a stat
282
- tile) takes its ground's side: `--dark: inherit`. inkGrounds() measures it; README "Ink follows its ground" */
282
+ tile) takes its ground's side: `--dark: inherit`. inkGrounds() measures it; docs/reference.md "Ink follows its ground" */
283
283
  :where(body, [data-palette], [data-mode], .card, .tile, .modal__drawer, .postcard__front, .postcard__back, .sticky, .post-paper,
284
284
  .float-bar__pill, .snackbar__body, .delta, .track, .tile-badge, .avatar, .bubble__body, .map__hint, .sheet--paper > .sheet__body,
285
285
  .postcard__band, .track__step, .toggle, .chip) {
@@ -3,7 +3,7 @@ import { type DotTone } from './Dot.js';
3
3
  export interface ChipProps extends ComponentProps<'span'> {
4
4
  /** filled accent: the selected / live state */
5
5
  on?: boolean;
6
- /** quiet: an untouched default value — muted words, the thin edge, nothing to find the eye (README rule 13) */
6
+ /** quiet: an untouched default value — muted words, the thin edge, nothing to find the eye (docs/reference.md rule 13) */
7
7
  muted?: boolean;
8
8
  /** a leading signal dot: `a` (the accent signal), `b` (the secondary), or one of the signal set — ok · warn · error · info */
9
9
  dot?: 'a' | 'b' | DotTone;
@@ -13,7 +13,7 @@ export interface DropdownProps extends Omit<ComponentProps<'div'>, 'onChange' |
13
13
  label?: ReactNode;
14
14
  /** right-aligned trigger: the panel grows leftwards (in TopBar actions) */
15
15
  end?: boolean;
16
- /** quiet: the value is still the default — muted words; drop it once the member picks (README rule 13) */
16
+ /** quiet: the value is still the default — muted words; drop it once the member picks (docs/reference.md rule 13) */
17
17
  muted?: boolean;
18
18
  /** MenuItems, each with a `value` */
19
19
  children?: ReactNode;
package/dist/cardds.css CHANGED
@@ -221,7 +221,7 @@
221
221
 
222
222
  /* INK: TWO SETS, ONLIGHT AND ONDARK (Lh 2026-10-18: "there are text colours ONLIGHT and ONDARK. When the ground is light, use
223
223
  onlight; when the ground is dark, use ondark"). Words and glyphs alike (icons, marks, dots, a check, a knob). Each set holds its
224
- ink and its muted shade to 4.5:1 on every ground of its side. README "Ink follows its ground". */
224
+ ink and its muted shade to 4.5:1 on every ground of its side. docs/reference.md "Ink follows its ground". */
225
225
  --ink-onlight: var(--color-ink, #141414);
226
226
  --ink-onlight-muted: var(--_onlight-muted, #575757); /* 4.6:1 on the water note and 4.9 on tone 4's grey, the darkest light grounds */
227
227
  --ink-ondark: var(--color-on-brand, #ffffff);
@@ -320,7 +320,7 @@
320
320
  marks, dots: currentColor), --card-muted (secondary words), the four signals, --on-accent (the ink on the accent fill, whose
321
321
  side is --accent-dark) and --accent-ink (the brand as a glyph). A piece with no fill of its own reads only these, so a dark
322
322
  surface turns everything on it to ondark with no rule per piece. A piece with no fill that stands in for a surface (a stat
323
- tile) takes its ground's side: `--dark: inherit`. inkGrounds() measures it; README "Ink follows its ground" */
323
+ tile) takes its ground's side: `--dark: inherit`. inkGrounds() measures it; docs/reference.md "Ink follows its ground" */
324
324
  :where(body, [data-palette], [data-mode], .card, .tile, .modal__drawer, .postcard__front, .postcard__back, .sticky, .post-paper,
325
325
  .float-bar__pill, .snackbar__body, .delta, .track, .tile-badge, .avatar, .bubble__body, .map__hint, .sheet--paper > .sheet__body,
326
326
  .postcard__band, .track__step, .toggle, .chip) {
@@ -356,7 +356,7 @@
356
356
  Apply with <html data-palette="clay"> (or <body>).
357
357
  No attribute = wireframe grayscale from tokens.css.
358
358
  Each palette overrides role tokens only — components never change.
359
- A palette sets its grounds, its two ink sets (onlight, ondark; README "Ink follows its ground") and the side of any ground
359
+ A palette sets its grounds, its two ink sets (onlight, ondark; docs/reference.md "Ink follows its ground") and the side of any ground
360
360
  that is not the default's (tokens.css: tones 1, 2, 4 and the paper light; tone 3, tone 5 and the brand dark). Each ink set
361
361
  holds 4.5:1 on every ground of its side; a tone with words on its 12% tint (a banner, a step bar, today) holds them there too.
362
362
  ============================================================ */
@@ -1125,7 +1125,7 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
1125
1125
  bottom, the headroom above is the base's (block below).
1126
1126
  --flood (with --closed): an open sheet fills the whole screen, over the top bar.
1127
1127
  Direct children only, five at most (slots are :nth-child below):
1128
- first = the back of the stack, last = the front. README "Sheet stack
1128
+ first = the back of the stack, last = the front. docs/reference.md "Sheet stack
1129
1129
  markup". The SheetStack component opens and closes a --tap stack; without it the
1130
1130
  stack still renders, it just won't open.
1131
1131
  ============================================================ */
@@ -2734,7 +2734,7 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
2734
2734
  /* --sm: a small LABEL (a name on a note, a tag in a tight head) — low and tight; never a tap target */
2735
2735
  .chip--sm { min-height: 0; gap: var(--chip-sm-gap, var(--sp-1)); padding: var(--chip-sm-pad-y, var(--sp-0)) var(--chip-sm-pad-x, var(--sp-2)); }
2736
2736
  .chip--on { background: var(--chip-on-bg, var(--accent)); --dark: var(--accent-dark); color: var(--chip-on-ink, var(--card-ink)); border-color: transparent; }
2737
- /* muted: an untouched default — the words wash out, the edge stays; emphasis is the difference from the neighbours (README 13) */
2737
+ /* muted: an untouched default — the words wash out, the edge stays; emphasis is the difference from the neighbours (docs/reference.md 13) */
2738
2738
  .chip--muted { color: var(--chip-muted-ink, var(--card-muted)); } /* the chip's own fill's muted words: a muted chip on the dark card is still a light chip */
2739
2739
 
2740
2740
  .chip-row { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
@@ -2764,7 +2764,7 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
2764
2764
  font-size: var(--fs-body);
2765
2765
  text-align: left;
2766
2766
  }
2767
- /* muted: the value is still the default (README 13) */
2767
+ /* muted: the value is still the default (docs/reference.md 13) */
2768
2768
  .dropdown--muted .dropdown__btn { color: var(--dropdown-muted-ink, var(--action-muted)); }
2769
2769
  .dropdown__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2770
2770
  .dropdown__btn > .icon { transition: rotate var(--motion-quick) ease; }
@@ -3028,7 +3028,7 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
3028
3028
  --_step: calc(var(--tap-base) * 2 / 3); /* 32 the round of one step */
3029
3029
  --_pad: calc((var(--header-h) - var(--_step)) / 2); /* 14 round + its room = the top bar's height; the end rounds sit concentric in the pill */
3030
3030
  /* the track lays down the accent fill of where it stands (the brand on a light card, the card's ink on the brand card), so it is a
3031
- surface of that fill's side; its steps re-point the accent to its ink, as the brand card slot does (README rule 10) */
3031
+ surface of that fill's side; its steps re-point the accent to its ink, as the brand card slot does (docs/reference.md rule 10) */
3032
3032
  --dark: var(--accent-dark);
3033
3033
  list-style: none;
3034
3034
  margin: 0;
@@ -24,7 +24,7 @@ export type InkGround = {
24
24
  * every glyph drawn as a fill (a dot, a day's dot, the pager's dots, a check's tick, a switch's knob, a strong calendar mark's ring) inside
25
25
  * `root`, finds the ground it is really drawn on (each ancestor's fill, from the page down, through every opacity on the way, to the first
26
26
  * opaque one and past it) and returns one row per piece: words 4.5:1, large words, icons and glyphs 3:1. Each row names the side its ground
27
- * declares and the ink set its colour is (README "Ink follows its ground": light ground → onlight, dark ground → ondark). What the browser
27
+ * declares and the ink set its colour is (docs/reference.md "Ink follows its ground": light ground → onlight, dark ground → ondark). What the browser
28
28
  * draws is what is measured, so the project's theme.css, palette and finish are in it. Not measured: a piece on a picture (a `url()` ground
29
29
  * is not one colour; a gradient is read as decoration unless it is one colour, a fill laid as an image), a disabled control (WCAG exempts
30
30
  * it), a hidden one, words drawn by CSS `content`. Run it where the theme is loaded:
@@ -3,7 +3,7 @@
3
3
  * every glyph drawn as a fill (a dot, a day's dot, the pager's dots, a check's tick, a switch's knob, a strong calendar mark's ring) inside
4
4
  * `root`, finds the ground it is really drawn on (each ancestor's fill, from the page down, through every opacity on the way, to the first
5
5
  * opaque one and past it) and returns one row per piece: words 4.5:1, large words, icons and glyphs 3:1. Each row names the side its ground
6
- * declares and the ink set its colour is (README "Ink follows its ground": light ground → onlight, dark ground → ondark). What the browser
6
+ * declares and the ink set its colour is (docs/reference.md "Ink follows its ground": light ground → onlight, dark ground → ondark). What the browser
7
7
  * draws is what is measured, so the project's theme.css, palette and finish are in it. Not measured: a piece on a picture (a `url()` ground
8
8
  * is not one colour; a gradient is read as decoration unless it is one colour, a fill laid as an image), a disabled control (WCAG exempts
9
9
  * it), a hidden one, words drawn by CSS `content`. Run it where the theme is loaded: