jfs-components 0.1.8 → 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 (238) hide show
  1. package/CHANGELOG.md +16 -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/AreaLineChart/AreaLineChart.js +11 -7
  7. package/lib/commonjs/components/Badge/Badge.js +47 -8
  8. package/lib/commonjs/components/BrandChip/BrandChip.js +3 -3
  9. package/lib/commonjs/components/Button/Button.js +2 -1
  10. package/lib/commonjs/components/CardAdvisory/CardAdvisory.js +2 -1
  11. package/lib/commonjs/components/CardBankAccount/CardBankAccount.js +3 -2
  12. package/lib/commonjs/components/CardCTA/CardCTA.js +197 -27
  13. package/lib/commonjs/components/CardInsight/CardInsight.js +5 -1
  14. package/lib/commonjs/components/CircularProgressBar/CircularProgressBar.js +7 -3
  15. package/lib/commonjs/components/CircularProgressBarDoted/CircularProgressBarDoted.js +3 -2
  16. package/lib/commonjs/components/CircularRating/CircularRating.js +2 -1
  17. package/lib/commonjs/components/ClusterBubble/ClusterBubble.js +3 -2
  18. package/lib/commonjs/components/CompareTable/CompareTable.js +72 -43
  19. package/lib/commonjs/components/CoverageBarComparison/CoverageBarComparison.js +3 -2
  20. package/lib/commonjs/components/DonutChart/DonutChart.js +4 -3
  21. package/lib/commonjs/components/Dropdown/Dropdown.js +3 -2
  22. package/lib/commonjs/components/DropdownInput/DropdownInput.js +3 -2
  23. package/lib/commonjs/components/ExpandableCheckbox/ExpandableCheckbox.js +2 -1
  24. package/lib/commonjs/components/FormField/FormField.js +42 -2
  25. package/lib/commonjs/components/Gauge/Gauge.js +1 -1
  26. package/lib/commonjs/components/HoldingsCard/HoldingsCard.js +3 -2
  27. package/lib/commonjs/components/InstitutionBadge/InstitutionBadge.js +2 -1
  28. package/lib/commonjs/components/ListGroup/ListGroup.js +2 -1
  29. package/lib/commonjs/components/ListItem/ListItem.js +3 -2
  30. package/lib/commonjs/components/MediaCard/MediaCard.js +4 -2
  31. package/lib/commonjs/components/MetricLegendItem/MetricLegendItem.js +3 -2
  32. package/lib/commonjs/components/MonthlyStatusGrid/MonthlyStatusGrid.js +6 -3
  33. package/lib/commonjs/components/PoweredByLabel/PoweredByLabel.js +3 -2
  34. package/lib/commonjs/components/ProductMerchandisingCard/ProductMerchandisingCard.js +107 -33
  35. package/lib/commonjs/components/ProductOverview/ProductOverview.js +4 -3
  36. package/lib/commonjs/components/ProgressBadge/ProgressBadge.js +2 -2
  37. package/lib/commonjs/components/ProjectionMarker/ProjectionMarker.js +3 -2
  38. package/lib/commonjs/components/Section/Section.js +3 -2
  39. package/lib/commonjs/components/Slider/Slider.js +3 -2
  40. package/lib/commonjs/components/Stack/Stack.js +86 -0
  41. package/lib/commonjs/components/SuggestiveSearch/SuggestiveSearch.js +10 -1
  42. package/lib/commonjs/components/SummaryTile/SummaryTile.js +3 -2
  43. package/lib/commonjs/components/Table/Table.js +324 -0
  44. package/lib/commonjs/components/Text/Text.js +2 -1
  45. package/lib/commonjs/components/TextInput/TextInput.js +9 -1
  46. package/lib/commonjs/components/TextSegment/TextSegment.js +2 -1
  47. package/lib/commonjs/components/ThreadHero/ThreadHero.js +4 -5
  48. package/lib/commonjs/components/Title/Title.js +2 -1
  49. package/lib/commonjs/components/Toast/Toast.js +3 -2
  50. package/lib/commonjs/components/TransactionBubble/TransactionBubble.js +2 -1
  51. package/lib/commonjs/components/TransactionStatus/TransactionStatus.js +3 -2
  52. package/lib/commonjs/components/UpiHandle/UpiHandle.js +2 -2
  53. package/lib/commonjs/components/index.js +44 -0
  54. package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
  55. package/lib/commonjs/design-tokens/figma-modes.generated.js +1 -0
  56. package/lib/commonjs/icons/registry.js +1 -1
  57. package/lib/commonjs/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.js +11 -3
  58. package/lib/commonjs/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.js +8 -4
  59. package/lib/commonjs/utils/react-utils.js +56 -0
  60. package/lib/commonjs/utils/web-platform-utils.js +59 -0
  61. package/lib/module/components/Accordion/Accordion.js +3 -2
  62. package/lib/module/components/AccordionCheckbox/AccordionCheckbox.js +5 -4
  63. package/lib/module/components/AccountCard/AccountCard.js +5 -4
  64. package/lib/module/components/AllocationComparisonChart/AllocationComparisonChart.js +10 -7
  65. package/lib/module/components/AreaLineChart/AreaLineChart.js +12 -8
  66. package/lib/module/components/Badge/Badge.js +49 -10
  67. package/lib/module/components/BrandChip/BrandChip.js +4 -4
  68. package/lib/module/components/Button/Button.js +3 -2
  69. package/lib/module/components/CardAdvisory/CardAdvisory.js +3 -2
  70. package/lib/module/components/CardBankAccount/CardBankAccount.js +4 -3
  71. package/lib/module/components/CardCTA/CardCTA.js +198 -28
  72. package/lib/module/components/CardInsight/CardInsight.js +5 -1
  73. package/lib/module/components/CircularProgressBar/CircularProgressBar.js +8 -4
  74. package/lib/module/components/CircularProgressBarDoted/CircularProgressBarDoted.js +4 -3
  75. package/lib/module/components/CircularRating/CircularRating.js +3 -2
  76. package/lib/module/components/ClusterBubble/ClusterBubble.js +4 -3
  77. package/lib/module/components/CompareTable/CompareTable.js +73 -44
  78. package/lib/module/components/CoverageBarComparison/CoverageBarComparison.js +4 -3
  79. package/lib/module/components/DonutChart/DonutChart.js +5 -4
  80. package/lib/module/components/Dropdown/Dropdown.js +4 -3
  81. package/lib/module/components/DropdownInput/DropdownInput.js +4 -3
  82. package/lib/module/components/ExpandableCheckbox/ExpandableCheckbox.js +2 -1
  83. package/lib/module/components/FormField/FormField.js +45 -5
  84. package/lib/module/components/Gauge/Gauge.js +1 -1
  85. package/lib/module/components/HoldingsCard/HoldingsCard.js +4 -3
  86. package/lib/module/components/InstitutionBadge/InstitutionBadge.js +3 -2
  87. package/lib/module/components/ListGroup/ListGroup.js +3 -2
  88. package/lib/module/components/ListItem/ListItem.js +4 -3
  89. package/lib/module/components/MediaCard/MediaCard.js +4 -2
  90. package/lib/module/components/MetricLegendItem/MetricLegendItem.js +4 -3
  91. package/lib/module/components/MonthlyStatusGrid/MonthlyStatusGrid.js +7 -4
  92. package/lib/module/components/PoweredByLabel/PoweredByLabel.js +4 -3
  93. package/lib/module/components/ProductMerchandisingCard/ProductMerchandisingCard.js +109 -35
  94. package/lib/module/components/ProductOverview/ProductOverview.js +5 -4
  95. package/lib/module/components/ProgressBadge/ProgressBadge.js +3 -3
  96. package/lib/module/components/ProjectionMarker/ProjectionMarker.js +4 -3
  97. package/lib/module/components/Section/Section.js +4 -3
  98. package/lib/module/components/Slider/Slider.js +4 -3
  99. package/lib/module/components/Stack/Stack.js +81 -0
  100. package/lib/module/components/SuggestiveSearch/SuggestiveSearch.js +10 -1
  101. package/lib/module/components/SummaryTile/SummaryTile.js +4 -3
  102. package/lib/module/components/Table/Table.js +315 -0
  103. package/lib/module/components/Text/Text.js +3 -2
  104. package/lib/module/components/TextInput/TextInput.js +9 -1
  105. package/lib/module/components/TextSegment/TextSegment.js +3 -2
  106. package/lib/module/components/ThreadHero/ThreadHero.js +5 -6
  107. package/lib/module/components/Title/Title.js +3 -2
  108. package/lib/module/components/Toast/Toast.js +4 -3
  109. package/lib/module/components/TransactionBubble/TransactionBubble.js +3 -2
  110. package/lib/module/components/TransactionStatus/TransactionStatus.js +4 -3
  111. package/lib/module/components/UpiHandle/UpiHandle.js +3 -3
  112. package/lib/module/components/index.js +2 -0
  113. package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
  114. package/lib/module/design-tokens/figma-modes.generated.js +1 -0
  115. package/lib/module/icons/registry.js +1 -1
  116. package/lib/module/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.js +11 -3
  117. package/lib/module/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.js +8 -4
  118. package/lib/module/utils/react-utils.js +54 -0
  119. package/lib/module/utils/web-platform-utils.js +58 -0
  120. package/lib/typescript/src/components/Accordion/Accordion.d.ts +7 -1
  121. package/lib/typescript/src/components/AccordionCheckbox/AccordionCheckbox.d.ts +7 -1
  122. package/lib/typescript/src/components/AccountCard/AccountCard.d.ts +7 -1
  123. package/lib/typescript/src/components/AllocationComparisonChart/AllocationComparisonChart.d.ts +7 -1
  124. package/lib/typescript/src/components/AreaLineChart/AreaLineChart.d.ts +8 -1
  125. package/lib/typescript/src/components/Badge/Badge.d.ts +32 -2
  126. package/lib/typescript/src/components/BrandChip/BrandChip.d.ts +7 -1
  127. package/lib/typescript/src/components/Button/Button.d.ts +7 -1
  128. package/lib/typescript/src/components/CardAdvisory/CardAdvisory.d.ts +7 -1
  129. package/lib/typescript/src/components/CardBankAccount/CardBankAccount.d.ts +7 -1
  130. package/lib/typescript/src/components/CardCTA/CardCTA.d.ts +27 -5
  131. package/lib/typescript/src/components/CircularProgressBar/CircularProgressBar.d.ts +7 -1
  132. package/lib/typescript/src/components/CircularProgressBarDoted/CircularProgressBarDoted.d.ts +7 -1
  133. package/lib/typescript/src/components/CircularRating/CircularRating.d.ts +7 -1
  134. package/lib/typescript/src/components/ClusterBubble/ClusterBubble.d.ts +7 -1
  135. package/lib/typescript/src/components/CompareTable/CompareTable.d.ts +7 -1
  136. package/lib/typescript/src/components/CoverageBarComparison/CoverageBarComparison.d.ts +7 -1
  137. package/lib/typescript/src/components/DonutChart/DonutChart.d.ts +7 -1
  138. package/lib/typescript/src/components/Dropdown/Dropdown.d.ts +7 -1
  139. package/lib/typescript/src/components/DropdownInput/DropdownInput.d.ts +6 -0
  140. package/lib/typescript/src/components/ExpandableCheckbox/ExpandableCheckbox.d.ts +7 -1
  141. package/lib/typescript/src/components/HoldingsCard/HoldingsCard.d.ts +7 -1
  142. package/lib/typescript/src/components/InstitutionBadge/InstitutionBadge.d.ts +7 -1
  143. package/lib/typescript/src/components/ListGroup/ListGroup.d.ts +7 -1
  144. package/lib/typescript/src/components/ListItem/ListItem.d.ts +7 -1
  145. package/lib/typescript/src/components/MetricLegendItem/MetricLegendItem.d.ts +7 -1
  146. package/lib/typescript/src/components/MonthlyStatusGrid/MonthlyStatusGrid.d.ts +14 -2
  147. package/lib/typescript/src/components/PoweredByLabel/PoweredByLabel.d.ts +7 -1
  148. package/lib/typescript/src/components/ProductMerchandisingCard/ProductMerchandisingCard.d.ts +7 -1
  149. package/lib/typescript/src/components/ProductOverview/ProductOverview.d.ts +7 -1
  150. package/lib/typescript/src/components/ProgressBadge/ProgressBadge.d.ts +7 -1
  151. package/lib/typescript/src/components/ProjectionMarker/ProjectionMarker.d.ts +7 -1
  152. package/lib/typescript/src/components/Section/Section.d.ts +7 -1
  153. package/lib/typescript/src/components/Slider/Slider.d.ts +6 -0
  154. package/lib/typescript/src/components/Stack/Stack.d.ts +81 -0
  155. package/lib/typescript/src/components/SummaryTile/SummaryTile.d.ts +7 -1
  156. package/lib/typescript/src/components/Table/Table.d.ts +139 -0
  157. package/lib/typescript/src/components/Text/Text.d.ts +7 -1
  158. package/lib/typescript/src/components/TextSegment/TextSegment.d.ts +7 -1
  159. package/lib/typescript/src/components/ThreadHero/ThreadHero.d.ts +7 -1
  160. package/lib/typescript/src/components/Title/Title.d.ts +7 -1
  161. package/lib/typescript/src/components/Toast/Toast.d.ts +7 -1
  162. package/lib/typescript/src/components/TransactionBubble/TransactionBubble.d.ts +7 -1
  163. package/lib/typescript/src/components/TransactionStatus/TransactionStatus.d.ts +7 -1
  164. package/lib/typescript/src/components/UpiHandle/UpiHandle.d.ts +7 -1
  165. package/lib/typescript/src/components/index.d.ts +4 -2
  166. package/lib/typescript/src/icons/registry.d.ts +1 -1
  167. package/lib/typescript/src/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.d.ts +31 -3
  168. package/lib/typescript/src/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.d.ts +18 -2
  169. package/lib/typescript/src/utils/react-utils.d.ts +37 -0
  170. package/lib/typescript/src/utils/web-platform-utils.d.ts +36 -0
  171. package/package.json +1 -1
  172. package/src/components/Accordion/Accordion.tsx +9 -2
  173. package/src/components/AccordionCheckbox/AccordionCheckbox.tsx +10 -3
  174. package/src/components/AccountCard/AccountCard.tsx +10 -3
  175. package/src/components/AllocationComparisonChart/AllocationComparisonChart.tsx +14 -4
  176. package/src/components/AreaLineChart/AreaLineChart.tsx +15 -5
  177. package/src/components/Badge/Badge.tsx +78 -8
  178. package/src/components/BrandChip/BrandChip.tsx +9 -3
  179. package/src/components/Button/Button.tsx +9 -2
  180. package/src/components/CardAdvisory/CardAdvisory.tsx +9 -2
  181. package/src/components/CardBankAccount/CardBankAccount.tsx +9 -2
  182. package/src/components/CardCTA/CardCTA.tsx +214 -41
  183. package/src/components/CardInsight/CardInsight.tsx +7 -1
  184. package/src/components/CircularProgressBar/CircularProgressBar.tsx +14 -4
  185. package/src/components/CircularProgressBarDoted/CircularProgressBarDoted.tsx +10 -3
  186. package/src/components/CircularRating/CircularRating.tsx +9 -2
  187. package/src/components/ClusterBubble/ClusterBubble.tsx +9 -2
  188. package/src/components/CompareTable/CompareTable.tsx +98 -50
  189. package/src/components/CoverageBarComparison/CoverageBarComparison.tsx +9 -2
  190. package/src/components/DonutChart/DonutChart.tsx +10 -3
  191. package/src/components/Dropdown/Dropdown.tsx +9 -2
  192. package/src/components/DropdownInput/DropdownInput.tsx +9 -2
  193. package/src/components/ExpandableCheckbox/ExpandableCheckbox.tsx +8 -1
  194. package/src/components/FormField/FormField.tsx +49 -4
  195. package/src/components/Gauge/Gauge.tsx +1 -1
  196. package/src/components/HoldingsCard/HoldingsCard.tsx +9 -2
  197. package/src/components/InstitutionBadge/InstitutionBadge.tsx +9 -2
  198. package/src/components/ListGroup/ListGroup.tsx +9 -2
  199. package/src/components/ListItem/ListItem.tsx +10 -3
  200. package/src/components/MediaCard/MediaCard.tsx +2 -2
  201. package/src/components/MetricLegendItem/MetricLegendItem.tsx +9 -2
  202. package/src/components/MonthlyStatusGrid/MonthlyStatusGrid.tsx +17 -2
  203. package/src/components/PoweredByLabel/PoweredByLabel.tsx +9 -2
  204. package/src/components/ProductMerchandisingCard/ProductMerchandisingCard.tsx +104 -37
  205. package/src/components/ProductOverview/ProductOverview.tsx +10 -3
  206. package/src/components/ProgressBadge/ProgressBadge.tsx +9 -3
  207. package/src/components/ProjectionMarker/ProjectionMarker.tsx +9 -2
  208. package/src/components/Section/Section.tsx +10 -3
  209. package/src/components/Slider/Slider.tsx +9 -2
  210. package/src/components/Stack/Stack.tsx +131 -0
  211. package/src/components/SuggestiveSearch/SuggestiveSearch.tsx +10 -1
  212. package/src/components/SummaryTile/SummaryTile.tsx +9 -2
  213. package/src/components/Table/Table.tsx +449 -0
  214. package/src/components/Text/Text.tsx +9 -2
  215. package/src/components/TextInput/TextInput.tsx +7 -1
  216. package/src/components/TextSegment/TextSegment.tsx +9 -2
  217. package/src/components/ThreadHero/ThreadHero.tsx +10 -3
  218. package/src/components/Title/Title.tsx +9 -2
  219. package/src/components/Toast/Toast.tsx +9 -2
  220. package/src/components/TransactionBubble/TransactionBubble.tsx +9 -2
  221. package/src/components/TransactionStatus/TransactionStatus.tsx +9 -2
  222. package/src/components/UpiHandle/UpiHandle.tsx +9 -3
  223. package/src/components/index.ts +23 -2
  224. package/src/design-tokens/Coin Variables-variables-full.json +1 -1
  225. package/src/design-tokens/figma-modes.generated.ts +1 -0
  226. package/src/icons/registry.ts +1 -1
  227. package/src/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.tsx +32 -3
  228. package/src/{components/ProductMerchandisingCard → utils/GlassFill}/GlassFill.web.tsx +25 -4
  229. package/src/utils/react-utils.ts +61 -0
  230. package/src/utils/web-platform-utils.ts +68 -0
  231. package/lib/commonjs/components/MediaCard/GlassFill.js +0 -62
  232. package/lib/commonjs/components/MediaCard/GlassFill.web.js +0 -48
  233. package/lib/module/components/MediaCard/GlassFill.js +0 -57
  234. package/lib/module/components/MediaCard/GlassFill.web.js +0 -43
  235. package/lib/typescript/src/components/MediaCard/GlassFill.d.ts +0 -47
  236. package/lib/typescript/src/components/MediaCard/GlassFill.web.d.ts +0 -20
  237. package/src/components/MediaCard/GlassFill.tsx +0 -89
  238. package/src/components/MediaCard/GlassFill.web.tsx +0 -53
