@compsych-ui-components/react-native 4.0.4 → 4.0.14

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 (172) hide show
  1. package/package.json +22 -14
  2. package/src/components/ActionSheet/index.d.ts +16 -0
  3. package/src/components/ActionSheet/index.js +256 -0
  4. package/src/components/ActionSheet/index.js.map +1 -0
  5. package/src/components/Alert/index.d.ts +24 -0
  6. package/src/components/Alert/index.js +304 -0
  7. package/src/components/Alert/index.js.map +1 -0
  8. package/src/components/Avatar/index.d.ts +22 -0
  9. package/src/components/Avatar/index.js +253 -0
  10. package/src/components/Avatar/index.js.map +1 -0
  11. package/src/components/Badge/index.d.ts +12 -0
  12. package/src/components/Badge/index.js +206 -0
  13. package/src/components/Badge/index.js.map +1 -0
  14. package/src/components/BodyText/index.d.ts +9 -0
  15. package/src/components/BodyText/index.js +58 -0
  16. package/src/components/BodyText/index.js.map +1 -0
  17. package/src/components/Breadcrumb/index.d.ts +24 -0
  18. package/src/components/Breadcrumb/index.js +194 -0
  19. package/src/components/Breadcrumb/index.js.map +1 -0
  20. package/src/components/Button/index.d.ts +16 -0
  21. package/src/components/Button/index.js +260 -0
  22. package/src/components/Button/index.js.map +1 -0
  23. package/src/components/Checkbox/index.d.ts +16 -0
  24. package/src/components/Checkbox/index.js +196 -0
  25. package/src/components/Checkbox/index.js.map +1 -0
  26. package/src/components/Chip/index.d.ts +18 -0
  27. package/src/components/Chip/index.js +280 -0
  28. package/src/components/Chip/index.js.map +1 -0
  29. package/src/components/Divider/index.d.ts +11 -0
  30. package/src/components/Divider/index.js +59 -0
  31. package/src/components/Divider/index.js.map +1 -0
  32. package/src/components/EmptyState/index.d.ts +25 -0
  33. package/src/components/EmptyState/index.js +376 -0
  34. package/src/components/EmptyState/index.js.map +1 -0
  35. package/src/components/HeaderText/index.d.ts +9 -0
  36. package/src/components/HeaderText/index.js +62 -0
  37. package/src/components/HeaderText/index.js.map +1 -0
  38. package/src/components/Input/index.d.ts +13 -0
  39. package/src/components/Input/index.js +231 -0
  40. package/src/components/Input/index.js.map +1 -0
  41. package/src/components/List/index.d.ts +19 -0
  42. package/src/components/List/index.js +170 -0
  43. package/src/components/List/index.js.map +1 -0
  44. package/src/components/Pagination/index.d.ts +15 -0
  45. package/src/components/Pagination/index.js +322 -0
  46. package/src/components/Pagination/index.js.map +1 -0
  47. package/src/components/PlanCard/index.d.ts +27 -0
  48. package/src/components/PlanCard/index.js +364 -0
  49. package/src/components/PlanCard/index.js.map +1 -0
  50. package/src/components/ProgressTracker/index.d.ts +26 -0
  51. package/src/components/ProgressTracker/index.js +180 -0
  52. package/src/components/ProgressTracker/index.js.map +1 -0
  53. package/src/components/PromotionCard/index.d.ts +23 -0
  54. package/src/components/PromotionCard/index.js +496 -0
  55. package/src/components/PromotionCard/index.js.map +1 -0
  56. package/src/components/RadioButton/index.d.ts +15 -0
  57. package/src/components/RadioButton/index.js +188 -0
  58. package/src/components/RadioButton/index.js.map +1 -0
  59. package/src/components/ScreenContainer/index.d.ts +15 -0
  60. package/src/components/ScreenContainer/index.js +43 -0
  61. package/src/components/ScreenContainer/index.js.map +1 -0
  62. package/src/components/SegmentedControl/index.d.ts +16 -0
  63. package/src/components/SegmentedControl/index.js +115 -0
  64. package/src/components/SegmentedControl/index.js.map +1 -0
  65. package/src/components/SelectionCard/index.d.ts +16 -0
  66. package/src/components/SelectionCard/index.js +222 -0
  67. package/src/components/SelectionCard/index.js.map +1 -0
  68. package/src/components/ServiceCard/index.d.ts +22 -0
  69. package/src/components/ServiceCard/index.js +385 -0
  70. package/src/components/ServiceCard/index.js.map +1 -0
  71. package/src/components/Slider/index.d.ts +24 -0
  72. package/src/components/Slider/index.js +320 -0
  73. package/src/components/Slider/index.js.map +1 -0
  74. package/src/components/Snackbar/index.d.ts +13 -0
  75. package/src/components/Snackbar/index.js +229 -0
  76. package/src/components/Snackbar/index.js.map +1 -0
  77. package/src/components/Switch/index.d.ts +14 -0
  78. package/src/components/Switch/index.js +221 -0
  79. package/src/components/Switch/index.js.map +1 -0
  80. package/src/components/Tooltip/index.d.ts +21 -0
  81. package/src/components/Tooltip/index.js +206 -0
  82. package/src/components/Tooltip/index.js.map +1 -0
  83. package/src/icons/AtomIcon.d.ts +2 -0
  84. package/src/icons/AtomIcon.js +85 -0
  85. package/src/icons/AtomIcon.js.map +1 -0
  86. package/src/icons/BinocularsIcon.d.ts +2 -0
  87. package/src/icons/BinocularsIcon.js +103 -0
  88. package/src/icons/BinocularsIcon.js.map +1 -0
  89. package/src/icons/FileChartColumnIncreasingIcon.d.ts +2 -0
  90. package/src/icons/FileChartColumnIncreasingIcon.js +97 -0
  91. package/src/icons/FileChartColumnIncreasingIcon.js.map +1 -0
  92. package/src/icons/FlagIcon.d.ts +2 -0
  93. package/src/icons/FlagIcon.js +71 -0
  94. package/src/icons/FlagIcon.js.map +1 -0
  95. package/src/icons/GlobeIcon.d.ts +2 -0
  96. package/src/icons/GlobeIcon.js +71 -0
  97. package/src/icons/GlobeIcon.js.map +1 -0
  98. package/src/icons/GraduationCapIcon.d.ts +2 -0
  99. package/src/icons/GraduationCapIcon.js +85 -0
  100. package/src/icons/GraduationCapIcon.js.map +1 -0
  101. package/src/icons/HandHeartIcon.d.ts +2 -0
  102. package/src/icons/HandHeartIcon.js +91 -0
  103. package/src/icons/HandHeartIcon.js.map +1 -0
  104. package/src/icons/HandshakeIcon.d.ts +2 -0
  105. package/src/icons/HandshakeIcon.js +97 -0
  106. package/src/icons/HandshakeIcon.js.map +1 -0
  107. package/src/icons/HazeIcon.d.ts +2 -0
  108. package/src/icons/HazeIcon.js +115 -0
  109. package/src/icons/HazeIcon.js.map +1 -0
  110. package/src/icons/HeartHandshakeIcon.d.ts +2 -0
  111. package/src/icons/HeartHandshakeIcon.js +71 -0
  112. package/src/icons/HeartHandshakeIcon.js.map +1 -0
  113. package/src/icons/HourglassIcon.d.ts +2 -0
  114. package/src/icons/HourglassIcon.js +91 -0
  115. package/src/icons/HourglassIcon.js.map +1 -0
  116. package/src/icons/IdCardIcon.d.ts +2 -0
  117. package/src/icons/IdCardIcon.js +97 -0
  118. package/src/icons/IdCardIcon.js.map +1 -0
  119. package/src/icons/MessageCirclePlusIcon.d.ts +2 -0
  120. package/src/icons/MessageCirclePlusIcon.js +85 -0
  121. package/src/icons/MessageCirclePlusIcon.js.map +1 -0
  122. package/src/icons/MountainSnowIcon.d.ts +2 -0
  123. package/src/icons/MountainSnowIcon.js +79 -0
  124. package/src/icons/MountainSnowIcon.js.map +1 -0
  125. package/src/icons/SnowflakeIcon.d.ts +2 -0
  126. package/src/icons/SnowflakeIcon.js +139 -0
  127. package/src/icons/SnowflakeIcon.js.map +1 -0
  128. package/src/icons/StethoscopeIcon.d.ts +2 -0
  129. package/src/icons/StethoscopeIcon.js +97 -0
  130. package/src/icons/StethoscopeIcon.js.map +1 -0
  131. package/src/icons/UserRoundIcon.d.ts +2 -0
  132. package/src/icons/UserRoundIcon.js +79 -0
  133. package/src/icons/UserRoundIcon.js.map +1 -0
  134. package/src/icons/WheatIcon.d.ts +2 -0
  135. package/src/icons/WheatIcon.js +115 -0
  136. package/src/icons/WheatIcon.js.map +1 -0
  137. package/src/icons/index.d.ts +22 -0
  138. package/src/icons/index.js +109 -0
  139. package/src/icons/index.js.map +1 -0
  140. package/src/icons/types.d.ts +16 -0
  141. package/src/icons/types.js +52 -0
  142. package/src/icons/types.js.map +1 -0
  143. package/src/index.d.ts +60 -2
  144. package/src/index.js +197 -5
  145. package/src/index.js.map +1 -1
  146. package/src/theme/ThemeContext.d.ts +258 -0
  147. package/src/theme/ThemeContext.js +15 -0
  148. package/src/theme/ThemeContext.js.map +1 -0
  149. package/src/theme/ThemeProvider.d.ts +27 -0
  150. package/src/theme/ThemeProvider.js +66 -0
  151. package/src/theme/ThemeProvider.js.map +1 -0
  152. package/src/theme/defaultTheme.d.ts +13 -0
  153. package/src/theme/defaultTheme.js +14 -0
  154. package/src/theme/defaultTheme.js.map +1 -0
  155. package/src/theme/index.d.ts +5 -0
  156. package/src/theme/index.js +26 -0
  157. package/src/theme/index.js.map +1 -0
  158. package/src/theme/mergeTheme.d.ts +7 -0
  159. package/src/theme/mergeTheme.js +40 -0
  160. package/src/theme/mergeTheme.js.map +1 -0
  161. package/src/theme/types.d.ts +25 -0
  162. package/src/theme/types.js +6 -0
  163. package/src/theme/types.js.map +1 -0
  164. package/src/theme/useTheme.d.ts +10 -0
  165. package/src/theme/useTheme.js +17 -0
  166. package/src/theme/useTheme.js.map +1 -0
  167. package/src/tokens.d.ts +253 -0
  168. package/src/tokens.js +265 -0
  169. package/src/tokens.js.map +1 -0
  170. package/src/lib/button.d.ts +0 -7
  171. package/src/lib/button.js +0 -58
  172. package/src/lib/button.js.map +0 -1
