@itiseeron/component-lib 1.0.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/LICENSE +21 -0
- package/README.md +278 -0
- package/dist/index.d.mts +744 -0
- package/dist/index.d.ts +744 -0
- package/dist/index.js +1259 -0
- package/dist/index.mjs +1208 -0
- package/package.json +62 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,744 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
|
|
4
|
+
declare function HelloWorld(): JSX.Element;
|
|
5
|
+
|
|
6
|
+
type ThinButtonProps = {
|
|
7
|
+
testID?: string;
|
|
8
|
+
key?: any;
|
|
9
|
+
text?: String;
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
onclick?: () => any;
|
|
12
|
+
containerStyle?: React.CSSProperties;
|
|
13
|
+
buttonStyle?: React.CSSProperties;
|
|
14
|
+
buttonTextStyle?: React.CSSProperties;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* ------------------------------------------------------------
|
|
18
|
+
* Thin Button
|
|
19
|
+
* ------------------------------------------------------------
|
|
20
|
+
* A component that renders a clickable space
|
|
21
|
+
* with a border and text. This element is intended to be clicked
|
|
22
|
+
* to invoke a specific function. onClick, onPressIn, and onPressOut
|
|
23
|
+
* should have some callback that can communicate with the parent the
|
|
24
|
+
* next steps to take.
|
|
25
|
+
*
|
|
26
|
+
* @param {ThinButtonProps} props
|
|
27
|
+
*/
|
|
28
|
+
declare function ThinButton({ testID, text, containerStyle, buttonStyle, buttonTextStyle, onclick, children }: ThinButtonProps): JSX.Element;
|
|
29
|
+
declare namespace ThinButton {
|
|
30
|
+
var propTypes: {
|
|
31
|
+
testID: PropTypes.Requireable<string>;
|
|
32
|
+
key: PropTypes.Requireable<any>;
|
|
33
|
+
text: PropTypes.Requireable<string>;
|
|
34
|
+
children: PropTypes.Requireable<object>;
|
|
35
|
+
onclick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
36
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
37
|
+
buttonStyle: PropTypes.Requireable<object>;
|
|
38
|
+
buttonTextStyle: PropTypes.Requireable<object>;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
type CardProps = {
|
|
43
|
+
key?: any;
|
|
44
|
+
children?: React.ReactNode | React.FunctionComponent;
|
|
45
|
+
containerStyle?: React.CSSProperties;
|
|
46
|
+
wrapperStyle?: React.CSSProperties;
|
|
47
|
+
titleText?: String;
|
|
48
|
+
titleStyle?: React.CSSProperties;
|
|
49
|
+
subtitleText?: String;
|
|
50
|
+
subtitleStyle?: React.CSSProperties;
|
|
51
|
+
titleContainerStyle?: React.CSSProperties;
|
|
52
|
+
closeButtonContainerStyle?: React.CSSProperties;
|
|
53
|
+
closeButtonStyle?: React.CSSProperties;
|
|
54
|
+
showCloseButton?: Boolean;
|
|
55
|
+
onClickCloseButton?: (arg0?: any) => any;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* ------------------------------------------------------------
|
|
59
|
+
* Card
|
|
60
|
+
* ------------------------------------------------------------
|
|
61
|
+
* Renders a space that appears to be a 'card' hovering over the
|
|
62
|
+
* parent. It has the capability of rendering a title, subtiltle, titledivider,
|
|
63
|
+
* as well as take in children components in typical React and React-Native
|
|
64
|
+
* fashion.
|
|
65
|
+
*
|
|
66
|
+
* @param {CardProps} props
|
|
67
|
+
* */
|
|
68
|
+
declare function Card({ containerStyle, wrapperStyle, titleText, titleStyle, subtitleText, subtitleStyle, titleContainerStyle, closeButtonStyle, showCloseButton, onClickCloseButton: closeButtonPressedCallBack, children }: CardProps): JSX.Element;
|
|
69
|
+
declare namespace Card {
|
|
70
|
+
var propTypes: {
|
|
71
|
+
key: PropTypes.Requireable<string>;
|
|
72
|
+
children: PropTypes.Requireable<any>;
|
|
73
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
74
|
+
wrapperStyle: PropTypes.Requireable<object>;
|
|
75
|
+
title: PropTypes.Requireable<string>;
|
|
76
|
+
titleStyle: PropTypes.Requireable<object>;
|
|
77
|
+
subtitle: PropTypes.Requireable<string>;
|
|
78
|
+
subtitleStyle: PropTypes.Requireable<string>;
|
|
79
|
+
titleContainerStyle: PropTypes.Requireable<object>;
|
|
80
|
+
closeButtonStyle: PropTypes.Requireable<object>;
|
|
81
|
+
closeButtonContainerStyle: PropTypes.Requireable<object>;
|
|
82
|
+
showCloseButton: PropTypes.Requireable<object>;
|
|
83
|
+
closeButtonPressedCallBack: PropTypes.Requireable<(...args: any[]) => any>;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
type InputFormProps = {
|
|
88
|
+
key?: any;
|
|
89
|
+
name?: string;
|
|
90
|
+
ref?: any;
|
|
91
|
+
testID?: string;
|
|
92
|
+
onInput?: (value: string) => any;
|
|
93
|
+
defaultValue?: string;
|
|
94
|
+
secureTextEntry?: boolean;
|
|
95
|
+
formTitleStyle?: React.CSSProperties;
|
|
96
|
+
containerStyle?: React.CSSProperties;
|
|
97
|
+
inputStyle?: React.CSSProperties;
|
|
98
|
+
errorStyle?: React.CSSProperties;
|
|
99
|
+
placeholder?: string;
|
|
100
|
+
value?: string;
|
|
101
|
+
errorMessage?: string;
|
|
102
|
+
numberOfLines?: number;
|
|
103
|
+
multiline?: boolean;
|
|
104
|
+
trim?: boolean;
|
|
105
|
+
maxLength?: number;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* ------------------------------------------------------------
|
|
109
|
+
* Input Form
|
|
110
|
+
* ------------------------------------------------------------
|
|
111
|
+
* Renders an area where the user is able to input keyboard data.
|
|
112
|
+
* It inherits most of its functionality from the TextInput state but
|
|
113
|
+
* allows for a stylized version of it. It also is capable of rendering
|
|
114
|
+
* a title for the field for UI clarity through the name property.
|
|
115
|
+
*
|
|
116
|
+
* Uncontrolled by default (seeded from `defaultValue`, tracked
|
|
117
|
+
* internally). Pass `value` + `onInput` together to control it from
|
|
118
|
+
* a parent instead, the same duality NavigationBar uses for
|
|
119
|
+
* selection. `errorMessage` is shown under the field whenever it's
|
|
120
|
+
* set; there is no separate visibility flag to manage.
|
|
121
|
+
*
|
|
122
|
+
* @param {InputFormProps} props
|
|
123
|
+
* */
|
|
124
|
+
declare function InputForm({ testID, name, onInput, defaultValue, secureTextEntry, formTitleStyle, containerStyle, inputStyle, errorStyle, placeholder, value: controlledValue, errorMessage, numberOfLines, multiline, trim, maxLength }: InputFormProps): JSX.Element;
|
|
125
|
+
declare namespace InputForm {
|
|
126
|
+
var propTypes: {
|
|
127
|
+
key: PropTypes.Requireable<any>;
|
|
128
|
+
name: PropTypes.Requireable<string>;
|
|
129
|
+
testID: PropTypes.Requireable<string>;
|
|
130
|
+
onInput: PropTypes.Requireable<(...args: any[]) => any>;
|
|
131
|
+
defaultValue: PropTypes.Requireable<string>;
|
|
132
|
+
secureTextEntry: PropTypes.Requireable<boolean>;
|
|
133
|
+
formTitleStyle: PropTypes.Requireable<object>;
|
|
134
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
135
|
+
inputStyle: PropTypes.Requireable<object>;
|
|
136
|
+
errorStyle: PropTypes.Requireable<object>;
|
|
137
|
+
placeholder: PropTypes.Requireable<string>;
|
|
138
|
+
value: PropTypes.Requireable<string>;
|
|
139
|
+
errorMessage: PropTypes.Requireable<string>;
|
|
140
|
+
numberOfLines: PropTypes.Requireable<number>;
|
|
141
|
+
multiline: PropTypes.Requireable<boolean>;
|
|
142
|
+
trim: PropTypes.Requireable<boolean>;
|
|
143
|
+
maxLength: PropTypes.Requireable<number>;
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
type NavigationBarViewProps = {
|
|
148
|
+
testID?: string;
|
|
149
|
+
items: NavItem[];
|
|
150
|
+
selectedKey?: string;
|
|
151
|
+
onItemSelect: (item: NavItem) => any;
|
|
152
|
+
containerStyle?: React.CSSProperties;
|
|
153
|
+
itemStyle?: React.CSSProperties;
|
|
154
|
+
activeItemStyle?: React.CSSProperties;
|
|
155
|
+
itemTextStyle?: React.CSSProperties;
|
|
156
|
+
activeItemTextStyle?: React.CSSProperties;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* ------------------------------------------------------------
|
|
160
|
+
* Navigation Bar View
|
|
161
|
+
* ------------------------------------------------------------
|
|
162
|
+
* Pure presentation for a NavigationBar: renders `items` and calls
|
|
163
|
+
* `onItemSelect` when one is clicked. It holds no selection state
|
|
164
|
+
* and no knowledge of which clicks are valid (disabled/duplicate
|
|
165
|
+
* checks live in NavigationBar) — this component only decides how
|
|
166
|
+
* the bar looks. Swap it out for a fully custom look by passing a
|
|
167
|
+
* different `render` function to NavigationBar.
|
|
168
|
+
*
|
|
169
|
+
* @param {NavigationBarViewProps} props
|
|
170
|
+
* */
|
|
171
|
+
declare function NavigationBarView({ testID, items, selectedKey, onItemSelect, containerStyle, itemStyle, activeItemStyle, itemTextStyle, activeItemTextStyle }: NavigationBarViewProps): JSX.Element;
|
|
172
|
+
declare namespace NavigationBarView {
|
|
173
|
+
var propTypes: {
|
|
174
|
+
testID: PropTypes.Requireable<string>;
|
|
175
|
+
items: PropTypes.Validator<PropTypes.InferProps<{
|
|
176
|
+
key: PropTypes.Validator<string>;
|
|
177
|
+
label: PropTypes.Validator<string>;
|
|
178
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
179
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
180
|
+
}>[]>;
|
|
181
|
+
selectedKey: PropTypes.Requireable<string>;
|
|
182
|
+
onItemSelect: PropTypes.Validator<(...args: any[]) => any>;
|
|
183
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
184
|
+
itemStyle: PropTypes.Requireable<object>;
|
|
185
|
+
activeItemStyle: PropTypes.Requireable<object>;
|
|
186
|
+
itemTextStyle: PropTypes.Requireable<object>;
|
|
187
|
+
activeItemTextStyle: PropTypes.Requireable<object>;
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
type NavItem = {
|
|
192
|
+
key: string;
|
|
193
|
+
label: string;
|
|
194
|
+
icon?: React.ReactNode;
|
|
195
|
+
disabled?: boolean;
|
|
196
|
+
};
|
|
197
|
+
type NavigationBarProps = {
|
|
198
|
+
key?: any;
|
|
199
|
+
testID?: string;
|
|
200
|
+
items: NavItem[];
|
|
201
|
+
defaultSelectedKey?: string;
|
|
202
|
+
selectedKey?: string;
|
|
203
|
+
onSelect?: (key: string, item: NavItem) => any;
|
|
204
|
+
render?: (viewProps: NavigationBarViewProps) => React.ReactElement;
|
|
205
|
+
containerStyle?: React.CSSProperties;
|
|
206
|
+
itemStyle?: React.CSSProperties;
|
|
207
|
+
activeItemStyle?: React.CSSProperties;
|
|
208
|
+
itemTextStyle?: React.CSSProperties;
|
|
209
|
+
activeItemTextStyle?: React.CSSProperties;
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* ------------------------------------------------------------
|
|
213
|
+
* Navigation Bar
|
|
214
|
+
* ------------------------------------------------------------
|
|
215
|
+
* Owns navigation *behavior* only: which item is selected, and the
|
|
216
|
+
* rules for changing that (a disabled item can't be selected, an
|
|
217
|
+
* already-selected item is a no-op). It has no opinion on markup or
|
|
218
|
+
* styling — that's delegated to `render`, which defaults to
|
|
219
|
+
* NavigationBarView. `render` is only ever handed the *result* of a
|
|
220
|
+
* selection decision (the current `selectedKey` and an `onItemSelect`
|
|
221
|
+
* callback bound to this component's own guarded `selectItem`), never
|
|
222
|
+
* a way to make that decision itself — so no presentation, default or
|
|
223
|
+
* custom, can bypass or replace how selection works.
|
|
224
|
+
*
|
|
225
|
+
* Uncontrolled by default (selection state lives here, seeded from
|
|
226
|
+
* `defaultSelectedKey` or the first item). Pass `selectedKey` +
|
|
227
|
+
* `onSelect` to control it from a parent instead.
|
|
228
|
+
*
|
|
229
|
+
* @param {NavigationBarProps} props
|
|
230
|
+
* */
|
|
231
|
+
declare function NavigationBar({ testID, items, defaultSelectedKey, selectedKey: controlledSelectedKey, onSelect: onSelectCallback, render, containerStyle, itemStyle, activeItemStyle, itemTextStyle, activeItemTextStyle }: NavigationBarProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
|
|
232
|
+
declare namespace NavigationBar {
|
|
233
|
+
var propTypes: {
|
|
234
|
+
key: PropTypes.Requireable<any>;
|
|
235
|
+
testID: PropTypes.Requireable<string>;
|
|
236
|
+
items: PropTypes.Validator<PropTypes.InferProps<{
|
|
237
|
+
key: PropTypes.Validator<string>;
|
|
238
|
+
label: PropTypes.Validator<string>;
|
|
239
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
240
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
241
|
+
}>[]>;
|
|
242
|
+
defaultSelectedKey: PropTypes.Requireable<string>;
|
|
243
|
+
selectedKey: PropTypes.Requireable<string>;
|
|
244
|
+
onSelect: PropTypes.Requireable<(...args: any[]) => any>;
|
|
245
|
+
render: PropTypes.Requireable<(...args: any[]) => any>;
|
|
246
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
247
|
+
itemStyle: PropTypes.Requireable<object>;
|
|
248
|
+
activeItemStyle: PropTypes.Requireable<object>;
|
|
249
|
+
itemTextStyle: PropTypes.Requireable<object>;
|
|
250
|
+
activeItemTextStyle: PropTypes.Requireable<object>;
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
type HamburgerMenuProps = {
|
|
255
|
+
key?: any;
|
|
256
|
+
testID?: string;
|
|
257
|
+
items: NavItem[];
|
|
258
|
+
defaultSelectedKey?: string;
|
|
259
|
+
selectedKey?: string;
|
|
260
|
+
onSelect?: (key: string, item: NavItem) => any;
|
|
261
|
+
icon?: React.ReactNode;
|
|
262
|
+
containerStyle?: React.CSSProperties;
|
|
263
|
+
buttonStyle?: React.CSSProperties;
|
|
264
|
+
iconStyle?: React.CSSProperties;
|
|
265
|
+
panelStyle?: React.CSSProperties;
|
|
266
|
+
itemStyle?: React.CSSProperties;
|
|
267
|
+
activeItemStyle?: React.CSSProperties;
|
|
268
|
+
itemTextStyle?: React.CSSProperties;
|
|
269
|
+
activeItemTextStyle?: React.CSSProperties;
|
|
270
|
+
};
|
|
271
|
+
/**
|
|
272
|
+
* ------------------------------------------------------------
|
|
273
|
+
* Hamburger Menu
|
|
274
|
+
* ------------------------------------------------------------
|
|
275
|
+
* A NavigationBar whose items live behind a toggle button instead of
|
|
276
|
+
* being shown inline. Selection behavior is NavigationBar's, reused
|
|
277
|
+
* as-is rather than reimplemented: one item is always selected
|
|
278
|
+
* (defaulting to the first), and a disabled or already-active item
|
|
279
|
+
* is a no-op. The only thing this component adds is presentation —
|
|
280
|
+
* the toggle button and side panel, rendered by HamburgerMenuView —
|
|
281
|
+
* so a HamburgerMenu and a NavigationBar built from the same `items`
|
|
282
|
+
* can never disagree about what "selected" means.
|
|
283
|
+
*
|
|
284
|
+
* `icon` overrides the default "☰" toggle glyph with any node; when
|
|
285
|
+
* left unset, `iconStyle` still styles the default glyph. All other
|
|
286
|
+
* `*Style` props are mutable the same way as Card's: each has a
|
|
287
|
+
* sensible default, override just the ones you need.
|
|
288
|
+
*
|
|
289
|
+
* @param {HamburgerMenuProps} props
|
|
290
|
+
* */
|
|
291
|
+
declare function HamburgerMenu({ testID, items, defaultSelectedKey, selectedKey, onSelect, icon, containerStyle, buttonStyle, iconStyle, panelStyle, itemStyle, activeItemStyle, itemTextStyle, activeItemTextStyle }: HamburgerMenuProps): JSX.Element;
|
|
292
|
+
declare namespace HamburgerMenu {
|
|
293
|
+
var propTypes: {
|
|
294
|
+
key: PropTypes.Requireable<any>;
|
|
295
|
+
testID: PropTypes.Requireable<string>;
|
|
296
|
+
items: PropTypes.Validator<PropTypes.InferProps<{
|
|
297
|
+
key: PropTypes.Validator<string>;
|
|
298
|
+
label: PropTypes.Validator<string>;
|
|
299
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
300
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
301
|
+
}>[]>;
|
|
302
|
+
defaultSelectedKey: PropTypes.Requireable<string>;
|
|
303
|
+
selectedKey: PropTypes.Requireable<string>;
|
|
304
|
+
onSelect: PropTypes.Requireable<(...args: any[]) => any>;
|
|
305
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
306
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
307
|
+
buttonStyle: PropTypes.Requireable<object>;
|
|
308
|
+
iconStyle: PropTypes.Requireable<object>;
|
|
309
|
+
panelStyle: PropTypes.Requireable<object>;
|
|
310
|
+
itemStyle: PropTypes.Requireable<object>;
|
|
311
|
+
activeItemStyle: PropTypes.Requireable<object>;
|
|
312
|
+
itemTextStyle: PropTypes.Requireable<object>;
|
|
313
|
+
activeItemTextStyle: PropTypes.Requireable<object>;
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
type HamburgerMenuViewProps = {
|
|
318
|
+
testID?: string;
|
|
319
|
+
items: NavItem[];
|
|
320
|
+
selectedKey?: string;
|
|
321
|
+
onItemSelect: (item: NavItem) => any;
|
|
322
|
+
icon?: React.ReactNode;
|
|
323
|
+
containerStyle?: React.CSSProperties;
|
|
324
|
+
buttonStyle?: React.CSSProperties;
|
|
325
|
+
iconStyle?: React.CSSProperties;
|
|
326
|
+
panelStyle?: React.CSSProperties;
|
|
327
|
+
itemStyle?: React.CSSProperties;
|
|
328
|
+
activeItemStyle?: React.CSSProperties;
|
|
329
|
+
itemTextStyle?: React.CSSProperties;
|
|
330
|
+
activeItemTextStyle?: React.CSSProperties;
|
|
331
|
+
};
|
|
332
|
+
/**
|
|
333
|
+
* ------------------------------------------------------------
|
|
334
|
+
* Hamburger Menu View
|
|
335
|
+
* ------------------------------------------------------------
|
|
336
|
+
* Pure presentation for a HamburgerMenu: a toggle button that shows
|
|
337
|
+
* or hides a side panel of items. Reuses NavigationBarView to render
|
|
338
|
+
* the panel's items, so opening the panel is the only new behavior
|
|
339
|
+
* introduced here (`isOpen` is local display state, not selection
|
|
340
|
+
* state) — clicking an item still goes through the same guarded
|
|
341
|
+
* `onItemSelect` handed down from NavigationBar, this view just also
|
|
342
|
+
* closes the panel afterward.
|
|
343
|
+
*
|
|
344
|
+
* @param {HamburgerMenuViewProps} props
|
|
345
|
+
* */
|
|
346
|
+
declare function HamburgerMenuView({ testID, items, selectedKey, onItemSelect, icon, containerStyle, buttonStyle, iconStyle, panelStyle, itemStyle, activeItemStyle, itemTextStyle, activeItemTextStyle }: HamburgerMenuViewProps): JSX.Element;
|
|
347
|
+
declare namespace HamburgerMenuView {
|
|
348
|
+
var propTypes: {
|
|
349
|
+
testID: PropTypes.Requireable<string>;
|
|
350
|
+
items: PropTypes.Validator<PropTypes.InferProps<{
|
|
351
|
+
key: PropTypes.Validator<string>;
|
|
352
|
+
label: PropTypes.Validator<string>;
|
|
353
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
354
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
355
|
+
}>[]>;
|
|
356
|
+
selectedKey: PropTypes.Requireable<string>;
|
|
357
|
+
onItemSelect: PropTypes.Validator<(...args: any[]) => any>;
|
|
358
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
359
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
360
|
+
buttonStyle: PropTypes.Requireable<object>;
|
|
361
|
+
iconStyle: PropTypes.Requireable<object>;
|
|
362
|
+
panelStyle: PropTypes.Requireable<object>;
|
|
363
|
+
itemStyle: PropTypes.Requireable<object>;
|
|
364
|
+
activeItemStyle: PropTypes.Requireable<object>;
|
|
365
|
+
itemTextStyle: PropTypes.Requireable<object>;
|
|
366
|
+
activeItemTextStyle: PropTypes.Requireable<object>;
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
type RadioOption = NavItem;
|
|
371
|
+
type RadioButtonGroupProps = {
|
|
372
|
+
key?: any;
|
|
373
|
+
testID?: string;
|
|
374
|
+
items: RadioOption[];
|
|
375
|
+
defaultSelectedKey?: string;
|
|
376
|
+
selectedKey?: string;
|
|
377
|
+
onSelect?: (key: string, item: RadioOption) => any;
|
|
378
|
+
title?: string;
|
|
379
|
+
titleContainerStyle?: React.CSSProperties;
|
|
380
|
+
titleStyle?: React.CSSProperties;
|
|
381
|
+
containerStyle?: React.CSSProperties;
|
|
382
|
+
itemStyle?: React.CSSProperties;
|
|
383
|
+
activeItemStyle?: React.CSSProperties;
|
|
384
|
+
itemTextStyle?: React.CSSProperties;
|
|
385
|
+
activeItemTextStyle?: React.CSSProperties;
|
|
386
|
+
};
|
|
387
|
+
/**
|
|
388
|
+
* ------------------------------------------------------------
|
|
389
|
+
* Radio Button Group
|
|
390
|
+
* ------------------------------------------------------------
|
|
391
|
+
* A NavigationBar whose items render as a segmented radio control
|
|
392
|
+
* instead of a nav strip. Selection behavior is NavigationBar's,
|
|
393
|
+
* reused as-is: exactly one option is always selected (defaulting to
|
|
394
|
+
* the first), and a disabled or already-active option is a no-op.
|
|
395
|
+
* This component only supplies presentation — RadioButtonGroupView —
|
|
396
|
+
* so it can never disagree with a NavigationBar built from the same
|
|
397
|
+
* `items` about what "selected" means.
|
|
398
|
+
*
|
|
399
|
+
* Default styling mirrors homepairsUI's AccountTypeRadioButton
|
|
400
|
+
* (accent `#00ADE9` fill, `#1177B0` border when selected, muted
|
|
401
|
+
* `rgba(55,66,69,.5)` otherwise), generalized from its fixed
|
|
402
|
+
* two-option layout to any number of items. Every `*Style` prop is
|
|
403
|
+
* mutable the same way as Card's: each has that default, override
|
|
404
|
+
* just the ones you need.
|
|
405
|
+
*
|
|
406
|
+
* @param {RadioButtonGroupProps} props
|
|
407
|
+
* */
|
|
408
|
+
declare function RadioButtonGroup({ testID, items, defaultSelectedKey, selectedKey, onSelect, title, titleContainerStyle, titleStyle, containerStyle, itemStyle, activeItemStyle, itemTextStyle, activeItemTextStyle }: RadioButtonGroupProps): JSX.Element;
|
|
409
|
+
declare namespace RadioButtonGroup {
|
|
410
|
+
var propTypes: {
|
|
411
|
+
key: PropTypes.Requireable<any>;
|
|
412
|
+
testID: PropTypes.Requireable<string>;
|
|
413
|
+
items: PropTypes.Validator<PropTypes.InferProps<{
|
|
414
|
+
key: PropTypes.Validator<string>;
|
|
415
|
+
label: PropTypes.Validator<string>;
|
|
416
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
417
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
418
|
+
}>[]>;
|
|
419
|
+
defaultSelectedKey: PropTypes.Requireable<string>;
|
|
420
|
+
selectedKey: PropTypes.Requireable<string>;
|
|
421
|
+
onSelect: PropTypes.Requireable<(...args: any[]) => any>;
|
|
422
|
+
title: PropTypes.Requireable<string>;
|
|
423
|
+
titleContainerStyle: PropTypes.Requireable<object>;
|
|
424
|
+
titleStyle: PropTypes.Requireable<object>;
|
|
425
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
426
|
+
itemStyle: PropTypes.Requireable<object>;
|
|
427
|
+
activeItemStyle: PropTypes.Requireable<object>;
|
|
428
|
+
itemTextStyle: PropTypes.Requireable<object>;
|
|
429
|
+
activeItemTextStyle: PropTypes.Requireable<object>;
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
type RadioButtonGroupViewProps = {
|
|
434
|
+
testID?: string;
|
|
435
|
+
items: NavItem[];
|
|
436
|
+
selectedKey?: string;
|
|
437
|
+
onItemSelect: (item: NavItem) => any;
|
|
438
|
+
title?: string;
|
|
439
|
+
titleContainerStyle?: React.CSSProperties;
|
|
440
|
+
titleStyle?: React.CSSProperties;
|
|
441
|
+
containerStyle?: React.CSSProperties;
|
|
442
|
+
itemStyle?: React.CSSProperties;
|
|
443
|
+
activeItemStyle?: React.CSSProperties;
|
|
444
|
+
itemTextStyle?: React.CSSProperties;
|
|
445
|
+
activeItemTextStyle?: React.CSSProperties;
|
|
446
|
+
};
|
|
447
|
+
/**
|
|
448
|
+
* ------------------------------------------------------------
|
|
449
|
+
* Radio Button Group View
|
|
450
|
+
* ------------------------------------------------------------
|
|
451
|
+
* Pure presentation for a RadioButtonGroup: a row of segments,
|
|
452
|
+
* rounded like a segmented control at the two outer edges, filled
|
|
453
|
+
* with the accent color when selected. Defaults (colors, radius,
|
|
454
|
+
* height, padding, font) mirror homepairsUI's AccountTypeRadioButton,
|
|
455
|
+
* generalized from its fixed two-option layout to any number of
|
|
456
|
+
* `items`. Holds no selection state itself — clicking a segment just
|
|
457
|
+
* calls `onItemSelect`, the same guarded callback NavigationBar hands
|
|
458
|
+
* to any of its views.
|
|
459
|
+
*
|
|
460
|
+
* @param {RadioButtonGroupViewProps} props
|
|
461
|
+
* */
|
|
462
|
+
declare function RadioButtonGroupView({ testID, items, selectedKey, onItemSelect, title, titleContainerStyle, titleStyle, containerStyle, itemStyle, activeItemStyle, itemTextStyle, activeItemTextStyle }: RadioButtonGroupViewProps): JSX.Element;
|
|
463
|
+
declare namespace RadioButtonGroupView {
|
|
464
|
+
var propTypes: {
|
|
465
|
+
testID: PropTypes.Requireable<string>;
|
|
466
|
+
items: PropTypes.Validator<PropTypes.InferProps<{
|
|
467
|
+
key: PropTypes.Validator<string>;
|
|
468
|
+
label: PropTypes.Validator<string>;
|
|
469
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
470
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
471
|
+
}>[]>;
|
|
472
|
+
selectedKey: PropTypes.Requireable<string>;
|
|
473
|
+
onItemSelect: PropTypes.Validator<(...args: any[]) => any>;
|
|
474
|
+
title: PropTypes.Requireable<string>;
|
|
475
|
+
titleContainerStyle: PropTypes.Requireable<object>;
|
|
476
|
+
titleStyle: PropTypes.Requireable<object>;
|
|
477
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
478
|
+
itemStyle: PropTypes.Requireable<object>;
|
|
479
|
+
activeItemStyle: PropTypes.Requireable<object>;
|
|
480
|
+
itemTextStyle: PropTypes.Requireable<object>;
|
|
481
|
+
activeItemTextStyle: PropTypes.Requireable<object>;
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
type LoadingProps = {
|
|
486
|
+
key?: any;
|
|
487
|
+
testID?: string;
|
|
488
|
+
children?: React.ReactNode;
|
|
489
|
+
containerStyle?: React.CSSProperties;
|
|
490
|
+
wrapperStyle?: React.CSSProperties;
|
|
491
|
+
spinnerStyle?: React.CSSProperties;
|
|
492
|
+
};
|
|
493
|
+
/**
|
|
494
|
+
* ------------------------------------------------------------
|
|
495
|
+
* Loading
|
|
496
|
+
* ------------------------------------------------------------
|
|
497
|
+
* A card that should be shown while assets, requests, or async work
|
|
498
|
+
* are in flight. Mirrors homepairsUI's LoadingModal: built on this
|
|
499
|
+
* library's own Card, sized to a small centered panel with a
|
|
500
|
+
* spinner, and able to take children for a status message under it.
|
|
501
|
+
*
|
|
502
|
+
* @param {LoadingProps} props
|
|
503
|
+
* */
|
|
504
|
+
declare function Loading({ testID, children, containerStyle, wrapperStyle, spinnerStyle }: LoadingProps): JSX.Element;
|
|
505
|
+
declare namespace Loading {
|
|
506
|
+
var propTypes: {
|
|
507
|
+
key: PropTypes.Requireable<any>;
|
|
508
|
+
testID: PropTypes.Requireable<string>;
|
|
509
|
+
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
510
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
511
|
+
wrapperStyle: PropTypes.Requireable<object>;
|
|
512
|
+
spinnerStyle: PropTypes.Requireable<object>;
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
type ThumbnailItem = NavItem;
|
|
517
|
+
type ScrollMenuProps = {
|
|
518
|
+
key?: any;
|
|
519
|
+
testID?: string;
|
|
520
|
+
items: ThumbnailItem[];
|
|
521
|
+
defaultSelectedKey?: string;
|
|
522
|
+
selectedKey?: string;
|
|
523
|
+
onSelect?: (key: string, item: ThumbnailItem) => any;
|
|
524
|
+
containerStyle?: React.CSSProperties;
|
|
525
|
+
tileStyle?: React.CSSProperties;
|
|
526
|
+
activeTileStyle?: React.CSSProperties;
|
|
527
|
+
tileTextStyle?: React.CSSProperties;
|
|
528
|
+
};
|
|
529
|
+
/**
|
|
530
|
+
* ------------------------------------------------------------
|
|
531
|
+
* Scroll Menu
|
|
532
|
+
* ------------------------------------------------------------
|
|
533
|
+
* A NavigationBar whose items render as a horizontally scrollable
|
|
534
|
+
* strip of thumbnail tiles instead of a nav strip — think
|
|
535
|
+
* homepairsUI's PreferredProviderFlatList, generalized to any set of
|
|
536
|
+
* `items`. Selection behavior is NavigationBar's, reused as-is:
|
|
537
|
+
* exactly one tile is always selected (defaulting to the first), and
|
|
538
|
+
* a disabled or already-active tile is a no-op. This component only
|
|
539
|
+
* supplies presentation — ScrollMenuView — so it can never disagree
|
|
540
|
+
* with a NavigationBar built from the same `items` about what
|
|
541
|
+
* "selected" means.
|
|
542
|
+
*
|
|
543
|
+
* Every `*Style` prop is mutable the same way as Card's: each has a
|
|
544
|
+
* default drawn from homepairsUI's ImageTile/PreferredProviderFlatList
|
|
545
|
+
* styling, override just the ones you need.
|
|
546
|
+
*
|
|
547
|
+
* @param {ScrollMenuProps} props
|
|
548
|
+
* */
|
|
549
|
+
declare function ScrollMenu({ testID, items, defaultSelectedKey, selectedKey, onSelect, containerStyle, tileStyle, activeTileStyle, tileTextStyle }: ScrollMenuProps): JSX.Element;
|
|
550
|
+
declare namespace ScrollMenu {
|
|
551
|
+
var propTypes: {
|
|
552
|
+
key: PropTypes.Requireable<any>;
|
|
553
|
+
testID: PropTypes.Requireable<string>;
|
|
554
|
+
items: PropTypes.Validator<PropTypes.InferProps<{
|
|
555
|
+
key: PropTypes.Validator<string>;
|
|
556
|
+
label: PropTypes.Validator<string>;
|
|
557
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
558
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
559
|
+
}>[]>;
|
|
560
|
+
defaultSelectedKey: PropTypes.Requireable<string>;
|
|
561
|
+
selectedKey: PropTypes.Requireable<string>;
|
|
562
|
+
onSelect: PropTypes.Requireable<(...args: any[]) => any>;
|
|
563
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
564
|
+
tileStyle: PropTypes.Requireable<object>;
|
|
565
|
+
activeTileStyle: PropTypes.Requireable<object>;
|
|
566
|
+
tileTextStyle: PropTypes.Requireable<object>;
|
|
567
|
+
};
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
type ScrollMenuViewProps = {
|
|
571
|
+
testID?: string;
|
|
572
|
+
items: NavItem[];
|
|
573
|
+
selectedKey?: string;
|
|
574
|
+
onItemSelect: (item: NavItem) => any;
|
|
575
|
+
containerStyle?: React.CSSProperties;
|
|
576
|
+
tileStyle?: React.CSSProperties;
|
|
577
|
+
activeTileStyle?: React.CSSProperties;
|
|
578
|
+
tileTextStyle?: React.CSSProperties;
|
|
579
|
+
};
|
|
580
|
+
/**
|
|
581
|
+
* ------------------------------------------------------------
|
|
582
|
+
* Scroll Menu View
|
|
583
|
+
* ------------------------------------------------------------
|
|
584
|
+
* Pure presentation for a ScrollMenu: a horizontally scrollable row
|
|
585
|
+
* of thumbnail tiles, sized and colored like homepairsUI's ImageTile
|
|
586
|
+
* (70x70, 7.5 radius, light border, dark strip background). Give an
|
|
587
|
+
* item a thumbnail via its `icon`, e.g.
|
|
588
|
+
* `icon: <img src={...} style={{width: '100%', height: '100%', objectFit: 'cover'}} />`;
|
|
589
|
+
* an item without an `icon` falls back to its `label` as centered
|
|
590
|
+
* text, mirroring the ImageTile/TextTile fallback in the original.
|
|
591
|
+
* Holds no selection state — clicking a tile just calls
|
|
592
|
+
* `onItemSelect`, the same guarded callback NavigationBar hands to
|
|
593
|
+
* any of its views.
|
|
594
|
+
*
|
|
595
|
+
* @param {ScrollMenuViewProps} props
|
|
596
|
+
* */
|
|
597
|
+
declare function ScrollMenuView({ testID, items, selectedKey, onItemSelect, containerStyle, tileStyle, activeTileStyle, tileTextStyle }: ScrollMenuViewProps): JSX.Element;
|
|
598
|
+
declare namespace ScrollMenuView {
|
|
599
|
+
var propTypes: {
|
|
600
|
+
testID: PropTypes.Requireable<string>;
|
|
601
|
+
items: PropTypes.Validator<PropTypes.InferProps<{
|
|
602
|
+
key: PropTypes.Validator<string>;
|
|
603
|
+
label: PropTypes.Validator<string>;
|
|
604
|
+
icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
605
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
606
|
+
}>[]>;
|
|
607
|
+
selectedKey: PropTypes.Requireable<string>;
|
|
608
|
+
onItemSelect: PropTypes.Validator<(...args: any[]) => any>;
|
|
609
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
610
|
+
tileStyle: PropTypes.Requireable<object>;
|
|
611
|
+
activeTileStyle: PropTypes.Requireable<object>;
|
|
612
|
+
tileTextStyle: PropTypes.Requireable<object>;
|
|
613
|
+
};
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
type ImageTileProps = {
|
|
617
|
+
key?: any;
|
|
618
|
+
testID?: string;
|
|
619
|
+
image: string;
|
|
620
|
+
enlarge?: boolean;
|
|
621
|
+
containerStyle?: React.CSSProperties;
|
|
622
|
+
imageStyle?: React.CSSProperties;
|
|
623
|
+
};
|
|
624
|
+
type TextTileProps = {
|
|
625
|
+
key?: any;
|
|
626
|
+
testID?: string;
|
|
627
|
+
text: string;
|
|
628
|
+
fontSize?: number;
|
|
629
|
+
containerStyle?: React.CSSProperties;
|
|
630
|
+
textStyle?: React.CSSProperties;
|
|
631
|
+
};
|
|
632
|
+
/**
|
|
633
|
+
* ------------------------------------------------------------
|
|
634
|
+
* Image Tile
|
|
635
|
+
* ------------------------------------------------------------
|
|
636
|
+
* A small unit that holds an image and is formatted in the shape of
|
|
637
|
+
* a rounded tile, matching homepairsUI's ImageTile (70x70, or 100x100
|
|
638
|
+
* with `enlarge`, 7.5 radius, light border). Often seen holding a
|
|
639
|
+
* service provider's logo, e.g. as an item's thumbnail in ScrollMenu.
|
|
640
|
+
*
|
|
641
|
+
* @param {ImageTileProps} props
|
|
642
|
+
* */
|
|
643
|
+
declare function ImageTile({ testID, image, enlarge, containerStyle, imageStyle }: ImageTileProps): JSX.Element;
|
|
644
|
+
declare namespace ImageTile {
|
|
645
|
+
var propTypes: {
|
|
646
|
+
key: PropTypes.Requireable<any>;
|
|
647
|
+
testID: PropTypes.Requireable<string>;
|
|
648
|
+
image: PropTypes.Validator<string>;
|
|
649
|
+
enlarge: PropTypes.Requireable<boolean>;
|
|
650
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
651
|
+
imageStyle: PropTypes.Requireable<object>;
|
|
652
|
+
};
|
|
653
|
+
}
|
|
654
|
+
/**
|
|
655
|
+
* ------------------------------------------------------------
|
|
656
|
+
* Text Tile
|
|
657
|
+
* ------------------------------------------------------------
|
|
658
|
+
* A small unit that holds a string and is formatted in the shape of
|
|
659
|
+
* a rounded tile, matching homepairsUI's TextTile. Used as a fallback
|
|
660
|
+
* where an ImageTile would go but there's no image available (e.g.
|
|
661
|
+
* the hamburger menu, or an add-provider tile).
|
|
662
|
+
*
|
|
663
|
+
* @param {TextTileProps} props
|
|
664
|
+
* */
|
|
665
|
+
declare function TextTile({ testID, text, fontSize, containerStyle, textStyle }: TextTileProps): JSX.Element;
|
|
666
|
+
declare namespace TextTile {
|
|
667
|
+
var propTypes: {
|
|
668
|
+
key: PropTypes.Requireable<any>;
|
|
669
|
+
testID: PropTypes.Requireable<string>;
|
|
670
|
+
text: PropTypes.Validator<string>;
|
|
671
|
+
fontSize: PropTypes.Requireable<number>;
|
|
672
|
+
containerStyle: PropTypes.Requireable<object>;
|
|
673
|
+
textStyle: PropTypes.Requireable<object>;
|
|
674
|
+
};
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
type CustomMatcher = (query: string, text: string) => number | null;
|
|
678
|
+
type MatchStrategy = 'substring' | 'prefix' | 'tokenized' | 'fuzzy' | 'regex' | CustomMatcher;
|
|
679
|
+
|
|
680
|
+
type SearchBarProps<T = any> = Omit<InputFormProps, 'onInput' | 'value' | 'defaultValue'> & {
|
|
681
|
+
objects?: T[];
|
|
682
|
+
keys?: string[];
|
|
683
|
+
onResults?: (filtered: T[]) => any;
|
|
684
|
+
defaultValue?: string;
|
|
685
|
+
matchStrategy?: MatchStrategy;
|
|
686
|
+
caseSensitive?: boolean;
|
|
687
|
+
ignoreAccents?: boolean;
|
|
688
|
+
rank?: boolean;
|
|
689
|
+
debounceMs?: number;
|
|
690
|
+
};
|
|
691
|
+
/**
|
|
692
|
+
* ------------------------------------------------------------
|
|
693
|
+
* Search Bar
|
|
694
|
+
* ------------------------------------------------------------
|
|
695
|
+
* Wraps InputForm as-is (no styling of its own, same as homepairsUI's
|
|
696
|
+
* SearchForm) and adds filtering: on every keystroke, `objects` is
|
|
697
|
+
* filtered and the result is handed to `onResults`. With no `keys`,
|
|
698
|
+
* matching recurses through each object's own nested values; with
|
|
699
|
+
* `keys`, only those top-level fields are checked.
|
|
700
|
+
*
|
|
701
|
+
* `matchStrategy` picks the algorithm (default `'fuzzy'`, a
|
|
702
|
+
* subsequence match that tolerates typos and scores tighter matches
|
|
703
|
+
* higher — the same spirit as fzf/VS Code's go-to-file):
|
|
704
|
+
* - `'fuzzy'` query characters found in order, not necessarily together
|
|
705
|
+
* - `'substring'` plain includes() — exact and cheap
|
|
706
|
+
* - `'prefix'` matches the start of the text or of any word in it
|
|
707
|
+
* - `'tokenized'` every word in the query must appear somewhere (any order)
|
|
708
|
+
* - `'regex'` query is compiled as a RegExp; invalid patterns just match nothing
|
|
709
|
+
*
|
|
710
|
+
* `matchStrategy` also accepts a custom `(query, text) => score | null`
|
|
711
|
+
* function in place of one of those names — return `null` to exclude an
|
|
712
|
+
* item, or a number (higher = better) to include it; it receives the same
|
|
713
|
+
* case/accent-normalized query and searchable text the built-ins do.
|
|
714
|
+
*
|
|
715
|
+
* `caseSensitive` (default false) and `ignoreAccents` (default false,
|
|
716
|
+
* e.g. so "cafe" matches "café") normalize before matching. `rank`
|
|
717
|
+
* (default true) sorts survivors by match score — only meaningful for
|
|
718
|
+
* `'fuzzy'`, a no-op for the others since they all score 0.
|
|
719
|
+
* `debounceMs` (default 0) delays re-filtering after the last
|
|
720
|
+
* keystroke without delaying what's shown in the field itself.
|
|
721
|
+
*
|
|
722
|
+
* Filtering also re-runs (with the current search text, undebounced)
|
|
723
|
+
* whenever `objects` itself changes — e.g. after a fetch replaces the
|
|
724
|
+
* list — but not on mount, so the parent's own initial list stands
|
|
725
|
+
* until the user actually searches.
|
|
726
|
+
*
|
|
727
|
+
* @param {SearchBarProps} props
|
|
728
|
+
* */
|
|
729
|
+
declare function SearchBar<T = any>({ objects, keys, onResults, defaultValue, matchStrategy, caseSensitive, ignoreAccents, rank, debounceMs, ...inputFormProps }: SearchBarProps<T>): JSX.Element;
|
|
730
|
+
declare namespace SearchBar {
|
|
731
|
+
var propTypes: {
|
|
732
|
+
objects: PropTypes.Requireable<any[]>;
|
|
733
|
+
keys: PropTypes.Requireable<string[]>;
|
|
734
|
+
onResults: PropTypes.Requireable<(...args: any[]) => any>;
|
|
735
|
+
defaultValue: PropTypes.Requireable<string>;
|
|
736
|
+
matchStrategy: PropTypes.Requireable<NonNullable<string | ((...args: any[]) => any)>>;
|
|
737
|
+
caseSensitive: PropTypes.Requireable<boolean>;
|
|
738
|
+
ignoreAccents: PropTypes.Requireable<boolean>;
|
|
739
|
+
rank: PropTypes.Requireable<boolean>;
|
|
740
|
+
debounceMs: PropTypes.Requireable<number>;
|
|
741
|
+
};
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
export { Card, type CardProps, type CustomMatcher, HamburgerMenu, type HamburgerMenuProps, HamburgerMenuView, type HamburgerMenuViewProps, HelloWorld, ImageTile, type ImageTileProps, InputForm, type InputFormProps, Loading, type LoadingProps, type MatchStrategy, type NavItem, NavigationBar, type NavigationBarProps, NavigationBarView, type NavigationBarViewProps, RadioButtonGroup, type RadioButtonGroupProps, RadioButtonGroupView, type RadioButtonGroupViewProps, type RadioOption, ScrollMenu, type ScrollMenuProps, ScrollMenuView, type ScrollMenuViewProps, SearchBar, type SearchBarProps, TextTile, type TextTileProps, ThinButton, type ThinButtonProps, type ThumbnailItem };
|