jfs-components 0.0.5 → 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.js +10 -1
- package/lib/commonjs/components/ActionTile/ActionTile.js.map +1 -1
- package/lib/commonjs/components/ActionTile/ActionTile.mdx +5 -1
- package/lib/commonjs/components/AppBar/AppBar.js +109 -231
- 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.js +9 -1
- package/lib/commonjs/components/BottomNav/BottomNav.js.map +1 -1
- package/lib/commonjs/components/BottomNav/BottomNav.mdx +5 -1
- package/lib/commonjs/components/BottomNavItem/BottomNavItem.js +9 -1
- package/lib/commonjs/components/BottomNavItem/BottomNavItem.js.map +1 -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 +15 -20
- 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.js +9 -1
- package/lib/commonjs/components/Disclaimer/Disclaimer.js.map +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 +12 -4
- 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.js +10 -1
- package/lib/commonjs/components/PageTitle/PageTitle.js.map +1 -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.js +9 -1
- package/lib/commonjs/components/UpiHandle/UpiHandle.js.map +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/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.js +10 -1
- package/lib/module/components/ActionTile/ActionTile.js.map +1 -1
- package/lib/module/components/ActionTile/ActionTile.mdx +5 -1
- package/lib/module/components/AppBar/AppBar.js +109 -231
- 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.js +9 -1
- package/lib/module/components/BottomNav/BottomNav.js.map +1 -1
- package/lib/module/components/BottomNav/BottomNav.mdx +5 -1
- package/lib/module/components/BottomNavItem/BottomNavItem.js +9 -1
- package/lib/module/components/BottomNavItem/BottomNavItem.js.map +1 -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 +15 -20
- 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.js +9 -1
- package/lib/module/components/Disclaimer/Disclaimer.js.map +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 +12 -4
- 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.js +10 -1
- package/lib/module/components/PageTitle/PageTitle.js.map +1 -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.js +9 -1
- package/lib/module/components/UpiHandle/UpiHandle.js.map +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 +1 -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/ActionTile/ActionTile.d.ts +1 -1
- package/lib/typescript/components/ActionTile/ActionTile.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/BottomNav/BottomNav.d.ts +1 -1
- package/lib/typescript/components/BottomNav/BottomNav.d.ts.map +1 -1
- package/lib/typescript/components/BottomNavItem/BottomNavItem.d.ts +1 -1
- package/lib/typescript/components/BottomNavItem/BottomNavItem.d.ts.map +1 -1
- 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 +1 -1
- package/lib/typescript/components/CtaCard/CtaCard.d.ts.map +1 -1
- package/lib/typescript/components/Disclaimer/Disclaimer.d.ts +1 -1
- package/lib/typescript/components/Disclaimer/Disclaimer.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/IconCapsule/IconCapsule.d.ts +1 -1
- package/lib/typescript/components/IconCapsule/IconCapsule.d.ts.map +1 -1
- 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/PageTitle/PageTitle.d.ts +1 -1
- package/lib/typescript/components/PageTitle/PageTitle.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/UpiHandle/UpiHandle.d.ts +1 -1
- package/lib/typescript/components/UpiHandle/UpiHandle.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/ActionTile/ActionTile.tsx +5 -1
- package/src/components/AppBar/AppBar.mdx +51 -39
- package/src/components/AppBar/AppBar.tsx +149 -263
- 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/BottomNav/BottomNav.tsx +6 -3
- package/src/components/BottomNavItem/BottomNavItem.mdx +5 -1
- package/src/components/BottomNavItem/BottomNavItem.tsx +19 -16
- 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 +16 -21
- package/src/components/Disclaimer/Disclaimer.mdx +5 -1
- package/src/components/Disclaimer/Disclaimer.tsx +6 -3
- 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 +13 -10
- 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/PageTitle/PageTitle.tsx +8 -4
- 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/UpiHandle/UpiHandle.tsx +4 -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,107 @@
|
|
|
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 MoneyValue from '../MoneyValue/MoneyValue'
|
|
5
|
+
|
|
6
|
+
export type BalanceProps = {
|
|
7
|
+
/**
|
|
8
|
+
* Title text displayed above the balance amount.
|
|
9
|
+
* @default "Total owed to people"
|
|
10
|
+
*/
|
|
11
|
+
title?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Amount to display in the balance.
|
|
14
|
+
* @default "500"
|
|
15
|
+
*/
|
|
16
|
+
amount?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Currency symbol or code.
|
|
19
|
+
* @default "₹"
|
|
20
|
+
*/
|
|
21
|
+
currency?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Mode configuration for design tokens.
|
|
24
|
+
*/
|
|
25
|
+
modes?: Record<string, any>;
|
|
26
|
+
/**
|
|
27
|
+
* Optional style overrides for the container.
|
|
28
|
+
*/
|
|
29
|
+
style?: StyleProp<ViewStyle>;
|
|
30
|
+
/**
|
|
31
|
+
* Optional children content to render instead of the default MoneyValue.
|
|
32
|
+
* Use this slot for custom money value implementations.
|
|
33
|
+
*/
|
|
34
|
+
children?: React.ReactNode;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Balance component that displays a title and a monetary value.
|
|
39
|
+
*
|
|
40
|
+
* @component
|
|
41
|
+
* @example
|
|
42
|
+
* ```jsx
|
|
43
|
+
* <Balance title="Total Balance" amount="12500" />
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
function Balance({
|
|
47
|
+
title = "Total owed to people",
|
|
48
|
+
amount = "500",
|
|
49
|
+
currency = "₹",
|
|
50
|
+
modes = {},
|
|
51
|
+
style,
|
|
52
|
+
children,
|
|
53
|
+
}: BalanceProps) {
|
|
54
|
+
// Resolve design tokens
|
|
55
|
+
const gap = getVariableByName('balance/gap', modes) ?? 6
|
|
56
|
+
|
|
57
|
+
// Title styles
|
|
58
|
+
const titleColor = getVariableByName('balance/title/foreground', modes) ?? '#0c0d10'
|
|
59
|
+
const titleFontSize = getVariableByName('balance/title/fontSize', modes) ?? 14
|
|
60
|
+
const titleFontFamily = getVariableByName('balance/title/fontFamily', modes) ?? 'System'
|
|
61
|
+
const titleLineHeight = getVariableByName('balance/title/lineHeight', modes) ?? 18
|
|
62
|
+
const titleFontWeightValue = getVariableByName('balance/title/fontWeight', modes) ?? 500
|
|
63
|
+
const titleFontWeight = typeof titleFontWeightValue === 'number'
|
|
64
|
+
? titleFontWeightValue.toString()
|
|
65
|
+
: titleFontWeightValue
|
|
66
|
+
|
|
67
|
+
const containerStyle: ViewStyle = {
|
|
68
|
+
flexDirection: 'column',
|
|
69
|
+
alignItems: 'flex-start',
|
|
70
|
+
gap: gap,
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const titleStyle: TextStyle = {
|
|
74
|
+
color: titleColor,
|
|
75
|
+
fontSize: titleFontSize,
|
|
76
|
+
fontFamily: titleFontFamily,
|
|
77
|
+
lineHeight: titleLineHeight,
|
|
78
|
+
fontWeight: titleFontWeight as any,
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Handle slot children or default content
|
|
82
|
+
const content = React.Children.map(children, (child) => {
|
|
83
|
+
if (React.isValidElement(child)) {
|
|
84
|
+
return React.cloneElement(child, { modes } as any)
|
|
85
|
+
}
|
|
86
|
+
return child
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<View style={[containerStyle, style]} data-node-id="1986:6203">
|
|
91
|
+
<Text style={titleStyle} data-node-id="1986:2613">
|
|
92
|
+
{title}
|
|
93
|
+
</Text>
|
|
94
|
+
{children ? (
|
|
95
|
+
content
|
|
96
|
+
) : (
|
|
97
|
+
<MoneyValue
|
|
98
|
+
value={amount}
|
|
99
|
+
currency={currency}
|
|
100
|
+
modes={modes}
|
|
101
|
+
/>
|
|
102
|
+
)}
|
|
103
|
+
</View>
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export default Balance
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as BottomNavStories from './BottomNav.stories';
|
|
3
3
|
import BottomNav from './BottomNav';
|
|
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,6 +1,7 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { View, type StyleProp, type ViewStyle } from 'react-native'
|
|
3
3
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
|
+
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
4
5
|
import BottomNavItem from '../BottomNavItem/BottomNavItem'
|
|
5
6
|
|
|
6
7
|
type BottomNavItemType = {
|
|
@@ -54,13 +55,15 @@ function BottomNav({
|
|
|
54
55
|
{ key: 'invest', label: 'Invest', iconName: 'ic_rupee_coin' },
|
|
55
56
|
{ key: 'explore', label: 'Explore', iconName: 'ic_search' },
|
|
56
57
|
],
|
|
57
|
-
modes = {},
|
|
58
|
+
modes: propModes = {},
|
|
58
59
|
onItemPress,
|
|
59
60
|
style,
|
|
60
61
|
accessibilityLabel = "Bottom navigation",
|
|
61
62
|
accessibilityHint,
|
|
62
63
|
...rest
|
|
63
64
|
}: BottomNavProps) {
|
|
65
|
+
const { modes: globalModes } = useTokens()
|
|
66
|
+
const modes = { ...globalModes, ...propModes }
|
|
64
67
|
// Resolve container styling tokens
|
|
65
68
|
const backgroundColor = getVariableByName('bottomNav/background', modes) || '#ffffff'
|
|
66
69
|
const borderColor = getVariableByName('bottomNav/border/color', modes) || '#cccfd1'
|
|
@@ -108,7 +111,7 @@ function BottomNav({
|
|
|
108
111
|
if (key === 'Enter' || key === ' ' || key === 'Spacebar') {
|
|
109
112
|
handlePress()
|
|
110
113
|
}
|
|
111
|
-
;(item as any)?.onKeyPress?.(e)
|
|
114
|
+
; (item as any)?.onKeyPress?.(e)
|
|
112
115
|
},
|
|
113
116
|
} : {})}
|
|
114
117
|
{...(item.disabled !== undefined ? { disabled: item.disabled } : {})}
|
|
@@ -121,7 +124,7 @@ function BottomNav({
|
|
|
121
124
|
}
|
|
122
125
|
|
|
123
126
|
return (
|
|
124
|
-
<View
|
|
127
|
+
<View
|
|
125
128
|
style={[containerStyle, style]}
|
|
126
129
|
accessibilityRole="tablist"
|
|
127
130
|
accessibilityLabel={accessibilityLabel}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as BottomNavItemStories from './BottomNavItem.stories';
|
|
3
3
|
import BottomNavItem from './BottomNavItem';
|
|
4
4
|
import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
|
|
@@ -20,6 +20,10 @@ This component uses the following design token collections. Each collection supp
|
|
|
20
20
|
### Color Mode
|
|
21
21
|
- **Modes:** Light | Dark
|
|
22
22
|
- **Default:** Light
|
|
23
|
+
|
|
24
|
+
### Colors Router
|
|
25
|
+
- **Modes:** POC | Old
|
|
26
|
+
- **Default:** POC
|
|
23
27
|
## Usage
|
|
24
28
|
|
|
25
29
|
<Canvas>
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
type ViewStyle,
|
|
10
10
|
} from 'react-native'
|
|
11
11
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
12
|
+
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
12
13
|
import Icon from '../../icons/Icon'
|
|
13
14
|
import { usePressableWebSupport, type SafePressableProps, type WebAccessibilityProps } from '../../utils/web-platform-utils'
|
|
14
15
|
|
|
@@ -56,7 +57,7 @@ type BottomNavItemProps = SafePressableProps & {
|
|
|
56
57
|
function BottomNavItem({
|
|
57
58
|
iconName = 'ic_home',
|
|
58
59
|
label = 'Home',
|
|
59
|
-
modes = {},
|
|
60
|
+
modes: propModes = {},
|
|
60
61
|
onPress,
|
|
61
62
|
disabled = false,
|
|
62
63
|
style,
|
|
@@ -69,6 +70,8 @@ function BottomNavItem({
|
|
|
69
70
|
webAccessibilityProps,
|
|
70
71
|
...rest
|
|
71
72
|
}: BottomNavItemProps) {
|
|
73
|
+
const { modes: globalModes } = useTokens()
|
|
74
|
+
const modes = { ...globalModes, ...propModes }
|
|
72
75
|
const [isFocused, setIsFocused] = useState(false)
|
|
73
76
|
const [isHovered, setIsHovered] = useState(false)
|
|
74
77
|
const pressedStyle = { opacity: 0.7 }
|
|
@@ -119,14 +122,14 @@ function BottomNavItem({
|
|
|
119
122
|
|
|
120
123
|
const renderContent = () => (
|
|
121
124
|
<>
|
|
122
|
-
<Icon
|
|
123
|
-
name={iconName}
|
|
124
|
-
size={resolvedIconSize}
|
|
125
|
+
<Icon
|
|
126
|
+
name={iconName}
|
|
127
|
+
size={resolvedIconSize}
|
|
125
128
|
color={resolvedIconColor}
|
|
126
129
|
accessibilityElementsHidden={true}
|
|
127
130
|
importantForAccessibility="no"
|
|
128
131
|
/>
|
|
129
|
-
<Text
|
|
132
|
+
<Text
|
|
130
133
|
style={[textStyle, labelStyle]}
|
|
131
134
|
accessibilityElementsHidden={true}
|
|
132
135
|
importantForAccessibility="no"
|
|
@@ -138,14 +141,14 @@ function BottomNavItem({
|
|
|
138
141
|
|
|
139
142
|
if (!onPress) {
|
|
140
143
|
return (
|
|
141
|
-
<View
|
|
144
|
+
<View
|
|
142
145
|
style={[baseContainerStyle, style]}
|
|
143
146
|
accessibilityRole="tab"
|
|
144
147
|
accessibilityLabel={defaultAccessibilityLabel}
|
|
145
148
|
accessibilityHint={accessibilityHint}
|
|
146
|
-
accessibilityState={{
|
|
149
|
+
accessibilityState={{
|
|
147
150
|
disabled,
|
|
148
|
-
...accessibilityState
|
|
151
|
+
...accessibilityState
|
|
149
152
|
}}
|
|
150
153
|
{...rest}
|
|
151
154
|
>
|
|
@@ -159,34 +162,34 @@ function BottomNavItem({
|
|
|
159
162
|
accessibilityRole="tab"
|
|
160
163
|
accessibilityLabel={defaultAccessibilityLabel}
|
|
161
164
|
accessibilityHint={accessibilityHint}
|
|
162
|
-
accessibilityState={{
|
|
165
|
+
accessibilityState={{
|
|
163
166
|
disabled,
|
|
164
167
|
selected: accessibilityState?.selected,
|
|
165
|
-
...accessibilityState
|
|
168
|
+
...accessibilityState
|
|
166
169
|
}}
|
|
167
170
|
onPress={onPress}
|
|
168
171
|
disabled={disabled}
|
|
169
172
|
onPressIn={(e: any) => {
|
|
170
|
-
;(rest as any)?.onPressIn?.(e)
|
|
173
|
+
; (rest as any)?.onPressIn?.(e)
|
|
171
174
|
}}
|
|
172
175
|
onPressOut={(e: any) => {
|
|
173
|
-
;(rest as any)?.onPressOut?.(e)
|
|
176
|
+
; (rest as any)?.onPressOut?.(e)
|
|
174
177
|
}}
|
|
175
178
|
onFocus={(e: any) => {
|
|
176
179
|
setIsFocused(true)
|
|
177
|
-
|
|
180
|
+
; (rest as any)?.onFocus?.(e)
|
|
178
181
|
}}
|
|
179
182
|
onBlur={(e: any) => {
|
|
180
183
|
setIsFocused(false)
|
|
181
|
-
|
|
184
|
+
; (rest as any)?.onBlur?.(e)
|
|
182
185
|
}}
|
|
183
186
|
onHoverIn={(e: any) => {
|
|
184
187
|
setIsHovered(true)
|
|
185
|
-
|
|
188
|
+
; (rest as any)?.onHoverIn?.(e)
|
|
186
189
|
}}
|
|
187
190
|
onHoverOut={(e: any) => {
|
|
188
191
|
setIsHovered(false)
|
|
189
|
-
|
|
192
|
+
; (rest as any)?.onHoverOut?.(e)
|
|
190
193
|
}}
|
|
191
194
|
style={({ pressed }) =>
|
|
192
195
|
[
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as ButtonStories from './Button.stories';
|
|
3
3
|
import Button from './Button';
|
|
4
4
|
import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
|
|
@@ -29,6 +29,10 @@ This component uses the following design token collections. Each collection supp
|
|
|
29
29
|
- **Modes:** Light | Dark
|
|
30
30
|
- **Default:** Light
|
|
31
31
|
|
|
32
|
+
### Colors Router
|
|
33
|
+
- **Modes:** POC | Old
|
|
34
|
+
- **Default:** POC
|
|
35
|
+
|
|
32
36
|
### Appearance.System
|
|
33
37
|
- **Modes:** positive | warning | negative
|
|
34
38
|
- **Default:** positive
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{/* ButtonGroup.mdx */}
|
|
2
|
+
|
|
3
|
+
import { Canvas, Meta, Story, Controls } from '@storybook/blocks';
|
|
4
|
+
import * as ButtonGroupStories from './ButtonGroup.stories';
|
|
5
|
+
|
|
6
|
+
<Meta of={ButtonGroupStories} />
|
|
7
|
+
|
|
8
|
+
# Button Group
|
|
9
|
+
|
|
10
|
+
A layout container that organizes multiple buttons (typically `IconButton`) in a horizontal row with consistent spacing as defined by design tokens.
|
|
11
|
+
|
|
12
|
+
The `ButtonGroup` component automatically passes its `modes` prop down to all valid React children, ensuring that the entire group responds to theme or mode changes in unison.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## Available Collections and Modes
|
|
16
|
+
|
|
17
|
+
This component does not use any design token collections with multiple modes.
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```tsx
|
|
21
|
+
import { ButtonGroup, IconButton } from 'jfs-components';
|
|
22
|
+
|
|
23
|
+
function MyHeader() {
|
|
24
|
+
return (
|
|
25
|
+
<ButtonGroup modes={{ "Appearance": "dark" }}>
|
|
26
|
+
<IconButton iconName="ic_qr_code" />
|
|
27
|
+
<IconButton iconName="ic_photo" />
|
|
28
|
+
</ButtonGroup>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Props
|
|
34
|
+
|
|
35
|
+
<Controls />
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
### Default
|
|
40
|
+
|
|
41
|
+
<Canvas of={ButtonGroupStories.Default} />
|
|
42
|
+
|
|
43
|
+
### With Custom Modes
|
|
44
|
+
|
|
45
|
+
<Canvas of={ButtonGroupStories.WithModes} />
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
## Design Tokens
|
|
49
|
+
|
|
50
|
+
This component uses the following design tokens, resolved through `getVariableByName`:
|
|
51
|
+
|
|
52
|
+
- **`buttonGroup/padding/gap`**
|
|
53
|
+
- **`buttonGroup/padding/horizontal`**
|
|
54
|
+
- **`buttonGroup/padding/vertical`**
|
|
55
|
+
|
|
56
|
+
All tokens support mode-based theming through the `modes` prop.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import {
|
|
3
|
+
View,
|
|
4
|
+
type StyleProp,
|
|
5
|
+
type ViewStyle,
|
|
6
|
+
} from 'react-native'
|
|
7
|
+
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
8
|
+
|
|
9
|
+
export type ButtonGroupProps = {
|
|
10
|
+
/**
|
|
11
|
+
* Child elements to be rendered inside the button group.
|
|
12
|
+
* Typically generic buttons or icon buttons.
|
|
13
|
+
*/
|
|
14
|
+
children?: React.ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* Mode configuration for design tokens (e.g., {"Button / Size": "M", "Appearance": "high"})
|
|
17
|
+
* These modes are passed down to all child components.
|
|
18
|
+
*/
|
|
19
|
+
modes?: Record<string, any>;
|
|
20
|
+
/**
|
|
21
|
+
* Additional styles for the container
|
|
22
|
+
*/
|
|
23
|
+
style?: StyleProp<ViewStyle>;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* ButtonGroup component that aggregates multiple buttons (e.g., IconButton)
|
|
28
|
+
* and handles their layout and styling/theming via design tokens.
|
|
29
|
+
*
|
|
30
|
+
* It passes the provided `modes` to all its immediate React Element children.
|
|
31
|
+
*
|
|
32
|
+
* @component
|
|
33
|
+
* @example
|
|
34
|
+
* ```jsx
|
|
35
|
+
* <ButtonGroup modes={{"Appearance": "light"}}>
|
|
36
|
+
* <IconButton iconName="ic_qr_code" />
|
|
37
|
+
* <IconButton iconName="ic_photo" />
|
|
38
|
+
* </ButtonGroup>
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
function ButtonGroup({
|
|
42
|
+
children,
|
|
43
|
+
modes = {},
|
|
44
|
+
style,
|
|
45
|
+
}: ButtonGroupProps) {
|
|
46
|
+
// Resolve design tokens
|
|
47
|
+
const gap = getVariableByName('buttonGroup/padding/gap', modes) ?? 12
|
|
48
|
+
const paddingHorizontal = getVariableByName('buttonGroup/padding/horizontal', modes) ?? 0
|
|
49
|
+
const paddingVertical = getVariableByName('buttonGroup/padding/vertical', modes) ?? 0
|
|
50
|
+
|
|
51
|
+
// Container style
|
|
52
|
+
const containerStyle: ViewStyle = {
|
|
53
|
+
flexDirection: 'row',
|
|
54
|
+
alignItems: 'center',
|
|
55
|
+
gap: gap,
|
|
56
|
+
paddingHorizontal: paddingHorizontal,
|
|
57
|
+
paddingVertical: paddingVertical,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Clone children to pass `modes` prop
|
|
61
|
+
const childrenWithModes = React.Children.map(children, (child) => {
|
|
62
|
+
if (React.isValidElement(child)) {
|
|
63
|
+
// We safely try to pass `modes` to the child.
|
|
64
|
+
// If the child doesn't accept `modes`, it will just be an extra prop which is usually fine in React,
|
|
65
|
+
// but ideally children should be components that respect `modes`.
|
|
66
|
+
return React.cloneElement(child, { modes: modes } as any)
|
|
67
|
+
}
|
|
68
|
+
return child
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
return (
|
|
72
|
+
<View style={[containerStyle, style]}>
|
|
73
|
+
{childrenWithModes}
|
|
74
|
+
</View>
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export default ButtonGroup
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as CardStories from './Card.stories';
|
|
3
3
|
import Card from './Card';
|
|
4
4
|
import { AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as CardFeedbackStories from './CardFeedback.stories';
|
|
3
3
|
import CardFeedback from './CardFeedback';
|
|
4
4
|
import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
|
|
@@ -21,6 +21,10 @@ This component uses the following design token collections. Each collection supp
|
|
|
21
21
|
- **Modes:** Light | Dark
|
|
22
22
|
- **Default:** Light
|
|
23
23
|
|
|
24
|
+
### Colors Router
|
|
25
|
+
- **Modes:** POC | Old
|
|
26
|
+
- **Default:** POC
|
|
27
|
+
|
|
24
28
|
### Appearance.Brand
|
|
25
29
|
- **Modes:** Primary | Secondary | Neutral
|
|
26
30
|
- **Default:** Primary
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Story } from '@storybook/addon-docs';
|
|
2
|
+
import * as ChipGroupStories from './ChipGroup.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={ChipGroupStories} />
|
|
5
|
+
|
|
6
|
+
<Title />
|
|
7
|
+
<Subtitle />
|
|
8
|
+
<Description />
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Available Collections and Modes
|
|
12
|
+
|
|
13
|
+
This component does not use any design token collections with multiple modes.
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { ChipGroup } from 'jfs-components';
|
|
18
|
+
import { ChipSelect } from 'jfs-components';
|
|
19
|
+
|
|
20
|
+
const MyComponent = () => (
|
|
21
|
+
<ChipGroup>
|
|
22
|
+
<ChipSelect label="Option 1" />
|
|
23
|
+
<ChipSelect label="Option 2" />
|
|
24
|
+
<ChipSelect label="Option 3" />
|
|
25
|
+
</ChipGroup>
|
|
26
|
+
);
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
<Primary />
|
|
30
|
+
<Controls />
|
|
31
|
+
<Stories />
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## Design Tokens
|
|
35
|
+
|
|
36
|
+
This component uses the following design tokens, resolved through `getVariableByName`:
|
|
37
|
+
|
|
38
|
+
- **`chipGroup/gap`**
|
|
39
|
+
|
|
40
|
+
All tokens support mode-based theming through the `modes` prop.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
|
|
4
|
+
|
|
5
|
+
export type ChipGroupProps = {
|
|
6
|
+
/**
|
|
7
|
+
* Child elements to be rendered inside the chip group.
|
|
8
|
+
* Expects ChipSelect components.
|
|
9
|
+
*/
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Mode configuration for design tokens.
|
|
13
|
+
* These modes are passed down to all child components.
|
|
14
|
+
*/
|
|
15
|
+
modes?: Record<string, any>;
|
|
16
|
+
/**
|
|
17
|
+
* Additional styles for the container.
|
|
18
|
+
*/
|
|
19
|
+
style?: StyleProp<ViewStyle>;
|
|
20
|
+
/**
|
|
21
|
+
* Test ID for testing.
|
|
22
|
+
*/
|
|
23
|
+
testID?: string;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* ChipGroup component that handles layout and spacing for ChipSelect components.
|
|
28
|
+
* Based on Figma Node 1905-5123.
|
|
29
|
+
*/
|
|
30
|
+
function ChipGroup({
|
|
31
|
+
children,
|
|
32
|
+
modes = {},
|
|
33
|
+
style,
|
|
34
|
+
testID,
|
|
35
|
+
}: ChipGroupProps) {
|
|
36
|
+
// --- Token Resolution ---
|
|
37
|
+
const gap = parseInt(getVariableByName('chipGroup/gap', modes), 10) || 8;
|
|
38
|
+
|
|
39
|
+
// --- Styles ---
|
|
40
|
+
const containerStyle: ViewStyle = {
|
|
41
|
+
flexDirection: 'row',
|
|
42
|
+
alignItems: 'flex-start',
|
|
43
|
+
flexWrap: 'wrap',
|
|
44
|
+
gap: gap,
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Clone children to pass `modes` prop
|
|
48
|
+
const childrenWithModes = React.Children.map(children, (child) => {
|
|
49
|
+
if (React.isValidElement(child)) {
|
|
50
|
+
// Pass merged modes (parent modes + child modes)
|
|
51
|
+
// Note: We don't have access to child's existing props here to merge modes perfectly if they were passed directly to child
|
|
52
|
+
// But usually we want parent modes to override or augment.
|
|
53
|
+
// For now, simpler approach: just pass the parent modes, assuming child will handle merging if it needs to.
|
|
54
|
+
// Actually, based on previous ButtonGroup example, we just pass { modes: modes }.
|
|
55
|
+
return React.cloneElement(child, { modes: modes } as any);
|
|
56
|
+
}
|
|
57
|
+
return child;
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<View style={[containerStyle, style]} testID={testID}>
|
|
62
|
+
{childrenWithModes}
|
|
63
|
+
</View>
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export default ChipGroup;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Meta, Title, Subtitle, Description, Primary, Controls, Stories } from '@storybook/blocks';
|
|
2
|
+
import * as ChipSelectStories from './ChipSelect.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={ChipSelectStories} />
|
|
5
|
+
|
|
6
|
+
<Title />
|
|
7
|
+
<Subtitle>
|
|
8
|
+
A selection chip component that toggles between Idle and Active states.
|
|
9
|
+
</Subtitle>
|
|
10
|
+
|
|
11
|
+
<Description>
|
|
12
|
+
The `ChipSelect` component is used for making selections, such as dates or filters.
|
|
13
|
+
It supports two states driven by the `active` prop:
|
|
14
|
+
- **Idle (`active={false}`)**: Customize with an icon and label.
|
|
15
|
+
- **Active (`active={true}`)**: Displays the label and a close icon. The start icon remains visible if provided.
|
|
16
|
+
|
|
17
|
+
Styling is driven by Figma tokens via `getVariableByName`.
|
|
18
|
+
</Description>
|
|
19
|
+
|
|
20
|
+
<Primary />
|
|
21
|
+
|
|
22
|
+
<Controls />
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## Available Collections and Modes
|
|
26
|
+
|
|
27
|
+
This component uses the following design token collections. Each collection supports multiple modes that can be configured via the `modes` prop.
|
|
28
|
+
|
|
29
|
+
### ChipSelect State
|
|
30
|
+
- **Modes:** Idle | Active
|
|
31
|
+
- **Default:** Idle
|
|
32
|
+
|
|
33
|
+
### Color Mode
|
|
34
|
+
- **Modes:** Light | Dark
|
|
35
|
+
- **Default:** Light
|
|
36
|
+
|
|
37
|
+
### Colors Router
|
|
38
|
+
- **Modes:** POC | Old
|
|
39
|
+
- **Default:** POC
|
|
40
|
+
## Usage
|
|
41
|
+
|
|
42
|
+
```tsx
|
|
43
|
+
import ChipSelect from './ChipSelect';
|
|
44
|
+
|
|
45
|
+
// Idle State (Icon + Label)
|
|
46
|
+
<ChipSelect
|
|
47
|
+
label="Select Date"
|
|
48
|
+
active={false}
|
|
49
|
+
icon="ic_calendar_week"
|
|
50
|
+
/>
|
|
51
|
+
|
|
52
|
+
// Active State (Icon + Label + Close Icon)
|
|
53
|
+
<ChipSelect
|
|
54
|
+
label="12 Oct 2023"
|
|
55
|
+
active={true}
|
|
56
|
+
icon="ic_calendar_week"
|
|
57
|
+
close={true}
|
|
58
|
+
/>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
<Stories />
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
## Design Tokens
|
|
65
|
+
|
|
66
|
+
This component uses the following design tokens, resolved through `getVariableByName`:
|
|
67
|
+
|
|
68
|
+
- **`chipSelect/background`**
|
|
69
|
+
- **`chipSelect/fontFamily`**
|
|
70
|
+
- **`chipSelect/fontSize`**
|
|
71
|
+
- **`chipSelect/fontWeight`**
|
|
72
|
+
- **`chipSelect/foreground`**
|
|
73
|
+
- **`chipSelect/gap`**
|
|
74
|
+
- **`chipSelect/icon/size`**
|
|
75
|
+
- **`chipSelect/lineHeight`**
|
|
76
|
+
- **`chipSelect/padding/horizontal`**
|
|
77
|
+
- **`chipSelect/padding/vertical`**
|
|
78
|
+
- **`chipSelect/radius`**
|
|
79
|
+
|
|
80
|
+
All tokens support mode-based theming through the `modes` prop.
|