@usableapp/cardds 0.6.2 → 0.6.4
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/README.md +11 -0
- package/css/media.css +6 -0
- package/css/step.css +2 -6
- package/dist/cardds.css +8 -6
- 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.6.4 — 2026-09-23
|
|
6
|
+
|
|
7
|
+
- **Fold card: the corner is cut** (Lh 2026-09-23): the triangle under the flap shows what is behind the card, instead of the card's own colour, which read as a second card underneath. Nothing to change in an app.
|
|
8
|
+
- README: the minimum browsers (Safari/iOS 18.3, Chrome 114, Firefox 128 — early 2025) and which phones that means.
|
|
9
|
+
- Gallery only: Settings fold away; the palette is one button that turns through them; on a small screen the settings and the component list are a drawer; the search finds a story by the words in it.
|
|
10
|
+
|
|
11
|
+
## 0.6.3 — 2026-09-23
|
|
12
|
+
|
|
13
|
+
- **The picture is not shrunk** (Lh 2026-09-23): the 40% cap from 0.6.2 and its knob `--step-media-share` are gone. The sticky picture is `--base-content-media-h` tall, always. For 230px: `:root { --base-content-media-h: 14.375rem; }`.
|
|
14
|
+
|
|
5
15
|
## 0.6.2 — 2026-09-23
|
|
6
16
|
|
|
7
17
|
- **The picture stays put, only the words scroll** (Lh 2026-09-23): in a `Step`, a `BaseContent` whose FIRST child is a picture (`img` / `Placeholder`) keeps it sticky at the top of the reading block, and the heading and words scroll under it. The picture is capped at 40% of the step's height (`min(--base-content-media-h, --step-media-share)`, new knob `--step-media-share`, default `40cqh`), so on a short phone or at a large text size the picture gives way, never the words. Nothing to change in an app.
|
package/README.md
CHANGED
|
@@ -74,6 +74,17 @@ import '@usableapp/cardds/dist/cardds.css'; // the CSS, fonts resolve from the
|
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
|
|
77
|
+
**Browsers** (checked 2026-09-23): works on browsers from **early 2025** on.
|
|
78
|
+
|
|
79
|
+
| Browser | Minimum | Released | Phones |
|
|
80
|
+
|---|---|---|---|
|
|
81
|
+
| Safari / iOS | 18.3 | Jan 2025 | iPhone XS / XR (2018) and newer, updated |
|
|
82
|
+
| Chrome | 114 | May 2023 | most Android phones with Chrome kept up to date |
|
|
83
|
+
| Firefox | 128 | Jul 2024 | — |
|
|
84
|
+
|
|
85
|
+
Older than that: menus and dropdowns don't open. On browsers between the minimum and
|
|
86
|
+
the newest, a menu opens in the middle of the screen instead of under its button.
|
|
87
|
+
|
|
77
88
|
Working with Claude in another project? The `/cardds` skill
|
|
78
89
|
(`~/.claude/skills/cardds/`) carries the install and the contract, and points
|
|
79
90
|
back here. It is deliberately thin — **this repo stays the source of truth**,
|
package/css/media.css
CHANGED
|
@@ -121,6 +121,12 @@
|
|
|
121
121
|
background-repeat: no-repeat;
|
|
122
122
|
background-position: bottom right;
|
|
123
123
|
background-size: var(--sp-8) var(--sp-8);
|
|
124
|
+
background-origin: border-box; /* the flap sits on the true corner, not inside the (transparent) border */
|
|
125
|
+
/* the corner is CUT: the triangle under the flap shows what is behind the card. Painted in the card's own colour it
|
|
126
|
+
read as the square corner of a second card underneath (Lh 2026-09-23). The polygon reaches 3rem past the other
|
|
127
|
+
edges so a coloured palette's shadow is not clipped there. */
|
|
128
|
+
clip-path: polygon(-3rem -3rem, calc(100% + 3rem) -3rem, calc(100% + 3rem) calc(100% - var(--sp-8) - 3rem),
|
|
129
|
+
calc(100% - var(--sp-8) - 3rem) calc(100% + 3rem), -3rem calc(100% + 3rem));
|
|
124
130
|
}
|
|
125
131
|
|
|
126
132
|
/* ---- wave: audio waveform stand-in for voice rows ----
|
package/css/step.css
CHANGED
|
@@ -104,16 +104,12 @@
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
/* a picture that opens the words stays put, only the words scroll under it (Lh 2026-09-23, timebank's walk at large text:
|
|
107
|
-
the picture scrolled away with the words). Sticky at the top of the reading block's scroller
|
|
108
|
-
|
|
109
|
-
the picture gives way on a short phone or at a big text size, never the words. */
|
|
107
|
+
the picture scrolled away with the words). Sticky at the top of the reading block's scroller; its height is
|
|
108
|
+
--base-content-media-h as everywhere, never shrunk (Lh 2026-09-23: a fixed height, no scaling). */
|
|
110
109
|
.step > .base-content > :is(img, .ph):first-child,
|
|
111
110
|
.step > .pages > .base-content > :is(img, .ph):first-child {
|
|
112
111
|
position: sticky;
|
|
113
112
|
top: 0;
|
|
114
113
|
z-index: 1;
|
|
115
114
|
background-color: var(--surface); /* the words pass UNDER it, never through a transparent picture */
|
|
116
|
-
max-height: min(var(--base-content-media-h, 14rem), var(--step-media-share, 40cqh));
|
|
117
115
|
}
|
|
118
|
-
.step > .base-content > .ph:first-child,
|
|
119
|
-
.step > .pages > .base-content > .ph:first-child { height: min(var(--base-content-media-h, 14rem), var(--step-media-share, 40cqh)); }
|
package/dist/cardds.css
CHANGED
|
@@ -1564,19 +1564,15 @@ button { font: inherit; cursor: pointer; }
|
|
|
1564
1564
|
}
|
|
1565
1565
|
|
|
1566
1566
|
/* a picture that opens the words stays put, only the words scroll under it (Lh 2026-09-23, timebank's walk at large text:
|
|
1567
|
-
the picture scrolled away with the words). Sticky at the top of the reading block's scroller
|
|
1568
|
-
|
|
1569
|
-
the picture gives way on a short phone or at a big text size, never the words. */
|
|
1567
|
+
the picture scrolled away with the words). Sticky at the top of the reading block's scroller; its height is
|
|
1568
|
+
--base-content-media-h as everywhere, never shrunk (Lh 2026-09-23: a fixed height, no scaling). */
|
|
1570
1569
|
.step > .base-content > :is(img, .ph):first-child,
|
|
1571
1570
|
.step > .pages > .base-content > :is(img, .ph):first-child {
|
|
1572
1571
|
position: sticky;
|
|
1573
1572
|
top: 0;
|
|
1574
1573
|
z-index: 1;
|
|
1575
1574
|
background-color: var(--surface); /* the words pass UNDER it, never through a transparent picture */
|
|
1576
|
-
max-height: min(var(--base-content-media-h, 14rem), var(--step-media-share, 40cqh));
|
|
1577
1575
|
}
|
|
1578
|
-
.step > .base-content > .ph:first-child,
|
|
1579
|
-
.step > .pages > .base-content > .ph:first-child { height: min(var(--base-content-media-h, 14rem), var(--step-media-share, 40cqh)); }
|
|
1580
1576
|
|
|
1581
1577
|
/* ---- css/forms.css — outlined fields, add-row ---- */
|
|
1582
1578
|
/* ============================================================
|
|
@@ -3002,6 +2998,12 @@ button { font: inherit; cursor: pointer; }
|
|
|
3002
2998
|
background-repeat: no-repeat;
|
|
3003
2999
|
background-position: bottom right;
|
|
3004
3000
|
background-size: var(--sp-8) var(--sp-8);
|
|
3001
|
+
background-origin: border-box; /* the flap sits on the true corner, not inside the (transparent) border */
|
|
3002
|
+
/* the corner is CUT: the triangle under the flap shows what is behind the card. Painted in the card's own colour it
|
|
3003
|
+
read as the square corner of a second card underneath (Lh 2026-09-23). The polygon reaches 3rem past the other
|
|
3004
|
+
edges so a coloured palette's shadow is not clipped there. */
|
|
3005
|
+
clip-path: polygon(-3rem -3rem, calc(100% + 3rem) -3rem, calc(100% + 3rem) calc(100% - var(--sp-8) - 3rem),
|
|
3006
|
+
calc(100% - var(--sp-8) - 3rem) calc(100% + 3rem), -3rem calc(100% + 3rem));
|
|
3005
3007
|
}
|
|
3006
3008
|
|
|
3007
3009
|
/* ---- wave: audio waveform stand-in for voice rows ----
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usableapp/cardds",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4",
|
|
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.",
|