jfs-components 0.0.77 → 0.0.78
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/CHANGELOG.md +17 -0
- package/lib/commonjs/components/Accordion/Accordion.js +55 -55
- package/lib/commonjs/components/ActionFooter/ActionFooter.js +48 -2
- package/lib/commonjs/components/Checkbox/Checkbox.js +21 -9
- package/lib/commonjs/components/DropdownInput/DropdownInput.js +30 -16
- package/lib/commonjs/components/ExpandableCheckbox/ExpandableCheckbox.js +167 -0
- package/lib/commonjs/components/FormField/FormField.js +14 -1
- package/lib/commonjs/components/FullscreenModal/FullscreenModal.js +355 -0
- package/lib/commonjs/components/ListItem/ListItem.js +25 -10
- package/lib/commonjs/components/MessageField/MessageField.js +318 -0
- package/lib/commonjs/components/NavArrow/NavArrow.js +58 -17
- package/lib/commonjs/components/Stepper/Step.js +47 -60
- package/lib/commonjs/components/Stepper/StepLabel.js +40 -10
- package/lib/commonjs/components/Stepper/Stepper.js +15 -17
- package/lib/commonjs/components/SuggestiveSearch/SuggestiveSearch.js +487 -0
- package/lib/commonjs/components/TextInput/TextInput.js +16 -1
- package/lib/commonjs/components/Title/Title.js +10 -2
- package/lib/commonjs/components/index.js +28 -0
- package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/commonjs/icons/registry.js +1 -1
- package/lib/module/components/Accordion/Accordion.js +56 -56
- package/lib/module/components/ActionFooter/ActionFooter.js +50 -4
- package/lib/module/components/Checkbox/Checkbox.js +22 -10
- package/lib/module/components/DropdownInput/DropdownInput.js +30 -16
- package/lib/module/components/ExpandableCheckbox/ExpandableCheckbox.js +161 -0
- package/lib/module/components/FormField/FormField.js +16 -3
- package/lib/module/components/FullscreenModal/FullscreenModal.js +350 -0
- package/lib/module/components/ListItem/ListItem.js +25 -10
- package/lib/module/components/MessageField/MessageField.js +313 -0
- package/lib/module/components/NavArrow/NavArrow.js +59 -18
- package/lib/module/components/Stepper/Step.js +48 -61
- package/lib/module/components/Stepper/StepLabel.js +40 -10
- package/lib/module/components/Stepper/Stepper.js +15 -17
- package/lib/module/components/SuggestiveSearch/SuggestiveSearch.js +481 -0
- package/lib/module/components/TextInput/TextInput.js +17 -2
- package/lib/module/components/Title/Title.js +10 -2
- package/lib/module/components/index.js +4 -0
- package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/module/icons/registry.js +1 -1
- package/lib/typescript/src/components/Accordion/Accordion.d.ts +14 -20
- package/lib/typescript/src/components/ExpandableCheckbox/ExpandableCheckbox.d.ts +63 -0
- package/lib/typescript/src/components/FullscreenModal/FullscreenModal.d.ts +99 -0
- package/lib/typescript/src/components/MessageField/MessageField.d.ts +81 -0
- package/lib/typescript/src/components/NavArrow/NavArrow.d.ts +10 -5
- package/lib/typescript/src/components/Stepper/Step.d.ts +4 -1
- package/lib/typescript/src/components/Stepper/StepLabel.d.ts +4 -1
- package/lib/typescript/src/components/Stepper/Stepper.d.ts +3 -1
- package/lib/typescript/src/components/SuggestiveSearch/SuggestiveSearch.d.ts +123 -0
- package/lib/typescript/src/components/index.d.ts +7 -3
- package/lib/typescript/src/icons/registry.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/Accordion/Accordion.tsx +113 -73
- package/src/components/ActionFooter/ActionFooter.tsx +56 -4
- package/src/components/Checkbox/Checkbox.tsx +22 -9
- package/src/components/DropdownInput/DropdownInput.tsx +67 -39
- package/src/components/ExpandableCheckbox/ExpandableCheckbox.tsx +237 -0
- package/src/components/FormField/FormField.tsx +19 -3
- package/src/components/FullscreenModal/FullscreenModal.tsx +414 -0
- package/src/components/ListItem/ListItem.tsx +21 -10
- package/src/components/MessageField/MessageField.tsx +543 -0
- package/src/components/NavArrow/NavArrow.tsx +81 -17
- package/src/components/Stepper/Step.tsx +52 -51
- package/src/components/Stepper/StepLabel.tsx +46 -9
- package/src/components/Stepper/Stepper.tsx +20 -15
- package/src/components/SuggestiveSearch/SuggestiveSearch.tsx +756 -0
- package/src/components/TextInput/TextInput.tsx +14 -1
- package/src/components/Title/Title.tsx +13 -2
- package/src/components/index.ts +7 -3
- package/src/design-tokens/Coin Variables-variables-full.json +1 -1
- package/src/icons/registry.ts +1 -1
|
@@ -4,6 +4,12 @@ import { type WebAccessibilityProps } from '../../utils/web-platform-utils';
|
|
|
4
4
|
export type AccordionProps = {
|
|
5
5
|
/** The accordion header title */
|
|
6
6
|
title?: string;
|
|
7
|
+
/**
|
|
8
|
+
* When `true`, the header always uses the filled background treatment
|
|
9
|
+
* (Figma Hover / Open Hover visuals). Defaults to `false` (transparent at
|
|
10
|
+
* rest, filled only while hovered or pressed).
|
|
11
|
+
*/
|
|
12
|
+
contained?: boolean;
|
|
7
13
|
/** Initial expanded state. Defaults to false (collapsed) */
|
|
8
14
|
defaultExpanded?: boolean;
|
|
9
15
|
/** Controlled expanded state. When provided, the component becomes controlled */
|
|
@@ -30,29 +36,17 @@ export type AccordionProps = {
|
|
|
30
36
|
/**
|
|
31
37
|
* Accordion component that mirrors the Figma "Accordion" component.
|
|
32
38
|
*
|
|
33
|
-
*
|
|
34
|
-
* -
|
|
35
|
-
*
|
|
36
|
-
* -
|
|
37
|
-
* - **Design-token driven styling** via `getVariableByName` and `modes`
|
|
39
|
+
* Supports two visual treatments via the `contained` prop:
|
|
40
|
+
* - **`contained={false}`** (default) — transparent header at rest; filled
|
|
41
|
+
* background on hover / press.
|
|
42
|
+
* - **`contained={true}`** — header always uses the filled background.
|
|
38
43
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
44
|
+
* Interaction states (Idle, Hover, Open, Disabled) are resolved automatically
|
|
45
|
+
* from `expanded`, `disabled`, hover, and `contained` — consumers should not
|
|
46
|
+
* pass `'Accordion States'` in `modes`.
|
|
42
47
|
*
|
|
43
48
|
* @component
|
|
44
|
-
* @param {Object} props
|
|
45
|
-
* @param {string} [props.title='Accordion title'] - The accordion header title
|
|
46
|
-
* @param {boolean} [props.defaultExpanded=false] - Initial expanded state
|
|
47
|
-
* @param {boolean} [props.expanded] - Controlled expanded state
|
|
48
|
-
* @param {Function} [props.onExpandedChange] - Callback fired when expanded state changes
|
|
49
|
-
* @param {boolean} [props.disabled=false] - Whether the accordion is disabled
|
|
50
|
-
* @param {React.ReactNode} [props.children] - Content to display when expanded
|
|
51
|
-
* @param {Object} [props.modes={}] - Modes object passed to `getVariableByName` for all design tokens
|
|
52
|
-
* @param {Object} [props.style] - Optional container style overrides
|
|
53
|
-
* @param {string} [props.accessibilityLabel] - Accessibility label for the accordion. If not provided, uses title
|
|
54
|
-
* @param {string} [props.accessibilityHint] - Additional accessibility hint for screen readers
|
|
55
49
|
*/
|
|
56
|
-
declare function Accordion({ title, defaultExpanded, expanded: controlledExpanded, onExpandedChange, disabled, children, modes, style, accessibilityLabel, accessibilityHint, accessibilityState, webAccessibilityProps, ...rest }: AccordionProps): import("react/jsx-runtime").JSX.Element;
|
|
50
|
+
declare function Accordion({ title, contained, defaultExpanded, expanded: controlledExpanded, onExpandedChange, disabled, children, modes, style, accessibilityLabel, accessibilityHint, accessibilityState, webAccessibilityProps, ...rest }: AccordionProps): import("react/jsx-runtime").JSX.Element;
|
|
57
51
|
export default Accordion;
|
|
58
52
|
//# sourceMappingURL=Accordion.d.ts.map
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type StyleProp, type ViewStyle, type TextStyle } from 'react-native';
|
|
2
|
+
export type ExpandableCheckboxProps = {
|
|
3
|
+
/** Long text label rendered next to the checkbox. */
|
|
4
|
+
label?: string;
|
|
5
|
+
/** Whether the checkbox is checked (controlled). */
|
|
6
|
+
checked?: boolean;
|
|
7
|
+
/** Initial checked state (uncontrolled). */
|
|
8
|
+
defaultChecked?: boolean;
|
|
9
|
+
/** Callback fired when the checked state changes. */
|
|
10
|
+
onValueChange?: (checked: boolean) => void;
|
|
11
|
+
/** Whether the row is expanded to reveal the full label (controlled). */
|
|
12
|
+
expanded?: boolean;
|
|
13
|
+
/** Initial expanded state (uncontrolled). Defaults to `false` (Idle). */
|
|
14
|
+
defaultExpanded?: boolean;
|
|
15
|
+
/** Callback fired when the expanded state changes. */
|
|
16
|
+
onExpandedChange?: (expanded: boolean) => void;
|
|
17
|
+
/** Whether the entire row is disabled. */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
/** Label for the toggle button shown when the row is collapsed. */
|
|
20
|
+
readMoreLabel?: string;
|
|
21
|
+
/** Label for the toggle button shown when the row is expanded. */
|
|
22
|
+
readLessLabel?: string;
|
|
23
|
+
/** Number of lines to show when collapsed. Defaults to `1`. */
|
|
24
|
+
collapsedLines?: number;
|
|
25
|
+
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
26
|
+
modes?: Record<string, any>;
|
|
27
|
+
/** Override outer container styles. */
|
|
28
|
+
style?: StyleProp<ViewStyle>;
|
|
29
|
+
/** Override the label text styles. */
|
|
30
|
+
labelStyle?: StyleProp<TextStyle>;
|
|
31
|
+
/** Accessibility label for the checkbox. Falls back to `label`. */
|
|
32
|
+
accessibilityLabel?: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* ExpandableCheckbox composes a `Checkbox`, a long-form label and a
|
|
36
|
+
* "Read more" / "Read less" toggle. Mirrors the Figma "Expandable Checkbox"
|
|
37
|
+
* component with two states:
|
|
38
|
+
*
|
|
39
|
+
* - **Idle (collapsed)** — checkbox + truncated label + toggle button arranged
|
|
40
|
+
* in a horizontal row (cross-axis centered).
|
|
41
|
+
* - **Open (expanded)** — checkbox + full multi-line label, with the toggle
|
|
42
|
+
* button right-aligned beneath the row.
|
|
43
|
+
*
|
|
44
|
+
* The checkbox and the toggle button have independent press handlers — pressing
|
|
45
|
+
* the toggle does not affect the checked state, and toggling the checkbox does
|
|
46
|
+
* not collapse / expand the row.
|
|
47
|
+
*
|
|
48
|
+
* @component
|
|
49
|
+
* @param {ExpandableCheckboxProps} props
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```tsx
|
|
53
|
+
* <ExpandableCheckbox
|
|
54
|
+
* label="By checking this box, I (a) acknowledge and (b) agree to the full terms…"
|
|
55
|
+
* defaultChecked
|
|
56
|
+
* onValueChange={setAccepted}
|
|
57
|
+
* modes={{ 'Color Mode': 'Light' }}
|
|
58
|
+
* />
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
declare function ExpandableCheckbox({ label, checked: controlledChecked, defaultChecked, onValueChange, expanded: controlledExpanded, defaultExpanded, onExpandedChange, disabled, readMoreLabel, readLessLabel, collapsedLines, modes, style, labelStyle, accessibilityLabel, }: ExpandableCheckboxProps): import("react/jsx-runtime").JSX.Element;
|
|
62
|
+
export default ExpandableCheckbox;
|
|
63
|
+
//# sourceMappingURL=ExpandableCheckbox.d.ts.map
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
export type FullscreenModalProps = {
|
|
4
|
+
/** Small eyebrow line above the headline. */
|
|
5
|
+
eyebrow?: string;
|
|
6
|
+
/** Large hero headline. */
|
|
7
|
+
headline?: string;
|
|
8
|
+
/** Supporting paragraph shown below the headline. */
|
|
9
|
+
supportingText?: string;
|
|
10
|
+
/** Secondary line below the supporting paragraph (e.g. a price / timeline). */
|
|
11
|
+
priceText?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Media rendered full-bleed behind the hero text and driven by the parallax
|
|
14
|
+
* scroll effect. Bring any renderer — most commonly a `LottiePlayer`, but an
|
|
15
|
+
* `Image`, `Video`, or `SvgXml` works too. Size it to fill the hero box
|
|
16
|
+
* (`heroHeight` tall, full modal width) and let it `cover` so that as the
|
|
17
|
+
* hero collapses in height the art is cropped, never distorted. `modes` are
|
|
18
|
+
* cascaded into it.
|
|
19
|
+
*/
|
|
20
|
+
heroMedia?: React.ReactNode;
|
|
21
|
+
/** Resting height of the hero region. Defaults to 420. */
|
|
22
|
+
heroHeight?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Collapsed height the hero shrinks to at full scroll. Defaults to
|
|
25
|
+
* `heroHeight * 0.45`. Only the height changes — the width is always full.
|
|
26
|
+
*/
|
|
27
|
+
heroMinHeight?: number;
|
|
28
|
+
/** Enable the scroll-driven hero collapse. Defaults to true. */
|
|
29
|
+
parallax?: boolean;
|
|
30
|
+
/** Whether to render the floating close button (top-right). Defaults to true. */
|
|
31
|
+
showClose?: boolean;
|
|
32
|
+
/** Press handler for the close button. */
|
|
33
|
+
onClose?: () => void;
|
|
34
|
+
/** Accessibility label for the close button. */
|
|
35
|
+
closeAccessibilityLabel?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Fully custom footer content rendered inside the sticky `ActionFooter`.
|
|
38
|
+
* When provided, `primaryActionLabel` / `disclaimer` are ignored.
|
|
39
|
+
*/
|
|
40
|
+
footer?: React.ReactNode;
|
|
41
|
+
/** Label for the default primary action button in the footer. */
|
|
42
|
+
primaryActionLabel?: string;
|
|
43
|
+
/** Press handler for the default primary action button. */
|
|
44
|
+
onPrimaryAction?: () => void;
|
|
45
|
+
/** Disclaimer text shown below the default primary action button. */
|
|
46
|
+
disclaimer?: string;
|
|
47
|
+
/** Solid backdrop color for the scrollable body. Defaults to a near-black. */
|
|
48
|
+
backgroundColor?: string;
|
|
49
|
+
/** Body content (typically `Section`s). `modes` are cascaded automatically. */
|
|
50
|
+
children?: React.ReactNode;
|
|
51
|
+
/** Mode configuration. `context5` is always forced to `'Fullscreen Modal'`. */
|
|
52
|
+
modes?: Record<string, any>;
|
|
53
|
+
/** Style overrides for the outer container. */
|
|
54
|
+
style?: StyleProp<ViewStyle>;
|
|
55
|
+
/** Style overrides for the scroll body wrapper (the dark content area). */
|
|
56
|
+
contentContainerStyle?: StyleProp<ViewStyle>;
|
|
57
|
+
testID?: string;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* FullscreenModal — a full-screen takeover surface with a parallax media hero,
|
|
61
|
+
* a scrollable body, a floating close button, and a sticky `ActionFooter`.
|
|
62
|
+
*
|
|
63
|
+
* The component always themes itself with `context5: 'Fullscreen Modal'`
|
|
64
|
+
* (non-overridable) so every nested component (Section, ListItem, Button,
|
|
65
|
+
* Disclaimer, …) resolves the white-on-dark "fullscreen modal" token values.
|
|
66
|
+
* That mode is cascaded into `children`, the footer, and the hero text via
|
|
67
|
+
* `cloneChildrenWithModes` / the merged `modes` object.
|
|
68
|
+
*
|
|
69
|
+
* ### Parallax
|
|
70
|
+
* As the user scrolls up, the hero collapses by **height only** (from
|
|
71
|
+
* `heroHeight` to `heroMinHeight`) — its **full width is always preserved**.
|
|
72
|
+
* The `heroMedia` is pinned to the top at a fixed size and `cover`-cropped by
|
|
73
|
+
* the collapsing clip, so it keeps a perfect aspect ratio the whole time
|
|
74
|
+
* (never scaled or squished). Because it collapses slower than the content
|
|
75
|
+
* scrolls, the media lags behind for the parallax depth cue. Disable with
|
|
76
|
+
* `parallax={false}`.
|
|
77
|
+
*
|
|
78
|
+
* @component
|
|
79
|
+
* @example
|
|
80
|
+
* ```tsx
|
|
81
|
+
* <FullscreenModal
|
|
82
|
+
* eyebrow="Upgrade to JioFinance+"
|
|
83
|
+
* headline="Get more from your money."
|
|
84
|
+
* supportingText="JioFinance+ is your upgraded financial experience…"
|
|
85
|
+
* priceText="₹999/year · ₹0 until 2027"
|
|
86
|
+
* heroMedia={<LottiePlayer source={hero} size={{ width: 360, height: 420 }} />}
|
|
87
|
+
* primaryActionLabel="Upgrade for free"
|
|
88
|
+
* disclaimer="By upgrading, we'll check your eligibility with Experian."
|
|
89
|
+
* onPrimaryAction={() => upgrade()}
|
|
90
|
+
* onClose={() => navigation.goBack()}
|
|
91
|
+
* >
|
|
92
|
+
* <Section title="Key Benefits" slotDirection="column" slot={…} />
|
|
93
|
+
* <Section title="Compare plans" slotDirection="column" slot={…} />
|
|
94
|
+
* </FullscreenModal>
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
declare function FullscreenModal({ eyebrow, headline, supportingText, priceText, heroMedia, heroHeight, heroMinHeight, parallax, showClose, onClose, closeAccessibilityLabel, footer, primaryActionLabel, onPrimaryAction, disclaimer, backgroundColor, children, modes: propModes, style, contentContainerStyle, testID, }: FullscreenModalProps): import("react/jsx-runtime").JSX.Element;
|
|
98
|
+
export default FullscreenModal;
|
|
99
|
+
//# sourceMappingURL=FullscreenModal.d.ts.map
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type StyleProp, type TextInputProps as RNTextInputProps, type TextStyle, type ViewStyle } from 'react-native';
|
|
2
|
+
/**
|
|
3
|
+
* Visual state of the textarea. Mirrors the `FormField States` collection so
|
|
4
|
+
* MessageField slots into the same theming pipeline as FormField. The state
|
|
5
|
+
* is always derived from props (`isInvalid`, `isDisabled`, `isReadOnly` and
|
|
6
|
+
* focus) and is locked in `modes['FormField States']` — passing that key in
|
|
7
|
+
* `modes` is intentionally ignored to keep interactive behaviour and visual
|
|
8
|
+
* state in sync.
|
|
9
|
+
*/
|
|
10
|
+
export type MessageFieldState = 'Idle' | 'Active' | 'Read Only' | 'Error' | 'Disabled';
|
|
11
|
+
export type MessageFieldProps = {
|
|
12
|
+
/** Label rendered above the textarea. */
|
|
13
|
+
label?: string;
|
|
14
|
+
/** Placeholder text shown when the textarea is empty. */
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Current value of the textarea (controlled). When provided, the consumer
|
|
18
|
+
* is responsible for updating it via `onChangeText`.
|
|
19
|
+
*/
|
|
20
|
+
value?: string;
|
|
21
|
+
/** Initial value when used uncontrolled. Ignored when `value` is provided. */
|
|
22
|
+
defaultValue?: string;
|
|
23
|
+
/** Called whenever the text changes. Fires for both controlled and uncontrolled use. */
|
|
24
|
+
onChangeText?: (text: string) => void;
|
|
25
|
+
/**
|
|
26
|
+
* Form field name. When the field is rendered inside a `<Form>`, this is
|
|
27
|
+
* the key used to look up server-side `validationErrors` and to clear
|
|
28
|
+
* the error when the value changes.
|
|
29
|
+
*/
|
|
30
|
+
name?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Maximum number of characters accepted. Drives the counter when
|
|
33
|
+
* `showCounter` is not explicitly false.
|
|
34
|
+
*/
|
|
35
|
+
maxLength?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Controls visibility of the character counter.
|
|
38
|
+
* - Default: counter is shown when `maxLength` is provided.
|
|
39
|
+
* - `true`: always show counter (shows `<count>/<maxLength>` when
|
|
40
|
+
* `maxLength` is set, or just `<count>` otherwise).
|
|
41
|
+
* - `false`: never show counter.
|
|
42
|
+
*/
|
|
43
|
+
showCounter?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Number of visible text rows. When provided, overrides the default
|
|
46
|
+
* `messageField/textarea/height` token to derive the textarea height as
|
|
47
|
+
* `rows * lineHeight + 2 * padding`.
|
|
48
|
+
*/
|
|
49
|
+
rows?: number;
|
|
50
|
+
/** Renders a required indicator (asterisk) next to the label. */
|
|
51
|
+
isRequired?: boolean;
|
|
52
|
+
/** Disables interaction and dims the field. */
|
|
53
|
+
isDisabled?: boolean;
|
|
54
|
+
/** Marks the field as invalid and resolves to the `Error` state token mode. */
|
|
55
|
+
isInvalid?: boolean;
|
|
56
|
+
/** Read-only, non-interactive but not dimmed. */
|
|
57
|
+
isReadOnly?: boolean;
|
|
58
|
+
/** Auto-focus the textarea on mount. */
|
|
59
|
+
autoFocus?: boolean;
|
|
60
|
+
/** Modes for design token resolution (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
61
|
+
modes?: Record<string, any>;
|
|
62
|
+
/** Style overrides for the outermost wrapper. */
|
|
63
|
+
style?: StyleProp<ViewStyle>;
|
|
64
|
+
/** Style overrides for the textarea container (border/padding/etc). */
|
|
65
|
+
textareaStyle?: StyleProp<ViewStyle>;
|
|
66
|
+
/** Style overrides for the input text. */
|
|
67
|
+
inputStyle?: StyleProp<TextStyle>;
|
|
68
|
+
/** Accessibility label. Defaults to `label` or `placeholder`. */
|
|
69
|
+
accessibilityLabel?: string;
|
|
70
|
+
/** Accessibility hint. */
|
|
71
|
+
accessibilityHint?: string;
|
|
72
|
+
/** Test identifier. */
|
|
73
|
+
testID?: string;
|
|
74
|
+
/** Called when the textarea receives focus. */
|
|
75
|
+
onFocus?: RNTextInputProps['onFocus'];
|
|
76
|
+
/** Called when the textarea loses focus. */
|
|
77
|
+
onBlur?: RNTextInputProps['onBlur'];
|
|
78
|
+
};
|
|
79
|
+
declare function MessageField({ label, placeholder, value, defaultValue, onChangeText, name, maxLength, showCounter, rows, isRequired, isDisabled, isInvalid, isReadOnly, autoFocus, modes: propModes, style, textareaStyle, inputStyle, accessibilityLabel, accessibilityHint, testID, onFocus, onBlur, }: MessageFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
80
|
+
export default MessageField;
|
|
81
|
+
//# sourceMappingURL=MessageField.d.ts.map
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
import { type SafePressableProps } from '../../utils/web-platform-utils';
|
|
3
4
|
type NavArrowDirection = 'Back' | 'Forward' | 'Down';
|
|
4
|
-
type NavArrowProps = {
|
|
5
|
+
type NavArrowProps = SafePressableProps & {
|
|
5
6
|
/** Direction of the arrow: 'Back' (left chevron), 'Forward' (right chevron), or 'Down' */
|
|
6
7
|
direction?: NavArrowDirection;
|
|
7
8
|
/** Modes used to resolve design tokens */
|
|
8
9
|
modes?: Record<string, any>;
|
|
9
10
|
/** Optional additional container style */
|
|
10
|
-
style?: ViewStyle
|
|
11
|
+
style?: StyleProp<ViewStyle>;
|
|
11
12
|
/** Accessibility label for the arrow */
|
|
12
13
|
accessibilityLabel?: string;
|
|
13
|
-
|
|
14
|
+
/** Called when the arrow is pressed. Expands the hit area to at least 44×44. */
|
|
15
|
+
onPress?: () => void;
|
|
16
|
+
/** Disables press interaction when `onPress` is provided */
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
};
|
|
14
19
|
/**
|
|
15
20
|
* NavArrow component that displays a chevron arrow for navigation.
|
|
16
21
|
*
|
|
@@ -25,7 +30,7 @@ type NavArrowProps = {
|
|
|
25
30
|
* on (tokens, direction, style).
|
|
26
31
|
* - Wrapped in `React.memo`.
|
|
27
32
|
*/
|
|
28
|
-
declare function NavArrow({ direction, modes, style, accessibilityLabel, ...rest }: NavArrowProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
declare function NavArrow({ direction, modes, style, accessibilityLabel, onPress, disabled, ...rest }: NavArrowProps): import("react/jsx-runtime").JSX.Element;
|
|
29
34
|
declare const _default: React.MemoExoticComponent<typeof NavArrow>;
|
|
30
35
|
export default _default;
|
|
31
36
|
//# sourceMappingURL=NavArrow.d.ts.map
|
|
@@ -6,11 +6,14 @@ export type StepProps = {
|
|
|
6
6
|
modes?: Record<string, any>;
|
|
7
7
|
style?: ViewStyle;
|
|
8
8
|
index?: number;
|
|
9
|
+
showLine?: boolean;
|
|
9
10
|
connectorStyle?: ViewStyle;
|
|
10
11
|
title?: string;
|
|
11
12
|
supportingText?: string;
|
|
13
|
+
metaText?: string;
|
|
12
14
|
subtitle?: boolean;
|
|
15
|
+
meta?: boolean;
|
|
13
16
|
status?: StepStatus;
|
|
14
17
|
};
|
|
15
|
-
export declare function Step({ children, modes, style, index, connectorStyle, title, supportingText, subtitle, status, }: StepProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare function Step({ children, modes, style, index, showLine, connectorStyle, title, supportingText, metaText, subtitle, meta, status, }: StepProps): import("react/jsx-runtime").JSX.Element;
|
|
16
19
|
//# sourceMappingURL=Step.d.ts.map
|
|
@@ -2,8 +2,11 @@ import { type ViewStyle } from 'react-native';
|
|
|
2
2
|
export type StepLabelProps = {
|
|
3
3
|
title?: string;
|
|
4
4
|
supportingText?: string;
|
|
5
|
+
metaText?: string;
|
|
6
|
+
subtitle?: boolean;
|
|
7
|
+
meta?: boolean;
|
|
5
8
|
modes?: Record<string, any>;
|
|
6
9
|
style?: ViewStyle;
|
|
7
10
|
};
|
|
8
|
-
export declare function StepLabel({ title, supportingText, modes, style, }: StepLabelProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare function StepLabel({ title, supportingText, metaText, subtitle, meta, modes, style, }: StepLabelProps): import("react/jsx-runtime").JSX.Element;
|
|
9
12
|
//# sourceMappingURL=StepLabel.d.ts.map
|
|
@@ -3,7 +3,9 @@ import { type ViewStyle } from 'react-native';
|
|
|
3
3
|
import { Step } from './Step';
|
|
4
4
|
import { StepLabel } from './StepLabel';
|
|
5
5
|
export { Step, StepLabel };
|
|
6
|
-
type
|
|
6
|
+
export type { StepProps, StepStatus } from './Step';
|
|
7
|
+
export type { StepLabelProps } from './StepLabel';
|
|
8
|
+
export type StepperProps = {
|
|
7
9
|
children?: React.ReactNode;
|
|
8
10
|
modes?: Record<string, any>;
|
|
9
11
|
style?: ViewStyle;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type StyleProp, type TextInputProps as RNTextInputProps, type TextStyle, type ViewStyle } from 'react-native';
|
|
3
|
+
export type SuggestiveSearchOptionValue = string | number;
|
|
4
|
+
export type SuggestiveSearchOption = {
|
|
5
|
+
/** Stable, unique value used to identify the suggestion. */
|
|
6
|
+
value: SuggestiveSearchOptionValue;
|
|
7
|
+
/** Human-readable label shown in the suggestion list and the input. */
|
|
8
|
+
label: string;
|
|
9
|
+
/** Whether the suggestion is non-selectable. */
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Suggestions accept either a bare string (used as both value and label) or a
|
|
14
|
+
* full `{ value, label }` option object for richer data.
|
|
15
|
+
*/
|
|
16
|
+
export type SuggestiveSearchItem = string | SuggestiveSearchOption;
|
|
17
|
+
export type SuggestiveSearchProps = {
|
|
18
|
+
/** Label rendered above the input. */
|
|
19
|
+
label?: string;
|
|
20
|
+
/** Placeholder text shown when the query is empty. */
|
|
21
|
+
placeholder?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Suggestions to filter against the current query. May be bare strings or
|
|
24
|
+
* `{ value, label }` objects.
|
|
25
|
+
*/
|
|
26
|
+
items?: SuggestiveSearchItem[];
|
|
27
|
+
/**
|
|
28
|
+
* Current query text (controlled). When `undefined` the component manages
|
|
29
|
+
* its own query state internally.
|
|
30
|
+
*/
|
|
31
|
+
inputValue?: string;
|
|
32
|
+
/** Initial query text for uncontrolled mode. */
|
|
33
|
+
defaultInputValue?: string;
|
|
34
|
+
/** Called whenever the query text changes (typing or selection). */
|
|
35
|
+
onInputChange?: (text: string) => void;
|
|
36
|
+
/**
|
|
37
|
+
* Currently selected suggestion value (controlled). When `undefined` the
|
|
38
|
+
* component tracks the selection internally.
|
|
39
|
+
*/
|
|
40
|
+
value?: SuggestiveSearchOptionValue | null;
|
|
41
|
+
/** Initial selected value for uncontrolled mode. */
|
|
42
|
+
defaultValue?: SuggestiveSearchOptionValue | null;
|
|
43
|
+
/** Called when a suggestion is chosen. */
|
|
44
|
+
onValueChange?: (value: SuggestiveSearchOptionValue | null, option?: SuggestiveSearchOption) => void;
|
|
45
|
+
/**
|
|
46
|
+
* Custom predicate deciding whether an option matches the current query.
|
|
47
|
+
* Defaults to a case-insensitive substring match on the label.
|
|
48
|
+
*/
|
|
49
|
+
filter?: (query: string, option: SuggestiveSearchOption) => boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Minimum number of characters required before suggestions are shown.
|
|
52
|
+
* @default 1
|
|
53
|
+
*/
|
|
54
|
+
minChars?: number;
|
|
55
|
+
/** Caps the number of suggestions rendered. Defaults to no limit. */
|
|
56
|
+
maxResults?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Highlights the matched substring of each suggestion in bold.
|
|
59
|
+
* @default true
|
|
60
|
+
*/
|
|
61
|
+
highlightMatch?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Message shown when the query has matched no suggestions. When omitted,
|
|
64
|
+
* the dropdown simply stays hidden on an empty result set.
|
|
65
|
+
*/
|
|
66
|
+
emptyMessage?: string;
|
|
67
|
+
/** Custom renderer for a suggestion row (overrides the default label). */
|
|
68
|
+
renderItem?: (option: SuggestiveSearchOption, meta: {
|
|
69
|
+
query: string;
|
|
70
|
+
isSelected: boolean;
|
|
71
|
+
}) => React.ReactNode;
|
|
72
|
+
/** Controlled open state of the suggestion dropdown. */
|
|
73
|
+
open?: boolean;
|
|
74
|
+
/** Initial open state for uncontrolled mode. */
|
|
75
|
+
defaultOpen?: boolean;
|
|
76
|
+
/** Called whenever the open state changes. */
|
|
77
|
+
onOpenChange?: (open: boolean) => void;
|
|
78
|
+
/**
|
|
79
|
+
* Maximum height of the suggestion list before it becomes scrollable.
|
|
80
|
+
* @default 240
|
|
81
|
+
*/
|
|
82
|
+
menuMaxHeight?: number;
|
|
83
|
+
/**
|
|
84
|
+
* Vertical gap between the input and the suggestion dropdown.
|
|
85
|
+
* @default 6
|
|
86
|
+
*/
|
|
87
|
+
menuOffset?: number;
|
|
88
|
+
/** Renders a required asterisk next to the label. */
|
|
89
|
+
isRequired?: boolean;
|
|
90
|
+
/** Disables interaction and dims the field. */
|
|
91
|
+
isDisabled?: boolean;
|
|
92
|
+
/** Marks the field as invalid and shows `errorMessage`. */
|
|
93
|
+
isInvalid?: boolean;
|
|
94
|
+
/** Renders the field as read-only (non-interactive, not dimmed). */
|
|
95
|
+
isReadOnly?: boolean;
|
|
96
|
+
/** Helper text displayed below the input. */
|
|
97
|
+
supportText?: string;
|
|
98
|
+
/** Replaces `supportText` when `isInvalid` is true. */
|
|
99
|
+
errorMessage?: string;
|
|
100
|
+
/** Modes for design token resolution. */
|
|
101
|
+
modes?: Record<string, any>;
|
|
102
|
+
/** Style overrides for the outermost wrapper. */
|
|
103
|
+
style?: StyleProp<ViewStyle>;
|
|
104
|
+
/** Style overrides for the input row. */
|
|
105
|
+
inputStyle?: StyleProp<ViewStyle>;
|
|
106
|
+
/** Style overrides for the input text. */
|
|
107
|
+
inputTextStyle?: StyleProp<TextStyle>;
|
|
108
|
+
/** Style overrides for the suggestion dropdown container. */
|
|
109
|
+
menuStyle?: StyleProp<ViewStyle>;
|
|
110
|
+
/** Accessibility label. Defaults to the visible label / placeholder. */
|
|
111
|
+
accessibilityLabel?: string;
|
|
112
|
+
/** Accessibility hint. */
|
|
113
|
+
accessibilityHint?: string;
|
|
114
|
+
/** Called when the input receives focus. */
|
|
115
|
+
onFocus?: RNTextInputProps['onFocus'];
|
|
116
|
+
/** Called when the input loses focus. */
|
|
117
|
+
onBlur?: RNTextInputProps['onBlur'];
|
|
118
|
+
/** Test identifier. */
|
|
119
|
+
testID?: string;
|
|
120
|
+
};
|
|
121
|
+
declare function SuggestiveSearch({ label, placeholder, items, inputValue, defaultInputValue, onInputChange, value, defaultValue, onValueChange, filter, minChars, maxResults, highlightMatch, emptyMessage, renderItem, open, defaultOpen, onOpenChange, menuMaxHeight, menuOffset, isRequired, isDisabled, isInvalid, isReadOnly, supportText, errorMessage, modes: propModes, style, inputStyle, inputTextStyle, menuStyle, accessibilityLabel, accessibilityHint, onFocus, onBlur, testID, }: SuggestiveSearchProps): import("react/jsx-runtime").JSX.Element;
|
|
122
|
+
export default SuggestiveSearch;
|
|
123
|
+
//# sourceMappingURL=SuggestiveSearch.d.ts.map
|
|
@@ -24,9 +24,11 @@ export { default as Divider, type DividerProps, type DividerDirection } from './
|
|
|
24
24
|
export { default as Drawer } from './Drawer/Drawer';
|
|
25
25
|
export { default as Dropdown, DropdownItem, type DropdownProps, type DropdownItemProps } from './Dropdown/Dropdown';
|
|
26
26
|
export { default as DropdownInput, type DropdownInputProps, type DropdownInputOption, type DropdownInputOptionValue } from './DropdownInput/DropdownInput';
|
|
27
|
+
export { default as SuggestiveSearch, type SuggestiveSearchProps, type SuggestiveSearchOption, type SuggestiveSearchOptionValue, type SuggestiveSearchItem } from './SuggestiveSearch/SuggestiveSearch';
|
|
27
28
|
export { default as CardCTA, type CardCTAProps, type CardCTAType } from './CardCTA/CardCTA';
|
|
28
29
|
export { default as DebitCard, type DebitCardProps } from './DebitCard/DebitCard';
|
|
29
30
|
export { default as FilterBar } from './FilterBar/FilterBar';
|
|
31
|
+
export { default as FullscreenModal, type FullscreenModalProps } from './FullscreenModal/FullscreenModal';
|
|
30
32
|
export { default as Form, type FormProps } from './Form/Form';
|
|
31
33
|
export { useFormContext } from './Form/Form';
|
|
32
34
|
export { default as FormField, type FormFieldProps, type FormFieldType } from './FormField/FormField';
|
|
@@ -51,6 +53,7 @@ export { default as LottiePlayer, type LottiePlayerProps, type LottieAnimationSo
|
|
|
51
53
|
export { default as ListItem } from './ListItem/ListItem';
|
|
52
54
|
export { default as MediaCard, type MediaCardProps } from './MediaCard/MediaCard';
|
|
53
55
|
export { default as MerchantProfile, type MerchantProfileProps } from './MerchantProfile/MerchantProfile';
|
|
56
|
+
export { default as MessageField, type MessageFieldProps, type MessageFieldState } from './MessageField/MessageField';
|
|
54
57
|
export { default as MetricLegendItem, type MetricLegendItemProps } from './MetricLegendItem/MetricLegendItem';
|
|
55
58
|
export { default as MoneyValue } from './MoneyValue/MoneyValue';
|
|
56
59
|
export { default as NoteInput, type NoteInputProps } from './NoteInput/NoteInput';
|
|
@@ -60,9 +63,9 @@ export { default as Numpad, type NumpadProps, type NumpadKeyValue } from './Nump
|
|
|
60
63
|
export { default as Title, type TitleProps } from './Title/Title';
|
|
61
64
|
export { default as Screen, type ScreenProps } from './Screen/Screen';
|
|
62
65
|
export { default as Section } from './Section/Section';
|
|
63
|
-
export { default as Stepper } from './Stepper/Stepper';
|
|
64
|
-
export { Step } from './Stepper/Step';
|
|
65
|
-
export { StepLabel } from './Stepper/StepLabel';
|
|
66
|
+
export { default as Stepper, type StepperProps } from './Stepper/Stepper';
|
|
67
|
+
export { Step, type StepProps, type StepStatus } from './Stepper/Step';
|
|
68
|
+
export { StepLabel, type StepLabelProps } from './Stepper/StepLabel';
|
|
66
69
|
export { default as TextInput } from './TextInput/TextInput';
|
|
67
70
|
export { default as StatusHero, type StatusHeroProps } from './StatusHero/StatusHero';
|
|
68
71
|
export { default as ThreadHero, type ThreadHeroProps } from './ThreadHero/ThreadHero';
|
|
@@ -74,6 +77,7 @@ export { default as UpiHandle } from './UpiHandle/UpiHandle';
|
|
|
74
77
|
export { default as VStack, type VStackProps } from './VStack/VStack';
|
|
75
78
|
export { default as ChipGroup, type ChipGroupProps } from './ChipGroup/ChipGroup';
|
|
76
79
|
export { default as EmptyState, type EmptyStateProps } from './EmptyState/EmptyState';
|
|
80
|
+
export { default as ExpandableCheckbox, type ExpandableCheckboxProps } from './ExpandableCheckbox/ExpandableCheckbox';
|
|
77
81
|
export { default as Accordion, type AccordionProps } from './Accordion/Accordion';
|
|
78
82
|
export { default as AccordionCheckbox, type AccordionCheckboxProps } from './AccordionCheckbox/AccordionCheckbox';
|
|
79
83
|
export { default as ActionTile, type ActionTileProps } from './ActionTile/ActionTile';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Auto-generated from SVG files in src/icons/
|
|
5
5
|
* DO NOT EDIT MANUALLY - Run "npm run icons:generate" to regenerate
|
|
6
6
|
*
|
|
7
|
-
* Generated: 2026-05-
|
|
7
|
+
* Generated: 2026-05-29T10:37:24.494Z
|
|
8
8
|
*/
|
|
9
9
|
export declare const iconRegistry: Record<string, {
|
|
10
10
|
path: string;
|