@usableapp/cardds 0.3.0 → 0.4.1

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.
Files changed (103) hide show
  1. package/README.md +12 -8
  2. package/css/actions.css +38 -27
  3. package/css/base.css +9 -9
  4. package/css/card.css +24 -23
  5. package/css/choice.css +50 -50
  6. package/css/forms.css +18 -18
  7. package/css/journey.css +16 -16
  8. package/css/layover.css +57 -60
  9. package/css/lists.css +52 -43
  10. package/css/media.css +96 -60
  11. package/css/numbers.css +41 -25
  12. package/css/people.css +11 -11
  13. package/css/sheet.css +28 -24
  14. package/css/stack.css +3 -3
  15. package/css/theme.template.css +6 -3
  16. package/dist/actions/Btn.d.ts +109 -108
  17. package/dist/actions/BtnRow.d.ts +2 -2
  18. package/dist/actions/Chip.d.ts +102 -101
  19. package/dist/actions/Dot.d.ts +2 -2
  20. package/dist/actions/Dropdown.d.ts +4 -4
  21. package/dist/actions/Fab.d.ts +2 -2
  22. package/dist/actions/IconBtn.d.ts +107 -106
  23. package/dist/actions/Link.d.ts +105 -104
  24. package/dist/actions/Segment.d.ts +3 -3
  25. package/dist/cardds.css +443 -369
  26. package/dist/cards/Card.d.ts +99 -98
  27. package/dist/cards/CardFoot.d.ts +2 -2
  28. package/dist/cards/CardHead.d.ts +2 -2
  29. package/dist/cards/CardParts.d.ts +7 -7
  30. package/dist/cards/Placeholder.d.ts +2 -2
  31. package/dist/cards/Stat.d.ts +7 -5
  32. package/dist/cards/Stat.js +2 -2
  33. package/dist/choice/Calendar.d.ts +2 -2
  34. package/dist/choice/Check.d.ts +3 -3
  35. package/dist/choice/DayStrip.d.ts +3 -3
  36. package/dist/choice/Mood.d.ts +2 -2
  37. package/dist/choice/Slider.d.ts +2 -2
  38. package/dist/forms/AddRow.d.ts +2 -2
  39. package/dist/forms/Composer.d.ts +2 -2
  40. package/dist/forms/Field.d.ts +2 -2
  41. package/dist/forms/FileBtn.d.ts +2 -2
  42. package/dist/forms/Pin.d.ts +2 -2
  43. package/dist/index.d.ts +2 -1
  44. package/dist/index.js +2 -1
  45. package/dist/journey/NoteRow.d.ts +2 -2
  46. package/dist/journey/Route.d.ts +2 -2
  47. package/dist/journey/TileBadge.d.ts +2 -2
  48. package/dist/layover/Banner.d.ts +2 -2
  49. package/dist/layover/Callout.d.ts +2 -2
  50. package/dist/layover/Deck.d.ts +3 -3
  51. package/dist/lists/Bubble.d.ts +3 -3
  52. package/dist/lists/Kv.d.ts +5 -5
  53. package/dist/lists/Legend.d.ts +3 -3
  54. package/dist/lists/Row.d.ts +14 -285
  55. package/dist/lists/Row.js +10 -3
  56. package/dist/lists/Timeline.d.ts +3 -3
  57. package/dist/media/MapArea.d.ts +2 -2
  58. package/dist/media/Mosaic.d.ts +3 -3
  59. package/dist/media/Postcard.d.ts +17 -7
  60. package/dist/media/Postcard.js +8 -5
  61. package/dist/media/Quote.d.ts +2 -2
  62. package/dist/media/Tile.d.ts +5 -4
  63. package/dist/numbers/Badge.d.ts +2 -2
  64. package/dist/numbers/Band.d.ts +3 -3
  65. package/dist/numbers/Bars.d.ts +3 -3
  66. package/dist/numbers/DotGrid.d.ts +2 -2
  67. package/dist/numbers/Picker.d.ts +3 -3
  68. package/dist/numbers/Progress.d.ts +9 -0
  69. package/dist/numbers/Progress.js +7 -0
  70. package/dist/numbers/Ring.d.ts +2 -2
  71. package/dist/numbers/Track.d.ts +3 -3
  72. package/dist/people/Avatar.d.ts +100 -99
  73. package/dist/people/AvatarPick.d.ts +3 -3
  74. package/dist/scaffold/ActionBar.d.ts +3 -3
  75. package/dist/scaffold/AppBar.d.ts +2 -2
  76. package/dist/scaffold/BaseContent.d.ts +3 -3
  77. package/dist/scaffold/Centre.d.ts +3 -3
  78. package/dist/scaffold/EmptyState.d.ts +2 -2
  79. package/dist/scaffold/FilterRow.d.ts +2 -2
  80. package/dist/scaffold/FloatBar.d.ts +105 -104
  81. package/dist/scaffold/PagerAt.d.ts +2 -2
  82. package/dist/scaffold/Screen.d.ts +100 -99
  83. package/dist/scaffold/TopBar.d.ts +2 -2
  84. package/dist/sheets/Drawer.d.ts +7 -7
  85. package/dist/sheets/Drawer.js +1 -1
  86. package/dist/sheets/Sheet.d.ts +3 -5
  87. package/dist/sheets/Sheet.js +2 -2
  88. package/dist/sheets/SheetBody.d.ts +2 -2
  89. package/dist/sheets/SheetHead.d.ts +2 -2
  90. package/dist/sheets/SheetStack.d.ts +5 -5
  91. package/dist/sheets/SheetStack.js +3 -3
  92. package/dist/sheets/SheetStage.d.ts +5 -7
  93. package/dist/sheets/SheetStage.js +3 -3
  94. package/dist/sheets/StackBack.d.ts +7 -0
  95. package/dist/sheets/StackBack.js +7 -0
  96. package/dist/sheets/Step.d.ts +2 -2
  97. package/dist/type/Icon.d.ts +22 -7
  98. package/dist/type/Icon.js +27 -4
  99. package/dist/type/Text.d.ts +7 -1
  100. package/dist/type/Text.js +2 -2
  101. package/package.json +3 -2
  102. package/dist/sheets/CardBack.d.ts +0 -7
  103. package/dist/sheets/CardBack.js +0 -7
