jfs-components 0.1.2 → 0.1.8

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 (107) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/lib/commonjs/components/AmountInput/AmountInput.js +8 -5
  3. package/lib/commonjs/components/BenefitCard/BenefitCard.js +231 -0
  4. package/lib/commonjs/components/CcCard/CcCard.js +470 -0
  5. package/lib/commonjs/components/Checkbox/Checkbox.js +4 -3
  6. package/lib/commonjs/components/CheckboxItem/CheckboxItem.js +4 -3
  7. package/lib/commonjs/components/CompareTable/CompareTable.js +372 -0
  8. package/lib/commonjs/components/ComparisonBar/ComparisonBar.js +266 -0
  9. package/lib/commonjs/components/DropdownInput/DropdownInput.js +35 -3
  10. package/lib/commonjs/components/FormField/FormField.js +4 -3
  11. package/lib/commonjs/components/InputSearch/InputSearch.js +6 -4
  12. package/lib/commonjs/components/NoteInput/NoteInput.js +6 -5
  13. package/lib/commonjs/components/PdpCcCard/PdpCcCard.js +273 -0
  14. package/lib/commonjs/components/ProductMerchandisingCard/GlassFill.js +263 -0
  15. package/lib/commonjs/components/ProductMerchandisingCard/GlassFill.web.js +116 -0
  16. package/lib/commonjs/components/ProductMerchandisingCard/ProductMerchandisingCard.js +353 -0
  17. package/lib/commonjs/components/ProjectionMarker/ProjectionMarker.js +161 -0
  18. package/lib/commonjs/components/Radio/Radio.js +5 -5
  19. package/lib/commonjs/components/Slider/Slider.js +473 -0
  20. package/lib/commonjs/components/TextInput/TextInput.js +13 -8
  21. package/lib/commonjs/components/TextSegment/TextSegment.js +118 -0
  22. package/lib/commonjs/components/index.js +63 -0
  23. package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
  24. package/lib/commonjs/design-tokens/figma-modes.generated.js +38 -9
  25. package/lib/commonjs/icons/registry.js +1 -1
  26. package/lib/commonjs/utils/react-utils.js +22 -0
  27. package/lib/module/components/AmountInput/AmountInput.js +6 -4
  28. package/lib/module/components/BenefitCard/BenefitCard.js +225 -0
  29. package/lib/module/components/CcCard/CcCard.js +464 -0
  30. package/lib/module/components/Checkbox/Checkbox.js +5 -4
  31. package/lib/module/components/CheckboxItem/CheckboxItem.js +5 -4
  32. package/lib/module/components/CompareTable/CompareTable.js +367 -0
  33. package/lib/module/components/ComparisonBar/ComparisonBar.js +260 -0
  34. package/lib/module/components/DropdownInput/DropdownInput.js +36 -4
  35. package/lib/module/components/FormField/FormField.js +5 -4
  36. package/lib/module/components/InputSearch/InputSearch.js +6 -4
  37. package/lib/module/components/NoteInput/NoteInput.js +7 -6
  38. package/lib/module/components/PdpCcCard/PdpCcCard.js +267 -0
  39. package/lib/module/components/ProductMerchandisingCard/GlassFill.js +257 -0
  40. package/lib/module/components/ProductMerchandisingCard/GlassFill.web.js +111 -0
  41. package/lib/module/components/ProductMerchandisingCard/ProductMerchandisingCard.js +347 -0
  42. package/lib/module/components/ProjectionMarker/ProjectionMarker.js +156 -0
  43. package/lib/module/components/Radio/Radio.js +5 -4
  44. package/lib/module/components/Slider/Slider.js +468 -0
  45. package/lib/module/components/TextInput/TextInput.js +15 -10
  46. package/lib/module/components/TextSegment/TextSegment.js +113 -0
  47. package/lib/module/components/index.js +9 -0
  48. package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
  49. package/lib/module/design-tokens/figma-modes.generated.js +38 -9
  50. package/lib/module/icons/registry.js +1 -1
  51. package/lib/module/utils/react-utils.js +21 -0
  52. package/lib/typescript/src/components/AmountInput/AmountInput.d.ts +3 -2
  53. package/lib/typescript/src/components/BenefitCard/BenefitCard.d.ts +93 -0
  54. package/lib/typescript/src/components/CcCard/CcCard.d.ts +137 -0
  55. package/lib/typescript/src/components/Checkbox/Checkbox.d.ts +3 -2
  56. package/lib/typescript/src/components/CheckboxItem/CheckboxItem.d.ts +2 -2
  57. package/lib/typescript/src/components/CompareTable/CompareTable.d.ts +88 -0
  58. package/lib/typescript/src/components/ComparisonBar/ComparisonBar.d.ts +118 -0
  59. package/lib/typescript/src/components/DropdownInput/DropdownInput.d.ts +20 -1
  60. package/lib/typescript/src/components/FormField/FormField.d.ts +2 -2
  61. package/lib/typescript/src/components/InputSearch/InputSearch.d.ts +23 -2
  62. package/lib/typescript/src/components/NoteInput/NoteInput.d.ts +19 -2
  63. package/lib/typescript/src/components/PdpCcCard/PdpCcCard.d.ts +84 -0
  64. package/lib/typescript/src/components/ProductMerchandisingCard/GlassFill.d.ts +56 -0
  65. package/lib/typescript/src/components/ProductMerchandisingCard/GlassFill.web.d.ts +27 -0
  66. package/lib/typescript/src/components/ProductMerchandisingCard/ProductMerchandisingCard.d.ts +81 -0
  67. package/lib/typescript/src/components/ProjectionMarker/ProjectionMarker.d.ts +82 -0
  68. package/lib/typescript/src/components/Radio/Radio.d.ts +3 -2
  69. package/lib/typescript/src/components/RadioButton/RadioButton.d.ts +2 -2
  70. package/lib/typescript/src/components/Slider/Slider.d.ts +99 -0
  71. package/lib/typescript/src/components/TextInput/TextInput.d.ts +9 -29
  72. package/lib/typescript/src/components/TextSegment/TextSegment.d.ts +100 -0
  73. package/lib/typescript/src/components/index.d.ts +10 -1
  74. package/lib/typescript/src/design-tokens/figma-modes.generated.d.ts +22 -2
  75. package/lib/typescript/src/icons/registry.d.ts +1 -1
  76. package/lib/typescript/src/utils/react-utils.d.ts +10 -0
  77. package/package.json +2 -1
  78. package/src/components/AmountInput/AmountInput.tsx +7 -5
  79. package/src/components/BenefitCard/BenefitCard.tsx +309 -0
  80. package/src/components/CcCard/CcCard.tsx +598 -0
  81. package/src/components/Checkbox/Checkbox.tsx +5 -4
  82. package/src/components/CheckboxItem/CheckboxItem.tsx +5 -4
  83. package/src/components/CompareTable/CompareTable.tsx +477 -0
  84. package/src/components/ComparisonBar/ComparisonBar.tsx +356 -0
  85. package/src/components/DropdownInput/DropdownInput.tsx +55 -3
  86. package/src/components/FormField/FormField.tsx +5 -4
  87. package/src/components/InputSearch/InputSearch.tsx +8 -5
  88. package/src/components/NoteInput/NoteInput.tsx +8 -6
  89. package/src/components/PdpCcCard/PdpCcCard.tsx +356 -0
  90. package/src/components/ProductMerchandisingCard/GlassFill.tsx +276 -0
  91. package/src/components/ProductMerchandisingCard/GlassFill.web.tsx +127 -0
  92. package/src/components/ProductMerchandisingCard/ProductMerchandisingCard.tsx +423 -0
  93. package/src/components/ProjectionMarker/ProjectionMarker.tsx +277 -0
  94. package/src/components/Radio/Radio.tsx +5 -4
  95. package/src/components/Slider/Slider.tsx +628 -0
  96. package/src/components/TextInput/TextInput.tsx +15 -11
  97. package/src/components/TextSegment/TextSegment.tsx +166 -0
  98. package/src/components/index.ts +10 -1
  99. package/src/design-tokens/Coin Variables-variables-full.json +1 -1
  100. package/src/design-tokens/figma-modes.generated.ts +38 -9
  101. package/src/icons/registry.ts +1 -1
  102. package/src/utils/react-utils.ts +23 -0
  103. package/lib/typescript/scripts/extract-component-tokens.d.ts +0 -9
  104. package/lib/typescript/scripts/generate-component-docs.d.ts +0 -9
  105. package/lib/typescript/scripts/generate-icon-registry.d.ts +0 -3
  106. package/lib/typescript/scripts/generate-mode-types.d.ts +0 -2
  107. package/lib/typescript/scripts/retype-modes.d.cts +0 -2
