jfs-components 0.1.12 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/lib/commonjs/components/ActionFooter/ActionFooter.js +7 -24
- package/lib/commonjs/components/ActionTile/ActionTile.js +10 -10
- package/lib/commonjs/components/AmountInput/AmountInput.js +3 -3
- package/lib/commonjs/components/AreaLineChart/AreaLineChart.js +2 -2
- package/lib/commonjs/components/Attached/Attached.js +1 -1
- package/lib/commonjs/components/Avatar/Avatar.js +10 -10
- package/lib/commonjs/components/AvatarGroup/AvatarGroup.js +50 -29
- package/lib/commonjs/components/Badge/Badge.js +12 -12
- package/lib/commonjs/components/BenefitCard/BenefitCard.js +95 -21
- package/lib/commonjs/components/BottomNav/BottomNav.js +2 -2
- package/lib/commonjs/components/BottomNavItem/BottomNavItem.js +3 -3
- package/lib/commonjs/components/Button/Button.js +31 -19
- package/lib/commonjs/components/Card/Card.js +20 -20
- package/lib/commonjs/components/CardAdvisory/CardAdvisory.js +6 -6
- package/lib/commonjs/components/CardCTA/CardCTA.js +21 -21
- package/lib/commonjs/components/CardFeedback/CardFeedback.js +18 -18
- package/lib/commonjs/components/CardFinancialCondition/CardFinancialCondition.js +7 -7
- package/lib/commonjs/components/CardInsight/CardInsight.js +1 -2
- package/lib/commonjs/components/Carousel/Carousel.js +18 -12
- package/lib/commonjs/components/CarouselCardAccounts/CarouselCardAccounts.js +75 -0
- package/lib/commonjs/components/Checkbox/Checkbox.js +6 -13
- package/lib/commonjs/components/ChipGroup/ChipGroup.js +1 -1
- package/lib/commonjs/components/ChipSelect/ChipSelect.js +11 -11
- package/lib/commonjs/components/CircularProgressBar/CircularProgressBar.js +5 -5
- package/lib/commonjs/components/CircularProgressBarDoted/CircularProgressBarDoted.js +8 -8
- package/lib/commonjs/components/CircularRating/CircularRating.js +3 -3
- package/lib/commonjs/components/CompareTable/CompareTable.js +16 -16
- package/lib/commonjs/components/DebitCard/DebitCard.js +18 -18
- package/lib/commonjs/components/Disclaimer/Disclaimer.js +5 -5
- package/lib/commonjs/components/DonutChart/DonutChart.js +11 -11
- package/lib/commonjs/components/Drawer/Drawer.js +60 -60
- package/lib/commonjs/components/Dropdown/Dropdown.js +22 -23
- package/lib/commonjs/components/DropdownInput/DropdownInput.js +10 -10
- package/lib/commonjs/components/EmptyState/EmptyState.js +14 -14
- package/lib/commonjs/components/FilterBar/FilterBar.js +2 -2
- package/lib/commonjs/components/Form/Form.js +3 -3
- package/lib/commonjs/components/FormField/FormField.js +6 -6
- package/lib/commonjs/components/FullscreenModal/FullscreenModal.js +24 -24
- package/lib/commonjs/components/Gauge/Gauge.js +8 -8
- package/lib/commonjs/components/HoldingsCard/HoldingsCard.js +10 -10
- package/lib/commonjs/components/Icon/Icon.js +6 -6
- package/lib/commonjs/components/IconCapsule/IconCapsule.js +7 -7
- package/lib/commonjs/components/InputSearch/InputSearch.js +9 -9
- package/lib/commonjs/components/InstitutionBadge/InstitutionBadge.js +3 -3
- package/lib/commonjs/components/ListGroup/ListGroup.js +8 -8
- package/lib/commonjs/components/ListItem/ListItem.js +10 -10
- package/lib/commonjs/components/LottieIntroBlock/LottieIntroBlock.js +13 -13
- package/lib/commonjs/components/LottiePlayer/LottiePlayer.js +2 -2
- package/lib/commonjs/components/LottiePlayer/LottiePlayer.web.js +2 -2
- package/lib/commonjs/components/MediaCard/MediaCard.js +21 -21
- package/lib/commonjs/components/MessageField/MessageField.js +8 -8
- package/lib/commonjs/components/MoneyValue/MoneyValue.js +7 -7
- package/lib/commonjs/components/NavArrow/NavArrow.js +8 -8
- package/lib/commonjs/components/NoteInput/NoteInput.js +12 -12
- package/lib/commonjs/components/Nudge/Nudge.js +20 -20
- package/lib/commonjs/components/OTP/OTP.js +15 -15
- package/lib/commonjs/components/PageHero/PageHero.js +16 -16
- package/lib/commonjs/components/PaymentFeedback/PaymentFeedback.js +23 -23
- package/lib/commonjs/components/Popup/Popup.js +1 -1
- package/lib/commonjs/components/ProductMerchandisingCard/ProductMerchandisingCard.js +64 -60
- package/lib/commonjs/components/ProgressBadge/ProgressBadge.js +5 -5
- package/lib/commonjs/components/Radio/Radio.js +8 -8
- package/lib/commonjs/components/RechargeCard/RechargeCard.js +31 -31
- package/lib/commonjs/components/SavingsGoalSummary/SavingsGoalSummary.js +59 -12
- package/lib/commonjs/components/ScrollArea/ScrollArea.js +126 -0
- package/lib/commonjs/components/Section/Section.js +24 -24
- package/lib/commonjs/components/StatusHero/StatusHero.js +14 -14
- package/lib/commonjs/components/Stepper/Step.js +16 -16
- package/lib/commonjs/components/Stepper/StepLabel.js +16 -16
- package/lib/commonjs/components/Stepper/Stepper.js +3 -3
- package/lib/commonjs/components/SuggestiveSearch/SuggestiveSearch.js +10 -10
- package/lib/commonjs/components/SupportText/SupportText.js +6 -6
- package/lib/commonjs/components/SupportText/SupportTextIcon.js +2 -2
- package/lib/commonjs/components/Text/Text.js +14 -2
- package/lib/commonjs/components/TextInput/TextInput.js +14 -14
- package/lib/commonjs/components/TextSegment/TextSegment.js +14 -2
- package/lib/commonjs/components/ThreadHero/ThreadHero.js +17 -17
- package/lib/commonjs/components/Title/Title.js +38 -16
- package/lib/commonjs/components/Toast/Toast.js +15 -15
- package/lib/commonjs/components/Toggle/Toggle.js +3 -11
- package/lib/commonjs/components/Tooltip/Tooltip.js +12 -12
- package/lib/commonjs/components/TransactionBubble/TransactionBubble.js +13 -13
- package/lib/commonjs/components/TransactionDetails/TransactionDetails.js +10 -10
- package/lib/commonjs/components/TransactionStatus/TransactionStatus.js +9 -9
- package/lib/commonjs/components/UpiHandle/UpiHandle.js +15 -15
- package/lib/commonjs/components/index.js +14 -0
- package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/commonjs/design-tokens/figma-modes.generated.js +50 -42
- package/lib/commonjs/icons/components/Icon4g.js +19 -0
- package/lib/commonjs/icons/components/Icon4gltedata.js +19 -0
- package/lib/commonjs/icons/components/Icon5g.js +19 -0
- package/lib/commonjs/icons/components/Icon5gdoubleplus.js +19 -0
- package/lib/commonjs/icons/components/Icon5gplus.js +19 -0
- package/lib/commonjs/icons/components/IconAdblocker.js +19 -0
- package/lib/commonjs/icons/components/IconAdblockplus.js +19 -0
- package/lib/commonjs/icons/components/IconAnalytics.js +19 -0
- package/lib/commonjs/icons/components/IconAnalyticsdata.js +19 -0
- package/lib/commonjs/icons/components/IconAnalyticspiechart.js +19 -0
- package/lib/commonjs/icons/components/IconAnalyticspiecharttree.js +19 -0
- package/lib/commonjs/icons/components/IconAnalyticspiecharttwo.js +19 -0
- package/lib/commonjs/icons/components/IconCompoundinterest.js +19 -0
- package/lib/commonjs/icons/components/IconConsumptionaccounted.js +19 -0
- package/lib/commonjs/icons/components/IconConsumptionaverage.js +19 -0
- package/lib/commonjs/icons/components/IconConsumptionhigh.js +19 -0
- package/lib/commonjs/icons/components/IconConsumptionlow.js +19 -0
- package/lib/commonjs/icons/components/IconConsumptionunaccounted.js +19 -0
- package/lib/commonjs/icons/components/IconCsvdoc.js +19 -0
- package/lib/commonjs/icons/components/IconDatabase.js +19 -0
- package/lib/commonjs/icons/components/IconDigitalecosystem.js +19 -0
- package/lib/commonjs/icons/components/IconDigitalselfservice.js +19 -0
- package/lib/commonjs/icons/components/IconDistribution.js +19 -0
- package/lib/commonjs/icons/components/IconDocument.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentdoc.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentjpg.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentodt.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentpdf.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentpng.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentraw.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentrtf.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentsettings.js +19 -0
- package/lib/commonjs/icons/components/IconDocumenttif.js +19 -0
- package/lib/commonjs/icons/components/IconDocumenttxt.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentunknown.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentxls.js +19 -0
- package/lib/commonjs/icons/components/IconDocumentxlsx.js +19 -0
- package/lib/commonjs/icons/components/IconFilerequest.js +19 -0
- package/lib/commonjs/icons/components/IconFilesend.js +19 -0
- package/lib/commonjs/icons/components/IconFileshare.js +19 -0
- package/lib/commonjs/icons/components/IconFindinpage.js +19 -0
- package/lib/commonjs/icons/components/IconFolder.js +19 -0
- package/lib/commonjs/icons/components/IconFolderbookmarks.js +19 -0
- package/lib/commonjs/icons/components/IconFolderfavorites.js +19 -0
- package/lib/commonjs/icons/components/IconFolderlocked.js +19 -0
- package/lib/commonjs/icons/components/IconFoldermovefiles.js +19 -0
- package/lib/commonjs/icons/components/IconFolderpublic.js +19 -0
- package/lib/commonjs/icons/components/IconFolderrated.js +19 -0
- package/lib/commonjs/icons/components/IconFolderrequest.js +19 -0
- package/lib/commonjs/icons/components/IconForm.js +19 -0
- package/lib/commonjs/icons/components/IconFormadd.js +19 -0
- package/lib/commonjs/icons/components/IconForms.js +19 -0
- package/lib/commonjs/icons/components/IconGraphincreasing.js +19 -0
- package/lib/commonjs/icons/components/IconGraphlow.js +19 -0
- package/lib/commonjs/icons/components/IconGraphtable.js +19 -0
- package/lib/commonjs/icons/components/IconHealthreport.js +19 -0
- package/lib/commonjs/icons/components/IconHubmode.js +19 -0
- package/lib/commonjs/icons/components/IconInfrastructure.js +19 -0
- package/lib/commonjs/icons/components/IconInterestlow.js +19 -0
- package/lib/commonjs/icons/components/IconLte.js +19 -0
- package/lib/commonjs/icons/components/IconNetworkfuture.js +19 -0
- package/lib/commonjs/icons/components/IconPagesettings.js +19 -0
- package/lib/commonjs/icons/components/IconPptxdoc.js +19 -0
- package/lib/commonjs/icons/components/IconPreferrednumber.js +19 -0
- package/lib/commonjs/icons/components/IconPremiumnumber.js +19 -0
- package/lib/commonjs/icons/components/IconProjection.js +19 -0
- package/lib/commonjs/icons/components/IconRequest.js +19 -0
- package/lib/commonjs/icons/components/IconRoutestraffic.js +19 -0
- package/lib/commonjs/icons/components/IconTechnology.js +19 -0
- package/lib/commonjs/icons/components/IconVolte.js +19 -0
- package/lib/commonjs/icons/components/IconVonr.js +19 -0
- package/lib/commonjs/icons/components/IconVowifi.js +19 -0
- package/lib/commonjs/icons/components/IconVpndata.js +19 -0
- package/lib/commonjs/icons/components/index.js +803 -0
- package/lib/commonjs/icons/registry.js +2 -2
- package/lib/commonjs/utils/GlassFill/GlassFill.js +69 -73
- package/lib/commonjs/utils/index.js +25 -0
- package/lib/commonjs/utils/react-utils.js +62 -0
- package/lib/commonjs/utils/shadow.js +200 -0
- package/lib/module/components/ActionFooter/ActionFooter.js +7 -24
- package/lib/module/components/ActionTile/ActionTile.js +10 -10
- package/lib/module/components/AmountInput/AmountInput.js +3 -3
- package/lib/module/components/AreaLineChart/AreaLineChart.js +2 -2
- package/lib/module/components/Attached/Attached.js +1 -1
- package/lib/module/components/Avatar/Avatar.js +10 -10
- package/lib/module/components/AvatarGroup/AvatarGroup.js +52 -30
- package/lib/module/components/Badge/Badge.js +12 -12
- package/lib/module/components/BenefitCard/BenefitCard.js +95 -21
- package/lib/module/components/BottomNav/BottomNav.js +2 -2
- package/lib/module/components/BottomNavItem/BottomNavItem.js +3 -3
- package/lib/module/components/Button/Button.js +32 -20
- package/lib/module/components/Card/Card.js +20 -20
- package/lib/module/components/CardAdvisory/CardAdvisory.js +6 -6
- package/lib/module/components/CardCTA/CardCTA.js +21 -21
- package/lib/module/components/CardFeedback/CardFeedback.js +18 -18
- package/lib/module/components/CardFinancialCondition/CardFinancialCondition.js +7 -7
- package/lib/module/components/CardInsight/CardInsight.js +1 -2
- package/lib/module/components/Carousel/Carousel.js +18 -12
- package/lib/module/components/CarouselCardAccounts/CarouselCardAccounts.js +71 -0
- package/lib/module/components/Checkbox/Checkbox.js +2 -9
- package/lib/module/components/ChipGroup/ChipGroup.js +1 -1
- package/lib/module/components/ChipSelect/ChipSelect.js +11 -11
- package/lib/module/components/CircularProgressBar/CircularProgressBar.js +5 -5
- package/lib/module/components/CircularProgressBarDoted/CircularProgressBarDoted.js +8 -8
- package/lib/module/components/CircularRating/CircularRating.js +3 -3
- package/lib/module/components/CompareTable/CompareTable.js +16 -16
- package/lib/module/components/DebitCard/DebitCard.js +18 -18
- package/lib/module/components/Disclaimer/Disclaimer.js +5 -5
- package/lib/module/components/DonutChart/DonutChart.js +11 -11
- package/lib/module/components/Drawer/Drawer.js +60 -60
- package/lib/module/components/Dropdown/Dropdown.js +22 -23
- package/lib/module/components/DropdownInput/DropdownInput.js +10 -10
- package/lib/module/components/EmptyState/EmptyState.js +14 -14
- package/lib/module/components/FilterBar/FilterBar.js +2 -2
- package/lib/module/components/Form/Form.js +3 -3
- package/lib/module/components/FormField/FormField.js +6 -6
- package/lib/module/components/FullscreenModal/FullscreenModal.js +24 -24
- package/lib/module/components/Gauge/Gauge.js +8 -8
- package/lib/module/components/HoldingsCard/HoldingsCard.js +10 -10
- package/lib/module/components/Icon/Icon.js +6 -6
- package/lib/module/components/IconCapsule/IconCapsule.js +7 -7
- package/lib/module/components/InputSearch/InputSearch.js +9 -9
- package/lib/module/components/InstitutionBadge/InstitutionBadge.js +3 -3
- package/lib/module/components/ListGroup/ListGroup.js +8 -8
- package/lib/module/components/ListItem/ListItem.js +10 -10
- package/lib/module/components/LottieIntroBlock/LottieIntroBlock.js +13 -13
- package/lib/module/components/LottiePlayer/LottiePlayer.js +2 -2
- package/lib/module/components/LottiePlayer/LottiePlayer.web.js +2 -2
- package/lib/module/components/MediaCard/MediaCard.js +21 -21
- package/lib/module/components/MessageField/MessageField.js +8 -8
- package/lib/module/components/MoneyValue/MoneyValue.js +7 -7
- package/lib/module/components/NavArrow/NavArrow.js +8 -8
- package/lib/module/components/NoteInput/NoteInput.js +12 -12
- package/lib/module/components/Nudge/Nudge.js +20 -20
- package/lib/module/components/OTP/OTP.js +15 -15
- package/lib/module/components/PageHero/PageHero.js +16 -16
- package/lib/module/components/PaymentFeedback/PaymentFeedback.js +23 -23
- package/lib/module/components/Popup/Popup.js +1 -1
- package/lib/module/components/ProductMerchandisingCard/ProductMerchandisingCard.js +66 -62
- package/lib/module/components/ProgressBadge/ProgressBadge.js +5 -5
- package/lib/module/components/Radio/Radio.js +9 -9
- package/lib/module/components/RechargeCard/RechargeCard.js +31 -31
- package/lib/module/components/SavingsGoalSummary/SavingsGoalSummary.js +60 -13
- package/lib/module/components/ScrollArea/ScrollArea.js +121 -0
- package/lib/module/components/Section/Section.js +24 -24
- package/lib/module/components/StatusHero/StatusHero.js +14 -14
- package/lib/module/components/Stepper/Step.js +16 -16
- package/lib/module/components/Stepper/StepLabel.js +16 -16
- package/lib/module/components/Stepper/Stepper.js +3 -3
- package/lib/module/components/SuggestiveSearch/SuggestiveSearch.js +10 -10
- package/lib/module/components/SupportText/SupportText.js +6 -6
- package/lib/module/components/SupportText/SupportTextIcon.js +2 -2
- package/lib/module/components/Text/Text.js +15 -3
- package/lib/module/components/TextInput/TextInput.js +14 -14
- package/lib/module/components/TextSegment/TextSegment.js +15 -3
- package/lib/module/components/ThreadHero/ThreadHero.js +17 -17
- package/lib/module/components/Title/Title.js +39 -17
- package/lib/module/components/Toast/Toast.js +15 -15
- package/lib/module/components/Toggle/Toggle.js +4 -12
- package/lib/module/components/Tooltip/Tooltip.js +12 -12
- package/lib/module/components/TransactionBubble/TransactionBubble.js +13 -13
- package/lib/module/components/TransactionDetails/TransactionDetails.js +10 -10
- package/lib/module/components/TransactionStatus/TransactionStatus.js +9 -9
- package/lib/module/components/UpiHandle/UpiHandle.js +15 -15
- package/lib/module/components/index.js +2 -0
- package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/module/design-tokens/figma-modes.generated.js +50 -42
- package/lib/module/icons/components/Icon4g.js +12 -0
- package/lib/module/icons/components/Icon4gltedata.js +12 -0
- package/lib/module/icons/components/Icon5g.js +12 -0
- package/lib/module/icons/components/Icon5gdoubleplus.js +12 -0
- package/lib/module/icons/components/Icon5gplus.js +12 -0
- package/lib/module/icons/components/IconAdblocker.js +12 -0
- package/lib/module/icons/components/IconAdblockplus.js +12 -0
- package/lib/module/icons/components/IconAnalytics.js +12 -0
- package/lib/module/icons/components/IconAnalyticsdata.js +12 -0
- package/lib/module/icons/components/IconAnalyticspiechart.js +12 -0
- package/lib/module/icons/components/IconAnalyticspiecharttree.js +12 -0
- package/lib/module/icons/components/IconAnalyticspiecharttwo.js +12 -0
- package/lib/module/icons/components/IconCompoundinterest.js +12 -0
- package/lib/module/icons/components/IconConsumptionaccounted.js +12 -0
- package/lib/module/icons/components/IconConsumptionaverage.js +12 -0
- package/lib/module/icons/components/IconConsumptionhigh.js +12 -0
- package/lib/module/icons/components/IconConsumptionlow.js +12 -0
- package/lib/module/icons/components/IconConsumptionunaccounted.js +12 -0
- package/lib/module/icons/components/IconCsvdoc.js +12 -0
- package/lib/module/icons/components/IconDatabase.js +12 -0
- package/lib/module/icons/components/IconDigitalecosystem.js +12 -0
- package/lib/module/icons/components/IconDigitalselfservice.js +12 -0
- package/lib/module/icons/components/IconDistribution.js +12 -0
- package/lib/module/icons/components/IconDocument.js +12 -0
- package/lib/module/icons/components/IconDocumentdoc.js +12 -0
- package/lib/module/icons/components/IconDocumentjpg.js +12 -0
- package/lib/module/icons/components/IconDocumentodt.js +12 -0
- package/lib/module/icons/components/IconDocumentpdf.js +12 -0
- package/lib/module/icons/components/IconDocumentpng.js +12 -0
- package/lib/module/icons/components/IconDocumentraw.js +12 -0
- package/lib/module/icons/components/IconDocumentrtf.js +12 -0
- package/lib/module/icons/components/IconDocumentsettings.js +12 -0
- package/lib/module/icons/components/IconDocumenttif.js +12 -0
- package/lib/module/icons/components/IconDocumenttxt.js +12 -0
- package/lib/module/icons/components/IconDocumentunknown.js +12 -0
- package/lib/module/icons/components/IconDocumentxls.js +12 -0
- package/lib/module/icons/components/IconDocumentxlsx.js +12 -0
- package/lib/module/icons/components/IconFilerequest.js +12 -0
- package/lib/module/icons/components/IconFilesend.js +12 -0
- package/lib/module/icons/components/IconFileshare.js +12 -0
- package/lib/module/icons/components/IconFindinpage.js +12 -0
- package/lib/module/icons/components/IconFolder.js +12 -0
- package/lib/module/icons/components/IconFolderbookmarks.js +12 -0
- package/lib/module/icons/components/IconFolderfavorites.js +12 -0
- package/lib/module/icons/components/IconFolderlocked.js +12 -0
- package/lib/module/icons/components/IconFoldermovefiles.js +12 -0
- package/lib/module/icons/components/IconFolderpublic.js +12 -0
- package/lib/module/icons/components/IconFolderrated.js +12 -0
- package/lib/module/icons/components/IconFolderrequest.js +12 -0
- package/lib/module/icons/components/IconForm.js +12 -0
- package/lib/module/icons/components/IconFormadd.js +12 -0
- package/lib/module/icons/components/IconForms.js +12 -0
- package/lib/module/icons/components/IconGraphincreasing.js +12 -0
- package/lib/module/icons/components/IconGraphlow.js +12 -0
- package/lib/module/icons/components/IconGraphtable.js +12 -0
- package/lib/module/icons/components/IconHealthreport.js +12 -0
- package/lib/module/icons/components/IconHubmode.js +12 -0
- package/lib/module/icons/components/IconInfrastructure.js +12 -0
- package/lib/module/icons/components/IconInterestlow.js +12 -0
- package/lib/module/icons/components/IconLte.js +12 -0
- package/lib/module/icons/components/IconNetworkfuture.js +12 -0
- package/lib/module/icons/components/IconPagesettings.js +12 -0
- package/lib/module/icons/components/IconPptxdoc.js +12 -0
- package/lib/module/icons/components/IconPreferrednumber.js +12 -0
- package/lib/module/icons/components/IconPremiumnumber.js +12 -0
- package/lib/module/icons/components/IconProjection.js +12 -0
- package/lib/module/icons/components/IconRequest.js +12 -0
- package/lib/module/icons/components/IconRoutestraffic.js +12 -0
- package/lib/module/icons/components/IconTechnology.js +12 -0
- package/lib/module/icons/components/IconVolte.js +12 -0
- package/lib/module/icons/components/IconVonr.js +12 -0
- package/lib/module/icons/components/IconVowifi.js +12 -0
- package/lib/module/icons/components/IconVpndata.js +12 -0
- package/lib/module/icons/components/index.js +73 -0
- package/lib/module/icons/registry.js +2 -2
- package/lib/module/utils/GlassFill/GlassFill.js +69 -72
- package/lib/module/utils/index.js +2 -1
- package/lib/module/utils/react-utils.js +61 -0
- package/lib/module/utils/shadow.js +194 -0
- package/lib/typescript/src/components/BenefitCard/BenefitCard.d.ts +33 -4
- package/lib/typescript/src/components/Carousel/Carousel.d.ts +11 -1
- package/lib/typescript/src/components/CarouselCardAccounts/CarouselCardAccounts.d.ts +57 -0
- package/lib/typescript/src/components/SavingsGoalSummary/SavingsGoalSummary.d.ts +11 -1
- package/lib/typescript/src/components/ScrollArea/ScrollArea.d.ts +77 -0
- package/lib/typescript/src/components/Text/Text.d.ts +12 -3
- package/lib/typescript/src/components/TextSegment/TextSegment.d.ts +12 -3
- package/lib/typescript/src/components/Title/Title.d.ts +12 -2
- package/lib/typescript/src/components/index.d.ts +2 -0
- package/lib/typescript/src/design-tokens/figma-modes.generated.d.ts +23 -15
- package/lib/typescript/src/icons/components/Icon4g.d.ts +3 -0
- package/lib/typescript/src/icons/components/Icon4gltedata.d.ts +3 -0
- package/lib/typescript/src/icons/components/Icon5g.d.ts +3 -0
- package/lib/typescript/src/icons/components/Icon5gdoubleplus.d.ts +3 -0
- package/lib/typescript/src/icons/components/Icon5gplus.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconAdblocker.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconAdblockplus.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconAnalytics.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconAnalyticsdata.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconAnalyticspiechart.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconAnalyticspiecharttree.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconAnalyticspiecharttwo.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconCompoundinterest.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconConsumptionaccounted.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconConsumptionaverage.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconConsumptionhigh.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconConsumptionlow.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconConsumptionunaccounted.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconCsvdoc.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDatabase.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDigitalecosystem.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDigitalselfservice.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDistribution.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocument.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentdoc.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentjpg.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentodt.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentpdf.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentpng.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentraw.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentrtf.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentsettings.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumenttif.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumenttxt.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentunknown.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentxls.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconDocumentxlsx.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFilerequest.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFilesend.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFileshare.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFindinpage.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFolder.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFolderbookmarks.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFolderfavorites.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFolderlocked.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFoldermovefiles.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFolderpublic.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFolderrated.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFolderrequest.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconForm.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconFormadd.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconForms.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconGraphincreasing.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconGraphlow.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconGraphtable.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconHealthreport.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconHubmode.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconInfrastructure.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconInterestlow.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconLte.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconNetworkfuture.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconPagesettings.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconPptxdoc.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconPreferrednumber.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconPremiumnumber.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconProjection.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconRequest.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconRoutestraffic.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconTechnology.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconVolte.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconVonr.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconVowifi.d.ts +3 -0
- package/lib/typescript/src/icons/components/IconVpndata.d.ts +3 -0
- package/lib/typescript/src/icons/components/index.d.ts +73 -0
- package/lib/typescript/src/icons/registry.d.ts +1 -1
- package/lib/typescript/src/utils/GlassFill/GlassFill.d.ts +11 -4
- package/lib/typescript/src/utils/index.d.ts +2 -0
- package/lib/typescript/src/utils/react-utils.d.ts +40 -1
- package/lib/typescript/src/utils/shadow.d.ts +72 -0
- package/package.json +2 -2
- package/src/components/ActionFooter/ActionFooter.tsx +8 -26
- package/src/components/ActionTile/ActionTile.tsx +10 -10
- package/src/components/AmountInput/AmountInput.tsx +3 -3
- package/src/components/AreaLineChart/AreaLineChart.tsx +2 -2
- package/src/components/Attached/Attached.tsx +1 -1
- package/src/components/Avatar/Avatar.tsx +10 -10
- package/src/components/AvatarGroup/AvatarGroup.tsx +53 -27
- package/src/components/Badge/Badge.tsx +12 -13
- package/src/components/BenefitCard/BenefitCard.tsx +120 -27
- package/src/components/BottomNav/BottomNav.tsx +2 -2
- package/src/components/BottomNavItem/BottomNavItem.tsx +3 -3
- package/src/components/Button/Button.tsx +30 -20
- package/src/components/Card/Card.tsx +20 -20
- package/src/components/CardAdvisory/CardAdvisory.tsx +6 -6
- package/src/components/CardCTA/CardCTA.tsx +21 -21
- package/src/components/CardFeedback/CardFeedback.tsx +18 -18
- package/src/components/CardFinancialCondition/CardFinancialCondition.tsx +7 -10
- package/src/components/CardInsight/CardInsight.tsx +1 -3
- package/src/components/Carousel/Carousel.tsx +29 -12
- package/src/components/CarouselCardAccounts/CarouselCardAccounts.tsx +113 -0
- package/src/components/Checkbox/Checkbox.tsx +2 -8
- package/src/components/ChipGroup/ChipGroup.tsx +1 -1
- package/src/components/ChipSelect/ChipSelect.tsx +11 -11
- package/src/components/CircularProgressBar/CircularProgressBar.tsx +5 -5
- package/src/components/CircularProgressBarDoted/CircularProgressBarDoted.tsx +8 -8
- package/src/components/CircularRating/CircularRating.tsx +3 -3
- package/src/components/CompareTable/CompareTable.tsx +16 -16
- package/src/components/DebitCard/DebitCard.tsx +22 -22
- package/src/components/Disclaimer/Disclaimer.tsx +5 -5
- package/src/components/DonutChart/DonutChart.tsx +11 -45
- package/src/components/Drawer/Drawer.tsx +80 -71
- package/src/components/Dropdown/Dropdown.tsx +23 -28
- package/src/components/DropdownInput/DropdownInput.tsx +10 -17
- package/src/components/EmptyState/EmptyState.tsx +14 -14
- package/src/components/FilterBar/FilterBar.tsx +2 -2
- package/src/components/Form/Form.tsx +3 -3
- package/src/components/FormField/FormField.tsx +6 -11
- package/src/components/FullscreenModal/FullscreenModal.tsx +24 -24
- package/src/components/Gauge/Gauge.tsx +8 -8
- package/src/components/HoldingsCard/HoldingsCard.tsx +10 -10
- package/src/components/Icon/Icon.tsx +6 -6
- package/src/components/IconCapsule/IconCapsule.tsx +7 -7
- package/src/components/InputSearch/InputSearch.tsx +9 -9
- package/src/components/InstitutionBadge/InstitutionBadge.tsx +3 -6
- package/src/components/ListGroup/ListGroup.tsx +8 -8
- package/src/components/ListItem/ListItem.tsx +10 -10
- package/src/components/LottieIntroBlock/LottieIntroBlock.tsx +13 -16
- package/src/components/LottiePlayer/LottiePlayer.tsx +2 -2
- package/src/components/LottiePlayer/LottiePlayer.web.tsx +2 -2
- package/src/components/MediaCard/MediaCard.tsx +21 -21
- package/src/components/MessageField/MessageField.tsx +8 -16
- package/src/components/MoneyValue/MoneyValue.tsx +7 -7
- package/src/components/NavArrow/NavArrow.tsx +8 -8
- package/src/components/NoteInput/NoteInput.tsx +12 -12
- package/src/components/Nudge/Nudge.tsx +20 -20
- package/src/components/OTP/OTP.tsx +16 -16
- package/src/components/PageHero/PageHero.tsx +16 -16
- package/src/components/PaymentFeedback/PaymentFeedback.tsx +27 -27
- package/src/components/Popup/Popup.tsx +1 -1
- package/src/components/ProductMerchandisingCard/ProductMerchandisingCard.tsx +76 -47
- package/src/components/ProgressBadge/ProgressBadge.tsx +5 -5
- package/src/components/Radio/Radio.tsx +8 -9
- package/src/components/RechargeCard/RechargeCard.tsx +31 -31
- package/src/components/SavingsGoalSummary/SavingsGoalSummary.tsx +105 -13
- package/src/components/ScrollArea/ScrollArea.tsx +200 -0
- package/src/components/Section/Section.tsx +26 -26
- package/src/components/StatusHero/StatusHero.tsx +14 -14
- package/src/components/Stepper/Step.tsx +16 -18
- package/src/components/Stepper/StepLabel.tsx +16 -27
- package/src/components/Stepper/Stepper.tsx +3 -4
- package/src/components/SuggestiveSearch/SuggestiveSearch.tsx +10 -20
- package/src/components/SupportText/SupportText.tsx +6 -6
- package/src/components/SupportText/SupportTextIcon.tsx +2 -2
- package/src/components/Text/Text.tsx +23 -5
- package/src/components/TextInput/TextInput.tsx +14 -14
- package/src/components/TextSegment/TextSegment.tsx +22 -4
- package/src/components/ThreadHero/ThreadHero.tsx +17 -17
- package/src/components/Title/Title.tsx +44 -18
- package/src/components/Toast/Toast.tsx +15 -15
- package/src/components/Toggle/Toggle.tsx +5 -10
- package/src/components/Tooltip/Tooltip.tsx +12 -12
- package/src/components/TransactionBubble/TransactionBubble.tsx +15 -15
- package/src/components/TransactionDetails/TransactionDetails.tsx +10 -10
- package/src/components/TransactionStatus/TransactionStatus.tsx +9 -9
- package/src/components/UpiHandle/UpiHandle.tsx +15 -15
- package/src/components/index.ts +2 -0
- package/src/design-tokens/Coin Variables-variables-full.json +1 -1
- package/src/design-tokens/figma-modes.generated.ts +50 -42
- package/src/icons/components/Icon4g.tsx +11 -0
- package/src/icons/components/Icon4gltedata.tsx +11 -0
- package/src/icons/components/Icon5g.tsx +11 -0
- package/src/icons/components/Icon5gdoubleplus.tsx +11 -0
- package/src/icons/components/Icon5gplus.tsx +11 -0
- package/src/icons/components/IconAdblocker.tsx +11 -0
- package/src/icons/components/IconAdblockplus.tsx +11 -0
- package/src/icons/components/IconAnalytics.tsx +11 -0
- package/src/icons/components/IconAnalyticsdata.tsx +11 -0
- package/src/icons/components/IconAnalyticspiechart.tsx +11 -0
- package/src/icons/components/IconAnalyticspiecharttree.tsx +11 -0
- package/src/icons/components/IconAnalyticspiecharttwo.tsx +11 -0
- package/src/icons/components/IconCompoundinterest.tsx +11 -0
- package/src/icons/components/IconConsumptionaccounted.tsx +11 -0
- package/src/icons/components/IconConsumptionaverage.tsx +11 -0
- package/src/icons/components/IconConsumptionhigh.tsx +11 -0
- package/src/icons/components/IconConsumptionlow.tsx +11 -0
- package/src/icons/components/IconConsumptionunaccounted.tsx +11 -0
- package/src/icons/components/IconCsvdoc.tsx +11 -0
- package/src/icons/components/IconDatabase.tsx +11 -0
- package/src/icons/components/IconDigitalecosystem.tsx +11 -0
- package/src/icons/components/IconDigitalselfservice.tsx +11 -0
- package/src/icons/components/IconDistribution.tsx +11 -0
- package/src/icons/components/IconDocument.tsx +11 -0
- package/src/icons/components/IconDocumentdoc.tsx +11 -0
- package/src/icons/components/IconDocumentjpg.tsx +11 -0
- package/src/icons/components/IconDocumentodt.tsx +11 -0
- package/src/icons/components/IconDocumentpdf.tsx +11 -0
- package/src/icons/components/IconDocumentpng.tsx +11 -0
- package/src/icons/components/IconDocumentraw.tsx +11 -0
- package/src/icons/components/IconDocumentrtf.tsx +11 -0
- package/src/icons/components/IconDocumentsettings.tsx +11 -0
- package/src/icons/components/IconDocumenttif.tsx +11 -0
- package/src/icons/components/IconDocumenttxt.tsx +11 -0
- package/src/icons/components/IconDocumentunknown.tsx +11 -0
- package/src/icons/components/IconDocumentxls.tsx +11 -0
- package/src/icons/components/IconDocumentxlsx.tsx +11 -0
- package/src/icons/components/IconFilerequest.tsx +11 -0
- package/src/icons/components/IconFilesend.tsx +11 -0
- package/src/icons/components/IconFileshare.tsx +11 -0
- package/src/icons/components/IconFindinpage.tsx +11 -0
- package/src/icons/components/IconFolder.tsx +11 -0
- package/src/icons/components/IconFolderbookmarks.tsx +11 -0
- package/src/icons/components/IconFolderfavorites.tsx +11 -0
- package/src/icons/components/IconFolderlocked.tsx +11 -0
- package/src/icons/components/IconFoldermovefiles.tsx +11 -0
- package/src/icons/components/IconFolderpublic.tsx +11 -0
- package/src/icons/components/IconFolderrated.tsx +11 -0
- package/src/icons/components/IconFolderrequest.tsx +11 -0
- package/src/icons/components/IconForm.tsx +11 -0
- package/src/icons/components/IconFormadd.tsx +11 -0
- package/src/icons/components/IconForms.tsx +11 -0
- package/src/icons/components/IconGraphincreasing.tsx +11 -0
- package/src/icons/components/IconGraphlow.tsx +11 -0
- package/src/icons/components/IconGraphtable.tsx +11 -0
- package/src/icons/components/IconHealthreport.tsx +11 -0
- package/src/icons/components/IconHubmode.tsx +11 -0
- package/src/icons/components/IconInfrastructure.tsx +11 -0
- package/src/icons/components/IconInterestlow.tsx +11 -0
- package/src/icons/components/IconLte.tsx +11 -0
- package/src/icons/components/IconNetworkfuture.tsx +11 -0
- package/src/icons/components/IconPagesettings.tsx +11 -0
- package/src/icons/components/IconPptxdoc.tsx +11 -0
- package/src/icons/components/IconPreferrednumber.tsx +11 -0
- package/src/icons/components/IconPremiumnumber.tsx +11 -0
- package/src/icons/components/IconProjection.tsx +11 -0
- package/src/icons/components/IconRequest.tsx +11 -0
- package/src/icons/components/IconRoutestraffic.tsx +11 -0
- package/src/icons/components/IconTechnology.tsx +11 -0
- package/src/icons/components/IconVolte.tsx +11 -0
- package/src/icons/components/IconVonr.tsx +11 -0
- package/src/icons/components/IconVowifi.tsx +11 -0
- package/src/icons/components/IconVpndata.tsx +11 -0
- package/src/icons/components/index.ts +73 -0
- package/src/icons/registry.ts +293 -1
- package/src/utils/GlassFill/GlassFill.tsx +59 -56
- package/src/utils/index.ts +2 -0
- package/src/utils/react-utils.ts +72 -1
- package/src/utils/shadow.ts +219 -0
|
@@ -51,17 +51,17 @@ const monogramContainerStyle = {
|
|
|
51
51
|
// ---------------------------------------------------------------------------
|
|
52
52
|
|
|
53
53
|
function resolveAvatarTokens(modes, isMonogram) {
|
|
54
|
-
const size = getVariableByName('avatar/size', modes)
|
|
55
|
-
const radiusRaw = getVariableByName('avatar/radius', modes)
|
|
56
|
-
const backgroundColor = getVariableByName('avatar/background', modes)
|
|
57
|
-
const borderColor = getVariableByName('avatar/border/color', modes)
|
|
58
|
-
const borderSize = getVariableByName('avatar/border/size', modes)
|
|
59
|
-
const labelColor = getVariableByName('avatar/label/color', modes)
|
|
60
|
-
const labelFontSize = getVariableByName('avatar/label/fontSize', modes)
|
|
61
|
-
const labelLineHeight = getVariableByName('avatar/label/lineHeight', modes)
|
|
62
|
-
const labelFontWeightRaw = getVariableByName('avatar/label/fontWeight', modes)
|
|
54
|
+
const size = getVariableByName('avatar/size', modes);
|
|
55
|
+
const radiusRaw = getVariableByName('avatar/radius', modes);
|
|
56
|
+
const backgroundColor = getVariableByName('avatar/background', modes);
|
|
57
|
+
const borderColor = getVariableByName('avatar/border/color', modes);
|
|
58
|
+
const borderSize = getVariableByName('avatar/border/size', modes);
|
|
59
|
+
const labelColor = getVariableByName('avatar/label/color', modes);
|
|
60
|
+
const labelFontSize = getVariableByName('avatar/label/fontSize', modes);
|
|
61
|
+
const labelLineHeight = getVariableByName('avatar/label/lineHeight', modes);
|
|
62
|
+
const labelFontWeightRaw = getVariableByName('avatar/label/fontWeight', modes);
|
|
63
63
|
const labelFontWeight = typeof labelFontWeightRaw === 'number' ? labelFontWeightRaw.toString() : labelFontWeightRaw;
|
|
64
|
-
const labelFontFamily = getVariableByName('avatar/label/fontFamily', modes)
|
|
64
|
+
const labelFontFamily = getVariableByName('avatar/label/fontFamily', modes);
|
|
65
65
|
|
|
66
66
|
// 9999 is the design-token sentinel for "perfect circle"
|
|
67
67
|
const borderRadius = radiusRaw === 9999 ? size / 2 : radiusRaw;
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React from 'react';
|
|
3
|
+
import React, { useId } from 'react';
|
|
4
4
|
import { View, Platform } from 'react-native';
|
|
5
|
-
import
|
|
6
|
-
import Svg, { Path } from 'react-native-svg';
|
|
5
|
+
import Svg, { Defs, Mask, Path, ForeignObject } from 'react-native-svg';
|
|
7
6
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
|
|
8
7
|
import { EMPTY_MODES, flattenChildren } from '../../utils/react-utils';
|
|
9
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
9
|
function AvatarGroup({
|
|
11
10
|
modes = EMPTY_MODES,
|
|
12
11
|
children,
|
|
13
12
|
style,
|
|
14
13
|
...rest
|
|
15
14
|
}) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
15
|
+
// Stable, collision-free base for the per-avatar SVG mask ids so multiple
|
|
16
|
+
// groups on one screen (and multiple avatars in a group) never clash.
|
|
17
|
+
const rawId = useId();
|
|
18
|
+
const maskBaseId = `avatargroup-mask-${rawId.replace(/[^a-zA-Z0-9_-]/g, '')}`;
|
|
19
|
+
const gap = getVariableByName('avatarGroup/gap', modes);
|
|
20
|
+
const avatarSize = getVariableByName('avatar/size', modes);
|
|
21
|
+
const avatarRadius = getVariableByName('avatar/radius', modes);
|
|
22
|
+
const borderSize = getVariableByName('avatar/border/size', modes);
|
|
23
|
+
const borderColor = getVariableByName('avatar/border/color', modes);
|
|
24
|
+
const paddingLeft = getVariableByName('avatarGroup/padding/left', modes);
|
|
25
|
+
const paddingRight = getVariableByName('avatarGroup/padding/right', modes);
|
|
26
|
+
const paddingTop = getVariableByName('avatarGroup/padding/top', modes);
|
|
27
|
+
const paddingBottom = getVariableByName('avatarGroup/padding/bottom', modes);
|
|
25
28
|
const validChildren = flattenChildren(children);
|
|
26
29
|
const totalChildren = validChildren.length;
|
|
27
30
|
|
|
@@ -41,7 +44,11 @@ function AvatarGroup({
|
|
|
41
44
|
y: r
|
|
42
45
|
};
|
|
43
46
|
|
|
44
|
-
// Native
|
|
47
|
+
// Native mask path: the full avatar square MINUS a circular hole where the
|
|
48
|
+
// next (overlapping) avatar sits. Drawn as a single `evenodd` path so the
|
|
49
|
+
// hole is cut out of the square. Filled WHITE because react-native-svg's
|
|
50
|
+
// `<Mask>` is a *luminance* mask (white = visible, black/absent = hidden) —
|
|
51
|
+
// the inverse of the old `@react-native-masked-view` alpha convention.
|
|
45
52
|
const rectPath = `M 0 0 h ${avatarSizeInt} v ${avatarSizeInt} h -${avatarSizeInt} z`;
|
|
46
53
|
const circlePath = `M ${holeCenter.x},${holeCenter.y} m -${holeRadius},0 a ${holeRadius},${holeRadius} 0 1,0 ${holeRadius * 2},0 a ${holeRadius},${holeRadius} 0 1,0 -${holeRadius * 2},0`;
|
|
47
54
|
const maskPath = `${rectPath} ${circlePath}`;
|
|
@@ -99,25 +106,40 @@ function AvatarGroup({
|
|
|
99
106
|
}, index);
|
|
100
107
|
}
|
|
101
108
|
|
|
102
|
-
// Native
|
|
109
|
+
// Native: mask the avatar with react-native-svg instead of the
|
|
110
|
+
// unmaintained `@react-native-masked-view/masked-view`, whose
|
|
111
|
+
// legacy `requireNativeComponent('RNCMaskedView')` resolves to a
|
|
112
|
+
// plain object (crashing "Element type is invalid") under the New
|
|
113
|
+
// Architecture interop. react-native-svg ships a Fabric/codegen
|
|
114
|
+
// `<Mask>` + `<ForeignObject>` that resolves on both architectures;
|
|
115
|
+
// the avatar is hosted inside the `<ForeignObject>` and revealed
|
|
116
|
+
// through the luminance mask.
|
|
117
|
+
const maskId = `${maskBaseId}-${index}`;
|
|
103
118
|
return /*#__PURE__*/_jsx(View, {
|
|
104
119
|
style: wrapperStyle,
|
|
105
|
-
children: /*#__PURE__*/
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
120
|
+
children: /*#__PURE__*/_jsxs(Svg, {
|
|
121
|
+
height: "100%",
|
|
122
|
+
width: "100%",
|
|
123
|
+
viewBox: `0 0 ${avatarSizeInt} ${avatarSizeInt}`,
|
|
124
|
+
children: [/*#__PURE__*/_jsx(Defs, {
|
|
125
|
+
children: /*#__PURE__*/_jsx(Mask, {
|
|
126
|
+
id: maskId,
|
|
127
|
+
maskUnits: "userSpaceOnUse",
|
|
128
|
+
maskContentUnits: "userSpaceOnUse",
|
|
129
|
+
children: /*#__PURE__*/_jsx(Path, {
|
|
130
|
+
d: maskPath,
|
|
131
|
+
fill: "white",
|
|
132
|
+
fillRule: "evenodd"
|
|
133
|
+
})
|
|
118
134
|
})
|
|
119
|
-
}),
|
|
120
|
-
|
|
135
|
+
}), /*#__PURE__*/_jsx(ForeignObject, {
|
|
136
|
+
x: "0",
|
|
137
|
+
y: "0",
|
|
138
|
+
width: avatarSizeInt,
|
|
139
|
+
height: avatarSizeInt,
|
|
140
|
+
mask: `url(#${maskId})`,
|
|
141
|
+
children: clonedChild
|
|
142
|
+
})]
|
|
121
143
|
})
|
|
122
144
|
}, index);
|
|
123
145
|
})
|
|
@@ -29,20 +29,20 @@ function Badge({
|
|
|
29
29
|
// Resolve token values (fall back to sensible defaults). The glass type
|
|
30
30
|
// swaps the solid fill for a translucent overlay + white label, matching the
|
|
31
31
|
// Figma `badge/glass/*` tokens.
|
|
32
|
-
const backgroundColor = getVariableByName('badge/color/background', modes)
|
|
33
|
-
const glassBackground = getVariableByName('badge/glass/color/background', modes)
|
|
34
|
-
const glassLabelColor = getVariableByName('badge/glass/color/label', modes)
|
|
35
|
-
const labelColor = isGlass ? glassLabelColor : getVariableByName('badge/color/label', modes)
|
|
36
|
-
const fontSize = Number(getVariableByName('badge/label/fontSize', modes))
|
|
37
|
-
const fontFamily = getVariableByName('badge/fontFamily', modes)
|
|
38
|
-
const fontWeight = getVariableByName('badge/label/fontWeight', modes)
|
|
39
|
-
const paddingHorizontal = Number(getVariableByName('badge/padding/horizontal', modes))
|
|
40
|
-
const paddingVertical = Number(getVariableByName('badge/padding/vertical', modes))
|
|
41
|
-
const borderRadius = Number(getVariableByName('badge/radius', modes))
|
|
42
|
-
const lineHeight = Number(getVariableByName('badge/label/lineHeight', modes))
|
|
32
|
+
const backgroundColor = getVariableByName('badge/color/background', modes);
|
|
33
|
+
const glassBackground = getVariableByName('badge/glass/color/background', modes);
|
|
34
|
+
const glassLabelColor = getVariableByName('badge/glass/color/label', modes);
|
|
35
|
+
const labelColor = isGlass ? glassLabelColor : getVariableByName('badge/color/label', modes);
|
|
36
|
+
const fontSize = Number(getVariableByName('badge/label/fontSize', modes));
|
|
37
|
+
const fontFamily = getVariableByName('badge/fontFamily', modes);
|
|
38
|
+
const fontWeight = getVariableByName('badge/label/fontWeight', modes);
|
|
39
|
+
const paddingHorizontal = Number(getVariableByName('badge/padding/horizontal', modes));
|
|
40
|
+
const paddingVertical = Number(getVariableByName('badge/padding/vertical', modes));
|
|
41
|
+
const borderRadius = Number(getVariableByName('badge/radius', modes));
|
|
42
|
+
const lineHeight = Number(getVariableByName('badge/label/lineHeight', modes));
|
|
43
43
|
// Figma `blur/minimal` (px radius) -> GlassFill's 0–100 intensity scale, the
|
|
44
44
|
// same 1:1 mapping the merchandising card footer uses.
|
|
45
|
-
const blurIntensity = Math.max(0, Math.min(100, Math.round(Number(getVariableByName('blur/minimal', modes))
|
|
45
|
+
const blurIntensity = Math.max(0, Math.min(100, Math.round(Number(getVariableByName('blur/minimal', modes)))));
|
|
46
46
|
|
|
47
47
|
// Skeleton short-circuit. Size derived from the same tokens the loaded
|
|
48
48
|
// badge would use so the placeholder occupies the same box.
|
|
@@ -9,6 +9,9 @@ import Text from '../Text/Text';
|
|
|
9
9
|
import ListItem from '../ListItem/ListItem';
|
|
10
10
|
import Divider from '../Divider/Divider';
|
|
11
11
|
import Button from '../Button/Button';
|
|
12
|
+
import Nudge from '../Nudge/Nudge';
|
|
13
|
+
import Avatar from '../Avatar/Avatar';
|
|
14
|
+
import TextSegment from '../TextSegment/TextSegment';
|
|
12
15
|
|
|
13
16
|
/**
|
|
14
17
|
* A single benefit row rendered with the shared `ListItem` primitive: a
|
|
@@ -38,8 +41,11 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
38
41
|
function BenefitCard({
|
|
39
42
|
headerTitle = 'You will earn',
|
|
40
43
|
headerItem,
|
|
44
|
+
headerItems,
|
|
45
|
+
header,
|
|
41
46
|
showHeader = true,
|
|
42
|
-
bodyTitle
|
|
47
|
+
bodyTitle,
|
|
48
|
+
bodyHeader,
|
|
43
49
|
items,
|
|
44
50
|
children,
|
|
45
51
|
buttonLabel = 'Upgrade',
|
|
@@ -54,11 +60,16 @@ function BenefitCard({
|
|
|
54
60
|
}) {
|
|
55
61
|
const tokens = useMemo(() => resolveTokens(modes), [modes]);
|
|
56
62
|
|
|
57
|
-
//
|
|
58
|
-
|
|
63
|
+
// Component-level modes. `List Item Style: Minimal` and `Nudge padding: None`
|
|
64
|
+
// are BenefitCard's own defaults: they live on the card and cascade down into
|
|
65
|
+
// every child (the list-wrap rows and the upsell nudge) rather than being
|
|
66
|
+
// threaded onto each individual item. Consumer `modes` always win.
|
|
67
|
+
const cascadeModes = useMemo(() => ({
|
|
59
68
|
'List Item Style': 'Minimal',
|
|
69
|
+
'Nudge padding': 'None',
|
|
60
70
|
...modes
|
|
61
71
|
}), [modes]);
|
|
72
|
+
// Sub-element modes layer their own specifics on top of the consumer modes.
|
|
62
73
|
const iconModes = useMemo(() => ({
|
|
63
74
|
AppearanceBrand: 'Secondary',
|
|
64
75
|
...modes
|
|
@@ -72,6 +83,13 @@ function BenefitCard({
|
|
|
72
83
|
'Button / Size': 'S',
|
|
73
84
|
...modes
|
|
74
85
|
}), [modes]);
|
|
86
|
+
// The upsell nudge keeps a white/transparent background (`AppearanceBrand:
|
|
87
|
+
// Neutral` → `nudge/background: #ffffff`); its `Nudge padding: None` cascades
|
|
88
|
+
// in from `cascadeModes` so it sits flush with the card.
|
|
89
|
+
const nudgeModes = useMemo(() => ({
|
|
90
|
+
AppearanceBrand: 'Neutral',
|
|
91
|
+
...cascadeModes
|
|
92
|
+
}), [cascadeModes]);
|
|
75
93
|
const renderItem = (item, key) => {
|
|
76
94
|
const leading = item.leading ?? (item.icon != null ? /*#__PURE__*/_jsx(Icon, {
|
|
77
95
|
iconName: item.icon,
|
|
@@ -89,23 +107,60 @@ function BenefitCard({
|
|
|
89
107
|
title: item.title,
|
|
90
108
|
leading: leading,
|
|
91
109
|
trailing: trailing,
|
|
92
|
-
onPress: item.onPress
|
|
93
|
-
modes: listItemModes
|
|
110
|
+
onPress: item.onPress
|
|
94
111
|
}, key);
|
|
95
112
|
};
|
|
96
|
-
|
|
113
|
+
|
|
114
|
+
// Header "list wrap" — slot-based. Precedence: `header` slot > `headerItems`
|
|
115
|
+
// array > legacy single `headerItem` > Figma default rows. The component-level
|
|
116
|
+
// `cascadeModes` are pushed into the whole group at once, so individual rows
|
|
117
|
+
// never carry their own list-item modes.
|
|
118
|
+
const headerListSource = header ? header : (headerItems ?? (headerItem ? [headerItem] : DEFAULT_HEADER_ITEMS)).map((item, index) => renderItem(item, `header-${index}`));
|
|
119
|
+
const headerListNodes = cloneChildrenWithModes(headerListSource, cascadeModes);
|
|
120
|
+
const headerNode = showHeader ? /*#__PURE__*/_jsxs(View, {
|
|
97
121
|
style: styles.section,
|
|
98
122
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
99
123
|
style: styles.cardHeader,
|
|
100
124
|
children: [headerTitle != null ? /*#__PURE__*/_jsx(RNText, {
|
|
101
125
|
style: tokens.title,
|
|
102
126
|
children: headerTitle
|
|
103
|
-
}) : null,
|
|
127
|
+
}) : null, /*#__PURE__*/_jsx(View, {
|
|
128
|
+
style: tokens.listWrap,
|
|
129
|
+
children: headerListNodes
|
|
130
|
+
})]
|
|
104
131
|
}), /*#__PURE__*/_jsx(Divider, {
|
|
105
132
|
modes: modes
|
|
106
133
|
})]
|
|
107
134
|
}) : null;
|
|
108
|
-
|
|
135
|
+
|
|
136
|
+
// Body "header" slot (between the divider and the body list). Precedence:
|
|
137
|
+
// explicit `bodyHeader` slot > legacy `bodyTitle` text > Figma upsell nudge.
|
|
138
|
+
const bodyHeaderNode = bodyHeader === null || bodyHeader === false ? null : bodyHeader !== undefined ? renderSlot(bodyHeader, cascadeModes) : bodyTitle != null ? /*#__PURE__*/_jsx(RNText, {
|
|
139
|
+
style: tokens.title,
|
|
140
|
+
children: bodyTitle
|
|
141
|
+
}) : /*#__PURE__*/_jsx(Nudge, {
|
|
142
|
+
type: "inline-compact",
|
|
143
|
+
modes: {
|
|
144
|
+
...nudgeModes,
|
|
145
|
+
...cascadeModes
|
|
146
|
+
},
|
|
147
|
+
startSlot: DEFAULT_UPSELL_AVATAR,
|
|
148
|
+
children: /*#__PURE__*/_jsx(TextSegment, {
|
|
149
|
+
modes: cascadeModes,
|
|
150
|
+
segments: [{
|
|
151
|
+
text: 'Upgrade to '
|
|
152
|
+
}, {
|
|
153
|
+
text: 'JioFinance+',
|
|
154
|
+
modes: {
|
|
155
|
+
'Text Appearance': 'Primary'
|
|
156
|
+
}
|
|
157
|
+
}, {
|
|
158
|
+
text: ' and earn more'
|
|
159
|
+
}]
|
|
160
|
+
})
|
|
161
|
+
});
|
|
162
|
+
const bodyListSource = children ? children : (items ?? DEFAULT_ITEMS).map((item, index) => renderItem(item, index));
|
|
163
|
+
const bodyList = cloneChildrenWithModes(bodyListSource, cascadeModes);
|
|
109
164
|
const ctaNode = button ?? /*#__PURE__*/_jsx(Button, {
|
|
110
165
|
label: buttonLabel,
|
|
111
166
|
modes: ctaModes,
|
|
@@ -116,15 +171,9 @@ function BenefitCard({
|
|
|
116
171
|
width
|
|
117
172
|
}), [tokens.container, width]);
|
|
118
173
|
const content = /*#__PURE__*/_jsxs(_Fragment, {
|
|
119
|
-
children: [headerNode, /*#__PURE__*/
|
|
120
|
-
style: tokens.
|
|
121
|
-
children:
|
|
122
|
-
style: tokens.title,
|
|
123
|
-
children: bodyTitle
|
|
124
|
-
}) : null, /*#__PURE__*/_jsx(View, {
|
|
125
|
-
style: tokens.listWrap,
|
|
126
|
-
children: bodyList
|
|
127
|
-
})]
|
|
174
|
+
children: [headerNode, bodyHeaderNode, /*#__PURE__*/_jsx(View, {
|
|
175
|
+
style: tokens.listWrap,
|
|
176
|
+
children: bodyList
|
|
128
177
|
}), showButton ? ctaNode : null]
|
|
129
178
|
});
|
|
130
179
|
if (onPress) {
|
|
@@ -183,10 +232,6 @@ function resolveTokens(modes) {
|
|
|
183
232
|
flexDirection: 'column',
|
|
184
233
|
alignItems: 'flex-start'
|
|
185
234
|
},
|
|
186
|
-
body: {
|
|
187
|
-
alignSelf: 'stretch',
|
|
188
|
-
gap
|
|
189
|
-
},
|
|
190
235
|
listWrap: {
|
|
191
236
|
alignSelf: 'stretch',
|
|
192
237
|
gap
|
|
@@ -202,6 +247,26 @@ function resolveTokens(modes) {
|
|
|
202
247
|
}
|
|
203
248
|
};
|
|
204
249
|
}
|
|
250
|
+
|
|
251
|
+
// Cascades `modes` into a slot node and unwraps a single child so the slot can
|
|
252
|
+
// be rendered inline without an extra fragment.
|
|
253
|
+
function renderSlot(node, modes) {
|
|
254
|
+
const processed = cloneChildrenWithModes(node, modes);
|
|
255
|
+
return processed.length === 1 ? processed[0] : processed;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Figma reference rows for the header list wrap (two highlighted "JioPoints"
|
|
259
|
+
// rows). Used only when no `header` slot / `headerItems` / legacy `headerItem`
|
|
260
|
+
// is supplied.
|
|
261
|
+
const DEFAULT_HEADER_ITEMS = [{
|
|
262
|
+
icon: 'ic_jewellery_diamond',
|
|
263
|
+
title: 'JioPoints',
|
|
264
|
+
trailingText: 'Up to 2000 pts'
|
|
265
|
+
}, {
|
|
266
|
+
icon: 'ic_jewellery_diamond',
|
|
267
|
+
title: 'JioPoints',
|
|
268
|
+
trailingText: 'Up to 2000 pts'
|
|
269
|
+
}];
|
|
205
270
|
const DEFAULT_ITEMS = [{
|
|
206
271
|
icon: 'ic_card',
|
|
207
272
|
title: 'Up to ₹5000 cashback'
|
|
@@ -209,6 +274,15 @@ const DEFAULT_ITEMS = [{
|
|
|
209
274
|
icon: 'ic_card',
|
|
210
275
|
title: '25% extra JioPoints'
|
|
211
276
|
}];
|
|
277
|
+
|
|
278
|
+
// Start-slot avatar for the default upsell nudge. `modes` cascade in from the
|
|
279
|
+
// nudge (XS keeps it compact next to the inline message).
|
|
280
|
+
const DEFAULT_UPSELL_AVATAR = /*#__PURE__*/_jsx(Avatar, {
|
|
281
|
+
style: "Image",
|
|
282
|
+
modes: {
|
|
283
|
+
'Avatar Size': 'XS'
|
|
284
|
+
}
|
|
285
|
+
});
|
|
212
286
|
const styles = StyleSheet.create({
|
|
213
287
|
section: {
|
|
214
288
|
alignSelf: 'stretch',
|
|
@@ -37,8 +37,8 @@ function BottomNav({
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
// Resolve container styling tokens
|
|
40
|
-
const backgroundColor = getVariableByName('bottomNav/background', modes)
|
|
41
|
-
const borderColor = getVariableByName('bottomNav/border/color', modes)
|
|
40
|
+
const backgroundColor = getVariableByName('bottomNav/background', modes);
|
|
41
|
+
const borderColor = getVariableByName('bottomNav/border/color', modes);
|
|
42
42
|
const borderWidth = getVariableByName('bottomNav/border/width', modes) ?? 1;
|
|
43
43
|
const paddingTop = getVariableByName('bottomNav/padding/top', modes) ?? 10;
|
|
44
44
|
const paddingBottom = getVariableByName('bottomNav/padding/bottom', modes) ?? 23;
|
|
@@ -23,13 +23,13 @@ const focusOverlayStyle = {
|
|
|
23
23
|
};
|
|
24
24
|
function resolveBottomNavItemTokens(modes, disabled, iconColorOverride, iconSizeOverride) {
|
|
25
25
|
const gap = getVariableByName('bottomNavItem/gap', modes) ?? 6;
|
|
26
|
-
const fontFamily = getVariableByName('bottomNavItem/fontFamily', modes)
|
|
26
|
+
const fontFamily = getVariableByName('bottomNavItem/fontFamily', modes);
|
|
27
27
|
const fontWeightRaw = getVariableByName('bottomNavItem/fontWeight', modes) ?? 500;
|
|
28
28
|
const fontWeight = typeof fontWeightRaw === 'number' ? fontWeightRaw.toString() : fontWeightRaw;
|
|
29
29
|
const fontSize = getVariableByName('bottomNavItem/fontSize', modes) ?? 11;
|
|
30
30
|
const lineHeight = getVariableByName('bottomNavItem/lineHeight', modes) ?? 14;
|
|
31
|
-
const labelColor = getVariableByName('bottomNavItem/label/color', modes)
|
|
32
|
-
const resolvedIconColor = iconColorOverride || getVariableByName('bottomNavItem/icon/color', modes)
|
|
31
|
+
const labelColor = getVariableByName('bottomNavItem/label/color', modes);
|
|
32
|
+
const resolvedIconColor = iconColorOverride || getVariableByName('bottomNavItem/icon/color', modes);
|
|
33
33
|
const resolvedIconSize = iconSizeOverride ?? getVariableByName('bottomNavItem/icon/size', modes) ?? 24;
|
|
34
34
|
return {
|
|
35
35
|
baseContainerStyle: {
|
|
@@ -4,7 +4,7 @@ import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
|
4
4
|
import { Platform, Pressable, Text, View } from 'react-native';
|
|
5
5
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
|
|
6
6
|
import { usePressableWebSupport } from '../../utils/web-platform-utils';
|
|
7
|
-
import { EMPTY_MODES
|
|
7
|
+
import { EMPTY_MODES } from '../../utils/react-utils';
|
|
8
8
|
import Icon from '../../icons/Icon';
|
|
9
9
|
import Skeleton from '../../skeleton/Skeleton';
|
|
10
10
|
import { useSkeleton } from '../../skeleton/SkeletonGroup';
|
|
@@ -31,6 +31,17 @@ const containerLayoutStyle = {
|
|
|
31
31
|
justifyContent: 'center'
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
+
// Keeps the label on a single line. `flexShrink: 0` stops a tight flex parent
|
|
35
|
+
// from squeezing the text; on web `whiteSpace: 'nowrap'` is what actually
|
|
36
|
+
// prevents the line break (a bare `numberOfLines` line-clamp still allows the
|
|
37
|
+
// text to wrap inside a width-constrained pill in react-native-web).
|
|
38
|
+
const NO_WRAP_LABEL_STYLE = {
|
|
39
|
+
flexShrink: 0,
|
|
40
|
+
...(IS_WEB ? {
|
|
41
|
+
whiteSpace: 'nowrap'
|
|
42
|
+
} : {})
|
|
43
|
+
};
|
|
44
|
+
|
|
34
45
|
// ---------------------------------------------------------------------------
|
|
35
46
|
// Token resolution
|
|
36
47
|
// ---------------------------------------------------------------------------
|
|
@@ -42,19 +53,19 @@ const containerLayoutStyle = {
|
|
|
42
53
|
// ---------------------------------------------------------------------------
|
|
43
54
|
|
|
44
55
|
function resolveButtonTokens(modes, disabled) {
|
|
45
|
-
const backgroundColor = getVariableByName('button/background', modes)
|
|
46
|
-
const borderColor = getVariableByName('button/border/color', modes)
|
|
56
|
+
const backgroundColor = getVariableByName('button/background', modes);
|
|
57
|
+
const borderColor = getVariableByName('button/border/color', modes);
|
|
47
58
|
const borderWidth = getVariableByName('button/border/size', modes);
|
|
48
|
-
const radius = getVariableByName('button/radius', modes)
|
|
49
|
-
const paddingHorizontal = getVariableByName('button/padding/horizontal', modes)
|
|
50
|
-
const paddingVertical = getVariableByName('button/padding/vertical', modes)
|
|
51
|
-
const gap = getVariableByName('button/gap', modes)
|
|
52
|
-
const fontFamily = getVariableByName('button/fontFamily', modes)
|
|
53
|
-
const fontWeightValue = getVariableByName('button/fontWeight', modes)
|
|
59
|
+
const radius = getVariableByName('button/radius', modes);
|
|
60
|
+
const paddingHorizontal = getVariableByName('button/padding/horizontal', modes);
|
|
61
|
+
const paddingVertical = getVariableByName('button/padding/vertical', modes);
|
|
62
|
+
const gap = getVariableByName('button/gap', modes);
|
|
63
|
+
const fontFamily = getVariableByName('button/fontFamily', modes);
|
|
64
|
+
const fontWeightValue = getVariableByName('button/fontWeight', modes);
|
|
54
65
|
const fontWeight = typeof fontWeightValue === 'number' ? fontWeightValue.toString() : fontWeightValue;
|
|
55
|
-
const lineHeight = getVariableByName('button/lineHeight', modes)
|
|
56
|
-
const fontSize = getVariableByName('button/fontSize', modes)
|
|
57
|
-
const textColor = getVariableByName('button/foreground', modes)
|
|
66
|
+
const lineHeight = getVariableByName('button/lineHeight', modes);
|
|
67
|
+
const fontSize = getVariableByName('button/fontSize', modes);
|
|
68
|
+
const textColor = getVariableByName('button/foreground', modes);
|
|
58
69
|
const iconSize = getVariableByName('button/icon/size', modes) ?? 18;
|
|
59
70
|
|
|
60
71
|
// Pressed tokens are always resolved so the Pressable `style` callback can
|
|
@@ -63,9 +74,9 @@ function resolveButtonTokens(modes, disabled) {
|
|
|
63
74
|
...modes,
|
|
64
75
|
'Button / State': 'Pressed'
|
|
65
76
|
};
|
|
66
|
-
const pressedBg = getVariableByName('button/background', pressedModes)
|
|
67
|
-
const pressedBorderColor = getVariableByName('button/border/color', pressedModes)
|
|
68
|
-
const pressedTextColor = getVariableByName('button/foreground', pressedModes)
|
|
77
|
+
const pressedBg = getVariableByName('button/background', pressedModes);
|
|
78
|
+
const pressedBorderColor = getVariableByName('button/border/color', pressedModes);
|
|
79
|
+
const pressedTextColor = getVariableByName('button/foreground', pressedModes);
|
|
69
80
|
|
|
70
81
|
// Hover tokens are only meaningful on web. Skipping them on native saves
|
|
71
82
|
// ~3 token lookups + an object spread per render on every Button.
|
|
@@ -76,9 +87,9 @@ function resolveButtonTokens(modes, disabled) {
|
|
|
76
87
|
...modes,
|
|
77
88
|
'Button / State': 'Hover'
|
|
78
89
|
};
|
|
79
|
-
const hoverBg = getVariableByName('button/background', hoverModes)
|
|
80
|
-
const hoverBorderColor = getVariableByName('button/border/color', hoverModes)
|
|
81
|
-
hoverTextColor = getVariableByName('button/foreground', hoverModes)
|
|
90
|
+
const hoverBg = getVariableByName('button/background', hoverModes);
|
|
91
|
+
const hoverBorderColor = getVariableByName('button/border/color', hoverModes);
|
|
92
|
+
hoverTextColor = getVariableByName('button/foreground', hoverModes);
|
|
82
93
|
hoverContainer = {
|
|
83
94
|
backgroundColor: hoverBg,
|
|
84
95
|
borderColor: hoverBorderColor
|
|
@@ -214,8 +225,9 @@ function ButtonImpl({
|
|
|
214
225
|
content = children;
|
|
215
226
|
} else {
|
|
216
227
|
content = /*#__PURE__*/_jsx(Text, {
|
|
217
|
-
style: activeLabelStyle,
|
|
218
|
-
|
|
228
|
+
style: [activeLabelStyle, disableTruncation ? null : NO_WRAP_LABEL_STYLE],
|
|
229
|
+
numberOfLines: disableTruncation ? undefined : 1,
|
|
230
|
+
ellipsizeMode: disableTruncation ? undefined : 'tail',
|
|
219
231
|
children: label
|
|
220
232
|
});
|
|
221
233
|
}
|
|
@@ -35,18 +35,18 @@ export function Card({
|
|
|
35
35
|
style
|
|
36
36
|
}) {
|
|
37
37
|
// Resolve Card Container Tokens
|
|
38
|
-
const backgroundColor = getVariableByName('card/background/color', modes)
|
|
39
|
-
const borderColor = getVariableByName('card/border/color', modes)
|
|
40
|
-
const borderWidth = parseFloat(getVariableByName('card/strokeWidth', modes)
|
|
41
|
-
const radius = parseFloat(getVariableByName('card/radius', modes)
|
|
42
|
-
const gap = parseFloat(getVariableByName('card/gap', modes)
|
|
43
|
-
const paddingHorizontal = parseFloat(getVariableByName('card/padding-horizontal', modes)
|
|
44
|
-
const paddingVertical = parseFloat(getVariableByName('card/padding-vertical', modes)
|
|
38
|
+
const backgroundColor = getVariableByName('card/background/color', modes);
|
|
39
|
+
const borderColor = getVariableByName('card/border/color', modes);
|
|
40
|
+
const borderWidth = parseFloat(getVariableByName('card/strokeWidth', modes)); // Ensure number
|
|
41
|
+
const radius = parseFloat(getVariableByName('card/radius', modes));
|
|
42
|
+
const gap = parseFloat(getVariableByName('card/gap', modes));
|
|
43
|
+
const paddingHorizontal = parseFloat(getVariableByName('card/padding-horizontal', modes));
|
|
44
|
+
const paddingVertical = parseFloat(getVariableByName('card/padding-vertical', modes));
|
|
45
45
|
|
|
46
46
|
// Resolve Content Wrapper Tokens
|
|
47
|
-
const contentGap = parseFloat(getVariableByName('card/content/gap', modes)
|
|
48
|
-
const contentPaddingHorizontal = parseFloat(getVariableByName('card/content/padding/horizontal', modes)
|
|
49
|
-
const contentPaddingVertical = parseFloat(getVariableByName('card/content/padding/vertical', modes)
|
|
47
|
+
const contentGap = parseFloat(getVariableByName('card/content/gap', modes));
|
|
48
|
+
const contentPaddingHorizontal = parseFloat(getVariableByName('card/content/padding/horizontal', modes));
|
|
49
|
+
const contentPaddingVertical = parseFloat(getVariableByName('card/content/padding/vertical', modes));
|
|
50
50
|
|
|
51
51
|
// Clone media to pass modes if it's a valid element, facilitating nested style resolution
|
|
52
52
|
const mediaWithModes = /*#__PURE__*/isValidElement(media) ? /*#__PURE__*/cloneElement(media, {
|
|
@@ -131,14 +131,14 @@ function Title({
|
|
|
131
131
|
}) {
|
|
132
132
|
const context = useContext(CardContext);
|
|
133
133
|
const modes = propModes || context.modes || {};
|
|
134
|
-
const color = getVariableByName('card/title/color', modes)
|
|
135
|
-
const fontSize = parseFloat(getVariableByName('card/title/fontSize', modes)
|
|
136
|
-
const fontFamily = getVariableByName('card/title/fontFamily', modes)
|
|
137
|
-
const lineHeight = parseFloat(getVariableByName('card/title/lineHeight', modes)
|
|
134
|
+
const color = getVariableByName('card/title/color', modes);
|
|
135
|
+
const fontSize = parseFloat(getVariableByName('card/title/fontSize', modes));
|
|
136
|
+
const fontFamily = getVariableByName('card/title/fontFamily', modes);
|
|
137
|
+
const lineHeight = parseFloat(getVariableByName('card/title/lineHeight', modes));
|
|
138
138
|
|
|
139
139
|
// Handling the potential typo in Figma variables "fonwWeight" vs "fontWeight"
|
|
140
140
|
// We check both keys to be safe.
|
|
141
|
-
const rawFontWeight = getVariableByName('card/title/fontWeight', modes)
|
|
141
|
+
const rawFontWeight = getVariableByName('card/title/fontWeight', modes);
|
|
142
142
|
const fontWeight = typeof rawFontWeight === 'number' ? rawFontWeight.toString() : rawFontWeight;
|
|
143
143
|
const textStyle = {
|
|
144
144
|
color,
|
|
@@ -164,11 +164,11 @@ function SupportText({
|
|
|
164
164
|
}) {
|
|
165
165
|
const context = useContext(CardContext);
|
|
166
166
|
const modes = propModes || context.modes || {};
|
|
167
|
-
const color = getVariableByName('card/supportive-text/color', modes)
|
|
168
|
-
const fontSize = parseFloat(getVariableByName('card/supportive-text/fontSize', modes)
|
|
169
|
-
const fontFamily = getVariableByName('card/supportive-text/fontFamily', modes)
|
|
170
|
-
const lineHeight = parseFloat(getVariableByName('card/supportive-text/lineHeight', modes)
|
|
171
|
-
const rawFontWeight = getVariableByName('card/supportive-text/fontWeight', modes)
|
|
167
|
+
const color = getVariableByName('card/supportive-text/color', modes);
|
|
168
|
+
const fontSize = parseFloat(getVariableByName('card/supportive-text/fontSize', modes));
|
|
169
|
+
const fontFamily = getVariableByName('card/supportive-text/fontFamily', modes);
|
|
170
|
+
const lineHeight = parseFloat(getVariableByName('card/supportive-text/lineHeight', modes));
|
|
171
|
+
const rawFontWeight = getVariableByName('card/supportive-text/fontWeight', modes);
|
|
172
172
|
const fontWeight = typeof rawFontWeight === 'number' ? rawFontWeight.toString() : rawFontWeight;
|
|
173
173
|
const textStyle = {
|
|
174
174
|
color,
|
|
@@ -34,19 +34,19 @@ function resolveCardAdvisoryTokens(modes) {
|
|
|
34
34
|
const paddingHorizontal = toNumber(getVariableByName('cardAdvisory/padding/horizontal', modes), 0);
|
|
35
35
|
const paddingVertical = toNumber(getVariableByName('cardAdvisory/padding/vertical', modes), 0);
|
|
36
36
|
const radius = toNumber(getVariableByName('cardAdvisory/radius', modes), 0);
|
|
37
|
-
const background = getVariableByName('cardAdvisory/background', modes)
|
|
37
|
+
const background = getVariableByName('cardAdvisory/background', modes);
|
|
38
38
|
const mainContentGap = toNumber(getVariableByName('cardAdvisory/mainContent/gap', modes), 16);
|
|
39
39
|
const contentGap = toNumber(getVariableByName('cardAdvisory/content/gap', modes), 6);
|
|
40
40
|
const headerGap = toNumber(getVariableByName('cardAdvisory/header/gap', modes), 8);
|
|
41
|
-
const titleColor = getVariableByName('cardAdvisory/title/foreground', modes)
|
|
41
|
+
const titleColor = getVariableByName('cardAdvisory/title/foreground', modes);
|
|
42
42
|
const titleFontSize = toNumber(getVariableByName('cardAdvisory/title/fontSize', modes), 26);
|
|
43
|
-
const titleFontFamily = getVariableByName('cardAdvisory/title/fontFamily', modes)
|
|
43
|
+
const titleFontFamily = getVariableByName('cardAdvisory/title/fontFamily', modes);
|
|
44
44
|
const titleLineHeight = toNumber(getVariableByName('cardAdvisory/title/lineHeight', modes), 26);
|
|
45
45
|
const titleFontWeight = toFontWeight(getVariableByName('cardAdvisory/title/fontWeight', modes), '900');
|
|
46
46
|
const titleDescenderAllowance = Math.ceil(titleFontSize * 0.16);
|
|
47
|
-
const descriptionColor = getVariableByName('cardAdvisory/description/foreground', modes)
|
|
47
|
+
const descriptionColor = getVariableByName('cardAdvisory/description/foreground', modes);
|
|
48
48
|
const descriptionFontSize = toNumber(getVariableByName('cardAdvisory/description/fontSize', modes), 12);
|
|
49
|
-
const descriptionFontFamily = getVariableByName('cardAdvisory/description/fontFamily', modes)
|
|
49
|
+
const descriptionFontFamily = getVariableByName('cardAdvisory/description/fontFamily', modes);
|
|
50
50
|
const descriptionLineHeight = toNumber(getVariableByName('cardAdvisory/description/lineHeight', modes), 16);
|
|
51
51
|
const descriptionFontWeight = toFontWeight(getVariableByName('cardAdvisory/description/fontWeight', modes), '500');
|
|
52
52
|
return {
|
|
@@ -95,7 +95,7 @@ function resolveCardAdvisoryTokens(modes) {
|
|
|
95
95
|
lineHeight: descriptionLineHeight,
|
|
96
96
|
width: '100%'
|
|
97
97
|
},
|
|
98
|
-
iconColor: getVariableByName('cardAdvisory/icon/color', modes)
|
|
98
|
+
iconColor: getVariableByName('cardAdvisory/icon/color', modes),
|
|
99
99
|
iconSize: toNumber(getVariableByName('cardAdvisory/icon/size', modes), 18)
|
|
100
100
|
};
|
|
101
101
|
}
|