@usableapp/cardds 0.7.84 → 0.7.85

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/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  > For: a project that consumes `@usableapp/cardds` and its AI — what changed between versions, written as before → after, so a screen can be brought up to date without reading the source. Newest first. A consumer never edits cardds; if something here leaves you without a way to do what you did before, report the gap.
4
4
 
5
+ ## 0.7.85 — 2026-10-11
6
+
7
+ ### Added
8
+ - **`StampOn arrive` + `onArrived`: a stamp that sticks itself** (Lh 2026-10-11) — as the `StampOn` comes onto the screen it is struck onto its place (shown large, pressed down to its size), and `onArrived` tells the app when it has landed; with reduced motion it is there at once and `onArrived` still comes. Nobody picks the stamp or presses to stick it: the app shows it when its own move begins (a send) and does what follows in `onArrived`. The surface is any positioned box, a `Card` and a `Sheet` among them. Knob `--stamp-on-arrive-time`. Story `StampOn · Arrives`.
9
+ - **Story `Home · AskSheet`: a task in one sheet over the home** — `SheetStage over dim` holding a `Sheet`, as the `Home`'s children, over a flooded sheet; two `SheetSteps` inside; the sheet is one layer of the history (`useLayer`). Nothing new in the components: the story shows the composition.
10
+ - **Story `CardFoot · CardFootFourAnswers`: four answers on one card** — one word button and an `IconBtnGroup form` of three picture buttons. Four word buttons on one line do not fit a phone (67 to 79 wide each, the words break). An answer already given is `aria-disabled` with its name changed, so it fades, stays, and is still read.
11
+
12
+ ### Fixed
13
+ - **`ChipRow bleed`: a chip keeps its words on one line** — before → after: a chip of whole sentences shrank to fit the row and its words broke onto three or four lines, so the strip never scrolled → each chip is as wide as its words and the strip scrolls sideways. A row of one-word chips is unchanged. Story `Chip · ChipRowBleedSentences`.
5
14
  ## 0.7.84 — 2026-10-11
6
15
 
7
16
  ### Changed — breaking for a screen that draws a `Stamp`
package/README.md CHANGED
@@ -650,7 +650,10 @@ it up. cardds draws the paper; the pictures, their words and which stamp a membe
650
650
  `turn` its angle in degrees. With `onAtChange` the member drags it (the arrow keys move it too) and it asks with the
651
651
  new place when the finger lets go; without it the stamp is still. The surface is the nearest positioned box:
652
652
  `Sticky stuck={…}` is one. The stamp is the small size, 48 × 60 whatever the surface's size (`--stamp-sm-size`), and
653
- on a note it may lie over the words.
653
+ on a note it may lie over the words. With `arrive` the stamp sticks itself: as it comes onto the screen it is struck
654
+ onto its place, and `onArrived` tells the app when it has landed (at once where motion is off), so the app does what
655
+ follows. A `Card` and a `Sheet` are positioned boxes, so a `StampOn` written inside one lies on it.
656
+ `--stamp-on-arrive-time` sets how long the strike takes.
654
657
 
655
658
  What an app stores for a stamp: the picture ids (1 to 4, in order), the ground tone, the name, the small line. Making
656
659
  one is the app's screen: `ChipPick` checkboxes that each show a picture, the app refuses a fifth, and the app draws
package/css/actions.css CHANGED
@@ -204,6 +204,7 @@
204
204
 
205
205
  .chip-row { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
206
206
  .chip-row.bleed { flex-wrap: nowrap; } /* actions.css loads after card.css — the strip stays one line */
207
+ .chip-row.bleed > .chip { flex: none; white-space: nowrap; } /* a chip of the strip keeps its words on one line at its own width: the strip scrolls, a chip never shrinks to fit it */
207
208
 
208
209
  /* ---- dropdown: the standard for every select — a pill trigger + .menu popover ----
209
210
  <div class="dropdown"><button class="dropdown__btn" popovertarget="f1"><span class="dropdown__label">this week</span><svg class="icon icon--xs"><use href="icons.svg#chevron-down"/></svg></button>
package/css/stamp.css CHANGED
@@ -218,3 +218,9 @@
218
218
  .stamp-on--move:focus-visible { outline: var(--focus); outline-offset: var(--sp-1); }
219
219
  .stamp-on.is-held { cursor: grabbing; z-index: 1; scale: 1.06; } /* lifted off the paper while the finger holds it */
220
220
  @media (prefers-reduced-motion: reduce) { .stamp-on.is-held { scale: 1; } }
221
+ /* --arrive: the stamp sticks ITSELF (StampOn `arrive`) — struck onto its place: shown large and faint, pressed a little past its
222
+ size, then at rest. The component reads the animation's name to tell the app it has landed. Knob: --stamp-on-arrive-time */
223
+ @media (prefers-reduced-motion: no-preference) {
224
+ .stamp-on--arrive { animation: stamp-on-strike var(--stamp-on-arrive-time, var(--motion-sheet)) ease-in both; }
225
+ }
226
+ @keyframes stamp-on-strike { from { scale: 2; opacity: 0; } 60% { scale: 0.92; opacity: 1; } }
package/dist/cardds.css CHANGED
@@ -2633,6 +2633,7 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
2633
2633
 
2634
2634
  .chip-row { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
2635
2635
  .chip-row.bleed { flex-wrap: nowrap; } /* actions.css loads after card.css — the strip stays one line */
2636
+ .chip-row.bleed > .chip { flex: none; white-space: nowrap; } /* a chip of the strip keeps its words on one line at its own width: the strip scrolls, a chip never shrinks to fit it */
2636
2637
 
2637
2638
  /* ---- dropdown: the standard for every select — a pill trigger + .menu popover ----
2638
2639
  <div class="dropdown"><button class="dropdown__btn" popovertarget="f1"><span class="dropdown__label">this week</span><svg class="icon icon--xs"><use href="icons.svg#chevron-down"/></svg></button>
@@ -4320,6 +4321,12 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
4320
4321
  .stamp-on--move:focus-visible { outline: var(--focus); outline-offset: var(--sp-1); }
4321
4322
  .stamp-on.is-held { cursor: grabbing; z-index: 1; scale: 1.06; } /* lifted off the paper while the finger holds it */
4322
4323
  @media (prefers-reduced-motion: reduce) { .stamp-on.is-held { scale: 1; } }
4324
+ /* --arrive: the stamp sticks ITSELF (StampOn `arrive`) — struck onto its place: shown large and faint, pressed a little past its
4325
+ size, then at rest. The component reads the animation's name to tell the app it has landed. Knob: --stamp-on-arrive-time */
4326
+ @media (prefers-reduced-motion: no-preference) {
4327
+ .stamp-on--arrive { animation: stamp-on-strike var(--stamp-on-arrive-time, var(--motion-sheet)) ease-in both; }
4328
+ }
4329
+ @keyframes stamp-on-strike { from { scale: 2; opacity: 0; } 60% { scale: 0.92; opacity: 1; } }
4323
4330
 
4324
4331
  /* ---- css/post.css — the post: postmark, a postcard read (letter), written (desk), kept (box) ---- */
4325
4332
  /* cardds — the post: a postcard read (post-letter), written (post-desk) and kept (post-box), the postmark, the card stock.