jfs-components 0.1.2 → 0.1.12

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 (287) hide show
  1. package/CHANGELOG.md +45 -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/AllocationComparisonChart/AllocationComparisonChart.js +9 -6
  6. package/lib/commonjs/components/AmountInput/AmountInput.js +8 -5
  7. package/lib/commonjs/components/AreaLineChart/AreaLineChart.js +11 -7
  8. package/lib/commonjs/components/Badge/Badge.js +47 -8
  9. package/lib/commonjs/components/BenefitCard/BenefitCard.js +231 -0
  10. package/lib/commonjs/components/BrandChip/BrandChip.js +3 -3
  11. package/lib/commonjs/components/Button/Button.js +2 -1
  12. package/lib/commonjs/components/CardAdvisory/CardAdvisory.js +2 -1
  13. package/lib/commonjs/components/CardBankAccount/CardBankAccount.js +3 -2
  14. package/lib/commonjs/components/CardCTA/CardCTA.js +197 -27
  15. package/lib/commonjs/components/CardInsight/CardInsight.js +5 -1
  16. package/lib/commonjs/components/CcCard/CcCard.js +470 -0
  17. package/lib/commonjs/components/Checkbox/Checkbox.js +4 -3
  18. package/lib/commonjs/components/CheckboxItem/CheckboxItem.js +4 -3
  19. package/lib/commonjs/components/CircularProgressBar/CircularProgressBar.js +7 -3
  20. package/lib/commonjs/components/CircularProgressBarDoted/CircularProgressBarDoted.js +3 -2
  21. package/lib/commonjs/components/CircularRating/CircularRating.js +2 -1
  22. package/lib/commonjs/components/ClusterBubble/ClusterBubble.js +3 -2
  23. package/lib/commonjs/components/CompareTable/CompareTable.js +401 -0
  24. package/lib/commonjs/components/ComparisonBar/ComparisonBar.js +266 -0
  25. package/lib/commonjs/components/CoverageBarComparison/CoverageBarComparison.js +3 -2
  26. package/lib/commonjs/components/DonutChart/DonutChart.js +4 -3
  27. package/lib/commonjs/components/Dropdown/Dropdown.js +3 -2
  28. package/lib/commonjs/components/DropdownInput/DropdownInput.js +38 -5
  29. package/lib/commonjs/components/ExpandableCheckbox/ExpandableCheckbox.js +2 -1
  30. package/lib/commonjs/components/FormField/FormField.js +45 -4
  31. package/lib/commonjs/components/Gauge/Gauge.js +1 -1
  32. package/lib/commonjs/components/HoldingsCard/HoldingsCard.js +3 -2
  33. package/lib/commonjs/components/InputSearch/InputSearch.js +6 -4
  34. package/lib/commonjs/components/InstitutionBadge/InstitutionBadge.js +2 -1
  35. package/lib/commonjs/components/ListGroup/ListGroup.js +2 -1
  36. package/lib/commonjs/components/ListItem/ListItem.js +3 -2
  37. package/lib/commonjs/components/MediaCard/MediaCard.js +4 -2
  38. package/lib/commonjs/components/MetricLegendItem/MetricLegendItem.js +3 -2
  39. package/lib/commonjs/components/MonthlyStatusGrid/MonthlyStatusGrid.js +6 -3
  40. package/lib/commonjs/components/NoteInput/NoteInput.js +6 -5
  41. package/lib/commonjs/components/PdpCcCard/PdpCcCard.js +273 -0
  42. package/lib/commonjs/components/PoweredByLabel/PoweredByLabel.js +3 -2
  43. package/lib/commonjs/components/ProductMerchandisingCard/ProductMerchandisingCard.js +427 -0
  44. package/lib/commonjs/components/ProductOverview/ProductOverview.js +4 -3
  45. package/lib/commonjs/components/ProgressBadge/ProgressBadge.js +2 -2
  46. package/lib/commonjs/components/ProjectionMarker/ProjectionMarker.js +162 -0
  47. package/lib/commonjs/components/Radio/Radio.js +5 -5
  48. package/lib/commonjs/components/Section/Section.js +3 -2
  49. package/lib/commonjs/components/Slider/Slider.js +474 -0
  50. package/lib/commonjs/components/Stack/Stack.js +86 -0
  51. package/lib/commonjs/components/SuggestiveSearch/SuggestiveSearch.js +10 -1
  52. package/lib/commonjs/components/SummaryTile/SummaryTile.js +3 -2
  53. package/lib/commonjs/components/Table/Table.js +324 -0
  54. package/lib/commonjs/components/Text/Text.js +2 -1
  55. package/lib/commonjs/components/TextInput/TextInput.js +22 -9
  56. package/lib/commonjs/components/TextSegment/TextSegment.js +119 -0
  57. package/lib/commonjs/components/ThreadHero/ThreadHero.js +4 -5
  58. package/lib/commonjs/components/Title/Title.js +2 -1
  59. package/lib/commonjs/components/Toast/Toast.js +3 -2
  60. package/lib/commonjs/components/TransactionBubble/TransactionBubble.js +2 -1
  61. package/lib/commonjs/components/TransactionStatus/TransactionStatus.js +3 -2
  62. package/lib/commonjs/components/UpiHandle/UpiHandle.js +2 -2
  63. package/lib/commonjs/components/index.js +107 -0
  64. package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
  65. package/lib/commonjs/design-tokens/figma-modes.generated.js +39 -9
  66. package/lib/commonjs/icons/registry.js +1 -1
  67. package/lib/commonjs/utils/GlassFill/GlassFill.js +271 -0
  68. package/lib/commonjs/utils/GlassFill/GlassFill.web.js +120 -0
  69. package/lib/commonjs/utils/react-utils.js +78 -0
  70. package/lib/commonjs/utils/web-platform-utils.js +59 -0
  71. package/lib/module/components/Accordion/Accordion.js +3 -2
  72. package/lib/module/components/AccordionCheckbox/AccordionCheckbox.js +5 -4
  73. package/lib/module/components/AccountCard/AccountCard.js +5 -4
  74. package/lib/module/components/AllocationComparisonChart/AllocationComparisonChart.js +10 -7
  75. package/lib/module/components/AmountInput/AmountInput.js +6 -4
  76. package/lib/module/components/AreaLineChart/AreaLineChart.js +12 -8
  77. package/lib/module/components/Badge/Badge.js +49 -10
  78. package/lib/module/components/BenefitCard/BenefitCard.js +225 -0
  79. package/lib/module/components/BrandChip/BrandChip.js +4 -4
  80. package/lib/module/components/Button/Button.js +3 -2
  81. package/lib/module/components/CardAdvisory/CardAdvisory.js +3 -2
  82. package/lib/module/components/CardBankAccount/CardBankAccount.js +4 -3
  83. package/lib/module/components/CardCTA/CardCTA.js +198 -28
  84. package/lib/module/components/CardInsight/CardInsight.js +5 -1
  85. package/lib/module/components/CcCard/CcCard.js +464 -0
  86. package/lib/module/components/Checkbox/Checkbox.js +5 -4
  87. package/lib/module/components/CheckboxItem/CheckboxItem.js +5 -4
  88. package/lib/module/components/CircularProgressBar/CircularProgressBar.js +8 -4
  89. package/lib/module/components/CircularProgressBarDoted/CircularProgressBarDoted.js +4 -3
  90. package/lib/module/components/CircularRating/CircularRating.js +3 -2
  91. package/lib/module/components/ClusterBubble/ClusterBubble.js +4 -3
  92. package/lib/module/components/CompareTable/CompareTable.js +396 -0
  93. package/lib/module/components/ComparisonBar/ComparisonBar.js +260 -0
  94. package/lib/module/components/CoverageBarComparison/CoverageBarComparison.js +4 -3
  95. package/lib/module/components/DonutChart/DonutChart.js +5 -4
  96. package/lib/module/components/Dropdown/Dropdown.js +4 -3
  97. package/lib/module/components/DropdownInput/DropdownInput.js +40 -7
  98. package/lib/module/components/ExpandableCheckbox/ExpandableCheckbox.js +2 -1
  99. package/lib/module/components/FormField/FormField.js +48 -7
  100. package/lib/module/components/Gauge/Gauge.js +1 -1
  101. package/lib/module/components/HoldingsCard/HoldingsCard.js +4 -3
  102. package/lib/module/components/InputSearch/InputSearch.js +6 -4
  103. package/lib/module/components/InstitutionBadge/InstitutionBadge.js +3 -2
  104. package/lib/module/components/ListGroup/ListGroup.js +3 -2
  105. package/lib/module/components/ListItem/ListItem.js +4 -3
  106. package/lib/module/components/MediaCard/MediaCard.js +4 -2
  107. package/lib/module/components/MetricLegendItem/MetricLegendItem.js +4 -3
  108. package/lib/module/components/MonthlyStatusGrid/MonthlyStatusGrid.js +7 -4
  109. package/lib/module/components/NoteInput/NoteInput.js +7 -6
  110. package/lib/module/components/PdpCcCard/PdpCcCard.js +267 -0
  111. package/lib/module/components/PoweredByLabel/PoweredByLabel.js +4 -3
  112. package/lib/module/components/ProductMerchandisingCard/ProductMerchandisingCard.js +421 -0
  113. package/lib/module/components/ProductOverview/ProductOverview.js +5 -4
  114. package/lib/module/components/ProgressBadge/ProgressBadge.js +3 -3
  115. package/lib/module/components/ProjectionMarker/ProjectionMarker.js +157 -0
  116. package/lib/module/components/Radio/Radio.js +5 -4
  117. package/lib/module/components/Section/Section.js +4 -3
  118. package/lib/module/components/Slider/Slider.js +469 -0
  119. package/lib/module/components/Stack/Stack.js +81 -0
  120. package/lib/module/components/SuggestiveSearch/SuggestiveSearch.js +10 -1
  121. package/lib/module/components/SummaryTile/SummaryTile.js +4 -3
  122. package/lib/module/components/Table/Table.js +315 -0
  123. package/lib/module/components/Text/Text.js +3 -2
  124. package/lib/module/components/TextInput/TextInput.js +24 -11
  125. package/lib/module/components/TextSegment/TextSegment.js +114 -0
  126. package/lib/module/components/ThreadHero/ThreadHero.js +5 -6
  127. package/lib/module/components/Title/Title.js +3 -2
  128. package/lib/module/components/Toast/Toast.js +4 -3
  129. package/lib/module/components/TransactionBubble/TransactionBubble.js +3 -2
  130. package/lib/module/components/TransactionStatus/TransactionStatus.js +4 -3
  131. package/lib/module/components/UpiHandle/UpiHandle.js +3 -3
  132. package/lib/module/components/index.js +11 -0
  133. package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
  134. package/lib/module/design-tokens/figma-modes.generated.js +39 -9
  135. package/lib/module/icons/registry.js +1 -1
  136. package/lib/module/utils/GlassFill/GlassFill.js +265 -0
  137. package/lib/module/utils/GlassFill/GlassFill.web.js +115 -0
  138. package/lib/module/utils/react-utils.js +75 -0
  139. package/lib/module/utils/web-platform-utils.js +58 -0
  140. package/lib/typescript/src/components/Accordion/Accordion.d.ts +7 -1
  141. package/lib/typescript/src/components/AccordionCheckbox/AccordionCheckbox.d.ts +7 -1
  142. package/lib/typescript/src/components/AccountCard/AccountCard.d.ts +7 -1
  143. package/lib/typescript/src/components/AllocationComparisonChart/AllocationComparisonChart.d.ts +7 -1
  144. package/lib/typescript/src/components/AmountInput/AmountInput.d.ts +3 -2
  145. package/lib/typescript/src/components/AreaLineChart/AreaLineChart.d.ts +8 -1
  146. package/lib/typescript/src/components/Badge/Badge.d.ts +32 -2
  147. package/lib/typescript/src/components/BenefitCard/BenefitCard.d.ts +93 -0
  148. package/lib/typescript/src/components/BrandChip/BrandChip.d.ts +7 -1
  149. package/lib/typescript/src/components/Button/Button.d.ts +7 -1
  150. package/lib/typescript/src/components/CardAdvisory/CardAdvisory.d.ts +7 -1
  151. package/lib/typescript/src/components/CardBankAccount/CardBankAccount.d.ts +7 -1
  152. package/lib/typescript/src/components/CardCTA/CardCTA.d.ts +27 -5
  153. package/lib/typescript/src/components/CcCard/CcCard.d.ts +137 -0
  154. package/lib/typescript/src/components/Checkbox/Checkbox.d.ts +3 -2
  155. package/lib/typescript/src/components/CheckboxItem/CheckboxItem.d.ts +2 -2
  156. package/lib/typescript/src/components/CircularProgressBar/CircularProgressBar.d.ts +7 -1
  157. package/lib/typescript/src/components/CircularProgressBarDoted/CircularProgressBarDoted.d.ts +7 -1
  158. package/lib/typescript/src/components/CircularRating/CircularRating.d.ts +7 -1
  159. package/lib/typescript/src/components/ClusterBubble/ClusterBubble.d.ts +7 -1
  160. package/lib/typescript/src/components/CompareTable/CompareTable.d.ts +94 -0
  161. package/lib/typescript/src/components/ComparisonBar/ComparisonBar.d.ts +118 -0
  162. package/lib/typescript/src/components/CoverageBarComparison/CoverageBarComparison.d.ts +7 -1
  163. package/lib/typescript/src/components/DonutChart/DonutChart.d.ts +7 -1
  164. package/lib/typescript/src/components/Dropdown/Dropdown.d.ts +7 -1
  165. package/lib/typescript/src/components/DropdownInput/DropdownInput.d.ts +26 -1
  166. package/lib/typescript/src/components/ExpandableCheckbox/ExpandableCheckbox.d.ts +7 -1
  167. package/lib/typescript/src/components/FormField/FormField.d.ts +2 -2
  168. package/lib/typescript/src/components/HoldingsCard/HoldingsCard.d.ts +7 -1
  169. package/lib/typescript/src/components/InputSearch/InputSearch.d.ts +23 -2
  170. package/lib/typescript/src/components/InstitutionBadge/InstitutionBadge.d.ts +7 -1
  171. package/lib/typescript/src/components/ListGroup/ListGroup.d.ts +7 -1
  172. package/lib/typescript/src/components/ListItem/ListItem.d.ts +7 -1
  173. package/lib/typescript/src/components/MetricLegendItem/MetricLegendItem.d.ts +7 -1
  174. package/lib/typescript/src/components/MonthlyStatusGrid/MonthlyStatusGrid.d.ts +14 -2
  175. package/lib/typescript/src/components/NoteInput/NoteInput.d.ts +19 -2
  176. package/lib/typescript/src/components/PdpCcCard/PdpCcCard.d.ts +84 -0
  177. package/lib/typescript/src/components/PoweredByLabel/PoweredByLabel.d.ts +7 -1
  178. package/lib/typescript/src/components/ProductMerchandisingCard/ProductMerchandisingCard.d.ts +87 -0
  179. package/lib/typescript/src/components/ProductOverview/ProductOverview.d.ts +7 -1
  180. package/lib/typescript/src/components/ProgressBadge/ProgressBadge.d.ts +7 -1
  181. package/lib/typescript/src/components/ProjectionMarker/ProjectionMarker.d.ts +88 -0
  182. package/lib/typescript/src/components/Radio/Radio.d.ts +3 -2
  183. package/lib/typescript/src/components/RadioButton/RadioButton.d.ts +2 -2
  184. package/lib/typescript/src/components/Section/Section.d.ts +7 -1
  185. package/lib/typescript/src/components/Slider/Slider.d.ts +105 -0
  186. package/lib/typescript/src/components/Stack/Stack.d.ts +81 -0
  187. package/lib/typescript/src/components/SummaryTile/SummaryTile.d.ts +7 -1
  188. package/lib/typescript/src/components/Table/Table.d.ts +139 -0
  189. package/lib/typescript/src/components/Text/Text.d.ts +7 -1
  190. package/lib/typescript/src/components/TextInput/TextInput.d.ts +9 -29
  191. package/lib/typescript/src/components/TextSegment/TextSegment.d.ts +106 -0
  192. package/lib/typescript/src/components/ThreadHero/ThreadHero.d.ts +7 -1
  193. package/lib/typescript/src/components/Title/Title.d.ts +7 -1
  194. package/lib/typescript/src/components/Toast/Toast.d.ts +7 -1
  195. package/lib/typescript/src/components/TransactionBubble/TransactionBubble.d.ts +7 -1
  196. package/lib/typescript/src/components/TransactionStatus/TransactionStatus.d.ts +7 -1
  197. package/lib/typescript/src/components/UpiHandle/UpiHandle.d.ts +7 -1
  198. package/lib/typescript/src/components/index.d.ts +14 -3
  199. package/lib/typescript/src/design-tokens/figma-modes.generated.d.ts +22 -2
  200. package/lib/typescript/src/icons/registry.d.ts +1 -1
  201. package/lib/typescript/src/utils/GlassFill/GlassFill.d.ts +84 -0
  202. package/lib/typescript/src/utils/GlassFill/GlassFill.web.d.ts +43 -0
  203. package/lib/typescript/src/utils/react-utils.d.ts +47 -0
  204. package/lib/typescript/src/utils/web-platform-utils.d.ts +36 -0
  205. package/package.json +2 -1
  206. package/src/components/Accordion/Accordion.tsx +9 -2
  207. package/src/components/AccordionCheckbox/AccordionCheckbox.tsx +10 -3
  208. package/src/components/AccountCard/AccountCard.tsx +10 -3
  209. package/src/components/AllocationComparisonChart/AllocationComparisonChart.tsx +14 -4
  210. package/src/components/AmountInput/AmountInput.tsx +7 -5
  211. package/src/components/AreaLineChart/AreaLineChart.tsx +15 -5
  212. package/src/components/Badge/Badge.tsx +78 -8
  213. package/src/components/BenefitCard/BenefitCard.tsx +309 -0
  214. package/src/components/BrandChip/BrandChip.tsx +9 -3
  215. package/src/components/Button/Button.tsx +9 -2
  216. package/src/components/CardAdvisory/CardAdvisory.tsx +9 -2
  217. package/src/components/CardBankAccount/CardBankAccount.tsx +9 -2
  218. package/src/components/CardCTA/CardCTA.tsx +214 -41
  219. package/src/components/CardInsight/CardInsight.tsx +7 -1
  220. package/src/components/CcCard/CcCard.tsx +598 -0
  221. package/src/components/Checkbox/Checkbox.tsx +5 -4
  222. package/src/components/CheckboxItem/CheckboxItem.tsx +5 -4
  223. package/src/components/CircularProgressBar/CircularProgressBar.tsx +14 -4
  224. package/src/components/CircularProgressBarDoted/CircularProgressBarDoted.tsx +10 -3
  225. package/src/components/CircularRating/CircularRating.tsx +9 -2
  226. package/src/components/ClusterBubble/ClusterBubble.tsx +9 -2
  227. package/src/components/CompareTable/CompareTable.tsx +525 -0
  228. package/src/components/ComparisonBar/ComparisonBar.tsx +356 -0
  229. package/src/components/CoverageBarComparison/CoverageBarComparison.tsx +9 -2
  230. package/src/components/DonutChart/DonutChart.tsx +10 -3
  231. package/src/components/Dropdown/Dropdown.tsx +9 -2
  232. package/src/components/DropdownInput/DropdownInput.tsx +64 -5
  233. package/src/components/ExpandableCheckbox/ExpandableCheckbox.tsx +8 -1
  234. package/src/components/FormField/FormField.tsx +52 -6
  235. package/src/components/Gauge/Gauge.tsx +1 -1
  236. package/src/components/HoldingsCard/HoldingsCard.tsx +9 -2
  237. package/src/components/InputSearch/InputSearch.tsx +8 -5
  238. package/src/components/InstitutionBadge/InstitutionBadge.tsx +9 -2
  239. package/src/components/ListGroup/ListGroup.tsx +9 -2
  240. package/src/components/ListItem/ListItem.tsx +10 -3
  241. package/src/components/MediaCard/MediaCard.tsx +2 -2
  242. package/src/components/MetricLegendItem/MetricLegendItem.tsx +9 -2
  243. package/src/components/MonthlyStatusGrid/MonthlyStatusGrid.tsx +17 -2
  244. package/src/components/NoteInput/NoteInput.tsx +8 -6
  245. package/src/components/PdpCcCard/PdpCcCard.tsx +356 -0
  246. package/src/components/PoweredByLabel/PoweredByLabel.tsx +9 -2
  247. package/src/components/ProductMerchandisingCard/ProductMerchandisingCard.tsx +490 -0
  248. package/src/components/ProductOverview/ProductOverview.tsx +10 -3
  249. package/src/components/ProgressBadge/ProgressBadge.tsx +9 -3
  250. package/src/components/ProjectionMarker/ProjectionMarker.tsx +284 -0
  251. package/src/components/Radio/Radio.tsx +5 -4
  252. package/src/components/Section/Section.tsx +10 -3
  253. package/src/components/Slider/Slider.tsx +635 -0
  254. package/src/components/Stack/Stack.tsx +131 -0
  255. package/src/components/SuggestiveSearch/SuggestiveSearch.tsx +10 -1
  256. package/src/components/SummaryTile/SummaryTile.tsx +9 -2
  257. package/src/components/Table/Table.tsx +449 -0
  258. package/src/components/Text/Text.tsx +9 -2
  259. package/src/components/TextInput/TextInput.tsx +22 -12
  260. package/src/components/TextSegment/TextSegment.tsx +173 -0
  261. package/src/components/ThreadHero/ThreadHero.tsx +10 -3
  262. package/src/components/Title/Title.tsx +9 -2
  263. package/src/components/Toast/Toast.tsx +9 -2
  264. package/src/components/TransactionBubble/TransactionBubble.tsx +9 -2
  265. package/src/components/TransactionStatus/TransactionStatus.tsx +9 -2
  266. package/src/components/UpiHandle/UpiHandle.tsx +9 -3
  267. package/src/components/index.ts +33 -3
  268. package/src/design-tokens/Coin Variables-variables-full.json +1 -1
  269. package/src/design-tokens/figma-modes.generated.ts +39 -9
  270. package/src/icons/registry.ts +1 -1
  271. package/src/utils/GlassFill/GlassFill.tsx +305 -0
  272. package/src/utils/GlassFill/GlassFill.web.tsx +148 -0
  273. package/src/utils/react-utils.ts +84 -0
  274. package/src/utils/web-platform-utils.ts +68 -0
  275. package/lib/commonjs/components/MediaCard/GlassFill.js +0 -62
  276. package/lib/commonjs/components/MediaCard/GlassFill.web.js +0 -48
  277. package/lib/module/components/MediaCard/GlassFill.js +0 -57
  278. package/lib/module/components/MediaCard/GlassFill.web.js +0 -43
  279. package/lib/typescript/scripts/extract-component-tokens.d.ts +0 -9
  280. package/lib/typescript/scripts/generate-component-docs.d.ts +0 -9
  281. package/lib/typescript/scripts/generate-icon-registry.d.ts +0 -3
  282. package/lib/typescript/scripts/generate-mode-types.d.ts +0 -2
  283. package/lib/typescript/scripts/retype-modes.d.cts +0 -2
  284. package/lib/typescript/src/components/MediaCard/GlassFill.d.ts +0 -47
  285. package/lib/typescript/src/components/MediaCard/GlassFill.web.d.ts +0 -20
  286. package/src/components/MediaCard/GlassFill.tsx +0 -89
  287. package/src/components/MediaCard/GlassFill.web.tsx +0 -53
