jfs-components 0.1.0 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/lib/commonjs/components/AmountInput/AmountInput.js +8 -5
- package/lib/commonjs/components/AreaLineChart/AreaLineChart.js +1 -1
- package/lib/commonjs/components/Balance/Balance.js +17 -12
- package/lib/commonjs/components/BenefitCard/BenefitCard.js +231 -0
- package/lib/commonjs/components/Card/Card.js +2 -1
- package/lib/commonjs/components/CardFeedback/CardFeedback.js +2 -1
- package/lib/commonjs/components/CcCard/CcCard.js +470 -0
- package/lib/commonjs/components/Checkbox/Checkbox.js +6 -4
- package/lib/commonjs/components/CheckboxItem/CheckboxItem.js +4 -3
- package/lib/commonjs/components/CompareTable/CompareTable.js +372 -0
- package/lib/commonjs/components/ComparisonBar/ComparisonBar.js +266 -0
- package/lib/commonjs/components/Drawer/Drawer.js +13 -4
- package/lib/commonjs/components/DropdownInput/DropdownInput.js +36 -4
- package/lib/commonjs/components/FormField/FormField.js +4 -3
- package/lib/commonjs/components/FullscreenModal/FullscreenModal.js +62 -2
- package/lib/commonjs/components/Image/Image.js +11 -5
- package/lib/commonjs/components/InputSearch/InputSearch.js +6 -4
- package/lib/commonjs/components/LottiePlayer/loadNativeLottieView.js +8 -13
- package/lib/commonjs/components/NoteInput/NoteInput.js +6 -5
- package/lib/commonjs/components/Overlay/Overlay.js +92 -0
- package/lib/commonjs/components/PdpCcCard/PdpCcCard.js +273 -0
- package/lib/commonjs/components/PlanComparisonCard/PlanComparisonCard.js +2 -1
- package/lib/commonjs/components/ProductMerchandisingCard/GlassFill.js +263 -0
- package/lib/commonjs/components/ProductMerchandisingCard/GlassFill.web.js +116 -0
- package/lib/commonjs/components/ProductMerchandisingCard/ProductMerchandisingCard.js +353 -0
- package/lib/commonjs/components/ProjectionMarker/ProjectionMarker.js +161 -0
- package/lib/commonjs/components/Radio/Radio.js +5 -5
- package/lib/commonjs/components/Slider/Slider.js +473 -0
- package/lib/commonjs/components/TextInput/TextInput.js +15 -9
- package/lib/commonjs/components/TextSegment/TextSegment.js +118 -0
- package/lib/commonjs/components/docs/modeControls.js +116 -0
- package/lib/commonjs/components/index.js +70 -0
- package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/commonjs/design-tokens/JFSThemeProvider.js +1 -1
- package/lib/commonjs/design-tokens/figma-modes.generated.js +420 -0
- package/lib/commonjs/design-tokens/index.js +11 -0
- package/lib/commonjs/icons/registry.js +1 -1
- package/lib/commonjs/utils/react-utils.js +22 -0
- package/lib/module/components/Accordion/Accordion.js +1 -2
- package/lib/module/components/AmountInput/AmountInput.js +6 -4
- package/lib/module/components/AreaLineChart/AreaLineChart.js +1 -1
- package/lib/module/components/Balance/Balance.js +18 -13
- package/lib/module/components/BenefitCard/BenefitCard.js +225 -0
- package/lib/module/components/Card/Card.js +1 -2
- package/lib/module/components/CardFeedback/CardFeedback.js +1 -2
- package/lib/module/components/CcCard/CcCard.js +464 -0
- package/lib/module/components/Checkbox/Checkbox.js +6 -6
- package/lib/module/components/CheckboxItem/CheckboxItem.js +5 -4
- package/lib/module/components/CompareTable/CompareTable.js +367 -0
- package/lib/module/components/ComparisonBar/ComparisonBar.js +260 -0
- package/lib/module/components/Drawer/Drawer.js +12 -4
- package/lib/module/components/DropdownInput/DropdownInput.js +37 -5
- package/lib/module/components/FormField/FormField.js +5 -4
- package/lib/module/components/FullscreenModal/FullscreenModal.js +64 -5
- package/lib/module/components/Image/Image.js +11 -5
- package/lib/module/components/InputSearch/InputSearch.js +6 -4
- package/lib/module/components/InstitutionBadge/InstitutionBadge.js +1 -2
- package/lib/module/components/LottiePlayer/loadNativeLottieView.js +8 -13
- package/lib/module/components/MoneyValue/MoneyValue.js +1 -2
- package/lib/module/components/NoteInput/NoteInput.js +7 -6
- package/lib/module/components/OTP/OTP.js +1 -2
- package/lib/module/components/Overlay/Overlay.js +87 -0
- package/lib/module/components/PdpCcCard/PdpCcCard.js +267 -0
- package/lib/module/components/PlanComparisonCard/PlanComparisonCard.js +1 -2
- package/lib/module/components/PoweredByLabel/PoweredByLabel.js +1 -2
- package/lib/module/components/ProductMerchandisingCard/GlassFill.js +257 -0
- package/lib/module/components/ProductMerchandisingCard/GlassFill.web.js +111 -0
- package/lib/module/components/ProductMerchandisingCard/ProductMerchandisingCard.js +347 -0
- package/lib/module/components/ProjectionMarker/ProjectionMarker.js +156 -0
- package/lib/module/components/Radio/Radio.js +5 -4
- package/lib/module/components/RechargeCard/RechargeCard.js +1 -2
- package/lib/module/components/Section/Section.js +1 -2
- package/lib/module/components/Slider/Slider.js +468 -0
- package/lib/module/components/TextInput/TextInput.js +16 -12
- package/lib/module/components/TextSegment/TextSegment.js +113 -0
- package/lib/module/components/UpiHandle/UpiHandle.js +1 -2
- package/lib/module/components/docs/modeControls.js +111 -0
- package/lib/module/components/index.js +10 -0
- package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/module/design-tokens/JFSThemeProvider.js +1 -1
- package/lib/module/design-tokens/figma-modes.generated.js +416 -0
- package/lib/module/design-tokens/index.js +2 -1
- package/lib/module/icons/registry.js +1 -1
- package/lib/module/utils/react-utils.js +21 -1
- package/lib/typescript/src/components/Accordion/Accordion.d.ts +2 -1
- package/lib/typescript/src/components/AccordionCheckbox/AccordionCheckbox.d.ts +2 -1
- package/lib/typescript/src/components/AccountCard/AccountCard.d.ts +2 -1
- package/lib/typescript/src/components/ActionFooter/ActionFooter.d.ts +2 -1
- package/lib/typescript/src/components/ActionTile/ActionTile.d.ts +2 -1
- package/lib/typescript/src/components/AllocationComparisonChart/AllocationComparisonChart.d.ts +2 -1
- package/lib/typescript/src/components/AmountInput/AmountInput.d.ts +5 -3
- package/lib/typescript/src/components/AppBar/AppBar.d.ts +2 -1
- package/lib/typescript/src/components/AreaLineChart/AreaLineChart.d.ts +3 -2
- package/lib/typescript/src/components/Attached/Attached.d.ts +2 -1
- package/lib/typescript/src/components/Avatar/Avatar.d.ts +2 -1
- package/lib/typescript/src/components/AvatarGroup/AvatarGroup.d.ts +2 -1
- package/lib/typescript/src/components/Badge/Badge.d.ts +2 -1
- package/lib/typescript/src/components/Balance/Balance.d.ts +2 -1
- package/lib/typescript/src/components/BenefitCard/BenefitCard.d.ts +93 -0
- package/lib/typescript/src/components/BottomNav/BottomNav.d.ts +2 -1
- package/lib/typescript/src/components/BottomNavItem/BottomNavItem.d.ts +2 -1
- package/lib/typescript/src/components/BrandChip/BrandChip.d.ts +2 -1
- package/lib/typescript/src/components/BubbleChart/BubbleChart.d.ts +2 -1
- package/lib/typescript/src/components/Button/Button.d.ts +2 -1
- package/lib/typescript/src/components/ButtonGroup/ButtonGroup.d.ts +2 -1
- package/lib/typescript/src/components/Card/Card.d.ts +3 -2
- package/lib/typescript/src/components/CardAdvisory/CardAdvisory.d.ts +2 -1
- package/lib/typescript/src/components/CardBankAccount/CardBankAccount.d.ts +2 -1
- package/lib/typescript/src/components/CardCTA/CardCTA.d.ts +2 -1
- package/lib/typescript/src/components/CardFeedback/CardFeedback.d.ts +7 -6
- package/lib/typescript/src/components/CardFinancialCondition/CardFinancialCondition.d.ts +2 -1
- package/lib/typescript/src/components/CardInsight/CardInsight.d.ts +2 -1
- package/lib/typescript/src/components/CardProviderInfo/CardProviderInfo.d.ts +2 -1
- package/lib/typescript/src/components/Carousel/Carousel.d.ts +4 -3
- package/lib/typescript/src/components/CcCard/CcCard.d.ts +137 -0
- package/lib/typescript/src/components/Checkbox/Checkbox.d.ts +5 -3
- package/lib/typescript/src/components/CheckboxGroup/CheckboxGroup.d.ts +2 -1
- package/lib/typescript/src/components/CheckboxItem/CheckboxItem.d.ts +4 -3
- package/lib/typescript/src/components/ChipGroup/ChipGroup.d.ts +2 -1
- package/lib/typescript/src/components/ChipSelect/ChipSelect.d.ts +2 -1
- package/lib/typescript/src/components/CircularProgressBar/CircularProgressBar.d.ts +2 -1
- package/lib/typescript/src/components/CircularProgressBarDoted/CircularProgressBarDoted.d.ts +2 -1
- package/lib/typescript/src/components/CircularRating/CircularRating.d.ts +2 -1
- package/lib/typescript/src/components/ClusterBubble/ClusterBubble.d.ts +2 -1
- package/lib/typescript/src/components/CompareTable/CompareTable.d.ts +88 -0
- package/lib/typescript/src/components/ComparisonBar/ComparisonBar.d.ts +118 -0
- package/lib/typescript/src/components/CoverageBarComparison/CoverageBarComparison.d.ts +3 -2
- package/lib/typescript/src/components/CoverageRing/CoverageRing.d.ts +2 -1
- package/lib/typescript/src/components/DebitCard/DebitCard.d.ts +2 -1
- package/lib/typescript/src/components/Disclaimer/Disclaimer.d.ts +2 -1
- package/lib/typescript/src/components/Divider/Divider.d.ts +2 -1
- package/lib/typescript/src/components/DonutChart/DonutChart.d.ts +4 -3
- package/lib/typescript/src/components/DonutChartSummary/DonutChartSummary.d.ts +3 -2
- package/lib/typescript/src/components/Drawer/Drawer.d.ts +15 -1
- package/lib/typescript/src/components/Dropdown/Dropdown.d.ts +3 -2
- package/lib/typescript/src/components/DropdownInput/DropdownInput.d.ts +22 -2
- package/lib/typescript/src/components/EmptyState/EmptyState.d.ts +2 -1
- package/lib/typescript/src/components/ExpandableCheckbox/ExpandableCheckbox.d.ts +2 -1
- package/lib/typescript/src/components/FilterBar/FilterBar.d.ts +3 -2
- package/lib/typescript/src/components/Form/Form.d.ts +2 -1
- package/lib/typescript/src/components/FormField/FormField.d.ts +4 -3
- package/lib/typescript/src/components/FullscreenModal/FullscreenModal.d.ts +2 -1
- package/lib/typescript/src/components/Gauge/Gauge.d.ts +2 -1
- package/lib/typescript/src/components/HStack/HStack.d.ts +2 -1
- package/lib/typescript/src/components/HoldingsCard/HoldingsCard.d.ts +2 -1
- package/lib/typescript/src/components/Icon/Icon.d.ts +2 -1
- package/lib/typescript/src/components/IconButton/IconButton.d.ts +2 -1
- package/lib/typescript/src/components/IconCapsule/IconCapsule.d.ts +2 -1
- package/lib/typescript/src/components/Image/Image.d.ts +17 -1
- package/lib/typescript/src/components/InputSearch/InputSearch.d.ts +25 -3
- package/lib/typescript/src/components/InstitutionBadge/InstitutionBadge.d.ts +2 -1
- package/lib/typescript/src/components/LazyList/LazyList.d.ts +2 -1
- package/lib/typescript/src/components/LinearMeter/LinearMeter.d.ts +3 -2
- package/lib/typescript/src/components/LinearProgress/LinearProgress.d.ts +2 -1
- package/lib/typescript/src/components/ListGroup/ListGroup.d.ts +2 -1
- package/lib/typescript/src/components/ListItem/ListItem.d.ts +2 -1
- package/lib/typescript/src/components/LottieIntroBlock/LottieIntroBlock.d.ts +2 -1
- package/lib/typescript/src/components/LottiePlayer/LottiePlayer.d.ts +2 -1
- package/lib/typescript/src/components/LottiePlayer/LottiePlayer.web.d.ts +2 -1
- package/lib/typescript/src/components/MediaCard/MediaCard.d.ts +6 -5
- package/lib/typescript/src/components/MerchantProfile/MerchantProfile.d.ts +2 -1
- package/lib/typescript/src/components/MessageField/MessageField.d.ts +2 -1
- package/lib/typescript/src/components/MetricLegendItem/MetricLegendItem.d.ts +2 -1
- package/lib/typescript/src/components/MoneyValue/MoneyValue.d.ts +2 -1
- package/lib/typescript/src/components/MonthlyStatusGrid/MonthlyStatusGrid.d.ts +4 -3
- package/lib/typescript/src/components/NavArrow/NavArrow.d.ts +2 -1
- package/lib/typescript/src/components/NoteInput/NoteInput.d.ts +21 -3
- package/lib/typescript/src/components/Nudge/Nudge.d.ts +2 -1
- package/lib/typescript/src/components/Numpad/Numpad.d.ts +2 -1
- package/lib/typescript/src/components/OTP/OTP.d.ts +3 -2
- package/lib/typescript/src/components/Overlay/Overlay.d.ts +52 -0
- package/lib/typescript/src/components/PageHero/PageHero.d.ts +2 -1
- package/lib/typescript/src/components/PaymentFeedback/PaymentFeedback.d.ts +2 -1
- package/lib/typescript/src/components/PdpCcCard/PdpCcCard.d.ts +84 -0
- package/lib/typescript/src/components/PlanComparisonCard/PlanComparisonCard.d.ts +2 -1
- package/lib/typescript/src/components/Popup/Popup.d.ts +2 -1
- package/lib/typescript/src/components/PortfolioHero/PortfolioHero.d.ts +2 -1
- package/lib/typescript/src/components/PoweredByLabel/PoweredByLabel.d.ts +2 -1
- package/lib/typescript/src/components/ProductLabel/ProductLabel.d.ts +2 -1
- package/lib/typescript/src/components/ProductMerchandisingCard/GlassFill.d.ts +56 -0
- package/lib/typescript/src/components/ProductMerchandisingCard/GlassFill.web.d.ts +27 -0
- package/lib/typescript/src/components/ProductMerchandisingCard/ProductMerchandisingCard.d.ts +81 -0
- package/lib/typescript/src/components/ProductOverview/ProductOverview.d.ts +2 -1
- package/lib/typescript/src/components/ProgressBadge/ProgressBadge.d.ts +2 -1
- package/lib/typescript/src/components/ProjectionMarker/ProjectionMarker.d.ts +82 -0
- package/lib/typescript/src/components/Radio/Radio.d.ts +5 -3
- package/lib/typescript/src/components/RadioButton/RadioButton.d.ts +2 -2
- package/lib/typescript/src/components/RangeTrack/RangeTrack.d.ts +3 -2
- package/lib/typescript/src/components/RechargeCard/RechargeCard.d.ts +2 -1
- package/lib/typescript/src/components/SavingsGoalSummary/SavingsGoalSummary.d.ts +2 -1
- package/lib/typescript/src/components/Screen/Screen.d.ts +2 -1
- package/lib/typescript/src/components/Section/Section.d.ts +3 -2
- package/lib/typescript/src/components/SegmentedControl/SegmentedControl.d.ts +2 -1
- package/lib/typescript/src/components/SegmentedTrack/SegmentedTrack.d.ts +4 -3
- package/lib/typescript/src/components/Slider/Slider.d.ts +99 -0
- package/lib/typescript/src/components/Slot/Slot.d.ts +2 -1
- package/lib/typescript/src/components/Spinner/Spinner.d.ts +2 -1
- package/lib/typescript/src/components/StatGroup/StatGroup.d.ts +2 -1
- package/lib/typescript/src/components/StatItem/StatItem.d.ts +2 -1
- package/lib/typescript/src/components/StatusHero/StatusHero.d.ts +2 -1
- package/lib/typescript/src/components/Stepper/Step.d.ts +2 -1
- package/lib/typescript/src/components/Stepper/StepLabel.d.ts +2 -1
- package/lib/typescript/src/components/Stepper/Stepper.d.ts +2 -1
- package/lib/typescript/src/components/StrengthIndicator/StrengthIndicator.d.ts +2 -1
- package/lib/typescript/src/components/SuggestiveSearch/SuggestiveSearch.d.ts +2 -1
- package/lib/typescript/src/components/SummaryTile/SummaryTile.d.ts +2 -1
- package/lib/typescript/src/components/SupportText/SupportText.d.ts +2 -1
- package/lib/typescript/src/components/SupportText/SupportTextIcon.d.ts +2 -1
- package/lib/typescript/src/components/SwappableAmount/SwappableAmount.d.ts +2 -1
- package/lib/typescript/src/components/Tabs/TabItem.d.ts +2 -1
- package/lib/typescript/src/components/Tabs/Tabs.d.ts +2 -1
- package/lib/typescript/src/components/TestimonialsCard/TestimonialsCard.d.ts +2 -1
- package/lib/typescript/src/components/Text/Text.d.ts +2 -1
- package/lib/typescript/src/components/TextInput/TextInput.d.ts +12 -31
- package/lib/typescript/src/components/TextSegment/TextSegment.d.ts +100 -0
- package/lib/typescript/src/components/ThreadHero/ThreadHero.d.ts +2 -1
- package/lib/typescript/src/components/Title/Title.d.ts +2 -1
- package/lib/typescript/src/components/Toast/Toast.d.ts +2 -1
- package/lib/typescript/src/components/Toast/ToastProvider.d.ts +2 -1
- package/lib/typescript/src/components/Toast/useToast.d.ts +3 -2
- package/lib/typescript/src/components/Toggle/Toggle.d.ts +2 -1
- package/lib/typescript/src/components/Tooltip/Tooltip.d.ts +2 -1
- package/lib/typescript/src/components/TransactionBubble/TransactionBubble.d.ts +2 -1
- package/lib/typescript/src/components/TransactionDetails/TransactionDetails.d.ts +3 -2
- package/lib/typescript/src/components/TransactionStatus/TransactionStatus.d.ts +2 -1
- package/lib/typescript/src/components/UpiHandle/UpiHandle.d.ts +2 -1
- package/lib/typescript/src/components/VStack/VStack.d.ts +2 -1
- package/lib/typescript/src/components/docs/modeControls.d.ts +28 -0
- package/lib/typescript/src/components/index.d.ts +11 -1
- package/lib/typescript/src/design-tokens/JFSThemeProvider.d.ts +4 -3
- package/lib/typescript/src/design-tokens/figma-modes.generated.d.ts +284 -0
- package/lib/typescript/src/design-tokens/index.d.ts +1 -0
- package/lib/typescript/src/icons/registry.d.ts +1 -1
- package/lib/typescript/src/skeleton/Skeleton.d.ts +2 -1
- package/lib/typescript/src/utils/react-utils.d.ts +12 -1
- package/package.json +4 -2
- package/src/components/Accordion/Accordion.tsx +2 -1
- package/src/components/AccordionCheckbox/AccordionCheckbox.tsx +2 -1
- package/src/components/AccountCard/AccountCard.tsx +2 -1
- package/src/components/ActionFooter/ActionFooter.tsx +2 -1
- package/src/components/ActionTile/ActionTile.tsx +2 -1
- package/src/components/AllocationComparisonChart/AllocationComparisonChart.tsx +2 -1
- package/src/components/AmountInput/AmountInput.tsx +9 -6
- package/src/components/AppBar/AppBar.tsx +2 -1
- package/src/components/AreaLineChart/AreaLineChart.tsx +8 -7
- package/src/components/Attached/Attached.tsx +2 -1
- package/src/components/Avatar/Avatar.tsx +3 -2
- package/src/components/AvatarGroup/AvatarGroup.tsx +2 -1
- package/src/components/Badge/Badge.tsx +2 -1
- package/src/components/Balance/Balance.tsx +18 -12
- package/src/components/BenefitCard/BenefitCard.tsx +309 -0
- package/src/components/BottomNav/BottomNav.tsx +2 -1
- package/src/components/BottomNavItem/BottomNavItem.tsx +3 -2
- package/src/components/BrandChip/BrandChip.tsx +3 -2
- package/src/components/BubbleChart/BubbleChart.tsx +2 -1
- package/src/components/Button/Button.tsx +3 -2
- package/src/components/ButtonGroup/ButtonGroup.tsx +2 -1
- package/src/components/Card/Card.tsx +4 -3
- package/src/components/CardAdvisory/CardAdvisory.tsx +3 -2
- package/src/components/CardBankAccount/CardBankAccount.tsx +2 -1
- package/src/components/CardCTA/CardCTA.tsx +3 -2
- package/src/components/CardFeedback/CardFeedback.tsx +11 -10
- package/src/components/CardFinancialCondition/CardFinancialCondition.tsx +3 -2
- package/src/components/CardInsight/CardInsight.tsx +2 -1
- package/src/components/CardProviderInfo/CardProviderInfo.tsx +2 -1
- package/src/components/Carousel/Carousel.tsx +5 -4
- package/src/components/CcCard/CcCard.tsx +598 -0
- package/src/components/Checkbox/Checkbox.tsx +7 -5
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +2 -1
- package/src/components/CheckboxItem/CheckboxItem.tsx +7 -5
- package/src/components/ChipGroup/ChipGroup.tsx +2 -1
- package/src/components/ChipSelect/ChipSelect.tsx +2 -1
- package/src/components/CircularProgressBar/CircularProgressBar.tsx +2 -1
- package/src/components/CircularProgressBarDoted/CircularProgressBarDoted.tsx +2 -1
- package/src/components/CircularRating/CircularRating.tsx +3 -2
- package/src/components/ClusterBubble/ClusterBubble.tsx +2 -1
- package/src/components/CompareTable/CompareTable.tsx +477 -0
- package/src/components/ComparisonBar/ComparisonBar.tsx +356 -0
- package/src/components/CoverageBarComparison/CoverageBarComparison.tsx +3 -2
- package/src/components/CoverageRing/CoverageRing.tsx +2 -1
- package/src/components/DebitCard/DebitCard.tsx +2 -1
- package/src/components/Disclaimer/Disclaimer.tsx +2 -1
- package/src/components/Divider/Divider.tsx +2 -1
- package/src/components/DonutChart/DonutChart.tsx +6 -5
- package/src/components/DonutChartSummary/DonutChartSummary.tsx +3 -2
- package/src/components/Drawer/Drawer.tsx +21 -1
- package/src/components/Dropdown/Dropdown.tsx +4 -3
- package/src/components/DropdownInput/DropdownInput.tsx +60 -7
- package/src/components/EmptyState/EmptyState.tsx +2 -1
- package/src/components/ExpandableCheckbox/ExpandableCheckbox.tsx +2 -1
- package/src/components/FilterBar/FilterBar.tsx +3 -2
- package/src/components/Form/Form.tsx +2 -1
- package/src/components/FormField/FormField.tsx +8 -6
- package/src/components/FullscreenModal/FullscreenModal.tsx +68 -10
- package/src/components/Gauge/Gauge.tsx +2 -1
- package/src/components/HStack/HStack.tsx +2 -1
- package/src/components/HoldingsCard/HoldingsCard.tsx +2 -1
- package/src/components/Icon/Icon.tsx +3 -2
- package/src/components/IconButton/IconButton.tsx +3 -2
- package/src/components/IconCapsule/IconCapsule.tsx +3 -2
- package/src/components/Image/Image.tsx +29 -5
- package/src/components/InputSearch/InputSearch.tsx +11 -7
- package/src/components/InstitutionBadge/InstitutionBadge.tsx +3 -2
- package/src/components/LazyList/LazyList.tsx +2 -1
- package/src/components/LinearMeter/LinearMeter.tsx +3 -2
- package/src/components/LinearProgress/LinearProgress.tsx +2 -1
- package/src/components/ListGroup/ListGroup.tsx +2 -1
- package/src/components/ListItem/ListItem.tsx +3 -2
- package/src/components/LottieIntroBlock/LottieIntroBlock.tsx +2 -1
- package/src/components/LottiePlayer/LottiePlayer.tsx +3 -2
- package/src/components/LottiePlayer/LottiePlayer.web.tsx +3 -2
- package/src/components/LottiePlayer/loadNativeLottieView.tsx +9 -13
- package/src/components/MediaCard/MediaCard.tsx +7 -6
- package/src/components/MerchantProfile/MerchantProfile.tsx +2 -1
- package/src/components/MessageField/MessageField.tsx +3 -2
- package/src/components/MetricLegendItem/MetricLegendItem.tsx +2 -1
- package/src/components/MoneyValue/MoneyValue.tsx +2 -1
- package/src/components/MonthlyStatusGrid/MonthlyStatusGrid.tsx +5 -4
- package/src/components/NavArrow/NavArrow.tsx +3 -2
- package/src/components/NoteInput/NoteInput.tsx +10 -7
- package/src/components/Nudge/Nudge.tsx +3 -2
- package/src/components/Numpad/Numpad.tsx +2 -1
- package/src/components/OTP/OTP.tsx +3 -2
- package/src/components/Overlay/Overlay.tsx +114 -0
- package/src/components/PageHero/PageHero.tsx +2 -1
- package/src/components/PaymentFeedback/PaymentFeedback.tsx +2 -1
- package/src/components/PdpCcCard/PdpCcCard.tsx +356 -0
- package/src/components/PlanComparisonCard/PlanComparisonCard.tsx +2 -1
- package/src/components/Popup/Popup.tsx +2 -1
- package/src/components/PortfolioHero/PortfolioHero.tsx +2 -1
- package/src/components/PoweredByLabel/PoweredByLabel.tsx +2 -1
- package/src/components/ProductLabel/ProductLabel.tsx +2 -1
- package/src/components/ProductMerchandisingCard/GlassFill.tsx +276 -0
- package/src/components/ProductMerchandisingCard/GlassFill.web.tsx +127 -0
- package/src/components/ProductMerchandisingCard/ProductMerchandisingCard.tsx +423 -0
- package/src/components/ProductOverview/ProductOverview.tsx +2 -1
- package/src/components/ProgressBadge/ProgressBadge.tsx +2 -1
- package/src/components/ProjectionMarker/ProjectionMarker.tsx +277 -0
- package/src/components/Radio/Radio.tsx +7 -5
- package/src/components/RangeTrack/RangeTrack.tsx +3 -2
- package/src/components/RechargeCard/RechargeCard.tsx +2 -1
- package/src/components/SavingsGoalSummary/SavingsGoalSummary.tsx +2 -1
- package/src/components/Screen/Screen.tsx +2 -1
- package/src/components/Section/Section.tsx +6 -5
- package/src/components/SegmentedControl/SegmentedControl.tsx +3 -2
- package/src/components/SegmentedTrack/SegmentedTrack.tsx +5 -4
- package/src/components/Slider/Slider.tsx +628 -0
- package/src/components/Slot/Slot.tsx +2 -1
- package/src/components/Spinner/Spinner.tsx +2 -1
- package/src/components/StatGroup/StatGroup.tsx +3 -2
- package/src/components/StatItem/StatItem.tsx +2 -1
- package/src/components/StatusHero/StatusHero.tsx +2 -1
- package/src/components/Stepper/Step.tsx +2 -1
- package/src/components/Stepper/StepLabel.tsx +2 -1
- package/src/components/Stepper/Stepper.tsx +2 -1
- package/src/components/StrengthIndicator/StrengthIndicator.tsx +2 -1
- package/src/components/SuggestiveSearch/SuggestiveSearch.tsx +4 -3
- package/src/components/SummaryTile/SummaryTile.tsx +2 -1
- package/src/components/SupportText/SupportText.tsx +2 -1
- package/src/components/SupportText/SupportTextIcon.tsx +2 -1
- package/src/components/SwappableAmount/SwappableAmount.tsx +2 -1
- package/src/components/Tabs/TabItem.tsx +2 -1
- package/src/components/Tabs/Tabs.tsx +2 -1
- package/src/components/TestimonialsCard/TestimonialsCard.tsx +2 -1
- package/src/components/Text/Text.tsx +2 -1
- package/src/components/TextInput/TextInput.tsx +18 -13
- package/src/components/TextSegment/TextSegment.tsx +166 -0
- package/src/components/ThreadHero/ThreadHero.tsx +2 -1
- package/src/components/Title/Title.tsx +2 -1
- package/src/components/Toast/Toast.tsx +2 -1
- package/src/components/Toast/ToastProvider.tsx +2 -1
- package/src/components/Toast/useToast.ts +3 -2
- package/src/components/Toggle/Toggle.tsx +2 -1
- package/src/components/Tooltip/Tooltip.tsx +3 -2
- package/src/components/TransactionBubble/TransactionBubble.tsx +2 -1
- package/src/components/TransactionDetails/TransactionDetails.tsx +3 -2
- package/src/components/TransactionStatus/TransactionStatus.tsx +3 -2
- package/src/components/UpiHandle/UpiHandle.tsx +3 -2
- package/src/components/VStack/VStack.tsx +2 -1
- package/src/components/docs/modeControls.tsx +122 -0
- package/src/components/index.ts +11 -1
- package/src/design-tokens/Coin Variables-variables-full.json +1 -1
- package/src/design-tokens/JFSThemeProvider.tsx +4 -3
- package/src/design-tokens/figma-modes.generated.ts +425 -0
- package/src/design-tokens/index.ts +1 -0
- package/src/icons/registry.ts +1 -1
- package/src/skeleton/Skeleton.tsx +2 -1
- package/src/utils/react-utils.ts +26 -2
- package/lib/typescript/scripts/extract-component-tokens.d.ts +0 -9
- package/lib/typescript/scripts/generate-component-docs.d.ts +0 -9
- package/lib/typescript/scripts/generate-icon-registry.d.ts +0 -3
|
@@ -22,6 +22,12 @@ const IS_WEB = _reactNative.Platform.OS === 'web';
|
|
|
22
22
|
// Types
|
|
23
23
|
// ---------------------------------------------------------------------------
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Imperative handle exposed via `ref`. Lets the consumer drive the dropdown
|
|
27
|
+
* from outside — e.g. close it when an Android hardware/system button is
|
|
28
|
+
* pressed, or open it programmatically from a sibling control.
|
|
29
|
+
*/
|
|
30
|
+
|
|
25
31
|
// ---------------------------------------------------------------------------
|
|
26
32
|
// Token resolution
|
|
27
33
|
// ---------------------------------------------------------------------------
|
|
@@ -125,7 +131,7 @@ function collectOptionsFromChildren(children) {
|
|
|
125
131
|
// Component
|
|
126
132
|
// ---------------------------------------------------------------------------
|
|
127
133
|
|
|
128
|
-
function DropdownInput({
|
|
134
|
+
const DropdownInput = /*#__PURE__*/(0, _react.forwardRef)(function DropdownInput({
|
|
129
135
|
label,
|
|
130
136
|
placeholder = 'Select an option',
|
|
131
137
|
items,
|
|
@@ -156,7 +162,7 @@ function DropdownInput({
|
|
|
156
162
|
accessibilityHint,
|
|
157
163
|
onFocus,
|
|
158
164
|
onBlur
|
|
159
|
-
}) {
|
|
165
|
+
}, ref) {
|
|
160
166
|
// ---------------- Modes ----------------
|
|
161
167
|
const {
|
|
162
168
|
modes: globalModes
|
|
@@ -270,6 +276,32 @@ function DropdownInput({
|
|
|
270
276
|
measure();
|
|
271
277
|
}, [measure]);
|
|
272
278
|
|
|
279
|
+
// ---------------- Imperative handle ----------------
|
|
280
|
+
(0, _react.useImperativeHandle)(ref, () => ({
|
|
281
|
+
open: () => {
|
|
282
|
+
if (isDisabled || isReadOnly) return;
|
|
283
|
+
measure();
|
|
284
|
+
setOpenState(true);
|
|
285
|
+
},
|
|
286
|
+
close: closeMenu,
|
|
287
|
+
toggle: () => {
|
|
288
|
+
if (isDisabled || isReadOnly) return;
|
|
289
|
+
measure();
|
|
290
|
+
toggleMenu();
|
|
291
|
+
},
|
|
292
|
+
focus: () => {
|
|
293
|
+
;
|
|
294
|
+
triggerRef.current?.focus?.();
|
|
295
|
+
},
|
|
296
|
+
blur: () => {
|
|
297
|
+
;
|
|
298
|
+
triggerRef.current?.blur?.();
|
|
299
|
+
},
|
|
300
|
+
measureInWindow: callback => {
|
|
301
|
+
triggerRef.current?.measureInWindow(callback);
|
|
302
|
+
}
|
|
303
|
+
}), [isDisabled, isReadOnly, measure, setOpenState, closeMenu, toggleMenu]);
|
|
304
|
+
|
|
273
305
|
// ---------------- Popup positioning ----------------
|
|
274
306
|
const [menuSize, setMenuSize] = (0, _react.useState)(null);
|
|
275
307
|
const handleMenuLayout = (0, _react.useCallback)(e => {
|
|
@@ -537,7 +569,7 @@ function DropdownInput({
|
|
|
537
569
|
transparent: true,
|
|
538
570
|
statusBarTranslucent: true,
|
|
539
571
|
navigationBarTranslucent: true,
|
|
540
|
-
animationType: "
|
|
572
|
+
animationType: "none",
|
|
541
573
|
onRequestClose: closeMenu,
|
|
542
574
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
543
575
|
style: _reactNative.StyleSheet.absoluteFill,
|
|
@@ -564,7 +596,7 @@ function DropdownInput({
|
|
|
564
596
|
})
|
|
565
597
|
})]
|
|
566
598
|
});
|
|
567
|
-
}
|
|
599
|
+
});
|
|
568
600
|
const webNoOutline = {
|
|
569
601
|
outlineStyle: 'none',
|
|
570
602
|
outlineWidth: 0,
|
|
@@ -162,7 +162,7 @@ function firstError(error) {
|
|
|
162
162
|
// Component
|
|
163
163
|
// ---------------------------------------------------------------------------
|
|
164
164
|
|
|
165
|
-
function FormField({
|
|
165
|
+
const FormField = /*#__PURE__*/(0, _react.forwardRef)(function FormField({
|
|
166
166
|
label,
|
|
167
167
|
placeholder,
|
|
168
168
|
value,
|
|
@@ -190,7 +190,7 @@ function FormField({
|
|
|
190
190
|
accessibilityLabel,
|
|
191
191
|
accessibilityHint,
|
|
192
192
|
testID
|
|
193
|
-
}) {
|
|
193
|
+
}, ref) {
|
|
194
194
|
// -- Form context integration -------------------------------------------
|
|
195
195
|
const formCtx = (0, _Form.useFormContext)();
|
|
196
196
|
const formError = name && formCtx ? firstError(formCtx.validationErrors[name]) : undefined;
|
|
@@ -347,6 +347,7 @@ function FormField({
|
|
|
347
347
|
importantForAccessibility: "no",
|
|
348
348
|
children: processedLeading
|
|
349
349
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
|
|
350
|
+
ref: ref,
|
|
350
351
|
style: [inputTextStyles, inputTextStyle],
|
|
351
352
|
value: value ?? '',
|
|
352
353
|
onChangeText: handleChangeText,
|
|
@@ -376,5 +377,5 @@ function FormField({
|
|
|
376
377
|
modes: modes
|
|
377
378
|
})]
|
|
378
379
|
});
|
|
379
|
-
}
|
|
380
|
+
});
|
|
380
381
|
var _default = exports.default = FormField;
|
|
@@ -253,7 +253,57 @@ function FullscreenModal({
|
|
|
253
253
|
useNativeDriver: true
|
|
254
254
|
}), [scrollY]);
|
|
255
255
|
const heroTranslateY = (0, _react.useMemo)(() => _reactNative.Animated.multiply(scrollY, -1), [scrollY]);
|
|
256
|
-
|
|
256
|
+
|
|
257
|
+
// The hero media is a full-bleed background pinned to the top of the modal.
|
|
258
|
+
// Its wrapper is absolutely positioned (`top/left/right: 0`) so it never
|
|
259
|
+
// contributes to scroll height. We measure the modal's own width so we can
|
|
260
|
+
// give the hero media a DEFINITE { width, height } box (see
|
|
261
|
+
// `processedHeroMedia` below) — relying on the media's own `width: '100%'` +
|
|
262
|
+
// `aspectRatio` is unreliable inside an indefinite-height absolute box (RN's
|
|
263
|
+
// `<Image>` falls back to its intrinsic width and leaves a gap), so we size
|
|
264
|
+
// it explicitly here instead.
|
|
265
|
+
const [containerWidth, setContainerWidth] = (0, _react.useState)(0);
|
|
266
|
+
const onContainerLayout = (0, _react.useCallback)(e => {
|
|
267
|
+
const w = e.nativeEvent.layout.width;
|
|
268
|
+
setContainerWidth(prev => prev !== w ? w : prev);
|
|
269
|
+
}, []);
|
|
270
|
+
const processedHeroMedia = (0, _react.useMemo)(() => {
|
|
271
|
+
if (!heroMedia) return null;
|
|
272
|
+
// Defer rendering the hero until we have measured the modal width. This
|
|
273
|
+
// matters for image sharpness: React Native decodes a bitmap once, on the
|
|
274
|
+
// first render, and caches it. If we rendered the media before knowing the
|
|
275
|
+
// final box, that first decode would be sized/sampled for the wrong box and
|
|
276
|
+
// the cached (downsampled) bitmap would then just be scaled up — blurry.
|
|
277
|
+
// Rendering only once the explicit { width, height } box is known means the
|
|
278
|
+
// very first decode is already full-resolution for the correct box.
|
|
279
|
+
if (containerWidth <= 0) return null;
|
|
280
|
+
const withModes = (0, _reactUtils.cloneChildrenWithModes)(heroMedia, modes, FULLSCREEN_MODAL_FORCED_MODES);
|
|
281
|
+
|
|
282
|
+
// Force the hero to fill the modal width edge to edge, top-aligned, with the
|
|
283
|
+
// height derived from the media's native aspect ratio.
|
|
284
|
+
//
|
|
285
|
+
// Why we inject explicit width/height instead of relying on the media's own
|
|
286
|
+
// `width: '100%'` + `aspectRatio`: the hero wrapper is absolutely positioned
|
|
287
|
+
// with an INDEFINITE height, and in that layout context React Native's
|
|
288
|
+
// `<Image>` falls back to its INTRINSIC width (so a 361px-wide asset renders
|
|
289
|
+
// 361px wide and leaves a gap on the right) rather than stretching to the
|
|
290
|
+
// parent. By computing `height = containerWidth / ratio` here and passing a
|
|
291
|
+
// DEFINITE { width, height } box (which makes `<Image>` skip aspectRatio and
|
|
292
|
+
// cover-fit into that exact box), the hero always fills the width with the
|
|
293
|
+
// correct ratio-derived height.
|
|
294
|
+
return _react.default.Children.map(withModes, child => {
|
|
295
|
+
if (! /*#__PURE__*/_react.default.isValidElement(child)) return child;
|
|
296
|
+
const props = child.props;
|
|
297
|
+
const ratio = typeof props.ratio === 'number' && props.ratio > 0 ? props.ratio : undefined;
|
|
298
|
+
// Only size media that exposes a numeric `ratio` and hasn't already been
|
|
299
|
+
// given an explicit box by the caller.
|
|
300
|
+
if (ratio == null || props.width != null || props.height != null) return child;
|
|
301
|
+
return /*#__PURE__*/_react.default.cloneElement(child, {
|
|
302
|
+
width: containerWidth,
|
|
303
|
+
height: containerWidth / ratio
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
}, [heroMedia, modes, containerWidth]);
|
|
257
307
|
const processedChildren = (0, _react.useMemo)(() => children ? (0, _reactUtils.cloneChildrenWithModes)(children, modes, FULLSCREEN_MODAL_FORCED_MODES) : null, [children, modes]);
|
|
258
308
|
|
|
259
309
|
// The hero text region always reserves `heroHeight` and anchors its content
|
|
@@ -306,8 +356,18 @@ function FullscreenModal({
|
|
|
306
356
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
307
357
|
style: [rootStyle, style],
|
|
308
358
|
testID: testID,
|
|
359
|
+
onLayout: onContainerLayout,
|
|
309
360
|
children: [processedHeroMedia ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
310
|
-
style: [heroBackgroundStyle,
|
|
361
|
+
style: [heroBackgroundStyle,
|
|
362
|
+
// Give the absolute wrapper a DEFINITE width (the measured modal
|
|
363
|
+
// width) so the media's `width: '100%'` + `aspectRatio` resolves to
|
|
364
|
+
// a true edge-to-edge fill with a ratio-derived height, top-aligned.
|
|
365
|
+
// Before the first layout pass `containerWidth` is 0 — fall back to
|
|
366
|
+
// stretching via `left/right: 0` so there is no flash of a mis-sized
|
|
367
|
+
// image.
|
|
368
|
+
containerWidth > 0 ? {
|
|
369
|
+
width: containerWidth
|
|
370
|
+
} : null, {
|
|
311
371
|
transform: [{
|
|
312
372
|
translateY: heroTranslateY
|
|
313
373
|
}]
|
|
@@ -43,6 +43,7 @@ function Image({
|
|
|
43
43
|
imageSource,
|
|
44
44
|
ratio = DEFAULT_RATIO,
|
|
45
45
|
resizeMode = 'cover',
|
|
46
|
+
resizeMethod,
|
|
46
47
|
width,
|
|
47
48
|
height,
|
|
48
49
|
borderRadius,
|
|
@@ -53,11 +54,15 @@ function Image({
|
|
|
53
54
|
loading
|
|
54
55
|
}) {
|
|
55
56
|
const source = (0, _react.useMemo)(() => normalizeSource(imageSource), [imageSource]);
|
|
57
|
+
|
|
58
|
+
// Explicit { width, height } means a "fill an exact box" layout — typically a
|
|
59
|
+
// full-bleed hero/background where the asset is high-res and sharpness
|
|
60
|
+
// matters most. There, default to `'none'` (full-resolution, no pre-decode
|
|
61
|
+
// downsample) so detail is never thrown away. Aspect-ratio images keep the
|
|
62
|
+
// memory-safe `'scale'` default. A caller-supplied `resizeMethod` always wins.
|
|
63
|
+
const isExplicitBox = width != null && height != null;
|
|
64
|
+
const effectiveResizeMethod = resizeMethod ?? (isExplicitBox ? 'none' : 'scale');
|
|
56
65
|
const layoutStyle = (0, _react.useMemo)(() => {
|
|
57
|
-
// If the caller has fully specified width AND height, they're doing a
|
|
58
|
-
// non-aspect layout (e.g. "fill the parent") — respect that and skip
|
|
59
|
-
// `aspectRatio` so it doesn't conflict.
|
|
60
|
-
const isExplicitBox = width != null && height != null;
|
|
61
66
|
const s = {
|
|
62
67
|
width: width ?? '100%',
|
|
63
68
|
...(isExplicitBox ? {
|
|
@@ -71,7 +76,7 @@ function Image({
|
|
|
71
76
|
};
|
|
72
77
|
if (borderRadius != null) s.borderRadius = borderRadius;
|
|
73
78
|
return s;
|
|
74
|
-
}, [ratio, width, height, borderRadius]);
|
|
79
|
+
}, [ratio, width, height, borderRadius, isExplicitBox]);
|
|
75
80
|
const {
|
|
76
81
|
active: groupActive
|
|
77
82
|
} = (0, _SkeletonGroup.useSkeleton)();
|
|
@@ -102,6 +107,7 @@ function Image({
|
|
|
102
107
|
source: source,
|
|
103
108
|
style: [layoutStyle, style],
|
|
104
109
|
resizeMode: resizeMode,
|
|
110
|
+
resizeMethod: effectiveResizeMethod,
|
|
105
111
|
accessibilityLabel: accessibilityLabel,
|
|
106
112
|
accessibilityElementsHidden: accessibilityElementsHidden,
|
|
107
113
|
importantForAccessibility: importantForAccessibility
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default =
|
|
6
|
+
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
|
|
@@ -54,7 +54,7 @@ function SupportText({
|
|
|
54
54
|
})]
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
|
-
function InputSearch({
|
|
57
|
+
const InputSearch = /*#__PURE__*/(0, _react.forwardRef)(function InputSearch({
|
|
58
58
|
supportText = true,
|
|
59
59
|
supportTextLabel = "Support Text",
|
|
60
60
|
supportTextIcon = "ic_info",
|
|
@@ -69,7 +69,7 @@ function InputSearch({
|
|
|
69
69
|
trailing,
|
|
70
70
|
inputStyle,
|
|
71
71
|
...rest
|
|
72
|
-
}) {
|
|
72
|
+
}, ref) {
|
|
73
73
|
const [isFocused, setIsFocused] = (0, _react.useState)(false);
|
|
74
74
|
|
|
75
75
|
// Hardcode InputState based on the state prop, ignoring any external InputState passed in modes
|
|
@@ -124,6 +124,7 @@ function InputSearch({
|
|
|
124
124
|
gap: formFieldGap
|
|
125
125
|
}, containerStyle],
|
|
126
126
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInput.default, {
|
|
127
|
+
ref: ref,
|
|
127
128
|
placeholder: placeholder,
|
|
128
129
|
value: value || '',
|
|
129
130
|
onChangeText: onChangeText || (() => {}),
|
|
@@ -143,4 +144,5 @@ function InputSearch({
|
|
|
143
144
|
modes: componentModes
|
|
144
145
|
})]
|
|
145
146
|
});
|
|
146
|
-
}
|
|
147
|
+
});
|
|
148
|
+
var _default = exports.default = InputSearch;
|
|
@@ -11,17 +11,6 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
11
11
|
/** Props we forward to the underlying native Lottie view. */
|
|
12
12
|
|
|
13
13
|
const INSTALL_HINT = 'LottiePlayer requires lottie-react-native in your app.\n' + ' npm install lottie-react-native\n' + ' cd ios && pod install';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Metro resolves `require('lottie-react-native')` at bundle time even inside
|
|
17
|
-
* try/catch, which breaks apps that import `jfs-components` without having
|
|
18
|
-
* the optional peer installed. Splitting the module id into a runtime string
|
|
19
|
-
* keeps Metro from statically linking it — the native module is loaded only
|
|
20
|
-
* when present in the consumer's node_modules.
|
|
21
|
-
*/
|
|
22
|
-
function resolveNativeLottieModuleName() {
|
|
23
|
-
return ['lottie', '-react', '-native'].join('');
|
|
24
|
-
}
|
|
25
14
|
function LottieUnavailableView({
|
|
26
15
|
style
|
|
27
16
|
}) {
|
|
@@ -65,8 +54,14 @@ let cachedView;
|
|
|
65
54
|
function getNativeLottieView() {
|
|
66
55
|
if (cachedView !== undefined) return cachedView;
|
|
67
56
|
try {
|
|
68
|
-
|
|
69
|
-
|
|
57
|
+
// Static require so Metro resolves the module by its build-time numeric id.
|
|
58
|
+
// A runtime-constructed string path is NOT resolvable by Metro's `require`
|
|
59
|
+
// (it indexes modules by number, not path), so it would always throw and
|
|
60
|
+
// fall back to the install hint even when the package is installed. The
|
|
61
|
+
// dependency stays an *optional* peer: apps that use LottiePlayer install
|
|
62
|
+
// it; apps that don't simply never import this module.
|
|
63
|
+
const mod = require('lottie-react-native');
|
|
64
|
+
cachedView = mod.default ?? mod.LottieView ?? LottieUnavailable;
|
|
70
65
|
} catch {
|
|
71
66
|
cachedView = LottieUnavailable;
|
|
72
67
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default =
|
|
6
|
+
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
|
|
@@ -14,7 +14,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
14
14
|
* NoteInput component representing an interactive "Add note" badge style field.
|
|
15
15
|
* Allows the user to click, clears the placeholder text, and shows a blinking cursor when focused.
|
|
16
16
|
*/
|
|
17
|
-
function NoteInput({
|
|
17
|
+
const NoteInput = /*#__PURE__*/(0, _react.forwardRef)(function NoteInput({
|
|
18
18
|
value = '',
|
|
19
19
|
placeholder = 'Add note',
|
|
20
20
|
onChangeText,
|
|
@@ -25,7 +25,7 @@ function NoteInput({
|
|
|
25
25
|
onFocus,
|
|
26
26
|
onBlur,
|
|
27
27
|
...rest
|
|
28
|
-
}) {
|
|
28
|
+
}, ref) {
|
|
29
29
|
const [internalFocused, setInternalFocused] = (0, _react.useState)(false);
|
|
30
30
|
const inputRef = (0, _react.useRef)(null);
|
|
31
31
|
|
|
@@ -97,7 +97,7 @@ function NoteInput({
|
|
|
97
97
|
importantForAccessibility: "no",
|
|
98
98
|
children: internalFocused ? value || ' ' : value || placeholder
|
|
99
99
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
|
|
100
|
-
ref: inputRef,
|
|
100
|
+
ref: (0, _reactUtils.mergeRefs)(inputRef, ref),
|
|
101
101
|
value: value,
|
|
102
102
|
onChangeText: onChangeText,
|
|
103
103
|
placeholder: internalFocused ? '' : placeholder,
|
|
@@ -117,4 +117,5 @@ function NoteInput({
|
|
|
117
117
|
})]
|
|
118
118
|
})
|
|
119
119
|
});
|
|
120
|
-
}
|
|
120
|
+
});
|
|
121
|
+
var _default = exports.default = NoteInput;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
|
|
10
|
+
var _JFSThemeProvider = require("../../design-tokens/JFSThemeProvider");
|
|
11
|
+
var _reactUtils = require("../../utils/react-utils");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
const PLACEMENT_STYLE = {
|
|
15
|
+
center: {
|
|
16
|
+
justifyContent: 'center',
|
|
17
|
+
alignItems: 'center'
|
|
18
|
+
},
|
|
19
|
+
top: {
|
|
20
|
+
justifyContent: 'flex-start',
|
|
21
|
+
alignItems: 'stretch'
|
|
22
|
+
},
|
|
23
|
+
bottom: {
|
|
24
|
+
justifyContent: 'flex-end',
|
|
25
|
+
alignItems: 'stretch'
|
|
26
|
+
},
|
|
27
|
+
stretch: {
|
|
28
|
+
justifyContent: 'center',
|
|
29
|
+
alignItems: 'stretch'
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Overlay — a token-driven scrim that dims content behind an overlaid surface.
|
|
35
|
+
*
|
|
36
|
+
* Renders a semi-transparent backdrop using the `overlay/background` design
|
|
37
|
+
* token and optionally hosts content (e.g. a modal, sheet or dialog) on top.
|
|
38
|
+
* Pair it with a `Modal` for true full-screen overlays, or drop it inside any
|
|
39
|
+
* relatively-positioned container to dim just that region.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <Overlay modes={modes} onPress={close}>
|
|
44
|
+
* <Card>Dialog content</Card>
|
|
45
|
+
* </Overlay>
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
function Overlay({
|
|
49
|
+
children,
|
|
50
|
+
contentPlacement = 'center',
|
|
51
|
+
onPress,
|
|
52
|
+
fill = true,
|
|
53
|
+
modes: propModes = _reactUtils.EMPTY_MODES,
|
|
54
|
+
style,
|
|
55
|
+
...rest
|
|
56
|
+
}) {
|
|
57
|
+
const {
|
|
58
|
+
modes: globalModes
|
|
59
|
+
} = (0, _JFSThemeProvider.useTokens)();
|
|
60
|
+
const modes = (0, _react.useMemo)(() => ({
|
|
61
|
+
...globalModes,
|
|
62
|
+
...propModes
|
|
63
|
+
}), [globalModes, propModes]);
|
|
64
|
+
const {
|
|
65
|
+
containerStyle,
|
|
66
|
+
processedChildren
|
|
67
|
+
} = (0, _react.useMemo)(() => {
|
|
68
|
+
const backgroundColor = (0, _figmaVariablesResolver.getVariableByName)('overlay/background', modes) ?? 'rgba(0, 0, 0, 0.7)';
|
|
69
|
+
const container = {
|
|
70
|
+
backgroundColor,
|
|
71
|
+
overflow: 'hidden',
|
|
72
|
+
...PLACEMENT_STYLE[contentPlacement]
|
|
73
|
+
};
|
|
74
|
+
const processed = children ? (0, _reactUtils.cloneChildrenWithModes)(children, modes) : null;
|
|
75
|
+
return {
|
|
76
|
+
containerStyle: container,
|
|
77
|
+
processedChildren: processed
|
|
78
|
+
};
|
|
79
|
+
}, [children, modes, contentPlacement]);
|
|
80
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
81
|
+
style: [fill && _reactNative.StyleSheet.absoluteFill, containerStyle, style],
|
|
82
|
+
accessibilityViewIsModal: true,
|
|
83
|
+
...rest,
|
|
84
|
+
children: [onPress ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
85
|
+
style: _reactNative.StyleSheet.absoluteFill,
|
|
86
|
+
onPress: onPress,
|
|
87
|
+
accessibilityRole: "button",
|
|
88
|
+
accessibilityLabel: "Dismiss overlay"
|
|
89
|
+
}) : null, processedChildren]
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
var _default = exports.default = /*#__PURE__*/_react.default.memo(Overlay);
|