jfs-components 0.0.77 → 0.0.79
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 +28 -0
- package/lib/commonjs/components/Accordion/Accordion.js +55 -55
- package/lib/commonjs/components/ActionFooter/ActionFooter.js +48 -2
- package/lib/commonjs/components/Attached/Attached.js +144 -0
- package/lib/commonjs/components/Card/Card.js +25 -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 +353 -0
- package/lib/commonjs/components/ListItem/ListItem.js +46 -24
- package/lib/commonjs/components/MessageField/MessageField.js +318 -0
- package/lib/commonjs/components/NavArrow/NavArrow.js +58 -17
- package/lib/commonjs/components/PlanComparisonCard/PlanComparisonCard.js +328 -0
- package/lib/commonjs/components/Slot/Slot.js +73 -0
- 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 +49 -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/Attached/Attached.js +139 -0
- package/lib/module/components/Card/Card.js +25 -2
- 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 +348 -0
- package/lib/module/components/ListItem/ListItem.js +46 -24
- package/lib/module/components/MessageField/MessageField.js +313 -0
- package/lib/module/components/NavArrow/NavArrow.js +59 -18
- package/lib/module/components/PlanComparisonCard/PlanComparisonCard.js +322 -0
- package/lib/module/components/Slot/Slot.js +68 -0
- 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 +7 -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/Attached/Attached.d.ts +61 -0
- package/lib/typescript/src/components/Card/Card.d.ts +9 -2
- 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/ListItem/ListItem.d.ts +15 -5
- 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/PlanComparisonCard/PlanComparisonCard.d.ts +64 -0
- package/lib/typescript/src/components/Slot/Slot.d.ts +52 -0
- 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 +10 -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/Attached/Attached.tsx +181 -0
- package/src/components/Card/Card.tsx +28 -1
- 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 +55 -25
- package/src/components/MessageField/MessageField.tsx +543 -0
- package/src/components/NavArrow/NavArrow.tsx +81 -17
- package/src/components/PlanComparisonCard/PlanComparisonCard.tsx +426 -0
- package/src/components/Slot/Slot.tsx +91 -0
- 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 +10 -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,61 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewProps, type ViewStyle } from 'react-native';
|
|
3
|
+
/**
|
|
4
|
+
* Anchor point on the main content where the attached `badge` is centered.
|
|
5
|
+
* Mirrors the nine Figma `position` variants (corners, edge midpoints, center).
|
|
6
|
+
*/
|
|
7
|
+
export type AttachedPosition = 'top-left' | 'top' | 'top-right' | 'left' | 'center' | 'right' | 'bottom-left' | 'bottom' | 'bottom-right';
|
|
8
|
+
export type AttachedProps = Omit<ViewProps, 'children'> & {
|
|
9
|
+
/**
|
|
10
|
+
* Main content the badge attaches to (the Figma "main slot"). Any node —
|
|
11
|
+
* typically an `IconCapsule`, `Avatar`, image, etc. `modes` are cascaded to
|
|
12
|
+
* every child via {@link cloneChildrenWithModes}.
|
|
13
|
+
*/
|
|
14
|
+
children?: React.ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* The element attached on top of `children` (the Figma "slot"). Centered on
|
|
17
|
+
* the anchor point given by `position` so it straddles the edge/corner.
|
|
18
|
+
* `modes` are cascaded into it as well.
|
|
19
|
+
*/
|
|
20
|
+
badge?: React.ReactNode;
|
|
21
|
+
/**
|
|
22
|
+
* Anchor point for the `badge` relative to the main content.
|
|
23
|
+
* @default 'bottom-right'
|
|
24
|
+
*/
|
|
25
|
+
position?: AttachedPosition;
|
|
26
|
+
/**
|
|
27
|
+
* How the anchor point is computed for diagonal (corner) positions:
|
|
28
|
+
* - `false` (default): treat the main content as a **square** — corner
|
|
29
|
+
* anchors sit on the bounding-box corners.
|
|
30
|
+
* - `true`: treat the main content as a **circle** inscribed in its bounding
|
|
31
|
+
* box — corner anchors sit on the circle's circumference (the 45° point),
|
|
32
|
+
* so badges hug round content like a circular `IconCapsule` or `Avatar`.
|
|
33
|
+
*
|
|
34
|
+
* Edge (`top`/`bottom`/`left`/`right`) and `center` anchors are unaffected,
|
|
35
|
+
* since the circle meets the bounding box at those points.
|
|
36
|
+
* @default false
|
|
37
|
+
*/
|
|
38
|
+
circular?: boolean;
|
|
39
|
+
/** Mode configuration cascaded to the token resolver and all children. */
|
|
40
|
+
modes?: Record<string, any>;
|
|
41
|
+
style?: StyleProp<ViewStyle>;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Attached — overlays a small `badge` on top of arbitrary main content,
|
|
45
|
+
* centered on one of nine anchor points (corners, edge midpoints, or center).
|
|
46
|
+
*
|
|
47
|
+
* The badge straddles the chosen anchor regardless of either element's size:
|
|
48
|
+
* both the main content and the badge are measured via `onLayout`, then the
|
|
49
|
+
* badge is absolutely positioned so its center lands exactly on the anchor.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```tsx
|
|
53
|
+
* <Attached position="bottom-right" badge={<InstitutionBadge modes={modes} />} modes={modes}>
|
|
54
|
+
* <IconCapsule iconName="ic_card" modes={modes} />
|
|
55
|
+
* </Attached>
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
declare function Attached({ children, badge, position, circular, modes: propModes, style, ...rest }: AttachedProps): import("react/jsx-runtime").JSX.Element;
|
|
59
|
+
declare const _default: React.MemoExoticComponent<typeof Attached>;
|
|
60
|
+
export default _default;
|
|
61
|
+
//# sourceMappingURL=Attached.d.ts.map
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type ViewStyle, type TextStyle, type StyleProp } from 'react-native';
|
|
3
3
|
export interface CardProps {
|
|
4
|
+
/**
|
|
5
|
+
* Content rendered in the header slot at the top of the card (e.g. a brand logo).
|
|
6
|
+
* Sits above the media slot, with its own padding.
|
|
7
|
+
*/
|
|
8
|
+
header?: React.ReactNode;
|
|
4
9
|
/**
|
|
5
10
|
* The content to be rendered in the media slot (e.g. an Image).
|
|
6
11
|
* This content is wrapped in a container that respects the `aspectRatio`.
|
|
@@ -28,16 +33,18 @@ export interface CardProps {
|
|
|
28
33
|
* Card component implementation from Figma node 765:6186.
|
|
29
34
|
*
|
|
30
35
|
* Supports a `media` slot (with aspect ratio) and a content area.
|
|
36
|
+
* Supports an optional `header` slot (e.g. a brand logo), a `media` slot
|
|
37
|
+
* (with aspect ratio) and a content area.
|
|
31
38
|
* Usage:
|
|
32
39
|
* ```tsx
|
|
33
|
-
* <Card media={<Image source={...} />} modes={modes}>
|
|
40
|
+
* <Card header={<GoldLogo />} media={<Image source={...} />} modes={modes}>
|
|
34
41
|
* <Card.SupportText>Support text</Card.SupportText>
|
|
35
42
|
* <Card.Title>Title</Card.Title>
|
|
36
43
|
* <Card.SupportText>Support text</Card.SupportText>
|
|
37
44
|
* </Card>
|
|
38
45
|
* ```
|
|
39
46
|
*/
|
|
40
|
-
export declare function Card({ media, children, modes, mediaAspectRatio, style, }: CardProps): import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
export declare function Card({ header, media, children, modes, mediaAspectRatio, style, }: CardProps): import("react/jsx-runtime").JSX.Element;
|
|
41
48
|
export declare namespace Card {
|
|
42
49
|
var Title: ({ children, style, modes: propModes }: CardTextProps) => import("react/jsx-runtime").JSX.Element;
|
|
43
50
|
var SupportText: ({ children, style, modes: propModes }: CardTextProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -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
|
|
@@ -6,8 +6,16 @@ type ListItemProps = {
|
|
|
6
6
|
title?: string;
|
|
7
7
|
supportText?: string;
|
|
8
8
|
showSupportText?: boolean;
|
|
9
|
+
/** Leading slot (Figma "leading"). Defaults to an `IconCapsule` when omitted. */
|
|
9
10
|
leading?: React.ReactNode;
|
|
10
11
|
supportSlot?: React.ReactNode;
|
|
12
|
+
/** Trailing slot (Figma "trailing"), e.g. `MoneyValue` or `Button`. Horizontal layout only. */
|
|
13
|
+
trailing?: React.ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated Renamed to `trailing` for a symmetric `leading` / `trailing`
|
|
16
|
+
* slot API. Still honored for backward compatibility; `trailing` wins when
|
|
17
|
+
* both are provided. Will be removed in a future major version.
|
|
18
|
+
*/
|
|
11
19
|
endSlot?: React.ReactNode;
|
|
12
20
|
/** Whether to show the NavArrow on the far right (Horizontal layout only). Defaults to true. */
|
|
13
21
|
navArrow?: boolean;
|
|
@@ -33,9 +41,11 @@ type ListItemProps = {
|
|
|
33
41
|
* - **design-token driven styling** via `getVariableByName` and `modes`
|
|
34
42
|
*
|
|
35
43
|
* Wherever the Figma layer name contains "Slot", this component exposes a
|
|
36
|
-
* dedicated React "slot" prop
|
|
44
|
+
* dedicated React "slot" prop. The leading and trailing edges share a
|
|
45
|
+
* symmetric `leading` / `trailing` slot API:
|
|
46
|
+
* - Slot "leading" → `leading`
|
|
37
47
|
* - Slot "support text" → `supportSlot`
|
|
38
|
-
* - Slot "
|
|
48
|
+
* - Slot "trailing" → `trailing`
|
|
39
49
|
*
|
|
40
50
|
* @component
|
|
41
51
|
* @param {Object} props
|
|
@@ -43,9 +53,9 @@ type ListItemProps = {
|
|
|
43
53
|
* @param {string} [props.title='Title'] - Primary title used in the horizontal layout.
|
|
44
54
|
* @param {string} [props.supportText='Support Text'] - Support text used in both layouts when `supportSlot` is not provided.
|
|
45
55
|
* @param {boolean} [props.showSupportText=true] - Toggles rendering of the support text in Horizontal layout.
|
|
46
|
-
* @param {React.ReactNode} [props.leading] - Optional leading
|
|
56
|
+
* @param {React.ReactNode} [props.leading] - Optional leading slot. Defaults to `IconCapsule`.
|
|
47
57
|
* @param {React.ReactNode} [props.supportSlot] - Optional custom slot used instead of the default support text block.
|
|
48
|
-
* @param {React.ReactNode} [props.
|
|
58
|
+
* @param {React.ReactNode} [props.trailing] - Optional trailing slot (Figma Slot "trailing"). Horizontal layout only.
|
|
49
59
|
* @param {boolean} [props.navArrow=true] - Whether to show NavArrow on the far right (Horizontal layout only).
|
|
50
60
|
* @param {Object} [props.modes={}] - Modes object passed to `getVariableByName` for all design tokens.
|
|
51
61
|
* @param {Function} [props.onPress] - When provided, the entire item becomes pressable (navigation variant).
|
|
@@ -67,7 +77,7 @@ type ListItemProps = {
|
|
|
67
77
|
* handlers stay referentially stable across renders.
|
|
68
78
|
* - The component is wrapped in `React.memo`.
|
|
69
79
|
*/
|
|
70
|
-
declare function ListItemImpl({ layout, title, supportText, showSupportText, leading, supportSlot, endSlot, navArrow, modes, onPress, style, contentStyle, accessibilityLabel, accessibilityHint, accessibilityState, webAccessibilityProps, ...rest }: ListItemProps): import("react/jsx-runtime").JSX.Element;
|
|
80
|
+
declare function ListItemImpl({ layout, title, supportText, showSupportText, leading, supportSlot, trailing, endSlot, navArrow, modes, onPress, style, contentStyle, accessibilityLabel, accessibilityHint, accessibilityState, webAccessibilityProps, ...rest }: ListItemProps): import("react/jsx-runtime").JSX.Element;
|
|
71
81
|
declare const ListItem: React.MemoExoticComponent<typeof ListItemImpl>;
|
|
72
82
|
export default ListItem;
|
|
73
83
|
//# sourceMappingURL=ListItem.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
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
/**
|
|
4
|
+
* A single plan column header (the label column has no header of its own).
|
|
5
|
+
*/
|
|
6
|
+
export type PlanComparisonColumn = {
|
|
7
|
+
/** Header text for the plan column. */
|
|
8
|
+
label: string;
|
|
9
|
+
/**
|
|
10
|
+
* Render the header in the brand accent colour (gold) — use it to
|
|
11
|
+
* highlight the recommended / upsell plan.
|
|
12
|
+
* @default false
|
|
13
|
+
*/
|
|
14
|
+
brand?: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Value rendered inside a plan cell.
|
|
18
|
+
* - `string` / `number` → rendered as value text.
|
|
19
|
+
* - `false` → renders the muted "not available" cross icon.
|
|
20
|
+
* - any React node → rendered as-is (e.g. a `Badge`, `MoneyValue`, icon…).
|
|
21
|
+
* - `null` / `undefined` / `true` → empty cell.
|
|
22
|
+
*/
|
|
23
|
+
export type PlanComparisonCellValue = string | number | boolean | null | undefined | React.ReactElement;
|
|
24
|
+
export type PlanComparisonRow = {
|
|
25
|
+
/** Feature label shown in the first (left) column. */
|
|
26
|
+
label: string;
|
|
27
|
+
/**
|
|
28
|
+
* Show an info icon after the label. When `onInfoPress` is provided the
|
|
29
|
+
* icon becomes tappable; otherwise it is purely decorative.
|
|
30
|
+
*/
|
|
31
|
+
showInfo?: boolean;
|
|
32
|
+
/** Handler for the info icon. Implies `showInfo`. */
|
|
33
|
+
onInfoPress?: () => void;
|
|
34
|
+
/**
|
|
35
|
+
* One value per plan column, in the same order as `columns`. See
|
|
36
|
+
* {@link PlanComparisonCellValue} for how each value is rendered.
|
|
37
|
+
*/
|
|
38
|
+
values: PlanComparisonCellValue[];
|
|
39
|
+
/** Stable key. Falls back to the label / index. */
|
|
40
|
+
key?: React.Key;
|
|
41
|
+
};
|
|
42
|
+
export type PlanComparisonCardProps = {
|
|
43
|
+
/**
|
|
44
|
+
* Plan column headers (excludes the leading label column). The order here
|
|
45
|
+
* maps 1:1 to each row's `values` array.
|
|
46
|
+
*/
|
|
47
|
+
columns?: PlanComparisonColumn[];
|
|
48
|
+
/** Feature rows compared across the plan columns. */
|
|
49
|
+
rows?: PlanComparisonRow[];
|
|
50
|
+
/**
|
|
51
|
+
* Minimum flex-grow on the label column when the table is given extra
|
|
52
|
+
* horizontal space. Plan columns always size to their content and never
|
|
53
|
+
* shrink below it.
|
|
54
|
+
* @default 0
|
|
55
|
+
*/
|
|
56
|
+
labelColumnFlex?: number;
|
|
57
|
+
/** Design token modes for theming (e.g. `{ "Color Mode": "Light" }`). */
|
|
58
|
+
modes?: Record<string, any>;
|
|
59
|
+
/** Override the outer container style. */
|
|
60
|
+
style?: StyleProp<ViewStyle>;
|
|
61
|
+
};
|
|
62
|
+
declare function PlanComparisonCard({ columns, rows, labelColumnFlex, modes, style, }: PlanComparisonCardProps): import("react/jsx-runtime").JSX.Element;
|
|
63
|
+
export default PlanComparisonCard;
|
|
64
|
+
//# sourceMappingURL=PlanComparisonCard.d.ts.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewProps, type ViewStyle } from 'react-native';
|
|
3
|
+
export type SlotLayoutDirection = 'vertical' | 'horizontal';
|
|
4
|
+
export type SlotProps = ViewProps & {
|
|
5
|
+
/**
|
|
6
|
+
* Content laid out inside the slot. `modes` are cascaded to every child via
|
|
7
|
+
* {@link cloneChildrenWithModes}.
|
|
8
|
+
*/
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Main-axis direction for slot children. Matches the Figma Slot variant:
|
|
12
|
+
* - `vertical` (default): stacks children in a column
|
|
13
|
+
* - `horizontal`: arranges children in a row
|
|
14
|
+
*/
|
|
15
|
+
layoutDirection?: SlotLayoutDirection;
|
|
16
|
+
/**
|
|
17
|
+
* Alignment along the cross axis.
|
|
18
|
+
* Defaults to `stretch` for vertical and `flex-start` for horizontal.
|
|
19
|
+
*/
|
|
20
|
+
alignCrossAxis?: ViewStyle['alignItems'];
|
|
21
|
+
/**
|
|
22
|
+
* Distribution along the main axis (maps to `justifyContent`).
|
|
23
|
+
*/
|
|
24
|
+
justifyMainAxis?: ViewStyle['justifyContent'];
|
|
25
|
+
/**
|
|
26
|
+
* Mode configuration passed to the token resolver and cascaded to children.
|
|
27
|
+
*/
|
|
28
|
+
modes?: Record<string, any>;
|
|
29
|
+
style?: StyleProp<ViewStyle>;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Slot — a token-driven layout container for grouped slot content.
|
|
33
|
+
*
|
|
34
|
+
* Use `Slot` instead of a raw `View` when you need a vertical or horizontal
|
|
35
|
+
* stack with design-token gap spacing and automatic `modes` propagation to
|
|
36
|
+
* children. Typical usage is nesting a column of actions inside a
|
|
37
|
+
* direction-locked parent such as `ActionFooter`:
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* <ActionFooter modes={modes}>
|
|
42
|
+
* <Slot layoutDirection="vertical" modes={modes}>
|
|
43
|
+
* <Button label="Continue" modes={primaryModes} />
|
|
44
|
+
* <Disclaimer disclaimer="Terms apply." modes={modes} />
|
|
45
|
+
* </Slot>
|
|
46
|
+
* </ActionFooter>
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
declare function Slot({ children, layoutDirection, alignCrossAxis, justifyMainAxis, modes: propModes, style, ...rest }: SlotProps): import("react/jsx-runtime").JSX.Element;
|
|
50
|
+
declare const _default: React.MemoExoticComponent<typeof Slot>;
|
|
51
|
+
export default _default;
|
|
52
|
+
//# sourceMappingURL=Slot.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;
|