@usableapp/cardds 0.3.0 → 0.4.0
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/README.md +9 -5
- package/css/actions.css +38 -27
- package/css/base.css +9 -9
- package/css/card.css +24 -23
- package/css/choice.css +50 -50
- package/css/forms.css +18 -18
- package/css/journey.css +16 -16
- package/css/layover.css +45 -45
- package/css/lists.css +43 -43
- package/css/media.css +33 -33
- package/css/numbers.css +25 -25
- package/css/people.css +11 -11
- package/css/sheet.css +21 -21
- package/css/theme.template.css +6 -3
- package/dist/actions/Btn.d.ts +109 -108
- package/dist/actions/BtnRow.d.ts +2 -2
- package/dist/actions/Chip.d.ts +102 -101
- package/dist/actions/Dot.d.ts +2 -2
- package/dist/actions/Dropdown.d.ts +4 -4
- package/dist/actions/Fab.d.ts +2 -2
- package/dist/actions/IconBtn.d.ts +107 -106
- package/dist/actions/Link.d.ts +105 -104
- package/dist/actions/Segment.d.ts +3 -3
- package/dist/cardds.css +333 -321
- package/dist/cards/Card.d.ts +99 -98
- package/dist/cards/CardFoot.d.ts +2 -2
- package/dist/cards/CardHead.d.ts +2 -2
- package/dist/cards/CardParts.d.ts +7 -7
- package/dist/cards/Placeholder.d.ts +2 -2
- package/dist/cards/Stat.d.ts +7 -5
- package/dist/cards/Stat.js +2 -2
- package/dist/choice/Calendar.d.ts +2 -2
- package/dist/choice/Check.d.ts +3 -3
- package/dist/choice/DayStrip.d.ts +3 -3
- package/dist/choice/Mood.d.ts +2 -2
- package/dist/choice/Slider.d.ts +2 -2
- package/dist/forms/AddRow.d.ts +2 -2
- package/dist/forms/Composer.d.ts +2 -2
- package/dist/forms/Field.d.ts +2 -2
- package/dist/forms/FileBtn.d.ts +2 -2
- package/dist/forms/Pin.d.ts +2 -2
- package/dist/journey/NoteRow.d.ts +2 -2
- package/dist/journey/Route.d.ts +2 -2
- package/dist/journey/TileBadge.d.ts +2 -2
- package/dist/layover/Banner.d.ts +2 -2
- package/dist/layover/Callout.d.ts +2 -2
- package/dist/layover/Deck.d.ts +3 -3
- package/dist/lists/Bubble.d.ts +3 -3
- package/dist/lists/Kv.d.ts +5 -5
- package/dist/lists/Legend.d.ts +3 -3
- package/dist/lists/Row.d.ts +5 -4
- package/dist/lists/Timeline.d.ts +3 -3
- package/dist/media/MapArea.d.ts +2 -2
- package/dist/media/Mosaic.d.ts +3 -3
- package/dist/media/Postcard.d.ts +2 -2
- package/dist/media/Quote.d.ts +2 -2
- package/dist/media/Tile.d.ts +5 -4
- package/dist/numbers/Badge.d.ts +2 -2
- package/dist/numbers/Band.d.ts +3 -3
- package/dist/numbers/Bars.d.ts +3 -3
- package/dist/numbers/DotGrid.d.ts +2 -2
- package/dist/numbers/Picker.d.ts +3 -3
- package/dist/numbers/Ring.d.ts +2 -2
- package/dist/numbers/Track.d.ts +3 -3
- package/dist/people/Avatar.d.ts +100 -99
- package/dist/people/AvatarPick.d.ts +3 -3
- package/dist/scaffold/ActionBar.d.ts +3 -3
- package/dist/scaffold/AppBar.d.ts +2 -2
- package/dist/scaffold/BaseContent.d.ts +3 -3
- package/dist/scaffold/Centre.d.ts +3 -3
- package/dist/scaffold/EmptyState.d.ts +2 -2
- package/dist/scaffold/FilterRow.d.ts +2 -2
- package/dist/scaffold/FloatBar.d.ts +105 -104
- package/dist/scaffold/PagerAt.d.ts +2 -2
- package/dist/scaffold/Screen.d.ts +100 -99
- package/dist/scaffold/TopBar.d.ts +2 -2
- package/dist/sheets/CardBack.d.ts +2 -2
- package/dist/sheets/Drawer.d.ts +5 -5
- package/dist/sheets/Sheet.d.ts +2 -2
- package/dist/sheets/SheetBody.d.ts +2 -2
- package/dist/sheets/SheetHead.d.ts +2 -2
- package/dist/sheets/SheetStack.d.ts +2 -2
- package/dist/sheets/SheetStage.d.ts +2 -2
- package/dist/sheets/Step.d.ts +2 -2
- package/dist/type/Icon.d.ts +22 -7
- package/dist/type/Icon.js +27 -4
- package/dist/type/Text.d.ts +7 -1
- package/dist/type/Text.js +2 -2
- package/package.json +3 -2
package/css/numbers.css
CHANGED
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
mask: radial-gradient(farthest-side, transparent calc(100% - var(--_w) - 1px), currentColor calc(100% - var(--_w)));
|
|
32
32
|
-webkit-mask: radial-gradient(farthest-side, transparent calc(100% - var(--_w) - 1px), currentColor calc(100% - var(--_w)));
|
|
33
33
|
}
|
|
34
|
-
.ring__value { font: var(--type-stat); letter-spacing: var(--track-display); }
|
|
35
|
-
.ring__label { font: var(--type-caption); color: var(--card-muted); }
|
|
34
|
+
.ring__value { font: var(--ring-value-font, var(--type-stat)); letter-spacing: var(--track-display); }
|
|
35
|
+
.ring__label { font: var(--ring-label-font, var(--type-caption)); color: var(--ring-label-ink, var(--card-muted)); }
|
|
36
36
|
.card--3 .ring__label { color: inherit; opacity: 0.7; }
|
|
37
37
|
.ring--sm { --_size: var(--avatar-xl); --_w: var(--sp-3); }
|
|
38
38
|
.ring--sm .ring__value { font: 800 var(--fs-2xl)/1 var(--font-display); }
|
|
@@ -52,10 +52,10 @@
|
|
|
52
52
|
--on-accent: var(--_bg);
|
|
53
53
|
list-style: none;
|
|
54
54
|
margin: 0;
|
|
55
|
-
padding: var(--sp-2);
|
|
55
|
+
padding: var(--track-pad, var(--sp-2));
|
|
56
56
|
display: flex;
|
|
57
57
|
align-items: center;
|
|
58
|
-
border-radius: var(--r-chip);
|
|
58
|
+
border-radius: var(--track-radius, var(--r-chip));
|
|
59
59
|
background: var(--_bg);
|
|
60
60
|
color: var(--_ink);
|
|
61
61
|
}
|
|
@@ -96,9 +96,9 @@
|
|
|
96
96
|
grid-template-areas: "label num" "foot num";
|
|
97
97
|
align-items: end;
|
|
98
98
|
gap: var(--sp-2) var(--sp-4);
|
|
99
|
-
min-height: var(--tile-h);
|
|
99
|
+
min-height: var(--card-band-min-h, var(--tile-h));
|
|
100
100
|
}
|
|
101
|
-
.band__label { grid-area: label; align-self: start; font: var(--type-label); font-size: var(--fs-body); line-height: 1.2; }
|
|
101
|
+
.band__label { grid-area: label; align-self: start; font: var(--band-label-font, var(--type-label)); font-size: var(--band-label-font-size, var(--fs-body)); line-height: 1.2; }
|
|
102
102
|
.band__num {
|
|
103
103
|
grid-area: num;
|
|
104
104
|
font: 800 var(--fs-giant) / 0.9 var(--font-display);
|
|
@@ -106,14 +106,14 @@
|
|
|
106
106
|
font-variant-numeric: tabular-nums;
|
|
107
107
|
}
|
|
108
108
|
.band__num small { font-size: 0.5em; font-weight: 700; margin-right: 0.1em; } /* unit or % */
|
|
109
|
-
.band__foot { grid-area: foot; font: var(--type-caption); color: var(--card-muted); }
|
|
109
|
+
.band__foot { grid-area: foot; font: var(--band-foot-font, var(--type-caption)); color: var(--band-foot-ink, var(--card-muted)); }
|
|
110
110
|
.card--3 .band__foot { color: inherit; opacity: 0.7; }
|
|
111
111
|
/* band stack: ONE card boundary; bands are frameless inside it, a hairline
|
|
112
112
|
between each. Bands may still carry slot tints (card--2 / card--3). */
|
|
113
113
|
.band-stack {
|
|
114
114
|
display: grid;
|
|
115
|
-
border: var(--border-w) solid var(--card-border);
|
|
116
|
-
border-radius: var(--r-card);
|
|
115
|
+
border: var(--border-w) solid var(--band-stack-border, var(--card-border));
|
|
116
|
+
border-radius: var(--band-stack-radius, var(--r-card));
|
|
117
117
|
overflow: hidden;
|
|
118
118
|
}
|
|
119
119
|
.band-stack > .card--band { border: 0; border-radius: 0; box-shadow: none; }
|
|
@@ -164,7 +164,7 @@
|
|
|
164
164
|
|
|
165
165
|
/* ---- picker: horizontal snap picker, centre value big ----
|
|
166
166
|
<div class="picker"><div class="picker__rail"><button class="picker__item">100</button>…</div><span class="picker__unit">ml</span></div> */
|
|
167
|
-
.picker { display: grid; gap: var(--sp-1); justify-items: center; position: relative; }
|
|
167
|
+
.picker { display: grid; gap: var(--picker-gap, var(--sp-1)); justify-items: center; position: relative; }
|
|
168
168
|
.picker__rail {
|
|
169
169
|
width: 100%;
|
|
170
170
|
display: grid;
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
/* side padding = one third of the rail, so the first and last value can sit
|
|
173
173
|
in the centre; the content box is then one third wide, and each column
|
|
174
174
|
fills it (percent columns resolve against the content box) */
|
|
175
|
-
padding-inline: calc(100% / 3);
|
|
175
|
+
padding-inline: var(--picker-rail-pad-x, calc(100% / 3));
|
|
176
176
|
grid-auto-columns: 100%;
|
|
177
177
|
overflow-x: auto;
|
|
178
178
|
scroll-snap-type: x mandatory;
|
|
@@ -185,8 +185,8 @@
|
|
|
185
185
|
border: 0;
|
|
186
186
|
background: transparent;
|
|
187
187
|
color: inherit;
|
|
188
|
-
padding: var(--sp-2) 0;
|
|
189
|
-
font: var(--type-stat);
|
|
188
|
+
padding: var(--picker-item-pad-y, var(--sp-2)) var(--picker-item-pad-x, 0);
|
|
189
|
+
font: var(--picker-item-font, var(--type-stat));
|
|
190
190
|
letter-spacing: var(--track-display);
|
|
191
191
|
font-variant-numeric: tabular-nums;
|
|
192
192
|
opacity: 0.3;
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
left: calc(100% / 3);
|
|
206
206
|
}
|
|
207
207
|
.picker::after { left: auto; right: calc(100% / 3); }
|
|
208
|
-
.picker__unit { font: var(--type-caption); color: var(--card-muted); }
|
|
208
|
+
.picker__unit { font: var(--picker-unit-font, var(--type-caption)); color: var(--picker-unit-ink, var(--card-muted)); }
|
|
209
209
|
.card--3 .picker__unit { color: inherit; opacity: 0.7; }
|
|
210
210
|
/* the scrolled-to item lights up by position — no JS */
|
|
211
211
|
@supports (animation-timeline: view(x)) {
|
|
@@ -221,30 +221,30 @@
|
|
|
221
221
|
.badge {
|
|
222
222
|
display: inline-grid;
|
|
223
223
|
place-items: center;
|
|
224
|
-
min-width: var(--badge);
|
|
225
|
-
height: var(--badge);
|
|
226
|
-
padding: 0 var(--sp-2);
|
|
227
|
-
border-radius: var(--r-chip);
|
|
228
|
-
background: var(--accent);
|
|
229
|
-
color: var(--on-accent);
|
|
230
|
-
font: var(--type-label);
|
|
224
|
+
min-width: var(--badge-min-w, var(--badge));
|
|
225
|
+
height: var(--badge-h, var(--badge));
|
|
226
|
+
padding: var(--badge-pad-y, 0) var(--badge-pad-x, var(--sp-2));
|
|
227
|
+
border-radius: var(--badge-radius, var(--r-chip));
|
|
228
|
+
background: var(--badge-bg, var(--accent));
|
|
229
|
+
color: var(--badge-ink, var(--on-accent));
|
|
230
|
+
font: var(--badge-font, var(--type-label));
|
|
231
231
|
font-variant-numeric: tabular-nums;
|
|
232
232
|
vertical-align: middle;
|
|
233
233
|
}
|
|
234
|
-
.badge--soft { background: var(--ink-tint); color: inherit; }
|
|
234
|
+
.badge--soft { background: var(--badge-soft-bg, var(--ink-tint)); color: inherit; }
|
|
235
235
|
|
|
236
236
|
/* ---- bars: three or four bars with a count on top — the glance chart ----
|
|
237
237
|
<div class="bars"><div class="bar" style="--v: 16"><span>+16</span></div>… --max on the parent */
|
|
238
|
-
.bars { --max: 20; --_h: 5rem; display: flex; align-items: end; gap: var(--sp-2); height: calc(var(--_h) + var(--sp-8)); }
|
|
238
|
+
.bars { --max: 20; --_h: 5rem; display: flex; align-items: end; gap: var(--bars-gap, var(--sp-2)); height: calc(var(--_h) + var(--sp-8)); }
|
|
239
239
|
.bar {
|
|
240
240
|
flex: 1;
|
|
241
241
|
min-width: 0;
|
|
242
242
|
display: grid;
|
|
243
243
|
align-content: end;
|
|
244
244
|
justify-items: center;
|
|
245
|
-
gap: var(--sp-1);
|
|
245
|
+
gap: var(--bar-gap, var(--sp-1));
|
|
246
246
|
height: 100%;
|
|
247
|
-
font: var(--type-caption);
|
|
247
|
+
font: var(--bar-font, var(--type-caption));
|
|
248
248
|
font-weight: 700;
|
|
249
249
|
}
|
|
250
250
|
.bar::after {
|
package/css/people.css
CHANGED
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
border-radius: 50%;
|
|
16
16
|
display: grid;
|
|
17
17
|
place-items: center;
|
|
18
|
-
background: var(--card-2-bg);
|
|
19
|
-
color: var(--card-2-ink);
|
|
20
|
-
font: var(--type-label);
|
|
18
|
+
background: var(--avatar-bg, var(--card-2-bg));
|
|
19
|
+
color: var(--avatar-ink, var(--card-2-ink));
|
|
20
|
+
font: var(--avatar-font, var(--type-label));
|
|
21
21
|
font-size: calc(var(--_size) * 0.3);
|
|
22
22
|
text-transform: uppercase;
|
|
23
23
|
letter-spacing: 0.02em;
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
.avatar--lg { --_size: var(--avatar-lg); }
|
|
31
31
|
.avatar--xl { --_size: var(--avatar-xl); } /* sheet head icon ring */
|
|
32
32
|
/* outline avatar: no fill, an edge — icons in a ring, "add" slots */
|
|
33
|
-
.avatar--outline { background: transparent; color: inherit; border: var(--border-w) solid var(--outline); }
|
|
34
|
-
.avatar--add { background: transparent; color: inherit; border: var(--border-w) dashed var(--outline); cursor: pointer; }
|
|
33
|
+
.avatar--outline { background: transparent; color: inherit; border: var(--border-w) solid var(--avatar-outline-border, var(--outline)); }
|
|
34
|
+
.avatar--add { background: transparent; color: inherit; border: var(--border-w) dashed var(--avatar-add-border, var(--outline)); cursor: pointer; }
|
|
35
35
|
/* accent avatar: the "+7" tail, the selected person */
|
|
36
|
-
.avatar--on { background: var(--accent); color: var(--on-accent); }
|
|
36
|
+
.avatar--on { background: var(--avatar-on-bg, var(--accent)); color: var(--avatar-on-ink, var(--on-accent)); }
|
|
37
37
|
/* halo: faint concentric rings behind a hero avatar (decorative) */
|
|
38
38
|
.avatar--halo::before {
|
|
39
39
|
content: "";
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
<div class="avatar-pick"><button class="avatar-pick__item"><span class="avatar avatar--lg avatar--add">+</span><span class="avatar-pick__name">Add</span><span class="avatar-pick__role">member</span></button>…</div> */
|
|
56
56
|
.avatar-pick {
|
|
57
57
|
display: flex;
|
|
58
|
-
gap: var(--sp-4);
|
|
58
|
+
gap: var(--avatar-pick-gap, var(--sp-4));
|
|
59
59
|
overflow-x: auto;
|
|
60
60
|
scroll-snap-type: x proximity;
|
|
61
61
|
scrollbar-width: none; /* starts at the card's padding edge, like every row */
|
|
@@ -64,16 +64,16 @@
|
|
|
64
64
|
.avatar-pick__item {
|
|
65
65
|
scroll-snap-align: start;
|
|
66
66
|
flex: none;
|
|
67
|
-
width: var(--avatar-lg);
|
|
67
|
+
width: var(--avatar-pick-item-w, var(--avatar-lg));
|
|
68
68
|
display: grid;
|
|
69
69
|
justify-items: center;
|
|
70
|
-
gap: var(--sp-2);
|
|
70
|
+
gap: var(--avatar-pick-item-gap, var(--sp-2));
|
|
71
71
|
border: 0;
|
|
72
72
|
background: transparent;
|
|
73
73
|
color: inherit;
|
|
74
74
|
padding: 0;
|
|
75
75
|
text-align: center;
|
|
76
76
|
}
|
|
77
|
-
.avatar-pick__name { font: var(--type-label); font-size: var(--fs-sm); }
|
|
78
|
-
.avatar-pick__role { font: var(--type-caption); color: var(--card-muted); margin-top: calc(-1 * var(--sp-1)); }
|
|
77
|
+
.avatar-pick__name { font: var(--avatar-pick-name-font, var(--type-label)); font-size: var(--avatar-pick-name-font-size, var(--fs-sm)); }
|
|
78
|
+
.avatar-pick__role { font: var(--avatar-pick-role-font, var(--type-caption)); color: var(--avatar-pick-role-ink, var(--card-muted)); margin-top: calc(-1 * var(--sp-1)); }
|
|
79
79
|
.card--3 .avatar-pick__role { color: inherit; opacity: 0.7; }
|
package/css/sheet.css
CHANGED
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
overflow: clip;
|
|
81
81
|
border-radius: var(--r-card) var(--r-card) 0 0;
|
|
82
82
|
border-bottom: 0;
|
|
83
|
-
box-shadow: var(--shadow-sheet);
|
|
83
|
+
box-shadow: var(--sheet-shadow, var(--shadow-sheet));
|
|
84
84
|
}
|
|
85
85
|
.sheet--full { --_y: 0%; --_cover: 0rem; }
|
|
86
86
|
.sheet--half { --_y: calc(var(--sheet-half) * 100%); --_cover: calc(var(--sheet-half) * var(--_box)); }
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
opacity: 0.3;
|
|
179
179
|
width: var(--tap-sm);
|
|
180
180
|
height: var(--_handle);
|
|
181
|
-
border-radius: var(--r-chip);
|
|
181
|
+
border-radius: var(--sheet-handle-radius, var(--r-chip));
|
|
182
182
|
margin: 0 auto;
|
|
183
183
|
padding: 0;
|
|
184
184
|
touch-action: none;
|
|
@@ -210,8 +210,8 @@
|
|
|
210
210
|
min-height: var(--tap);
|
|
211
211
|
text-align: center;
|
|
212
212
|
}
|
|
213
|
-
.sheet__title { font: var(--type-h2); letter-spacing: var(--track-h2); margin: 0; }
|
|
214
|
-
.sheet__sub { font: var(--type-caption); color: var(--card-muted); }
|
|
213
|
+
.sheet__title { font: var(--sheet-title-font, var(--type-h2)); letter-spacing: var(--track-h2); margin: 0; }
|
|
214
|
+
.sheet__sub { font: var(--sheet-sub-font, var(--type-caption)); color: var(--sheet-sub-ink, var(--card-muted)); }
|
|
215
215
|
|
|
216
216
|
/* ============================================================
|
|
217
217
|
.sheet-stage — the overlay stage: a page-height box the sheet
|
|
@@ -233,7 +233,7 @@
|
|
|
233
233
|
margin-inline: auto;
|
|
234
234
|
overflow: clip; /* not hidden: a clipped box is not a scroll container, so revealing a focused field never shifts the stage */
|
|
235
235
|
container-type: size; /* the sheet's body reads this box's height as 100cqh (--_box above) */
|
|
236
|
-
background: var(--surface);
|
|
236
|
+
background: var(--sheet-stage-bg, var(--surface));
|
|
237
237
|
}
|
|
238
238
|
/* on an app screen the stage is the page: it takes the screen's inset back (edge to
|
|
239
239
|
edge, like a step) and, after a fixed .appbar, the room the screen reserved for
|
|
@@ -268,7 +268,7 @@
|
|
|
268
268
|
position: absolute;
|
|
269
269
|
inset: 0;
|
|
270
270
|
isolation: isolate; /* the ring and the hint stack inside the map only — a sheet over the map covers them */
|
|
271
|
-
color: var(--on-surface);
|
|
271
|
+
color: var(--map-ink, var(--on-surface));
|
|
272
272
|
background:
|
|
273
273
|
repeating-linear-gradient(75deg, transparent 0 5.5rem, var(--hairline) 5.5rem 6.25rem),
|
|
274
274
|
repeating-linear-gradient(-18deg, transparent 0 8.75rem, var(--ink-tint) 8.75rem 9.25rem),
|
|
@@ -286,9 +286,9 @@
|
|
|
286
286
|
height: var(--map-ring);
|
|
287
287
|
translate: -50% -50%;
|
|
288
288
|
border-radius: 50%;
|
|
289
|
-
border: var(--border-w) solid var(--accent);
|
|
290
|
-
background: color-mix(in srgb, var(--accent) 22%, transparent);
|
|
291
|
-
box-shadow: var(--shadow-float);
|
|
289
|
+
border: var(--border-w) solid var(--map-ring-border, var(--accent));
|
|
290
|
+
background: var(--map-ring-bg, color-mix(in srgb, var(--accent) 22%, transparent));
|
|
291
|
+
box-shadow: var(--map-ring-shadow, var(--shadow-float));
|
|
292
292
|
pointer-events: none;
|
|
293
293
|
z-index: 1; /* above the engine's panes (Leaflet's tiles sit at 200, but inside their own stacking context) */
|
|
294
294
|
}
|
|
@@ -297,10 +297,10 @@
|
|
|
297
297
|
right: var(--sp-2);
|
|
298
298
|
bottom: var(--sp-2);
|
|
299
299
|
padding: var(--sp-0) var(--sp-2);
|
|
300
|
-
border-radius: var(--r-chip);
|
|
301
|
-
background: color-mix(in srgb, var(--surface) 80%, transparent);
|
|
302
|
-
color: var(--on-surface-muted);
|
|
303
|
-
font: var(--type-caption);
|
|
300
|
+
border-radius: var(--map-credit-radius, var(--r-chip));
|
|
301
|
+
background: var(--map-credit-bg, color-mix(in srgb, var(--surface) 80%, transparent));
|
|
302
|
+
color: var(--map-credit-ink, var(--on-surface-muted));
|
|
303
|
+
font: var(--map-credit-font, var(--type-caption));
|
|
304
304
|
pointer-events: none;
|
|
305
305
|
z-index: 1;
|
|
306
306
|
}
|
|
@@ -311,12 +311,12 @@
|
|
|
311
311
|
translate: -50% 0;
|
|
312
312
|
max-width: calc(100% - 2 * var(--sp-4));
|
|
313
313
|
padding: var(--sp-2) var(--sp-4);
|
|
314
|
-
border-radius: var(--r-chip);
|
|
315
|
-
background: var(--card-3-bg);
|
|
316
|
-
color: var(--card-3-ink);
|
|
317
|
-
font: var(--type-label);
|
|
314
|
+
border-radius: var(--map-hint-radius, var(--r-chip));
|
|
315
|
+
background: var(--map-hint-bg, var(--card-3-bg));
|
|
316
|
+
color: var(--map-hint-ink, var(--card-3-ink));
|
|
317
|
+
font: var(--map-hint-font, var(--type-label));
|
|
318
318
|
text-align: center;
|
|
319
|
-
box-shadow: var(--shadow-float);
|
|
319
|
+
box-shadow: var(--map-hint-shadow, var(--shadow-float));
|
|
320
320
|
pointer-events: none;
|
|
321
321
|
z-index: 1;
|
|
322
322
|
}
|
|
@@ -330,7 +330,7 @@
|
|
|
330
330
|
the sheet gives it up itself, as --_lift — the same token a raised sheet floats on. */
|
|
331
331
|
.sheet-stage > .sheet { --_lift: var(--kb, 0rem); bottom: var(--_lift); }
|
|
332
332
|
.sheet-stage > .sheet--raised { --_lift: calc(var(--tap-lg) + var(--kb, 0rem)); }
|
|
333
|
-
.sheet--raised { --_lift: var(--tap-lg); bottom: var(--_lift); border-radius: var(--r-card); border-bottom: var(--border-w) solid var(--card-border); }
|
|
333
|
+
.sheet--raised { --_lift: var(--tap-lg); bottom: var(--_lift); border-radius: var(--sheet-raised-radius, var(--r-card)); border-bottom: var(--border-w) solid var(--card-border); }
|
|
334
334
|
.sheet-stage__foot {
|
|
335
335
|
position: absolute;
|
|
336
336
|
inset-inline: 0;
|
|
@@ -339,8 +339,8 @@
|
|
|
339
339
|
margin: 0;
|
|
340
340
|
display: grid;
|
|
341
341
|
place-items: center;
|
|
342
|
-
font: var(--type-caption);
|
|
343
|
-
color: var(--card-3-ink);
|
|
342
|
+
font: var(--sheet-stage-foot-font, var(--type-caption));
|
|
343
|
+
color: var(--sheet-stage-foot-ink, var(--card-3-ink));
|
|
344
344
|
z-index: 2;
|
|
345
345
|
}
|
|
346
346
|
|
package/css/theme.template.css
CHANGED
|
@@ -4,9 +4,12 @@
|
|
|
4
4
|
Not part of the bundle: copy this file into the project as its own
|
|
5
5
|
`theme.css` and load it AFTER cardds.css. It is the whole public
|
|
6
6
|
surface of the system — the four size bases and the colour roles.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
Widest first: a BASE moves a whole family; a role / root token one meaning
|
|
8
|
+
everywhere (--accent, --btn-h, --header-h…); a KNOB one component
|
|
9
|
+
(--btn-pad-x, --chip-bg… — docs/knobs.md lists them; also settable on any
|
|
10
|
+
element, for the components inside it). Never a step of the scale
|
|
11
|
+
(--sp-4, --fs-h1, --r-card), a multiplier, a private --_* or a published
|
|
12
|
+
value (--card-pad, --bar-reserve, --sheet-*).
|
|
10
13
|
|
|
11
14
|
The values below are the defaults (the wireframe): as shipped, this
|
|
12
15
|
file changes nothing (tests/tokens.spec.js holds it to that).
|
package/dist/actions/Btn.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export interface BtnProps extends
|
|
1
|
+
import { type ComponentProps } from 'react';
|
|
2
|
+
export interface BtnProps extends ComponentProps<'button'> {
|
|
3
3
|
/** the filled accent button — the one forward move */
|
|
4
4
|
primary?: boolean;
|
|
5
5
|
/** ink on whatever it sits on, a faint outline */
|
|
@@ -16,76 +16,128 @@ export interface BtnProps extends ComponentPropsWithoutRef<'button'> {
|
|
|
16
16
|
* In a CardFoot up to four share the line; in an ActionBar it takes the width. An Icon xs may lead or trail the label.
|
|
17
17
|
*/
|
|
18
18
|
export declare function Btn({ primary, quiet, block, xl, href, className, type, ...rest }: BtnProps): import("react").DetailedReactHTMLElement<{
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
ref?: import("react").Ref<HTMLButtonElement> | undefined;
|
|
20
|
+
key?: import("react").Key | null | undefined;
|
|
21
|
+
disabled?: boolean | undefined;
|
|
22
|
+
form?: string | undefined;
|
|
23
|
+
formAction?: string | ((formData: FormData) => void | Promise<void>) | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS] | undefined;
|
|
24
|
+
formEncType?: string | undefined;
|
|
25
|
+
formMethod?: string | undefined;
|
|
26
|
+
formNoValidate?: boolean | undefined;
|
|
27
|
+
formTarget?: string | undefined;
|
|
28
|
+
name?: string | undefined;
|
|
29
|
+
value?: string | readonly string[] | number | undefined;
|
|
30
|
+
defaultChecked?: boolean | undefined;
|
|
31
|
+
defaultValue?: string | number | readonly string[] | undefined;
|
|
32
|
+
suppressContentEditableWarning?: boolean | undefined;
|
|
33
|
+
suppressHydrationWarning?: boolean | undefined;
|
|
34
|
+
accessKey?: string | undefined;
|
|
35
|
+
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {});
|
|
36
|
+
autoFocus?: boolean | undefined;
|
|
37
|
+
contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
38
|
+
contextMenu?: string | undefined;
|
|
39
|
+
dir?: string | undefined;
|
|
40
|
+
draggable?: (boolean | "true" | "false") | undefined;
|
|
41
|
+
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
|
|
42
|
+
hidden?: boolean | undefined;
|
|
43
|
+
id?: string | undefined;
|
|
44
|
+
lang?: string | undefined;
|
|
45
|
+
nonce?: string | undefined;
|
|
46
|
+
slot?: string | undefined;
|
|
47
|
+
spellCheck?: (boolean | "true" | "false") | undefined;
|
|
21
48
|
style?: import("react").CSSProperties | undefined;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
lang?: string | undefined | undefined;
|
|
27
|
-
name?: string | undefined | undefined;
|
|
28
|
-
nonce?: string | undefined | undefined;
|
|
29
|
-
part?: string | undefined | undefined;
|
|
49
|
+
tabIndex?: number | undefined;
|
|
50
|
+
title?: string | undefined;
|
|
51
|
+
translate?: "yes" | "no" | undefined;
|
|
52
|
+
radioGroup?: string | undefined;
|
|
30
53
|
role?: import("react").AriaRole | undefined;
|
|
31
|
-
|
|
32
|
-
|
|
54
|
+
about?: string | undefined;
|
|
55
|
+
content?: string | undefined;
|
|
56
|
+
datatype?: string | undefined;
|
|
57
|
+
inlist?: any;
|
|
58
|
+
prefix?: string | undefined;
|
|
59
|
+
property?: string | undefined;
|
|
60
|
+
rel?: string | undefined;
|
|
61
|
+
resource?: string | undefined;
|
|
62
|
+
rev?: string | undefined;
|
|
63
|
+
typeof?: string | undefined;
|
|
64
|
+
vocab?: string | undefined;
|
|
65
|
+
autoCorrect?: string | undefined;
|
|
66
|
+
autoSave?: string | undefined;
|
|
67
|
+
color?: string | undefined;
|
|
68
|
+
itemProp?: string | undefined;
|
|
69
|
+
itemScope?: boolean | undefined;
|
|
70
|
+
itemType?: string | undefined;
|
|
71
|
+
itemID?: string | undefined;
|
|
72
|
+
itemRef?: string | undefined;
|
|
73
|
+
results?: number | undefined;
|
|
74
|
+
security?: string | undefined;
|
|
75
|
+
unselectable?: "on" | "off" | undefined;
|
|
76
|
+
popover?: "" | "auto" | "manual" | "hint" | undefined;
|
|
77
|
+
popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
|
|
78
|
+
popoverTarget?: string | undefined;
|
|
79
|
+
inert?: boolean | undefined;
|
|
80
|
+
inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
|
|
81
|
+
is?: string | undefined;
|
|
82
|
+
exportparts?: string | undefined;
|
|
83
|
+
part?: string | undefined;
|
|
84
|
+
"aria-activedescendant"?: string | undefined;
|
|
33
85
|
"aria-atomic"?: (boolean | "true" | "false") | undefined;
|
|
34
|
-
"aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined
|
|
35
|
-
"aria-braillelabel"?: string | undefined
|
|
36
|
-
"aria-brailleroledescription"?: string | undefined
|
|
86
|
+
"aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
|
|
87
|
+
"aria-braillelabel"?: string | undefined;
|
|
88
|
+
"aria-brailleroledescription"?: string | undefined;
|
|
37
89
|
"aria-busy"?: (boolean | "true" | "false") | undefined;
|
|
38
|
-
"aria-checked"?: boolean | "false" | "mixed" | "true" | undefined
|
|
39
|
-
"aria-colcount"?: number | undefined
|
|
40
|
-
"aria-colindex"?: number | undefined
|
|
41
|
-
"aria-colindextext"?: string | undefined
|
|
42
|
-
"aria-colspan"?: number | undefined
|
|
43
|
-
"aria-controls"?: string | undefined
|
|
44
|
-
"aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined
|
|
45
|
-
"aria-describedby"?: string | undefined
|
|
46
|
-
"aria-description"?: string | undefined
|
|
47
|
-
"aria-details"?: string | undefined
|
|
90
|
+
"aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
|
|
91
|
+
"aria-colcount"?: number | undefined;
|
|
92
|
+
"aria-colindex"?: number | undefined;
|
|
93
|
+
"aria-colindextext"?: string | undefined;
|
|
94
|
+
"aria-colspan"?: number | undefined;
|
|
95
|
+
"aria-controls"?: string | undefined;
|
|
96
|
+
"aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
|
|
97
|
+
"aria-describedby"?: string | undefined;
|
|
98
|
+
"aria-description"?: string | undefined;
|
|
99
|
+
"aria-details"?: string | undefined;
|
|
48
100
|
"aria-disabled"?: (boolean | "true" | "false") | undefined;
|
|
49
|
-
"aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined
|
|
50
|
-
"aria-errormessage"?: string | undefined
|
|
101
|
+
"aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
|
|
102
|
+
"aria-errormessage"?: string | undefined;
|
|
51
103
|
"aria-expanded"?: (boolean | "true" | "false") | undefined;
|
|
52
|
-
"aria-flowto"?: string | undefined
|
|
104
|
+
"aria-flowto"?: string | undefined;
|
|
53
105
|
"aria-grabbed"?: (boolean | "true" | "false") | undefined;
|
|
54
|
-
"aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined
|
|
106
|
+
"aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
|
|
55
107
|
"aria-hidden"?: (boolean | "true" | "false") | undefined;
|
|
56
|
-
"aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined
|
|
57
|
-
"aria-keyshortcuts"?: string | undefined
|
|
58
|
-
"aria-label"?: string | undefined
|
|
59
|
-
"aria-labelledby"?: string | undefined
|
|
60
|
-
"aria-level"?: number | undefined
|
|
61
|
-
"aria-live"?: "off" | "assertive" | "polite" | undefined
|
|
108
|
+
"aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
|
|
109
|
+
"aria-keyshortcuts"?: string | undefined;
|
|
110
|
+
"aria-label"?: string | undefined;
|
|
111
|
+
"aria-labelledby"?: string | undefined;
|
|
112
|
+
"aria-level"?: number | undefined;
|
|
113
|
+
"aria-live"?: "off" | "assertive" | "polite" | undefined;
|
|
62
114
|
"aria-modal"?: (boolean | "true" | "false") | undefined;
|
|
63
115
|
"aria-multiline"?: (boolean | "true" | "false") | undefined;
|
|
64
116
|
"aria-multiselectable"?: (boolean | "true" | "false") | undefined;
|
|
65
|
-
"aria-orientation"?: "horizontal" | "vertical" | undefined
|
|
66
|
-
"aria-owns"?: string | undefined
|
|
67
|
-
"aria-placeholder"?: string | undefined
|
|
68
|
-
"aria-posinset"?: number | undefined
|
|
69
|
-
"aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined
|
|
117
|
+
"aria-orientation"?: "horizontal" | "vertical" | undefined;
|
|
118
|
+
"aria-owns"?: string | undefined;
|
|
119
|
+
"aria-placeholder"?: string | undefined;
|
|
120
|
+
"aria-posinset"?: number | undefined;
|
|
121
|
+
"aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
|
|
70
122
|
"aria-readonly"?: (boolean | "true" | "false") | undefined;
|
|
71
|
-
"aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined
|
|
123
|
+
"aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
|
|
72
124
|
"aria-required"?: (boolean | "true" | "false") | undefined;
|
|
73
|
-
"aria-roledescription"?: string | undefined
|
|
74
|
-
"aria-rowcount"?: number | undefined
|
|
75
|
-
"aria-rowindex"?: number | undefined
|
|
76
|
-
"aria-rowindextext"?: string | undefined
|
|
77
|
-
"aria-rowspan"?: number | undefined
|
|
125
|
+
"aria-roledescription"?: string | undefined;
|
|
126
|
+
"aria-rowcount"?: number | undefined;
|
|
127
|
+
"aria-rowindex"?: number | undefined;
|
|
128
|
+
"aria-rowindextext"?: string | undefined;
|
|
129
|
+
"aria-rowspan"?: number | undefined;
|
|
78
130
|
"aria-selected"?: (boolean | "true" | "false") | undefined;
|
|
79
|
-
"aria-setsize"?: number | undefined
|
|
80
|
-
"aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined
|
|
81
|
-
"aria-valuemax"?: number | undefined
|
|
82
|
-
"aria-valuemin"?: number | undefined
|
|
83
|
-
"aria-valuenow"?: number | undefined
|
|
84
|
-
"aria-valuetext"?: string | undefined
|
|
85
|
-
children?: import("react").ReactNode;
|
|
131
|
+
"aria-setsize"?: number | undefined;
|
|
132
|
+
"aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
|
|
133
|
+
"aria-valuemax"?: number | undefined;
|
|
134
|
+
"aria-valuemin"?: number | undefined;
|
|
135
|
+
"aria-valuenow"?: number | undefined;
|
|
136
|
+
"aria-valuetext"?: string | undefined;
|
|
137
|
+
children?: import("react").ReactNode | undefined;
|
|
86
138
|
dangerouslySetInnerHTML?: {
|
|
87
139
|
__html: string | TrustedHTML;
|
|
88
|
-
} | undefined
|
|
140
|
+
} | undefined;
|
|
89
141
|
onCopy?: import("react").ClipboardEventHandler<HTMLButtonElement> | undefined;
|
|
90
142
|
onCopyCapture?: import("react").ClipboardEventHandler<HTMLButtonElement> | undefined;
|
|
91
143
|
onCut?: import("react").ClipboardEventHandler<HTMLButtonElement> | undefined;
|
|
@@ -254,58 +306,7 @@ export declare function Btn({ primary, quiet, block, xl, href, className, type,
|
|
|
254
306
|
onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLButtonElement> | undefined;
|
|
255
307
|
onTransitionStart?: import("react").TransitionEventHandler<HTMLButtonElement> | undefined;
|
|
256
308
|
onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLButtonElement> | undefined;
|
|
257
|
-
key?: import("react").Key | null | undefined;
|
|
258
|
-
defaultChecked?: boolean | undefined | undefined;
|
|
259
|
-
defaultValue?: string | number | readonly string[] | undefined;
|
|
260
|
-
suppressContentEditableWarning?: boolean | undefined | undefined;
|
|
261
|
-
accessKey?: string | undefined | undefined;
|
|
262
|
-
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
|
|
263
|
-
autoFocus?: boolean | undefined | undefined;
|
|
264
|
-
contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
265
|
-
contextMenu?: string | undefined | undefined;
|
|
266
|
-
dir?: string | undefined | undefined;
|
|
267
|
-
draggable?: (boolean | "true" | "false") | undefined;
|
|
268
|
-
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
269
|
-
hidden?: boolean | undefined | undefined;
|
|
270
|
-
spellCheck?: (boolean | "true" | "false") | undefined;
|
|
271
|
-
translate?: "yes" | "no" | undefined | undefined;
|
|
272
|
-
radioGroup?: string | undefined | undefined;
|
|
273
|
-
about?: string | undefined | undefined;
|
|
274
|
-
content?: string | undefined | undefined;
|
|
275
|
-
datatype?: string | undefined | undefined;
|
|
276
|
-
inlist?: any;
|
|
277
|
-
prefix?: string | undefined | undefined;
|
|
278
|
-
property?: string | undefined | undefined;
|
|
279
|
-
rel?: string | undefined | undefined;
|
|
280
|
-
resource?: string | undefined | undefined;
|
|
281
|
-
rev?: string | undefined | undefined;
|
|
282
|
-
typeof?: string | undefined | undefined;
|
|
283
|
-
vocab?: string | undefined | undefined;
|
|
284
|
-
autoCorrect?: string | undefined | undefined;
|
|
285
|
-
autoSave?: string | undefined | undefined;
|
|
286
|
-
itemProp?: string | undefined | undefined;
|
|
287
|
-
itemScope?: boolean | undefined | undefined;
|
|
288
|
-
itemType?: string | undefined | undefined;
|
|
289
|
-
itemID?: string | undefined | undefined;
|
|
290
|
-
itemRef?: string | undefined | undefined;
|
|
291
|
-
results?: number | undefined | undefined;
|
|
292
|
-
security?: string | undefined | undefined;
|
|
293
|
-
unselectable?: "on" | "off" | undefined | undefined;
|
|
294
|
-
popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
|
|
295
|
-
popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
|
|
296
|
-
popoverTarget?: string | undefined | undefined;
|
|
297
|
-
inert?: boolean | undefined | undefined;
|
|
298
|
-
inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
|
|
299
|
-
is?: string | undefined | undefined;
|
|
300
|
-
exportparts?: string | undefined | undefined;
|
|
301
|
-
disabled?: boolean | undefined | undefined;
|
|
302
|
-
formAction?: string | ((formData: FormData) => void | Promise<void>) | undefined;
|
|
303
|
-
formEncType?: string | undefined | undefined;
|
|
304
|
-
formMethod?: string | undefined | undefined;
|
|
305
|
-
formNoValidate?: boolean | undefined | undefined;
|
|
306
|
-
formTarget?: string | undefined | undefined;
|
|
307
|
-
value?: string | number | readonly string[] | undefined;
|
|
308
309
|
href: string | undefined;
|
|
309
310
|
type: "button" | "reset" | "submit" | undefined;
|
|
310
311
|
className: string;
|
|
311
|
-
},
|
|
312
|
+
}, HTMLButtonElement>;
|
package/dist/actions/BtnRow.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export interface BtnRowProps extends
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
export interface BtnRowProps extends ComponentProps<'div'> {
|
|
3
3
|
}
|
|
4
4
|
/** BtnRow — twin CTAs inside a card's content sharing the width (Log time · Offer). In a foot use CardFoot instead. */
|
|
5
5
|
export declare function BtnRow({ className, ...rest }: BtnRowProps): import("react").JSX.Element;
|