package/CHANGELOG.md CHANGED
@@ -4,6 +4,22 @@ All notable changes to this project are documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
+ ## [0.1.12] - 2026-06-22
8
+
9
+ - Added `Stack` — token-driven vertical/horizontal layout container with `equalHeight` / `fullWidth` stretch enforcement, mode cascade to children, and `injectChildStyle` for cross-axis alignment that children cannot override.
10
+ - Added `Table` — compound data table (`TableHeader`, `TableHeaderCell`, `TableBody`, `TableRow`, `TableCell`) with token-driven header/body styling and horizontal scroll support.
11
+ - `CardCTA` — new `sip` variant (avatar-led card with headline / description / subtitle footer); accepts PascalCase Figma variant names (`CTA` / `Rating` / `Sip`) via `CardCTATypeInput`; body typography defaults aligned to Figma.
12
+ - `Badge` — new `glass` type (frosted pill via shared `GlassFill`); optional `leading` slot; `glassOverlayColor` / `glassIntensity` overrides; exported `BadgeProps` and `BadgeType`.
13
+ - `CompareTable` — feature rows now render through the shared `Table` primitive; selection cards pick up `selectionCard/radius`; `disableTruncation` support.
14
+ - `ProductMerchandisingCard` — footer special badge now uses `<Badge type="glass">`; progressive footer blur via `MaskedView` + gradient mask on native; `disableTruncation` support.
15
+ - `GlassFill` — consolidated into shared `src/utils/GlassFill/` (native blur + web `backdrop-filter`); removed per-component copies under `MediaCard` and `ProductMerchandisingCard`.
16
+ - `FormField` — iOS single-line input no longer applies row-height token as `lineHeight` (fixes vertically sunk text on iOS); web blur-on-outside-press via `useWebOutsidePress` so fields exit Active state when tapping buttons/links outside.
17
+ - Shared utilities — `injectChildStyle`, `resolveTruncation`, and `useWebOutsidePress` in `react-utils` / `web-platform-utils`.
18
+ - `disableTruncation` — opt-out of ellipsis / `numberOfLines` clamps rolled out across interactive and data-display components (e.g. `ListItem`, `Button`, `CompareTable`, charts, form controls).
19
+ - Figma/token sync pass; refreshed `.token-metadata.json`, `figma-modes.generated.ts`, icons registry, and Coin Variables tokens.
20
+
21
+ ---
22
+
7
23
  ## [0.1.8] - 2026-06-12
