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.
Files changed (392) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/lib/commonjs/components/AmountInput/AmountInput.js +8 -5
  3. package/lib/commonjs/components/AreaLineChart/AreaLineChart.js +1 -1
  4. package/lib/commonjs/components/Balance/Balance.js +17 -12
  5. package/lib/commonjs/components/BenefitCard/BenefitCard.js +231 -0
  6. package/lib/commonjs/components/Card/Card.js +2 -1
  7. package/lib/commonjs/components/CardFeedback/CardFeedback.js +2 -1
  8. package/lib/commonjs/components/CcCard/CcCard.js +470 -0
  9. package/lib/commonjs/components/Checkbox/Checkbox.js +6 -4
  10. package/lib/commonjs/components/CheckboxItem/CheckboxItem.js +4 -3
  11. package/lib/commonjs/components/CompareTable/CompareTable.js +372 -0
  12. package/lib/commonjs/components/ComparisonBar/ComparisonBar.js +266 -0
  13. package/lib/commonjs/components/Drawer/Drawer.js +13 -4
  14. package/lib/commonjs/components/DropdownInput/DropdownInput.js +36 -4
  15. package/lib/commonjs/components/FormField/FormField.js +4 -3
  16. package/lib/commonjs/components/FullscreenModal/FullscreenModal.js +62 -2
  17. package/lib/commonjs/components/Image/Image.js +11 -5
  18. package/lib/commonjs/components/InputSearch/InputSearch.js +6 -4
  19. package/lib/commonjs/components/LottiePlayer/loadNativeLottieView.js +8 -13
  20. package/lib/commonjs/components/NoteInput/NoteInput.js +6 -5
  21. package/lib/commonjs/components/Overlay/Overlay.js +92 -0
  22. package/lib/commonjs/components/PdpCcCard/PdpCcCard.js +273 -0
  23. package/lib/commonjs/components/PlanComparisonCard/PlanComparisonCard.js +2 -1
  24. package/lib/commonjs/components/ProductMerchandisingCard/GlassFill.js +263 -0
  25. package/lib/commonjs/components/ProductMerchandisingCard/GlassFill.web.js +116 -0
  26. package/lib/commonjs/components/ProductMerchandisingCard/ProductMerchandisingCard.js +353 -0
  27. package/lib/commonjs/components/ProjectionMarker/ProjectionMarker.js +161 -0
  28. package/lib/commonjs/components/Radio/Radio.js +5 -5
  29. package/lib/commonjs/components/Slider/Slider.js +473 -0
  30. package/lib/commonjs/components/TextInput/TextInput.js +15 -9
  31. package/lib/commonjs/components/TextSegment/TextSegment.js +118 -0
  32. package/lib/commonjs/components/docs/modeControls.js +116 -0
  33. package/lib/commonjs/components/index.js +70 -0
  34. package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
  35. package/lib/commonjs/design-tokens/JFSThemeProvider.js +1 -1
  36. package/lib/commonjs/design-tokens/figma-modes.generated.js +420 -0
  37. package/lib/commonjs/design-tokens/index.js +11 -0
  38. package/lib/commonjs/icons/registry.js +1 -1
  39. package/lib/commonjs/utils/react-utils.js +22 -0
  40. package/lib/module/components/Accordion/Accordion.js +1 -2
  41. package/lib/module/components/AmountInput/AmountInput.js +6 -4
  42. package/lib/module/components/AreaLineChart/AreaLineChart.js +1 -1
  43. package/lib/module/components/Balance/Balance.js +18 -13
  44. package/lib/module/components/BenefitCard/BenefitCard.js +225 -0
  45. package/lib/module/components/Card/Card.js +1 -2
  46. package/lib/module/components/CardFeedback/CardFeedback.js +1 -2
  47. package/lib/module/components/CcCard/CcCard.js +464 -0
  48. package/lib/module/components/Checkbox/Checkbox.js +6 -6
  49. package/lib/module/components/CheckboxItem/CheckboxItem.js +5 -4
  50. package/lib/module/components/CompareTable/CompareTable.js +367 -0
  51. package/lib/module/components/ComparisonBar/ComparisonBar.js +260 -0
  52. package/lib/module/components/Drawer/Drawer.js +12 -4
  53. package/lib/module/components/DropdownInput/DropdownInput.js +37 -5
  54. package/lib/module/components/FormField/FormField.js +5 -4
  55. package/lib/module/components/FullscreenModal/FullscreenModal.js +64 -5
  56. package/lib/module/components/Image/Image.js +11 -5
  57. package/lib/module/components/InputSearch/InputSearch.js +6 -4
  58. package/lib/module/components/InstitutionBadge/InstitutionBadge.js +1 -2
  59. package/lib/module/components/LottiePlayer/loadNativeLottieView.js +8 -13
  60. package/lib/module/components/MoneyValue/MoneyValue.js +1 -2
  61. package/lib/module/components/NoteInput/NoteInput.js +7 -6
  62. package/lib/module/components/OTP/OTP.js +1 -2
  63. package/lib/module/components/Overlay/Overlay.js +87 -0
  64. package/lib/module/components/PdpCcCard/PdpCcCard.js +267 -0
  65. package/lib/module/components/PlanComparisonCard/PlanComparisonCard.js +1 -2
  66. package/lib/module/components/PoweredByLabel/PoweredByLabel.js +1 -2
  67. package/lib/module/components/ProductMerchandisingCard/GlassFill.js +257 -0
  68. package/lib/module/components/ProductMerchandisingCard/GlassFill.web.js +111 -0
  69. package/lib/module/components/ProductMerchandisingCard/ProductMerchandisingCard.js +347 -0
  70. package/lib/module/components/ProjectionMarker/ProjectionMarker.js +156 -0
  71. package/lib/module/components/Radio/Radio.js +5 -4
  72. package/lib/module/components/RechargeCard/RechargeCard.js +1 -2
  73. package/lib/module/components/Section/Section.js +1 -2
  74. package/lib/module/components/Slider/Slider.js +468 -0
  75. package/lib/module/components/TextInput/TextInput.js +16 -12
  76. package/lib/module/components/TextSegment/TextSegment.js +113 -0
  77. package/lib/module/components/UpiHandle/UpiHandle.js +1 -2
  78. package/lib/module/components/docs/modeControls.js +111 -0
  79. package/lib/module/components/index.js +10 -0
  80. package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
  81. package/lib/module/design-tokens/JFSThemeProvider.js +1 -1
  82. package/lib/module/design-tokens/figma-modes.generated.js +416 -0
  83. package/lib/module/design-tokens/index.js +2 -1
  84. package/lib/module/icons/registry.js +1 -1
  85. package/lib/module/utils/react-utils.js +21 -1
  86. package/lib/typescript/src/components/Accordion/Accordion.d.ts +2 -1
  87. package/lib/typescript/src/components/AccordionCheckbox/AccordionCheckbox.d.ts +2 -1
  88. package/lib/typescript/src/components/AccountCard/AccountCard.d.ts +2 -1
  89. package/lib/typescript/src/components/ActionFooter/ActionFooter.d.ts +2 -1
  90. package/lib/typescript/src/components/ActionTile/ActionTile.d.ts +2 -1
  91. package/lib/typescript/src/components/AllocationComparisonChart/AllocationComparisonChart.d.ts +2 -1
  92. package/lib/typescript/src/components/AmountInput/AmountInput.d.ts +5 -3
  93. package/lib/typescript/src/components/AppBar/AppBar.d.ts +2 -1
  94. package/lib/typescript/src/components/AreaLineChart/AreaLineChart.d.ts +3 -2
  95. package/lib/typescript/src/components/Attached/Attached.d.ts +2 -1
  96. package/lib/typescript/src/components/Avatar/Avatar.d.ts +2 -1
  97. package/lib/typescript/src/components/AvatarGroup/AvatarGroup.d.ts +2 -1
  98. package/lib/typescript/src/components/Badge/Badge.d.ts +2 -1
  99. package/lib/typescript/src/components/Balance/Balance.d.ts +2 -1
  100. package/lib/typescript/src/components/BenefitCard/BenefitCard.d.ts +93 -0
  101. package/lib/typescript/src/components/BottomNav/BottomNav.d.ts +2 -1
  102. package/lib/typescript/src/components/BottomNavItem/BottomNavItem.d.ts +2 -1
  103. package/lib/typescript/src/components/BrandChip/BrandChip.d.ts +2 -1
  104. package/lib/typescript/src/components/BubbleChart/BubbleChart.d.ts +2 -1
  105. package/lib/typescript/src/components/Button/Button.d.ts +2 -1
  106. package/lib/typescript/src/components/ButtonGroup/ButtonGroup.d.ts +2 -1
  107. package/lib/typescript/src/components/Card/Card.d.ts +3 -2
  108. package/lib/typescript/src/components/CardAdvisory/CardAdvisory.d.ts +2 -1
  109. package/lib/typescript/src/components/CardBankAccount/CardBankAccount.d.ts +2 -1
  110. package/lib/typescript/src/components/CardCTA/CardCTA.d.ts +2 -1
  111. package/lib/typescript/src/components/CardFeedback/CardFeedback.d.ts +7 -6
  112. package/lib/typescript/src/components/CardFinancialCondition/CardFinancialCondition.d.ts +2 -1
  113. package/lib/typescript/src/components/CardInsight/CardInsight.d.ts +2 -1
  114. package/lib/typescript/src/components/CardProviderInfo/CardProviderInfo.d.ts +2 -1
  115. package/lib/typescript/src/components/Carousel/Carousel.d.ts +4 -3
  116. package/lib/typescript/src/components/CcCard/CcCard.d.ts +137 -0
  117. package/lib/typescript/src/components/Checkbox/Checkbox.d.ts +5 -3
  118. package/lib/typescript/src/components/CheckboxGroup/CheckboxGroup.d.ts +2 -1
  119. package/lib/typescript/src/components/CheckboxItem/CheckboxItem.d.ts +4 -3
  120. package/lib/typescript/src/components/ChipGroup/ChipGroup.d.ts +2 -1
  121. package/lib/typescript/src/components/ChipSelect/ChipSelect.d.ts +2 -1
  122. package/lib/typescript/src/components/CircularProgressBar/CircularProgressBar.d.ts +2 -1
  123. package/lib/typescript/src/components/CircularProgressBarDoted/CircularProgressBarDoted.d.ts +2 -1
  124. package/lib/typescript/src/components/CircularRating/CircularRating.d.ts +2 -1
  125. package/lib/typescript/src/components/ClusterBubble/ClusterBubble.d.ts +2 -1
  126. package/lib/typescript/src/components/CompareTable/CompareTable.d.ts +88 -0
  127. package/lib/typescript/src/components/ComparisonBar/ComparisonBar.d.ts +118 -0
  128. package/lib/typescript/src/components/CoverageBarComparison/CoverageBarComparison.d.ts +3 -2
  129. package/lib/typescript/src/components/CoverageRing/CoverageRing.d.ts +2 -1
  130. package/lib/typescript/src/components/DebitCard/DebitCard.d.ts +2 -1
  131. package/lib/typescript/src/components/Disclaimer/Disclaimer.d.ts +2 -1
  132. package/lib/typescript/src/components/Divider/Divider.d.ts +2 -1
  133. package/lib/typescript/src/components/DonutChart/DonutChart.d.ts +4 -3
  134. package/lib/typescript/src/components/DonutChartSummary/DonutChartSummary.d.ts +3 -2
  135. package/lib/typescript/src/components/Drawer/Drawer.d.ts +15 -1
  136. package/lib/typescript/src/components/Dropdown/Dropdown.d.ts +3 -2
  137. package/lib/typescript/src/components/DropdownInput/DropdownInput.d.ts +22 -2
  138. package/lib/typescript/src/components/EmptyState/EmptyState.d.ts +2 -1
  139. package/lib/typescript/src/components/ExpandableCheckbox/ExpandableCheckbox.d.ts +2 -1
  140. package/lib/typescript/src/components/FilterBar/FilterBar.d.ts +3 -2
  141. package/lib/typescript/src/components/Form/Form.d.ts +2 -1
  142. package/lib/typescript/src/components/FormField/FormField.d.ts +4 -3
  143. package/lib/typescript/src/components/FullscreenModal/FullscreenModal.d.ts +2 -1
  144. package/lib/typescript/src/components/Gauge/Gauge.d.ts +2 -1
  145. package/lib/typescript/src/components/HStack/HStack.d.ts +2 -1
  146. package/lib/typescript/src/components/HoldingsCard/HoldingsCard.d.ts +2 -1
  147. package/lib/typescript/src/components/Icon/Icon.d.ts +2 -1
  148. package/lib/typescript/src/components/IconButton/IconButton.d.ts +2 -1
  149. package/lib/typescript/src/components/IconCapsule/IconCapsule.d.ts +2 -1
  150. package/lib/typescript/src/components/Image/Image.d.ts +17 -1
  151. package/lib/typescript/src/components/InputSearch/InputSearch.d.ts +25 -3
  152. package/lib/typescript/src/components/InstitutionBadge/InstitutionBadge.d.ts +2 -1
  153. package/lib/typescript/src/components/LazyList/LazyList.d.ts +2 -1
  154. package/lib/typescript/src/components/LinearMeter/LinearMeter.d.ts +3 -2
  155. package/lib/typescript/src/components/LinearProgress/LinearProgress.d.ts +2 -1
  156. package/lib/typescript/src/components/ListGroup/ListGroup.d.ts +2 -1
  157. package/lib/typescript/src/components/ListItem/ListItem.d.ts +2 -1
  158. package/lib/typescript/src/components/LottieIntroBlock/LottieIntroBlock.d.ts +2 -1
  159. package/lib/typescript/src/components/LottiePlayer/LottiePlayer.d.ts +2 -1
  160. package/lib/typescript/src/components/LottiePlayer/LottiePlayer.web.d.ts +2 -1
  161. package/lib/typescript/src/components/MediaCard/MediaCard.d.ts +6 -5
  162. package/lib/typescript/src/components/MerchantProfile/MerchantProfile.d.ts +2 -1
  163. package/lib/typescript/src/components/MessageField/MessageField.d.ts +2 -1
  164. package/lib/typescript/src/components/MetricLegendItem/MetricLegendItem.d.ts +2 -1
  165. package/lib/typescript/src/components/MoneyValue/MoneyValue.d.ts +2 -1
  166. package/lib/typescript/src/components/MonthlyStatusGrid/MonthlyStatusGrid.d.ts +4 -3
  167. package/lib/typescript/src/components/NavArrow/NavArrow.d.ts +2 -1
  168. package/lib/typescript/src/components/NoteInput/NoteInput.d.ts +21 -3
  169. package/lib/typescript/src/components/Nudge/Nudge.d.ts +2 -1
  170. package/lib/typescript/src/components/Numpad/Numpad.d.ts +2 -1
  171. package/lib/typescript/src/components/OTP/OTP.d.ts +3 -2
  172. package/lib/typescript/src/components/Overlay/Overlay.d.ts +52 -0
  173. package/lib/typescript/src/components/PageHero/PageHero.d.ts +2 -1
  174. package/lib/typescript/src/components/PaymentFeedback/PaymentFeedback.d.ts +2 -1
  175. package/lib/typescript/src/components/PdpCcCard/PdpCcCard.d.ts +84 -0
  176. package/lib/typescript/src/components/PlanComparisonCard/PlanComparisonCard.d.ts +2 -1
  177. package/lib/typescript/src/components/Popup/Popup.d.ts +2 -1
  178. package/lib/typescript/src/components/PortfolioHero/PortfolioHero.d.ts +2 -1
  179. package/lib/typescript/src/components/PoweredByLabel/PoweredByLabel.d.ts +2 -1
  180. package/lib/typescript/src/components/ProductLabel/ProductLabel.d.ts +2 -1
  181. package/lib/typescript/src/components/ProductMerchandisingCard/GlassFill.d.ts +56 -0
  182. package/lib/typescript/src/components/ProductMerchandisingCard/GlassFill.web.d.ts +27 -0
  183. package/lib/typescript/src/components/ProductMerchandisingCard/ProductMerchandisingCard.d.ts +81 -0
  184. package/lib/typescript/src/components/ProductOverview/ProductOverview.d.ts +2 -1
  185. package/lib/typescript/src/components/ProgressBadge/ProgressBadge.d.ts +2 -1
  186. package/lib/typescript/src/components/ProjectionMarker/ProjectionMarker.d.ts +82 -0
  187. package/lib/typescript/src/components/Radio/Radio.d.ts +5 -3
  188. package/lib/typescript/src/components/RadioButton/RadioButton.d.ts +2 -2
  189. package/lib/typescript/src/components/RangeTrack/RangeTrack.d.ts +3 -2
  190. package/lib/typescript/src/components/RechargeCard/RechargeCard.d.ts +2 -1
  191. package/lib/typescript/src/components/SavingsGoalSummary/SavingsGoalSummary.d.ts +2 -1
  192. package/lib/typescript/src/components/Screen/Screen.d.ts +2 -1
  193. package/lib/typescript/src/components/Section/Section.d.ts +3 -2
  194. package/lib/typescript/src/components/SegmentedControl/SegmentedControl.d.ts +2 -1
  195. package/lib/typescript/src/components/SegmentedTrack/SegmentedTrack.d.ts +4 -3
  196. package/lib/typescript/src/components/Slider/Slider.d.ts +99 -0
  197. package/lib/typescript/src/components/Slot/Slot.d.ts +2 -1
  198. package/lib/typescript/src/components/Spinner/Spinner.d.ts +2 -1
  199. package/lib/typescript/src/components/StatGroup/StatGroup.d.ts +2 -1
  200. package/lib/typescript/src/components/StatItem/StatItem.d.ts +2 -1
  201. package/lib/typescript/src/components/StatusHero/StatusHero.d.ts +2 -1
  202. package/lib/typescript/src/components/Stepper/Step.d.ts +2 -1
  203. package/lib/typescript/src/components/Stepper/StepLabel.d.ts +2 -1
  204. package/lib/typescript/src/components/Stepper/Stepper.d.ts +2 -1
  205. package/lib/typescript/src/components/StrengthIndicator/StrengthIndicator.d.ts +2 -1
  206. package/lib/typescript/src/components/SuggestiveSearch/SuggestiveSearch.d.ts +2 -1
  207. package/lib/typescript/src/components/SummaryTile/SummaryTile.d.ts +2 -1
  208. package/lib/typescript/src/components/SupportText/SupportText.d.ts +2 -1
  209. package/lib/typescript/src/components/SupportText/SupportTextIcon.d.ts +2 -1
  210. package/lib/typescript/src/components/SwappableAmount/SwappableAmount.d.ts +2 -1
  211. package/lib/typescript/src/components/Tabs/TabItem.d.ts +2 -1
  212. package/lib/typescript/src/components/Tabs/Tabs.d.ts +2 -1
  213. package/lib/typescript/src/components/TestimonialsCard/TestimonialsCard.d.ts +2 -1
  214. package/lib/typescript/src/components/Text/Text.d.ts +2 -1
  215. package/lib/typescript/src/components/TextInput/TextInput.d.ts +12 -31
  216. package/lib/typescript/src/components/TextSegment/TextSegment.d.ts +100 -0
  217. package/lib/typescript/src/components/ThreadHero/ThreadHero.d.ts +2 -1
  218. package/lib/typescript/src/components/Title/Title.d.ts +2 -1
  219. package/lib/typescript/src/components/Toast/Toast.d.ts +2 -1
  220. package/lib/typescript/src/components/Toast/ToastProvider.d.ts +2 -1
  221. package/lib/typescript/src/components/Toast/useToast.d.ts +3 -2
  222. package/lib/typescript/src/components/Toggle/Toggle.d.ts +2 -1
  223. package/lib/typescript/src/components/Tooltip/Tooltip.d.ts +2 -1
  224. package/lib/typescript/src/components/TransactionBubble/TransactionBubble.d.ts +2 -1
  225. package/lib/typescript/src/components/TransactionDetails/TransactionDetails.d.ts +3 -2
  226. package/lib/typescript/src/components/TransactionStatus/TransactionStatus.d.ts +2 -1
  227. package/lib/typescript/src/components/UpiHandle/UpiHandle.d.ts +2 -1
  228. package/lib/typescript/src/components/VStack/VStack.d.ts +2 -1
  229. package/lib/typescript/src/components/docs/modeControls.d.ts +28 -0
  230. package/lib/typescript/src/components/index.d.ts +11 -1
  231. package/lib/typescript/src/design-tokens/JFSThemeProvider.d.ts +4 -3
  232. package/lib/typescript/src/design-tokens/figma-modes.generated.d.ts +284 -0
  233. package/lib/typescript/src/design-tokens/index.d.ts +1 -0
  234. package/lib/typescript/src/icons/registry.d.ts +1 -1
  235. package/lib/typescript/src/skeleton/Skeleton.d.ts +2 -1
  236. package/lib/typescript/src/utils/react-utils.d.ts +12 -1
  237. package/package.json +4 -2
  238. package/src/components/Accordion/Accordion.tsx +2 -1
  239. package/src/components/AccordionCheckbox/AccordionCheckbox.tsx +2 -1
  240. package/src/components/AccountCard/AccountCard.tsx +2 -1
  241. package/src/components/ActionFooter/ActionFooter.tsx +2 -1
  242. package/src/components/ActionTile/ActionTile.tsx +2 -1
  243. package/src/components/AllocationComparisonChart/AllocationComparisonChart.tsx +2 -1
  244. package/src/components/AmountInput/AmountInput.tsx +9 -6
  245. package/src/components/AppBar/AppBar.tsx +2 -1
  246. package/src/components/AreaLineChart/AreaLineChart.tsx +8 -7
  247. package/src/components/Attached/Attached.tsx +2 -1
  248. package/src/components/Avatar/Avatar.tsx +3 -2
  249. package/src/components/AvatarGroup/AvatarGroup.tsx +2 -1
  250. package/src/components/Badge/Badge.tsx +2 -1
  251. package/src/components/Balance/Balance.tsx +18 -12
  252. package/src/components/BenefitCard/BenefitCard.tsx +309 -0
  253. package/src/components/BottomNav/BottomNav.tsx +2 -1
  254. package/src/components/BottomNavItem/BottomNavItem.tsx +3 -2
  255. package/src/components/BrandChip/BrandChip.tsx +3 -2
  256. package/src/components/BubbleChart/BubbleChart.tsx +2 -1
  257. package/src/components/Button/Button.tsx +3 -2
  258. package/src/components/ButtonGroup/ButtonGroup.tsx +2 -1
  259. package/src/components/Card/Card.tsx +4 -3
  260. package/src/components/CardAdvisory/CardAdvisory.tsx +3 -2
  261. package/src/components/CardBankAccount/CardBankAccount.tsx +2 -1
  262. package/src/components/CardCTA/CardCTA.tsx +3 -2
  263. package/src/components/CardFeedback/CardFeedback.tsx +11 -10
  264. package/src/components/CardFinancialCondition/CardFinancialCondition.tsx +3 -2
  265. package/src/components/CardInsight/CardInsight.tsx +2 -1
  266. package/src/components/CardProviderInfo/CardProviderInfo.tsx +2 -1
  267. package/src/components/Carousel/Carousel.tsx +5 -4
  268. package/src/components/CcCard/CcCard.tsx +598 -0
  269. package/src/components/Checkbox/Checkbox.tsx +7 -5
  270. package/src/components/CheckboxGroup/CheckboxGroup.tsx +2 -1
  271. package/src/components/CheckboxItem/CheckboxItem.tsx +7 -5
  272. package/src/components/ChipGroup/ChipGroup.tsx +2 -1
  273. package/src/components/ChipSelect/ChipSelect.tsx +2 -1
  274. package/src/components/CircularProgressBar/CircularProgressBar.tsx +2 -1
  275. package/src/components/CircularProgressBarDoted/CircularProgressBarDoted.tsx +2 -1
  276. package/src/components/CircularRating/CircularRating.tsx +3 -2
  277. package/src/components/ClusterBubble/ClusterBubble.tsx +2 -1
  278. package/src/components/CompareTable/CompareTable.tsx +477 -0
  279. package/src/components/ComparisonBar/ComparisonBar.tsx +356 -0
  280. package/src/components/CoverageBarComparison/CoverageBarComparison.tsx +3 -2
  281. package/src/components/CoverageRing/CoverageRing.tsx +2 -1
  282. package/src/components/DebitCard/DebitCard.tsx +2 -1
  283. package/src/components/Disclaimer/Disclaimer.tsx +2 -1
  284. package/src/components/Divider/Divider.tsx +2 -1
  285. package/src/components/DonutChart/DonutChart.tsx +6 -5
  286. package/src/components/DonutChartSummary/DonutChartSummary.tsx +3 -2
  287. package/src/components/Drawer/Drawer.tsx +21 -1
  288. package/src/components/Dropdown/Dropdown.tsx +4 -3
  289. package/src/components/DropdownInput/DropdownInput.tsx +60 -7
  290. package/src/components/EmptyState/EmptyState.tsx +2 -1
  291. package/src/components/ExpandableCheckbox/ExpandableCheckbox.tsx +2 -1
  292. package/src/components/FilterBar/FilterBar.tsx +3 -2
  293. package/src/components/Form/Form.tsx +2 -1
  294. package/src/components/FormField/FormField.tsx +8 -6
  295. package/src/components/FullscreenModal/FullscreenModal.tsx +68 -10
  296. package/src/components/Gauge/Gauge.tsx +2 -1
  297. package/src/components/HStack/HStack.tsx +2 -1
  298. package/src/components/HoldingsCard/HoldingsCard.tsx +2 -1
  299. package/src/components/Icon/Icon.tsx +3 -2
  300. package/src/components/IconButton/IconButton.tsx +3 -2
  301. package/src/components/IconCapsule/IconCapsule.tsx +3 -2
  302. package/src/components/Image/Image.tsx +29 -5
  303. package/src/components/InputSearch/InputSearch.tsx +11 -7
  304. package/src/components/InstitutionBadge/InstitutionBadge.tsx +3 -2
  305. package/src/components/LazyList/LazyList.tsx +2 -1
  306. package/src/components/LinearMeter/LinearMeter.tsx +3 -2
  307. package/src/components/LinearProgress/LinearProgress.tsx +2 -1
  308. package/src/components/ListGroup/ListGroup.tsx +2 -1
  309. package/src/components/ListItem/ListItem.tsx +3 -2
  310. package/src/components/LottieIntroBlock/LottieIntroBlock.tsx +2 -1
  311. package/src/components/LottiePlayer/LottiePlayer.tsx +3 -2
  312. package/src/components/LottiePlayer/LottiePlayer.web.tsx +3 -2
  313. package/src/components/LottiePlayer/loadNativeLottieView.tsx +9 -13
  314. package/src/components/MediaCard/MediaCard.tsx +7 -6
  315. package/src/components/MerchantProfile/MerchantProfile.tsx +2 -1
  316. package/src/components/MessageField/MessageField.tsx +3 -2
  317. package/src/components/MetricLegendItem/MetricLegendItem.tsx +2 -1
  318. package/src/components/MoneyValue/MoneyValue.tsx +2 -1
  319. package/src/components/MonthlyStatusGrid/MonthlyStatusGrid.tsx +5 -4
  320. package/src/components/NavArrow/NavArrow.tsx +3 -2
  321. package/src/components/NoteInput/NoteInput.tsx +10 -7
  322. package/src/components/Nudge/Nudge.tsx +3 -2
  323. package/src/components/Numpad/Numpad.tsx +2 -1
  324. package/src/components/OTP/OTP.tsx +3 -2
  325. package/src/components/Overlay/Overlay.tsx +114 -0
  326. package/src/components/PageHero/PageHero.tsx +2 -1
  327. package/src/components/PaymentFeedback/PaymentFeedback.tsx +2 -1
  328. package/src/components/PdpCcCard/PdpCcCard.tsx +356 -0
  329. package/src/components/PlanComparisonCard/PlanComparisonCard.tsx +2 -1
  330. package/src/components/Popup/Popup.tsx +2 -1
  331. package/src/components/PortfolioHero/PortfolioHero.tsx +2 -1
  332. package/src/components/PoweredByLabel/PoweredByLabel.tsx +2 -1
  333. package/src/components/ProductLabel/ProductLabel.tsx +2 -1
  334. package/src/components/ProductMerchandisingCard/GlassFill.tsx +276 -0
  335. package/src/components/ProductMerchandisingCard/GlassFill.web.tsx +127 -0
  336. package/src/components/ProductMerchandisingCard/ProductMerchandisingCard.tsx +423 -0
  337. package/src/components/ProductOverview/ProductOverview.tsx +2 -1
  338. package/src/components/ProgressBadge/ProgressBadge.tsx +2 -1
  339. package/src/components/ProjectionMarker/ProjectionMarker.tsx +277 -0
  340. package/src/components/Radio/Radio.tsx +7 -5
  341. package/src/components/RangeTrack/RangeTrack.tsx +3 -2
  342. package/src/components/RechargeCard/RechargeCard.tsx +2 -1
  343. package/src/components/SavingsGoalSummary/SavingsGoalSummary.tsx +2 -1
  344. package/src/components/Screen/Screen.tsx +2 -1
  345. package/src/components/Section/Section.tsx +6 -5
  346. package/src/components/SegmentedControl/SegmentedControl.tsx +3 -2
  347. package/src/components/SegmentedTrack/SegmentedTrack.tsx +5 -4
  348. package/src/components/Slider/Slider.tsx +628 -0
  349. package/src/components/Slot/Slot.tsx +2 -1
  350. package/src/components/Spinner/Spinner.tsx +2 -1
  351. package/src/components/StatGroup/StatGroup.tsx +3 -2
  352. package/src/components/StatItem/StatItem.tsx +2 -1
  353. package/src/components/StatusHero/StatusHero.tsx +2 -1
  354. package/src/components/Stepper/Step.tsx +2 -1
  355. package/src/components/Stepper/StepLabel.tsx +2 -1
  356. package/src/components/Stepper/Stepper.tsx +2 -1
  357. package/src/components/StrengthIndicator/StrengthIndicator.tsx +2 -1
  358. package/src/components/SuggestiveSearch/SuggestiveSearch.tsx +4 -3
  359. package/src/components/SummaryTile/SummaryTile.tsx +2 -1
  360. package/src/components/SupportText/SupportText.tsx +2 -1
  361. package/src/components/SupportText/SupportTextIcon.tsx +2 -1
  362. package/src/components/SwappableAmount/SwappableAmount.tsx +2 -1
  363. package/src/components/Tabs/TabItem.tsx +2 -1
  364. package/src/components/Tabs/Tabs.tsx +2 -1
  365. package/src/components/TestimonialsCard/TestimonialsCard.tsx +2 -1
  366. package/src/components/Text/Text.tsx +2 -1
  367. package/src/components/TextInput/TextInput.tsx +18 -13
  368. package/src/components/TextSegment/TextSegment.tsx +166 -0
  369. package/src/components/ThreadHero/ThreadHero.tsx +2 -1
  370. package/src/components/Title/Title.tsx +2 -1
  371. package/src/components/Toast/Toast.tsx +2 -1
  372. package/src/components/Toast/ToastProvider.tsx +2 -1
  373. package/src/components/Toast/useToast.ts +3 -2
  374. package/src/components/Toggle/Toggle.tsx +2 -1
  375. package/src/components/Tooltip/Tooltip.tsx +3 -2
  376. package/src/components/TransactionBubble/TransactionBubble.tsx +2 -1
  377. package/src/components/TransactionDetails/TransactionDetails.tsx +3 -2
  378. package/src/components/TransactionStatus/TransactionStatus.tsx +3 -2
  379. package/src/components/UpiHandle/UpiHandle.tsx +3 -2
  380. package/src/components/VStack/VStack.tsx +2 -1
  381. package/src/components/docs/modeControls.tsx +122 -0
  382. package/src/components/index.ts +11 -1
  383. package/src/design-tokens/Coin Variables-variables-full.json +1 -1
  384. package/src/design-tokens/JFSThemeProvider.tsx +4 -3
  385. package/src/design-tokens/figma-modes.generated.ts +425 -0
  386. package/src/design-tokens/index.ts +1 -0
  387. package/src/icons/registry.ts +1 -1
  388. package/src/skeleton/Skeleton.tsx +2 -1
  389. package/src/utils/react-utils.ts +26 -2
  390. package/lib/typescript/scripts/extract-component-tokens.d.ts +0 -9
  391. package/lib/typescript/scripts/generate-component-docs.d.ts +0 -9
  392. 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: "fade",
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
- const processedHeroMedia = (0, _react.useMemo)(() => heroMedia ? (0, _reactUtils.cloneChildrenWithModes)(heroMedia, modes, FULLSCREEN_MODAL_FORCED_MODES) : null, [heroMedia, modes]);
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 = InputSearch;
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
- const mod = require(resolveNativeLottieModuleName());
69
- cachedView = mod.default ?? LottieUnavailable;
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 = NoteInput;
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);