jfs-components 0.0.99 → 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 +18 -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/Dropdown/Dropdown.js +37 -18
- package/lib/commonjs/components/DropdownInput/DropdownInput.js +1 -1
- package/lib/commonjs/components/FullscreenModal/FullscreenModal.js +65 -4
- 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/TestimonialsCard/TestimonialsCard.js +121 -0
- package/lib/commonjs/components/TextInput/TextInput.js +2 -1
- package/lib/commonjs/components/docs/modeControls.js +116 -0
- package/lib/commonjs/components/index.js +14 -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/Dropdown/Dropdown.js +37 -18
- package/lib/module/components/DropdownInput/DropdownInput.js +1 -1
- package/lib/module/components/FullscreenModal/FullscreenModal.js +67 -7
- 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/TestimonialsCard/TestimonialsCard.js +116 -0
- 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 +2 -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 +9 -2
- 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 +52 -0
- 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 +2 -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 +42 -21
- 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 +77 -12
- 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 +163 -0
- 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 +2 -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
|
@@ -12,6 +12,7 @@ import Icon from '../../icons/Icon'
|
|
|
12
12
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
13
13
|
import CircularProgressBarDoted from '../CircularProgressBarDoted/CircularProgressBarDoted'
|
|
14
14
|
import Nudge from '../Nudge/Nudge'
|
|
15
|
+
import type { Modes } from '../../design-tokens'
|
|
15
16
|
|
|
16
17
|
type CircularRatingBaseProps = Omit<React.ComponentProps<typeof View>, 'children' | 'style'>
|
|
17
18
|
|
|
@@ -43,7 +44,7 @@ export type CircularRatingProps = CircularRatingBaseProps & {
|
|
|
43
44
|
/** Optional nudge slot. Receives `modes` recursively. */
|
|
44
45
|
nudgeSlot?: React.ReactNode
|
|
45
46
|
/** Design token modes forwarded to token lookups and child components. */
|
|
46
|
-
modes?:
|
|
47
|
+
modes?: Modes
|
|
47
48
|
/** Optional container style overrides. */
|
|
48
49
|
style?: StyleProp<ViewStyle>
|
|
49
50
|
/** Optional rating ring wrapper style overrides. */
|
|
@@ -92,7 +93,7 @@ const toFontWeight = (value: unknown, fallback: TextStyle['fontWeight']) => {
|
|
|
92
93
|
return fallback
|
|
93
94
|
}
|
|
94
95
|
|
|
95
|
-
function resolveCircularRatingTokens(modes:
|
|
96
|
+
function resolveCircularRatingTokens(modes: Modes): CircularRatingTokens {
|
|
96
97
|
const gap = toNumber(getVariableByName('circularRating/gap', modes), 32)
|
|
97
98
|
const padding = toNumber(getVariableByName('circularRating/padding', modes), 10)
|
|
98
99
|
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
13
13
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
14
14
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
15
|
+
import type { Modes } from '../../design-tokens'
|
|
15
16
|
|
|
16
17
|
/** Where the value/label text sits relative to the circle. */
|
|
17
18
|
export type ClusterBubbleLabelPlacement = 'inside' | 'outside' | 'auto'
|
|
@@ -72,7 +73,7 @@ export type ClusterBubbleProps = {
|
|
|
72
73
|
/** Style override for the outer container. */
|
|
73
74
|
style?: StyleProp<ViewStyle>
|
|
74
75
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
75
|
-
modes?:
|
|
76
|
+
modes?: Modes
|
|
76
77
|
/** Accessibility label. Defaults to a `value + label` composite. */
|
|
77
78
|
accessibilityLabel?: string
|
|
78
79
|
}
|
|
@@ -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 MetricLegendItem from '../MetricLegendItem/MetricLegendItem'
|
|
15
|
+
import type { Modes } from '../../design-tokens'
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* One entry in the {@link CoverageBarComparisonProps.bars} array.
|
|
@@ -54,7 +55,7 @@ export type CoverageBarComparisonItem = {
|
|
|
54
55
|
* Per-bar design token mode overrides. Merged on top of the parent `modes`
|
|
55
56
|
* and the per-index `Emphasis / DataViz` defaults injected by the parent.
|
|
56
57
|
*/
|
|
57
|
-
modes?:
|
|
58
|
+
modes?: Modes
|
|
58
59
|
/** Per-bar accessibility label. */
|
|
59
60
|
accessibilityLabel?: string
|
|
60
61
|
}
|
|
@@ -85,7 +86,7 @@ export type CoverageBarComparisonProps = {
|
|
|
85
86
|
*/
|
|
86
87
|
legendGap?: number
|
|
87
88
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
88
|
-
modes?:
|
|
89
|
+
modes?: Modes
|
|
89
90
|
/** Container style override. */
|
|
90
91
|
style?: StyleProp<ViewStyle>
|
|
91
92
|
/** Style applied to the chart row (the bars container). */
|
|
@@ -10,6 +10,7 @@ import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
|
10
10
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
11
11
|
import Button, { type ButtonProps } from '../Button/Button'
|
|
12
12
|
import CircularProgressBar from '../CircularProgressBar/CircularProgressBar'
|
|
13
|
+
import type { Modes } from '../../design-tokens'
|
|
13
14
|
|
|
14
15
|
type CoverageRingBaseProps = Omit<
|
|
15
16
|
React.ComponentProps<typeof View>,
|
|
@@ -73,7 +74,7 @@ export type CoverageRingProps = CoverageRingBaseProps & {
|
|
|
73
74
|
*/
|
|
74
75
|
children?: React.ReactNode
|
|
75
76
|
/** Design token modes forwarded to token lookups and slot children. */
|
|
76
|
-
modes?:
|
|
77
|
+
modes?: Modes
|
|
77
78
|
/** Container style override. */
|
|
78
79
|
style?: StyleProp<ViewStyle>
|
|
79
80
|
/** Override the support-text style inside the ring. */
|
|
@@ -3,6 +3,7 @@ import { View, Text, Image, type ViewStyle, type TextStyle, type ImageStyle, typ
|
|
|
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
|
const defaultCardArt = require('./cf64a67d5075caa8924d20b4e4e650d47b3ee08b.png')
|
|
8
9
|
|
|
@@ -24,7 +25,7 @@ export type DebitCardProps = {
|
|
|
24
25
|
/** Slot: custom content for the provider logo area (right side of header, after cardType text) */
|
|
25
26
|
providerLogoSlot?: React.ReactNode;
|
|
26
27
|
/** Mode configuration for design token resolution */
|
|
27
|
-
modes?:
|
|
28
|
+
modes?: Modes;
|
|
28
29
|
/** Container style overrides */
|
|
29
30
|
style?: StyleProp<ViewStyle>;
|
|
30
31
|
};
|
|
@@ -3,10 +3,11 @@ import { View, Text, type StyleProp, type ViewStyle, type TextStyle } from 'reac
|
|
|
3
3
|
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
|
+
import type { Modes } from '../../design-tokens'
|
|
6
7
|
|
|
7
8
|
type DisclaimerProps = {
|
|
8
9
|
disclaimer?: string;
|
|
9
|
-
modes?:
|
|
10
|
+
modes?: Modes;
|
|
10
11
|
style?: StyleProp<ViewStyle>;
|
|
11
12
|
textStyle?: StyleProp<TextStyle>;
|
|
12
13
|
accessibilityLabel?: string;
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
} from 'react-native'
|
|
7
7
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
8
8
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
9
|
+
import type { Modes } from '../../design-tokens'
|
|
9
10
|
|
|
10
11
|
export type DividerDirection = 'horizontal' | 'vertical'
|
|
11
12
|
|
|
@@ -19,7 +20,7 @@ export type DividerProps = {
|
|
|
19
20
|
/**
|
|
20
21
|
* Mode configuration passed to the token resolver.
|
|
21
22
|
*/
|
|
22
|
-
modes?:
|
|
23
|
+
modes?: Modes
|
|
23
24
|
/**
|
|
24
25
|
* Optional style overrides for the divider
|
|
25
26
|
*/
|
|
@@ -11,6 +11,7 @@ import Svg, { Circle } from 'react-native-svg'
|
|
|
11
11
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
12
12
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
13
13
|
import { EMPTY_MODES, flattenChildren } from '../../utils/react-utils'
|
|
14
|
+
import type { Modes } from '../../design-tokens'
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Per-segment data definition for the data-driven `segments` prop.
|
|
@@ -32,7 +33,7 @@ export type DonutChartSegmentData = {
|
|
|
32
33
|
* Per-segment design token mode overrides. Merged on top of parent
|
|
33
34
|
* `modes` and the per-index `Appearance / DataViz` defaults.
|
|
34
35
|
*/
|
|
35
|
-
modes?:
|
|
36
|
+
modes?: Modes
|
|
36
37
|
/** Per-segment accessibility label. */
|
|
37
38
|
accessibilityLabel?: string
|
|
38
39
|
}
|
|
@@ -73,7 +74,7 @@ export type DonutChartProps = {
|
|
|
73
74
|
*/
|
|
74
75
|
gap?: number
|
|
75
76
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
76
|
-
modes?:
|
|
77
|
+
modes?: Modes
|
|
77
78
|
/** Override container styles. */
|
|
78
79
|
style?: StyleProp<ViewStyle>
|
|
79
80
|
/** Override default value text styles. */
|
|
@@ -142,7 +143,7 @@ function defaultAppearanceFor(index: number) {
|
|
|
142
143
|
*/
|
|
143
144
|
function resolveSegmentColor(
|
|
144
145
|
color: string | undefined,
|
|
145
|
-
modes:
|
|
146
|
+
modes: Modes
|
|
146
147
|
): string {
|
|
147
148
|
if (color) return color
|
|
148
149
|
return ((getVariableByName('dataViz/bg', modes) as string | null) ?? '#5d00b5')
|
|
@@ -176,7 +177,7 @@ type DonutChartSegmentProps = {
|
|
|
176
177
|
* Design token modes for the segment. Merged with parent `modes` and
|
|
177
178
|
* the per-index `Appearance / DataViz` defaults.
|
|
178
179
|
*/
|
|
179
|
-
modes?:
|
|
180
|
+
modes?: Modes
|
|
180
181
|
/** Per-segment accessibility label. */
|
|
181
182
|
accessibilityLabel?: string
|
|
182
183
|
}
|
|
@@ -446,7 +447,7 @@ function buildArcs({
|
|
|
446
447
|
totalValue: number
|
|
447
448
|
circumference: number
|
|
448
449
|
gapLength: number
|
|
449
|
-
modes:
|
|
450
|
+
modes: Modes
|
|
450
451
|
}): ArcDescriptor[] {
|
|
451
452
|
const arcs: ArcDescriptor[] = []
|
|
452
453
|
const halfGap = gapLength / 2
|
|
@@ -5,6 +5,7 @@ import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
|
5
5
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
6
6
|
import DonutChart, { type DonutChartSegmentData } from '../DonutChart/DonutChart'
|
|
7
7
|
import MetricLegendItem from '../MetricLegendItem/MetricLegendItem'
|
|
8
|
+
import type { Modes } from '../../design-tokens'
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* One row of the `DonutChartSummary`. Each item drives BOTH a donut
|
|
@@ -42,7 +43,7 @@ export type DonutChartSummaryItem = {
|
|
|
42
43
|
* (`Senary`, `Primary`, `Secondary`, `Tertiary`, `Quaternary`,
|
|
43
44
|
* `Quinary`, then cycles).
|
|
44
45
|
*/
|
|
45
|
-
modes?:
|
|
46
|
+
modes?: Modes
|
|
46
47
|
/** Accessibility label for the segment + legend row pairing. */
|
|
47
48
|
accessibilityLabel?: string
|
|
48
49
|
}
|
|
@@ -80,7 +81,7 @@ export type DonutChartSummaryProps = {
|
|
|
80
81
|
*/
|
|
81
82
|
donutGap?: number
|
|
82
83
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
83
|
-
modes?:
|
|
84
|
+
modes?: Modes
|
|
84
85
|
/** Override outer container styles. */
|
|
85
86
|
style?: StyleProp<ViewStyle>
|
|
86
87
|
/** Override the legend container styles. */
|
|
@@ -15,6 +15,8 @@ import Animated, {
|
|
|
15
15
|
} from 'react-native-reanimated'
|
|
16
16
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
17
17
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
18
|
+
import type { Modes } from '../../design-tokens'
|
|
19
|
+
import Overlay from '../Overlay/Overlay'
|
|
18
20
|
|
|
19
21
|
|
|
20
22
|
const AnimatedScrollView = Animated.createAnimatedComponent(ScrollView)
|
|
@@ -54,7 +56,7 @@ function rubberBand(value: number, min: number, max: number, friction: number =
|
|
|
54
56
|
|
|
55
57
|
export type DrawerProps = {
|
|
56
58
|
|
|
57
|
-
modes?:
|
|
59
|
+
modes?: Modes
|
|
58
60
|
style?: import('react-native').StyleProp<import('react-native').ViewStyle>
|
|
59
61
|
title?: string
|
|
60
62
|
/**
|
|
@@ -95,6 +97,19 @@ export type DrawerProps = {
|
|
|
95
97
|
* expanded), so parent components can react programmatically.
|
|
96
98
|
*/
|
|
97
99
|
onStateChange?: (state: 'collapsed' | 'expanded') => void
|
|
100
|
+
/**
|
|
101
|
+
* When `true`, renders a full-screen semi-transparent {@link Overlay} scrim
|
|
102
|
+
* behind the drawer sheet (dimming everything else on screen). Defaults to
|
|
103
|
+
* `false`, in which case nothing is rendered behind the sheet and behaviour
|
|
104
|
+
* is unchanged.
|
|
105
|
+
*/
|
|
106
|
+
showOverlay?: boolean
|
|
107
|
+
/**
|
|
108
|
+
* Called when the overlay scrim (the area outside the sheet) is pressed.
|
|
109
|
+
* Only relevant when `showOverlay` is `true` — typically used to collapse
|
|
110
|
+
* or dismiss the drawer.
|
|
111
|
+
*/
|
|
112
|
+
onOverlayPress?: () => void
|
|
98
113
|
}
|
|
99
114
|
|
|
100
115
|
/**
|
|
@@ -132,6 +147,8 @@ function DrawerInner({
|
|
|
132
147
|
showsVerticalScrollIndicator = false,
|
|
133
148
|
bottomInset = 80,
|
|
134
149
|
onStateChange,
|
|
150
|
+
showOverlay = false,
|
|
151
|
+
onOverlayPress,
|
|
135
152
|
}: DrawerProps, ref: React.Ref<DrawerHandle>) {
|
|
136
153
|
const { height: screenHeight } = useWindowDimensions()
|
|
137
154
|
|
|
@@ -439,6 +456,9 @@ function DrawerInner({
|
|
|
439
456
|
// GestureHandlerRootView must wrap the app root; this overlay only needs to
|
|
440
457
|
// let touches fall through where the sheet isn't.
|
|
441
458
|
<View style={[styles.host, style]} pointerEvents="box-none">
|
|
459
|
+
{/* Full-screen scrim rendered beneath the sheet. Opt-in via `showOverlay`;
|
|
460
|
+
when disabled nothing renders here and touches still fall through. */}
|
|
461
|
+
{showOverlay ? <Overlay modes={modes} {...(onOverlayPress ? { onPress: onOverlayPress } : {})} /> : null}
|
|
442
462
|
<GestureDetector gesture={gesture}>
|
|
443
463
|
<Animated.View
|
|
444
464
|
style={[
|
|
@@ -15,6 +15,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
15
15
|
import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
16
16
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
17
17
|
import Icon from '../../icons/Icon'
|
|
18
|
+
import type { Modes } from '../../design-tokens'
|
|
18
19
|
|
|
19
20
|
const IS_WEB = Platform.OS === 'web'
|
|
20
21
|
|
|
@@ -47,7 +48,7 @@ export type DropdownItemProps = {
|
|
|
47
48
|
/** Optional custom child content (overrides `label`). */
|
|
48
49
|
children?: React.ReactNode
|
|
49
50
|
/** Modes for design token resolution. */
|
|
50
|
-
modes?:
|
|
51
|
+
modes?: Modes
|
|
51
52
|
/** Style overrides for the item container. */
|
|
52
53
|
style?: StyleProp<ViewStyle>
|
|
53
54
|
/** Style overrides for the item label text. */
|
|
@@ -58,7 +59,7 @@ export type DropdownItemProps = {
|
|
|
58
59
|
accessibilityHint?: string
|
|
59
60
|
}
|
|
60
61
|
|
|
61
|
-
function useDropdownItemTokens(modes:
|
|
62
|
+
function useDropdownItemTokens(modes: Modes) {
|
|
62
63
|
return useMemo(() => {
|
|
63
64
|
// The `dropdownItem/background` token aliases through the
|
|
64
65
|
// `Dropdown Item State` collection (Idle | Selected), so we resolve
|
|
@@ -250,7 +251,7 @@ export type DropdownProps = {
|
|
|
250
251
|
*/
|
|
251
252
|
maxHeight?: number
|
|
252
253
|
/** Modes for design token resolution. */
|
|
253
|
-
modes?:
|
|
254
|
+
modes?: Modes
|
|
254
255
|
/** Style overrides for the popup container. */
|
|
255
256
|
style?: StyleProp<ViewStyle>
|
|
256
257
|
/** Accessibility label for the menu surface. */
|
|
@@ -290,15 +291,33 @@ export function Dropdown({
|
|
|
290
291
|
const shadowBlur =
|
|
291
292
|
parseInt(getVariableByName('dropdown/shadow/blur', modes), 10) || 16
|
|
292
293
|
|
|
293
|
-
|
|
294
|
+
// Shadow lives on the OUTER view, which must NOT set `overflow: 'hidden'`.
|
|
295
|
+
// On native, clipping a view also clips its shadow (iOS clips the layer
|
|
296
|
+
// shadow; Android clips the elevation shadow), so the soft popup shadow
|
|
297
|
+
// that renders fine on web (CSS box-shadow paints outside the box) would
|
|
298
|
+
// get cut off. The rounded-corner clipping is moved to a separate inner
|
|
299
|
+
// view below.
|
|
300
|
+
//
|
|
301
|
+
// The `boxShadow` style prop (RN 0.76+ / react-native-web) is used as the
|
|
302
|
+
// single source of truth so the designed color/offset/blur are honored on
|
|
303
|
+
// iOS, Android AND web. We intentionally do NOT also set the legacy
|
|
304
|
+
// `shadow*` / `elevation` props: on the new architecture (and web) those
|
|
305
|
+
// are translated into a box-shadow internally, so combining them with an
|
|
306
|
+
// explicit `boxShadow` would stack two shadows. Android's legacy
|
|
307
|
+
// `elevation` is also undesirable here because it ignores the shadow color
|
|
308
|
+
// and only paints a generic gray shadow.
|
|
309
|
+
const shadowStyle: ViewStyle & { boxShadow?: string } = {
|
|
294
310
|
backgroundColor: background,
|
|
311
|
+
borderRadius: radius,
|
|
312
|
+
boxShadow: `${shadowOffsetX}px ${shadowOffsetY}px ${shadowBlur}px 0px ${shadowColor}`,
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// Inner view carries the rounded corners + clipping so list/scroll content
|
|
316
|
+
// stays inside the radius without affecting the outer view's shadow.
|
|
317
|
+
const clipStyle: ViewStyle = {
|
|
295
318
|
borderRadius: radius,
|
|
296
319
|
overflow: 'hidden',
|
|
297
|
-
|
|
298
|
-
shadowOffset: { width: shadowOffsetX, height: shadowOffsetY },
|
|
299
|
-
shadowOpacity: 1,
|
|
300
|
-
shadowRadius: shadowBlur / 2,
|
|
301
|
-
elevation: 4,
|
|
320
|
+
backgroundColor: background,
|
|
302
321
|
}
|
|
303
322
|
|
|
304
323
|
const content = (
|
|
@@ -309,21 +328,23 @@ export function Dropdown({
|
|
|
309
328
|
|
|
310
329
|
return (
|
|
311
330
|
<View
|
|
312
|
-
style={[
|
|
331
|
+
style={[shadowStyle, style]}
|
|
313
332
|
accessibilityRole="menu"
|
|
314
333
|
accessibilityLabel={accessibilityLabel || 'Dropdown menu'}
|
|
315
334
|
>
|
|
316
|
-
{
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
335
|
+
<View style={clipStyle}>
|
|
336
|
+
{maxHeight != null ? (
|
|
337
|
+
<ScrollView
|
|
338
|
+
style={{ maxHeight }}
|
|
339
|
+
showsVerticalScrollIndicator={true}
|
|
340
|
+
keyboardShouldPersistTaps="handled"
|
|
341
|
+
>
|
|
342
|
+
{content}
|
|
343
|
+
</ScrollView>
|
|
344
|
+
) : (
|
|
345
|
+
content
|
|
346
|
+
)}
|
|
347
|
+
</View>
|
|
327
348
|
</View>
|
|
328
349
|
)
|
|
329
350
|
}
|
|
@@ -27,6 +27,7 @@ import Icon from '../../icons/Icon'
|
|
|
27
27
|
import SupportText from '../SupportText/SupportText'
|
|
28
28
|
import type { SupportTextStatus } from '../SupportText/SupportTextIcon'
|
|
29
29
|
import Dropdown, { DropdownItem, type DropdownItemProps } from '../Dropdown/Dropdown'
|
|
30
|
+
import type { Modes } from '../../design-tokens'
|
|
30
31
|
|
|
31
32
|
const IS_WEB = Platform.OS === 'web'
|
|
32
33
|
|
|
@@ -131,7 +132,7 @@ export type DropdownInputProps = {
|
|
|
131
132
|
/** Whether tapping the backdrop closes the menu. */
|
|
132
133
|
closeOnBackdropPress?: boolean
|
|
133
134
|
/** Modes for design token resolution. */
|
|
134
|
-
modes?:
|
|
135
|
+
modes?: Modes
|
|
135
136
|
/** Style overrides for the outermost wrapper. */
|
|
136
137
|
style?: StyleProp<ViewStyle>
|
|
137
138
|
/** Style overrides for the input row. */
|
|
@@ -152,7 +153,7 @@ export type DropdownInputProps = {
|
|
|
152
153
|
// Token resolution
|
|
153
154
|
// ---------------------------------------------------------------------------
|
|
154
155
|
|
|
155
|
-
function useChevronTokens(modes:
|
|
156
|
+
function useChevronTokens(modes: Modes) {
|
|
156
157
|
return useMemo(() => {
|
|
157
158
|
const iconSize =
|
|
158
159
|
parseInt(getVariableByName('input/iconSize', modes), 10) || 32
|
|
@@ -172,7 +173,7 @@ function toNumber(value: unknown, fallback: number): number {
|
|
|
172
173
|
return fallback
|
|
173
174
|
}
|
|
174
175
|
|
|
175
|
-
function useFormFieldTokens(modes:
|
|
176
|
+
function useFormFieldTokens(modes: Modes) {
|
|
176
177
|
return useMemo(() => {
|
|
177
178
|
const labelColor =
|
|
178
179
|
(getVariableByName('formField/label/color', modes) as string) ||
|
|
@@ -829,7 +830,7 @@ function DropdownInput({
|
|
|
829
830
|
transparent
|
|
830
831
|
statusBarTranslucent
|
|
831
832
|
navigationBarTranslucent
|
|
832
|
-
animationType="
|
|
833
|
+
animationType="none"
|
|
833
834
|
onRequestClose={closeMenu}
|
|
834
835
|
>
|
|
835
836
|
<Pressable
|
|
@@ -5,6 +5,7 @@ import { useTokens } from '../../design-tokens/JFSThemeProvider'
|
|
|
5
5
|
import IconCapsule from '../IconCapsule/IconCapsule'
|
|
6
6
|
import Button from '../Button/Button'
|
|
7
7
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
8
|
+
import type { Modes } from '../../design-tokens'
|
|
8
9
|
|
|
9
10
|
export type EmptyStateProps = {
|
|
10
11
|
/**
|
|
@@ -35,7 +36,7 @@ export type EmptyStateProps = {
|
|
|
35
36
|
/**
|
|
36
37
|
* Mode configuration for theming
|
|
37
38
|
*/
|
|
38
|
-
modes?:
|
|
39
|
+
modes?: Modes;
|
|
39
40
|
style?: StyleProp<ViewStyle>;
|
|
40
41
|
testID?: string;
|
|
41
42
|
}
|
|
@@ -10,6 +10,7 @@ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
|
10
10
|
import { EMPTY_MODES } from '../../utils/react-utils'
|
|
11
11
|
import Checkbox from '../Checkbox/Checkbox'
|
|
12
12
|
import Button from '../Button/Button'
|
|
13
|
+
import type { Modes } from '../../design-tokens'
|
|
13
14
|
|
|
14
15
|
export type ExpandableCheckboxProps = {
|
|
15
16
|
/** Long text label rendered next to the checkbox. */
|
|
@@ -35,7 +36,7 @@ export type ExpandableCheckboxProps = {
|
|
|
35
36
|
/** Number of lines to show when collapsed. Defaults to `1`. */
|
|
36
37
|
collapsedLines?: number
|
|
37
38
|
/** Design token modes for theming (e.g. `{ 'Color Mode': 'Light' }`). */
|
|
38
|
-
modes?:
|
|
39
|
+
modes?: Modes
|
|
39
40
|
/** Override outer container styles. */
|
|
40
41
|
style?: StyleProp<ViewStyle>
|
|
41
42
|
/** Override the label text styles. */
|
|
@@ -3,12 +3,13 @@ import { View, type StyleProp, type ViewStyle } from 'react-native'
|
|
|
3
3
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
|
|
4
4
|
import TextInput from '../TextInput/TextInput'
|
|
5
5
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
|
|
6
|
+
import type { Modes } from '../../design-tokens'
|
|
6
7
|
|
|
7
8
|
type RenderInputArgs = {
|
|
8
9
|
placeholder: string;
|
|
9
10
|
value: string;
|
|
10
11
|
onChangeText?: ((text: string) => void) | undefined;
|
|
11
|
-
modes:
|
|
12
|
+
modes: Modes;
|
|
12
13
|
accessibilityLabel: string;
|
|
13
14
|
accessibilityHint?: string | undefined;
|
|
14
15
|
onFocus?: (e: any) => void;
|
|
@@ -30,7 +31,7 @@ type FilterBarProps = {
|
|
|
30
31
|
* respect the higher-level FilterBar API.
|
|
31
32
|
*/
|
|
32
33
|
renderInput?: (args: RenderInputArgs) => React.ReactNode;
|
|
33
|
-
modes?:
|
|
34
|
+
modes?: Modes;
|
|
34
35
|
style?: StyleProp<ViewStyle>;
|
|
35
36
|
accessibilityLabel?: string;
|
|
36
37
|
accessibilityHint?: string;
|
|
@@ -3,6 +3,7 @@ import { View, type StyleProp, type ViewStyle } from 'react-native'
|
|
|
3
3
|
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
|
+
import type { Modes } from '../../design-tokens'
|
|
6
7
|
|
|
7
8
|
type FormContextValue = {
|
|
8
9
|
validationErrors: Record<string, string | string[]>;
|
|
@@ -19,7 +20,7 @@ export type FormProps = {
|
|
|
19
20
|
children: React.ReactNode;
|
|
20
21
|
validationErrors?: Record<string, string | string[]>;
|
|
21
22
|
onSubmit?: () => void;
|
|
22
|
-
modes?:
|
|
23
|
+
modes?: Modes;
|
|
23
24
|
style?: StyleProp<ViewStyle>;
|
|
24
25
|
accessibilityLabel?: string;
|
|
25
26
|
testID?: string;
|
|
@@ -15,6 +15,7 @@ import SupportText from '../SupportText/SupportText'
|
|
|
15
15
|
import type { SupportTextStatus } from '../SupportText/SupportTextIcon'
|
|
16
16
|
import Icon from '../../icons/Icon'
|
|
17
17
|
import { useFormContext } from '../Form/Form'
|
|
18
|
+
import type { Modes } from '../../design-tokens'
|
|
18
19
|
|
|
19
20
|
export type FormFieldType = 'text' | 'password' | 'email' | 'search' | 'number' | 'phone' | 'url'
|
|
20
21
|
|
|
@@ -76,7 +77,7 @@ export type FormFieldProps = {
|
|
|
76
77
|
/** When true, focuses the input on mount. */
|
|
77
78
|
autoFocus?: boolean
|
|
78
79
|
/** Modes for design token resolution. */
|
|
79
|
-
modes?:
|
|
80
|
+
modes?: Modes
|
|
80
81
|
/** Style overrides for the outermost wrapper. */
|
|
81
82
|
style?: StyleProp<ViewStyle>
|
|
82
83
|
/** Style overrides for the input row container. */
|
|
@@ -116,7 +117,7 @@ function toFontWeight(value: unknown, fallback: TextStyle['fontWeight']): TextSt
|
|
|
116
117
|
return fallback
|
|
117
118
|
}
|
|
118
119
|
|
|
119
|
-
function useFormFieldTokens(modes:
|
|
120
|
+
function useFormFieldTokens(modes: Modes) {
|
|
120
121
|
return useMemo(() => {
|
|
121
122
|
// Wrapper
|
|
122
123
|
const gap = toNumber(getVariableByName('formField/gap', modes), 8)
|