8
24
 
9
25
  - Added `BenefitCard` — header highlight + body benefit rows with icon/title/trailing value and optional CTA.
@@ -67,6 +67,7 @@ function Accordion({
67
67
  accessibilityHint,
68
68
  accessibilityState,
69
69
  webAccessibilityProps,
70
+ disableTruncation,
70
71
  ...rest
71
72
  }) {
72
73
  const [internalExpanded, setInternalExpanded] = (0, _react.useState)(defaultExpanded);
@@ -166,7 +167,7 @@ function Accordion({
166
167
  ...webProps,
167
168
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
168
169
  style: titleStyle,
169
- numberOfLines: 1,
170
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
170
171
  children: title
171
172
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
172
173
  name: isExpanded ? 'ic_minus' : 'ic_add',
@@ -64,7 +64,8 @@ function AccordionCheckbox({
64
64
  children,
65
65
  modes = _reactUtils.EMPTY_MODES,
66
66
  style,
67
- accessibilityLabel
67
+ accessibilityLabel,
68
+ disableTruncation
68
69
  }) {
69
70
  const isExpandedControlled = controlledExpanded !== undefined;
70
71
  const [internalExpanded, setInternalExpanded] = (0, _react.useState)(defaultExpanded);
@@ -209,12 +210,12 @@ function AccordionCheckbox({
209
210
  style: textWrapStyle,
210
211
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
211
212
  style: titleStyle,
212
- numberOfLines: 1,
213
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
213
214
  selectable: false,
214
215
  children: title
215
216
  }), subtitle ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
216
217
  style: subtitleStyle,
217
- numberOfLines: 1,
218
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
218
219
  selectable: false,
219
220
  children: subtitle
220
221
  }) : null]
@@ -78,7 +78,8 @@ function AccountCard({
78
78
  modes = _reactUtils.EMPTY_MODES,
79
79
  style,
80
80
  accessibilityLabel,
81
- accessibilityHint
81
+ accessibilityHint,
82
+ disableTruncation
82
83
  }) {
83
84
  const iconModes = (0, _react.useMemo)(() => modes === _reactUtils.EMPTY_MODES ? ADD_ICON_DEFAULT_MODES : {
84
85
  ...ADD_ICON_DEFAULT_MODES,
@@ -211,11 +212,11 @@ function AccountCard({
211
212
  },
212
213
  children: [title != null && title !== '' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
213
214
  style: titleStyle,
214
- numberOfLines: 1,
215
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
215
216
  children: title
216
217
  }) : null, showSubtitle ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
217
218
  style: subtitleStyle,
218
- numberOfLines: 1,
219
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
219
220
  children: subtitle
220
221
  }) : null]
221
222
  }) : null]
