@usableapp/cardds 0.7.81 → 0.7.82
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 +11 -0
- package/README.md +5 -3
- package/css/post.css +1 -1
- package/css/stamp.css +15 -10
- package/dist/cardds.css +16 -11
- package/dist/catalog.json +1 -1
- package/dist/stamp/Stamp.d.ts +3 -2
- package/dist/stamp/Stamp.js +3 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
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.82 — 2026-10-10
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- **The edge of a `StampPlace` is round dots, close together** (Lh 2026-10-10: the dashes stood too far apart) — before → after: a stroke of 8px dashes with a gap of 12px → 2px round dots with 4px clear between them (a pitch of 6px from one centre to the next), still round at `--stamp-place-radius`, the same colours (`--stamp-place-border`, `--stamp-place-faint-border`, a card's muted ink), the same 4:5 size, the words and icon inside where they were. The ring closes wherever its length ends, so one gap, at the top left, is a little shorter or longer than the rest. A project that set `--stamp-place-dash` and `--stamp-place-gap` for 0.7.77's dashes keeps them, now with round ends (each dash is longer by one dot, each gap shorter by one dot); unset them for dots.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **`--stamp-place-dot`** — how wide each dot of a `StampPlace`'s edge is (default `--rule-w`). The place's clear border, the edge's inset and its corner follow it, so the dots' outer edge stays the box's edge and the words stay where they are.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- **`docs/knobs.md` listed 13 knobs too few** — a knob whose default is a `calc()` with a `var()` inside (`--btn-form-pad-x`, `--card-head-stamp-w`, `--stack-back-size`…) was missed by `npm run knobs`, so the doc and the knob test never saw it. The script now reads one more level of brackets.
|
|
15
|
+
|
|
5
16
|
## 0.7.81 — 2026-10-10
|
|
6
17
|
|
|
7
18
|
### Added
|
package/README.md
CHANGED
|
@@ -579,9 +579,11 @@ it up. cardds draws the paper; the pictures, their words and which stamp a membe
|
|
|
579
579
|
same list and the same `--sticky-<tone>-bg` knobs as a note's paper). `name` is the big line on the picture's foot,
|
|
580
580
|
`words` the small line above it. `tilt` turns it, `onClick` makes the whole stamp a button. It fills its column up to
|
|
581
581
|
`--stamp-max-w`, and every inner length follows its width, so one stamp reads in a tray and in a sheet.
|
|
582
|
-
- **`StampPlace`** — an empty
|
|
583
|
-
gap nobody is asked to fill. The edge is a drawn stroke, so
|
|
584
|
-
`--stamp-place-gap`
|
|
582
|
+
- **`StampPlace`** — an empty place the size of a stamp, its edge a ring of round dots: a word inside, `onClick` for "make
|
|
583
|
+
yours", `faint` for a gap nobody is asked to fill. The edge is a drawn stroke, so the dots are yours: `--stamp-place-dot`
|
|
584
|
+
is how wide each is (default `--rule-w`, 2px), `--stamp-place-gap` the distance from one dot's centre to the next
|
|
585
|
+
(default 6px), and a `--stamp-place-dash` above 0 stretches each dot into a round-ended dash. Its corner is
|
|
586
|
+
`--stamp-place-radius`. The dots' outer edge is the box's edge whatever their width.
|
|
585
587
|
- **`StampBook`** + **`StampCell`** — the album page: cells three across on an album ground, a `label` under each stamp,
|
|
586
588
|
the free places drawn up to `places`. A cell with `onClick` is a button; `on` marks it pressed. `strip` is one line
|
|
587
589
|
of small stamps that scrolls sideways, the tray a member picks from. A `false` or `null` child holds no place.
|
package/css/post.css
CHANGED
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
.post-desk__line > span { font: var(--type-caption); color: var(--_muted); }
|
|
231
231
|
.post-desk__line > input { width: 100%; min-width: 0; min-height: var(--tap); border: 0; outline: none; background: transparent; color: inherit; font: var(--type-title); }
|
|
232
232
|
.post-desk__line > input::placeholder { color: var(--_muted); }
|
|
233
|
-
/* the stamp box: empty it is a
|
|
233
|
+
/* the stamp box: empty it is a place of dots to press; pressed, the chosen stamp lies in it */
|
|
234
234
|
.post-desk__slot { border: 0; background: transparent; color: inherit; }
|
|
235
235
|
@media (prefers-reduced-motion: no-preference) {
|
|
236
236
|
.post-desk__slot > .stamp { animation: post-desk-stick var(--motion-quick) ease-out both; }
|
package/css/stamp.css
CHANGED
|
@@ -91,28 +91,32 @@
|
|
|
91
91
|
|
|
92
92
|
/* ---- stamp place: an empty place for a stamp — an album's gap, "make yours" ----
|
|
93
93
|
<span class="stamp-place"><svg class="stamp-place__edge" aria-hidden="true"><rect/></svg>สร้าง</span> · <button class="stamp-place">…</button> · <span class="stamp-place stamp-place--faint">…</span>
|
|
94
|
-
The
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
The edge is a row of round dots drawn on a <rect> of its own, not a border: a dashed border's dash and gap are the browser's to choose,
|
|
95
|
+
a stroke's are knobs and its corners still follow --stamp-place-radius. A dot is a zero-length dash under a round cap, --stamp-place-dot
|
|
96
|
+
wide; --stamp-place-gap is the distance from one dot's centre to the next, and a --stamp-place-dash above 0 makes round-ended dashes
|
|
97
|
+
of it. The pattern closes wherever the perimeter ends, so the last gap is shorter or longer than the rest by less than one pitch.
|
|
98
|
+
The element keeps a clear border of the same width so what is inside sits where it did; the svg lies on that border, over it, and
|
|
99
|
+
takes no part in the layout. */
|
|
97
100
|
.stamp-place {
|
|
98
101
|
position: relative;
|
|
99
102
|
display: grid;
|
|
100
103
|
place-content: center;
|
|
101
104
|
justify-items: center;
|
|
102
105
|
padding: var(--sp-1);
|
|
103
|
-
border: var(--
|
|
106
|
+
border: var(--_dot) solid transparent;
|
|
104
107
|
border-radius: var(--stamp-place-radius, var(--sp-2));
|
|
105
108
|
background: none;
|
|
106
109
|
color: var(--stamp-place-ink, var(--on-surface-muted));
|
|
107
110
|
font: var(--stamp-place-font, var(--type-caption));
|
|
108
111
|
text-align: center;
|
|
109
112
|
--_edge: var(--stamp-place-border, var(--on-surface-muted));
|
|
113
|
+
--_dot: var(--stamp-place-dot, var(--rule-w));
|
|
110
114
|
}
|
|
111
115
|
.stamp-place__edge {
|
|
112
116
|
position: absolute;
|
|
113
|
-
inset: calc(var(--
|
|
114
|
-
width: calc(100% + var(--
|
|
115
|
-
height: calc(100% + var(--
|
|
117
|
+
inset: calc(var(--_dot) / -2) auto auto calc(var(--_dot) / -2);
|
|
118
|
+
width: calc(100% + var(--_dot));
|
|
119
|
+
height: calc(100% + var(--_dot));
|
|
116
120
|
max-width: none; /* base.css caps every svg at its box */
|
|
117
121
|
overflow: visible; /* the stroke is centred on the rect's own edge: half of it falls outside the svg */
|
|
118
122
|
pointer-events: none;
|
|
@@ -120,11 +124,12 @@
|
|
|
120
124
|
.stamp-place__edge > rect {
|
|
121
125
|
width: 100%;
|
|
122
126
|
height: 100%;
|
|
123
|
-
rx: calc(var(--stamp-place-radius, var(--sp-2)) - var(--
|
|
127
|
+
rx: calc(var(--stamp-place-radius, var(--sp-2)) - var(--_dot) / 2); /* the corner of the stroke's middle, so its outer edge is the radius */
|
|
124
128
|
fill: none;
|
|
125
129
|
stroke: var(--_edge);
|
|
126
|
-
stroke-width: var(--
|
|
127
|
-
stroke-
|
|
130
|
+
stroke-width: var(--_dot);
|
|
131
|
+
stroke-linecap: round;
|
|
132
|
+
stroke-dasharray: var(--stamp-place-dash, 0) var(--stamp-place-gap, calc(var(--sp-0) * 3));
|
|
128
133
|
}
|
|
129
134
|
.card .stamp-place, .post-paper .stamp-place { --_edge: var(--stamp-place-border, var(--card-muted)); color: var(--stamp-place-ink, var(--card-muted)); }
|
|
130
135
|
.stamp-place--faint { --_edge: var(--stamp-place-faint-border, var(--hairline)); }
|
package/dist/cardds.css
CHANGED
|
@@ -4080,28 +4080,32 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
|
|
|
4080
4080
|
|
|
4081
4081
|
/* ---- stamp place: an empty place for a stamp — an album's gap, "make yours" ----
|
|
4082
4082
|
<span class="stamp-place"><svg class="stamp-place__edge" aria-hidden="true"><rect/></svg>สร้าง</span> · <button class="stamp-place">…</button> · <span class="stamp-place stamp-place--faint">…</span>
|
|
4083
|
-
The
|
|
4084
|
-
|
|
4085
|
-
|
|
4083
|
+
The edge is a row of round dots drawn on a <rect> of its own, not a border: a dashed border's dash and gap are the browser's to choose,
|
|
4084
|
+
a stroke's are knobs and its corners still follow --stamp-place-radius. A dot is a zero-length dash under a round cap, --stamp-place-dot
|
|
4085
|
+
wide; --stamp-place-gap is the distance from one dot's centre to the next, and a --stamp-place-dash above 0 makes round-ended dashes
|
|
4086
|
+
of it. The pattern closes wherever the perimeter ends, so the last gap is shorter or longer than the rest by less than one pitch.
|
|
4087
|
+
The element keeps a clear border of the same width so what is inside sits where it did; the svg lies on that border, over it, and
|
|
4088
|
+
takes no part in the layout. */
|
|
4086
4089
|
.stamp-place {
|
|
4087
4090
|
position: relative;
|
|
4088
4091
|
display: grid;
|
|
4089
4092
|
place-content: center;
|
|
4090
4093
|
justify-items: center;
|
|
4091
4094
|
padding: var(--sp-1);
|
|
4092
|
-
border: var(--
|
|
4095
|
+
border: var(--_dot) solid transparent;
|
|
4093
4096
|
border-radius: var(--stamp-place-radius, var(--sp-2));
|
|
4094
4097
|
background: none;
|
|
4095
4098
|
color: var(--stamp-place-ink, var(--on-surface-muted));
|
|
4096
4099
|
font: var(--stamp-place-font, var(--type-caption));
|
|
4097
4100
|
text-align: center;
|
|
4098
4101
|
--_edge: var(--stamp-place-border, var(--on-surface-muted));
|
|
4102
|
+
--_dot: var(--stamp-place-dot, var(--rule-w));
|
|
4099
4103
|
}
|
|
4100
4104
|
.stamp-place__edge {
|
|
4101
4105
|
position: absolute;
|
|
4102
|
-
inset: calc(var(--
|
|
4103
|
-
width: calc(100% + var(--
|
|
4104
|
-
height: calc(100% + var(--
|
|
4106
|
+
inset: calc(var(--_dot) / -2) auto auto calc(var(--_dot) / -2);
|
|
4107
|
+
width: calc(100% + var(--_dot));
|
|
4108
|
+
height: calc(100% + var(--_dot));
|
|
4105
4109
|
max-width: none; /* base.css caps every svg at its box */
|
|
4106
4110
|
overflow: visible; /* the stroke is centred on the rect's own edge: half of it falls outside the svg */
|
|
4107
4111
|
pointer-events: none;
|
|
@@ -4109,11 +4113,12 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
|
|
|
4109
4113
|
.stamp-place__edge > rect {
|
|
4110
4114
|
width: 100%;
|
|
4111
4115
|
height: 100%;
|
|
4112
|
-
rx: calc(var(--stamp-place-radius, var(--sp-2)) - var(--
|
|
4116
|
+
rx: calc(var(--stamp-place-radius, var(--sp-2)) - var(--_dot) / 2); /* the corner of the stroke's middle, so its outer edge is the radius */
|
|
4113
4117
|
fill: none;
|
|
4114
4118
|
stroke: var(--_edge);
|
|
4115
|
-
stroke-width: var(--
|
|
4116
|
-
stroke-
|
|
4119
|
+
stroke-width: var(--_dot);
|
|
4120
|
+
stroke-linecap: round;
|
|
4121
|
+
stroke-dasharray: var(--stamp-place-dash, 0) var(--stamp-place-gap, calc(var(--sp-0) * 3));
|
|
4117
4122
|
}
|
|
4118
4123
|
.card .stamp-place, .post-paper .stamp-place { --_edge: var(--stamp-place-border, var(--card-muted)); color: var(--stamp-place-ink, var(--card-muted)); }
|
|
4119
4124
|
.stamp-place--faint { --_edge: var(--stamp-place-faint-border, var(--hairline)); }
|
|
@@ -4434,7 +4439,7 @@ button:enabled { cursor: pointer; } /* a disabled one keeps the arrow */
|
|
|
4434
4439
|
.post-desk__line > span { font: var(--type-caption); color: var(--_muted); }
|
|
4435
4440
|
.post-desk__line > input { width: 100%; min-width: 0; min-height: var(--tap); border: 0; outline: none; background: transparent; color: inherit; font: var(--type-title); }
|
|
4436
4441
|
.post-desk__line > input::placeholder { color: var(--_muted); }
|
|
4437
|
-
/* the stamp box: empty it is a
|
|
4442
|
+
/* the stamp box: empty it is a place of dots to press; pressed, the chosen stamp lies in it */
|
|
4438
4443
|
.post-desk__slot { border: 0; background: transparent; color: inherit; }
|
|
4439
4444
|
@media (prefers-reduced-motion: no-preference) {
|
|
4440
4445
|
.post-desk__slot > .stamp { animation: post-desk-stick var(--motion-quick) ease-out both; }
|