package/CHANGELOG.md CHANGED
@@ -4,6 +4,35 @@ 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.8] - 2026-06-12
8
+
9
+ - Added `BenefitCard` — header highlight + body benefit rows with icon/title/trailing value and optional CTA.
10
+ - Added `CcCard` — credit-card merchandising card with badge row, media, benefit list, footer CTA, and `compact` variant.
11
+ - Added `CompareTable` — accordion-style product comparison table with selection-card columns and feature rows.
12
+ - Added `ComparisonBar` — controlled add/remove image slots with a trailing Compare action.
13
+ - Added `PdpCcCard` — PDP credit-card hero with media, title, metrics row, and footer CTA.
14
+ - Added `ProductMerchandisingCard` — full-bleed media card with glass footer, avatar, badge, and CTA (`GlassFill` platform split for native blur / web `backdrop-filter`).
15
+ - Added `ProjectionMarker` — investment projection timeline with start/end values and a center duration/rate badge.
16
+ - Added `Slider` — token-driven range slider with SVG track, step snapping, and imperative ref API (`getValue` / `setValue` / `increment` / `decrement`).
17
+ - Added `TextSegment` — token-driven multi-colour inline text via `segments` or compositional `Text` children.
18
+ - `DropdownInput` — imperative ref API (`open` / `close` / `toggle` / `focus` / `blur` / `measureInWindow`).
19
+ - Form inputs — refs forwarded through `Checkbox`, `CheckboxItem`, `Radio`, `TextInput`, `InputSearch`, `NoteInput`, `AmountInput`, and `FormField`.
20
+ - Figma/token sync pass; refreshed `.token-metadata.json`, `figma-modes.generated.ts`, icons registry, and Coin Variables tokens.
21
+ - Added `npm run tokens` script (`scripts/figma-token-explorer.js`); `tsconfig.build.json` now excludes `scripts/`.
22
+
23
+ ---
24
+
25
+ ## [0.1.2] - 2026-06-10
26
+
27
+ - Added `Overlay` — full-screen scrim with optional dismiss-on-press and `contentPlacement` (`center` / `top` / `bottom` / `stretch`).
28
+ - `Drawer` — optional `showOverlay` + `onOverlayPress` scrim behind the sheet.
29
+ - `Image` — new `resizeMethod` prop for sharper high-res bitmap rendering.
30
+ - `FullscreenModal` — defers hero media render until modal width is measured.
31
+ - `DropdownInput` — popup animation set to `none`.
32
+ - `LottiePlayer` — fixed native module resolution (static `require` so Metro resolves when the peer is installed).
33
+
34
+ ---
35
+
7
36
  ## [0.1.1] - 2026-06-10