@@ -67,7 +67,8 @@ function SegmentBar({
67
67
  baselineHeightPx,
68
68
  baselineLabel,
69
69
  showMarker,
70
- theme
70
+ theme,
71
+ disableTruncation
71
72
  }) {
72
73
  const {
73
74
  barWidth,
@@ -94,7 +95,7 @@ function SegmentBar({
94
95
  },
95
96
  accessibilityLabel: segment.accessibilityLabel,
96
97
  children: [showValueLabel ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
97
- numberOfLines: 1,
98
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
98
99
  style: labelStyle,
99
100
  children: segment.valueLabel
100
101
  }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
@@ -140,7 +141,7 @@ function SegmentBar({
140
141
  strokeDasharray: "2 2"
141
142
  })
142
143
  }), isShown(baselineLabel) ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
143
- numberOfLines: 1,
144
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
144
145
  style: [labelStyle, {
145
146
  marginLeft: 6
146
147
  }],
@@ -149,7 +150,7 @@ function SegmentBar({
149
150
  }) : null]
150
151
  }) : null
151
152
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
152
- numberOfLines: 1,
153
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
153
154
  style: labelStyle,
154
155
  children: segment.label
155
156
  })]
@@ -186,7 +187,8 @@ function AllocationComparisonChart({
186
187
  style,
187
188
  chartStyle,
188
189
  legendStyle,
189
- accessibilityLabel
190
+ accessibilityLabel,
191
+ disableTruncation
190
192
  }) {
191
193
  const {
192
194
  modes: globalModes
@@ -290,7 +292,8 @@ function AllocationComparisonChart({
290
292
  baselineHeightPx: baselineHeightPx,
291
293
  baselineLabel: baselineLabel,
292
294
  showMarker: showMarker,
293
- theme: theme
295
+ theme: theme,
296
+ disableTruncation: disableTruncation
294
297
  }, segment.key ?? `segment-${index}`);
295
298
  })
