ferns-ui 0.36.4 → 0.36.5
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/package.json +3 -4
- package/src/ActionSheet.tsx +1231 -0
- package/src/Avatar.tsx +317 -0
- package/src/Badge.tsx +65 -0
- package/src/Banner.tsx +124 -0
- package/src/BlurBox.native.tsx +40 -0
- package/src/BlurBox.tsx +31 -0
- package/src/Body.tsx +32 -0
- package/src/Box.tsx +308 -0
- package/src/Button.tsx +219 -0
- package/src/Card.tsx +23 -0
- package/src/CheckBox.tsx +118 -0
- package/src/Common.ts +2743 -0
- package/src/Constants.ts +53 -0
- package/src/CustomSelect.tsx +85 -0
- package/src/DateTimeActionSheet.tsx +409 -0
- package/src/DateTimeField.android.tsx +101 -0
- package/src/DateTimeField.ios.tsx +83 -0
- package/src/DateTimeField.tsx +69 -0
- package/src/DecimalRangeActionSheet.tsx +113 -0
- package/src/ErrorBoundary.tsx +37 -0
- package/src/ErrorPage.tsx +44 -0
- package/src/FernsProvider.tsx +21 -0
- package/src/Field.tsx +299 -0
- package/src/FieldWithLabels.tsx +36 -0
- package/src/FlatList.tsx +2 -0
- package/src/Form.tsx +182 -0
- package/src/HeaderButtons.tsx +107 -0
- package/src/Heading.tsx +53 -0
- package/src/HeightActionSheet.tsx +104 -0
- package/src/Hyperlink.tsx +181 -0
- package/src/Icon.tsx +24 -0
- package/src/IconButton.tsx +165 -0
- package/src/Image.tsx +50 -0
- package/src/ImageBackground.tsx +14 -0
- package/src/InfoTooltipButton.tsx +23 -0
- package/src/Layer.tsx +17 -0
- package/src/Link.tsx +17 -0
- package/src/Mask.tsx +21 -0
- package/src/MediaQuery.ts +46 -0
- package/src/Meta.tsx +9 -0
- package/src/Modal.tsx +248 -0
- package/src/ModalSheet.tsx +58 -0
- package/src/NumberPickerActionSheet.tsx +66 -0
- package/src/Page.tsx +133 -0
- package/src/Permissions.ts +44 -0
- package/src/PickerSelect.tsx +553 -0
- package/src/Pill.tsx +24 -0
- package/src/Pog.tsx +87 -0
- package/src/ProgressBar.tsx +55 -0
- package/src/ScrollView.tsx +2 -0
- package/src/SegmentedControl.tsx +102 -0
- package/src/SelectList.tsx +89 -0
- package/src/SideDrawer.tsx +62 -0
- package/src/Spinner.tsx +20 -0
- package/src/SplitPage.native.tsx +160 -0
- package/src/SplitPage.tsx +302 -0
- package/src/Switch.tsx +19 -0
- package/src/Table.tsx +87 -0
- package/src/TableHeader.tsx +36 -0
- package/src/TableHeaderCell.tsx +76 -0
- package/src/TableRow.tsx +87 -0
- package/src/TapToEdit.tsx +221 -0
- package/src/Text.tsx +131 -0
- package/src/TextArea.tsx +16 -0
- package/src/TextField.tsx +401 -0
- package/src/TextFieldNumberActionSheet.tsx +61 -0
- package/src/Toast.tsx +106 -0
- package/src/Tooltip.tsx +269 -0
- package/src/UnifiedScreens.ts +24 -0
- package/src/Unifier.ts +371 -0
- package/src/Utilities.tsx +159 -0
- package/src/WithLabel.tsx +57 -0
- package/src/dayjsExtended.ts +10 -0
- package/src/index.tsx +1346 -0
- package/src/polyfill.d.ts +11 -0
- package/src/tableContext.tsx +80 -0
package/src/Common.ts
ADDED
|
@@ -0,0 +1,2743 @@
|
|
|
1
|
+
import React, {ReactElement, ReactNode, SyntheticEvent} from "react";
|
|
2
|
+
import {ListRenderItemInfo} from "react-native";
|
|
3
|
+
|
|
4
|
+
export interface BaseProfile {
|
|
5
|
+
email: string;
|
|
6
|
+
id: string;
|
|
7
|
+
backOffice: {
|
|
8
|
+
testUser?: boolean;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface TrackingConfig {
|
|
13
|
+
MIXPANEL_TOKEN: string;
|
|
14
|
+
SENTRY_WEB_DSN: string;
|
|
15
|
+
SENTRY_MOBILE_DSN: string;
|
|
16
|
+
USER_PROPERTY_KEYS: string[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface IConfig extends TrackingConfig {
|
|
20
|
+
FEEDBACK_URL: string;
|
|
21
|
+
PRIVACY_POLICY_URL: string;
|
|
22
|
+
// The collection name to store profiles in for Firebase/redux.
|
|
23
|
+
PROFILE_COLLECTION: string;
|
|
24
|
+
TERMS_URL: string;
|
|
25
|
+
BASE_URL: string;
|
|
26
|
+
PRODUCTION: boolean;
|
|
27
|
+
|
|
28
|
+
// Useful for generating:
|
|
29
|
+
// http://paletton.com/#uid=72Q0u0kw0u8khBrpJx0z7nUEPiG
|
|
30
|
+
primaryLighterColor: string;
|
|
31
|
+
primaryLightColor: string;
|
|
32
|
+
primaryColor: string;
|
|
33
|
+
primaryDarkColor: string;
|
|
34
|
+
primaryDarkerColor: string;
|
|
35
|
+
|
|
36
|
+
secondaryLighterColor: string;
|
|
37
|
+
secondaryLightColor: string;
|
|
38
|
+
secondaryColor: string;
|
|
39
|
+
secondaryDarkColor: string;
|
|
40
|
+
secondaryDarkerColor: string;
|
|
41
|
+
|
|
42
|
+
accentLighterColor: string;
|
|
43
|
+
accentLightColor: string;
|
|
44
|
+
accentColor: string;
|
|
45
|
+
accentDarkColor: string;
|
|
46
|
+
accentDarkerColor: string;
|
|
47
|
+
|
|
48
|
+
tertiaryLighterColor: string;
|
|
49
|
+
tertiaryLightColor: string;
|
|
50
|
+
tertiaryColor: string;
|
|
51
|
+
tertiaryDarkColor: string;
|
|
52
|
+
tertiaryDarkerColor: string;
|
|
53
|
+
|
|
54
|
+
// firebaseConfig: any;
|
|
55
|
+
|
|
56
|
+
neutral900: string;
|
|
57
|
+
neutral800: string;
|
|
58
|
+
neutral700: string;
|
|
59
|
+
neutral600: string;
|
|
60
|
+
neutral500: string;
|
|
61
|
+
neutral400: string;
|
|
62
|
+
neutral300: string;
|
|
63
|
+
neutral200: string;
|
|
64
|
+
neutral100: string;
|
|
65
|
+
neutral90: string;
|
|
66
|
+
neutral80: string;
|
|
67
|
+
neutral70: string;
|
|
68
|
+
neutral60: string;
|
|
69
|
+
neutral50: string;
|
|
70
|
+
neutral40: string;
|
|
71
|
+
neutral30: string;
|
|
72
|
+
neutral20: string;
|
|
73
|
+
neutral10: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// For using a theme.
|
|
77
|
+
export interface UnifiedTheme {
|
|
78
|
+
// TODO: make these configurable.
|
|
79
|
+
blue: string;
|
|
80
|
+
darkGray: string;
|
|
81
|
+
eggplant: string;
|
|
82
|
+
gray: string;
|
|
83
|
+
green: string;
|
|
84
|
+
springGreen: string;
|
|
85
|
+
lightGray: string;
|
|
86
|
+
maroon: string;
|
|
87
|
+
midnight: string;
|
|
88
|
+
navy: string;
|
|
89
|
+
olive: string;
|
|
90
|
+
orange: string;
|
|
91
|
+
orchid: string;
|
|
92
|
+
pine: string;
|
|
93
|
+
purple: string;
|
|
94
|
+
red: string;
|
|
95
|
+
watermelon: string;
|
|
96
|
+
white: string;
|
|
97
|
+
black: string;
|
|
98
|
+
|
|
99
|
+
primaryLighter: string;
|
|
100
|
+
primaryLight: string;
|
|
101
|
+
primary: string;
|
|
102
|
+
primaryDark: string;
|
|
103
|
+
primaryDarker: string;
|
|
104
|
+
|
|
105
|
+
secondaryLighter: string;
|
|
106
|
+
secondaryLight: string;
|
|
107
|
+
secondary: string;
|
|
108
|
+
secondaryDark: string;
|
|
109
|
+
secondaryDarker: string;
|
|
110
|
+
|
|
111
|
+
accentLighter: string;
|
|
112
|
+
accentLight: string;
|
|
113
|
+
accent: string;
|
|
114
|
+
accentDark: string;
|
|
115
|
+
accentDarker: string;
|
|
116
|
+
|
|
117
|
+
tertiaryLighter: string;
|
|
118
|
+
tertiaryLight: string;
|
|
119
|
+
tertiary: string;
|
|
120
|
+
tertiaryDark: string;
|
|
121
|
+
tertiaryDarker: string;
|
|
122
|
+
|
|
123
|
+
neutral900: string;
|
|
124
|
+
neutral800: string;
|
|
125
|
+
neutral700: string;
|
|
126
|
+
neutral600: string;
|
|
127
|
+
neutral500: string;
|
|
128
|
+
neutral400: string;
|
|
129
|
+
neutral300: string;
|
|
130
|
+
neutral200: string;
|
|
131
|
+
neutral100: string;
|
|
132
|
+
neutral90: string;
|
|
133
|
+
neutral80: string;
|
|
134
|
+
neutral70: string;
|
|
135
|
+
neutral60: string;
|
|
136
|
+
neutral50: string;
|
|
137
|
+
neutral40: string;
|
|
138
|
+
neutral30: string;
|
|
139
|
+
neutral20: string;
|
|
140
|
+
neutral10: string;
|
|
141
|
+
|
|
142
|
+
primaryFont: string;
|
|
143
|
+
primaryBoldFont: string;
|
|
144
|
+
secondaryFont: string;
|
|
145
|
+
secondaryBoldFont: string;
|
|
146
|
+
buttonFont: string;
|
|
147
|
+
accentFont: string;
|
|
148
|
+
accentBoldFont: string;
|
|
149
|
+
titleFont: string;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export type Font =
|
|
153
|
+
| "primary"
|
|
154
|
+
| "primaryBold"
|
|
155
|
+
| "secondary"
|
|
156
|
+
| "secondaryBold"
|
|
157
|
+
| "accent"
|
|
158
|
+
| "accentBold"
|
|
159
|
+
| "title"
|
|
160
|
+
| "button";
|
|
161
|
+
|
|
162
|
+
// type Sizes = "small" | "xsmall" | "sm" | "small" | "medium" | "lg" | "large";
|
|
163
|
+
|
|
164
|
+
export type Direction = "up" | "right" | "down" | "left";
|
|
165
|
+
export type Color =
|
|
166
|
+
| "blue"
|
|
167
|
+
| "darkGray"
|
|
168
|
+
| "eggplant"
|
|
169
|
+
| "gray"
|
|
170
|
+
| "green"
|
|
171
|
+
| "springGreen"
|
|
172
|
+
| "lightGray"
|
|
173
|
+
| "maroon"
|
|
174
|
+
| "midnight"
|
|
175
|
+
| "navy"
|
|
176
|
+
| "olive"
|
|
177
|
+
| "orange"
|
|
178
|
+
| "orchid"
|
|
179
|
+
| "pine"
|
|
180
|
+
| "purple"
|
|
181
|
+
| "red"
|
|
182
|
+
| "watermelon"
|
|
183
|
+
| "white"
|
|
184
|
+
| "black";
|
|
185
|
+
export type ThemeColor =
|
|
186
|
+
| "primaryLighter"
|
|
187
|
+
| "primaryLight"
|
|
188
|
+
| "primary"
|
|
189
|
+
| "primaryDark"
|
|
190
|
+
| "primaryDarker"
|
|
191
|
+
| "secondaryLighter"
|
|
192
|
+
| "secondaryLight"
|
|
193
|
+
| "secondary"
|
|
194
|
+
| "secondaryDark"
|
|
195
|
+
| "secondaryDarker"
|
|
196
|
+
| "tertiaryLighter"
|
|
197
|
+
| "tertiaryLight"
|
|
198
|
+
| "tertiary"
|
|
199
|
+
| "tertiaryDark"
|
|
200
|
+
| "tertiaryDarker"
|
|
201
|
+
| "accentLighter"
|
|
202
|
+
| "accentLight"
|
|
203
|
+
| "accent"
|
|
204
|
+
| "accentDark"
|
|
205
|
+
| "accentDarker";
|
|
206
|
+
export type NeutralColor =
|
|
207
|
+
| "neutral900"
|
|
208
|
+
| "neutral800"
|
|
209
|
+
| "neutral700"
|
|
210
|
+
| "neutral600"
|
|
211
|
+
| "neutral500"
|
|
212
|
+
| "neutral400"
|
|
213
|
+
| "neutral300"
|
|
214
|
+
| "neutral200"
|
|
215
|
+
| "neutral100"
|
|
216
|
+
| "neutral90"
|
|
217
|
+
| "neutral80"
|
|
218
|
+
| "neutral70"
|
|
219
|
+
| "neutral60"
|
|
220
|
+
| "neutral50"
|
|
221
|
+
| "neutral40"
|
|
222
|
+
| "neutral30"
|
|
223
|
+
| "neutral20"
|
|
224
|
+
| "neutral10";
|
|
225
|
+
export type AllColors = Color | ThemeColor | NeutralColor;
|
|
226
|
+
|
|
227
|
+
export interface OnChangeResult {
|
|
228
|
+
event?: SyntheticEvent<any>;
|
|
229
|
+
value: string;
|
|
230
|
+
}
|
|
231
|
+
export type OnChangeCallback = (result: OnChangeResult) => void;
|
|
232
|
+
|
|
233
|
+
// Update if we start supporting more icon packs from Expo Icons.
|
|
234
|
+
export type IconName = FontAwesome5IconName;
|
|
235
|
+
|
|
236
|
+
export type FontAwesome5IconName =
|
|
237
|
+
| "500px"
|
|
238
|
+
| "accessible-icon"
|
|
239
|
+
| "accusoft"
|
|
240
|
+
| "acquisitions-incorporated"
|
|
241
|
+
| "ad"
|
|
242
|
+
| "address-book"
|
|
243
|
+
| "address-card"
|
|
244
|
+
| "adjust"
|
|
245
|
+
| "adn"
|
|
246
|
+
| "adversal"
|
|
247
|
+
| "affiliatetheme"
|
|
248
|
+
| "air-freshener"
|
|
249
|
+
| "airbnb"
|
|
250
|
+
| "algolia"
|
|
251
|
+
| "align-center"
|
|
252
|
+
| "align-justify"
|
|
253
|
+
| "align-left"
|
|
254
|
+
| "align-right"
|
|
255
|
+
| "alipay"
|
|
256
|
+
| "allergies"
|
|
257
|
+
| "amazon"
|
|
258
|
+
| "amazon-pay"
|
|
259
|
+
| "ambulance"
|
|
260
|
+
| "american-sign-language-interpreting"
|
|
261
|
+
| "amilia"
|
|
262
|
+
| "anchor"
|
|
263
|
+
| "android"
|
|
264
|
+
| "angellist"
|
|
265
|
+
| "angle-double-down"
|
|
266
|
+
| "angle-double-left"
|
|
267
|
+
| "angle-double-right"
|
|
268
|
+
| "angle-double-up"
|
|
269
|
+
| "angle-down"
|
|
270
|
+
| "angle-left"
|
|
271
|
+
| "angle-right"
|
|
272
|
+
| "angle-up"
|
|
273
|
+
| "angry"
|
|
274
|
+
| "angrycreative"
|
|
275
|
+
| "angular"
|
|
276
|
+
| "ankh"
|
|
277
|
+
| "app-store"
|
|
278
|
+
| "app-store-ios"
|
|
279
|
+
| "apper"
|
|
280
|
+
| "apple"
|
|
281
|
+
| "apple-alt"
|
|
282
|
+
| "apple-pay"
|
|
283
|
+
| "archive"
|
|
284
|
+
| "archway"
|
|
285
|
+
| "arrow-alt-circle-down"
|
|
286
|
+
| "arrow-alt-circle-left"
|
|
287
|
+
| "arrow-alt-circle-right"
|
|
288
|
+
| "arrow-alt-circle-up"
|
|
289
|
+
| "arrow-circle-down"
|
|
290
|
+
| "arrow-circle-left"
|
|
291
|
+
| "arrow-circle-right"
|
|
292
|
+
| "arrow-circle-up"
|
|
293
|
+
| "arrow-down"
|
|
294
|
+
| "arrow-left"
|
|
295
|
+
| "arrow-right"
|
|
296
|
+
| "arrow-up"
|
|
297
|
+
| "arrows-alt"
|
|
298
|
+
| "arrows-alt-h"
|
|
299
|
+
| "arrows-alt-v"
|
|
300
|
+
| "artstation"
|
|
301
|
+
| "assistive-listening-systems"
|
|
302
|
+
| "asterisk"
|
|
303
|
+
| "asymmetrik"
|
|
304
|
+
| "at"
|
|
305
|
+
| "atlas"
|
|
306
|
+
| "atlassian"
|
|
307
|
+
| "atom"
|
|
308
|
+
| "audible"
|
|
309
|
+
| "audio-description"
|
|
310
|
+
| "autoprefixer"
|
|
311
|
+
| "avianex"
|
|
312
|
+
| "aviato"
|
|
313
|
+
| "award"
|
|
314
|
+
| "aws"
|
|
315
|
+
| "baby"
|
|
316
|
+
| "baby-carriage"
|
|
317
|
+
| "backspace"
|
|
318
|
+
| "backward"
|
|
319
|
+
| "bacon"
|
|
320
|
+
| "bacteria"
|
|
321
|
+
| "bacterium"
|
|
322
|
+
| "bahai"
|
|
323
|
+
| "balance-scale"
|
|
324
|
+
| "balance-scale-left"
|
|
325
|
+
| "balance-scale-right"
|
|
326
|
+
| "ban"
|
|
327
|
+
| "band-aid"
|
|
328
|
+
| "bandcamp"
|
|
329
|
+
| "barcode"
|
|
330
|
+
| "bars"
|
|
331
|
+
| "baseball-ball"
|
|
332
|
+
| "basketball-ball"
|
|
333
|
+
| "bath"
|
|
334
|
+
| "battery-empty"
|
|
335
|
+
| "battery-full"
|
|
336
|
+
| "battery-half"
|
|
337
|
+
| "battery-quarter"
|
|
338
|
+
| "battery-three-quarters"
|
|
339
|
+
| "battle-net"
|
|
340
|
+
| "bed"
|
|
341
|
+
| "beer"
|
|
342
|
+
| "behance"
|
|
343
|
+
| "behance-square"
|
|
344
|
+
| "bell"
|
|
345
|
+
| "bell-slash"
|
|
346
|
+
| "bezier-curve"
|
|
347
|
+
| "bible"
|
|
348
|
+
| "bicycle"
|
|
349
|
+
| "biking"
|
|
350
|
+
| "bimobject"
|
|
351
|
+
| "binoculars"
|
|
352
|
+
| "biohazard"
|
|
353
|
+
| "birthday-cake"
|
|
354
|
+
| "bitbucket"
|
|
355
|
+
| "bitcoin"
|
|
356
|
+
| "bity"
|
|
357
|
+
| "black-tie"
|
|
358
|
+
| "blackberry"
|
|
359
|
+
| "blender"
|
|
360
|
+
| "blender-phone"
|
|
361
|
+
| "blind"
|
|
362
|
+
| "blog"
|
|
363
|
+
| "blogger"
|
|
364
|
+
| "blogger-b"
|
|
365
|
+
| "bluetooth"
|
|
366
|
+
| "bluetooth-b"
|
|
367
|
+
| "bold"
|
|
368
|
+
| "bolt"
|
|
369
|
+
| "bomb"
|
|
370
|
+
| "bone"
|
|
371
|
+
| "bong"
|
|
372
|
+
| "book"
|
|
373
|
+
| "book-dead"
|
|
374
|
+
| "book-medical"
|
|
375
|
+
| "book-open"
|
|
376
|
+
| "book-reader"
|
|
377
|
+
| "bookmark"
|
|
378
|
+
| "bootstrap"
|
|
379
|
+
| "border-all"
|
|
380
|
+
| "border-none"
|
|
381
|
+
| "border-style"
|
|
382
|
+
| "bowling-ball"
|
|
383
|
+
| "box"
|
|
384
|
+
| "box-open"
|
|
385
|
+
| "box-tissue"
|
|
386
|
+
| "boxes"
|
|
387
|
+
| "braille"
|
|
388
|
+
| "brain"
|
|
389
|
+
| "bread-slice"
|
|
390
|
+
| "briefcase"
|
|
391
|
+
| "briefcase-medical"
|
|
392
|
+
| "broadcast-tower"
|
|
393
|
+
| "broom"
|
|
394
|
+
| "brush"
|
|
395
|
+
| "btc"
|
|
396
|
+
| "buffer"
|
|
397
|
+
| "bug"
|
|
398
|
+
| "building"
|
|
399
|
+
| "bullhorn"
|
|
400
|
+
| "bullseye"
|
|
401
|
+
| "burn"
|
|
402
|
+
| "buromobelexperte"
|
|
403
|
+
| "bus"
|
|
404
|
+
| "bus-alt"
|
|
405
|
+
| "business-time"
|
|
406
|
+
| "buy-n-large"
|
|
407
|
+
| "buysellads"
|
|
408
|
+
| "calculator"
|
|
409
|
+
| "calendar"
|
|
410
|
+
| "calendar-alt"
|
|
411
|
+
| "calendar-check"
|
|
412
|
+
| "calendar-day"
|
|
413
|
+
| "calendar-minus"
|
|
414
|
+
| "calendar-plus"
|
|
415
|
+
| "calendar-times"
|
|
416
|
+
| "calendar-week"
|
|
417
|
+
| "camera"
|
|
418
|
+
| "camera-retro"
|
|
419
|
+
| "campground"
|
|
420
|
+
| "canadian-maple-leaf"
|
|
421
|
+
| "candy-cane"
|
|
422
|
+
| "cannabis"
|
|
423
|
+
| "capsules"
|
|
424
|
+
| "car"
|
|
425
|
+
| "car-alt"
|
|
426
|
+
| "car-battery"
|
|
427
|
+
| "car-crash"
|
|
428
|
+
| "car-side"
|
|
429
|
+
| "caravan"
|
|
430
|
+
| "caret-down"
|
|
431
|
+
| "caret-left"
|
|
432
|
+
| "caret-right"
|
|
433
|
+
| "caret-square-down"
|
|
434
|
+
| "caret-square-left"
|
|
435
|
+
| "caret-square-right"
|
|
436
|
+
| "caret-square-up"
|
|
437
|
+
| "caret-up"
|
|
438
|
+
| "carrot"
|
|
439
|
+
| "cart-arrow-down"
|
|
440
|
+
| "cart-plus"
|
|
441
|
+
| "cash-register"
|
|
442
|
+
| "cat"
|
|
443
|
+
| "cc-amazon-pay"
|
|
444
|
+
| "cc-amex"
|
|
445
|
+
| "cc-apple-pay"
|
|
446
|
+
| "cc-diners-club"
|
|
447
|
+
| "cc-discover"
|
|
448
|
+
| "cc-jcb"
|
|
449
|
+
| "cc-mastercard"
|
|
450
|
+
| "cc-paypal"
|
|
451
|
+
| "cc-stripe"
|
|
452
|
+
| "cc-visa"
|
|
453
|
+
| "centercode"
|
|
454
|
+
| "centos"
|
|
455
|
+
| "certificate"
|
|
456
|
+
| "chair"
|
|
457
|
+
| "chalkboard"
|
|
458
|
+
| "chalkboard-teacher"
|
|
459
|
+
| "charging-station"
|
|
460
|
+
| "chart-area"
|
|
461
|
+
| "chart-bar"
|
|
462
|
+
| "chart-line"
|
|
463
|
+
| "chart-pie"
|
|
464
|
+
| "check"
|
|
465
|
+
| "check-circle"
|
|
466
|
+
| "check-double"
|
|
467
|
+
| "check-square"
|
|
468
|
+
| "cheese"
|
|
469
|
+
| "chess"
|
|
470
|
+
| "chess-bishop"
|
|
471
|
+
| "chess-board"
|
|
472
|
+
| "chess-king"
|
|
473
|
+
| "chess-knight"
|
|
474
|
+
| "chess-pawn"
|
|
475
|
+
| "chess-queen"
|
|
476
|
+
| "chess-rook"
|
|
477
|
+
| "chevron-circle-down"
|
|
478
|
+
| "chevron-circle-left"
|
|
479
|
+
| "chevron-circle-right"
|
|
480
|
+
| "chevron-circle-up"
|
|
481
|
+
| "chevron-down"
|
|
482
|
+
| "chevron-left"
|
|
483
|
+
| "chevron-right"
|
|
484
|
+
| "chevron-up"
|
|
485
|
+
| "child"
|
|
486
|
+
| "chrome"
|
|
487
|
+
| "chromecast"
|
|
488
|
+
| "church"
|
|
489
|
+
| "circle"
|
|
490
|
+
| "circle-notch"
|
|
491
|
+
| "city"
|
|
492
|
+
| "clinic-medical"
|
|
493
|
+
| "clipboard"
|
|
494
|
+
| "clipboard-check"
|
|
495
|
+
| "clipboard-list"
|
|
496
|
+
| "clock"
|
|
497
|
+
| "clone"
|
|
498
|
+
| "closed-captioning"
|
|
499
|
+
| "cloud"
|
|
500
|
+
| "cloud-download-alt"
|
|
501
|
+
| "cloud-meatball"
|
|
502
|
+
| "cloud-moon"
|
|
503
|
+
| "cloud-moon-rain"
|
|
504
|
+
| "cloud-rain"
|
|
505
|
+
| "cloud-showers-heavy"
|
|
506
|
+
| "cloud-sun"
|
|
507
|
+
| "cloud-sun-rain"
|
|
508
|
+
| "cloud-upload-alt"
|
|
509
|
+
| "cloudflare"
|
|
510
|
+
| "cloudscale"
|
|
511
|
+
| "cloudsmith"
|
|
512
|
+
| "cloudversify"
|
|
513
|
+
| "cocktail"
|
|
514
|
+
| "code"
|
|
515
|
+
| "code-branch"
|
|
516
|
+
| "codepen"
|
|
517
|
+
| "codiepie"
|
|
518
|
+
| "coffee"
|
|
519
|
+
| "cog"
|
|
520
|
+
| "cogs"
|
|
521
|
+
| "coins"
|
|
522
|
+
| "columns"
|
|
523
|
+
| "comment"
|
|
524
|
+
| "comment-alt"
|
|
525
|
+
| "comment-dollar"
|
|
526
|
+
| "comment-dots"
|
|
527
|
+
| "comment-medical"
|
|
528
|
+
| "comment-slash"
|
|
529
|
+
| "comments"
|
|
530
|
+
| "comments-dollar"
|
|
531
|
+
| "compact-disc"
|
|
532
|
+
| "compass"
|
|
533
|
+
| "compress"
|
|
534
|
+
| "compress-alt"
|
|
535
|
+
| "compress-arrows-alt"
|
|
536
|
+
| "concierge-bell"
|
|
537
|
+
| "confluence"
|
|
538
|
+
| "connectdevelop"
|
|
539
|
+
| "contao"
|
|
540
|
+
| "cookie"
|
|
541
|
+
| "cookie-bite"
|
|
542
|
+
| "copy"
|
|
543
|
+
| "copyright"
|
|
544
|
+
| "cotton-bureau"
|
|
545
|
+
| "couch"
|
|
546
|
+
| "cpanel"
|
|
547
|
+
| "creative-commons"
|
|
548
|
+
| "creative-commons-by"
|
|
549
|
+
| "creative-commons-nc"
|
|
550
|
+
| "creative-commons-nc-eu"
|
|
551
|
+
| "creative-commons-nc-jp"
|
|
552
|
+
| "creative-commons-nd"
|
|
553
|
+
| "creative-commons-pd"
|
|
554
|
+
| "creative-commons-pd-alt"
|
|
555
|
+
| "creative-commons-remix"
|
|
556
|
+
| "creative-commons-sa"
|
|
557
|
+
| "creative-commons-sampling"
|
|
558
|
+
| "creative-commons-sampling-plus"
|
|
559
|
+
| "creative-commons-share"
|
|
560
|
+
| "creative-commons-zero"
|
|
561
|
+
| "credit-card"
|
|
562
|
+
| "critical-role"
|
|
563
|
+
| "crop"
|
|
564
|
+
| "crop-alt"
|
|
565
|
+
| "cross"
|
|
566
|
+
| "crosshairs"
|
|
567
|
+
| "crow"
|
|
568
|
+
| "crown"
|
|
569
|
+
| "crutch"
|
|
570
|
+
| "css3"
|
|
571
|
+
| "css3-alt"
|
|
572
|
+
| "cube"
|
|
573
|
+
| "cubes"
|
|
574
|
+
| "cut"
|
|
575
|
+
| "cuttlefish"
|
|
576
|
+
| "d-and-d"
|
|
577
|
+
| "d-and-d-beyond"
|
|
578
|
+
| "dailymotion"
|
|
579
|
+
| "dashcube"
|
|
580
|
+
| "database"
|
|
581
|
+
| "deaf"
|
|
582
|
+
| "deezer"
|
|
583
|
+
| "delicious"
|
|
584
|
+
| "democrat"
|
|
585
|
+
| "deploydog"
|
|
586
|
+
| "deskpro"
|
|
587
|
+
| "desktop"
|
|
588
|
+
| "dev"
|
|
589
|
+
| "deviantart"
|
|
590
|
+
| "dharmachakra"
|
|
591
|
+
| "dhl"
|
|
592
|
+
| "diagnoses"
|
|
593
|
+
| "diaspora"
|
|
594
|
+
| "dice"
|
|
595
|
+
| "dice-d20"
|
|
596
|
+
| "dice-d6"
|
|
597
|
+
| "dice-five"
|
|
598
|
+
| "dice-four"
|
|
599
|
+
| "dice-one"
|
|
600
|
+
| "dice-six"
|
|
601
|
+
| "dice-three"
|
|
602
|
+
| "dice-two"
|
|
603
|
+
| "digg"
|
|
604
|
+
| "digital-ocean"
|
|
605
|
+
| "digital-tachograph"
|
|
606
|
+
| "directions"
|
|
607
|
+
| "discord"
|
|
608
|
+
| "discourse"
|
|
609
|
+
| "disease"
|
|
610
|
+
| "divide"
|
|
611
|
+
| "dizzy"
|
|
612
|
+
| "dna"
|
|
613
|
+
| "dochub"
|
|
614
|
+
| "docker"
|
|
615
|
+
| "dog"
|
|
616
|
+
| "dollar-sign"
|
|
617
|
+
| "dolly"
|
|
618
|
+
| "dolly-flatbed"
|
|
619
|
+
| "donate"
|
|
620
|
+
| "door-closed"
|
|
621
|
+
| "door-open"
|
|
622
|
+
| "dot-circle"
|
|
623
|
+
| "dove"
|
|
624
|
+
| "download"
|
|
625
|
+
| "draft2digital"
|
|
626
|
+
| "drafting-compass"
|
|
627
|
+
| "dragon"
|
|
628
|
+
| "draw-polygon"
|
|
629
|
+
| "dribbble"
|
|
630
|
+
| "dribbble-square"
|
|
631
|
+
| "dropbox"
|
|
632
|
+
| "drum"
|
|
633
|
+
| "drum-steelpan"
|
|
634
|
+
| "drumstick-bite"
|
|
635
|
+
| "drupal"
|
|
636
|
+
| "dumbbell"
|
|
637
|
+
| "dumpster"
|
|
638
|
+
| "dumpster-fire"
|
|
639
|
+
| "dungeon"
|
|
640
|
+
| "dyalog"
|
|
641
|
+
| "earlybirds"
|
|
642
|
+
| "ebay"
|
|
643
|
+
| "edge"
|
|
644
|
+
| "edge-legacy"
|
|
645
|
+
| "edit"
|
|
646
|
+
| "egg"
|
|
647
|
+
| "eject"
|
|
648
|
+
| "elementor"
|
|
649
|
+
| "ellipsis-h"
|
|
650
|
+
| "ellipsis-v"
|
|
651
|
+
| "ello"
|
|
652
|
+
| "ember"
|
|
653
|
+
| "empire"
|
|
654
|
+
| "envelope"
|
|
655
|
+
| "envelope-open"
|
|
656
|
+
| "envelope-open-text"
|
|
657
|
+
| "envelope-square"
|
|
658
|
+
| "envira"
|
|
659
|
+
| "equals"
|
|
660
|
+
| "eraser"
|
|
661
|
+
| "erlang"
|
|
662
|
+
| "ethereum"
|
|
663
|
+
| "ethernet"
|
|
664
|
+
| "etsy"
|
|
665
|
+
| "euro-sign"
|
|
666
|
+
| "evernote"
|
|
667
|
+
| "exchange-alt"
|
|
668
|
+
| "exclamation"
|
|
669
|
+
| "exclamation-circle"
|
|
670
|
+
| "exclamation-triangle"
|
|
671
|
+
| "expand"
|
|
672
|
+
| "expand-alt"
|
|
673
|
+
| "expand-arrows-alt"
|
|
674
|
+
| "expeditedssl"
|
|
675
|
+
| "external-link-alt"
|
|
676
|
+
| "external-link-square-alt"
|
|
677
|
+
| "eye"
|
|
678
|
+
| "eye-dropper"
|
|
679
|
+
| "eye-slash"
|
|
680
|
+
| "facebook"
|
|
681
|
+
| "facebook-f"
|
|
682
|
+
| "facebook-messenger"
|
|
683
|
+
| "facebook-square"
|
|
684
|
+
| "fan"
|
|
685
|
+
| "fantasy-flight-games"
|
|
686
|
+
| "fast-backward"
|
|
687
|
+
| "fast-forward"
|
|
688
|
+
| "faucet"
|
|
689
|
+
| "fax"
|
|
690
|
+
| "feather"
|
|
691
|
+
| "feather-alt"
|
|
692
|
+
| "fedex"
|
|
693
|
+
| "fedora"
|
|
694
|
+
| "female"
|
|
695
|
+
| "fighter-jet"
|
|
696
|
+
| "figma"
|
|
697
|
+
| "file"
|
|
698
|
+
| "file-alt"
|
|
699
|
+
| "file-archive"
|
|
700
|
+
| "file-audio"
|
|
701
|
+
| "file-code"
|
|
702
|
+
| "file-contract"
|
|
703
|
+
| "file-csv"
|
|
704
|
+
| "file-download"
|
|
705
|
+
| "file-excel"
|
|
706
|
+
| "file-export"
|
|
707
|
+
| "file-image"
|
|
708
|
+
| "file-import"
|
|
709
|
+
| "file-invoice"
|
|
710
|
+
| "file-invoice-dollar"
|
|
711
|
+
| "file-medical"
|
|
712
|
+
| "file-medical-alt"
|
|
713
|
+
| "file-pdf"
|
|
714
|
+
| "file-powerpoint"
|
|
715
|
+
| "file-prescription"
|
|
716
|
+
| "file-signature"
|
|
717
|
+
| "file-upload"
|
|
718
|
+
| "file-video"
|
|
719
|
+
| "file-word"
|
|
720
|
+
| "fill"
|
|
721
|
+
| "fill-drip"
|
|
722
|
+
| "film"
|
|
723
|
+
| "filter"
|
|
724
|
+
| "fingerprint"
|
|
725
|
+
| "fire"
|
|
726
|
+
| "fire-alt"
|
|
727
|
+
| "fire-extinguisher"
|
|
728
|
+
| "firefox"
|
|
729
|
+
| "firefox-browser"
|
|
730
|
+
| "first-aid"
|
|
731
|
+
| "first-order"
|
|
732
|
+
| "first-order-alt"
|
|
733
|
+
| "firstdraft"
|
|
734
|
+
| "fish"
|
|
735
|
+
| "fist-raised"
|
|
736
|
+
| "flag"
|
|
737
|
+
| "flag-checkered"
|
|
738
|
+
| "flag-usa"
|
|
739
|
+
| "flask"
|
|
740
|
+
| "flickr"
|
|
741
|
+
| "flipboard"
|
|
742
|
+
| "flushed"
|
|
743
|
+
| "fly"
|
|
744
|
+
| "folder"
|
|
745
|
+
| "folder-minus"
|
|
746
|
+
| "folder-open"
|
|
747
|
+
| "folder-plus"
|
|
748
|
+
| "font"
|
|
749
|
+
| "font-awesome"
|
|
750
|
+
| "font-awesome-alt"
|
|
751
|
+
| "font-awesome-flag"
|
|
752
|
+
| "font-awesome-logo-full"
|
|
753
|
+
| "fonticons"
|
|
754
|
+
| "fonticons-fi"
|
|
755
|
+
| "football-ball"
|
|
756
|
+
| "fort-awesome"
|
|
757
|
+
| "fort-awesome-alt"
|
|
758
|
+
| "forumbee"
|
|
759
|
+
| "forward"
|
|
760
|
+
| "foursquare"
|
|
761
|
+
| "free-code-camp"
|
|
762
|
+
| "freebsd"
|
|
763
|
+
| "frog"
|
|
764
|
+
| "frown"
|
|
765
|
+
| "frown-open"
|
|
766
|
+
| "fulcrum"
|
|
767
|
+
| "funnel-dollar"
|
|
768
|
+
| "futbol"
|
|
769
|
+
| "galactic-republic"
|
|
770
|
+
| "galactic-senate"
|
|
771
|
+
| "gamepad"
|
|
772
|
+
| "gas-pump"
|
|
773
|
+
| "gavel"
|
|
774
|
+
| "gem"
|
|
775
|
+
| "genderless"
|
|
776
|
+
| "get-pocket"
|
|
777
|
+
| "gg"
|
|
778
|
+
| "gg-circle"
|
|
779
|
+
| "ghost"
|
|
780
|
+
| "gift"
|
|
781
|
+
| "gifts"
|
|
782
|
+
| "git"
|
|
783
|
+
| "git-alt"
|
|
784
|
+
| "git-square"
|
|
785
|
+
| "github"
|
|
786
|
+
| "github-alt"
|
|
787
|
+
| "github-square"
|
|
788
|
+
| "gitkraken"
|
|
789
|
+
| "gitlab"
|
|
790
|
+
| "gitter"
|
|
791
|
+
| "glass-cheers"
|
|
792
|
+
| "glass-martini"
|
|
793
|
+
| "glass-martini-alt"
|
|
794
|
+
| "glass-whiskey"
|
|
795
|
+
| "glasses"
|
|
796
|
+
| "glide"
|
|
797
|
+
| "glide-g"
|
|
798
|
+
| "globe"
|
|
799
|
+
| "globe-africa"
|
|
800
|
+
| "globe-americas"
|
|
801
|
+
| "globe-asia"
|
|
802
|
+
| "globe-europe"
|
|
803
|
+
| "gofore"
|
|
804
|
+
| "golf-ball"
|
|
805
|
+
| "goodreads"
|
|
806
|
+
| "goodreads-g"
|
|
807
|
+
| "google"
|
|
808
|
+
| "google-drive"
|
|
809
|
+
| "google-pay"
|
|
810
|
+
| "google-play"
|
|
811
|
+
| "google-plus"
|
|
812
|
+
| "google-plus-g"
|
|
813
|
+
| "google-plus-square"
|
|
814
|
+
| "google-wallet"
|
|
815
|
+
| "gopuram"
|
|
816
|
+
| "graduation-cap"
|
|
817
|
+
| "gratipay"
|
|
818
|
+
| "grav"
|
|
819
|
+
| "greater-than"
|
|
820
|
+
| "greater-than-equal"
|
|
821
|
+
| "grimace"
|
|
822
|
+
| "grin"
|
|
823
|
+
| "grin-alt"
|
|
824
|
+
| "grin-beam"
|
|
825
|
+
| "grin-beam-sweat"
|
|
826
|
+
| "grin-hearts"
|
|
827
|
+
| "grin-squint"
|
|
828
|
+
| "grin-squint-tears"
|
|
829
|
+
| "grin-stars"
|
|
830
|
+
| "grin-tears"
|
|
831
|
+
| "grin-tongue"
|
|
832
|
+
| "grin-tongue-squint"
|
|
833
|
+
| "grin-tongue-wink"
|
|
834
|
+
| "grin-wink"
|
|
835
|
+
| "grip-horizontal"
|
|
836
|
+
| "grip-lines"
|
|
837
|
+
| "grip-lines-vertical"
|
|
838
|
+
| "grip-vertical"
|
|
839
|
+
| "gripfire"
|
|
840
|
+
| "grunt"
|
|
841
|
+
| "guilded"
|
|
842
|
+
| "guitar"
|
|
843
|
+
| "gulp"
|
|
844
|
+
| "h-square"
|
|
845
|
+
| "hacker-news"
|
|
846
|
+
| "hacker-news-square"
|
|
847
|
+
| "hackerrank"
|
|
848
|
+
| "hamburger"
|
|
849
|
+
| "hammer"
|
|
850
|
+
| "hamsa"
|
|
851
|
+
| "hand-holding"
|
|
852
|
+
| "hand-holding-heart"
|
|
853
|
+
| "hand-holding-medical"
|
|
854
|
+
| "hand-holding-usd"
|
|
855
|
+
| "hand-holding-water"
|
|
856
|
+
| "hand-lizard"
|
|
857
|
+
| "hand-middle-finger"
|
|
858
|
+
| "hand-paper"
|
|
859
|
+
| "hand-peace"
|
|
860
|
+
| "hand-point-down"
|
|
861
|
+
| "hand-point-left"
|
|
862
|
+
| "hand-point-right"
|
|
863
|
+
| "hand-point-up"
|
|
864
|
+
| "hand-pointer"
|
|
865
|
+
| "hand-rock"
|
|
866
|
+
| "hand-scissors"
|
|
867
|
+
| "hand-sparkles"
|
|
868
|
+
| "hand-spock"
|
|
869
|
+
| "hands"
|
|
870
|
+
| "hands-helping"
|
|
871
|
+
| "hands-wash"
|
|
872
|
+
| "handshake"
|
|
873
|
+
| "handshake-alt-slash"
|
|
874
|
+
| "handshake-slash"
|
|
875
|
+
| "hanukiah"
|
|
876
|
+
| "hard-hat"
|
|
877
|
+
| "hashtag"
|
|
878
|
+
| "hat-cowboy"
|
|
879
|
+
| "hat-cowboy-side"
|
|
880
|
+
| "hat-wizard"
|
|
881
|
+
| "hdd"
|
|
882
|
+
| "head-side-cough"
|
|
883
|
+
| "head-side-cough-slash"
|
|
884
|
+
| "head-side-mask"
|
|
885
|
+
| "head-side-virus"
|
|
886
|
+
| "heading"
|
|
887
|
+
| "headphones"
|
|
888
|
+
| "headphones-alt"
|
|
889
|
+
| "headset"
|
|
890
|
+
| "heart"
|
|
891
|
+
| "heart-broken"
|
|
892
|
+
| "heartbeat"
|
|
893
|
+
| "helicopter"
|
|
894
|
+
| "highlighter"
|
|
895
|
+
| "hiking"
|
|
896
|
+
| "hippo"
|
|
897
|
+
| "hips"
|
|
898
|
+
| "hire-a-helper"
|
|
899
|
+
| "history"
|
|
900
|
+
| "hive"
|
|
901
|
+
| "hockey-puck"
|
|
902
|
+
| "holly-berry"
|
|
903
|
+
| "home"
|
|
904
|
+
| "hooli"
|
|
905
|
+
| "hornbill"
|
|
906
|
+
| "horse"
|
|
907
|
+
| "horse-head"
|
|
908
|
+
| "hospital"
|
|
909
|
+
| "hospital-alt"
|
|
910
|
+
| "hospital-symbol"
|
|
911
|
+
| "hospital-user"
|
|
912
|
+
| "hot-tub"
|
|
913
|
+
| "hotdog"
|
|
914
|
+
| "hotel"
|
|
915
|
+
| "hotjar"
|
|
916
|
+
| "hourglass"
|
|
917
|
+
| "hourglass-end"
|
|
918
|
+
| "hourglass-half"
|
|
919
|
+
| "hourglass-start"
|
|
920
|
+
| "house-damage"
|
|
921
|
+
| "house-user"
|
|
922
|
+
| "houzz"
|
|
923
|
+
| "hryvnia"
|
|
924
|
+
| "html5"
|
|
925
|
+
| "hubspot"
|
|
926
|
+
| "i-cursor"
|
|
927
|
+
| "ice-cream"
|
|
928
|
+
| "icicles"
|
|
929
|
+
| "icons"
|
|
930
|
+
| "id-badge"
|
|
931
|
+
| "id-card"
|
|
932
|
+
| "id-card-alt"
|
|
933
|
+
| "ideal"
|
|
934
|
+
| "igloo"
|
|
935
|
+
| "image"
|
|
936
|
+
| "images"
|
|
937
|
+
| "imdb"
|
|
938
|
+
| "inbox"
|
|
939
|
+
| "indent"
|
|
940
|
+
| "industry"
|
|
941
|
+
| "infinity"
|
|
942
|
+
| "info"
|
|
943
|
+
| "info-circle"
|
|
944
|
+
| "innosoft"
|
|
945
|
+
| "instagram"
|
|
946
|
+
| "instagram-square"
|
|
947
|
+
| "instalod"
|
|
948
|
+
| "intercom"
|
|
949
|
+
| "internet-explorer"
|
|
950
|
+
| "invision"
|
|
951
|
+
| "ioxhost"
|
|
952
|
+
| "italic"
|
|
953
|
+
| "itch-io"
|
|
954
|
+
| "itunes"
|
|
955
|
+
| "itunes-note"
|
|
956
|
+
| "java"
|
|
957
|
+
| "jedi"
|
|
958
|
+
| "jedi-order"
|
|
959
|
+
| "jenkins"
|
|
960
|
+
| "jira"
|
|
961
|
+
| "joget"
|
|
962
|
+
| "joint"
|
|
963
|
+
| "joomla"
|
|
964
|
+
| "journal-whills"
|
|
965
|
+
| "js"
|
|
966
|
+
| "js-square"
|
|
967
|
+
| "jsfiddle"
|
|
968
|
+
| "kaaba"
|
|
969
|
+
| "kaggle"
|
|
970
|
+
| "key"
|
|
971
|
+
| "keybase"
|
|
972
|
+
| "keyboard"
|
|
973
|
+
| "keycdn"
|
|
974
|
+
| "khanda"
|
|
975
|
+
| "kickstarter"
|
|
976
|
+
| "kickstarter-k"
|
|
977
|
+
| "kiss"
|
|
978
|
+
| "kiss-beam"
|
|
979
|
+
| "kiss-wink-heart"
|
|
980
|
+
| "kiwi-bird"
|
|
981
|
+
| "korvue"
|
|
982
|
+
| "landmark"
|
|
983
|
+
| "language"
|
|
984
|
+
| "laptop"
|
|
985
|
+
| "laptop-code"
|
|
986
|
+
| "laptop-house"
|
|
987
|
+
| "laptop-medical"
|
|
988
|
+
| "laravel"
|
|
989
|
+
| "lastfm"
|
|
990
|
+
| "lastfm-square"
|
|
991
|
+
| "laugh"
|
|
992
|
+
| "laugh-beam"
|
|
993
|
+
| "laugh-squint"
|
|
994
|
+
| "laugh-wink"
|
|
995
|
+
| "layer-group"
|
|
996
|
+
| "leaf"
|
|
997
|
+
| "leanpub"
|
|
998
|
+
| "lemon"
|
|
999
|
+
| "less"
|
|
1000
|
+
| "less-than"
|
|
1001
|
+
| "less-than-equal"
|
|
1002
|
+
| "level-down-alt"
|
|
1003
|
+
| "level-up-alt"
|
|
1004
|
+
| "life-ring"
|
|
1005
|
+
| "lightbulb"
|
|
1006
|
+
| "line"
|
|
1007
|
+
| "link"
|
|
1008
|
+
| "linkedin"
|
|
1009
|
+
| "linkedin-in"
|
|
1010
|
+
| "linode"
|
|
1011
|
+
| "linux"
|
|
1012
|
+
| "lira-sign"
|
|
1013
|
+
| "list"
|
|
1014
|
+
| "list-alt"
|
|
1015
|
+
| "list-ol"
|
|
1016
|
+
| "list-ul"
|
|
1017
|
+
| "location-arrow"
|
|
1018
|
+
| "lock"
|
|
1019
|
+
| "lock-open"
|
|
1020
|
+
| "long-arrow-alt-down"
|
|
1021
|
+
| "long-arrow-alt-left"
|
|
1022
|
+
| "long-arrow-alt-right"
|
|
1023
|
+
| "long-arrow-alt-up"
|
|
1024
|
+
| "low-vision"
|
|
1025
|
+
| "luggage-cart"
|
|
1026
|
+
| "lungs"
|
|
1027
|
+
| "lungs-virus"
|
|
1028
|
+
| "lyft"
|
|
1029
|
+
| "magento"
|
|
1030
|
+
| "magic"
|
|
1031
|
+
| "magnet"
|
|
1032
|
+
| "mail-bulk"
|
|
1033
|
+
| "mailchimp"
|
|
1034
|
+
| "male"
|
|
1035
|
+
| "mandalorian"
|
|
1036
|
+
| "map"
|
|
1037
|
+
| "map-marked"
|
|
1038
|
+
| "map-marked-alt"
|
|
1039
|
+
| "map-marker"
|
|
1040
|
+
| "map-marker-alt"
|
|
1041
|
+
| "map-pin"
|
|
1042
|
+
| "map-signs"
|
|
1043
|
+
| "markdown"
|
|
1044
|
+
| "marker"
|
|
1045
|
+
| "mars"
|
|
1046
|
+
| "mars-double"
|
|
1047
|
+
| "mars-stroke"
|
|
1048
|
+
| "mars-stroke-h"
|
|
1049
|
+
| "mars-stroke-v"
|
|
1050
|
+
| "mask"
|
|
1051
|
+
| "mastodon"
|
|
1052
|
+
| "maxcdn"
|
|
1053
|
+
| "mdb"
|
|
1054
|
+
| "medal"
|
|
1055
|
+
| "medapps"
|
|
1056
|
+
| "medium"
|
|
1057
|
+
| "medium-m"
|
|
1058
|
+
| "medkit"
|
|
1059
|
+
| "medrt"
|
|
1060
|
+
| "meetup"
|
|
1061
|
+
| "megaport"
|
|
1062
|
+
| "meh"
|
|
1063
|
+
| "meh-blank"
|
|
1064
|
+
| "meh-rolling-eyes"
|
|
1065
|
+
| "memory"
|
|
1066
|
+
| "mendeley"
|
|
1067
|
+
| "menorah"
|
|
1068
|
+
| "mercury"
|
|
1069
|
+
| "meteor"
|
|
1070
|
+
| "microblog"
|
|
1071
|
+
| "microchip"
|
|
1072
|
+
| "microphone"
|
|
1073
|
+
| "microphone-alt"
|
|
1074
|
+
| "microphone-alt-slash"
|
|
1075
|
+
| "microphone-slash"
|
|
1076
|
+
| "microscope"
|
|
1077
|
+
| "microsoft"
|
|
1078
|
+
| "minus"
|
|
1079
|
+
| "minus-circle"
|
|
1080
|
+
| "minus-square"
|
|
1081
|
+
| "mitten"
|
|
1082
|
+
| "mix"
|
|
1083
|
+
| "mixcloud"
|
|
1084
|
+
| "mixer"
|
|
1085
|
+
| "mizuni"
|
|
1086
|
+
| "mobile"
|
|
1087
|
+
| "mobile-alt"
|
|
1088
|
+
| "modx"
|
|
1089
|
+
| "monero"
|
|
1090
|
+
| "money-bill"
|
|
1091
|
+
| "money-bill-alt"
|
|
1092
|
+
| "money-bill-wave"
|
|
1093
|
+
| "money-bill-wave-alt"
|
|
1094
|
+
| "money-check"
|
|
1095
|
+
| "money-check-alt"
|
|
1096
|
+
| "monument"
|
|
1097
|
+
| "moon"
|
|
1098
|
+
| "mortar-pestle"
|
|
1099
|
+
| "mosque"
|
|
1100
|
+
| "motorcycle"
|
|
1101
|
+
| "mountain"
|
|
1102
|
+
| "mouse"
|
|
1103
|
+
| "mouse-pointer"
|
|
1104
|
+
| "mug-hot"
|
|
1105
|
+
| "music"
|
|
1106
|
+
| "napster"
|
|
1107
|
+
| "neos"
|
|
1108
|
+
| "network-wired"
|
|
1109
|
+
| "neuter"
|
|
1110
|
+
| "newspaper"
|
|
1111
|
+
| "nimblr"
|
|
1112
|
+
| "node"
|
|
1113
|
+
| "node-js"
|
|
1114
|
+
| "not-equal"
|
|
1115
|
+
| "notes-medical"
|
|
1116
|
+
| "npm"
|
|
1117
|
+
| "ns8"
|
|
1118
|
+
| "nutritionix"
|
|
1119
|
+
| "object-group"
|
|
1120
|
+
| "object-ungroup"
|
|
1121
|
+
| "octopus-deploy"
|
|
1122
|
+
| "odnoklassniki"
|
|
1123
|
+
| "odnoklassniki-square"
|
|
1124
|
+
| "oil-can"
|
|
1125
|
+
| "old-republic"
|
|
1126
|
+
| "om"
|
|
1127
|
+
| "opencart"
|
|
1128
|
+
| "openid"
|
|
1129
|
+
| "opera"
|
|
1130
|
+
| "optin-monster"
|
|
1131
|
+
| "orcid"
|
|
1132
|
+
| "osi"
|
|
1133
|
+
| "otter"
|
|
1134
|
+
| "outdent"
|
|
1135
|
+
| "page4"
|
|
1136
|
+
| "pagelines"
|
|
1137
|
+
| "pager"
|
|
1138
|
+
| "paint-brush"
|
|
1139
|
+
| "paint-roller"
|
|
1140
|
+
| "palette"
|
|
1141
|
+
| "palfed"
|
|
1142
|
+
| "pallet"
|
|
1143
|
+
| "paper-plane"
|
|
1144
|
+
| "paperclip"
|
|
1145
|
+
| "parachute-box"
|
|
1146
|
+
| "paragraph"
|
|
1147
|
+
| "parking"
|
|
1148
|
+
| "passport"
|
|
1149
|
+
| "pastafarianism"
|
|
1150
|
+
| "paste"
|
|
1151
|
+
| "patreon"
|
|
1152
|
+
| "pause"
|
|
1153
|
+
| "pause-circle"
|
|
1154
|
+
| "paw"
|
|
1155
|
+
| "paypal"
|
|
1156
|
+
| "peace"
|
|
1157
|
+
| "pen"
|
|
1158
|
+
| "pen-alt"
|
|
1159
|
+
| "pen-fancy"
|
|
1160
|
+
| "pen-nib"
|
|
1161
|
+
| "pen-square"
|
|
1162
|
+
| "pencil-alt"
|
|
1163
|
+
| "pencil-ruler"
|
|
1164
|
+
| "penny-arcade"
|
|
1165
|
+
| "people-arrows"
|
|
1166
|
+
| "people-carry"
|
|
1167
|
+
| "pepper-hot"
|
|
1168
|
+
| "perbyte"
|
|
1169
|
+
| "percent"
|
|
1170
|
+
| "percentage"
|
|
1171
|
+
| "periscope"
|
|
1172
|
+
| "person-booth"
|
|
1173
|
+
| "phabricator"
|
|
1174
|
+
| "phoenix-framework"
|
|
1175
|
+
| "phoenix-squadron"
|
|
1176
|
+
| "phone"
|
|
1177
|
+
| "phone-alt"
|
|
1178
|
+
| "phone-slash"
|
|
1179
|
+
| "phone-square"
|
|
1180
|
+
| "phone-square-alt"
|
|
1181
|
+
| "phone-volume"
|
|
1182
|
+
| "photo-video"
|
|
1183
|
+
| "php"
|
|
1184
|
+
| "pied-piper"
|
|
1185
|
+
| "pied-piper-alt"
|
|
1186
|
+
| "pied-piper-hat"
|
|
1187
|
+
| "pied-piper-pp"
|
|
1188
|
+
| "pied-piper-square"
|
|
1189
|
+
| "piggy-bank"
|
|
1190
|
+
| "pills"
|
|
1191
|
+
| "pinterest"
|
|
1192
|
+
| "pinterest-p"
|
|
1193
|
+
| "pinterest-square"
|
|
1194
|
+
| "pizza-slice"
|
|
1195
|
+
| "place-of-worship"
|
|
1196
|
+
| "plane"
|
|
1197
|
+
| "plane-arrival"
|
|
1198
|
+
| "plane-departure"
|
|
1199
|
+
| "plane-slash"
|
|
1200
|
+
| "play"
|
|
1201
|
+
| "play-circle"
|
|
1202
|
+
| "playstation"
|
|
1203
|
+
| "plug"
|
|
1204
|
+
| "plus"
|
|
1205
|
+
| "plus-circle"
|
|
1206
|
+
| "plus-square"
|
|
1207
|
+
| "podcast"
|
|
1208
|
+
| "poll"
|
|
1209
|
+
| "poll-h"
|
|
1210
|
+
| "poo"
|
|
1211
|
+
| "poo-storm"
|
|
1212
|
+
| "poop"
|
|
1213
|
+
| "portrait"
|
|
1214
|
+
| "pound-sign"
|
|
1215
|
+
| "power-off"
|
|
1216
|
+
| "pray"
|
|
1217
|
+
| "praying-hands"
|
|
1218
|
+
| "prescription"
|
|
1219
|
+
| "prescription-bottle"
|
|
1220
|
+
| "prescription-bottle-alt"
|
|
1221
|
+
| "print"
|
|
1222
|
+
| "procedures"
|
|
1223
|
+
| "product-hunt"
|
|
1224
|
+
| "project-diagram"
|
|
1225
|
+
| "pump-medical"
|
|
1226
|
+
| "pump-soap"
|
|
1227
|
+
| "pushed"
|
|
1228
|
+
| "puzzle-piece"
|
|
1229
|
+
| "python"
|
|
1230
|
+
| "qq"
|
|
1231
|
+
| "qrcode"
|
|
1232
|
+
| "question"
|
|
1233
|
+
| "question-circle"
|
|
1234
|
+
| "quidditch"
|
|
1235
|
+
| "quinscape"
|
|
1236
|
+
| "quora"
|
|
1237
|
+
| "quote-left"
|
|
1238
|
+
| "quote-right"
|
|
1239
|
+
| "quran"
|
|
1240
|
+
| "r-project"
|
|
1241
|
+
| "radiation"
|
|
1242
|
+
| "radiation-alt"
|
|
1243
|
+
| "rainbow"
|
|
1244
|
+
| "random"
|
|
1245
|
+
| "raspberry-pi"
|
|
1246
|
+
| "ravelry"
|
|
1247
|
+
| "react"
|
|
1248
|
+
| "reacteurope"
|
|
1249
|
+
| "readme"
|
|
1250
|
+
| "rebel"
|
|
1251
|
+
| "receipt"
|
|
1252
|
+
| "record-vinyl"
|
|
1253
|
+
| "recycle"
|
|
1254
|
+
| "red-river"
|
|
1255
|
+
| "reddit"
|
|
1256
|
+
| "reddit-alien"
|
|
1257
|
+
| "reddit-square"
|
|
1258
|
+
| "redhat"
|
|
1259
|
+
| "redo"
|
|
1260
|
+
| "redo-alt"
|
|
1261
|
+
| "registered"
|
|
1262
|
+
| "remove-format"
|
|
1263
|
+
| "renren"
|
|
1264
|
+
| "reply"
|
|
1265
|
+
| "reply-all"
|
|
1266
|
+
| "replyd"
|
|
1267
|
+
| "republican"
|
|
1268
|
+
| "researchgate"
|
|
1269
|
+
| "resolving"
|
|
1270
|
+
| "restroom"
|
|
1271
|
+
| "retweet"
|
|
1272
|
+
| "rev"
|
|
1273
|
+
| "ribbon"
|
|
1274
|
+
| "ring"
|
|
1275
|
+
| "road"
|
|
1276
|
+
| "robot"
|
|
1277
|
+
| "rocket"
|
|
1278
|
+
| "rocketchat"
|
|
1279
|
+
| "rockrms"
|
|
1280
|
+
| "route"
|
|
1281
|
+
| "rss"
|
|
1282
|
+
| "rss-square"
|
|
1283
|
+
| "ruble-sign"
|
|
1284
|
+
| "ruler"
|
|
1285
|
+
| "ruler-combined"
|
|
1286
|
+
| "ruler-horizontal"
|
|
1287
|
+
| "ruler-vertical"
|
|
1288
|
+
| "running"
|
|
1289
|
+
| "rupee-sign"
|
|
1290
|
+
| "rust"
|
|
1291
|
+
| "sad-cry"
|
|
1292
|
+
| "sad-tear"
|
|
1293
|
+
| "safari"
|
|
1294
|
+
| "salesforce"
|
|
1295
|
+
| "sass"
|
|
1296
|
+
| "satellite"
|
|
1297
|
+
| "satellite-dish"
|
|
1298
|
+
| "save"
|
|
1299
|
+
| "schlix"
|
|
1300
|
+
| "school"
|
|
1301
|
+
| "screwdriver"
|
|
1302
|
+
| "scribd"
|
|
1303
|
+
| "scroll"
|
|
1304
|
+
| "sd-card"
|
|
1305
|
+
| "search"
|
|
1306
|
+
| "search-dollar"
|
|
1307
|
+
| "search-location"
|
|
1308
|
+
| "search-minus"
|
|
1309
|
+
| "search-plus"
|
|
1310
|
+
| "searchengin"
|
|
1311
|
+
| "seedling"
|
|
1312
|
+
| "sellcast"
|
|
1313
|
+
| "sellsy"
|
|
1314
|
+
| "server"
|
|
1315
|
+
| "servicestack"
|
|
1316
|
+
| "shapes"
|
|
1317
|
+
| "share"
|
|
1318
|
+
| "share-alt"
|
|
1319
|
+
| "share-alt-square"
|
|
1320
|
+
| "share-square"
|
|
1321
|
+
| "shekel-sign"
|
|
1322
|
+
| "shield-alt"
|
|
1323
|
+
| "shield-virus"
|
|
1324
|
+
| "ship"
|
|
1325
|
+
| "shipping-fast"
|
|
1326
|
+
| "shirtsinbulk"
|
|
1327
|
+
| "shoe-prints"
|
|
1328
|
+
| "shopify"
|
|
1329
|
+
| "shopping-bag"
|
|
1330
|
+
| "shopping-basket"
|
|
1331
|
+
| "shopping-cart"
|
|
1332
|
+
| "shopware"
|
|
1333
|
+
| "shower"
|
|
1334
|
+
| "shuttle-van"
|
|
1335
|
+
| "sign"
|
|
1336
|
+
| "sign-in-alt"
|
|
1337
|
+
| "sign-language"
|
|
1338
|
+
| "sign-out-alt"
|
|
1339
|
+
| "signal"
|
|
1340
|
+
| "signature"
|
|
1341
|
+
| "sim-card"
|
|
1342
|
+
| "simplybuilt"
|
|
1343
|
+
| "sink"
|
|
1344
|
+
| "sistrix"
|
|
1345
|
+
| "sitemap"
|
|
1346
|
+
| "sith"
|
|
1347
|
+
| "skating"
|
|
1348
|
+
| "sketch"
|
|
1349
|
+
| "skiing"
|
|
1350
|
+
| "skiing-nordic"
|
|
1351
|
+
| "skull"
|
|
1352
|
+
| "skull-crossbones"
|
|
1353
|
+
| "skyatlas"
|
|
1354
|
+
| "skype"
|
|
1355
|
+
| "slack"
|
|
1356
|
+
| "slack-hash"
|
|
1357
|
+
| "slash"
|
|
1358
|
+
| "sleigh"
|
|
1359
|
+
| "sliders-h"
|
|
1360
|
+
| "slideshare"
|
|
1361
|
+
| "smile"
|
|
1362
|
+
| "smile-beam"
|
|
1363
|
+
| "smile-wink"
|
|
1364
|
+
| "smog"
|
|
1365
|
+
| "smoking"
|
|
1366
|
+
| "smoking-ban"
|
|
1367
|
+
| "sms"
|
|
1368
|
+
| "snapchat"
|
|
1369
|
+
| "snapchat-ghost"
|
|
1370
|
+
| "snapchat-square"
|
|
1371
|
+
| "snowboarding"
|
|
1372
|
+
| "snowflake"
|
|
1373
|
+
| "snowman"
|
|
1374
|
+
| "snowplow"
|
|
1375
|
+
| "soap"
|
|
1376
|
+
| "socks"
|
|
1377
|
+
| "solar-panel"
|
|
1378
|
+
| "sort"
|
|
1379
|
+
| "sort-alpha-down"
|
|
1380
|
+
| "sort-alpha-down-alt"
|
|
1381
|
+
| "sort-alpha-up"
|
|
1382
|
+
| "sort-alpha-up-alt"
|
|
1383
|
+
| "sort-amount-down"
|
|
1384
|
+
| "sort-amount-down-alt"
|
|
1385
|
+
| "sort-amount-up"
|
|
1386
|
+
| "sort-amount-up-alt"
|
|
1387
|
+
| "sort-down"
|
|
1388
|
+
| "sort-numeric-down"
|
|
1389
|
+
| "sort-numeric-down-alt"
|
|
1390
|
+
| "sort-numeric-up"
|
|
1391
|
+
| "sort-numeric-up-alt"
|
|
1392
|
+
| "sort-up"
|
|
1393
|
+
| "soundcloud"
|
|
1394
|
+
| "sourcetree"
|
|
1395
|
+
| "spa"
|
|
1396
|
+
| "space-shuttle"
|
|
1397
|
+
| "speakap"
|
|
1398
|
+
| "speaker-deck"
|
|
1399
|
+
| "spell-check"
|
|
1400
|
+
| "spider"
|
|
1401
|
+
| "spinner"
|
|
1402
|
+
| "splotch"
|
|
1403
|
+
| "spotify"
|
|
1404
|
+
| "spray-can"
|
|
1405
|
+
| "square"
|
|
1406
|
+
| "square-full"
|
|
1407
|
+
| "square-root-alt"
|
|
1408
|
+
| "squarespace"
|
|
1409
|
+
| "stack-exchange"
|
|
1410
|
+
| "stack-overflow"
|
|
1411
|
+
| "stackpath"
|
|
1412
|
+
| "stamp"
|
|
1413
|
+
| "star"
|
|
1414
|
+
| "star-and-crescent"
|
|
1415
|
+
| "star-half"
|
|
1416
|
+
| "star-half-alt"
|
|
1417
|
+
| "star-of-david"
|
|
1418
|
+
| "star-of-life"
|
|
1419
|
+
| "staylinked"
|
|
1420
|
+
| "steam"
|
|
1421
|
+
| "steam-square"
|
|
1422
|
+
| "steam-symbol"
|
|
1423
|
+
| "step-backward"
|
|
1424
|
+
| "step-forward"
|
|
1425
|
+
| "stethoscope"
|
|
1426
|
+
| "sticker-mule"
|
|
1427
|
+
| "sticky-note"
|
|
1428
|
+
| "stop"
|
|
1429
|
+
| "stop-circle"
|
|
1430
|
+
| "stopwatch"
|
|
1431
|
+
| "stopwatch-20"
|
|
1432
|
+
| "store"
|
|
1433
|
+
| "store-alt"
|
|
1434
|
+
| "store-alt-slash"
|
|
1435
|
+
| "store-slash"
|
|
1436
|
+
| "strava"
|
|
1437
|
+
| "stream"
|
|
1438
|
+
| "street-view"
|
|
1439
|
+
| "strikethrough"
|
|
1440
|
+
| "stripe"
|
|
1441
|
+
| "stripe-s"
|
|
1442
|
+
| "stroopwafel"
|
|
1443
|
+
| "studiovinari"
|
|
1444
|
+
| "stumbleupon"
|
|
1445
|
+
| "stumbleupon-circle"
|
|
1446
|
+
| "subscript"
|
|
1447
|
+
| "subway"
|
|
1448
|
+
| "suitcase"
|
|
1449
|
+
| "suitcase-rolling"
|
|
1450
|
+
| "sun"
|
|
1451
|
+
| "superpowers"
|
|
1452
|
+
| "superscript"
|
|
1453
|
+
| "supple"
|
|
1454
|
+
| "surprise"
|
|
1455
|
+
| "suse"
|
|
1456
|
+
| "swatchbook"
|
|
1457
|
+
| "swift"
|
|
1458
|
+
| "swimmer"
|
|
1459
|
+
| "swimming-pool"
|
|
1460
|
+
| "symfony"
|
|
1461
|
+
| "synagogue"
|
|
1462
|
+
| "sync"
|
|
1463
|
+
| "sync-alt"
|
|
1464
|
+
| "syringe"
|
|
1465
|
+
| "table"
|
|
1466
|
+
| "table-tennis"
|
|
1467
|
+
| "tablet"
|
|
1468
|
+
| "tablet-alt"
|
|
1469
|
+
| "tablets"
|
|
1470
|
+
| "tachometer-alt"
|
|
1471
|
+
| "tag"
|
|
1472
|
+
| "tags"
|
|
1473
|
+
| "tape"
|
|
1474
|
+
| "tasks"
|
|
1475
|
+
| "taxi"
|
|
1476
|
+
| "teamspeak"
|
|
1477
|
+
| "teeth"
|
|
1478
|
+
| "teeth-open"
|
|
1479
|
+
| "telegram"
|
|
1480
|
+
| "telegram-plane"
|
|
1481
|
+
| "temperature-high"
|
|
1482
|
+
| "temperature-low"
|
|
1483
|
+
| "tencent-weibo"
|
|
1484
|
+
| "tenge"
|
|
1485
|
+
| "terminal"
|
|
1486
|
+
| "text-height"
|
|
1487
|
+
| "text-width"
|
|
1488
|
+
| "th"
|
|
1489
|
+
| "th-large"
|
|
1490
|
+
| "th-list"
|
|
1491
|
+
| "the-red-yeti"
|
|
1492
|
+
| "theater-masks"
|
|
1493
|
+
| "themeco"
|
|
1494
|
+
| "themeisle"
|
|
1495
|
+
| "thermometer"
|
|
1496
|
+
| "thermometer-empty"
|
|
1497
|
+
| "thermometer-full"
|
|
1498
|
+
| "thermometer-half"
|
|
1499
|
+
| "thermometer-quarter"
|
|
1500
|
+
| "thermometer-three-quarters"
|
|
1501
|
+
| "think-peaks"
|
|
1502
|
+
| "thumbs-down"
|
|
1503
|
+
| "thumbs-up"
|
|
1504
|
+
| "thumbtack"
|
|
1505
|
+
| "ticket-alt"
|
|
1506
|
+
| "tiktok"
|
|
1507
|
+
| "times"
|
|
1508
|
+
| "times-circle"
|
|
1509
|
+
| "tint"
|
|
1510
|
+
| "tint-slash"
|
|
1511
|
+
| "tired"
|
|
1512
|
+
| "toggle-off"
|
|
1513
|
+
| "toggle-on"
|
|
1514
|
+
| "toilet"
|
|
1515
|
+
| "toilet-paper"
|
|
1516
|
+
| "toilet-paper-slash"
|
|
1517
|
+
| "toolbox"
|
|
1518
|
+
| "tools"
|
|
1519
|
+
| "tooth"
|
|
1520
|
+
| "torah"
|
|
1521
|
+
| "torii-gate"
|
|
1522
|
+
| "tractor"
|
|
1523
|
+
| "trade-federation"
|
|
1524
|
+
| "trademark"
|
|
1525
|
+
| "traffic-light"
|
|
1526
|
+
| "trailer"
|
|
1527
|
+
| "train"
|
|
1528
|
+
| "tram"
|
|
1529
|
+
| "transgender"
|
|
1530
|
+
| "transgender-alt"
|
|
1531
|
+
| "trash"
|
|
1532
|
+
| "trash-alt"
|
|
1533
|
+
| "trash-restore"
|
|
1534
|
+
| "trash-restore-alt"
|
|
1535
|
+
| "tree"
|
|
1536
|
+
| "trello"
|
|
1537
|
+
| "tripadvisor"
|
|
1538
|
+
| "trophy"
|
|
1539
|
+
| "truck"
|
|
1540
|
+
| "truck-loading"
|
|
1541
|
+
| "truck-monster"
|
|
1542
|
+
| "truck-moving"
|
|
1543
|
+
| "truck-pickup"
|
|
1544
|
+
| "tshirt"
|
|
1545
|
+
| "tty"
|
|
1546
|
+
| "tumblr"
|
|
1547
|
+
| "tumblr-square"
|
|
1548
|
+
| "tv"
|
|
1549
|
+
| "twitch"
|
|
1550
|
+
| "twitter"
|
|
1551
|
+
| "twitter-square"
|
|
1552
|
+
| "typo3"
|
|
1553
|
+
| "uber"
|
|
1554
|
+
| "ubuntu"
|
|
1555
|
+
| "uikit"
|
|
1556
|
+
| "umbraco"
|
|
1557
|
+
| "umbrella"
|
|
1558
|
+
| "umbrella-beach"
|
|
1559
|
+
| "uncharted"
|
|
1560
|
+
| "underline"
|
|
1561
|
+
| "undo"
|
|
1562
|
+
| "undo-alt"
|
|
1563
|
+
| "uniregistry"
|
|
1564
|
+
| "unity"
|
|
1565
|
+
| "universal-access"
|
|
1566
|
+
| "university"
|
|
1567
|
+
| "unlink"
|
|
1568
|
+
| "unlock"
|
|
1569
|
+
| "unlock-alt"
|
|
1570
|
+
| "unsplash"
|
|
1571
|
+
| "untappd"
|
|
1572
|
+
| "upload"
|
|
1573
|
+
| "ups"
|
|
1574
|
+
| "usb"
|
|
1575
|
+
| "user"
|
|
1576
|
+
| "user-alt"
|
|
1577
|
+
| "user-alt-slash"
|
|
1578
|
+
| "user-astronaut"
|
|
1579
|
+
| "user-check"
|
|
1580
|
+
| "user-circle"
|
|
1581
|
+
| "user-clock"
|
|
1582
|
+
| "user-cog"
|
|
1583
|
+
| "user-edit"
|
|
1584
|
+
| "user-friends"
|
|
1585
|
+
| "user-graduate"
|
|
1586
|
+
| "user-injured"
|
|
1587
|
+
| "user-lock"
|
|
1588
|
+
| "user-md"
|
|
1589
|
+
| "user-minus"
|
|
1590
|
+
| "user-ninja"
|
|
1591
|
+
| "user-nurse"
|
|
1592
|
+
| "user-plus"
|
|
1593
|
+
| "user-secret"
|
|
1594
|
+
| "user-shield"
|
|
1595
|
+
| "user-slash"
|
|
1596
|
+
| "user-tag"
|
|
1597
|
+
| "user-tie"
|
|
1598
|
+
| "user-times"
|
|
1599
|
+
| "users"
|
|
1600
|
+
| "users-cog"
|
|
1601
|
+
| "users-slash"
|
|
1602
|
+
| "usps"
|
|
1603
|
+
| "ussunnah"
|
|
1604
|
+
| "utensil-spoon"
|
|
1605
|
+
| "utensils"
|
|
1606
|
+
| "vaadin"
|
|
1607
|
+
| "vector-square"
|
|
1608
|
+
| "venus"
|
|
1609
|
+
| "venus-double"
|
|
1610
|
+
| "venus-mars"
|
|
1611
|
+
| "vest"
|
|
1612
|
+
| "vest-patches"
|
|
1613
|
+
| "viacoin"
|
|
1614
|
+
| "viadeo"
|
|
1615
|
+
| "viadeo-square"
|
|
1616
|
+
| "vial"
|
|
1617
|
+
| "vials"
|
|
1618
|
+
| "viber"
|
|
1619
|
+
| "video"
|
|
1620
|
+
| "video-slash"
|
|
1621
|
+
| "vihara"
|
|
1622
|
+
| "vimeo"
|
|
1623
|
+
| "vimeo-square"
|
|
1624
|
+
| "vimeo-v"
|
|
1625
|
+
| "vine"
|
|
1626
|
+
| "virus"
|
|
1627
|
+
| "virus-slash"
|
|
1628
|
+
| "viruses"
|
|
1629
|
+
| "vk"
|
|
1630
|
+
| "vnv"
|
|
1631
|
+
| "voicemail"
|
|
1632
|
+
| "volleyball-ball"
|
|
1633
|
+
| "volume-down"
|
|
1634
|
+
| "volume-mute"
|
|
1635
|
+
| "volume-off"
|
|
1636
|
+
| "volume-up"
|
|
1637
|
+
| "vote-yea"
|
|
1638
|
+
| "vr-cardboard"
|
|
1639
|
+
| "vuejs"
|
|
1640
|
+
| "walking"
|
|
1641
|
+
| "wallet"
|
|
1642
|
+
| "warehouse"
|
|
1643
|
+
| "watchman-monitoring"
|
|
1644
|
+
| "water"
|
|
1645
|
+
| "wave-square"
|
|
1646
|
+
| "waze"
|
|
1647
|
+
| "weebly"
|
|
1648
|
+
| "weibo"
|
|
1649
|
+
| "weight"
|
|
1650
|
+
| "weight-hanging"
|
|
1651
|
+
| "weixin"
|
|
1652
|
+
| "whatsapp"
|
|
1653
|
+
| "whatsapp-square"
|
|
1654
|
+
| "wheelchair"
|
|
1655
|
+
| "whmcs"
|
|
1656
|
+
| "wifi"
|
|
1657
|
+
| "wikipedia-w"
|
|
1658
|
+
| "wind"
|
|
1659
|
+
| "window-close"
|
|
1660
|
+
| "window-maximize"
|
|
1661
|
+
| "window-minimize"
|
|
1662
|
+
| "window-restore"
|
|
1663
|
+
| "windows"
|
|
1664
|
+
| "wine-bottle"
|
|
1665
|
+
| "wine-glass"
|
|
1666
|
+
| "wine-glass-alt"
|
|
1667
|
+
| "wix"
|
|
1668
|
+
| "wizards-of-the-coast"
|
|
1669
|
+
| "wodu"
|
|
1670
|
+
| "wolf-pack-battalion"
|
|
1671
|
+
| "won-sign"
|
|
1672
|
+
| "wordpress"
|
|
1673
|
+
| "wordpress-simple"
|
|
1674
|
+
| "wpbeginner"
|
|
1675
|
+
| "wpexplorer"
|
|
1676
|
+
| "wpforms"
|
|
1677
|
+
| "wpressr"
|
|
1678
|
+
| "wrench"
|
|
1679
|
+
| "x-ray"
|
|
1680
|
+
| "xbox"
|
|
1681
|
+
| "xing"
|
|
1682
|
+
| "xing-square"
|
|
1683
|
+
| "y-combinator"
|
|
1684
|
+
| "yahoo"
|
|
1685
|
+
| "yammer"
|
|
1686
|
+
| "yandex"
|
|
1687
|
+
| "yandex-international"
|
|
1688
|
+
| "yarn"
|
|
1689
|
+
| "yelp"
|
|
1690
|
+
| "yen-sign"
|
|
1691
|
+
| "yin-yang"
|
|
1692
|
+
| "yoast"
|
|
1693
|
+
| "youtube"
|
|
1694
|
+
| "youtube-square"
|
|
1695
|
+
| "zhihu";
|
|
1696
|
+
|
|
1697
|
+
export type AlignContent = "start" | "end" | "center" | "between" | "around" | "stretch";
|
|
1698
|
+
export type AlignSelf = "auto" | "start" | "end" | "center" | "baseline" | "stretch";
|
|
1699
|
+
export type AlignItems = "start" | "end" | "center" | "baseline" | "stretch";
|
|
1700
|
+
export type JustifyContent = "start" | "end" | "center" | "between" | "around";
|
|
1701
|
+
|
|
1702
|
+
export type UnsignedUpTo12 = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
1703
|
+
export type SignedUpTo12 =
|
|
1704
|
+
| -12
|
|
1705
|
+
| -11
|
|
1706
|
+
| -10
|
|
1707
|
+
| -9
|
|
1708
|
+
| -8
|
|
1709
|
+
| -7
|
|
1710
|
+
| -6
|
|
1711
|
+
| -5
|
|
1712
|
+
| -4
|
|
1713
|
+
| -3
|
|
1714
|
+
| -2
|
|
1715
|
+
| -1
|
|
1716
|
+
| UnsignedUpTo12;
|
|
1717
|
+
export type Margin = SignedUpTo12 | "auto";
|
|
1718
|
+
export const SPACING = 4;
|
|
1719
|
+
|
|
1720
|
+
export type TextFieldType =
|
|
1721
|
+
| "date"
|
|
1722
|
+
| "datetime"
|
|
1723
|
+
| "decimal"
|
|
1724
|
+
| "decimalRange"
|
|
1725
|
+
| "email"
|
|
1726
|
+
| "height"
|
|
1727
|
+
| "password"
|
|
1728
|
+
| "phoneNumber"
|
|
1729
|
+
| "number"
|
|
1730
|
+
| "numberRange"
|
|
1731
|
+
| "search"
|
|
1732
|
+
| "text"
|
|
1733
|
+
| "time"
|
|
1734
|
+
| "url"
|
|
1735
|
+
| "username";
|
|
1736
|
+
|
|
1737
|
+
export type IconSize = "xs" | "sm" | "md" | "lg" | "xl";
|
|
1738
|
+
|
|
1739
|
+
export const iconSizeToNumber = (size?: IconSize) => {
|
|
1740
|
+
return {
|
|
1741
|
+
xs: 8,
|
|
1742
|
+
sm: 12,
|
|
1743
|
+
md: 14,
|
|
1744
|
+
lg: 20,
|
|
1745
|
+
xl: 26,
|
|
1746
|
+
}[size || "md"];
|
|
1747
|
+
};
|
|
1748
|
+
|
|
1749
|
+
export const iconNumberToSize = (size = 16): IconSize => {
|
|
1750
|
+
let iconSize: IconSize;
|
|
1751
|
+
if (size < 8) {
|
|
1752
|
+
iconSize = "xs";
|
|
1753
|
+
} else if (size < 12) {
|
|
1754
|
+
iconSize = "sm";
|
|
1755
|
+
} else if (size < 14) {
|
|
1756
|
+
iconSize = "md";
|
|
1757
|
+
} else if (size < 20) {
|
|
1758
|
+
iconSize = "lg";
|
|
1759
|
+
} else {
|
|
1760
|
+
iconSize = "xl";
|
|
1761
|
+
}
|
|
1762
|
+
return iconSize;
|
|
1763
|
+
};
|
|
1764
|
+
|
|
1765
|
+
export function getSectionColor(section: "Breakfast" | "Lunch" | "Dinner" | "Snack" | "workouts") {
|
|
1766
|
+
return ({
|
|
1767
|
+
Breakfast: "orchid",
|
|
1768
|
+
Lunch: "blue",
|
|
1769
|
+
Dinner: "orange",
|
|
1770
|
+
Snack: "red",
|
|
1771
|
+
"Second Snack": "red",
|
|
1772
|
+
Workout: "pine",
|
|
1773
|
+
workouts: "pine",
|
|
1774
|
+
}[section] || "blue") as Color;
|
|
1775
|
+
}
|
|
1776
|
+
|
|
1777
|
+
export type TextSize = "sm" | "md" | "lg";
|
|
1778
|
+
export type TextColor =
|
|
1779
|
+
| "blue"
|
|
1780
|
+
| "darkGray"
|
|
1781
|
+
| "eggplant"
|
|
1782
|
+
| "gray"
|
|
1783
|
+
| "green"
|
|
1784
|
+
| "lightGray"
|
|
1785
|
+
| "maroon"
|
|
1786
|
+
| "midnight"
|
|
1787
|
+
| "navy"
|
|
1788
|
+
| "olive"
|
|
1789
|
+
| "orange"
|
|
1790
|
+
| "orchid"
|
|
1791
|
+
| "pine"
|
|
1792
|
+
| "purple"
|
|
1793
|
+
| "red"
|
|
1794
|
+
| "watermelon"
|
|
1795
|
+
| "white"; // default "darkGray"
|
|
1796
|
+
|
|
1797
|
+
export type ButtonColor =
|
|
1798
|
+
| "blue"
|
|
1799
|
+
| "gray"
|
|
1800
|
+
| "red"
|
|
1801
|
+
// | "transparent"
|
|
1802
|
+
| "white"
|
|
1803
|
+
| "primary"
|
|
1804
|
+
| "secondary"
|
|
1805
|
+
| "accent"
|
|
1806
|
+
| "tertiary";
|
|
1807
|
+
// | "twitter"
|
|
1808
|
+
// | "facebook"
|
|
1809
|
+
// | "google";
|
|
1810
|
+
|
|
1811
|
+
export type IconPrefix = "far" | "fas";
|
|
1812
|
+
// | "ant"
|
|
1813
|
+
// | "entypo"
|
|
1814
|
+
// | "evil"
|
|
1815
|
+
// | "material"
|
|
1816
|
+
// | "material-community";
|
|
1817
|
+
// | "ionicon"
|
|
1818
|
+
// | "octicon"
|
|
1819
|
+
// | "zocial"
|
|
1820
|
+
// | "simple-line"
|
|
1821
|
+
// | "feather";
|
|
1822
|
+
|
|
1823
|
+
export interface ActionBannerProps {
|
|
1824
|
+
/** The text to show in the banner. */
|
|
1825
|
+
text: string;
|
|
1826
|
+
color?: AllColors;
|
|
1827
|
+
textColor?: TextColor;
|
|
1828
|
+
negativeXMargin?: number;
|
|
1829
|
+
onClick: () => void;
|
|
1830
|
+
shape?: Rounding;
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1833
|
+
export interface BlurBoxProps extends BoxProps {
|
|
1834
|
+
blurType?: "regular" | "dark" | "prominent";
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
export interface LayerProps {
|
|
1838
|
+
children: ReactChildren;
|
|
1839
|
+
}
|
|
1840
|
+
|
|
1841
|
+
export interface ModalProps {
|
|
1842
|
+
header?: React.ReactNode;
|
|
1843
|
+
accessibilityModalLabel: string;
|
|
1844
|
+
children?: ReactChildren;
|
|
1845
|
+
closeOnOutsideClick?: boolean;
|
|
1846
|
+
footer?: ReactChild;
|
|
1847
|
+
heading?: string | ReactChild;
|
|
1848
|
+
onDismiss: () => void;
|
|
1849
|
+
role?: "alertdialog" | "dialog";
|
|
1850
|
+
size?: "sm" | "md" | "lg" | number;
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
export interface BoxProps {
|
|
1854
|
+
alignContent?: AlignContent;
|
|
1855
|
+
alignItems?: AlignItems;
|
|
1856
|
+
alignSelf?: AlignSelf;
|
|
1857
|
+
bottom?: boolean;
|
|
1858
|
+
children?: ReactChildren;
|
|
1859
|
+
color?: BoxColor;
|
|
1860
|
+
column?: UnsignedUpTo12;
|
|
1861
|
+
smColumn?: UnsignedUpTo12;
|
|
1862
|
+
mdColumn?: UnsignedUpTo12;
|
|
1863
|
+
lgColumn?: UnsignedUpTo12;
|
|
1864
|
+
dangerouslySetInlineStyle?: {
|
|
1865
|
+
__style: {
|
|
1866
|
+
[key: string]: any;
|
|
1867
|
+
};
|
|
1868
|
+
};
|
|
1869
|
+
direction?: "row" | "column";
|
|
1870
|
+
smDirection?: "row" | "column";
|
|
1871
|
+
mdDirection?: "row" | "column";
|
|
1872
|
+
lgDirection?: "row" | "column";
|
|
1873
|
+
display?: "none" | "flex" | "block" | "inlineBlock" | "visuallyHidden";
|
|
1874
|
+
smDisplay?: "none" | "flex" | "block" | "inlineBlock" | "visuallyHidden";
|
|
1875
|
+
mdDisplay?: "none" | "flex" | "block" | "inlineBlock" | "visuallyHidden";
|
|
1876
|
+
lgDisplay?: "none" | "flex" | "block" | "inlineBlock" | "visuallyHidden";
|
|
1877
|
+
fit?: boolean;
|
|
1878
|
+
flex?: "grow" | "shrink" | "none";
|
|
1879
|
+
height?: number | string;
|
|
1880
|
+
justifyContent?: "start" | "end" | "center" | "between" | "around";
|
|
1881
|
+
left?: boolean;
|
|
1882
|
+
margin?: SignedUpTo12;
|
|
1883
|
+
smMargin?: SignedUpTo12;
|
|
1884
|
+
mdMargin?: SignedUpTo12;
|
|
1885
|
+
lgMargin?: SignedUpTo12;
|
|
1886
|
+
marginBottom?: SignedUpTo12;
|
|
1887
|
+
smMarginBottom?: SignedUpTo12;
|
|
1888
|
+
mdMarginBottom?: SignedUpTo12;
|
|
1889
|
+
lgMarginBottom?: SignedUpTo12;
|
|
1890
|
+
marginEnd?: SignedUpTo12;
|
|
1891
|
+
smMarginEnd?: SignedUpTo12;
|
|
1892
|
+
mdMarginEnd?: SignedUpTo12;
|
|
1893
|
+
lgMarginEnd?: SignedUpTo12;
|
|
1894
|
+
marginLeft?: SignedUpTo12;
|
|
1895
|
+
smMarginLeft?: SignedUpTo12;
|
|
1896
|
+
mdMarginLeft?: SignedUpTo12;
|
|
1897
|
+
lgMarginLeft?: SignedUpTo12;
|
|
1898
|
+
marginRight?: SignedUpTo12;
|
|
1899
|
+
smMarginRight?: SignedUpTo12;
|
|
1900
|
+
mdMarginRight?: SignedUpTo12;
|
|
1901
|
+
lgMarginRight?: SignedUpTo12;
|
|
1902
|
+
marginStart?: SignedUpTo12;
|
|
1903
|
+
smMarginStart?: SignedUpTo12;
|
|
1904
|
+
mdMarginStart?: SignedUpTo12;
|
|
1905
|
+
lgMarginStart?: SignedUpTo12;
|
|
1906
|
+
marginTop?: SignedUpTo12;
|
|
1907
|
+
smMarginTop?: SignedUpTo12;
|
|
1908
|
+
mdMarginTop?: SignedUpTo12;
|
|
1909
|
+
lgMarginTop?: SignedUpTo12;
|
|
1910
|
+
maxHeight?: number | string;
|
|
1911
|
+
maxWidth?: number | string;
|
|
1912
|
+
minHeight?: number | string;
|
|
1913
|
+
minWidth?: number | string;
|
|
1914
|
+
overflow?: "visible" | "hidden" | "scroll" | "scrollX" | "scrollY" | "auto";
|
|
1915
|
+
padding?: UnsignedUpTo12;
|
|
1916
|
+
smPadding?: UnsignedUpTo12;
|
|
1917
|
+
mdPadding?: UnsignedUpTo12;
|
|
1918
|
+
lgPadding?: UnsignedUpTo12;
|
|
1919
|
+
paddingX?: UnsignedUpTo12;
|
|
1920
|
+
smPaddingX?: UnsignedUpTo12;
|
|
1921
|
+
mdPaddingX?: UnsignedUpTo12;
|
|
1922
|
+
lgPaddingX?: UnsignedUpTo12;
|
|
1923
|
+
paddingY?: UnsignedUpTo12;
|
|
1924
|
+
smPaddingY?: UnsignedUpTo12;
|
|
1925
|
+
mdPaddingY?: UnsignedUpTo12;
|
|
1926
|
+
lgPaddingY?: UnsignedUpTo12;
|
|
1927
|
+
position?: "static" | "absolute" | "relative" | "fixed";
|
|
1928
|
+
right?: boolean;
|
|
1929
|
+
rounding?: "pill" | "circle" | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
1930
|
+
top?: boolean;
|
|
1931
|
+
width?: number | string;
|
|
1932
|
+
wrap?: boolean;
|
|
1933
|
+
zIndex?: number | "auto";
|
|
1934
|
+
|
|
1935
|
+
onClick?: () => void | Promise<void>;
|
|
1936
|
+
className?: string;
|
|
1937
|
+
style?: any;
|
|
1938
|
+
onHoverStart?: () => void | Promise<void>;
|
|
1939
|
+
onHoverEnd?: () => void | Promise<void>;
|
|
1940
|
+
scroll?: boolean;
|
|
1941
|
+
shadow?: boolean;
|
|
1942
|
+
border?: AllColors;
|
|
1943
|
+
borderBottom?: AllColors;
|
|
1944
|
+
borderTop?: AllColors;
|
|
1945
|
+
borderLeft?: AllColors;
|
|
1946
|
+
borderRight?: AllColors;
|
|
1947
|
+
|
|
1948
|
+
avoidKeyboard?: boolean;
|
|
1949
|
+
keyboardOffset?: number;
|
|
1950
|
+
scrollRef?: React.RefObject<any>;
|
|
1951
|
+
onScroll?: (offsetY: number) => void;
|
|
1952
|
+
onLayout?: (event: LayoutChangeEvent) => void;
|
|
1953
|
+
testID?: string;
|
|
1954
|
+
}
|
|
1955
|
+
|
|
1956
|
+
export type BoxColor = AllColors | "transparent";
|
|
1957
|
+
|
|
1958
|
+
export interface DrawerProps {
|
|
1959
|
+
animationOpenTime: number;
|
|
1960
|
+
animationCloseTime: number;
|
|
1961
|
+
direction: Direction;
|
|
1962
|
+
dismissWhenTouchOutside?: boolean;
|
|
1963
|
+
fadeOpacity?: number;
|
|
1964
|
+
drawerScreenWidth: number;
|
|
1965
|
+
drawerScreenHeight: number;
|
|
1966
|
+
style?: any;
|
|
1967
|
+
parent: any;
|
|
1968
|
+
dismiss?: any;
|
|
1969
|
+
}
|
|
1970
|
+
|
|
1971
|
+
export type DrawerDirection = "left" | "right" | "bottom" | "top";
|
|
1972
|
+
|
|
1973
|
+
export interface ErrorBoundaryProps {
|
|
1974
|
+
onError?: (error: Error, stack: any) => void;
|
|
1975
|
+
children?: ReactNode;
|
|
1976
|
+
}
|
|
1977
|
+
|
|
1978
|
+
export interface FaceBookButtonProps {
|
|
1979
|
+
errorMessageColor?: "red" | "white";
|
|
1980
|
+
signUp: boolean;
|
|
1981
|
+
}
|
|
1982
|
+
|
|
1983
|
+
export interface IconProps {
|
|
1984
|
+
prefix?: IconPrefix; // For support FA solid/regular/light/duotone, as well as other icon packs in the future.
|
|
1985
|
+
name: IconName;
|
|
1986
|
+
color?: AllColors;
|
|
1987
|
+
size?: IconSize;
|
|
1988
|
+
iconStyle?: any;
|
|
1989
|
+
containerStyle?: any;
|
|
1990
|
+
}
|
|
1991
|
+
|
|
1992
|
+
export interface NavigatorProps {
|
|
1993
|
+
config?: any;
|
|
1994
|
+
}
|
|
1995
|
+
|
|
1996
|
+
export type TooltipDirection = "top" | "bottom" | "left" | "right";
|
|
1997
|
+
|
|
1998
|
+
export type IndicatorDirection = "topLeft" | "topRight" | "bottomLeft" | "bottomRight";
|
|
1999
|
+
|
|
2000
|
+
export interface PillProps {
|
|
2001
|
+
text: string;
|
|
2002
|
+
color: AllColors;
|
|
2003
|
+
enabled?: boolean;
|
|
2004
|
+
onClick: (enabled: boolean) => void;
|
|
2005
|
+
}
|
|
2006
|
+
|
|
2007
|
+
export interface SegmentedControlProps {
|
|
2008
|
+
items: string[];
|
|
2009
|
+
onChange?: ({activeIndex}: {activeIndex: number | number[]}) => void;
|
|
2010
|
+
selectedItemIndex?: number;
|
|
2011
|
+
selectedItemIndexes?: number[];
|
|
2012
|
+
responsive?: boolean;
|
|
2013
|
+
size?: "md" | "lg"; // defaults to md
|
|
2014
|
+
multiselect?: boolean;
|
|
2015
|
+
selectLimit?: number;
|
|
2016
|
+
}
|
|
2017
|
+
|
|
2018
|
+
// Shared props for fields with labels, subtext, and error messages.
|
|
2019
|
+
export interface FieldWithLabelsProps {
|
|
2020
|
+
errorMessage?: string;
|
|
2021
|
+
errorMessageColor?: AllColors; // Default: red.
|
|
2022
|
+
label?: string;
|
|
2023
|
+
labelColor?: AllColors;
|
|
2024
|
+
helperText?: string;
|
|
2025
|
+
helperTextColor?: AllColors;
|
|
2026
|
+
children?: ReactChildren;
|
|
2027
|
+
}
|
|
2028
|
+
|
|
2029
|
+
export interface DateTimeFieldProps extends FieldWithLabelsProps {
|
|
2030
|
+
label?: string;
|
|
2031
|
+
mode: "date" | "time" | "datetime";
|
|
2032
|
+
value: Date;
|
|
2033
|
+
onChange: (date: Date) => void;
|
|
2034
|
+
dateFormat?: string;
|
|
2035
|
+
pickerType?: "default" | "compact" | "inline" | "spinner";
|
|
2036
|
+
}
|
|
2037
|
+
|
|
2038
|
+
export interface TextFieldProps extends FieldWithLabelsProps {
|
|
2039
|
+
innerRef?: any;
|
|
2040
|
+
id?: string;
|
|
2041
|
+
onChange: OnChangeCallback;
|
|
2042
|
+
autoComplete?: "current-password" | "on" | "off" | "username";
|
|
2043
|
+
disabled?: boolean;
|
|
2044
|
+
|
|
2045
|
+
idealErrorDirection?: Direction;
|
|
2046
|
+
name?: string;
|
|
2047
|
+
onBlur?: OnChangeCallback;
|
|
2048
|
+
onFocus?: OnChangeCallback;
|
|
2049
|
+
placeholder?: string;
|
|
2050
|
+
type?: TextFieldType;
|
|
2051
|
+
value?: string;
|
|
2052
|
+
style?: any;
|
|
2053
|
+
// If type === search, indicates whether to show the search icon or spinner
|
|
2054
|
+
searching?: boolean;
|
|
2055
|
+
|
|
2056
|
+
returnKeyType?: "done" | "go" | "next" | "search" | "send";
|
|
2057
|
+
|
|
2058
|
+
// TODO: still needed?
|
|
2059
|
+
autoFocus?: boolean;
|
|
2060
|
+
grow?: boolean;
|
|
2061
|
+
// react-native-autofocus
|
|
2062
|
+
inputRef?: any;
|
|
2063
|
+
onSubmitEditing?: any;
|
|
2064
|
+
onEnter?: any;
|
|
2065
|
+
// blurOnSubmit defaults to true
|
|
2066
|
+
// if blurOnSubmit is false and multiline is true, return will create a new line
|
|
2067
|
+
blurOnSubmit?: boolean;
|
|
2068
|
+
multiline?: boolean;
|
|
2069
|
+
rows?: number;
|
|
2070
|
+
height?: number;
|
|
2071
|
+
paddingX?: number;
|
|
2072
|
+
paddingY?: number;
|
|
2073
|
+
|
|
2074
|
+
// Required for type=numberRange
|
|
2075
|
+
min?: number;
|
|
2076
|
+
max?: number;
|
|
2077
|
+
}
|
|
2078
|
+
|
|
2079
|
+
export type TextAreaProps = TextFieldProps;
|
|
2080
|
+
|
|
2081
|
+
export interface SubmittingFormProps {
|
|
2082
|
+
onSubmitEditting: () => void;
|
|
2083
|
+
}
|
|
2084
|
+
|
|
2085
|
+
export interface SwitchProps extends FieldWithLabelsProps {
|
|
2086
|
+
id?: string;
|
|
2087
|
+
onChange: (value: boolean) => void;
|
|
2088
|
+
disabled?: boolean;
|
|
2089
|
+
name?: string;
|
|
2090
|
+
switched: boolean;
|
|
2091
|
+
// Pattern Addition
|
|
2092
|
+
label?: string;
|
|
2093
|
+
}
|
|
2094
|
+
|
|
2095
|
+
export interface SpinnerProps {
|
|
2096
|
+
size?: "sm" | "md";
|
|
2097
|
+
color?: Color;
|
|
2098
|
+
}
|
|
2099
|
+
|
|
2100
|
+
export interface MaskProps {
|
|
2101
|
+
children?: ReactChildren;
|
|
2102
|
+
shape?: "circle" | "rounded" | "square";
|
|
2103
|
+
height?: number | string;
|
|
2104
|
+
width?: number | string;
|
|
2105
|
+
maxHeight?: number | string;
|
|
2106
|
+
maxWidth?: number | string;
|
|
2107
|
+
rounding?: "circle" | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
2108
|
+
willChangeTransform?: boolean;
|
|
2109
|
+
wash?: boolean;
|
|
2110
|
+
}
|
|
2111
|
+
|
|
2112
|
+
export interface IconRowProps {
|
|
2113
|
+
icon: string;
|
|
2114
|
+
label: string;
|
|
2115
|
+
value: string;
|
|
2116
|
+
}
|
|
2117
|
+
|
|
2118
|
+
export interface LinkProps {
|
|
2119
|
+
href: string;
|
|
2120
|
+
inline?: boolean;
|
|
2121
|
+
children?: ReactChild;
|
|
2122
|
+
onClick?: () => void;
|
|
2123
|
+
target?: null | "blank";
|
|
2124
|
+
}
|
|
2125
|
+
|
|
2126
|
+
export type Rounding = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | "circle" | "pill";
|
|
2127
|
+
|
|
2128
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
2129
|
+
export interface HeadingProps {
|
|
2130
|
+
align?: "left" | "right" | "center" | "justify"; // default "left"
|
|
2131
|
+
children?: React.ReactNode;
|
|
2132
|
+
color?: AllColors;
|
|
2133
|
+
overflow?: "normal" | "breakWord"; // default "breakWord"
|
|
2134
|
+
size?: "sm" | "md" | "lg";
|
|
2135
|
+
truncate?: boolean; // default false
|
|
2136
|
+
}
|
|
2137
|
+
|
|
2138
|
+
export interface MetaProps {
|
|
2139
|
+
itemProp?: string;
|
|
2140
|
+
content?: string;
|
|
2141
|
+
itemType?: string;
|
|
2142
|
+
key?: string;
|
|
2143
|
+
property?: string;
|
|
2144
|
+
children?: ReactNode;
|
|
2145
|
+
}
|
|
2146
|
+
|
|
2147
|
+
export interface ImageProps {
|
|
2148
|
+
alt?: string;
|
|
2149
|
+
color: BoxColor;
|
|
2150
|
+
naturalHeight?: number;
|
|
2151
|
+
naturalWidth?: number;
|
|
2152
|
+
maxWidth?: number;
|
|
2153
|
+
maxHeight?: number;
|
|
2154
|
+
src: string;
|
|
2155
|
+
children?: ReactChildren;
|
|
2156
|
+
fit?: "cover" | "contain" | "none";
|
|
2157
|
+
onError?: () => void;
|
|
2158
|
+
onLoad?: () => void;
|
|
2159
|
+
size?: string;
|
|
2160
|
+
srcSet?: string;
|
|
2161
|
+
fullWidth?: boolean;
|
|
2162
|
+
style?: any;
|
|
2163
|
+
}
|
|
2164
|
+
|
|
2165
|
+
export interface SearchButtonProps {
|
|
2166
|
+
color: ButtonColor;
|
|
2167
|
+
onClick: () => void;
|
|
2168
|
+
}
|
|
2169
|
+
|
|
2170
|
+
export interface BackButtonInterface {
|
|
2171
|
+
onBack: () => void;
|
|
2172
|
+
}
|
|
2173
|
+
|
|
2174
|
+
export interface CheckBoxProps {
|
|
2175
|
+
onChange: ({value}: {value: boolean}) => void;
|
|
2176
|
+
checked?: boolean;
|
|
2177
|
+
disabled?: boolean;
|
|
2178
|
+
hasError?: boolean;
|
|
2179
|
+
indeterminate?: boolean;
|
|
2180
|
+
name?: string;
|
|
2181
|
+
onClick?: any;
|
|
2182
|
+
size?: "sm" | "md";
|
|
2183
|
+
color?: AllColors;
|
|
2184
|
+
radio?: boolean;
|
|
2185
|
+
|
|
2186
|
+
label?: string;
|
|
2187
|
+
subLabel?: string;
|
|
2188
|
+
labelColor?: AllColors;
|
|
2189
|
+
}
|
|
2190
|
+
|
|
2191
|
+
export interface BodyProps {
|
|
2192
|
+
scroll?: boolean;
|
|
2193
|
+
loading?: boolean;
|
|
2194
|
+
useBox?: boolean; // defaults false
|
|
2195
|
+
style?: any;
|
|
2196
|
+
padding?: UnsignedUpTo12;
|
|
2197
|
+
height?: number | string;
|
|
2198
|
+
avoidKeyboard?: boolean; // default true
|
|
2199
|
+
children?: ReactNode;
|
|
2200
|
+
}
|
|
2201
|
+
|
|
2202
|
+
export interface ChatPaneProps {
|
|
2203
|
+
messagesView: any;
|
|
2204
|
+
textFormView: any;
|
|
2205
|
+
ref: any;
|
|
2206
|
+
}
|
|
2207
|
+
|
|
2208
|
+
export interface ScrollViewProps {
|
|
2209
|
+
scrollTo?: (
|
|
2210
|
+
y?: number | {x?: number; y?: number; animated?: boolean},
|
|
2211
|
+
x?: number,
|
|
2212
|
+
animated?: boolean
|
|
2213
|
+
) => void;
|
|
2214
|
+
/**
|
|
2215
|
+
* These styles will be applied to the scroll view content container which
|
|
2216
|
+
* wraps all of the child views. Example:
|
|
2217
|
+
*
|
|
2218
|
+
* return (
|
|
2219
|
+
* <ScrollView contentContainerStyle={styles.contentContainer}>
|
|
2220
|
+
* </ScrollView>
|
|
2221
|
+
* );
|
|
2222
|
+
* ...
|
|
2223
|
+
* const styles = StyleSheet.create({
|
|
2224
|
+
* contentContainer: {
|
|
2225
|
+
* paddingVertical: 20
|
|
2226
|
+
* }
|
|
2227
|
+
* });
|
|
2228
|
+
*/
|
|
2229
|
+
contentContainerStyle?: any;
|
|
2230
|
+
|
|
2231
|
+
/**
|
|
2232
|
+
* When true the scroll view's children are arranged horizontally in a row
|
|
2233
|
+
* instead of vertically in a column. The default value is false.
|
|
2234
|
+
*/
|
|
2235
|
+
horizontal?: boolean | null;
|
|
2236
|
+
|
|
2237
|
+
/**
|
|
2238
|
+
* If sticky headers should stick at the bottom instead of the top of the
|
|
2239
|
+
* ScrollView. This is usually used with inverted ScrollViews.
|
|
2240
|
+
*/
|
|
2241
|
+
// invertStickyHeaders?: boolean;
|
|
2242
|
+
|
|
2243
|
+
/**
|
|
2244
|
+
* Determines whether the keyboard gets dismissed in response to a drag.
|
|
2245
|
+
* - 'none' (the default) drags do not dismiss the keyboard.
|
|
2246
|
+
* - 'onDrag' the keyboard is dismissed when a drag begins.
|
|
2247
|
+
* - 'interactive' the keyboard is dismissed interactively with the drag
|
|
2248
|
+
* and moves in synchrony with the touch; dragging upwards cancels the
|
|
2249
|
+
* dismissal.
|
|
2250
|
+
*/
|
|
2251
|
+
// keyboardDismissMode?: "none" | "interactive" | "on-drag";
|
|
2252
|
+
|
|
2253
|
+
/**
|
|
2254
|
+
* Determines when the keyboard should stay visible after a tap.
|
|
2255
|
+
* - 'never' (the default), tapping outside of the focused text input when the keyboard is up dismisses the keyboard. When this happens, children won't receive the tap.
|
|
2256
|
+
* - 'always', the keyboard will not dismiss automatically, and the scroll view will not catch taps, but children of the scroll view can catch taps.
|
|
2257
|
+
* - 'handled', the keyboard will not dismiss automatically when the tap was handled by a children, (or captured by an ancestor).
|
|
2258
|
+
* - false, deprecated, use 'never' instead
|
|
2259
|
+
* - true, deprecated, use 'always' instead
|
|
2260
|
+
*/
|
|
2261
|
+
keyboardShouldPersistTaps?: boolean | "always" | "never" | "handled";
|
|
2262
|
+
|
|
2263
|
+
/**
|
|
2264
|
+
* Called when scrollable content view of the ScrollView changes.
|
|
2265
|
+
* Handler function is passed the content width and content height as parameters: (contentWidth, contentHeight)
|
|
2266
|
+
* It's implemented using onLayout handler attached to the content container which this ScrollView renders.
|
|
2267
|
+
*
|
|
2268
|
+
*/
|
|
2269
|
+
// onContentSizeChange?: (w: number, h: number) => void;
|
|
2270
|
+
|
|
2271
|
+
/**
|
|
2272
|
+
* Fires at most once per frame during scrolling.
|
|
2273
|
+
* The frequency of the events can be contolled using the scrollEventThrottle prop.
|
|
2274
|
+
*/
|
|
2275
|
+
onScroll?: (event: any) => void;
|
|
2276
|
+
|
|
2277
|
+
/**
|
|
2278
|
+
* Fires if a user initiates a scroll gesture.
|
|
2279
|
+
*/
|
|
2280
|
+
// onScrollBeginDrag?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
|
|
2281
|
+
|
|
2282
|
+
/**
|
|
2283
|
+
* Fires when a user has finished scrolling.
|
|
2284
|
+
*/
|
|
2285
|
+
// onScrollEndDrag?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
|
|
2286
|
+
|
|
2287
|
+
/**
|
|
2288
|
+
* Fires when scroll view has finished moving
|
|
2289
|
+
*/
|
|
2290
|
+
// onMomentumScrollEnd?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
|
|
2291
|
+
|
|
2292
|
+
/**
|
|
2293
|
+
* Fires when scroll view has begun moving
|
|
2294
|
+
*/
|
|
2295
|
+
// onMomentumScrollBegin?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
|
|
2296
|
+
|
|
2297
|
+
/**
|
|
2298
|
+
* When true the scroll view stops on multiples of the scroll view's size
|
|
2299
|
+
* when scrolling. This can be used for horizontal pagination. The default
|
|
2300
|
+
* value is false.
|
|
2301
|
+
*/
|
|
2302
|
+
// pagingEnabled?: boolean;
|
|
2303
|
+
|
|
2304
|
+
/**
|
|
2305
|
+
* When false, the content does not scroll. The default value is true
|
|
2306
|
+
*/
|
|
2307
|
+
// scrollEnabled?: boolean; // true
|
|
2308
|
+
|
|
2309
|
+
/**
|
|
2310
|
+
* Experimental: When true offscreen child views (whose `overflow` value is
|
|
2311
|
+
* `hidden`) are removed from their native backing superview when offscreen.
|
|
2312
|
+
* This canimprove scrolling performance on long lists. The default value is
|
|
2313
|
+
* false.
|
|
2314
|
+
*/
|
|
2315
|
+
// removeClippedSubviews?: boolean;
|
|
2316
|
+
|
|
2317
|
+
/**
|
|
2318
|
+
* When true, shows a horizontal scroll indicator.
|
|
2319
|
+
*/
|
|
2320
|
+
// showsHorizontalScrollIndicator?: boolean;
|
|
2321
|
+
|
|
2322
|
+
/**
|
|
2323
|
+
* When true, shows a vertical scroll indicator.
|
|
2324
|
+
*/
|
|
2325
|
+
// showsVerticalScrollIndicator?: boolean;
|
|
2326
|
+
|
|
2327
|
+
/**
|
|
2328
|
+
* Style
|
|
2329
|
+
*/
|
|
2330
|
+
style?: any;
|
|
2331
|
+
|
|
2332
|
+
/**
|
|
2333
|
+
* A RefreshControl component, used to provide pull-to-refresh
|
|
2334
|
+
* functionality for the ScrollView.
|
|
2335
|
+
*/
|
|
2336
|
+
// refreshControl?: React.ReactElement<RefreshControlProps>;
|
|
2337
|
+
|
|
2338
|
+
/**
|
|
2339
|
+
* When `snapToInterval` is set, `snapToAlignment` will define the relationship of the the snapping to the scroll view.
|
|
2340
|
+
* - `start` (the default) will align the snap at the left (horizontal) or top (vertical)
|
|
2341
|
+
* - `center` will align the snap in the center
|
|
2342
|
+
* - `end` will align the snap at the right (horizontal) or bottom (vertical)
|
|
2343
|
+
*/
|
|
2344
|
+
// snapToAlignment?: "start" | "center" | "end";
|
|
2345
|
+
|
|
2346
|
+
/**
|
|
2347
|
+
* When set, causes the scroll view to stop at multiples of the value of `snapToInterval`.
|
|
2348
|
+
* This can be used for paginating through children that have lengths smaller than the scroll view.
|
|
2349
|
+
* Used in combination with `snapToAlignment` and `decelerationRate="fast"`. Overrides less
|
|
2350
|
+
* configurable `pagingEnabled` prop.
|
|
2351
|
+
*/
|
|
2352
|
+
// snapToInterval?: number;
|
|
2353
|
+
|
|
2354
|
+
/**
|
|
2355
|
+
* When set, causes the scroll view to stop at the defined offsets. This can be used for
|
|
2356
|
+
* paginating through variously sized children that have lengths smaller than the scroll view.
|
|
2357
|
+
* Typically used in combination with `decelerationRate="fast"`. Overrides less configurable
|
|
2358
|
+
* `pagingEnabled` and `snapToInterval` props.
|
|
2359
|
+
*/
|
|
2360
|
+
// snapToOffsets?: number[];
|
|
2361
|
+
|
|
2362
|
+
/**
|
|
2363
|
+
* Use in conjuction with `snapToOffsets`. By default, the beginning of the list counts as a
|
|
2364
|
+
* snap offset. Set `snapToStart` to false to disable this behavior and allow the list to scroll
|
|
2365
|
+
* freely between its start and the first `snapToOffsets` offset. The default value is true.
|
|
2366
|
+
*/
|
|
2367
|
+
// snapToStart?: boolean;
|
|
2368
|
+
|
|
2369
|
+
/**
|
|
2370
|
+
* Use in conjuction with `snapToOffsets`. By default, the end of the list counts as a snap
|
|
2371
|
+
* offset. Set `snapToEnd` to false to disable this behavior and allow the list to scroll freely
|
|
2372
|
+
* between its end and the last `snapToOffsets` offset. The default value is true.
|
|
2373
|
+
*/
|
|
2374
|
+
// snapToEnd?: boolean;
|
|
2375
|
+
|
|
2376
|
+
/**
|
|
2377
|
+
* When true, the scroll view stops on the next index (in relation to scroll position at release)
|
|
2378
|
+
* regardless of how fast the gesture is. This can be used for horizontal pagination when the page
|
|
2379
|
+
* is less than the width of the ScrollView. The default value is false.
|
|
2380
|
+
*/
|
|
2381
|
+
// disableIntervalMomentum?: boolean;
|
|
2382
|
+
|
|
2383
|
+
/**
|
|
2384
|
+
* When true, the default JS pan responder on the ScrollView is disabled, and full control over
|
|
2385
|
+
* touches inside the ScrollView is left to its child components. This is particularly useful
|
|
2386
|
+
* if `snapToInterval` is enabled, since it does not follow typical touch patterns. Do not use
|
|
2387
|
+
* this on regular ScrollView use cases without `snapToInterval` as it may cause unexpected
|
|
2388
|
+
* touches to occur while scrolling. The default value is false.
|
|
2389
|
+
*/
|
|
2390
|
+
// disableScrollViewPanResponder?: boolean;
|
|
2391
|
+
// scrollToEnd(options?: {animated: boolean}): void;
|
|
2392
|
+
// getScrollResponder(): JSX.Element;
|
|
2393
|
+
// getScrollableNode(): any;
|
|
2394
|
+
}
|
|
2395
|
+
|
|
2396
|
+
type ItemT = any;
|
|
2397
|
+
type ViewStyle = any;
|
|
2398
|
+
export interface StyleProp {
|
|
2399
|
+
[key: string]: any;
|
|
2400
|
+
}
|
|
2401
|
+
|
|
2402
|
+
interface LayoutRectangle {
|
|
2403
|
+
x: number;
|
|
2404
|
+
y: number;
|
|
2405
|
+
width: number;
|
|
2406
|
+
height: number;
|
|
2407
|
+
}
|
|
2408
|
+
|
|
2409
|
+
interface LayoutChangeEvent {
|
|
2410
|
+
nativeEvent: {
|
|
2411
|
+
layout: LayoutRectangle;
|
|
2412
|
+
};
|
|
2413
|
+
}
|
|
2414
|
+
|
|
2415
|
+
interface RenderItemData {
|
|
2416
|
+
item: any;
|
|
2417
|
+
index: number;
|
|
2418
|
+
}
|
|
2419
|
+
|
|
2420
|
+
export interface FlatListProps extends ScrollViewProps {
|
|
2421
|
+
/**
|
|
2422
|
+
* Rendered in between each item, but not at the top or bottom
|
|
2423
|
+
*/
|
|
2424
|
+
ItemSeparatorComponent?: React.ComponentType<any> | null;
|
|
2425
|
+
|
|
2426
|
+
/**
|
|
2427
|
+
* Rendered when the list is empty.
|
|
2428
|
+
*/
|
|
2429
|
+
ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null;
|
|
2430
|
+
|
|
2431
|
+
/**
|
|
2432
|
+
* Rendered at the very end of the list.
|
|
2433
|
+
*/
|
|
2434
|
+
ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null;
|
|
2435
|
+
|
|
2436
|
+
/**
|
|
2437
|
+
* Styling for internal View for ListFooterComponent
|
|
2438
|
+
*/
|
|
2439
|
+
ListFooterComponentStyle?: ViewStyle | null;
|
|
2440
|
+
|
|
2441
|
+
/**
|
|
2442
|
+
* Rendered at the very beginning of the list.
|
|
2443
|
+
*/
|
|
2444
|
+
ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null;
|
|
2445
|
+
|
|
2446
|
+
/**
|
|
2447
|
+
* Styling for internal View for ListHeaderComponent
|
|
2448
|
+
*/
|
|
2449
|
+
ListHeaderComponentStyle?: ViewStyle | null;
|
|
2450
|
+
|
|
2451
|
+
/**
|
|
2452
|
+
* Optional custom style for multi-item rows generated when numColumns > 1
|
|
2453
|
+
*/
|
|
2454
|
+
columnWrapperStyle?: StyleProp;
|
|
2455
|
+
|
|
2456
|
+
/**
|
|
2457
|
+
* Determines when the keyboard should stay visible after a tap.
|
|
2458
|
+
* - 'never' (the default), tapping outside of the focused text input when the keyboard is up dismisses the keyboard. When this happens, children won't receive the tap.
|
|
2459
|
+
* - 'always', the keyboard will not dismiss automatically, and the scroll view will not catch taps, but children of the scroll view can catch taps.
|
|
2460
|
+
* - 'handled', the keyboard will not dismiss automatically when the tap was handled by a children, (or captured by an ancestor).
|
|
2461
|
+
* - false, deprecated, use 'never' instead
|
|
2462
|
+
* - true, deprecated, use 'always' instead
|
|
2463
|
+
*/
|
|
2464
|
+
keyboardShouldPersistTaps?: boolean | "always" | "never" | "handled";
|
|
2465
|
+
|
|
2466
|
+
/**
|
|
2467
|
+
* Multiple columns can only be rendered with `horizontal={false}` and will zig-zag like a `flexWrap` layout.
|
|
2468
|
+
* Items should all be the same height - masonry layouts are not supported.
|
|
2469
|
+
*/
|
|
2470
|
+
numColumns?: number;
|
|
2471
|
+
|
|
2472
|
+
/**
|
|
2473
|
+
* The default accessor functions assume this is an Array<{key: string}> but you can override
|
|
2474
|
+
* getItem, getItemCount, and keyExtractor to handle any type of index-based data.
|
|
2475
|
+
*/
|
|
2476
|
+
data?: any;
|
|
2477
|
+
|
|
2478
|
+
/**
|
|
2479
|
+
* `debug` will turn on extra logging and visual overlays to aid with debugging both usage and
|
|
2480
|
+
* implementation, but with a significant perf hit.
|
|
2481
|
+
*/
|
|
2482
|
+
debug?: boolean;
|
|
2483
|
+
|
|
2484
|
+
/**
|
|
2485
|
+
* DEPRECATED: Virtualization provides significant performance and memory optimizations, but fully
|
|
2486
|
+
* unmounts react instances that are outside of the render window. You should only need to disable
|
|
2487
|
+
* this for debugging purposes.
|
|
2488
|
+
*/
|
|
2489
|
+
disableVirtualization?: boolean;
|
|
2490
|
+
|
|
2491
|
+
/**
|
|
2492
|
+
* A marker property for telling the list to re-render (since it implements `PureComponent`). If
|
|
2493
|
+
* any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the
|
|
2494
|
+
* `data` prop, stick it here and treat it immutably.
|
|
2495
|
+
*/
|
|
2496
|
+
extraData?: any;
|
|
2497
|
+
|
|
2498
|
+
/**
|
|
2499
|
+
* A generic accessor for extracting an item from any sort of data blob.
|
|
2500
|
+
*/
|
|
2501
|
+
getItem?: (data: any, index: number) => ItemT;
|
|
2502
|
+
|
|
2503
|
+
/**
|
|
2504
|
+
* Determines how many items are in the data blob.
|
|
2505
|
+
*/
|
|
2506
|
+
getItemCount?: (data: any) => number;
|
|
2507
|
+
|
|
2508
|
+
getItemLayout?: (
|
|
2509
|
+
data: any,
|
|
2510
|
+
index: number
|
|
2511
|
+
) => {
|
|
2512
|
+
length: number;
|
|
2513
|
+
offset: number;
|
|
2514
|
+
index: number;
|
|
2515
|
+
};
|
|
2516
|
+
|
|
2517
|
+
horizontal?: boolean | null;
|
|
2518
|
+
|
|
2519
|
+
/**
|
|
2520
|
+
* How many items to render in the initial batch. This should be enough to fill the screen but not
|
|
2521
|
+
* much more. Note these items will never be unmounted as part of the windowed rendering in order
|
|
2522
|
+
* to improve perceived performance of scroll-to-top actions.
|
|
2523
|
+
*/
|
|
2524
|
+
initialNumToRender?: number;
|
|
2525
|
+
|
|
2526
|
+
/**
|
|
2527
|
+
* Instead of starting at the top with the first item, start at `initialScrollIndex`. This
|
|
2528
|
+
* disables the "scroll to top" optimization that keeps the first `initialNumToRender` items
|
|
2529
|
+
* always rendered and immediately renders the items starting at this initial index. Requires
|
|
2530
|
+
* `getItemLayout` to be implemented.
|
|
2531
|
+
*/
|
|
2532
|
+
initialScrollIndex?: number | null;
|
|
2533
|
+
|
|
2534
|
+
/**
|
|
2535
|
+
* Reverses the direction of scroll. Uses scale transforms of -1.
|
|
2536
|
+
*/
|
|
2537
|
+
inverted?: boolean | null;
|
|
2538
|
+
|
|
2539
|
+
keyExtractor?: (item: ItemT, index: number) => string;
|
|
2540
|
+
|
|
2541
|
+
listKey?: string;
|
|
2542
|
+
|
|
2543
|
+
/**
|
|
2544
|
+
* The maximum number of items to render in each incremental render batch. The more rendered at
|
|
2545
|
+
* once, the better the fill rate, but responsiveness my suffer because rendering content may
|
|
2546
|
+
* interfere with responding to button taps or other interactions.
|
|
2547
|
+
*/
|
|
2548
|
+
maxToRenderPerBatch?: number;
|
|
2549
|
+
|
|
2550
|
+
onEndReached?: ((info: {distanceFromEnd: number}) => void) | null;
|
|
2551
|
+
|
|
2552
|
+
onEndReachedThreshold?: number | null;
|
|
2553
|
+
|
|
2554
|
+
onLayout?: (event: LayoutChangeEvent) => void;
|
|
2555
|
+
|
|
2556
|
+
/**
|
|
2557
|
+
* If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality. Make
|
|
2558
|
+
* sure to also set the `refreshing` prop correctly.
|
|
2559
|
+
*/
|
|
2560
|
+
onRefresh?: (() => void) | null;
|
|
2561
|
+
|
|
2562
|
+
/**
|
|
2563
|
+
* Used to handle failures when scrolling to an index that has not been measured yet.
|
|
2564
|
+
* Recommended action is to either compute your own offset and `scrollTo` it, or scroll as far
|
|
2565
|
+
* as possible and then try again after more items have been rendered.
|
|
2566
|
+
*/
|
|
2567
|
+
onScrollToIndexFailed?: (info: {
|
|
2568
|
+
index: number;
|
|
2569
|
+
highestMeasuredFrameIndex: number;
|
|
2570
|
+
averageItemLength: number;
|
|
2571
|
+
}) => void;
|
|
2572
|
+
|
|
2573
|
+
/**
|
|
2574
|
+
* Called when the viewability of rows changes, as defined by the
|
|
2575
|
+
* `viewabilityConfig` prop.
|
|
2576
|
+
*/
|
|
2577
|
+
onViewableItemsChanged?: ((info: {viewableItems: any[]; changed: any[]}) => void) | null;
|
|
2578
|
+
|
|
2579
|
+
/**
|
|
2580
|
+
* Set this when offset is needed for the loading indicator to show correctly.
|
|
2581
|
+
* @platform android
|
|
2582
|
+
*/
|
|
2583
|
+
progressViewOffset?: number;
|
|
2584
|
+
|
|
2585
|
+
/**
|
|
2586
|
+
* Set this true while waiting for new data from a refresh.
|
|
2587
|
+
*/
|
|
2588
|
+
refreshing?: boolean | null;
|
|
2589
|
+
|
|
2590
|
+
/**
|
|
2591
|
+
* Note: may have bugs (missing content) in some circumstances - use at your own risk.
|
|
2592
|
+
*
|
|
2593
|
+
* This may improve scroll performance for large lists.
|
|
2594
|
+
*/
|
|
2595
|
+
removeClippedSubviews?: boolean;
|
|
2596
|
+
|
|
2597
|
+
/**
|
|
2598
|
+
* Render a custom scroll component, e.g. with a differently styled `RefreshControl`.
|
|
2599
|
+
*/
|
|
2600
|
+
renderScrollComponent?: (props: ScrollViewProps) => React.ReactElement<ScrollViewProps>;
|
|
2601
|
+
|
|
2602
|
+
/**
|
|
2603
|
+
* Amount of time between low-pri item render batches, e.g. for rendering items quite a ways off
|
|
2604
|
+
* screen. Similar fill rate/responsiveness tradeoff as `maxToRenderPerBatch`.
|
|
2605
|
+
*/
|
|
2606
|
+
updateCellsBatchingPeriod?: number;
|
|
2607
|
+
|
|
2608
|
+
viewabilityConfig?: any;
|
|
2609
|
+
|
|
2610
|
+
viewabilityConfigCallbackPairs?: any;
|
|
2611
|
+
|
|
2612
|
+
/**
|
|
2613
|
+
* Determines the maximum number of items rendered outside of the visible area, in units of
|
|
2614
|
+
* visible lengths. So if your list fills the screen, then `windowSize={21}` (the default) will
|
|
2615
|
+
* render the visible screen area plus up to 10 screens above and 10 below the viewport. Reducing
|
|
2616
|
+
* this number will reduce memory consumption and may improve performance, but will increase the
|
|
2617
|
+
* chance that fast scrolling may reveal momentary blank areas of unrendered content.
|
|
2618
|
+
*/
|
|
2619
|
+
windowSize?: number;
|
|
2620
|
+
|
|
2621
|
+
renderItem: (info: RenderItemData) => React.ReactElement | null;
|
|
2622
|
+
}
|
|
2623
|
+
|
|
2624
|
+
export interface PickerProps {
|
|
2625
|
+
onValueChange?: (itemValue: any, itemPosition: number) => void;
|
|
2626
|
+
selectedValue?: any;
|
|
2627
|
+
style?: StyleProp;
|
|
2628
|
+
testID?: string;
|
|
2629
|
+
itemStyle?: StyleProp;
|
|
2630
|
+
enabled?: boolean;
|
|
2631
|
+
mode?: "dialog" | "dropdown";
|
|
2632
|
+
prompt?: string;
|
|
2633
|
+
}
|
|
2634
|
+
|
|
2635
|
+
export interface SplitPageProps {
|
|
2636
|
+
/**
|
|
2637
|
+
* can accept either one React Child or any array of ReactChild. If this is not provided,
|
|
2638
|
+
* renderContent must return one or many ReactChild.
|
|
2639
|
+
*/
|
|
2640
|
+
children?: ReactChild | ReactChild[] | null;
|
|
2641
|
+
/**
|
|
2642
|
+
* The names of the tabs that will be generated per ReactChild provided. Tabs will not be generated if renderContent is provided in place of children
|
|
2643
|
+
*/
|
|
2644
|
+
tabs?: string[];
|
|
2645
|
+
// The select limit for the number of tabs that can be selected
|
|
2646
|
+
selectLimit?: number;
|
|
2647
|
+
// Provide in mobile if you have a bottomTabBar so that split page can adjust accordingly
|
|
2648
|
+
bottomNavBarHeight?: number;
|
|
2649
|
+
// boolean to initiate and handle state from the app that has imported ferns-ui
|
|
2650
|
+
showItemList?: boolean;
|
|
2651
|
+
loading?: boolean;
|
|
2652
|
+
color?: Color;
|
|
2653
|
+
keyboardOffset?: number;
|
|
2654
|
+
renderListViewItem: (itemInfo: ListRenderItemInfo<any>) => ReactElement | null;
|
|
2655
|
+
renderListViewHeader?: () => ReactElement | null;
|
|
2656
|
+
renderContent?: (index?: number) => ReactElement | ReactElement[] | null;
|
|
2657
|
+
listViewData: any[];
|
|
2658
|
+
listViewExtraData?: any;
|
|
2659
|
+
listViewWidth?: number;
|
|
2660
|
+
renderChild?: () => ReactChild;
|
|
2661
|
+
onSelectionChange?: (value?: any) => void | Promise<void>;
|
|
2662
|
+
}
|
|
2663
|
+
|
|
2664
|
+
export type LogLevel = "fatal" | "error" | "warning" | "info" | "debug" | "critical";
|
|
2665
|
+
export type PermissionKind =
|
|
2666
|
+
| "location"
|
|
2667
|
+
| "locationAlways"
|
|
2668
|
+
| "camera"
|
|
2669
|
+
| "microphone"
|
|
2670
|
+
| "photo"
|
|
2671
|
+
| "contacts"
|
|
2672
|
+
| "event"
|
|
2673
|
+
| "reminder"
|
|
2674
|
+
| "bluetooth"
|
|
2675
|
+
| "notification"
|
|
2676
|
+
| "backgroundRefresh"
|
|
2677
|
+
| "speechRecognition"
|
|
2678
|
+
| "mediaLibrary"
|
|
2679
|
+
| "motion";
|
|
2680
|
+
export type PermissionStatus =
|
|
2681
|
+
| "authorized"
|
|
2682
|
+
| "denied"
|
|
2683
|
+
| "softDenied"
|
|
2684
|
+
| "restricted"
|
|
2685
|
+
| "undetermined";
|
|
2686
|
+
|
|
2687
|
+
export interface TrackingProperties {
|
|
2688
|
+
[name: string]: any;
|
|
2689
|
+
}
|
|
2690
|
+
|
|
2691
|
+
export function isTestUser(profile?: BaseProfile) {
|
|
2692
|
+
return (
|
|
2693
|
+
profile &&
|
|
2694
|
+
profile.email &&
|
|
2695
|
+
(profile.email.indexOf("nang.io") > -1 || profile.email.indexOf("example.com") > -1)
|
|
2696
|
+
);
|
|
2697
|
+
}
|
|
2698
|
+
|
|
2699
|
+
export interface TrackerInterface {
|
|
2700
|
+
initFinished: boolean;
|
|
2701
|
+
init: (config: TrackingConfig) => void;
|
|
2702
|
+
trackPages: () => void;
|
|
2703
|
+
setUser: (user: BaseProfile) => void;
|
|
2704
|
+
setUserProperty: (property: string, value: string | {object: {[id: string]: any}}) => void;
|
|
2705
|
+
track: (eventName: string, properties?: TrackingProperties) => void;
|
|
2706
|
+
trackNavigation: (screen: string, properties?: TrackingProperties) => void;
|
|
2707
|
+
trackLogin: (method: string, success: boolean, properties?: TrackingProperties) => void;
|
|
2708
|
+
trackSignup: (method: string, success: boolean, properties?: TrackingProperties) => void;
|
|
2709
|
+
trackSignOut: () => void;
|
|
2710
|
+
log: (message: string, properties?: TrackingProperties, level?: LogLevel) => void;
|
|
2711
|
+
error: (message: string, properties?: TrackingProperties) => void;
|
|
2712
|
+
warn: (message: string, properties?: TrackingProperties) => void;
|
|
2713
|
+
debug: (message: string, properties?: TrackingProperties) => void;
|
|
2714
|
+
handleErrorAlert: (text: string, exception?: Error, showAlert?: boolean) => void;
|
|
2715
|
+
trackPermission: (kind: PermissionKind, status: PermissionStatus, requested: boolean) => void;
|
|
2716
|
+
updateAppInfo: () => void;
|
|
2717
|
+
}
|
|
2718
|
+
|
|
2719
|
+
export interface NavConfig {
|
|
2720
|
+
url?: string;
|
|
2721
|
+
wrapper?: (component: any) => any;
|
|
2722
|
+
store?: any;
|
|
2723
|
+
provider?: any;
|
|
2724
|
+
}
|
|
2725
|
+
|
|
2726
|
+
export interface ProgressBarProps {
|
|
2727
|
+
color: Color;
|
|
2728
|
+
completed: number;
|
|
2729
|
+
}
|
|
2730
|
+
|
|
2731
|
+
export interface AddressInterface {
|
|
2732
|
+
address1: string;
|
|
2733
|
+
address2?: string;
|
|
2734
|
+
city: string;
|
|
2735
|
+
state: string;
|
|
2736
|
+
zipcode: string;
|
|
2737
|
+
}
|
|
2738
|
+
|
|
2739
|
+
// TODO: Tighten up type to exclude string, which is almost never an acceptable type for React Native children
|
|
2740
|
+
// (except Heading or Text for example.).
|
|
2741
|
+
export type ReactChild = ReactNode;
|
|
2742
|
+
export type ReactChildren = ReactNode;
|
|
2743
|
+
export type WithChildren<P> = P & {children?: ReactNode};
|