@@ -126,6 +126,7 @@ function CardAdvisory({
126
126
  progressStyle,
127
127
  nudgeStyle,
128
128
  accessibilityLabel,
129
+ disableTruncation,
129
130
  ...rest
130
131
  }) {
131
132
  const {
@@ -163,7 +164,7 @@ function CardAdvisory({
163
164
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
164
165
  style: tokens.headerStyle,
165
166
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
166
- numberOfLines: 1,
167
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
167
168
  style: [tokens.titleStyle, titleStyle],
168
169
  children: title
169
170
  }), processedTitleEndSlot || (showInfoIcon ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
@@ -72,7 +72,8 @@ function CardBankAccount({
72
72
  footer,
73
73
  modes: propModes = _reactUtils.EMPTY_MODES,
74
74
  style,
75
- accessibilityLabel
75
+ accessibilityLabel,
76
+ disableTruncation
76
77
  }) {
77
78
  // Merge caller modes on top of `DEFAULT_MODES` so every default key
78
79
  // (e.g. `Button / Size`, `AppearanceBrand`, `Emphasis`) can be overridden
@@ -189,7 +190,7 @@ function CardBankAccount({
189
190
  })
190
191
  }), typeof item.value === 'string' || typeof item.value === 'number' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
191
192
  style: valueTextStyle,
192
- numberOfLines: 1,
193
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
193
194
  children: item.value
194
195
  }) : (0, _reactUtils.cloneChildrenWithModes)(item.value, modes)]
