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
|
@@ -4,15 +4,21 @@ import {
|
|
|
4
4
|
Text,
|
|
5
5
|
Pressable,
|
|
6
6
|
StyleSheet,
|
|
7
|
-
Platform,
|
|
8
|
-
Image as RNImage,
|
|
9
7
|
type ViewStyle,
|
|
10
8
|
type TextStyle,
|
|
11
9
|
type StyleProp,
|
|
12
10
|
type ImageSourcePropType,
|
|
13
11
|
} from 'react-native'
|
|
14
|
-
import
|
|
15
|
-
|
|
12
|
+
import Svg, {
|
|
13
|
+
Defs,
|
|
14
|
+
LinearGradient,
|
|
15
|
+
Stop,
|
|
16
|
+
Rect,
|
|
17
|
+
Mask,
|
|
18
|
+
Filter,
|
|
19
|
+
FeGaussianBlur,
|
|
20
|
+
Image as SvgImage,
|
|
21
|
+
} from 'react-native-svg'
|
|
16
22
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
17
23
|
import { EMPTY_MODES, resolveTruncation } from '../../utils/react-utils'
|
|
18
24
|
import Avatar from '../Avatar/Avatar'
|
|
@@ -138,7 +144,9 @@ function ProductMerchandisingCard({
|
|
|
138
144
|
const rawId = useId()
|
|
139
145
|
const safeId = rawId.replace(/[^a-zA-Z0-9_-]/g, '')
|
|
140
146
|
const scrimId = `pmc-footer-scrim-${safeId}`
|
|
147
|
+
const blurGradientId = `pmc-footer-blurgrad-${safeId}`
|
|
141
148
|
const blurMaskId = `pmc-footer-blurmask-${safeId}`
|
|
149
|
+
const blurFilterId = `pmc-footer-blurfilter-${safeId}`
|
|
142
150
|
|
|
143
151
|
const normalizedImageSource = useMemo(() => normalizeImageSource(imageSource), [imageSource])
|
|
144
152
|
|
|
@@ -234,41 +242,65 @@ function ProductMerchandisingCard({
|
|
|
234
242
|
|
|
235
243
|
<View style={tokens.footer} pointerEvents="box-none">
|
|
236
244
|
{/* Progressive blur — clear at the top of the footer, ramping to
|
|
237
|
-
a soft blur at the bottom.
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
245
|
+
a soft blur at the bottom. We reveal a *blurred copy of the
|
|
246
|
+
card's own image* through a vertical gradient mask, rendered
|
|
247
|
+
entirely with `react-native-svg` (a Fabric/codegen-correct
|
|
248
|
+
native module that resolves on both the Old and New
|
|
249
|
+
architectures). The SVG `<Image>` is blurred by an
|
|
250
|
+
`<FeGaussianBlur>` filter (identical, resolution-independent
|
|
251
|
+
Gaussian on iOS, Android AND web) and revealed by a luminance
|
|
252
|
+
`<Mask>` fed a vertical gradient, so the blur swells in
|
|
253
|
+
smoothly toward the bottom. This deliberately avoids the
|
|
254
|
+
unmaintained `@react-native-masked-view/masked-view` (a legacy
|
|
255
|
+
Paper component that resolves to a plain object — and crashes
|
|
256
|
+
"Element type is invalid" — under the New Architecture interop)
|
|
257
|
+
and the flaky native `BlurView`. Because the mask is fully
|
|
258
|
+
transparent at the top, any minor crop mismatch between this
|
|
259
|
+
cover-fitted copy and the full-bleed background is invisible:
|
|
260
|
+
where they could differ, the blurred layer isn't drawn. */}
|
|
247
261
|
{normalizedImageSource != null ? (
|
|
248
262
|
<View style={StyleSheet.absoluteFill} pointerEvents="none">
|
|
249
|
-
<
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
</
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
263
|
+
<Svg width="100%" height="100%">
|
|
264
|
+
<Defs>
|
|
265
|
+
<Filter
|
|
266
|
+
id={blurFilterId}
|
|
267
|
+
x="-15%"
|
|
268
|
+
y="-15%"
|
|
269
|
+
width="130%"
|
|
270
|
+
height="130%"
|
|
271
|
+
>
|
|
272
|
+
<FeGaussianBlur
|
|
273
|
+
stdDeviation={tokens.imageBlurStdDeviation}
|
|
274
|
+
edgeMode="duplicate"
|
|
275
|
+
/>
|
|
276
|
+
</Filter>
|
|
277
|
+
<LinearGradient id={blurGradientId} x1="0" y1="0" x2="0" y2="1">
|
|
278
|
+
<Stop offset="0" stopColor="#ffffff" stopOpacity={0} />
|
|
279
|
+
<Stop offset="0.35" stopColor="#ffffff" stopOpacity={0.5} />
|
|
280
|
+
<Stop offset="0.7" stopColor="#ffffff" stopOpacity={0.92} />
|
|
281
|
+
<Stop offset="1" stopColor="#ffffff" stopOpacity={1} />
|
|
282
|
+
</LinearGradient>
|
|
283
|
+
<Mask id={blurMaskId}>
|
|
284
|
+
<Rect
|
|
285
|
+
x="0"
|
|
286
|
+
y="0"
|
|
287
|
+
width="100%"
|
|
288
|
+
height="100%"
|
|
289
|
+
fill={`url(#${blurGradientId})`}
|
|
290
|
+
/>
|
|
291
|
+
</Mask>
|
|
292
|
+
</Defs>
|
|
293
|
+
<SvgImage
|
|
294
|
+
href={normalizedImageSource as any}
|
|
295
|
+
x="0"
|
|
296
|
+
y="0"
|
|
297
|
+
width="100%"
|
|
298
|
+
height="100%"
|
|
299
|
+
preserveAspectRatio="xMidYMid slice"
|
|
300
|
+
filter={`url(#${blurFilterId})`}
|
|
301
|
+
mask={`url(#${blurMaskId})`}
|
|
270
302
|
/>
|
|
271
|
-
</
|
|
303
|
+
</Svg>
|
|
272
304
|
</View>
|
|
273
305
|
) : (
|
|
274
306
|
<GlassFill tint="dark" intensity={tokens.blurIntensity} progressive />
|
|
@@ -348,7 +380,7 @@ const SPECIAL_BADGE_INTENSITY = 17 // ~5px CSS blur / ~2 native blurAmount
|
|
|
348
380
|
interface ResolvedTokens {
|
|
349
381
|
radius: number
|
|
350
382
|
blurIntensity: number
|
|
351
|
-
|
|
383
|
+
imageBlurStdDeviation: number
|
|
352
384
|
header: ViewStyle
|
|
353
385
|
footer: ViewStyle
|
|
354
386
|
textWrap: ViewStyle
|
|
@@ -394,20 +426,17 @@ function resolveTokens(modes: Modes): ResolvedTokens {
|
|
|
394
426
|
const sbFamily = asStr(getVariableByName('productMerchandisingcard/specialbadge/text/fontfamily', modes), 'JioType Var')
|
|
395
427
|
const sbWeight = asStr(getVariableByName('productMerchandisingcard/specialbadge/text/fontweight', modes), '500')
|
|
396
428
|
|
|
397
|
-
//
|
|
398
|
-
//
|
|
399
|
-
//
|
|
400
|
-
// "
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
android: Math.max(12, Math.round(blurRadius * 0.95)),
|
|
404
|
-
default: Math.max(8, Math.round(blurRadius * 0.6)),
|
|
405
|
-
}) as number
|
|
429
|
+
// SVG `<FeGaussianBlur stdDeviation>` is resolution-independent and renders
|
|
430
|
+
// an identical Gaussian on iOS, Android and web — so unlike the old
|
|
431
|
+
// `Image.blurRadius` path it needs no per-platform tuning. `stdDeviation` is
|
|
432
|
+
// roughly half a perceptual "blur radius", so we scale the `blur/minimal`
|
|
433
|
+
// token down to land on the same subtle frosted strength as the design.
|
|
434
|
+
const imageBlurStdDeviation = Math.max(4, Math.round(blurRadius * 0.35))
|
|
406
435
|
|
|
407
436
|
return {
|
|
408
437
|
radius,
|
|
409
438
|
blurIntensity: Math.max(0, Math.min(100, Math.round(blurRadius * BLUR_INTENSITY_FACTOR))),
|
|
410
|
-
|
|
439
|
+
imageBlurStdDeviation,
|
|
411
440
|
header: {
|
|
412
441
|
flexDirection: 'row',
|
|
413
442
|
alignItems: 'flex-start',
|
|
@@ -62,9 +62,9 @@ function ProgressBadge({
|
|
|
62
62
|
}: ProgressBadgeProps) {
|
|
63
63
|
// Resolve layout tokens
|
|
64
64
|
const backgroundColor =
|
|
65
|
-
getVariableByName('progressBadge/background', modes)
|
|
65
|
+
getVariableByName('progressBadge/background', modes)
|
|
66
66
|
const progressColor =
|
|
67
|
-
getVariableByName('progressBadge/progress/color', modes)
|
|
67
|
+
getVariableByName('progressBadge/progress/color', modes)
|
|
68
68
|
const gap = getVariableByName('progressBadge/gap', modes) ?? 12
|
|
69
69
|
const paddingHorizontal =
|
|
70
70
|
getVariableByName('progressBadge/padding/horizontal', modes) ?? 16
|
|
@@ -76,7 +76,7 @@ function ProgressBadge({
|
|
|
76
76
|
|
|
77
77
|
// Resolve typography tokens
|
|
78
78
|
const fontFamily =
|
|
79
|
-
getVariableByName('progressBadge/fontFamily', modes)
|
|
79
|
+
getVariableByName('progressBadge/fontFamily', modes)
|
|
80
80
|
const fontWeightRaw = getVariableByName('progressBadge/fontWeight', modes) ?? 500
|
|
81
81
|
const fontWeight =
|
|
82
82
|
typeof fontWeightRaw === 'number'
|
|
@@ -85,11 +85,11 @@ function ProgressBadge({
|
|
|
85
85
|
const fontSize = getVariableByName('progressBadge/fontSize', modes) ?? 14
|
|
86
86
|
const lineHeight = getVariableByName('progressBadge/lineHeight', modes) ?? 17
|
|
87
87
|
const textColor =
|
|
88
|
-
getVariableByName('progressBadge/foreground', modes)
|
|
88
|
+
getVariableByName('progressBadge/foreground', modes)
|
|
89
89
|
|
|
90
90
|
// Resolve icon tokens
|
|
91
91
|
const iconColor =
|
|
92
|
-
getVariableByName('progressBadge/icon/color', modes)
|
|
92
|
+
getVariableByName('progressBadge/icon/color', modes)
|
|
93
93
|
const iconSize = getVariableByName('progressBadge/icon/size', modes) ?? 18
|
|
94
94
|
|
|
95
95
|
const containerStyle: ViewStyle = {
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
Pressable,
|
|
4
4
|
View,
|
|
5
5
|
StyleSheet,
|
|
6
|
-
Platform,
|
|
7
6
|
ViewStyle,
|
|
8
7
|
DimensionValue,
|
|
9
8
|
StyleProp,
|
|
10
9
|
} from 'react-native'
|
|
11
10
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
12
11
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
12
|
+
import { boxShadow } from '../../utils/shadow'
|
|
13
13
|
import type { Modes } from '../../design-tokens'
|
|
14
14
|
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
@@ -61,9 +61,9 @@ export const Radio = forwardRef<View, RadioProps>(function Radio({
|
|
|
61
61
|
const [pressed, setPressed] = useState(false)
|
|
62
62
|
|
|
63
63
|
// ---- Dimensions ----
|
|
64
|
-
const widthStr = getVariableByName('radio/width', modes)
|
|
65
|
-
const heightStr = getVariableByName('radio/height', modes)
|
|
66
|
-
const selectorSizeStr = getVariableByName('radio/selector/size', modes)
|
|
64
|
+
const widthStr = getVariableByName('radio/width', modes)
|
|
65
|
+
const heightStr = getVariableByName('radio/height', modes)
|
|
66
|
+
const selectorSizeStr = getVariableByName('radio/selector/size', modes)
|
|
67
67
|
|
|
68
68
|
const width = parseFloat(widthStr?.toString() || '18')
|
|
69
69
|
const height = parseFloat(heightStr?.toString() || '18')
|
|
@@ -101,7 +101,7 @@ export const Radio = forwardRef<View, RadioProps>(function Radio({
|
|
|
101
101
|
// ---- Colors & Border ----
|
|
102
102
|
|
|
103
103
|
const resolveColor = (path: string, fallback: string) => {
|
|
104
|
-
return getVariableByName(path, modes)
|
|
104
|
+
return getVariableByName(path, modes)
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
// Background Color
|
|
@@ -155,10 +155,9 @@ export const Radio = forwardRef<View, RadioProps>(function Radio({
|
|
|
155
155
|
backgroundColor,
|
|
156
156
|
justifyContent: 'center',
|
|
157
157
|
alignItems: 'center',
|
|
158
|
-
//
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
} : {}),
|
|
158
|
+
// Focus/selected glow ring. Rendered via the unified boxShadow helper
|
|
159
|
+
// so it works on web + RN 0.76+ and degrades gracefully on older RN.
|
|
160
|
+
...(shadowSize > 0 ? boxShadow(`0px 0px 0px ${shadowSize}px ${shadowColor}`) : {}),
|
|
162
161
|
}
|
|
163
162
|
|
|
164
163
|
const selectorStyle: ViewStyle = {
|
|
@@ -83,47 +83,47 @@ export default function RechargeCard({
|
|
|
83
83
|
style,
|
|
84
84
|
}: RechargeCardProps) {
|
|
85
85
|
// Container Tokens (defaults mirror Figma node 2235:937).
|
|
86
|
-
const backgroundColor = getVariableByName('rechargeCard/background', modes)
|
|
87
|
-
const paddingHorizontal = parseInt(getVariableByName('rechargeCard/padding/horizontal', modes)
|
|
88
|
-
const paddingVertical = parseInt(getVariableByName('rechargeCard/padding/vertical', modes)
|
|
89
|
-
const gap = parseInt(getVariableByName('rechargeCard/gap', modes)
|
|
90
|
-
const radius = parseInt(getVariableByName('rechargeCard/radius', modes)
|
|
91
|
-
const minWidth = parseInt(getVariableByName('rechargeCard/minWidth', modes)
|
|
92
|
-
const strokeWidth = parseInt(getVariableByName('rechargeCard/strokeWidth', modes)
|
|
93
|
-
const strokeColor = getVariableByName('rechargeCard/stroke/color', modes)
|
|
86
|
+
const backgroundColor = getVariableByName('rechargeCard/background', modes);
|
|
87
|
+
const paddingHorizontal = parseInt(getVariableByName('rechargeCard/padding/horizontal', modes), 10);
|
|
88
|
+
const paddingVertical = parseInt(getVariableByName('rechargeCard/padding/vertical', modes), 10);
|
|
89
|
+
const gap = parseInt(getVariableByName('rechargeCard/gap', modes), 10);
|
|
90
|
+
const radius = parseInt(getVariableByName('rechargeCard/radius', modes), 10);
|
|
91
|
+
const minWidth = parseInt(getVariableByName('rechargeCard/minWidth', modes), 10);
|
|
92
|
+
const strokeWidth = parseInt(getVariableByName('rechargeCard/strokeWidth', modes), 10);
|
|
93
|
+
const strokeColor = getVariableByName('rechargeCard/stroke/color', modes);
|
|
94
94
|
|
|
95
95
|
// Header Tokens
|
|
96
|
-
const headerGap = parseInt(getVariableByName('rechargeCard/header/gap', modes)
|
|
97
|
-
const titleColor = getVariableByName('rechargeCard/title/color', modes)
|
|
98
|
-
const titleFontSize = parseInt(getVariableByName('rechargeCard/title/fontSize', modes)
|
|
99
|
-
const titleFontFamily = getVariableByName('rechargeCard/title/fontFamily', modes)
|
|
100
|
-
const titleLineHeight = parseInt(getVariableByName('rechargeCard/title/lineHeight', modes)
|
|
101
|
-
const titleFontWeight = getVariableByName('rechargeCard/title/fontWeight', modes)
|
|
96
|
+
const headerGap = parseInt(getVariableByName('rechargeCard/header/gap', modes), 10);
|
|
97
|
+
const titleColor = getVariableByName('rechargeCard/title/color', modes);
|
|
98
|
+
const titleFontSize = parseInt(getVariableByName('rechargeCard/title/fontSize', modes), 10);
|
|
99
|
+
const titleFontFamily = getVariableByName('rechargeCard/title/fontFamily', modes);
|
|
100
|
+
const titleLineHeight = parseInt(getVariableByName('rechargeCard/title/lineHeight', modes), 10);
|
|
101
|
+
const titleFontWeight = getVariableByName('rechargeCard/title/fontWeight', modes);
|
|
102
102
|
|
|
103
103
|
// Specs Tokens
|
|
104
|
-
const specsGap = parseInt(getVariableByName('rechargeCard/specs/gap', modes)
|
|
105
|
-
const specItemGap = parseInt(getVariableByName('rechargeCard/specItem/gap', modes)
|
|
104
|
+
const specsGap = parseInt(getVariableByName('rechargeCard/specs/gap', modes), 10);
|
|
105
|
+
const specItemGap = parseInt(getVariableByName('rechargeCard/specItem/gap', modes), 10);
|
|
106
106
|
|
|
107
107
|
// Spec Label Tokens
|
|
108
|
-
const specLabelColor = getVariableByName('rechargeCard/specItem/label/color', modes)
|
|
109
|
-
const specLabelFontSize = parseInt(getVariableByName('rechargeCard/specItem/label/fontSize', modes)
|
|
110
|
-
const specLabelFontFamily = getVariableByName('rechargeCard/specItem/label/fontFamily', modes)
|
|
111
|
-
const specLabelLineHeight = parseInt(getVariableByName('rechargeCard/specItem/label/lineHeight', modes)
|
|
112
|
-
const specLabelFontWeight = getVariableByName('rechargeCard/specItem/label/fontWeight', modes)
|
|
108
|
+
const specLabelColor = getVariableByName('rechargeCard/specItem/label/color', modes);
|
|
109
|
+
const specLabelFontSize = parseInt(getVariableByName('rechargeCard/specItem/label/fontSize', modes), 10);
|
|
110
|
+
const specLabelFontFamily = getVariableByName('rechargeCard/specItem/label/fontFamily', modes);
|
|
111
|
+
const specLabelLineHeight = parseInt(getVariableByName('rechargeCard/specItem/label/lineHeight', modes), 10);
|
|
112
|
+
const specLabelFontWeight = getVariableByName('rechargeCard/specItem/label/fontWeight', modes);
|
|
113
113
|
|
|
114
114
|
// Spec Value Tokens
|
|
115
|
-
const specValueColor = getVariableByName('rechargeCard/specItem/value/color', modes)
|
|
116
|
-
const specValueFontSize = parseInt(getVariableByName('rechargeCard/specItem/value/fontSize', modes)
|
|
117
|
-
const specValueFontFamily = getVariableByName('rechargeCard/specItem/value/fontFamily', modes)
|
|
118
|
-
const specValueLineHeight = parseInt(getVariableByName('rechargeCard/specItem/value/lineHeight', modes)
|
|
119
|
-
const specValueFontWeight = getVariableByName('rechargeCard/specItem/value/fontWeight', modes)
|
|
115
|
+
const specValueColor = getVariableByName('rechargeCard/specItem/value/color', modes);
|
|
116
|
+
const specValueFontSize = parseInt(getVariableByName('rechargeCard/specItem/value/fontSize', modes), 10);
|
|
117
|
+
const specValueFontFamily = getVariableByName('rechargeCard/specItem/value/fontFamily', modes);
|
|
118
|
+
const specValueLineHeight = parseInt(getVariableByName('rechargeCard/specItem/value/lineHeight', modes), 10);
|
|
119
|
+
const specValueFontWeight = getVariableByName('rechargeCard/specItem/value/fontWeight', modes);
|
|
120
120
|
|
|
121
121
|
// Disclaimer Tokens
|
|
122
|
-
const disclaimerColor = getVariableByName('rechargeCard/disclaimer/color', modes)
|
|
123
|
-
const disclaimerFontSize = parseInt(getVariableByName('rechargeCard/disclaimer/fontSize', modes)
|
|
124
|
-
const disclaimerFontFamily = getVariableByName('rechargeCard/disclaimer/fontFamily', modes)
|
|
125
|
-
const disclaimerLineHeight = parseInt(getVariableByName('rechargeCard/disclaimer/lineHeight', modes)
|
|
126
|
-
const disclaimerFontWeight = getVariableByName('rechargeCard/disclaimer/fontWeight', modes)
|
|
122
|
+
const disclaimerColor = getVariableByName('rechargeCard/disclaimer/color', modes);
|
|
123
|
+
const disclaimerFontSize = parseInt(getVariableByName('rechargeCard/disclaimer/fontSize', modes), 10);
|
|
124
|
+
const disclaimerFontFamily = getVariableByName('rechargeCard/disclaimer/fontFamily', modes);
|
|
125
|
+
const disclaimerLineHeight = parseInt(getVariableByName('rechargeCard/disclaimer/lineHeight', modes), 10);
|
|
126
|
+
const disclaimerFontWeight = getVariableByName('rechargeCard/disclaimer/fontWeight', modes);
|
|
127
127
|
|
|
128
128
|
const resolveFontWeight = (weight: string | number) => typeof weight === 'number' ? weight.toString() : weight;
|
|
129
129
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useMemo } from 'react'
|
|
2
2
|
import {
|
|
3
3
|
View,
|
|
4
|
+
Text,
|
|
4
5
|
type StyleProp,
|
|
5
6
|
type ViewStyle,
|
|
6
7
|
type TextStyle,
|
|
@@ -8,7 +9,6 @@ import {
|
|
|
8
9
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
9
10
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
10
11
|
import { formatIndianNumber } from '../../utils/number-utils'
|
|
11
|
-
import Title from '../Title/Title'
|
|
12
12
|
import LinearProgress from '../LinearProgress/LinearProgress'
|
|
13
13
|
import MetricLegendItem from '../MetricLegendItem/MetricLegendItem'
|
|
14
14
|
import type { Modes } from '../../design-tokens'
|
|
@@ -40,6 +40,14 @@ export type SavingsGoalSummaryItem = {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
export type SavingsGoalSummaryProps = {
|
|
43
|
+
/**
|
|
44
|
+
* Optional caption rendered directly above the percentage value
|
|
45
|
+
* (e.g. `"Credit usage"`), matching the Figma `savingsGoalSummary/label`
|
|
46
|
+
* slot. Pass a string for token-styled text, or any `ReactNode` for full
|
|
47
|
+
* control. Omit (the default) to hide it — preserving the original
|
|
48
|
+
* value-only layout for existing callers.
|
|
49
|
+
*/
|
|
50
|
+
label?: React.ReactNode
|
|
43
51
|
/**
|
|
44
52
|
* Currency symbol (e.g. `'₹'`, `'$'`) prefixed to every legend value.
|
|
45
53
|
* Defaults to `'₹'`. The symbol is rendered as part of the formatted
|
|
@@ -82,6 +90,8 @@ export type SavingsGoalSummaryProps = {
|
|
|
82
90
|
* computed from `current` / `target` and cannot be replaced.
|
|
83
91
|
*/
|
|
84
92
|
titleStyle?: StyleProp<TextStyle>
|
|
93
|
+
/** Override styles for the `label` caption text (string labels only). */
|
|
94
|
+
labelStyle?: StyleProp<TextStyle>
|
|
85
95
|
/** Override the inner legend container styles. */
|
|
86
96
|
legendStyle?: StyleProp<ViewStyle>
|
|
87
97
|
}
|
|
@@ -122,6 +132,7 @@ const DEFAULT_TARGET: SavingsGoalSummaryItem = {
|
|
|
122
132
|
* @param {SavingsGoalSummaryProps} props
|
|
123
133
|
*/
|
|
124
134
|
function SavingsGoalSummary({
|
|
135
|
+
label,
|
|
125
136
|
currency = '₹',
|
|
126
137
|
current = DEFAULT_CURRENT,
|
|
127
138
|
target = DEFAULT_TARGET,
|
|
@@ -129,6 +140,7 @@ function SavingsGoalSummary({
|
|
|
129
140
|
modes = EMPTY_MODES,
|
|
130
141
|
style,
|
|
131
142
|
titleStyle,
|
|
143
|
+
labelStyle,
|
|
132
144
|
legendStyle,
|
|
133
145
|
}: SavingsGoalSummaryProps) {
|
|
134
146
|
// Merge caller modes on top of the defaults so callers can override
|
|
@@ -182,6 +194,66 @@ function SavingsGoalSummary({
|
|
|
182
194
|
const legendGap =
|
|
183
195
|
(getVariableByName('savingsGoalSummary/legend/gap', mergedModes) as number | null) ?? 16
|
|
184
196
|
|
|
197
|
+
// Percentage value typography — driven by the dedicated
|
|
198
|
+
// `savingsGoalSummary/value/*` tokens (Figma 29 / 900) rather than the
|
|
199
|
+
// generic `Title` tokens, so the value matches the design exactly.
|
|
200
|
+
const valueFontSize =
|
|
201
|
+
(getVariableByName('savingsGoalSummary/value/fontSize', mergedModes) as number | null) ?? 29
|
|
202
|
+
const valueFontFamily =
|
|
203
|
+
(getVariableByName('savingsGoalSummary/value/fontFamily', mergedModes) as string | null) ??
|
|
204
|
+
'JioType Var'
|
|
205
|
+
const valueRawLineHeight =
|
|
206
|
+
(getVariableByName('savingsGoalSummary/value/lineHeight', mergedModes) as number | null) ?? 29
|
|
207
|
+
// The value tokens ship with `lineHeight === fontSize` (29/29); clamp to
|
|
208
|
+
// ~1.2x so descenders never clip on native (same guard `Title` uses).
|
|
209
|
+
const valueLineHeight = Math.max(valueRawLineHeight, Math.ceil(valueFontSize * 1.2))
|
|
210
|
+
const valueFontWeight = String(
|
|
211
|
+
getVariableByName('savingsGoalSummary/value/fontWeight', mergedModes) ?? 900,
|
|
212
|
+
) as TextStyle['fontWeight']
|
|
213
|
+
const valueColor =
|
|
214
|
+
(getVariableByName('savingsGoalSummary/value/color', mergedModes) as string | null) ??
|
|
215
|
+
'#0d0d0f'
|
|
216
|
+
|
|
217
|
+
// Caption ("Credit usage") typography — `savingsGoalSummary/label/*`
|
|
218
|
+
// (Figma 12 / 400). Only rendered when a `label` is supplied.
|
|
219
|
+
const labelFontSize =
|
|
220
|
+
(getVariableByName('savingsGoalSummary/label/fontSize', mergedModes) as number | null) ?? 12
|
|
221
|
+
const labelFontFamily =
|
|
222
|
+
(getVariableByName('savingsGoalSummary/label/fontFamily', mergedModes) as string | null) ??
|
|
223
|
+
'JioType Var'
|
|
224
|
+
const labelLineHeight =
|
|
225
|
+
(getVariableByName('savingsGoalSummary/label/lineHeight', mergedModes) as number | null) ?? 16
|
|
226
|
+
const labelFontWeight = String(
|
|
227
|
+
getVariableByName('savingsGoalSummary/label/fontWeight', mergedModes) ?? 400,
|
|
228
|
+
) as TextStyle['fontWeight']
|
|
229
|
+
const labelColor =
|
|
230
|
+
(getVariableByName('savingsGoalSummary/label/color', mergedModes) as string | null) ??
|
|
231
|
+
'#0d0d0f'
|
|
232
|
+
|
|
233
|
+
const labelNode =
|
|
234
|
+
label == null || label === false ? null : typeof label === 'string' ? (
|
|
235
|
+
<Text
|
|
236
|
+
style={[
|
|
237
|
+
{
|
|
238
|
+
color: labelColor,
|
|
239
|
+
fontFamily: labelFontFamily,
|
|
240
|
+
fontSize: labelFontSize,
|
|
241
|
+
lineHeight: labelLineHeight,
|
|
242
|
+
fontWeight: labelFontWeight,
|
|
243
|
+
width: '100%',
|
|
244
|
+
},
|
|
245
|
+
labelStyle,
|
|
246
|
+
]}
|
|
247
|
+
>
|
|
248
|
+
{label}
|
|
249
|
+
</Text>
|
|
250
|
+
) : (
|
|
251
|
+
(() => {
|
|
252
|
+
const processed = cloneChildrenWithModes(label, mergedModes)
|
|
253
|
+
return processed.length === 1 ? processed[0] : processed
|
|
254
|
+
})()
|
|
255
|
+
)
|
|
256
|
+
|
|
185
257
|
const customLegend = children
|
|
186
258
|
? cloneChildrenWithModes(children, mergedModes)
|
|
187
259
|
: null
|
|
@@ -220,14 +292,32 @@ function SavingsGoalSummary({
|
|
|
220
292
|
},
|
|
221
293
|
style,
|
|
222
294
|
]}
|
|
223
|
-
accessibilityLabel={
|
|
295
|
+
accessibilityLabel={
|
|
296
|
+
typeof label === 'string'
|
|
297
|
+
? `${label}, ${percentageLabel}`
|
|
298
|
+
: `Savings goal progress, ${percentageLabel}`
|
|
299
|
+
}
|
|
224
300
|
>
|
|
225
|
-
<
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
301
|
+
<View style={HEADER_GROUP_STYLE}>
|
|
302
|
+
{labelNode}
|
|
303
|
+
<Text
|
|
304
|
+
style={[
|
|
305
|
+
{
|
|
306
|
+
color: valueColor,
|
|
307
|
+
fontFamily: valueFontFamily,
|
|
308
|
+
fontSize: valueFontSize,
|
|
309
|
+
lineHeight: valueLineHeight,
|
|
310
|
+
fontWeight: valueFontWeight,
|
|
311
|
+
width: '100%',
|
|
312
|
+
},
|
|
313
|
+
titleStyle,
|
|
314
|
+
]}
|
|
315
|
+
accessibilityElementsHidden={true}
|
|
316
|
+
importantForAccessibility="no"
|
|
317
|
+
>
|
|
318
|
+
{percentageLabel}
|
|
319
|
+
</Text>
|
|
320
|
+
</View>
|
|
231
321
|
|
|
232
322
|
<LinearProgress value={resolvedProgress} modes={mergedModes} />
|
|
233
323
|
|
|
@@ -260,11 +350,13 @@ function formatLegendValue(value: number | undefined, currency: string): string
|
|
|
260
350
|
return formatIndianNumber(value, { prefix: currency })
|
|
261
351
|
}
|
|
262
352
|
|
|
263
|
-
//
|
|
264
|
-
//
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
353
|
+
// Groups the optional caption ("Credit usage") tightly above the percentage
|
|
354
|
+
// value. The parent container owns the larger spacing to the bar via `gap`,
|
|
355
|
+
// so this only needs the small label→value gap.
|
|
356
|
+
const HEADER_GROUP_STYLE: ViewStyle = {
|
|
357
|
+
width: '100%',
|
|
358
|
+
gap: 2,
|
|
359
|
+
alignItems: 'flex-start',
|
|
268
360
|
}
|
|
269
361
|
|
|
270
362
|
export default SavingsGoalSummary
|