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
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import React, { useState } from 'react'
|
|
2
|
-
import { View, type StyleProp, type ViewStyle } from 'react-native'
|
|
2
|
+
import { View, type StyleProp, type ViewStyle, Pressable } from 'react-native'
|
|
3
3
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
|
+
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
4
5
|
import IconButton from '../IconButton/IconButton'
|
|
5
6
|
import Avatar from '../Avatar/Avatar'
|
|
7
|
+
import NavArrow from '../NavArrow/NavArrow'
|
|
8
|
+
// We might need to import Image or Svg if we had the assets locally, but for now we'll use placeholders or standard icons for defaults.
|
|
9
|
+
// The user prompt mentioned "Use getVariableByName... strict camelCase".
|
|
6
10
|
|
|
7
11
|
/**
|
|
8
12
|
* Helper function to recursively clone children and pass modes prop to components that accept it.
|
|
9
|
-
* This ensures that all child components in slots receive the modes prop from the parent.
|
|
10
13
|
*/
|
|
11
14
|
function cloneChildrenWithModes(
|
|
12
15
|
children: React.ReactNode,
|
|
@@ -23,16 +26,15 @@ function cloneChildrenWithModes(
|
|
|
23
26
|
|
|
24
27
|
// Clone the child with modes prop if it doesn't already have one
|
|
25
28
|
// or merge with existing modes if it does
|
|
26
|
-
// Merge order: parent modes first, then child's explicit modes override them
|
|
27
29
|
const existingModes = (child.props as any)?.modes
|
|
28
30
|
const mergedModes = existingModes ? { ...modes, ...existingModes } : modes
|
|
29
31
|
|
|
30
32
|
// Recursively process children if they exist
|
|
31
33
|
const processedChildren: React.ReactNode | undefined = hasChildren
|
|
32
34
|
? cloneChildrenWithModes(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
React.Children.toArray(childChildren),
|
|
36
|
+
modes
|
|
37
|
+
)
|
|
36
38
|
: undefined
|
|
37
39
|
|
|
38
40
|
// Clone element with modes and processed children
|
|
@@ -47,150 +49,176 @@ function cloneChildrenWithModes(
|
|
|
47
49
|
})?.filter((child) => child !== null && child !== undefined) as React.ReactNode[] ?? []
|
|
48
50
|
}
|
|
49
51
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
* @param {Object} [props.style] - Optional container style overrides.
|
|
72
|
-
* @param {string} [props.accessibilityLabel] - Accessibility label for the app bar
|
|
73
|
-
* @param {string} [props.accessibilityHint] - Additional accessibility hint for screen readers
|
|
74
|
-
*/
|
|
75
|
-
type AppBarProps = {
|
|
76
|
-
leading?: React.ReactNode;
|
|
52
|
+
type AppBarType = 'MainPage' | 'SubPage'
|
|
53
|
+
|
|
54
|
+
export type AppBarProps = {
|
|
55
|
+
/**
|
|
56
|
+
* Type of the App Bar.
|
|
57
|
+
* - `MainPage`: Taller, usually has Jio logo (leading) and Profile/Notif (actions).
|
|
58
|
+
* - `SubPage`: Shorter, usually has Back arrow (leading) and Page Title (middle).
|
|
59
|
+
* @default "MainPage"
|
|
60
|
+
*/
|
|
61
|
+
type?: AppBarType;
|
|
62
|
+
/**
|
|
63
|
+
* Slot for the leading element.
|
|
64
|
+
* Defaults:
|
|
65
|
+
* - MainPage: Jio Logo (placeholder circle for now if no asset)
|
|
66
|
+
* - SubPage: Back Icon Button
|
|
67
|
+
*/
|
|
68
|
+
leadingSlot?: React.ReactNode;
|
|
69
|
+
/**
|
|
70
|
+
* Slot for the middle content.
|
|
71
|
+
* Often used for "Page Title" in SubPage.
|
|
72
|
+
*/
|
|
77
73
|
middleSlot?: React.ReactNode;
|
|
74
|
+
/**
|
|
75
|
+
* Slot for the actions on the right.
|
|
76
|
+
*/
|
|
78
77
|
actionsSlot?: React.ReactNode;
|
|
78
|
+
/**
|
|
79
|
+
* Token modes to override.
|
|
80
|
+
*/
|
|
79
81
|
modes?: Record<string, any>;
|
|
82
|
+
/**
|
|
83
|
+
* Callback for the default leading slot press (e.g. back button).
|
|
84
|
+
*/
|
|
80
85
|
onLeadingPress?: () => void;
|
|
86
|
+
/**
|
|
87
|
+
* Container style override.
|
|
88
|
+
*/
|
|
81
89
|
style?: StyleProp<ViewStyle>;
|
|
82
90
|
accessibilityLabel?: string;
|
|
83
91
|
accessibilityHint?: string;
|
|
84
92
|
} & Omit<React.ComponentProps<typeof View>, 'style' | 'accessibilityRole' | 'accessibilityLabel' | 'accessibilityHint'>;
|
|
85
93
|
|
|
86
|
-
function AppBar({
|
|
87
|
-
|
|
94
|
+
export default function AppBar({
|
|
95
|
+
type = 'MainPage',
|
|
96
|
+
leadingSlot,
|
|
88
97
|
middleSlot,
|
|
89
98
|
actionsSlot,
|
|
90
|
-
modes = {},
|
|
99
|
+
modes: propModes = {},
|
|
91
100
|
onLeadingPress,
|
|
92
101
|
style,
|
|
93
|
-
accessibilityLabel
|
|
102
|
+
accessibilityLabel,
|
|
94
103
|
accessibilityHint,
|
|
95
104
|
...rest
|
|
96
105
|
}: AppBarProps) {
|
|
97
|
-
const
|
|
106
|
+
const { modes: globalModes } = useTokens()
|
|
107
|
+
const modes = { ...globalModes, ...propModes }
|
|
98
108
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const existingOnFocus = (node.props as any)?.onFocus
|
|
102
|
-
const existingOnBlur = (node.props as any)?.onBlur
|
|
103
|
-
return React.cloneElement(node, {
|
|
104
|
-
...(node.props as any),
|
|
105
|
-
onFocus: (e: any) => {
|
|
106
|
-
setChildFocused(true)
|
|
107
|
-
existingOnFocus?.(e)
|
|
108
|
-
},
|
|
109
|
-
onBlur: (e: any) => {
|
|
110
|
-
setChildFocused(false)
|
|
111
|
-
existingOnBlur?.(e)
|
|
112
|
-
},
|
|
113
|
-
})
|
|
114
|
-
}
|
|
115
|
-
// Resolve container tokens
|
|
116
|
-
const paddingHorizontal = getVariableByName('appBarActions/padding/horizontal', modes) ?? 16
|
|
117
|
-
const paddingVertical = getVariableByName('appBarActions/padding/vertical', modes) ?? 10
|
|
118
|
-
const actionsGap = getVariableByName('appBarActions/actions/gap', modes) ?? 8
|
|
109
|
+
const isMain = type === 'MainPage'
|
|
110
|
+
const isSub = type === 'SubPage'
|
|
119
111
|
|
|
112
|
+
// --- Tokens ---
|
|
113
|
+
// Construct token keys based on type. keys must be camelCase as per instruction.
|
|
114
|
+
// We use explicit string literals so that the extraction script can find them.
|
|
115
|
+
const paddingHorizontal = isMain
|
|
116
|
+
? getVariableByName('appBar/mainPage/padding/horizontal', modes)
|
|
117
|
+
: getVariableByName('appBar/subPage/padding/horizontal', modes)
|
|
118
|
+
|
|
119
|
+
const paddingVertical = isMain
|
|
120
|
+
? getVariableByName('appBar/mainPage/padding/vertical', modes)
|
|
121
|
+
: getVariableByName('appBar/subPage/padding/vertical', modes)
|
|
122
|
+
|
|
123
|
+
const backgroundColor = isMain
|
|
124
|
+
? getVariableByName('appBar/mainPage/background', modes)
|
|
125
|
+
: getVariableByName('appBar/subPage/background', modes)
|
|
126
|
+
|
|
127
|
+
const actionsGap = isMain
|
|
128
|
+
? getVariableByName('appBar/mainPage/actions/gap', modes)
|
|
129
|
+
: getVariableByName('appBar/subPage/actions/gap', modes)
|
|
130
|
+
|
|
131
|
+
// Layout styles
|
|
120
132
|
const containerStyle: ViewStyle = {
|
|
121
133
|
flexDirection: 'row',
|
|
122
134
|
alignItems: 'center',
|
|
123
135
|
justifyContent: 'space-between',
|
|
124
|
-
paddingHorizontal,
|
|
125
|
-
paddingVertical,
|
|
126
|
-
|
|
136
|
+
paddingHorizontal: paddingHorizontal ?? 16,
|
|
137
|
+
paddingVertical: paddingVertical ?? (isMain ? 16 : 10),
|
|
138
|
+
backgroundColor: backgroundColor ?? '#FFFFFF',
|
|
139
|
+
// We can set minHeight if we want to enforce consistency, but padding should dictate it mostly.
|
|
140
|
+
// Figma shows specific heights implicitly via padding + content.
|
|
141
|
+
// MainPage: h=68 (16 top/bot padding? 36 height content?)
|
|
142
|
+
// SubPage: h=52
|
|
127
143
|
}
|
|
128
144
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
145
|
+
// --- Leading Slot Default ---
|
|
146
|
+
// SubPage default: Back Arrow
|
|
147
|
+
// MainPage default: Jio Logo (We'll use a placeholder or basic text if no asset,
|
|
148
|
+
// but looking at "AppBarHome" before, it had "ic_hellojio". Let's stick to generic defaults or empty if not provided,
|
|
149
|
+
// but usually a component library provides sensible defaults.)
|
|
150
|
+
|
|
151
|
+
// Actually, let's implement the specific defaults mentioned in the plan/analysis
|
|
152
|
+
// SubPage: NavArrow props (icon, etc). We'll use IconButton with 'ic_chevron_left' as a close approximation.
|
|
153
|
+
|
|
154
|
+
let defaultLeading: React.ReactNode = null
|
|
155
|
+
if (leadingSlot === undefined) {
|
|
156
|
+
if (isSub) {
|
|
157
|
+
defaultLeading = (
|
|
158
|
+
<Pressable
|
|
159
|
+
{...(onLeadingPress ? { onPress: onLeadingPress } : {})}
|
|
160
|
+
hitSlop={8}
|
|
161
|
+
accessibilityRole="button"
|
|
162
|
+
accessibilityLabel="Back"
|
|
163
|
+
style={({ pressed }) => ({
|
|
164
|
+
opacity: pressed ? 0.7 : 1,
|
|
165
|
+
alignItems: 'center',
|
|
166
|
+
justifyContent: 'center',
|
|
167
|
+
})}
|
|
168
|
+
>
|
|
169
|
+
<NavArrow direction="Back" modes={modes} />
|
|
170
|
+
</Pressable>
|
|
171
|
+
)
|
|
172
|
+
} else {
|
|
173
|
+
// MainPage default leading: often the Brand Logo.
|
|
174
|
+
// We'll leave it empty or render a placeholder if desired, but standard AppBar often lets consumer pass logo.
|
|
175
|
+
// Previous code had `leadingIconName='ic_hellojio'` for Home.
|
|
176
|
+
// We will render nothing by default for MainPage leading to keep it flexible, OR a specialized Logo component if we had one.
|
|
177
|
+
// For now, let's assume consumer passes it for MainPage, or we leave empty.
|
|
178
|
+
// Wait, Figma screenshot shows "Jio" logo.
|
|
179
|
+
// The user said: "mostly token namings are 'camelCase'. Maximize existing component usage."
|
|
180
|
+
// I'll leave defaultLeading as null for MainPage unless I have a "BrandLogo" component.
|
|
181
|
+
}
|
|
133
182
|
}
|
|
134
183
|
|
|
135
|
-
//
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
modes={modes}
|
|
140
|
-
{...(onLeadingPress !== undefined ? { onPress: onLeadingPress } : {})}
|
|
141
|
-
accessibilityLabel="Go back"
|
|
142
|
-
accessibilityHint="Navigates to the previous screen"
|
|
143
|
-
/>
|
|
144
|
-
)
|
|
145
|
-
|
|
146
|
-
// Default actions: Two IconButtons
|
|
147
|
-
const defaultActions = actionsSlot ?? (
|
|
148
|
-
<View style={actionsRowStyle}>
|
|
149
|
-
<IconButton
|
|
150
|
-
iconName="ic_hellojio"
|
|
151
|
-
modes={modes}
|
|
152
|
-
onPress={() => {}}
|
|
153
|
-
accessibilityLabel="Hello Jio"
|
|
154
|
-
accessibilityHint="Opens Hello Jio menu"
|
|
155
|
-
/>
|
|
156
|
-
<IconButton
|
|
157
|
-
iconName="ic_more_horizontal"
|
|
158
|
-
modes={modes}
|
|
159
|
-
onPress={() => {}}
|
|
160
|
-
accessibilityLabel="More options"
|
|
161
|
-
accessibilityHint="Opens additional options menu"
|
|
162
|
-
/>
|
|
163
|
-
</View>
|
|
164
|
-
)
|
|
184
|
+
// --- Process Slots ---
|
|
185
|
+
const processedLeading = leadingSlot
|
|
186
|
+
? cloneChildrenWithModes([leadingSlot], modes)[0]
|
|
187
|
+
: defaultLeading
|
|
165
188
|
|
|
166
|
-
|
|
167
|
-
const processedMiddleSlot = middleSlot
|
|
189
|
+
const processedMiddle = middleSlot
|
|
168
190
|
? cloneChildrenWithModes(React.Children.toArray(middleSlot), modes)
|
|
169
191
|
: null
|
|
170
192
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
193
|
+
// Actions Gap wrapper
|
|
194
|
+
// The Figma has "Actions" slot with a gap.
|
|
195
|
+
const actionsStyle: ViewStyle = {
|
|
196
|
+
flexDirection: 'row',
|
|
197
|
+
alignItems: 'center',
|
|
198
|
+
gap: actionsGap ?? 0,
|
|
199
|
+
}
|
|
174
200
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
: defaultLeading
|
|
201
|
+
const processedActions = actionsSlot
|
|
202
|
+
? <View style={actionsStyle}>{cloneChildrenWithModes(React.Children.toArray(actionsSlot), modes)}</View>
|
|
203
|
+
: null
|
|
179
204
|
|
|
180
205
|
return (
|
|
181
|
-
<View
|
|
182
|
-
style={[
|
|
183
|
-
containerStyle,
|
|
184
|
-
childFocused ? { borderBottomWidth: 2, borderBottomColor: '#222' } : null,
|
|
185
|
-
style,
|
|
186
|
-
]}
|
|
206
|
+
<View
|
|
207
|
+
style={[containerStyle, style]}
|
|
187
208
|
accessibilityRole="header"
|
|
188
|
-
accessibilityLabel={accessibilityLabel}
|
|
189
|
-
{...(accessibilityHint
|
|
209
|
+
accessibilityLabel={accessibilityLabel || (isMain ? "Main Header" : "Sub Header")}
|
|
210
|
+
{...(accessibilityHint ? { accessibilityHint } : {})}
|
|
190
211
|
{...rest}
|
|
191
212
|
>
|
|
192
|
-
{
|
|
193
|
-
{
|
|
213
|
+
{/* Leading Section */}
|
|
214
|
+
<View style={{ flexDirection: 'row', alignItems: 'center' }}>
|
|
215
|
+
{processedLeading}
|
|
216
|
+
</View>
|
|
217
|
+
|
|
218
|
+
{/* Middle Section (Absolute centered often, or flex? Figma shows "Slot 'Middle'" inside a wrapper that is absolute center) */}
|
|
219
|
+
{/* Figma: "absolute flex h-full items-center justify-center left-1/2 ... translate-x-[-50%]" */}
|
|
220
|
+
{/* We should only render this wrapper if there IS middle content, to avoid z-index blocking hits. */}
|
|
221
|
+
{processedMiddle && (
|
|
194
222
|
<View
|
|
195
223
|
style={{
|
|
196
224
|
position: 'absolute',
|
|
@@ -200,161 +228,19 @@ function AppBar({
|
|
|
200
228
|
bottom: 0,
|
|
201
229
|
alignItems: 'center',
|
|
202
230
|
justifyContent: 'center',
|
|
203
|
-
|
|
204
|
-
|
|
231
|
+
zIndex: -1, // Behind actions if overlap? Or should be on top?
|
|
232
|
+
// Usually middle title shouldn't block actions. `pointerEvents="box-none"` is safer.
|
|
205
233
|
}}
|
|
206
|
-
|
|
207
|
-
importantForAccessibility="no"
|
|
234
|
+
pointerEvents="box-none"
|
|
208
235
|
>
|
|
209
|
-
{
|
|
236
|
+
{processedMiddle}
|
|
210
237
|
</View>
|
|
211
238
|
)}
|
|
212
|
-
<View style={actionsRowStyle}>
|
|
213
|
-
{Array.isArray(processedActionsSlot)
|
|
214
|
-
? processedActionsSlot.map((n) => injectFocusHandlers(n))
|
|
215
|
-
: injectFocusHandlers(processedActionsSlot)}
|
|
216
|
-
</View>
|
|
217
|
-
</View>
|
|
218
|
-
)
|
|
219
|
-
}
|
|
220
239
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
* This component supports:
|
|
225
|
-
* - **leading** IconButton (default: circular button with customizable icon)
|
|
226
|
-
* - **actions** slot for custom action buttons (default: search and notification IconButtons)
|
|
227
|
-
* - **avatar** Avatar component on the right
|
|
228
|
-
* - **design-token driven styling** via `getVariableByName` and `modes`
|
|
229
|
-
*
|
|
230
|
-
* Wherever the Figma layer name contains "Slot", this component exposes a
|
|
231
|
-
* dedicated React "slot" prop:
|
|
232
|
-
* - Slot "Actions" → `actionsSlot`
|
|
233
|
-
*
|
|
234
|
-
* @component
|
|
235
|
-
* @param {Object} props
|
|
236
|
-
* @param {React.ReactNode} [props.leading] - Optional leading element. Defaults to IconButton with customizable icon.
|
|
237
|
-
* @param {React.ReactNode} [props.actionsSlot] - Optional custom slot for action buttons (Figma Slot "Actions").
|
|
238
|
-
* @param {Object} [props.modes={}] - Modes object passed to `getVariableByName` for all design tokens.
|
|
239
|
-
* @param {Function} [props.onLeadingPress] - Callback when leading button is pressed (only used if leading is not provided).
|
|
240
|
-
* @param {string} [props.leadingIconName] - Icon name for default leading button (default: 'ic_hellojio').
|
|
241
|
-
* @param {Object} [props.avatarProps] - Props to pass to Avatar component.
|
|
242
|
-
* @param {Object} [props.style] - Optional container style overrides.
|
|
243
|
-
* @param {string} [props.accessibilityLabel] - Accessibility label for the app bar
|
|
244
|
-
* @param {string} [props.accessibilityHint] - Additional accessibility hint for screen readers
|
|
245
|
-
*/
|
|
246
|
-
type AppBarHomeProps = {
|
|
247
|
-
leading?: React.ReactNode;
|
|
248
|
-
actionsSlot?: React.ReactNode;
|
|
249
|
-
modes?: Record<string, any>;
|
|
250
|
-
onLeadingPress?: () => void;
|
|
251
|
-
leadingIconName?: string;
|
|
252
|
-
avatarProps?: React.ComponentProps<typeof Avatar>;
|
|
253
|
-
style?: StyleProp<ViewStyle>;
|
|
254
|
-
accessibilityLabel?: string;
|
|
255
|
-
accessibilityHint?: string;
|
|
256
|
-
} & Omit<React.ComponentProps<typeof View>, 'style' | 'accessibilityRole' | 'accessibilityLabel' | 'accessibilityHint'>;
|
|
257
|
-
|
|
258
|
-
function AppBarHome({
|
|
259
|
-
leading,
|
|
260
|
-
actionsSlot,
|
|
261
|
-
modes = {},
|
|
262
|
-
onLeadingPress,
|
|
263
|
-
leadingIconName = 'ic_hellojio',
|
|
264
|
-
avatarProps,
|
|
265
|
-
style,
|
|
266
|
-
accessibilityLabel = "Home app bar",
|
|
267
|
-
accessibilityHint,
|
|
268
|
-
...rest
|
|
269
|
-
}: AppBarHomeProps) {
|
|
270
|
-
// Resolve container tokens
|
|
271
|
-
const paddingHorizontal = getVariableByName('appBarHome/padding/horizontal', modes) ?? 16
|
|
272
|
-
const paddingVertical = getVariableByName('appBarHome/padding/vertical', modes) ?? 16
|
|
273
|
-
const actionsGap = getVariableByName('appBarHome/actions/gap', modes) ?? 0
|
|
274
|
-
|
|
275
|
-
const containerStyle: ViewStyle = {
|
|
276
|
-
flexDirection: 'row',
|
|
277
|
-
alignItems: 'center',
|
|
278
|
-
justifyContent: 'space-between',
|
|
279
|
-
paddingHorizontal,
|
|
280
|
-
paddingVertical,
|
|
281
|
-
width: '100%',
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
const homeActionsRowStyle: ViewStyle = {
|
|
285
|
-
flexDirection: 'row',
|
|
286
|
-
gap: actionsGap,
|
|
287
|
-
alignItems: 'center',
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
// Default leading: IconButton with customizable icon
|
|
291
|
-
// The IconButton already handles its own circular styling, so we just use it directly
|
|
292
|
-
const defaultLeading = leading ?? (
|
|
293
|
-
<IconButton
|
|
294
|
-
iconName={leadingIconName}
|
|
295
|
-
modes={modes}
|
|
296
|
-
{...(onLeadingPress !== undefined ? { onPress: onLeadingPress } : {})}
|
|
297
|
-
accessibilityLabel="Home"
|
|
298
|
-
accessibilityHint="Opens home menu"
|
|
299
|
-
/>
|
|
300
|
-
)
|
|
301
|
-
|
|
302
|
-
// Default actions: Search and Notification IconButtons
|
|
303
|
-
const defaultActions = actionsSlot ?? (
|
|
304
|
-
<View style={homeActionsRowStyle}>
|
|
305
|
-
<IconButton
|
|
306
|
-
iconName="ic_search"
|
|
307
|
-
modes={modes}
|
|
308
|
-
onPress={() => {}}
|
|
309
|
-
accessibilityLabel="Search"
|
|
310
|
-
accessibilityHint="Opens search screen"
|
|
311
|
-
/>
|
|
312
|
-
<IconButton
|
|
313
|
-
iconName="ic_notification"
|
|
314
|
-
modes={modes}
|
|
315
|
-
onPress={() => {}}
|
|
316
|
-
accessibilityLabel="Notifications"
|
|
317
|
-
accessibilityHint="Opens notifications"
|
|
318
|
-
/>
|
|
319
|
-
</View>
|
|
320
|
-
)
|
|
321
|
-
|
|
322
|
-
// Clone slot children and pass modes to all children that accept it
|
|
323
|
-
const processedActionsSlot = actionsSlot
|
|
324
|
-
? cloneChildrenWithModes(React.Children.toArray(actionsSlot), modes)
|
|
325
|
-
: defaultActions
|
|
326
|
-
|
|
327
|
-
// Process leading if it's a React element
|
|
328
|
-
const processedLeading = React.isValidElement(leading)
|
|
329
|
-
? cloneChildrenWithModes([leading], modes)[0]
|
|
330
|
-
: defaultLeading
|
|
331
|
-
|
|
332
|
-
// Process avatar with modes
|
|
333
|
-
const avatarModes = avatarProps?.modes ? { ...modes, ...avatarProps.modes } : modes
|
|
334
|
-
const processedAvatar = (
|
|
335
|
-
<Avatar
|
|
336
|
-
{...(avatarProps ?? {})}
|
|
337
|
-
modes={avatarModes}
|
|
338
|
-
/>
|
|
339
|
-
)
|
|
340
|
-
|
|
341
|
-
return (
|
|
342
|
-
<View
|
|
343
|
-
style={[containerStyle, style]}
|
|
344
|
-
accessibilityRole="header"
|
|
345
|
-
accessibilityLabel={accessibilityLabel}
|
|
346
|
-
{...(accessibilityHint !== undefined ? { accessibilityHint } : {})}
|
|
347
|
-
{...rest}
|
|
348
|
-
>
|
|
349
|
-
{processedLeading}
|
|
350
|
-
<View style={homeActionsRowStyle}>
|
|
351
|
-
{processedActionsSlot}
|
|
352
|
-
{processedAvatar}
|
|
240
|
+
{/* Actions Section */}
|
|
241
|
+
<View style={actionsStyle}>
|
|
242
|
+
{processedActions}
|
|
353
243
|
</View>
|
|
354
244
|
</View>
|
|
355
245
|
)
|
|
356
246
|
}
|
|
357
|
-
|
|
358
|
-
export default AppBar
|
|
359
|
-
export { AppBarHome }
|
|
360
|
-
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as AvatarStories from './Avatar.stories';
|
|
3
3
|
import Avatar from './Avatar';
|
|
4
4
|
import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
|
|
@@ -13,6 +13,10 @@ Avatar component that displays either an image or a monogram.
|
|
|
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
|
+
### Context4
|
|
17
|
+
- **Modes:** Default | Chip
|
|
18
|
+
- **Default:** Default
|
|
19
|
+
|
|
16
20
|
### Avatar Size
|
|
17
21
|
- **Modes:** L | M | S
|
|
18
22
|
- **Default:** L
|
|
@@ -20,6 +24,10 @@ This component uses the following design token collections. Each collection supp
|
|
|
20
24
|
### Color Mode
|
|
21
25
|
- **Modes:** Light | Dark
|
|
22
26
|
- **Default:** Light
|
|
27
|
+
|
|
28
|
+
### Colors Router
|
|
29
|
+
- **Modes:** POC | Old
|
|
30
|
+
- **Default:** POC
|
|
23
31
|
## Usage
|
|
24
32
|
|
|
25
33
|
<Canvas>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Story, Canvas,
|
|
1
|
+
import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
|
|
2
2
|
import * as AvatarGroupStories from './AvatarGroup.stories';
|
|
3
3
|
import AvatarGroup from './AvatarGroup';
|
|
4
4
|
|
|
@@ -12,9 +12,17 @@ AvatarGroup component with design-token-driven styling.
|
|
|
12
12
|
|
|
13
13
|
This component uses the following design token collections. Each collection supports multiple modes that can be configured via the `modes` prop.
|
|
14
14
|
|
|
15
|
+
### Context4
|
|
16
|
+
- **Modes:** Default | Chip
|
|
17
|
+
- **Default:** Default
|
|
18
|
+
|
|
15
19
|
### Avatar Size
|
|
16
20
|
- **Modes:** L | M | S
|
|
17
21
|
- **Default:** L
|
|
22
|
+
|
|
23
|
+
### Colors Router
|
|
24
|
+
- **Modes:** POC | Old
|
|
25
|
+
- **Default:** POC
|
|
18
26
|
## Usage
|
|
19
27
|
|
|
20
28
|
<Canvas>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Meta, Story, Canvas, ArgsTable } from '@storybook/addon-docs';
|
|
2
|
+
import Balance from './Balance';
|
|
3
|
+
import * as BalanceStories from './Balance.stories';
|
|
4
|
+
|
|
5
|
+
<Meta of={BalanceStories} />
|
|
6
|
+
|
|
7
|
+
# Balance
|
|
8
|
+
|
|
9
|
+
The `Balance` component displays a title and a monetary value, typically used to show total amounts or outstanding balances.
|
|
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 { Balance } from 'jfs-components';
|
|
19
|
+
|
|
20
|
+
// Basic usage
|
|
21
|
+
<Balance
|
|
22
|
+
title="Total owed to people"
|
|
23
|
+
amount="50,000.67"
|
|
24
|
+
currency="₹"
|
|
25
|
+
/>
|
|
26
|
+
|
|
27
|
+
// With modes
|
|
28
|
+
<Balance
|
|
29
|
+
title="Total Balance"
|
|
30
|
+
amount="12,500.00"
|
|
31
|
+
modes={{ "Color Mode": "Dark" }}
|
|
32
|
+
/>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Props
|
|
36
|
+
|
|
37
|
+
<ArgsTable of={Balance} />
|
|
38
|
+
|
|
39
|
+
## Stories
|
|
40
|
+
|
|
41
|
+
### Default
|
|
42
|
+
<Canvas of={BalanceStories.Default} />
|
|
43
|
+
|
|
44
|
+
### With Modes
|
|
45
|
+
<Canvas of={BalanceStories.WithModes} />
|
|
46
|
+
|
|
47
|
+
### Custom Slot
|
|
48
|
+
<Canvas of={BalanceStories.CustomSlot} />
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
## Design Tokens
|
|
52
|
+
|
|
53
|
+
This component uses the following design tokens, resolved through `getVariableByName`:
|
|
54
|
+
|
|
55
|
+
- **`balance/gap`**
|
|
56
|
+
- **`balance/title/fontFamily`**
|
|
57
|
+
- **`balance/title/fontSize`**
|
|
58
|
+
- **`balance/title/fontWeight`**
|
|
59
|
+
- **`balance/title/foreground`**
|
|
60
|
+
- **`balance/title/lineHeight`**
|
|
61
|
+
|
|
62
|
+
All tokens support mode-based theming through the `modes` prop.
|