@@ -1,5 +1,5 @@
1
- import { type ComponentPropsWithoutRef } from 'react';
2
- export interface CardProps extends ComponentPropsWithoutRef<'article'> {
1
+ import { type ComponentProps } from 'react';
2
+ export interface CardProps extends ComponentProps<'article'> {
3
3
  /** the tone slot: 1 (default, light) · 2 (tinted) · 3 (dark / accent — controls invert automatically) */
4
4
  tone?: 1 | 2 | 3;
5
5
  /** compact: a small card inside a card or a sheet body (a note, a promo) */
@@ -26,74 +26,119 @@ export interface CardProps extends ComponentPropsWithoutRef<'article'> {
26
26
  */
27
27
  export declare function Card({ tone, sm, row, cover, fold, centre, band, as, className, ...rest }: CardProps): import("react").DetailedReactHTMLElement<{
28
28
  href?: string;
29
- slot?: string | undefined | undefined;
29
+ ref?: import("react").Ref<HTMLElement> | undefined;
30
+ key?: import("react").Key | null | undefined;
31
+ defaultChecked?: boolean | undefined;
32
+ defaultValue?: string | number | readonly string[] | undefined;
33
+ suppressContentEditableWarning?: boolean | undefined;
34
+ suppressHydrationWarning?: boolean | undefined;
35
+ accessKey?: string | undefined;
36
+ autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {});
37
+ autoFocus?: boolean | undefined;
38
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
39
+ contextMenu?: string | undefined;
40
+ dir?: string | undefined;
41
+ draggable?: (boolean | "true" | "false") | undefined;
42
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
43
+ hidden?: boolean | undefined;
44
+ id?: string | undefined;
45
+ lang?: string | undefined;
46
+ nonce?: string | undefined;
47
+ slot?: string | undefined;
48
+ spellCheck?: (boolean | "true" | "false") | undefined;
30
49
  style?: import("react").CSSProperties | undefined;
31
- title?: string | undefined | undefined;
32
- suppressHydrationWarning?: boolean | undefined | undefined;
33
- color?: string | undefined | undefined;
34
- id?: string | undefined | undefined;
35
- lang?: string | undefined | undefined;
36
- nonce?: string | undefined | undefined;
37
- part?: string | undefined | undefined;
50
+ tabIndex?: number | undefined;
51
+ title?: string | undefined;
52
+ translate?: "yes" | "no" | undefined;
53
+ radioGroup?: string | undefined;
38
54
  role?: import("react").AriaRole | undefined;
39
- tabIndex?: number | undefined | undefined;
40
- "aria-activedescendant"?: string | undefined | undefined;
55
+ about?: string | undefined;
56
+ content?: string | undefined;
57
+ datatype?: string | undefined;
58
+ inlist?: any;
59
+ prefix?: string | undefined;
60
+ property?: string | undefined;
61
+ rel?: string | undefined;
62
+ resource?: string | undefined;
63
+ rev?: string | undefined;
64
+ typeof?: string | undefined;
65
+ vocab?: string | undefined;
66
+ autoCorrect?: string | undefined;
67
+ autoSave?: string | undefined;
68
+ color?: string | undefined;
69
+ itemProp?: string | undefined;
70
+ itemScope?: boolean | undefined;
71
+ itemType?: string | undefined;
72
+ itemID?: string | undefined;
73
+ itemRef?: string | undefined;
74
+ results?: number | undefined;
75
+ security?: string | undefined;
76
+ unselectable?: "on" | "off" | undefined;
77
+ popover?: "" | "auto" | "manual" | "hint" | undefined;
78
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
79
+ popoverTarget?: string | undefined;
80
+ inert?: boolean | undefined;
81
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
82
+ is?: string | undefined;
83
+ exportparts?: string | undefined;
84
+ part?: string | undefined;
85
+ "aria-activedescendant"?: string | undefined;
41
86
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
42
- "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
43
- "aria-braillelabel"?: string | undefined | undefined;
44
- "aria-brailleroledescription"?: string | undefined | undefined;
87
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
88
+ "aria-braillelabel"?: string | undefined;
89
+ "aria-brailleroledescription"?: string | undefined;
45
90
  "aria-busy"?: (boolean | "true" | "false") | undefined;
46
- "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
47
- "aria-colcount"?: number | undefined | undefined;
48
- "aria-colindex"?: number | undefined | undefined;
49
- "aria-colindextext"?: string | undefined | undefined;
50
- "aria-colspan"?: number | undefined | undefined;
51
- "aria-controls"?: string | undefined | undefined;
52
- "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined | undefined;
53
- "aria-describedby"?: string | undefined | undefined;
54
- "aria-description"?: string | undefined | undefined;
55
- "aria-details"?: string | undefined | undefined;
91
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
92
+ "aria-colcount"?: number | undefined;
93
+ "aria-colindex"?: number | undefined;
94
+ "aria-colindextext"?: string | undefined;
95
+ "aria-colspan"?: number | undefined;
96
+ "aria-controls"?: string | undefined;
97
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
98
+ "aria-describedby"?: string | undefined;
99
+ "aria-description"?: string | undefined;
100
+ "aria-details"?: string | undefined;
56
101
  "aria-disabled"?: (boolean | "true" | "false") | undefined;
57
- "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
58
- "aria-errormessage"?: string | undefined | undefined;
102
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
103
+ "aria-errormessage"?: string | undefined;
59
104
  "aria-expanded"?: (boolean | "true" | "false") | undefined;
60
- "aria-flowto"?: string | undefined | undefined;
105
+ "aria-flowto"?: string | undefined;
61
106
  "aria-grabbed"?: (boolean | "true" | "false") | undefined;
62
- "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
107
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
63
108
  "aria-hidden"?: (boolean | "true" | "false") | undefined;
64
- "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
65
- "aria-keyshortcuts"?: string | undefined | undefined;
66
- "aria-label"?: string | undefined | undefined;
67
- "aria-labelledby"?: string | undefined | undefined;
68
- "aria-level"?: number | undefined | undefined;
69
- "aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
109
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
110
+ "aria-keyshortcuts"?: string | undefined;
111
+ "aria-label"?: string | undefined;
112
+ "aria-labelledby"?: string | undefined;
113
+ "aria-level"?: number | undefined;
114
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
70
115
  "aria-modal"?: (boolean | "true" | "false") | undefined;
71
116
  "aria-multiline"?: (boolean | "true" | "false") | undefined;
72
117
  "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
73
- "aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
74
- "aria-owns"?: string | undefined | undefined;
75
- "aria-placeholder"?: string | undefined | undefined;
76
- "aria-posinset"?: number | undefined | undefined;
77
- "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
118
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
119
+ "aria-owns"?: string | undefined;
120
+ "aria-placeholder"?: string | undefined;
121
+ "aria-posinset"?: number | undefined;
122
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
78
123
  "aria-readonly"?: (boolean | "true" | "false") | undefined;
79
- "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
124
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
80
125
  "aria-required"?: (boolean | "true" | "false") | undefined;
81
- "aria-roledescription"?: string | undefined | undefined;
82
- "aria-rowcount"?: number | undefined | undefined;
83
- "aria-rowindex"?: number | undefined | undefined;
84
- "aria-rowindextext"?: string | undefined | undefined;
85
- "aria-rowspan"?: number | undefined | undefined;
126
+ "aria-roledescription"?: string | undefined;
127
+ "aria-rowcount"?: number | undefined;
128
+ "aria-rowindex"?: number | undefined;
129
+ "aria-rowindextext"?: string | undefined;
130
+ "aria-rowspan"?: number | undefined;
86
131
  "aria-selected"?: (boolean | "true" | "false") | undefined;
87
- "aria-setsize"?: number | undefined | undefined;
88
- "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
89
- "aria-valuemax"?: number | undefined | undefined;
90
- "aria-valuemin"?: number | undefined | undefined;
91
- "aria-valuenow"?: number | undefined | undefined;
92
- "aria-valuetext"?: string | undefined | undefined;
93
- children?: import("react").ReactNode;
132
+ "aria-setsize"?: number | undefined;
133
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
134
+ "aria-valuemax"?: number | undefined;
135
+ "aria-valuemin"?: number | undefined;
136
+ "aria-valuenow"?: number | undefined;
137
+ "aria-valuetext"?: string | undefined;
138
+ children?: import("react").ReactNode | undefined;
94
139
  dangerouslySetInnerHTML?: {
95
140
  __html: string | TrustedHTML;
96
- } | undefined | undefined;
141
+ } | undefined;
97
142
  onCopy?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
98
143
  onCopyCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
99
144
  onCut?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
@@ -262,49 +307,5 @@ export declare function Card({ tone, sm, row, cover, fold, centre, band, as, cla
262
307
  onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
263
308
  onTransitionStart?: import("react").TransitionEventHandler<HTMLElement> | undefined;
264
309
  onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
265
- key?: import("react").Key | null | undefined;
266
- defaultChecked?: boolean | undefined | undefined;
267
- defaultValue?: string | number | readonly string[] | undefined;
268
- suppressContentEditableWarning?: boolean | undefined | undefined;
269
- accessKey?: string | undefined | undefined;
270
- autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
271
- autoFocus?: boolean | undefined | undefined;
272
- contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
273
- contextMenu?: string | undefined | undefined;
274
- dir?: string | undefined | undefined;
275
- draggable?: (boolean | "true" | "false") | undefined;
276
- enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
277
- hidden?: boolean | undefined | undefined;
278
- spellCheck?: (boolean | "true" | "false") | undefined;
279
- translate?: "yes" | "no" | undefined | undefined;
280
- radioGroup?: string | undefined | undefined;
281
- about?: string | undefined | undefined;
282
- content?: string | undefined | undefined;
283
- datatype?: string | undefined | undefined;
284
- inlist?: any;
285
- prefix?: string | undefined | undefined;
286
- property?: string | undefined | undefined;
287
- rel?: string | undefined | undefined;
288
- resource?: string | undefined | undefined;
289
- rev?: string | undefined | undefined;
290
- typeof?: string | undefined | undefined;
291
- vocab?: string | undefined | undefined;
292
- autoCorrect?: string | undefined | undefined;
293
- autoSave?: string | undefined | undefined;
294
- itemProp?: string | undefined | undefined;
295
- itemScope?: boolean | undefined | undefined;
296
- itemType?: string | undefined | undefined;
297
- itemID?: string | undefined | undefined;
298
- itemRef?: string | undefined | undefined;
299
- results?: number | undefined | undefined;
300
- security?: string | undefined | undefined;
301
- unselectable?: "on" | "off" | undefined | undefined;
302
- popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
303
- popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
304
- popoverTarget?: string | undefined | undefined;
305
- inert?: boolean | undefined | undefined;
306
- inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
307
- is?: string | undefined | undefined;
308
- exportparts?: string | undefined | undefined;
309
310
  className: string;
310
311
  }, HTMLElement>;
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef } from 'react';
2
- export interface CardFootProps extends ComponentPropsWithoutRef<'div'> {
1
+ import type { ComponentProps } from 'react';
2
+ export interface CardFootProps extends ComponentProps<'div'> {
3
3
  }
4
4
  /** CardFoot — the card's action buttons on one line: one takes the width, up to four share it evenly. Btns only. */
5
5
  export declare function CardFoot({ className, ...rest }: CardFootProps): import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
- export interface CardHeadProps extends ComponentPropsWithoutRef<'div'> {
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ export interface CardHeadProps extends ComponentProps<'div'> {
3
3
  /** the heading (a string becomes an h2 at level `t-h2`) — wraps freely, as many lines as the words need */
4
4
  heading?: ReactNode;
5
5
  /** small caps above the heading ("Step 1 of 4", "Time bank") */
@@ -1,25 +1,25 @@
1
- import type { ComponentPropsWithoutRef } from 'react';
2
- export interface CardMediaProps extends ComponentPropsWithoutRef<'div'> {
1
+ import type { ComponentProps } from 'react';
2
+ export interface CardMediaProps extends ComponentProps<'div'> {
3
3
  }
4
4
  /** CardMedia — rounded media inside a card (a Placeholder or img); a corner TileBadge pins to it. */
5
5
  export declare function CardMedia({ className, ...rest }: CardMediaProps): import("react").JSX.Element;
6
- export interface CardBodyProps extends ComponentPropsWithoutRef<'div'> {
6
+ export interface CardBodyProps extends ComponentProps<'div'> {
7
7
  }
8
8
  /** CardBody — the flexible middle of a `Card row`: a title over a caption. */
9
9
  export declare function CardBody({ className, ...rest }: CardBodyProps): import("react").JSX.Element;
10
- export interface CardThumbProps extends ComponentPropsWithoutRef<'span'> {
10
+ export interface CardThumbProps extends ComponentProps<'span'> {
11
11
  }
12
12
  /** CardThumb — the small outlined square leading a `Card row` (a number, an initial, an icon). */
13
13
  export declare function CardThumb({ className, ...rest }: CardThumbProps): import("react").JSX.Element;
14
- export interface CardEndProps extends ComponentPropsWithoutRef<'div'> {
14
+ export interface CardEndProps extends ComponentProps<'div'> {
15
15
  }
16
16
  /** CardEnd — the trailing value + caption, right-aligned (in a head or a row card). */
17
17
  export declare function CardEnd({ className, ...rest }: CardEndProps): import("react").JSX.Element;
18
- export interface CardListProps extends ComponentPropsWithoutRef<'div'> {
18
+ export interface CardListProps extends ComponentProps<'div'> {
19
19
  }
20
20
  /** CardList — a stack of `Card row`s, each its own boundary. */
21
21
  export declare function CardList({ className, ...rest }: CardListProps): import("react").JSX.Element;
22
- export interface IconRowProps extends ComponentPropsWithoutRef<'span'> {
22
+ export interface IconRowProps extends ComponentProps<'span'> {
23
23
  }
24
24
  /** IconRow — a trailing cluster of Icons in a card or stack head. */
25
25
  export declare function IconRow({ className, ...rest }: IconRowProps): import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef } from 'react';
2
- export interface PlaceholderProps extends ComponentPropsWithoutRef<'div'> {
1
+ import type { ComponentProps } from 'react';
2
+ export interface PlaceholderProps extends ComponentProps<'div'> {
3
3
  /** sm 7.5rem · md 9rem · default 10rem tall */
4
4
  size?: 'sm' | 'md';
5
5
  /** what the image would be */
@@ -1,15 +1,17 @@
1
- import type { ComponentPropsWithoutRef } from 'react';
2
- export interface StatProps extends ComponentPropsWithoutRef<'div'> {
1
+ import type { ComponentProps } from 'react';
2
+ export interface StatProps extends ComponentProps<'div'> {
3
3
  /** takes the remaining row space beside a Ring */
4
4
  grow?: boolean;
5
+ /** centred: the one number of a sheet or a stage, under a centred Avatar */
6
+ centre?: boolean;
5
7
  }
6
8
  /** Stat — an inline stat block: an overline, a big `Text level="stat"` number, a caption; StatRows put a Delta beside the label. */
7
- export declare function Stat({ grow, className, ...rest }: StatProps): import("react").JSX.Element;
8
- export interface StatRowProps extends ComponentPropsWithoutRef<'div'> {
9
+ export declare function Stat({ grow, centre, className, ...rest }: StatProps): import("react").JSX.Element;
10
+ export interface StatRowProps extends ComponentProps<'div'> {
9
11
  }
10
12
  /** StatRow — label left, Delta (or caption) right, inside a Stat. */
11
13
  export declare function StatRow({ className, ...rest }: StatRowProps): import("react").JSX.Element;
12
- export interface DeltaProps extends ComponentPropsWithoutRef<'span'> {
14
+ export interface DeltaProps extends ComponentProps<'span'> {
13
15
  /** a drop: painted in the signal colour */
14
16
  neg?: boolean;
15
17
  }
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cx } from '../cx.js';
3
3
  /** Stat — an inline stat block: an overline, a big `Text level="stat"` number, a caption; StatRows put a Delta beside the label. */
4
- export function Stat({ grow, className, ...rest }) {
5
- return _jsx("div", { className: cx('stat', grow && 'grow', className), ...rest });
4
+ export function Stat({ grow, centre, className, ...rest }) {
5
+ return _jsx("div", { className: cx('stat', grow && 'grow', centre && 'stat--centre', className), ...rest });
6
6
  }
7
7
  /** StatRow — label left, Delta (or caption) right, inside a Stat. */
8
8
  export function StatRow({ className, ...rest }) {
@@ -1,5 +1,5 @@
1
- import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
2
- export interface CalendarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title' | 'onSelect'> {
1
+ import { type ComponentProps, type ReactNode } from 'react';
2
+ export interface CalendarProps extends Omit<ComponentProps<'div'>, 'title' | 'onSelect'> {
3
3
  /** the month shown ("June") */
4
4
  title: ReactNode;
5
5
  /** days in the month */
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef } from 'react';
2
- export interface CheckProps extends ComponentPropsWithoutRef<'input'> {
1
+ import type { ComponentProps } from 'react';
2
+ export interface CheckProps extends ComponentProps<'input'> {
3
3
  /** 40px instead of 48px */
4
4
  sm?: boolean;
5
5
  /** accessible name */
@@ -7,7 +7,7 @@ export interface CheckProps extends ComponentPropsWithoutRef<'input'> {
7
7
  }
8
8
  /** Check — the round check circle at a Row's end (48px); the row's label wraps it. */
9
9
  export declare function Check({ sm, label, className, ...rest }: CheckProps): import("react").JSX.Element;
10
- export interface ToggleProps extends ComponentPropsWithoutRef<'input'> {
10
+ export interface ToggleProps extends ComponentProps<'input'> {
11
11
  label?: string;
12
12
  }
13
13
  /** Toggle — the big switch (64×36) at a Row's end. */
@@ -1,9 +1,9 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
- export interface DayStripProps extends ComponentPropsWithoutRef<'div'> {
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ export interface DayStripProps extends ComponentProps<'div'> {
3
3
  }
4
4
  /** DayStrip — a week of Days, one selected. */
5
5
  export declare function DayStrip({ className, ...rest }: DayStripProps): import("react").JSX.Element;
6
- export interface DayProps extends Omit<ComponentPropsWithoutRef<'button'>, 'name'> {
6
+ export interface DayProps extends Omit<ComponentProps<'button'>, 'name'> {
7
7
  /** weekday name (Thu) */
8
8
  name: ReactNode;
9
9
  /** the date number */
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef } from 'react';
2
- export interface MoodProps extends Omit<ComponentPropsWithoutRef<'fieldset'>, 'onChange'> {
1
+ import type { ComponentProps } from 'react';
2
+ export interface MoodProps extends Omit<ComponentProps<'fieldset'>, 'onChange'> {
3
3
  /** the radio group name */
4
4
  name?: string;
5
5
  /** the picked dot, 1 (worst) to 5 (best) */
@@ -1,5 +1,5 @@
1
- import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
2
- export interface SliderProps extends Omit<ComponentPropsWithoutRef<'input'>, 'className' | 'style' | 'type'> {
1
+ import { type ComponentProps, type ReactNode } from 'react';
2
+ export interface SliderProps extends Omit<ComponentProps<'input'>, 'className' | 'style' | 'type'> {
3
3
  /** the label row above the track (optional in a bar that already says what it does) */
4
4
  label?: ReactNode;
5
5
  /** one sample letter IN the knob, at the type size the slider sets (a text-size slider's ก) */
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef } from 'react';
2
- export interface AddRowProps extends ComponentPropsWithoutRef<'button'> {
1
+ import type { ComponentProps } from 'react';
2
+ export interface AddRowProps extends ComponentProps<'button'> {
3
3
  }
4
4
  /** AddRow — the inline "+ add another" action under a list of fields. */
5
5
  export declare function AddRow({ className, children, ...rest }: AddRowProps): import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
- export interface ComposerProps extends Omit<ComponentPropsWithoutRef<'textarea'>, 'className' | 'style'> {
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ export interface ComposerProps extends Omit<ComponentProps<'textarea'>, 'className' | 'style'> {
3
3
  /** the caption between the two buttons ("Your request is born") */
4
4
  hint?: ReactNode;
5
5
  /** the left button of the bar (an IconBtn — voice) */
@@ -1,6 +1,6 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
1
+ import type { ComponentProps, ReactNode } from 'react';
2
2
  import { type IconName } from '../type/Icon.js';
3
- export interface FieldProps extends Omit<ComponentPropsWithoutRef<'input'>, 'className' | 'style'> {
3
+ export interface FieldProps extends Omit<ComponentProps<'input'>, 'className' | 'style'> {
4
4
  /** a leading icon (phone-call, plane, calendar-days) */
5
5
  icon?: IconName;
6
6
  /** an action inside the field, flush right — an `IconBtn sm invert` */
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
- export interface FileBtnProps extends Omit<ComponentPropsWithoutRef<'input'>, 'type' | 'className' | 'style' | 'children'> {
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ export interface FileBtnProps extends Omit<ComponentProps<'input'>, 'type' | 'className' | 'style' | 'children'> {
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 */
@@ -1,5 +1,5 @@
1
- import { type ComponentPropsWithoutRef } from 'react';
2
- export interface PinProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange' | 'defaultValue'> {
1
+ import { type ComponentProps } from 'react';
2
+ export interface PinProps extends Omit<ComponentProps<'div'>, 'onChange' | 'defaultValue'> {
3
3
  /** how many digits (4 or 6) */
4
4
  length?: number;
5
5
  /** CONTROLLED: the digits so far, left to right ("03"). The app owns it — pair it with `onChange`. */
package/dist/index.d.ts CHANGED
@@ -20,7 +20,7 @@ export * from './cards/CardParts.js';
20
20
  export * from './cards/Stat.js';
21
21
  export * from './cards/Placeholder.js';
22
22
  export * from './sheets/SheetStack.js';
23
- export * from './sheets/CardBack.js';
23
+ export * from './sheets/StackBack.js';
24
24
  export * from './sheets/Sheet.js';
25
25
  export * from './sheets/SheetHead.js';
26
26
  export * from './sheets/SheetBody.js';
@@ -47,6 +47,7 @@ export * from './choice/Calendar.js';
47
47
  export * from './choice/Mood.js';
48
48
  export * from './choice/Slider.js';
49
49
  export * from './numbers/Ring.js';
50
+ export * from './numbers/Progress.js';
50
51
  export * from './numbers/Track.js';
51
52
  export * from './numbers/Band.js';
52
53
  export * from './numbers/DotGrid.js';
package/dist/index.js CHANGED
@@ -23,7 +23,7 @@ export * from './cards/CardParts.js';
23
23
  export * from './cards/Stat.js';
24
24
  export * from './cards/Placeholder.js';
25
25
  export * from './sheets/SheetStack.js';
26
- export * from './sheets/CardBack.js';
26
+ export * from './sheets/StackBack.js';
27
27
  export * from './sheets/Sheet.js';
28
28
  export * from './sheets/SheetHead.js';
29
29
  export * from './sheets/SheetBody.js';
@@ -50,6 +50,7 @@ export * from './choice/Calendar.js';
50
50
  export * from './choice/Mood.js';
51
51
  export * from './choice/Slider.js';
52
52
  export * from './numbers/Ring.js';
53
+ export * from './numbers/Progress.js';
53
54
  export * from './numbers/Track.js';
54
55
  export * from './numbers/Band.js';
55
56
  export * from './numbers/DotGrid.js';
@@ -1,6 +1,6 @@
1
- import type { ComponentPropsWithoutRef } from 'react';
1
+ import type { ComponentProps } from 'react';
2
2
  import { type IconName } from '../type/Icon.js';
3
- export interface NoteRowProps extends ComponentPropsWithoutRef<'div'> {
3
+ export interface NoteRowProps extends ComponentProps<'div'> {
4
4
  icon?: IconName;
5
5
  }
6
6
  /** NoteRow — icon + caption: transit hints, fine print. */
@@ -1,4 +1,4 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
1
+ import type { ComponentProps, ReactNode } from 'react';
2
2
  import { type IconName } from '../type/Icon.js';
3
3
  export interface RoutePoint {
4
4
  /** the place name (caption) */
@@ -8,7 +8,7 @@ export interface RoutePoint {
8
8
  /** the time */
9
9
  time: ReactNode;
10
10
  }
11
- export interface RouteProps extends ComponentPropsWithoutRef<'div'> {
11
+ export interface RouteProps extends ComponentProps<'div'> {
12
12
  from: RoutePoint;
13
13
  to: RoutePoint;
14
14
  /** the icon on the dotted connector (plane by default) */
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
- export interface TileBadgeProps extends ComponentPropsWithoutRef<'span'> {
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ export interface TileBadgeProps extends ComponentProps<'span'> {
3
3
  /** the small label above ("Gate") */
4
4
  label: ReactNode;
5
5
  /** the big value ("21") */
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
- export interface BannerProps extends ComponentPropsWithoutRef<'details'> {
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ export interface BannerProps extends ComponentProps<'details'> {
3
3
  /** the chip that opens it (a `Chip on` with a chevron Icon xs) */
4
4
  summary: ReactNode;
5
5
  /** the tone of the opened card */
@@ -1,5 +1,5 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
- export interface CalloutProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ export interface CalloutProps extends Omit<ComponentProps<'div'>, 'title'> {
3
3
  title: ReactNode;
4
4
  sub?: ReactNode;
5
5
  /** position over the stage background (CSS lengths / percentages) */
@@ -1,9 +1,9 @@
1
- import type { ComponentPropsWithoutRef } from 'react';
2
- export interface DeckProps extends ComponentPropsWithoutRef<'div'> {
1
+ import type { ComponentProps } from 'react';
2
+ export interface DeckProps extends ComponentProps<'div'> {
3
3
  }
4
4
  /** Deck — swipe cards fanned behind each other; the LAST child is on top. Children are Cards (the front one may `fold`). */
5
5
  export declare function Deck({ className, ...rest }: DeckProps): import("react").JSX.Element;
6
- export interface DeckActionsProps extends ComponentPropsWithoutRef<'div'> {
6
+ export interface DeckActionsProps extends ComponentProps<'div'> {
7
7
  }
8
8
  /** DeckActions — the two big round buttons under a Deck (skip · keep). */
9
9
  export declare function DeckActions({ className, ...rest }: DeckActionsProps): import("react").JSX.Element;
@@ -1,9 +1,9 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
- export interface ThreadProps extends ComponentPropsWithoutRef<'div'> {
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ export interface ThreadProps extends ComponentProps<'div'> {
3
3
  }
4
4
  /** Thread — a stack of Bubbles: a conversation. */
5
5
  export declare function Thread({ className, ...rest }: ThreadProps): import("react").JSX.Element;
6
- export interface BubbleProps extends ComponentPropsWithoutRef<'div'> {
6
+ export interface BubbleProps extends ComponentProps<'div'> {
7
7
  /** whose: theirs on the left (default), mine on the right */
8
8
  side?: 'left' | 'right';
9
9
  /** the caption under the message — a time, a tick (an Icon) */
@@ -1,12 +1,12 @@
1
- import type { ComponentPropsWithoutRef, ReactNode } from 'react';
1
+ import type { ComponentProps, ReactNode } from 'react';
2
2
  import { type IconName } from '../type/Icon.js';
3
- export interface KvProps extends ComponentPropsWithoutRef<'dl'> {
3
+ export interface KvProps extends ComponentProps<'dl'> {
4
4
  /** hairlines between rows */
5
5
  lined?: boolean;
6
6
  }
7
7
  /** Kv — key-value rows: label left, value right (Pay with · Time credits); children are KVRows. */
8
8
  export declare function Kv({ lined, className, ...rest }: KvProps): import("react").JSX.Element;
9
- export interface KvRowProps extends ComponentPropsWithoutRef<'div'> {
9
+ export interface KvRowProps extends ComponentProps<'div'> {
10
10
  /** the key */
11
11
  label: ReactNode;
12
12
  /** the value */
@@ -14,11 +14,11 @@ export interface KvRowProps extends ComponentPropsWithoutRef<'div'> {
14
14
  }
15
15
  /** KvRow — one key · value line (48px tall); the value may hold a Chip, an Avatar, an Icon. */
16
16
  export declare function KvRow({ label, className, children, ...rest }: KvRowProps): import("react").JSX.Element;
17
- export interface KvGridProps extends ComponentPropsWithoutRef<'div'> {
17
+ export interface KvGridProps extends ComponentProps<'div'> {
18
18
  }
19
19
  /** KvGrid — value-over-label cells split by a rule (Sex | Weight); children are KVCells. */
20
20
  export declare function KvGrid({ className, ...rest }: KvGridProps): import("react").JSX.Element;
21
- export interface KvCellProps extends ComponentPropsWithoutRef<'div'> {
21
+ export interface KvCellProps extends ComponentProps<'div'> {
22
22
  icon?: IconName;
23
23
  value: ReactNode;
24
24
  label: ReactNode;
@@ -1,9 +1,9 @@
1
- import type { ComponentPropsWithoutRef } from 'react';
2
- export interface LegendProps extends ComponentPropsWithoutRef<'div'> {
1
+ import type { ComponentProps } from 'react';
2
+ export interface LegendProps extends ComponentProps<'div'> {
3
3
  }
4
4
  /** Legend — signal dots with captions under a chart; children are LegendItems. */
5
5
  export declare function Legend({ className, ...rest }: LegendProps): import("react").JSX.Element;
6
- export interface LegendItemProps extends ComponentPropsWithoutRef<'span'> {
6
+ export interface LegendItemProps extends ComponentProps<'span'> {
7
7
  /** which signal dot: `a` (default) or `b` */
8
8
  dot?: 'a' | 'b';
9
9
  }