@@ -0,0 +1,496 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PromotionCard", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PromotionCard;
9
+ }
10
+ });
11
+ const _jsxruntime = require("react/jsx-runtime");
12
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
13
+ const _reactnative = require("react-native");
14
+ const _vectoricons = require("@expo/vector-icons");
15
+ const _reactnativesvg = /*#__PURE__*/ _interop_require_wildcard(require("react-native-svg"));
16
+ const _theme = require("../../theme");
17
+ const _BodyText = require("../BodyText");
18
+ const _HeaderText = require("../HeaderText");
19
+ function _getRequireWildcardCache(nodeInterop) {
20
+ if (typeof WeakMap !== "function") return null;
21
+ var cacheBabelInterop = new WeakMap();
22
+ var cacheNodeInterop = new WeakMap();
23
+ return (_getRequireWildcardCache = function(nodeInterop) {
24
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
25
+ })(nodeInterop);
26
+ }
27
+ function _interop_require_wildcard(obj, nodeInterop) {
28
+ if (!nodeInterop && obj && obj.__esModule) {
29
+ return obj;
30
+ }
31
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
32
+ return {
33
+ default: obj
34
+ };
35
+ }
36
+ var cache = _getRequireWildcardCache(nodeInterop);
37
+ if (cache && cache.has(obj)) {
38
+ return cache.get(obj);
39
+ }
40
+ var newObj = {
41
+ __proto__: null
42
+ };
43
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
44
+ for(var key in obj){
45
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
46
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
47
+ if (desc && (desc.get || desc.set)) {
48
+ Object.defineProperty(newObj, key, desc);
49
+ } else {
50
+ newObj[key] = obj[key];
51
+ }
52
+ }
53
+ }
54
+ newObj.default = obj;
55
+ if (cache) {
56
+ cache.set(obj, newObj);
57
+ }
58
+ return newObj;
59
+ }
60
+ const MD_HEIGHT = 197;
61
+ const LG_HEIGHT = 363;
62
+ const MD_BUTTON = 32;
63
+ const LG_BUTTON = 48;
64
+ const MD_RING_R = 14;
65
+ const LG_RING_R = 21;
66
+ const MD_RING_C = 2 * Math.PI * MD_RING_R;
67
+ const LG_RING_C = 2 * Math.PI * LG_RING_R;
68
+ const LG_DOTS_BOTTOM = 53;
69
+ const LG_DOTS_LEFT = 32;
70
+ const LG_DOT_SIZE = 6;
71
+ const LG_DOT_GAP = 4;
72
+ const LG_DOT_COUNT = 5;
73
+ function PromotionCard({ size = 'md', variant = 'filled', usage = 'neutral', title, description, chipLabel, chipIcon, image, progress = 0.25, showProgressBar = true, showRingTimer = true, onPress, disabled = false, accessibilityLabel, style }) {
74
+ const { colorRoles: cr, dimensions: dim } = (0, _theme.useTheme)();
75
+ const tokens = (0, _react.useMemo)(()=>({
76
+ filled: {
77
+ neutral: {
78
+ cardBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
79
+ chipBg: cr.surface.surfaceContainer.sysSurfaceContainerHighest,
80
+ chipTextColor: cr.surface.surface.sysOnSurface,
81
+ titleColor: '#0f0f0f',
82
+ descColor: cr.surface.surface.sysOnSurfaceVariant,
83
+ descOpacity: 1,
84
+ buttonBg: cr.addOn.primaryFixed.sysPrimaryFixedDim,
85
+ buttonIconColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,
86
+ progressColor: cr.accent.primary.sysPrimary
87
+ },
88
+ informative: {
89
+ cardBg: cr.custom.info.sysOnInfoContainer,
90
+ chipBg: cr.custom.info.sysInfoContainer,
91
+ chipTextColor: cr.custom.info.sysOnInfoContainer,
92
+ titleColor: cr.custom.info.sysOnInfo,
93
+ descColor: cr.transparent.neutral.sysWhite80,
94
+ descOpacity: 1,
95
+ buttonBg: cr.custom.info.sysOnInfo,
96
+ buttonIconColor: cr.custom.info.sysOnInfoContainer,
97
+ progressColor: cr.custom.info.sysOnInfo
98
+ },
99
+ positive: {
100
+ cardBg: cr.custom.success.sysOnSuccessContainer,
101
+ chipBg: cr.custom.success.sysSuccessContainer,
102
+ chipTextColor: cr.custom.success.sysOnSuccessContainer,
103
+ titleColor: cr.custom.success.sysOnSuccess,
104
+ descColor: cr.transparent.neutral.sysWhite80,
105
+ descOpacity: 1,
106
+ buttonBg: cr.custom.success.sysOnSuccess,
107
+ buttonIconColor: cr.custom.success.sysOnSuccessContainer,
108
+ progressColor: cr.custom.success.sysOnSuccess
109
+ },
110
+ danger: {
111
+ cardBg: cr.error.sysOnErrorContainer,
112
+ chipBg: cr.error.sysErrorContainer,
113
+ chipTextColor: cr.error.sysOnErrorContainer,
114
+ titleColor: cr.error.sysOnError,
115
+ descColor: cr.transparent.neutral.sysWhite80,
116
+ descOpacity: 1,
117
+ buttonBg: cr.error.sysOnError,
118
+ buttonIconColor: cr.error.sysOnErrorContainer,
119
+ progressColor: cr.error.sysOnError
120
+ },
121
+ warning: {
122
+ cardBg: cr.custom.warning.sysOnWarningContainer,
123
+ chipBg: cr.custom.warning.sysWarningContainer,
124
+ chipTextColor: cr.custom.warning.sysOnWarningContainer,
125
+ titleColor: cr.custom.warning.sysOnWarning,
126
+ descColor: cr.transparent.neutral.sysWhite80,
127
+ descOpacity: 1,
128
+ buttonBg: cr.custom.warning.sysOnWarning,
129
+ buttonIconColor: cr.custom.warning.sysOnWarningContainer,
130
+ progressColor: cr.custom.warning.sysOnWarning
131
+ },
132
+ image: {
133
+ cardBg: 'transparent',
134
+ chipBg: 'rgba(255,255,255,0.2)',
135
+ chipTextColor: cr.surface.inverse.sysInverseOnSurface,
136
+ titleColor: cr.accent.primary.sysOnPrimary,
137
+ descColor: cr.transparent.neutral.sysWhite80,
138
+ descOpacity: 1,
139
+ buttonBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
140
+ buttonIconColor: cr.surface.surface.sysOnSurface,
141
+ progressColor: cr.accent.primary.sysOnPrimary
142
+ }
143
+ },
144
+ tonal: {
145
+ neutral: {
146
+ cardBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
147
+ chipBg: cr.surface.surfaceContainer.sysSurfaceContainerHighest,
148
+ chipTextColor: cr.surface.surface.sysOnSurface,
149
+ titleColor: '#0f0f0f',
150
+ descColor: cr.surface.surface.sysOnSurfaceVariant,
151
+ descOpacity: 1,
152
+ buttonBg: cr.addOn.primaryFixed.sysPrimaryFixedDim,
153
+ buttonIconColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,
154
+ progressColor: cr.accent.primary.sysPrimary
155
+ },
156
+ informative: {
157
+ cardBg: cr.custom.info.sysInfoContainer,
158
+ chipBg: cr.custom.info.sysOnInfo,
159
+ chipTextColor: cr.custom.info.sysOnInfoContainer,
160
+ titleColor: cr.custom.info.sysOnInfoContainer,
161
+ descColor: cr.custom.info.sysOnInfoContainer,
162
+ descOpacity: 0.64,
163
+ buttonBg: cr.custom.info.sysInfo,
164
+ buttonIconColor: cr.custom.info.sysOnInfo,
165
+ progressColor: cr.custom.info.sysInfo
166
+ },
167
+ positive: {
168
+ cardBg: cr.custom.success.sysSuccessContainer,
169
+ chipBg: cr.custom.success.sysOnSuccess,
170
+ chipTextColor: cr.custom.success.sysOnSuccessContainer,
171
+ titleColor: cr.custom.success.sysOnSuccessContainer,
172
+ descColor: cr.custom.success.sysOnSuccessContainer,
173
+ descOpacity: 0.64,
174
+ buttonBg: cr.custom.success.sysSuccess,
175
+ buttonIconColor: cr.custom.success.sysOnSuccess,
176
+ progressColor: cr.custom.success.sysSuccess
177
+ },
178
+ danger: {
179
+ cardBg: cr.error.sysErrorContainer,
180
+ chipBg: cr.error.sysOnError,
181
+ chipTextColor: cr.error.sysOnErrorContainer,
182
+ titleColor: cr.error.sysOnErrorContainer,
183
+ descColor: cr.error.sysOnErrorContainer,
184
+ descOpacity: 0.64,
185
+ buttonBg: cr.error.sysError,
186
+ buttonIconColor: cr.error.sysOnError,
187
+ progressColor: cr.error.sysError
188
+ },
189
+ warning: {
190
+ cardBg: cr.custom.warning.sysWarningContainer,
191
+ chipBg: cr.custom.warning.sysOnWarning,
192
+ chipTextColor: cr.custom.warning.sysOnWarningContainer,
193
+ titleColor: cr.custom.warning.sysOnWarningContainer,
194
+ descColor: cr.custom.warning.sysOnWarningContainer,
195
+ descOpacity: 0.64,
196
+ buttonBg: cr.custom.warning.sysWarning,
197
+ buttonIconColor: cr.custom.warning.sysOnWarning,
198
+ progressColor: cr.custom.warning.sysWarning
199
+ },
200
+ image: {
201
+ cardBg: 'transparent',
202
+ chipBg: 'rgba(255,255,255,0.2)',
203
+ chipTextColor: cr.surface.inverse.sysInverseOnSurface,
204
+ titleColor: cr.accent.primary.sysOnPrimary,
205
+ descColor: cr.transparent.neutral.sysWhite80,
206
+ descOpacity: 1,
207
+ buttonBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
208
+ buttonIconColor: cr.surface.surface.sysOnSurface,
209
+ progressColor: cr.accent.primary.sysOnPrimary
210
+ }
211
+ }
212
+ }), [
213
+ cr
214
+ ]);
215
+ // lg tokens: neutral uses filled, others use tonal
216
+ function getLgTokens(u) {
217
+ if (u === 'neutral') return tokens.filled.neutral;
218
+ return tokens.tonal[u];
219
+ }
220
+ const isLg = size === 'lg';
221
+ const t = isLg ? getLgTokens(usage) : tokens[variant][usage];
222
+ const isImage = usage === 'image';
223
+ const p = Math.max(0, Math.min(1, progress));
224
+ const buttonSize = isLg ? LG_BUTTON : MD_BUTTON;
225
+ const ringR = isLg ? LG_RING_R : MD_RING_R;
226
+ const ringC = isLg ? LG_RING_C : MD_RING_C;
227
+ const ringArcLength = ringC * p;
228
+ const containerStyle = [
229
+ styles.card,
230
+ isLg ? {
231
+ height: LG_HEIGHT,
232
+ borderRadius: dim.borderRadius.sysRadiusXl,
233
+ padding: dim.spacing.padding.sysPadding32,
234
+ flexDirection: 'column',
235
+ gap: dim.spacing.padding.sysPadding24
236
+ } : {
237
+ height: MD_HEIGHT,
238
+ borderRadius: dim.borderRadius.sysRadiusLg,
239
+ paddingHorizontal: dim.spacing.padding.sysPadding16,
240
+ paddingVertical: dim.spacing.padding.sysPadding16,
241
+ justifyContent: 'space-between'
242
+ },
243
+ {
244
+ backgroundColor: t.cardBg,
245
+ opacity: disabled ? 0.48 : 1
246
+ },
247
+ style
248
+ ];
249
+ const inner = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
250
+ children: [
251
+ isImage && image && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
252
+ children: [
253
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Image, {
254
+ source: image,
255
+ style: [
256
+ _reactnative.StyleSheet.absoluteFill,
257
+ {
258
+ borderRadius: isLg ? dim.borderRadius.sysRadiusXl : dim.borderRadius.sysRadiusLg
259
+ }
260
+ ],
261
+ resizeMode: "cover",
262
+ accessible: false
263
+ }),
264
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
265
+ style: [
266
+ _reactnative.StyleSheet.absoluteFill,
267
+ {
268
+ borderRadius: isLg ? dim.borderRadius.sysRadiusXl : dim.borderRadius.sysRadiusLg,
269
+ backgroundColor: 'rgba(0,0,0,0.35)'
270
+ }
271
+ ],
272
+ pointerEvents: "none"
273
+ })
274
+ ]
275
+ }),
276
+ chipLabel && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
277
+ style: [
278
+ isLg ? {
279
+ flexDirection: 'row',
280
+ alignItems: 'center',
281
+ alignSelf: 'flex-start',
282
+ borderRadius: dim.borderRadius.sysRadiusFull,
283
+ paddingHorizontal: dim.spacing.padding.sysPadding16,
284
+ paddingVertical: dim.spacing.padding.sysPadding4,
285
+ gap: dim.spacing.padding.sysPadding8,
286
+ height: 32
287
+ } : {
288
+ flexDirection: 'row',
289
+ alignItems: 'center',
290
+ alignSelf: 'flex-start',
291
+ borderRadius: dim.borderRadius.sysRadiusFull,
292
+ paddingHorizontal: dim.spacing.padding.sysPadding12,
293
+ paddingVertical: dim.spacing.padding.sysPadding4,
294
+ gap: dim.spacing.padding.sysPadding4,
295
+ height: 24
296
+ },
297
+ {
298
+ backgroundColor: t.chipBg
299
+ }
300
+ ],
301
+ children: [
302
+ chipIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
303
+ style: isLg ? {
304
+ width: 20,
305
+ height: 20,
306
+ alignItems: 'center',
307
+ justifyContent: 'center'
308
+ } : {
309
+ width: 16,
310
+ height: 16,
311
+ alignItems: 'center',
312
+ justifyContent: 'center'
313
+ },
314
+ children: chipIcon
315
+ }),
316
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_BodyText.BodyText, {
317
+ variant: "labelMedium",
318
+ color: t.chipTextColor,
319
+ children: chipLabel
320
+ })
321
+ ]
322
+ }),
323
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
324
+ style: isLg ? {
325
+ gap: dim.spacing.padding.sysPadding8,
326
+ flex: 1
327
+ } : {
328
+ gap: dim.spacing.padding.sysPadding4,
329
+ maxWidth: '78%'
330
+ },
331
+ children: [
332
+ title && (isLg ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_HeaderText.HeaderText, {
333
+ variant: "titleLarge",
334
+ color: t.titleColor,
335
+ children: title
336
+ }) : /*#__PURE__*/ (0, _jsxruntime.jsx)(_HeaderText.HeaderText, {
337
+ variant: "titleSmall",
338
+ color: t.titleColor,
339
+ children: title
340
+ })),
341
+ description && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
342
+ style: {
343
+ opacity: t.descOpacity
344
+ },
345
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_BodyText.BodyText, {
346
+ variant: isLg ? 'medium' : 'small',
347
+ color: t.descColor,
348
+ children: description
349
+ })
350
+ })
351
+ ]
352
+ }),
353
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
354
+ style: [
355
+ styles.buttonWrap,
356
+ {
357
+ bottom: isLg ? dim.spacing.padding.sysPadding32 : dim.spacing.padding.sysPadding16,
358
+ right: isLg ? dim.spacing.padding.sysPadding32 : dim.spacing.padding.sysPadding16,
359
+ width: buttonSize,
360
+ height: buttonSize
361
+ }
362
+ ],
363
+ children: [
364
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
365
+ style: [
366
+ styles.button,
367
+ {
368
+ width: buttonSize,
369
+ height: buttonSize,
370
+ borderRadius: dim.borderRadius.sysRadiusFull,
371
+ backgroundColor: t.buttonBg
372
+ }
373
+ ],
374
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_vectoricons.Ionicons, {
375
+ name: "arrow-forward",
376
+ size: isLg ? 24 : 16,
377
+ color: t.buttonIconColor,
378
+ accessible: false
379
+ })
380
+ }),
381
+ showRingTimer && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnativesvg.default, {
382
+ width: buttonSize,
383
+ height: buttonSize,
384
+ style: _reactnative.StyleSheet.absoluteFill,
385
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnativesvg.Circle, {
386
+ cx: buttonSize / 2,
387
+ cy: buttonSize / 2,
388
+ r: ringR,
389
+ stroke: t.progressColor,
390
+ strokeWidth: 2,
391
+ fill: "transparent",
392
+ strokeDasharray: `${ringArcLength} ${ringC - ringArcLength}`,
393
+ strokeLinecap: "round",
394
+ rotation: -90,
395
+ origin: `${buttonSize / 2}, ${buttonSize / 2}`
396
+ })
397
+ })
398
+ ]
399
+ }),
400
+ isLg && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
401
+ style: styles.dotsRow,
402
+ children: [
403
+ ...Array(LG_DOT_COUNT)
404
+ ].map((_, i)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
405
+ style: [
406
+ styles.dot,
407
+ {
408
+ backgroundColor: i === 0 ? t.progressColor : 'transparent',
409
+ borderColor: t.progressColor,
410
+ borderWidth: i === 0 ? 0 : 1.5,
411
+ opacity: i === 0 ? 1 : 0.4
412
+ }
413
+ ]
414
+ }, i))
415
+ }),
416
+ showProgressBar && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
417
+ style: [
418
+ styles.progressTrack,
419
+ {
420
+ height: isLg ? 4 : 2
421
+ }
422
+ ],
423
+ pointerEvents: "none",
424
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
425
+ style: [
426
+ styles.progressFill,
427
+ {
428
+ width: `${p * 100}%`,
429
+ height: isLg ? 4 : 2,
430
+ backgroundColor: t.progressColor
431
+ }
432
+ ]
433
+ })
434
+ })
435
+ ]
436
+ });
437
+ if (onPress) {
438
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
439
+ onPress: disabled ? undefined : onPress,
440
+ accessibilityRole: "button",
441
+ accessibilityLabel: accessibilityLabel ?? title,
442
+ accessibilityState: {
443
+ disabled
444
+ },
445
+ style: ({ pressed })=>[
446
+ ...containerStyle,
447
+ pressed && !disabled && styles.pressed
448
+ ],
449
+ children: inner
450
+ });
451
+ }
452
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
453
+ style: containerStyle,
454
+ children: inner
455
+ });
456
+ }
457
+ const styles = _reactnative.StyleSheet.create({
458
+ card: {
459
+ overflow: 'hidden',
460
+ alignSelf: 'stretch'
461
+ },
462
+ buttonWrap: {
463
+ position: 'absolute'
464
+ },
465
+ button: {
466
+ alignItems: 'center',
467
+ justifyContent: 'center',
468
+ overflow: 'hidden'
469
+ },
470
+ dotsRow: {
471
+ position: 'absolute',
472
+ bottom: LG_DOTS_BOTTOM,
473
+ left: LG_DOTS_LEFT,
474
+ flexDirection: 'row',
475
+ alignItems: 'center',
476
+ gap: LG_DOT_GAP
477
+ },
478
+ dot: {
479
+ width: LG_DOT_SIZE,
480
+ height: LG_DOT_SIZE,
481
+ borderRadius: LG_DOT_SIZE / 2
482
+ },
483
+ progressTrack: {
484
+ position: 'absolute',
485
+ bottom: 0,
486
+ left: 0,
487
+ right: 0,
488
+ backgroundColor: 'rgba(0,0,0,0.08)'
489
+ },
490
+ progressFill: {},
491
+ pressed: {
492
+ opacity: 0.84
493
+ }
494
+ });
495
+
496
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/PromotionCard/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\n\r\nimport {\r\n Image,\r\n type ImageSourcePropType,\r\n Pressable,\r\n StyleProp,\r\n StyleSheet,\r\n View,\r\n ViewStyle,\r\n} from 'react-native';\r\n\r\nimport { Ionicons } from '@expo/vector-icons';\r\nimport Svg, { Circle as SvgCircle } from 'react-native-svg';\r\n\r\nimport { useTheme } from '../../theme';\r\nimport { BodyText } from '../BodyText';\r\nimport { HeaderText } from '../HeaderText';\r\n\r\nexport type PromotionCardVariant = 'filled' | 'tonal';\r\nexport type PromotionCardUsage =\r\n | 'neutral'\r\n | 'informative'\r\n | 'positive'\r\n | 'danger'\r\n | 'warning'\r\n | 'image';\r\nexport type PromotionCardSize = 'md' | 'lg';\r\n\r\nexport interface PromotionCardProps {\r\n size?: PromotionCardSize;\r\n variant?: PromotionCardVariant;\r\n usage?: PromotionCardUsage;\r\n title?: string;\r\n description?: string;\r\n chipLabel?: string;\r\n chipIcon?: React.ReactNode;\r\n image?: ImageSourcePropType;\r\n progress?: number;\r\n showProgressBar?: boolean;\r\n showRingTimer?: boolean;\r\n onPress?: () => void;\r\n disabled?: boolean;\r\n accessibilityLabel?: string;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\ntype VariantTokens = {\r\n cardBg: string;\r\n chipBg: string;\r\n chipTextColor: string;\r\n titleColor: string;\r\n descColor: string;\r\n descOpacity: number;\r\n buttonBg: string;\r\n buttonIconColor: string;\r\n progressColor: string;\r\n};\r\n\r\nconst MD_HEIGHT = 197;\r\nconst LG_HEIGHT = 363;\r\nconst MD_BUTTON = 32;\r\nconst LG_BUTTON = 48;\r\nconst MD_RING_R = 14;\r\nconst LG_RING_R = 21;\r\nconst MD_RING_C = 2 * Math.PI * MD_RING_R;\r\nconst LG_RING_C = 2 * Math.PI * LG_RING_R;\r\nconst LG_DOTS_BOTTOM = 53;\r\nconst LG_DOTS_LEFT = 32;\r\nconst LG_DOT_SIZE = 6;\r\nconst LG_DOT_GAP = 4;\r\nconst LG_DOT_COUNT = 5;\r\n\r\nexport function PromotionCard({\r\n size = 'md',\r\n variant = 'filled',\r\n usage = 'neutral',\r\n title,\r\n description,\r\n chipLabel,\r\n chipIcon,\r\n image,\r\n progress = 0.25,\r\n showProgressBar = true,\r\n showRingTimer = true,\r\n onPress,\r\n disabled = false,\r\n accessibilityLabel,\r\n style,\r\n}: PromotionCardProps) {\r\n const { colorRoles: cr, dimensions: dim } = useTheme();\r\n\r\n const tokens = useMemo(\r\n (): Record<\r\n PromotionCardVariant,\r\n Record<PromotionCardUsage, VariantTokens>\r\n > => ({\r\n filled: {\r\n neutral: {\r\n cardBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n chipBg: cr.surface.surfaceContainer.sysSurfaceContainerHighest,\r\n chipTextColor: cr.surface.surface.sysOnSurface,\r\n titleColor: '#0f0f0f',\r\n descColor: cr.surface.surface.sysOnSurfaceVariant,\r\n descOpacity: 1,\r\n buttonBg: cr.addOn.primaryFixed.sysPrimaryFixedDim,\r\n buttonIconColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,\r\n progressColor: cr.accent.primary.sysPrimary,\r\n },\r\n informative: {\r\n cardBg: cr.custom.info.sysOnInfoContainer,\r\n chipBg: cr.custom.info.sysInfoContainer,\r\n chipTextColor: cr.custom.info.sysOnInfoContainer,\r\n titleColor: cr.custom.info.sysOnInfo,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.custom.info.sysOnInfo,\r\n buttonIconColor: cr.custom.info.sysOnInfoContainer,\r\n progressColor: cr.custom.info.sysOnInfo,\r\n },\r\n positive: {\r\n cardBg: cr.custom.success.sysOnSuccessContainer,\r\n chipBg: cr.custom.success.sysSuccessContainer,\r\n chipTextColor: cr.custom.success.sysOnSuccessContainer,\r\n titleColor: cr.custom.success.sysOnSuccess,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.custom.success.sysOnSuccess,\r\n buttonIconColor: cr.custom.success.sysOnSuccessContainer,\r\n progressColor: cr.custom.success.sysOnSuccess,\r\n },\r\n danger: {\r\n cardBg: cr.error.sysOnErrorContainer,\r\n chipBg: cr.error.sysErrorContainer,\r\n chipTextColor: cr.error.sysOnErrorContainer,\r\n titleColor: cr.error.sysOnError,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.error.sysOnError,\r\n buttonIconColor: cr.error.sysOnErrorContainer,\r\n progressColor: cr.error.sysOnError,\r\n },\r\n warning: {\r\n cardBg: cr.custom.warning.sysOnWarningContainer,\r\n chipBg: cr.custom.warning.sysWarningContainer,\r\n chipTextColor: cr.custom.warning.sysOnWarningContainer,\r\n titleColor: cr.custom.warning.sysOnWarning,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.custom.warning.sysOnWarning,\r\n buttonIconColor: cr.custom.warning.sysOnWarningContainer,\r\n progressColor: cr.custom.warning.sysOnWarning,\r\n },\r\n image: {\r\n cardBg: 'transparent',\r\n chipBg: 'rgba(255,255,255,0.2)',\r\n chipTextColor: cr.surface.inverse.sysInverseOnSurface,\r\n titleColor: cr.accent.primary.sysOnPrimary,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n buttonIconColor: cr.surface.surface.sysOnSurface,\r\n progressColor: cr.accent.primary.sysOnPrimary,\r\n },\r\n },\r\n tonal: {\r\n neutral: {\r\n cardBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n chipBg: cr.surface.surfaceContainer.sysSurfaceContainerHighest,\r\n chipTextColor: cr.surface.surface.sysOnSurface,\r\n titleColor: '#0f0f0f',\r\n descColor: cr.surface.surface.sysOnSurfaceVariant,\r\n descOpacity: 1,\r\n buttonBg: cr.addOn.primaryFixed.sysPrimaryFixedDim,\r\n buttonIconColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,\r\n progressColor: cr.accent.primary.sysPrimary,\r\n },\r\n informative: {\r\n cardBg: cr.custom.info.sysInfoContainer,\r\n chipBg: cr.custom.info.sysOnInfo,\r\n chipTextColor: cr.custom.info.sysOnInfoContainer,\r\n titleColor: cr.custom.info.sysOnInfoContainer,\r\n descColor: cr.custom.info.sysOnInfoContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.custom.info.sysInfo,\r\n buttonIconColor: cr.custom.info.sysOnInfo,\r\n progressColor: cr.custom.info.sysInfo,\r\n },\r\n positive: {\r\n cardBg: cr.custom.success.sysSuccessContainer,\r\n chipBg: cr.custom.success.sysOnSuccess,\r\n chipTextColor: cr.custom.success.sysOnSuccessContainer,\r\n titleColor: cr.custom.success.sysOnSuccessContainer,\r\n descColor: cr.custom.success.sysOnSuccessContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.custom.success.sysSuccess,\r\n buttonIconColor: cr.custom.success.sysOnSuccess,\r\n progressColor: cr.custom.success.sysSuccess,\r\n },\r\n danger: {\r\n cardBg: cr.error.sysErrorContainer,\r\n chipBg: cr.error.sysOnError,\r\n chipTextColor: cr.error.sysOnErrorContainer,\r\n titleColor: cr.error.sysOnErrorContainer,\r\n descColor: cr.error.sysOnErrorContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.error.sysError,\r\n buttonIconColor: cr.error.sysOnError,\r\n progressColor: cr.error.sysError,\r\n },\r\n warning: {\r\n cardBg: cr.custom.warning.sysWarningContainer,\r\n chipBg: cr.custom.warning.sysOnWarning,\r\n chipTextColor: cr.custom.warning.sysOnWarningContainer,\r\n titleColor: cr.custom.warning.sysOnWarningContainer,\r\n descColor: cr.custom.warning.sysOnWarningContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.custom.warning.sysWarning,\r\n buttonIconColor: cr.custom.warning.sysOnWarning,\r\n progressColor: cr.custom.warning.sysWarning,\r\n },\r\n image: {\r\n cardBg: 'transparent',\r\n chipBg: 'rgba(255,255,255,0.2)',\r\n chipTextColor: cr.surface.inverse.sysInverseOnSurface,\r\n titleColor: cr.accent.primary.sysOnPrimary,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n buttonIconColor: cr.surface.surface.sysOnSurface,\r\n progressColor: cr.accent.primary.sysOnPrimary,\r\n },\r\n },\r\n }),\r\n [cr],\r\n );\r\n\r\n // lg tokens: neutral uses filled, others use tonal\r\n function getLgTokens(u: PromotionCardUsage): VariantTokens {\r\n if (u === 'neutral') return tokens.filled.neutral;\r\n return tokens.tonal[u];\r\n }\r\n\r\n const isLg = size === 'lg';\r\n const t = isLg ? getLgTokens(usage) : tokens[variant][usage];\r\n const isImage = usage === 'image';\r\n const p = Math.max(0, Math.min(1, progress));\r\n\r\n const buttonSize = isLg ? LG_BUTTON : MD_BUTTON;\r\n const ringR = isLg ? LG_RING_R : MD_RING_R;\r\n const ringC = isLg ? LG_RING_C : MD_RING_C;\r\n const ringArcLength = ringC * p;\r\n\r\n const containerStyle = [\r\n styles.card,\r\n isLg\r\n ? {\r\n height: LG_HEIGHT,\r\n borderRadius: dim.borderRadius.sysRadiusXl,\r\n padding: dim.spacing.padding.sysPadding32,\r\n flexDirection: 'column' as const,\r\n gap: dim.spacing.padding.sysPadding24,\r\n }\r\n : {\r\n height: MD_HEIGHT,\r\n borderRadius: dim.borderRadius.sysRadiusLg,\r\n paddingHorizontal: dim.spacing.padding.sysPadding16,\r\n paddingVertical: dim.spacing.padding.sysPadding16,\r\n justifyContent: 'space-between' as const,\r\n },\r\n { backgroundColor: t.cardBg, opacity: disabled ? 0.48 : 1 },\r\n style,\r\n ];\r\n\r\n const inner = (\r\n <>\r\n {isImage && image && (\r\n <>\r\n <Image\r\n source={image}\r\n style={[\r\n StyleSheet.absoluteFill,\r\n {\r\n borderRadius: isLg\r\n ? dim.borderRadius.sysRadiusXl\r\n : dim.borderRadius.sysRadiusLg,\r\n },\r\n ]}\r\n resizeMode=\"cover\"\r\n accessible={false}\r\n />\r\n <View\r\n style={[\r\n StyleSheet.absoluteFill,\r\n {\r\n borderRadius: isLg\r\n ? dim.borderRadius.sysRadiusXl\r\n : dim.borderRadius.sysRadiusLg,\r\n backgroundColor: 'rgba(0,0,0,0.35)',\r\n },\r\n ]}\r\n pointerEvents=\"none\"\r\n />\r\n </>\r\n )}\r\n\r\n {/* Chip */}\r\n {chipLabel && (\r\n <View\r\n style={[\r\n isLg\r\n ? {\r\n flexDirection: 'row' as const,\r\n alignItems: 'center' as const,\r\n alignSelf: 'flex-start' as const,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n paddingHorizontal: dim.spacing.padding.sysPadding16,\r\n paddingVertical: dim.spacing.padding.sysPadding4,\r\n gap: dim.spacing.padding.sysPadding8,\r\n height: 32,\r\n }\r\n : {\r\n flexDirection: 'row' as const,\r\n alignItems: 'center' as const,\r\n alignSelf: 'flex-start' as const,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n paddingHorizontal: dim.spacing.padding.sysPadding12,\r\n paddingVertical: dim.spacing.padding.sysPadding4,\r\n gap: dim.spacing.padding.sysPadding4,\r\n height: 24,\r\n },\r\n { backgroundColor: t.chipBg },\r\n ]}\r\n >\r\n {chipIcon && (\r\n <View\r\n style={\r\n isLg\r\n ? {\r\n width: 20,\r\n height: 20,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }\r\n : {\r\n width: 16,\r\n height: 16,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }\r\n }\r\n >\r\n {chipIcon}\r\n </View>\r\n )}\r\n <BodyText variant=\"labelMedium\" color={t.chipTextColor}>\r\n {chipLabel}\r\n </BodyText>\r\n </View>\r\n )}\r\n\r\n {/* Content (title + description) */}\r\n <View\r\n style={\r\n isLg\r\n ? { gap: dim.spacing.padding.sysPadding8, flex: 1 }\r\n : { gap: dim.spacing.padding.sysPadding4, maxWidth: '78%' }\r\n }\r\n >\r\n {title &&\r\n (isLg ? (\r\n <HeaderText variant=\"titleLarge\" color={t.titleColor}>\r\n {title}\r\n </HeaderText>\r\n ) : (\r\n <HeaderText variant=\"titleSmall\" color={t.titleColor}>\r\n {title}\r\n </HeaderText>\r\n ))}\r\n {description && (\r\n <View style={{ opacity: t.descOpacity }}>\r\n <BodyText variant={isLg ? 'medium' : 'small'} color={t.descColor}>\r\n {description}\r\n </BodyText>\r\n </View>\r\n )}\r\n </View>\r\n\r\n {/* Arrow button (absolute, bottom-right) */}\r\n <View\r\n style={[\r\n styles.buttonWrap,\r\n {\r\n bottom: isLg\r\n ? dim.spacing.padding.sysPadding32\r\n : dim.spacing.padding.sysPadding16,\r\n right: isLg\r\n ? dim.spacing.padding.sysPadding32\r\n : dim.spacing.padding.sysPadding16,\r\n width: buttonSize,\r\n height: buttonSize,\r\n },\r\n ]}\r\n >\r\n <View\r\n style={[\r\n styles.button,\r\n {\r\n width: buttonSize,\r\n height: buttonSize,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n backgroundColor: t.buttonBg,\r\n },\r\n ]}\r\n >\r\n <Ionicons\r\n name=\"arrow-forward\"\r\n size={isLg ? 24 : 16}\r\n color={t.buttonIconColor}\r\n accessible={false}\r\n />\r\n </View>\r\n {showRingTimer && (\r\n <Svg\r\n width={buttonSize}\r\n height={buttonSize}\r\n style={StyleSheet.absoluteFill}\r\n >\r\n <SvgCircle\r\n cx={buttonSize / 2}\r\n cy={buttonSize / 2}\r\n r={ringR}\r\n stroke={t.progressColor}\r\n strokeWidth={2}\r\n fill=\"transparent\"\r\n strokeDasharray={`${ringArcLength} ${ringC - ringArcLength}`}\r\n strokeLinecap=\"round\"\r\n rotation={-90}\r\n origin={`${buttonSize / 2}, ${buttonSize / 2}`}\r\n />\r\n </Svg>\r\n )}\r\n </View>\r\n\r\n {/* Pagination dots (lg only) */}\r\n {isLg && (\r\n <View style={styles.dotsRow}>\r\n {[...Array(LG_DOT_COUNT)].map((_: unknown, i: number) => (\r\n <View\r\n key={i}\r\n style={[\r\n styles.dot,\r\n {\r\n backgroundColor: i === 0 ? t.progressColor : 'transparent',\r\n borderColor: t.progressColor,\r\n borderWidth: i === 0 ? 0 : 1.5,\r\n opacity: i === 0 ? 1 : 0.4,\r\n },\r\n ]}\r\n />\r\n ))}\r\n </View>\r\n )}\r\n\r\n {/* Progress bar */}\r\n {showProgressBar && (\r\n <View\r\n style={[styles.progressTrack, { height: isLg ? 4 : 2 }]}\r\n pointerEvents=\"none\"\r\n >\r\n <View\r\n style={[\r\n styles.progressFill,\r\n {\r\n width: `${p * 100}%` as any,\r\n height: isLg ? 4 : 2,\r\n backgroundColor: t.progressColor,\r\n },\r\n ]}\r\n />\r\n </View>\r\n )}\r\n </>\r\n );\r\n\r\n if (onPress) {\r\n return (\r\n <Pressable\r\n onPress={disabled ? undefined : onPress}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n accessibilityState={{ disabled }}\r\n style={({ pressed }: { pressed: boolean }) => [\r\n ...containerStyle,\r\n pressed && !disabled && styles.pressed,\r\n ]}\r\n >\r\n {inner}\r\n </Pressable>\r\n );\r\n }\r\n\r\n return <View style={containerStyle}>{inner}</View>;\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n card: {\r\n overflow: 'hidden',\r\n alignSelf: 'stretch',\r\n },\r\n buttonWrap: {\r\n position: 'absolute',\r\n },\r\n button: {\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflow: 'hidden',\r\n },\r\n dotsRow: {\r\n position: 'absolute',\r\n bottom: LG_DOTS_BOTTOM,\r\n left: LG_DOTS_LEFT,\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: LG_DOT_GAP,\r\n },\r\n dot: {\r\n width: LG_DOT_SIZE,\r\n height: LG_DOT_SIZE,\r\n borderRadius: LG_DOT_SIZE / 2,\r\n },\r\n progressTrack: {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n backgroundColor: 'rgba(0,0,0,0.08)',\r\n },\r\n progressFill: {},\r\n pressed: {\r\n opacity: 0.84,\r\n },\r\n});\r\n"],"names":["PromotionCard","MD_HEIGHT","LG_HEIGHT","MD_BUTTON","LG_BUTTON","MD_RING_R","LG_RING_R","MD_RING_C","Math","PI","LG_RING_C","LG_DOTS_BOTTOM","LG_DOTS_LEFT","LG_DOT_SIZE","LG_DOT_GAP","LG_DOT_COUNT","size","variant","usage","title","description","chipLabel","chipIcon","image","progress","showProgressBar","showRingTimer","onPress","disabled","accessibilityLabel","style","colorRoles","cr","dimensions","dim","useTheme","tokens","useMemo","filled","neutral","cardBg","surface","surfaceContainer","sysSurfaceContainerLowest","chipBg","sysSurfaceContainerHighest","chipTextColor","sysOnSurface","titleColor","descColor","sysOnSurfaceVariant","descOpacity","buttonBg","addOn","primaryFixed","sysPrimaryFixedDim","buttonIconColor","sysOnPrimaryFixed","progressColor","accent","primary","sysPrimary","informative","custom","info","sysOnInfoContainer","sysInfoContainer","sysOnInfo","transparent","sysWhite80","positive","success","sysOnSuccessContainer","sysSuccessContainer","sysOnSuccess","danger","error","sysOnErrorContainer","sysErrorContainer","sysOnError","warning","sysOnWarningContainer","sysWarningContainer","sysOnWarning","inverse","sysInverseOnSurface","sysOnPrimary","tonal","sysInfo","sysSuccess","sysError","sysWarning","getLgTokens","u","isLg","t","isImage","p","max","min","buttonSize","ringR","ringC","ringArcLength","containerStyle","styles","card","height","borderRadius","sysRadiusXl","padding","spacing","sysPadding32","flexDirection","gap","sysPadding24","sysRadiusLg","paddingHorizontal","sysPadding16","paddingVertical","justifyContent","backgroundColor","opacity","inner","Image","source","StyleSheet","absoluteFill","resizeMode","accessible","View","pointerEvents","alignItems","alignSelf","sysRadiusFull","sysPadding4","sysPadding8","sysPadding12","width","BodyText","color","flex","maxWidth","HeaderText","buttonWrap","bottom","right","button","Ionicons","name","Svg","SvgCircle","cx","cy","r","stroke","strokeWidth","fill","strokeDasharray","strokeLinecap","rotation","origin","dotsRow","Array","map","_","i","dot","borderColor","borderWidth","progressTrack","progressFill","Pressable","undefined","accessibilityRole","accessibilityState","pressed","create","overflow","position","left"],"mappings":";;;;+BAyEgBA;;;eAAAA;;;;+DAzEe;6BAUxB;6BAEkB;wEACgB;uBAEhB;0BACA;4BACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0C3B,MAAMC,YAAY;AAClB,MAAMC,YAAY;AAClB,MAAMC,YAAY;AAClB,MAAMC,YAAY;AAClB,MAAMC,YAAY;AAClB,MAAMC,YAAY;AAClB,MAAMC,YAAY,IAAIC,KAAKC,EAAE,GAAGJ;AAChC,MAAMK,YAAY,IAAIF,KAAKC,EAAE,GAAGH;AAChC,MAAMK,iBAAiB;AACvB,MAAMC,eAAe;AACrB,MAAMC,cAAc;AACpB,MAAMC,aAAa;AACnB,MAAMC,eAAe;AAEd,SAASf,cAAc,EAC5BgB,OAAO,IAAI,EACXC,UAAU,QAAQ,EAClBC,QAAQ,SAAS,EACjBC,KAAK,EACLC,WAAW,EACXC,SAAS,EACTC,QAAQ,EACRC,KAAK,EACLC,WAAW,IAAI,EACfC,kBAAkB,IAAI,EACtBC,gBAAgB,IAAI,EACpBC,OAAO,EACPC,WAAW,KAAK,EAChBC,kBAAkB,EAClBC,KAAK,EACc;IACnB,MAAM,EAAEC,YAAYC,EAAE,EAAEC,YAAYC,GAAG,EAAE,GAAGC,IAAAA,eAAQ;IAEpD,MAAMC,SAASC,IAAAA,cAAO,EACpB,IAGM,CAAA;YACJC,QAAQ;gBACNC,SAAS;oBACPC,QAAQR,GAAGS,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;oBAC7DC,QAAQZ,GAAGS,OAAO,CAACC,gBAAgB,CAACG,0BAA0B;oBAC9DC,eAAed,GAAGS,OAAO,CAACA,OAAO,CAACM,YAAY;oBAC9CC,YAAY;oBACZC,WAAWjB,GAAGS,OAAO,CAACA,OAAO,CAACS,mBAAmB;oBACjDC,aAAa;oBACbC,UAAUpB,GAAGqB,KAAK,CAACC,YAAY,CAACC,kBAAkB;oBAClDC,iBAAiBxB,GAAGqB,KAAK,CAACC,YAAY,CAACG,iBAAiB;oBACxDC,eAAe1B,GAAG2B,MAAM,CAACC,OAAO,CAACC,UAAU;gBAC7C;gBACAC,aAAa;oBACXtB,QAAQR,GAAG+B,MAAM,CAACC,IAAI,CAACC,kBAAkB;oBACzCrB,QAAQZ,GAAG+B,MAAM,CAACC,IAAI,CAACE,gBAAgB;oBACvCpB,eAAed,GAAG+B,MAAM,CAACC,IAAI,CAACC,kBAAkB;oBAChDjB,YAAYhB,GAAG+B,MAAM,CAACC,IAAI,CAACG,SAAS;oBACpClB,WAAWjB,GAAGoC,WAAW,CAAC7B,OAAO,CAAC8B,UAAU;oBAC5ClB,aAAa;oBACbC,UAAUpB,GAAG+B,MAAM,CAACC,IAAI,CAACG,SAAS;oBAClCX,iBAAiBxB,GAAG+B,MAAM,CAACC,IAAI,CAACC,kBAAkB;oBAClDP,eAAe1B,GAAG+B,MAAM,CAACC,IAAI,CAACG,SAAS;gBACzC;gBACAG,UAAU;oBACR9B,QAAQR,GAAG+B,MAAM,CAACQ,OAAO,CAACC,qBAAqB;oBAC/C5B,QAAQZ,GAAG+B,MAAM,CAACQ,OAAO,CAACE,mBAAmB;oBAC7C3B,eAAed,GAAG+B,MAAM,CAACQ,OAAO,CAACC,qBAAqB;oBACtDxB,YAAYhB,GAAG+B,MAAM,CAACQ,OAAO,CAACG,YAAY;oBAC1CzB,WAAWjB,GAAGoC,WAAW,CAAC7B,OAAO,CAAC8B,UAAU;oBAC5ClB,aAAa;oBACbC,UAAUpB,GAAG+B,MAAM,CAACQ,OAAO,CAACG,YAAY;oBACxClB,iBAAiBxB,GAAG+B,MAAM,CAACQ,OAAO,CAACC,qBAAqB;oBACxDd,eAAe1B,GAAG+B,MAAM,CAACQ,OAAO,CAACG,YAAY;gBAC/C;gBACAC,QAAQ;oBACNnC,QAAQR,GAAG4C,KAAK,CAACC,mBAAmB;oBACpCjC,QAAQZ,GAAG4C,KAAK,CAACE,iBAAiB;oBAClChC,eAAed,GAAG4C,KAAK,CAACC,mBAAmB;oBAC3C7B,YAAYhB,GAAG4C,KAAK,CAACG,UAAU;oBAC/B9B,WAAWjB,GAAGoC,WAAW,CAAC7B,OAAO,CAAC8B,UAAU;oBAC5ClB,aAAa;oBACbC,UAAUpB,GAAG4C,KAAK,CAACG,UAAU;oBAC7BvB,iBAAiBxB,GAAG4C,KAAK,CAACC,mBAAmB;oBAC7CnB,eAAe1B,GAAG4C,KAAK,CAACG,UAAU;gBACpC;gBACAC,SAAS;oBACPxC,QAAQR,GAAG+B,MAAM,CAACiB,OAAO,CAACC,qBAAqB;oBAC/CrC,QAAQZ,GAAG+B,MAAM,CAACiB,OAAO,CAACE,mBAAmB;oBAC7CpC,eAAed,GAAG+B,MAAM,CAACiB,OAAO,CAACC,qBAAqB;oBACtDjC,YAAYhB,GAAG+B,MAAM,CAACiB,OAAO,CAACG,YAAY;oBAC1ClC,WAAWjB,GAAGoC,WAAW,CAAC7B,OAAO,CAAC8B,UAAU;oBAC5ClB,aAAa;oBACbC,UAAUpB,GAAG+B,MAAM,CAACiB,OAAO,CAACG,YAAY;oBACxC3B,iBAAiBxB,GAAG+B,MAAM,CAACiB,OAAO,CAACC,qBAAqB;oBACxDvB,eAAe1B,GAAG+B,MAAM,CAACiB,OAAO,CAACG,YAAY;gBAC/C;gBACA5D,OAAO;oBACLiB,QAAQ;oBACRI,QAAQ;oBACRE,eAAed,GAAGS,OAAO,CAAC2C,OAAO,CAACC,mBAAmB;oBACrDrC,YAAYhB,GAAG2B,MAAM,CAACC,OAAO,CAAC0B,YAAY;oBAC1CrC,WAAWjB,GAAGoC,WAAW,CAAC7B,OAAO,CAAC8B,UAAU;oBAC5ClB,aAAa;oBACbC,UAAUpB,GAAGS,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;oBAC/Da,iBAAiBxB,GAAGS,OAAO,CAACA,OAAO,CAACM,YAAY;oBAChDW,eAAe1B,GAAG2B,MAAM,CAACC,OAAO,CAAC0B,YAAY;gBAC/C;YACF;YACAC,OAAO;gBACLhD,SAAS;oBACPC,QAAQR,GAAGS,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;oBAC7DC,QAAQZ,GAAGS,OAAO,CAACC,gBAAgB,CAACG,0BAA0B;oBAC9DC,eAAed,GAAGS,OAAO,CAACA,OAAO,CAACM,YAAY;oBAC9CC,YAAY;oBACZC,WAAWjB,GAAGS,OAAO,CAACA,OAAO,CAACS,mBAAmB;oBACjDC,aAAa;oBACbC,UAAUpB,GAAGqB,KAAK,CAACC,YAAY,CAACC,kBAAkB;oBAClDC,iBAAiBxB,GAAGqB,KAAK,CAACC,YAAY,CAACG,iBAAiB;oBACxDC,eAAe1B,GAAG2B,MAAM,CAACC,OAAO,CAACC,UAAU;gBAC7C;gBACAC,aAAa;oBACXtB,QAAQR,GAAG+B,MAAM,CAACC,IAAI,CAACE,gBAAgB;oBACvCtB,QAAQZ,GAAG+B,MAAM,CAACC,IAAI,CAACG,SAAS;oBAChCrB,eAAed,GAAG+B,MAAM,CAACC,IAAI,CAACC,kBAAkB;oBAChDjB,YAAYhB,GAAG+B,MAAM,CAACC,IAAI,CAACC,kBAAkB;oBAC7ChB,WAAWjB,GAAG+B,MAAM,CAACC,IAAI,CAACC,kBAAkB;oBAC5Cd,aAAa;oBACbC,UAAUpB,GAAG+B,MAAM,CAACC,IAAI,CAACwB,OAAO;oBAChChC,iBAAiBxB,GAAG+B,MAAM,CAACC,IAAI,CAACG,SAAS;oBACzCT,eAAe1B,GAAG+B,MAAM,CAACC,IAAI,CAACwB,OAAO;gBACvC;gBACAlB,UAAU;oBACR9B,QAAQR,GAAG+B,MAAM,CAACQ,OAAO,CAACE,mBAAmB;oBAC7C7B,QAAQZ,GAAG+B,MAAM,CAACQ,OAAO,CAACG,YAAY;oBACtC5B,eAAed,GAAG+B,MAAM,CAACQ,OAAO,CAACC,qBAAqB;oBACtDxB,YAAYhB,GAAG+B,MAAM,CAACQ,OAAO,CAACC,qBAAqB;oBACnDvB,WAAWjB,GAAG+B,MAAM,CAACQ,OAAO,CAACC,qBAAqB;oBAClDrB,aAAa;oBACbC,UAAUpB,GAAG+B,MAAM,CAACQ,OAAO,CAACkB,UAAU;oBACtCjC,iBAAiBxB,GAAG+B,MAAM,CAACQ,OAAO,CAACG,YAAY;oBAC/ChB,eAAe1B,GAAG+B,MAAM,CAACQ,OAAO,CAACkB,UAAU;gBAC7C;gBACAd,QAAQ;oBACNnC,QAAQR,GAAG4C,KAAK,CAACE,iBAAiB;oBAClClC,QAAQZ,GAAG4C,KAAK,CAACG,UAAU;oBAC3BjC,eAAed,GAAG4C,KAAK,CAACC,mBAAmB;oBAC3C7B,YAAYhB,GAAG4C,KAAK,CAACC,mBAAmB;oBACxC5B,WAAWjB,GAAG4C,KAAK,CAACC,mBAAmB;oBACvC1B,aAAa;oBACbC,UAAUpB,GAAG4C,KAAK,CAACc,QAAQ;oBAC3BlC,iBAAiBxB,GAAG4C,KAAK,CAACG,UAAU;oBACpCrB,eAAe1B,GAAG4C,KAAK,CAACc,QAAQ;gBAClC;gBACAV,SAAS;oBACPxC,QAAQR,GAAG+B,MAAM,CAACiB,OAAO,CAACE,mBAAmB;oBAC7CtC,QAAQZ,GAAG+B,MAAM,CAACiB,OAAO,CAACG,YAAY;oBACtCrC,eAAed,GAAG+B,MAAM,CAACiB,OAAO,CAACC,qBAAqB;oBACtDjC,YAAYhB,GAAG+B,MAAM,CAACiB,OAAO,CAACC,qBAAqB;oBACnDhC,WAAWjB,GAAG+B,MAAM,CAACiB,OAAO,CAACC,qBAAqB;oBAClD9B,aAAa;oBACbC,UAAUpB,GAAG+B,MAAM,CAACiB,OAAO,CAACW,UAAU;oBACtCnC,iBAAiBxB,GAAG+B,MAAM,CAACiB,OAAO,CAACG,YAAY;oBAC/CzB,eAAe1B,GAAG+B,MAAM,CAACiB,OAAO,CAACW,UAAU;gBAC7C;gBACApE,OAAO;oBACLiB,QAAQ;oBACRI,QAAQ;oBACRE,eAAed,GAAGS,OAAO,CAAC2C,OAAO,CAACC,mBAAmB;oBACrDrC,YAAYhB,GAAG2B,MAAM,CAACC,OAAO,CAAC0B,YAAY;oBAC1CrC,WAAWjB,GAAGoC,WAAW,CAAC7B,OAAO,CAAC8B,UAAU;oBAC5ClB,aAAa;oBACbC,UAAUpB,GAAGS,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;oBAC/Da,iBAAiBxB,GAAGS,OAAO,CAACA,OAAO,CAACM,YAAY;oBAChDW,eAAe1B,GAAG2B,MAAM,CAACC,OAAO,CAAC0B,YAAY;gBAC/C;YACF;QACF,CAAA,GACA;QAACtD;KAAG;IAGN,mDAAmD;IACnD,SAAS4D,YAAYC,CAAqB;QACxC,IAAIA,MAAM,WAAW,OAAOzD,OAAOE,MAAM,CAACC,OAAO;QACjD,OAAOH,OAAOmD,KAAK,CAACM,EAAE;IACxB;IAEA,MAAMC,OAAO9E,SAAS;IACtB,MAAM+E,IAAID,OAAOF,YAAY1E,SAASkB,MAAM,CAACnB,QAAQ,CAACC,MAAM;IAC5D,MAAM8E,UAAU9E,UAAU;IAC1B,MAAM+E,IAAIzF,KAAK0F,GAAG,CAAC,GAAG1F,KAAK2F,GAAG,CAAC,GAAG3E;IAElC,MAAM4E,aAAaN,OAAO1F,YAAYD;IACtC,MAAMkG,QAAQP,OAAOxF,YAAYD;IACjC,MAAMiG,QAAQR,OAAOpF,YAAYH;IACjC,MAAMgG,gBAAgBD,QAAQL;IAE9B,MAAMO,iBAAiB;QACrBC,OAAOC,IAAI;QACXZ,OACI;YACEa,QAAQzG;YACR0G,cAAc1E,IAAI0E,YAAY,CAACC,WAAW;YAC1CC,SAAS5E,IAAI6E,OAAO,CAACD,OAAO,CAACE,YAAY;YACzCC,eAAe;YACfC,KAAKhF,IAAI6E,OAAO,CAACD,OAAO,CAACK,YAAY;QACvC,IACA;YACER,QAAQ1G;YACR2G,cAAc1E,IAAI0E,YAAY,CAACQ,WAAW;YAC1CC,mBAAmBnF,IAAI6E,OAAO,CAACD,OAAO,CAACQ,YAAY;YACnDC,iBAAiBrF,IAAI6E,OAAO,CAACD,OAAO,CAACQ,YAAY;YACjDE,gBAAgB;QAClB;QACJ;YAAEC,iBAAiB1B,EAAEvD,MAAM;YAAEkF,SAAS9F,WAAW,OAAO;QAAE;QAC1DE;KACD;IAED,MAAM6F,sBACJ;;YACG3B,WAAWzE,uBACV;;kCACE,qBAACqG,kBAAK;wBACJC,QAAQtG;wBACRO,OAAO;4BACLgG,uBAAU,CAACC,YAAY;4BACvB;gCACEnB,cAAcd,OACV5D,IAAI0E,YAAY,CAACC,WAAW,GAC5B3E,IAAI0E,YAAY,CAACQ,WAAW;4BAClC;yBACD;wBACDY,YAAW;wBACXC,YAAY;;kCAEd,qBAACC,iBAAI;wBACHpG,OAAO;4BACLgG,uBAAU,CAACC,YAAY;4BACvB;gCACEnB,cAAcd,OACV5D,IAAI0E,YAAY,CAACC,WAAW,GAC5B3E,IAAI0E,YAAY,CAACQ,WAAW;gCAChCK,iBAAiB;4BACnB;yBACD;wBACDU,eAAc;;;;YAMnB9G,2BACC,sBAAC6G,iBAAI;gBACHpG,OAAO;oBACLgE,OACI;wBACEmB,eAAe;wBACfmB,YAAY;wBACZC,WAAW;wBACXzB,cAAc1E,IAAI0E,YAAY,CAAC0B,aAAa;wBAC5CjB,mBAAmBnF,IAAI6E,OAAO,CAACD,OAAO,CAACQ,YAAY;wBACnDC,iBAAiBrF,IAAI6E,OAAO,CAACD,OAAO,CAACyB,WAAW;wBAChDrB,KAAKhF,IAAI6E,OAAO,CAACD,OAAO,CAAC0B,WAAW;wBACpC7B,QAAQ;oBACV,IACA;wBACEM,eAAe;wBACfmB,YAAY;wBACZC,WAAW;wBACXzB,cAAc1E,IAAI0E,YAAY,CAAC0B,aAAa;wBAC5CjB,mBAAmBnF,IAAI6E,OAAO,CAACD,OAAO,CAAC2B,YAAY;wBACnDlB,iBAAiBrF,IAAI6E,OAAO,CAACD,OAAO,CAACyB,WAAW;wBAChDrB,KAAKhF,IAAI6E,OAAO,CAACD,OAAO,CAACyB,WAAW;wBACpC5B,QAAQ;oBACV;oBACJ;wBAAEc,iBAAiB1B,EAAEnD,MAAM;oBAAC;iBAC7B;;oBAEAtB,0BACC,qBAAC4G,iBAAI;wBACHpG,OACEgE,OACI;4BACE4C,OAAO;4BACP/B,QAAQ;4BACRyB,YAAY;4BACZZ,gBAAgB;wBAClB,IACA;4BACEkB,OAAO;4BACP/B,QAAQ;4BACRyB,YAAY;4BACZZ,gBAAgB;wBAClB;kCAGLlG;;kCAGL,qBAACqH,kBAAQ;wBAAC1H,SAAQ;wBAAc2H,OAAO7C,EAAEjD,aAAa;kCACnDzB;;;;0BAMP,sBAAC6G,iBAAI;gBACHpG,OACEgE,OACI;oBAAEoB,KAAKhF,IAAI6E,OAAO,CAACD,OAAO,CAAC0B,WAAW;oBAAEK,MAAM;gBAAE,IAChD;oBAAE3B,KAAKhF,IAAI6E,OAAO,CAACD,OAAO,CAACyB,WAAW;oBAAEO,UAAU;gBAAM;;oBAG7D3H,SACE2E,CAAAA,qBACC,qBAACiD,sBAAU;wBAAC9H,SAAQ;wBAAa2H,OAAO7C,EAAE/C,UAAU;kCACjD7B;uCAGH,qBAAC4H,sBAAU;wBAAC9H,SAAQ;wBAAa2H,OAAO7C,EAAE/C,UAAU;kCACjD7B;sBAEL;oBACDC,6BACC,qBAAC8G,iBAAI;wBAACpG,OAAO;4BAAE4F,SAAS3B,EAAE5C,WAAW;wBAAC;kCACpC,cAAA,qBAACwF,kBAAQ;4BAAC1H,SAAS6E,OAAO,WAAW;4BAAS8C,OAAO7C,EAAE9C,SAAS;sCAC7D7B;;;;;0BAOT,sBAAC8G,iBAAI;gBACHpG,OAAO;oBACL2E,OAAOuC,UAAU;oBACjB;wBACEC,QAAQnD,OACJ5D,IAAI6E,OAAO,CAACD,OAAO,CAACE,YAAY,GAChC9E,IAAI6E,OAAO,CAACD,OAAO,CAACQ,YAAY;wBACpC4B,OAAOpD,OACH5D,IAAI6E,OAAO,CAACD,OAAO,CAACE,YAAY,GAChC9E,IAAI6E,OAAO,CAACD,OAAO,CAACQ,YAAY;wBACpCoB,OAAOtC;wBACPO,QAAQP;oBACV;iBACD;;kCAED,qBAAC8B,iBAAI;wBACHpG,OAAO;4BACL2E,OAAO0C,MAAM;4BACb;gCACET,OAAOtC;gCACPO,QAAQP;gCACRQ,cAAc1E,IAAI0E,YAAY,CAAC0B,aAAa;gCAC5Cb,iBAAiB1B,EAAE3C,QAAQ;4BAC7B;yBACD;kCAED,cAAA,qBAACgG,qBAAQ;4BACPC,MAAK;4BACLrI,MAAM8E,OAAO,KAAK;4BAClB8C,OAAO7C,EAAEvC,eAAe;4BACxByE,YAAY;;;oBAGfvG,+BACC,qBAAC4H,uBAAG;wBACFZ,OAAOtC;wBACPO,QAAQP;wBACRtE,OAAOgG,uBAAU,CAACC,YAAY;kCAE9B,cAAA,qBAACwB,sBAAS;4BACRC,IAAIpD,aAAa;4BACjBqD,IAAIrD,aAAa;4BACjBsD,GAAGrD;4BACHsD,QAAQ5D,EAAErC,aAAa;4BACvBkG,aAAa;4BACbC,MAAK;4BACLC,iBAAiB,GAAGvD,cAAc,CAAC,EAAED,QAAQC,eAAe;4BAC5DwD,eAAc;4BACdC,UAAU,CAAC;4BACXC,QAAQ,GAAG7D,aAAa,EAAE,EAAE,EAAEA,aAAa,GAAG;;;;;YAOrDN,sBACC,qBAACoC,iBAAI;gBAACpG,OAAO2E,OAAOyD,OAAO;0BACxB;uBAAIC,MAAMpJ;iBAAc,CAACqJ,GAAG,CAAC,CAACC,GAAYC,kBACzC,qBAACpC,iBAAI;wBAEHpG,OAAO;4BACL2E,OAAO8D,GAAG;4BACV;gCACE9C,iBAAiB6C,MAAM,IAAIvE,EAAErC,aAAa,GAAG;gCAC7C8G,aAAazE,EAAErC,aAAa;gCAC5B+G,aAAaH,MAAM,IAAI,IAAI;gCAC3B5C,SAAS4C,MAAM,IAAI,IAAI;4BACzB;yBACD;uBATIA;;YAgBZ7I,iCACC,qBAACyG,iBAAI;gBACHpG,OAAO;oBAAC2E,OAAOiE,aAAa;oBAAE;wBAAE/D,QAAQb,OAAO,IAAI;oBAAE;iBAAE;gBACvDqC,eAAc;0BAEd,cAAA,qBAACD,iBAAI;oBACHpG,OAAO;wBACL2E,OAAOkE,YAAY;wBACnB;4BACEjC,OAAO,GAAGzC,IAAI,IAAI,CAAC,CAAC;4BACpBU,QAAQb,OAAO,IAAI;4BACnB2B,iBAAiB1B,EAAErC,aAAa;wBAClC;qBACD;;;;;IAOX,IAAI/B,SAAS;QACX,qBACE,qBAACiJ,sBAAS;YACRjJ,SAASC,WAAWiJ,YAAYlJ;YAChCmJ,mBAAkB;YAClBjJ,oBAAoBA,sBAAsBV;YAC1C4J,oBAAoB;gBAAEnJ;YAAS;YAC/BE,OAAO,CAAC,EAAEkJ,OAAO,EAAwB,GAAK;uBACzCxE;oBACHwE,WAAW,CAACpJ,YAAY6E,OAAOuE,OAAO;iBACvC;sBAEArD;;IAGP;IAEA,qBAAO,qBAACO,iBAAI;QAACpG,OAAO0E;kBAAiBmB;;AACvC;AAEA,MAAMlB,SAASqB,uBAAU,CAACmD,MAAM,CAAC;IAC/BvE,MAAM;QACJwE,UAAU;QACV7C,WAAW;IACb;IACAW,YAAY;QACVmC,UAAU;IACZ;IACAhC,QAAQ;QACNf,YAAY;QACZZ,gBAAgB;QAChB0D,UAAU;IACZ;IACAhB,SAAS;QACPiB,UAAU;QACVlC,QAAQtI;QACRyK,MAAMxK;QACNqG,eAAe;QACfmB,YAAY;QACZlB,KAAKpG;IACP;IACAyJ,KAAK;QACH7B,OAAO7H;QACP8F,QAAQ9F;QACR+F,cAAc/F,cAAc;IAC9B;IACA6J,eAAe;QACbS,UAAU;QACVlC,QAAQ;QACRmC,MAAM;QACNlC,OAAO;QACPzB,iBAAiB;IACnB;IACAkD,cAAc,CAAC;IACfK,SAAS;QACPtD,SAAS;IACX;AACF"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export type RadioButtonSize = 'sm' | 'md';
4
+ export interface RadioButtonProps {
5
+ checked?: boolean;
6
+ defaultChecked?: boolean;
7
+ onChange?: (checked: boolean) => void;
8
+ size?: RadioButtonSize;
9
+ label?: string;
10
+ description?: string;
11
+ disabled?: boolean;
12
+ invalid?: boolean;
13
+ style?: StyleProp<ViewStyle>;
14
+ }
15
+ export declare function RadioButton({ checked: checkedProp, defaultChecked, onChange, size, label, description, disabled, invalid, style, }: RadioButtonProps): React.JSX.Element;