@usableapp/cardds 0.1.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.
Files changed (170) hide show
  1. package/README.md +562 -0
  2. package/cardds.css +18 -0
  3. package/cardds.js +473 -0
  4. package/css/actions.css +292 -0
  5. package/css/base.css +128 -0
  6. package/css/card.css +283 -0
  7. package/css/choice.css +297 -0
  8. package/css/fonts.css +37 -0
  9. package/css/forms.css +64 -0
  10. package/css/journey.css +61 -0
  11. package/css/layover.css +243 -0
  12. package/css/lists.css +142 -0
  13. package/css/media.css +232 -0
  14. package/css/numbers.css +258 -0
  15. package/css/palette.css +112 -0
  16. package/css/people.css +79 -0
  17. package/css/sheet.css +295 -0
  18. package/css/stack.css +262 -0
  19. package/css/step.css +71 -0
  20. package/css/tokens.css +177 -0
  21. package/dist/actions/Btn.d.ts +311 -0
  22. package/dist/actions/Btn.js +14 -0
  23. package/dist/actions/BtnRow.d.ts +5 -0
  24. package/dist/actions/BtnRow.js +6 -0
  25. package/dist/actions/Chip.d.ts +328 -0
  26. package/dist/actions/Chip.js +25 -0
  27. package/dist/actions/Dot.d.ts +7 -0
  28. package/dist/actions/Dot.js +6 -0
  29. package/dist/actions/Dropdown.d.ts +34 -0
  30. package/dist/actions/Dropdown.js +19 -0
  31. package/dist/actions/Fab.d.ts +9 -0
  32. package/dist/actions/Fab.js +7 -0
  33. package/dist/actions/IconBtn.d.ts +308 -0
  34. package/dist/actions/IconBtn.js +8 -0
  35. package/dist/actions/Link.d.ts +301 -0
  36. package/dist/actions/Link.js +8 -0
  37. package/dist/actions/Segment.d.ts +11 -0
  38. package/dist/actions/Segment.js +10 -0
  39. package/dist/cardds.css +3068 -0
  40. package/dist/cards/Card.d.ts +310 -0
  41. package/dist/cards/Card.js +14 -0
  42. package/dist/cards/CardFoot.d.ts +5 -0
  43. package/dist/cards/CardFoot.js +6 -0
  44. package/dist/cards/CardHead.d.ts +21 -0
  45. package/dist/cards/CardHead.js +11 -0
  46. package/dist/cards/CardParts.d.ts +25 -0
  47. package/dist/cards/CardParts.js +26 -0
  48. package/dist/cards/Placeholder.d.ts +9 -0
  49. package/dist/cards/Placeholder.js +6 -0
  50. package/dist/cards/Stat.d.ts +17 -0
  51. package/dist/cards/Stat.js +14 -0
  52. package/dist/choice/Calendar.d.ts +23 -0
  53. package/dist/choice/Calendar.js +7 -0
  54. package/dist/choice/Check.d.ts +14 -0
  55. package/dist/choice/Check.js +10 -0
  56. package/dist/choice/DayStrip.d.ts +16 -0
  57. package/dist/choice/DayStrip.js +10 -0
  58. package/dist/choice/Mood.d.ts +11 -0
  59. package/dist/choice/Mood.js +6 -0
  60. package/dist/choice/Slider.d.ts +11 -0
  61. package/dist/choice/Slider.js +14 -0
  62. package/dist/cx.d.ts +2 -0
  63. package/dist/cx.js +2 -0
  64. package/dist/forms/AddRow.d.ts +5 -0
  65. package/dist/forms/AddRow.js +7 -0
  66. package/dist/forms/Composer.d.ts +13 -0
  67. package/dist/forms/Composer.js +6 -0
  68. package/dist/forms/Field.d.ts +17 -0
  69. package/dist/forms/Field.js +10 -0
  70. package/dist/forms/FileBtn.d.ts +18 -0
  71. package/dist/forms/FileBtn.js +10 -0
  72. package/dist/forms/Pin.d.ts +19 -0
  73. package/dist/forms/Pin.js +27 -0
  74. package/dist/index.d.ts +72 -0
  75. package/dist/index.js +75 -0
  76. package/dist/journey/NoteRow.d.ts +7 -0
  77. package/dist/journey/NoteRow.js +7 -0
  78. package/dist/journey/Route.d.ts +18 -0
  79. package/dist/journey/Route.js +8 -0
  80. package/dist/journey/TileBadge.d.ts +15 -0
  81. package/dist/journey/TileBadge.js +6 -0
  82. package/dist/layover/Banner.d.ts +9 -0
  83. package/dist/layover/Banner.js +6 -0
  84. package/dist/layover/Callout.d.ts +10 -0
  85. package/dist/layover/Callout.js +6 -0
  86. package/dist/layover/Deck.d.ts +9 -0
  87. package/dist/layover/Deck.js +10 -0
  88. package/dist/lists/Kv.d.ts +27 -0
  89. package/dist/lists/Kv.js +19 -0
  90. package/dist/lists/Legend.d.ts +11 -0
  91. package/dist/lists/Legend.js +11 -0
  92. package/dist/lists/Row.d.ts +319 -0
  93. package/dist/lists/Row.js +17 -0
  94. package/dist/lists/Timeline.d.ts +11 -0
  95. package/dist/lists/Timeline.js +10 -0
  96. package/dist/media/MapArea.d.ts +20 -0
  97. package/dist/media/MapArea.js +11 -0
  98. package/dist/media/Mosaic.d.ts +11 -0
  99. package/dist/media/Mosaic.js +10 -0
  100. package/dist/media/Postcard.d.ts +20 -0
  101. package/dist/media/Postcard.js +10 -0
  102. package/dist/media/Quote.d.ts +11 -0
  103. package/dist/media/Quote.js +6 -0
  104. package/dist/media/Tile.d.ts +320 -0
  105. package/dist/media/Tile.js +16 -0
  106. package/dist/numbers/Badge.d.ts +7 -0
  107. package/dist/numbers/Badge.js +6 -0
  108. package/dist/numbers/Band.d.ts +16 -0
  109. package/dist/numbers/Band.js +10 -0
  110. package/dist/numbers/Bars.d.ts +14 -0
  111. package/dist/numbers/Bars.js +10 -0
  112. package/dist/numbers/DotGrid.d.ts +12 -0
  113. package/dist/numbers/DotGrid.js +6 -0
  114. package/dist/numbers/Picker.d.ts +13 -0
  115. package/dist/numbers/Picker.js +18 -0
  116. package/dist/numbers/Ring.d.ts +15 -0
  117. package/dist/numbers/Ring.js +6 -0
  118. package/dist/numbers/Track.d.ts +12 -0
  119. package/dist/numbers/Track.js +10 -0
  120. package/dist/people/Avatar.d.ts +314 -0
  121. package/dist/people/Avatar.js +13 -0
  122. package/dist/people/AvatarPick.d.ts +18 -0
  123. package/dist/people/AvatarPick.js +10 -0
  124. package/dist/scaffold/ActionBar.d.ts +21 -0
  125. package/dist/scaffold/ActionBar.js +16 -0
  126. package/dist/scaffold/AppBar.d.ts +18 -0
  127. package/dist/scaffold/AppBar.js +10 -0
  128. package/dist/scaffold/Centre.d.ts +30 -0
  129. package/dist/scaffold/Centre.js +41 -0
  130. package/dist/scaffold/EmptyState.d.ts +14 -0
  131. package/dist/scaffold/EmptyState.js +8 -0
  132. package/dist/scaffold/FilterRow.d.ts +5 -0
  133. package/dist/scaffold/FilterRow.js +6 -0
  134. package/dist/scaffold/FloatBar.d.ts +310 -0
  135. package/dist/scaffold/FloatBar.js +15 -0
  136. package/dist/scaffold/PagerAt.d.ts +11 -0
  137. package/dist/scaffold/PagerAt.js +6 -0
  138. package/dist/scaffold/Screen.d.ts +299 -0
  139. package/dist/scaffold/Screen.js +11 -0
  140. package/dist/scaffold/Section.d.ts +12 -0
  141. package/dist/scaffold/Section.js +13 -0
  142. package/dist/scaffold/TopBar.d.ts +15 -0
  143. package/dist/scaffold/TopBar.js +9 -0
  144. package/dist/sheets/CardBack.d.ts +7 -0
  145. package/dist/sheets/CardBack.js +7 -0
  146. package/dist/sheets/Drawer.d.ts +17 -0
  147. package/dist/sheets/Drawer.js +16 -0
  148. package/dist/sheets/Sheet.d.ts +21 -0
  149. package/dist/sheets/Sheet.js +13 -0
  150. package/dist/sheets/SheetBody.d.ts +5 -0
  151. package/dist/sheets/SheetBody.js +6 -0
  152. package/dist/sheets/SheetHead.d.ts +13 -0
  153. package/dist/sheets/SheetHead.js +6 -0
  154. package/dist/sheets/SheetStack.d.ts +21 -0
  155. package/dist/sheets/SheetStack.js +14 -0
  156. package/dist/sheets/SheetStage.d.ts +20 -0
  157. package/dist/sheets/SheetStage.js +11 -0
  158. package/dist/sheets/Step.d.ts +15 -0
  159. package/dist/sheets/Step.js +15 -0
  160. package/dist/type/Icon.d.ts +16 -0
  161. package/dist/type/Icon.js +12 -0
  162. package/dist/type/Text.d.ts +302 -0
  163. package/dist/type/Text.js +16 -0
  164. package/dist/type/icons.d.ts +6 -0
  165. package/dist/type/icons.js +2 -0
  166. package/fonts/LICENSES.md +44 -0
  167. package/fonts/fc-pride-medium.otf +0 -0
  168. package/fonts/pk-nonthaburi-demo.ttf +0 -0
  169. package/icons.svg +61 -0
  170. package/package.json +62 -0
