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.
Files changed (134) hide show
  1. package/CHANGELOG.md +115 -6
  2. package/lib/commonjs/components/AccountCard/AccountCard.js +247 -0
  3. package/lib/commonjs/components/ActionFooter/ActionFooter.js +147 -82
  4. package/lib/commonjs/components/AppBar/AppBar.js +17 -11
  5. package/lib/commonjs/components/Avatar/Avatar.js +20 -0
  6. package/lib/commonjs/components/Badge/Badge.js +23 -0
  7. package/lib/commonjs/components/Button/Button.js +37 -0
  8. package/lib/commonjs/components/CardBankAccount/CardBankAccount.js +18 -2
  9. package/lib/commonjs/components/CheckboxItem/CheckboxItem.js +40 -25
  10. package/lib/commonjs/components/Dropdown/Dropdown.js +214 -0
  11. package/lib/commonjs/components/DropdownInput/DropdownInput.js +542 -0
  12. package/lib/commonjs/components/FormField/FormField.js +328 -178
  13. package/lib/commonjs/components/IconButton/IconButton.js +20 -0
  14. package/lib/commonjs/components/Image/Image.js +26 -1
  15. package/lib/commonjs/components/LottieIntroBlock/LottieIntroBlock.js +150 -0
  16. package/lib/commonjs/components/LottiePlayer/LottiePlayer.js +116 -0
  17. package/lib/commonjs/components/LottiePlayer/LottiePlayer.web.js +82 -0
  18. package/lib/commonjs/components/LottiePlayer/loadNativeLottieView.js +74 -0
  19. package/lib/commonjs/components/LottiePlayer/loadWebLottieView.js +50 -0
  20. package/lib/commonjs/components/PageHero/PageHero.js +189 -0
  21. package/lib/commonjs/components/PoweredByLabel/PoweredByLabel.js +135 -0
  22. package/lib/commonjs/components/PoweredByLabel/finvu.png +0 -0
  23. package/lib/commonjs/components/RechargeCard/RechargeCard.js +32 -17
  24. package/lib/commonjs/components/Text/Text.js +40 -3
  25. package/lib/commonjs/components/Tooltip/Tooltip.js +34 -27
  26. package/lib/commonjs/components/index.js +67 -0
  27. package/lib/commonjs/design-tokens/Coin Variables-variables-full.json +1 -1
  28. package/lib/commonjs/icons/Icon.js +16 -0
  29. package/lib/commonjs/icons/registry.js +1 -1
  30. package/lib/commonjs/index.js +12 -0
  31. package/lib/commonjs/skeleton/Skeleton.js +234 -0
  32. package/lib/commonjs/skeleton/SkeletonGroup.js +140 -0
  33. package/lib/commonjs/skeleton/index.js +58 -0
  34. package/lib/commonjs/skeleton/shimmer-tokens.js +189 -0
  35. package/lib/commonjs/skeleton/useReducedMotion.js +64 -0
  36. package/lib/module/components/AccountCard/AccountCard.js +241 -0
  37. package/lib/module/components/ActionFooter/ActionFooter.js +146 -82
  38. package/lib/module/components/AppBar/AppBar.js +17 -11
  39. package/lib/module/components/Avatar/Avatar.js +19 -0
  40. package/lib/module/components/Badge/Badge.js +23 -0
  41. package/lib/module/components/Button/Button.js +37 -0
  42. package/lib/module/components/CardBankAccount/CardBankAccount.js +17 -2
  43. package/lib/module/components/CheckboxItem/CheckboxItem.js +41 -26
  44. package/lib/module/components/Dropdown/Dropdown.js +206 -0
  45. package/lib/module/components/DropdownInput/DropdownInput.js +536 -0
  46. package/lib/module/components/FormField/FormField.js +330 -180
  47. package/lib/module/components/IconButton/IconButton.js +20 -0
  48. package/lib/module/components/Image/Image.js +25 -1
  49. package/lib/module/components/LottieIntroBlock/LottieIntroBlock.js +144 -0
  50. package/lib/module/components/LottiePlayer/LottiePlayer.js +111 -0
  51. package/lib/module/components/LottiePlayer/LottiePlayer.web.js +77 -0
  52. package/lib/module/components/LottiePlayer/loadNativeLottieView.js +69 -0
  53. package/lib/module/components/LottiePlayer/loadWebLottieView.js +45 -0
  54. package/lib/module/components/PageHero/PageHero.js +183 -0
  55. package/lib/module/components/PoweredByLabel/PoweredByLabel.js +130 -0
  56. package/lib/module/components/PoweredByLabel/finvu.png +0 -0
  57. package/lib/module/components/RechargeCard/RechargeCard.js +33 -17
  58. package/lib/module/components/Text/Text.js +40 -3
  59. package/lib/module/components/Tooltip/Tooltip.js +34 -27
  60. package/lib/module/components/index.js +8 -1
  61. package/lib/module/design-tokens/Coin Variables-variables-full.json +1 -1
  62. package/lib/module/icons/Icon.js +16 -0
  63. package/lib/module/icons/registry.js +1 -1
  64. package/lib/module/index.js +2 -1
  65. package/lib/module/skeleton/Skeleton.js +229 -0
  66. package/lib/module/skeleton/SkeletonGroup.js +133 -0
  67. package/lib/module/skeleton/index.js +6 -0
  68. package/lib/module/skeleton/shimmer-tokens.js +181 -0
  69. package/lib/module/skeleton/useReducedMotion.js +61 -0
  70. package/lib/typescript/src/components/AccountCard/AccountCard.d.ts +81 -0
  71. package/lib/typescript/src/components/ActionFooter/ActionFooter.d.ts +26 -21
  72. package/lib/typescript/src/components/Avatar/Avatar.d.ts +7 -1
  73. package/lib/typescript/src/components/Badge/Badge.d.ts +7 -1
  74. package/lib/typescript/src/components/Button/Button.d.ts +8 -1
  75. package/lib/typescript/src/components/CardBankAccount/CardBankAccount.d.ts +9 -2
  76. package/lib/typescript/src/components/CheckboxItem/CheckboxItem.d.ts +18 -2
  77. package/lib/typescript/src/components/Dropdown/Dropdown.d.ts +62 -0
  78. package/lib/typescript/src/components/DropdownInput/DropdownInput.d.ts +107 -0
  79. package/lib/typescript/src/components/FormField/FormField.d.ts +76 -19
  80. package/lib/typescript/src/components/IconButton/IconButton.d.ts +7 -1
  81. package/lib/typescript/src/components/Image/Image.d.ts +8 -1
  82. package/lib/typescript/src/components/LottieIntroBlock/LottieIntroBlock.d.ts +58 -0
  83. package/lib/typescript/src/components/LottiePlayer/LottiePlayer.d.ts +85 -0
  84. package/lib/typescript/src/components/LottiePlayer/LottiePlayer.web.d.ts +28 -0
  85. package/lib/typescript/src/components/LottiePlayer/loadNativeLottieView.d.ts +11 -0
  86. package/lib/typescript/src/components/LottiePlayer/loadWebLottieView.d.ts +11 -0
  87. package/lib/typescript/src/components/PageHero/PageHero.d.ts +79 -0
  88. package/lib/typescript/src/components/PoweredByLabel/PoweredByLabel.d.ts +70 -0
  89. package/lib/typescript/src/components/Text/Text.d.ts +31 -2
  90. package/lib/typescript/src/components/Tooltip/Tooltip.d.ts +13 -2
  91. package/lib/typescript/src/components/index.d.ts +8 -1
  92. package/lib/typescript/src/icons/Icon.d.ts +7 -1
  93. package/lib/typescript/src/icons/registry.d.ts +1 -1
  94. package/lib/typescript/src/index.d.ts +1 -0
  95. package/lib/typescript/src/skeleton/Skeleton.d.ts +60 -0
  96. package/lib/typescript/src/skeleton/SkeletonGroup.d.ts +78 -0
  97. package/lib/typescript/src/skeleton/index.d.ts +5 -0
  98. package/lib/typescript/src/skeleton/shimmer-tokens.d.ts +160 -0
  99. package/lib/typescript/src/skeleton/useReducedMotion.d.ts +15 -0
  100. package/package.json +11 -3
  101. package/src/components/AccountCard/AccountCard.tsx +376 -0
  102. package/src/components/ActionFooter/ActionFooter.tsx +152 -86
  103. package/src/components/AppBar/AppBar.tsx +25 -14
  104. package/src/components/Avatar/Avatar.tsx +26 -0
  105. package/src/components/Badge/Badge.tsx +27 -0
  106. package/src/components/Button/Button.tsx +40 -0
  107. package/src/components/CardBankAccount/CardBankAccount.tsx +29 -3
  108. package/src/components/CheckboxItem/CheckboxItem.tsx +65 -30
  109. package/src/components/Dropdown/Dropdown.tsx +331 -0
  110. package/src/components/DropdownInput/DropdownInput.tsx +819 -0
  111. package/src/components/FormField/FormField.tsx +542 -215
  112. package/src/components/IconButton/IconButton.tsx +27 -0
  113. package/src/components/Image/Image.tsx +25 -0
  114. package/src/components/LottieIntroBlock/LottieIntroBlock.tsx +202 -0
  115. package/src/components/LottiePlayer/LottiePlayer.tsx +145 -0
  116. package/src/components/LottiePlayer/LottiePlayer.web.tsx +94 -0
  117. package/src/components/LottiePlayer/loadNativeLottieView.tsx +87 -0
  118. package/src/components/LottiePlayer/loadWebLottieView.tsx +64 -0
  119. package/src/components/PageHero/PageHero.tsx +257 -0
  120. package/src/components/PoweredByLabel/PoweredByLabel.tsx +221 -0
  121. package/src/components/PoweredByLabel/finvu.png +0 -0
  122. package/src/components/RechargeCard/RechargeCard.tsx +32 -24
  123. package/src/components/Text/Text.tsx +78 -3
  124. package/src/components/Tooltip/Tooltip.tsx +50 -25
  125. package/src/components/index.ts +16 -1
  126. package/src/design-tokens/Coin Variables-variables-full.json +1 -1
  127. package/src/icons/Icon.tsx +17 -0
  128. package/src/icons/registry.ts +1 -1
  129. package/src/index.ts +1 -0
  130. package/src/skeleton/Skeleton.tsx +298 -0
  131. package/src/skeleton/SkeletonGroup.tsx +193 -0
  132. package/src/skeleton/index.ts +10 -0
  133. package/src/skeleton/shimmer-tokens.ts +221 -0
  134. 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;
@@ -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) || '#f6f3ff';
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) || 328, 10);
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) || '#13002d';
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) || '#13002d';
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) || '#310064';
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) || '#22004a';
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: 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
- ...modes,
198
- "Appearance.Brand": "Secondary",
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 = 'Korem ipsum ',
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: text
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: typeof children === 'string' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
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: [typeof children === 'string' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
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"));