jfs-components 0.1.8 → 0.1.17

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 (704) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/lib/commonjs/components/Accordion/Accordion.js +2 -1
  3. package/lib/commonjs/components/AccordionCheckbox/AccordionCheckbox.js +4 -3
  4. package/lib/commonjs/components/AccountCard/AccountCard.js +4 -3
  5. package/lib/commonjs/components/ActionFooter/ActionFooter.js +7 -24
  6. package/lib/commonjs/components/ActionTile/ActionTile.js +10 -10
  7. package/lib/commonjs/components/AllocationComparisonChart/AllocationComparisonChart.js +9 -6
  8. package/lib/commonjs/components/AmountInput/AmountInput.js +3 -3
  9. package/lib/commonjs/components/AreaLineChart/AreaLineChart.js +13 -9
  10. package/lib/commonjs/components/Attached/Attached.js +1 -1
  11. package/lib/commonjs/components/Avatar/Avatar.js +10 -10
  12. package/lib/commonjs/components/AvatarGroup/AvatarGroup.js +9 -9
  13. package/lib/commonjs/components/Badge/Badge.js +55 -16
  14. package/lib/commonjs/components/BenefitCard/BenefitCard.js +95 -21
  15. package/lib/commonjs/components/BottomNav/BottomNav.js +2 -2
  16. package/lib/commonjs/components/BottomNavItem/BottomNavItem.js +3 -3
  17. package/lib/commonjs/components/BrandChip/BrandChip.js +3 -3
  18. package/lib/commonjs/components/Button/Button.js +32 -19
  19. package/lib/commonjs/components/Card/Card.js +20 -20
  20. package/lib/commonjs/components/CardAdvisory/CardAdvisory.js +8 -7
  21. package/lib/commonjs/components/CardBankAccount/CardBankAccount.js +3 -2
  22. package/lib/commonjs/components/CardCTA/CardCTA.js +215 -45
  23. package/lib/commonjs/components/CardFeedback/CardFeedback.js +18 -18
  24. package/lib/commonjs/components/CardFinancialCondition/CardFinancialCondition.js +7 -7
  25. package/lib/commonjs/components/CardInsight/CardInsight.js +6 -3
  26. package/lib/commonjs/components/Carousel/Carousel.js +18 -12
  27. package/lib/commonjs/components/CarouselCardAccounts/CarouselCardAccounts.js +75 -0
  28. package/lib/commonjs/components/Checkbox/Checkbox.js +6 -13
  29. package/lib/commonjs/components/ChipGroup/ChipGroup.js +1 -1
  30. package/lib/commonjs/components/ChipSelect/ChipSelect.js +11 -11
  31. package/lib/commonjs/components/CircularProgressBar/CircularProgressBar.js +12 -8
  32. package/lib/commonjs/components/CircularProgressBarDoted/CircularProgressBarDoted.js +11 -10
  33. package/lib/commonjs/components/CircularRating/CircularRating.js +5 -4
  34. package/lib/commonjs/components/ClusterBubble/ClusterBubble.js +3 -2
  35. package/lib/commonjs/components/CompareTable/CompareTable.js +88 -59
  36. package/lib/commonjs/components/CoverageBarComparison/CoverageBarComparison.js +3 -2
  37. package/lib/commonjs/components/DebitCard/DebitCard.js +18 -18
  38. package/lib/commonjs/components/Disclaimer/Disclaimer.js +5 -5
  39. package/lib/commonjs/components/DonutChart/DonutChart.js +15 -14
  40. package/lib/commonjs/components/Drawer/Drawer.js +60 -60
  41. package/lib/commonjs/components/Dropdown/Dropdown.js +25 -25
  42. package/lib/commonjs/components/DropdownInput/DropdownInput.js +13 -12
  43. package/lib/commonjs/components/EmptyState/EmptyState.js +14 -14
  44. package/lib/commonjs/components/ExpandableCheckbox/ExpandableCheckbox.js +2 -1
  45. package/lib/commonjs/components/FilterBar/FilterBar.js +2 -2
  46. package/lib/commonjs/components/Form/Form.js +3 -3
  47. package/lib/commonjs/components/FormField/FormField.js +48 -8
  48. package/lib/commonjs/components/FullscreenModal/FullscreenModal.js +24 -24
  49. package/lib/commonjs/components/Gauge/Gauge.js +9 -9
  50. package/lib/commonjs/components/HoldingsCard/HoldingsCard.js +13 -12
  51. package/lib/commonjs/components/Icon/Icon.js +6 -6
  52. package/lib/commonjs/components/IconCapsule/IconCapsule.js +7 -7
  53. package/lib/commonjs/components/InputSearch/InputSearch.js +9 -9
  54. package/lib/commonjs/components/InstitutionBadge/InstitutionBadge.js +5 -4
  55. package/lib/commonjs/components/ListGroup/ListGroup.js +10 -9
  56. package/lib/commonjs/components/ListItem/ListItem.js +13 -12
  57. package/lib/commonjs/components/LottieIntroBlock/LottieIntroBlock.js +13 -13
  58. package/lib/commonjs/components/LottiePlayer/LottiePlayer.js +2 -2
  59. package/lib/commonjs/components/LottiePlayer/LottiePlayer.web.js +2 -2
  60. package/lib/commonjs/components/MediaCard/MediaCard.js +25 -23
  61. package/lib/commonjs/components/MessageField/MessageField.js +8 -8
  62. package/lib/commonjs/components/MetricLegendItem/MetricLegendItem.js +3 -2
  63. package/lib/commonjs/components/MoneyValue/MoneyValue.js +7 -7
  64. package/lib/commonjs/components/MonthlyStatusGrid/MonthlyStatusGrid.js +6 -3
  65. package/lib/commonjs/components/NavArrow/NavArrow.js +8 -8
  66. package/lib/commonjs/components/NoteInput/NoteInput.js +12 -12
  67. package/lib/commonjs/components/Nudge/Nudge.js +20 -20
  68. package/lib/commonjs/components/OTP/OTP.js +15 -15
  69. package/lib/commonjs/components/PageHero/PageHero.js +16 -16
  70. package/lib/commonjs/components/PaymentFeedback/PaymentFeedback.js +23 -23
  71. package/lib/commonjs/components/Popup/Popup.js +1 -1
  72. package/lib/commonjs/components/PoweredByLabel/PoweredByLabel.js +3 -2
  73. package/lib/commonjs/components/ProductMerchandisingCard/ProductMerchandisingCard.js +107 -33
  74. package/lib/commonjs/components/ProductOverview/ProductOverview.js +4 -3
  75. package/lib/commonjs/components/ProgressBadge/ProgressBadge.js +7 -7
  76. package/lib/commonjs/components/ProjectionMarker/ProjectionMarker.js +3 -2
  77. package/lib/commonjs/components/Radio/Radio.js +8 -8
  78. package/lib/commonjs/components/RechargeCard/RechargeCard.js +31 -31
  79. package/lib/commonjs/components/SavingsGoalSummary/SavingsGoalSummary.js +59 -12
  80. package/lib/commonjs/components/ScrollArea/ScrollArea.js +126 -0
  81. package/lib/commonjs/components/Section/Section.js +27 -26
  82. package/lib/commonjs/components/Slider/Slider.js +3 -2
  83. package/lib/commonjs/components/Stack/Stack.js +86 -0
  84. package/lib/commonjs/components/StatusHero/StatusHero.js +14 -14
  85. package/lib/commonjs/components/Stepper/Step.js +16 -16
  86. package/lib/commonjs/components/Stepper/StepLabel.js +16 -16
  87. package/lib/commonjs/components/Stepper/Stepper.js +3 -3
  88. package/lib/commonjs/components/SuggestiveSearch/SuggestiveSearch.js +20 -11
  89. package/lib/commonjs/components/SummaryTile/SummaryTile.js +3 -2
  90. package/lib/commonjs/components/SupportText/SupportText.js +6 -6
  91. package/lib/commonjs/components/SupportText/SupportTextIcon.js +2 -2
  92. package/lib/commonjs/components/Table/Table.js +324 -0
  93. package/lib/commonjs/components/Text/Text.js +15 -2
  94. package/lib/commonjs/components/TextInput/TextInput.js +23 -15
  95. package/lib/commonjs/components/TextSegment/TextSegment.js +15 -2
  96. package/lib/commonjs/components/ThreadHero/ThreadHero.js +21 -22
  97. package/lib/commonjs/components/Title/Title.js +39 -16
  98. package/lib/commonjs/components/Toast/Toast.js +18 -17
  99. package/lib/commonjs/components/Toggle/Toggle.js +3 -11
  100. package/lib/commonjs/components/Tooltip/Tooltip.js +12 -12
  101. package/lib/commonjs/components/TransactionBubble/TransactionBubble.js +15 -14
  102. package/lib/commonjs/components/TransactionDetails/TransactionDetails.js +10 -10
  103. package/lib/commonjs/components/TransactionStatus/TransactionStatus.js +12 -11
  104. package/lib/commonjs/components/UpiHandle/UpiHandle.js +17 -17
  105. package/lib/commonjs/components/index.js +58 -0
  106. package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
  107. package/lib/commonjs/design-tokens/figma-modes.generated.js +51 -42
  108. package/lib/commonjs/icons/components/Icon4g.js +19 -0
  109. package/lib/commonjs/icons/components/Icon4gltedata.js +19 -0
  110. package/lib/commonjs/icons/components/Icon5g.js +19 -0
  111. package/lib/commonjs/icons/components/Icon5gdoubleplus.js +19 -0
  112. package/lib/commonjs/icons/components/Icon5gplus.js +19 -0
  113. package/lib/commonjs/icons/components/IconAdblocker.js +19 -0
  114. package/lib/commonjs/icons/components/IconAdblockplus.js +19 -0
  115. package/lib/commonjs/icons/components/IconAnalytics.js +19 -0
  116. package/lib/commonjs/icons/components/IconAnalyticsdata.js +19 -0
  117. package/lib/commonjs/icons/components/IconAnalyticspiechart.js +19 -0
  118. package/lib/commonjs/icons/components/IconAnalyticspiecharttree.js +19 -0
  119. package/lib/commonjs/icons/components/IconAnalyticspiecharttwo.js +19 -0
  120. package/lib/commonjs/icons/components/IconCompoundinterest.js +19 -0
  121. package/lib/commonjs/icons/components/IconConsumptionaccounted.js +19 -0
  122. package/lib/commonjs/icons/components/IconConsumptionaverage.js +19 -0
  123. package/lib/commonjs/icons/components/IconConsumptionhigh.js +19 -0
  124. package/lib/commonjs/icons/components/IconConsumptionlow.js +19 -0
  125. package/lib/commonjs/icons/components/IconConsumptionunaccounted.js +19 -0
  126. package/lib/commonjs/icons/components/IconCsvdoc.js +19 -0
  127. package/lib/commonjs/icons/components/IconDatabase.js +19 -0
  128. package/lib/commonjs/icons/components/IconDigitalecosystem.js +19 -0
  129. package/lib/commonjs/icons/components/IconDigitalselfservice.js +19 -0
  130. package/lib/commonjs/icons/components/IconDistribution.js +19 -0
  131. package/lib/commonjs/icons/components/IconDocument.js +19 -0
  132. package/lib/commonjs/icons/components/IconDocumentdoc.js +19 -0
  133. package/lib/commonjs/icons/components/IconDocumentjpg.js +19 -0
  134. package/lib/commonjs/icons/components/IconDocumentodt.js +19 -0
  135. package/lib/commonjs/icons/components/IconDocumentpdf.js +19 -0
  136. package/lib/commonjs/icons/components/IconDocumentpng.js +19 -0
  137. package/lib/commonjs/icons/components/IconDocumentraw.js +19 -0
  138. package/lib/commonjs/icons/components/IconDocumentrtf.js +19 -0
  139. package/lib/commonjs/icons/components/IconDocumentsettings.js +19 -0
  140. package/lib/commonjs/icons/components/IconDocumenttif.js +19 -0
  141. package/lib/commonjs/icons/components/IconDocumenttxt.js +19 -0
  142. package/lib/commonjs/icons/components/IconDocumentunknown.js +19 -0
  143. package/lib/commonjs/icons/components/IconDocumentxls.js +19 -0
  144. package/lib/commonjs/icons/components/IconDocumentxlsx.js +19 -0
  145. package/lib/commonjs/icons/components/IconFilerequest.js +19 -0
  146. package/lib/commonjs/icons/components/IconFilesend.js +19 -0
  147. package/lib/commonjs/icons/components/IconFileshare.js +19 -0
  148. package/lib/commonjs/icons/components/IconFindinpage.js +19 -0
  149. package/lib/commonjs/icons/components/IconFolder.js +19 -0
  150. package/lib/commonjs/icons/components/IconFolderbookmarks.js +19 -0
  151. package/lib/commonjs/icons/components/IconFolderfavorites.js +19 -0
  152. package/lib/commonjs/icons/components/IconFolderlocked.js +19 -0
  153. package/lib/commonjs/icons/components/IconFoldermovefiles.js +19 -0
  154. package/lib/commonjs/icons/components/IconFolderpublic.js +19 -0
  155. package/lib/commonjs/icons/components/IconFolderrated.js +19 -0
  156. package/lib/commonjs/icons/components/IconFolderrequest.js +19 -0
  157. package/lib/commonjs/icons/components/IconForm.js +19 -0
  158. package/lib/commonjs/icons/components/IconFormadd.js +19 -0
  159. package/lib/commonjs/icons/components/IconForms.js +19 -0
  160. package/lib/commonjs/icons/components/IconGraphincreasing.js +19 -0
  161. package/lib/commonjs/icons/components/IconGraphlow.js +19 -0
  162. package/lib/commonjs/icons/components/IconGraphtable.js +19 -0
  163. package/lib/commonjs/icons/components/IconHealthreport.js +19 -0
  164. package/lib/commonjs/icons/components/IconHubmode.js +19 -0
  165. package/lib/commonjs/icons/components/IconInfrastructure.js +19 -0
  166. package/lib/commonjs/icons/components/IconInterestlow.js +19 -0
  167. package/lib/commonjs/icons/components/IconLte.js +19 -0
  168. package/lib/commonjs/icons/components/IconNetworkfuture.js +19 -0
  169. package/lib/commonjs/icons/components/IconPagesettings.js +19 -0
  170. package/lib/commonjs/icons/components/IconPptxdoc.js +19 -0
  171. package/lib/commonjs/icons/components/IconPreferrednumber.js +19 -0
  172. package/lib/commonjs/icons/components/IconPremiumnumber.js +19 -0
  173. package/lib/commonjs/icons/components/IconProjection.js +19 -0
  174. package/lib/commonjs/icons/components/IconRequest.js +19 -0
  175. package/lib/commonjs/icons/components/IconRoutestraffic.js +19 -0
  176. package/lib/commonjs/icons/components/IconTechnology.js +19 -0
  177. package/lib/commonjs/icons/components/IconVolte.js +19 -0
  178. package/lib/commonjs/icons/components/IconVonr.js +19 -0
  179. package/lib/commonjs/icons/components/IconVowifi.js +19 -0
  180. package/lib/commonjs/icons/components/IconVpndata.js +19 -0
  181. package/lib/commonjs/icons/components/index.js +803 -0
  182. package/lib/commonjs/icons/registry.js +2 -2
  183. package/lib/commonjs/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.js +11 -3
  184. package/lib/commonjs/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.js +8 -4
  185. package/lib/commonjs/utils/index.js +25 -0
  186. package/lib/commonjs/utils/react-utils.js +118 -0
  187. package/lib/commonjs/utils/shadow.js +200 -0
  188. package/lib/commonjs/utils/web-platform-utils.js +59 -0
  189. package/lib/module/components/Accordion/Accordion.js +3 -2
  190. package/lib/module/components/AccordionCheckbox/AccordionCheckbox.js +5 -4
  191. package/lib/module/components/AccountCard/AccountCard.js +5 -4
  192. package/lib/module/components/ActionFooter/ActionFooter.js +7 -24
  193. package/lib/module/components/ActionTile/ActionTile.js +10 -10
  194. package/lib/module/components/AllocationComparisonChart/AllocationComparisonChart.js +10 -7
  195. package/lib/module/components/AmountInput/AmountInput.js +3 -3
  196. package/lib/module/components/AreaLineChart/AreaLineChart.js +14 -10
  197. package/lib/module/components/Attached/Attached.js +1 -1
  198. package/lib/module/components/Avatar/Avatar.js +10 -10
  199. package/lib/module/components/AvatarGroup/AvatarGroup.js +9 -9
  200. package/lib/module/components/Badge/Badge.js +57 -18
  201. package/lib/module/components/BenefitCard/BenefitCard.js +95 -21
  202. package/lib/module/components/BottomNav/BottomNav.js +2 -2
  203. package/lib/module/components/BottomNavItem/BottomNavItem.js +3 -3
  204. package/lib/module/components/BrandChip/BrandChip.js +4 -4
  205. package/lib/module/components/Button/Button.js +32 -19
  206. package/lib/module/components/Card/Card.js +20 -20
  207. package/lib/module/components/CardAdvisory/CardAdvisory.js +9 -8
  208. package/lib/module/components/CardBankAccount/CardBankAccount.js +4 -3
  209. package/lib/module/components/CardCTA/CardCTA.js +216 -46
  210. package/lib/module/components/CardFeedback/CardFeedback.js +18 -18
  211. package/lib/module/components/CardFinancialCondition/CardFinancialCondition.js +7 -7
  212. package/lib/module/components/CardInsight/CardInsight.js +6 -3
  213. package/lib/module/components/Carousel/Carousel.js +18 -12
  214. package/lib/module/components/CarouselCardAccounts/CarouselCardAccounts.js +71 -0
  215. package/lib/module/components/Checkbox/Checkbox.js +2 -9
  216. package/lib/module/components/ChipGroup/ChipGroup.js +1 -1
  217. package/lib/module/components/ChipSelect/ChipSelect.js +11 -11
  218. package/lib/module/components/CircularProgressBar/CircularProgressBar.js +13 -9
  219. package/lib/module/components/CircularProgressBarDoted/CircularProgressBarDoted.js +12 -11
  220. package/lib/module/components/CircularRating/CircularRating.js +6 -5
  221. package/lib/module/components/ClusterBubble/ClusterBubble.js +4 -3
  222. package/lib/module/components/CompareTable/CompareTable.js +89 -60
  223. package/lib/module/components/CoverageBarComparison/CoverageBarComparison.js +4 -3
  224. package/lib/module/components/DebitCard/DebitCard.js +18 -18
  225. package/lib/module/components/Disclaimer/Disclaimer.js +5 -5
  226. package/lib/module/components/DonutChart/DonutChart.js +16 -15
  227. package/lib/module/components/Drawer/Drawer.js +60 -60
  228. package/lib/module/components/Dropdown/Dropdown.js +26 -26
  229. package/lib/module/components/DropdownInput/DropdownInput.js +14 -13
  230. package/lib/module/components/EmptyState/EmptyState.js +14 -14
  231. package/lib/module/components/ExpandableCheckbox/ExpandableCheckbox.js +2 -1
  232. package/lib/module/components/FilterBar/FilterBar.js +2 -2
  233. package/lib/module/components/Form/Form.js +3 -3
  234. package/lib/module/components/FormField/FormField.js +51 -11
  235. package/lib/module/components/FullscreenModal/FullscreenModal.js +24 -24
  236. package/lib/module/components/Gauge/Gauge.js +9 -9
  237. package/lib/module/components/HoldingsCard/HoldingsCard.js +14 -13
  238. package/lib/module/components/Icon/Icon.js +6 -6
  239. package/lib/module/components/IconCapsule/IconCapsule.js +7 -7
  240. package/lib/module/components/InputSearch/InputSearch.js +9 -9
  241. package/lib/module/components/InstitutionBadge/InstitutionBadge.js +6 -5
  242. package/lib/module/components/ListGroup/ListGroup.js +11 -10
  243. package/lib/module/components/ListItem/ListItem.js +14 -13
  244. package/lib/module/components/LottieIntroBlock/LottieIntroBlock.js +13 -13
  245. package/lib/module/components/LottiePlayer/LottiePlayer.js +2 -2
  246. package/lib/module/components/LottiePlayer/LottiePlayer.web.js +2 -2
  247. package/lib/module/components/MediaCard/MediaCard.js +25 -23
  248. package/lib/module/components/MessageField/MessageField.js +8 -8
  249. package/lib/module/components/MetricLegendItem/MetricLegendItem.js +4 -3
  250. package/lib/module/components/MoneyValue/MoneyValue.js +7 -7
  251. package/lib/module/components/MonthlyStatusGrid/MonthlyStatusGrid.js +7 -4
  252. package/lib/module/components/NavArrow/NavArrow.js +8 -8
  253. package/lib/module/components/NoteInput/NoteInput.js +12 -12
  254. package/lib/module/components/Nudge/Nudge.js +20 -20
  255. package/lib/module/components/OTP/OTP.js +15 -15
  256. package/lib/module/components/PageHero/PageHero.js +16 -16
  257. package/lib/module/components/PaymentFeedback/PaymentFeedback.js +23 -23
  258. package/lib/module/components/Popup/Popup.js +1 -1
  259. package/lib/module/components/PoweredByLabel/PoweredByLabel.js +4 -3
  260. package/lib/module/components/ProductMerchandisingCard/ProductMerchandisingCard.js +109 -35
  261. package/lib/module/components/ProductOverview/ProductOverview.js +5 -4
  262. package/lib/module/components/ProgressBadge/ProgressBadge.js +8 -8
  263. package/lib/module/components/ProjectionMarker/ProjectionMarker.js +4 -3
  264. package/lib/module/components/Radio/Radio.js +9 -9
  265. package/lib/module/components/RechargeCard/RechargeCard.js +31 -31
  266. package/lib/module/components/SavingsGoalSummary/SavingsGoalSummary.js +60 -13
  267. package/lib/module/components/ScrollArea/ScrollArea.js +121 -0
  268. package/lib/module/components/Section/Section.js +28 -27
  269. package/lib/module/components/Slider/Slider.js +4 -3
  270. package/lib/module/components/Stack/Stack.js +81 -0
  271. package/lib/module/components/StatusHero/StatusHero.js +14 -14
  272. package/lib/module/components/Stepper/Step.js +16 -16
  273. package/lib/module/components/Stepper/StepLabel.js +16 -16
  274. package/lib/module/components/Stepper/Stepper.js +3 -3
  275. package/lib/module/components/SuggestiveSearch/SuggestiveSearch.js +20 -11
  276. package/lib/module/components/SummaryTile/SummaryTile.js +4 -3
  277. package/lib/module/components/SupportText/SupportText.js +6 -6
  278. package/lib/module/components/SupportText/SupportTextIcon.js +2 -2
  279. package/lib/module/components/Table/Table.js +315 -0
  280. package/lib/module/components/Text/Text.js +16 -3
  281. package/lib/module/components/TextInput/TextInput.js +23 -15
  282. package/lib/module/components/TextSegment/TextSegment.js +16 -3
  283. package/lib/module/components/ThreadHero/ThreadHero.js +22 -23
  284. package/lib/module/components/Title/Title.js +40 -17
  285. package/lib/module/components/Toast/Toast.js +19 -18
  286. package/lib/module/components/Toggle/Toggle.js +4 -12
  287. package/lib/module/components/Tooltip/Tooltip.js +12 -12
  288. package/lib/module/components/TransactionBubble/TransactionBubble.js +16 -15
  289. package/lib/module/components/TransactionDetails/TransactionDetails.js +10 -10
  290. package/lib/module/components/TransactionStatus/TransactionStatus.js +13 -12
  291. package/lib/module/components/UpiHandle/UpiHandle.js +18 -18
  292. package/lib/module/components/index.js +4 -0
  293. package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
  294. package/lib/module/design-tokens/figma-modes.generated.js +51 -42
  295. package/lib/module/icons/components/Icon4g.js +12 -0
  296. package/lib/module/icons/components/Icon4gltedata.js +12 -0
  297. package/lib/module/icons/components/Icon5g.js +12 -0
  298. package/lib/module/icons/components/Icon5gdoubleplus.js +12 -0
  299. package/lib/module/icons/components/Icon5gplus.js +12 -0
  300. package/lib/module/icons/components/IconAdblocker.js +12 -0
  301. package/lib/module/icons/components/IconAdblockplus.js +12 -0
  302. package/lib/module/icons/components/IconAnalytics.js +12 -0
  303. package/lib/module/icons/components/IconAnalyticsdata.js +12 -0
  304. package/lib/module/icons/components/IconAnalyticspiechart.js +12 -0
  305. package/lib/module/icons/components/IconAnalyticspiecharttree.js +12 -0
  306. package/lib/module/icons/components/IconAnalyticspiecharttwo.js +12 -0
  307. package/lib/module/icons/components/IconCompoundinterest.js +12 -0
  308. package/lib/module/icons/components/IconConsumptionaccounted.js +12 -0
  309. package/lib/module/icons/components/IconConsumptionaverage.js +12 -0
  310. package/lib/module/icons/components/IconConsumptionhigh.js +12 -0
  311. package/lib/module/icons/components/IconConsumptionlow.js +12 -0
  312. package/lib/module/icons/components/IconConsumptionunaccounted.js +12 -0
  313. package/lib/module/icons/components/IconCsvdoc.js +12 -0
  314. package/lib/module/icons/components/IconDatabase.js +12 -0
  315. package/lib/module/icons/components/IconDigitalecosystem.js +12 -0
  316. package/lib/module/icons/components/IconDigitalselfservice.js +12 -0
  317. package/lib/module/icons/components/IconDistribution.js +12 -0
  318. package/lib/module/icons/components/IconDocument.js +12 -0
  319. package/lib/module/icons/components/IconDocumentdoc.js +12 -0
  320. package/lib/module/icons/components/IconDocumentjpg.js +12 -0
  321. package/lib/module/icons/components/IconDocumentodt.js +12 -0
  322. package/lib/module/icons/components/IconDocumentpdf.js +12 -0
  323. package/lib/module/icons/components/IconDocumentpng.js +12 -0
  324. package/lib/module/icons/components/IconDocumentraw.js +12 -0
  325. package/lib/module/icons/components/IconDocumentrtf.js +12 -0
  326. package/lib/module/icons/components/IconDocumentsettings.js +12 -0
  327. package/lib/module/icons/components/IconDocumenttif.js +12 -0
  328. package/lib/module/icons/components/IconDocumenttxt.js +12 -0
  329. package/lib/module/icons/components/IconDocumentunknown.js +12 -0
  330. package/lib/module/icons/components/IconDocumentxls.js +12 -0
  331. package/lib/module/icons/components/IconDocumentxlsx.js +12 -0
  332. package/lib/module/icons/components/IconFilerequest.js +12 -0
  333. package/lib/module/icons/components/IconFilesend.js +12 -0
  334. package/lib/module/icons/components/IconFileshare.js +12 -0
  335. package/lib/module/icons/components/IconFindinpage.js +12 -0
  336. package/lib/module/icons/components/IconFolder.js +12 -0
  337. package/lib/module/icons/components/IconFolderbookmarks.js +12 -0
  338. package/lib/module/icons/components/IconFolderfavorites.js +12 -0
  339. package/lib/module/icons/components/IconFolderlocked.js +12 -0
  340. package/lib/module/icons/components/IconFoldermovefiles.js +12 -0
  341. package/lib/module/icons/components/IconFolderpublic.js +12 -0
  342. package/lib/module/icons/components/IconFolderrated.js +12 -0
  343. package/lib/module/icons/components/IconFolderrequest.js +12 -0
  344. package/lib/module/icons/components/IconForm.js +12 -0
  345. package/lib/module/icons/components/IconFormadd.js +12 -0
  346. package/lib/module/icons/components/IconForms.js +12 -0
  347. package/lib/module/icons/components/IconGraphincreasing.js +12 -0
  348. package/lib/module/icons/components/IconGraphlow.js +12 -0
  349. package/lib/module/icons/components/IconGraphtable.js +12 -0
  350. package/lib/module/icons/components/IconHealthreport.js +12 -0
  351. package/lib/module/icons/components/IconHubmode.js +12 -0
  352. package/lib/module/icons/components/IconInfrastructure.js +12 -0
  353. package/lib/module/icons/components/IconInterestlow.js +12 -0
  354. package/lib/module/icons/components/IconLte.js +12 -0
  355. package/lib/module/icons/components/IconNetworkfuture.js +12 -0
  356. package/lib/module/icons/components/IconPagesettings.js +12 -0
  357. package/lib/module/icons/components/IconPptxdoc.js +12 -0
  358. package/lib/module/icons/components/IconPreferrednumber.js +12 -0
  359. package/lib/module/icons/components/IconPremiumnumber.js +12 -0
  360. package/lib/module/icons/components/IconProjection.js +12 -0
  361. package/lib/module/icons/components/IconRequest.js +12 -0
  362. package/lib/module/icons/components/IconRoutestraffic.js +12 -0
  363. package/lib/module/icons/components/IconTechnology.js +12 -0
  364. package/lib/module/icons/components/IconVolte.js +12 -0
  365. package/lib/module/icons/components/IconVonr.js +12 -0
  366. package/lib/module/icons/components/IconVowifi.js +12 -0
  367. package/lib/module/icons/components/IconVpndata.js +12 -0
  368. package/lib/module/icons/components/index.js +73 -0
  369. package/lib/module/icons/registry.js +2 -2
  370. package/lib/module/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.js +11 -3
  371. package/lib/module/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.js +8 -4
  372. package/lib/module/utils/index.js +2 -1
  373. package/lib/module/utils/react-utils.js +115 -0
  374. package/lib/module/utils/shadow.js +194 -0
  375. package/lib/module/utils/web-platform-utils.js +58 -0
  376. package/lib/typescript/src/components/Accordion/Accordion.d.ts +7 -1
  377. package/lib/typescript/src/components/AccordionCheckbox/AccordionCheckbox.d.ts +7 -1
  378. package/lib/typescript/src/components/AccountCard/AccountCard.d.ts +7 -1
  379. package/lib/typescript/src/components/AllocationComparisonChart/AllocationComparisonChart.d.ts +7 -1
  380. package/lib/typescript/src/components/AreaLineChart/AreaLineChart.d.ts +8 -1
  381. package/lib/typescript/src/components/Badge/Badge.d.ts +32 -2
  382. package/lib/typescript/src/components/BenefitCard/BenefitCard.d.ts +33 -4
  383. package/lib/typescript/src/components/BrandChip/BrandChip.d.ts +7 -1
  384. package/lib/typescript/src/components/Button/Button.d.ts +7 -1
  385. package/lib/typescript/src/components/CardAdvisory/CardAdvisory.d.ts +7 -1
  386. package/lib/typescript/src/components/CardBankAccount/CardBankAccount.d.ts +7 -1
  387. package/lib/typescript/src/components/CardCTA/CardCTA.d.ts +27 -5
  388. package/lib/typescript/src/components/Carousel/Carousel.d.ts +11 -1
  389. package/lib/typescript/src/components/CarouselCardAccounts/CarouselCardAccounts.d.ts +57 -0
  390. package/lib/typescript/src/components/CircularProgressBar/CircularProgressBar.d.ts +7 -1
  391. package/lib/typescript/src/components/CircularProgressBarDoted/CircularProgressBarDoted.d.ts +7 -1
  392. package/lib/typescript/src/components/CircularRating/CircularRating.d.ts +7 -1
  393. package/lib/typescript/src/components/ClusterBubble/ClusterBubble.d.ts +7 -1
  394. package/lib/typescript/src/components/CompareTable/CompareTable.d.ts +7 -1
  395. package/lib/typescript/src/components/CoverageBarComparison/CoverageBarComparison.d.ts +7 -1
  396. package/lib/typescript/src/components/DonutChart/DonutChart.d.ts +7 -1
  397. package/lib/typescript/src/components/Dropdown/Dropdown.d.ts +7 -1
  398. package/lib/typescript/src/components/DropdownInput/DropdownInput.d.ts +6 -0
  399. package/lib/typescript/src/components/ExpandableCheckbox/ExpandableCheckbox.d.ts +7 -1
  400. package/lib/typescript/src/components/HoldingsCard/HoldingsCard.d.ts +7 -1
  401. package/lib/typescript/src/components/InstitutionBadge/InstitutionBadge.d.ts +7 -1
  402. package/lib/typescript/src/components/ListGroup/ListGroup.d.ts +7 -1
  403. package/lib/typescript/src/components/ListItem/ListItem.d.ts +7 -1
  404. package/lib/typescript/src/components/MetricLegendItem/MetricLegendItem.d.ts +7 -1
  405. package/lib/typescript/src/components/MonthlyStatusGrid/MonthlyStatusGrid.d.ts +14 -2
  406. package/lib/typescript/src/components/PoweredByLabel/PoweredByLabel.d.ts +7 -1
  407. package/lib/typescript/src/components/ProductMerchandisingCard/ProductMerchandisingCard.d.ts +7 -1
  408. package/lib/typescript/src/components/ProductOverview/ProductOverview.d.ts +7 -1
  409. package/lib/typescript/src/components/ProgressBadge/ProgressBadge.d.ts +7 -1
  410. package/lib/typescript/src/components/ProjectionMarker/ProjectionMarker.d.ts +7 -1
  411. package/lib/typescript/src/components/SavingsGoalSummary/SavingsGoalSummary.d.ts +11 -1
  412. package/lib/typescript/src/components/ScrollArea/ScrollArea.d.ts +77 -0
  413. package/lib/typescript/src/components/Section/Section.d.ts +7 -1
  414. package/lib/typescript/src/components/Slider/Slider.d.ts +6 -0
  415. package/lib/typescript/src/components/Stack/Stack.d.ts +81 -0
  416. package/lib/typescript/src/components/SummaryTile/SummaryTile.d.ts +7 -1
  417. package/lib/typescript/src/components/Table/Table.d.ts +139 -0
  418. package/lib/typescript/src/components/Text/Text.d.ts +16 -1
  419. package/lib/typescript/src/components/TextSegment/TextSegment.d.ts +16 -1
  420. package/lib/typescript/src/components/ThreadHero/ThreadHero.d.ts +7 -1
  421. package/lib/typescript/src/components/Title/Title.d.ts +17 -1
  422. package/lib/typescript/src/components/Toast/Toast.d.ts +7 -1
  423. package/lib/typescript/src/components/TransactionBubble/TransactionBubble.d.ts +7 -1
  424. package/lib/typescript/src/components/TransactionStatus/TransactionStatus.d.ts +7 -1
  425. package/lib/typescript/src/components/UpiHandle/UpiHandle.d.ts +7 -1
  426. package/lib/typescript/src/components/index.d.ts +6 -2
  427. package/lib/typescript/src/design-tokens/figma-modes.generated.d.ts +23 -15
  428. package/lib/typescript/src/icons/components/Icon4g.d.ts +3 -0
  429. package/lib/typescript/src/icons/components/Icon4gltedata.d.ts +3 -0
  430. package/lib/typescript/src/icons/components/Icon5g.d.ts +3 -0
  431. package/lib/typescript/src/icons/components/Icon5gdoubleplus.d.ts +3 -0
  432. package/lib/typescript/src/icons/components/Icon5gplus.d.ts +3 -0
  433. package/lib/typescript/src/icons/components/IconAdblocker.d.ts +3 -0
  434. package/lib/typescript/src/icons/components/IconAdblockplus.d.ts +3 -0
  435. package/lib/typescript/src/icons/components/IconAnalytics.d.ts +3 -0
  436. package/lib/typescript/src/icons/components/IconAnalyticsdata.d.ts +3 -0
  437. package/lib/typescript/src/icons/components/IconAnalyticspiechart.d.ts +3 -0
  438. package/lib/typescript/src/icons/components/IconAnalyticspiecharttree.d.ts +3 -0
  439. package/lib/typescript/src/icons/components/IconAnalyticspiecharttwo.d.ts +3 -0
  440. package/lib/typescript/src/icons/components/IconCompoundinterest.d.ts +3 -0
  441. package/lib/typescript/src/icons/components/IconConsumptionaccounted.d.ts +3 -0
  442. package/lib/typescript/src/icons/components/IconConsumptionaverage.d.ts +3 -0
  443. package/lib/typescript/src/icons/components/IconConsumptionhigh.d.ts +3 -0
  444. package/lib/typescript/src/icons/components/IconConsumptionlow.d.ts +3 -0
  445. package/lib/typescript/src/icons/components/IconConsumptionunaccounted.d.ts +3 -0
  446. package/lib/typescript/src/icons/components/IconCsvdoc.d.ts +3 -0
  447. package/lib/typescript/src/icons/components/IconDatabase.d.ts +3 -0
  448. package/lib/typescript/src/icons/components/IconDigitalecosystem.d.ts +3 -0
  449. package/lib/typescript/src/icons/components/IconDigitalselfservice.d.ts +3 -0
  450. package/lib/typescript/src/icons/components/IconDistribution.d.ts +3 -0
  451. package/lib/typescript/src/icons/components/IconDocument.d.ts +3 -0
  452. package/lib/typescript/src/icons/components/IconDocumentdoc.d.ts +3 -0
  453. package/lib/typescript/src/icons/components/IconDocumentjpg.d.ts +3 -0
  454. package/lib/typescript/src/icons/components/IconDocumentodt.d.ts +3 -0
  455. package/lib/typescript/src/icons/components/IconDocumentpdf.d.ts +3 -0
  456. package/lib/typescript/src/icons/components/IconDocumentpng.d.ts +3 -0
  457. package/lib/typescript/src/icons/components/IconDocumentraw.d.ts +3 -0
  458. package/lib/typescript/src/icons/components/IconDocumentrtf.d.ts +3 -0
  459. package/lib/typescript/src/icons/components/IconDocumentsettings.d.ts +3 -0
  460. package/lib/typescript/src/icons/components/IconDocumenttif.d.ts +3 -0
  461. package/lib/typescript/src/icons/components/IconDocumenttxt.d.ts +3 -0
  462. package/lib/typescript/src/icons/components/IconDocumentunknown.d.ts +3 -0
  463. package/lib/typescript/src/icons/components/IconDocumentxls.d.ts +3 -0
  464. package/lib/typescript/src/icons/components/IconDocumentxlsx.d.ts +3 -0
  465. package/lib/typescript/src/icons/components/IconFilerequest.d.ts +3 -0
  466. package/lib/typescript/src/icons/components/IconFilesend.d.ts +3 -0
  467. package/lib/typescript/src/icons/components/IconFileshare.d.ts +3 -0
  468. package/lib/typescript/src/icons/components/IconFindinpage.d.ts +3 -0
  469. package/lib/typescript/src/icons/components/IconFolder.d.ts +3 -0
  470. package/lib/typescript/src/icons/components/IconFolderbookmarks.d.ts +3 -0
  471. package/lib/typescript/src/icons/components/IconFolderfavorites.d.ts +3 -0
  472. package/lib/typescript/src/icons/components/IconFolderlocked.d.ts +3 -0
  473. package/lib/typescript/src/icons/components/IconFoldermovefiles.d.ts +3 -0
  474. package/lib/typescript/src/icons/components/IconFolderpublic.d.ts +3 -0
  475. package/lib/typescript/src/icons/components/IconFolderrated.d.ts +3 -0
  476. package/lib/typescript/src/icons/components/IconFolderrequest.d.ts +3 -0
  477. package/lib/typescript/src/icons/components/IconForm.d.ts +3 -0
  478. package/lib/typescript/src/icons/components/IconFormadd.d.ts +3 -0
  479. package/lib/typescript/src/icons/components/IconForms.d.ts +3 -0
  480. package/lib/typescript/src/icons/components/IconGraphincreasing.d.ts +3 -0
  481. package/lib/typescript/src/icons/components/IconGraphlow.d.ts +3 -0
  482. package/lib/typescript/src/icons/components/IconGraphtable.d.ts +3 -0
  483. package/lib/typescript/src/icons/components/IconHealthreport.d.ts +3 -0
  484. package/lib/typescript/src/icons/components/IconHubmode.d.ts +3 -0
  485. package/lib/typescript/src/icons/components/IconInfrastructure.d.ts +3 -0
  486. package/lib/typescript/src/icons/components/IconInterestlow.d.ts +3 -0
  487. package/lib/typescript/src/icons/components/IconLte.d.ts +3 -0
  488. package/lib/typescript/src/icons/components/IconNetworkfuture.d.ts +3 -0
  489. package/lib/typescript/src/icons/components/IconPagesettings.d.ts +3 -0
  490. package/lib/typescript/src/icons/components/IconPptxdoc.d.ts +3 -0
  491. package/lib/typescript/src/icons/components/IconPreferrednumber.d.ts +3 -0
  492. package/lib/typescript/src/icons/components/IconPremiumnumber.d.ts +3 -0
  493. package/lib/typescript/src/icons/components/IconProjection.d.ts +3 -0
  494. package/lib/typescript/src/icons/components/IconRequest.d.ts +3 -0
  495. package/lib/typescript/src/icons/components/IconRoutestraffic.d.ts +3 -0
  496. package/lib/typescript/src/icons/components/IconTechnology.d.ts +3 -0
  497. package/lib/typescript/src/icons/components/IconVolte.d.ts +3 -0
  498. package/lib/typescript/src/icons/components/IconVonr.d.ts +3 -0
  499. package/lib/typescript/src/icons/components/IconVowifi.d.ts +3 -0
  500. package/lib/typescript/src/icons/components/IconVpndata.d.ts +3 -0
  501. package/lib/typescript/src/icons/components/index.d.ts +73 -0
  502. package/lib/typescript/src/icons/registry.d.ts +1 -1
  503. package/lib/typescript/src/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.d.ts +31 -3
  504. package/lib/typescript/src/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.d.ts +18 -2
  505. package/lib/typescript/src/utils/index.d.ts +2 -0
  506. package/lib/typescript/src/utils/react-utils.d.ts +76 -0
  507. package/lib/typescript/src/utils/shadow.d.ts +72 -0
  508. package/lib/typescript/src/utils/web-platform-utils.d.ts +36 -0
  509. package/package.json +2 -1
  510. package/src/components/Accordion/Accordion.tsx +9 -2
  511. package/src/components/AccordionCheckbox/AccordionCheckbox.tsx +10 -3
  512. package/src/components/AccountCard/AccountCard.tsx +10 -3
  513. package/src/components/ActionFooter/ActionFooter.tsx +8 -26
  514. package/src/components/ActionTile/ActionTile.tsx +10 -10
  515. package/src/components/AllocationComparisonChart/AllocationComparisonChart.tsx +14 -4
  516. package/src/components/AmountInput/AmountInput.tsx +3 -3
  517. package/src/components/AreaLineChart/AreaLineChart.tsx +17 -7
  518. package/src/components/Attached/Attached.tsx +1 -1
  519. package/src/components/Avatar/Avatar.tsx +10 -10
  520. package/src/components/AvatarGroup/AvatarGroup.tsx +9 -9
  521. package/src/components/Badge/Badge.tsx +86 -17
  522. package/src/components/BenefitCard/BenefitCard.tsx +120 -27
  523. package/src/components/BottomNav/BottomNav.tsx +2 -2
  524. package/src/components/BottomNavItem/BottomNavItem.tsx +3 -3
  525. package/src/components/BrandChip/BrandChip.tsx +9 -3
  526. package/src/components/Button/Button.tsx +36 -19
  527. package/src/components/Card/Card.tsx +20 -20
  528. package/src/components/CardAdvisory/CardAdvisory.tsx +15 -8
  529. package/src/components/CardBankAccount/CardBankAccount.tsx +9 -2
  530. package/src/components/CardCTA/CardCTA.tsx +237 -64
  531. package/src/components/CardFeedback/CardFeedback.tsx +18 -18
  532. package/src/components/CardFinancialCondition/CardFinancialCondition.tsx +7 -10
  533. package/src/components/CardInsight/CardInsight.tsx +8 -4
  534. package/src/components/Carousel/Carousel.tsx +29 -12
  535. package/src/components/CarouselCardAccounts/CarouselCardAccounts.tsx +113 -0
  536. package/src/components/Checkbox/Checkbox.tsx +2 -8
  537. package/src/components/ChipGroup/ChipGroup.tsx +1 -1
  538. package/src/components/ChipSelect/ChipSelect.tsx +11 -11
  539. package/src/components/CircularProgressBar/CircularProgressBar.tsx +19 -9
  540. package/src/components/CircularProgressBarDoted/CircularProgressBarDoted.tsx +18 -11
  541. package/src/components/CircularRating/CircularRating.tsx +12 -5
  542. package/src/components/ClusterBubble/ClusterBubble.tsx +9 -2
  543. package/src/components/CompareTable/CompareTable.tsx +114 -66
  544. package/src/components/CoverageBarComparison/CoverageBarComparison.tsx +9 -2
  545. package/src/components/DebitCard/DebitCard.tsx +22 -22
  546. package/src/components/Disclaimer/Disclaimer.tsx +5 -5
  547. package/src/components/DonutChart/DonutChart.tsx +21 -48
  548. package/src/components/Drawer/Drawer.tsx +80 -71
  549. package/src/components/Dropdown/Dropdown.tsx +32 -30
  550. package/src/components/DropdownInput/DropdownInput.tsx +19 -19
  551. package/src/components/EmptyState/EmptyState.tsx +14 -14
  552. package/src/components/ExpandableCheckbox/ExpandableCheckbox.tsx +8 -1
  553. package/src/components/FilterBar/FilterBar.tsx +2 -2
  554. package/src/components/Form/Form.tsx +3 -3
  555. package/src/components/FormField/FormField.tsx +55 -15
  556. package/src/components/FullscreenModal/FullscreenModal.tsx +24 -24
  557. package/src/components/Gauge/Gauge.tsx +9 -9
  558. package/src/components/HoldingsCard/HoldingsCard.tsx +19 -12
  559. package/src/components/Icon/Icon.tsx +6 -6
  560. package/src/components/IconCapsule/IconCapsule.tsx +7 -7
  561. package/src/components/InputSearch/InputSearch.tsx +9 -9
  562. package/src/components/InstitutionBadge/InstitutionBadge.tsx +12 -8
  563. package/src/components/ListGroup/ListGroup.tsx +17 -10
  564. package/src/components/ListItem/ListItem.tsx +20 -13
  565. package/src/components/LottieIntroBlock/LottieIntroBlock.tsx +13 -16
  566. package/src/components/LottiePlayer/LottiePlayer.tsx +2 -2
  567. package/src/components/LottiePlayer/LottiePlayer.web.tsx +2 -2
  568. package/src/components/MediaCard/MediaCard.tsx +23 -23
  569. package/src/components/MessageField/MessageField.tsx +8 -16
  570. package/src/components/MetricLegendItem/MetricLegendItem.tsx +9 -2
  571. package/src/components/MoneyValue/MoneyValue.tsx +7 -7
  572. package/src/components/MonthlyStatusGrid/MonthlyStatusGrid.tsx +17 -2
  573. package/src/components/NavArrow/NavArrow.tsx +8 -8
  574. package/src/components/NoteInput/NoteInput.tsx +12 -12
  575. package/src/components/Nudge/Nudge.tsx +20 -20
  576. package/src/components/OTP/OTP.tsx +16 -16
  577. package/src/components/PageHero/PageHero.tsx +16 -16
  578. package/src/components/PaymentFeedback/PaymentFeedback.tsx +27 -27
  579. package/src/components/Popup/Popup.tsx +1 -1
  580. package/src/components/PoweredByLabel/PoweredByLabel.tsx +9 -2
  581. package/src/components/ProductMerchandisingCard/ProductMerchandisingCard.tsx +104 -37
  582. package/src/components/ProductOverview/ProductOverview.tsx +10 -3
  583. package/src/components/ProgressBadge/ProgressBadge.tsx +14 -8
  584. package/src/components/ProjectionMarker/ProjectionMarker.tsx +9 -2
  585. package/src/components/Radio/Radio.tsx +8 -9
  586. package/src/components/RechargeCard/RechargeCard.tsx +31 -31
  587. package/src/components/SavingsGoalSummary/SavingsGoalSummary.tsx +105 -13
  588. package/src/components/ScrollArea/ScrollArea.tsx +200 -0
  589. package/src/components/Section/Section.tsx +36 -29
  590. package/src/components/Slider/Slider.tsx +9 -2
  591. package/src/components/Stack/Stack.tsx +131 -0
  592. package/src/components/StatusHero/StatusHero.tsx +14 -14
  593. package/src/components/Stepper/Step.tsx +16 -18
  594. package/src/components/Stepper/StepLabel.tsx +16 -27
  595. package/src/components/Stepper/Stepper.tsx +3 -4
  596. package/src/components/SuggestiveSearch/SuggestiveSearch.tsx +20 -21
  597. package/src/components/SummaryTile/SummaryTile.tsx +9 -2
  598. package/src/components/SupportText/SupportText.tsx +6 -6
  599. package/src/components/SupportText/SupportTextIcon.tsx +2 -2
  600. package/src/components/Table/Table.tsx +449 -0
  601. package/src/components/Text/Text.tsx +28 -3
  602. package/src/components/TextInput/TextInput.tsx +21 -15
  603. package/src/components/TextSegment/TextSegment.tsx +27 -2
  604. package/src/components/ThreadHero/ThreadHero.tsx +27 -20
  605. package/src/components/Title/Title.tsx +50 -17
  606. package/src/components/Toast/Toast.tsx +24 -17
  607. package/src/components/Toggle/Toggle.tsx +5 -10
  608. package/src/components/Tooltip/Tooltip.tsx +12 -12
  609. package/src/components/TransactionBubble/TransactionBubble.tsx +22 -15
  610. package/src/components/TransactionDetails/TransactionDetails.tsx +10 -10
  611. package/src/components/TransactionStatus/TransactionStatus.tsx +18 -11
  612. package/src/components/UpiHandle/UpiHandle.tsx +24 -18
  613. package/src/components/index.ts +25 -2
  614. package/src/design-tokens/Coin Variables-variables-full.json +1 -1
  615. package/src/design-tokens/figma-modes.generated.ts +51 -42
  616. package/src/icons/components/Icon4g.tsx +11 -0
  617. package/src/icons/components/Icon4gltedata.tsx +11 -0
  618. package/src/icons/components/Icon5g.tsx +11 -0
  619. package/src/icons/components/Icon5gdoubleplus.tsx +11 -0
  620. package/src/icons/components/Icon5gplus.tsx +11 -0
  621. package/src/icons/components/IconAdblocker.tsx +11 -0
  622. package/src/icons/components/IconAdblockplus.tsx +11 -0
  623. package/src/icons/components/IconAnalytics.tsx +11 -0
  624. package/src/icons/components/IconAnalyticsdata.tsx +11 -0
  625. package/src/icons/components/IconAnalyticspiechart.tsx +11 -0
  626. package/src/icons/components/IconAnalyticspiecharttree.tsx +11 -0
  627. package/src/icons/components/IconAnalyticspiecharttwo.tsx +11 -0
  628. package/src/icons/components/IconCompoundinterest.tsx +11 -0
  629. package/src/icons/components/IconConsumptionaccounted.tsx +11 -0
  630. package/src/icons/components/IconConsumptionaverage.tsx +11 -0
  631. package/src/icons/components/IconConsumptionhigh.tsx +11 -0
  632. package/src/icons/components/IconConsumptionlow.tsx +11 -0
  633. package/src/icons/components/IconConsumptionunaccounted.tsx +11 -0
  634. package/src/icons/components/IconCsvdoc.tsx +11 -0
  635. package/src/icons/components/IconDatabase.tsx +11 -0
  636. package/src/icons/components/IconDigitalecosystem.tsx +11 -0
  637. package/src/icons/components/IconDigitalselfservice.tsx +11 -0
  638. package/src/icons/components/IconDistribution.tsx +11 -0
  639. package/src/icons/components/IconDocument.tsx +11 -0
  640. package/src/icons/components/IconDocumentdoc.tsx +11 -0
  641. package/src/icons/components/IconDocumentjpg.tsx +11 -0
  642. package/src/icons/components/IconDocumentodt.tsx +11 -0
  643. package/src/icons/components/IconDocumentpdf.tsx +11 -0
  644. package/src/icons/components/IconDocumentpng.tsx +11 -0
  645. package/src/icons/components/IconDocumentraw.tsx +11 -0
  646. package/src/icons/components/IconDocumentrtf.tsx +11 -0
  647. package/src/icons/components/IconDocumentsettings.tsx +11 -0
  648. package/src/icons/components/IconDocumenttif.tsx +11 -0
  649. package/src/icons/components/IconDocumenttxt.tsx +11 -0
  650. package/src/icons/components/IconDocumentunknown.tsx +11 -0
  651. package/src/icons/components/IconDocumentxls.tsx +11 -0
  652. package/src/icons/components/IconDocumentxlsx.tsx +11 -0
  653. package/src/icons/components/IconFilerequest.tsx +11 -0
  654. package/src/icons/components/IconFilesend.tsx +11 -0
  655. package/src/icons/components/IconFileshare.tsx +11 -0
  656. package/src/icons/components/IconFindinpage.tsx +11 -0
  657. package/src/icons/components/IconFolder.tsx +11 -0
  658. package/src/icons/components/IconFolderbookmarks.tsx +11 -0
  659. package/src/icons/components/IconFolderfavorites.tsx +11 -0
  660. package/src/icons/components/IconFolderlocked.tsx +11 -0
  661. package/src/icons/components/IconFoldermovefiles.tsx +11 -0
  662. package/src/icons/components/IconFolderpublic.tsx +11 -0
  663. package/src/icons/components/IconFolderrated.tsx +11 -0
  664. package/src/icons/components/IconFolderrequest.tsx +11 -0
  665. package/src/icons/components/IconForm.tsx +11 -0
  666. package/src/icons/components/IconFormadd.tsx +11 -0
  667. package/src/icons/components/IconForms.tsx +11 -0
  668. package/src/icons/components/IconGraphincreasing.tsx +11 -0
  669. package/src/icons/components/IconGraphlow.tsx +11 -0
  670. package/src/icons/components/IconGraphtable.tsx +11 -0
  671. package/src/icons/components/IconHealthreport.tsx +11 -0
  672. package/src/icons/components/IconHubmode.tsx +11 -0
  673. package/src/icons/components/IconInfrastructure.tsx +11 -0
  674. package/src/icons/components/IconInterestlow.tsx +11 -0
  675. package/src/icons/components/IconLte.tsx +11 -0
  676. package/src/icons/components/IconNetworkfuture.tsx +11 -0
  677. package/src/icons/components/IconPagesettings.tsx +11 -0
  678. package/src/icons/components/IconPptxdoc.tsx +11 -0
  679. package/src/icons/components/IconPreferrednumber.tsx +11 -0
  680. package/src/icons/components/IconPremiumnumber.tsx +11 -0
  681. package/src/icons/components/IconProjection.tsx +11 -0
  682. package/src/icons/components/IconRequest.tsx +11 -0
  683. package/src/icons/components/IconRoutestraffic.tsx +11 -0
  684. package/src/icons/components/IconTechnology.tsx +11 -0
  685. package/src/icons/components/IconVolte.tsx +11 -0
  686. package/src/icons/components/IconVonr.tsx +11 -0
  687. package/src/icons/components/IconVowifi.tsx +11 -0
  688. package/src/icons/components/IconVpndata.tsx +11 -0
  689. package/src/icons/components/index.ts +73 -0
  690. package/src/icons/registry.ts +293 -1
  691. package/src/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.tsx +32 -3
  692. package/src/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.tsx +25 -4
  693. package/src/utils/index.ts +2 -0
  694. package/src/utils/react-utils.ts +132 -0
  695. package/src/utils/shadow.ts +219 -0
  696. package/src/utils/web-platform-utils.ts +68 -0
  697. package/lib/commonjs/components/MediaCard/GlassFill.js +0 -62
  698. package/lib/commonjs/components/MediaCard/GlassFill.web.js +0 -48
  699. package/lib/module/components/MediaCard/GlassFill.js +0 -57
  700. package/lib/module/components/MediaCard/GlassFill.web.js +0 -43
  701. package/lib/typescript/src/components/MediaCard/GlassFill.d.ts +0 -47
  702. package/lib/typescript/src/components/MediaCard/GlassFill.web.d.ts +0 -20
  703. package/src/components/MediaCard/GlassFill.tsx +0 -89
  704. package/src/components/MediaCard/GlassFill.web.tsx +0 -53