@@ -0,0 +1,310 @@
1
+ import { type ComponentPropsWithoutRef } from 'react';
2
+ export interface CardProps extends ComponentPropsWithoutRef<'article'> {
3
+ /** the tone slot: 1 (default, light) · 2 (tinted) · 3 (dark / accent — controls invert automatically) */
4
+ tone?: 1 | 2 | 3;
5
+ /** compact: a small card inside a card or a sheet body (a note, a promo) */
6
+ sm?: boolean;
7
+ /** a list row that is its own card: thumb · body · end, in a CardList */
8
+ row?: boolean;
9
+ /** the image IS the card: a Placeholder or img first, text over a scrim */
10
+ cover?: boolean;
11
+ /** a sticky-note corner, no border (swipe decks, quotes) */
12
+ fold?: boolean;
13
+ /** one card at the human centre of a `Screen fill` (the introduction screens) */
14
+ centre?: boolean;
15
+ /** a data band: label · giant number · footnote — see Band */
16
+ band?: boolean;
17
+ /** the element: article (default), a when it links, label when it wraps an input, div/section */
18
+ as?: 'article' | 'div' | 'a' | 'label' | 'section' | 'li';
19
+ href?: string;
20
+ }
21
+ /**
22
+ * Card — ONE boundary: head · content · foot. Cards are content the system offers (the words, the thing to read).
23
+ * Children: a CardHead first (heading left, contextual info far right), the content (frameless rows, kv, a ring,
24
+ * a paragraph — never a second card boundary), an optional CardFoot (≤4 buttons on one line).
25
+ * A page with one feature and one CTA may be a single card. Keep everything big.
26
+ */
27
+ export declare function Card({ tone, sm, row, cover, fold, centre, band, as, className, ...rest }: CardProps): import("react").DetailedReactHTMLElement<{
28
+ href?: string;
29
+ slot?: string | undefined | undefined;
30
+ 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;
38
+ role?: import("react").AriaRole | undefined;
39
+ tabIndex?: number | undefined | undefined;
40
+ "aria-activedescendant"?: string | undefined | undefined;
41
+ "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;
45
+ "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;
56
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
57
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
58
+ "aria-errormessage"?: string | undefined | undefined;
59
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
60
+ "aria-flowto"?: string | undefined | undefined;
61
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
62
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
63
+ "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;
70
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
71
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
72
+ "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;
78
+ "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;
80
+ "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;
86
+ "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;
94
+ dangerouslySetInnerHTML?: {
95
+ __html: string | TrustedHTML;
96
+ } | undefined | undefined;
97
+ onCopy?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
98
+ onCopyCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
99
+ onCut?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
100
+ onCutCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
101
+ onPaste?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
102
+ onPasteCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
103
+ onCompositionEnd?: import("react").CompositionEventHandler<HTMLElement> | undefined;
104
+ onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
105
+ onCompositionStart?: import("react").CompositionEventHandler<HTMLElement> | undefined;
106
+ onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
107
+ onCompositionUpdate?: import("react").CompositionEventHandler<HTMLElement> | undefined;
108
+ onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
109
+ onFocus?: import("react").FocusEventHandler<HTMLElement> | undefined;
110
+ onFocusCapture?: import("react").FocusEventHandler<HTMLElement> | undefined;
111
+ onBlur?: import("react").FocusEventHandler<HTMLElement> | undefined;
112
+ onBlurCapture?: import("react").FocusEventHandler<HTMLElement> | undefined;
113
+ onChange?: import("react").ChangeEventHandler<HTMLElement, Element> | undefined;
114
+ onChangeCapture?: import("react").ChangeEventHandler<HTMLElement, Element> | undefined;
115
+ onBeforeInput?: import("react").InputEventHandler<HTMLElement> | undefined;
116
+ onBeforeInputCapture?: import("react").InputEventHandler<HTMLElement> | undefined;
117
+ onInput?: import("react").InputEventHandler<HTMLElement> | undefined;
118
+ onInputCapture?: import("react").InputEventHandler<HTMLElement> | undefined;
119
+ onReset?: import("react").ReactEventHandler<HTMLElement> | undefined;
120
+ onResetCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
121
+ onSubmit?: import("react").SubmitEventHandler<HTMLElement> | undefined;
122
+ onSubmitCapture?: import("react").SubmitEventHandler<HTMLElement> | undefined;
123
+ onInvalid?: import("react").ReactEventHandler<HTMLElement> | undefined;
124
+ onInvalidCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
125
+ onLoad?: import("react").ReactEventHandler<HTMLElement> | undefined;
126
+ onLoadCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
127
+ onError?: import("react").ReactEventHandler<HTMLElement> | undefined;
128
+ onErrorCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
129
+ onKeyDown?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
130
+ onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
131
+ onKeyPress?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
132
+ onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
133
+ onKeyUp?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
134
+ onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
135
+ onAbort?: import("react").ReactEventHandler<HTMLElement> | undefined;
136
+ onAbortCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
137
+ onCanPlay?: import("react").ReactEventHandler<HTMLElement> | undefined;
138
+ onCanPlayCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
139
+ onCanPlayThrough?: import("react").ReactEventHandler<HTMLElement> | undefined;
140
+ onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
141
+ onDurationChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
142
+ onDurationChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
143
+ onEmptied?: import("react").ReactEventHandler<HTMLElement> | undefined;
144
+ onEmptiedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
145
+ onEncrypted?: import("react").ReactEventHandler<HTMLElement> | undefined;
146
+ onEncryptedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
147
+ onEnded?: import("react").ReactEventHandler<HTMLElement> | undefined;
148
+ onEndedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
149
+ onLoadedData?: import("react").ReactEventHandler<HTMLElement> | undefined;
150
+ onLoadedDataCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
151
+ onLoadedMetadata?: import("react").ReactEventHandler<HTMLElement> | undefined;
152
+ onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
153
+ onLoadStart?: import("react").ReactEventHandler<HTMLElement> | undefined;
154
+ onLoadStartCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
155
+ onPause?: import("react").ReactEventHandler<HTMLElement> | undefined;
156
+ onPauseCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
157
+ onPlay?: import("react").ReactEventHandler<HTMLElement> | undefined;
158
+ onPlayCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
159
+ onPlaying?: import("react").ReactEventHandler<HTMLElement> | undefined;
160
+ onPlayingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
161
+ onProgress?: import("react").ReactEventHandler<HTMLElement> | undefined;
162
+ onProgressCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
163
+ onRateChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
164
+ onRateChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
165
+ onSeeked?: import("react").ReactEventHandler<HTMLElement> | undefined;
166
+ onSeekedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
167
+ onSeeking?: import("react").ReactEventHandler<HTMLElement> | undefined;
168
+ onSeekingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
169
+ onStalled?: import("react").ReactEventHandler<HTMLElement> | undefined;
170
+ onStalledCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
171
+ onSuspend?: import("react").ReactEventHandler<HTMLElement> | undefined;
172
+ onSuspendCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
173
+ onTimeUpdate?: import("react").ReactEventHandler<HTMLElement> | undefined;
174
+ onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
175
+ onVolumeChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
176
+ onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
177
+ onWaiting?: import("react").ReactEventHandler<HTMLElement> | undefined;
178
+ onWaitingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
179
+ onAuxClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
180
+ onAuxClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
181
+ onClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
182
+ onClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
183
+ onContextMenu?: import("react").MouseEventHandler<HTMLElement> | undefined;
184
+ onContextMenuCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
185
+ onDoubleClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
186
+ onDoubleClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
187
+ onDrag?: import("react").DragEventHandler<HTMLElement> | undefined;
188
+ onDragCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
189
+ onDragEnd?: import("react").DragEventHandler<HTMLElement> | undefined;
190
+ onDragEndCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
191
+ onDragEnter?: import("react").DragEventHandler<HTMLElement> | undefined;
192
+ onDragEnterCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
193
+ onDragExit?: import("react").DragEventHandler<HTMLElement> | undefined;
194
+ onDragExitCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
195
+ onDragLeave?: import("react").DragEventHandler<HTMLElement> | undefined;
196
+ onDragLeaveCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
197
+ onDragOver?: import("react").DragEventHandler<HTMLElement> | undefined;
198
+ onDragOverCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
199
+ onDragStart?: import("react").DragEventHandler<HTMLElement> | undefined;
200
+ onDragStartCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
201
+ onDrop?: import("react").DragEventHandler<HTMLElement> | undefined;
202
+ onDropCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
203
+ onMouseDown?: import("react").MouseEventHandler<HTMLElement> | undefined;
204
+ onMouseDownCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
205
+ onMouseEnter?: import("react").MouseEventHandler<HTMLElement> | undefined;
206
+ onMouseLeave?: import("react").MouseEventHandler<HTMLElement> | undefined;
207
+ onMouseMove?: import("react").MouseEventHandler<HTMLElement> | undefined;
208
+ onMouseMoveCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
209
+ onMouseOut?: import("react").MouseEventHandler<HTMLElement> | undefined;
210
+ onMouseOutCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
211
+ onMouseOver?: import("react").MouseEventHandler<HTMLElement> | undefined;
212
+ onMouseOverCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
213
+ onMouseUp?: import("react").MouseEventHandler<HTMLElement> | undefined;
214
+ onMouseUpCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
215
+ onSelect?: import("react").ReactEventHandler<HTMLElement> | undefined;
216
+ onSelectCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
217
+ onTouchCancel?: import("react").TouchEventHandler<HTMLElement> | undefined;
218
+ onTouchCancelCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
219
+ onTouchEnd?: import("react").TouchEventHandler<HTMLElement> | undefined;
220
+ onTouchEndCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
221
+ onTouchMove?: import("react").TouchEventHandler<HTMLElement> | undefined;
222
+ onTouchMoveCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
223
+ onTouchStart?: import("react").TouchEventHandler<HTMLElement> | undefined;
224
+ onTouchStartCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
225
+ onPointerDown?: import("react").PointerEventHandler<HTMLElement> | undefined;
226
+ onPointerDownCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
227
+ onPointerMove?: import("react").PointerEventHandler<HTMLElement> | undefined;
228
+ onPointerMoveCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
229
+ onPointerUp?: import("react").PointerEventHandler<HTMLElement> | undefined;
230
+ onPointerUpCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
231
+ onPointerCancel?: import("react").PointerEventHandler<HTMLElement> | undefined;
232
+ onPointerCancelCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
233
+ onPointerEnter?: import("react").PointerEventHandler<HTMLElement> | undefined;
234
+ onPointerLeave?: import("react").PointerEventHandler<HTMLElement> | undefined;
235
+ onPointerOver?: import("react").PointerEventHandler<HTMLElement> | undefined;
236
+ onPointerOverCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
237
+ onPointerOut?: import("react").PointerEventHandler<HTMLElement> | undefined;
238
+ onPointerOutCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
239
+ onGotPointerCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
240
+ onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
241
+ onLostPointerCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
242
+ onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
243
+ onScroll?: import("react").UIEventHandler<HTMLElement> | undefined;
244
+ onScrollCapture?: import("react").UIEventHandler<HTMLElement> | undefined;
245
+ onScrollEnd?: import("react").UIEventHandler<HTMLElement> | undefined;
246
+ onScrollEndCapture?: import("react").UIEventHandler<HTMLElement> | undefined;
247
+ onWheel?: import("react").WheelEventHandler<HTMLElement> | undefined;
248
+ onWheelCapture?: import("react").WheelEventHandler<HTMLElement> | undefined;
249
+ onAnimationStart?: import("react").AnimationEventHandler<HTMLElement> | undefined;
250
+ onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
251
+ onAnimationEnd?: import("react").AnimationEventHandler<HTMLElement> | undefined;
252
+ onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
253
+ onAnimationIteration?: import("react").AnimationEventHandler<HTMLElement> | undefined;
254
+ onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
255
+ onToggle?: import("react").ToggleEventHandler<HTMLElement> | undefined;
256
+ onBeforeToggle?: import("react").ToggleEventHandler<HTMLElement> | undefined;
257
+ onTransitionCancel?: import("react").TransitionEventHandler<HTMLElement> | undefined;
258
+ onTransitionCancelCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
259
+ onTransitionEnd?: import("react").TransitionEventHandler<HTMLElement> | undefined;
260
+ onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
261
+ onTransitionRun?: import("react").TransitionEventHandler<HTMLElement> | undefined;
262
+ onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
263
+ onTransitionStart?: import("react").TransitionEventHandler<HTMLElement> | undefined;
264
+ 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
+ className: string;
310
+ }, HTMLElement>;
@@ -0,0 +1,14 @@
1
+ import { createElement } from 'react';
2
+ import { cx } from '../cx';
3
+ /**
4
+ * Card — ONE boundary: head · content · foot. Cards are content the system offers (the words, the thing to read).
5
+ * Children: a CardHead first (heading left, contextual info far right), the content (frameless rows, kv, a ring,
6
+ * a paragraph — never a second card boundary), an optional CardFoot (≤4 buttons on one line).
7
+ * A page with one feature and one CTA may be a single card. Keep everything big.
8
+ */
9
+ export function Card({ tone, sm, row, cover, fold, centre, band, as = 'article', className, ...rest }) {
10
+ return createElement(as, {
11
+ className: cx('card', tone && tone !== 1 && `card--${tone}`, sm && 'card--sm', row && 'card--row', cover && 'card--cover', fold && 'card--fold', centre && 'card--centre', band && 'card--band', className),
12
+ ...rest,
13
+ });
14
+ }
@@ -0,0 +1,5 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
2
+ export interface CardFootProps extends ComponentPropsWithoutRef<'div'> {
3
+ }
4
+ /** CardFoot — the card's action buttons on one line: one takes the width, up to four share it evenly. Btns only. */
5
+ export declare function CardFoot({ className, ...rest }: CardFootProps): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cx } from '../cx';
3
+ /** CardFoot — the card's action buttons on one line: one takes the width, up to four share it evenly. Btns only. */
4
+ export function CardFoot({ className, ...rest }) {
5
+ return _jsx("div", { className: cx('card__foot', className), ...rest });
6
+ }
@@ -0,0 +1,21 @@
1
+ import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
+ export interface CardHeadProps extends ComponentPropsWithoutRef<'div'> {
3
+ /** the heading (a string becomes an h2 at level `t-h2`) — two lines is its budget, it squeezes to fit and clamps at three */
4
+ heading?: ReactNode;
5
+ /** small caps above the heading ("Step 1 of 4", "Time bank") */
6
+ overline?: ReactNode;
7
+ /** the muted line under the heading (a date, a subtitle) */
8
+ caption?: ReactNode;
9
+ /** the contextual thing at the far right: a chip, an IconBtn (more), a Link, a small Ring, an Avatar, a Badge (a count in a stack head) */
10
+ end?: ReactNode;
11
+ /** top-align a genuinely tall multi-line title with its control */
12
+ top?: boolean;
13
+ /** the heading level to render the string heading with (h2 default; h1 for the one-feature page) */
14
+ level?: 'h1' | 'h2' | 'display';
15
+ }
16
+ /**
17
+ * CardHead — the card's head: the heading on the left takes the room, the contextual info hugs the far right.
18
+ * Use `heading` (+ `overline`/`caption`) and `end` for the standard head, or pass children for a custom one
19
+ * (the FIRST child takes the room). Never put buttons here — they go in the CardFoot.
20
+ */
21
+ export declare function CardHead({ heading, overline, caption, end, top, level, className, children, ...rest }: CardHeadProps): import("react").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cx } from '../cx';
3
+ /**
4
+ * CardHead — the card's head: the heading on the left takes the room, the contextual info hugs the far right.
5
+ * Use `heading` (+ `overline`/`caption`) and `end` for the standard head, or pass children for a custom one
6
+ * (the FIRST child takes the room). Never put buttons here — they go in the CardFoot.
7
+ */
8
+ export function CardHead({ heading, overline, caption, end, top, level = 'h2', className, children, ...rest }) {
9
+ const H = level === 'h1' ? 'h1' : 'h2';
10
+ return (_jsxs("div", { className: cx('card__head', top && 'card__head--top', className), ...rest, children: [heading != null && (_jsxs("div", { children: [overline != null && _jsx("span", { className: "t-overline t-muted", children: overline }), _jsx(H, { className: level === 'display' ? 't-display' : `t-${level}`, children: heading }), caption != null && _jsx("p", { className: "t-caption t-muted", children: caption })] })), children, end] }));
11
+ }
@@ -0,0 +1,25 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
2
+ export interface CardMediaProps extends ComponentPropsWithoutRef<'div'> {
3
+ }
4
+ /** CardMedia — rounded media inside a card (a Placeholder or img); a corner TileBadge pins to it. */
5
+ export declare function CardMedia({ className, ...rest }: CardMediaProps): import("react").JSX.Element;
6
+ export interface CardBodyProps extends ComponentPropsWithoutRef<'div'> {
7
+ }
8
+ /** CardBody — the flexible middle of a `Card row`: a title over a caption. */
9
+ export declare function CardBody({ className, ...rest }: CardBodyProps): import("react").JSX.Element;
10
+ export interface CardThumbProps extends ComponentPropsWithoutRef<'span'> {
11
+ }
12
+ /** CardThumb — the small outlined square leading a `Card row` (a number, an initial, an icon). */
13
+ export declare function CardThumb({ className, ...rest }: CardThumbProps): import("react").JSX.Element;
14
+ export interface CardEndProps extends ComponentPropsWithoutRef<'div'> {
15
+ }
16
+ /** CardEnd — the trailing value + caption, right-aligned (in a head or a row card). */
17
+ export declare function CardEnd({ className, ...rest }: CardEndProps): import("react").JSX.Element;
18
+ export interface CardListProps extends ComponentPropsWithoutRef<'div'> {
19
+ }
20
+ /** CardList — a stack of `Card row`s, each its own boundary. */
21
+ export declare function CardList({ className, ...rest }: CardListProps): import("react").JSX.Element;
22
+ export interface IconRowProps extends ComponentPropsWithoutRef<'span'> {
23
+ }
24
+ /** IconRow — a trailing cluster of Icons in a card or stack head. */
25
+ export declare function IconRow({ className, ...rest }: IconRowProps): import("react").JSX.Element;
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cx } from '../cx';
3
+ /** CardMedia — rounded media inside a card (a Placeholder or img); a corner TileBadge pins to it. */
4
+ export function CardMedia({ className, ...rest }) {
5
+ return _jsx("div", { className: cx('card__media', className), ...rest });
6
+ }
7
+ /** CardBody — the flexible middle of a `Card row`: a title over a caption. */
8
+ export function CardBody({ className, ...rest }) {
9
+ return _jsx("div", { className: cx('card__body', className), ...rest });
10
+ }
11
+ /** CardThumb — the small outlined square leading a `Card row` (a number, an initial, an icon). */
12
+ export function CardThumb({ className, ...rest }) {
13
+ return _jsx("span", { className: cx('card__thumb', className), ...rest });
14
+ }
15
+ /** CardEnd — the trailing value + caption, right-aligned (in a head or a row card). */
16
+ export function CardEnd({ className, ...rest }) {
17
+ return _jsx("div", { className: cx('card__end', className), ...rest });
18
+ }
19
+ /** CardList — a stack of `Card row`s, each its own boundary. */
20
+ export function CardList({ className, ...rest }) {
21
+ return _jsx("div", { className: cx('card-list', className), ...rest });
22
+ }
23
+ /** IconRow — a trailing cluster of Icons in a card or stack head. */
24
+ export function IconRow({ className, ...rest }) {
25
+ return _jsx("span", { className: cx('icon-row', className), ...rest });
26
+ }
@@ -0,0 +1,9 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
2
+ export interface PlaceholderProps extends ComponentPropsWithoutRef<'div'> {
3
+ /** sm 7.5rem · md 9rem · default 10rem tall */
4
+ size?: 'sm' | 'md';
5
+ /** what the image would be */
6
+ label?: string;
7
+ }
8
+ /** Placeholder — the wireframe's crossed box standing in for a photo or illustration (currentColor, survives any palette). */
9
+ export declare function Placeholder({ size, label, className, ...rest }: PlaceholderProps): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cx } from '../cx';
3
+ /** Placeholder — the wireframe's crossed box standing in for a photo or illustration (currentColor, survives any palette). */
4
+ export function Placeholder({ size, label = 'Image', className, ...rest }) {
5
+ return _jsx("div", { className: cx('ph', size && `ph--${size}`, className), role: "img", "aria-label": label, ...rest });
6
+ }
@@ -0,0 +1,17 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
2
+ export interface StatProps extends ComponentPropsWithoutRef<'div'> {
3
+ /** takes the remaining row space beside a Ring */
4
+ grow?: boolean;
5
+ }
6
+ /** 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
+ }
10
+ /** StatRow — label left, Delta (or caption) right, inside a Stat. */
11
+ export declare function StatRow({ className, ...rest }: StatRowProps): import("react").JSX.Element;
12
+ export interface DeltaProps extends ComponentPropsWithoutRef<'span'> {
13
+ /** a drop: painted in the signal colour */
14
+ neg?: boolean;
15
+ }
16
+ /** Delta — the small "+7.5%" pill beside a stat label. */
17
+ export declare function Delta({ neg, className, ...rest }: DeltaProps): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cx } from '../cx';
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 });
6
+ }
7
+ /** StatRow — label left, Delta (or caption) right, inside a Stat. */
8
+ export function StatRow({ className, ...rest }) {
9
+ return _jsx("div", { className: cx('stat__row', className), ...rest });
10
+ }
11
+ /** Delta — the small "+7.5%" pill beside a stat label. */
12
+ export function Delta({ neg, className, ...rest }) {
13
+ return _jsx("span", { className: cx('delta', neg && 'delta--neg', className), ...rest });
14
+ }
@@ -0,0 +1,23 @@
1
+ import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
+ export interface CalendarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {
3
+ /** the month shown ("June") */
4
+ title: ReactNode;
5
+ /** days in the month */
6
+ days?: number;
7
+ /** weekday column of the 1st (1 = first column) */
8
+ start?: number;
9
+ /** the selected day */
10
+ selected?: number;
11
+ /** softly marked days */
12
+ marks?: number[];
13
+ /** strongly marked days */
14
+ marks2?: number[];
15
+ /** days that cannot be picked */
16
+ disabled?: number[];
17
+ /** weekday headers, 7 */
18
+ weekdays?: string[];
19
+ /** replace the default prev/next icon buttons */
20
+ nav?: ReactNode;
21
+ }
22
+ /** Calendar — a month grid of 44px round cells: one accent day, optional marks; prev/next in the head. */
23
+ export declare function Calendar({ title, days, start, selected, marks, marks2, disabled, weekdays, nav, className, ...rest }: CalendarProps): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cx } from '../cx';
3
+ import { IconBtn } from '../actions/IconBtn';
4
+ /** Calendar — a month grid of 44px round cells: one accent day, optional marks; prev/next in the head. */
5
+ export function Calendar({ title, days = 30, start = 1, selected, marks = [], marks2 = [], disabled = [], weekdays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], nav, className, ...rest }) {
6
+ return (_jsxs("div", { className: cx('calendar', className), ...rest, children: [_jsxs("div", { className: "calendar__head", children: [_jsx("span", { className: "t-title", children: title }), nav ?? (_jsxs("span", { className: "icon-row", children: [_jsx(IconBtn, { sm: true, icon: "chevron-left", label: "Previous" }), _jsx(IconBtn, { sm: true, icon: "chevron-right", label: "Next" })] }))] }), _jsxs("div", { className: "calendar__grid", children: [weekdays.map((d) => _jsx("span", { className: "calendar__wd", children: d }, d)), Array.from({ length: days }, (_, i) => i + 1).map((d) => (_jsx("button", { type: "button", className: cx('calendar__day', marks.includes(d) && 'calendar__day--mark', marks2.includes(d) && 'calendar__day--mark2'), "aria-selected": d === selected ? 'true' : undefined, disabled: disabled.includes(d), style: d === 1 ? { '--start': start } : undefined, children: d }, d)))] })] }));
7
+ }
@@ -0,0 +1,14 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
2
+ export interface CheckProps extends ComponentPropsWithoutRef<'input'> {
3
+ /** 40px instead of 48px */
4
+ sm?: boolean;
5
+ /** accessible name */
6
+ label?: string;
7
+ }
8
+ /** Check — the round check circle at a Row's end (48px); the row's label wraps it. */
9
+ export declare function Check({ sm, label, className, ...rest }: CheckProps): import("react").JSX.Element;
10
+ export interface ToggleProps extends ComponentPropsWithoutRef<'input'> {
11
+ label?: string;
12
+ }
13
+ /** Toggle — the big switch (64×36) at a Row's end. */
14
+ export declare function Toggle({ label, className, ...rest }: ToggleProps): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cx } from '../cx';
3
+ /** Check — the round check circle at a Row's end (48px); the row's label wraps it. */
4
+ export function Check({ sm, label, className, ...rest }) {
5
+ return _jsx("input", { type: "checkbox", className: cx('check', sm && 'check--sm', className), "aria-label": label, ...rest });
6
+ }
7
+ /** Toggle — the big switch (64×36) at a Row's end. */
8
+ export function Toggle({ label, className, ...rest }) {
9
+ return _jsx("input", { type: "checkbox", role: "switch", className: cx('toggle', className), "aria-label": label, ...rest });
10
+ }
@@ -0,0 +1,16 @@
1
+ import type { ComponentPropsWithoutRef, ReactNode } from 'react';
2
+ export interface DayStripProps extends ComponentPropsWithoutRef<'div'> {
3
+ }
4
+ /** DayStrip — a week of Days, one selected. */
5
+ export declare function DayStrip({ className, ...rest }: DayStripProps): import("react").JSX.Element;
6
+ export interface DayProps extends Omit<ComponentPropsWithoutRef<'button'>, 'name'> {
7
+ /** weekday name (Thu) */
8
+ name: ReactNode;
9
+ /** the date number */
10
+ num: ReactNode;
11
+ selected?: boolean;
12
+ /** a mark under the number (something is on) */
13
+ dot?: boolean;
14
+ }
15
+ /** Day — one day in a DayStrip: name · number · optional dot; the selected one is a filled pill. */
16
+ export declare function Day({ name, num, selected, dot, className, ...rest }: DayProps): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cx } from '../cx';
3
+ /** DayStrip — a week of Days, one selected. */
4
+ export function DayStrip({ className, ...rest }) {
5
+ return _jsx("div", { className: cx('day-strip', className), role: "tablist", ...rest });
6
+ }
7
+ /** Day — one day in a DayStrip: name · number · optional dot; the selected one is a filled pill. */
8
+ export function Day({ name, num, selected, dot, className, ...rest }) {
9
+ return (_jsxs("button", { type: "button", role: "tab", "aria-selected": selected ? 'true' : undefined, className: cx('day', className), ...rest, children: [_jsx("span", { className: "day__name", children: name }), _jsx("span", { className: "day__num", children: num }), dot && _jsx("span", { className: "day__dot" })] }));
10
+ }
@@ -0,0 +1,11 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
2
+ export interface MoodProps extends Omit<ComponentPropsWithoutRef<'fieldset'>, 'onChange'> {
3
+ /** the radio group name */
4
+ name?: string;
5
+ /** the picked dot, 1 (worst) to 5 (best) */
6
+ value?: 1 | 2 | 3 | 4 | 5;
7
+ label?: string;
8
+ onChange?: React.ChangeEventHandler<HTMLInputElement>;
9
+ }
10
+ /** Mood — five dots in a pill from bad to good; the picked one grows. */
11
+ export declare function Mood({ name, value, label, onChange, className, ...rest }: MoodProps): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cx } from '../cx';
3
+ /** Mood — five dots in a pill from bad to good; the picked one grows. */
4
+ export function Mood({ name = 'mood', value, label = 'Mood', onChange, className, ...rest }) {
5
+ return (_jsx("fieldset", { className: cx('mood', className), "aria-label": label, ...rest, children: [1, 2, 3, 4, 5].map((n) => (_jsxs("label", { className: "mood__opt", children: [_jsx("input", { type: "radio", name: name, value: n, defaultChecked: n === value, onChange: onChange }), _jsx("span", { className: "mood__dot" })] }, n))) }));
6
+ }
@@ -0,0 +1,11 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
2
+ export interface SliderProps extends Omit<ComponentPropsWithoutRef<'input'>, 'className' | 'style' | 'type'> {
3
+ /** the label row above the track (optional in a bar that already says what it does) */
4
+ label?: ReactNode;
5
+ /** one sample letter IN the knob, at the type size the slider sets (a text-size slider's ก) */
6
+ glyph?: ReactNode;
7
+ className?: string;
8
+ style?: React.CSSProperties;
9
+ }
10
+ /** Slider — one value along a hairline rail with a 48px knob; the whole range is thumb-tall. */
11
+ export declare function Slider({ label, glyph, className, style, ...input }: SliderProps): import("react").JSX.Element;