@usableapp/cardds 0.7.59 → 0.7.60
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 +7 -0
- package/css/stack.css +7 -3
- package/dist/cardds.css +7 -3
- package/dist/forms/Pin.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
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.60 — 2026-10-06
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **A pull on a `paper` stack sheet follows the finger** (since 0.7.57 it did not): in a `SheetStack` / `Home` whose sheets are `paper`, the words came down late behind the finger during a pull to refresh. They move with it now, as on a sheet without `paper`. Nothing to change in a screen.
|
|
9
|
+
- **`Pin`: a cell given the cursor by a script in the page's first moments does not look ready** — on a phone, a script's focus within the first 0.7 s after the page loaded showed the full border and the caret with no keyboard up. It rests until a tap, the keyboard, or a digit, as at any other moment.
|
|
10
|
+
- **`SheetStack mark="line"`: the line is as thin as a single `Sheet`'s** — it was 4px in 0.7.59, the Sheet's is 2px. Same length, same place. Nothing to change in a screen.
|
|
11
|
+
|
|
5
12
|
## 0.7.59 — 2026-10-06
|
|
6
13
|
|
|
7
14
|
### Fixed
|
package/css/stack.css
CHANGED
|
@@ -211,15 +211,17 @@
|
|
|
211
211
|
}
|
|
212
212
|
@keyframes stack-grip-dissolve { from { --_grip: 0; } to { --_grip: 1; } }
|
|
213
213
|
/* the grip as ONE LINE (`mark="line"`, Lh 2026-10-06): the single Sheet's line, at the same place and the same length. It reads the
|
|
214
|
-
same --_grip-ink, so while its sheet reloads it changes colour exactly as the dots do.
|
|
214
|
+
same --_grip-ink, so while its sheet reloads it changes colour exactly as the dots do. As thin as the Sheet's (--sp-0, half a
|
|
215
|
+
dot), from the dots' top, as the Sheet's line starts there too. A bar and two round ends; the resting
|
|
215
216
|
ink is mixed into the card's own colour (opaque), so the ends do not show darker where they lie on the bar. */
|
|
216
217
|
.stack-card--line {
|
|
217
218
|
--_grip-w: calc(var(--sp-base) * 18);
|
|
218
219
|
--_grip-ink: color-mix(in srgb, currentColor 30%, var(--card-bg));
|
|
219
220
|
--_grip-bar: linear-gradient(var(--_grip-ink), var(--_grip-ink));
|
|
220
|
-
--_grip-
|
|
221
|
+
--_grip-h: var(--sp-0);
|
|
222
|
+
--_grip-end: calc((var(--_grip-w) - var(--_grip-h)) / 2);
|
|
221
223
|
background-image: var(--_grip-img), var(--_grip-bar), var(--_grip-img);
|
|
222
|
-
background-size: var(--_grip-
|
|
224
|
+
background-size: var(--_grip-h) var(--_grip-h), calc(var(--_grip-w) - var(--_grip-h)) var(--_grip-h), var(--_grip-h) var(--_grip-h);
|
|
223
225
|
background-position: calc(50% - var(--_grip-end)) var(--_grip-y), 50% var(--_grip-y), calc(50% + var(--_grip-end)) var(--_grip-y);
|
|
224
226
|
}
|
|
225
227
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -337,6 +339,8 @@
|
|
|
337
339
|
padding-top: calc(var(--sp-6) + var(--_refresh, 0px));
|
|
338
340
|
transition: padding-top var(--motion-sheet) ease, background-color 0s linear;
|
|
339
341
|
}
|
|
342
|
+
/* a pull follows the finger at once, on paper too: the rule above is as strong as the stack's own `is-refreshing` one and comes later */
|
|
343
|
+
.sheet-stack > .card.sheet--paper > .sheet__body.is-refreshing { transition: none; }
|
|
340
344
|
.sheet-stack > .card.sheet--paper:not(.is-open) > .sheet__body {
|
|
341
345
|
background-color: transparent;
|
|
342
346
|
transition:
|
package/dist/cardds.css
CHANGED
|
@@ -1212,15 +1212,17 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
|
|
|
1212
1212
|
}
|
|
1213
1213
|
@keyframes stack-grip-dissolve { from { --_grip: 0; } to { --_grip: 1; } }
|
|
1214
1214
|
/* the grip as ONE LINE (`mark="line"`, Lh 2026-10-06): the single Sheet's line, at the same place and the same length. It reads the
|
|
1215
|
-
same --_grip-ink, so while its sheet reloads it changes colour exactly as the dots do.
|
|
1215
|
+
same --_grip-ink, so while its sheet reloads it changes colour exactly as the dots do. As thin as the Sheet's (--sp-0, half a
|
|
1216
|
+
dot), from the dots' top, as the Sheet's line starts there too. A bar and two round ends; the resting
|
|
1216
1217
|
ink is mixed into the card's own colour (opaque), so the ends do not show darker where they lie on the bar. */
|
|
1217
1218
|
.stack-card--line {
|
|
1218
1219
|
--_grip-w: calc(var(--sp-base) * 18);
|
|
1219
1220
|
--_grip-ink: color-mix(in srgb, currentColor 30%, var(--card-bg));
|
|
1220
1221
|
--_grip-bar: linear-gradient(var(--_grip-ink), var(--_grip-ink));
|
|
1221
|
-
--_grip-
|
|
1222
|
+
--_grip-h: var(--sp-0);
|
|
1223
|
+
--_grip-end: calc((var(--_grip-w) - var(--_grip-h)) / 2);
|
|
1222
1224
|
background-image: var(--_grip-img), var(--_grip-bar), var(--_grip-img);
|
|
1223
|
-
background-size: var(--_grip-
|
|
1225
|
+
background-size: var(--_grip-h) var(--_grip-h), calc(var(--_grip-w) - var(--_grip-h)) var(--_grip-h), var(--_grip-h) var(--_grip-h);
|
|
1224
1226
|
background-position: calc(50% - var(--_grip-end)) var(--_grip-y), 50% var(--_grip-y), calc(50% + var(--_grip-end)) var(--_grip-y);
|
|
1225
1227
|
}
|
|
1226
1228
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -1338,6 +1340,8 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
|
|
|
1338
1340
|
padding-top: calc(var(--sp-6) + var(--_refresh, 0px));
|
|
1339
1341
|
transition: padding-top var(--motion-sheet) ease, background-color 0s linear;
|
|
1340
1342
|
}
|
|
1343
|
+
/* a pull follows the finger at once, on paper too: the rule above is as strong as the stack's own `is-refreshing` one and comes later */
|
|
1344
|
+
.sheet-stack > .card.sheet--paper > .sheet__body.is-refreshing { transition: none; }
|
|
1341
1345
|
.sheet-stack > .card.sheet--paper:not(.is-open) > .sheet__body {
|
|
1342
1346
|
background-color: transparent;
|
|
1343
1347
|
transition:
|
package/dist/forms/Pin.js
CHANGED
|
@@ -79,7 +79,7 @@ export function Pin({ length = 6, value, defaultValue = '', label = word('digit'
|
|
|
79
79
|
opening). A cell that got the cursor that way with no keyboard up cannot be typed into yet — it must not look ready: no full
|
|
80
80
|
border, no caret, until a finger taps a cell, the keyboard is up, or a digit arrives. Never on a desktop (a key is at hand). */
|
|
81
81
|
const [asleep, setAsleep] = useState(false);
|
|
82
|
-
const tapped = useRef(
|
|
82
|
+
const tapped = useRef(-Infinity); // no tap yet: a script's focus in the page's first moments is still a script's
|
|
83
83
|
const keyboardUp = () => { const vv = window.visualViewport; return !!vv && window.innerHeight - vv.height > 120; };
|
|
84
84
|
const wake = () => { tapped.current = performance.now(); setAsleep(false); };
|
|
85
85
|
useEffect(() => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usableapp/cardds",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.60",
|
|
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.",
|