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
@@ -133,7 +133,8 @@ function DonutChart({
133
133
  style,
134
134
  valueStyle,
135
135
  labelStyle,
136
- accessibilityLabel
136
+ accessibilityLabel,
137
+ disableTruncation
137
138
  }) {
138
139
  const {
139
140
  modes: globalModes
@@ -231,7 +232,7 @@ function DonutChart({
231
232
  fontWeight: valueFontWeight,
232
233
  textAlign: 'center'
233
234
  }, valueStyle],
234
- numberOfLines: 1,
235
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
235
236
  children: value
236
237
  }) : null, showLabel ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
237
238
  style: [{
@@ -242,7 +243,7 @@ function DonutChart({
242
243
  fontWeight: labelFontWeight,
243
244
  textAlign: 'center'
244
245
  }, labelStyle],
245
- numberOfLines: 1,
246
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
246
247
  children: label
247
248
  }) : null]
248
249
  }) : null]
@@ -69,7 +69,8 @@ function DropdownItem({
69
69
  style,
70
70
  labelStyle,
71
71
  accessibilityLabel,
72
- accessibilityHint
72
+ accessibilityHint,
73
+ disableTruncation
73
74
  }) {
74
75
  const {
75
76
  modes: globalModes
@@ -138,7 +139,7 @@ function DropdownItem({
138
139
  ...a11yProps,
139
140
  children: [processedLeading, children != null ? children : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
140
141
  style: [textStyle, labelStyle],
141
- numberOfLines: 1,
142
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
142
143
  children: label
143
144
  }), customTrailing, showDefaultCheck && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
144
145
  name: "ic_confirm",
@@ -22,6 +22,12 @@ const IS_WEB = _reactNative.Platform.OS === 'web';
22
22
  // Types
23
23
  // ---------------------------------------------------------------------------
24
24
 
25
+ /**
26
+ * Imperative handle exposed via `ref`. Lets the consumer drive the dropdown
27
+ * from outside — e.g. close it when an Android hardware/system button is
28
+ * pressed, or open it programmatically from a sibling control.
29
+ */
30
+
25
31
  // ---------------------------------------------------------------------------
26
32
  // Token resolution
27
33
  // ---------------------------------------------------------------------------
@@ -125,7 +131,7 @@ function collectOptionsFromChildren(children) {
125
131
  // Component
126
132
  // ---------------------------------------------------------------------------
127
133
 
128
- function DropdownInput({
134
+ const DropdownInput = /*#__PURE__*/(0, _react.forwardRef)(function DropdownInput({
129
135
  label,
130
136
  placeholder = 'Select an option',
131
137
  items,
@@ -155,8 +161,9 @@ function DropdownInput({
155
161
  accessibilityLabel,
156
162
  accessibilityHint,
157
163
  onFocus,
158
- onBlur
159
- }) {
164
+ onBlur,
165
+ disableTruncation
166
+ }, ref) {
160
167
  // ---------------- Modes ----------------
161
168
  const {
162
169
  modes: globalModes
@@ -270,6 +277,32 @@ function DropdownInput({
270
277
  measure();
271
278
  }, [measure]);
272
279
 
280
+ // ---------------- Imperative handle ----------------
281
+ (0, _react.useImperativeHandle)(ref, () => ({
282
+ open: () => {
283
+ if (isDisabled || isReadOnly) return;
284
+ measure();
285
+ setOpenState(true);
286
+ },
287
+ close: closeMenu,
288
+ toggle: () => {
289
+ if (isDisabled || isReadOnly) return;
290
+ measure();
291
+ toggleMenu();
292
+ },
293
+ focus: () => {
294
+ ;
295
+ triggerRef.current?.focus?.();
296
+ },
297
+ blur: () => {
298
+ ;
299
+ triggerRef.current?.blur?.();
300
+ },
301
+ measureInWindow: callback => {
302
+ triggerRef.current?.measureInWindow(callback);
303
+ }
304
+ }), [isDisabled, isReadOnly, measure, setOpenState, closeMenu, toggleMenu]);
305
+
273
306
  // ---------------- Popup positioning ----------------
274
307
  const [menuSize, setMenuSize] = (0, _react.useState)(null);
275
308
  const handleMenuLayout = (0, _react.useCallback)(e => {
@@ -516,7 +549,7 @@ function DropdownInput({
516
549
  style: [valueTextStyle, !hasValue && {
517
550
  color: placeholderColor
518
551
  }],
519
- numberOfLines: 1,
552
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
520
553
  children: displayLabel
521
554
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
522
555
  accessibilityElementsHidden: true,
@@ -564,7 +597,7 @@ function DropdownInput({
564
597
  })
565
598
  })]
566
599
  });
567
- }
600
+ });
568
601
  const webNoOutline = {
569
602
  outlineStyle: 'none',
570
603
  outlineWidth: 0,
@@ -64,6 +64,7 @@ function ExpandableCheckbox({
64
64
  readMoreLabel = 'Read more',
65
65
  readLessLabel = 'Read less',
66
66
  collapsedLines = 1,
67
+ disableTruncation = false,
67
68
  modes = _reactUtils.EMPTY_MODES,
68
69
  style,
69
70
  labelStyle,
@@ -136,7 +137,7 @@ function ExpandableCheckbox({
136
137
  }), [modes]);
137
138
  const a11yLabel = accessibilityLabel ?? (typeof label === 'string' ? label : undefined);
138
139
  const buttonLabel = isExpanded ? readLessLabel : readMoreLabel;
139
- const labelNumberOfLinesProps = !isExpanded && collapsedLines > 0 ? {
140
+ const labelNumberOfLinesProps = !disableTruncation && !isExpanded && collapsedLines > 0 ? {
140
141
  numberOfLines: collapsedLines,
141
142
  ellipsizeMode: 'tail'
142
143
  } : null;
@@ -9,6 +9,7 @@ var _reactNative = require("react-native");
9
9
  var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
10
10
  var _JFSThemeProvider = require("../../design-tokens/JFSThemeProvider");
11
11
  var _reactUtils = require("../../utils/react-utils");
12
+ var _webPlatformUtils = require("../../utils/web-platform-utils");
12
13
  var _SupportText = _interopRequireDefault(require("../SupportText/SupportText"));
13
14
  var _Icon = _interopRequireDefault(require("../../icons/Icon"));
14
15
  var _Form = require("../Form/Form");
@@ -162,7 +163,7 @@ function firstError(error) {
162
163
  // Component
163
164
  // ---------------------------------------------------------------------------
164
165
 
165
- function FormField({
166
+ const FormField = /*#__PURE__*/(0, _react.forwardRef)(function FormField({
166
167
  label,
167
168
  placeholder,
168
169
  value,
@@ -190,7 +191,7 @@ function FormField({
190
191
  accessibilityLabel,
191
192
  accessibilityHint,
192
193
  testID
193
- }) {
194
+ }, ref) {
194
195
  // -- Form context integration -------------------------------------------
195
196
  const formCtx = (0, _Form.useFormContext)();
196
197
  const formError = name && formCtx ? firstError(formCtx.validationErrors[name]) : undefined;
@@ -208,6 +209,21 @@ function FormField({
208
209
  const [isFocused, setIsFocused] = (0, _react.useState)(false);
209
210
  const interactive = !isDisabled && !isReadOnly;
210
211
 
212
+ // Internal handles so we can (a) imperatively blur the input and (b) detect
213
+ // outside presses. The forwarded `ref` is merged in below, so the public
214
+ // ref API (focus/blur/clear/isFocused) is unchanged for consumers.
215
+ const inputRef = (0, _react.useRef)(null);
216
+ const rootRef = (0, _react.useRef)(null);
217
+ // Stable merged ref so React doesn't detach/reattach (and momentarily null
218
+ // `inputRef.current`) on every render.
219
+ const mergedInputRef = (0, _react.useMemo)(() => (0, _reactUtils.mergeRefs)(inputRef, ref), [ref]);
220
+
221
+ // Web: pressing an INTERACTIVE element outside the field (Button, link,
222
+ // another pressable) often does not move DOM focus, so the native `blur`
223
+ // never fires and the field stays visually "Active". Force a blur on any
224
+ // outside pointer press while focused. No-op on native.
225
+ (0, _webPlatformUtils.useWebOutsidePress)(rootRef, (0, _react.useCallback)(() => inputRef.current?.blur(), []), isFocused);
226
+
211
227
  // FormField States cascade — error > read only/disabled > active (focused) > idle.
212
228
  // Disabled maps to "Read Only" since there is no dedicated disabled mode and
213
229
  // the visual treatment is closest. This is only the DEFAULT — an explicit
@@ -290,7 +306,30 @@ function FormField({
290
306
  color: tokens.inputTextColor,
291
307
  fontFamily: tokens.inputFontFamily,
292
308
  fontSize: tokens.inputFontSize,
293
- lineHeight: tokens.inputLineHeight,
309
+ // ⚠️ DO NOT change to an unconditional `lineHeight: tokens.inputLineHeight`.
310
+ // This has regressed twice — read this before "simplifying" it.
311
+ //
312
+ // `inputLineHeight` comes from the Figma token `formField/input/label`
313
+ // ("16/45"), which is a 16px font inside a 45px ROW, i.e. it is the row
314
+ // HEIGHT, not the text leading. The row height is already applied via
315
+ // `inputRowStyle.minHeight` + `alignItems: 'center'`, so the text never
316
+ // needs this value as its own `lineHeight`.
317
+ //
318
+ // Passing a `lineHeight` (45) that is much larger than `fontSize` (16)
319
+ // onto a single-line RNTextInput breaks ONLY iOS: iOS puts ALL the extra
320
+ // vertical space ABOVE the glyphs, so the text/placeholder sinks to the
321
+ // bottom of the box instead of centering. Android and Web distribute the
322
+ // space evenly and look correct. This is a long-standing iOS native
323
+ // font-metrics bug in UITextField — see facebook/react-native#39145 and
324
+ // #28012; the documented workaround is exactly "drop lineHeight on the
325
+ // single-line input and let a wrapper center it". A single-line UITextField
326
+ // with no lineHeight centers its text natively (see react-native#56774).
327
+ //
328
+ // So: omit lineHeight on iOS (native centering via the row), and keep the
329
+ // token value on Android/Web where it already renders correctly.
330
+ ...(_reactNative.Platform.OS === 'ios' ? null : {
331
+ lineHeight: tokens.inputLineHeight
332
+ }),
294
333
  fontWeight: tokens.inputFontWeight,
295
334
  padding: 0,
296
335
  margin: 0,
@@ -327,6 +366,7 @@ function FormField({
327
366
  // -- Accessibility ------------------------------------------------------
328
367
  const resolvedA11yLabel = accessibilityLabel || label || placeholder || 'Form field';
329
368
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
369
+ ref: rootRef,
330
370
  style: [wrapperStyle, style],
331
371
  pointerEvents: isDisabled ? 'none' : 'auto',
332
372
  testID: testID,
@@ -347,6 +387,7 @@ function FormField({
347
387
  importantForAccessibility: "no",
348
388
  children: processedLeading
349
389
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
390
+ ref: mergedInputRef,
350
391
  style: [inputTextStyles, inputTextStyle],
351
392
  value: value ?? '',
352
393
  onChangeText: handleChangeText,
@@ -376,5 +417,5 @@ function FormField({
376
417
  modes: modes
377
418
  })]
378
419
  });
379
- }
420
+ });
380
421
  var _default = exports.default = FormField;
@@ -41,7 +41,7 @@ const toFontWeight = (value, fallback) => {
41
41
  };
42
42
  const getStrokeColor = (style, fallback) => {
43
43
  const flattened = _reactNative.StyleSheet.flatten(style);
44
- return typeof flattened.backgroundColor === 'string' ? flattened.backgroundColor : fallback;
44
+ return flattened && typeof flattened.backgroundColor === 'string' ? flattened.backgroundColor : fallback;
45
45
  };
46
46
  function Gauge({
47
47
  value = 84,
@@ -39,7 +39,8 @@ function HoldingsCard({
39
39
  onPress,
40
40
  modes = _reactUtils.EMPTY_MODES,
41
41
  style,
42
- testID
42
+ testID,
43
+ disableTruncation
43
44
  }) {
44
45
  // ---- Container tokens ----
45
46
  const containerFill = (0, _figmaVariablesResolver.getVariableByName)('holdingsCard/container/fill', modes) || '#fef4e5';
@@ -191,7 +192,7 @@ function HoldingsCard({
191
192
  lineHeight: detailValueLineHeight,
192
193
  fontWeight: detailValueFontWeight
193
194
  },
194
- numberOfLines: 1,
195
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
195
196
  children: item.value
196
197
  })]
197
198
  }, `${rowIndex}-${colIndex}`)), row.length < GRID_COLUMNS && Array.from({
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = InputSearch;
6
+ exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
@@ -54,7 +54,7 @@ function SupportText({
54
54
  })]
55
55
  });
56
56
  }
57
- function InputSearch({
57
+ const InputSearch = /*#__PURE__*/(0, _react.forwardRef)(function InputSearch({
58
58
  supportText = true,
59
59
  supportTextLabel = "Support Text",
60
60
  supportTextIcon = "ic_info",
@@ -69,7 +69,7 @@ function InputSearch({
69
69
  trailing,
70
70
  inputStyle,
71
71
  ...rest
72
- }) {
72
+ }, ref) {
73
73
  const [isFocused, setIsFocused] = (0, _react.useState)(false);
74
74
 
75
75
  // Hardcode InputState based on the state prop, ignoring any external InputState passed in modes
@@ -124,6 +124,7 @@ function InputSearch({
124
124
  gap: formFieldGap
125
125
  }, containerStyle],
126
126
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInput.default, {
127
+ ref: ref,
127
128
  placeholder: placeholder,
128
129
  value: value || '',
129
130
  onChangeText: onChangeText || (() => {}),
@@ -143,4 +144,5 @@ function InputSearch({
143
144
  modes: componentModes
144
145
  })]
145
146
  });
146
- }
147
+ });
148
+ var _default = exports.default = InputSearch;
@@ -88,6 +88,7 @@ function InstitutionBadge({
88
88
  style,
89
89
  labelStyle,
90
90
  accessibilityLabel,
91
+ disableTruncation,
91
92
  ...rest
92
93
  }) {
93
94
  const {
@@ -124,7 +125,7 @@ function InstitutionBadge({
124
125
  })
125
126
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
126
127
  style: [tokens.labelStyle, labelStyle],
127
- numberOfLines: 1,
128
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
128
129
  children: label
129
130
  })]
130
131
  });
@@ -48,6 +48,7 @@ function ListGroup({
48
48
  style,
49
49
  accessibilityLabel,
50
50
  accessibilityHint,
51
+ disableTruncation,
51
52
  ...rest
52
53
  }) {
53
54
  // Resolve container tokens
@@ -100,7 +101,7 @@ function ListGroup({
100
101
  style: [labelStyle, processedSlot && {
101
102
  marginBottom: gap
102
103
  }],
103
- numberOfLines: 1,
104
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
104
105
  accessibilityElementsHidden: true,
105
106
  importantForAccessibility: "no",
106
107
  children: label
@@ -191,6 +191,7 @@ function ListItemImpl({
191
191
  accessibilityHint,
192
192
  accessibilityState,
193
193
  webAccessibilityProps,
194
+ disableTruncation,
194
195
  ...rest
195
196
  }) {
196
197
  const tokens = (0, _react.useMemo)(() => resolveListItemTokens(modes), [modes]);
@@ -245,7 +246,7 @@ function ListItemImpl({
245
246
  const displayText = layout === 'Vertical' ? supportText.replace(/ /g, '\n') : supportText;
246
247
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
247
248
  style: layout === 'Vertical' ? [tokens.supportTextStyle, verticalSupportTextOverride] : tokens.supportTextStyle,
248
- numberOfLines: layout === 'Horizontal' ? 2 : undefined,
249
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, layout === 'Horizontal' ? 2 : undefined),
249
250
  children: displayText
250
251
  });
251
252
  };
@@ -278,7 +279,7 @@ function ListItemImpl({
278
279
  },
279
280
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
280
281
  style: tokens.titleTextStyle,
281
- numberOfLines: 1,
282
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
282
283
  children: title
283
284
  }), showSupportText && renderSupportContent()]
284
285
  }), processedTrailing ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
@@ -14,7 +14,7 @@ var _react = _interopRequireWildcard(require("react"));
14
14
  var _reactNative = require("react-native");
15
15
  var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
16
16
  var _Image = _interopRequireDefault(require("../Image/Image"));
17
- var _GlassFill = _interopRequireDefault(require("./GlassFill"));
17
+ var _GlassFill = _interopRequireDefault(require("../../utils/GlassFill/GlassFill"));
18
18
  var _reactUtils = require("../../utils/react-utils");
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
20
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -198,7 +198,9 @@ function Footer({
198
198
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GlassFill.default, {
199
199
  tint: tint,
200
200
  intensity: intensity,
201
- overlayColor: glassBgColor
201
+ overlayColor: glassBgColor,
202
+ webBlurScale: 0.3,
203
+ webBlurMaxPx: 30
202
204
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
203
205
  style: {
204
206
  flexDirection: 'row',
@@ -27,7 +27,8 @@ function MetricLegendItem({
27
27
  style,
28
28
  indicatorStyle,
29
29
  labelStyle,
30
- valueStyle
30
+ valueStyle,
31
+ disableTruncation
31
32
  }) {
32
33
  const gap = (0, _figmaVariablesResolver.getVariableByName)('metricLegendItem/gap', modes) ?? 4;
33
34
  const textWrapGap = (0, _figmaVariablesResolver.getVariableByName)('metricLegendItem/textWrap/gap', modes) ?? 4;
@@ -92,7 +93,7 @@ function MetricLegendItem({
92
93
  lineHeight: valueLineHeight,
93
94
  fontWeight: valueFontWeight
94
95
  }, valueStyle],
95
- numberOfLines: 1,
96
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
96
97
  children: value
97
98
  })]
98
99
  })]
@@ -81,7 +81,8 @@ function CalendarGlyph({
81
81
  modes: propModes = _reactUtils.EMPTY_MODES,
82
82
  style,
83
83
  labelStyle,
84
- accessibilityLabel
84
+ accessibilityLabel,
85
+ disableTruncation
85
86
  }) {
86
87
  const {
87
88
  modes: globalModes
@@ -126,7 +127,7 @@ function CalendarGlyph({
126
127
  gap
127
128
  }, style],
128
129
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
129
- numberOfLines: 1,
130
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
130
131
  style: [{
131
132
  color: foreground,
132
133
  fontFamily,
@@ -188,7 +189,8 @@ function MonthlyStatusGrid({
188
189
  glyphStyle,
189
190
  labelStyle,
190
191
  legendStyle,
191
- accessibilityLabel
192
+ accessibilityLabel,
193
+ disableTruncation
192
194
  }) {
193
195
  const {
194
196
  modes: globalModes
@@ -245,6 +247,7 @@ function MonthlyStatusGrid({
245
247
  label: label,
246
248
  status: month.status,
247
249
  modes: glyphModes,
250
+ disableTruncation: disableTruncation,
248
251
  ...(glyphStyle !== undefined ? {
249
252
  style: glyphStyle
250
253
  } : {}),
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = NoteInput;
6
+ exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
@@ -14,7 +14,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
14
14
  * NoteInput component representing an interactive "Add note" badge style field.
15
15
  * Allows the user to click, clears the placeholder text, and shows a blinking cursor when focused.
16
16
  */
17
- function NoteInput({
17
+ const NoteInput = /*#__PURE__*/(0, _react.forwardRef)(function NoteInput({
18
18
  value = '',
19
19
  placeholder = 'Add note',
20
20
  onChangeText,
@@ -25,7 +25,7 @@ function NoteInput({
25
25
  onFocus,
26
26
  onBlur,
27
27
  ...rest
28
- }) {
28
+ }, ref) {
29
29
  const [internalFocused, setInternalFocused] = (0, _react.useState)(false);
30
30
  const inputRef = (0, _react.useRef)(null);
31
31
 
@@ -97,7 +97,7 @@ function NoteInput({
97
97
  importantForAccessibility: "no",
98
98
  children: internalFocused ? value || ' ' : value || placeholder
99
99
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
100
- ref: inputRef,
100
+ ref: (0, _reactUtils.mergeRefs)(inputRef, ref),
101
101
  value: value,
102
102
  onChangeText: onChangeText,
103
103
  placeholder: internalFocused ? '' : placeholder,
@@ -117,4 +117,5 @@ function NoteInput({
117
117
  })]
118
118
  })
119
119
  });
120
- }
120
+ });
121
+ var _default = exports.default = NoteInput;