296
299
  })]
@@ -123,7 +123,8 @@ function AreaLineChart({
123
123
  modes: propModes = _reactUtils.EMPTY_MODES,
124
124
  style,
125
125
  children,
126
- accessibilityLabel
126
+ accessibilityLabel,
127
+ disableTruncation
127
128
  }) {
128
129
  const {
129
130
  modes: globalModes
@@ -243,8 +244,9 @@ function AreaLineChart({
243
244
  formatX,
244
245
  formatY,
245
246
  showDots,
246
- modes
247
- }), [plotWidth, height, inset, xScale, yScale, yTicks, indexXs, count, resolvedSeries, curve, activeIndex, setActiveIndex, xLabels, formatX, formatY, showDots, modes]);
247
+ modes,
248
+ disableTruncation
249
+ }), [plotWidth, height, inset, xScale, yScale, yTicks, indexXs, count, resolvedSeries, curve, activeIndex, setActiveIndex, xLabels, formatX, formatY, showDots, modes, disableTruncation]);
248
250
  const isMultiSeries = resolvedSeries.length > 1;
249
251
  const resolvedFormatValue = formatValue ?? (v => formatY(v));
250
252
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartContext.Provider, {
@@ -385,7 +387,8 @@ function ChartYAxis({
385
387
  yScale,
386
388
  yTicks,
387
389
  formatY,
388
- modes
390
+ modes,
391
+ disableTruncation
389
392
  } = useChart();
390
393
  const typo = useAxisTypography(modes);
391
394
  const format = formatLabel ?? formatY;
@@ -413,7 +416,7 @@ function ChartYAxis({
413
416
  },
414
417
  children: showLabels ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
415
418
  style: typo.style,
416
- numberOfLines: 1,
419
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
417
420
  children: format(t)
418
421
  }) : null
419
422
  }, `yl-${t}`);
