jfs-components 0.0.6 → 0.0.7
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/lib/commonjs/components/Accordion/Accordion.mdx +1 -1
- package/lib/commonjs/components/ActionFooter/ActionFooter.js +2 -14
- package/lib/commonjs/components/ActionFooter/ActionFooter.js.map +1 -1
- package/lib/commonjs/components/ActionFooter/ActionFooter.mdx +1 -1
- package/lib/commonjs/components/ActionTile/ActionTile.mdx +5 -1
- package/lib/commonjs/components/AppBar/AppBar.js +100 -238
- package/lib/commonjs/components/AppBar/AppBar.js.map +1 -1
- package/lib/commonjs/components/AppBar/AppBar.mdx +51 -39
- package/lib/commonjs/components/Avatar/Avatar.mdx +9 -1
- package/lib/commonjs/components/AvatarGroup/AvatarGroup.mdx +9 -1
- package/lib/commonjs/components/Badge/Badge.mdx +1 -1
- package/lib/commonjs/components/Balance/Balance.js +77 -0
- package/lib/commonjs/components/Balance/Balance.js.map +1 -0
- package/lib/commonjs/components/Balance/Balance.mdx +62 -0
- package/lib/commonjs/components/BottomNav/BottomNav.mdx +5 -1
- package/lib/commonjs/components/BottomNavItem/BottomNavItem.mdx +5 -1
- package/lib/commonjs/components/Button/Button.mdx +5 -1
- package/lib/commonjs/components/ButtonGroup/ButtonGroup.js +64 -0
- package/lib/commonjs/components/ButtonGroup/ButtonGroup.js.map +1 -0
- package/lib/commonjs/components/ButtonGroup/ButtonGroup.mdx +56 -0
- package/lib/commonjs/components/Card/Card.mdx +1 -1
- package/lib/commonjs/components/CardFeedback/CardFeedback.mdx +5 -1
- package/lib/commonjs/components/ChipGroup/ChipGroup.js +54 -0
- package/lib/commonjs/components/ChipGroup/ChipGroup.js.map +1 -0
- package/lib/commonjs/components/ChipGroup/ChipGroup.mdx +40 -0
- package/lib/commonjs/components/ChipSelect/ChipSelect.js +103 -0
- package/lib/commonjs/components/ChipSelect/ChipSelect.js.map +1 -0
- package/lib/commonjs/components/ChipSelect/ChipSelect.mdx +80 -0
- package/lib/commonjs/components/CtaCard/CtaCard.js +5 -18
- package/lib/commonjs/components/CtaCard/CtaCard.js.map +1 -1
- package/lib/commonjs/components/CtaCard/CtaCard.mdx +1 -1
- package/lib/commonjs/components/Disclaimer/Disclaimer.mdx +5 -1
- package/lib/commonjs/components/Divider/Divider.mdx +5 -1
- package/lib/commonjs/components/Drawer/Drawer.mdx +9 -1
- package/lib/commonjs/components/EmptyState/EmptyState.js +138 -0
- package/lib/commonjs/components/EmptyState/EmptyState.js.map +1 -0
- package/lib/commonjs/components/EmptyState/EmptyState.mdx +73 -0
- package/lib/commonjs/components/FilterBar/FilterBar.mdx +1 -1
- package/lib/commonjs/components/HStack/HStack.js +67 -0
- package/lib/commonjs/components/HStack/HStack.js.map +1 -0
- package/lib/commonjs/components/HStack/HStack.mdx +44 -0
- package/lib/commonjs/components/IconButton/IconButton.mdx +5 -1
- package/lib/commonjs/components/IconCapsule/IconCapsule.js +3 -3
- package/lib/commonjs/components/IconCapsule/IconCapsule.js.map +1 -1
- package/lib/commonjs/components/IconCapsule/IconCapsule.mdx +12 -4
- package/lib/commonjs/components/Introduction.mdx +3 -98
- package/lib/commonjs/components/LazyList/LazyList.mdx +1 -1
- package/lib/commonjs/components/ListGroup/ListGroup.js +3 -30
- package/lib/commonjs/components/ListGroup/ListGroup.js.map +1 -1
- package/lib/commonjs/components/ListGroup/ListGroup.mdx +5 -1
- package/lib/commonjs/components/ListItem/ListItem.js +5 -37
- package/lib/commonjs/components/ListItem/ListItem.js.map +1 -1
- package/lib/commonjs/components/ListItem/ListItem.mdx +5 -1
- package/lib/commonjs/components/MediaCard/MediaCard.mdx +5 -1
- package/lib/commonjs/components/MerchantProfile/MerchantProfile.mdx +1 -1
- package/lib/commonjs/components/MoneyValue/MoneyValue.mdx +6 -2
- package/lib/commonjs/components/NavArrow/NavArrow.js +42 -17
- package/lib/commonjs/components/NavArrow/NavArrow.js.map +1 -1
- package/lib/commonjs/components/NavArrow/NavArrow.mdx +5 -1
- package/lib/commonjs/components/PageTitle/PageTitle.mdx +5 -1
- package/lib/commonjs/components/Screen/Screen.js +53 -0
- package/lib/commonjs/components/Screen/Screen.js.map +1 -0
- package/lib/commonjs/components/Screen/Screen.mdx +58 -0
- package/lib/commonjs/components/Section/Section.js +3 -25
- package/lib/commonjs/components/Section/Section.js.map +1 -1
- package/lib/commonjs/components/Section/Section.mdx +5 -1
- package/lib/commonjs/components/Stepper/Step.mdx +5 -1
- package/lib/commonjs/components/Stepper/StepLabel.mdx +5 -1
- package/lib/commonjs/components/Stepper/Stepper.mdx +1 -1
- package/lib/commonjs/components/SupportText/SupportText.js +83 -0
- package/lib/commonjs/components/SupportText/SupportText.js.map +1 -0
- package/lib/commonjs/components/SupportText/SupportText.mdx +48 -0
- package/lib/commonjs/components/SupportText/SupportTextIcon.js +47 -0
- package/lib/commonjs/components/SupportText/SupportTextIcon.js.map +1 -0
- package/lib/commonjs/components/SupportText/SupportTextIcon.mdx +35 -0
- package/lib/commonjs/components/SupportText/index.js +21 -0
- package/lib/commonjs/components/SupportText/index.js.map +1 -0
- package/lib/commonjs/components/TextInput/TextInput.mdx +9 -1
- package/lib/commonjs/components/ThreadHero/ThreadHero.mdx +1 -1
- package/lib/commonjs/components/Tooltip/Tooltip.mdx +5 -1
- package/lib/commonjs/components/TransactionBubble/TransactionBubble.mdx +1 -1
- package/lib/commonjs/components/TransactionDetails/TransactionDetails.js +2 -24
- package/lib/commonjs/components/TransactionDetails/TransactionDetails.js.map +1 -1
- package/lib/commonjs/components/TransactionDetails/TransactionDetails.mdx +1 -1
- package/lib/commonjs/components/TransactionStatus/TransactionStatus.mdx +1 -1
- package/lib/commonjs/components/UpiHandle/UpiHandle.mdx +5 -1
- package/lib/commonjs/components/VStack/VStack.js +73 -0
- package/lib/commonjs/components/VStack/VStack.js.map +1 -0
- package/lib/commonjs/components/VStack/VStack.mdx +44 -0
- package/lib/commonjs/components/index.js +28 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/design-tokens/JFS Variables-variables-full.json +1 -18633
- package/lib/commonjs/design-tokens/figma-variables-resolver.js +3 -9
- package/lib/commonjs/design-tokens/figma-variables-resolver.js.map +1 -2
- package/lib/commonjs/icons/ic_info.svg +1 -0
- package/lib/commonjs/icons/ic_warning.svg +1 -0
- package/lib/commonjs/icons/registry.js +2 -2
- package/lib/commonjs/icons/registry.js.map +1 -1
- package/lib/commonjs/utils/react-utils.js +47 -0
- package/lib/commonjs/utils/react-utils.js.map +1 -0
- package/lib/module/components/Accordion/Accordion.mdx +1 -1
- package/lib/module/components/ActionFooter/ActionFooter.js +2 -14
- package/lib/module/components/ActionFooter/ActionFooter.js.map +1 -1
- package/lib/module/components/ActionFooter/ActionFooter.mdx +1 -1
- package/lib/module/components/ActionTile/ActionTile.mdx +5 -1
- package/lib/module/components/AppBar/AppBar.js +100 -238
- package/lib/module/components/AppBar/AppBar.js.map +1 -1
- package/lib/module/components/AppBar/AppBar.mdx +51 -39
- package/lib/module/components/Avatar/Avatar.mdx +9 -1
- package/lib/module/components/AvatarGroup/AvatarGroup.mdx +9 -1
- package/lib/module/components/Badge/Badge.mdx +1 -1
- package/lib/module/components/Balance/Balance.js +72 -0
- package/lib/module/components/Balance/Balance.js.map +1 -0
- package/lib/module/components/Balance/Balance.mdx +62 -0
- package/lib/module/components/BottomNav/BottomNav.mdx +5 -1
- package/lib/module/components/BottomNavItem/BottomNavItem.mdx +5 -1
- package/lib/module/components/Button/Button.mdx +5 -1
- package/lib/module/components/ButtonGroup/ButtonGroup.js +59 -0
- package/lib/module/components/ButtonGroup/ButtonGroup.js.map +1 -0
- package/lib/module/components/ButtonGroup/ButtonGroup.mdx +56 -0
- package/lib/module/components/Card/Card.mdx +1 -1
- package/lib/module/components/CardFeedback/CardFeedback.mdx +5 -1
- package/lib/module/components/ChipGroup/ChipGroup.js +49 -0
- package/lib/module/components/ChipGroup/ChipGroup.js.map +1 -0
- package/lib/module/components/ChipGroup/ChipGroup.mdx +40 -0
- package/lib/module/components/ChipSelect/ChipSelect.js +98 -0
- package/lib/module/components/ChipSelect/ChipSelect.js.map +1 -0
- package/lib/module/components/ChipSelect/ChipSelect.mdx +80 -0
- package/lib/module/components/CtaCard/CtaCard.js +5 -18
- package/lib/module/components/CtaCard/CtaCard.js.map +1 -1
- package/lib/module/components/CtaCard/CtaCard.mdx +1 -1
- package/lib/module/components/Disclaimer/Disclaimer.mdx +5 -1
- package/lib/module/components/Divider/Divider.mdx +5 -1
- package/lib/module/components/Drawer/Drawer.mdx +9 -1
- package/lib/module/components/EmptyState/EmptyState.js +132 -0
- package/lib/module/components/EmptyState/EmptyState.js.map +1 -0
- package/lib/module/components/EmptyState/EmptyState.mdx +73 -0
- package/lib/module/components/FilterBar/FilterBar.mdx +1 -1
- package/lib/module/components/HStack/HStack.js +61 -0
- package/lib/module/components/HStack/HStack.js.map +1 -0
- package/lib/module/components/HStack/HStack.mdx +44 -0
- package/lib/module/components/IconButton/IconButton.mdx +5 -1
- package/lib/module/components/IconCapsule/IconCapsule.js +3 -3
- package/lib/module/components/IconCapsule/IconCapsule.js.map +1 -1
- package/lib/module/components/IconCapsule/IconCapsule.mdx +12 -4
- package/lib/module/components/Introduction.mdx +3 -98
- package/lib/module/components/LazyList/LazyList.mdx +1 -1
- package/lib/module/components/ListGroup/ListGroup.js +1 -30
- package/lib/module/components/ListGroup/ListGroup.js.map +1 -1
- package/lib/module/components/ListGroup/ListGroup.mdx +5 -1
- package/lib/module/components/ListItem/ListItem.js +1 -35
- package/lib/module/components/ListItem/ListItem.js.map +1 -1
- package/lib/module/components/ListItem/ListItem.mdx +5 -1
- package/lib/module/components/MediaCard/MediaCard.mdx +5 -1
- package/lib/module/components/MerchantProfile/MerchantProfile.mdx +1 -1
- package/lib/module/components/MoneyValue/MoneyValue.mdx +6 -2
- package/lib/module/components/NavArrow/NavArrow.js +42 -17
- package/lib/module/components/NavArrow/NavArrow.js.map +1 -1
- package/lib/module/components/NavArrow/NavArrow.mdx +5 -1
- package/lib/module/components/PageTitle/PageTitle.mdx +5 -1
- package/lib/module/components/Screen/Screen.js +47 -0
- package/lib/module/components/Screen/Screen.js.map +1 -0
- package/lib/module/components/Screen/Screen.mdx +58 -0
- package/lib/module/components/Section/Section.js +1 -23
- package/lib/module/components/Section/Section.js.map +1 -1
- package/lib/module/components/Section/Section.mdx +5 -1
- package/lib/module/components/Stepper/Step.mdx +5 -1
- package/lib/module/components/Stepper/StepLabel.mdx +5 -1
- package/lib/module/components/Stepper/Stepper.mdx +1 -1
- package/lib/module/components/SupportText/SupportText.js +78 -0
- package/lib/module/components/SupportText/SupportText.js.map +1 -0
- package/lib/module/components/SupportText/SupportText.mdx +48 -0
- package/lib/module/components/SupportText/SupportTextIcon.js +42 -0
- package/lib/module/components/SupportText/SupportTextIcon.js.map +1 -0
- package/lib/module/components/SupportText/SupportTextIcon.mdx +35 -0
- package/lib/module/components/SupportText/index.js +5 -0
- package/lib/module/components/SupportText/index.js.map +1 -0
- package/lib/module/components/TextInput/TextInput.mdx +9 -1
- package/lib/module/components/ThreadHero/ThreadHero.mdx +1 -1
- package/lib/module/components/Tooltip/Tooltip.mdx +5 -1
- package/lib/module/components/TransactionBubble/TransactionBubble.mdx +1 -1
- package/lib/module/components/TransactionDetails/TransactionDetails.js +2 -26
- package/lib/module/components/TransactionDetails/TransactionDetails.js.map +1 -1
- package/lib/module/components/TransactionDetails/TransactionDetails.mdx +1 -1
- package/lib/module/components/TransactionStatus/TransactionStatus.mdx +1 -1
- package/lib/module/components/UpiHandle/UpiHandle.mdx +5 -1
- package/lib/module/components/VStack/VStack.js +67 -0
- package/lib/module/components/VStack/VStack.js.map +1 -0
- package/lib/module/components/VStack/VStack.mdx +44 -0
- package/lib/module/components/index.js +4 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/design-tokens/JFS Variables-variables-full.json +1 -18633
- package/lib/module/design-tokens/figma-variables-resolver.js +2 -2
- package/lib/module/design-tokens/figma-variables-resolver.js.map +0 -1
- package/lib/module/icons/ic_info.svg +1 -0
- package/lib/module/icons/ic_warning.svg +1 -0
- package/lib/module/icons/registry.js +2 -2
- package/lib/module/icons/registry.js.map +1 -1
- package/lib/module/utils/react-utils.js +43 -0
- package/lib/module/utils/react-utils.js.map +1 -0
- package/lib/typescript/components/ActionFooter/ActionFooter.d.ts.map +1 -1
- package/lib/typescript/components/AppBar/AppBar.d.ts +34 -68
- package/lib/typescript/components/AppBar/AppBar.d.ts.map +1 -1
- package/lib/typescript/components/Balance/Balance.d.ts +44 -0
- package/lib/typescript/components/Balance/Balance.d.ts.map +1 -0
- package/lib/typescript/components/ButtonGroup/ButtonGroup.d.ts +36 -0
- package/lib/typescript/components/ButtonGroup/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/components/ChipGroup/ChipGroup.d.ts +29 -0
- package/lib/typescript/components/ChipGroup/ChipGroup.d.ts.map +1 -0
- package/lib/typescript/components/ChipSelect/ChipSelect.d.ts +47 -0
- package/lib/typescript/components/ChipSelect/ChipSelect.d.ts.map +1 -0
- package/lib/typescript/components/CtaCard/CtaCard.d.ts.map +1 -1
- package/lib/typescript/components/EmptyState/EmptyState.d.ts +38 -0
- package/lib/typescript/components/EmptyState/EmptyState.d.ts.map +1 -0
- package/lib/typescript/components/HStack/HStack.d.ts +41 -0
- package/lib/typescript/components/HStack/HStack.d.ts.map +1 -0
- package/lib/typescript/components/ListGroup/ListGroup.d.ts.map +1 -1
- package/lib/typescript/components/ListItem/ListItem.d.ts.map +1 -1
- package/lib/typescript/components/NavArrow/NavArrow.d.ts +3 -3
- package/lib/typescript/components/NavArrow/NavArrow.d.ts.map +1 -1
- package/lib/typescript/components/Screen/Screen.d.ts +23 -0
- package/lib/typescript/components/Screen/Screen.d.ts.map +1 -0
- package/lib/typescript/components/Section/Section.d.ts.map +1 -1
- package/lib/typescript/components/SupportText/SupportText.d.ts +34 -0
- package/lib/typescript/components/SupportText/SupportText.d.ts.map +1 -0
- package/lib/typescript/components/SupportText/SupportTextIcon.d.ts +10 -0
- package/lib/typescript/components/SupportText/SupportTextIcon.d.ts.map +1 -0
- package/lib/typescript/components/SupportText/index.d.ts +3 -0
- package/lib/typescript/components/SupportText/index.d.ts.map +1 -0
- package/lib/typescript/components/TransactionDetails/TransactionDetails.d.ts.map +1 -1
- package/lib/typescript/components/VStack/VStack.d.ts +41 -0
- package/lib/typescript/components/VStack/VStack.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +4 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/icons/registry.d.ts +1 -1
- package/lib/typescript/icons/registry.d.ts.map +1 -1
- package/lib/typescript/utils/react-utils.d.ts +7 -0
- package/lib/typescript/utils/react-utils.d.ts.map +1 -0
- package/package.json +7 -5
- package/src/components/.token-metadata.json +468 -12
- package/src/components/Accordion/Accordion.mdx +1 -1
- package/src/components/ActionFooter/ActionFooter.mdx +1 -1
- package/src/components/ActionFooter/ActionFooter.tsx +3 -12
- package/src/components/ActionTile/ActionTile.mdx +5 -1
- package/src/components/AppBar/AppBar.mdx +51 -39
- package/src/components/AppBar/AppBar.tsx +140 -261
- package/src/components/Avatar/Avatar.mdx +9 -1
- package/src/components/AvatarGroup/AvatarGroup.mdx +9 -1
- package/src/components/Badge/Badge.mdx +1 -1
- package/src/components/Balance/Balance.mdx +62 -0
- package/src/components/Balance/Balance.tsx +107 -0
- package/src/components/BottomNav/BottomNav.mdx +5 -1
- package/src/components/BottomNavItem/BottomNavItem.mdx +5 -1
- package/src/components/Button/Button.mdx +5 -1
- package/src/components/ButtonGroup/ButtonGroup.mdx +56 -0
- package/src/components/ButtonGroup/ButtonGroup.tsx +78 -0
- package/src/components/Card/Card.mdx +1 -1
- package/src/components/CardFeedback/CardFeedback.mdx +5 -1
- package/src/components/ChipGroup/ChipGroup.mdx +40 -0
- package/src/components/ChipGroup/ChipGroup.tsx +67 -0
- package/src/components/ChipSelect/ChipSelect.mdx +80 -0
- package/src/components/ChipSelect/ChipSelect.tsx +138 -0
- package/src/components/CtaCard/CtaCard.mdx +1 -1
- package/src/components/CtaCard/CtaCard.tsx +12 -20
- package/src/components/Disclaimer/Disclaimer.mdx +5 -1
- package/src/components/Divider/Divider.mdx +5 -1
- package/src/components/Drawer/Drawer.mdx +9 -1
- package/src/components/EmptyState/EmptyState.mdx +73 -0
- package/src/components/EmptyState/EmptyState.tsx +181 -0
- package/src/components/FilterBar/FilterBar.mdx +1 -1
- package/src/components/HStack/HStack.mdx +44 -0
- package/src/components/HStack/HStack.tsx +95 -0
- package/src/components/IconButton/IconButton.mdx +5 -1
- package/src/components/IconCapsule/IconCapsule.mdx +12 -4
- package/src/components/IconCapsule/IconCapsule.tsx +3 -3
- package/src/components/Introduction.mdx +3 -98
- package/src/components/LazyList/LazyList.mdx +1 -1
- package/src/components/ListGroup/ListGroup.mdx +5 -1
- package/src/components/ListGroup/ListGroup.tsx +5 -43
- package/src/components/ListItem/ListItem.mdx +5 -1
- package/src/components/ListItem/ListItem.tsx +15 -60
- package/src/components/MediaCard/MediaCard.mdx +5 -1
- package/src/components/MerchantProfile/MerchantProfile.mdx +1 -1
- package/src/components/MoneyValue/MoneyValue.mdx +6 -2
- package/src/components/NavArrow/NavArrow.mdx +5 -1
- package/src/components/NavArrow/NavArrow.tsx +48 -16
- package/src/components/PageTitle/PageTitle.mdx +5 -1
- package/src/components/Screen/Screen.mdx +58 -0
- package/src/components/Screen/Screen.tsx +60 -0
- package/src/components/Section/Section.mdx +5 -1
- package/src/components/Section/Section.tsx +17 -46
- package/src/components/Stepper/Step.mdx +5 -1
- package/src/components/Stepper/StepLabel.mdx +5 -1
- package/src/components/Stepper/Stepper.mdx +1 -1
- package/src/components/SupportText/SupportText.mdx +48 -0
- package/src/components/SupportText/SupportText.tsx +104 -0
- package/src/components/SupportText/SupportTextIcon.mdx +35 -0
- package/src/components/SupportText/SupportTextIcon.tsx +45 -0
- package/src/components/SupportText/index.ts +2 -0
- package/src/components/TextInput/TextInput.mdx +9 -1
- package/src/components/ThreadHero/ThreadHero.mdx +1 -1
- package/src/components/Tooltip/Tooltip.mdx +5 -1
- package/src/components/TransactionBubble/TransactionBubble.mdx +1 -1
- package/src/components/TransactionDetails/TransactionDetails.mdx +1 -1
- package/src/components/TransactionDetails/TransactionDetails.tsx +1 -38
- package/src/components/TransactionStatus/TransactionStatus.mdx +1 -1
- package/src/components/UpiHandle/UpiHandle.mdx +5 -1
- package/src/components/VStack/VStack.mdx +44 -0
- package/src/components/VStack/VStack.tsx +100 -0
- package/src/components/index.ts +4 -0
- package/src/design-tokens/JFS Variables-variables-full.json +1 -18633
- package/src/icons/ic_info.svg +1 -0
- package/src/icons/ic_warning.svg +1 -0
- package/src/icons/registry.ts +9 -1
- package/src/utils/react-utils.ts +51 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react'
|
|
2
|
+
import { View, StyleProp, ViewStyle } from 'react-native'
|
|
3
|
+
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
|
+
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Helper function to recursively clone children and pass modes prop to components that accept it.
|
|
8
|
+
* This ensures that all child components in slots receive the modes prop from the parent.
|
|
9
|
+
*/
|
|
10
|
+
import { cloneChildrenWithModes } from '../../utils/react-utils'
|
|
11
|
+
|
|
12
|
+
export interface ScreenProps {
|
|
13
|
+
/**
|
|
14
|
+
* The content to display inside the screen.
|
|
15
|
+
*/
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Modes object to override default variable values.
|
|
19
|
+
*/
|
|
20
|
+
modes?: Record<string, any>;
|
|
21
|
+
/**
|
|
22
|
+
* Optional style overrides for the container.
|
|
23
|
+
*/
|
|
24
|
+
style?: StyleProp<ViewStyle>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Screen component that acts as the outer most container providing the background color.
|
|
29
|
+
* Matches Figma node 201:49.
|
|
30
|
+
*/
|
|
31
|
+
export const Screen = ({
|
|
32
|
+
children,
|
|
33
|
+
modes: propModes = {},
|
|
34
|
+
style
|
|
35
|
+
}: ScreenProps) => {
|
|
36
|
+
const { modes: globalModes } = useTokens()
|
|
37
|
+
const modes = { ...globalModes, ...propModes }
|
|
38
|
+
|
|
39
|
+
const backgroundColor = getVariableByName('screen/body/background', modes)
|
|
40
|
+
|
|
41
|
+
const containerStyle: ViewStyle = {
|
|
42
|
+
flex: 1,
|
|
43
|
+
backgroundColor,
|
|
44
|
+
width: '100%',
|
|
45
|
+
height: '100%',
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Pass modes down to children
|
|
49
|
+
const processedChildren = children
|
|
50
|
+
? cloneChildrenWithModes(React.Children.toArray(children), modes)
|
|
51
|
+
: null
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<View style={[containerStyle, style]} data-node-id="201:49">
|
|
55
|
+
{processedChildren}
|
|
56
|
+
</View>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export default Screen
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as SectionStories from './Section.stories';
|
|
3
3
|
import Section from './Section';
|
|
4
4
|
import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
|
|
@@ -17,6 +17,10 @@ This component uses the following design token collections. Each collection supp
|
|
|
17
17
|
- **Modes:** Light | Dark
|
|
18
18
|
- **Default:** Light
|
|
19
19
|
|
|
20
|
+
### Colors Router
|
|
21
|
+
- **Modes:** POC | Old
|
|
22
|
+
- **Default:** POC
|
|
23
|
+
|
|
20
24
|
### Padding
|
|
21
25
|
- **Modes:** Default | None
|
|
22
26
|
- **Default:** Default
|
|
@@ -3,6 +3,7 @@ import { View, Text, Pressable, type StyleProp, type ViewStyle, type PressableSt
|
|
|
3
3
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
4
|
import Icon from '../../icons/Icon'
|
|
5
5
|
import { usePressableWebSupport, type WebAccessibilityProps } from '../../utils/web-platform-utils'
|
|
6
|
+
import { cloneChildrenWithModes } from '../../utils/react-utils'
|
|
6
7
|
|
|
7
8
|
type SectionProps = {
|
|
8
9
|
title?: string;
|
|
@@ -135,7 +136,7 @@ function Section({
|
|
|
135
136
|
}
|
|
136
137
|
|
|
137
138
|
// Generate default accessibility label from title and supportText
|
|
138
|
-
const defaultAccessibilityLabel = accessibilityLabel ||
|
|
139
|
+
const defaultAccessibilityLabel = accessibilityLabel ||
|
|
139
140
|
(showSupportText ? `${title}. ${supportText}` : title)
|
|
140
141
|
|
|
141
142
|
// Get web platform support props (only used when onPress is defined)
|
|
@@ -150,8 +151,8 @@ function Section({
|
|
|
150
151
|
const headerContent = (
|
|
151
152
|
<>
|
|
152
153
|
<View style={headerWrapStyle}>
|
|
153
|
-
<Text
|
|
154
|
-
style={titleStyle}
|
|
154
|
+
<Text
|
|
155
|
+
style={titleStyle}
|
|
155
156
|
numberOfLines={1}
|
|
156
157
|
accessibilityElementsHidden={true}
|
|
157
158
|
importantForAccessibility="no"
|
|
@@ -159,9 +160,9 @@ function Section({
|
|
|
159
160
|
{title}
|
|
160
161
|
</Text>
|
|
161
162
|
{onPress && (
|
|
162
|
-
<Icon
|
|
163
|
-
name="ic_chevron_right"
|
|
164
|
-
size={24}
|
|
163
|
+
<Icon
|
|
164
|
+
name="ic_chevron_right"
|
|
165
|
+
size={24}
|
|
165
166
|
color={titleColor}
|
|
166
167
|
accessibilityElementsHidden={true}
|
|
167
168
|
importantForAccessibility="no"
|
|
@@ -169,8 +170,8 @@ function Section({
|
|
|
169
170
|
)}
|
|
170
171
|
</View>
|
|
171
172
|
{showSupportText && (
|
|
172
|
-
<Text
|
|
173
|
-
style={supportTextStyle}
|
|
173
|
+
<Text
|
|
174
|
+
style={supportTextStyle}
|
|
174
175
|
numberOfLines={2}
|
|
175
176
|
accessibilityElementsHidden={true}
|
|
176
177
|
importantForAccessibility="no"
|
|
@@ -182,7 +183,7 @@ function Section({
|
|
|
182
183
|
)
|
|
183
184
|
|
|
184
185
|
return (
|
|
185
|
-
<View
|
|
186
|
+
<View
|
|
186
187
|
style={[containerStyle, style]}
|
|
187
188
|
accessibilityRole={'region' as any}
|
|
188
189
|
accessibilityLabel={defaultAccessibilityLabel}
|
|
@@ -197,27 +198,27 @@ function Section({
|
|
|
197
198
|
onPress={onPress}
|
|
198
199
|
onPressIn={(e: any) => {
|
|
199
200
|
setIsHeaderPressed(true)
|
|
200
|
-
|
|
201
|
+
; (rest as any)?.onPressIn?.(e)
|
|
201
202
|
}}
|
|
202
203
|
onPressOut={(e: any) => {
|
|
203
204
|
setIsHeaderPressed(false)
|
|
204
|
-
|
|
205
|
+
; (rest as any)?.onPressOut?.(e)
|
|
205
206
|
}}
|
|
206
207
|
onFocus={(e: any) => {
|
|
207
208
|
setIsHeaderFocused(true)
|
|
208
|
-
|
|
209
|
+
; (rest as any)?.onFocus?.(e)
|
|
209
210
|
}}
|
|
210
211
|
onBlur={(e: any) => {
|
|
211
212
|
setIsHeaderFocused(false)
|
|
212
|
-
|
|
213
|
+
; (rest as any)?.onBlur?.(e)
|
|
213
214
|
}}
|
|
214
215
|
onHoverIn={(e: any) => {
|
|
215
216
|
setIsHeaderHovered(true)
|
|
216
|
-
|
|
217
|
+
; (rest as any)?.onHoverIn?.(e)
|
|
217
218
|
}}
|
|
218
219
|
onHoverOut={(e: any) => {
|
|
219
220
|
setIsHeaderHovered(false)
|
|
220
|
-
|
|
221
|
+
; (rest as any)?.onHoverOut?.(e)
|
|
221
222
|
}}
|
|
222
223
|
style={({ pressed }: PressableStateCallbackType) => [
|
|
223
224
|
headerStyle,
|
|
@@ -298,37 +299,7 @@ function SectionBento({
|
|
|
298
299
|
gap,
|
|
299
300
|
}
|
|
300
301
|
|
|
301
|
-
// Helper function to clone children with modes (same as in Section component)
|
|
302
|
-
const cloneChildrenWithModes = (
|
|
303
|
-
children: React.ReactNode,
|
|
304
|
-
modes: Record<string, any>
|
|
305
|
-
): React.ReactNode[] => {
|
|
306
|
-
const result = React.Children.map(children, (child) => {
|
|
307
|
-
if (!React.isValidElement(child)) {
|
|
308
|
-
return child
|
|
309
|
-
}
|
|
310
302
|
|
|
311
|
-
const childChildren = (child.props as any)?.children
|
|
312
|
-
const hasChildren = childChildren !== undefined && childChildren !== null
|
|
313
|
-
const existingModes = (child.props as any)?.modes
|
|
314
|
-
// Merge order: parent modes first, then child's explicit modes override them
|
|
315
|
-
const mergedModes = existingModes ? { ...modes, ...existingModes } : modes
|
|
316
|
-
|
|
317
|
-
const processedChildren: React.ReactNode | undefined = hasChildren
|
|
318
|
-
? cloneChildrenWithModes(React.Children.toArray(childChildren), modes)
|
|
319
|
-
: undefined
|
|
320
|
-
|
|
321
|
-
return React.cloneElement(
|
|
322
|
-
child,
|
|
323
|
-
{
|
|
324
|
-
...(child.props as any),
|
|
325
|
-
modes: mergedModes,
|
|
326
|
-
},
|
|
327
|
-
processedChildren
|
|
328
|
-
)
|
|
329
|
-
})
|
|
330
|
-
return result || []
|
|
331
|
-
}
|
|
332
303
|
|
|
333
304
|
// Process slots to pass modes to children
|
|
334
305
|
const processedNavSlot = navSlot
|
|
@@ -340,7 +311,7 @@ function SectionBento({
|
|
|
340
311
|
: null
|
|
341
312
|
|
|
342
313
|
return (
|
|
343
|
-
<View
|
|
314
|
+
<View
|
|
344
315
|
style={[containerStyle, style]}
|
|
345
316
|
accessibilityRole={'region' as any}
|
|
346
317
|
accessibilityLabel={accessibilityLabel}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as StepStories from './Step.stories';
|
|
3
3
|
import { Step } from './Step';
|
|
4
4
|
|
|
@@ -19,6 +19,10 @@ This component uses the following design token collections. Each collection supp
|
|
|
19
19
|
### Color Mode
|
|
20
20
|
- **Modes:** Light | Dark
|
|
21
21
|
- **Default:** Light
|
|
22
|
+
|
|
23
|
+
### Colors Router
|
|
24
|
+
- **Modes:** POC | Old
|
|
25
|
+
- **Default:** POC
|
|
22
26
|
## Usage
|
|
23
27
|
|
|
24
28
|
<Canvas>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as StepLabelStories from './StepLabel.stories';
|
|
3
3
|
import { StepLabel } from './StepLabel';
|
|
4
4
|
|
|
@@ -15,6 +15,10 @@ This component uses the following design token collections. Each collection supp
|
|
|
15
15
|
### Color Mode
|
|
16
16
|
- **Modes:** Light | Dark
|
|
17
17
|
- **Default:** Light
|
|
18
|
+
|
|
19
|
+
### Colors Router
|
|
20
|
+
- **Modes:** POC | Old
|
|
21
|
+
- **Default:** POC
|
|
18
22
|
## Usage
|
|
19
23
|
|
|
20
24
|
<Canvas>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Canvas, Meta, Story, Controls } from '@storybook/blocks';
|
|
2
|
+
import * as SupportTextStories from './SupportText.stories';
|
|
3
|
+
import SupportText from './SupportText';
|
|
4
|
+
|
|
5
|
+
<Meta of={SupportTextStories} />
|
|
6
|
+
|
|
7
|
+
# SupportText
|
|
8
|
+
|
|
9
|
+
A component for displaying status messages with icons.
|
|
10
|
+
|
|
11
|
+
<Canvas>
|
|
12
|
+
<Story of={SupportTextStories.Default} />
|
|
13
|
+
</Canvas>
|
|
14
|
+
|
|
15
|
+
## Props
|
|
16
|
+
|
|
17
|
+
<Controls />
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## Available Collections and Modes
|
|
21
|
+
|
|
22
|
+
This component uses the following design token collections. Each collection supports multiple modes that can be configured via the `modes` prop.
|
|
23
|
+
|
|
24
|
+
### Status
|
|
25
|
+
- **Modes:** Neutral | Warning | Error | Success
|
|
26
|
+
- **Default:** Neutral
|
|
27
|
+
## Usage
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
import { SupportText } from 'jfs-components';
|
|
31
|
+
|
|
32
|
+
<SupportText status="Success" label="Operation successful" />
|
|
33
|
+
<SupportText status="Error" label="Something went wrong" />
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
## Design Tokens
|
|
38
|
+
|
|
39
|
+
This component uses the following design tokens, resolved through `getVariableByName`:
|
|
40
|
+
|
|
41
|
+
- **`supportText/fontFamily`**
|
|
42
|
+
- **`supportText/fontSize`**
|
|
43
|
+
- **`supportText/fontWeight`**
|
|
44
|
+
- **`supportText/foreground`**
|
|
45
|
+
- **`supportText/gap`**
|
|
46
|
+
- **`supportText/lineHeight`**
|
|
47
|
+
|
|
48
|
+
All tokens support mode-based theming through the `modes` prop.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, Text, type StyleProp, type ViewStyle, type TextStyle } from 'react-native';
|
|
3
|
+
import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
|
|
4
|
+
import { useTokens } from '../../design-tokens/JFSThemeProvider';
|
|
5
|
+
import SupportTextIcon, { type SupportTextStatus } from './SupportTextIcon';
|
|
6
|
+
|
|
7
|
+
type SupportTextProps = {
|
|
8
|
+
/**
|
|
9
|
+
* Text to display
|
|
10
|
+
*/
|
|
11
|
+
label?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Status of the support text (Neutral, Warning, Error, Success)
|
|
14
|
+
*/
|
|
15
|
+
status?: SupportTextStatus;
|
|
16
|
+
/**
|
|
17
|
+
* Optional custom slot for the icon.
|
|
18
|
+
* Overrides default SupportTextIcon.
|
|
19
|
+
*/
|
|
20
|
+
iconSlot?: React.ReactNode;
|
|
21
|
+
/**
|
|
22
|
+
* Optional custom slot for the text area.
|
|
23
|
+
* Overrides default Text.
|
|
24
|
+
*/
|
|
25
|
+
textSlot?: React.ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Modes object for design token resolution.
|
|
28
|
+
*/
|
|
29
|
+
modes?: Record<string, any>;
|
|
30
|
+
|
|
31
|
+
style?: StyleProp<ViewStyle>;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* SupportText component displaying a status icon and label.
|
|
36
|
+
*/
|
|
37
|
+
function SupportText({
|
|
38
|
+
label = 'Support Text',
|
|
39
|
+
status = 'Neutral',
|
|
40
|
+
iconSlot,
|
|
41
|
+
textSlot,
|
|
42
|
+
modes: propModes = {},
|
|
43
|
+
style,
|
|
44
|
+
}: SupportTextProps) {
|
|
45
|
+
const { modes: globalModes } = useTokens();
|
|
46
|
+
|
|
47
|
+
// Merge modes. We might want to inject the status mode here if we knew the collection name.
|
|
48
|
+
// For now, we rely on the parent passing the correct mode or the status prop driving logic outside tokens if needed (but tokens are preferred).
|
|
49
|
+
// Strategy: We pass 'modes' as is. If the user wants "Success" styling (green), they should likely pass modes={{ 'SupportText': 'Success' }} AND status="Success".
|
|
50
|
+
// However, for convenience, we could eventually map status to modes if we determine the key.
|
|
51
|
+
const modes = { ...globalModes, ...propModes };
|
|
52
|
+
|
|
53
|
+
// --- Token Resolution ---
|
|
54
|
+
const gap = parseInt(getVariableByName('supportText/gap', modes), 10) || 4;
|
|
55
|
+
|
|
56
|
+
const textColor = getVariableByName('supportText/foreground', modes) || '#0c0d10';
|
|
57
|
+
const fontFamily = getVariableByName('supportText/fontFamily', modes) || 'JioType Var';
|
|
58
|
+
const fontSize = parseInt(getVariableByName('supportText/fontSize', modes), 10) || 12;
|
|
59
|
+
const lineHeight = parseInt(getVariableByName('supportText/lineHeight', modes), 10) || 16;
|
|
60
|
+
const fontWeight = getVariableByName('supportText/fontWeight', modes) || '500';
|
|
61
|
+
|
|
62
|
+
// --- Styles ---
|
|
63
|
+
const containerStyle: ViewStyle = {
|
|
64
|
+
flexDirection: 'row',
|
|
65
|
+
alignItems: 'center',
|
|
66
|
+
gap: gap,
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const textStyle: TextStyle = {
|
|
70
|
+
color: textColor,
|
|
71
|
+
fontFamily,
|
|
72
|
+
fontSize,
|
|
73
|
+
lineHeight,
|
|
74
|
+
fontWeight: fontWeight as any,
|
|
75
|
+
flexShrink: 1, // Ensure text wraps if needed
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const renderSlot = (slot: React.ReactNode) => {
|
|
79
|
+
if (React.isValidElement(slot)) {
|
|
80
|
+
return React.cloneElement(slot as React.ReactElement<any>, {
|
|
81
|
+
modes: { ...modes, ...(slot as any).props.modes },
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return slot;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
return (
|
|
88
|
+
<View style={[containerStyle, style]}>
|
|
89
|
+
{iconSlot ? (
|
|
90
|
+
renderSlot(iconSlot)
|
|
91
|
+
) : (
|
|
92
|
+
<SupportTextIcon status={status} modes={modes} />
|
|
93
|
+
)}
|
|
94
|
+
|
|
95
|
+
{textSlot ? (
|
|
96
|
+
renderSlot(textSlot)
|
|
97
|
+
) : (
|
|
98
|
+
<Text style={textStyle}>{label}</Text>
|
|
99
|
+
)}
|
|
100
|
+
</View>
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export default SupportText;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
|
+
import * as SupportTextIconStories from './SupportTextIcon.stories';
|
|
3
|
+
import SupportTextIcon from './SupportTextIcon';
|
|
4
|
+
|
|
5
|
+
<Meta of={SupportTextIconStories} />
|
|
6
|
+
|
|
7
|
+
# SupportTextIcon
|
|
8
|
+
|
|
9
|
+
SupportTextIcon component with design-token-driven styling.
|
|
10
|
+
|
|
11
|
+
## Available Collections and Modes
|
|
12
|
+
|
|
13
|
+
This component uses the following design token collections. Each collection supports multiple modes that can be configured via the `modes` prop.
|
|
14
|
+
|
|
15
|
+
### Status
|
|
16
|
+
- **Modes:** Neutral | Warning | Error | Success
|
|
17
|
+
- **Default:** Neutral
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
<Canvas>
|
|
21
|
+
<Story of={SupportTextIconStories.Default} />
|
|
22
|
+
</Canvas>
|
|
23
|
+
|
|
24
|
+
## Props
|
|
25
|
+
|
|
26
|
+
<Controls of={SupportTextIconStories.Default} />
|
|
27
|
+
|
|
28
|
+
## Design Tokens
|
|
29
|
+
|
|
30
|
+
This component uses the following design tokens, resolved through `getVariableByName`:
|
|
31
|
+
|
|
32
|
+
- **`supportText/foreground`**
|
|
33
|
+
- **`supportText/icon/size`**
|
|
34
|
+
|
|
35
|
+
All tokens support mode-based theming through the `modes` prop.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, type ViewStyle } from 'react-native';
|
|
3
|
+
import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
|
|
4
|
+
import Icon from '../../icons/Icon';
|
|
5
|
+
|
|
6
|
+
export type SupportTextStatus = 'Neutral' | 'Warning' | 'Error' | 'Success';
|
|
7
|
+
|
|
8
|
+
export type SupportTextIconProps = {
|
|
9
|
+
status?: SupportTextStatus;
|
|
10
|
+
modes?: Record<string, any>;
|
|
11
|
+
style?: ViewStyle;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const STATUS_ICON_MAP: Record<SupportTextStatus, string> = {
|
|
15
|
+
Neutral: 'ic_info',
|
|
16
|
+
Warning: 'ic_warning', // Using ic_warning for Warning
|
|
17
|
+
Error: 'ic_warning', // Using ic_warning for Error
|
|
18
|
+
Success: 'ic_status_successful',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
function SupportTextIcon({
|
|
22
|
+
status = 'Neutral',
|
|
23
|
+
modes = {},
|
|
24
|
+
style,
|
|
25
|
+
}: SupportTextIconProps) {
|
|
26
|
+
const iconName = STATUS_ICON_MAP[status] || 'ic_info';
|
|
27
|
+
|
|
28
|
+
// Resolve icon size
|
|
29
|
+
const size = parseInt(getVariableByName('supportText/icon/size', modes), 10) || 16;
|
|
30
|
+
|
|
31
|
+
// Resolve icon color
|
|
32
|
+
// Assuming supportText/foreground applies to icon as well, or there might be specific icon color tokens.
|
|
33
|
+
// Using supportText/foreground as default based on common patterns if no specific icon token.
|
|
34
|
+
// If specific tokens exist like 'supportText/icon/color', they should be used.
|
|
35
|
+
// Detailed variables only showed supportText/foreground.
|
|
36
|
+
const color = getVariableByName('supportText/foreground', modes) || '#0c0d10';
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<View style={style}>
|
|
40
|
+
<Icon name={iconName} size={size} color={color} />
|
|
41
|
+
</View>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export default SupportTextIcon;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as TextInputStories from './TextInput.stories';
|
|
3
3
|
import TextInput from './TextInput';
|
|
4
4
|
import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
|
|
@@ -13,9 +13,17 @@ Helper function to recursively clone children and pass modes prop to components
|
|
|
13
13
|
|
|
14
14
|
This component uses the following design token collections. Each collection supports multiple modes that can be configured via the `modes` prop.
|
|
15
15
|
|
|
16
|
+
### InputState
|
|
17
|
+
- **Modes:** Idle | Active
|
|
18
|
+
- **Default:** Idle
|
|
19
|
+
|
|
16
20
|
### Color Mode
|
|
17
21
|
- **Modes:** Light | Dark
|
|
18
22
|
- **Default:** Light
|
|
23
|
+
|
|
24
|
+
### Colors Router
|
|
25
|
+
- **Modes:** POC | Old
|
|
26
|
+
- **Default:** POC
|
|
19
27
|
## Usage
|
|
20
28
|
|
|
21
29
|
<Canvas>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as TooltipStories from './Tooltip.stories';
|
|
3
3
|
import { Tooltip } from './Tooltip';
|
|
4
4
|
import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
|
|
@@ -16,6 +16,10 @@ This component uses the following design token collections. Each collection supp
|
|
|
16
16
|
### Color Mode
|
|
17
17
|
- **Modes:** Light | Dark
|
|
18
18
|
- **Default:** Light
|
|
19
|
+
|
|
20
|
+
### Colors Router
|
|
21
|
+
- **Modes:** POC | Old
|
|
22
|
+
- **Default:** POC
|
|
19
23
|
## Usage
|
|
20
24
|
|
|
21
25
|
<Canvas>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as TransactionBubbleStories from './TransactionBubble.stories';
|
|
3
3
|
import TransactionBubble from './TransactionBubble';
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as TransactionDetailsStories from './TransactionDetails.stories';
|
|
3
3
|
import TransactionDetails from './TransactionDetails';
|
|
4
4
|
import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
|
|
@@ -2,44 +2,7 @@ import React from 'react'
|
|
|
2
2
|
import { View, Text, type StyleProp, type ViewStyle, type TextStyle } from 'react-native'
|
|
3
3
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
* Helper function to recursively clone children and pass modes prop to components that accept it.
|
|
7
|
-
*/
|
|
8
|
-
function cloneChildrenWithModes(
|
|
9
|
-
children: React.ReactNode,
|
|
10
|
-
modes: Record<string, any>
|
|
11
|
-
): React.ReactNode[] {
|
|
12
|
-
const result = React.Children.map(children, (child) => {
|
|
13
|
-
if (!React.isValidElement(child)) {
|
|
14
|
-
return child
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const childChildren = (child.props as any)?.children
|
|
18
|
-
const hasChildren = childChildren !== undefined && childChildren !== null
|
|
19
|
-
|
|
20
|
-
const existingModes = (child.props as any)?.modes
|
|
21
|
-
const mergedModes = existingModes
|
|
22
|
-
? { ...modes, ...existingModes }
|
|
23
|
-
: modes
|
|
24
|
-
|
|
25
|
-
const processedChildren: React.ReactNode | undefined = hasChildren
|
|
26
|
-
? cloneChildrenWithModes(
|
|
27
|
-
React.Children.toArray(childChildren),
|
|
28
|
-
modes
|
|
29
|
-
)
|
|
30
|
-
: undefined
|
|
31
|
-
|
|
32
|
-
return React.cloneElement(
|
|
33
|
-
child,
|
|
34
|
-
{
|
|
35
|
-
...(child.props as any),
|
|
36
|
-
modes: mergedModes,
|
|
37
|
-
},
|
|
38
|
-
processedChildren
|
|
39
|
-
)
|
|
40
|
-
})
|
|
41
|
-
return result || []
|
|
42
|
-
}
|
|
5
|
+
import { cloneChildrenWithModes } from '../../utils/react-utils'
|
|
43
6
|
|
|
44
7
|
// ===== Item Subcomponent =====
|
|
45
8
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as TransactionStatusStories from './TransactionStatus.stories';
|
|
3
3
|
import TransactionStatus from './TransactionStatus';
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as UpiHandleStories from './UpiHandle.stories';
|
|
3
3
|
import UpiHandle from './UpiHandle';
|
|
4
4
|
import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
|
|
@@ -16,6 +16,10 @@ This component uses the following design token collections. Each collection supp
|
|
|
16
16
|
### Color Mode
|
|
17
17
|
- **Modes:** Light | Dark
|
|
18
18
|
- **Default:** Light
|
|
19
|
+
|
|
20
|
+
### Colors Router
|
|
21
|
+
- **Modes:** POC | Old
|
|
22
|
+
- **Default:** POC
|
|
19
23
|
## Usage
|
|
20
24
|
|
|
21
25
|
<Canvas>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
|
+
import * as VStackStories from './VStack.stories';
|
|
3
|
+
import VStack from './VStack';
|
|
4
|
+
|
|
5
|
+
<Meta of={VStackStories} />
|
|
6
|
+
|
|
7
|
+
# VStack
|
|
8
|
+
|
|
9
|
+
`VStack` arranges its children in a vertical line. It uses design tokens for spacing and gap.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## Available Collections and Modes
|
|
13
|
+
|
|
14
|
+
This component does not use any design token collections with multiple modes.
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import { VStack } from 'jfs-components';
|
|
19
|
+
|
|
20
|
+
<VStack alignHorizontal="center" modes={{ 'vstack/gap': 16 }}>
|
|
21
|
+
<View>Item 1</View>
|
|
22
|
+
<View>Item 2</View>
|
|
23
|
+
</VStack>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
<Canvas>
|
|
27
|
+
<Story of={VStackStories.Default} />
|
|
28
|
+
</Canvas>
|
|
29
|
+
|
|
30
|
+
## Props
|
|
31
|
+
|
|
32
|
+
<Controls of={VStackStories.Default} />
|
|
33
|
+
|
|
34
|
+
## Design Tokens
|
|
35
|
+
|
|
36
|
+
This component uses the following design tokens, resolved through `getVariableByName`:
|
|
37
|
+
|
|
38
|
+
- **`vstack/gap`**
|
|
39
|
+
- **`vstack/padding/bottom`**
|
|
40
|
+
- **`vstack/padding/left`**
|
|
41
|
+
- **`vstack/padding/right`**
|
|
42
|
+
- **`vstack/padding/top`**
|
|
43
|
+
|
|
44
|
+
All tokens support mode-based theming through the `modes` prop.
|