jfs-components 0.1.0 → 0.1.8
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 +37 -0
- package/lib/commonjs/components/AmountInput/AmountInput.js +8 -5
- package/lib/commonjs/components/AreaLineChart/AreaLineChart.js +1 -1
- package/lib/commonjs/components/Balance/Balance.js +17 -12
- package/lib/commonjs/components/BenefitCard/BenefitCard.js +231 -0
- package/lib/commonjs/components/Card/Card.js +2 -1
- package/lib/commonjs/components/CardFeedback/CardFeedback.js +2 -1
- package/lib/commonjs/components/CcCard/CcCard.js +470 -0
- package/lib/commonjs/components/Checkbox/Checkbox.js +6 -4
- package/lib/commonjs/components/CheckboxItem/CheckboxItem.js +4 -3
- package/lib/commonjs/components/CompareTable/CompareTable.js +372 -0
- package/lib/commonjs/components/ComparisonBar/ComparisonBar.js +266 -0
- package/lib/commonjs/components/Drawer/Drawer.js +13 -4
- package/lib/commonjs/components/DropdownInput/DropdownInput.js +36 -4
- package/lib/commonjs/components/FormField/FormField.js +4 -3
- package/lib/commonjs/components/FullscreenModal/FullscreenModal.js +62 -2
- package/lib/commonjs/components/Image/Image.js +11 -5
- package/lib/commonjs/components/InputSearch/InputSearch.js +6 -4
- package/lib/commonjs/components/LottiePlayer/loadNativeLottieView.js +8 -13
- package/lib/commonjs/components/NoteInput/NoteInput.js +6 -5
- package/lib/commonjs/components/Overlay/Overlay.js +92 -0
- package/lib/commonjs/components/PdpCcCard/PdpCcCard.js +273 -0
- package/lib/commonjs/components/PlanComparisonCard/PlanComparisonCard.js +2 -1
- package/lib/commonjs/components/ProductMerchandisingCard/GlassFill.js +263 -0
- package/lib/commonjs/components/ProductMerchandisingCard/GlassFill.web.js +116 -0
- package/lib/commonjs/components/ProductMerchandisingCard/ProductMerchandisingCard.js +353 -0
- package/lib/commonjs/components/ProjectionMarker/ProjectionMarker.js +161 -0
- package/lib/commonjs/components/Radio/Radio.js +5 -5
- package/lib/commonjs/components/Slider/Slider.js +473 -0
- package/lib/commonjs/components/TextInput/TextInput.js +15 -9
- package/lib/commonjs/components/TextSegment/TextSegment.js +118 -0
- package/lib/commonjs/components/docs/modeControls.js +116 -0
- package/lib/commonjs/components/index.js +70 -0
- package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/commonjs/design-tokens/JFSThemeProvider.js +1 -1
- package/lib/commonjs/design-tokens/figma-modes.generated.js +420 -0
- package/lib/commonjs/design-tokens/index.js +11 -0
- package/lib/commonjs/icons/registry.js +1 -1
- package/lib/commonjs/utils/react-utils.js +22 -0
- package/lib/module/components/Accordion/Accordion.js +1 -2
- package/lib/module/components/AmountInput/AmountInput.js +6 -4
- package/lib/module/components/AreaLineChart/AreaLineChart.js +1 -1
- package/lib/module/components/Balance/Balance.js +18 -13
- package/lib/module/components/BenefitCard/BenefitCard.js +225 -0
- package/lib/module/components/Card/Card.js +1 -2
- package/lib/module/components/CardFeedback/CardFeedback.js +1 -2
- package/lib/module/components/CcCard/CcCard.js +464 -0
- package/lib/module/components/Checkbox/Checkbox.js +6 -6
- package/lib/module/components/CheckboxItem/CheckboxItem.js +5 -4
- package/lib/module/components/CompareTable/CompareTable.js +367 -0
- package/lib/module/components/ComparisonBar/ComparisonBar.js +260 -0
- package/lib/module/components/Drawer/Drawer.js +12 -4
- package/lib/module/components/DropdownInput/DropdownInput.js +37 -5
- package/lib/module/components/FormField/FormField.js +5 -4
- package/lib/module/components/FullscreenModal/FullscreenModal.js +64 -5
- package/lib/module/components/Image/Image.js +11 -5
- package/lib/module/components/InputSearch/InputSearch.js +6 -4
- package/lib/module/components/InstitutionBadge/InstitutionBadge.js +1 -2
- package/lib/module/components/LottiePlayer/loadNativeLottieView.js +8 -13
- package/lib/module/components/MoneyValue/MoneyValue.js +1 -2
- package/lib/module/components/NoteInput/NoteInput.js +7 -6
- package/lib/module/components/OTP/OTP.js +1 -2
- package/lib/module/components/Overlay/Overlay.js +87 -0
- package/lib/module/components/PdpCcCard/PdpCcCard.js +267 -0
- package/lib/module/components/PlanComparisonCard/PlanComparisonCard.js +1 -2
- package/lib/module/components/PoweredByLabel/PoweredByLabel.js +1 -2
- package/lib/module/components/ProductMerchandisingCard/GlassFill.js +257 -0
- package/lib/module/components/ProductMerchandisingCard/GlassFill.web.js +111 -0
- package/lib/module/components/ProductMerchandisingCard/ProductMerchandisingCard.js +347 -0
- package/lib/module/components/ProjectionMarker/ProjectionMarker.js +156 -0
- package/lib/module/components/Radio/Radio.js +5 -4
- package/lib/module/components/RechargeCard/RechargeCard.js +1 -2
- package/lib/module/components/Section/Section.js +1 -2
- package/lib/module/components/Slider/Slider.js +468 -0
- package/lib/module/components/TextInput/TextInput.js +16 -12
- package/lib/module/components/TextSegment/TextSegment.js +113 -0
- package/lib/module/components/UpiHandle/UpiHandle.js +1 -2
- package/lib/module/components/docs/modeControls.js +111 -0
- package/lib/module/components/index.js +10 -0
- package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/module/design-tokens/JFSThemeProvider.js +1 -1
- package/lib/module/design-tokens/figma-modes.generated.js +416 -0
- package/lib/module/design-tokens/index.js +2 -1
- package/lib/module/icons/registry.js +1 -1
- package/lib/module/utils/react-utils.js +21 -1
- package/lib/typescript/src/components/Accordion/Accordion.d.ts +2 -1
- package/lib/typescript/src/components/AccordionCheckbox/AccordionCheckbox.d.ts +2 -1
- package/lib/typescript/src/components/AccountCard/AccountCard.d.ts +2 -1
- package/lib/typescript/src/components/ActionFooter/ActionFooter.d.ts +2 -1
- package/lib/typescript/src/components/ActionTile/ActionTile.d.ts +2 -1
- package/lib/typescript/src/components/AllocationComparisonChart/AllocationComparisonChart.d.ts +2 -1
- package/lib/typescript/src/components/AmountInput/AmountInput.d.ts +5 -3
- package/lib/typescript/src/components/AppBar/AppBar.d.ts +2 -1
- package/lib/typescript/src/components/AreaLineChart/AreaLineChart.d.ts +3 -2
- package/lib/typescript/src/components/Attached/Attached.d.ts +2 -1
- package/lib/typescript/src/components/Avatar/Avatar.d.ts +2 -1
- package/lib/typescript/src/components/AvatarGroup/AvatarGroup.d.ts +2 -1
- package/lib/typescript/src/components/Badge/Badge.d.ts +2 -1
- package/lib/typescript/src/components/Balance/Balance.d.ts +2 -1
- package/lib/typescript/src/components/BenefitCard/BenefitCard.d.ts +93 -0
- package/lib/typescript/src/components/BottomNav/BottomNav.d.ts +2 -1
- package/lib/typescript/src/components/BottomNavItem/BottomNavItem.d.ts +2 -1
- package/lib/typescript/src/components/BrandChip/BrandChip.d.ts +2 -1
- package/lib/typescript/src/components/BubbleChart/BubbleChart.d.ts +2 -1
- package/lib/typescript/src/components/Button/Button.d.ts +2 -1
- package/lib/typescript/src/components/ButtonGroup/ButtonGroup.d.ts +2 -1
- package/lib/typescript/src/components/Card/Card.d.ts +3 -2
- package/lib/typescript/src/components/CardAdvisory/CardAdvisory.d.ts +2 -1
- package/lib/typescript/src/components/CardBankAccount/CardBankAccount.d.ts +2 -1
- package/lib/typescript/src/components/CardCTA/CardCTA.d.ts +2 -1
- package/lib/typescript/src/components/CardFeedback/CardFeedback.d.ts +7 -6
- package/lib/typescript/src/components/CardFinancialCondition/CardFinancialCondition.d.ts +2 -1
- package/lib/typescript/src/components/CardInsight/CardInsight.d.ts +2 -1
- package/lib/typescript/src/components/CardProviderInfo/CardProviderInfo.d.ts +2 -1
- package/lib/typescript/src/components/Carousel/Carousel.d.ts +4 -3
- package/lib/typescript/src/components/CcCard/CcCard.d.ts +137 -0
- package/lib/typescript/src/components/Checkbox/Checkbox.d.ts +5 -3
- package/lib/typescript/src/components/CheckboxGroup/CheckboxGroup.d.ts +2 -1
- package/lib/typescript/src/components/CheckboxItem/CheckboxItem.d.ts +4 -3
- package/lib/typescript/src/components/ChipGroup/ChipGroup.d.ts +2 -1
- package/lib/typescript/src/components/ChipSelect/ChipSelect.d.ts +2 -1
- package/lib/typescript/src/components/CircularProgressBar/CircularProgressBar.d.ts +2 -1
- package/lib/typescript/src/components/CircularProgressBarDoted/CircularProgressBarDoted.d.ts +2 -1
- package/lib/typescript/src/components/CircularRating/CircularRating.d.ts +2 -1
- package/lib/typescript/src/components/ClusterBubble/ClusterBubble.d.ts +2 -1
- package/lib/typescript/src/components/CompareTable/CompareTable.d.ts +88 -0
- package/lib/typescript/src/components/ComparisonBar/ComparisonBar.d.ts +118 -0
- package/lib/typescript/src/components/CoverageBarComparison/CoverageBarComparison.d.ts +3 -2
- package/lib/typescript/src/components/CoverageRing/CoverageRing.d.ts +2 -1
- package/lib/typescript/src/components/DebitCard/DebitCard.d.ts +2 -1
- package/lib/typescript/src/components/Disclaimer/Disclaimer.d.ts +2 -1
- package/lib/typescript/src/components/Divider/Divider.d.ts +2 -1
- package/lib/typescript/src/components/DonutChart/DonutChart.d.ts +4 -3
- package/lib/typescript/src/components/DonutChartSummary/DonutChartSummary.d.ts +3 -2
- package/lib/typescript/src/components/Drawer/Drawer.d.ts +15 -1
- package/lib/typescript/src/components/Dropdown/Dropdown.d.ts +3 -2
- package/lib/typescript/src/components/DropdownInput/DropdownInput.d.ts +22 -2
- package/lib/typescript/src/components/EmptyState/EmptyState.d.ts +2 -1
- package/lib/typescript/src/components/ExpandableCheckbox/ExpandableCheckbox.d.ts +2 -1
- package/lib/typescript/src/components/FilterBar/FilterBar.d.ts +3 -2
- package/lib/typescript/src/components/Form/Form.d.ts +2 -1
- package/lib/typescript/src/components/FormField/FormField.d.ts +4 -3
- package/lib/typescript/src/components/FullscreenModal/FullscreenModal.d.ts +2 -1
- package/lib/typescript/src/components/Gauge/Gauge.d.ts +2 -1
- package/lib/typescript/src/components/HStack/HStack.d.ts +2 -1
- package/lib/typescript/src/components/HoldingsCard/HoldingsCard.d.ts +2 -1
- package/lib/typescript/src/components/Icon/Icon.d.ts +2 -1
- package/lib/typescript/src/components/IconButton/IconButton.d.ts +2 -1
- package/lib/typescript/src/components/IconCapsule/IconCapsule.d.ts +2 -1
- package/lib/typescript/src/components/Image/Image.d.ts +17 -1
- package/lib/typescript/src/components/InputSearch/InputSearch.d.ts +25 -3
- package/lib/typescript/src/components/InstitutionBadge/InstitutionBadge.d.ts +2 -1
- package/lib/typescript/src/components/LazyList/LazyList.d.ts +2 -1
- package/lib/typescript/src/components/LinearMeter/LinearMeter.d.ts +3 -2
- package/lib/typescript/src/components/LinearProgress/LinearProgress.d.ts +2 -1
- package/lib/typescript/src/components/ListGroup/ListGroup.d.ts +2 -1
- package/lib/typescript/src/components/ListItem/ListItem.d.ts +2 -1
- package/lib/typescript/src/components/LottieIntroBlock/LottieIntroBlock.d.ts +2 -1
- package/lib/typescript/src/components/LottiePlayer/LottiePlayer.d.ts +2 -1
- package/lib/typescript/src/components/LottiePlayer/LottiePlayer.web.d.ts +2 -1
- package/lib/typescript/src/components/MediaCard/MediaCard.d.ts +6 -5
- package/lib/typescript/src/components/MerchantProfile/MerchantProfile.d.ts +2 -1
- package/lib/typescript/src/components/MessageField/MessageField.d.ts +2 -1
- package/lib/typescript/src/components/MetricLegendItem/MetricLegendItem.d.ts +2 -1
- package/lib/typescript/src/components/MoneyValue/MoneyValue.d.ts +2 -1
- package/lib/typescript/src/components/MonthlyStatusGrid/MonthlyStatusGrid.d.ts +4 -3
- package/lib/typescript/src/components/NavArrow/NavArrow.d.ts +2 -1
- package/lib/typescript/src/components/NoteInput/NoteInput.d.ts +21 -3
- package/lib/typescript/src/components/Nudge/Nudge.d.ts +2 -1
- package/lib/typescript/src/components/Numpad/Numpad.d.ts +2 -1
- package/lib/typescript/src/components/OTP/OTP.d.ts +3 -2
- package/lib/typescript/src/components/Overlay/Overlay.d.ts +52 -0
- package/lib/typescript/src/components/PageHero/PageHero.d.ts +2 -1
- package/lib/typescript/src/components/PaymentFeedback/PaymentFeedback.d.ts +2 -1
- package/lib/typescript/src/components/PdpCcCard/PdpCcCard.d.ts +84 -0
- package/lib/typescript/src/components/PlanComparisonCard/PlanComparisonCard.d.ts +2 -1
- package/lib/typescript/src/components/Popup/Popup.d.ts +2 -1
- package/lib/typescript/src/components/PortfolioHero/PortfolioHero.d.ts +2 -1
- package/lib/typescript/src/components/PoweredByLabel/PoweredByLabel.d.ts +2 -1
- package/lib/typescript/src/components/ProductLabel/ProductLabel.d.ts +2 -1
- package/lib/typescript/src/components/ProductMerchandisingCard/GlassFill.d.ts +56 -0
- package/lib/typescript/src/components/ProductMerchandisingCard/GlassFill.web.d.ts +27 -0
- package/lib/typescript/src/components/ProductMerchandisingCard/ProductMerchandisingCard.d.ts +81 -0
- package/lib/typescript/src/components/ProductOverview/ProductOverview.d.ts +2 -1
- package/lib/typescript/src/components/ProgressBadge/ProgressBadge.d.ts +2 -1
- package/lib/typescript/src/components/ProjectionMarker/ProjectionMarker.d.ts +82 -0
- package/lib/typescript/src/components/Radio/Radio.d.ts +5 -3
- package/lib/typescript/src/components/RadioButton/RadioButton.d.ts +2 -2
- package/lib/typescript/src/components/RangeTrack/RangeTrack.d.ts +3 -2
- package/lib/typescript/src/components/RechargeCard/RechargeCard.d.ts +2 -1
- package/lib/typescript/src/components/SavingsGoalSummary/SavingsGoalSummary.d.ts +2 -1
- package/lib/typescript/src/components/Screen/Screen.d.ts +2 -1
- package/lib/typescript/src/components/Section/Section.d.ts +3 -2
- package/lib/typescript/src/components/SegmentedControl/SegmentedControl.d.ts +2 -1
- package/lib/typescript/src/components/SegmentedTrack/SegmentedTrack.d.ts +4 -3
- package/lib/typescript/src/components/Slider/Slider.d.ts +99 -0
- package/lib/typescript/src/components/Slot/Slot.d.ts +2 -1
- package/lib/typescript/src/components/Spinner/Spinner.d.ts +2 -1
- package/lib/typescript/src/components/StatGroup/StatGroup.d.ts +2 -1
- package/lib/typescript/src/components/StatItem/StatItem.d.ts +2 -1
- package/lib/typescript/src/components/StatusHero/StatusHero.d.ts +2 -1
- package/lib/typescript/src/components/Stepper/Step.d.ts +2 -1
- package/lib/typescript/src/components/Stepper/StepLabel.d.ts +2 -1
- package/lib/typescript/src/components/Stepper/Stepper.d.ts +2 -1
- package/lib/typescript/src/components/StrengthIndicator/StrengthIndicator.d.ts +2 -1
- package/lib/typescript/src/components/SuggestiveSearch/SuggestiveSearch.d.ts +2 -1
- package/lib/typescript/src/components/SummaryTile/SummaryTile.d.ts +2 -1
- package/lib/typescript/src/components/SupportText/SupportText.d.ts +2 -1
- package/lib/typescript/src/components/SupportText/SupportTextIcon.d.ts +2 -1
- package/lib/typescript/src/components/SwappableAmount/SwappableAmount.d.ts +2 -1
- package/lib/typescript/src/components/Tabs/TabItem.d.ts +2 -1
- package/lib/typescript/src/components/Tabs/Tabs.d.ts +2 -1
- package/lib/typescript/src/components/TestimonialsCard/TestimonialsCard.d.ts +2 -1
- package/lib/typescript/src/components/Text/Text.d.ts +2 -1
- package/lib/typescript/src/components/TextInput/TextInput.d.ts +12 -31
- package/lib/typescript/src/components/TextSegment/TextSegment.d.ts +100 -0
- package/lib/typescript/src/components/ThreadHero/ThreadHero.d.ts +2 -1
- package/lib/typescript/src/components/Title/Title.d.ts +2 -1
- package/lib/typescript/src/components/Toast/Toast.d.ts +2 -1
- package/lib/typescript/src/components/Toast/ToastProvider.d.ts +2 -1
- package/lib/typescript/src/components/Toast/useToast.d.ts +3 -2
- package/lib/typescript/src/components/Toggle/Toggle.d.ts +2 -1
- package/lib/typescript/src/components/Tooltip/Tooltip.d.ts +2 -1
- package/lib/typescript/src/components/TransactionBubble/TransactionBubble.d.ts +2 -1
- package/lib/typescript/src/components/TransactionDetails/TransactionDetails.d.ts +3 -2
- package/lib/typescript/src/components/TransactionStatus/TransactionStatus.d.ts +2 -1
- package/lib/typescript/src/components/UpiHandle/UpiHandle.d.ts +2 -1
- package/lib/typescript/src/components/VStack/VStack.d.ts +2 -1
- package/lib/typescript/src/components/docs/modeControls.d.ts +28 -0
- package/lib/typescript/src/components/index.d.ts +11 -1
- package/lib/typescript/src/design-tokens/JFSThemeProvider.d.ts +4 -3
- package/lib/typescript/src/design-tokens/figma-modes.generated.d.ts +284 -0
- package/lib/typescript/src/design-tokens/index.d.ts +1 -0
- package/lib/typescript/src/icons/registry.d.ts +1 -1
- package/lib/typescript/src/skeleton/Skeleton.d.ts +2 -1
- package/lib/typescript/src/utils/react-utils.d.ts +12 -1
- package/package.json +4 -2
- package/src/components/Accordion/Accordion.tsx +2 -1
- package/src/components/AccordionCheckbox/AccordionCheckbox.tsx +2 -1
- package/src/components/AccountCard/AccountCard.tsx +2 -1
- package/src/components/ActionFooter/ActionFooter.tsx +2 -1
- package/src/components/ActionTile/ActionTile.tsx +2 -1
- package/src/components/AllocationComparisonChart/AllocationComparisonChart.tsx +2 -1
- package/src/components/AmountInput/AmountInput.tsx +9 -6
- package/src/components/AppBar/AppBar.tsx +2 -1
- package/src/components/AreaLineChart/AreaLineChart.tsx +8 -7
- package/src/components/Attached/Attached.tsx +2 -1
- package/src/components/Avatar/Avatar.tsx +3 -2
- package/src/components/AvatarGroup/AvatarGroup.tsx +2 -1
- package/src/components/Badge/Badge.tsx +2 -1
- package/src/components/Balance/Balance.tsx +18 -12
- package/src/components/BenefitCard/BenefitCard.tsx +309 -0
- package/src/components/BottomNav/BottomNav.tsx +2 -1
- package/src/components/BottomNavItem/BottomNavItem.tsx +3 -2
- package/src/components/BrandChip/BrandChip.tsx +3 -2
- package/src/components/BubbleChart/BubbleChart.tsx +2 -1
- package/src/components/Button/Button.tsx +3 -2
- package/src/components/ButtonGroup/ButtonGroup.tsx +2 -1
- package/src/components/Card/Card.tsx +4 -3
- package/src/components/CardAdvisory/CardAdvisory.tsx +3 -2
- package/src/components/CardBankAccount/CardBankAccount.tsx +2 -1
- package/src/components/CardCTA/CardCTA.tsx +3 -2
- package/src/components/CardFeedback/CardFeedback.tsx +11 -10
- package/src/components/CardFinancialCondition/CardFinancialCondition.tsx +3 -2
- package/src/components/CardInsight/CardInsight.tsx +2 -1
- package/src/components/CardProviderInfo/CardProviderInfo.tsx +2 -1
- package/src/components/Carousel/Carousel.tsx +5 -4
- package/src/components/CcCard/CcCard.tsx +598 -0
- package/src/components/Checkbox/Checkbox.tsx +7 -5
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +2 -1
- package/src/components/CheckboxItem/CheckboxItem.tsx +7 -5
- package/src/components/ChipGroup/ChipGroup.tsx +2 -1
- package/src/components/ChipSelect/ChipSelect.tsx +2 -1
- package/src/components/CircularProgressBar/CircularProgressBar.tsx +2 -1
- package/src/components/CircularProgressBarDoted/CircularProgressBarDoted.tsx +2 -1
- package/src/components/CircularRating/CircularRating.tsx +3 -2
- package/src/components/ClusterBubble/ClusterBubble.tsx +2 -1
- package/src/components/CompareTable/CompareTable.tsx +477 -0
- package/src/components/ComparisonBar/ComparisonBar.tsx +356 -0
- package/src/components/CoverageBarComparison/CoverageBarComparison.tsx +3 -2
- package/src/components/CoverageRing/CoverageRing.tsx +2 -1
- package/src/components/DebitCard/DebitCard.tsx +2 -1
- package/src/components/Disclaimer/Disclaimer.tsx +2 -1
- package/src/components/Divider/Divider.tsx +2 -1
- package/src/components/DonutChart/DonutChart.tsx +6 -5
- package/src/components/DonutChartSummary/DonutChartSummary.tsx +3 -2
- package/src/components/Drawer/Drawer.tsx +21 -1
- package/src/components/Dropdown/Dropdown.tsx +4 -3
- package/src/components/DropdownInput/DropdownInput.tsx +60 -7
- package/src/components/EmptyState/EmptyState.tsx +2 -1
- package/src/components/ExpandableCheckbox/ExpandableCheckbox.tsx +2 -1
- package/src/components/FilterBar/FilterBar.tsx +3 -2
- package/src/components/Form/Form.tsx +2 -1
- package/src/components/FormField/FormField.tsx +8 -6
- package/src/components/FullscreenModal/FullscreenModal.tsx +68 -10
- package/src/components/Gauge/Gauge.tsx +2 -1
- package/src/components/HStack/HStack.tsx +2 -1
- package/src/components/HoldingsCard/HoldingsCard.tsx +2 -1
- package/src/components/Icon/Icon.tsx +3 -2
- package/src/components/IconButton/IconButton.tsx +3 -2
- package/src/components/IconCapsule/IconCapsule.tsx +3 -2
- package/src/components/Image/Image.tsx +29 -5
- package/src/components/InputSearch/InputSearch.tsx +11 -7
- package/src/components/InstitutionBadge/InstitutionBadge.tsx +3 -2
- package/src/components/LazyList/LazyList.tsx +2 -1
- package/src/components/LinearMeter/LinearMeter.tsx +3 -2
- package/src/components/LinearProgress/LinearProgress.tsx +2 -1
- package/src/components/ListGroup/ListGroup.tsx +2 -1
- package/src/components/ListItem/ListItem.tsx +3 -2
- package/src/components/LottieIntroBlock/LottieIntroBlock.tsx +2 -1
- package/src/components/LottiePlayer/LottiePlayer.tsx +3 -2
- package/src/components/LottiePlayer/LottiePlayer.web.tsx +3 -2
- package/src/components/LottiePlayer/loadNativeLottieView.tsx +9 -13
- package/src/components/MediaCard/MediaCard.tsx +7 -6
- package/src/components/MerchantProfile/MerchantProfile.tsx +2 -1
- package/src/components/MessageField/MessageField.tsx +3 -2
- package/src/components/MetricLegendItem/MetricLegendItem.tsx +2 -1
- package/src/components/MoneyValue/MoneyValue.tsx +2 -1
- package/src/components/MonthlyStatusGrid/MonthlyStatusGrid.tsx +5 -4
- package/src/components/NavArrow/NavArrow.tsx +3 -2
- package/src/components/NoteInput/NoteInput.tsx +10 -7
- package/src/components/Nudge/Nudge.tsx +3 -2
- package/src/components/Numpad/Numpad.tsx +2 -1
- package/src/components/OTP/OTP.tsx +3 -2
- package/src/components/Overlay/Overlay.tsx +114 -0
- package/src/components/PageHero/PageHero.tsx +2 -1
- package/src/components/PaymentFeedback/PaymentFeedback.tsx +2 -1
- package/src/components/PdpCcCard/PdpCcCard.tsx +356 -0
- package/src/components/PlanComparisonCard/PlanComparisonCard.tsx +2 -1
- package/src/components/Popup/Popup.tsx +2 -1
- package/src/components/PortfolioHero/PortfolioHero.tsx +2 -1
- package/src/components/PoweredByLabel/PoweredByLabel.tsx +2 -1
- package/src/components/ProductLabel/ProductLabel.tsx +2 -1
- package/src/components/ProductMerchandisingCard/GlassFill.tsx +276 -0
- package/src/components/ProductMerchandisingCard/GlassFill.web.tsx +127 -0
- package/src/components/ProductMerchandisingCard/ProductMerchandisingCard.tsx +423 -0
- package/src/components/ProductOverview/ProductOverview.tsx +2 -1
- package/src/components/ProgressBadge/ProgressBadge.tsx +2 -1
- package/src/components/ProjectionMarker/ProjectionMarker.tsx +277 -0
- package/src/components/Radio/Radio.tsx +7 -5
- package/src/components/RangeTrack/RangeTrack.tsx +3 -2
- package/src/components/RechargeCard/RechargeCard.tsx +2 -1
- package/src/components/SavingsGoalSummary/SavingsGoalSummary.tsx +2 -1
- package/src/components/Screen/Screen.tsx +2 -1
- package/src/components/Section/Section.tsx +6 -5
- package/src/components/SegmentedControl/SegmentedControl.tsx +3 -2
- package/src/components/SegmentedTrack/SegmentedTrack.tsx +5 -4
- package/src/components/Slider/Slider.tsx +628 -0
- package/src/components/Slot/Slot.tsx +2 -1
- package/src/components/Spinner/Spinner.tsx +2 -1
- package/src/components/StatGroup/StatGroup.tsx +3 -2
- package/src/components/StatItem/StatItem.tsx +2 -1
- package/src/components/StatusHero/StatusHero.tsx +2 -1
- package/src/components/Stepper/Step.tsx +2 -1
- package/src/components/Stepper/StepLabel.tsx +2 -1
- package/src/components/Stepper/Stepper.tsx +2 -1
- package/src/components/StrengthIndicator/StrengthIndicator.tsx +2 -1
- package/src/components/SuggestiveSearch/SuggestiveSearch.tsx +4 -3
- package/src/components/SummaryTile/SummaryTile.tsx +2 -1
- package/src/components/SupportText/SupportText.tsx +2 -1
- package/src/components/SupportText/SupportTextIcon.tsx +2 -1
- package/src/components/SwappableAmount/SwappableAmount.tsx +2 -1
- package/src/components/Tabs/TabItem.tsx +2 -1
- package/src/components/Tabs/Tabs.tsx +2 -1
- package/src/components/TestimonialsCard/TestimonialsCard.tsx +2 -1
- package/src/components/Text/Text.tsx +2 -1
- package/src/components/TextInput/TextInput.tsx +18 -13
- package/src/components/TextSegment/TextSegment.tsx +166 -0
- package/src/components/ThreadHero/ThreadHero.tsx +2 -1
- package/src/components/Title/Title.tsx +2 -1
- package/src/components/Toast/Toast.tsx +2 -1
- package/src/components/Toast/ToastProvider.tsx +2 -1
- package/src/components/Toast/useToast.ts +3 -2
- package/src/components/Toggle/Toggle.tsx +2 -1
- package/src/components/Tooltip/Tooltip.tsx +3 -2
- package/src/components/TransactionBubble/TransactionBubble.tsx +2 -1
- package/src/components/TransactionDetails/TransactionDetails.tsx +3 -2
- package/src/components/TransactionStatus/TransactionStatus.tsx +3 -2
- package/src/components/UpiHandle/UpiHandle.tsx +3 -2
- package/src/components/VStack/VStack.tsx +2 -1
- package/src/components/docs/modeControls.tsx +122 -0
- package/src/components/index.ts +11 -1
- package/src/design-tokens/Coin Variables-variables-full.json +1 -1
- package/src/design-tokens/JFSThemeProvider.tsx +4 -3
- package/src/design-tokens/figma-modes.generated.ts +425 -0
- package/src/design-tokens/index.ts +1 -0
- package/src/icons/registry.ts +1 -1
- package/src/skeleton/Skeleton.tsx +2 -1
- package/src/utils/react-utils.ts +26 -2
- package/lib/typescript/scripts/extract-component-tokens.d.ts +0 -9
- package/lib/typescript/scripts/generate-component-docs.d.ts +0 -9
- package/lib/typescript/scripts/generate-icon-registry.d.ts +0 -3
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import React, { useState } from 'react'
|
|
2
|
-
import { View, Text, Pressable, type StyleProp, type ViewStyle, type TextStyle, type TextInputProps as RNTextInputProps } from 'react-native'
|
|
1
|
+
import React, { forwardRef, useState } from 'react'
|
|
2
|
+
import { View, Text, Pressable, TextInput as RNTextInput, type StyleProp, type ViewStyle, type TextStyle, type TextInputProps as RNTextInputProps } from 'react-native'
|
|
3
3
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
4
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
5
5
|
import Icon from '../../icons/Icon'
|
|
6
6
|
import TextInput from '../TextInput/TextInput'
|
|
7
|
+
import type { Modes } from '../../design-tokens'
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* SupportText component derived from Figma design.
|
|
@@ -15,7 +16,7 @@ type SupportTextProps = {
|
|
|
15
16
|
* Defaults to 'ic_info'.
|
|
16
17
|
*/
|
|
17
18
|
iconName?: string;
|
|
18
|
-
modes?:
|
|
19
|
+
modes?: Modes;
|
|
19
20
|
style?: StyleProp<ViewStyle>;
|
|
20
21
|
}
|
|
21
22
|
|
|
@@ -64,7 +65,7 @@ export type InputSearchProps = {
|
|
|
64
65
|
* (e.g. 'ic_info', 'ic_cart'). Defaults to 'ic_info'.
|
|
65
66
|
*/
|
|
66
67
|
supportTextIcon?: string;
|
|
67
|
-
modes?:
|
|
68
|
+
modes?: Modes;
|
|
68
69
|
containerStyle?: StyleProp<ViewStyle>;
|
|
69
70
|
|
|
70
71
|
// Props to pass through to TextInput
|
|
@@ -80,7 +81,7 @@ export type InputSearchProps = {
|
|
|
80
81
|
accessibilityHint?: string;
|
|
81
82
|
} & Omit<RNTextInputProps, 'style' | 'onChangeText' | 'onFocus' | 'onBlur' | 'placeholder' | 'value'>;
|
|
82
83
|
|
|
83
|
-
|
|
84
|
+
const InputSearch = forwardRef<RNTextInput, InputSearchProps>(function InputSearch({
|
|
84
85
|
supportText = true,
|
|
85
86
|
supportTextLabel = "Support Text",
|
|
86
87
|
supportTextIcon = "ic_info",
|
|
@@ -95,7 +96,7 @@ export default function InputSearch({
|
|
|
95
96
|
trailing,
|
|
96
97
|
inputStyle,
|
|
97
98
|
...rest
|
|
98
|
-
}: InputSearchProps) {
|
|
99
|
+
}: InputSearchProps, ref: React.Ref<RNTextInput>) {
|
|
99
100
|
const [isFocused, setIsFocused] = useState(false)
|
|
100
101
|
|
|
101
102
|
// Hardcode InputState based on the state prop, ignoring any external InputState passed in modes
|
|
@@ -155,6 +156,7 @@ export default function InputSearch({
|
|
|
155
156
|
gap: formFieldGap,
|
|
156
157
|
}, containerStyle]}>
|
|
157
158
|
<TextInput
|
|
159
|
+
ref={ref}
|
|
158
160
|
placeholder={placeholder}
|
|
159
161
|
value={value || ''}
|
|
160
162
|
onChangeText={onChangeText || (() => { })}
|
|
@@ -177,4 +179,6 @@ export default function InputSearch({
|
|
|
177
179
|
)}
|
|
178
180
|
</View>
|
|
179
181
|
)
|
|
180
|
-
}
|
|
182
|
+
})
|
|
183
|
+
|
|
184
|
+
export default InputSearch
|
|
@@ -10,6 +10,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
10
10
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
11
11
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
12
12
|
import MediaSource, { type UnifiedSource } from '../../utils/MediaSource'
|
|
13
|
+
import type { Modes } from '../../design-tokens'
|
|
13
14
|
|
|
14
15
|
// Default avatar asset (shared with the Avatar component) so that
|
|
15
16
|
// InstitutionBadge has a sensible visual fallback when no `source` is
|
|
@@ -35,7 +36,7 @@ export type InstitutionBadgeProps = InstitutionBadgeBaseProps & {
|
|
|
35
36
|
/** Slot replacing the default Avatar (e.g. for monogram avatars). Receives `modes` recursively. */
|
|
36
37
|
avatarSlot?: React.ReactNode
|
|
37
38
|
/** Design token modes forwarded to token lookups and the Avatar slot. */
|
|
38
|
-
modes?:
|
|
39
|
+
modes?: Modes
|
|
39
40
|
/** Container style override. */
|
|
40
41
|
style?: StyleProp<ViewStyle>
|
|
41
42
|
/** Label style override. */
|
|
@@ -77,7 +78,7 @@ const toFontWeight = (value: unknown, fallback: TextStyle['fontWeight']) => {
|
|
|
77
78
|
}
|
|
78
79
|
|
|
79
80
|
function resolveInstitutionBadgeTokens(
|
|
80
|
-
modes:
|
|
81
|
+
modes: Modes
|
|
81
82
|
): InstitutionBadgeTokens {
|
|
82
83
|
const gap = toNumber(getVariableByName('institutionBadge/gap', modes), 8)
|
|
83
84
|
|
|
@@ -2,10 +2,11 @@ import React from 'react'
|
|
|
2
2
|
import { View, type StyleProp, type ViewStyle } from 'react-native'
|
|
3
3
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
4
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
5
|
+
import type { Modes } from '../../design-tokens'
|
|
5
6
|
|
|
6
7
|
type LazyListProps = {
|
|
7
8
|
listGroupsSlot?: React.ReactNode;
|
|
8
|
-
modes?:
|
|
9
|
+
modes?: Modes;
|
|
9
10
|
style?: StyleProp<ViewStyle>;
|
|
10
11
|
accessibilityLabel?: string;
|
|
11
12
|
accessibilityHint?: string;
|
|
@@ -4,10 +4,11 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
4
4
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
5
5
|
import MoneyValue from '../MoneyValue/MoneyValue'
|
|
6
6
|
import LinearProgress from '../LinearProgress/LinearProgress'
|
|
7
|
+
import type { Modes } from '../../design-tokens'
|
|
7
8
|
|
|
8
9
|
type LinearMeterLabelProps = {
|
|
9
10
|
children: React.ReactNode
|
|
10
|
-
modes?:
|
|
11
|
+
modes?: Modes
|
|
11
12
|
style?: StyleProp<TextStyle>
|
|
12
13
|
} & React.ComponentProps<typeof Text>
|
|
13
14
|
|
|
@@ -41,7 +42,7 @@ const LinearMeterLabel = ({
|
|
|
41
42
|
|
|
42
43
|
export type LinearMeterProps = {
|
|
43
44
|
value?: number // 0 to 1
|
|
44
|
-
modes?:
|
|
45
|
+
modes?: Modes
|
|
45
46
|
style?: StyleProp<ViewStyle>
|
|
46
47
|
trackStyle?: StyleProp<ViewStyle>
|
|
47
48
|
indicatorStyle?: StyleProp<ViewStyle>
|
|
@@ -7,12 +7,13 @@ import {
|
|
|
7
7
|
} from 'react-native'
|
|
8
8
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
9
9
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
10
|
+
import type { Modes } from '../../design-tokens'
|
|
10
11
|
|
|
11
12
|
export type LinearProgressProps = {
|
|
12
13
|
/** Progress value between 0 and 1. Values are clamped. */
|
|
13
14
|
value?: number
|
|
14
15
|
/** Design token modes for theming */
|
|
15
|
-
modes?:
|
|
16
|
+
modes?: Modes
|
|
16
17
|
/** Override container styles (the track wrapper) */
|
|
17
18
|
style?: StyleProp<ViewStyle>
|
|
18
19
|
/** Override the track styles */
|
|
@@ -7,12 +7,13 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
7
7
|
* This ensures that all child components in slots receive the modes prop from the parent.
|
|
8
8
|
*/
|
|
9
9
|
import { EMPTY_MODES, cloneChildrenWithModes, flattenChildren } from '../../utils/react-utils'
|
|
10
|
+
import type { Modes } from '../../design-tokens'
|
|
10
11
|
|
|
11
12
|
type ListGroupProps = {
|
|
12
13
|
label?: string;
|
|
13
14
|
listGroupSlot?: React.ReactNode;
|
|
14
15
|
children?: React.ReactNode;
|
|
15
|
-
modes?:
|
|
16
|
+
modes?: Modes;
|
|
16
17
|
style?: StyleProp<ViewStyle>;
|
|
17
18
|
accessibilityLabel?: string;
|
|
18
19
|
accessibilityHint?: string;
|
|
@@ -14,6 +14,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
14
14
|
import NavArrow from '../NavArrow/NavArrow'
|
|
15
15
|
import { usePressableWebSupport, type WebAccessibilityProps } from '../../utils/web-platform-utils'
|
|
16
16
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
17
|
+
import type { Modes } from '../../design-tokens'
|
|
17
18
|
|
|
18
19
|
type ListItemProps = {
|
|
19
20
|
layout?: 'Vertical' | 'Horizontal';
|
|
@@ -33,7 +34,7 @@ type ListItemProps = {
|
|
|
33
34
|
endSlot?: React.ReactNode;
|
|
34
35
|
/** Whether to show the NavArrow on the far right (Horizontal layout only). Defaults to true. */
|
|
35
36
|
navArrow?: boolean;
|
|
36
|
-
modes?:
|
|
37
|
+
modes?: Modes;
|
|
37
38
|
onPress?: () => void;
|
|
38
39
|
style?: StyleProp<ViewStyle>;
|
|
39
40
|
contentStyle?: StyleProp<ViewStyle>;
|
|
@@ -79,7 +80,7 @@ interface ListItemTokens {
|
|
|
79
80
|
resolvedModes: Record<string, any>;
|
|
80
81
|
}
|
|
81
82
|
|
|
82
|
-
function resolveListItemTokens(modes:
|
|
83
|
+
function resolveListItemTokens(modes: Modes): ListItemTokens {
|
|
83
84
|
// Modes used to cascade into slot children (leading / supportSlot / trailing).
|
|
84
85
|
// We do NOT inject an `AppearanceBrand` default here: slot content such as
|
|
85
86
|
// Buttons or Badges carry their own intended appearance, so forcing one onto
|
|
@@ -10,6 +10,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
10
10
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
11
11
|
import Button from '../Button/Button'
|
|
12
12
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
13
|
+
import type { Modes } from '../../design-tokens'
|
|
13
14
|
|
|
14
15
|
const DEFAULT_MEDIA_SIZE = 117
|
|
15
16
|
|
|
@@ -40,7 +41,7 @@ export type LottieIntroBlockProps = {
|
|
|
40
41
|
*/
|
|
41
42
|
buttonSlot?: React.ReactNode
|
|
42
43
|
/** Mode configuration for design-token theming. */
|
|
43
|
-
modes?:
|
|
44
|
+
modes?: Modes
|
|
44
45
|
/** Style overrides applied to the outer container. */
|
|
45
46
|
style?: StyleProp<ViewStyle>
|
|
46
47
|
testID?: string
|
|
@@ -4,6 +4,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
4
4
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
5
5
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
6
6
|
import { getNativeLottieView } from './loadNativeLottieView'
|
|
7
|
+
import type { Modes } from '../../design-tokens'
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* A parsed Lottie animation. The JSON object you get from
|
|
@@ -39,7 +40,7 @@ export type LottiePlayerProps = {
|
|
|
39
40
|
/** Loop the animation. Defaults to `true`. */
|
|
40
41
|
loop?: boolean
|
|
41
42
|
/** Mode configuration for design-token theming. */
|
|
42
|
-
modes?:
|
|
43
|
+
modes?: Modes
|
|
43
44
|
/** Style overrides applied to the underlying view. */
|
|
44
45
|
style?: StyleProp<ViewStyle>
|
|
45
46
|
/** Accessibility label. Lottie is decorative by default. */
|
|
@@ -51,7 +52,7 @@ const DEFAULT_SIZE = 117
|
|
|
51
52
|
|
|
52
53
|
function resolveSize(
|
|
53
54
|
size: LottiePlayerProps['size'],
|
|
54
|
-
modes:
|
|
55
|
+
modes: Modes
|
|
55
56
|
) {
|
|
56
57
|
if (typeof size === 'number') return { width: size, height: size }
|
|
57
58
|
if (size && typeof size === 'object') return size
|
|
@@ -4,6 +4,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
4
4
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
5
5
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
6
6
|
import { getWebLottieView } from './loadWebLottieView'
|
|
7
|
+
import type { Modes } from '../../design-tokens'
|
|
7
8
|
|
|
8
9
|
export type LottieAnimationSource = Record<string, unknown>
|
|
9
10
|
|
|
@@ -12,7 +13,7 @@ export type LottiePlayerProps = {
|
|
|
12
13
|
size?: number | { width: number; height: number }
|
|
13
14
|
autoPlay?: boolean
|
|
14
15
|
loop?: boolean
|
|
15
|
-
modes?:
|
|
16
|
+
modes?: Modes
|
|
16
17
|
style?: StyleProp<ViewStyle>
|
|
17
18
|
accessibilityLabel?: string
|
|
18
19
|
testID?: string
|
|
@@ -22,7 +23,7 @@ const DEFAULT_SIZE = 117
|
|
|
22
23
|
|
|
23
24
|
function resolveSize(
|
|
24
25
|
size: LottiePlayerProps['size'],
|
|
25
|
-
modes:
|
|
26
|
+
modes: Modes
|
|
26
27
|
) {
|
|
27
28
|
if (typeof size === 'number') return { width: size, height: size }
|
|
28
29
|
if (size && typeof size === 'object') return size
|
|
@@ -14,17 +14,6 @@ const INSTALL_HINT =
|
|
|
14
14
|
' npm install lottie-react-native\n' +
|
|
15
15
|
' cd ios && pod install'
|
|
16
16
|
|
|
17
|
-
/**
|
|
18
|
-
* Metro resolves `require('lottie-react-native')` at bundle time even inside
|
|
19
|
-
* try/catch, which breaks apps that import `jfs-components` without having
|
|
20
|
-
* the optional peer installed. Splitting the module id into a runtime string
|
|
21
|
-
* keeps Metro from statically linking it — the native module is loaded only
|
|
22
|
-
* when present in the consumer's node_modules.
|
|
23
|
-
*/
|
|
24
|
-
function resolveNativeLottieModuleName() {
|
|
25
|
-
return ['lottie', '-react', '-native'].join('')
|
|
26
|
-
}
|
|
27
|
-
|
|
28
17
|
function LottieUnavailableView({ style }: Pick<NativeLottieViewProps, 'style'>) {
|
|
29
18
|
if (__DEV__) {
|
|
30
19
|
return (
|
|
@@ -75,10 +64,17 @@ export function getNativeLottieView(): React.ComponentType<NativeLottieViewProps
|
|
|
75
64
|
if (cachedView !== undefined) return cachedView
|
|
76
65
|
|
|
77
66
|
try {
|
|
78
|
-
|
|
67
|
+
// Static require so Metro resolves the module by its build-time numeric id.
|
|
68
|
+
// A runtime-constructed string path is NOT resolvable by Metro's `require`
|
|
69
|
+
// (it indexes modules by number, not path), so it would always throw and
|
|
70
|
+
// fall back to the install hint even when the package is installed. The
|
|
71
|
+
// dependency stays an *optional* peer: apps that use LottiePlayer install
|
|
72
|
+
// it; apps that don't simply never import this module.
|
|
73
|
+
const mod = require('lottie-react-native') as {
|
|
79
74
|
default?: React.ComponentType<NativeLottieViewProps>
|
|
75
|
+
LottieView?: React.ComponentType<NativeLottieViewProps>
|
|
80
76
|
}
|
|
81
|
-
cachedView = mod.default ?? LottieUnavailable
|
|
77
|
+
cachedView = mod.default ?? mod.LottieView ?? LottieUnavailable
|
|
82
78
|
} catch {
|
|
83
79
|
cachedView = LottieUnavailable
|
|
84
80
|
}
|
|
@@ -4,8 +4,9 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
4
4
|
import Image from '../Image/Image'
|
|
5
5
|
import GlassFill, { type GlassTint } from './GlassFill'
|
|
6
6
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
7
|
+
import type { Modes } from '../../design-tokens'
|
|
7
8
|
|
|
8
|
-
const MediaCardContext = createContext<{ modes?:
|
|
9
|
+
const MediaCardContext = createContext<{ modes?: Modes }>({})
|
|
9
10
|
|
|
10
11
|
export interface MediaCardProps {
|
|
11
12
|
/**
|
|
@@ -34,7 +35,7 @@ export interface MediaCardProps {
|
|
|
34
35
|
/**
|
|
35
36
|
* Modes object for token resolution.
|
|
36
37
|
*/
|
|
37
|
-
modes?:
|
|
38
|
+
modes?: Modes
|
|
38
39
|
/**
|
|
39
40
|
* Style overrides for the card container.
|
|
40
41
|
*/
|
|
@@ -137,7 +138,7 @@ export function Header({ children, style }: { children?: React.ReactNode; style?
|
|
|
137
138
|
* Title component.
|
|
138
139
|
* Tokens: cardMedia/title/*
|
|
139
140
|
*/
|
|
140
|
-
export function Title({ children, style, modes: propModes }: { children?: React.ReactNode; style?: StyleProp<TextStyle>; modes?:
|
|
141
|
+
export function Title({ children, style, modes: propModes }: { children?: React.ReactNode; style?: StyleProp<TextStyle>; modes?: Modes }) {
|
|
141
142
|
const context = useContext(MediaCardContext)
|
|
142
143
|
const modes = propModes || context.modes || {}
|
|
143
144
|
|
|
@@ -181,7 +182,7 @@ export function Title({ children, style, modes: propModes }: { children?: React.
|
|
|
181
182
|
*
|
|
182
183
|
* Tokens still drive the tint color, blur intensity and inner spacing.
|
|
183
184
|
*/
|
|
184
|
-
export function Footer({ children, style, modes: propModes }: { children?: React.ReactNode; style?: StyleProp<ViewStyle>; modes?:
|
|
185
|
+
export function Footer({ children, style, modes: propModes }: { children?: React.ReactNode; style?: StyleProp<ViewStyle>; modes?: Modes }) {
|
|
185
186
|
const context = useContext(MediaCardContext)
|
|
186
187
|
const modes = propModes || context.modes || {}
|
|
187
188
|
|
|
@@ -245,7 +246,7 @@ export function Footer({ children, style, modes: propModes }: { children?: React
|
|
|
245
246
|
* Footer Title
|
|
246
247
|
* Tokens: cardMedia/footer/title/*
|
|
247
248
|
*/
|
|
248
|
-
export function FooterTitle({ children, style, modes: propModes }: { children?: React.ReactNode; style?: StyleProp<TextStyle>; modes?:
|
|
249
|
+
export function FooterTitle({ children, style, modes: propModes }: { children?: React.ReactNode; style?: StyleProp<TextStyle>; modes?: Modes }) {
|
|
249
250
|
const context = useContext(MediaCardContext)
|
|
250
251
|
const modes = propModes || context.modes || {}
|
|
251
252
|
|
|
@@ -266,7 +267,7 @@ export function FooterTitle({ children, style, modes: propModes }: { children?:
|
|
|
266
267
|
* Footer Subtitle
|
|
267
268
|
* Tokens: cardMedia/footer/subtitle/*
|
|
268
269
|
*/
|
|
269
|
-
export function FooterSubtitle({ children, style, modes: propModes }: { children?: React.ReactNode; style?: StyleProp<TextStyle>; modes?:
|
|
270
|
+
export function FooterSubtitle({ children, style, modes: propModes }: { children?: React.ReactNode; style?: StyleProp<TextStyle>; modes?: Modes }) {
|
|
270
271
|
const context = useContext(MediaCardContext)
|
|
271
272
|
const modes = propModes || context.modes || {}
|
|
272
273
|
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
10
10
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
11
11
|
import Avatar, { type AvatarProps } from '../Avatar/Avatar'
|
|
12
|
+
import type { Modes } from '../../design-tokens'
|
|
12
13
|
|
|
13
14
|
export type MerchantProfileProps = {
|
|
14
15
|
/**
|
|
@@ -23,7 +24,7 @@ export type MerchantProfileProps = {
|
|
|
23
24
|
* Mode configuration passed to the token resolver.
|
|
24
25
|
* Also passed to the Avatar child component for consistent theming.
|
|
25
26
|
*/
|
|
26
|
-
modes?:
|
|
27
|
+
modes?: Modes
|
|
27
28
|
/**
|
|
28
29
|
* Optional style overrides for the container
|
|
29
30
|
*/
|
|
@@ -12,6 +12,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
12
12
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
13
13
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
14
14
|
import { useFormContext } from '../Form/Form'
|
|
15
|
+
import type { Modes } from '../../design-tokens'
|
|
15
16
|
|
|
16
17
|
// ---------------------------------------------------------------------------
|
|
17
18
|
// Types
|
|
@@ -82,7 +83,7 @@ export type MessageFieldProps = {
|
|
|
82
83
|
/** Auto-focus the textarea on mount. */
|
|
83
84
|
autoFocus?: boolean
|
|
84
85
|
/** Modes for design token resolution (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
85
|
-
modes?:
|
|
86
|
+
modes?: Modes
|
|
86
87
|
/** Style overrides for the outermost wrapper. */
|
|
87
88
|
style?: StyleProp<ViewStyle>
|
|
88
89
|
/** Style overrides for the textarea container (border/padding/etc). */
|
|
@@ -129,7 +130,7 @@ function firstError(error: string | string[] | undefined): string | undefined {
|
|
|
129
130
|
return error
|
|
130
131
|
}
|
|
131
132
|
|
|
132
|
-
function useMessageFieldTokens(modes:
|
|
133
|
+
function useMessageFieldTokens(modes: Modes) {
|
|
133
134
|
return useMemo(() => {
|
|
134
135
|
const wrapperGap = toNumber(getVariableByName('messageField/gap', modes), 8)
|
|
135
136
|
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from 'react-native'
|
|
9
9
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
10
10
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
11
|
+
import type { Modes } from '../../design-tokens'
|
|
11
12
|
|
|
12
13
|
export type MetricLegendItemProps = {
|
|
13
14
|
/** The label text on the left (after the indicator). */
|
|
@@ -29,7 +30,7 @@ export type MetricLegendItemProps = {
|
|
|
29
30
|
*/
|
|
30
31
|
indicatorShape?: 'dot' | 'line'
|
|
31
32
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
32
|
-
modes?:
|
|
33
|
+
modes?: Modes
|
|
33
34
|
/** Override container styles. */
|
|
34
35
|
style?: StyleProp<ViewStyle>
|
|
35
36
|
/** Override the indicator (dot) styles. */
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
} from 'react-native'
|
|
11
11
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
12
12
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
13
|
+
import type { Modes } from '../../design-tokens'
|
|
13
14
|
|
|
14
15
|
// Map of common ISO 4217 currency codes to display symbols
|
|
15
16
|
const CURRENCY_SYMBOLS = {
|
|
@@ -58,7 +59,7 @@ export type MoneyValueProps = {
|
|
|
58
59
|
/** When true, a blinking vertical cursor is shown at the end of the value text. */
|
|
59
60
|
focused?: boolean
|
|
60
61
|
/** Modes configuration mapped to Figma tokens. */
|
|
61
|
-
modes?:
|
|
62
|
+
modes?: Modes
|
|
62
63
|
style?: StyleProp<ViewStyle>
|
|
63
64
|
valueStyle?: StyleProp<TextStyle>
|
|
64
65
|
currencyStyle?: StyleProp<TextStyle>
|
|
@@ -10,6 +10,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
10
10
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
11
11
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
12
12
|
import MetricLegendItem from '../MetricLegendItem/MetricLegendItem'
|
|
13
|
+
import type { Modes } from '../../design-tokens'
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* The three semantic states a calendar glyph can be in. Maps 1:1 to the
|
|
@@ -37,7 +38,7 @@ export type MonthlyStatusGridMonth = {
|
|
|
37
38
|
* Per-month design token mode overrides. Merged on top of the parent
|
|
38
39
|
* `modes` and the per-month `Calendar Glyph State` derived from `status`.
|
|
39
40
|
*/
|
|
40
|
-
modes?:
|
|
41
|
+
modes?: Modes
|
|
41
42
|
/** Per-month accessibility label. */
|
|
42
43
|
accessibilityLabel?: string
|
|
43
44
|
}
|
|
@@ -67,7 +68,7 @@ export type MonthlyStatusGridProps = {
|
|
|
67
68
|
*/
|
|
68
69
|
legendStatuses?: MonthlyStatus[]
|
|
69
70
|
/** Design token modes (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
70
|
-
modes?:
|
|
71
|
+
modes?: Modes
|
|
71
72
|
/** Container style override. */
|
|
72
73
|
style?: StyleProp<ViewStyle>
|
|
73
74
|
/** Style applied to the months section (the rows wrapper). */
|
|
@@ -162,7 +163,7 @@ export type CalendarGlyphProps = {
|
|
|
162
163
|
*/
|
|
163
164
|
status?: MonthlyStatus
|
|
164
165
|
/** Design token mode overrides. */
|
|
165
|
-
modes?:
|
|
166
|
+
modes?: Modes
|
|
166
167
|
/** Container style override. */
|
|
167
168
|
style?: StyleProp<ViewStyle>
|
|
168
169
|
/** Label text style override. */
|
|
@@ -268,7 +269,7 @@ function CalendarGlyph({
|
|
|
268
269
|
*/
|
|
269
270
|
function resolveStatusColors(
|
|
270
271
|
status: MonthlyStatus,
|
|
271
|
-
modes:
|
|
272
|
+
modes: Modes
|
|
272
273
|
): { bg: string; fg: string; statusModes: Record<string, any> } {
|
|
273
274
|
const statusModes = { ...modes, 'Calendar Glyph State': status }
|
|
274
275
|
const bg =
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
type SafePressableProps,
|
|
15
15
|
} from '../../utils/web-platform-utils'
|
|
16
16
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
17
|
+
import type { Modes } from '../../design-tokens'
|
|
17
18
|
|
|
18
19
|
type NavArrowDirection = 'Back' | 'Forward' | 'Down'
|
|
19
20
|
|
|
@@ -33,7 +34,7 @@ type NavArrowProps = SafePressableProps & {
|
|
|
33
34
|
/** Direction of the arrow: 'Back' (left chevron), 'Forward' (right chevron), or 'Down' */
|
|
34
35
|
direction?: NavArrowDirection
|
|
35
36
|
/** Modes used to resolve design tokens */
|
|
36
|
-
modes?:
|
|
37
|
+
modes?: Modes
|
|
37
38
|
/** Optional additional container style */
|
|
38
39
|
style?: StyleProp<ViewStyle>
|
|
39
40
|
/** Accessibility label for the arrow */
|
|
@@ -55,7 +56,7 @@ interface NavArrowTokens {
|
|
|
55
56
|
backgroundColor: string
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
function resolveNavArrowTokens(modes:
|
|
59
|
+
function resolveNavArrowTokens(modes: Modes): NavArrowTokens {
|
|
59
60
|
const iconColor =
|
|
60
61
|
(getVariableByName('navArrow/icon/color', modes) as string) || '#24262b'
|
|
61
62
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState, useRef
|
|
1
|
+
import React, { forwardRef, useState, useRef } from 'react'
|
|
2
2
|
import {
|
|
3
3
|
View,
|
|
4
4
|
TextInput as RNTextInput,
|
|
@@ -11,7 +11,8 @@ import {
|
|
|
11
11
|
type TextInputProps,
|
|
12
12
|
} from 'react-native'
|
|
13
13
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
14
|
-
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
14
|
+
import { EMPTY_MODES, mergeRefs } from '../../utils/react-utils'
|
|
15
|
+
import type { Modes } from '../../design-tokens'
|
|
15
16
|
|
|
16
17
|
export type NoteInputProps = {
|
|
17
18
|
/** The value of the text input */
|
|
@@ -21,7 +22,7 @@ export type NoteInputProps = {
|
|
|
21
22
|
/** Callback when text changes */
|
|
22
23
|
onChangeText?: (text: string) => void
|
|
23
24
|
/** Design token modes (e.g., {'InputState': 'Idle', 'Color Mode': 'Light'}) */
|
|
24
|
-
modes?:
|
|
25
|
+
modes?: Modes
|
|
25
26
|
/** Custom container style */
|
|
26
27
|
style?: StyleProp<ViewStyle>
|
|
27
28
|
/** Custom text input style */
|
|
@@ -34,7 +35,7 @@ export type NoteInputProps = {
|
|
|
34
35
|
* NoteInput component representing an interactive "Add note" badge style field.
|
|
35
36
|
* Allows the user to click, clears the placeholder text, and shows a blinking cursor when focused.
|
|
36
37
|
*/
|
|
37
|
-
|
|
38
|
+
const NoteInput = forwardRef<RNTextInput, NoteInputProps>(function NoteInput({
|
|
38
39
|
value = '',
|
|
39
40
|
placeholder = 'Add note',
|
|
40
41
|
onChangeText,
|
|
@@ -45,7 +46,7 @@ export default function NoteInput({
|
|
|
45
46
|
onFocus,
|
|
46
47
|
onBlur,
|
|
47
48
|
...rest
|
|
48
|
-
}: NoteInputProps) {
|
|
49
|
+
}: NoteInputProps, ref: React.Ref<RNTextInput>) {
|
|
49
50
|
const [internalFocused, setInternalFocused] = useState(false)
|
|
50
51
|
const inputRef = useRef<RNTextInput>(null)
|
|
51
52
|
|
|
@@ -119,7 +120,7 @@ export default function NoteInput({
|
|
|
119
120
|
{internalFocused ? (value || ' ') : (value || placeholder)}
|
|
120
121
|
</Text>
|
|
121
122
|
<RNTextInput
|
|
122
|
-
ref={inputRef}
|
|
123
|
+
ref={mergeRefs(inputRef, ref)}
|
|
123
124
|
value={value}
|
|
124
125
|
onChangeText={onChangeText}
|
|
125
126
|
placeholder={internalFocused ? '' : placeholder}
|
|
@@ -144,4 +145,6 @@ export default function NoteInput({
|
|
|
144
145
|
</View>
|
|
145
146
|
</Pressable>
|
|
146
147
|
)
|
|
147
|
-
}
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
export default NoteInput
|
|
@@ -5,6 +5,7 @@ import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
|
5
5
|
import { cloneChildrenWithModes, EMPTY_MODES } from '../../utils/react-utils'
|
|
6
6
|
import Button from '../Button/Button'
|
|
7
7
|
import Icon from '../../icons/Icon'
|
|
8
|
+
import type { Modes } from '../../design-tokens'
|
|
8
9
|
|
|
9
10
|
export type NudgeType = 'stacked-prominent' | 'stacked-detailed' | 'inline-compact'
|
|
10
11
|
|
|
@@ -31,7 +32,7 @@ export type NudgeProps = {
|
|
|
31
32
|
/** Content slot — overrides default content, or provides detailed list content */
|
|
32
33
|
children?: React.ReactNode;
|
|
33
34
|
/** Mode configuration for design token resolution */
|
|
34
|
-
modes?:
|
|
35
|
+
modes?: Modes;
|
|
35
36
|
/** Optional container style overrides */
|
|
36
37
|
style?: StyleProp<ViewStyle>;
|
|
37
38
|
};
|
|
@@ -61,7 +62,7 @@ function toFontWeight(value: unknown, fallback: TextStyle['fontWeight']): TextSt
|
|
|
61
62
|
return fallback
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
function resolveNudgeTokens(modes:
|
|
65
|
+
function resolveNudgeTokens(modes: Modes): NudgeTokens {
|
|
65
66
|
const background = getVariableByName('nudge/background', modes) || '#f5f5f5'
|
|
66
67
|
const radius = getVariableByName('nudge/radius', modes) || 12
|
|
67
68
|
const paddingH = getVariableByName('nudge/padding/horizontal', modes) || 12
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
11
11
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
12
12
|
import Icon from '../../icons/Icon'
|
|
13
|
+
import type { Modes } from '../../design-tokens'
|
|
13
14
|
|
|
14
15
|
export type NumpadKeyValue =
|
|
15
16
|
| '0'
|
|
@@ -27,7 +28,7 @@ export type NumpadKeyValue =
|
|
|
27
28
|
|
|
28
29
|
export interface NumpadProps {
|
|
29
30
|
/** Design token modes for theming (e.g., {"Color Mode": "Light"}) */
|
|
30
|
-
modes?:
|
|
31
|
+
modes?: Modes
|
|
31
32
|
/** Callback fired when any key is pressed */
|
|
32
33
|
onKeyPress?: (key: NumpadKeyValue) => void
|
|
33
34
|
/** Whether to show the decimal point key (default: true) */
|
|
@@ -14,6 +14,7 @@ import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
|
14
14
|
import SupportText, { type SupportTextProps } from '../SupportText/SupportText'
|
|
15
15
|
import Button from '../Button/Button'
|
|
16
16
|
import { cloneChildrenWithModes, EMPTY_MODES } from '../../utils/react-utils'
|
|
17
|
+
import type { Modes } from '../../design-tokens'
|
|
17
18
|
|
|
18
19
|
// Default mode overrides for the resend Button. Per design: a small,
|
|
19
20
|
// low-emphasis, neutral-appearance button. Consumers can override any of
|
|
@@ -223,7 +224,7 @@ export type OTPResendConfig = {
|
|
|
223
224
|
}
|
|
224
225
|
|
|
225
226
|
export type OTPResendProps = OTPResendConfig & {
|
|
226
|
-
modes?:
|
|
227
|
+
modes?: Modes
|
|
227
228
|
style?: StyleProp<ViewStyle>
|
|
228
229
|
}
|
|
229
230
|
|
|
@@ -338,7 +339,7 @@ export type OTPProps = {
|
|
|
338
339
|
/** Auto-focus the input on mount. */
|
|
339
340
|
autoFocus?: boolean
|
|
340
341
|
/** Design token modes for Figma token resolution. */
|
|
341
|
-
modes?:
|
|
342
|
+
modes?: Modes
|
|
342
343
|
/** Container style override. */
|
|
343
344
|
style?: StyleProp<ViewStyle>
|
|
344
345
|
/** Optional SupportText rendered below the slots. Pass a string for the label or a ReactNode for full control. */
|