@@ -456,19 +456,19 @@ function OTP({
456
456
  }, [isDisabled])
457
457
 
458
458
  // --- Token resolution (state-independent tokens resolved once) ---
459
- const otpGap = Number(getVariableByName('otp/gap', modes)) || 36
460
- const otpPaddingH = Number(getVariableByName('otp/padding/horizontal', modes)) || 8
461
- const otpPaddingV = Number(getVariableByName('otp/padding/vertical', modes)) || 8
462
-
463
- const slotWidth = Number(getVariableByName('pinSlot/width', modes)) || 48
464
- const slotGap = Number(getVariableByName('pinSlot/gap', modes)) || 8
465
- const digitColor = (getVariableByName('pinSlot/digit/color', modes) as string) || '#000000'
466
- const digitFontSize = Number(getVariableByName('pinSlot/digit/fontSize', modes)) || 24
467
- const digitFontFamily = (getVariableByName('pinSlot/digit/fontFamily', modes) as string) || 'JioType Var'
468
- const digitLineHeight = Number(getVariableByName('pinSlot/digit/lineHeight', modes)) || 29
469
- const digitFontWeight = (getVariableByName('pinSlot/digit/fontWeight', modes) as string) || '500'
470
- const underlineHeight = Number(getVariableByName('pinSlot/underline/height', modes)) || 2
471
- const underlineRadius = Number(getVariableByName('pinSlot/underline/radius', modes)) || 1
459
+ const otpGap = Number(getVariableByName('otp/gap', modes))
460
+ const otpPaddingH = Number(getVariableByName('otp/padding/horizontal', modes))
461
+ const otpPaddingV = Number(getVariableByName('otp/padding/vertical', modes))
462
+
463
+ const slotWidth = Number(getVariableByName('pinSlot/width', modes))
464
+ const slotGap = Number(getVariableByName('pinSlot/gap', modes))
465
+ const digitColor = (getVariableByName('pinSlot/digit/color', modes) as string)
466
+ const digitFontSize = Number(getVariableByName('pinSlot/digit/fontSize', modes))
467
+ const digitFontFamily = (getVariableByName('pinSlot/digit/fontFamily', modes) as string)
468
+ const digitLineHeight = Number(getVariableByName('pinSlot/digit/lineHeight', modes))
469
+ const digitFontWeight = (getVariableByName('pinSlot/digit/fontWeight', modes) as string)
470
+ const underlineHeight = Number(getVariableByName('pinSlot/underline/height', modes))
471
+ const underlineRadius = Number(getVariableByName('pinSlot/underline/radius', modes))
472
472
 