@@ -464,7 +467,8 @@ function ChartXAxis({
464
467
  formatX,
465
468
  modes,
466
469
  activeIndex,
467
- setActiveIndex
470
+ setActiveIndex,
471
+ disableTruncation
468
472
  } = useChart();
469
473
  const typo = useAxisTypography(modes);
470
474
  const format = formatLabel ?? formatX;
@@ -510,7 +514,7 @@ function ChartXAxis({
510
514
  color: activeColor,
511
515
  fontWeight: '700'
512
516
  } : null],
513
- numberOfLines: 1,
517
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
514
518
  children: format(label, i)
515
519
  });
516
520
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
@@ -10,21 +10,34 @@ var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resol
10
10
  var _reactUtils = require("../../utils/react-utils");
11
11
  var _Skeleton = _interopRequireDefault(require("../../skeleton/Skeleton"));
12
12
  var _SkeletonGroup = require("../../skeleton/SkeletonGroup");
13
+ var _GlassFill = _interopRequireDefault(require("../../utils/GlassFill/GlassFill"));
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
16
  function Badge({
16
17
  label = 'Label',
18
+ type = 'default',
17
19
  modes = _reactUtils.EMPTY_MODES,
18
20
  onPress,
19
21
  accessibilityLabel,
20
22
  style,
21
23
  labelStyle,
22
24
  loading,
25
+ disableTruncation,
26
+ leading,
27
+ glassOverlayColor,
28
+ glassIntensity,
23
29
  ...rest
24
30
  }) {
25
- // Resolve token values (fall back to sensible defaults)
31
+ const isGlass = type === 'glass';
32
+ const hasLeading = leading != null;
33
+
34
+ // Resolve token values (fall back to sensible defaults). The glass type
35
+ // swaps the solid fill for a translucent overlay + white label, matching the
36
+ // Figma `badge/glass/*` tokens.
26
37
  const backgroundColor = (0, _figmaVariablesResolver.getVariableByName)('badge/color/background', modes) || '#d8effe';
27
- const labelColor = (0, _figmaVariablesResolver.getVariableByName)('badge/color/label', modes) || '#000000';
38
+ const glassBackground = (0, _figmaVariablesResolver.getVariableByName)('badge/glass/color/background', modes) || '#ffffff26';
39
+ const glassLabelColor = (0, _figmaVariablesResolver.getVariableByName)('badge/glass/color/label', modes) || '#ffffff';
40
+ const labelColor = isGlass ? glassLabelColor : (0, _figmaVariablesResolver.getVariableByName)('badge/color/label', modes) || '#000000';
28
41
  const fontSize = Number((0, _figmaVariablesResolver.getVariableByName)('badge/label/fontSize', modes)) || 12;
29
42
  const fontFamily = (0, _figmaVariablesResolver.getVariableByName)('badge/fontFamily', modes) || undefined;
30
43
  const fontWeight = (0, _figmaVariablesResolver.getVariableByName)('badge/label/fontWeight', modes) || '600';
@@ -32,6 +45,9 @@ function Badge({
32
45
  const paddingVertical = Number((0, _figmaVariablesResolver.getVariableByName)('badge/padding/vertical', modes)) || 4;
33
46
  const borderRadius = Number((0, _figmaVariablesResolver.getVariableByName)('badge/radius', modes)) || 4;
34
47
  const lineHeight = Number((0, _figmaVariablesResolver.getVariableByName)('badge/label/lineHeight', modes)) || Math.round(fontSize * 1.2);
48
+ // Figma `blur/minimal` (px radius) -> GlassFill's 0–100 intensity scale, the
49
+ // same 1:1 mapping the merchandising card footer uses.
50
+ const blurIntensity = Math.max(0, Math.min(100, Math.round(Number((0, _figmaVariablesResolver.getVariableByName)('blur/minimal', modes)) || 29)));
35
51
 
36
52
  // Skeleton short-circuit. Size derived from the same tokens the loaded
37
53
  // badge would use so the placeholder occupies the same box.
@@ -54,13 +70,25 @@ function Badge({
54
70
  }
55
71
  const Container = onPress ? _reactNative.Pressable : _reactNative.View;
56
72
  const containerStyle = {
57
- backgroundColor,
73
+ // Glass keeps the container transparent so the GlassFill blur shows through;
74
+ // `overflow: 'hidden'` clips the native blur view to the rounded pill (the
75
+ // blur view does not honor borderRadius itself).
76
+ backgroundColor: isGlass ? 'transparent' : backgroundColor,
58
77
  paddingHorizontal,
59
78
  paddingVertical,
60
79
  borderRadius,
61
80
  alignSelf: 'flex-start',
62
81
  alignItems: 'center',
63
82
  justifyContent: 'center',
83
+ // A leading node sits in-line before the label, so switch to a row with a
84
+ // small gap. Consumer `style` (spread last) can still override either.
85
+ ...(hasLeading ? {
86
+ flexDirection: 'row',
87
+ gap: 4
88
+ } : null),
89
+ ...(isGlass ? {
90
+ overflow: 'hidden'
91
+ } : null),
64
92
  ...(style || {})
65
93
  };
66
94
  const textStyle = {
@@ -73,19 +101,30 @@ function Badge({
73
101
  ...(labelStyle || {})
74
102
  };
75
103
  const defaultAccessibilityLabel = accessibilityLabel || label;
76
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, {
104
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Container, {
77
105
  style: containerStyle,
78
106
  accessibilityRole: onPress ? 'button' : 'text',
79
107
  accessibilityLabel: undefined,
80
108
  onPress: onPress,
81
109
  ...rest,
82
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
110
+ children: [isGlass ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_GlassFill.default, {
111
+ tint: "light",
112
+ intensity: glassIntensity ?? blurIntensity,
113
+ overlayColor: glassOverlayColor ?? glassBackground,
114
+ androidTintWash: false
115
+ }) : null, hasLeading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
116
+ style: LEADING_WRAP,
117
+ children: leading
118
+ }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
83
119
  style: textStyle,
84
- numberOfLines: 1,
85
- ellipsizeMode: "tail",
120
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1, 'tail'),
86
121
  accessibilityElementsHidden: false,
87
122
  children: label
88
- })
123
+ })]
89
124
  });
