@usableapp/cardds 0.7.38 → 0.7.39

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,11 @@
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.39 — 2026-10-01
6
+
7
+ ### Fixed
8
+ - **`Sheet`: its foot arrives and leaves WITH the sheet, solid the whole way** (Lh 2026-10-01, seen on timebank's agreement page). Before, while a sheet slid up or down (away / peek ↔ up) its foot stood still on the screen's bottom edge and FADED in or out — for a third of a second the body's words slid through that strip behind a half-transparent button; two sheets swapping showed two faded feet over each other. Now at peek and away the foot stands on the sheet's own bottom edge and rides with it, never transparent; between half · 3q · full it still stays on the box's edge as before. Nothing to change in a screen.
9
+
5
10
  ## 0.7.38 — 2026-10-01
6
11
 
7
12
  ### Fixed
package/css/sheet.css CHANGED
@@ -157,12 +157,15 @@
157
157
  background: linear-gradient(var(--card-bg), var(--card-bg)) bottom / 100% var(--_foot) no-repeat;
158
158
  pointer-events: none;
159
159
  translate: 0 calc(-1 * var(--_y) - var(--_drag, 0rem));
160
- transition: translate var(--motion-sheet) ease, opacity var(--motion-sheet) ease, visibility 0s;
160
+ transition: translate var(--motion-sheet) ease, visibility 0s;
161
161
  }
162
162
  .sheet > .card__foot > * { pointer-events: auto; }
163
163
  .sheet:has(> .card__foot) > .sheet__body { margin-bottom: calc(var(--_foot) - var(--card-pad)); } /* the body stops above the strip (the card's own padding is the rest) */
164
164
  .sheet.is-dragging > .card__foot { transition: none; }
165
- :is(.sheet--peek, .sheet--away) > .card__foot { opacity: 0; visibility: hidden; transition: translate var(--motion-sheet) ease, opacity var(--motion-sheet) ease, visibility 0s linear var(--motion-sheet); }
165
+ /* at peek and away the foot is NOT held on the box's edge: it stands on the sheet's own bottom edge (no counter-slide), so it
166
+ LEAVES AND ARRIVES WITH ITS SHEET — solid the whole way, hidden only once the slide is over. It used to stay in place and
167
+ fade: the body slid through the strip behind a half-transparent button (timebank, Lh 2026-10-01: "ตัวหนังสือลอดใต้ปุ่ม"). */
168
+ :is(.sheet--peek, .sheet--away) > .card__foot { translate: 0 0; visibility: hidden; transition: translate var(--motion-sheet) ease, visibility 0s linear var(--motion-sheet); }
166
169
  /* that padding can be taller than the body's own box (a short box: a small phone with the keyboard up) and a
167
170
  box is never smaller than its padding — so the pinned parts must not give way to it: the body runs past
168
171
  the sheet's clipped edge instead, where nothing shows anyway. At peek and away no part of the body shows. */
package/dist/cardds.css CHANGED
@@ -1450,12 +1450,15 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
1450
1450
  background: linear-gradient(var(--card-bg), var(--card-bg)) bottom / 100% var(--_foot) no-repeat;
1451
1451
  pointer-events: none;
1452
1452
  translate: 0 calc(-1 * var(--_y) - var(--_drag, 0rem));
1453
- transition: translate var(--motion-sheet) ease, opacity var(--motion-sheet) ease, visibility 0s;
1453
+ transition: translate var(--motion-sheet) ease, visibility 0s;
1454
1454
  }
1455
1455
  .sheet > .card__foot > * { pointer-events: auto; }
1456
1456
  .sheet:has(> .card__foot) > .sheet__body { margin-bottom: calc(var(--_foot) - var(--card-pad)); } /* the body stops above the strip (the card's own padding is the rest) */
1457
1457
  .sheet.is-dragging > .card__foot { transition: none; }
1458
- :is(.sheet--peek, .sheet--away) > .card__foot { opacity: 0; visibility: hidden; transition: translate var(--motion-sheet) ease, opacity var(--motion-sheet) ease, visibility 0s linear var(--motion-sheet); }
1458
+ /* at peek and away the foot is NOT held on the box's edge: it stands on the sheet's own bottom edge (no counter-slide), so it
1459
+ LEAVES AND ARRIVES WITH ITS SHEET — solid the whole way, hidden only once the slide is over. It used to stay in place and
1460
+ fade: the body slid through the strip behind a half-transparent button (timebank, Lh 2026-10-01: "ตัวหนังสือลอดใต้ปุ่ม"). */
1461
+ :is(.sheet--peek, .sheet--away) > .card__foot { translate: 0 0; visibility: hidden; transition: translate var(--motion-sheet) ease, visibility 0s linear var(--motion-sheet); }
1459
1462
  /* that padding can be taller than the body's own box (a short box: a small phone with the keyboard up) and a
1460
1463
  box is never smaller than its padding — so the pinned parts must not give way to it: the body runs past
1461
1464
  the sheet's clipped edge instead, where nothing shows anyway. At peek and away no part of the body shows. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usableapp/cardds",
3
- "version": "0.7.38",
3
+ "version": "0.7.39",
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.",