195
196
  }, `${item.label}-${index}`))
@@ -14,9 +14,18 @@ var _Button = _interopRequireDefault(require("../Button/Button"));
14
14
  var _Badge = _interopRequireDefault(require("../Badge/Badge"));
15
15
  var _ButtonGroup = _interopRequireDefault(require("../ButtonGroup/ButtonGroup"));
16
16
  var _IconButton = _interopRequireDefault(require("../IconButton/IconButton"));
17
+ var _Avatar = _interopRequireDefault(require("../Avatar/Avatar"));
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
+ /**
21
+ * Accepted `type` values. The canonical (and historical) values are lowercase
22
+ * (`'cta' | 'rating' | 'sip'`). The Figma variant names are PascalCase
23
+ * (`'CTA' | 'Rating' | 'Sip'`) — we accept those too and normalize internally
24
+ * so callers can pass either casing without a breaking change.
25
+ */
26
+
19
27
  const optionalTokenAvailability = new Map();
28
+ const toWeight = w => typeof w === 'number' ? `${w}` : w;
20
29
  function getOptionalVariableByName(name, modes, fallback) {
21
30
  let isAvailable = optionalTokenAvailability.get(name);
22
31
  if (isAvailable === undefined) {
@@ -39,11 +48,16 @@ function CardCTA({
39
48
  showRatingActions = true,
40
49
  onPressLike,
41
50
  onPressDislike,
51
+ headline = 'Headline',
52
+ description = 'Description',
53
+ subtitle = 'Subtitle',
54
+ avatarSource,
42
55
  modes: propModes = _reactUtils.EMPTY_MODES,
43
56
  iconSlot,
44
57
  buttonSlot,
45
58
  ratingBadgeSlot,
46
59
  ratingActionsSlot,
60
+ avatarSlot,
47
61
  style
48
62
  }) {
49
63
  const {
@@ -53,7 +67,10 @@ function CardCTA({
53
67
  ...globalModes,
54
68
  ...propModes
55
69
  };
56
- const isRating = type === 'rating';
70
+ // Accept both lowercase (canonical) and Figma PascalCase variant names.
71
+ const normalizedType = typeof type === 'string' ? type.toLowerCase() : 'cta';
72
+ const isRating = normalizedType === 'rating';
73
+ const isSip = normalizedType === 'sip';
57
74
  const background = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/background', modes) || '#ffffff';
58
75
  const radius = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/radius', modes) || 12;
59
76
  const borderSize = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/border/size', modes) || 1;
@@ -67,13 +84,13 @@ function CardCTA({
67
84
  const titleColor = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/title/color', modes) || '#0c0d10';
68
85
  const titleFontFamily = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/title/fontFamily', modes) || 'JioType Var';
69
86
  const titleFontSize = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/title/fontSize', modes) || 16;
70
- const titleLineHeight = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/title/lineHeight', modes) || 17.6;
87
+ const titleLineHeight = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/title/lineHeight', modes) || 18;
71
88
  const titleFontWeightRaw = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/title/fontWeight', modes) || 700;
72
89
  const titleFontWeight = typeof titleFontWeightRaw === 'number' ? titleFontWeightRaw.toString() : titleFontWeightRaw;
73
90
  const bodyColor = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/body/color', modes) || '#13002d';
74
91
  const bodyFontFamily = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/body/fontFamily', modes) || 'JioType Var';
75
- const bodyFontSize = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/body/fontSize', modes) || 10;
76
- const bodyLineHeight = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/body/lineHeight', modes) || 12;
92
+ const bodyFontSize = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/body/fontSize', modes) || 14;
93
+ const bodyLineHeight = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/body/lineHeight', modes) || 17;
77
94
  const bodyFontWeightRaw = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/body/fontWeight', modes) || 400;
78
95
  const bodyFontWeight = typeof bodyFontWeightRaw === 'number' ? bodyFontWeightRaw.toString() : bodyFontWeightRaw;
79
96
  const ratingContentGap = getOptionalVariableByName('cardCTA/rating/content/gap', modes, 12);
@@ -82,6 +99,33 @@ function CardCTA({
82
99
  const ratingFooterPaddingH = getOptionalVariableByName('cardCTA/rating/footer/horizontal', modes, 16);
83
100
  const ratingFooterPaddingTop = getOptionalVariableByName('cardCTA/rating/footer/top', modes, 0);
84
101
  const ratingFooterPaddingBottom = getOptionalVariableByName('cardCTA/rating/footer/bottom', modes, 12);
102
+
103
+ // Sip variant footer text block (Headline / Description / Subtitle). These
104
+ // `ccCard/*` tokens were introduced for the Sip layout — resolve them
105
+ // optionally so older token snapshots that lack them fall back gracefully.
106
+ const sipFooterGap = getOptionalVariableByName('ccCard/footer/textWrap/gap', modes, 4);
107
+ const sipHeadlineColor = getOptionalVariableByName('ccCard/headline/color', modes, '#707275');
108
+ const sipHeadlineFontFamily = getOptionalVariableByName('ccCard/headline/fontFamily', modes, 'JioType Var');
109
+ const sipHeadlineFontSize = getOptionalVariableByName('ccCard/headline/fontSize', modes, 10);
110
+ const sipHeadlineLineHeight = getOptionalVariableByName('ccCard/headline/lineHeight', modes, 13);
111
+ const sipHeadlineFontWeightRaw = getOptionalVariableByName('ccCard/headline/fontWeight', modes, 500);
112
+ const sipHeadlineFontWeight = typeof sipHeadlineFontWeightRaw === 'number' ? sipHeadlineFontWeightRaw.toString() : sipHeadlineFontWeightRaw;
113
+ const sipDescriptionColor = getOptionalVariableByName('ccCard/title/color', modes, '#081007');
114
+ const sipDescriptionFontFamily = getOptionalVariableByName('ccCard/title/fontFamily', modes, 'JioType Var');
115
+ const sipDescriptionFontSize = getOptionalVariableByName('ccCard/title/fontSize', modes, 14);
116
+ const sipDescriptionLineHeight = getOptionalVariableByName('ccCard/title/lineHeight', modes, 15);
117
+ const sipDescriptionFontWeightRaw = getOptionalVariableByName('ccCard/title/fontWeight', modes, 700);
118
+ const sipDescriptionFontWeight = typeof sipDescriptionFontWeightRaw === 'number' ? sipDescriptionFontWeightRaw.toString() : sipDescriptionFontWeightRaw;
119
+ const sipSubtitleColor = getOptionalVariableByName('ccCard/subtitle/color', modes, '#707275');
120
+ const sipSubtitleFontFamily = getOptionalVariableByName('ccCard/subtitle/fontFamily', modes, 'JioType Var');
121
+ const sipSubtitleFontSize = getOptionalVariableByName('ccCard/subtitle/fontSize', modes, 10);
122
+ const sipSubtitleLineHeight = getOptionalVariableByName('ccCard/subtitle/lineHeight', modes, 13);
123
+ const sipSubtitleFontWeightRaw = getOptionalVariableByName('ccCard/subtitle/fontWeight', modes, 500);
124
+ const sipSubtitleFontWeight = typeof sipSubtitleFontWeightRaw === 'number' ? sipSubtitleFontWeightRaw.toString() : sipSubtitleFontWeightRaw;
125
+ const avatarModes = {
126
+ ...modes,
127
+ 'Avatar Size': 'L'
128
+ };
85
129
  const buttonModes = {
86
130
  ...modes,
87
131
  AppearanceBrand: 'Secondary',
@@ -98,25 +142,72 @@ function CardCTA({
98
142
  const [measuredButtonLabelWidth, setMeasuredButtonLabelWidth] = _react.default.useState(null);
99
143
  const buttonPaddingH = (0, _figmaVariablesResolver.getVariableByName)('button/padding/horizontal', buttonModes) || 20;
100
144
  const buttonBorderSize = (0, _figmaVariablesResolver.getVariableByName)('button/border/size', buttonModes) ?? 1;
101
- const measuredButtonWidth = measuredButtonLabelWidth === null ? undefined : Math.ceil(measuredButtonLabelWidth + buttonPaddingH * 2 + buttonBorderSize * 2);
102
- const handleButtonLabelTextLayout = _react.default.useCallback(event => {
103
- const lines = event?.nativeEvent?.lines;
104
- if (!Array.isArray(lines) || lines.length === 0) return;
105
- const nextWidth = Math.ceil(lines.reduce((sum, line) => sum + (typeof line?.width === 'number' ? line.width : 0), 0));
106
- if (nextWidth <= 0) return;
107
- setMeasuredButtonLabelWidth(currentWidth => {
108
- if (currentWidth !== null && Math.abs(currentWidth - nextWidth) < 1) {
109
- return currentWidth;
110
- }
111
- return nextWidth;
112
- });
145
+ // Small safety pad so sub-pixel rounding between the measure pass and the
146
+ // rendered glyph run can never clip the final character.
147
+ const measuredButtonWidth = measuredButtonLabelWidth === null ? undefined : Math.ceil(measuredButtonLabelWidth + buttonPaddingH * 2 + buttonBorderSize * 2 + 2);
148
+
149
+ // ROOT-CAUSE FIX for the Android "jumping button" feedback loop + clipping.
150
+ //
151
+ // Previously the *visible* label measured itself via `onTextLayout` and we
152
+ // fed that width straight back onto the same Button. Because the button is
153
+ // width-constrained by its parent, Android clamps the overflowing text and
154
+ // even character-breaks a single word ("Save" -> "Sav"/"e"); the re-applied
155
+ // width re-triggers layout, producing an endless ~60fps width oscillation.
156
+ //
157
+ // We now measure an *off-screen* copy of the label, laid out at an
158
+ // effectively unbounded width, so its reported single-line width is
159
+ // intrinsic and constant regardless of the button's applied width — the
160
+ // measurement can no longer depend on the value it produces, so the loop is
161
+ // impossible. Crucially the measurer reuses the Button's own resolved label
162
+ // styles (passed into `renderContent`), so the measured font matches the
163
+ // rendered font exactly and the width is never an under-estimate. The label
164
+ // is always a single line that overflows rather than wraps or truncates.
165
+ const handleMeasureTextLayout = _react.default.useCallback(event => {
166
+ const line = event?.nativeEvent?.lines?.[0];
167
+ const width = line && typeof line.width === 'number' ? line.width : 0;
168
+ if (width <= 0) return;
169
+ setMeasuredButtonLabelWidth(currentWidth => currentWidth !== null && Math.abs(currentWidth - width) < 0.5 ? currentWidth : Math.ceil(width));
113
170
  }, []);
171
+
172
+ // Off-screen measurer wrapper: absolute + opacity 0 + pointerEvents none =>
173
+ // out of flow, invisible, never intercepts touches, zero layout impact.
174
+ const measurerWrapStyle = {
175
+ position: 'absolute',
176
+ left: 0,
177
+ top: 0,
178
+ opacity: 0
179
+ };
180
+
181
+ // Renders the visible single-line label (never wraps, never ellipsizes) plus
182
+ // the co-located off-screen measurer that shares the Button's exact label
183
+ // styles. `width: 9999` forces the measurer onto one line so `onTextLayout`
184
+ // reports the true intrinsic width.
185
+ const renderButtonContent = labelExtraStyle => labelStyles => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
186
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
187
+ numberOfLines: 1,
188
+ ellipsizeMode: "clip",
189
+ style: [labelStyles, labelExtraStyle],
190
+ children: nonWrappingButtonLabel
191
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
192
+ pointerEvents: "none",
193
+ accessibilityElementsHidden: true,
194
+ importantForAccessibility: "no",
195
+ style: measurerWrapStyle,
196
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
197
+ style: [labelStyles, {
198
+ width: 9999
199
+ }],
200
+ onTextLayout: handleMeasureTextLayout,
201
+ children: nonWrappingButtonLabel
202
+ })
203
+ })]
204
+ });
114
205
  const containerStyle = {
115
206
  backgroundColor: background,
116
207
  borderRadius: radius,
117
208
  borderWidth: borderSize,
118
209
  borderColor,
119
- flexDirection: isRating ? 'column' : 'row',
210
+ flexDirection: isRating || isSip ? 'column' : 'row',
120
211
  overflow: 'visible'
121
212
  };
122
213
 
@@ -202,6 +293,47 @@ function CardCTA({
202
293
  lineHeight: bodyLineHeight,
203
294
  fontWeight: bodyFontWeight
204
295
  };
296
+ const sipWrapStyle = {
297
+ width: '100%',
298
+ paddingHorizontal: leftPaddingH,
299
+ paddingVertical: leftPaddingV,
300
+ gap: leftGap,
301
+ alignItems: 'flex-start',
302
+ justifyContent: 'flex-start',
303
+ overflow: 'visible'
304
+ };
305
+ const sipFooterTextWrapStyle = {
306
+ gap: sipFooterGap,
307
+ alignItems: 'flex-start',
308
+ alignSelf: 'stretch',
309
+ minWidth: 0
310
+ };
311
+ const sipDescriptionWrapStyle = {
312
+ flexDirection: 'row',
313
+ gap: sipFooterGap,
314
+ alignItems: 'flex-end'
315
+ };
316
+ const sipHeadlineStyle = {
317
+ color: sipHeadlineColor,
318
+ fontFamily: sipHeadlineFontFamily,
319
+ fontSize: sipHeadlineFontSize,
320
+ lineHeight: sipHeadlineLineHeight,
321
+ fontWeight: toWeight(sipHeadlineFontWeightRaw)
322
+ };
323
+ const sipDescriptionStyle = {
324
+ color: sipDescriptionColor,
325
+ fontFamily: sipDescriptionFontFamily,
326
+ fontSize: sipDescriptionFontSize,
327
+ lineHeight: sipDescriptionLineHeight,
328
+ fontWeight: toWeight(sipDescriptionFontWeightRaw)
329
+ };
330
+ const sipSubtitleStyle = {
331
+ color: sipSubtitleColor,
332
+ fontFamily: sipSubtitleFontFamily,
333
+ fontSize: sipSubtitleFontSize,
334
+ lineHeight: sipSubtitleLineHeight,
335
+ fontWeight: toWeight(sipSubtitleFontWeightRaw)
336
+ };
205
337
  const ratingContentStyle = {
206
338
  paddingHorizontal: ratingContentPaddingH,
207
339
  paddingVertical: ratingContentPaddingV,
@@ -248,6 +380,52 @@ function CardCTA({
248
380
  flexShrink: 0,
249
381
  flexWrap: 'nowrap'
250
382
  };
383
+ if (isSip) {
384
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
385
+ style: [containerStyle, style],
386
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
387
+ style: sipWrapStyle,
388
+ children: [avatarSlot ? (0, _reactUtils.cloneChildrenWithModes)(avatarSlot, avatarModes) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
389
+ style: "Image",
390
+ imageSource: avatarSource,
391
+ modes: avatarModes
392
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
393
+ style: textWrapStyle,
394
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
395
+ style: titleStyle,
396
+ children: title
397
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
398
+ style: bodyStyle,
399
+ children: body
400
+ })]
401
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
402
+ style: sipFooterTextWrapStyle,
403
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
404
+ style: sipHeadlineStyle,
405
+ children: headline
406
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
407
+ style: sipDescriptionWrapStyle,
408
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
409
+ style: sipDescriptionStyle,
410
+ children: description
411
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
412
+ style: sipSubtitleStyle,
413
+ children: subtitle
414
+ })]
415
+ })]
416
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
417
+ style: buttonWrapStyle,
418
+ children: buttonSlot ? (0, _reactUtils.cloneChildrenWithModes)(buttonSlot, buttonModes) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
419
+ label: effectiveButtonLabel,
420
+ onPress: onPressButton || (() => {}),
421
+ modes: buttonModes,
422
+ style: buttonStyle,
423
+ renderContent: renderButtonContent(buttonLabelStyle)
424
+ })
425
+ })]
426
+ })
427
+ });
428
+ }
251
429
  if (isRating) {
252
430
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
253
431
  style: [containerStyle, style],
@@ -275,11 +453,7 @@ function CardCTA({
275
453
  onPress: onPressButton || (() => {}),
276
454
  modes: buttonModes,
277
455
  style: ratingButtonStyle,
278
- renderContent: labelStyles => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
279
- onTextLayout: handleButtonLabelTextLayout,
280
- style: [labelStyles, ratingButtonLabelStyle],
281
- children: nonWrappingButtonLabel
282
- })
456
+ renderContent: renderButtonContent(ratingButtonLabelStyle)
283
457
  })
