jfs-components 0.1.48 → 0.1.50
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.
- package/CHANGELOG.md +8 -1
- package/lib/commonjs/components/CardCTA/CardCTA.js +7 -4
- package/lib/commonjs/components/CardFeedback/CardFeedback.js +1 -1
- package/lib/commonjs/components/CategoryCard/CategoryCard.js +4 -4
- package/lib/commonjs/components/Checkbox/Checkbox.js +4 -6
- package/lib/commonjs/components/CircularProgressBarDoted/CircularProgressBarDoted.js +12 -9
- package/lib/commonjs/components/DonutChartSummary/DonutChartSummary.js +7 -2
- package/lib/commonjs/components/ProductMerchandisingCard/ProductMerchandisingCard.js +3 -1
- package/lib/commonjs/components/ProductOverview/ProductOverview.js +2 -2
- package/lib/commonjs/components/Radio/Radio.js +5 -3
- package/lib/commonjs/components/SavingsGoalSummary/SavingsGoalSummary.js +2 -2
- package/lib/commonjs/components/Section/Section.js +3 -1
- package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +1 -1
- package/lib/commonjs/components/SegmentedTrack/SegmentedTrack.js +1 -1
- package/lib/commonjs/components/Slider/Slider.js +3 -2
- package/lib/commonjs/components/StatusHero/StatusHero.js +1 -1
- package/lib/commonjs/components/Tooltip/Tooltip.js +4 -2
- package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/commonjs/design-tokens/figma-modes.generated.js +38 -34
- package/lib/commonjs/icons/registry.js +1 -1
- package/lib/module/components/CardCTA/CardCTA.js +7 -4
- package/lib/module/components/CardFeedback/CardFeedback.js +1 -1
- package/lib/module/components/CategoryCard/CategoryCard.js +4 -4
- package/lib/module/components/Checkbox/Checkbox.js +4 -6
- package/lib/module/components/CircularProgressBarDoted/CircularProgressBarDoted.js +12 -9
- package/lib/module/components/DonutChartSummary/DonutChartSummary.js +7 -2
- package/lib/module/components/ProductMerchandisingCard/ProductMerchandisingCard.js +3 -1
- package/lib/module/components/ProductOverview/ProductOverview.js +2 -2
- package/lib/module/components/Radio/Radio.js +5 -3
- package/lib/module/components/SavingsGoalSummary/SavingsGoalSummary.js +2 -2
- package/lib/module/components/Section/Section.js +3 -1
- package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -1
- package/lib/module/components/SegmentedTrack/SegmentedTrack.js +1 -1
- package/lib/module/components/Slider/Slider.js +3 -2
- package/lib/module/components/StatusHero/StatusHero.js +1 -1
- package/lib/module/components/Tooltip/Tooltip.js +4 -2
- package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/module/design-tokens/figma-modes.generated.js +38 -34
- package/lib/module/icons/registry.js +1 -1
- package/lib/typescript/src/components/Section/Section.d.ts +2 -1
- package/lib/typescript/src/design-tokens/figma-modes.generated.d.ts +6 -2
- package/lib/typescript/src/icons/registry.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/CardCTA/CardCTA.tsx +7 -4
- package/src/components/CardFeedback/CardFeedback.tsx +1 -1
- package/src/components/CategoryCard/CategoryCard.tsx +4 -4
- package/src/components/Checkbox/Checkbox.tsx +4 -6
- package/src/components/CircularProgressBarDoted/CircularProgressBarDoted.tsx +12 -9
- package/src/components/DonutChartSummary/DonutChartSummary.tsx +6 -6
- package/src/components/ProductMerchandisingCard/ProductMerchandisingCard.tsx +3 -1
- package/src/components/ProductOverview/ProductOverview.tsx +2 -2
- package/src/components/Radio/Radio.tsx +8 -3
- package/src/components/SavingsGoalSummary/SavingsGoalSummary.tsx +3 -3
- package/src/components/Section/Section.tsx +121 -156
- package/src/components/SegmentedControl/SegmentedControl.tsx +1 -1
- package/src/components/SegmentedTrack/SegmentedTrack.tsx +1 -2
- package/src/components/Slider/Slider.tsx +3 -2
- package/src/components/StatusHero/StatusHero.tsx +1 -1
- package/src/components/Tooltip/Tooltip.tsx +4 -2
- package/src/design-tokens/Coin Variables-variables-full.json +1 -1
- package/src/design-tokens/figma-modes.generated.ts +38 -34
- package/src/icons/registry.ts +1 -1
- package/D2C.md +0 -113
package/CHANGELOG.md
CHANGED
|
@@ -4,7 +4,14 @@ 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.
|
|
7
|
+
## [0.1.50] - 2026-07-25
|
|
8
|
+
|
|
9
|
+
- Token resolution pass — remapped unresolved `getVariableByName` refs and bad mode keys against Figma Code Connect / Coin Variables (CardCTA, CategoryCard, Checkbox, CircularProgressBarDoted, DonutChartSummary, ProductMerchandisingCard, ProductOverview, Radio, SavingsGoalSummary, SegmentedControl, SegmentedTrack, Slider, Tooltip, StatusHero, CardFeedback).
|
|
10
|
+
- Coin Variables — repaired broken `nudge/radius` and Badge Semantic Intent System aliases; added `tooltip/radius` and `tooltip/maxWidth`.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## [0.1.48] - 2026-07-23
|
|
8
15
|
|
|
9
16
|
- `CompareTable` (fixed-width scroll mode) — selection cards pin above the scroll surface (`stickyCards`, default `true`); accordion section titles stick under the cards and replace each other as you scroll (`stickyAccordionTitles`, default `true`); gray table-header sticky is now opt-in (`stickyHeaders` default `false`). Selection cards are square (corner radius forced to `0`).
|
|
10
17
|
- `Accordion` — new `showHeader` / `showContent` props so hosts can split sticky titles from bodies in scroll layouts (used by `CompareTable`).
|
|
@@ -75,7 +75,8 @@ function CardCTA({
|
|
|
75
75
|
const radius = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/radius', modes);
|
|
76
76
|
const borderSize = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/border/size', modes);
|
|
77
77
|
const borderColor = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/border/color', modes);
|
|
78
|
-
const
|
|
78
|
+
const leftPaddingLeft = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/left-wrap/padding/left', modes);
|
|
79
|
+
const leftPaddingRight = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/left-wrap/padding/right', modes);
|
|
79
80
|
const leftPaddingV = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/left-wrap/padding/vertical', modes);
|
|
80
81
|
const leftGap = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/left-wrap/gap', modes);
|
|
81
82
|
const rightPaddingH = (0, _figmaVariablesResolver.getVariableByName)('cardCTA/right-wrap/padding/horizontal', modes);
|
|
@@ -221,7 +222,8 @@ function CardCTA({
|
|
|
221
222
|
flexShrink: 1,
|
|
222
223
|
flexBasis: 0,
|
|
223
224
|
minWidth: 0,
|
|
224
|
-
|
|
225
|
+
paddingLeft: leftPaddingLeft,
|
|
226
|
+
paddingRight: leftPaddingRight,
|
|
225
227
|
paddingVertical: leftPaddingV,
|
|
226
228
|
gap: leftGap,
|
|
227
229
|
alignItems: 'flex-start',
|
|
@@ -253,7 +255,7 @@ function CardCTA({
|
|
|
253
255
|
// space allows and can never collapse below its content.
|
|
254
256
|
const iconCapsuleModes = {
|
|
255
257
|
...modes,
|
|
256
|
-
'
|
|
258
|
+
'Icon Capsule Size': 'M',
|
|
257
259
|
Emphasis: 'Medium',
|
|
258
260
|
AppearanceBrand: 'Secondary'
|
|
259
261
|
};
|
|
@@ -312,7 +314,8 @@ function CardCTA({
|
|
|
312
314
|
};
|
|
313
315
|
const sipWrapStyle = {
|
|
314
316
|
width: '100%',
|
|
315
|
-
|
|
317
|
+
paddingLeft: leftPaddingLeft,
|
|
318
|
+
paddingRight: leftPaddingRight,
|
|
316
319
|
paddingVertical: leftPaddingV,
|
|
317
320
|
gap: leftGap,
|
|
318
321
|
alignItems: 'flex-start',
|
|
@@ -62,10 +62,10 @@ function resolveCategoryCardTokens(modes, active) {
|
|
|
62
62
|
const backgroundColor = active ? activeBackground : idleBackground;
|
|
63
63
|
const imageSize = toNumber((0, _figmaVariablesResolver.getVariableByName)('cardTab/image/width', resolvedModes), 36);
|
|
64
64
|
const imageRadius = toNumber((0, _figmaVariablesResolver.getVariableByName)('image/radius', resolvedModes), 0);
|
|
65
|
-
const fontFamily = (0, _figmaVariablesResolver.getVariableByName)('
|
|
66
|
-
const fontSize = toNumber((0, _figmaVariablesResolver.getVariableByName)('
|
|
67
|
-
const lineHeight = toNumber((0, _figmaVariablesResolver.getVariableByName)('
|
|
68
|
-
const fontWeight = toFontWeight((0, _figmaVariablesResolver.getVariableByName)('
|
|
65
|
+
const fontFamily = (0, _figmaVariablesResolver.getVariableByName)('label/fontFamily', resolvedModes) ?? 'JioType Var';
|
|
66
|
+
const fontSize = toNumber((0, _figmaVariablesResolver.getVariableByName)('label/fontSize', resolvedModes), 12);
|
|
67
|
+
const lineHeight = toNumber((0, _figmaVariablesResolver.getVariableByName)('label/lineHeight', resolvedModes), Math.round(fontSize * 1.3));
|
|
68
|
+
const fontWeight = toFontWeight((0, _figmaVariablesResolver.getVariableByName)('label/fontWeight', resolvedModes), '500');
|
|
69
69
|
const labelColor = (0, _figmaVariablesResolver.getVariableByName)('cardTab/label/color', resolvedModes) ?? '#000000';
|
|
70
70
|
return {
|
|
71
71
|
containerStyle: {
|
|
@@ -107,8 +107,8 @@ const Checkbox = /*#__PURE__*/(0, _react.forwardRef)(function Checkbox({
|
|
|
107
107
|
const idleStroke = (0, _figmaVariablesResolver.getVariableByName)('checkbox/idle/stroke/color', modes) ?? '#666666';
|
|
108
108
|
const hoverFill = (0, _figmaVariablesResolver.getVariableByName)('checkbox/hover/fill/color', modes) ?? 'rgba(0,0,0,0.1)';
|
|
109
109
|
const hoverStroke = (0, _figmaVariablesResolver.getVariableByName)('checkbox/hover/stroke/color', modes) ?? '#666666';
|
|
110
|
-
const
|
|
111
|
-
const hoverShadow = (0, _figmaVariablesResolver.getVariableByName)('hover/
|
|
110
|
+
const hoverSpread = (0, _figmaVariablesResolver.getVariableByName)('checkbox/hover/spread/effect1', modes) ?? 4;
|
|
111
|
+
const hoverShadow = (0, _figmaVariablesResolver.getVariableByName)('checkbox/hover/shadow/color', modes) ?? 'rgba(0,0,0,0.1)';
|
|
112
112
|
const selectedFill = (0, _figmaVariablesResolver.getVariableByName)('checkbox/selected/fill/color', modes) ?? '#cea15a';
|
|
113
113
|
const selectedStroke = (0, _figmaVariablesResolver.getVariableByName)('checkbox/selected/stroke/color', modes) ?? '#0d0d0d';
|
|
114
114
|
const selectedMarkColor = (0, _figmaVariablesResolver.getVariableByName)('checkbox/selected/mark/color', modes) ?? '#0f0d0a';
|
|
@@ -120,8 +120,6 @@ const Checkbox = /*#__PURE__*/(0, _react.forwardRef)(function Checkbox({
|
|
|
120
120
|
const disabledActiveBg = (0, _figmaVariablesResolver.getVariableByName)('checkbox/disabledActive/background/color', modes) ?? '#f6d19a';
|
|
121
121
|
const disabledActiveBorder = (0, _figmaVariablesResolver.getVariableByName)('checkbox/disabledActive/border/color', modes) ?? '#f6d19a';
|
|
122
122
|
const disabledActiveMark = (0, _figmaVariablesResolver.getVariableByName)('checkbox/disabledActive/mark/color', modes) ?? '#474d54';
|
|
123
|
-
const selectedHoverShadow = (0, _figmaVariablesResolver.getVariableByName)('selected/hover/boxShadow', modes) ?? 'rgba(0,0,0,0.1)';
|
|
124
|
-
const hoverShadowSize = (0, _figmaVariablesResolver.getVariableByName)('hover/boxShadow/size', modes) ?? 4;
|
|
125
123
|
const handlePress = (0, _react.useCallback)(() => {
|
|
126
124
|
if (disabled) return;
|
|
127
125
|
const next = !isChecked;
|
|
@@ -166,7 +164,7 @@ const Checkbox = /*#__PURE__*/(0, _react.forwardRef)(function Checkbox({
|
|
|
166
164
|
...base,
|
|
167
165
|
backgroundColor: selectedFill,
|
|
168
166
|
borderColor: selectedStroke,
|
|
169
|
-
...(0, _shadow.boxShadow)(`0px 0px 0px ${
|
|
167
|
+
...(0, _shadow.boxShadow)(`0px 0px 0px ${hoverSpread}px ${hoverShadow}`)
|
|
170
168
|
};
|
|
171
169
|
}
|
|
172
170
|
if (isChecked) {
|
|
@@ -189,7 +187,7 @@ const Checkbox = /*#__PURE__*/(0, _react.forwardRef)(function Checkbox({
|
|
|
189
187
|
...base,
|
|
190
188
|
backgroundColor: hoverFill,
|
|
191
189
|
borderColor: hoverStroke,
|
|
192
|
-
...(0, _shadow.boxShadow)(`0px 0px 0px ${
|
|
190
|
+
...(0, _shadow.boxShadow)(`0px 0px 0px ${hoverSpread}px ${hoverShadow}`)
|
|
193
191
|
};
|
|
194
192
|
}
|
|
195
193
|
return {
|
|
@@ -87,18 +87,21 @@ function CircularProgressBarDoted({
|
|
|
87
87
|
const scoreTierWidth = toNumber((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/scoreTier/width', modes), 116);
|
|
88
88
|
const scoreTrendGap = toNumber((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/scoreTrend/gap', modes), 2);
|
|
89
89
|
const scoreTrendHeight = toNumber((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/scoreTrend/height', modes), 24);
|
|
90
|
-
const typographyFontFamily = (0, _figmaVariablesResolver.getVariableByName)('Typography/Font Family', modes);
|
|
91
90
|
const labelColor = (0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/label/color', modes);
|
|
92
|
-
const labelFontSize = toNumber((0, _figmaVariablesResolver.getVariableByName)('
|
|
93
|
-
const
|
|
91
|
+
const labelFontSize = toNumber((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/label/fontSize', modes), 12);
|
|
92
|
+
const labelFontFamily = (0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/label/fontFamily', modes);
|
|
93
|
+
const labelLineHeight = toNumber((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/label/lineHeight', modes), 15.6);
|
|
94
|
+
const labelFontWeight = toFontWeight((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/label/fontWeight', modes), '400');
|
|
94
95
|
const scoreColor = (0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/scoreLabel/color', modes);
|
|
95
96
|
const scoreFontSize = toNumber((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/scoreLabel/fontSize', modes), 56);
|
|
96
97
|
const scoreFontFamily = (0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/scoreLabel/fontFamily', modes);
|
|
97
98
|
const scoreLineHeight = toNumber((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/scoreLabel/lineHeight', modes), 56);
|
|
98
99
|
const scoreFontWeight = toFontWeight((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/scoreLabel/fontWeight', modes), '900');
|
|
99
100
|
const tierColor = (0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/tierLabel/color', modes);
|
|
100
|
-
const tierFontSize = toNumber((0, _figmaVariablesResolver.getVariableByName)('
|
|
101
|
-
const
|
|
101
|
+
const tierFontSize = toNumber((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/tierLabel/fontSize', modes), 16);
|
|
102
|
+
const tierFontFamily = (0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/tierLabel/fontFamily', modes);
|
|
103
|
+
const tierLineHeight = toNumber((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/tierLabel/lineHeight', modes), 20.8);
|
|
104
|
+
const tierFontWeight = toFontWeight((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/tierLabel/fontWeight', modes), '700');
|
|
102
105
|
const iconColor = (0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/icon/color', modes);
|
|
103
106
|
const iconSize = toNumber((0, _figmaVariablesResolver.getVariableByName)('circularProgressBarDoted/icon/size', modes), 24);
|
|
104
107
|
const dots = (0, _react.useMemo)(() => Array.from({
|
|
@@ -159,10 +162,10 @@ function CircularProgressBarDoted({
|
|
|
159
162
|
};
|
|
160
163
|
const computedLabelStyle = {
|
|
161
164
|
color: labelColor,
|
|
162
|
-
fontFamily:
|
|
165
|
+
fontFamily: labelFontFamily,
|
|
163
166
|
fontSize: labelFontSize,
|
|
164
167
|
fontWeight: labelFontWeight,
|
|
165
|
-
lineHeight:
|
|
168
|
+
lineHeight: labelLineHeight,
|
|
166
169
|
textAlign: 'center'
|
|
167
170
|
};
|
|
168
171
|
const computedScoreLabelStyle = {
|
|
@@ -175,10 +178,10 @@ function CircularProgressBarDoted({
|
|
|
175
178
|
};
|
|
176
179
|
const computedTierLabelStyle = {
|
|
177
180
|
color: tierColor,
|
|
178
|
-
fontFamily:
|
|
181
|
+
fontFamily: tierFontFamily,
|
|
179
182
|
fontSize: tierFontSize,
|
|
180
183
|
fontWeight: tierFontWeight,
|
|
181
|
-
lineHeight:
|
|
184
|
+
lineHeight: tierLineHeight,
|
|
182
185
|
textAlign: 'center'
|
|
183
186
|
};
|
|
184
187
|
const resolvedScoreLabel = String(Math.round(normalizedValue));
|
|
@@ -92,8 +92,13 @@ function DonutChartSummary({
|
|
|
92
92
|
...globalModes,
|
|
93
93
|
...propModes
|
|
94
94
|
};
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
|
|
96
|
+
// Figma DonutChartSummary (4203:51713) does not expose component-level
|
|
97
|
+
// gap variables — layout uses unbound 16px (donut→legend) and 8px
|
|
98
|
+
// (legend rows). Nested `textWrap/gap` / `metricLegendItem/gap` belong
|
|
99
|
+
// to child components and are not substitutes.
|
|
100
|
+
const gap = 16;
|
|
101
|
+
const legendGap = 8;
|
|
97
102
|
const resolvedItems = items && items.length > 0 ? items : DEFAULT_ITEMS;
|
|
98
103
|
const segments = resolvedItems.map((item, index) => ({
|
|
99
104
|
key: item.key ?? `segment-${index}`,
|
|
@@ -334,7 +334,9 @@ function resolveTokens(modes) {
|
|
|
334
334
|
const titleColor = asStr((0, _figmaVariablesResolver.getVariableByName)('productMerchandisingcard/footer/title/font/color', modes), '#ffffff');
|
|
335
335
|
const titleSize = asNum((0, _figmaVariablesResolver.getVariableByName)('productMerchandisingcard/footer/title/fontsize', modes), 14);
|
|
336
336
|
const titleFamily = asStr((0, _figmaVariablesResolver.getVariableByName)('productMerchandisingcard/footer/title/fontfamily', modes), 'JioType Var');
|
|
337
|
-
|
|
337
|
+
// No `productMerchandisingcard/footer/title/fontweight` in Coin Variables (Figma
|
|
338
|
+
// binds 700). `typography/title/fontWeight/high` is 800; use body/high (=700).
|
|
339
|
+
const titleWeight = asStr((0, _figmaVariablesResolver.getVariableByName)('typography/body/fontWeight/high', modes), '700');
|
|
338
340
|
const subtitleColor = asStr((0, _figmaVariablesResolver.getVariableByName)('productMerchandisingcard/footer/subtitle/font/color', modes), '#c5bcb5');
|
|
339
341
|
const subtitleSize = asNum((0, _figmaVariablesResolver.getVariableByName)('productMerchandisingcard/footer/subtitle/fontsize', modes), 12);
|
|
340
342
|
const subtitleFamily = asStr((0, _figmaVariablesResolver.getVariableByName)('productMerchandisingcard/footer/subtitle/fontfamily', modes), 'JioType Var');
|
|
@@ -35,12 +35,12 @@ const ProductOverview = ({
|
|
|
35
35
|
const padding = (0, _figmaVariablesResolver.getVariableByName)('productOverview/padding', modes) ?? 24;
|
|
36
36
|
const gap = (0, _figmaVariablesResolver.getVariableByName)('productOverview/gap', modes) ?? 12;
|
|
37
37
|
const background = (0, _figmaVariablesResolver.getVariableByName)('productOverview/background', modes) ?? '#ffffff';
|
|
38
|
-
const productNameColor = (0, _figmaVariablesResolver.getVariableByName)('
|
|
38
|
+
const productNameColor = (0, _figmaVariablesResolver.getVariableByName)('text/appearance/high/color', modes) ?? '#0d0d0f';
|
|
39
39
|
const productNameFontFamily = (0, _figmaVariablesResolver.getVariableByName)('productOverview/productName/fontFamily', modes) ?? 'JioType Var';
|
|
40
40
|
const productNameFontSize = (0, _figmaVariablesResolver.getVariableByName)('productOverview/productName/fontSize', modes) ?? 26;
|
|
41
41
|
const productNameFontWeight = (0, _figmaVariablesResolver.getVariableByName)('productOverview/productName/fontWeight', modes) ?? 900;
|
|
42
42
|
const productNameLineHeight = (0, _figmaVariablesResolver.getVariableByName)('productOverview/productName/lineHeight', modes) ?? 26;
|
|
43
|
-
const descriptionColor = (0, _figmaVariablesResolver.getVariableByName)('
|
|
43
|
+
const descriptionColor = (0, _figmaVariablesResolver.getVariableByName)('text/appearance/medium/color', modes) ?? '#1a1c1f';
|
|
44
44
|
const descriptionFontFamily = (0, _figmaVariablesResolver.getVariableByName)('productOverview/description/fontFamily', modes) ?? 'JioType Var';
|
|
45
45
|
const descriptionFontSize = (0, _figmaVariablesResolver.getVariableByName)('productOverview/description/fontSize', modes) ?? 14;
|
|
46
46
|
const descriptionFontWeight = (0, _figmaVariablesResolver.getVariableByName)('productOverview/description/fontWeight', modes) ?? 500;
|
|
@@ -86,7 +86,9 @@ const Radio = exports.Radio = /*#__PURE__*/(0, _react.forwardRef)(function Radio
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
// Border Color
|
|
89
|
-
|
|
89
|
+
// Coin Variables has no `radio/focus/border/color` — focus indication is
|
|
90
|
+
// the yellow boxShadow ring; stroke reuses the published idle border.
|
|
91
|
+
let borderColorVar = visualState === 'focus' && !selected ? 'radio/idle/border/color' : `${prefix}/border/color`;
|
|
90
92
|
|
|
91
93
|
// Border Width
|
|
92
94
|
let borderWidthVar = `${prefix}/border/size`;
|
|
@@ -144,7 +146,6 @@ const Radio = exports.Radio = /*#__PURE__*/(0, _react.forwardRef)(function Radio
|
|
|
144
146
|
(0, _figmaVariablesResolver.getVariableByName)('radio/selector/size');
|
|
145
147
|
(0, _figmaVariablesResolver.getVariableByName)('radio/width');
|
|
146
148
|
(0, _figmaVariablesResolver.getVariableByName)('radio/height');
|
|
147
|
-
(0, _figmaVariablesResolver.getVariableByName)('radio/background/color');
|
|
148
149
|
(0, _figmaVariablesResolver.getVariableByName)('radio/hover/background/color');
|
|
149
150
|
(0, _figmaVariablesResolver.getVariableByName)('radio/hover/border/color');
|
|
150
151
|
(0, _figmaVariablesResolver.getVariableByName)('radio/hover/boxShadow/size');
|
|
@@ -158,13 +159,14 @@ const Radio = exports.Radio = /*#__PURE__*/(0, _react.forwardRef)(function Radio
|
|
|
158
159
|
(0, _figmaVariablesResolver.getVariableByName)('radio/hoverSelected/shadow/color');
|
|
159
160
|
(0, _figmaVariablesResolver.getVariableByName)('radio/hoverSelected/selector/background/color');
|
|
160
161
|
(0, _figmaVariablesResolver.getVariableByName)('radio/focus/background/color');
|
|
161
|
-
(0, _figmaVariablesResolver.getVariableByName)('radio/focus/border/color');
|
|
162
162
|
(0, _figmaVariablesResolver.getVariableByName)('radio/focus/border/size');
|
|
163
163
|
(0, _figmaVariablesResolver.getVariableByName)('radio/focus/boxShadow/size');
|
|
164
164
|
(0, _figmaVariablesResolver.getVariableByName)('radio/focus/shadow/color');
|
|
165
165
|
(0, _figmaVariablesResolver.getVariableByName)('radio/focusSelected/background/color');
|
|
166
|
+
(0, _figmaVariablesResolver.getVariableByName)('radio/focusSelected/border/color');
|
|
166
167
|
(0, _figmaVariablesResolver.getVariableByName)('radio/focusSelected/selector/background/color');
|
|
167
168
|
(0, _figmaVariablesResolver.getVariableByName)('radio/focusSelected/border/size');
|
|
169
|
+
(0, _figmaVariablesResolver.getVariableByName)('radio/focusSelected/shadow/color');
|
|
168
170
|
(0, _figmaVariablesResolver.getVariableByName)('radio/disabled/radio/disabled/border/size');
|
|
169
171
|
(0, _figmaVariablesResolver.getVariableByName)('radio/disabled/background/color');
|
|
170
172
|
(0, _figmaVariablesResolver.getVariableByName)('radio/disabled/border/color');
|
|
@@ -129,7 +129,7 @@ function SavingsGoalSummary({
|
|
|
129
129
|
// ~1.2x so descenders never clip on native (same guard `Title` uses).
|
|
130
130
|
const valueLineHeight = Math.max(valueRawLineHeight, Math.ceil(valueFontSize * 1.2));
|
|
131
131
|
const valueFontWeight = String((0, _figmaVariablesResolver.getVariableByName)('savingsGoalSummary/value/fontWeight', mergedModes) ?? 900);
|
|
132
|
-
const valueColor = (0, _figmaVariablesResolver.getVariableByName)('
|
|
132
|
+
const valueColor = (0, _figmaVariablesResolver.getVariableByName)('text/appearance/high/color', mergedModes) ?? '#0d0d0f';
|
|
133
133
|
|
|
134
134
|
// Caption ("Credit usage") typography — `savingsGoalSummary/label/*`
|
|
135
135
|
// (Figma 12 / 400). Only rendered when a `label` is supplied.
|
|
@@ -137,7 +137,7 @@ function SavingsGoalSummary({
|
|
|
137
137
|
const labelFontFamily = (0, _figmaVariablesResolver.getVariableByName)('savingsGoalSummary/label/fontFamily', mergedModes) ?? 'JioType Var';
|
|
138
138
|
const labelLineHeight = (0, _figmaVariablesResolver.getVariableByName)('savingsGoalSummary/label/lineHeight', mergedModes) ?? 16;
|
|
139
139
|
const labelFontWeight = String((0, _figmaVariablesResolver.getVariableByName)('savingsGoalSummary/label/fontWeight', mergedModes) ?? 400);
|
|
140
|
-
const labelColor = (0, _figmaVariablesResolver.getVariableByName)('
|
|
140
|
+
const labelColor = (0, _figmaVariablesResolver.getVariableByName)('text/appearance/medium/color', mergedModes) ?? '#1a1c1f';
|
|
141
141
|
const labelNode = label == null || label === false ? null : typeof label === 'string' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
142
142
|
style: [{
|
|
143
143
|
color: labelColor,
|
|
@@ -546,6 +546,7 @@ function SectionSlot({
|
|
|
546
546
|
* @param {Object} props
|
|
547
547
|
* @param {React.ReactNode} [props.navSlot] - Optional custom slot for navigation items (Figma Slot "Nav wrap")
|
|
548
548
|
* @param {React.ReactNode} [props.upiSlot] - Optional custom slot for UPI handles (Figma Slot "UPI wrap")
|
|
549
|
+
* @param {boolean} [props.upi=true] - Toggles the UPI wrap (Figma boolean property "upi")
|
|
549
550
|
* @param {Object} [props.modes={}] - Modes object passed to `getVariableByName` for all design tokens
|
|
550
551
|
* @param {Object} [props.style] - Optional container style overrides
|
|
551
552
|
* @param {string} [props.accessibilityLabel] - Accessibility label for the section
|
|
@@ -558,6 +559,7 @@ const sectionBentoUpiRowStyle = {
|
|
|
558
559
|
function SectionBento({
|
|
559
560
|
navSlot,
|
|
560
561
|
upiSlot,
|
|
562
|
+
upi = true,
|
|
561
563
|
modes = _reactUtils.EMPTY_MODES,
|
|
562
564
|
style,
|
|
563
565
|
// Same rationale as Section: accepted on the type but unused internally.
|
|
@@ -648,7 +650,7 @@ function SectionBento({
|
|
|
648
650
|
animateExtrasFromIndex: collapsedCount,
|
|
649
651
|
animateContainerLayout: true
|
|
650
652
|
} : null)
|
|
651
|
-
}), processedUpiSlot && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
653
|
+
}), upi && processedUpiSlot && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
652
654
|
style: sectionBentoUpiRowStyle,
|
|
653
655
|
children: processedUpiSlot
|
|
654
656
|
})]
|
|
@@ -109,7 +109,7 @@ function SegmentedControl({
|
|
|
109
109
|
}, [isControlled, onSelectionChange]);
|
|
110
110
|
const gap = (0, _figmaVariablesResolver.getVariableByName)('segmentedControl/gap', modes) ?? 8;
|
|
111
111
|
const background = (0, _figmaVariablesResolver.getVariableByName)('segmentedControl/background', modes) ?? '#f6f3ff';
|
|
112
|
-
const radius = (0, _figmaVariablesResolver.getVariableByName)('
|
|
112
|
+
const radius = (0, _figmaVariablesResolver.getVariableByName)('segment/radius', modes) ?? 20;
|
|
113
113
|
const containerStyle = {
|
|
114
114
|
flexDirection: 'row',
|
|
115
115
|
alignItems: 'center',
|
|
@@ -96,7 +96,7 @@ function SegmentedTrack({
|
|
|
96
96
|
...propModes
|
|
97
97
|
};
|
|
98
98
|
const trackHeight = (0, _figmaVariablesResolver.getVariableByName)('segmentedTrack/height', modes) ?? 24;
|
|
99
|
-
const trackRadius =
|
|
99
|
+
const trackRadius = trackHeight / 2;
|
|
100
100
|
const renderedSegments = renderSegments({
|
|
101
101
|
segments,
|
|
102
102
|
children,
|
|
@@ -391,8 +391,9 @@ function resolveTokens(modes) {
|
|
|
391
391
|
const tooltipBackground = asStr((0, _figmaVariablesResolver.getVariableByName)('tooltip/background', modes), '#0f0d0a');
|
|
392
392
|
const tooltipPaddingH = asNum((0, _figmaVariablesResolver.getVariableByName)('tooltip/padding/horizontal', modes), 12);
|
|
393
393
|
const tooltipPaddingV = asNum((0, _figmaVariablesResolver.getVariableByName)('tooltip/padding/vertical', modes), 8);
|
|
394
|
-
|
|
395
|
-
const
|
|
394
|
+
// Not yet in Coin Variables export (Figma still binds bare local radius/maxWidth).
|
|
395
|
+
const tooltipRadius = asNum((0, _figmaVariablesResolver.getVariableByName)('tooltip/radius', modes), 8);
|
|
396
|
+
const tooltipMaxWidth = asNum((0, _figmaVariablesResolver.getVariableByName)('tooltip/maxWidth', modes), 280);
|
|
396
397
|
const tipWidth = asNum((0, _figmaVariablesResolver.getVariableByName)('tooltip/tipItem/width', modes), 16);
|
|
397
398
|
const tipHeight = asNum((0, _figmaVariablesResolver.getVariableByName)('tooltip/tipItem/height', modes), 8);
|
|
398
399
|
const tooltipLabelColor = asStr((0, _figmaVariablesResolver.getVariableByName)('tooltip/label/color', modes), '#ffffff');
|
|
@@ -195,8 +195,10 @@ function TooltipContent({
|
|
|
195
195
|
const bgColor = (0, _figmaVariablesResolver.getVariableByName)('tooltip/background', modes);
|
|
196
196
|
const paddingH = Number((0, _figmaVariablesResolver.getVariableByName)('tooltip/padding/horizontal', modes));
|
|
197
197
|
const paddingV = Number((0, _figmaVariablesResolver.getVariableByName)('tooltip/padding/vertical', modes));
|
|
198
|
-
|
|
199
|
-
|
|
198
|
+
// Figma still binds bare local radius/maxWidth; published names are tooltip/*.
|
|
199
|
+
// Not yet in Coin Variables export — fall back to Figma values (8 / 280).
|
|
200
|
+
const radius = Number((0, _figmaVariablesResolver.getVariableByName)('tooltip/radius', modes) ?? 8);
|
|
201
|
+
const maxWidthToken = Number((0, _figmaVariablesResolver.getVariableByName)('tooltip/maxWidth', modes) ?? 280);
|
|
200
202
|
const arrowWidth = Number((0, _figmaVariablesResolver.getVariableByName)('tooltip/tipItem/width', modes));
|
|
201
203
|
const arrowHeight = Number((0, _figmaVariablesResolver.getVariableByName)('tooltip/tipItem/height', modes));
|
|
202
204
|
const labelColor = (0, _figmaVariablesResolver.getVariableByName)('tooltip/label/color', modes);
|