@usableapp/cardds 0.7.38 → 0.7.40
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 +10 -0
- package/css/sheet.css +5 -2
- package/css/tokens.css +3 -3
- package/dist/cardds.css +8 -5
- package/dist/scaffold/Screen.d.ts +1 -1
- package/dist/scaffold/Screen.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
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.40 — 2026-10-01
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- **`--screen-w`: 30rem → 34.375rem (550px)** (Lh 2026-10-01). A screen 540 wide (a phone set to a small display size, a fold's outer screen) showed a 30px strip each side; it now fills edge to edge. A window wider than 550px is still held to a centred column. Check a full-width picture and a wide button on your widest device; a project that sets `--screen-w` itself is not touched.
|
|
9
|
+
|
|
10
|
+
## 0.7.39 — 2026-10-01
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **`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.
|
|
14
|
+
|
|
5
15
|
## 0.7.38 — 2026-10-01
|
|
6
16
|
|
|
7
17
|
### 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,
|
|
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
|
-
|
|
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/css/tokens.css
CHANGED
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
|
|
13
13
|
:root {
|
|
14
14
|
/* ---- layout ---- */
|
|
15
|
-
--screen-w:
|
|
16
|
-
|
|
17
|
-
column. Was 25rem
|
|
15
|
+
--screen-w: 34.375rem; /* 550: the column's CAP — .screen, .action-bar, .sheet-stage. On a phone the screen is the device, edge to edge —
|
|
16
|
+
also a phone set to a small display size, a fold's outer screen (540 was seen, Lh 2026-10-01); the cap only keeps
|
|
17
|
+
a tablet / desktop window to a phone-sized column. Was 25rem (a 412px phone showed a strip each side), then 30rem */
|
|
18
18
|
--screen-centre: 40%; /* the human centre of a screen: the middle of its top four fifths — the bottom fifth is the thumb's (Lh, 2026-09-10). .card--centre sits here */
|
|
19
19
|
|
|
20
20
|
/* ---- the four bases: what a project retunes (Lh, 2026-09-20) ----
|
package/dist/cardds.css
CHANGED
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
|
|
54
54
|
:root {
|
|
55
55
|
/* ---- layout ---- */
|
|
56
|
-
--screen-w:
|
|
57
|
-
|
|
58
|
-
column. Was 25rem
|
|
56
|
+
--screen-w: 34.375rem; /* 550: the column's CAP — .screen, .action-bar, .sheet-stage. On a phone the screen is the device, edge to edge —
|
|
57
|
+
also a phone set to a small display size, a fold's outer screen (540 was seen, Lh 2026-10-01); the cap only keeps
|
|
58
|
+
a tablet / desktop window to a phone-sized column. Was 25rem (a 412px phone showed a strip each side), then 30rem */
|
|
59
59
|
--screen-centre: 40%; /* the human centre of a screen: the middle of its top four fifths — the bottom fifth is the thumb's (Lh, 2026-09-10). .card--centre sits here */
|
|
60
60
|
|
|
61
61
|
/* ---- the four bases: what a project retunes (Lh, 2026-09-20) ----
|
|
@@ -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,
|
|
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
|
-
|
|
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. */
|
|
@@ -20,7 +20,7 @@ export interface ScreenProps extends ComponentProps<'div'> {
|
|
|
20
20
|
* Screen — the mobile screen in THREE parts: **top** and **content** (the children) in one flex column, the content down to the
|
|
21
21
|
* screen's foot; **bottom** a LAYER over it there (Lh 2026-09-23). Top = `TopBar` / `AppBar`, or `top="lead"` (no bar, the words start
|
|
22
22
|
* 15% down). Content = a box of components one after another — a `Step` (`Pages` of `Page`s / a `Page` [+ `Sheet`]), a `Centre`, a
|
|
23
|
-
* `SheetStack`… Bottom = an `ActionBar` (the walk's `PagerAt` its first row) or a `FloatBar`, covering the content's foot on purpose. Max
|
|
23
|
+
* `SheetStack`… Bottom = an `ActionBar` (the walk's `PagerAt` its first row) or a `FloatBar`, covering the content's foot on purpose. Max 34.375rem (550px) wide, the standard inset, no vertical padding. A plain Screen (no `fill`) scrolls.
|
|
24
24
|
* ONE OUTCOME, DRAWN ONCE (Lh 2026-10-01): a screen that can come out more than one way is not drawn until the app knows which —
|
|
25
25
|
* `ready={false}` until then.
|
|
26
26
|
* The slots set the order; children laid by hand in the same order still work.
|
package/dist/scaffold/Screen.js
CHANGED
|
@@ -5,7 +5,7 @@ import { cx } from '../cx.js';
|
|
|
5
5
|
* Screen — the mobile screen in THREE parts: **top** and **content** (the children) in one flex column, the content down to the
|
|
6
6
|
* screen's foot; **bottom** a LAYER over it there (Lh 2026-09-23). Top = `TopBar` / `AppBar`, or `top="lead"` (no bar, the words start
|
|
7
7
|
* 15% down). Content = a box of components one after another — a `Step` (`Pages` of `Page`s / a `Page` [+ `Sheet`]), a `Centre`, a
|
|
8
|
-
* `SheetStack`… Bottom = an `ActionBar` (the walk's `PagerAt` its first row) or a `FloatBar`, covering the content's foot on purpose. Max
|
|
8
|
+
* `SheetStack`… Bottom = an `ActionBar` (the walk's `PagerAt` its first row) or a `FloatBar`, covering the content's foot on purpose. Max 34.375rem (550px) wide, the standard inset, no vertical padding. A plain Screen (no `fill`) scrolls.
|
|
9
9
|
* ONE OUTCOME, DRAWN ONCE (Lh 2026-10-01): a screen that can come out more than one way is not drawn until the app knows which —
|
|
10
10
|
* `ready={false}` until then.
|
|
11
11
|
* The slots set the order; children laid by hand in the same order still work.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usableapp/cardds",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.40",
|
|
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.",
|