284
458
  }), showRatingActions ? ratingActionsSlot ? (0, _reactUtils.cloneChildrenWithModes)(ratingActionsSlot, iconButtonModes) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ButtonGroup.default, {
285
459
  modes: iconButtonModes,
@@ -320,11 +494,7 @@ function CardCTA({
320
494
  onPress: onPressButton || (() => {}),
321
495
  modes: buttonModes,
322
496
  style: buttonStyle,
323
- renderContent: labelStyles => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
324
- onTextLayout: handleButtonLabelTextLayout,
325
- style: [labelStyles, buttonLabelStyle],
326
- children: nonWrappingButtonLabel
327
- })
497
+ renderContent: renderButtonContent(buttonLabelStyle)
328
498
  })
329
499
  })]
330
500
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
@@ -36,7 +36,9 @@ function CardInsight({
36
36
  style
37
37
  }) {
38
38
  const background = (0, _figmaVariablesResolver.getVariableByName)('cardInsight/background', modes) ?? '#ffffff';
39
- const radius = (0, _figmaVariablesResolver.getVariableByName)('cardInsight/radius', modes) ?? 16;
39
+ const radius = (0, _figmaVariablesResolver.getVariableByName)('cardInsight/radius', modes) ?? 12;
40
+ const borderWidth = (0, _figmaVariablesResolver.getVariableByName)('cardInsight/borderWidth', modes) ?? 1;
41
+ const borderColor = (0, _figmaVariablesResolver.getVariableByName)('cardInsight/border/color', modes) ?? '#ffffff';
40
42
  const paddingHorizontal = (0, _figmaVariablesResolver.getVariableByName)('cardInsight/padding/horizontal', modes) ?? 12;
41
43
  const paddingVertical = (0, _figmaVariablesResolver.getVariableByName)('cardInsight/padding/vertical', modes) ?? 16;
42
44
  const gap = (0, _figmaVariablesResolver.getVariableByName)('cardInsight/gap', modes) ?? 12;
@@ -109,6 +111,8 @@ function CardInsight({
109
111
  width,
110
112
  backgroundColor: background,
111
113
  borderRadius: radius,
114
+ borderWidth,
115
+ borderColor,
112
116
  paddingHorizontal,
113
117
  paddingVertical,
114
118
  gap,