jfs-components 0.1.0 → 0.1.2
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 +8 -0
- package/lib/commonjs/components/AreaLineChart/AreaLineChart.js +1 -1
- package/lib/commonjs/components/Balance/Balance.js +17 -12
- package/lib/commonjs/components/Card/Card.js +2 -1
- package/lib/commonjs/components/CardFeedback/CardFeedback.js +2 -1
- package/lib/commonjs/components/Checkbox/Checkbox.js +2 -1
- package/lib/commonjs/components/Drawer/Drawer.js +13 -4
- package/lib/commonjs/components/DropdownInput/DropdownInput.js +1 -1
- package/lib/commonjs/components/FullscreenModal/FullscreenModal.js +62 -2
- package/lib/commonjs/components/Image/Image.js +11 -5
- package/lib/commonjs/components/LottiePlayer/loadNativeLottieView.js +8 -13
- package/lib/commonjs/components/Overlay/Overlay.js +92 -0
- package/lib/commonjs/components/PlanComparisonCard/PlanComparisonCard.js +2 -1
- package/lib/commonjs/components/TextInput/TextInput.js +2 -1
- package/lib/commonjs/components/docs/modeControls.js +116 -0
- package/lib/commonjs/components/index.js +7 -0
- package/lib/commonjs/design-tokens/JFSThemeProvider.js +1 -1
- package/lib/commonjs/design-tokens/figma-modes.generated.js +391 -0
- package/lib/commonjs/design-tokens/index.js +11 -0
- package/lib/commonjs/icons/registry.js +1 -1
- package/lib/module/components/Accordion/Accordion.js +1 -2
- package/lib/module/components/AreaLineChart/AreaLineChart.js +1 -1
- package/lib/module/components/Balance/Balance.js +18 -13
- package/lib/module/components/Card/Card.js +1 -2
- package/lib/module/components/CardFeedback/CardFeedback.js +1 -2
- package/lib/module/components/Checkbox/Checkbox.js +1 -2
- package/lib/module/components/Drawer/Drawer.js +12 -4
- package/lib/module/components/DropdownInput/DropdownInput.js +1 -1
- package/lib/module/components/FullscreenModal/FullscreenModal.js +64 -5
- package/lib/module/components/Image/Image.js +11 -5
- 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/OTP/OTP.js +1 -2
- package/lib/module/components/Overlay/Overlay.js +87 -0
- package/lib/module/components/PlanComparisonCard/PlanComparisonCard.js +1 -2
- package/lib/module/components/PoweredByLabel/PoweredByLabel.js +1 -2
- package/lib/module/components/RechargeCard/RechargeCard.js +1 -2
- package/lib/module/components/Section/Section.js +1 -2
- package/lib/module/components/TextInput/TextInput.js +1 -2
- package/lib/module/components/UpiHandle/UpiHandle.js +1 -2
- package/lib/module/components/docs/modeControls.js +111 -0
- package/lib/module/components/index.js +1 -0
- package/lib/module/design-tokens/JFSThemeProvider.js +1 -1
- package/lib/module/design-tokens/figma-modes.generated.js +387 -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 +0 -1
- package/lib/typescript/scripts/extract-component-tokens.d.ts +1 -1
- package/lib/typescript/scripts/generate-mode-types.d.ts +2 -0
- package/lib/typescript/scripts/retype-modes.d.cts +2 -0
- 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 +2 -1
- 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/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/Checkbox/Checkbox.d.ts +2 -1
- package/lib/typescript/src/components/CheckboxGroup/CheckboxGroup.d.ts +2 -1
- package/lib/typescript/src/components/CheckboxItem/CheckboxItem.d.ts +2 -1
- 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/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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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/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/ProductOverview/ProductOverview.d.ts +2 -1
- package/lib/typescript/src/components/ProgressBadge/ProgressBadge.d.ts +2 -1
- package/lib/typescript/src/components/Radio/Radio.d.ts +2 -1
- 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/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 +3 -2
- 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 +1 -0
- package/lib/typescript/src/design-tokens/JFSThemeProvider.d.ts +4 -3
- package/lib/typescript/src/design-tokens/figma-modes.generated.d.ts +264 -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 +2 -1
- package/package.json +3 -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 +2 -1
- 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/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/Checkbox/Checkbox.tsx +2 -1
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +2 -1
- package/src/components/CheckboxItem/CheckboxItem.tsx +2 -1
- 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/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 +5 -4
- 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 +3 -2
- 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 +3 -2
- 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 +2 -1
- 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/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/ProductOverview/ProductOverview.tsx +2 -1
- package/src/components/ProgressBadge/ProgressBadge.tsx +2 -1
- package/src/components/Radio/Radio.tsx +2 -1
- 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/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 +3 -2
- 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 +1 -0
- package/src/design-tokens/JFSThemeProvider.tsx +4 -3
- package/src/design-tokens/figma-modes.generated.ts +396 -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 +3 -2
|
@@ -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. */
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import React, { useMemo } from 'react'
|
|
2
|
+
import {
|
|
3
|
+
Pressable,
|
|
4
|
+
StyleSheet,
|
|
5
|
+
View,
|
|
6
|
+
type StyleProp,
|
|
7
|
+
type ViewProps,
|
|
8
|
+
type ViewStyle,
|
|
9
|
+
} from 'react-native'
|
|
10
|
+
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
11
|
+
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
12
|
+
import { cloneChildrenWithModes, EMPTY_MODES } from '../../utils/react-utils'
|
|
13
|
+
import type { Modes } from '../../design-tokens'
|
|
14
|
+
|
|
15
|
+
export type OverlayProps = Omit<ViewProps, 'children' | 'style'> & {
|
|
16
|
+
/**
|
|
17
|
+
* Content rendered on top of the scrim. `modes` are cascaded to every child
|
|
18
|
+
* via {@link cloneChildrenWithModes}. When omitted the overlay renders as a
|
|
19
|
+
* bare backdrop.
|
|
20
|
+
*/
|
|
21
|
+
children?: React.ReactNode
|
|
22
|
+
/**
|
|
23
|
+
* How `children` are positioned within the overlay.
|
|
24
|
+
* - `center` (default): centers content both axes
|
|
25
|
+
* - `top` / `bottom`: pins content to the top/bottom edge
|
|
26
|
+
* - `stretch`: stretches content to fill the overlay
|
|
27
|
+
*/
|
|
28
|
+
contentPlacement?: 'center' | 'top' | 'bottom' | 'stretch'
|
|
29
|
+
/**
|
|
30
|
+
* Called when the scrim (the area outside `children`) is pressed. Typically
|
|
31
|
+
* used to dismiss the overlaid surface. When omitted the backdrop is inert.
|
|
32
|
+
*/
|
|
33
|
+
onPress?: () => void
|
|
34
|
+
/**
|
|
35
|
+
* When `true` (default) the overlay covers its parent via `StyleSheet.absoluteFill`.
|
|
36
|
+
* Set to `false` to lay it out in normal flow (driven by `style`).
|
|
37
|
+
*/
|
|
38
|
+
fill?: boolean
|
|
39
|
+
/**
|
|
40
|
+
* Mode configuration passed to the token resolver and cascaded to children.
|
|
41
|
+
*/
|
|
42
|
+
modes?: Modes
|
|
43
|
+
style?: StyleProp<ViewStyle>
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const PLACEMENT_STYLE: Record<NonNullable<OverlayProps['contentPlacement']>, ViewStyle> = {
|
|
47
|
+
center: { justifyContent: 'center', alignItems: 'center' },
|
|
48
|
+
top: { justifyContent: 'flex-start', alignItems: 'stretch' },
|
|
49
|
+
bottom: { justifyContent: 'flex-end', alignItems: 'stretch' },
|
|
50
|
+
stretch: { justifyContent: 'center', alignItems: 'stretch' },
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Overlay — a token-driven scrim that dims content behind an overlaid surface.
|
|
55
|
+
*
|
|
56
|
+
* Renders a semi-transparent backdrop using the `overlay/background` design
|
|
57
|
+
* token and optionally hosts content (e.g. a modal, sheet or dialog) on top.
|
|
58
|
+
* Pair it with a `Modal` for true full-screen overlays, or drop it inside any
|
|
59
|
+
* relatively-positioned container to dim just that region.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```tsx
|
|
63
|
+
* <Overlay modes={modes} onPress={close}>
|
|
64
|
+
* <Card>Dialog content</Card>
|
|
65
|
+
* </Overlay>
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
function Overlay({
|
|
69
|
+
children,
|
|
70
|
+
contentPlacement = 'center',
|
|
71
|
+
onPress,
|
|
72
|
+
fill = true,
|
|
73
|
+
modes: propModes = EMPTY_MODES,
|
|
74
|
+
style,
|
|
75
|
+
...rest
|
|
76
|
+
}: OverlayProps) {
|
|
77
|
+
const { modes: globalModes } = useTokens()
|
|
78
|
+
const modes = useMemo(() => ({ ...globalModes, ...propModes }), [globalModes, propModes])
|
|
79
|
+
|
|
80
|
+
const { containerStyle, processedChildren } = useMemo(() => {
|
|
81
|
+
const backgroundColor = (getVariableByName('overlay/background', modes) ??
|
|
82
|
+
'rgba(0, 0, 0, 0.7)') as string
|
|
83
|
+
|
|
84
|
+
const container: ViewStyle = {
|
|
85
|
+
backgroundColor,
|
|
86
|
+
overflow: 'hidden',
|
|
87
|
+
...PLACEMENT_STYLE[contentPlacement],
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const processed = children ? cloneChildrenWithModes(children, modes) : null
|
|
91
|
+
|
|
92
|
+
return { containerStyle: container, processedChildren: processed }
|
|
93
|
+
}, [children, modes, contentPlacement])
|
|
94
|
+
|
|
95
|
+
return (
|
|
96
|
+
<View
|
|
97
|
+
style={[fill && StyleSheet.absoluteFill, containerStyle, style]}
|
|
98
|
+
accessibilityViewIsModal
|
|
99
|
+
{...rest}
|
|
100
|
+
>
|
|
101
|
+
{onPress ? (
|
|
102
|
+
<Pressable
|
|
103
|
+
style={StyleSheet.absoluteFill}
|
|
104
|
+
onPress={onPress}
|
|
105
|
+
accessibilityRole="button"
|
|
106
|
+
accessibilityLabel="Dismiss overlay"
|
|
107
|
+
/>
|
|
108
|
+
) : null}
|
|
109
|
+
{processedChildren}
|
|
110
|
+
</View>
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export default React.memo(Overlay)
|
|
@@ -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
|
export type PageHeroProps = {
|
|
15
16
|
/** Small eyebrow text shown above the headline. */
|
|
@@ -50,7 +51,7 @@ export type PageHeroProps = {
|
|
|
50
51
|
*/
|
|
51
52
|
media?: React.ReactNode
|
|
52
53
|
/** Mode configuration for design-token theming. */
|
|
53
|
-
modes?:
|
|
54
|
+
modes?: Modes
|
|
54
55
|
/** Style overrides applied to the outer container. */
|
|
55
56
|
style?: StyleProp<ViewStyle>
|
|
56
57
|
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 IconCapsule from '../IconCapsule/IconCapsule'
|
|
6
6
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
7
|
+
import type { Modes } from '../../design-tokens'
|
|
7
8
|
|
|
8
9
|
export type PaymentFeedbackProps = {
|
|
9
10
|
/** Large heading text, typically a monetary value (e.g. "₹50,000") */
|
|
@@ -25,7 +26,7 @@ export type PaymentFeedbackProps = {
|
|
|
25
26
|
* IconCapsule's color — pass `AppearanceSystem: 'positive' | 'warning' |
|
|
26
27
|
* 'negative'` to render a green/orange/red capsule (defaults to `positive`).
|
|
27
28
|
*/
|
|
28
|
-
modes?:
|
|
29
|
+
modes?: Modes
|
|
29
30
|
style?: ViewStyle
|
|
30
31
|
}
|
|
31
32
|
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
|
|
12
12
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils';
|
|
13
13
|
import Icon from '../../icons/Icon';
|
|
14
|
+
import type { Modes } from '../../design-tokens'
|
|
14
15
|
|
|
15
16
|
/** Figma grid: label column 1.8fr, each plan column 1fr. */
|
|
16
17
|
const LABEL_COLUMN_FR = 1.8;
|
|
@@ -73,7 +74,7 @@ export type PlanComparisonCardProps = {
|
|
|
73
74
|
/** Feature rows compared across the plan columns. */
|
|
74
75
|
rows?: PlanComparisonRow[];
|
|
75
76
|
/** Design token modes for theming (e.g. `{ "Color Mode": "Light" }`). */
|
|
76
|
-
modes?:
|
|
77
|
+
modes?: Modes;
|
|
77
78
|
/** Override the outer container style. */
|
|
78
79
|
style?: StyleProp<ViewStyle>;
|
|
79
80
|
};
|
|
@@ -13,6 +13,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
13
13
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
14
14
|
import VStack from '../VStack/VStack'
|
|
15
15
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
16
|
+
import type { Modes } from '../../design-tokens'
|
|
16
17
|
|
|
17
18
|
export type PopupRef = {
|
|
18
19
|
open: () => void
|
|
@@ -31,7 +32,7 @@ export type PopupProps = {
|
|
|
31
32
|
/** Slot content displayed inside the popup. */
|
|
32
33
|
children?: React.ReactNode
|
|
33
34
|
/** Mode configuration for design token resolution. */
|
|
34
|
-
modes?:
|
|
35
|
+
modes?: Modes
|
|
35
36
|
/** Whether pressing the backdrop closes the popup. */
|
|
36
37
|
closeOnBackdropPress?: boolean
|
|
37
38
|
/** Backdrop overlay color. */
|
|
@@ -10,6 +10,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
10
10
|
import { cloneChildrenWithModes } from '../../utils/react-utils'
|
|
11
11
|
import Avatar from '../Avatar/Avatar'
|
|
12
12
|
import MoneyValue from '../MoneyValue/MoneyValue'
|
|
13
|
+
import type { Modes } from '../../design-tokens'
|
|
13
14
|
|
|
14
15
|
export type PortfolioHeroProps = {
|
|
15
16
|
/** Product label text displayed next to the avatar. */
|
|
@@ -21,7 +22,7 @@ export type PortfolioHeroProps = {
|
|
|
21
22
|
/** Currency symbol or ISO code. */
|
|
22
23
|
currency?: string
|
|
23
24
|
/** Modes configuration mapped to Figma tokens. */
|
|
24
|
-
modes?:
|
|
25
|
+
modes?: Modes
|
|
25
26
|
/** Slot content rendered below the money value (e.g. Badge, subtitle). */
|
|
26
27
|
children?: React.ReactNode
|
|
27
28
|
/** Container style override. */
|
|
@@ -11,6 +11,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
11
11
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
12
12
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
13
13
|
import MediaSource, { type UnifiedSource } from '../../utils/MediaSource'
|
|
14
|
+
import type { Modes } from '../../design-tokens'
|
|
14
15
|
|
|
15
16
|
// Default bundled FINVU brand logo, matching the Figma reference so the
|
|
16
17
|
// component renders correctly out of the box without any image prop.
|
|
@@ -52,7 +53,7 @@ export type PoweredByLabelProps = {
|
|
|
52
53
|
/**
|
|
53
54
|
* Design token modes for theming (e.g. `{ 'Color Mode': 'Dark' }`).
|
|
54
55
|
*/
|
|
55
|
-
modes?:
|
|
56
|
+
modes?: Modes
|
|
56
57
|
/** Container style override. */
|
|
57
58
|
style?: StyleProp<ViewStyle>
|
|
58
59
|
/** Label text style override. */
|
|
@@ -3,6 +3,7 @@ import { View, Text, type ViewStyle, type TextStyle, type ImageSourcePropType }
|
|
|
3
3
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
4
|
import Avatar from '../Avatar/Avatar'
|
|
5
5
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
6
|
+
import type { Modes } from '../../design-tokens'
|
|
6
7
|
|
|
7
8
|
export type ProductLabelProps = {
|
|
8
9
|
/** The product name label text. */
|
|
@@ -10,7 +11,7 @@ export type ProductLabelProps = {
|
|
|
10
11
|
/** Image source for the product avatar. */
|
|
11
12
|
imageSource?: ImageSourcePropType | string
|
|
12
13
|
/** Modes configuration for design token resolution. */
|
|
13
|
-
modes?:
|
|
14
|
+
modes?: Modes
|
|
14
15
|
/** Container style override. */
|
|
15
16
|
style?: ViewStyle
|
|
16
17
|
}
|
|
@@ -11,6 +11,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
11
11
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
12
12
|
import Image from '../Image/Image'
|
|
13
13
|
import ProductLabel from '../ProductLabel/ProductLabel'
|
|
14
|
+
import type { Modes } from '../../design-tokens'
|
|
14
15
|
|
|
15
16
|
export type ProductOverviewStat = {
|
|
16
17
|
/** The large prominent value shown on top, e.g. "995", "3%". */
|
|
@@ -38,7 +39,7 @@ export type ProductOverviewProps = {
|
|
|
38
39
|
*/
|
|
39
40
|
stats?: ProductOverviewStat[]
|
|
40
41
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
41
|
-
modes?:
|
|
42
|
+
modes?: Modes
|
|
42
43
|
/** Container style override. */
|
|
43
44
|
style?: StyleProp<ViewStyle>
|
|
44
45
|
/**
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
10
10
|
import Icon from '../../icons/Icon'
|
|
11
11
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
12
|
+
import type { Modes } from '../../design-tokens'
|
|
12
13
|
|
|
13
14
|
export type ProgressBadgeProps = {
|
|
14
15
|
/** The text displayed in the badge (e.g. "Live price...") */
|
|
@@ -18,7 +19,7 @@ export type ProgressBadgeProps = {
|
|
|
18
19
|
/** The progress value between 0 and 100 */
|
|
19
20
|
value?: number
|
|
20
21
|
/** Modes object passed to `getVariableByName` for design token resolution */
|
|
21
|
-
modes?:
|
|
22
|
+
modes?: Modes
|
|
22
23
|
/** Optional container style overrides */
|
|
23
24
|
style?: StyleProp<ViewStyle>
|
|
24
25
|
/** Optional text style overrides */
|
|
@@ -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
|
// ---------------------------------------------------------------------------
|
|
15
16
|
// Props
|
|
@@ -31,7 +32,7 @@ export interface RadioProps {
|
|
|
31
32
|
/**
|
|
32
33
|
* Modes object for design-token resolution.
|
|
33
34
|
*/
|
|
34
|
-
modes?:
|
|
35
|
+
modes?: Modes
|
|
35
36
|
/**
|
|
36
37
|
* Custom style for the radio container.
|
|
37
38
|
*/
|
|
@@ -9,6 +9,7 @@ import SegmentedTrack, {
|
|
|
9
9
|
} from '../SegmentedTrack/SegmentedTrack'
|
|
10
10
|
import Tabs from '../Tabs/Tabs'
|
|
11
11
|
import TabItem from '../Tabs/TabItem'
|
|
12
|
+
import type { Modes } from '../../design-tokens'
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* One row of data inside a `RangeTrack` tab.
|
|
@@ -48,7 +49,7 @@ export type RangeTrackItem = {
|
|
|
48
49
|
* `modes` and the per-index `Emphasis / DataViz` defaults
|
|
49
50
|
* (`High`, `Medium`, `Low`, then cycles).
|
|
50
51
|
*/
|
|
51
|
-
modes?:
|
|
52
|
+
modes?: Modes
|
|
52
53
|
/** Accessibility label for the segment + legend row pairing. */
|
|
53
54
|
accessibilityLabel?: string
|
|
54
55
|
}
|
|
@@ -119,7 +120,7 @@ export type RangeTrackProps = {
|
|
|
119
120
|
*/
|
|
120
121
|
scrollableTabs?: boolean
|
|
121
122
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
122
|
-
modes?:
|
|
123
|
+
modes?: Modes
|
|
123
124
|
/** Override the outer container styles. */
|
|
124
125
|
style?: StyleProp<ViewStyle>
|
|
125
126
|
/** Override the tab row styles. */
|
|
@@ -5,6 +5,7 @@ import AvatarGroup from '../AvatarGroup/AvatarGroup';
|
|
|
5
5
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
|
|
6
6
|
import { EMPTY_MODES } from '../../utils/react-utils';
|
|
7
7
|
import MoneyValue from '../MoneyValue/MoneyValue';
|
|
8
|
+
import type { Modes } from '../../design-tokens'
|
|
8
9
|
|
|
9
10
|
// Defaults applied to the inner ButtonGroup so the card matches Figma out of
|
|
10
11
|
// the box. They are spread *before* the caller's `modes` so any consumer can
|
|
@@ -62,7 +63,7 @@ export type RechargeCardProps = {
|
|
|
62
63
|
/**
|
|
63
64
|
* Mode configuration for design tokens.
|
|
64
65
|
*/
|
|
65
|
-
modes?:
|
|
66
|
+
modes?: Modes;
|
|
66
67
|
style?: ViewStyle;
|
|
67
68
|
};
|
|
68
69
|
|
|
@@ -11,6 +11,7 @@ import { formatIndianNumber } from '../../utils/number-utils'
|
|
|
11
11
|
import Title from '../Title/Title'
|
|
12
12
|
import LinearProgress from '../LinearProgress/LinearProgress'
|
|
13
13
|
import MetricLegendItem from '../MetricLegendItem/MetricLegendItem'
|
|
14
|
+
import type { Modes } from '../../design-tokens'
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* A single row in the savings-goal legend (current vs. target).
|
|
@@ -72,7 +73,7 @@ export type SavingsGoalSummaryProps = {
|
|
|
72
73
|
* which renders the thicker progress bar from the Figma reference. Caller
|
|
73
74
|
* modes are merged on top and can override every default key.
|
|
74
75
|
*/
|
|
75
|
-
modes?:
|
|
76
|
+
modes?: Modes
|
|
76
77
|
/** Override container styles. */
|
|
77
78
|
style?: StyleProp<ViewStyle>
|
|
78
79
|
/**
|
|
@@ -8,6 +8,7 @@ import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
|
8
8
|
* This ensures that all child components in slots receive the modes prop from the parent.
|
|
9
9
|
*/
|
|
10
10
|
import { cloneChildrenWithModes, EMPTY_MODES } from '../../utils/react-utils'
|
|
11
|
+
import type { Modes } from '../../design-tokens'
|
|
11
12
|
|
|
12
13
|
export interface ScreenProps {
|
|
13
14
|
/**
|
|
@@ -17,7 +18,7 @@ export interface ScreenProps {
|
|
|
17
18
|
/**
|
|
18
19
|
* Modes object to override default variable values.
|
|
19
20
|
*/
|
|
20
|
-
modes?:
|
|
21
|
+
modes?: Modes;
|
|
21
22
|
/**
|
|
22
23
|
* Optional style overrides for the container.
|
|
23
24
|
*/
|
|
@@ -15,6 +15,7 @@ import IconCapsule from '../IconCapsule/IconCapsule'
|
|
|
15
15
|
import ListItem from '../ListItem/ListItem'
|
|
16
16
|
import { usePressableWebSupport, type WebAccessibilityProps } from '../../utils/web-platform-utils'
|
|
17
17
|
import { EMPTY_MODES, cloneChildrenWithModes, flattenChildren } from '../../utils/react-utils'
|
|
18
|
+
import type { Modes } from '../../design-tokens'
|
|
18
19
|
|
|
19
20
|
// Match Button: delay the press visual on iOS so a scroll-cancelled touch
|
|
20
21
|
// never applies the "pressed" style. See Button.tsx for the rationale.
|
|
@@ -356,7 +357,7 @@ type SectionProps = {
|
|
|
356
357
|
slot?: React.ReactNode;
|
|
357
358
|
/** Layout direction of the slot's children. Defaults to 'row' (horizontal). */
|
|
358
359
|
slotDirection?: 'row' | 'column';
|
|
359
|
-
modes?:
|
|
360
|
+
modes?: Modes;
|
|
360
361
|
onPress?: () => void;
|
|
361
362
|
style?: StyleProp<ViewStyle>;
|
|
362
363
|
accessibilityLabel?: string;
|
|
@@ -400,7 +401,7 @@ interface SectionTokens {
|
|
|
400
401
|
slotGap: number;
|
|
401
402
|
}
|
|
402
403
|
|
|
403
|
-
function resolveSectionTokens(modes:
|
|
404
|
+
function resolveSectionTokens(modes: Modes): SectionTokens {
|
|
404
405
|
const backgroundColor = getVariableByName('section/background/color', modes) || '#ffffff'
|
|
405
406
|
const sectionGap = (getVariableByName('section/gap', modes) || 12) as number
|
|
406
407
|
const slotGap = (getVariableByName('slot/gap', modes) || 12) as number
|
|
@@ -630,7 +631,7 @@ function Section({
|
|
|
630
631
|
|
|
631
632
|
type SectionSlotProps = {
|
|
632
633
|
slot: React.ReactNode;
|
|
633
|
-
modes:
|
|
634
|
+
modes: Modes;
|
|
634
635
|
direction: 'row' | 'column';
|
|
635
636
|
rowGap: number;
|
|
636
637
|
columnGap: number;
|
|
@@ -667,7 +668,7 @@ type BentoToggleRenderState = {
|
|
|
667
668
|
type SectionBentoProps = {
|
|
668
669
|
navSlot?: React.ReactNode;
|
|
669
670
|
upiSlot?: React.ReactNode;
|
|
670
|
-
modes?:
|
|
671
|
+
modes?: Modes;
|
|
671
672
|
style?: StyleProp<ViewStyle>;
|
|
672
673
|
accessibilityLabel?: string;
|
|
673
674
|
accessibilityHint?: string;
|
|
@@ -891,7 +892,7 @@ function SectionBento({
|
|
|
891
892
|
type DefaultBentoToggleProps = {
|
|
892
893
|
expanded: boolean;
|
|
893
894
|
onPress: () => void;
|
|
894
|
-
modes:
|
|
895
|
+
modes: Modes;
|
|
895
896
|
moreLabel: string;
|
|
896
897
|
lessLabel: string;
|
|
897
898
|
moreIcon: string;
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
} from 'react-native'
|
|
10
10
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
11
11
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
12
|
+
import type { Modes } from '../../design-tokens'
|
|
12
13
|
|
|
13
14
|
export type SegmentedControlItem = {
|
|
14
15
|
key: React.Key
|
|
@@ -25,7 +26,7 @@ export type SegmentedControlProps = {
|
|
|
25
26
|
/** Callback fired when the selected segment changes */
|
|
26
27
|
onSelectionChange?: (key: React.Key) => void
|
|
27
28
|
/** Design token modes for theming */
|
|
28
|
-
modes?:
|
|
29
|
+
modes?: Modes
|
|
29
30
|
/** Override container styles */
|
|
30
31
|
style?: StyleProp<ViewStyle>
|
|
31
32
|
}
|
|
@@ -39,7 +40,7 @@ function SegmentedControlSegment({
|
|
|
39
40
|
label: string
|
|
40
41
|
active: boolean
|
|
41
42
|
onPress: () => void
|
|
42
|
-
modes:
|
|
43
|
+
modes: Modes
|
|
43
44
|
}) {
|
|
44
45
|
const resolvedModes = {
|
|
45
46
|
...modes,
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
8
8
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
9
9
|
import { EMPTY_MODES, flattenChildren } from '../../utils/react-utils'
|
|
10
|
+
import type { Modes } from '../../design-tokens'
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Per-segment data definition for the data-driven `segments` prop.
|
|
@@ -39,7 +40,7 @@ export type SegmentedTrackSegmentData = {
|
|
|
39
40
|
* Per-segment design token mode overrides. Merged on top of the parent
|
|
40
41
|
* `modes` and the per-index Emphasis defaults.
|
|
41
42
|
*/
|
|
42
|
-
modes?:
|
|
43
|
+
modes?: Modes
|
|
43
44
|
/** Override individual segment styles. */
|
|
44
45
|
style?: StyleProp<ViewStyle>
|
|
45
46
|
/** Per-segment accessibility label. */
|
|
@@ -60,7 +61,7 @@ export type SegmentedTrackProps = {
|
|
|
60
61
|
*/
|
|
61
62
|
children?: React.ReactNode
|
|
62
63
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
63
|
-
modes?:
|
|
64
|
+
modes?: Modes
|
|
64
65
|
/** Override the container styles. */
|
|
65
66
|
style?: StyleProp<ViewStyle>
|
|
66
67
|
/** Style applied to every segment (data-driven mode only). */
|
|
@@ -83,7 +84,7 @@ type SegmentedTrackSegmentProps = {
|
|
|
83
84
|
* Design token modes for the segment. Merged with parent `modes` and the
|
|
84
85
|
* per-index Emphasis defaults injected by the parent `SegmentedTrack`.
|
|
85
86
|
*/
|
|
86
|
-
modes?:
|
|
87
|
+
modes?: Modes | undefined
|
|
87
88
|
/** Override the segment styles. */
|
|
88
89
|
style?: StyleProp<ViewStyle> | undefined
|
|
89
90
|
/** Per-segment accessibility label. */
|
|
@@ -216,7 +217,7 @@ function renderSegments({
|
|
|
216
217
|
}: {
|
|
217
218
|
segments: SegmentedTrackSegmentData[] | undefined
|
|
218
219
|
children: React.ReactNode | undefined
|
|
219
|
-
modes:
|
|
220
|
+
modes: Modes
|
|
220
221
|
segmentStyle: StyleProp<ViewStyle> | undefined
|
|
221
222
|
}): React.ReactNode[] {
|
|
222
223
|
if (children !== undefined && children !== null) {
|
|
@@ -3,6 +3,7 @@ import { View, type StyleProp, type ViewProps, type ViewStyle } from 'react-nati
|
|
|
3
3
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
4
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
5
5
|
import { cloneChildrenWithModes, EMPTY_MODES } from '../../utils/react-utils'
|
|
6
|
+
import type { Modes } from '../../design-tokens'
|
|
6
7
|
|
|
7
8
|
export type SlotLayoutDirection = 'vertical' | 'horizontal'
|
|
8
9
|
|
|
@@ -30,7 +31,7 @@ export type SlotProps = ViewProps & {
|
|
|
30
31
|
/**
|
|
31
32
|
* Mode configuration passed to the token resolver and cascaded to children.
|
|
32
33
|
*/
|
|
33
|
-
modes?:
|
|
34
|
+
modes?: Modes
|
|
34
35
|
style?: StyleProp<ViewStyle>
|
|
35
36
|
}
|
|
36
37
|
|
|
@@ -14,6 +14,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
14
14
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
15
15
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
16
16
|
import { useReducedMotion } from '../../skeleton/useReducedMotion'
|
|
17
|
+
import type { Modes } from '../../design-tokens'
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Per-segment colours, resolved from the Figma `spiner/*` tokens. Consumers can
|
|
@@ -52,7 +53,7 @@ export type SpinnerProps = SpinnerBaseProps & {
|
|
|
52
53
|
/** When false, renders a static resting spinner (also honoured for reduced motion). Defaults to true. */
|
|
53
54
|
animating?: boolean
|
|
54
55
|
/** Design token modes forwarded to token lookups. */
|
|
55
|
-
modes?:
|
|
56
|
+
modes?: Modes
|
|
56
57
|
/** Container style override. */
|
|
57
58
|
style?: StyleProp<ViewStyle>
|
|
58
59
|
/** Accessibility label announced to assistive tech. Defaults to "Loading". */
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from '../../utils/react-utils'
|
|
9
9
|
import StatItem from '../StatItem/StatItem'
|
|
10
10
|
import Divider from '../Divider/Divider'
|
|
11
|
+
import type { Modes } from '../../design-tokens'
|
|
11
12
|
|
|
12
13
|
export type StatGroupItem = {
|
|
13
14
|
/** Stable key for the item. Falls back to the label / index. */
|
|
@@ -34,7 +35,7 @@ export type StatGroupProps = {
|
|
|
34
35
|
*/
|
|
35
36
|
children?: React.ReactNode
|
|
36
37
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
37
|
-
modes?:
|
|
38
|
+
modes?: Modes
|
|
38
39
|
/** Override container styles. */
|
|
39
40
|
style?: StyleProp<ViewStyle>
|
|
40
41
|
}
|
|
@@ -123,7 +124,7 @@ function renderSlotChildren({
|
|
|
123
124
|
}: {
|
|
124
125
|
items?: StatGroupItem[]
|
|
125
126
|
children?: React.ReactNode
|
|
126
|
-
modes:
|
|
127
|
+
modes: Modes
|
|
127
128
|
}): React.ReactNode[] {
|
|
128
129
|
let nodes: React.ReactNode[]
|
|
129
130
|
|
|
@@ -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 StatItemLabelPosition = 'Top' | 'Bottom'
|
|
13
14
|
|
|
@@ -25,7 +26,7 @@ export type StatItemProps = {
|
|
|
25
26
|
*/
|
|
26
27
|
labelPosition?: StatItemLabelPosition
|
|
27
28
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
28
|
-
modes?:
|
|
29
|
+
modes?: Modes
|
|
29
30
|
/** Override container styles. */
|
|
30
31
|
style?: StyleProp<ViewStyle>
|
|
31
32
|
/** Override the label text styles. */
|
|
@@ -5,6 +5,7 @@ import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
|
5
5
|
import IconCapsule from '../IconCapsule/IconCapsule'
|
|
6
6
|
import MoneyValue from '../MoneyValue/MoneyValue'
|
|
7
7
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
8
|
+
import type { Modes } from '../../design-tokens'
|
|
8
9
|
|
|
9
10
|
export type StatusHeroProps = {
|
|
10
11
|
/**
|
|
@@ -26,7 +27,7 @@ export type StatusHeroProps = {
|
|
|
26
27
|
/** Currency symbol or ISO code for the default MoneyValue */
|
|
27
28
|
currency?: string
|
|
28
29
|
/** Mode configuration for design tokens */
|
|
29
|
-
modes?:
|
|
30
|
+
modes?: Modes
|
|
30
31
|
style?: ViewStyle
|
|
31
32
|
}
|
|
32
33
|
|
|
@@ -4,12 +4,13 @@ import Svg, { Path } from 'react-native-svg'
|
|
|
4
4
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
5
5
|
import { StepLabel } from './StepLabel'
|
|
6
6
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
7
|
+
import type { Modes } from '../../design-tokens'
|
|
7
8
|
|
|
8
9
|
export type StepStatus = 'number' | 'complete' | 'error' | 'warning'
|
|
9
10
|
|
|
10
11
|
export type StepProps = {
|
|
11
12
|
children?: React.ReactNode
|
|
12
|
-
modes?:
|
|
13
|
+
modes?: Modes
|
|
13
14
|
style?: ViewStyle
|
|
14
15
|
// Injected by Stepper, or provided manually
|
|
15
16
|
index?: number
|
|
@@ -2,6 +2,7 @@ import React from 'react'
|
|
|
2
2
|
import { View, Text, type ViewStyle, type TextStyle } from 'react-native'
|
|
3
3
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
4
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
5
|
+
import type { Modes } from '../../design-tokens'
|
|
5
6
|
|
|
6
7
|
export type StepLabelProps = {
|
|
7
8
|
title?: string
|
|
@@ -9,7 +10,7 @@ export type StepLabelProps = {
|
|
|
9
10
|
metaText?: string
|
|
10
11
|
subtitle?: boolean
|
|
11
12
|
meta?: boolean
|
|
12
|
-
modes?:
|
|
13
|
+
modes?: Modes
|
|
13
14
|
style?: ViewStyle
|
|
14
15
|
}
|
|
15
16
|
|