jfs-components 0.1.8 → 0.1.17
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 +31 -0
- package/lib/commonjs/components/Accordion/Accordion.js +2 -1
- package/lib/commonjs/components/AccordionCheckbox/AccordionCheckbox.js +4 -3
- package/lib/commonjs/components/AccountCard/AccountCard.js +4 -3
- package/lib/commonjs/components/ActionFooter/ActionFooter.js +7 -24
- package/lib/commonjs/components/ActionTile/ActionTile.js +10 -10
- package/lib/commonjs/components/AllocationComparisonChart/AllocationComparisonChart.js +9 -6
- package/lib/commonjs/components/AmountInput/AmountInput.js +3 -3
- package/lib/commonjs/components/AreaLineChart/AreaLineChart.js +13 -9
- 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 +9 -9
- package/lib/commonjs/components/Badge/Badge.js +55 -16
- 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/BrandChip/BrandChip.js +3 -3
- package/lib/commonjs/components/Button/Button.js +32 -19
- package/lib/commonjs/components/Card/Card.js +20 -20
- package/lib/commonjs/components/CardAdvisory/CardAdvisory.js +8 -7
- package/lib/commonjs/components/CardBankAccount/CardBankAccount.js +3 -2
- package/lib/commonjs/components/CardCTA/CardCTA.js +215 -45
- 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 +6 -3
- 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 +12 -8
- package/lib/commonjs/components/CircularProgressBarDoted/CircularProgressBarDoted.js +11 -10
- package/lib/commonjs/components/CircularRating/CircularRating.js +5 -4
- package/lib/commonjs/components/ClusterBubble/ClusterBubble.js +3 -2
- package/lib/commonjs/components/CompareTable/CompareTable.js +88 -59
- package/lib/commonjs/components/CoverageBarComparison/CoverageBarComparison.js +3 -2
- 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 +15 -14
- package/lib/commonjs/components/Drawer/Drawer.js +60 -60
- package/lib/commonjs/components/Dropdown/Dropdown.js +25 -25
- package/lib/commonjs/components/DropdownInput/DropdownInput.js +13 -12
- package/lib/commonjs/components/EmptyState/EmptyState.js +14 -14
- package/lib/commonjs/components/ExpandableCheckbox/ExpandableCheckbox.js +2 -1
- 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 +48 -8
- package/lib/commonjs/components/FullscreenModal/FullscreenModal.js +24 -24
- package/lib/commonjs/components/Gauge/Gauge.js +9 -9
- package/lib/commonjs/components/HoldingsCard/HoldingsCard.js +13 -12
- 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 +5 -4
- package/lib/commonjs/components/ListGroup/ListGroup.js +10 -9
- package/lib/commonjs/components/ListItem/ListItem.js +13 -12
- 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 +25 -23
- package/lib/commonjs/components/MessageField/MessageField.js +8 -8
- package/lib/commonjs/components/MetricLegendItem/MetricLegendItem.js +3 -2
- package/lib/commonjs/components/MoneyValue/MoneyValue.js +7 -7
- package/lib/commonjs/components/MonthlyStatusGrid/MonthlyStatusGrid.js +6 -3
- 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/PoweredByLabel/PoweredByLabel.js +3 -2
- package/lib/commonjs/components/ProductMerchandisingCard/ProductMerchandisingCard.js +107 -33
- package/lib/commonjs/components/ProductOverview/ProductOverview.js +4 -3
- package/lib/commonjs/components/ProgressBadge/ProgressBadge.js +7 -7
- package/lib/commonjs/components/ProjectionMarker/ProjectionMarker.js +3 -2
- 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 +27 -26
- package/lib/commonjs/components/Slider/Slider.js +3 -2
- package/lib/commonjs/components/Stack/Stack.js +86 -0
- 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 +20 -11
- package/lib/commonjs/components/SummaryTile/SummaryTile.js +3 -2
- package/lib/commonjs/components/SupportText/SupportText.js +6 -6
- package/lib/commonjs/components/SupportText/SupportTextIcon.js +2 -2
- package/lib/commonjs/components/Table/Table.js +324 -0
- package/lib/commonjs/components/Text/Text.js +15 -2
- package/lib/commonjs/components/TextInput/TextInput.js +23 -15
- package/lib/commonjs/components/TextSegment/TextSegment.js +15 -2
- package/lib/commonjs/components/ThreadHero/ThreadHero.js +21 -22
- package/lib/commonjs/components/Title/Title.js +39 -16
- package/lib/commonjs/components/Toast/Toast.js +18 -17
- 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 +15 -14
- package/lib/commonjs/components/TransactionDetails/TransactionDetails.js +10 -10
- package/lib/commonjs/components/TransactionStatus/TransactionStatus.js +12 -11
- package/lib/commonjs/components/UpiHandle/UpiHandle.js +17 -17
- package/lib/commonjs/components/index.js +58 -0
- package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/commonjs/design-tokens/figma-modes.generated.js +51 -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/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.js +11 -3
- package/lib/commonjs/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.js +8 -4
- package/lib/commonjs/utils/index.js +25 -0
- package/lib/commonjs/utils/react-utils.js +118 -0
- package/lib/commonjs/utils/shadow.js +200 -0
- package/lib/commonjs/utils/web-platform-utils.js +59 -0
- package/lib/module/components/Accordion/Accordion.js +3 -2
- package/lib/module/components/AccordionCheckbox/AccordionCheckbox.js +5 -4
- package/lib/module/components/AccountCard/AccountCard.js +5 -4
- package/lib/module/components/ActionFooter/ActionFooter.js +7 -24
- package/lib/module/components/ActionTile/ActionTile.js +10 -10
- package/lib/module/components/AllocationComparisonChart/AllocationComparisonChart.js +10 -7
- package/lib/module/components/AmountInput/AmountInput.js +3 -3
- package/lib/module/components/AreaLineChart/AreaLineChart.js +14 -10
- 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 +9 -9
- package/lib/module/components/Badge/Badge.js +57 -18
- 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/BrandChip/BrandChip.js +4 -4
- package/lib/module/components/Button/Button.js +32 -19
- package/lib/module/components/Card/Card.js +20 -20
- package/lib/module/components/CardAdvisory/CardAdvisory.js +9 -8
- package/lib/module/components/CardBankAccount/CardBankAccount.js +4 -3
- package/lib/module/components/CardCTA/CardCTA.js +216 -46
- 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 +6 -3
- 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 +13 -9
- package/lib/module/components/CircularProgressBarDoted/CircularProgressBarDoted.js +12 -11
- package/lib/module/components/CircularRating/CircularRating.js +6 -5
- package/lib/module/components/ClusterBubble/ClusterBubble.js +4 -3
- package/lib/module/components/CompareTable/CompareTable.js +89 -60
- package/lib/module/components/CoverageBarComparison/CoverageBarComparison.js +4 -3
- 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 +16 -15
- package/lib/module/components/Drawer/Drawer.js +60 -60
- package/lib/module/components/Dropdown/Dropdown.js +26 -26
- package/lib/module/components/DropdownInput/DropdownInput.js +14 -13
- package/lib/module/components/EmptyState/EmptyState.js +14 -14
- package/lib/module/components/ExpandableCheckbox/ExpandableCheckbox.js +2 -1
- 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 +51 -11
- package/lib/module/components/FullscreenModal/FullscreenModal.js +24 -24
- package/lib/module/components/Gauge/Gauge.js +9 -9
- package/lib/module/components/HoldingsCard/HoldingsCard.js +14 -13
- 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 +6 -5
- package/lib/module/components/ListGroup/ListGroup.js +11 -10
- package/lib/module/components/ListItem/ListItem.js +14 -13
- 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 +25 -23
- package/lib/module/components/MessageField/MessageField.js +8 -8
- package/lib/module/components/MetricLegendItem/MetricLegendItem.js +4 -3
- package/lib/module/components/MoneyValue/MoneyValue.js +7 -7
- package/lib/module/components/MonthlyStatusGrid/MonthlyStatusGrid.js +7 -4
- 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/PoweredByLabel/PoweredByLabel.js +4 -3
- package/lib/module/components/ProductMerchandisingCard/ProductMerchandisingCard.js +109 -35
- package/lib/module/components/ProductOverview/ProductOverview.js +5 -4
- package/lib/module/components/ProgressBadge/ProgressBadge.js +8 -8
- package/lib/module/components/ProjectionMarker/ProjectionMarker.js +4 -3
- 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 +28 -27
- package/lib/module/components/Slider/Slider.js +4 -3
- package/lib/module/components/Stack/Stack.js +81 -0
- 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 +20 -11
- package/lib/module/components/SummaryTile/SummaryTile.js +4 -3
- package/lib/module/components/SupportText/SupportText.js +6 -6
- package/lib/module/components/SupportText/SupportTextIcon.js +2 -2
- package/lib/module/components/Table/Table.js +315 -0
- package/lib/module/components/Text/Text.js +16 -3
- package/lib/module/components/TextInput/TextInput.js +23 -15
- package/lib/module/components/TextSegment/TextSegment.js +16 -3
- package/lib/module/components/ThreadHero/ThreadHero.js +22 -23
- package/lib/module/components/Title/Title.js +40 -17
- package/lib/module/components/Toast/Toast.js +19 -18
- 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 +16 -15
- package/lib/module/components/TransactionDetails/TransactionDetails.js +10 -10
- package/lib/module/components/TransactionStatus/TransactionStatus.js +13 -12
- package/lib/module/components/UpiHandle/UpiHandle.js +18 -18
- package/lib/module/components/index.js +4 -0
- package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/module/design-tokens/figma-modes.generated.js +51 -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/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.js +11 -3
- package/lib/module/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.js +8 -4
- package/lib/module/utils/index.js +2 -1
- package/lib/module/utils/react-utils.js +115 -0
- package/lib/module/utils/shadow.js +194 -0
- package/lib/module/utils/web-platform-utils.js +58 -0
- package/lib/typescript/src/components/Accordion/Accordion.d.ts +7 -1
- package/lib/typescript/src/components/AccordionCheckbox/AccordionCheckbox.d.ts +7 -1
- package/lib/typescript/src/components/AccountCard/AccountCard.d.ts +7 -1
- package/lib/typescript/src/components/AllocationComparisonChart/AllocationComparisonChart.d.ts +7 -1
- package/lib/typescript/src/components/AreaLineChart/AreaLineChart.d.ts +8 -1
- package/lib/typescript/src/components/Badge/Badge.d.ts +32 -2
- package/lib/typescript/src/components/BenefitCard/BenefitCard.d.ts +33 -4
- package/lib/typescript/src/components/BrandChip/BrandChip.d.ts +7 -1
- package/lib/typescript/src/components/Button/Button.d.ts +7 -1
- package/lib/typescript/src/components/CardAdvisory/CardAdvisory.d.ts +7 -1
- package/lib/typescript/src/components/CardBankAccount/CardBankAccount.d.ts +7 -1
- package/lib/typescript/src/components/CardCTA/CardCTA.d.ts +27 -5
- 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/CircularProgressBar/CircularProgressBar.d.ts +7 -1
- package/lib/typescript/src/components/CircularProgressBarDoted/CircularProgressBarDoted.d.ts +7 -1
- package/lib/typescript/src/components/CircularRating/CircularRating.d.ts +7 -1
- package/lib/typescript/src/components/ClusterBubble/ClusterBubble.d.ts +7 -1
- package/lib/typescript/src/components/CompareTable/CompareTable.d.ts +7 -1
- package/lib/typescript/src/components/CoverageBarComparison/CoverageBarComparison.d.ts +7 -1
- package/lib/typescript/src/components/DonutChart/DonutChart.d.ts +7 -1
- package/lib/typescript/src/components/Dropdown/Dropdown.d.ts +7 -1
- package/lib/typescript/src/components/DropdownInput/DropdownInput.d.ts +6 -0
- package/lib/typescript/src/components/ExpandableCheckbox/ExpandableCheckbox.d.ts +7 -1
- package/lib/typescript/src/components/HoldingsCard/HoldingsCard.d.ts +7 -1
- package/lib/typescript/src/components/InstitutionBadge/InstitutionBadge.d.ts +7 -1
- package/lib/typescript/src/components/ListGroup/ListGroup.d.ts +7 -1
- package/lib/typescript/src/components/ListItem/ListItem.d.ts +7 -1
- package/lib/typescript/src/components/MetricLegendItem/MetricLegendItem.d.ts +7 -1
- package/lib/typescript/src/components/MonthlyStatusGrid/MonthlyStatusGrid.d.ts +14 -2
- package/lib/typescript/src/components/PoweredByLabel/PoweredByLabel.d.ts +7 -1
- package/lib/typescript/src/components/ProductMerchandisingCard/ProductMerchandisingCard.d.ts +7 -1
- package/lib/typescript/src/components/ProductOverview/ProductOverview.d.ts +7 -1
- package/lib/typescript/src/components/ProgressBadge/ProgressBadge.d.ts +7 -1
- package/lib/typescript/src/components/ProjectionMarker/ProjectionMarker.d.ts +7 -1
- 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/Section/Section.d.ts +7 -1
- package/lib/typescript/src/components/Slider/Slider.d.ts +6 -0
- package/lib/typescript/src/components/Stack/Stack.d.ts +81 -0
- package/lib/typescript/src/components/SummaryTile/SummaryTile.d.ts +7 -1
- package/lib/typescript/src/components/Table/Table.d.ts +139 -0
- package/lib/typescript/src/components/Text/Text.d.ts +16 -1
- package/lib/typescript/src/components/TextSegment/TextSegment.d.ts +16 -1
- package/lib/typescript/src/components/ThreadHero/ThreadHero.d.ts +7 -1
- package/lib/typescript/src/components/Title/Title.d.ts +17 -1
- package/lib/typescript/src/components/Toast/Toast.d.ts +7 -1
- package/lib/typescript/src/components/TransactionBubble/TransactionBubble.d.ts +7 -1
- package/lib/typescript/src/components/TransactionStatus/TransactionStatus.d.ts +7 -1
- package/lib/typescript/src/components/UpiHandle/UpiHandle.d.ts +7 -1
- package/lib/typescript/src/components/index.d.ts +6 -2
- 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/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.d.ts +31 -3
- package/lib/typescript/src/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.d.ts +18 -2
- package/lib/typescript/src/utils/index.d.ts +2 -0
- package/lib/typescript/src/utils/react-utils.d.ts +76 -0
- package/lib/typescript/src/utils/shadow.d.ts +72 -0
- package/lib/typescript/src/utils/web-platform-utils.d.ts +36 -0
- package/package.json +2 -1
- package/src/components/Accordion/Accordion.tsx +9 -2
- package/src/components/AccordionCheckbox/AccordionCheckbox.tsx +10 -3
- package/src/components/AccountCard/AccountCard.tsx +10 -3
- package/src/components/ActionFooter/ActionFooter.tsx +8 -26
- package/src/components/ActionTile/ActionTile.tsx +10 -10
- package/src/components/AllocationComparisonChart/AllocationComparisonChart.tsx +14 -4
- package/src/components/AmountInput/AmountInput.tsx +3 -3
- package/src/components/AreaLineChart/AreaLineChart.tsx +17 -7
- package/src/components/Attached/Attached.tsx +1 -1
- package/src/components/Avatar/Avatar.tsx +10 -10
- package/src/components/AvatarGroup/AvatarGroup.tsx +9 -9
- package/src/components/Badge/Badge.tsx +86 -17
- 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/BrandChip/BrandChip.tsx +9 -3
- package/src/components/Button/Button.tsx +36 -19
- package/src/components/Card/Card.tsx +20 -20
- package/src/components/CardAdvisory/CardAdvisory.tsx +15 -8
- package/src/components/CardBankAccount/CardBankAccount.tsx +9 -2
- package/src/components/CardCTA/CardCTA.tsx +237 -64
- package/src/components/CardFeedback/CardFeedback.tsx +18 -18
- package/src/components/CardFinancialCondition/CardFinancialCondition.tsx +7 -10
- package/src/components/CardInsight/CardInsight.tsx +8 -4
- 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 +19 -9
- package/src/components/CircularProgressBarDoted/CircularProgressBarDoted.tsx +18 -11
- package/src/components/CircularRating/CircularRating.tsx +12 -5
- package/src/components/ClusterBubble/ClusterBubble.tsx +9 -2
- package/src/components/CompareTable/CompareTable.tsx +114 -66
- package/src/components/CoverageBarComparison/CoverageBarComparison.tsx +9 -2
- package/src/components/DebitCard/DebitCard.tsx +22 -22
- package/src/components/Disclaimer/Disclaimer.tsx +5 -5
- package/src/components/DonutChart/DonutChart.tsx +21 -48
- package/src/components/Drawer/Drawer.tsx +80 -71
- package/src/components/Dropdown/Dropdown.tsx +32 -30
- package/src/components/DropdownInput/DropdownInput.tsx +19 -19
- package/src/components/EmptyState/EmptyState.tsx +14 -14
- package/src/components/ExpandableCheckbox/ExpandableCheckbox.tsx +8 -1
- package/src/components/FilterBar/FilterBar.tsx +2 -2
- package/src/components/Form/Form.tsx +3 -3
- package/src/components/FormField/FormField.tsx +55 -15
- package/src/components/FullscreenModal/FullscreenModal.tsx +24 -24
- package/src/components/Gauge/Gauge.tsx +9 -9
- package/src/components/HoldingsCard/HoldingsCard.tsx +19 -12
- 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 +12 -8
- package/src/components/ListGroup/ListGroup.tsx +17 -10
- package/src/components/ListItem/ListItem.tsx +20 -13
- 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 +23 -23
- package/src/components/MessageField/MessageField.tsx +8 -16
- package/src/components/MetricLegendItem/MetricLegendItem.tsx +9 -2
- package/src/components/MoneyValue/MoneyValue.tsx +7 -7
- package/src/components/MonthlyStatusGrid/MonthlyStatusGrid.tsx +17 -2
- 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/PoweredByLabel/PoweredByLabel.tsx +9 -2
- package/src/components/ProductMerchandisingCard/ProductMerchandisingCard.tsx +104 -37
- package/src/components/ProductOverview/ProductOverview.tsx +10 -3
- package/src/components/ProgressBadge/ProgressBadge.tsx +14 -8
- package/src/components/ProjectionMarker/ProjectionMarker.tsx +9 -2
- 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 +36 -29
- package/src/components/Slider/Slider.tsx +9 -2
- package/src/components/Stack/Stack.tsx +131 -0
- 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 +20 -21
- package/src/components/SummaryTile/SummaryTile.tsx +9 -2
- package/src/components/SupportText/SupportText.tsx +6 -6
- package/src/components/SupportText/SupportTextIcon.tsx +2 -2
- package/src/components/Table/Table.tsx +449 -0
- package/src/components/Text/Text.tsx +28 -3
- package/src/components/TextInput/TextInput.tsx +21 -15
- package/src/components/TextSegment/TextSegment.tsx +27 -2
- package/src/components/ThreadHero/ThreadHero.tsx +27 -20
- package/src/components/Title/Title.tsx +50 -17
- package/src/components/Toast/Toast.tsx +24 -17
- package/src/components/Toggle/Toggle.tsx +5 -10
- package/src/components/Tooltip/Tooltip.tsx +12 -12
- package/src/components/TransactionBubble/TransactionBubble.tsx +22 -15
- package/src/components/TransactionDetails/TransactionDetails.tsx +10 -10
- package/src/components/TransactionStatus/TransactionStatus.tsx +18 -11
- package/src/components/UpiHandle/UpiHandle.tsx +24 -18
- package/src/components/index.ts +25 -2
- package/src/design-tokens/Coin Variables-variables-full.json +1 -1
- package/src/design-tokens/figma-modes.generated.ts +51 -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/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.tsx +32 -3
- package/src/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.tsx +25 -4
- package/src/utils/index.ts +2 -0
- package/src/utils/react-utils.ts +132 -0
- package/src/utils/shadow.ts +219 -0
- package/src/utils/web-platform-utils.ts +68 -0
- package/lib/commonjs/components/MediaCard/GlassFill.js +0 -62
- package/lib/commonjs/components/MediaCard/GlassFill.web.js +0 -48
- package/lib/module/components/MediaCard/GlassFill.js +0 -57
- package/lib/module/components/MediaCard/GlassFill.web.js +0 -43
- package/lib/typescript/src/components/MediaCard/GlassFill.d.ts +0 -47
- package/lib/typescript/src/components/MediaCard/GlassFill.web.d.ts +0 -20
- package/src/components/MediaCard/GlassFill.tsx +0 -89
- package/src/components/MediaCard/GlassFill.web.tsx +0 -53
|
@@ -37,6 +37,27 @@ export interface GlassFillProps {
|
|
|
37
37
|
* along a hard seam. Works on iOS and Android with no extra native module.
|
|
38
38
|
*/
|
|
39
39
|
progressive?: boolean
|
|
40
|
+
/**
|
|
41
|
+
* Android-only: paint a barely-there white wash (`rgba(255,255,255,0.03)`)
|
|
42
|
+
* over the uniform blur to lift the community `RealtimeBlurView`, which
|
|
43
|
+
* otherwise reads slightly muddy. Defaults to `true` to match the
|
|
44
|
+
* media/merchandising card surfaces. Smaller surfaces (e.g. a Badge pill)
|
|
45
|
+
* pass `false` to keep the glass perfectly clear. No effect on iOS/web or
|
|
46
|
+
* on the progressive path.
|
|
47
|
+
*/
|
|
48
|
+
androidTintWash?: boolean
|
|
49
|
+
/**
|
|
50
|
+
* Web-only: multiplier converting the 0–100 `intensity` to CSS blur px (see
|
|
51
|
+
* `GlassFill.web.tsx`). Declared here purely for prop-type parity across the
|
|
52
|
+
* platform split — native always uses the fixed `blurAmount` scale and
|
|
53
|
+
* ignores this value.
|
|
54
|
+
*/
|
|
55
|
+
webBlurScale?: number
|
|
56
|
+
/**
|
|
57
|
+
* Web-only: upper clamp (px) on the resolved CSS blur. Declared here for
|
|
58
|
+
* parity with the web build; ignored on native.
|
|
59
|
+
*/
|
|
60
|
+
webBlurMaxPx?: number
|
|
40
61
|
/** Container style overrides. Defaults to `StyleSheet.absoluteFill`. */
|
|
41
62
|
style?: StyleProp<ViewStyle>
|
|
42
63
|
}
|
|
@@ -159,9 +180,13 @@ function GradientMask({ id, stops }: { id: string; stops: MaskStop[] }) {
|
|
|
159
180
|
}
|
|
160
181
|
|
|
161
182
|
/**
|
|
162
|
-
*
|
|
183
|
+
* Shared glass / frosted surface for native (iOS + Android).
|
|
163
184
|
*
|
|
164
|
-
*
|
|
185
|
+
* This is the single source of truth for the glass effect used by `MediaCard`,
|
|
186
|
+
* `ProductMerchandisingCard`, `Badge`, and any future consumer. It supersedes
|
|
187
|
+
* the per-component `GlassFill` copies that previously drifted apart.
|
|
188
|
+
*
|
|
189
|
+
* Why this lives in its own platform-split file:
|
|
165
190
|
* - `@react-native-community/blur` is a native-only module; importing it on
|
|
166
191
|
* web throws because it references native components not registered there.
|
|
167
192
|
* Metro's platform-extension resolution picks `GlassFill.tsx` for native
|
|
@@ -174,12 +199,16 @@ function GradientMask({ id, stops }: { id: string; stops: MaskStop[] }) {
|
|
|
174
199
|
* native module isn't linked in the running binary, the component degrades to
|
|
175
200
|
* a translucent tinted scrim (`reducedTransparencyFallbackColor` / fallback
|
|
176
201
|
* color) instead of rendering the "Unimplemented component" placeholder.
|
|
202
|
+
*
|
|
203
|
+
* NOTE: the consumer MUST clip this with `overflow: 'hidden'` on a rounded
|
|
204
|
+
* parent — the native blur view does not honor `borderRadius` itself.
|
|
177
205
|
*/
|
|
178
206
|
function GlassFill({
|
|
179
207
|
tint = 'dark',
|
|
180
208
|
intensity = 50,
|
|
181
209
|
overlayColor,
|
|
182
210
|
progressive = false,
|
|
211
|
+
androidTintWash = true,
|
|
183
212
|
style,
|
|
184
213
|
}: GlassFillProps) {
|
|
185
214
|
const rawId = useId()
|
|
@@ -258,7 +287,7 @@ function GlassFill({
|
|
|
258
287
|
{overlayColor != null ? (
|
|
259
288
|
<View style={[StyleSheet.absoluteFill, { backgroundColor: overlayColor }]} />
|
|
260
289
|
) : null}
|
|
261
|
-
{Platform.OS === 'android' ? (
|
|
290
|
+
{Platform.OS === 'android' && androidTintWash ? (
|
|
262
291
|
<View
|
|
263
292
|
style={[
|
|
264
293
|
StyleSheet.absoluteFill,
|
|
@@ -15,12 +15,31 @@ export interface GlassFillProps {
|
|
|
15
15
|
* smoothly toward the bottom.
|
|
16
16
|
*/
|
|
17
17
|
progressive?: boolean
|
|
18
|
+
/**
|
|
19
|
+
* Android-only knob on native; accepted on web for prop parity but unused
|
|
20
|
+
* (web has no equivalent realtime-blur muddiness to lift).
|
|
21
|
+
*/
|
|
22
|
+
androidTintWash?: boolean
|
|
23
|
+
/**
|
|
24
|
+
* Multiplier converting the 0–100 `intensity` to CSS blur px. Defaults to
|
|
25
|
+
* `0.32` to mirror the native `blurAmount` scale. Exposed so a consumer can
|
|
26
|
+
* preserve a legacy mapping (e.g. `MediaCard` uses `0.3`).
|
|
27
|
+
*/
|
|
28
|
+
webBlurScale?: number
|
|
29
|
+
/**
|
|
30
|
+
* Upper clamp (px) on the resolved CSS blur. Defaults to `32` to mirror the
|
|
31
|
+
* native cap. `MediaCard` passes `30` to preserve its historical value.
|
|
32
|
+
*/
|
|
33
|
+
webBlurMaxPx?: number
|
|
18
34
|
style?: StyleProp<ViewStyle>
|
|
19
35
|
}
|
|
20
36
|
|
|
21
37
|
const DEFAULT_FALLBACK_DARK = '#1414174a'
|
|
22
38
|
const DEFAULT_FALLBACK_LIGHT = '#ffffff66'
|
|
23
39
|
|
|
40
|
+
const DEFAULT_WEB_BLUR_SCALE = 0.32
|
|
41
|
+
const DEFAULT_WEB_BLUR_MAX_PX = 32
|
|
42
|
+
|
|
24
43
|
// Mirror of the native ramp (see GlassFill.tsx). Each layer is a `mask-image`
|
|
25
44
|
// gradient whose alpha stops (0 = top, 1 = bottom) ease the blur in; `amount`
|
|
26
45
|
// is the layer's share of the max blur. Two gently-overlapping layers (faint
|
|
@@ -61,7 +80,7 @@ function toGradient(stops: WebLayer['stops']): string {
|
|
|
61
80
|
}
|
|
62
81
|
|
|
63
82
|
/**
|
|
64
|
-
* Web counterpart of `GlassFill`.
|
|
83
|
+
* Web counterpart of the shared `GlassFill`.
|
|
65
84
|
*
|
|
66
85
|
* `@react-native-community/blur` ships no web implementation, so on web we
|
|
67
86
|
* render a translucent `View` with `backdrop-filter: blur()`. Native bundles
|
|
@@ -73,16 +92,18 @@ function GlassFill({
|
|
|
73
92
|
intensity = 50,
|
|
74
93
|
overlayColor,
|
|
75
94
|
progressive = false,
|
|
95
|
+
webBlurScale = DEFAULT_WEB_BLUR_SCALE,
|
|
96
|
+
webBlurMaxPx = DEFAULT_WEB_BLUR_MAX_PX,
|
|
76
97
|
style,
|
|
77
98
|
}: GlassFillProps) {
|
|
78
|
-
// intensity 0-100 -> ~0-
|
|
79
|
-
const blurPx = Math.max(0, Math.min(
|
|
99
|
+
// intensity 0-100 -> ~0-maxPx CSS blur, kept in parity with the native scale.
|
|
100
|
+
const blurPx = Math.max(0, Math.min(webBlurMaxPx, Math.round(intensity * webBlurScale)))
|
|
80
101
|
const tintColor = overlayColor ?? (tint === 'light' ? DEFAULT_FALLBACK_LIGHT : DEFAULT_FALLBACK_DARK)
|
|
81
102
|
|
|
82
103
|
if (progressive) {
|
|
83
104
|
// Full peak blur (parity with native) so the frosted glass is clearly
|
|
84
105
|
// engaged at the bottom; the eased masks keep the top fully clear.
|
|
85
|
-
const peakPx = Math.max(1, Math.min(
|
|
106
|
+
const peakPx = Math.max(1, Math.min(webBlurMaxPx, Math.round(intensity * webBlurScale)))
|
|
86
107
|
return (
|
|
87
108
|
<View style={[StyleSheet.absoluteFill, style]} pointerEvents="none">
|
|
88
109
|
{PROGRESSIVE_LAYERS.map((layer, i) => {
|
package/src/utils/index.ts
CHANGED
|
@@ -2,3 +2,5 @@ export { cloneChildrenWithModes, flattenChildren } from './react-utils'
|
|
|
2
2
|
export { default as MediaSource } from './MediaSource'
|
|
3
3
|
export type { UnifiedSource, MediaSourceProps } from './MediaSource'
|
|
4
4
|
export { formatIndianNumber } from './number-utils'
|
|
5
|
+
export { boxShadow, supportsNativeBoxShadow, parseBoxShadow, parseSingleShadow } from './shadow'
|
|
6
|
+
export type { BoxShadowOptions, ParsedShadow } from './shadow'
|
package/src/utils/react-utils.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { Platform, type StyleProp, type ViewStyle, type TextStyle } from 'react-native';
|
|
2
3
|
import type { Modes } from '../design-tokens'
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -88,6 +89,45 @@ export function cloneChildrenWithModes(
|
|
|
88
89
|
return React.Children.toArray(result);
|
|
89
90
|
}
|
|
90
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Merges a style onto each direct (top-level) child element, with the injected
|
|
94
|
+
* style taking precedence over the child's own style.
|
|
95
|
+
*
|
|
96
|
+
* Used by the Stack family to *enforce* cross-axis stretching from the container
|
|
97
|
+
* itself: a child can set its own `alignSelf` (which, per the flexbox spec,
|
|
98
|
+
* overrides the parent's `alignItems`), so to guarantee equal heights / full
|
|
99
|
+
* width regardless of what individual children declare, we append
|
|
100
|
+
* `{ alignSelf: 'stretch' }` to every direct child.
|
|
101
|
+
*
|
|
102
|
+
* @remarks
|
|
103
|
+
* - Only top-level children are touched. Grandchildren are intentionally left
|
|
104
|
+
* alone — we never want to leak layout styles deeper into the tree.
|
|
105
|
+
* - Non-element children (strings, numbers) are passed through untouched.
|
|
106
|
+
* - This relies on the child forwarding `style` to its outer/root view. Built-in
|
|
107
|
+
* RN primitives and components that spread `style` onto their root honour it;
|
|
108
|
+
* a child that fully ignores `style` cannot be forced (this is a hard React
|
|
109
|
+
* Native limitation, not something this helper can work around).
|
|
110
|
+
* - Per Yoga, stretch has no effect on an axis where the child has a *fixed*
|
|
111
|
+
* dimension (e.g. an explicit `height` for a row). Such children opt out by
|
|
112
|
+
* design; this helper does not strip explicit dimensions.
|
|
113
|
+
*/
|
|
114
|
+
export function injectChildStyle(
|
|
115
|
+
children: React.ReactNode,
|
|
116
|
+
style: StyleProp<ViewStyle>
|
|
117
|
+
): React.ReactNode {
|
|
118
|
+
return React.Children.map(children, (child) => {
|
|
119
|
+
if (!React.isValidElement(child)) {
|
|
120
|
+
return child;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const existingStyle = (child.props as { style?: StyleProp<ViewStyle> })?.style;
|
|
124
|
+
|
|
125
|
+
return React.cloneElement(child as React.ReactElement<{ style?: StyleProp<ViewStyle> }>, {
|
|
126
|
+
style: existingStyle != null ? [existingStyle, style] : style,
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
91
131
|
/**
|
|
92
132
|
* Combines several refs (object refs and/or callback refs) into a single
|
|
93
133
|
* callback ref. Useful when a component needs to keep its own internal ref to a
|
|
@@ -111,6 +151,98 @@ export function mergeRefs<T>(
|
|
|
111
151
|
};
|
|
112
152
|
}
|
|
113
153
|
|
|
154
|
+
export type EllipsizeMode = 'head' | 'middle' | 'tail' | 'clip';
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Resolves the `numberOfLines` / `ellipsizeMode` pair for a `<Text>` based on a
|
|
158
|
+
* `disableTruncation` flag.
|
|
159
|
+
*
|
|
160
|
+
* When `disableTruncation` is `true`, both values are returned as `undefined`
|
|
161
|
+
* so the text wraps to as many lines as it needs and never shows the trailing
|
|
162
|
+
* ellipsis. Otherwise the provided values are passed through unchanged.
|
|
163
|
+
*/
|
|
164
|
+
export function resolveTruncation(
|
|
165
|
+
disableTruncation: boolean | undefined,
|
|
166
|
+
numberOfLines?: number,
|
|
167
|
+
ellipsizeMode?: EllipsizeMode
|
|
168
|
+
): { numberOfLines?: number; ellipsizeMode?: EllipsizeMode } {
|
|
169
|
+
if (disableTruncation) {
|
|
170
|
+
return { numberOfLines: undefined, ellipsizeMode: undefined };
|
|
171
|
+
}
|
|
172
|
+
return { numberOfLines, ellipsizeMode };
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export type TextLayoutResult = {
|
|
176
|
+
numberOfLines?: number | undefined;
|
|
177
|
+
ellipsizeMode?: EllipsizeMode | undefined;
|
|
178
|
+
/**
|
|
179
|
+
* Style fragment that MUST be merged onto the target `<Text>` (after the
|
|
180
|
+
* component's own style and any consumer `style` override) so the escape
|
|
181
|
+
* hatches can win. `undefined` when neither flag is set.
|
|
182
|
+
*/
|
|
183
|
+
style?: TextStyle | undefined;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Resolves the `<Text>` props + style for the two truncation escape hatches.
|
|
188
|
+
* This supersedes {@link resolveTruncation} for components that want the
|
|
189
|
+
* "brutal" overflow behaviour rather than just dropping the line clamp.
|
|
190
|
+
*
|
|
191
|
+
* - `disableTruncation`: never truncate. Drops `numberOfLines`/`ellipsizeMode`
|
|
192
|
+
* AND sets `flexShrink: 0`, so a tight flex parent can no longer squeeze the
|
|
193
|
+
* text into an ellipsis — instead the text keeps its intrinsic size and
|
|
194
|
+
* overflows, even if that means blowing past (and visually breaking) the
|
|
195
|
+
* parent layout. The text still wraps onto multiple lines.
|
|
196
|
+
* - `singleLine`: force everything onto one line with no wrapping. Implies
|
|
197
|
+
* `disableTruncation` (the ellipsis is never shown). On web this adds
|
|
198
|
+
* `whiteSpace: 'nowrap'` so the single line overflows horizontally instead of
|
|
199
|
+
* wrapping. The text is never shrunk.
|
|
200
|
+
*
|
|
201
|
+
* Note (native): React Native's `<Text>` has no `white-space: nowrap`
|
|
202
|
+
* equivalent, so on iOS/Android `singleLine` cannot force a hard non-wrapping
|
|
203
|
+
* overflow — it behaves like `disableTruncation` (no ellipsis, no shrink). The
|
|
204
|
+
* hard single-line overflow is honoured on web (Storybook / react-native-web).
|
|
205
|
+
*
|
|
206
|
+
* When neither flag is set, the supplied `numberOfLines`/`ellipsizeMode` pass
|
|
207
|
+
* through unchanged and no extra style is returned.
|
|
208
|
+
*/
|
|
209
|
+
export function resolveTextLayout({
|
|
210
|
+
disableTruncation,
|
|
211
|
+
singleLine,
|
|
212
|
+
numberOfLines,
|
|
213
|
+
ellipsizeMode,
|
|
214
|
+
}: {
|
|
215
|
+
disableTruncation?: boolean | undefined;
|
|
216
|
+
singleLine?: boolean | undefined;
|
|
217
|
+
numberOfLines?: number | undefined;
|
|
218
|
+
ellipsizeMode?: EllipsizeMode | undefined;
|
|
219
|
+
}): TextLayoutResult {
|
|
220
|
+
if (singleLine) {
|
|
221
|
+
return {
|
|
222
|
+
numberOfLines: undefined,
|
|
223
|
+
ellipsizeMode: undefined,
|
|
224
|
+
style: {
|
|
225
|
+
flexShrink: 0,
|
|
226
|
+
flexGrow: 0,
|
|
227
|
+
...(Platform.OS === 'web'
|
|
228
|
+
? { whiteSpace: 'nowrap' as const, overflow: 'visible' as const }
|
|
229
|
+
: {}),
|
|
230
|
+
},
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
if (disableTruncation) {
|
|
234
|
+
return {
|
|
235
|
+
numberOfLines: undefined,
|
|
236
|
+
ellipsizeMode: undefined,
|
|
237
|
+
style: {
|
|
238
|
+
flexShrink: 0,
|
|
239
|
+
...(Platform.OS === 'web' ? { overflow: 'visible' as const } : {}),
|
|
240
|
+
},
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return { numberOfLines, ellipsizeMode }
|
|
244
|
+
}
|
|
245
|
+
|
|
114
246
|
/**
|
|
115
247
|
* Flattens React children, extracting them from Fragments.
|
|
116
248
|
* Useful for Group components that need to process individual items (e.g., for layout or styling)
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { Platform } from 'react-native'
|
|
2
|
+
import type { ViewStyle } from 'react-native'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Cross-platform drop-shadow helper with a backward-compatibility layer.
|
|
6
|
+
*
|
|
7
|
+
* Why this exists
|
|
8
|
+
* ----------------
|
|
9
|
+
* The spec-compliant `boxShadow` style prop only landed in React Native 0.76
|
|
10
|
+
* (and only on the New Architecture / Fabric). Older apps that consume this
|
|
11
|
+
* library are still on pre-0.76 React Native where `boxShadow` is silently
|
|
12
|
+
* ignored on native, so their shadows simply disappear.
|
|
13
|
+
*
|
|
14
|
+
* Rather than hand-rolling a `Platform.select` block in every component, route
|
|
15
|
+
* ALL drop shadows through this single helper. When `boxShadow` is natively
|
|
16
|
+
* supported it is used verbatim (web + RN 0.76+ Fabric). When it is NOT
|
|
17
|
+
* supported, the CSS-style shadow string is parsed and translated into the
|
|
18
|
+
* legacy native shadow API:
|
|
19
|
+
* - iOS: `shadowColor`, `shadowOffset`, `shadowOpacity`, `shadowRadius`
|
|
20
|
+
* - Android: `elevation`
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* const style = boxShadow('0px 2px 4px 0px rgba(0,0,0,0.18)')
|
|
25
|
+
* <View style={[base, style]} />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
export interface ParsedShadow {
|
|
30
|
+
offsetX: number
|
|
31
|
+
offsetY: number
|
|
32
|
+
blur: number
|
|
33
|
+
spread: number
|
|
34
|
+
color: string
|
|
35
|
+
inset: boolean
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface BoxShadowOptions {
|
|
39
|
+
/**
|
|
40
|
+
* Explicit Android `elevation` for the legacy fallback. When omitted it is
|
|
41
|
+
* derived from the most prominent shadow's blur radius. Android elevation
|
|
42
|
+
* cannot reproduce colored/ring shadows, so provide this when the default
|
|
43
|
+
* heuristic doesn't match the design.
|
|
44
|
+
*/
|
|
45
|
+
elevation?: number
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// `boxShadow` is intentionally absent from the @types/react-native surface in
|
|
49
|
+
// this repo (pinned to 0.73), so we widen ViewStyle locally for the cases
|
|
50
|
+
// where we DO emit the native/web boxShadow string.
|
|
51
|
+
type ShadowViewStyle = ViewStyle & { boxShadow?: string }
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Whether the spec-compliant `boxShadow` style prop is honored at runtime.
|
|
55
|
+
* - Web (react-native-web) always supports it.
|
|
56
|
+
* - Native supports it from RN 0.76+ AND only on the New Architecture (Fabric).
|
|
57
|
+
*/
|
|
58
|
+
export function supportsNativeBoxShadow(): boolean {
|
|
59
|
+
if (Platform.OS === 'web') {
|
|
60
|
+
return true
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const version = (Platform.constants as { reactNativeVersion?: { major: number; minor: number } } | undefined)
|
|
64
|
+
?.reactNativeVersion
|
|
65
|
+
|
|
66
|
+
const isVersionSupported = version
|
|
67
|
+
? version.major > 0 || (version.major === 0 && version.minor >= 76)
|
|
68
|
+
: false
|
|
69
|
+
|
|
70
|
+
// Even on 0.76+, boxShadow is a New Architecture feature. Fabric exposes a
|
|
71
|
+
// global UI manager; its presence is the most reliable runtime signal.
|
|
72
|
+
const isFabric =
|
|
73
|
+
typeof globalThis !== 'undefined' &&
|
|
74
|
+
(globalThis as { nativeFabricUIManager?: unknown }).nativeFabricUIManager != null
|
|
75
|
+
|
|
76
|
+
return isVersionSupported && isFabric
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Splits a (potentially multi-) box-shadow string on top-level commas, i.e.
|
|
81
|
+
* commas that are NOT inside a color function such as `rgba(12, 13, 16, 0.12)`.
|
|
82
|
+
*/
|
|
83
|
+
function splitShadows(value: string): string[] {
|
|
84
|
+
const out: string[] = []
|
|
85
|
+
let depth = 0
|
|
86
|
+
let current = ''
|
|
87
|
+
|
|
88
|
+
for (const ch of value) {
|
|
89
|
+
if (ch === '(') depth++
|
|
90
|
+
else if (ch === ')') depth--
|
|
91
|
+
|
|
92
|
+
if (ch === ',' && depth === 0) {
|
|
93
|
+
if (current.trim()) out.push(current.trim())
|
|
94
|
+
current = ''
|
|
95
|
+
} else {
|
|
96
|
+
current += ch
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (current.trim()) out.push(current.trim())
|
|
101
|
+
return out
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Parses a single CSS box-shadow layer into its primitive parts.
|
|
106
|
+
* Supports: `[inset] offsetX offsetY [blur] [spread] color` in any sensible
|
|
107
|
+
* ordering of the keyword/color, with `rgb()/rgba()/hsl()/hsla()`, hex, or
|
|
108
|
+
* named colors.
|
|
109
|
+
*/
|
|
110
|
+
export function parseSingleShadow(input: string): ParsedShadow {
|
|
111
|
+
let s = input.trim()
|
|
112
|
+
|
|
113
|
+
let inset = false
|
|
114
|
+
if (/(^|\s)inset(\s|$)/i.test(s)) {
|
|
115
|
+
inset = true
|
|
116
|
+
s = s.replace(/(^|\s)inset(\s|$)/i, ' ').trim()
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
let color = 'rgba(0,0,0,1)'
|
|
120
|
+
const fnColor = s.match(/(?:rgba?|hsla?)\([^)]*\)/i)
|
|
121
|
+
if (fnColor) {
|
|
122
|
+
color = fnColor[0]
|
|
123
|
+
s = s.replace(fnColor[0], ' ').trim()
|
|
124
|
+
} else {
|
|
125
|
+
const hex = s.match(/#[0-9a-fA-F]{3,8}\b/)
|
|
126
|
+
if (hex) {
|
|
127
|
+
color = hex[0]
|
|
128
|
+
s = s.replace(hex[0], ' ').trim()
|
|
129
|
+
} else {
|
|
130
|
+
// Fall back to a trailing named color token (e.g. "red", "black").
|
|
131
|
+
const tokens = s.split(/\s+/).filter(Boolean)
|
|
132
|
+
const last = tokens[tokens.length - 1]
|
|
133
|
+
if (last && Number.isNaN(parseFloat(last))) {
|
|
134
|
+
color = last
|
|
135
|
+
tokens.pop()
|
|
136
|
+
s = tokens.join(' ')
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const nums = s.split(/\s+/).filter(Boolean).map((t) => parseFloat(t) || 0)
|
|
142
|
+
const [offsetX = 0, offsetY = 0, blur = 0, spread = 0] = nums
|
|
143
|
+
|
|
144
|
+
return { offsetX, offsetY, blur, spread, color, inset }
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Parses a full box-shadow string (one or more comma-separated layers).
|
|
149
|
+
*/
|
|
150
|
+
export function parseBoxShadow(value: string): ParsedShadow[] {
|
|
151
|
+
return splitShadows(value).map(parseSingleShadow)
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Picks the visually dominant shadow layer (largest blur, then largest spread).
|
|
156
|
+
* iOS' legacy shadow API can only render a single shadow per view.
|
|
157
|
+
*/
|
|
158
|
+
function pickPrimary(shadows: ParsedShadow[]): ParsedShadow | undefined {
|
|
159
|
+
if (shadows.length === 0) return undefined
|
|
160
|
+
return shadows.reduce((best, s) => {
|
|
161
|
+
if (s.blur > best.blur) return s
|
|
162
|
+
if (s.blur === best.blur && s.spread > best.spread) return s
|
|
163
|
+
return best
|
|
164
|
+
})
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Translates the parsed shadow into the legacy native shadow style used by
|
|
169
|
+
* pre-0.76 React Native.
|
|
170
|
+
*/
|
|
171
|
+
function legacyShadowStyle(value: string, options?: BoxShadowOptions): ViewStyle {
|
|
172
|
+
const shadows = parseBoxShadow(value)
|
|
173
|
+
const primary = pickPrimary(shadows)
|
|
174
|
+
|
|
175
|
+
if (!primary) {
|
|
176
|
+
return {}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
if (Platform.OS === 'android') {
|
|
180
|
+
const elevation = options?.elevation ?? Math.max(0, Math.round(primary.blur / 2))
|
|
181
|
+
if (elevation <= 0) {
|
|
182
|
+
return {}
|
|
183
|
+
}
|
|
184
|
+
return { elevation }
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// iOS: shadowOpacity defaults to 0 (invisible), so it MUST be set. We keep
|
|
188
|
+
// the full color (its own alpha is respected) and use opacity 1 as the
|
|
189
|
+
// multiplier so rgba() alpha is honored end-to-end.
|
|
190
|
+
return {
|
|
191
|
+
shadowColor: primary.color,
|
|
192
|
+
shadowOffset: { width: primary.offsetX, height: primary.offsetY },
|
|
193
|
+
shadowOpacity: 1,
|
|
194
|
+
shadowRadius: primary.blur,
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Returns a style object that renders the given CSS-style box-shadow on every
|
|
200
|
+
* platform. Uses the native `boxShadow` prop when supported, otherwise falls
|
|
201
|
+
* back to the legacy `shadow*` (iOS) / `elevation` (Android) API.
|
|
202
|
+
*
|
|
203
|
+
* @param value A CSS box-shadow string, e.g. `'0px 2px 4px 0px rgba(0,0,0,0.2)'`.
|
|
204
|
+
* Multiple comma-separated layers are supported; on the legacy
|
|
205
|
+
* fallback iOS uses the most prominent layer and Android uses a
|
|
206
|
+
* single elevation.
|
|
207
|
+
* @param options Optional overrides (e.g. explicit Android `elevation`).
|
|
208
|
+
*/
|
|
209
|
+
export function boxShadow(value: string, options?: BoxShadowOptions): ViewStyle {
|
|
210
|
+
if (!value) {
|
|
211
|
+
return {}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
if (supportsNativeBoxShadow()) {
|
|
215
|
+
return { boxShadow: value } as ShadowViewStyle
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
return legacyShadowStyle(value, options)
|
|
219
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react'
|
|
2
|
+
import type { RefObject } from 'react'
|
|
1
3
|
import { Platform } from 'react-native'
|
|
2
4
|
import type { PressableProps } from 'react-native'
|
|
3
5
|
|
|
@@ -272,6 +274,72 @@ export function usePressableWebSupport({
|
|
|
272
274
|
}
|
|
273
275
|
}
|
|
274
276
|
|
|
277
|
+
/**
|
|
278
|
+
* Detects pointer presses (mouse / touch) that land OUTSIDE the node held by
|
|
279
|
+
* `containerRef` and invokes `onOutsidePress`.
|
|
280
|
+
*
|
|
281
|
+
* Why this exists:
|
|
282
|
+
* On web, React Native pressables (`Pressable`, `Button`, links, etc.) do not
|
|
283
|
+
* always claim DOM focus the way a native `<button>`/`<input>` does. As a
|
|
284
|
+
* result, tapping an *interactive* element outside a focused `<input>` may
|
|
285
|
+
* never trigger the input's native `blur` event, leaving a field stuck in its
|
|
286
|
+
* "Active" visual state. Listening for document-level pointer-down in the
|
|
287
|
+
* capture phase lets a component force a blur (or close a popover, etc.)
|
|
288
|
+
* regardless of whether the outside target takes focus.
|
|
289
|
+
*
|
|
290
|
+
* Behavior & safety:
|
|
291
|
+
* - **Web only.** On native (or when `document` is unavailable) this is a
|
|
292
|
+
* no-op, so it is safe to call unconditionally.
|
|
293
|
+
* - Listeners are attached only while `enabled` is `true`, and are removed on
|
|
294
|
+
* cleanup / when disabled — there is no standing global listener.
|
|
295
|
+
* - Uses the **capture** phase so it runs before element-level handlers, and
|
|
296
|
+
* listens to both `mousedown` and `touchstart` for parity across devices.
|
|
297
|
+
* - The latest `onOutsidePress` is read through a ref, so passing a fresh
|
|
298
|
+
* inline closure every render does NOT re-subscribe the listener.
|
|
299
|
+
*
|
|
300
|
+
* @param containerRef - Ref to the root host node to treat as "inside".
|
|
301
|
+
* @param onOutsidePress - Called when a pointer press occurs outside the node.
|
|
302
|
+
* @param enabled - When `false`, no listener is attached. Defaults to `true`.
|
|
303
|
+
*
|
|
304
|
+
* @example
|
|
305
|
+
* ```tsx
|
|
306
|
+
* const rootRef = useRef<View>(null)
|
|
307
|
+
* const inputRef = useRef<RNTextInput>(null)
|
|
308
|
+
* useWebOutsidePress(rootRef, () => inputRef.current?.blur(), isFocused)
|
|
309
|
+
* ```
|
|
310
|
+
*/
|
|
311
|
+
export function useWebOutsidePress(
|
|
312
|
+
containerRef: RefObject<any>,
|
|
313
|
+
onOutsidePress: () => void,
|
|
314
|
+
enabled: boolean = true
|
|
315
|
+
): void {
|
|
316
|
+
const callbackRef = useRef(onOutsidePress)
|
|
317
|
+
callbackRef.current = onOutsidePress
|
|
318
|
+
|
|
319
|
+
useEffect(() => {
|
|
320
|
+
if (Platform.OS !== 'web' || typeof document === 'undefined' || !enabled) {
|
|
321
|
+
return
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
const handlePointerDown = (event: Event) => {
|
|
325
|
+
const node = containerRef.current as unknown as {
|
|
326
|
+
contains?: (target: EventTarget | null) => boolean
|
|
327
|
+
} | null
|
|
328
|
+
const target = (event as unknown as { target: EventTarget | null }).target
|
|
329
|
+
if (node?.contains && !node.contains(target)) {
|
|
330
|
+
callbackRef.current()
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
document.addEventListener('mousedown', handlePointerDown, true)
|
|
335
|
+
document.addEventListener('touchstart', handlePointerDown, true)
|
|
336
|
+
return () => {
|
|
337
|
+
document.removeEventListener('mousedown', handlePointerDown, true)
|
|
338
|
+
document.removeEventListener('touchstart', handlePointerDown, true)
|
|
339
|
+
}
|
|
340
|
+
}, [containerRef, enabled])
|
|
341
|
+
}
|
|
342
|
+
|
|
275
343
|
/**
|
|
276
344
|
* Type guard to check if running on web platform
|
|
277
345
|
*/
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _react = _interopRequireDefault(require("react"));
|
|
8
|
-
var _reactNative = require("react-native");
|
|
9
|
-
var _blur = require("@react-native-community/blur");
|
|
10
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
const DEFAULT_FALLBACK_DARK = '#1414174a';
|
|
13
|
-
const DEFAULT_FALLBACK_LIGHT = '#ffffff66';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Glass / frosted surface for native (iOS + Android).
|
|
17
|
-
*
|
|
18
|
-
* Why this lives in its own platform-split file:
|
|
19
|
-
* - `@react-native-community/blur` is a native-only module. Importing it on
|
|
20
|
-
* web throws because the JS shim references native components that aren't
|
|
21
|
-
* registered there. By using Metro's platform-extension resolution
|
|
22
|
-
* (`GlassFill.tsx` for native, `GlassFill.web.tsx` for web), we keep the
|
|
23
|
-
* web bundle free of any native-only imports.
|
|
24
|
-
* - Centralizes the `intensity` (0–100) -> `blurAmount` (0–32) mapping so
|
|
25
|
-
* callers can keep the Figma token semantics they already know.
|
|
26
|
-
*
|
|
27
|
-
* On iOS this is a real `UIVisualEffectView` (true OS-level live blur).
|
|
28
|
-
* On Android this uses the community blur view (RealtimeBlurView). On devices
|
|
29
|
-
* where realtime blur is unavailable, `reducedTransparencyFallbackColor` (and
|
|
30
|
-
* the explicit `overlayColor`) ensure the surface still renders as a
|
|
31
|
-
* translucent tinted scrim instead of disappearing.
|
|
32
|
-
*/
|
|
33
|
-
function GlassFill({
|
|
34
|
-
tint = 'dark',
|
|
35
|
-
intensity = 50,
|
|
36
|
-
overlayColor,
|
|
37
|
-
style
|
|
38
|
-
}) {
|
|
39
|
-
const blurType = tint === 'light' ? 'light' : 'dark';
|
|
40
|
-
const blurAmount = Math.max(0, Math.min(32, Math.round(intensity * 0.32)));
|
|
41
|
-
const fallbackColor = overlayColor ?? (tint === 'light' ? DEFAULT_FALLBACK_LIGHT : DEFAULT_FALLBACK_DARK);
|
|
42
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
43
|
-
style: [_reactNative.StyleSheet.absoluteFill, style],
|
|
44
|
-
pointerEvents: "none",
|
|
45
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_blur.BlurView, {
|
|
46
|
-
style: _reactNative.StyleSheet.absoluteFill,
|
|
47
|
-
blurType: blurType,
|
|
48
|
-
blurAmount: blurAmount,
|
|
49
|
-
reducedTransparencyFallbackColor: fallbackColor
|
|
50
|
-
}), overlayColor != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
51
|
-
style: [_reactNative.StyleSheet.absoluteFill, {
|
|
52
|
-
backgroundColor: overlayColor
|
|
53
|
-
}]
|
|
54
|
-
}) : null, _reactNative.Platform.OS === 'android' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
55
|
-
style: [_reactNative.StyleSheet.absoluteFill, {
|
|
56
|
-
backgroundColor: 'rgba(255,255,255,0.03)',
|
|
57
|
-
opacity: 0.6
|
|
58
|
-
}]
|
|
59
|
-
}) : null]
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
var _default = exports.default = GlassFill;
|