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
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, Text } from 'react-native';
|
|
5
|
+
import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
|
|
6
|
+
import { EMPTY_MODES } from '../../utils/react-utils';
|
|
7
|
+
import Avatar from '../Avatar/Avatar';
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
/**
|
|
10
|
+
* TestimonialsCard renders a compact, fixed-width card with a circular avatar,
|
|
11
|
+
* a bold title, and a body paragraph. It is typically used inside a horizontal
|
|
12
|
+
* carousel of customer testimonials.
|
|
13
|
+
*
|
|
14
|
+
* All styling values are resolved from Figma design tokens using the provided
|
|
15
|
+
* `modes`.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <TestimonialsCard
|
|
20
|
+
* title="Aarav S."
|
|
21
|
+
* body="I was dreading renewing my car insurance, but JioFinance made it a breeze."
|
|
22
|
+
* />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function TestimonialsCard({
|
|
26
|
+
title = 'Title',
|
|
27
|
+
body = 'I was dreading renewing my car insurance, but JioFinance made it a breeze.',
|
|
28
|
+
modes = EMPTY_MODES,
|
|
29
|
+
style,
|
|
30
|
+
avatarProps,
|
|
31
|
+
accessibilityLabel
|
|
32
|
+
}) {
|
|
33
|
+
// Container tokens
|
|
34
|
+
const background = getVariableByName('testimonialsCard/background', modes) ?? '#ffffff';
|
|
35
|
+
const borderColor = getVariableByName('testimonialsCard/border/color', modes) ?? '#e8e8e8';
|
|
36
|
+
const radius = getVariableByName('testimonialsCard/radius', modes) ?? 8;
|
|
37
|
+
const gap = getVariableByName('testimonialsCard/gap', modes) ?? 8;
|
|
38
|
+
const paddingHorizontal = getVariableByName('testimonialsCard/padding/horizontal', modes) ?? 12;
|
|
39
|
+
const paddingVertical = getVariableByName('testimonialsCard/padding/vertical', modes) ?? 12;
|
|
40
|
+
|
|
41
|
+
// Title typography tokens
|
|
42
|
+
const titleColor = getVariableByName('testimonialsCard/subtitle/color', modes) ?? '#1a1c1f';
|
|
43
|
+
const titleFontSize = getVariableByName('testimonialsCard/title/fontSize', modes) ?? 14;
|
|
44
|
+
const titleFontFamily = getVariableByName('testimonialsCard/title/fontFamily', modes) ?? 'JioType Var';
|
|
45
|
+
const titleFontWeightRaw = getVariableByName('testimonialsCard/title/fontWeight', modes) ?? 700;
|
|
46
|
+
const titleFontWeight = typeof titleFontWeightRaw === 'number' ? titleFontWeightRaw.toString() : titleFontWeightRaw;
|
|
47
|
+
|
|
48
|
+
// Body typography tokens
|
|
49
|
+
const bodyColor = getVariableByName('testimonialsCard/title/color', modes) ?? '#010101';
|
|
50
|
+
const bodyFontSize = getVariableByName('testimonialsCard/subtitle/fontSize', modes) ?? 12;
|
|
51
|
+
const bodyLineHeight = getVariableByName('testimonialsCard/subtitle/lineHeight', modes) ?? 16;
|
|
52
|
+
const bodyFontFamily = getVariableByName('testimonialsCard/subtitle/fontFamily', modes) ?? 'JioType Var';
|
|
53
|
+
const bodyFontWeightRaw = getVariableByName('testimonialsCard/subtitle/fontWeight', modes) ?? 400;
|
|
54
|
+
const bodyFontWeight = typeof bodyFontWeightRaw === 'number' ? bodyFontWeightRaw.toString() : bodyFontWeightRaw;
|
|
55
|
+
const containerStyle = {
|
|
56
|
+
width: 180,
|
|
57
|
+
backgroundColor: background,
|
|
58
|
+
borderColor: borderColor,
|
|
59
|
+
borderWidth: 1,
|
|
60
|
+
borderRadius: radius,
|
|
61
|
+
paddingHorizontal: paddingHorizontal,
|
|
62
|
+
paddingVertical: paddingVertical,
|
|
63
|
+
alignItems: 'flex-start',
|
|
64
|
+
gap: gap
|
|
65
|
+
};
|
|
66
|
+
const titleTextStyle = {
|
|
67
|
+
color: titleColor,
|
|
68
|
+
fontSize: titleFontSize,
|
|
69
|
+
lineHeight: bodyLineHeight,
|
|
70
|
+
fontFamily: titleFontFamily,
|
|
71
|
+
fontWeight: titleFontWeight,
|
|
72
|
+
width: '100%'
|
|
73
|
+
};
|
|
74
|
+
const bodyTextStyle = {
|
|
75
|
+
color: bodyColor,
|
|
76
|
+
fontSize: bodyFontSize,
|
|
77
|
+
lineHeight: bodyLineHeight,
|
|
78
|
+
fontFamily: bodyFontFamily,
|
|
79
|
+
fontWeight: bodyFontWeight,
|
|
80
|
+
width: '100%'
|
|
81
|
+
};
|
|
82
|
+
const avatarModes = {
|
|
83
|
+
...modes,
|
|
84
|
+
...(avatarProps?.modes || {})
|
|
85
|
+
};
|
|
86
|
+
const resolvedAccessibilityLabel = accessibilityLabel ?? `Testimonial${title ? ` from ${title}` : ''}${body ? `: ${body}` : ''}`;
|
|
87
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
88
|
+
style: [containerStyle, style],
|
|
89
|
+
accessibilityRole: "text",
|
|
90
|
+
accessibilityLabel: resolvedAccessibilityLabel,
|
|
91
|
+
children: [/*#__PURE__*/_jsx(Avatar, {
|
|
92
|
+
style: "Image",
|
|
93
|
+
modes: avatarModes,
|
|
94
|
+
...avatarProps
|
|
95
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
96
|
+
style: textContainerStyle,
|
|
97
|
+
children: [!!title && /*#__PURE__*/_jsx(Text, {
|
|
98
|
+
style: titleTextStyle,
|
|
99
|
+
accessibilityElementsHidden: true,
|
|
100
|
+
importantForAccessibility: "no-hide-descendants",
|
|
101
|
+
children: title
|
|
102
|
+
}), !!body && /*#__PURE__*/_jsx(Text, {
|
|
103
|
+
style: bodyTextStyle,
|
|
104
|
+
accessibilityElementsHidden: true,
|
|
105
|
+
importantForAccessibility: "no-hide-descendants",
|
|
106
|
+
children: body
|
|
107
|
+
})]
|
|
108
|
+
})]
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
const textContainerStyle = {
|
|
112
|
+
width: '100%',
|
|
113
|
+
alignItems: 'flex-start',
|
|
114
|
+
gap: 4
|
|
115
|
+
};
|
|
116
|
+
export default /*#__PURE__*/React.memo(TestimonialsCard);
|
|
@@ -5,7 +5,7 @@ import { Platform, Pressable, View, TextInput as RNTextInput } from 'react-nativ
|
|
|
5
5
|
import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
|
|
6
6
|
import Icon from '../../icons/Icon';
|
|
7
7
|
import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils';
|
|
8
|
-
|
|
8
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
9
|
/**
|
|
10
10
|
* TextInput component that mirrors the Figma "textInput" component.
|
|
11
11
|
*
|
|
@@ -38,7 +38,6 @@ import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils';
|
|
|
38
38
|
* Helper function to convert a color to a more transparent version for placeholder text.
|
|
39
39
|
* Takes a color string (hex, rgb, rgba) and returns it with reduced opacity.
|
|
40
40
|
*/
|
|
41
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
42
41
|
const IS_WEB = Platform.OS === 'web';
|
|
43
42
|
function makePlaceholderColor(color, opacity = 0.5) {
|
|
44
43
|
if (!color || typeof color !== 'string') {
|
|
@@ -7,10 +7,9 @@ import { useTokens } from '../../design-tokens/JFSThemeProvider';
|
|
|
7
7
|
import { EMPTY_MODES } from '../../utils/react-utils';
|
|
8
8
|
import MediaSource from '../../utils/MediaSource';
|
|
9
9
|
import Icon from '../../icons/Icon';
|
|
10
|
-
|
|
10
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
11
|
// Default static asset from the component folder.
|
|
12
12
|
// Consumers can override the image via the `source` prop if needed.
|
|
13
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
13
|
const DEFAULT_AVATAR_IMAGE = require('./Image.png');
|
|
15
14
|
const IS_WEB = Platform.OS === 'web';
|
|
16
15
|
const IS_IOS = Platform.OS === 'ios';
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { FIGMA_MODES, FIGMA_COMPONENT_MODES } from '../../design-tokens/figma-modes.generated';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Storybook helpers that turn a component's design-token collections into real,
|
|
8
|
+
* per-collection `select` controls and merge the picked values into the `modes`
|
|
9
|
+
* prop — so authors get the same enum-driven DX in the Storybook Controls panel
|
|
10
|
+
* that the typed `modes` prop gives them in code.
|
|
11
|
+
*
|
|
12
|
+
* Fully backward compatible:
|
|
13
|
+
* - If nothing is picked, `modes` is left exactly as the story provided it.
|
|
14
|
+
* - Any `modes` value the story already sets WINS over a control selection,
|
|
15
|
+
* so existing stories render identically until someone touches a control.
|
|
16
|
+
* - The synthetic control args are stripped before they reach the component,
|
|
17
|
+
* so they never leak in as unknown props.
|
|
18
|
+
*/
|
|
19
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
20
|
+
const UNSET = '(default)';
|
|
21
|
+
/**
|
|
22
|
+
* Resolve the list of collections to expose. Accepts a component name (looked up
|
|
23
|
+
* in the generated map), an explicit list, or both (merged + de-duplicated).
|
|
24
|
+
*/
|
|
25
|
+
function resolveCollections(componentOrCollections, extra = []) {
|
|
26
|
+
const fromName = typeof componentOrCollections === 'string' ? FIGMA_COMPONENT_MODES[componentOrCollections] || [] : componentOrCollections;
|
|
27
|
+
const merged = new Set([...fromName, ...extra]);
|
|
28
|
+
// Only keep collections that actually have more than one mode to choose from.
|
|
29
|
+
return [...merged].filter(name => {
|
|
30
|
+
const modes = FIGMA_MODES[name];
|
|
31
|
+
return Array.isArray(modes) && modes.length > 1;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Build `argTypes` entries — one `select` per multi-mode collection, grouped
|
|
37
|
+
* under a "Modes" category. Spread the result into your story `meta.argTypes`.
|
|
38
|
+
*/
|
|
39
|
+
export function modeArgTypes(componentOrCollections, extra = []) {
|
|
40
|
+
const collections = resolveCollections(componentOrCollections, extra);
|
|
41
|
+
const argTypes = {};
|
|
42
|
+
for (const name of collections) {
|
|
43
|
+
const modes = FIGMA_MODES[name];
|
|
44
|
+
argTypes[name] = {
|
|
45
|
+
name,
|
|
46
|
+
description: `\`${name}\` collection mode`,
|
|
47
|
+
control: {
|
|
48
|
+
type: 'select'
|
|
49
|
+
},
|
|
50
|
+
options: [UNSET, ...modes],
|
|
51
|
+
table: {
|
|
52
|
+
category: 'Modes'
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return argTypes;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* A decorator that merges the picked collection modes into `args.modes` and
|
|
61
|
+
* strips the synthetic control args before they reach the component.
|
|
62
|
+
*/
|
|
63
|
+
export function modeDecorator(componentOrCollections, extra = []) {
|
|
64
|
+
const collections = resolveCollections(componentOrCollections, extra);
|
|
65
|
+
return function ModeControlsDecorator(Story, context) {
|
|
66
|
+
const args = context?.args || {};
|
|
67
|
+
const picked = {};
|
|
68
|
+
// Start from the real story args so nothing is dropped. Passing only the
|
|
69
|
+
// synthetic keys here would REPLACE the story args in this Storybook
|
|
70
|
+
// renderer, wiping out real props (e.g. `series`, slot nodes) and leaving
|
|
71
|
+
// the component to render empty/crash.
|
|
72
|
+
const override = {
|
|
73
|
+
...args
|
|
74
|
+
};
|
|
75
|
+
for (const name of collections) {
|
|
76
|
+
const value = args[name];
|
|
77
|
+
if (value && value !== UNSET) {
|
|
78
|
+
picked[name] = value;
|
|
79
|
+
}
|
|
80
|
+
// Neutralise the synthetic arg so it is never spread onto the component.
|
|
81
|
+
override[name] = undefined;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Explicit story-provided modes win over control selections.
|
|
85
|
+
override.modes = {
|
|
86
|
+
...picked,
|
|
87
|
+
...(args.modes || {})
|
|
88
|
+
};
|
|
89
|
+
return /*#__PURE__*/_jsx(Story, {
|
|
90
|
+
args: override
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Convenience: returns `{ argTypes, decorators }` to spread directly into a
|
|
97
|
+
* story `meta`.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* const meta = {
|
|
101
|
+
* title: 'Components/Button',
|
|
102
|
+
* component: Button,
|
|
103
|
+
* ...withModeControls('Button'),
|
|
104
|
+
* }
|
|
105
|
+
*/
|
|
106
|
+
export function withModeControls(componentOrCollections, extra = []) {
|
|
107
|
+
return {
|
|
108
|
+
argTypes: modeArgTypes(componentOrCollections, extra),
|
|
109
|
+
decorators: [modeDecorator(componentOrCollections, extra)]
|
|
110
|
+
};
|
|
111
|
+
}
|
|
@@ -64,6 +64,7 @@ export { default as NoteInput } from './NoteInput/NoteInput';
|
|
|
64
64
|
export { default as Nudge } from './Nudge/Nudge';
|
|
65
65
|
export { default as NavArrow } from './NavArrow/NavArrow';
|
|
66
66
|
export { default as Numpad } from './Numpad/Numpad';
|
|
67
|
+
export { default as Overlay } from './Overlay/Overlay';
|
|
67
68
|
export { default as Title } from './Title/Title';
|
|
68
69
|
export { default as Screen } from './Screen/Screen';
|
|
69
70
|
export { default as Section } from './Section/Section';
|
|
@@ -131,6 +132,7 @@ export { default as StatItem } from './StatItem/StatItem';
|
|
|
131
132
|
export { default as StatGroup } from './StatGroup/StatGroup';
|
|
132
133
|
export { default as StrengthIndicator } from './StrengthIndicator/StrengthIndicator';
|
|
133
134
|
export { default as SummaryTile } from './SummaryTile/SummaryTile';
|
|
135
|
+
export { default as TestimonialsCard } from './TestimonialsCard/TestimonialsCard';
|
|
134
136
|
export { default as Text } from './Text/Text';
|
|
135
137
|
export { default as SegmentedControl } from './SegmentedControl/SegmentedControl';
|
|
136
138
|
export { default as Toggle } from './Toggle/Toggle';
|
|
@@ -38,7 +38,7 @@ export const JFSThemeProvider = ({
|
|
|
38
38
|
* Hook to access the current design token context.
|
|
39
39
|
*
|
|
40
40
|
* returns {
|
|
41
|
-
* modes:
|
|
41
|
+
* modes: Modes - The current active modes
|
|
42
42
|
* getVariable: (name: string) => any - Function to resolve a token value
|
|
43
43
|
* }
|
|
44
44
|
*/
|