8
37
 
9
38
  - Design tokens — the `modes` prop is now strongly typed end to end. A generated `Modes` type gives autocomplete and validation for both collection-name keys and mode-name values across every component, while staying fully backward compatible (opt-in `StrictModes` turns typos into compile errors). `FIGMA_MODES`, `CollectionName`, and `ModeOf` are exported from the package.
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = AmountInput;
7
- var _react = _interopRequireDefault(require("react"));
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
10
10
  var _JFSThemeProvider = require("../../design-tokens/JFSThemeProvider");
@@ -13,17 +13,18 @@ var _NoteInput = _interopRequireDefault(require("../NoteInput/NoteInput"));
13
13
  var _reactUtils = require("../../utils/react-utils");
14
14
  var _jsxRuntime = require("react/jsx-runtime");
15
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
16
17
  /**
17
18
  * AmountInput component that combines MoneyValue and NoteInput from Figma design.
18
19
  *
19
20
  * @component
20
21
  */
21
- function AmountInput({
22
+ const AmountInput = /*#__PURE__*/(0, _react.forwardRef)(function AmountInput({
22
23
  moneyValueSlot,
23
24
  noteInputSlot,
24
25
  modes: propModes = _reactUtils.EMPTY_MODES,
25
26
  style
26
- }) {
27
+ }, ref) {
27
28
  const {
28
29
  modes: globalModes
29
30
  } = (0, _JFSThemeProvider.useTokens)();
@@ -77,7 +78,9 @@ function AmountInput({
77
78
  return noteInputSlot;
78
79
  };
79
80
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
81
+ ref: ref,
80
82
  style: containerStyle,
81
83
  children: [renderMoneyValueSlot(), renderNoteInputSlot()]
82
84
  });
83
- }
85
+ });
86
+ var _default = exports.default = AmountInput;
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
10
+ var _reactUtils = require("../../utils/react-utils");
11
+ var _Icon = _interopRequireDefault(require("../Icon/Icon"));
12
+ var _Text = _interopRequireDefault(require("../Text/Text"));
13
+ var _ListItem = _interopRequireDefault(require("../ListItem/ListItem"));
14
+ var _Divider = _interopRequireDefault(require("../Divider/Divider"));
15
+ var _Button = _interopRequireDefault(require("../Button/Button"));
16
+ var _jsxRuntime = require("react/jsx-runtime");
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
19
+ /**
20
+ * A single benefit row rendered with the shared `ListItem` primitive: a
21
+ * leading icon, a title and an optional right-aligned trailing value.
22
+ */
23
+
24
+ /**
25
+ * BenefitCard — Figma node 5352:1077 ("Benefit Card").
26
+ *
27
+ * A white, rounded card that summarises the rewards a user will earn. It is
28
+ * composed entirely from the shared design-system primitives so it stays in
29
+ * sync with the rest of the library:
30
+ *
31
+ * - **Header** — a section title + a single highlighted {@link ListItem}
32
+ * (leading `Icon`, title, right-aligned trailing value) followed by a
33
+ * `Divider`.
34
+ * - **Body** — a section title + a column of benefit {@link ListItem}s. The
35
+ * list is a real slot: pass `children` to fully control it, or `items` for
36
+ * the declarative path.
37
+ * - **CTA** — a small {@link Button} (Figma `Button / Size = S`).
38
+ *
39
+ * The list rows resolve through the `List Item Style: Minimal` mode (12px /
40
+ * regular title, 4px gap, no padding) and the leading icons use the
41
+ * `AppearanceBrand: Secondary` brand color, exactly matching the design. All
42
+ * three defaults can be overridden via `modes`.
43
+ */
44
+ function BenefitCard({
45
+ headerTitle = 'You will earn',
46
+ headerItem,
47
+ showHeader = true,
48
+ bodyTitle = 'Upgrade to JioFinance+ and earn more',
49
+ items,
50
+ children,
51
+ buttonLabel = 'Upgrade',
52
+ onButtonPress,
53
+ button,
54
+ showButton = true,
55
+ onPress,
56
+ width = 344,
57
+ modes = _reactUtils.EMPTY_MODES,
58
+ style,
59
+ accessibilityLabel
60
+ }) {
61
+ const tokens = (0, _react.useMemo)(() => resolveTokens(modes), [modes]);
62
+
63
+ // Sub-component modes. Consumer-supplied `modes` always win via spread order.
64
+ const listItemModes = (0, _react.useMemo)(() => ({
65
+ 'List Item Style': 'Minimal',
66
+ ...modes
67
+ }), [modes]);
68
+ const iconModes = (0, _react.useMemo)(() => ({
69
+ AppearanceBrand: 'Secondary',
70
+ ...modes
71
+ }), [modes]);
72
+ const trailingTextModes = (0, _react.useMemo)(() => ({
73
+ 'Text Sizes': 'Small',
74
+ Weight: 'Regular',
75
+ ...modes
76
+ }), [modes]);
77
+ const ctaModes = (0, _react.useMemo)(() => ({
78
+ 'Button / Size': 'S',
79
+ ...modes
80
+ }), [modes]);
81
+ const renderItem = (item, key) => {
82
+ const leading = item.leading ?? (item.icon != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
83
+ iconName: item.icon,
84
+ color: item.iconColor,
85
+ modes: iconModes
86
+ }) : null);
87
+ const trailing = item.trailing ?? (item.trailingText != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
88
+ modes: trailingTextModes,
89
+ children: item.trailingText
90
+ }) : undefined);
91
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItem.default, {
92
+ layout: "Horizontal",
93
+ navArrow: false,
94
+ showSupportText: false,
95
+ title: item.title,
96
+ leading: leading,
97
+ trailing: trailing,
98
+ onPress: item.onPress,
99
+ modes: listItemModes
100
+ }, key);
101
+ };
102
+ const headerNode = showHeader && (headerTitle != null || headerItem != null) ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
103
+ style: styles.section,
104
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
105
+ style: styles.cardHeader,
106
+ children: [headerTitle != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
107
+ style: tokens.title,
108
+ children: headerTitle
109
+ }) : null, headerItem != null ? renderItem(headerItem, 'header-item') : null]
110
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, {
111
+ modes: modes
112
+ })]
113
+ }) : null;
114
+ const bodyList = children ? (0, _reactUtils.cloneChildrenWithModes)(children, listItemModes) : (items ?? DEFAULT_ITEMS).map((item, index) => renderItem(item, index));
115
+ const ctaNode = button ?? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
116
+ label: buttonLabel,
117
+ modes: ctaModes,
118
+ onPress: onButtonPress
119
+ });
120
+ const containerStyle = (0, _react.useMemo)(() => ({
121
+ ...tokens.container,
122
+ width
123
+ }), [tokens.container, width]);
124
+ const content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
125
+ children: [headerNode, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
126
+ style: tokens.body,
127
+ children: [bodyTitle != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
128
+ style: tokens.title,
129
+ children: bodyTitle
130
+ }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
131
+ style: tokens.listWrap,
132
+ children: bodyList
133
+ })]
134
+ }), showButton ? ctaNode : null]
135
+ });
136
+ if (onPress) {
137
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
138
+ style: ({
139
+ pressed
140
+ }) => [containerStyle, pressed ? styles.pressed : null, style],
141
+ accessibilityRole: "button",
142
+ accessibilityLabel: accessibilityLabel ?? headerTitle ?? bodyTitle,
143
+ onPress: onPress,
144
+ children: content
145
+ });
146
+ }
147
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
148
+ style: [containerStyle, style],
149
+ accessibilityLabel: accessibilityLabel,
150
+ children: content
151
+ });
152
+ }
153
+
154
+ // ---------------------------------------------------------------------------
155
+ // Tokens / static styles
156
+ // ---------------------------------------------------------------------------
157
+
158
+ // The "card header" inner gap (title -> highlighted item) is a fixed 4px in
159
+ // the Figma node and has no dedicated token.
160
+ const CARD_HEADER_GAP = 4;
161
+ function asNum(raw, fallback) {
162
+ const n = typeof raw === 'number' ? raw : parseFloat(raw);
163
+ return Number.isFinite(n) ? n : fallback;
164
+ }
165
+ function asStr(raw, fallback) {
166
+ return raw != null ? String(raw) : fallback;
167
+ }
168
+ function resolveTokens(modes) {
169
+ // NOTE: token names are passed as string literals DIRECTLY to
170
+ // getVariableByName so the `extract-component-tokens` script can statically
171
+ // collect them for the generated docs. Do not refactor these into a helper
172
+ // that receives the name as a variable.
173
+ const background = asStr((0, _figmaVariablesResolver.getVariableByName)('benefitCard/background', modes), '#ffffff');
174
+ const paddingHorizontal = asNum((0, _figmaVariablesResolver.getVariableByName)('benefitCard/padding/horizontal', modes), 12);
175
+ const paddingVertical = asNum((0, _figmaVariablesResolver.getVariableByName)('benefitCard/padding/vertical', modes), 12);
176
+ const radius = asNum((0, _figmaVariablesResolver.getVariableByName)('benefitCard/radius', modes), 12);
177
+ const gap = asNum((0, _figmaVariablesResolver.getVariableByName)('benefitCard/gap', modes), 8);
178
+ const titleColor = asStr((0, _figmaVariablesResolver.getVariableByName)('benefitCard/title/foreground', modes), '#000000');
179
+ const titleSize = asNum((0, _figmaVariablesResolver.getVariableByName)('benefitCard/title/fontsize', modes), 14);
180
+ const titleFamily = asStr((0, _figmaVariablesResolver.getVariableByName)('benefitCard/title/fontFamily', modes), 'JioType Var');
181
+ const titleWeight = asStr((0, _figmaVariablesResolver.getVariableByName)('benefitCard/title/fontWeight', modes), '500');
182
+ return {
183
+ container: {
184
+ backgroundColor: background,
185
+ paddingHorizontal,
186
+ paddingVertical,
187
+ borderRadius: radius,
188
+ gap,
189
+ flexDirection: 'column',
190
+ alignItems: 'flex-start'
191
+ },
192
+ body: {
193
+ alignSelf: 'stretch',
194
+ gap
195
+ },
196
+ listWrap: {
197
+ alignSelf: 'stretch',
198
+ gap
199
+ },
200
+ title: {
201
+ color: titleColor,
202
+ fontSize: titleSize,
203
+ fontFamily: titleFamily,
204
+ fontWeight: titleWeight,
205
+ lineHeight: 20,
206
+ letterSpacing: -0.5,
207
+ includeFontPadding: false
208
+ }
209
+ };
210
+ }
211
+ const DEFAULT_ITEMS = [{
212
+ icon: 'ic_card',
213
+ title: 'Up to ₹5000 cashback'
214
+ }, {
215
+ icon: 'ic_card',
216
+ title: '25% extra JioPoints'
217
+ }];
218
+ const styles = _reactNative.StyleSheet.create({
219
+ section: {
220
+ alignSelf: 'stretch',
221
+ gap: 8
222
+ },
223
+ cardHeader: {
224
+ alignSelf: 'stretch',
225
+ gap: CARD_HEADER_GAP
226
+ },
227
+ pressed: {
228
+ opacity: 0.92
229
+ }
230
+ });
231
+ var _default = exports.default = BenefitCard;