@compsych-ui-components/react-native 4.0.0 → 4.0.13
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/package.json +22 -14
- package/src/components/ActionSheet/index.d.ts +16 -0
- package/src/components/ActionSheet/index.js +256 -0
- package/src/components/ActionSheet/index.js.map +1 -0
- package/src/components/Alert/index.d.ts +24 -0
- package/src/components/Alert/index.js +304 -0
- package/src/components/Alert/index.js.map +1 -0
- package/src/components/Avatar/index.d.ts +22 -0
- package/src/components/Avatar/index.js +253 -0
- package/src/components/Avatar/index.js.map +1 -0
- package/src/components/Badge/index.d.ts +12 -0
- package/src/components/Badge/index.js +206 -0
- package/src/components/Badge/index.js.map +1 -0
- package/src/components/BodyText/index.d.ts +9 -0
- package/src/components/BodyText/index.js +58 -0
- package/src/components/BodyText/index.js.map +1 -0
- package/src/components/Breadcrumb/index.d.ts +24 -0
- package/src/components/Breadcrumb/index.js +194 -0
- package/src/components/Breadcrumb/index.js.map +1 -0
- package/src/components/Button/index.d.ts +16 -0
- package/src/components/Button/index.js +260 -0
- package/src/components/Button/index.js.map +1 -0
- package/src/components/Checkbox/index.d.ts +16 -0
- package/src/components/Checkbox/index.js +196 -0
- package/src/components/Checkbox/index.js.map +1 -0
- package/src/components/Chip/index.d.ts +18 -0
- package/src/components/Chip/index.js +280 -0
- package/src/components/Chip/index.js.map +1 -0
- package/src/components/Divider/index.d.ts +11 -0
- package/src/components/Divider/index.js +59 -0
- package/src/components/Divider/index.js.map +1 -0
- package/src/components/EmptyState/index.d.ts +25 -0
- package/src/components/EmptyState/index.js +376 -0
- package/src/components/EmptyState/index.js.map +1 -0
- package/src/components/HeaderText/index.d.ts +9 -0
- package/src/components/HeaderText/index.js +62 -0
- package/src/components/HeaderText/index.js.map +1 -0
- package/src/components/Input/index.d.ts +13 -0
- package/src/components/Input/index.js +231 -0
- package/src/components/Input/index.js.map +1 -0
- package/src/components/List/index.d.ts +19 -0
- package/src/components/List/index.js +170 -0
- package/src/components/List/index.js.map +1 -0
- package/src/components/Pagination/index.d.ts +15 -0
- package/src/components/Pagination/index.js +322 -0
- package/src/components/Pagination/index.js.map +1 -0
- package/src/components/PlanCard/index.d.ts +27 -0
- package/src/components/PlanCard/index.js +364 -0
- package/src/components/PlanCard/index.js.map +1 -0
- package/src/components/ProgressTracker/index.d.ts +26 -0
- package/src/components/ProgressTracker/index.js +180 -0
- package/src/components/ProgressTracker/index.js.map +1 -0
- package/src/components/PromotionCard/index.d.ts +23 -0
- package/src/components/PromotionCard/index.js +496 -0
- package/src/components/PromotionCard/index.js.map +1 -0
- package/src/components/RadioButton/index.d.ts +15 -0
- package/src/components/RadioButton/index.js +188 -0
- package/src/components/RadioButton/index.js.map +1 -0
- package/src/components/ScreenContainer/index.d.ts +15 -0
- package/src/components/ScreenContainer/index.js +43 -0
- package/src/components/ScreenContainer/index.js.map +1 -0
- package/src/components/SegmentedControl/index.d.ts +16 -0
- package/src/components/SegmentedControl/index.js +115 -0
- package/src/components/SegmentedControl/index.js.map +1 -0
- package/src/components/SelectionCard/index.d.ts +16 -0
- package/src/components/SelectionCard/index.js +222 -0
- package/src/components/SelectionCard/index.js.map +1 -0
- package/src/components/ServiceCard/index.d.ts +22 -0
- package/src/components/ServiceCard/index.js +385 -0
- package/src/components/ServiceCard/index.js.map +1 -0
- package/src/components/Slider/index.d.ts +24 -0
- package/src/components/Slider/index.js +320 -0
- package/src/components/Slider/index.js.map +1 -0
- package/src/components/Snackbar/index.d.ts +13 -0
- package/src/components/Snackbar/index.js +229 -0
- package/src/components/Snackbar/index.js.map +1 -0
- package/src/components/Switch/index.d.ts +14 -0
- package/src/components/Switch/index.js +221 -0
- package/src/components/Switch/index.js.map +1 -0
- package/src/components/Tooltip/index.d.ts +21 -0
- package/src/components/Tooltip/index.js +206 -0
- package/src/components/Tooltip/index.js.map +1 -0
- package/src/icons/AtomIcon.d.ts +2 -0
- package/src/icons/AtomIcon.js +85 -0
- package/src/icons/AtomIcon.js.map +1 -0
- package/src/icons/BinocularsIcon.d.ts +2 -0
- package/src/icons/BinocularsIcon.js +103 -0
- package/src/icons/BinocularsIcon.js.map +1 -0
- package/src/icons/FileChartColumnIncreasingIcon.d.ts +2 -0
- package/src/icons/FileChartColumnIncreasingIcon.js +97 -0
- package/src/icons/FileChartColumnIncreasingIcon.js.map +1 -0
- package/src/icons/FlagIcon.d.ts +2 -0
- package/src/icons/FlagIcon.js +71 -0
- package/src/icons/FlagIcon.js.map +1 -0
- package/src/icons/GlobeIcon.d.ts +2 -0
- package/src/icons/GlobeIcon.js +71 -0
- package/src/icons/GlobeIcon.js.map +1 -0
- package/src/icons/GraduationCapIcon.d.ts +2 -0
- package/src/icons/GraduationCapIcon.js +85 -0
- package/src/icons/GraduationCapIcon.js.map +1 -0
- package/src/icons/HandHeartIcon.d.ts +2 -0
- package/src/icons/HandHeartIcon.js +91 -0
- package/src/icons/HandHeartIcon.js.map +1 -0
- package/src/icons/HandshakeIcon.d.ts +2 -0
- package/src/icons/HandshakeIcon.js +97 -0
- package/src/icons/HandshakeIcon.js.map +1 -0
- package/src/icons/HazeIcon.d.ts +2 -0
- package/src/icons/HazeIcon.js +115 -0
- package/src/icons/HazeIcon.js.map +1 -0
- package/src/icons/HeartHandshakeIcon.d.ts +2 -0
- package/src/icons/HeartHandshakeIcon.js +71 -0
- package/src/icons/HeartHandshakeIcon.js.map +1 -0
- package/src/icons/HourglassIcon.d.ts +2 -0
- package/src/icons/HourglassIcon.js +91 -0
- package/src/icons/HourglassIcon.js.map +1 -0
- package/src/icons/IdCardIcon.d.ts +2 -0
- package/src/icons/IdCardIcon.js +97 -0
- package/src/icons/IdCardIcon.js.map +1 -0
- package/src/icons/MessageCirclePlusIcon.d.ts +2 -0
- package/src/icons/MessageCirclePlusIcon.js +85 -0
- package/src/icons/MessageCirclePlusIcon.js.map +1 -0
- package/src/icons/MountainSnowIcon.d.ts +2 -0
- package/src/icons/MountainSnowIcon.js +79 -0
- package/src/icons/MountainSnowIcon.js.map +1 -0
- package/src/icons/SnowflakeIcon.d.ts +2 -0
- package/src/icons/SnowflakeIcon.js +139 -0
- package/src/icons/SnowflakeIcon.js.map +1 -0
- package/src/icons/StethoscopeIcon.d.ts +2 -0
- package/src/icons/StethoscopeIcon.js +97 -0
- package/src/icons/StethoscopeIcon.js.map +1 -0
- package/src/icons/UserRoundIcon.d.ts +2 -0
- package/src/icons/UserRoundIcon.js +79 -0
- package/src/icons/UserRoundIcon.js.map +1 -0
- package/src/icons/WheatIcon.d.ts +2 -0
- package/src/icons/WheatIcon.js +115 -0
- package/src/icons/WheatIcon.js.map +1 -0
- package/src/icons/index.d.ts +22 -0
- package/src/icons/index.js +109 -0
- package/src/icons/index.js.map +1 -0
- package/src/icons/types.d.ts +16 -0
- package/src/icons/types.js +52 -0
- package/src/icons/types.js.map +1 -0
- package/src/index.d.ts +60 -2
- package/src/index.js +203 -1
- package/src/index.js.map +1 -1
- package/src/theme/ThemeContext.d.ts +258 -0
- package/src/theme/ThemeContext.js +15 -0
- package/src/theme/ThemeContext.js.map +1 -0
- package/src/theme/ThemeProvider.d.ts +27 -0
- package/src/theme/ThemeProvider.js +66 -0
- package/src/theme/ThemeProvider.js.map +1 -0
- package/src/theme/defaultTheme.d.ts +13 -0
- package/src/theme/defaultTheme.js +14 -0
- package/src/theme/defaultTheme.js.map +1 -0
- package/src/theme/index.d.ts +5 -0
- package/src/theme/index.js +26 -0
- package/src/theme/index.js.map +1 -0
- package/src/theme/mergeTheme.d.ts +7 -0
- package/src/theme/mergeTheme.js +40 -0
- package/src/theme/mergeTheme.js.map +1 -0
- package/src/theme/types.d.ts +25 -0
- package/src/theme/types.js +6 -0
- package/src/theme/types.js.map +1 -0
- package/src/theme/useTheme.d.ts +10 -0
- package/src/theme/useTheme.js +17 -0
- package/src/theme/useTheme.js.map +1 -0
- package/src/tokens.d.ts +253 -0
- package/src/tokens.js +265 -0
- package/src/tokens.js.map +1 -0
- package/src/lib/button.d.ts +0 -7
- package/src/lib/button.js +0 -43
- 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":"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"}
|
|
@@ -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;
|