jfs-components 0.0.73 → 0.0.77
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 +115 -6
- package/lib/commonjs/components/AccountCard/AccountCard.js +247 -0
- package/lib/commonjs/components/ActionFooter/ActionFooter.js +147 -82
- package/lib/commonjs/components/AppBar/AppBar.js +17 -11
- package/lib/commonjs/components/Avatar/Avatar.js +20 -0
- package/lib/commonjs/components/Badge/Badge.js +23 -0
- package/lib/commonjs/components/Button/Button.js +37 -0
- package/lib/commonjs/components/CardBankAccount/CardBankAccount.js +18 -2
- package/lib/commonjs/components/CheckboxItem/CheckboxItem.js +40 -25
- package/lib/commonjs/components/Dropdown/Dropdown.js +214 -0
- package/lib/commonjs/components/DropdownInput/DropdownInput.js +542 -0
- package/lib/commonjs/components/FormField/FormField.js +328 -178
- package/lib/commonjs/components/IconButton/IconButton.js +20 -0
- package/lib/commonjs/components/Image/Image.js +26 -1
- package/lib/commonjs/components/LottieIntroBlock/LottieIntroBlock.js +150 -0
- package/lib/commonjs/components/LottiePlayer/LottiePlayer.js +116 -0
- package/lib/commonjs/components/LottiePlayer/LottiePlayer.web.js +82 -0
- package/lib/commonjs/components/LottiePlayer/loadNativeLottieView.js +74 -0
- package/lib/commonjs/components/LottiePlayer/loadWebLottieView.js +50 -0
- package/lib/commonjs/components/PageHero/PageHero.js +189 -0
- package/lib/commonjs/components/PoweredByLabel/PoweredByLabel.js +135 -0
- package/lib/commonjs/components/PoweredByLabel/finvu.png +0 -0
- package/lib/commonjs/components/RechargeCard/RechargeCard.js +32 -17
- package/lib/commonjs/components/Text/Text.js +40 -3
- package/lib/commonjs/components/Tooltip/Tooltip.js +34 -27
- package/lib/commonjs/components/index.js +67 -0
- package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/commonjs/icons/Icon.js +16 -0
- package/lib/commonjs/icons/registry.js +1 -1
- package/lib/commonjs/index.js +12 -0
- package/lib/commonjs/skeleton/Skeleton.js +234 -0
- package/lib/commonjs/skeleton/SkeletonGroup.js +140 -0
- package/lib/commonjs/skeleton/index.js +58 -0
- package/lib/commonjs/skeleton/shimmer-tokens.js +189 -0
- package/lib/commonjs/skeleton/useReducedMotion.js +64 -0
- package/lib/module/components/AccountCard/AccountCard.js +241 -0
- package/lib/module/components/ActionFooter/ActionFooter.js +146 -82
- package/lib/module/components/AppBar/AppBar.js +17 -11
- package/lib/module/components/Avatar/Avatar.js +19 -0
- package/lib/module/components/Badge/Badge.js +23 -0
- package/lib/module/components/Button/Button.js +37 -0
- package/lib/module/components/CardBankAccount/CardBankAccount.js +17 -2
- package/lib/module/components/CheckboxItem/CheckboxItem.js +41 -26
- package/lib/module/components/Dropdown/Dropdown.js +206 -0
- package/lib/module/components/DropdownInput/DropdownInput.js +536 -0
- package/lib/module/components/FormField/FormField.js +330 -180
- package/lib/module/components/IconButton/IconButton.js +20 -0
- package/lib/module/components/Image/Image.js +25 -1
- package/lib/module/components/LottieIntroBlock/LottieIntroBlock.js +144 -0
- package/lib/module/components/LottiePlayer/LottiePlayer.js +111 -0
- package/lib/module/components/LottiePlayer/LottiePlayer.web.js +77 -0
- package/lib/module/components/LottiePlayer/loadNativeLottieView.js +69 -0
- package/lib/module/components/LottiePlayer/loadWebLottieView.js +45 -0
- package/lib/module/components/PageHero/PageHero.js +183 -0
- package/lib/module/components/PoweredByLabel/PoweredByLabel.js +130 -0
- package/lib/module/components/PoweredByLabel/finvu.png +0 -0
- package/lib/module/components/RechargeCard/RechargeCard.js +33 -17
- package/lib/module/components/Text/Text.js +40 -3
- package/lib/module/components/Tooltip/Tooltip.js +34 -27
- package/lib/module/components/index.js +8 -1
- package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
- package/lib/module/icons/Icon.js +16 -0
- package/lib/module/icons/registry.js +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/skeleton/Skeleton.js +229 -0
- package/lib/module/skeleton/SkeletonGroup.js +133 -0
- package/lib/module/skeleton/index.js +6 -0
- package/lib/module/skeleton/shimmer-tokens.js +181 -0
- package/lib/module/skeleton/useReducedMotion.js +61 -0
- package/lib/typescript/src/components/AccountCard/AccountCard.d.ts +81 -0
- package/lib/typescript/src/components/ActionFooter/ActionFooter.d.ts +26 -21
- package/lib/typescript/src/components/Avatar/Avatar.d.ts +7 -1
- package/lib/typescript/src/components/Badge/Badge.d.ts +7 -1
- package/lib/typescript/src/components/Button/Button.d.ts +8 -1
- package/lib/typescript/src/components/CardBankAccount/CardBankAccount.d.ts +9 -2
- package/lib/typescript/src/components/CheckboxItem/CheckboxItem.d.ts +18 -2
- package/lib/typescript/src/components/Dropdown/Dropdown.d.ts +62 -0
- package/lib/typescript/src/components/DropdownInput/DropdownInput.d.ts +107 -0
- package/lib/typescript/src/components/FormField/FormField.d.ts +76 -19
- package/lib/typescript/src/components/IconButton/IconButton.d.ts +7 -1
- package/lib/typescript/src/components/Image/Image.d.ts +8 -1
- package/lib/typescript/src/components/LottieIntroBlock/LottieIntroBlock.d.ts +58 -0
- package/lib/typescript/src/components/LottiePlayer/LottiePlayer.d.ts +85 -0
- package/lib/typescript/src/components/LottiePlayer/LottiePlayer.web.d.ts +28 -0
- package/lib/typescript/src/components/LottiePlayer/loadNativeLottieView.d.ts +11 -0
- package/lib/typescript/src/components/LottiePlayer/loadWebLottieView.d.ts +11 -0
- package/lib/typescript/src/components/PageHero/PageHero.d.ts +79 -0
- package/lib/typescript/src/components/PoweredByLabel/PoweredByLabel.d.ts +70 -0
- package/lib/typescript/src/components/Text/Text.d.ts +31 -2
- package/lib/typescript/src/components/Tooltip/Tooltip.d.ts +13 -2
- package/lib/typescript/src/components/index.d.ts +8 -1
- package/lib/typescript/src/icons/Icon.d.ts +7 -1
- package/lib/typescript/src/icons/registry.d.ts +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/skeleton/Skeleton.d.ts +60 -0
- package/lib/typescript/src/skeleton/SkeletonGroup.d.ts +78 -0
- package/lib/typescript/src/skeleton/index.d.ts +5 -0
- package/lib/typescript/src/skeleton/shimmer-tokens.d.ts +160 -0
- package/lib/typescript/src/skeleton/useReducedMotion.d.ts +15 -0
- package/package.json +11 -3
- package/src/components/AccountCard/AccountCard.tsx +376 -0
- package/src/components/ActionFooter/ActionFooter.tsx +152 -86
- package/src/components/AppBar/AppBar.tsx +25 -14
- package/src/components/Avatar/Avatar.tsx +26 -0
- package/src/components/Badge/Badge.tsx +27 -0
- package/src/components/Button/Button.tsx +40 -0
- package/src/components/CardBankAccount/CardBankAccount.tsx +29 -3
- package/src/components/CheckboxItem/CheckboxItem.tsx +65 -30
- package/src/components/Dropdown/Dropdown.tsx +331 -0
- package/src/components/DropdownInput/DropdownInput.tsx +819 -0
- package/src/components/FormField/FormField.tsx +542 -215
- package/src/components/IconButton/IconButton.tsx +27 -0
- package/src/components/Image/Image.tsx +25 -0
- package/src/components/LottieIntroBlock/LottieIntroBlock.tsx +202 -0
- package/src/components/LottiePlayer/LottiePlayer.tsx +145 -0
- package/src/components/LottiePlayer/LottiePlayer.web.tsx +94 -0
- package/src/components/LottiePlayer/loadNativeLottieView.tsx +87 -0
- package/src/components/LottiePlayer/loadWebLottieView.tsx +64 -0
- package/src/components/PageHero/PageHero.tsx +257 -0
- package/src/components/PoweredByLabel/PoweredByLabel.tsx +221 -0
- package/src/components/PoweredByLabel/finvu.png +0 -0
- package/src/components/RechargeCard/RechargeCard.tsx +32 -24
- package/src/components/Text/Text.tsx +78 -3
- package/src/components/Tooltip/Tooltip.tsx +50 -25
- package/src/components/index.ts +16 -1
- package/src/design-tokens/Coin Variables-variables-full.json +1 -1
- package/src/icons/Icon.tsx +17 -0
- package/src/icons/registry.ts +1 -1
- package/src/index.ts +1 -0
- package/src/skeleton/Skeleton.tsx +298 -0
- package/src/skeleton/SkeletonGroup.tsx +193 -0
- package/src/skeleton/index.ts +10 -0
- package/src/skeleton/shimmer-tokens.ts +221 -0
- package/src/skeleton/useReducedMotion.ts +72 -0
|
@@ -0,0 +1,135 @@
|
|
|
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 _JFSThemeProvider = require("../../design-tokens/JFSThemeProvider");
|
|
11
|
+
var _reactUtils = require("../../utils/react-utils");
|
|
12
|
+
var _MediaSource = _interopRequireDefault(require("../../utils/MediaSource"));
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
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
|
+
// Default bundled FINVU brand logo, matching the Figma reference so the
|
|
17
|
+
// component renders correctly out of the box without any image prop.
|
|
18
|
+
const DEFAULT_LOGO = require('./finvu.png');
|
|
19
|
+
const DEFAULT_LABEL = 'Powered by RBI-regulated account aggregator';
|
|
20
|
+
const DEFAULT_IMAGE_WIDTH = 33;
|
|
21
|
+
const DEFAULT_IMAGE_HEIGHT = 12;
|
|
22
|
+
const toNumber = (value, fallback) => {
|
|
23
|
+
if (typeof value === 'number') return Number.isFinite(value) ? value : fallback;
|
|
24
|
+
if (typeof value === 'string') {
|
|
25
|
+
const parsed = Number(value);
|
|
26
|
+
return Number.isFinite(parsed) ? parsed : fallback;
|
|
27
|
+
}
|
|
28
|
+
return fallback;
|
|
29
|
+
};
|
|
30
|
+
const toFontWeight = (value, fallback) => {
|
|
31
|
+
if (typeof value === 'number') return String(value);
|
|
32
|
+
if (typeof value === 'string') return value;
|
|
33
|
+
return fallback;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* `PoweredByLabel` renders the small "Powered by RBI-regulated account
|
|
38
|
+
* aggregator" badge with a trailing brand logo, used to attribute the
|
|
39
|
+
* underlying account-aggregator partner in flows such as bank-account
|
|
40
|
+
* linking and consent screens.
|
|
41
|
+
*
|
|
42
|
+
* The component is composed of:
|
|
43
|
+
*
|
|
44
|
+
* 1. A token-styled pill container (`poweredByLabel/background`,
|
|
45
|
+
* `poweredByLabel/padding/*`).
|
|
46
|
+
* 2. The disclosure copy rendered through the `poweredByLabel/*` typography
|
|
47
|
+
* tokens.
|
|
48
|
+
* 3. A configurable brand logo slot. Defaults to the bundled FINVU mark, but
|
|
49
|
+
* callers can pass any image via `imageSource` or fully replace the slot
|
|
50
|
+
* via `imageSlot`.
|
|
51
|
+
*
|
|
52
|
+
* @component
|
|
53
|
+
* @param {PoweredByLabelProps} props
|
|
54
|
+
*/
|
|
55
|
+
function PoweredByLabel({
|
|
56
|
+
label = DEFAULT_LABEL,
|
|
57
|
+
imageSource,
|
|
58
|
+
imageWidth = DEFAULT_IMAGE_WIDTH,
|
|
59
|
+
imageHeight = DEFAULT_IMAGE_HEIGHT,
|
|
60
|
+
imageSlot,
|
|
61
|
+
modes: propModes = _reactUtils.EMPTY_MODES,
|
|
62
|
+
style,
|
|
63
|
+
textStyle,
|
|
64
|
+
imageStyle,
|
|
65
|
+
accessibilityLabel
|
|
66
|
+
}) {
|
|
67
|
+
const {
|
|
68
|
+
modes: globalModes
|
|
69
|
+
} = (0, _JFSThemeProvider.useTokens)();
|
|
70
|
+
const modes = (0, _react.useMemo)(() => globalModes === _reactUtils.EMPTY_MODES && propModes === _reactUtils.EMPTY_MODES ? _reactUtils.EMPTY_MODES : {
|
|
71
|
+
...globalModes,
|
|
72
|
+
...propModes
|
|
73
|
+
}, [globalModes, propModes]);
|
|
74
|
+
const background = (0, _figmaVariablesResolver.getVariableByName)('poweredByLabel/background', modes) ?? '#f5f5f5';
|
|
75
|
+
const foreground = (0, _figmaVariablesResolver.getVariableByName)('poweredByLabel/foreground', modes) ?? '#191b1e';
|
|
76
|
+
const fontFamily = (0, _figmaVariablesResolver.getVariableByName)('poweredByLabel/fontFamily', modes) ?? 'JioType Var';
|
|
77
|
+
const fontSize = toNumber((0, _figmaVariablesResolver.getVariableByName)('poweredByLabel/fontSize', modes), 10);
|
|
78
|
+
const lineHeight = toNumber((0, _figmaVariablesResolver.getVariableByName)('poweredByLabel/lineHeight', modes), 12);
|
|
79
|
+
const fontWeight = toFontWeight((0, _figmaVariablesResolver.getVariableByName)('poweredByLabel/fontWeight', modes), '400');
|
|
80
|
+
const gap = toNumber((0, _figmaVariablesResolver.getVariableByName)('poweredByLabel/gap', modes), 10);
|
|
81
|
+
const paddingHorizontal = toNumber((0, _figmaVariablesResolver.getVariableByName)('poweredByLabel/padding/horizontal', modes), 16);
|
|
82
|
+
const paddingVertical = toNumber((0, _figmaVariablesResolver.getVariableByName)('poweredByLabel/padding/vertical', modes), 6);
|
|
83
|
+
const containerStyle = {
|
|
84
|
+
flexDirection: 'row',
|
|
85
|
+
alignItems: 'center',
|
|
86
|
+
justifyContent: 'center',
|
|
87
|
+
backgroundColor: background,
|
|
88
|
+
paddingHorizontal,
|
|
89
|
+
paddingVertical,
|
|
90
|
+
gap,
|
|
91
|
+
// Hug content horizontally so the pill does not stretch to fill the
|
|
92
|
+
// parent (matches Badge, BrandChip, etc.). Override via `style` if
|
|
93
|
+
// you want it full-width (e.g. inside a card footer).
|
|
94
|
+
alignSelf: 'flex-start'
|
|
95
|
+
};
|
|
96
|
+
const labelTextStyle = {
|
|
97
|
+
color: foreground,
|
|
98
|
+
fontFamily,
|
|
99
|
+
fontSize,
|
|
100
|
+
lineHeight,
|
|
101
|
+
fontWeight,
|
|
102
|
+
textAlign: 'center',
|
|
103
|
+
flexShrink: 1
|
|
104
|
+
};
|
|
105
|
+
const renderImage = () => {
|
|
106
|
+
if (imageSlot !== undefined && imageSlot !== null) {
|
|
107
|
+
const processed = (0, _reactUtils.cloneChildrenWithModes)(imageSlot, modes);
|
|
108
|
+
if (processed.length === 0) return null;
|
|
109
|
+
return processed.length === 1 ? processed[0] : processed;
|
|
110
|
+
}
|
|
111
|
+
const resolvedSource = imageSource ?? DEFAULT_LOGO;
|
|
112
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MediaSource.default, {
|
|
113
|
+
source: resolvedSource,
|
|
114
|
+
width: imageWidth,
|
|
115
|
+
height: imageHeight,
|
|
116
|
+
resizeMode: "contain",
|
|
117
|
+
style: imageStyle,
|
|
118
|
+
accessibilityElementsHidden: true,
|
|
119
|
+
importantForAccessibility: "no"
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
123
|
+
accessibilityRole: "text",
|
|
124
|
+
accessibilityLabel: accessibilityLabel ?? label,
|
|
125
|
+
style: [containerStyle, style],
|
|
126
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
127
|
+
style: [labelTextStyle, textStyle],
|
|
128
|
+
accessibilityElementsHidden: true,
|
|
129
|
+
importantForAccessibility: "no",
|
|
130
|
+
numberOfLines: 1,
|
|
131
|
+
children: label
|
|
132
|
+
}), renderImage()]
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
var _default = exports.default = PoweredByLabel;
|
|
Binary file
|
|
@@ -13,6 +13,21 @@ var _reactUtils = require("../../utils/react-utils");
|
|
|
13
13
|
var _MoneyValue = _interopRequireDefault(require("../MoneyValue/MoneyValue"));
|
|
14
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
// Defaults applied to the inner ButtonGroup so the card matches Figma out of
|
|
17
|
+
// the box. They are spread *before* the caller's `modes` so any consumer can
|
|
18
|
+
// override an individual key (e.g. swap the size to "M").
|
|
19
|
+
const DEFAULT_BUTTON_GROUP_MODES = {
|
|
20
|
+
AppearanceBrand: 'Secondary',
|
|
21
|
+
'Button / Size': 'S',
|
|
22
|
+
Emphasis: 'High'
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// Defaults applied to the inner MoneyValue so the price renders at the
|
|
26
|
+
// 36 px / 900-weight scale defined for cards in Figma. Same merge rule as
|
|
27
|
+
// the button group — consumer `modes` override these.
|
|
28
|
+
const DEFAULT_MONEY_VALUE_MODES = {
|
|
29
|
+
Context3: 'Balance & Cards'
|
|
30
|
+
};
|
|
16
31
|
/**
|
|
17
32
|
* RechargeCard component implementation from Figma node 2235:937.
|
|
18
33
|
* Displays a recharge plan with price, validity, data, and subscription details.
|
|
@@ -28,17 +43,19 @@ function RechargeCard({
|
|
|
28
43
|
modes = _reactUtils.EMPTY_MODES,
|
|
29
44
|
style
|
|
30
45
|
}) {
|
|
31
|
-
// Container Tokens
|
|
32
|
-
const backgroundColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/background', modes) || '#
|
|
46
|
+
// Container Tokens (defaults mirror Figma node 2235:937).
|
|
47
|
+
const backgroundColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/background', modes) || '#ffffff';
|
|
33
48
|
const paddingHorizontal = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/padding/horizontal', modes) || 16, 10);
|
|
34
49
|
const paddingVertical = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/padding/vertical', modes) || 20, 10);
|
|
35
50
|
const gap = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/gap', modes) || 20, 10);
|
|
36
51
|
const radius = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/radius', modes) || 20, 10);
|
|
37
|
-
const minWidth = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/minWidth', modes) ||
|
|
52
|
+
const minWidth = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/minWidth', modes) || 312, 10);
|
|
53
|
+
const strokeWidth = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/strokeWidth', modes) || 1, 10);
|
|
54
|
+
const strokeColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/stroke/color', modes) || '#ebebed';
|
|
38
55
|
|
|
39
56
|
// Header Tokens
|
|
40
57
|
const headerGap = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/header/gap', modes) || 4, 10);
|
|
41
|
-
const titleColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/title/color', modes) || '#
|
|
58
|
+
const titleColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/title/color', modes) || '#000000';
|
|
42
59
|
const titleFontSize = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/title/fontSize', modes) || 12, 10);
|
|
43
60
|
const titleFontFamily = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/title/fontFamily', modes) || 'JioType Var';
|
|
44
61
|
const titleLineHeight = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/title/lineHeight', modes) || 14, 10);
|
|
@@ -49,30 +66,25 @@ function RechargeCard({
|
|
|
49
66
|
const specItemGap = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/gap', modes) || 4, 10);
|
|
50
67
|
|
|
51
68
|
// Spec Label Tokens
|
|
52
|
-
const specLabelColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/label/color', modes) || '#
|
|
69
|
+
const specLabelColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/label/color', modes) || '#000000';
|
|
53
70
|
const specLabelFontSize = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/label/fontSize', modes) || 12, 10);
|
|
54
71
|
const specLabelFontFamily = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/label/fontFamily', modes) || 'JioType Var';
|
|
55
72
|
const specLabelLineHeight = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/label/lineHeight', modes) || 14, 10);
|
|
56
73
|
const specLabelFontWeight = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/label/fontWeight', modes) || '500';
|
|
57
74
|
|
|
58
75
|
// Spec Value Tokens
|
|
59
|
-
const specValueColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/value/color', modes) || '#
|
|
76
|
+
const specValueColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/value/color', modes) || '#000000';
|
|
60
77
|
const specValueFontSize = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/value/fontSize', modes) || 14, 10);
|
|
61
78
|
const specValueFontFamily = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/value/fontFamily', modes) || 'JioType Var';
|
|
62
79
|
const specValueLineHeight = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/value/lineHeight', modes) || 17, 10);
|
|
63
80
|
const specValueFontWeight = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/specItem/value/fontWeight', modes) || '500';
|
|
64
81
|
|
|
65
82
|
// Disclaimer Tokens
|
|
66
|
-
const disclaimerColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/disclaimer/color', modes) || '#
|
|
83
|
+
const disclaimerColor = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/disclaimer/color', modes) || '#000000';
|
|
67
84
|
const disclaimerFontSize = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/disclaimer/fontSize', modes) || 10, 10);
|
|
68
85
|
const disclaimerFontFamily = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/disclaimer/fontFamily', modes) || 'JioType Var';
|
|
69
86
|
const disclaimerLineHeight = parseInt((0, _figmaVariablesResolver.getVariableByName)('rechargeCard/disclaimer/lineHeight', modes) || 13, 10);
|
|
70
87
|
const disclaimerFontWeight = (0, _figmaVariablesResolver.getVariableByName)('rechargeCard/disclaimer/fontWeight', modes) || '400';
|
|
71
|
-
|
|
72
|
-
// Button Group Tokens
|
|
73
|
-
// Handled by ButtonGroup component directly
|
|
74
|
-
|
|
75
|
-
// Helpers
|
|
76
88
|
const resolveFontWeight = weight => typeof weight === 'number' ? weight.toString() : weight;
|
|
77
89
|
|
|
78
90
|
// Pass modes to subscription children (e.g. AvatarGroup)
|
|
@@ -85,6 +97,8 @@ function RechargeCard({
|
|
|
85
97
|
paddingVertical,
|
|
86
98
|
gap,
|
|
87
99
|
borderRadius: radius,
|
|
100
|
+
borderWidth: strokeWidth,
|
|
101
|
+
borderColor: strokeColor,
|
|
88
102
|
minWidth,
|
|
89
103
|
alignItems: 'flex-start'
|
|
90
104
|
}, style],
|
|
@@ -105,7 +119,10 @@ function RechargeCard({
|
|
|
105
119
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_MoneyValue.default, {
|
|
106
120
|
value: price,
|
|
107
121
|
currency: "\u20B9",
|
|
108
|
-
modes:
|
|
122
|
+
modes: {
|
|
123
|
+
...DEFAULT_MONEY_VALUE_MODES,
|
|
124
|
+
...modes
|
|
125
|
+
}
|
|
109
126
|
})]
|
|
110
127
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
111
128
|
style: {
|
|
@@ -194,10 +211,8 @@ function RechargeCard({
|
|
|
194
211
|
children: disclaimer
|
|
195
212
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonGroup.default, {
|
|
196
213
|
modes: {
|
|
197
|
-
...
|
|
198
|
-
|
|
199
|
-
"Button / Size": "S",
|
|
200
|
-
"Emphasis": "High"
|
|
214
|
+
...DEFAULT_BUTTON_GROUP_MODES,
|
|
215
|
+
...modes
|
|
201
216
|
},
|
|
202
217
|
children: actions
|
|
203
218
|
})]
|
|
@@ -8,6 +8,8 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
|
|
10
10
|
var _reactUtils = require("../../utils/react-utils");
|
|
11
|
+
var _Skeleton = _interopRequireDefault(require("../../skeleton/Skeleton"));
|
|
12
|
+
var _SkeletonGroup = require("../../skeleton/SkeletonGroup");
|
|
11
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
15
|
const TEXT_ALIGN_MAP = {
|
|
@@ -15,11 +17,15 @@ const TEXT_ALIGN_MAP = {
|
|
|
15
17
|
Center: 'center'
|
|
16
18
|
};
|
|
17
19
|
function Text({
|
|
18
|
-
text
|
|
20
|
+
text,
|
|
21
|
+
children,
|
|
19
22
|
textAlign = 'Left',
|
|
20
23
|
modes = _reactUtils.EMPTY_MODES,
|
|
21
24
|
style,
|
|
22
|
-
numberOfLines
|
|
25
|
+
numberOfLines,
|
|
26
|
+
loading,
|
|
27
|
+
skeletonWidth,
|
|
28
|
+
skeletonLines
|
|
23
29
|
}) {
|
|
24
30
|
const foreground = (0, _figmaVariablesResolver.getVariableByName)('text/foreground', modes) ?? '#000000';
|
|
25
31
|
const fontFamily = (0, _figmaVariablesResolver.getVariableByName)('text/fontFamily', modes) ?? 'JioType';
|
|
@@ -27,6 +33,31 @@ function Text({
|
|
|
27
33
|
const fontWeight = (0, _figmaVariablesResolver.getVariableByName)('text/fontWeight', modes) ?? '500';
|
|
28
34
|
const lineHeight = (0, _figmaVariablesResolver.getVariableByName)('text/lineHeight', modes) ?? 20;
|
|
29
35
|
const letterSpacing = (0, _figmaVariablesResolver.getVariableByName)('text/letterSpacing', modes) ?? -0.5;
|
|
36
|
+
|
|
37
|
+
// Skeleton short-circuit. The hook is always called (stable order); the
|
|
38
|
+
// surrounding group's `active` flag is the default, but an explicit
|
|
39
|
+
// `loading` prop overrides both directions.
|
|
40
|
+
const {
|
|
41
|
+
active: groupActive
|
|
42
|
+
} = (0, _SkeletonGroup.useSkeleton)();
|
|
43
|
+
const isLoading = loading ?? groupActive;
|
|
44
|
+
if (isLoading) {
|
|
45
|
+
const resolvedFontSize = fontSize;
|
|
46
|
+
const resolvedLineHeight = lineHeight;
|
|
47
|
+
const lines = Math.max(1, skeletonLines ?? numberOfLines ?? 1);
|
|
48
|
+
// Heuristic width based on the actual content length so the placeholder
|
|
49
|
+
// visually matches what's about to load. Capped to a reasonable lower
|
|
50
|
+
// bound so very short labels still produce a visible block.
|
|
51
|
+
const contentLength = typeof children === 'string' ? children.length : typeof text === 'string' ? text.length : 12;
|
|
52
|
+
const charWidth = resolvedFontSize * 0.55;
|
|
53
|
+
const computedWidth = Math.max(charWidth * 4, contentLength * charWidth);
|
|
54
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.default, {
|
|
55
|
+
kind: "text",
|
|
56
|
+
width: skeletonWidth ?? computedWidth,
|
|
57
|
+
height: resolvedLineHeight * lines,
|
|
58
|
+
modes: modes
|
|
59
|
+
});
|
|
60
|
+
}
|
|
30
61
|
const textStyle = {
|
|
31
62
|
color: foreground,
|
|
32
63
|
fontFamily: fontFamily,
|
|
@@ -36,10 +67,16 @@ function Text({
|
|
|
36
67
|
letterSpacing: letterSpacing,
|
|
37
68
|
textAlign: TEXT_ALIGN_MAP[textAlign]
|
|
38
69
|
};
|
|
70
|
+
|
|
71
|
+
// Prefer JSX children when present, otherwise fall back to the `text` prop.
|
|
72
|
+
// Keep the storybook placeholder as a last resort so the Default story
|
|
73
|
+
// still renders something visible when no content is supplied via either
|
|
74
|
+
// route.
|
|
75
|
+
const content = children !== undefined && children !== null && children !== false ? children : text !== undefined ? text : 'Korem ipsum ';
|
|
39
76
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
40
77
|
style: [textStyle, style],
|
|
41
78
|
numberOfLines: numberOfLines,
|
|
42
|
-
children:
|
|
79
|
+
children: content
|
|
43
80
|
});
|
|
44
81
|
}
|
|
45
82
|
var _default = exports.default = Text;
|
|
@@ -172,7 +172,9 @@ function TooltipTrigger({
|
|
|
172
172
|
}
|
|
173
173
|
function TooltipContent({
|
|
174
174
|
children,
|
|
175
|
-
sideOffset = 4
|
|
175
|
+
sideOffset = 4,
|
|
176
|
+
gap = 4,
|
|
177
|
+
alignItems = 'flex-start'
|
|
176
178
|
}) {
|
|
177
179
|
const {
|
|
178
180
|
isVisible,
|
|
@@ -397,6 +399,35 @@ function TooltipContent({
|
|
|
397
399
|
paddingHorizontal: paddingH,
|
|
398
400
|
paddingVertical: paddingV
|
|
399
401
|
};
|
|
402
|
+
|
|
403
|
+
// Vertical slot wrapper: stack arbitrary children top-to-bottom with a gap.
|
|
404
|
+
// Raw <Text> children still get auto-styled with the tooltip label tokens
|
|
405
|
+
// so the simple <TooltipContent><Text>label</Text></TooltipContent> usage
|
|
406
|
+
// keeps working without any changes.
|
|
407
|
+
const slotStyle = {
|
|
408
|
+
flexDirection: 'column',
|
|
409
|
+
alignItems,
|
|
410
|
+
gap
|
|
411
|
+
};
|
|
412
|
+
const renderSlotChildren = () => {
|
|
413
|
+
if (typeof children === 'string') {
|
|
414
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
415
|
+
style: textStyle,
|
|
416
|
+
children: children
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
420
|
+
style: slotStyle,
|
|
421
|
+
children: _react.default.Children.map(children, child => {
|
|
422
|
+
if (/*#__PURE__*/_react.default.isValidElement(child) && (child.type === _reactNative.Text || child.type.displayName === 'Text')) {
|
|
423
|
+
return /*#__PURE__*/_react.default.cloneElement(child, {
|
|
424
|
+
style: [textStyle, child.props.style]
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
return child;
|
|
428
|
+
})
|
|
429
|
+
});
|
|
430
|
+
};
|
|
400
431
|
if (!hasMeasured) {
|
|
401
432
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
|
|
402
433
|
transparent: true,
|
|
@@ -408,19 +439,7 @@ function TooltipContent({
|
|
|
408
439
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
409
440
|
style: measureStyle,
|
|
410
441
|
onLayout: e => setContentSize(e.nativeEvent.layout),
|
|
411
|
-
children:
|
|
412
|
-
style: textStyle,
|
|
413
|
-
children: children
|
|
414
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
415
|
-
children: _react.default.Children.map(children, child => {
|
|
416
|
-
if (/*#__PURE__*/_react.default.isValidElement(child) && (child.type === _reactNative.Text || child.type.displayName === 'Text')) {
|
|
417
|
-
return /*#__PURE__*/_react.default.cloneElement(child, {
|
|
418
|
-
style: [textStyle, child.props.style]
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
return child;
|
|
422
|
-
})
|
|
423
|
-
})
|
|
442
|
+
children: renderSlotChildren()
|
|
424
443
|
})
|
|
425
444
|
})
|
|
426
445
|
});
|
|
@@ -451,19 +470,7 @@ function TooltipContent({
|
|
|
451
470
|
shadowRadius: 3.84,
|
|
452
471
|
elevation: 5
|
|
453
472
|
}],
|
|
454
|
-
children: [
|
|
455
|
-
style: textStyle,
|
|
456
|
-
children: children
|
|
457
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
458
|
-
children: _react.default.Children.map(children, child => {
|
|
459
|
-
if (/*#__PURE__*/_react.default.isValidElement(child) && (child.type === _reactNative.Text || child.type.displayName === 'Text')) {
|
|
460
|
-
return /*#__PURE__*/_react.default.cloneElement(child, {
|
|
461
|
-
style: [textStyle, child.props.style]
|
|
462
|
-
});
|
|
463
|
-
}
|
|
464
|
-
return child;
|
|
465
|
-
})
|
|
466
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
473
|
+
children: [renderSlotChildren(), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
467
474
|
style: {
|
|
468
475
|
position: 'absolute',
|
|
469
476
|
left: arrowX,
|
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "AccordionCheckbox", {
|
|
|
15
15
|
return _AccordionCheckbox.default;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "AccountCard", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _AccountCard.default;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "ActionFooter", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function () {
|
|
@@ -255,6 +261,24 @@ Object.defineProperty(exports, "Drawer", {
|
|
|
255
261
|
return _Drawer.default;
|
|
256
262
|
}
|
|
257
263
|
});
|
|
264
|
+
Object.defineProperty(exports, "Dropdown", {
|
|
265
|
+
enumerable: true,
|
|
266
|
+
get: function () {
|
|
267
|
+
return _Dropdown.default;
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
Object.defineProperty(exports, "DropdownInput", {
|
|
271
|
+
enumerable: true,
|
|
272
|
+
get: function () {
|
|
273
|
+
return _DropdownInput.default;
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
Object.defineProperty(exports, "DropdownItem", {
|
|
277
|
+
enumerable: true,
|
|
278
|
+
get: function () {
|
|
279
|
+
return _Dropdown.DropdownItem;
|
|
280
|
+
}
|
|
281
|
+
});
|
|
258
282
|
Object.defineProperty(exports, "EmptyState", {
|
|
259
283
|
enumerable: true,
|
|
260
284
|
get: function () {
|
|
@@ -357,6 +381,18 @@ Object.defineProperty(exports, "ListItem", {
|
|
|
357
381
|
return _ListItem.default;
|
|
358
382
|
}
|
|
359
383
|
});
|
|
384
|
+
Object.defineProperty(exports, "LottieIntroBlock", {
|
|
385
|
+
enumerable: true,
|
|
386
|
+
get: function () {
|
|
387
|
+
return _LottieIntroBlock.default;
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
Object.defineProperty(exports, "LottiePlayer", {
|
|
391
|
+
enumerable: true,
|
|
392
|
+
get: function () {
|
|
393
|
+
return _LottiePlayer.default;
|
|
394
|
+
}
|
|
395
|
+
});
|
|
360
396
|
Object.defineProperty(exports, "MediaCard", {
|
|
361
397
|
enumerable: true,
|
|
362
398
|
get: function () {
|
|
@@ -423,6 +459,12 @@ Object.defineProperty(exports, "OTPResend", {
|
|
|
423
459
|
return _OTP.OTPResend;
|
|
424
460
|
}
|
|
425
461
|
});
|
|
462
|
+
Object.defineProperty(exports, "PageHero", {
|
|
463
|
+
enumerable: true,
|
|
464
|
+
get: function () {
|
|
465
|
+
return _PageHero.default;
|
|
466
|
+
}
|
|
467
|
+
});
|
|
426
468
|
Object.defineProperty(exports, "PaymentFeedback", {
|
|
427
469
|
enumerable: true,
|
|
428
470
|
get: function () {
|
|
@@ -441,6 +483,12 @@ Object.defineProperty(exports, "PortfolioHero", {
|
|
|
441
483
|
return _PortfolioHero.default;
|
|
442
484
|
}
|
|
443
485
|
});
|
|
486
|
+
Object.defineProperty(exports, "PoweredByLabel", {
|
|
487
|
+
enumerable: true,
|
|
488
|
+
get: function () {
|
|
489
|
+
return _PoweredByLabel.default;
|
|
490
|
+
}
|
|
491
|
+
});
|
|
444
492
|
Object.defineProperty(exports, "ProductLabel", {
|
|
445
493
|
enumerable: true,
|
|
446
494
|
get: function () {
|
|
@@ -645,6 +693,18 @@ Object.defineProperty(exports, "Tooltip", {
|
|
|
645
693
|
return _Tooltip.Tooltip;
|
|
646
694
|
}
|
|
647
695
|
});
|
|
696
|
+
Object.defineProperty(exports, "TooltipContent", {
|
|
697
|
+
enumerable: true,
|
|
698
|
+
get: function () {
|
|
699
|
+
return _Tooltip.TooltipContent;
|
|
700
|
+
}
|
|
701
|
+
});
|
|
702
|
+
Object.defineProperty(exports, "TooltipTrigger", {
|
|
703
|
+
enumerable: true,
|
|
704
|
+
get: function () {
|
|
705
|
+
return _Tooltip.TooltipTrigger;
|
|
706
|
+
}
|
|
707
|
+
});
|
|
648
708
|
Object.defineProperty(exports, "TransactionBubble", {
|
|
649
709
|
enumerable: true,
|
|
650
710
|
get: function () {
|
|
@@ -711,6 +771,7 @@ Object.defineProperty(exports, "useToast", {
|
|
|
711
771
|
return _useToast.useToast;
|
|
712
772
|
}
|
|
713
773
|
});
|
|
774
|
+
var _AccountCard = _interopRequireDefault(require("./AccountCard/AccountCard"));
|
|
714
775
|
var _ActionFooter = _interopRequireDefault(require("./ActionFooter/ActionFooter"));
|
|
715
776
|
var _AppBar = _interopRequireDefault(require("./AppBar/AppBar"));
|
|
716
777
|
var _Avatar = _interopRequireDefault(require("./Avatar/Avatar"));
|
|
@@ -733,6 +794,8 @@ var _CardInsight = _interopRequireDefault(require("./CardInsight/CardInsight"));
|
|
|
733
794
|
var _Disclaimer = _interopRequireDefault(require("./Disclaimer/Disclaimer"));
|
|
734
795
|
var _Divider = _interopRequireDefault(require("./Divider/Divider"));
|
|
735
796
|
var _Drawer = _interopRequireDefault(require("./Drawer/Drawer"));
|
|
797
|
+
var _Dropdown = _interopRequireWildcard(require("./Dropdown/Dropdown"));
|
|
798
|
+
var _DropdownInput = _interopRequireDefault(require("./DropdownInput/DropdownInput"));
|
|
736
799
|
var _CardCTA = _interopRequireDefault(require("./CardCTA/CardCTA"));
|
|
737
800
|
var _DebitCard = _interopRequireDefault(require("./DebitCard/DebitCard"));
|
|
738
801
|
var _FilterBar = _interopRequireDefault(require("./FilterBar/FilterBar"));
|
|
@@ -754,6 +817,8 @@ var _LazyList = _interopRequireDefault(require("./LazyList/LazyList"));
|
|
|
754
817
|
var _LinearMeter = _interopRequireDefault(require("./LinearMeter/LinearMeter"));
|
|
755
818
|
var _LinearProgress = _interopRequireDefault(require("./LinearProgress/LinearProgress"));
|
|
756
819
|
var _ListGroup = _interopRequireDefault(require("./ListGroup/ListGroup"));
|
|
820
|
+
var _LottieIntroBlock = _interopRequireDefault(require("./LottieIntroBlock/LottieIntroBlock"));
|
|
821
|
+
var _LottiePlayer = _interopRequireDefault(require("./LottiePlayer/LottiePlayer"));
|
|
757
822
|
var _ListItem = _interopRequireDefault(require("./ListItem/ListItem"));
|
|
758
823
|
var _MediaCard = _interopRequireDefault(require("./MediaCard/MediaCard"));
|
|
759
824
|
var _MerchantProfile = _interopRequireDefault(require("./MerchantProfile/MerchantProfile"));
|
|
@@ -805,8 +870,10 @@ var _Toast = _interopRequireDefault(require("./Toast/Toast"));
|
|
|
805
870
|
var _ToastProvider = _interopRequireDefault(require("./Toast/ToastProvider"));
|
|
806
871
|
var _useToast = require("./Toast/useToast");
|
|
807
872
|
var _AmountInput = _interopRequireDefault(require("./AmountInput/AmountInput"));
|
|
873
|
+
var _PageHero = _interopRequireDefault(require("./PageHero/PageHero"));
|
|
808
874
|
var _Popup = _interopRequireDefault(require("./Popup/Popup"));
|
|
809
875
|
var _PortfolioHero = _interopRequireDefault(require("./PortfolioHero/PortfolioHero"));
|
|
876
|
+
var _PoweredByLabel = _interopRequireDefault(require("./PoweredByLabel/PoweredByLabel"));
|
|
810
877
|
var _ProductLabel = _interopRequireDefault(require("./ProductLabel/ProductLabel"));
|
|
811
878
|
var _ProductOverview = _interopRequireDefault(require("./ProductOverview/ProductOverview"));
|
|
812
879
|
var _ProgressBadge = _interopRequireDefault(require("./ProgressBadge/ProgressBadge"));
|