473
473
  // --- Resolve the three underline colors ONCE per render. We then
474
474
  // animate between idle ↔ active per-slot using interpolation; the
@@ -478,7 +478,7 @@ function OTP({
478
478
  (getVariableByName('PinSlot/underline/color', {
479
479
  ...modes,
480
480
  'Input/PINSlot States': 'Idle',
481
- }) as string) || '#303338',
481
+ }) as string),
482
482
  [modes],
483
483
  )
484
484
  const activeUnderlineColor = useMemo(
@@ -486,7 +486,7 @@ function OTP({
486
486
  (getVariableByName('PinSlot/underline/color', {
487
487
  ...modes,
488
488
  'Input/PINSlot States': 'Active',
489
- }) as string) || '#5d00b5',
489
+ }) as string),
490
490
  [modes],
491
491
  )
492
492
  const errorUnderlineColor = useMemo(
@@ -494,7 +494,7 @@ function OTP({
494
494
  (getVariableByName('PinSlot/underline/color', {
495
495
  ...modes,
496
496
  'Input/PINSlot States': 'Error',
497
- }) as string) || '#d92d20',
497
+ }) as string),
498
498
  [modes],
499
499
  )
500
500
 
@@ -107,47 +107,47 @@ function PageHero({
107
107
  [globalModes, propModes]
108
108
  )
109
109
 
110
- const gap = Number(getVariableByName('PageHero/gap', modes)) || 16
110
+ const gap = Number(getVariableByName('PageHero/gap', modes))
111
111
  const paddingHorizontal =
112
- Number(getVariableByName('PageHero/padding/horizontal', modes)) || 0
112
+ Number(getVariableByName('PageHero/padding/horizontal', modes))
113
113
 
114
114
  const textWrapGap =
115
- Number(getVariableByName('PageHero/textWrap/gap', modes)) || 8
115
+ Number(getVariableByName('PageHero/textWrap/gap', modes))
116
116
 
117
117
  // Media slot box — matches the 117×117 frame in Figma (node 4540:7845).
118
118
  // Tokens fall back to 117 when not defined in the variables collection,
119
119
  // so the layout stays stable on consumers that haven't tokenized this yet.
120
- const mediaWidth = Number(getVariableByName('media/width', modes)) || 117
121
- const mediaHeight = Number(getVariableByName('media/height', modes)) || 117
120
+ const mediaWidth = Number(getVariableByName('media/width', modes))
121
+ const mediaHeight = Number(getVariableByName('media/height', modes))
122
122
 
123
123
  const eyebrowColor =
124
- getVariableByName('PageHero/eyebrow/color', modes) || '#ffffff'
124
+ getVariableByName('PageHero/eyebrow/color', modes)
125
125
  const eyebrowFontFamily =
126
- getVariableByName('PageHero/eyebrow/fontFamily', modes) || 'System'
126
+ getVariableByName('PageHero/eyebrow/fontFamily', modes)
127
127
  const eyebrowFontSize =
128
- Number(getVariableByName('PageHero/eyebrow/fontSize', modes)) || 18
128
+ Number(getVariableByName('PageHero/eyebrow/fontSize', modes))
129
129
  const eyebrowFontWeight =
130
- getVariableByName('PageHero/eyebrow/fontWeight', modes) || 700
130
+ getVariableByName('PageHero/eyebrow/fontWeight', modes)
131
131
  const eyebrowLineHeight =
132
- Number(getVariableByName('PageHero/eyebrow/lineHeight', modes)) || 20
132
+ Number(getVariableByName('PageHero/eyebrow/lineHeight', modes))
133
133
 
134
134
  const headlineColor =
135
- getVariableByName('PageHero/headline/color', modes) || '#ffffff'
135
+ getVariableByName('PageHero/headline/color', modes)
136
136
  const headlineFontFamily =
137
- getVariableByName('PageHero/headline/fontFamily', modes) || 'System'
137
+ getVariableByName('PageHero/headline/fontFamily', modes)
138
138
  const headlineFontSize =
139
- Number(getVariableByName('PageHero/headline/fontSize', modes)) || 29
139
+ Number(getVariableByName('PageHero/headline/fontSize', modes))
140
140
  const headlineFontWeight =
141
- getVariableByName('PageHero/headline/fontWeight', modes) || 900
141
+ getVariableByName('PageHero/headline/fontWeight', modes)
142
142
  const headlineLineHeight =
143
- Number(getVariableByName('PageHero/headline/lineHeight', modes)) || 29
143
+ Number(getVariableByName('PageHero/headline/lineHeight', modes))
144
144
 
145
145
  // Only `lineHeight` is tokenized for the supporting text in the Figma source.
146
146
  // Color, font size and weight are inline literals in the design (12px medium
147
147
  // white) — we mirror that here so the visual stays faithful when no token
148
148
  // exists.
149
149
  const supportingTextLineHeight =
150
- Number(getVariableByName('PageHero/supportingText/lineHeight', modes)) || 16
150
+ Number(getVariableByName('PageHero/supportingText/lineHeight', modes))
151
151
 
152
152
  const containerStyle: ViewStyle = {
153
153
  flexDirection: 'column',
@@ -44,33 +44,33 @@ export default function PaymentFeedback({
44
44
  const { modes: globalModes } = useTokens()
45
45
  const modes = { ...globalModes, ...propModes }
46
46
 
47
- const containerGap = Number(getVariableByName('paymnetFeedback/container/gap', modes)) || 46
48
- const messageGap = Number(getVariableByName('paymnetFeedback/message/gap', modes)) || 12
49
-
50
- const titleColor = getVariableByName('paymnetFeedback/title/color', modes) || '#0d0d0f'
51
- const titleFontSize = Number(getVariableByName('paymnetFeedback/title/fontSize', modes)) || 36
52
- const titleFontFamily = getVariableByName('paymnetFeedback/title/fontFamily', modes) || 'JioType Var'
53
- const titleLineHeight = Number(getVariableByName('paymnetFeedback/title/lineHeight', modes)) || 36
54
- const titleFontWeight = getVariableByName('paymnetFeedback/title/fontWeight', modes) || '900'
55
-
56
- const subtitleColor = getVariableByName('paymnetFeedback/subtitle/color', modes) || '#24262b'
57
- const subtitleFontSize = Number(getVariableByName('paymnetFeedback/subtitle/fontSize', modes)) || 16
58
- const subtitleFontFamily = getVariableByName('paymnetFeedback/subtitle/fontFamily', modes) || 'JioType Var'
59
- const subtitleLineHeight = Number(getVariableByName('paymnetFeedback/subtitle/lineHeight', modes)) || 19
60
- const subtitleFontWeight = getVariableByName('paymnetFeedback/subtitle/fontWeight', modes) || '500'
61
-
62
- const bodyColor = getVariableByName('paymnetFeedback/body/color', modes) || '#24262b'
63
- const bodyFontSize = Number(getVariableByName('paymnetFeedback/body/fontSize', modes)) || 14
64
- const bodyFontFamily = getVariableByName('paymnetFeedback/body/fontFamily', modes) || 'JioType Var'
65
- const bodyLineHeight = Number(getVariableByName('paymnetFeedback/body/lineHeight', modes)) || 17
66
- const bodyFontWeight = getVariableByName('paymnetFeedback/body/fontWeight', modes) || '500'
67
-
68
- const detailsColor = getVariableByName('paymnetFeedback/details/color', modes) || '#24262b'
69
- const detailsFontSize = Number(getVariableByName('paymnetFeedback/details/fontSize', modes)) || 14
70
- const detailsFontFamily = getVariableByName('paymnetFeedback/details/fontFamily', modes) || 'JioType Var'
71
- const detailsLineHeight = Number(getVariableByName('paymnetFeedback/details/lineHeight', modes)) || 17
72
- const detailsFontWeight = getVariableByName('paymnetFeedback/details/fontWeight', modes) || '500'
73
- const detailsParagraphSpacing = Number(getVariableByName('paymnetFeedback/details/paragraphSpacing', modes)) || 4
47
+ const containerGap = Number(getVariableByName('paymnetFeedback/container/gap', modes))
48
+ const messageGap = Number(getVariableByName('paymnetFeedback/message/gap', modes))
49
+
50
+ const titleColor = getVariableByName('paymnetFeedback/title/color', modes)
51
+ const titleFontSize = Number(getVariableByName('paymnetFeedback/title/fontSize', modes))
52
+ const titleFontFamily = getVariableByName('paymnetFeedback/title/fontFamily', modes)
53
+ const titleLineHeight = Number(getVariableByName('paymnetFeedback/title/lineHeight', modes))
54
+ const titleFontWeight = getVariableByName('paymnetFeedback/title/fontWeight', modes)
55
+
56
+ const subtitleColor = getVariableByName('paymnetFeedback/subtitle/color', modes)
57
+ const subtitleFontSize = Number(getVariableByName('paymnetFeedback/subtitle/fontSize', modes))
58
+ const subtitleFontFamily = getVariableByName('paymnetFeedback/subtitle/fontFamily', modes)
59
+ const subtitleLineHeight = Number(getVariableByName('paymnetFeedback/subtitle/lineHeight', modes))
60
+ const subtitleFontWeight = getVariableByName('paymnetFeedback/subtitle/fontWeight', modes)
61
+
62
+ const bodyColor = getVariableByName('paymnetFeedback/body/color', modes)
63
+ const bodyFontSize = Number(getVariableByName('paymnetFeedback/body/fontSize', modes))
64
+ const bodyFontFamily = getVariableByName('paymnetFeedback/body/fontFamily', modes)
65
+ const bodyLineHeight = Number(getVariableByName('paymnetFeedback/body/lineHeight', modes))
66
+ const bodyFontWeight = getVariableByName('paymnetFeedback/body/fontWeight', modes)
67
+
68
+ const detailsColor = getVariableByName('paymnetFeedback/details/color', modes)
69
+ const detailsFontSize = Number(getVariableByName('paymnetFeedback/details/fontSize', modes))
70
+ const detailsFontFamily = getVariableByName('paymnetFeedback/details/fontFamily', modes)
71
+ const detailsLineHeight = Number(getVariableByName('paymnetFeedback/details/lineHeight', modes))
72
+ const detailsFontWeight = getVariableByName('paymnetFeedback/details/fontWeight', modes)
73
+ const detailsParagraphSpacing = Number(getVariableByName('paymnetFeedback/details/paragraphSpacing', modes))
74
74
 
75
75
  const containerStyle: ViewStyle = {
76
76
  flexDirection: 'column',
@@ -133,7 +133,7 @@ const Popup = forwardRef<PopupRef, PopupProps>(function Popup(
133
133
  return () => anim.stop()
134
134
  }, [isOpen, modalVisible, slideY, backdropAnim, maxBackdropOpacity, animationDuration])
135
135
 
136
- const background = getVariableByName('popup/background', modes) || '#ffffff'
136
+ const background = getVariableByName('popup/background', modes)
137
137
  const paddingH = getVariableByName('popup/padding/horizontal', modes) ?? 0
138
138
  const paddingTopVal = getVariableByName('popup/padding/top', modes) ?? 0
139
139
  const paddingBottomVal = getVariableByName('popup/padding/bottom', modes) ?? 24
@@ -9,7 +9,7 @@ import {
9
9
  } from 'react-native'
10
10
  import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
11
11
  import { useTokens } from '../../design-tokens/JFSThemeProvider'
12
- import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
12
+ import { EMPTY_MODES, cloneChildrenWithModes, resolveTruncation } from '../../utils/react-utils'
13
13
  import MediaSource, { type UnifiedSource } from '../../utils/MediaSource'
14
14
  import type { Modes } from '../../design-tokens'
15
15
 
@@ -65,6 +65,12 @@ export type PoweredByLabelProps = {
65
65
  * (which is decorative) does not need to be announced separately.
66
66
  */
67
67
  accessibilityLabel?: string
68
+ /**
69
+ * When `true`, disables text truncation: the trailing ellipsis (`…`) is never
70
+ * shown and any `numberOfLines` clamp is ignored, so the text wraps to as many
71
+ * lines as it needs even when horizontal space is tight.
72
+ */
73
+ disableTruncation?: boolean
68
74
  }
69
75
 
70
76
  const toNumber = (value: unknown, fallback: number): number => {
@@ -115,6 +121,7 @@ function PoweredByLabel({
115
121
  textStyle,
116
122
  imageStyle,
117
123
  accessibilityLabel,
124
+ disableTruncation,
118
125
  }: PoweredByLabelProps) {
119
126
  const { modes: globalModes } = useTokens()
120
127
  const modes = useMemo(
@@ -210,7 +217,7 @@ function PoweredByLabel({
210
217
  style={[labelTextStyle, textStyle]}
211
218
  accessibilityElementsHidden={true}
212
219
  importantForAccessibility="no"
213
- numberOfLines={1}
220
+ {...resolveTruncation(disableTruncation, 1)}
214
221
  >
215
222
  {label}
216
223
  </Text>
@@ -4,21 +4,31 @@ import {
4
4
  Text,
5
5
  Pressable,
6
6
  StyleSheet,
7
+ Platform,
8
+ Image as RNImage,
7
9
  type ViewStyle,
8
10
  type TextStyle,
9
11
  type StyleProp,
10
12
  type ImageSourcePropType,
11
13
  } from 'react-native'
14
+ import MaskedView from '@react-native-masked-view/masked-view'
12
15
  import Svg, { Defs, LinearGradient, Stop, Rect } from 'react-native-svg'
13
16
  import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
14
- import { EMPTY_MODES } from '../../utils/react-utils'
17
+ import { EMPTY_MODES, resolveTruncation } from '../../utils/react-utils'
15
18
  import Avatar from '../Avatar/Avatar'
16
19
  import Badge from '../Badge/Badge'
17
20
  import Button from '../Button/Button'
18
21
  import Image from '../Image/Image'
19
- import GlassFill from './GlassFill'
22
+ import GlassFill from '../../utils/GlassFill/GlassFill'
20
23
  import type { Modes } from '../../design-tokens'
21
24
 
25
+ function normalizeImageSource(
26
+ src: ImageSourcePropType | string | undefined
27
+ ): ImageSourcePropType | undefined {
28
+ if (src == null) return undefined
29
+ return typeof src === 'string' ? { uri: src } : src
30
+ }
31
+
22
32
  export interface ProductMerchandisingCardProps {
23
33
  /**
24
34
  * Background media for the card. Accepts a URL string or any RN
@@ -73,6 +83,12 @@ export interface ProductMerchandisingCardProps {
73
83
  style?: StyleProp<ViewStyle>
74
84
  /** Accessibility label for the card. */
75
85
  accessibilityLabel?: string
86
+ /**
87
+ * When `true`, disables text truncation: the trailing ellipsis (`…`) is never
88
+ * shown and any `numberOfLines` clamp is ignored, so the text wraps to as many
89
+ * lines as it needs even when horizontal space is tight.
90
+ */
91
+ disableTruncation?: boolean
76
92
  }
77
93
 
78
94
  /**
@@ -116,10 +132,15 @@ function ProductMerchandisingCard({
116
132
  modes = EMPTY_MODES,
117
133
  style,
118
134
  accessibilityLabel,
135
+ disableTruncation,
119
136
  }: ProductMerchandisingCardProps) {
120
- // Unique gradient id so multiple cards on one (web) document never collide.
137
+ // Unique gradient ids so multiple cards on one (web) document never collide.
121
138
  const rawId = useId()
122
- const scrimId = `pmc-footer-scrim-${rawId.replace(/[^a-zA-Z0-9_-]/g, '')}`
139
+ const safeId = rawId.replace(/[^a-zA-Z0-9_-]/g, '')
140
+ const scrimId = `pmc-footer-scrim-${safeId}`
141
+ const blurMaskId = `pmc-footer-blurmask-${safeId}`
142
+
143
+ const normalizedImageSource = useMemo(() => normalizeImageSource(imageSource), [imageSource])
123
144
 
124
145
  const tokens = useMemo(() => resolveTokens(modes), [modes])
125
146
 
@@ -159,23 +180,26 @@ function ProductMerchandisingCard({
159
180
  )
160
181
  : null
161
182
 
183
+ // The footer "special badge" is now the shared <Badge type="glass">. The
184
+ // hardcoded literals that defined its look (warm frosted overlay, gentle
185
+ // 5px blur, 6/2 padding, 4px radius, weight-500 white label) are preserved
186
+ // 1:1 via the glass overrides + `style`/`labelStyle`, and the optional
187
+ // `specialBadgeIcon` maps to Badge's `leading` slot — so every existing
188
+ // instantiation renders byte-for-byte the same as before.
162
189
  const footerSpecialBadge =
163
190
  specialBadge ??
164
191
  (specialBadgeLabel != null ? (
165
- <View style={styles.specialBadge}>
166
- <GlassFill
167
- tint="light"
168
- intensity={SPECIAL_BADGE_INTENSITY}
169
- overlayColor={SPECIAL_BADGE_BG}
170
- style={styles.specialBadgeFill}
171
- />
172
- {specialBadgeIcon != null ? (
173
- <View style={styles.specialBadgeIcon}>{specialBadgeIcon}</View>
174
- ) : null}
175
- <Text style={tokens.specialBadgeText} numberOfLines={1}>
176
- {specialBadgeLabel}
177
- </Text>
178
- </View>
192
+ <Badge
193
+ type="glass"
194
+ label={specialBadgeLabel}
195
+ leading={specialBadgeIcon}
196
+ glassOverlayColor={SPECIAL_BADGE_BG}
197
+ glassIntensity={SPECIAL_BADGE_INTENSITY}
198
+ modes={modes}
199
+ style={styles.specialBadge}
200
+ labelStyle={tokens.specialBadgeText}
201
+ {...(disableTruncation != null ? { disableTruncation } : null)}
202
+ />
179
203
  ) : null)
180
204
 
181
205
  // The Figma CTA uses the brand "Secondary" appearance (purple fill, white
@@ -209,11 +233,49 @@ function ProductMerchandisingCard({
209
233
  </View>
210
234
 
211
235
  <View style={tokens.footer} pointerEvents="box-none">
212
- {/* Progressive background blur: clear at the top, ramping to a
213
- soft blur at the bottom (native MaskedView+BlurView / web
214
- backdrop-filter + mask-image). */}
215
- <GlassFill tint="dark" intensity={tokens.blurIntensity} progressive />
216
- {/* Transparent -> black gradient scrim, identical on all platforms. */}
236
+ {/* Progressive blur clear at the top of the footer, ramping to
237
+ a soft blur at the bottom. Rather than the unmaintained native
238
+ BlurView (which renders as a flat black tint on Android +
239
+ Fabric and can hide the image on iOS), we reveal a *blurred
240
+ copy of the card's own image* through a vertical gradient
241
+ mask. `Image.blurRadius` is a built-in RN prop with a real
242
+ Gaussian blur on BOTH iOS and Android and needs no native
243
+ module. The blurred copy is pinned to the card's bottom at the
244
+ full card height so it lines up pixel-for-pixel with the
245
+ full-bleed background, and the mask makes the blur swell in
246
+ smoothly toward the bottom (true progressive blur). */}
247
+ {normalizedImageSource != null ? (
248
+ <View style={StyleSheet.absoluteFill} pointerEvents="none">
249
+ <MaskedView
250
+ style={StyleSheet.absoluteFill}
251
+ maskElement={
252
+ <Svg width="100%" height="100%">
253
+ <Defs>
254
+ <LinearGradient id={blurMaskId} x1="0" y1="0" x2="0" y2="1">
255
+ <Stop offset="0" stopColor="#000000" stopOpacity={0} />
256
+ <Stop offset="0.35" stopColor="#000000" stopOpacity={0.5} />
257
+ <Stop offset="0.7" stopColor="#000000" stopOpacity={0.92} />
258
+ <Stop offset="1" stopColor="#000000" stopOpacity={1} />
259
+ </LinearGradient>
260
+ </Defs>
261
+ <Rect x="0" y="0" width="100%" height="100%" fill={`url(#${blurMaskId})`} />
262
+ </Svg>
263
+ }
264
+ >
265
+ <RNImage
266
+ source={normalizedImageSource}
267
+ blurRadius={tokens.imageBlurRadius}
268
+ resizeMode="cover"
269
+ style={{ position: 'absolute', left: 0, right: 0, bottom: 0, width: '100%', height }}
270
+ />
271
+ </MaskedView>
272
+ </View>
273
+ ) : (
274
+ <GlassFill tint="dark" intensity={tokens.blurIntensity} progressive />
275
+ )}
276
+ {/* Transparent -> black gradient scrim for text legibility,
277
+ identical on all platforms. Kept lighter than a solid fill so
278
+ the blurred image stays visible behind the footer text. */}
217
279
  <View style={[StyleSheet.absoluteFill, styles.scrim]} pointerEvents="none">
218
280
  <Svg width="100%" height="100%">
219
281
  <Defs>
@@ -230,11 +292,11 @@ function ProductMerchandisingCard({
230
292
 
231
293
  <View style={styles.footerRow}>
232
294
  <View style={tokens.textWrap}>
233
- <Text style={tokens.title} numberOfLines={1}>
295
+ <Text style={tokens.title} {...resolveTruncation(disableTruncation, 1)}>
234
296
  {title}
235
297
  </Text>
236
298
  {subtitle != null ? (
237
- <Text style={tokens.subtitle} numberOfLines={1}>
299
+ <Text style={tokens.subtitle} {...resolveTruncation(disableTruncation, 1)}>
238
300
  {subtitle}
239
301
  </Text>
240
302
  ) : null}
@@ -286,6 +348,7 @@ const SPECIAL_BADGE_INTENSITY = 17 // ~5px CSS blur / ~2 native blurAmount
286
348
  interface ResolvedTokens {
287
349
  radius: number
288
350
  blurIntensity: number
351
+ imageBlurRadius: number
289
352
  header: ViewStyle
290
353
  footer: ViewStyle
291
354
  textWrap: ViewStyle
@@ -331,9 +394,20 @@ function resolveTokens(modes: Modes): ResolvedTokens {
331
394
  const sbFamily = asStr(getVariableByName('productMerchandisingcard/specialbadge/text/fontfamily', modes), 'JioType Var')
332
395
  const sbWeight = asStr(getVariableByName('productMerchandisingcard/specialbadge/text/fontweight', modes), '500')
333
396
 
397
+ // `Image.blurRadius` is interpreted differently per platform — iOS applies a
398
+ // strong Gaussian while Android's IterativeBoxBlur is gentler at the same
399
+ // numeric radius — so we tune each platform to land on the same perceived
400
+ // "minimal" frosted strength as the Figma design.
401
+ const imageBlurRadius = Platform.select({
402
+ ios: Math.max(6, Math.round(blurRadius * 0.5)),
403
+ android: Math.max(12, Math.round(blurRadius * 0.95)),
404
+ default: Math.max(8, Math.round(blurRadius * 0.6)),
405
+ }) as number
406
+
334
407
  return {
335
408
  radius,
336
409
  blurIntensity: Math.max(0, Math.min(100, Math.round(blurRadius * BLUR_INTENSITY_FACTOR))),
410
+ imageBlurRadius,
337
411
  header: {
338
412
  flexDirection: 'row',
339
413
  alignItems: 'flex-start',
@@ -398,22 +472,15 @@ const styles = StyleSheet.create({
398
472
  // the intended fade strength.
399
473
  opacity: 0.9,
400
474
  },
475
+ // Overrides layered on top of <Badge type="glass">. Badge already supplies
476
+ // the row layout + 4px gap (when a leading icon is present), `overflow:
477
+ // 'hidden'`, `alignSelf: 'flex-start'` and `alignItems: 'center'`; these
478
+ // pin the special badge's literal Figma box (6/2 padding, 4px radius)
479
+ // regardless of the badge size tokens resolved by the active modes.
401
480
  specialBadge: {
402
- flexDirection: 'row',
403
- alignItems: 'center',
404
- gap: 4,
405
481
  paddingHorizontal: 6,
406
482
  paddingVertical: 2,
407
483
  borderRadius: 4,
408
- overflow: 'hidden',
409
- alignSelf: 'flex-start',
410
- },
411
- specialBadgeFill: {
412
- borderRadius: 4,
413
- },
414
- specialBadgeIcon: {
415
- justifyContent: 'center',
416
- alignItems: 'center',
417
484
  },
418
485
  pressed: {
419
486
  opacity: 0.92,
@@ -8,7 +8,7 @@ import {
8
8
  type ImageSourcePropType,
9
9
  } from 'react-native'
10
10
  import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
11
- import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
11
+ import { EMPTY_MODES, cloneChildrenWithModes, resolveTruncation } from '../../utils/react-utils'
12
12
  import Image from '../Image/Image'
13
13
  import ProductLabel from '../ProductLabel/ProductLabel'
14
14
  import type { Modes } from '../../design-tokens'
@@ -47,6 +47,12 @@ export type ProductOverviewProps = {
47
47
  * for badges, callouts, etc. Receives the same `modes` as the parent.
48
48
  */
49
49
  children?: React.ReactNode
50
+ /**
51
+ * When `true`, disables text truncation: the trailing ellipsis (`…`) is never
52
+ * shown and any `numberOfLines` clamp is ignored, so the text wraps to as many
53
+ * lines as it needs even when horizontal space is tight.
54
+ */
55
+ disableTruncation?: boolean
50
56
  }
51
57
 
52
58
  const DEFAULT_STATS: ProductOverviewStat[] = [
@@ -65,6 +71,7 @@ const ProductOverview = ({
65
71
  modes = EMPTY_MODES,
66
72
  style,
67
73
  children,
74
+ disableTruncation,
68
75
  }: ProductOverviewProps) => {
69
76
  const padding = (getVariableByName('productOverview/padding', modes) as number | null) ?? 24
70
77
  const gap = (getVariableByName('productOverview/gap', modes) as number | null) ?? 12
@@ -220,10 +227,10 @@ const ProductOverview = ({
220
227
  overflow: 'hidden',
221
228
  }}
222
229
  >
223
- <Text style={statValueStyle} numberOfLines={1}>
230
+ <Text style={statValueStyle} {...resolveTruncation(disableTruncation, 1)}>
224
231
  {stat.value}
225
232
  </Text>
226
- <Text style={statLabelStyle} numberOfLines={1}>
233
+ <Text style={statLabelStyle} {...resolveTruncation(disableTruncation, 1)}>
227
234
  {stat.label}
228
235
  </Text>
229
236
  </View>
@@ -8,7 +8,7 @@ import {
8
8
  } from 'react-native'
9
9
  import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
10
10
  import Icon from '../../icons/Icon'
11
- import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
11
+ import { EMPTY_MODES, cloneChildrenWithModes, resolveTruncation } from '../../utils/react-utils'
12
12
  import type { Modes } from '../../design-tokens'
13
13
 
14
14
  export type ProgressBadgeProps = {
@@ -26,6 +26,12 @@ export type ProgressBadgeProps = {
26
26
  textStyle?: StyleProp<TextStyle>
27
27
  /** Accessibility label for screen readers */
28
28
  accessibilityLabel?: string
29
+ /**
30
+ * When `true`, disables text truncation: the trailing ellipsis (`…`) is never
31
+ * shown and any `numberOfLines` clamp is ignored, so the text wraps to as many
32
+ * lines as it needs even when horizontal space is tight.
33
+ */
34
+ disableTruncation?: boolean
29
35
  } & React.ComponentProps<typeof View>
30
36
 
31
37
  /**
@@ -51,13 +57,14 @@ function ProgressBadge({
51
57
  style,
52
58
  textStyle: textStyleOverride,
53
59
  accessibilityLabel,
60
+ disableTruncation,
54
61
  ...rest
55
62
  }: ProgressBadgeProps) {
56
63
  // Resolve layout tokens
57
64
  const backgroundColor =
58
- getVariableByName('progressBadge/background', modes) || '#ffffff'
65
+ getVariableByName('progressBadge/background', modes)
59
66
  const progressColor =
60
- getVariableByName('progressBadge/progress/color', modes) || '#ebebed'
67
+ getVariableByName('progressBadge/progress/color', modes)
61
68
  const gap = getVariableByName('progressBadge/gap', modes) ?? 12
62
69
  const paddingHorizontal =
63
70
  getVariableByName('progressBadge/padding/horizontal', modes) ?? 16
@@ -69,7 +76,7 @@ function ProgressBadge({
69
76
 
70
77
  // Resolve typography tokens
71
78
  const fontFamily =
72
- getVariableByName('progressBadge/fontFamily', modes) || 'JioType_Var:Medium'
79
+ getVariableByName('progressBadge/fontFamily', modes)
73
80
  const fontWeightRaw = getVariableByName('progressBadge/fontWeight', modes) ?? 500
74
81
  const fontWeight =
75
82
  typeof fontWeightRaw === 'number'
@@ -78,11 +85,11 @@ function ProgressBadge({
78
85
  const fontSize = getVariableByName('progressBadge/fontSize', modes) ?? 14
79
86
  const lineHeight = getVariableByName('progressBadge/lineHeight', modes) ?? 17
80
87
  const textColor =
81
- getVariableByName('progressBadge/foreground', modes) || '#000000'
88
+ getVariableByName('progressBadge/foreground', modes)
82
89
 
83
90
  // Resolve icon tokens
84
91
  const iconColor =
85
- getVariableByName('progressBadge/icon/color', modes) || '#f50030'
92
+ getVariableByName('progressBadge/icon/color', modes)
86
93
  const iconSize = getVariableByName('progressBadge/icon/size', modes) ?? 18
87
94
 
88
95
  const containerStyle: ViewStyle = {
@@ -158,8 +165,7 @@ function ProgressBadge({
158
165
  ) : null}
159
166
  <Text
160
167
  style={[textStyle, textStyleOverride]}
161
- numberOfLines={1}
162
- ellipsizeMode="tail"
168
+ {...resolveTruncation(disableTruncation, 1, 'tail')}
163
169
  accessibilityElementsHidden={true}
164
170
  importantForAccessibility="no"
165
171
  >
@@ -7,7 +7,7 @@ import {
7
7
  type TextStyle,
8
8
  } from 'react-native'
9
9
  import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
10
- import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils'
10
+ import { EMPTY_MODES, cloneChildrenWithModes, resolveTruncation } from '../../utils/react-utils'
11
11
  import type { Modes } from '../../design-tokens'
12
12
  import Divider from '../Divider/Divider'
13
13
 
@@ -61,6 +61,12 @@ export type ProjectionMarkerProps = {
61
61
  rateStyle?: StyleProp<TextStyle>
62
62
  /** Accessibility label for the whole marker. */
63
63
  accessibilityLabel?: string
64
+ /**
65
+ * When `true`, disables text truncation: the trailing ellipsis (`…`) is never
66
+ * shown and any `numberOfLines` clamp is ignored, so the text wraps to as many
67
+ * lines as it needs even when horizontal space is tight.
68
+ */
69
+ disableTruncation?: boolean
64
70
  }
65
71
 
66
72
  const isTextValue = (value: React.ReactNode): value is string | number =>
@@ -106,6 +112,7 @@ function ProjectionMarker({
106
112
  durationStyle,
107
113
  rateStyle,
108
114
  accessibilityLabel,
115
+ disableTruncation,
109
116
  }: ProjectionMarkerProps) {
110
117
  const titleColor =
111
118
  (getVariableByName('projectionMarker/title/color', modes) as string | null) ?? '#000000'
@@ -169,7 +176,7 @@ function ProjectionMarker({
169
176
  if (value === null || value === undefined) return null
170
177
  if (isTextValue(value)) {
171
178
  return (
172
- <Text style={[titleTextStyle, overrideStyle]} numberOfLines={1}>
179
+ <Text style={[titleTextStyle, overrideStyle]} {...resolveTruncation(disableTruncation, 1)}>
173
180
  {value}
174
181
  </Text>
175
182
  )