@butternutbox/pawprint-native 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +15 -15
- package/CHANGELOG.md +16 -0
- package/COMPONENT_GUIDELINES.md +111 -4
- package/dist/index.cjs +12370 -1455
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1110 -11
- package/dist/index.d.ts +1110 -11
- package/dist/index.js +12324 -1455
- package/dist/index.js.map +1 -1
- package/package.json +28 -9
- package/src/__mocks__/asset-stub.ts +1 -0
- package/src/__mocks__/emotion-native.tsx +18 -0
- package/src/__mocks__/react-native-gesture-handler.tsx +41 -0
- package/src/__mocks__/react-native-reanimated.tsx +79 -0
- package/src/__mocks__/react-native-safe-area-context.tsx +6 -0
- package/src/__mocks__/react-native-svg.tsx +27 -0
- package/src/__mocks__/react-native-worklets.tsx +11 -0
- package/src/__mocks__/react-native.tsx +338 -0
- package/src/__mocks__/rn-primitives/avatar.tsx +24 -0
- package/src/__mocks__/rn-primitives/checkbox.tsx +19 -0
- package/src/__mocks__/rn-primitives/select.tsx +116 -0
- package/src/__mocks__/rn-primitives/slider.tsx +40 -0
- package/src/__mocks__/rn-primitives/slot.tsx +30 -0
- package/src/__mocks__/rn-primitives/switch.tsx +24 -0
- package/src/__mocks__/rn-primitives/toggle.tsx +16 -0
- package/src/components/atoms/Avatar/Avatar.stories.tsx +57 -49
- package/src/components/atoms/Avatar/Avatar.test.tsx +269 -0
- package/src/components/atoms/Avatar/Avatar.tsx +68 -22
- package/src/components/atoms/Avatar/index.ts +1 -6
- package/src/components/atoms/Badge/Badge.stories.tsx +5 -29
- package/src/components/atoms/Badge/Badge.test.tsx +90 -0
- package/src/components/atoms/Button/Button.test.tsx +123 -0
- package/src/components/atoms/Button/Button.tsx +1 -1
- package/src/components/atoms/CarouselControls/CarouselControls.stories.tsx +217 -0
- package/src/components/atoms/CarouselControls/CarouselControls.tsx +127 -0
- package/src/components/atoms/CarouselControls/index.ts +2 -0
- package/src/components/atoms/Hint/Hint.test.tsx +36 -0
- package/src/components/atoms/Icon/Icon.test.tsx +98 -0
- package/src/components/atoms/Icon/Icon.tsx +5 -1
- package/src/components/atoms/IconButton/IconButton.test.tsx +101 -0
- package/src/components/atoms/Illustration/Illustration.test.tsx +55 -0
- package/src/components/atoms/Input/Input.stories.tsx +129 -86
- package/src/components/atoms/Input/Input.test.tsx +306 -0
- package/src/components/atoms/Input/Input.tsx +9 -1
- package/src/components/atoms/Input/InputField.tsx +226 -74
- package/src/components/atoms/Link/Link.test.tsx +89 -0
- package/src/components/atoms/Logo/Logo.registry.ts +30 -5
- package/src/components/atoms/Logo/Logo.stories.tsx +108 -0
- package/src/components/atoms/Logo/Logo.test.tsx +56 -0
- package/src/components/atoms/Logo/assets/BCorp.tsx +113 -0
- package/src/components/atoms/Logo/assets/ButternutFavicon.tsx +33 -0
- package/src/components/atoms/Logo/assets/ButternutPrimary.tsx +294 -0
- package/src/components/atoms/Logo/assets/ButternutTabbedBottom.tsx +294 -0
- package/src/components/atoms/Logo/assets/ButternutTabbedTop.tsx +294 -0
- package/src/components/atoms/Logo/assets/ButternutWordmark.tsx +274 -0
- package/src/components/atoms/Logo/assets/PsiBufetFavicon.tsx +45 -0
- package/src/components/atoms/Logo/assets/PsiBufetPrimary.tsx +218 -0
- package/src/components/atoms/Logo/assets/PsiBufetTabbedBottom.tsx +218 -0
- package/src/components/atoms/Logo/assets/PsiBufetTabbedTop.tsx +218 -0
- package/src/components/atoms/Logo/assets/PsiBufetWordmark.tsx +195 -0
- package/src/components/atoms/Logo/assets/index.ts +11 -0
- package/src/components/atoms/NumberInput/NumberInput.stories.tsx +183 -0
- package/src/components/atoms/NumberInput/NumberInput.test.tsx +261 -0
- package/src/components/atoms/NumberInput/NumberInput.tsx +129 -0
- package/src/components/atoms/NumberInput/NumberInputField.tsx +77 -0
- package/src/components/atoms/NumberInput/index.ts +4 -0
- package/src/components/atoms/Spinner/Spinner.test.tsx +46 -0
- package/src/components/atoms/Spinner/Spinner.tsx +14 -5
- package/src/components/atoms/Switch/Switch.test.tsx +92 -0
- package/src/components/atoms/Switch/Switch.tsx +16 -13
- package/src/components/atoms/Tag/Tag.test.tsx +70 -0
- package/src/components/atoms/TextArea/TextArea.stories.tsx +303 -0
- package/src/components/atoms/TextArea/TextArea.test.tsx +416 -0
- package/src/components/atoms/TextArea/TextArea.tsx +171 -0
- package/src/components/atoms/TextArea/TextAreaField.tsx +304 -0
- package/src/components/atoms/TextArea/TextAreaLabel.tsx +103 -0
- package/src/components/atoms/TextArea/index.ts +6 -0
- package/src/components/atoms/Typography/Typography.test.tsx +94 -0
- package/src/components/atoms/index.ts +3 -0
- package/src/components/molecules/Accordion/Accordion.stories.tsx +177 -0
- package/src/components/molecules/Accordion/Accordion.test.tsx +185 -0
- package/src/components/molecules/Accordion/Accordion.tsx +284 -0
- package/src/components/molecules/Accordion/index.ts +6 -0
- package/src/components/molecules/Animated/Animated.stories.tsx +254 -0
- package/src/components/molecules/Animated/Animated.tsx +283 -0
- package/src/components/molecules/Animated/index.ts +10 -0
- package/src/components/molecules/ButtonDock/ButtonDock.test.tsx +83 -0
- package/src/components/molecules/ButtonGroup/ButtonGroup.stories.tsx +8 -14
- package/src/components/molecules/ButtonGroup/ButtonGroup.test.tsx +73 -0
- package/src/components/molecules/ButtonGroup/ButtonGroup.tsx +25 -3
- package/src/components/molecules/Checkbox/Checkbox.stories.tsx +72 -0
- package/src/components/molecules/Checkbox/Checkbox.test.tsx +117 -0
- package/src/components/molecules/Checkbox/Checkbox.tsx +101 -95
- package/src/components/molecules/CopyField/CopyField.stories.tsx +313 -0
- package/src/components/molecules/CopyField/CopyField.test.tsx +431 -0
- package/src/components/molecules/CopyField/CopyField.tsx +156 -0
- package/src/components/molecules/CopyField/CopyFieldInput.tsx +127 -0
- package/src/components/molecules/CopyField/hooks/index.ts +1 -0
- package/src/components/molecules/CopyField/hooks/useCopyField.ts +25 -0
- package/src/components/molecules/CopyField/index.ts +4 -0
- package/src/components/molecules/DatePicker/DatePicker.stories.tsx +298 -0
- package/src/components/molecules/DatePicker/DatePicker.test.tsx +201 -0
- package/src/components/molecules/DatePicker/DatePicker.tsx +590 -0
- package/src/components/molecules/DatePicker/index.ts +2 -0
- package/src/components/molecules/Drawer/Drawer.stories.tsx +285 -0
- package/src/components/molecules/Drawer/Drawer.test.tsx +180 -0
- package/src/components/molecules/Drawer/Drawer.tsx +187 -0
- package/src/components/molecules/Drawer/DrawerBody.tsx +80 -0
- package/src/components/molecules/Drawer/DrawerClose.tsx +76 -0
- package/src/components/molecules/Drawer/DrawerContent.tsx +339 -0
- package/src/components/molecules/Drawer/DrawerContext.ts +19 -0
- package/src/components/molecules/Drawer/DrawerDescription.tsx +31 -0
- package/src/components/molecules/Drawer/DrawerDragContext.ts +11 -0
- package/src/components/molecules/Drawer/DrawerFooter.tsx +49 -0
- package/src/components/molecules/Drawer/DrawerFooterContext.ts +6 -0
- package/src/components/molecules/Drawer/DrawerGrabber.tsx +62 -0
- package/src/components/molecules/Drawer/DrawerHeader.tsx +244 -0
- package/src/components/molecules/Drawer/DrawerHeaderContext.ts +13 -0
- package/src/components/molecules/Drawer/DrawerOverlay.tsx +53 -0
- package/src/components/molecules/Drawer/DrawerTitle.tsx +32 -0
- package/src/components/molecules/Drawer/index.ts +12 -0
- package/src/components/molecules/FilterTab/FilterTab.stories.tsx +210 -0
- package/src/components/molecules/FilterTab/FilterTab.tsx +310 -0
- package/src/components/molecules/FilterTab/index.ts +2 -0
- package/src/components/molecules/MessageCard/MessageCard.stories.tsx +169 -0
- package/src/components/molecules/MessageCard/MessageCard.tsx +362 -0
- package/src/components/molecules/MessageCard/index.ts +10 -0
- package/src/components/molecules/Notification/Notification.stories.tsx +219 -0
- package/src/components/molecules/Notification/Notification.tsx +426 -0
- package/src/components/molecules/Notification/index.ts +2 -0
- package/src/components/molecules/NumberField/NumberField.stories.tsx +231 -0
- package/src/components/molecules/NumberField/NumberField.tsx +186 -0
- package/src/components/molecules/NumberField/NumberFieldInput.tsx +287 -0
- package/src/components/molecules/NumberField/index.ts +2 -0
- package/src/components/molecules/PasswordField/PasswordField.stories.tsx +362 -0
- package/src/components/molecules/PasswordField/PasswordField.test.tsx +369 -0
- package/src/components/molecules/PasswordField/PasswordField.tsx +194 -0
- package/src/components/molecules/PasswordField/PasswordFieldError.tsx +52 -0
- package/src/components/molecules/PasswordField/PasswordFieldInput.tsx +73 -0
- package/src/components/molecules/PasswordField/PasswordFieldRequirements.tsx +92 -0
- package/src/components/molecules/PasswordField/hooks/index.ts +2 -0
- package/src/components/molecules/PasswordField/hooks/usePasswordField.ts +113 -0
- package/src/components/molecules/PasswordField/index.ts +10 -0
- package/src/components/molecules/PictureSelector/PictureSelector.stories.tsx +243 -0
- package/src/components/molecules/PictureSelector/PictureSelector.tsx +313 -0
- package/src/components/molecules/PictureSelector/index.ts +5 -0
- package/src/components/molecules/Progress/Progress.stories.tsx +145 -0
- package/src/components/molecules/Progress/Progress.tsx +184 -0
- package/src/components/molecules/Progress/index.ts +2 -0
- package/src/components/molecules/Radio/Radio.test.tsx +104 -0
- package/src/components/molecules/Radio/Radio.tsx +1 -2
- package/src/components/molecules/SearchField/SearchField.stories.tsx +242 -0
- package/src/components/molecules/SearchField/SearchField.test.tsx +318 -0
- package/src/components/molecules/SearchField/SearchField.tsx +143 -0
- package/src/components/molecules/SearchField/SearchFieldInput.tsx +63 -0
- package/src/components/molecules/SearchField/hooks/index.ts +1 -0
- package/src/components/molecules/SearchField/hooks/useSearchField.ts +56 -0
- package/src/components/molecules/SearchField/index.ts +4 -0
- package/src/components/molecules/SegmentedControl/SegmentedControl.stories.tsx +31 -8
- package/src/components/molecules/SegmentedControl/SegmentedControl.test.tsx +141 -0
- package/src/components/molecules/SegmentedControl/SegmentedControl.tsx +237 -23
- package/src/components/molecules/SelectField/SelectField.stories.tsx +320 -0
- package/src/components/molecules/SelectField/SelectField.test.tsx +254 -0
- package/src/components/molecules/SelectField/SelectField.tsx +236 -0
- package/src/components/molecules/SelectField/SelectFieldContent.tsx +85 -0
- package/src/components/molecules/SelectField/SelectFieldItem.tsx +133 -0
- package/src/components/molecules/SelectField/SelectFieldTrigger.tsx +170 -0
- package/src/components/molecules/SelectField/SelectFieldValue.tsx +31 -0
- package/src/components/molecules/SelectField/hooks/index.ts +2 -0
- package/src/components/molecules/SelectField/hooks/useSelectField.ts +84 -0
- package/src/components/molecules/SelectField/index.ts +10 -0
- package/src/components/molecules/Slider/Slider.test.tsx +102 -0
- package/src/components/molecules/Slider/Slider.tsx +293 -180
- package/src/components/molecules/Tooltip/Tooltip.stories.tsx +168 -0
- package/src/components/molecules/Tooltip/Tooltip.tsx +326 -0
- package/src/components/molecules/Tooltip/index.ts +2 -0
- package/src/components/molecules/index.ts +15 -0
- package/src/test-utils.tsx +20 -0
- package/tsconfig.json +1 -1
- package/tsup.config.ts +16 -2
- package/vitest.config.ts +114 -0
- package/vitest.setup.ts +16 -0
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,13 @@ import { FontSource } from 'expo-font';
|
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import * as _emotion_react from '@emotion/react';
|
|
9
9
|
import { Theme } from '@emotion/react';
|
|
10
|
-
import
|
|
10
|
+
import * as react_native from 'react-native';
|
|
11
|
+
import { View, ViewProps, TextProps, Text, PressableProps, TextInputProps, TextInput, ImageSourcePropType, ScrollViewProps } from 'react-native';
|
|
12
|
+
import * as react_native_reanimated from 'react-native-reanimated';
|
|
13
|
+
import { FadeIn, FadeOut, FadeInUp, FadeOutUp, FadeInDown, FadeOutDown, ComplexAnimationBuilder, BaseAnimationBuilder, EntryExitAnimationFunction, FadeInRight, FadeOutRight, FadeInLeft, FadeOutLeft } from 'react-native-reanimated';
|
|
14
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
15
|
+
import { Option } from '@rn-primitives/select';
|
|
16
|
+
import { Locale } from 'date-fns';
|
|
11
17
|
|
|
12
18
|
declare module "@emotion/react" {
|
|
13
19
|
interface Theme {
|
|
@@ -62,18 +68,74 @@ declare const createPawprintTheme: (brand?: BrandName, theme?: ThemeName) => The
|
|
|
62
68
|
declare const theme: _butternutbox_pawprint_tokens.Tokens;
|
|
63
69
|
|
|
64
70
|
type AvatarSize = "sm" | "md" | "lg";
|
|
65
|
-
type AvatarBorder = "none" | "sm" | "md";
|
|
66
71
|
type AvatarFallbackType = "string" | "image";
|
|
67
|
-
|
|
72
|
+
type SmallAvatarProps = {
|
|
73
|
+
size?: "sm";
|
|
74
|
+
border?: "none" | "sm";
|
|
75
|
+
};
|
|
76
|
+
type MediumLargeAvatarProps = {
|
|
77
|
+
size?: "md" | "lg";
|
|
78
|
+
border?: "none" | "md";
|
|
79
|
+
};
|
|
80
|
+
type BaseAvatarProps = {
|
|
68
81
|
src?: string;
|
|
69
82
|
alt: string;
|
|
70
|
-
size?: AvatarSize;
|
|
71
|
-
border?: AvatarBorder;
|
|
72
83
|
fallbackType?: AvatarFallbackType;
|
|
73
84
|
fallbackString?: string;
|
|
74
|
-
}
|
|
85
|
+
};
|
|
86
|
+
type AvatarProps = BaseAvatarProps & (SmallAvatarProps | MediumLargeAvatarProps);
|
|
75
87
|
declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<View>>;
|
|
76
88
|
|
|
89
|
+
type CarouselControlsProps = {
|
|
90
|
+
/**
|
|
91
|
+
* Total number of carousel items. Renders one dot per item (max 5 visible
|
|
92
|
+
* for 6–7 items via a sliding window).
|
|
93
|
+
*/
|
|
94
|
+
count: number;
|
|
95
|
+
/**
|
|
96
|
+
* Zero-based index of the currently active item.
|
|
97
|
+
*/
|
|
98
|
+
activeIndex: number;
|
|
99
|
+
/**
|
|
100
|
+
* Show a white pill background behind the dots. Defaults to `true`.
|
|
101
|
+
*
|
|
102
|
+
* Set to `false` when placing controls on a light surface where the
|
|
103
|
+
* background pill would clash with the page background.
|
|
104
|
+
*/
|
|
105
|
+
showBackground?: boolean;
|
|
106
|
+
} & ViewProps;
|
|
107
|
+
/**
|
|
108
|
+
* Carousel position indicator — a row of dots where the active dot is
|
|
109
|
+
* highlighted and inactive dots are shown at reduced opacity.
|
|
110
|
+
*
|
|
111
|
+
* For 6–7 item carousels a 5-dot sliding window is used with diminishing
|
|
112
|
+
* dot sizes to indicate proximity to the active item.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```tsx
|
|
116
|
+
* <CarouselControls count={4} activeIndex={currentIndex} />
|
|
117
|
+
* <CarouselControls count={4} activeIndex={currentIndex} showBackground={false} />
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
declare const CarouselControls: React.ForwardRefExoticComponent<{
|
|
121
|
+
/**
|
|
122
|
+
* Total number of carousel items. Renders one dot per item (max 5 visible
|
|
123
|
+
* for 6–7 items via a sliding window).
|
|
124
|
+
*/
|
|
125
|
+
count: number;
|
|
126
|
+
/**
|
|
127
|
+
* Zero-based index of the currently active item.
|
|
128
|
+
*/
|
|
129
|
+
activeIndex: number;
|
|
130
|
+
/**
|
|
131
|
+
* Show a white pill background behind the dots. Defaults to `true`.
|
|
132
|
+
*
|
|
133
|
+
* Set to `false` when placing controls on a light surface where the
|
|
134
|
+
* background pill would clash with the page background.
|
|
135
|
+
*/
|
|
136
|
+
showBackground?: boolean;
|
|
137
|
+
} & ViewProps & React.RefAttributes<View>>;
|
|
138
|
+
|
|
77
139
|
type BodySize = "xs" | "sm" | "md" | "lg";
|
|
78
140
|
type HeadingSize = "2xs" | "xs" | "sm" | "md" | "lg" | "xl";
|
|
79
141
|
type DisplaySize = "md" | "lg";
|
|
@@ -177,6 +239,7 @@ type IconOwnProps = {
|
|
|
177
239
|
icon: PawprintIcon;
|
|
178
240
|
size?: IconSize;
|
|
179
241
|
colour?: IconColour;
|
|
242
|
+
customColour?: string;
|
|
180
243
|
"aria-label"?: string;
|
|
181
244
|
};
|
|
182
245
|
type IconProps = IconOwnProps & Omit<ViewProps, keyof IconOwnProps>;
|
|
@@ -330,12 +393,12 @@ type IconButtonProps = IconButtonOwnProps & Omit<PressableProps, keyof IconButto
|
|
|
330
393
|
declare const IconButton: React.ForwardRefExoticComponent<IconButtonOwnProps & Omit<PressableProps, "children" | keyof IconButtonOwnProps> & React.RefAttributes<View>>;
|
|
331
394
|
|
|
332
395
|
type IllustrationSize = "sm" | "lg";
|
|
333
|
-
type PawprintIllustration = React.ComponentType<{
|
|
396
|
+
type PawprintIllustration$2 = React.ComponentType<{
|
|
334
397
|
width?: number;
|
|
335
398
|
height?: number;
|
|
336
399
|
}>;
|
|
337
400
|
type IllustrationOwnProps = {
|
|
338
|
-
illustration: PawprintIllustration;
|
|
401
|
+
illustration: PawprintIllustration$2;
|
|
339
402
|
size?: IllustrationSize;
|
|
340
403
|
"aria-label"?: string;
|
|
341
404
|
};
|
|
@@ -361,7 +424,11 @@ type InputState = "default" | "error" | "success";
|
|
|
361
424
|
type InputFieldOwnProps = {
|
|
362
425
|
leadingIcon?: React.ReactNode;
|
|
363
426
|
trailingIcon?: React.ReactNode;
|
|
427
|
+
actionIcon?: React.ReactNode;
|
|
364
428
|
state?: InputState;
|
|
429
|
+
hideStateIcons?: boolean;
|
|
430
|
+
containerWidth?: number;
|
|
431
|
+
containerHeight?: number;
|
|
365
432
|
};
|
|
366
433
|
type InputFieldProps = InputFieldOwnProps & Omit<TextInputProps, keyof InputFieldOwnProps>;
|
|
367
434
|
/**
|
|
@@ -369,7 +436,9 @@ type InputFieldProps = InputFieldOwnProps & Omit<TextInputProps, keyof InputFiel
|
|
|
369
436
|
*
|
|
370
437
|
* @param {React.ReactNode} [leadingIcon] - Icon to display before the input
|
|
371
438
|
* @param {React.ReactNode} [trailingIcon] - Icon to display after the input
|
|
439
|
+
* @param {React.ReactNode} [actionIcon] - Interactive icon at the rightmost position (e.g. clear button, password toggle)
|
|
372
440
|
* @param {InputState} [state] - Visual state of the input (default, error, success)
|
|
441
|
+
* @param {boolean} [hideStateIcons] - Hide automatic error/success icons
|
|
373
442
|
*/
|
|
374
443
|
declare const InputField: React.ForwardRefExoticComponent<InputFieldOwnProps & Omit<TextInputProps, keyof InputFieldOwnProps> & React.RefAttributes<TextInput>>;
|
|
375
444
|
|
|
@@ -419,16 +488,17 @@ type InputOwnProps = {
|
|
|
419
488
|
error?: string;
|
|
420
489
|
state?: InputState;
|
|
421
490
|
optionalText?: string;
|
|
491
|
+
onValueChange?: (value: string) => void;
|
|
422
492
|
};
|
|
423
493
|
type InputProps = InputOwnProps & Omit<InputFieldProps, keyof InputOwnProps> & Omit<ViewProps, keyof InputOwnProps>;
|
|
424
|
-
declare const StyledRoot: _emotion_native.StyledComponent<ViewProps & {
|
|
494
|
+
declare const StyledRoot$6: _emotion_native.StyledComponent<ViewProps & {
|
|
425
495
|
theme?: _emotion_react.Theme;
|
|
426
496
|
as?: React.ElementType;
|
|
427
497
|
}, {}, {
|
|
428
498
|
ref?: React.Ref<View> | undefined;
|
|
429
499
|
}>;
|
|
430
500
|
type InputComponent = React.ForwardRefExoticComponent<InputProps & React.RefAttributes<View>> & {
|
|
431
|
-
Root: typeof StyledRoot;
|
|
501
|
+
Root: typeof StyledRoot$6;
|
|
432
502
|
Label: typeof InputLabel;
|
|
433
503
|
Field: typeof InputField;
|
|
434
504
|
Description: typeof InputDescription;
|
|
@@ -495,6 +565,36 @@ type LogoSvgComponent = React.ComponentType<{
|
|
|
495
565
|
declare function resolveLogo(brand: LogoBrand, variant: LogoVariant): LogoSvgComponent | undefined;
|
|
496
566
|
declare function registerLogo(brand: LogoBrand, variant: LogoVariant, component: LogoSvgComponent): void;
|
|
497
567
|
|
|
568
|
+
type NumberInputFieldOwnProps = {
|
|
569
|
+
fieldText?: string;
|
|
570
|
+
};
|
|
571
|
+
type NumberInputFieldProps = NumberInputFieldOwnProps & Omit<InputFieldProps, keyof NumberInputFieldOwnProps>;
|
|
572
|
+
/**
|
|
573
|
+
* Field component for NumberInput.
|
|
574
|
+
* Renders a centered number input sized to `numberField.size.large.height`.
|
|
575
|
+
* When fieldText is provided, wraps input + text in a horizontal group.
|
|
576
|
+
*/
|
|
577
|
+
declare const NumberInputField: React.ForwardRefExoticComponent<NumberInputFieldOwnProps & Omit<InputFieldProps, "fieldText"> & React.RefAttributes<TextInput>>;
|
|
578
|
+
|
|
579
|
+
type NumberInputOwnProps = Pick<InputProps, "label" | "description" | "error" | "state" | "optionalText" | "onValueChange"> & {
|
|
580
|
+
fieldText?: string;
|
|
581
|
+
};
|
|
582
|
+
type NumberInputProps = NumberInputOwnProps & Omit<InputFieldProps, keyof NumberInputOwnProps> & Omit<ViewProps, keyof NumberInputOwnProps>;
|
|
583
|
+
declare const StyledRoot$5: _emotion_native.StyledComponent<ViewProps & {
|
|
584
|
+
theme?: _emotion_react.Theme;
|
|
585
|
+
as?: React.ElementType;
|
|
586
|
+
}, {}, {
|
|
587
|
+
ref?: React.Ref<View> | undefined;
|
|
588
|
+
}>;
|
|
589
|
+
type NumberInputComponent = React.ForwardRefExoticComponent<NumberInputProps & React.RefAttributes<View>> & {
|
|
590
|
+
Root: typeof StyledRoot$5;
|
|
591
|
+
Label: typeof InputLabel;
|
|
592
|
+
Field: typeof NumberInputField;
|
|
593
|
+
Description: typeof InputDescription;
|
|
594
|
+
Error: typeof InputError;
|
|
595
|
+
};
|
|
596
|
+
declare const NumberInput: NumberInputComponent;
|
|
597
|
+
|
|
498
598
|
type SpinnerSize = "sm" | "md" | "lg";
|
|
499
599
|
type SpinnerVariant = "dark" | "light";
|
|
500
600
|
type SpinnerOwnProps = {
|
|
@@ -564,6 +664,282 @@ type TagProps = TagOwnProps & Omit<ViewProps, keyof TagOwnProps>;
|
|
|
564
664
|
*/
|
|
565
665
|
declare const Tag: React.ForwardRefExoticComponent<TagOwnProps & Omit<ViewProps, keyof TagOwnProps> & React.RefAttributes<View>>;
|
|
566
666
|
|
|
667
|
+
type TextAreaFieldOwnProps = {
|
|
668
|
+
leadingIcon?: React.ReactNode;
|
|
669
|
+
trailingIcon?: React.ReactNode;
|
|
670
|
+
state?: InputState;
|
|
671
|
+
hideStateIcons?: boolean;
|
|
672
|
+
rows?: number;
|
|
673
|
+
};
|
|
674
|
+
type TextAreaFieldProps = TextAreaFieldOwnProps & Omit<TextInputProps, keyof TextAreaFieldOwnProps>;
|
|
675
|
+
/**
|
|
676
|
+
* TextAreaField component - Multi-line text input field with icons and visual states.
|
|
677
|
+
*
|
|
678
|
+
* @param {React.ReactNode} [leadingIcon] - Icon to display at the start of the textarea (top-left, should be 24px)
|
|
679
|
+
* @param {React.ReactNode} [trailingIcon] - Icon to display at the end of the textarea (top-right, overrides automatic state icons)
|
|
680
|
+
* @param {InputState} [state] - Visual state of the textarea (default, error, success)
|
|
681
|
+
* @param {boolean} [hideStateIcons] - Hide automatic error/success icons
|
|
682
|
+
* @param {number} [rows=2] - Number of visible text rows (used to calculate minHeight)
|
|
683
|
+
*/
|
|
684
|
+
declare const TextAreaField: React.ForwardRefExoticComponent<TextAreaFieldOwnProps & Omit<TextInputProps, keyof TextAreaFieldOwnProps> & React.RefAttributes<TextInput>>;
|
|
685
|
+
|
|
686
|
+
type TextAreaLabelOwnProps = {
|
|
687
|
+
optionalText?: string;
|
|
688
|
+
state?: InputState;
|
|
689
|
+
children: React.ReactNode;
|
|
690
|
+
maxLength?: number;
|
|
691
|
+
currentLength?: number;
|
|
692
|
+
};
|
|
693
|
+
type TextAreaLabelProps = TextAreaLabelOwnProps;
|
|
694
|
+
declare const TextAreaLabel: React.ForwardRefExoticComponent<TextAreaLabelOwnProps & React.RefAttributes<View>>;
|
|
695
|
+
|
|
696
|
+
type TextAreaOwnProps = {
|
|
697
|
+
label?: string;
|
|
698
|
+
description?: string;
|
|
699
|
+
error?: string;
|
|
700
|
+
state?: InputState;
|
|
701
|
+
optionalText?: string;
|
|
702
|
+
onValueChange?: (value: string) => void;
|
|
703
|
+
};
|
|
704
|
+
type TextAreaProps = TextAreaOwnProps & Omit<TextAreaFieldProps, keyof TextAreaOwnProps> & Omit<ViewProps, keyof TextAreaOwnProps>;
|
|
705
|
+
declare const StyledRoot$4: _emotion_native.StyledComponent<ViewProps & {
|
|
706
|
+
theme?: _emotion_react.Theme;
|
|
707
|
+
as?: React.ElementType;
|
|
708
|
+
}, {}, {
|
|
709
|
+
ref?: React.Ref<View> | undefined;
|
|
710
|
+
}>;
|
|
711
|
+
type TextAreaComponent = React.ForwardRefExoticComponent<TextAreaProps & React.RefAttributes<View>> & {
|
|
712
|
+
Root: typeof StyledRoot$4;
|
|
713
|
+
Label: typeof TextAreaLabel;
|
|
714
|
+
Field: typeof TextAreaField;
|
|
715
|
+
Description: typeof InputDescription;
|
|
716
|
+
Error: typeof InputError;
|
|
717
|
+
};
|
|
718
|
+
declare const TextArea: TextAreaComponent;
|
|
719
|
+
|
|
720
|
+
type AccordionSize = "small" | "large";
|
|
721
|
+
type AccordionRootOwnProps = {
|
|
722
|
+
size?: AccordionSize;
|
|
723
|
+
multiple?: boolean;
|
|
724
|
+
defaultValue?: string[];
|
|
725
|
+
value?: string[];
|
|
726
|
+
onValueChange?: (value: string[]) => void;
|
|
727
|
+
disabled?: boolean;
|
|
728
|
+
children: React.ReactNode;
|
|
729
|
+
};
|
|
730
|
+
type AccordionProps = AccordionRootOwnProps & Omit<ViewProps, keyof AccordionRootOwnProps>;
|
|
731
|
+
type AccordionItemOwnProps = {
|
|
732
|
+
title: string;
|
|
733
|
+
children: React.ReactNode;
|
|
734
|
+
value?: string;
|
|
735
|
+
disabled?: boolean;
|
|
736
|
+
};
|
|
737
|
+
type AccordionItemProps = AccordionItemOwnProps & Omit<ViewProps, keyof AccordionItemOwnProps>;
|
|
738
|
+
declare const Accordion: React.ForwardRefExoticComponent<AccordionRootOwnProps & Omit<ViewProps, keyof AccordionRootOwnProps> & React.RefAttributes<View>> & {
|
|
739
|
+
Item: React.ForwardRefExoticComponent<AccordionItemOwnProps & Omit<ViewProps, keyof AccordionItemOwnProps> & React.RefAttributes<View>>;
|
|
740
|
+
};
|
|
741
|
+
|
|
742
|
+
declare class SubtleScaleIn extends ComplexAnimationBuilder {
|
|
743
|
+
static presetName: string;
|
|
744
|
+
static createInstance<T extends typeof BaseAnimationBuilder>(this: T): InstanceType<T>;
|
|
745
|
+
build: () => EntryExitAnimationFunction;
|
|
746
|
+
}
|
|
747
|
+
declare const fadeAnimation: {
|
|
748
|
+
readonly entering: typeof FadeIn;
|
|
749
|
+
readonly exiting: typeof FadeOut;
|
|
750
|
+
};
|
|
751
|
+
declare const fadeUpAnimation: {
|
|
752
|
+
readonly entering: typeof FadeInDown;
|
|
753
|
+
readonly exiting: typeof FadeOutDown;
|
|
754
|
+
};
|
|
755
|
+
declare const fadeDownAnimation: {
|
|
756
|
+
readonly entering: typeof FadeInUp;
|
|
757
|
+
readonly exiting: typeof FadeOutUp;
|
|
758
|
+
};
|
|
759
|
+
declare const slideInAnimation: {
|
|
760
|
+
readonly entering: typeof FadeInRight;
|
|
761
|
+
readonly exiting: typeof FadeOutRight;
|
|
762
|
+
};
|
|
763
|
+
declare const slideOutAnimation: {
|
|
764
|
+
readonly entering: typeof FadeInLeft;
|
|
765
|
+
readonly exiting: typeof FadeOutLeft;
|
|
766
|
+
};
|
|
767
|
+
declare const DURATIONS: {
|
|
768
|
+
readonly fade: 200;
|
|
769
|
+
readonly scale: 150;
|
|
770
|
+
readonly fadeUp: 200;
|
|
771
|
+
readonly fadeDown: 200;
|
|
772
|
+
readonly slideIn: 250;
|
|
773
|
+
readonly slideOut: 250;
|
|
774
|
+
};
|
|
775
|
+
declare const scaleAnimation: {
|
|
776
|
+
readonly entering: typeof SubtleScaleIn;
|
|
777
|
+
readonly exiting: react_native_reanimated.ReanimatedKeyframe;
|
|
778
|
+
};
|
|
779
|
+
type AnimatedVariant = keyof typeof DURATIONS;
|
|
780
|
+
type AnimatedProps = {
|
|
781
|
+
/**
|
|
782
|
+
* Animation preset. Defaults to `"fade"`.
|
|
783
|
+
*
|
|
784
|
+
* | Preset | Motion |
|
|
785
|
+
* |-------------|-------------------------------------------|
|
|
786
|
+
* | `fade` | opacity |
|
|
787
|
+
* | `fadeUp` | opacity + enter from below |
|
|
788
|
+
* | `fadeDown` | opacity + enter from above |
|
|
789
|
+
* | `scale` | opacity + subtle scale 0.85↔1 |
|
|
790
|
+
* | `slideIn` | opacity + enter from right |
|
|
791
|
+
* | `slideOut` | opacity + enter from left |
|
|
792
|
+
*/
|
|
793
|
+
variant?: AnimatedVariant;
|
|
794
|
+
/**
|
|
795
|
+
* Delay in seconds before the entering animation starts. Useful for
|
|
796
|
+
* sequencing elements without a full stagger setup. Ignored when
|
|
797
|
+
* `prefers-reduced-motion` is active.
|
|
798
|
+
*
|
|
799
|
+
* @example
|
|
800
|
+
* ```tsx
|
|
801
|
+
* <Animated variant="fadeUp" delay={0}>First</Animated>
|
|
802
|
+
* <Animated variant="fadeUp" delay={0.08}>Second</Animated>
|
|
803
|
+
* <Animated variant="fadeUp" delay={0.16}>Third</Animated>
|
|
804
|
+
* ```
|
|
805
|
+
*/
|
|
806
|
+
delay?: number;
|
|
807
|
+
} & ViewProps;
|
|
808
|
+
/**
|
|
809
|
+
* Reanimated wrapper that applies a named animation preset to its children.
|
|
810
|
+
*
|
|
811
|
+
* Exit animations run automatically when the component unmounts — no wrapper
|
|
812
|
+
* component needed (unlike `AnimatePresence` on web).
|
|
813
|
+
*
|
|
814
|
+
* Respects the OS reduce-motion setting automatically — Reanimated builders
|
|
815
|
+
* default to `ReduceMotion.System` so no extra hook is needed.
|
|
816
|
+
*
|
|
817
|
+
* Export `*Animation` objects (e.g. `fadeUpAnimation`) for applying presets
|
|
818
|
+
* directly on `Reanimated.View` in custom stagger patterns:
|
|
819
|
+
*
|
|
820
|
+
* ```tsx
|
|
821
|
+
* <Reanimated.View entering={fadeUpAnimation.entering.duration(200).delay(80)}>
|
|
822
|
+
* <Item />
|
|
823
|
+
* </Reanimated.View>
|
|
824
|
+
* ```
|
|
825
|
+
*
|
|
826
|
+
* @example
|
|
827
|
+
* ```tsx
|
|
828
|
+
* // Enter animation
|
|
829
|
+
* <Animated variant="fadeUp"><Card /></Animated>
|
|
830
|
+
*
|
|
831
|
+
* // Enter + exit — condition the render and Reanimated handles both
|
|
832
|
+
* {visible && <Animated variant="slideIn"><Panel /></Animated>}
|
|
833
|
+
*
|
|
834
|
+
* // Sequenced elements
|
|
835
|
+
* <Animated variant="fadeUp" delay={0}>Title</Animated>
|
|
836
|
+
* <Animated variant="fadeUp" delay={0.1}>Subtitle</Animated>
|
|
837
|
+
* ```
|
|
838
|
+
*/
|
|
839
|
+
declare const Animated: React.ForwardRefExoticComponent<{
|
|
840
|
+
/**
|
|
841
|
+
* Animation preset. Defaults to `"fade"`.
|
|
842
|
+
*
|
|
843
|
+
* | Preset | Motion |
|
|
844
|
+
* |-------------|-------------------------------------------|
|
|
845
|
+
* | `fade` | opacity |
|
|
846
|
+
* | `fadeUp` | opacity + enter from below |
|
|
847
|
+
* | `fadeDown` | opacity + enter from above |
|
|
848
|
+
* | `scale` | opacity + subtle scale 0.85↔1 |
|
|
849
|
+
* | `slideIn` | opacity + enter from right |
|
|
850
|
+
* | `slideOut` | opacity + enter from left |
|
|
851
|
+
*/
|
|
852
|
+
variant?: AnimatedVariant;
|
|
853
|
+
/**
|
|
854
|
+
* Delay in seconds before the entering animation starts. Useful for
|
|
855
|
+
* sequencing elements without a full stagger setup. Ignored when
|
|
856
|
+
* `prefers-reduced-motion` is active.
|
|
857
|
+
*
|
|
858
|
+
* @example
|
|
859
|
+
* ```tsx
|
|
860
|
+
* <Animated variant="fadeUp" delay={0}>First</Animated>
|
|
861
|
+
* <Animated variant="fadeUp" delay={0.08}>Second</Animated>
|
|
862
|
+
* <Animated variant="fadeUp" delay={0.16}>Third</Animated>
|
|
863
|
+
* ```
|
|
864
|
+
*/
|
|
865
|
+
delay?: number;
|
|
866
|
+
} & ViewProps & React.RefAttributes<View>>;
|
|
867
|
+
|
|
868
|
+
type DrawerHeaderVariant = "titleAndText" | "image" | "fullBleed";
|
|
869
|
+
|
|
870
|
+
type DrawerContentProps = Omit<ViewProps, "style">;
|
|
871
|
+
|
|
872
|
+
type DrawerOverlayProps = {
|
|
873
|
+
accessible?: boolean;
|
|
874
|
+
};
|
|
875
|
+
|
|
876
|
+
type DrawerRootOwnProps = {
|
|
877
|
+
open?: boolean;
|
|
878
|
+
defaultOpen?: boolean;
|
|
879
|
+
onOpenChange?: (open: boolean) => void;
|
|
880
|
+
children: React.ReactNode;
|
|
881
|
+
};
|
|
882
|
+
type DrawerProps = DrawerRootOwnProps & Omit<ViewProps, keyof DrawerRootOwnProps>;
|
|
883
|
+
type DrawerTriggerProps = {
|
|
884
|
+
children: React.ReactElement;
|
|
885
|
+
};
|
|
886
|
+
type DrawerPortalProps = {
|
|
887
|
+
children: React.ReactNode;
|
|
888
|
+
};
|
|
889
|
+
declare const Drawer: React.ForwardRefExoticComponent<DrawerRootOwnProps & Omit<ViewProps, keyof DrawerRootOwnProps> & React.RefAttributes<View>> & {
|
|
890
|
+
Root: React.ForwardRefExoticComponent<DrawerRootOwnProps & Omit<ViewProps, keyof DrawerRootOwnProps> & React.RefAttributes<View>>;
|
|
891
|
+
Trigger: React.ForwardRefExoticComponent<DrawerTriggerProps & React.RefAttributes<View>>;
|
|
892
|
+
Portal: {
|
|
893
|
+
({ children }: DrawerPortalProps): react_jsx_runtime.JSX.Element | null;
|
|
894
|
+
displayName: string;
|
|
895
|
+
};
|
|
896
|
+
Overlay: React.ForwardRefExoticComponent<DrawerOverlayProps & React.RefAttributes<View>>;
|
|
897
|
+
Content: React.ForwardRefExoticComponent<DrawerContentProps & React.RefAttributes<View>>;
|
|
898
|
+
Grabber: React.ForwardRefExoticComponent<ViewProps & React.RefAttributes<View>>;
|
|
899
|
+
Header: React.ForwardRefExoticComponent<{
|
|
900
|
+
variant?: DrawerHeaderVariant;
|
|
901
|
+
imageSource?: react_native.ImageSourcePropType;
|
|
902
|
+
} & Omit<ViewProps, keyof {
|
|
903
|
+
variant?: DrawerHeaderVariant;
|
|
904
|
+
imageSource?: react_native.ImageSourcePropType;
|
|
905
|
+
}> & React.RefAttributes<View>>;
|
|
906
|
+
Title: React.ForwardRefExoticComponent<{
|
|
907
|
+
children: React.ReactNode;
|
|
908
|
+
} & Omit<ViewProps, "children"> & React.RefAttributes<View>>;
|
|
909
|
+
Description: React.ForwardRefExoticComponent<{
|
|
910
|
+
children: React.ReactNode;
|
|
911
|
+
} & Omit<ViewProps, "children"> & React.RefAttributes<View>>;
|
|
912
|
+
Close: React.ForwardRefExoticComponent<{
|
|
913
|
+
"aria-label"?: string;
|
|
914
|
+
} & Omit<ViewProps, "children"> & React.RefAttributes<View>>;
|
|
915
|
+
Body: React.ForwardRefExoticComponent<react_native.ScrollViewProps & React.RefAttributes<react_native.ScrollView>>;
|
|
916
|
+
Footer: React.ForwardRefExoticComponent<ViewProps & React.RefAttributes<View>>;
|
|
917
|
+
};
|
|
918
|
+
|
|
919
|
+
type DrawerGrabberProps = ViewProps;
|
|
920
|
+
|
|
921
|
+
type DrawerHeaderOwnProps = {
|
|
922
|
+
variant?: DrawerHeaderVariant;
|
|
923
|
+
imageSource?: ImageSourcePropType;
|
|
924
|
+
};
|
|
925
|
+
type DrawerHeaderProps = DrawerHeaderOwnProps & Omit<ViewProps, keyof DrawerHeaderOwnProps>;
|
|
926
|
+
|
|
927
|
+
type DrawerTitleProps = {
|
|
928
|
+
children: React.ReactNode;
|
|
929
|
+
} & Omit<ViewProps, "children">;
|
|
930
|
+
|
|
931
|
+
type DrawerDescriptionProps = {
|
|
932
|
+
children: React.ReactNode;
|
|
933
|
+
} & Omit<ViewProps, "children">;
|
|
934
|
+
|
|
935
|
+
type DrawerCloseProps = {
|
|
936
|
+
"aria-label"?: string;
|
|
937
|
+
} & Omit<ViewProps, "children">;
|
|
938
|
+
|
|
939
|
+
type DrawerBodyProps = ScrollViewProps;
|
|
940
|
+
|
|
941
|
+
type DrawerFooterProps = ViewProps;
|
|
942
|
+
|
|
567
943
|
type ButtonDockVariant = "stacked" | "inline";
|
|
568
944
|
type ButtonDockOwnProps = {
|
|
569
945
|
variant?: ButtonDockVariant;
|
|
@@ -666,6 +1042,288 @@ type CheckboxGroupProps = CheckboxGroupOwnProps & Omit<ViewProps, keyof Checkbox
|
|
|
666
1042
|
*/
|
|
667
1043
|
declare const CheckboxGroup: React.ForwardRefExoticComponent<CheckboxGroupOwnProps & Omit<ViewProps, keyof CheckboxGroupOwnProps> & React.RefAttributes<View>>;
|
|
668
1044
|
|
|
1045
|
+
type CopyFieldInputOwnProps = {
|
|
1046
|
+
onCopy?: (value: string) => void;
|
|
1047
|
+
onValueChange?: (value: string) => void;
|
|
1048
|
+
copyButtonLabel?: string;
|
|
1049
|
+
};
|
|
1050
|
+
declare const CopyFieldInput: React.ForwardRefExoticComponent<CopyFieldInputOwnProps & Omit<InputFieldProps, keyof CopyFieldInputOwnProps> & React.RefAttributes<TextInput>>;
|
|
1051
|
+
|
|
1052
|
+
declare const StyledRoot$3: _emotion_native.StyledComponent<ViewProps & {
|
|
1053
|
+
theme?: _emotion_react.Theme;
|
|
1054
|
+
as?: React.ElementType;
|
|
1055
|
+
}, {}, {
|
|
1056
|
+
ref?: React.Ref<View> | undefined;
|
|
1057
|
+
}>;
|
|
1058
|
+
type CopyFieldOwnProps = {
|
|
1059
|
+
label?: string;
|
|
1060
|
+
description?: string;
|
|
1061
|
+
error?: string;
|
|
1062
|
+
state?: InputState;
|
|
1063
|
+
optionalText?: string;
|
|
1064
|
+
onCopy?: (value: string) => void;
|
|
1065
|
+
onValueChange?: (value: string) => void;
|
|
1066
|
+
copyButtonLabel?: string;
|
|
1067
|
+
};
|
|
1068
|
+
type CopyFieldProps = CopyFieldOwnProps & Omit<InputFieldProps, keyof CopyFieldOwnProps> & Omit<ViewProps, keyof CopyFieldOwnProps>;
|
|
1069
|
+
type CopyFieldComponent = React.ForwardRefExoticComponent<CopyFieldProps & React.RefAttributes<View>> & {
|
|
1070
|
+
Root: typeof StyledRoot$3;
|
|
1071
|
+
Label: typeof InputLabel;
|
|
1072
|
+
Field: typeof CopyFieldInput;
|
|
1073
|
+
Description: typeof InputDescription;
|
|
1074
|
+
Error: typeof InputError;
|
|
1075
|
+
};
|
|
1076
|
+
declare const CopyField: CopyFieldComponent;
|
|
1077
|
+
|
|
1078
|
+
type UseCopyFieldOptions = {
|
|
1079
|
+
initialValue?: string;
|
|
1080
|
+
onCopy?: (value: string) => void;
|
|
1081
|
+
};
|
|
1082
|
+
declare const useCopyField: (options?: UseCopyFieldOptions) => {
|
|
1083
|
+
value: string;
|
|
1084
|
+
onValueChange: (newValue: string) => void;
|
|
1085
|
+
onCopy: (copiedValue: string) => void;
|
|
1086
|
+
};
|
|
1087
|
+
|
|
1088
|
+
type FilterTabSize = "sm" | "lg";
|
|
1089
|
+
type FilterTabRootOwnProps = {
|
|
1090
|
+
size?: FilterTabSize;
|
|
1091
|
+
multiple?: boolean;
|
|
1092
|
+
value?: string[];
|
|
1093
|
+
defaultValue?: string[];
|
|
1094
|
+
onValueChange?: (value: string[]) => void;
|
|
1095
|
+
children: React.ReactNode;
|
|
1096
|
+
};
|
|
1097
|
+
type FilterTabProps = FilterTabRootOwnProps & Omit<ViewProps, keyof FilterTabRootOwnProps>;
|
|
1098
|
+
type FilterTabItemOwnProps = {
|
|
1099
|
+
value: string;
|
|
1100
|
+
label?: string;
|
|
1101
|
+
icon?: PawprintIcon;
|
|
1102
|
+
leadingIcon?: PawprintIcon;
|
|
1103
|
+
trailingIcon?: PawprintIcon;
|
|
1104
|
+
disabled?: boolean;
|
|
1105
|
+
};
|
|
1106
|
+
type FilterTabItemProps = FilterTabItemOwnProps & Omit<PressableProps, keyof FilterTabItemOwnProps | "children">;
|
|
1107
|
+
declare const FilterTab: React.ForwardRefExoticComponent<FilterTabRootOwnProps & Omit<ViewProps, keyof FilterTabRootOwnProps> & React.RefAttributes<View>> & {
|
|
1108
|
+
Item: React.ForwardRefExoticComponent<FilterTabItemOwnProps & Omit<PressableProps, "children" | keyof FilterTabItemOwnProps> & React.RefAttributes<View>>;
|
|
1109
|
+
};
|
|
1110
|
+
|
|
1111
|
+
type NumberFieldSize$1 = "sm" | "lg";
|
|
1112
|
+
type NumberFieldInputOwnProps = {
|
|
1113
|
+
fieldSize?: NumberFieldSize$1;
|
|
1114
|
+
state?: "default" | "error" | "success";
|
|
1115
|
+
onIncrement?: () => void;
|
|
1116
|
+
onDecrement?: () => void;
|
|
1117
|
+
showIncrementButton?: boolean;
|
|
1118
|
+
showDecrementButton?: boolean;
|
|
1119
|
+
disabled?: boolean;
|
|
1120
|
+
incrementDisabled?: boolean;
|
|
1121
|
+
decrementDisabled?: boolean;
|
|
1122
|
+
min?: number;
|
|
1123
|
+
max?: number;
|
|
1124
|
+
};
|
|
1125
|
+
type NumberFieldInputProps = NumberFieldInputOwnProps & Omit<TextInputProps, keyof NumberFieldInputOwnProps>;
|
|
1126
|
+
|
|
1127
|
+
type NumberFieldSize = "sm" | "lg";
|
|
1128
|
+
type NumberFieldState = "default" | "error" | "success";
|
|
1129
|
+
type NumberFieldOwnProps = {
|
|
1130
|
+
label?: string;
|
|
1131
|
+
smallLabel?: string;
|
|
1132
|
+
description?: string;
|
|
1133
|
+
error?: string;
|
|
1134
|
+
state?: NumberFieldState;
|
|
1135
|
+
size?: NumberFieldSize;
|
|
1136
|
+
disabled?: boolean;
|
|
1137
|
+
onIncrement?: () => void;
|
|
1138
|
+
onDecrement?: () => void;
|
|
1139
|
+
showIncrementButton?: boolean;
|
|
1140
|
+
showDecrementButton?: boolean;
|
|
1141
|
+
incrementDisabled?: boolean;
|
|
1142
|
+
decrementDisabled?: boolean;
|
|
1143
|
+
min?: number;
|
|
1144
|
+
max?: number;
|
|
1145
|
+
};
|
|
1146
|
+
type NumberFieldProps = NumberFieldOwnProps & Omit<NumberFieldInputProps, keyof NumberFieldOwnProps | "fieldSize"> & Omit<ViewProps, keyof NumberFieldOwnProps>;
|
|
1147
|
+
/**
|
|
1148
|
+
* Number field component for collecting numeric data with increment/decrement
|
|
1149
|
+
* buttons and an optional side text label.
|
|
1150
|
+
* Built on React Native TextInput with design system styling.
|
|
1151
|
+
*
|
|
1152
|
+
* @param {"sm" | "lg"} [size="lg"] - Size variant controlling typography and spacing.
|
|
1153
|
+
* @param {string} [label] - Primary label text above the field.
|
|
1154
|
+
* @param {string} [smallLabel] - Secondary label text displayed below the primary label.
|
|
1155
|
+
* @param {string} [description] - Help text displayed below the field.
|
|
1156
|
+
* @param {string} [error] - Error message displayed when state is "error".
|
|
1157
|
+
* @param {"default" | "error" | "success"} [state="default"] - Visual state of the field.
|
|
1158
|
+
* @param {boolean} [disabled=false] - Whether the entire field (input + buttons) is disabled.
|
|
1159
|
+
* @param {() => void} [onIncrement] - Called when the + button is pressed.
|
|
1160
|
+
* @param {() => void} [onDecrement] - Called when the - button is pressed.
|
|
1161
|
+
* @param {boolean} [showIncrementButton=true] - Whether to show the + button.
|
|
1162
|
+
* @param {boolean} [showDecrementButton=true] - Whether to show the - button.
|
|
1163
|
+
* @param {boolean} [incrementDisabled=false] - Whether the + button is independently disabled.
|
|
1164
|
+
* @param {boolean} [decrementDisabled=false] - Whether the - button is independently disabled.
|
|
1165
|
+
* @param {number} [min] - Minimum allowed value. Clamps on blur and disables decrement at min.
|
|
1166
|
+
* @param {number} [max] - Maximum allowed value. Clamps on blur and disables increment at max.
|
|
1167
|
+
*
|
|
1168
|
+
* @example
|
|
1169
|
+
* ```tsx
|
|
1170
|
+
* import { NumberField } from "@butternutbox/pawprint-native"
|
|
1171
|
+
*
|
|
1172
|
+
* <NumberField
|
|
1173
|
+
* label="Weight"
|
|
1174
|
+
* size="lg"
|
|
1175
|
+
* defaultValue="0"
|
|
1176
|
+
* onIncrement={() => setValue(v => v + 1)}
|
|
1177
|
+
* onDecrement={() => setValue(v => v - 1)}
|
|
1178
|
+
* />
|
|
1179
|
+
* ```
|
|
1180
|
+
*
|
|
1181
|
+
* Note: Unlike the web version, this component does not support a compound component API.
|
|
1182
|
+
*/
|
|
1183
|
+
declare const NumberField: React.ForwardRefExoticComponent<NumberFieldOwnProps & Omit<NumberFieldInputProps, "fieldSize" | keyof NumberFieldOwnProps> & Omit<ViewProps, keyof NumberFieldOwnProps> & React.RefAttributes<View>>;
|
|
1184
|
+
|
|
1185
|
+
/**
|
|
1186
|
+
* Input field component for PasswordField.
|
|
1187
|
+
* Wraps InputField with password visibility toggle.
|
|
1188
|
+
*
|
|
1189
|
+
* @param onValueChange - Value change handler
|
|
1190
|
+
* @param value - Controlled value
|
|
1191
|
+
* @param state - Visual state of the input
|
|
1192
|
+
* @param editable - Controls whether the input is editable
|
|
1193
|
+
*/
|
|
1194
|
+
declare const PasswordFieldInput: React.ForwardRefExoticComponent<Omit<PasswordFieldProps, "error" | "label" | "description" | "optionalText" | "requirements" | "showRequirements"> & React.RefAttributes<TextInput>>;
|
|
1195
|
+
|
|
1196
|
+
/**
|
|
1197
|
+
* Error message component for PasswordField.
|
|
1198
|
+
* Displays the error text with a RemoveCircle icon to match the design system
|
|
1199
|
+
* password validation styling.
|
|
1200
|
+
*
|
|
1201
|
+
* @param children - Error message text
|
|
1202
|
+
*/
|
|
1203
|
+
declare const PasswordFieldError: React.ForwardRefExoticComponent<{
|
|
1204
|
+
children?: React.ReactNode;
|
|
1205
|
+
} & ViewProps & React.RefAttributes<View>>;
|
|
1206
|
+
|
|
1207
|
+
type PasswordRequirement = {
|
|
1208
|
+
text: string;
|
|
1209
|
+
satisfied: boolean;
|
|
1210
|
+
};
|
|
1211
|
+
type PasswordFieldRequirementsOwnProps = {
|
|
1212
|
+
requirements: string[] | PasswordRequirement[];
|
|
1213
|
+
children?: never;
|
|
1214
|
+
};
|
|
1215
|
+
type PasswordFieldRequirementsProps = PasswordFieldRequirementsOwnProps & Omit<ViewProps, keyof PasswordFieldRequirementsOwnProps>;
|
|
1216
|
+
/**
|
|
1217
|
+
* Requirements list component for PasswordField.
|
|
1218
|
+
* Displays a list of password requirements with validation icons.
|
|
1219
|
+
*
|
|
1220
|
+
* @param requirements - Array of requirement strings or objects with text and satisfied status
|
|
1221
|
+
*/
|
|
1222
|
+
declare const PasswordFieldRequirements: React.ForwardRefExoticComponent<PasswordFieldRequirementsOwnProps & Omit<ViewProps, keyof PasswordFieldRequirementsOwnProps> & React.RefAttributes<View>>;
|
|
1223
|
+
|
|
1224
|
+
declare const StyledRoot$2: _emotion_native.StyledComponent<ViewProps & {
|
|
1225
|
+
theme?: _emotion_react.Theme;
|
|
1226
|
+
as?: React.ElementType;
|
|
1227
|
+
}, {}, {
|
|
1228
|
+
ref?: React.Ref<View> | undefined;
|
|
1229
|
+
}>;
|
|
1230
|
+
type PasswordFieldOwnProps = {
|
|
1231
|
+
label?: string;
|
|
1232
|
+
description?: string;
|
|
1233
|
+
error?: string | string[];
|
|
1234
|
+
state?: InputState;
|
|
1235
|
+
optionalText?: string;
|
|
1236
|
+
requirements?: string[] | PasswordRequirement[];
|
|
1237
|
+
showRequirements?: boolean;
|
|
1238
|
+
onValueChange?: (value: string) => void;
|
|
1239
|
+
};
|
|
1240
|
+
type PasswordFieldProps = PasswordFieldOwnProps & Omit<InputFieldProps, keyof PasswordFieldOwnProps> & Omit<ViewProps, keyof PasswordFieldOwnProps>;
|
|
1241
|
+
type PasswordFieldComponent = React.ForwardRefExoticComponent<PasswordFieldProps & React.RefAttributes<View>> & {
|
|
1242
|
+
Root: typeof StyledRoot$2;
|
|
1243
|
+
Label: typeof InputLabel;
|
|
1244
|
+
Field: typeof PasswordFieldInput;
|
|
1245
|
+
Description: typeof InputDescription;
|
|
1246
|
+
Requirements: typeof PasswordFieldRequirements;
|
|
1247
|
+
Error: typeof PasswordFieldError;
|
|
1248
|
+
};
|
|
1249
|
+
declare const PasswordField: PasswordFieldComponent;
|
|
1250
|
+
|
|
1251
|
+
type PasswordValidationRule = {
|
|
1252
|
+
test: (value: string) => boolean;
|
|
1253
|
+
message: string;
|
|
1254
|
+
};
|
|
1255
|
+
type UsePasswordFieldOptions = {
|
|
1256
|
+
initialValue?: string;
|
|
1257
|
+
onValueChange?: (value: string) => void;
|
|
1258
|
+
validationRules?: PasswordValidationRule[];
|
|
1259
|
+
autoShowRequirements?: boolean;
|
|
1260
|
+
};
|
|
1261
|
+
type UsePasswordFieldReturn = Pick<PasswordFieldProps, "value" | "onValueChange" | "state" | "requirements" | "showRequirements">;
|
|
1262
|
+
/**
|
|
1263
|
+
* Hook for managing PasswordField state with built-in validation.
|
|
1264
|
+
* Handles value, validation state, and requirements automatically.
|
|
1265
|
+
*
|
|
1266
|
+
* @example
|
|
1267
|
+
* ```tsx
|
|
1268
|
+
* // Simple usage without validation
|
|
1269
|
+
* const passwordProps = usePasswordField()
|
|
1270
|
+
* <PasswordField {...passwordProps} label="Password" />
|
|
1271
|
+
*
|
|
1272
|
+
* // With validation rules
|
|
1273
|
+
* const passwordProps = usePasswordField({
|
|
1274
|
+
* validationRules: [
|
|
1275
|
+
* { test: (v) => v.length >= 8, message: "At least 8 characters" },
|
|
1276
|
+
* { test: (v) => /[A-Z]/.test(v), message: "One uppercase letter" },
|
|
1277
|
+
* { test: (v) => /[a-z]/.test(v), message: "One lowercase letter" },
|
|
1278
|
+
* { test: (v) => /\d/.test(v), message: "One number" }
|
|
1279
|
+
* ]
|
|
1280
|
+
* })
|
|
1281
|
+
* <PasswordField {...passwordProps} label="Create Password" />
|
|
1282
|
+
* ```
|
|
1283
|
+
*
|
|
1284
|
+
* @param {string} [initialValue=""] - Initial password value
|
|
1285
|
+
* @param {(value: string) => void} [onValueChange] - Optional callback called after value changes
|
|
1286
|
+
* @param {PasswordValidationRule[]} [validationRules] - Array of validation rules
|
|
1287
|
+
* @param {boolean} [autoShowRequirements] - Whether to auto-show requirements (default: true when rules provided)
|
|
1288
|
+
*/
|
|
1289
|
+
declare function usePasswordField({ initialValue, onValueChange: onValueChangeCallback, validationRules, autoShowRequirements }?: UsePasswordFieldOptions): UsePasswordFieldReturn;
|
|
1290
|
+
|
|
1291
|
+
type ProgressSize = "sm" | "lg";
|
|
1292
|
+
type ProgressColour = "primary" | "secondary";
|
|
1293
|
+
type ProgressOwnProps = {
|
|
1294
|
+
value?: number;
|
|
1295
|
+
max?: number;
|
|
1296
|
+
size?: ProgressSize;
|
|
1297
|
+
colour?: ProgressColour;
|
|
1298
|
+
label?: React.ReactNode;
|
|
1299
|
+
description?: React.ReactNode;
|
|
1300
|
+
getValueLabel?: (value: number, max: number) => string;
|
|
1301
|
+
};
|
|
1302
|
+
type ProgressProps = ProgressOwnProps & Omit<ViewProps, keyof ProgressOwnProps>;
|
|
1303
|
+
/**
|
|
1304
|
+
* A horizontal progress bar that visualises the completion of a determinate
|
|
1305
|
+
* task. Supports an optional label (top-left) and description (top-right),
|
|
1306
|
+
* two sizes, and two indicator colours.
|
|
1307
|
+
*
|
|
1308
|
+
* Wraps `@rn-primitives/progress` for accessibility.
|
|
1309
|
+
*
|
|
1310
|
+
* @param {number} [value=0] - Current progress value (0 to `max`). Clamped.
|
|
1311
|
+
* @param {number} [max=100] - Maximum value representing 100% completion.
|
|
1312
|
+
* @param {"sm" | "lg"} [size="sm"] - Track height: sm (8px) or lg (16px).
|
|
1313
|
+
* @param {"primary" | "secondary"} [colour="primary"] - Indicator fill colour.
|
|
1314
|
+
* @param {React.ReactNode} [label] - Label rendered in the top-left above the track.
|
|
1315
|
+
* @param {React.ReactNode} [description] - Helper text rendered in the top-right above the track.
|
|
1316
|
+
* @param {(value: number, max: number) => string} [getValueLabel] - Accessible value label.
|
|
1317
|
+
*
|
|
1318
|
+
* @example
|
|
1319
|
+
* ```tsx
|
|
1320
|
+
* import { Progress } from "@butternutbox/pawprint-native"
|
|
1321
|
+
*
|
|
1322
|
+
* <Progress label="Box capacity" description="14/14" value={100} />
|
|
1323
|
+
* ```
|
|
1324
|
+
*/
|
|
1325
|
+
declare const Progress: React.ForwardRefExoticComponent<ProgressOwnProps & Omit<ViewProps, keyof ProgressOwnProps> & React.RefAttributes<View>>;
|
|
1326
|
+
|
|
669
1327
|
type RadioOwnProps = {
|
|
670
1328
|
value: string;
|
|
671
1329
|
variant?: "standalone" | "tile";
|
|
@@ -709,6 +1367,60 @@ type RadioGroupComponent = React.ForwardRefExoticComponent<RadioGroupProps & Rea
|
|
|
709
1367
|
};
|
|
710
1368
|
declare const RadioGroup: RadioGroupComponent;
|
|
711
1369
|
|
|
1370
|
+
declare const SearchFieldInput: React.ForwardRefExoticComponent<Omit<SearchFieldProps, "error" | "label" | "description" | "optionalText"> & React.RefAttributes<TextInput>>;
|
|
1371
|
+
|
|
1372
|
+
declare const StyledRoot$1: _emotion_native.StyledComponent<ViewProps & {
|
|
1373
|
+
theme?: _emotion_react.Theme;
|
|
1374
|
+
as?: React.ElementType;
|
|
1375
|
+
}, {}, {
|
|
1376
|
+
ref?: React.Ref<View> | undefined;
|
|
1377
|
+
}>;
|
|
1378
|
+
type SearchFieldOwnProps = {
|
|
1379
|
+
label?: string;
|
|
1380
|
+
description?: string;
|
|
1381
|
+
error?: string;
|
|
1382
|
+
state?: InputState;
|
|
1383
|
+
optionalText?: string;
|
|
1384
|
+
onClear?: () => void;
|
|
1385
|
+
onValueChange?: (value: string) => void;
|
|
1386
|
+
};
|
|
1387
|
+
type SearchFieldProps = SearchFieldOwnProps & Omit<InputFieldProps, keyof SearchFieldOwnProps> & Omit<ViewProps, keyof SearchFieldOwnProps>;
|
|
1388
|
+
type SearchFieldComponent = React.ForwardRefExoticComponent<SearchFieldProps & React.RefAttributes<View>> & {
|
|
1389
|
+
Root: typeof StyledRoot$1;
|
|
1390
|
+
Label: typeof InputLabel;
|
|
1391
|
+
Field: typeof SearchFieldInput;
|
|
1392
|
+
Description: typeof InputDescription;
|
|
1393
|
+
Error: typeof InputError;
|
|
1394
|
+
};
|
|
1395
|
+
declare const SearchField: SearchFieldComponent;
|
|
1396
|
+
|
|
1397
|
+
type UseSearchFieldOptions = {
|
|
1398
|
+
initialValue?: string;
|
|
1399
|
+
onValueChange?: (value: string) => void;
|
|
1400
|
+
onClear?: () => void;
|
|
1401
|
+
};
|
|
1402
|
+
type UseSearchFieldReturn = Pick<SearchFieldProps, "value" | "onValueChange" | "onClear">;
|
|
1403
|
+
/**
|
|
1404
|
+
* Hook for managing SearchField state with optional additional callbacks.
|
|
1405
|
+
* Handles the common pattern of controlled SearchField with value/onValueChange/onClear.
|
|
1406
|
+
*
|
|
1407
|
+
* @example
|
|
1408
|
+
* ```tsx
|
|
1409
|
+
* const searchProps = useSearchField({
|
|
1410
|
+
* initialValue: "",
|
|
1411
|
+
* onValueChange: (value) => triggerSearch(value),
|
|
1412
|
+
* onClear: () => resetResults()
|
|
1413
|
+
* })
|
|
1414
|
+
*
|
|
1415
|
+
* <SearchField {...searchProps} placeholder="Search..." />
|
|
1416
|
+
* ```
|
|
1417
|
+
*
|
|
1418
|
+
* @param {string} [initialValue=""] - Initial search value
|
|
1419
|
+
* @param {(value: string) => void} [onValueChange] - Optional callback called after value changes
|
|
1420
|
+
* @param {() => void} [onClear] - Optional callback called after clearing (in addition to clearing the value)
|
|
1421
|
+
*/
|
|
1422
|
+
declare function useSearchField({ initialValue, onValueChange: onValueChangeCallback, onClear: onClearCallback }?: UseSearchFieldOptions): UseSearchFieldReturn;
|
|
1423
|
+
|
|
712
1424
|
type SegmentedControlLayout = "fixed" | "intrinsic";
|
|
713
1425
|
type SegmentedControlOption = {
|
|
714
1426
|
value: string;
|
|
@@ -739,6 +1451,103 @@ type SegmentedControlComponent = React.ForwardRefExoticComponent<SegmentedContro
|
|
|
739
1451
|
};
|
|
740
1452
|
declare const SegmentedControl: SegmentedControlComponent;
|
|
741
1453
|
|
|
1454
|
+
type SelectFieldTriggerOwnProps = {
|
|
1455
|
+
state?: InputState;
|
|
1456
|
+
leadingIcon?: React.ReactNode;
|
|
1457
|
+
children?: React.ReactNode;
|
|
1458
|
+
isOpen?: boolean;
|
|
1459
|
+
};
|
|
1460
|
+
type SelectFieldTriggerProps = SelectFieldTriggerOwnProps & Omit<PressableProps, keyof SelectFieldTriggerOwnProps>;
|
|
1461
|
+
declare const SelectFieldTrigger: React.ForwardRefExoticComponent<SelectFieldTriggerOwnProps & Omit<PressableProps, keyof SelectFieldTriggerOwnProps> & React.RefAttributes<View>>;
|
|
1462
|
+
|
|
1463
|
+
declare const SelectFieldValue: React.ForwardRefExoticComponent<{
|
|
1464
|
+
placeholder?: string;
|
|
1465
|
+
} & Omit<TextProps, "children"> & React.RefAttributes<Text>>;
|
|
1466
|
+
|
|
1467
|
+
declare const SelectFieldContent: React.ForwardRefExoticComponent<{
|
|
1468
|
+
children?: React.ReactNode;
|
|
1469
|
+
} & Omit<ViewProps, "children"> & React.RefAttributes<View>>;
|
|
1470
|
+
|
|
1471
|
+
type SelectFieldItemOwnProps = {
|
|
1472
|
+
value: string;
|
|
1473
|
+
leadingIcon?: React.ReactNode;
|
|
1474
|
+
hintText?: string;
|
|
1475
|
+
disabled?: boolean;
|
|
1476
|
+
isSelected?: boolean;
|
|
1477
|
+
};
|
|
1478
|
+
type SelectFieldItemProps = SelectFieldItemOwnProps & Omit<PressableProps, keyof SelectFieldItemOwnProps>;
|
|
1479
|
+
declare const SelectFieldItem: React.ForwardRefExoticComponent<SelectFieldItemOwnProps & Omit<PressableProps, keyof SelectFieldItemOwnProps> & React.RefAttributes<View>>;
|
|
1480
|
+
|
|
1481
|
+
declare const StyledRoot: _emotion_native.StyledComponent<ViewProps & {
|
|
1482
|
+
theme?: _emotion_react.Theme;
|
|
1483
|
+
as?: React.ElementType;
|
|
1484
|
+
}, {}, {
|
|
1485
|
+
ref?: React.Ref<View> | undefined;
|
|
1486
|
+
}>;
|
|
1487
|
+
type SelectFieldOwnProps<Value = Option | string> = {
|
|
1488
|
+
label?: string;
|
|
1489
|
+
description?: string;
|
|
1490
|
+
error?: string;
|
|
1491
|
+
state?: InputState;
|
|
1492
|
+
optionalText?: string;
|
|
1493
|
+
placeholder?: string;
|
|
1494
|
+
leadingIcon?: React.ReactNode;
|
|
1495
|
+
value?: Value | null;
|
|
1496
|
+
defaultValue?: Value | null;
|
|
1497
|
+
onValueChange?: (value: Value | null) => void;
|
|
1498
|
+
children?: React.ReactNode;
|
|
1499
|
+
disabled?: boolean;
|
|
1500
|
+
};
|
|
1501
|
+
type SelectFieldProps<Value = Option> = SelectFieldOwnProps<Value> & Omit<ViewProps, keyof SelectFieldOwnProps<Value>>;
|
|
1502
|
+
type SelectFieldComponent = React.ForwardRefExoticComponent<SelectFieldProps<Option | string> & React.RefAttributes<View>> & {
|
|
1503
|
+
Root: typeof StyledRoot;
|
|
1504
|
+
Label: typeof InputLabel;
|
|
1505
|
+
Trigger: typeof SelectFieldTrigger;
|
|
1506
|
+
Value: typeof SelectFieldValue;
|
|
1507
|
+
Content: typeof SelectFieldContent;
|
|
1508
|
+
Item: typeof SelectFieldItem;
|
|
1509
|
+
Description: typeof InputDescription;
|
|
1510
|
+
Error: typeof InputError;
|
|
1511
|
+
};
|
|
1512
|
+
declare const SelectField: SelectFieldComponent;
|
|
1513
|
+
|
|
1514
|
+
type SelectValidationRule<T = string | Option> = {
|
|
1515
|
+
test: (value: T | null) => boolean;
|
|
1516
|
+
message: string;
|
|
1517
|
+
};
|
|
1518
|
+
type SelectOptions<T = string | Option> = {
|
|
1519
|
+
initialValue?: T | null;
|
|
1520
|
+
onValueChange?: (value: T | null) => void;
|
|
1521
|
+
validationRule?: SelectValidationRule<T>;
|
|
1522
|
+
};
|
|
1523
|
+
type SelectReturn<T = string | Option> = {
|
|
1524
|
+
value: T | null;
|
|
1525
|
+
onValueChange: (value: T | null) => void;
|
|
1526
|
+
state?: InputState;
|
|
1527
|
+
error?: string;
|
|
1528
|
+
};
|
|
1529
|
+
/**
|
|
1530
|
+
* Hook for managing SelectField state with built-in validation.
|
|
1531
|
+
* Handles value, validation state, and error message automatically.
|
|
1532
|
+
*
|
|
1533
|
+
* @example
|
|
1534
|
+
* ```tsx
|
|
1535
|
+
* // Simple usage without validation
|
|
1536
|
+
* const selectProps = useSelectField()
|
|
1537
|
+
* <SelectField {...selectProps} label="Country" />
|
|
1538
|
+
*
|
|
1539
|
+
* // With validation rule
|
|
1540
|
+
* const selectProps = useSelectField({
|
|
1541
|
+
* validationRule: {
|
|
1542
|
+
* test: (v) => v !== null,
|
|
1543
|
+
* message: "Please select an option"
|
|
1544
|
+
* }
|
|
1545
|
+
* })
|
|
1546
|
+
* <SelectField {...selectProps} label="Category" />
|
|
1547
|
+
* ```
|
|
1548
|
+
*/
|
|
1549
|
+
declare function useSelectField<T = string | Option>(options?: SelectOptions<T>): SelectReturn<T>;
|
|
1550
|
+
|
|
742
1551
|
type SliderOwnProps = {
|
|
743
1552
|
value?: number;
|
|
744
1553
|
defaultValue?: number;
|
|
@@ -777,4 +1586,294 @@ type SliderProps = SliderOwnProps & Omit<ViewProps, keyof SliderOwnProps>;
|
|
|
777
1586
|
*/
|
|
778
1587
|
declare const Slider: React.ForwardRefExoticComponent<SliderOwnProps & Omit<ViewProps, keyof SliderOwnProps> & React.RefAttributes<View>>;
|
|
779
1588
|
|
|
780
|
-
|
|
1589
|
+
type NotificationType = "error" | "success" | "warning" | "info";
|
|
1590
|
+
type NotificationSize = "sm" | "lg";
|
|
1591
|
+
type BaseProps = {
|
|
1592
|
+
type?: NotificationType;
|
|
1593
|
+
showIcon?: boolean;
|
|
1594
|
+
children: React.ReactNode;
|
|
1595
|
+
};
|
|
1596
|
+
type InlineVariantProps = BaseProps & {
|
|
1597
|
+
variant?: "inline";
|
|
1598
|
+
title?: string;
|
|
1599
|
+
onClose?: () => void;
|
|
1600
|
+
size?: never;
|
|
1601
|
+
link?: never;
|
|
1602
|
+
};
|
|
1603
|
+
type ToastVariantProps = BaseProps & {
|
|
1604
|
+
variant: "toast";
|
|
1605
|
+
onClose?: () => void;
|
|
1606
|
+
link?: {
|
|
1607
|
+
label: string;
|
|
1608
|
+
href?: string;
|
|
1609
|
+
onPress?: () => void;
|
|
1610
|
+
};
|
|
1611
|
+
title?: never;
|
|
1612
|
+
size?: never;
|
|
1613
|
+
};
|
|
1614
|
+
type SystemVariantProps = BaseProps & {
|
|
1615
|
+
variant: "system";
|
|
1616
|
+
size?: NotificationSize;
|
|
1617
|
+
title?: never;
|
|
1618
|
+
onClose?: never;
|
|
1619
|
+
link?: never;
|
|
1620
|
+
};
|
|
1621
|
+
type NotificationOwnProps = InlineVariantProps | ToastVariantProps | SystemVariantProps;
|
|
1622
|
+
type NotificationProps = NotificationOwnProps & Omit<ViewProps, keyof NotificationOwnProps>;
|
|
1623
|
+
/**
|
|
1624
|
+
* Displays contextual feedback messages to users. Supports three layout
|
|
1625
|
+
* variants — inline (within content flow), toast (floating overlay), and
|
|
1626
|
+
* system (full-width banner) — each with four severity types.
|
|
1627
|
+
*
|
|
1628
|
+
* Note: Unlike the web version, toast link uses `onPress` callback instead
|
|
1629
|
+
* of `href` for navigation. The `href` prop is also available and opens
|
|
1630
|
+
* the URL via `Linking`.
|
|
1631
|
+
*
|
|
1632
|
+
* @param {"inline" | "toast" | "system"} [variant="inline"] - Layout variant.
|
|
1633
|
+
* @param {"error" | "success" | "warning" | "info"} [type="error"] - Severity type controlling colours and icon.
|
|
1634
|
+
* @param {boolean} [showIcon=true] - Whether to show the status icon.
|
|
1635
|
+
* @param {string} [title] - Optional headline (inline variant only).
|
|
1636
|
+
* @param {() => void} [onClose] - Close callback (inline and toast variants).
|
|
1637
|
+
* @param {{ label: string; href?: string; onPress?: () => void }} [link] - Optional action link (toast variant only).
|
|
1638
|
+
* @param {"sm" | "lg"} [size="sm"] - Size variant (system variant only).
|
|
1639
|
+
* @param {React.ReactNode} children - The notification body text.
|
|
1640
|
+
*
|
|
1641
|
+
* @example
|
|
1642
|
+
* ```tsx
|
|
1643
|
+
* import { Notification } from "@butternutbox/pawprint-native"
|
|
1644
|
+
*
|
|
1645
|
+
* <Notification type="success" title="Order confirmed">
|
|
1646
|
+
* Your order has been placed successfully.
|
|
1647
|
+
* </Notification>
|
|
1648
|
+
* ```
|
|
1649
|
+
*/
|
|
1650
|
+
declare const Notification: React.ForwardRefExoticComponent<NotificationProps & React.RefAttributes<View>>;
|
|
1651
|
+
|
|
1652
|
+
type TooltipAlignment = "left" | "middle" | "right";
|
|
1653
|
+
type TooltipPosition = "top" | "bottom";
|
|
1654
|
+
type TooltipOwnProps = {
|
|
1655
|
+
text: string;
|
|
1656
|
+
alignment?: TooltipAlignment;
|
|
1657
|
+
position?: TooltipPosition;
|
|
1658
|
+
/**
|
|
1659
|
+
* Trigger element. When provided the component manages its own open/close
|
|
1660
|
+
* state (press-to-toggle, animated). Omit for static rendering (docs stories).
|
|
1661
|
+
*
|
|
1662
|
+
* Requires a <PortalHost /> at the application root.
|
|
1663
|
+
*/
|
|
1664
|
+
children?: React.ReactNode;
|
|
1665
|
+
};
|
|
1666
|
+
type TooltipProps = TooltipOwnProps & Omit<ViewProps, keyof TooltipOwnProps>;
|
|
1667
|
+
declare const Tooltip: React.ForwardRefExoticComponent<TooltipOwnProps & Omit<ViewProps, keyof TooltipOwnProps> & React.RefAttributes<View>>;
|
|
1668
|
+
|
|
1669
|
+
type PawprintIllustration$1 = React.ComponentType<{
|
|
1670
|
+
width?: number;
|
|
1671
|
+
height?: number;
|
|
1672
|
+
}>;
|
|
1673
|
+
type InsightVariant = "standalone" | "supporting";
|
|
1674
|
+
type MessageCardInsightOwnProps = {
|
|
1675
|
+
variant?: InsightVariant;
|
|
1676
|
+
icon?: PawprintIcon;
|
|
1677
|
+
illustration?: PawprintIllustration$1;
|
|
1678
|
+
title?: string;
|
|
1679
|
+
children: React.ReactNode;
|
|
1680
|
+
};
|
|
1681
|
+
type MessageCardInsightProps = MessageCardInsightOwnProps & Omit<ViewProps, keyof MessageCardInsightOwnProps>;
|
|
1682
|
+
/**
|
|
1683
|
+
* Yellow highlight card for bite-sized USPs and trust signals.
|
|
1684
|
+
*
|
|
1685
|
+
* @param {"standalone" | "supporting"} [variant="standalone"] - `supporting`
|
|
1686
|
+
* renders a flat top edge when attached to a related element above.
|
|
1687
|
+
* @param {PawprintIcon} [icon] - Optional core icon. Ignored when
|
|
1688
|
+
* `illustration` is provided.
|
|
1689
|
+
* @param {PawprintIllustration} [illustration] - Optional illustration; takes
|
|
1690
|
+
* precedence over `icon`.
|
|
1691
|
+
* @param {string} [title] - Optional headline. Renders above the body copy
|
|
1692
|
+
* in both `standalone` and `supporting` variants.
|
|
1693
|
+
* @param {React.ReactNode} children - Body copy.
|
|
1694
|
+
*/
|
|
1695
|
+
declare const MessageCardInsight: React.ForwardRefExoticComponent<MessageCardInsightOwnProps & Omit<ViewProps, keyof MessageCardInsightOwnProps> & React.RefAttributes<View>>;
|
|
1696
|
+
type BannerColourScheme = "primary" | "secondary";
|
|
1697
|
+
type MessageCardBannerMedia = {
|
|
1698
|
+
type: "image";
|
|
1699
|
+
source: ImageSourcePropType;
|
|
1700
|
+
alt?: string;
|
|
1701
|
+
} | {
|
|
1702
|
+
type: "illustration";
|
|
1703
|
+
illustration: PawprintIllustration$1;
|
|
1704
|
+
};
|
|
1705
|
+
type MessageCardBannerOwnProps = {
|
|
1706
|
+
colourScheme?: BannerColourScheme;
|
|
1707
|
+
media?: MessageCardBannerMedia;
|
|
1708
|
+
title?: string;
|
|
1709
|
+
children: React.ReactNode;
|
|
1710
|
+
linkLabel?: string;
|
|
1711
|
+
linkHref?: string;
|
|
1712
|
+
onLinkPress?: () => void;
|
|
1713
|
+
};
|
|
1714
|
+
type MessageCardBannerProps = MessageCardBannerOwnProps & Omit<ViewProps, keyof MessageCardBannerOwnProps>;
|
|
1715
|
+
/**
|
|
1716
|
+
* Horizontal card with an image or illustration, title, body copy and an
|
|
1717
|
+
* optional link CTA.
|
|
1718
|
+
*
|
|
1719
|
+
* @param {"primary" | "secondary"} [colourScheme="primary"] - Background
|
|
1720
|
+
* scheme. `primary` is saturated yellow; `secondary` is a lighter cream.
|
|
1721
|
+
* @param {MessageCardBannerMedia} [media] - Tagged slot accepting either
|
|
1722
|
+
* `{ type: "image", source, alt }` or `{ type: "illustration", illustration }`.
|
|
1723
|
+
* @param {string} [title] - Optional headline.
|
|
1724
|
+
* @param {React.ReactNode} children - Body copy.
|
|
1725
|
+
* @param {string} [linkLabel] - CTA label. When provided with `linkHref` or
|
|
1726
|
+
* `onLinkPress`, renders a link row.
|
|
1727
|
+
* @param {string} [linkHref] - URL opened via `Linking` when pressed.
|
|
1728
|
+
* @param {() => void} [onLinkPress] - Callback when the CTA is pressed.
|
|
1729
|
+
*/
|
|
1730
|
+
declare const MessageCardBanner: React.ForwardRefExoticComponent<MessageCardBannerOwnProps & Omit<ViewProps, keyof MessageCardBannerOwnProps> & React.RefAttributes<View>>;
|
|
1731
|
+
/**
|
|
1732
|
+
* Compound component exposing two sub-components:
|
|
1733
|
+
*
|
|
1734
|
+
* - `MessageCard.Insight` — yellow trust-signal card
|
|
1735
|
+
* - `MessageCard.Banner` — horizontal image/illustration + copy + optional CTA
|
|
1736
|
+
*/
|
|
1737
|
+
declare const MessageCard: {
|
|
1738
|
+
Insight: React.ForwardRefExoticComponent<MessageCardInsightOwnProps & Omit<ViewProps, keyof MessageCardInsightOwnProps> & React.RefAttributes<View>>;
|
|
1739
|
+
Banner: React.ForwardRefExoticComponent<MessageCardBannerOwnProps & Omit<ViewProps, keyof MessageCardBannerOwnProps> & React.RefAttributes<View>>;
|
|
1740
|
+
};
|
|
1741
|
+
|
|
1742
|
+
/**
|
|
1743
|
+
* Visual state for a calendar date cell.
|
|
1744
|
+
*
|
|
1745
|
+
* - `previous` — Dates before today. Non-interactive, shown in muted text.
|
|
1746
|
+
* - `current` — Today's date. Bold + underlined, no indicator fill.
|
|
1747
|
+
* - `default` — A future date with no scheduled delivery. Plain text.
|
|
1748
|
+
* - `nextBox` — The next scheduled box delivery date. Filled dark indicator.
|
|
1749
|
+
* When selected (`selectedDate` matches): dashed-border indicator.
|
|
1750
|
+
* When disabled (`isDateDisabled` returns true): shown at reduced opacity (undeliverable — e.g. bank holiday).
|
|
1751
|
+
* - `futureBox` — A future recurring delivery slot (cadence-based, typically weekly).
|
|
1752
|
+
* Beige indicator by default.
|
|
1753
|
+
* When selected: dashed-border indicator (projected future delivery after user's chosen date).
|
|
1754
|
+
* When disabled: shown at reduced opacity (undeliverable — e.g. bank holiday).
|
|
1755
|
+
*/
|
|
1756
|
+
type DateItemState = "default" | "previous" | "current" | "nextBox" | "futureBox";
|
|
1757
|
+
type DatePickerOwnProps = {
|
|
1758
|
+
year: number;
|
|
1759
|
+
month: number;
|
|
1760
|
+
selectedDate?: Date | null;
|
|
1761
|
+
selectedDates?: Date[];
|
|
1762
|
+
onDateSelect?: (date: Date) => void;
|
|
1763
|
+
onPrevMonth?: () => void;
|
|
1764
|
+
onNextMonth?: () => void;
|
|
1765
|
+
onMonthChange?: (year: number, month: number) => void;
|
|
1766
|
+
showWeekHeader?: boolean;
|
|
1767
|
+
showPrevControl?: boolean;
|
|
1768
|
+
showNextControl?: boolean;
|
|
1769
|
+
locale?: Locale;
|
|
1770
|
+
monthLabel?: string;
|
|
1771
|
+
weekDayLabels?: [string, string, string, string, string, string, string];
|
|
1772
|
+
getDateState?: (date: Date) => DateItemState;
|
|
1773
|
+
isDateDisabled?: (date: Date) => boolean;
|
|
1774
|
+
minDate?: Date;
|
|
1775
|
+
maxDate?: Date;
|
|
1776
|
+
};
|
|
1777
|
+
type DatePickerProps = DatePickerOwnProps & Omit<ViewProps, keyof DatePickerOwnProps>;
|
|
1778
|
+
/**
|
|
1779
|
+
* A controlled calendar date-picker showing a single month grid.
|
|
1780
|
+
*
|
|
1781
|
+
* Supports date states: default, previous, current, nextBox, futureBox.
|
|
1782
|
+
* Prev/next month navigation and the week-day header are optional.
|
|
1783
|
+
*
|
|
1784
|
+
* Note: Unlike the web version, there is no hover state (not available on mobile).
|
|
1785
|
+
*
|
|
1786
|
+
* @param {number} year - Full year (e.g. 2026).
|
|
1787
|
+
* @param {number} month - Zero-based month index (0–11).
|
|
1788
|
+
* @param {Date | null} [selectedDate] - Currently selected date.
|
|
1789
|
+
* @param {(date: Date) => void} [onDateSelect] - Called when the user selects a date.
|
|
1790
|
+
* @param {() => void} [onPrevMonth] - Called when the prev-month control is pressed.
|
|
1791
|
+
* @param {() => void} [onNextMonth] - Called when the next-month control is pressed.
|
|
1792
|
+
* @param {(year: number, month: number) => void} [onMonthChange] - Called with the new year and month (0-based) whenever the month changes via prev/next.
|
|
1793
|
+
* @param {boolean} [showWeekHeader=true] - Show the Mon–Sun column headers.
|
|
1794
|
+
* @param {boolean} [showPrevControl=true] - Show the left chevron control.
|
|
1795
|
+
* @param {boolean} [showNextControl=true] - Show the right chevron control.
|
|
1796
|
+
* @param {string} [monthLabel] - Override the month/year label (defaults to Intl formatting).
|
|
1797
|
+
* @param {[string,string,string,string,string,string,string]} [weekDayLabels] - Day-column labels Mon→Sun.
|
|
1798
|
+
* @param {(date: Date) => DateItemState} [getDateState] - Returns the visual state for a date.
|
|
1799
|
+
* Defaults to: past="previous", today="current", future="default".
|
|
1800
|
+
* @param {(date: Date) => boolean} [isDateDisabled] - Returns true to disable a date.
|
|
1801
|
+
* @param {Date} [minDate] - Dates before this (exclusive of time) will be disabled.
|
|
1802
|
+
* @param {Date} [maxDate] - Dates after this (exclusive of time) will be disabled.
|
|
1803
|
+
*
|
|
1804
|
+
* @example
|
|
1805
|
+
* ```tsx
|
|
1806
|
+
* import { DatePicker } from "@butternutbox/pawprint-native"
|
|
1807
|
+
*
|
|
1808
|
+
* const [month, setMonth] = React.useState(new Date().getMonth())
|
|
1809
|
+
* const [year, setYear] = React.useState(new Date().getFullYear())
|
|
1810
|
+
* const [selected, setSelected] = React.useState<Date | null>(null)
|
|
1811
|
+
*
|
|
1812
|
+
* <DatePicker
|
|
1813
|
+
* year={year}
|
|
1814
|
+
* month={month}
|
|
1815
|
+
* selectedDate={selected}
|
|
1816
|
+
* onDateSelect={setSelected}
|
|
1817
|
+
* onPrevMonth={() => setMonth(m => m === 0 ? (setYear(y => y - 1), 11) : m - 1)}
|
|
1818
|
+
* onNextMonth={() => setMonth(m => m === 11 ? (setYear(y => y + 1), 0) : m + 1)}
|
|
1819
|
+
* />
|
|
1820
|
+
* ```
|
|
1821
|
+
*/
|
|
1822
|
+
declare const DatePicker: React.ForwardRefExoticComponent<DatePickerOwnProps & Omit<ViewProps, keyof DatePickerOwnProps> & React.RefAttributes<View>>;
|
|
1823
|
+
|
|
1824
|
+
type PawprintIllustration = React.ComponentType<{
|
|
1825
|
+
width?: number;
|
|
1826
|
+
height?: number;
|
|
1827
|
+
}>;
|
|
1828
|
+
type PictureSelectorItem = {
|
|
1829
|
+
value: string;
|
|
1830
|
+
illustration?: PawprintIllustration;
|
|
1831
|
+
icon?: PawprintIcon;
|
|
1832
|
+
disabled?: boolean;
|
|
1833
|
+
ariaLabel?: string;
|
|
1834
|
+
insightTitle?: string;
|
|
1835
|
+
insightDescription?: React.ReactNode;
|
|
1836
|
+
};
|
|
1837
|
+
type PictureSelectorOwnProps = {
|
|
1838
|
+
label?: string;
|
|
1839
|
+
items: PictureSelectorItem[];
|
|
1840
|
+
value?: string;
|
|
1841
|
+
defaultValue?: string;
|
|
1842
|
+
onValueChange?: (value: string) => void;
|
|
1843
|
+
/** Optional fixed card width (px). Defaults to `100%` (fluid). */
|
|
1844
|
+
itemWidth?: number;
|
|
1845
|
+
/** Card aspect ratio (width / height). Defaults to `1` (square). */
|
|
1846
|
+
itemAspectRatio?: number;
|
|
1847
|
+
/** Optional floor on each card's width (px). No default. */
|
|
1848
|
+
itemMinWidth?: number;
|
|
1849
|
+
/** Optional floor on each card's height (px). No default. */
|
|
1850
|
+
itemMinHeight?: number;
|
|
1851
|
+
};
|
|
1852
|
+
type PictureSelectorProps = PictureSelectorOwnProps & Omit<ViewProps, keyof PictureSelectorOwnProps>;
|
|
1853
|
+
/**
|
|
1854
|
+
* A horizontal group of image/illustration buttons where one is selectable at
|
|
1855
|
+
* a time. When the selected item has `insightTitle`/`insightDescription`, a
|
|
1856
|
+
* `MessageCard.Insight` (standalone variant) renders below the row with a
|
|
1857
|
+
* pointer beneath the selected button linking the two. The pointer moves with
|
|
1858
|
+
* the selection.
|
|
1859
|
+
*
|
|
1860
|
+
* By default each card fills the width of its flex item (`width: 100%`)
|
|
1861
|
+
* and is square (`aspectRatio: 1`). Override with `itemWidth` for a fixed
|
|
1862
|
+
* width, `itemAspectRatio` for a non-square shape, and `itemMinWidth` /
|
|
1863
|
+
* `itemMinHeight` for per-dim minimum floors.
|
|
1864
|
+
*
|
|
1865
|
+
* @param {string} [label] - Optional headline above the row.
|
|
1866
|
+
* @param {PictureSelectorItem[]} items - 3 or 4 items to choose between.
|
|
1867
|
+
* @param {string} [value] - Controlled selected value.
|
|
1868
|
+
* @param {string} [defaultValue] - Uncontrolled initial selected value.
|
|
1869
|
+
* @param {(value: string) => void} [onValueChange] - Fires when selection changes.
|
|
1870
|
+
* @param {number} [itemWidth] - Fixed card width (px). Defaults to `100%`.
|
|
1871
|
+
* @param {number} [itemAspectRatio=1] - Card aspect ratio (width / height).
|
|
1872
|
+
* @param {number} [itemMinWidth] - Optional override for the card's min-width.
|
|
1873
|
+
* Defaults to `pictureButton.size.minWidth` (80px).
|
|
1874
|
+
* @param {number} [itemMinHeight] - Optional override for the card's min-height.
|
|
1875
|
+
* Defaults to `pictureButton.size.minHeight` (120px).
|
|
1876
|
+
*/
|
|
1877
|
+
declare const PictureSelector: React.ForwardRefExoticComponent<PictureSelectorOwnProps & Omit<ViewProps, keyof PictureSelectorOwnProps> & React.RefAttributes<View>>;
|
|
1878
|
+
|
|
1879
|
+
export { Accordion, type AccordionItemProps, type AccordionProps, type AccordionSize, Animated, type AnimatedProps, type AnimatedVariant, Avatar, type AvatarFallbackType, type AvatarProps, type AvatarSize, BRAND_FONTS, Badge, type BadgeProps, Button, type ButtonColour, ButtonDock, type ButtonDockProps, type ButtonDockVariant, ButtonGroup, type ButtonGroupLayout, type ButtonGroupProps, type ButtonProps, type ButtonSize, type ButtonVariant, CarouselControls, type CarouselControlsProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, type CheckboxVariant, CopyField, CopyFieldInput, type CopyFieldProps, type DateItemState, DatePicker, type DatePickerProps, Drawer, type DrawerBodyProps, type DrawerCloseProps, type DrawerContentProps, type DrawerDescriptionProps, type DrawerFooterProps, type DrawerGrabberProps, type DrawerHeaderProps, type DrawerHeaderVariant, type DrawerOverlayProps, type DrawerProps, type DrawerTitleProps, type DrawerTriggerProps, FilterTab, type FilterTabItemProps, type FilterTabProps, Hint, type HintProps, Icon, IconButton, type IconButtonColour, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconCategory, type IconColour, type IconProps, type IconSize, Illustration, type IllustrationProps, type IllustrationSize, Input, InputDescription, type InputDescriptionProps, InputError, type InputErrorProps, InputField, type InputFieldProps, InputLabel, type InputLabelProps, type InputProps, Link, type LinkProps, type LinkSize, type LinkWeight, Logo, type LogoBrand, type LogoProps, type LogoSvgComponent, type LogoVariant, MessageCard, MessageCardBanner, type MessageCardBannerMedia, type MessageCardBannerProps, MessageCardInsight, type MessageCardInsightProps, Notification, type NotificationProps, NumberField, type NumberFieldProps, NumberInput, NumberInputField, type NumberInputFieldProps, type NumberInputProps, PasswordField, PasswordFieldInput, type PasswordFieldProps, PasswordFieldRequirements, type PasswordFieldRequirementsProps, type PasswordRequirement, type PasswordValidationRule, type PawprintIcon, type PawprintIllustration$2 as PawprintIllustration, PawprintProvider, type PawprintProviderProps, PictureSelector, type PictureSelectorItem, type PictureSelectorProps, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioOwnProps, type RadioProps, SearchField, SearchFieldInput, type SearchFieldProps, SegmentedControl, type SegmentedControlItemProps, type SegmentedControlProps, SelectField, SelectFieldContent, SelectFieldItem, type SelectFieldItemProps, type SelectFieldProps, SelectFieldTrigger, type SelectFieldTriggerProps, SelectFieldValue, type SelectValidationRule, Slider, type SliderProps, Spinner, type SpinnerProps, type SpinnerSize, type SpinnerVariant, Switch, type SwitchProps, Tag, type TagProps, TextArea, TextAreaField, type TextAreaFieldProps, TextAreaLabel, type TextAreaLabelProps, type TextAreaProps, ThemeProvider, Tooltip, type TooltipProps, Typography, type TypographyProps, createPawprintTheme, fadeAnimation, fadeDownAnimation, fadeUpAnimation, registerLogo, resolveFont, resolveLogo, scaleAnimation, slideInAnimation, slideOutAnimation, theme, useCopyField, usePasswordField, usePawprint, useSearchField, useSelectField };
|