90
125
  }
126
+ const LEADING_WRAP = {
127
+ justifyContent: 'center',
128
+ alignItems: 'center'
129
+ };
91
130
  var _default = exports.default = Badge;
@@ -95,7 +95,8 @@ function BrandChip({
95
95
  modes: propModes = _reactUtils.EMPTY_MODES,
96
96
  style,
97
97
  labelStyle,
98
- accessibilityLabel
98
+ accessibilityLabel,
99
+ disableTruncation
99
100
  }) {
100
101
  const {
101
102
  modes: globalModes
@@ -126,8 +127,7 @@ function BrandChip({
126
127
  const content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
127
128
  children: [avatarNode, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
128
129
  style: [tokens.labelStyle, labelStyle],
129
- numberOfLines: 1,
130
- ellipsizeMode: "tail",
130
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1, 'tail'),
131
131
  children: label
132
132
  })]
133
133
  });
@@ -176,6 +176,7 @@ function ButtonImpl({
176
176
  accessibilityState,
177
177
  webAccessibilityProps,
178
178
  loading,
179
+ disableTruncation,
179
180
  ...rest
180
181
  }) {
181
182
  // Hover state is web-only in practice; the setter is gated so native taps
@@ -220,7 +221,7 @@ function ButtonImpl({
220
221
  } else {
221
222
  content = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
222
223
  style: activeLabelStyle,
223
- numberOfLines: 1,
224
+ ...(0, _reactUtils.resolveTruncation)(disableTruncation, 1),
224
225
  children: label
225
226
  });
226
227
  }
@@ -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}`))