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
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+
3
+ import React, { useMemo } from 'react';
4
+ import { View, Text, Pressable, StyleSheet } from 'react-native';
5
+ import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
6
+ import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils';
7
+ import Title from '../Title/Title';
8
+ import Divider from '../Divider/Divider';
9
+ import Button from '../Button/Button';
10
+ import Image from '../Image/Image';
11
+ import Icon from '../Icon/Icon';
12
+
13
+ /**
14
+ * A single metric column inside the card's stats row: a small title, a bold
15
+ * value and an optional muted caption.
16
+ */
17
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
18
+ /**
19
+ * PdpCcCard — Figma node 5352:935 ("PDP cc card").
20
+ *
21
+ * A centered white product/PDP card composed from the shared design-system
22
+ * primitives so it stays in sync with the rest of the library:
23
+ *
24
+ * - **Media** — a top image slot (`Image`, rounded via `image/radius`). Pass
25
+ * `imageSource` for the default image or `media` for a full slot override.
26
+ * - **Title** — a centered headline + subtitle rendered through the shared
27
+ * {@link Title} component (`title/*`, `pageSubtitle/*` tokens).
28
+ * - **Metrics** — a row of {@link PdpCcCardMetric} columns (title / value /
29
+ * caption) separated by vertical `Divider`s (`metricdata/*` tokens).
30
+ * - **CTA** — a small tonal {@link Button} (`Button / Size: S`,
31
+ * `AppearanceBrand: Secondary`, `Emphasis: Medium`) with a leading icon.
32
+ *
33
+ * All defaults can be overridden via `modes`.
34
+ */
35
+ function PdpCcCard({
36
+ imageSource,
37
+ imageWidth = 100,
38
+ imageHeight = 60,
39
+ media,
40
+ title = 'Title',
41
+ subtitle = 'Subtitle',
42
+ metrics = DEFAULT_METRICS,
43
+ buttonLabel = 'button',
44
+ buttonIcon = 'ic_add_circle',
45
+ onButtonPress,
46
+ button,
47
+ showButton = true,
48
+ onPress,
49
+ width = 344,
50
+ modes = EMPTY_MODES,
51
+ style,
52
+ accessibilityLabel
53
+ }) {
54
+ const tokens = useMemo(() => resolveTokens(modes), [modes]);
55
+
56
+ // The CTA uses the brand "Secondary" appearance at "Medium" emphasis (lilac
57
+ // fill + purple label) and the small size — matching the design. A
58
+ // consumer-supplied `modes` value still wins via spread order.
59
+ const ctaModes = useMemo(() => ({
60
+ AppearanceBrand: 'Secondary',
61
+ Emphasis: 'Medium',
62
+ 'Button / Size': 'S',
63
+ ...modes
64
+ }), [modes]);
65
+ const buttonForeground = useMemo(() => asStr(getVariableByName('button/foreground', ctaModes), '#5d00b5'), [ctaModes]);
66
+ const mediaNode = media ? cloneChildrenWithModes(media, modes) : /*#__PURE__*/_jsx(Image, {
67
+ imageSource: imageSource,
68
+ width: imageWidth,
69
+ height: imageHeight,
70
+ borderRadius: tokens.imageRadius,
71
+ resizeMode: "cover",
72
+ accessibilityElementsHidden: true,
73
+ importantForAccessibility: "no"
74
+ });
75
+ const ctaNode = button ? cloneChildrenWithModes(button, ctaModes) : /*#__PURE__*/_jsx(Button, {
76
+ label: buttonLabel,
77
+ modes: ctaModes,
78
+ onPress: onButtonPress,
79
+ leading: buttonIcon ? /*#__PURE__*/_jsx(Icon, {
80
+ iconName: buttonIcon,
81
+ size: tokens.buttonIconSize,
82
+ color: buttonForeground
83
+ }) : undefined
84
+ });
85
+ const content = /*#__PURE__*/_jsxs(_Fragment, {
86
+ children: [/*#__PURE__*/_jsx(View, {
87
+ style: styles.mediaSlot,
88
+ children: mediaNode
89
+ }), /*#__PURE__*/_jsx(Title, {
90
+ title: title,
91
+ subtitle: subtitle,
92
+ textAlign: "Center",
93
+ modes: modes
94
+ }), metrics.length > 0 ? /*#__PURE__*/_jsx(View, {
95
+ style: styles.metricsRow,
96
+ children: metrics.map((metric, index) => /*#__PURE__*/_jsxs(React.Fragment, {
97
+ children: [index > 0 ? /*#__PURE__*/_jsx(Divider, {
98
+ direction: "vertical",
99
+ modes: modes,
100
+ style: styles.metricDivider
101
+ }) : null, /*#__PURE__*/_jsx(Metricdata, {
102
+ metric: metric,
103
+ tokens: tokens
104
+ })]
105
+ }, index))
106
+ }) : null, showButton ? ctaNode : null]
107
+ });
108
+ const containerStyle = useMemo(() => ({
109
+ ...tokens.container,
110
+ width
111
+ }), [tokens.container, width]);
112
+ if (onPress) {
113
+ return /*#__PURE__*/_jsx(Pressable, {
114
+ style: ({
115
+ pressed
116
+ }) => [containerStyle, pressed ? styles.pressed : null, style],
117
+ accessibilityRole: "button",
118
+ accessibilityLabel: accessibilityLabel ?? title,
119
+ onPress: onPress,
120
+ children: content
121
+ });
122
+ }
123
+ return /*#__PURE__*/_jsx(View, {
124
+ style: [containerStyle, style],
125
+ accessibilityLabel: accessibilityLabel,
126
+ children: content
127
+ });
128
+ }
129
+
130
+ // ---------------------------------------------------------------------------
131
+ // Metricdata — internal metric column (Figma node 5352:256)
132
+ // ---------------------------------------------------------------------------
133
+
134
+ function Metricdata({
135
+ metric,
136
+ tokens
137
+ }) {
138
+ return /*#__PURE__*/_jsxs(View, {
139
+ style: tokens.metric,
140
+ children: [metric.title != null ? /*#__PURE__*/_jsx(Text, {
141
+ style: tokens.metricTitle,
142
+ children: metric.title
143
+ }) : null, metric.value != null ? /*#__PURE__*/_jsx(Text, {
144
+ style: tokens.metricValue,
145
+ children: metric.value
146
+ }) : null, metric.caption != null ? /*#__PURE__*/_jsx(Text, {
147
+ style: tokens.metricCaption,
148
+ children: metric.caption
149
+ }) : null]
150
+ });
151
+ }
152
+
153
+ // ---------------------------------------------------------------------------
154
+ // Tokens / static styles
155
+ // ---------------------------------------------------------------------------
156
+
157
+ function asNum(raw, fallback) {
158
+ const n = typeof raw === 'number' ? raw : parseFloat(raw);
159
+ return Number.isFinite(n) ? n : fallback;
160
+ }
161
+ function asStr(raw, fallback) {
162
+ return raw != null ? String(raw) : fallback;
163
+ }
164
+ function resolveTokens(modes) {
165
+ // NOTE: token names are passed as string literals DIRECTLY to
166
+ // getVariableByName so the `extract-component-tokens` script can statically
167
+ // collect them for the generated docs. Do not refactor these into a helper
168
+ // that receives the name as a variable.
169
+ const background = asStr(getVariableByName('PDPcccard/bg/color', modes), '#ffffff');
170
+ const paddingHorizontal = asNum(getVariableByName('PDPcccard/padding/horizontal', modes), 16);
171
+ const paddingVertical = asNum(getVariableByName('PDPcccard/padding/vertical', modes), 20);
172
+ const gap = asNum(getVariableByName('PDPcccard/gap', modes), 12);
173
+ const imageRadius = asNum(getVariableByName('image/radius', modes), 8);
174
+ const buttonIconSize = asNum(getVariableByName('button/iconSize', modes), 16);
175
+ const metricGap = asNum(getVariableByName('metricdata/gap', modes), 4);
176
+ const metricPadH = asNum(getVariableByName('metricdata/padding/horizontal', modes), 10);
177
+ const metricPadV = asNum(getVariableByName('metricdata/padding/vertical', modes), 10);
178
+ const titleColor = asStr(getVariableByName('metricdata/title/color', modes), '#000000');
179
+ const titleSize = asNum(getVariableByName('metricdata/title/fontsize', modes), 12);
180
+ const titleFamily = asStr(getVariableByName('metricdata/title/fontfamily', modes), 'JioType Var');
181
+ const titleWeight = asStr(getVariableByName('metricdata/title/fontweight', modes), '400');
182
+ const valueColor = asStr(getVariableByName('metricdata/value/color', modes), '#000000');
183
+ const valueSize = asNum(getVariableByName('metricdata/value/fontsize', modes), 20);
184
+ const valueFamily = asStr(getVariableByName('metricdata/value/fontfamily', modes), 'JioType Var');
185
+ const valueWeight = asStr(getVariableByName('metricdata/value/fontweight', modes), '700');
186
+ const captionColor = asStr(getVariableByName('metricdata/caption/color', modes), '#777777');
187
+ const captionSize = asNum(getVariableByName('metricdata/caption/fontsize', modes), 12);
188
+ const captionFamily = asStr(getVariableByName('metricdata/caption/fontfamily', modes), 'JioType Var');
189
+ const captionWeight = asStr(getVariableByName('metricdata/caption/fontweight', modes), '500');
190
+ return {
191
+ container: {
192
+ backgroundColor: background,
193
+ paddingHorizontal,
194
+ paddingVertical,
195
+ gap,
196
+ flexDirection: 'column',
197
+ alignItems: 'center',
198
+ justifyContent: 'center'
199
+ },
200
+ imageRadius,
201
+ buttonIconSize,
202
+ metric: {
203
+ flex: 1,
204
+ gap: metricGap,
205
+ paddingHorizontal: metricPadH,
206
+ paddingVertical: metricPadV,
207
+ alignItems: 'center',
208
+ justifyContent: 'center'
209
+ },
210
+ metricTitle: {
211
+ color: titleColor,
212
+ fontSize: titleSize,
213
+ fontFamily: titleFamily,
214
+ fontWeight: titleWeight,
215
+ lineHeight: Math.round(titleSize * 1.2),
216
+ textAlign: 'center',
217
+ includeFontPadding: false
218
+ },
219
+ metricValue: {
220
+ color: valueColor,
221
+ fontSize: valueSize,
222
+ fontFamily: valueFamily,
223
+ fontWeight: valueWeight,
224
+ lineHeight: Math.round(valueSize * 1.2),
225
+ textAlign: 'center',
226
+ includeFontPadding: false
227
+ },
228
+ metricCaption: {
229
+ color: captionColor,
230
+ fontSize: captionSize,
231
+ fontFamily: captionFamily,
232
+ fontWeight: captionWeight,
233
+ lineHeight: Math.round(captionSize * 1.2),
234
+ textAlign: 'center',
235
+ includeFontPadding: false
236
+ }
237
+ };
238
+ }
239
+ const DEFAULT_METRICS = [{
240
+ title: 'Title',
241
+ value: 'Value',
242
+ caption: 'caption'
243
+ }, {
244
+ title: 'Title',
245
+ value: 'Value',
246
+ caption: 'caption'
247
+ }];
248
+ const styles = StyleSheet.create({
249
+ mediaSlot: {
250
+ alignSelf: 'stretch',
251
+ alignItems: 'center',
252
+ justifyContent: 'center'
253
+ },
254
+ metricsRow: {
255
+ alignSelf: 'stretch',
256
+ flexDirection: 'row',
257
+ alignItems: 'stretch'
258
+ },
259
+ metricDivider: {
260
+ alignSelf: 'center',
261
+ height: '70%'
262
+ },
263
+ pressed: {
264
+ opacity: 0.92
265
+ }
266
+ });
267
+ export default PdpCcCard;
@@ -4,7 +4,7 @@ import React, { useMemo } from 'react';
4
4
  import { Text, View } from 'react-native';
5
5
  import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
6
6
  import { useTokens } from '../../design-tokens/JFSThemeProvider';
7
- import { EMPTY_MODES, cloneChildrenWithModes } from '../../utils/react-utils';
7
+ import { EMPTY_MODES, cloneChildrenWithModes, resolveTruncation } from '../../utils/react-utils';
8
8
  import MediaSource from '../../utils/MediaSource';
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  // Default bundled FINVU brand logo, matching the Figma reference so the
@@ -56,7 +56,8 @@ function PoweredByLabel({
56
56
  style,
57
57
  textStyle,
58
58
  imageStyle,
59
- accessibilityLabel
59
+ accessibilityLabel,
60
+ disableTruncation
60
61
  }) {
61
62
  const {
62
63
  modes: globalModes
@@ -121,7 +122,7 @@ function PoweredByLabel({
121
122
  style: [labelTextStyle, textStyle],
122
123
  accessibilityElementsHidden: true,
123
124
  importantForAccessibility: "no",
124
- numberOfLines: 1,
125
+ ...resolveTruncation(disableTruncation, 1),
125
126
  children: label
126
127
  }), renderImage()]
127
128
  });