@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.
- package/README.md +562 -0
- package/cardds.css +18 -0
- package/cardds.js +473 -0
- package/css/actions.css +292 -0
- package/css/base.css +128 -0
- package/css/card.css +283 -0
- package/css/choice.css +297 -0
- package/css/fonts.css +37 -0
- package/css/forms.css +64 -0
- package/css/journey.css +61 -0
- package/css/layover.css +243 -0
- package/css/lists.css +142 -0
- package/css/media.css +232 -0
- package/css/numbers.css +258 -0
- package/css/palette.css +112 -0
- package/css/people.css +79 -0
- package/css/sheet.css +295 -0
- package/css/stack.css +262 -0
- package/css/step.css +71 -0
- package/css/tokens.css +177 -0
- package/dist/actions/Btn.d.ts +311 -0
- package/dist/actions/Btn.js +14 -0
- package/dist/actions/BtnRow.d.ts +5 -0
- package/dist/actions/BtnRow.js +6 -0
- package/dist/actions/Chip.d.ts +328 -0
- package/dist/actions/Chip.js +25 -0
- package/dist/actions/Dot.d.ts +7 -0
- package/dist/actions/Dot.js +6 -0
- package/dist/actions/Dropdown.d.ts +34 -0
- package/dist/actions/Dropdown.js +19 -0
- package/dist/actions/Fab.d.ts +9 -0
- package/dist/actions/Fab.js +7 -0
- package/dist/actions/IconBtn.d.ts +308 -0
- package/dist/actions/IconBtn.js +8 -0
- package/dist/actions/Link.d.ts +301 -0
- package/dist/actions/Link.js +8 -0
- package/dist/actions/Segment.d.ts +11 -0
- package/dist/actions/Segment.js +10 -0
- package/dist/cardds.css +3068 -0
- package/dist/cards/Card.d.ts +310 -0
- package/dist/cards/Card.js +14 -0
- package/dist/cards/CardFoot.d.ts +5 -0
- package/dist/cards/CardFoot.js +6 -0
- package/dist/cards/CardHead.d.ts +21 -0
- package/dist/cards/CardHead.js +11 -0
- package/dist/cards/CardParts.d.ts +25 -0
- package/dist/cards/CardParts.js +26 -0
- package/dist/cards/Placeholder.d.ts +9 -0
- package/dist/cards/Placeholder.js +6 -0
- package/dist/cards/Stat.d.ts +17 -0
- package/dist/cards/Stat.js +14 -0
- package/dist/choice/Calendar.d.ts +23 -0
- package/dist/choice/Calendar.js +7 -0
- package/dist/choice/Check.d.ts +14 -0
- package/dist/choice/Check.js +10 -0
- package/dist/choice/DayStrip.d.ts +16 -0
- package/dist/choice/DayStrip.js +10 -0
- package/dist/choice/Mood.d.ts +11 -0
- package/dist/choice/Mood.js +6 -0
- package/dist/choice/Slider.d.ts +11 -0
- package/dist/choice/Slider.js +14 -0
- package/dist/cx.d.ts +2 -0
- package/dist/cx.js +2 -0
- package/dist/forms/AddRow.d.ts +5 -0
- package/dist/forms/AddRow.js +7 -0
- package/dist/forms/Composer.d.ts +13 -0
- package/dist/forms/Composer.js +6 -0
- package/dist/forms/Field.d.ts +17 -0
- package/dist/forms/Field.js +10 -0
- package/dist/forms/FileBtn.d.ts +18 -0
- package/dist/forms/FileBtn.js +10 -0
- package/dist/forms/Pin.d.ts +19 -0
- package/dist/forms/Pin.js +27 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.js +75 -0
- package/dist/journey/NoteRow.d.ts +7 -0
- package/dist/journey/NoteRow.js +7 -0
- package/dist/journey/Route.d.ts +18 -0
- package/dist/journey/Route.js +8 -0
- package/dist/journey/TileBadge.d.ts +15 -0
- package/dist/journey/TileBadge.js +6 -0
- package/dist/layover/Banner.d.ts +9 -0
- package/dist/layover/Banner.js +6 -0
- package/dist/layover/Callout.d.ts +10 -0
- package/dist/layover/Callout.js +6 -0
- package/dist/layover/Deck.d.ts +9 -0
- package/dist/layover/Deck.js +10 -0
- package/dist/lists/Kv.d.ts +27 -0
- package/dist/lists/Kv.js +19 -0
- package/dist/lists/Legend.d.ts +11 -0
- package/dist/lists/Legend.js +11 -0
- package/dist/lists/Row.d.ts +319 -0
- package/dist/lists/Row.js +17 -0
- package/dist/lists/Timeline.d.ts +11 -0
- package/dist/lists/Timeline.js +10 -0
- package/dist/media/MapArea.d.ts +20 -0
- package/dist/media/MapArea.js +11 -0
- package/dist/media/Mosaic.d.ts +11 -0
- package/dist/media/Mosaic.js +10 -0
- package/dist/media/Postcard.d.ts +20 -0
- package/dist/media/Postcard.js +10 -0
- package/dist/media/Quote.d.ts +11 -0
- package/dist/media/Quote.js +6 -0
- package/dist/media/Tile.d.ts +320 -0
- package/dist/media/Tile.js +16 -0
- package/dist/numbers/Badge.d.ts +7 -0
- package/dist/numbers/Badge.js +6 -0
- package/dist/numbers/Band.d.ts +16 -0
- package/dist/numbers/Band.js +10 -0
- package/dist/numbers/Bars.d.ts +14 -0
- package/dist/numbers/Bars.js +10 -0
- package/dist/numbers/DotGrid.d.ts +12 -0
- package/dist/numbers/DotGrid.js +6 -0
- package/dist/numbers/Picker.d.ts +13 -0
- package/dist/numbers/Picker.js +18 -0
- package/dist/numbers/Ring.d.ts +15 -0
- package/dist/numbers/Ring.js +6 -0
- package/dist/numbers/Track.d.ts +12 -0
- package/dist/numbers/Track.js +10 -0
- package/dist/people/Avatar.d.ts +314 -0
- package/dist/people/Avatar.js +13 -0
- package/dist/people/AvatarPick.d.ts +18 -0
- package/dist/people/AvatarPick.js +10 -0
- package/dist/scaffold/ActionBar.d.ts +21 -0
- package/dist/scaffold/ActionBar.js +16 -0
- package/dist/scaffold/AppBar.d.ts +18 -0
- package/dist/scaffold/AppBar.js +10 -0
- package/dist/scaffold/Centre.d.ts +30 -0
- package/dist/scaffold/Centre.js +41 -0
- package/dist/scaffold/EmptyState.d.ts +14 -0
- package/dist/scaffold/EmptyState.js +8 -0
- package/dist/scaffold/FilterRow.d.ts +5 -0
- package/dist/scaffold/FilterRow.js +6 -0
- package/dist/scaffold/FloatBar.d.ts +310 -0
- package/dist/scaffold/FloatBar.js +15 -0
- package/dist/scaffold/PagerAt.d.ts +11 -0
- package/dist/scaffold/PagerAt.js +6 -0
- package/dist/scaffold/Screen.d.ts +299 -0
- package/dist/scaffold/Screen.js +11 -0
- package/dist/scaffold/Section.d.ts +12 -0
- package/dist/scaffold/Section.js +13 -0
- package/dist/scaffold/TopBar.d.ts +15 -0
- package/dist/scaffold/TopBar.js +9 -0
- package/dist/sheets/CardBack.d.ts +7 -0
- package/dist/sheets/CardBack.js +7 -0
- package/dist/sheets/Drawer.d.ts +17 -0
- package/dist/sheets/Drawer.js +16 -0
- package/dist/sheets/Sheet.d.ts +21 -0
- package/dist/sheets/Sheet.js +13 -0
- package/dist/sheets/SheetBody.d.ts +5 -0
- package/dist/sheets/SheetBody.js +6 -0
- package/dist/sheets/SheetHead.d.ts +13 -0
- package/dist/sheets/SheetHead.js +6 -0
- package/dist/sheets/SheetStack.d.ts +21 -0
- package/dist/sheets/SheetStack.js +14 -0
- package/dist/sheets/SheetStage.d.ts +20 -0
- package/dist/sheets/SheetStage.js +11 -0
- package/dist/sheets/Step.d.ts +15 -0
- package/dist/sheets/Step.js +15 -0
- package/dist/type/Icon.d.ts +16 -0
- package/dist/type/Icon.js +12 -0
- package/dist/type/Text.d.ts +302 -0
- package/dist/type/Text.js +16 -0
- package/dist/type/icons.d.ts +6 -0
- package/dist/type/icons.js +2 -0
- package/fonts/LICENSES.md +44 -0
- package/fonts/fc-pride-medium.otf +0 -0
- package/fonts/pk-nonthaburi-demo.ttf +0 -0
- package/icons.svg +61 -0
- package/package.json +62 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
|
|
2
|
+
import { type IconName } from '../type/Icon';
|
|
3
|
+
export interface TileGridProps extends ComponentPropsWithoutRef<'div'> {
|
|
4
|
+
/** three across on a phone (attachments, upload kinds) */
|
|
5
|
+
cols3?: boolean;
|
|
6
|
+
bleed?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** TileGrid — big square Tiles in a responsive grid. */
|
|
9
|
+
export declare function TileGrid({ cols3, bleed, className, ...rest }: TileGridProps): import("react").JSX.Element;
|
|
10
|
+
export interface TileProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
11
|
+
/** the icon at the top */
|
|
12
|
+
icon?: IconName;
|
|
13
|
+
/** the label at the bottom */
|
|
14
|
+
label?: ReactNode;
|
|
15
|
+
/** a big value (stat tiles) */
|
|
16
|
+
value?: ReactNode;
|
|
17
|
+
/** a caption under the label or value */
|
|
18
|
+
sub?: ReactNode;
|
|
19
|
+
/** a pick tile: a checkbox (or radio) inside, filled when checked */
|
|
20
|
+
pick?: boolean;
|
|
21
|
+
type?: 'checkbox' | 'radio';
|
|
22
|
+
name?: string;
|
|
23
|
+
checked?: boolean;
|
|
24
|
+
defaultChecked?: boolean;
|
|
25
|
+
onChange?: React.ChangeEventHandler<HTMLInputElement>;
|
|
26
|
+
/** filled accent (a static "on" tile) */
|
|
27
|
+
on?: boolean;
|
|
28
|
+
/** icon beside a value + caption, shorter */
|
|
29
|
+
stat?: boolean;
|
|
30
|
+
/** dashed, centred: an upload slot */
|
|
31
|
+
upload?: boolean;
|
|
32
|
+
/** spans the whole grid */
|
|
33
|
+
wide?: boolean;
|
|
34
|
+
/** a slot tint */
|
|
35
|
+
tone?: 2 | 3;
|
|
36
|
+
/** div (default), button for a tap tile — pick tiles render as a label */
|
|
37
|
+
as?: 'div' | 'button';
|
|
38
|
+
}
|
|
39
|
+
/** Tile — a big square: icon top, label bottom; `pick` toggles, `stat` shows a value, `upload` is the dashed slot. */
|
|
40
|
+
export declare function Tile({ icon, label, value, sub, pick, type, name, checked, defaultChecked, onChange, on, stat, upload, wide, tone, as, className, children, ...rest }: TileProps): import("react").DetailedReactHTMLElement<{
|
|
41
|
+
slot?: string | undefined | undefined;
|
|
42
|
+
style?: import("react").CSSProperties | undefined;
|
|
43
|
+
title?: string | undefined | undefined;
|
|
44
|
+
suppressHydrationWarning?: boolean | undefined | undefined;
|
|
45
|
+
color?: string | undefined | undefined;
|
|
46
|
+
id?: string | undefined | undefined;
|
|
47
|
+
lang?: string | undefined | undefined;
|
|
48
|
+
nonce?: string | undefined | undefined;
|
|
49
|
+
part?: string | undefined | undefined;
|
|
50
|
+
role?: import("react").AriaRole | undefined;
|
|
51
|
+
tabIndex?: number | undefined | undefined;
|
|
52
|
+
"aria-activedescendant"?: string | undefined | undefined;
|
|
53
|
+
"aria-atomic"?: (boolean | "true" | "false") | undefined;
|
|
54
|
+
"aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
|
|
55
|
+
"aria-braillelabel"?: string | undefined | undefined;
|
|
56
|
+
"aria-brailleroledescription"?: string | undefined | undefined;
|
|
57
|
+
"aria-busy"?: (boolean | "true" | "false") | undefined;
|
|
58
|
+
"aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
|
|
59
|
+
"aria-colcount"?: number | undefined | undefined;
|
|
60
|
+
"aria-colindex"?: number | undefined | undefined;
|
|
61
|
+
"aria-colindextext"?: string | undefined | undefined;
|
|
62
|
+
"aria-colspan"?: number | undefined | undefined;
|
|
63
|
+
"aria-controls"?: string | undefined | undefined;
|
|
64
|
+
"aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined | undefined;
|
|
65
|
+
"aria-describedby"?: string | undefined | undefined;
|
|
66
|
+
"aria-description"?: string | undefined | undefined;
|
|
67
|
+
"aria-details"?: string | undefined | undefined;
|
|
68
|
+
"aria-disabled"?: (boolean | "true" | "false") | undefined;
|
|
69
|
+
"aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
|
|
70
|
+
"aria-errormessage"?: string | undefined | undefined;
|
|
71
|
+
"aria-expanded"?: (boolean | "true" | "false") | undefined;
|
|
72
|
+
"aria-flowto"?: string | undefined | undefined;
|
|
73
|
+
"aria-grabbed"?: (boolean | "true" | "false") | undefined;
|
|
74
|
+
"aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
|
|
75
|
+
"aria-hidden"?: (boolean | "true" | "false") | undefined;
|
|
76
|
+
"aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
|
|
77
|
+
"aria-keyshortcuts"?: string | undefined | undefined;
|
|
78
|
+
"aria-label"?: string | undefined | undefined;
|
|
79
|
+
"aria-labelledby"?: string | undefined | undefined;
|
|
80
|
+
"aria-level"?: number | undefined | undefined;
|
|
81
|
+
"aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
|
|
82
|
+
"aria-modal"?: (boolean | "true" | "false") | undefined;
|
|
83
|
+
"aria-multiline"?: (boolean | "true" | "false") | undefined;
|
|
84
|
+
"aria-multiselectable"?: (boolean | "true" | "false") | undefined;
|
|
85
|
+
"aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
|
|
86
|
+
"aria-owns"?: string | undefined | undefined;
|
|
87
|
+
"aria-placeholder"?: string | undefined | undefined;
|
|
88
|
+
"aria-posinset"?: number | undefined | undefined;
|
|
89
|
+
"aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
|
|
90
|
+
"aria-readonly"?: (boolean | "true" | "false") | undefined;
|
|
91
|
+
"aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
|
|
92
|
+
"aria-required"?: (boolean | "true" | "false") | undefined;
|
|
93
|
+
"aria-roledescription"?: string | undefined | undefined;
|
|
94
|
+
"aria-rowcount"?: number | undefined | undefined;
|
|
95
|
+
"aria-rowindex"?: number | undefined | undefined;
|
|
96
|
+
"aria-rowindextext"?: string | undefined | undefined;
|
|
97
|
+
"aria-rowspan"?: number | undefined | undefined;
|
|
98
|
+
"aria-selected"?: (boolean | "true" | "false") | undefined;
|
|
99
|
+
"aria-setsize"?: number | undefined | undefined;
|
|
100
|
+
"aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
|
|
101
|
+
"aria-valuemax"?: number | undefined | undefined;
|
|
102
|
+
"aria-valuemin"?: number | undefined | undefined;
|
|
103
|
+
"aria-valuenow"?: number | undefined | undefined;
|
|
104
|
+
"aria-valuetext"?: string | undefined | undefined;
|
|
105
|
+
dangerouslySetInnerHTML?: {
|
|
106
|
+
__html: string | TrustedHTML;
|
|
107
|
+
} | undefined | undefined;
|
|
108
|
+
onCopy?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
109
|
+
onCopyCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
110
|
+
onCut?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
111
|
+
onCutCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
112
|
+
onPaste?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
113
|
+
onPasteCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
|
|
114
|
+
onCompositionEnd?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
115
|
+
onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
116
|
+
onCompositionStart?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
117
|
+
onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
118
|
+
onCompositionUpdate?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
119
|
+
onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
|
|
120
|
+
onFocus?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
|
|
121
|
+
onFocusCapture?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
|
|
122
|
+
onBlur?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
|
|
123
|
+
onBlurCapture?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
|
|
124
|
+
onChangeCapture?: import("react").ChangeEventHandler<HTMLDivElement, Element> | undefined;
|
|
125
|
+
onBeforeInput?: import("react").InputEventHandler<HTMLDivElement> | undefined;
|
|
126
|
+
onBeforeInputCapture?: import("react").InputEventHandler<HTMLDivElement> | undefined;
|
|
127
|
+
onInput?: import("react").InputEventHandler<HTMLDivElement> | undefined;
|
|
128
|
+
onInputCapture?: import("react").InputEventHandler<HTMLDivElement> | undefined;
|
|
129
|
+
onReset?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
130
|
+
onResetCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
131
|
+
onSubmit?: import("react").SubmitEventHandler<HTMLDivElement> | undefined;
|
|
132
|
+
onSubmitCapture?: import("react").SubmitEventHandler<HTMLDivElement> | undefined;
|
|
133
|
+
onInvalid?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
134
|
+
onInvalidCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
135
|
+
onLoad?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
136
|
+
onLoadCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
137
|
+
onError?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
138
|
+
onErrorCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
139
|
+
onKeyDown?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
140
|
+
onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
141
|
+
onKeyPress?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
142
|
+
onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
143
|
+
onKeyUp?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
144
|
+
onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
|
|
145
|
+
onAbort?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
146
|
+
onAbortCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
147
|
+
onCanPlay?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
148
|
+
onCanPlayCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
149
|
+
onCanPlayThrough?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
150
|
+
onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
151
|
+
onDurationChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
152
|
+
onDurationChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
153
|
+
onEmptied?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
154
|
+
onEmptiedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
155
|
+
onEncrypted?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
156
|
+
onEncryptedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
157
|
+
onEnded?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
158
|
+
onEndedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
159
|
+
onLoadedData?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
160
|
+
onLoadedDataCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
161
|
+
onLoadedMetadata?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
162
|
+
onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
163
|
+
onLoadStart?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
164
|
+
onLoadStartCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
165
|
+
onPause?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
166
|
+
onPauseCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
167
|
+
onPlay?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
168
|
+
onPlayCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
169
|
+
onPlaying?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
170
|
+
onPlayingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
171
|
+
onProgress?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
172
|
+
onProgressCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
173
|
+
onRateChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
174
|
+
onRateChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
175
|
+
onSeeked?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
176
|
+
onSeekedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
177
|
+
onSeeking?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
178
|
+
onSeekingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
179
|
+
onStalled?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
180
|
+
onStalledCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
181
|
+
onSuspend?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
182
|
+
onSuspendCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
183
|
+
onTimeUpdate?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
184
|
+
onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
185
|
+
onVolumeChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
186
|
+
onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
187
|
+
onWaiting?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
188
|
+
onWaitingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
189
|
+
onAuxClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
190
|
+
onAuxClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
191
|
+
onClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
192
|
+
onClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
193
|
+
onContextMenu?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
194
|
+
onContextMenuCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
195
|
+
onDoubleClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
196
|
+
onDoubleClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
197
|
+
onDrag?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
198
|
+
onDragCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
199
|
+
onDragEnd?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
200
|
+
onDragEndCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
201
|
+
onDragEnter?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
202
|
+
onDragEnterCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
203
|
+
onDragExit?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
204
|
+
onDragExitCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
205
|
+
onDragLeave?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
206
|
+
onDragLeaveCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
207
|
+
onDragOver?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
208
|
+
onDragOverCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
209
|
+
onDragStart?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
210
|
+
onDragStartCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
211
|
+
onDrop?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
212
|
+
onDropCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
|
|
213
|
+
onMouseDown?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
214
|
+
onMouseDownCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
215
|
+
onMouseEnter?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
216
|
+
onMouseLeave?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
217
|
+
onMouseMove?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
218
|
+
onMouseMoveCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
219
|
+
onMouseOut?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
220
|
+
onMouseOutCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
221
|
+
onMouseOver?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
222
|
+
onMouseOverCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
223
|
+
onMouseUp?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
224
|
+
onMouseUpCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
|
|
225
|
+
onSelect?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
226
|
+
onSelectCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
|
|
227
|
+
onTouchCancel?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
228
|
+
onTouchCancelCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
229
|
+
onTouchEnd?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
230
|
+
onTouchEndCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
231
|
+
onTouchMove?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
232
|
+
onTouchMoveCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
233
|
+
onTouchStart?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
234
|
+
onTouchStartCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
|
|
235
|
+
onPointerDown?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
236
|
+
onPointerDownCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
237
|
+
onPointerMove?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
238
|
+
onPointerMoveCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
239
|
+
onPointerUp?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
240
|
+
onPointerUpCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
241
|
+
onPointerCancel?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
242
|
+
onPointerCancelCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
243
|
+
onPointerEnter?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
244
|
+
onPointerLeave?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
245
|
+
onPointerOver?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
246
|
+
onPointerOverCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
247
|
+
onPointerOut?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
248
|
+
onPointerOutCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
249
|
+
onGotPointerCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
250
|
+
onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
251
|
+
onLostPointerCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
252
|
+
onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
|
|
253
|
+
onScroll?: import("react").UIEventHandler<HTMLDivElement> | undefined;
|
|
254
|
+
onScrollCapture?: import("react").UIEventHandler<HTMLDivElement> | undefined;
|
|
255
|
+
onScrollEnd?: import("react").UIEventHandler<HTMLDivElement> | undefined;
|
|
256
|
+
onScrollEndCapture?: import("react").UIEventHandler<HTMLDivElement> | undefined;
|
|
257
|
+
onWheel?: import("react").WheelEventHandler<HTMLDivElement> | undefined;
|
|
258
|
+
onWheelCapture?: import("react").WheelEventHandler<HTMLDivElement> | undefined;
|
|
259
|
+
onAnimationStart?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
260
|
+
onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
261
|
+
onAnimationEnd?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
262
|
+
onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
263
|
+
onAnimationIteration?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
264
|
+
onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
|
|
265
|
+
onToggle?: import("react").ToggleEventHandler<HTMLDivElement> | undefined;
|
|
266
|
+
onBeforeToggle?: import("react").ToggleEventHandler<HTMLDivElement> | undefined;
|
|
267
|
+
onTransitionCancel?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
268
|
+
onTransitionCancelCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
269
|
+
onTransitionEnd?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
270
|
+
onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
271
|
+
onTransitionRun?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
272
|
+
onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
273
|
+
onTransitionStart?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
274
|
+
onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
275
|
+
key?: import("react").Key | null | undefined;
|
|
276
|
+
defaultValue?: string | number | readonly string[] | undefined;
|
|
277
|
+
suppressContentEditableWarning?: boolean | undefined | undefined;
|
|
278
|
+
accessKey?: string | undefined | undefined;
|
|
279
|
+
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
|
|
280
|
+
autoFocus?: boolean | undefined | undefined;
|
|
281
|
+
contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
282
|
+
contextMenu?: string | undefined | undefined;
|
|
283
|
+
dir?: string | undefined | undefined;
|
|
284
|
+
draggable?: (boolean | "true" | "false") | undefined;
|
|
285
|
+
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
286
|
+
hidden?: boolean | undefined | undefined;
|
|
287
|
+
spellCheck?: (boolean | "true" | "false") | undefined;
|
|
288
|
+
translate?: "yes" | "no" | undefined | undefined;
|
|
289
|
+
radioGroup?: string | undefined | undefined;
|
|
290
|
+
about?: string | undefined | undefined;
|
|
291
|
+
content?: string | undefined | undefined;
|
|
292
|
+
datatype?: string | undefined | undefined;
|
|
293
|
+
inlist?: any;
|
|
294
|
+
prefix?: string | undefined | undefined;
|
|
295
|
+
property?: string | undefined | undefined;
|
|
296
|
+
rel?: string | undefined | undefined;
|
|
297
|
+
resource?: string | undefined | undefined;
|
|
298
|
+
rev?: string | undefined | undefined;
|
|
299
|
+
typeof?: string | undefined | undefined;
|
|
300
|
+
vocab?: string | undefined | undefined;
|
|
301
|
+
autoCorrect?: string | undefined | undefined;
|
|
302
|
+
autoSave?: string | undefined | undefined;
|
|
303
|
+
itemProp?: string | undefined | undefined;
|
|
304
|
+
itemScope?: boolean | undefined | undefined;
|
|
305
|
+
itemType?: string | undefined | undefined;
|
|
306
|
+
itemID?: string | undefined | undefined;
|
|
307
|
+
itemRef?: string | undefined | undefined;
|
|
308
|
+
results?: number | undefined | undefined;
|
|
309
|
+
security?: string | undefined | undefined;
|
|
310
|
+
unselectable?: "on" | "off" | undefined | undefined;
|
|
311
|
+
popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
|
|
312
|
+
popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
|
|
313
|
+
popoverTarget?: string | undefined | undefined;
|
|
314
|
+
inert?: boolean | undefined | undefined;
|
|
315
|
+
inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
|
|
316
|
+
is?: string | undefined | undefined;
|
|
317
|
+
exportparts?: string | undefined | undefined;
|
|
318
|
+
type: string | undefined;
|
|
319
|
+
className: string;
|
|
320
|
+
}, HTMLElement>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createElement } from 'react';
|
|
3
|
+
import { cx } from '../cx';
|
|
4
|
+
import { Icon } from '../type/Icon';
|
|
5
|
+
/** TileGrid — big square Tiles in a responsive grid. */
|
|
6
|
+
export function TileGrid({ cols3, bleed, className, ...rest }) {
|
|
7
|
+
return _jsx("div", { className: cx('tile-grid', cols3 && 'tile-grid--3', bleed && 'bleed', className), ...rest });
|
|
8
|
+
}
|
|
9
|
+
/** Tile — a big square: icon top, label bottom; `pick` toggles, `stat` shows a value, `upload` is the dashed slot. */
|
|
10
|
+
export function Tile({ icon, label, value, sub, pick, type = 'checkbox', name, checked, defaultChecked, onChange, on, stat, upload, wide, tone, as, className, children, ...rest }) {
|
|
11
|
+
const el = pick ? 'label' : as ?? 'div';
|
|
12
|
+
const text = value != null || (label != null && sub != null)
|
|
13
|
+
? _jsxs("span", { className: "tile__text", children: [value != null && _jsx("span", { className: "tile__value", children: value }), label != null && _jsx("span", { className: "tile__label", children: label }), sub != null && _jsx("span", { className: "tile__sub", children: sub })] })
|
|
14
|
+
: label != null && _jsx("span", { className: "tile__label", children: label });
|
|
15
|
+
return createElement(el, { type: el === 'button' ? 'button' : undefined, className: cx('tile', pick && 'tile--pick', on && 'tile--on', stat && 'tile--stat', upload && 'tile--upload', wide && 'tile--wide', tone && `tile--${tone}`, className), ...rest }, pick && _jsx("input", { type: type, name: name, checked: checked, defaultChecked: defaultChecked, onChange: onChange }), icon && _jsx(Icon, { name: icon }), text, children);
|
|
16
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
export interface BadgeProps extends ComponentPropsWithoutRef<'span'> {
|
|
3
|
+
/** tinted instead of accent */
|
|
4
|
+
soft?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/** Badge — the tiny count beside a title or tab ("Leads +9"). */
|
|
7
|
+
export declare function Badge({ soft, className, ...rest }: BadgeProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from '../cx';
|
|
3
|
+
/** Badge — the tiny count beside a title or tab ("Leads +9"). */
|
|
4
|
+
export function Badge({ soft, className, ...rest }) {
|
|
5
|
+
return _jsx("span", { className: cx('badge', soft && 'badge--soft', className), ...rest });
|
|
6
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
export interface BandProps extends ComponentPropsWithoutRef<'article'> {
|
|
3
|
+
/** the two-line label (use a `<br />` to break it) */
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
/** the giant number; wrap a unit in `<small>` */
|
|
6
|
+
num: ReactNode;
|
|
7
|
+
/** the footnote under the label */
|
|
8
|
+
foot?: ReactNode;
|
|
9
|
+
tone?: 1 | 2 | 3;
|
|
10
|
+
}
|
|
11
|
+
/** Band — a data card: 2-line label · giant number · footnote. Stack several in a BandStack for one boundary with hairlines. */
|
|
12
|
+
export declare function Band({ label, num, foot, tone, className, ...rest }: BandProps): import("react").JSX.Element;
|
|
13
|
+
export interface BandStackProps extends ComponentPropsWithoutRef<'div'> {
|
|
14
|
+
}
|
|
15
|
+
/** BandStack — several Bands as ONE card boundary, a hairline between each. */
|
|
16
|
+
export declare function BandStack({ className, ...rest }: BandStackProps): 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
|
+
/** Band — a data card: 2-line label · giant number · footnote. Stack several in a BandStack for one boundary with hairlines. */
|
|
4
|
+
export function Band({ label, num, foot, tone, className, ...rest }) {
|
|
5
|
+
return (_jsxs("article", { className: cx('card card--band', tone && tone !== 1 && `card--${tone}`, className), ...rest, children: [_jsx("span", { className: "band__label", children: label }), _jsx("span", { className: "band__num", children: num }), foot != null && _jsx("span", { className: "band__foot", children: foot })] }));
|
|
6
|
+
}
|
|
7
|
+
/** BandStack — several Bands as ONE card boundary, a hairline between each. */
|
|
8
|
+
export function BandStack({ className, ...rest }) {
|
|
9
|
+
return _jsx("div", { className: cx('band-stack', className), ...rest });
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
export interface BarsProps extends ComponentPropsWithoutRef<'div'> {
|
|
3
|
+
/** the value of the tallest bar */
|
|
4
|
+
max: number;
|
|
5
|
+
}
|
|
6
|
+
/** Bars — three or four bars with a count on top, the glance chart; children are Bar. */
|
|
7
|
+
export declare function Bars({ max, className, style, ...rest }: BarsProps): import("react").JSX.Element;
|
|
8
|
+
export interface BarProps extends ComponentPropsWithoutRef<'div'> {
|
|
9
|
+
value: number;
|
|
10
|
+
/** the highlighted bar (accent, its count in a pill) */
|
|
11
|
+
on?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/** Bar — one bar in Bars; children is the count shown on top. */
|
|
14
|
+
export declare function Bar({ value, on, className, style, children, ...rest }: BarProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from '../cx';
|
|
3
|
+
/** Bars — three or four bars with a count on top, the glance chart; children are Bar. */
|
|
4
|
+
export function Bars({ max, className, style, ...rest }) {
|
|
5
|
+
return _jsx("div", { className: cx('bars', className), style: { ...style, '--max': max }, ...rest });
|
|
6
|
+
}
|
|
7
|
+
/** Bar — one bar in Bars; children is the count shown on top. */
|
|
8
|
+
export function Bar({ value, on, className, style, children, ...rest }) {
|
|
9
|
+
return (_jsx("div", { className: cx('bar', on && 'bar--on', className), style: { ...style, '--v': value }, ...rest, children: _jsx("span", { children: children }) }));
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
export interface DotGridProps extends ComponentPropsWithoutRef<'div'> {
|
|
3
|
+
/** how many dots */
|
|
4
|
+
total: number;
|
|
5
|
+
/** how many are done (filled, from the top-left) */
|
|
6
|
+
done: number;
|
|
7
|
+
/** dots per row (12) */
|
|
8
|
+
cols?: number;
|
|
9
|
+
label?: string;
|
|
10
|
+
}
|
|
11
|
+
/** DotGrid — progress over time as a grid of dots, one element and three numbers (`--total`, `--done`, `--cols`). */
|
|
12
|
+
export declare function DotGrid({ total, done, cols, label, className, style, ...rest }: DotGridProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from '../cx';
|
|
3
|
+
/** DotGrid — progress over time as a grid of dots, one element and three numbers (`--total`, `--done`, `--cols`). */
|
|
4
|
+
export function DotGrid({ total, done, cols, label, className, style, ...rest }) {
|
|
5
|
+
return (_jsx("div", { className: cx('dotgrid', className), style: { ...style, '--total': total, '--done': done, ...(cols ? { '--cols': cols } : {}) }, role: "img", "aria-label": label ?? `${done} of ${total}`, ...rest }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
|
|
2
|
+
export interface PickerProps extends ComponentPropsWithoutRef<'div'> {
|
|
3
|
+
/** the unit under the rail ("hours") */
|
|
4
|
+
unit?: ReactNode;
|
|
5
|
+
label?: string;
|
|
6
|
+
}
|
|
7
|
+
/** Picker — a horizontal snap picker, the centre value big between two accent rules; children are PickerItems. */
|
|
8
|
+
export declare function Picker({ unit, label, className, children, ...rest }: PickerProps): import("react").JSX.Element;
|
|
9
|
+
export interface PickerItemProps extends ComponentPropsWithoutRef<'button'> {
|
|
10
|
+
selected?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** PickerItem — one value on the Picker rail. */
|
|
13
|
+
export declare function PickerItem({ selected, className, ...rest }: PickerItemProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
import { cx } from '../cx';
|
|
4
|
+
/** Picker — a horizontal snap picker, the centre value big between two accent rules; children are PickerItems. */
|
|
5
|
+
export function Picker({ unit, label, className, children, ...rest }) {
|
|
6
|
+
const rail = useRef(null);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
// start on the selected value, as the demo page does: the CSS lights the item by scroll position
|
|
9
|
+
const r = rail.current, on = r?.querySelector('[aria-selected="true"]');
|
|
10
|
+
if (r && on)
|
|
11
|
+
r.scrollLeft = on.offsetLeft - r.clientWidth / 3;
|
|
12
|
+
}, []);
|
|
13
|
+
return (_jsxs("div", { className: cx('picker', className), "aria-label": label, ...rest, children: [_jsx("div", { className: "picker__rail", role: "listbox", ref: rail, children: children }), unit != null && _jsx("span", { className: "picker__unit", children: unit })] }));
|
|
14
|
+
}
|
|
15
|
+
/** PickerItem — one value on the Picker rail. */
|
|
16
|
+
export function PickerItem({ selected, className, ...rest }) {
|
|
17
|
+
return _jsx("button", { type: "button", role: "option", "aria-selected": selected ? 'true' : 'false', className: cx('picker__item', className), ...rest });
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
export interface RingProps extends ComponentPropsWithoutRef<'div'> {
|
|
3
|
+
/** 0–100 */
|
|
4
|
+
value: number;
|
|
5
|
+
/** sm = an avatar-xl ring · xs = an inline counter in a head (2/3) */
|
|
6
|
+
size?: 'sm' | 'xs';
|
|
7
|
+
/** the big text in the middle ("62%") */
|
|
8
|
+
text?: ReactNode;
|
|
9
|
+
/** the caption under it ("of goal") */
|
|
10
|
+
caption?: ReactNode;
|
|
11
|
+
/** accessible name */
|
|
12
|
+
label?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Ring — the conic gauge with its value centred; data goes in as `--value`, the math lives in CSS. */
|
|
15
|
+
export declare function Ring({ value, size, text, caption, label, className, style, children, ...rest }: RingProps): 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
|
+
/** Ring — the conic gauge with its value centred; data goes in as `--value`, the math lives in CSS. */
|
|
4
|
+
export function Ring({ value, size, text, caption, label, className, style, children, ...rest }) {
|
|
5
|
+
return (_jsxs("div", { className: cx('ring', size && `ring--${size}`, className), style: { ...style, '--value': value }, role: "img", "aria-label": label ?? `${value} percent`, ...rest, children: [text != null && _jsx("span", { className: "ring__value", children: text }), caption != null && _jsx("span", { className: "ring__label", children: caption }), children] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
export interface TrackProps extends ComponentPropsWithoutRef<'ol'> {
|
|
3
|
+
label?: string;
|
|
4
|
+
}
|
|
5
|
+
/** Track — step progress in a dark pill: done · done · todo; children are TrackSteps holding an Icon each. */
|
|
6
|
+
export declare function Track({ label, className, ...rest }: TrackProps): import("react").JSX.Element;
|
|
7
|
+
export interface TrackStepProps extends ComponentPropsWithoutRef<'li'> {
|
|
8
|
+
/** this step (and the connector into it) is done */
|
|
9
|
+
done?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** TrackStep — one step of a Track: an Icon in a round; lit when done. */
|
|
12
|
+
export declare function TrackStep({ done, className, ...rest }: TrackStepProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from '../cx';
|
|
3
|
+
/** Track — step progress in a dark pill: done · done · todo; children are TrackSteps holding an Icon each. */
|
|
4
|
+
export function Track({ label = 'Progress', className, ...rest }) {
|
|
5
|
+
return _jsx("ol", { className: cx('track', className), "aria-label": label, ...rest });
|
|
6
|
+
}
|
|
7
|
+
/** TrackStep — one step of a Track: an Icon in a round; lit when done. */
|
|
8
|
+
export function TrackStep({ done, className, ...rest }) {
|
|
9
|
+
return _jsx("li", { className: cx('track__step', done && 'is-done', className), ...rest });
|
|
10
|
+
}
|