@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.
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 +203 -1
  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 -43
  172. package/src/lib/button.js.map +0 -1
package/package.json CHANGED
@@ -1,23 +1,31 @@
1
1
  {
2
2
  "name": "@compsych-ui-components/react-native",
3
- "version": "4.0.0",
4
- "description": "React Native UI components for compsych",
5
- "main": "./src/index.js",
6
- "types": "./src/index.d.ts",
7
- "exports": {
8
- ".": {
9
- "types": "./src/index.d.ts",
10
- "default": "./src/index.js"
11
- }
12
- },
3
+ "version": "4.0.13",
4
+ "description": "ComPsych React Native Design System — components, icons, tokens, and theming",
5
+ "main": "src/index.ts",
6
+ "types": "src/index.ts",
7
+ "react-native": "src/index.ts",
8
+ "source": "src/index.ts",
9
+ "files": [
10
+ "src"
11
+ ],
13
12
  "publishConfig": {
14
- "access": "public",
15
- "registry": "https://registry.npmjs.org/"
13
+ "access": "public"
16
14
  },
15
+ "keywords": [
16
+ "react-native",
17
+ "compsych",
18
+ "design-system",
19
+ "components",
20
+ "expo"
21
+ ],
22
+ "license": "UNLICENSED",
17
23
  "peerDependencies": {
18
- "@compsych-ui-components/shared": "*",
24
+ "@expo/vector-icons": ">=15.0.0",
25
+ "expo-font": ">=13.0.0",
19
26
  "react": ">=18.0.0",
20
- "react-native": ">=0.73.0"
27
+ "react-native": ">=0.73.0",
28
+ "react-native-svg": ">=15.0.0"
21
29
  },
22
30
  "type": "commonjs"
23
31
  }
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export interface ActionSheetAction {
4
+ label: string;
5
+ onPress: () => void;
6
+ }
7
+ export interface ActionSheetProps {
8
+ visible: boolean;
9
+ onClose: () => void;
10
+ title?: string;
11
+ children?: React.ReactNode;
12
+ primaryAction?: ActionSheetAction;
13
+ secondaryAction?: ActionSheetAction;
14
+ style?: StyleProp<ViewStyle>;
15
+ }
16
+ export declare function ActionSheet({ visible, onClose, title, children, primaryAction, secondaryAction, style, }: ActionSheetProps): React.JSX.Element;
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ActionSheet", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ActionSheet;
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 _theme = require("../../theme");
16
+ const _Button = require("../Button");
17
+ const _HeaderText = require("../HeaderText");
18
+ function _getRequireWildcardCache(nodeInterop) {
19
+ if (typeof WeakMap !== "function") return null;
20
+ var cacheBabelInterop = new WeakMap();
21
+ var cacheNodeInterop = new WeakMap();
22
+ return (_getRequireWildcardCache = function(nodeInterop) {
23
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
24
+ })(nodeInterop);
25
+ }
26
+ function _interop_require_wildcard(obj, nodeInterop) {
27
+ if (!nodeInterop && obj && obj.__esModule) {
28
+ return obj;
29
+ }
30
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
31
+ return {
32
+ default: obj
33
+ };
34
+ }
35
+ var cache = _getRequireWildcardCache(nodeInterop);
36
+ if (cache && cache.has(obj)) {
37
+ return cache.get(obj);
38
+ }
39
+ var newObj = {
40
+ __proto__: null
41
+ };
42
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
43
+ for(var key in obj){
44
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
45
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
46
+ if (desc && (desc.get || desc.set)) {
47
+ Object.defineProperty(newObj, key, desc);
48
+ } else {
49
+ newObj[key] = obj[key];
50
+ }
51
+ }
52
+ }
53
+ newObj.default = obj;
54
+ if (cache) {
55
+ cache.set(obj, newObj);
56
+ }
57
+ return newObj;
58
+ }
59
+ function ActionSheet({ visible, onClose, title, children, primaryAction, secondaryAction, style }) {
60
+ const { colorRoles: cr, dimensions: dim } = (0, _theme.useTheme)();
61
+ const dynamicStyles = (0, _react.useMemo)(()=>({
62
+ sheetWrapper: {
63
+ paddingHorizontal: dim.spacing.padding.sysPadding6,
64
+ paddingBottom: dim.spacing.padding.sysPadding6
65
+ },
66
+ sheet: {
67
+ backgroundColor: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
68
+ borderRadius: dim.borderRadius.sysRadiusXxl
69
+ },
70
+ titleRow: {
71
+ paddingHorizontal: dim.spacing.padding.sysPadding16,
72
+ paddingVertical: dim.spacing.padding.sysPadding8
73
+ },
74
+ closeButton: {
75
+ borderRadius: dim.borderRadius.sysRadiusFull,
76
+ backgroundColor: cr.surface.surfaceContainer.sysSurfaceContainer
77
+ },
78
+ contentInner: {
79
+ padding: dim.spacing.padding.sysPadding16
80
+ },
81
+ actions: {
82
+ padding: dim.spacing.padding.sysPadding24,
83
+ gap: dim.spacing.padding.sysPadding12
84
+ }
85
+ }), [
86
+ cr,
87
+ dim
88
+ ]);
89
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.Modal, {
90
+ visible: visible,
91
+ transparent: true,
92
+ animationType: "slide",
93
+ onRequestClose: onClose,
94
+ statusBarTranslucent: true,
95
+ children: [
96
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
97
+ style: styles.backdrop,
98
+ onPress: onClose,
99
+ accessible: false
100
+ }),
101
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
102
+ style: [
103
+ styles.sheetWrapper,
104
+ dynamicStyles.sheetWrapper,
105
+ style
106
+ ],
107
+ pointerEvents: "box-none",
108
+ children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
109
+ style: [
110
+ styles.sheet,
111
+ dynamicStyles.sheet
112
+ ],
113
+ children: [
114
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
115
+ style: styles.toolbar,
116
+ children: [
117
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
118
+ style: styles.grabberRow,
119
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
120
+ style: styles.grabber
121
+ })
122
+ }),
123
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
124
+ style: [
125
+ styles.titleRow,
126
+ dynamicStyles.titleRow
127
+ ],
128
+ children: [
129
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
130
+ style: styles.closeButtonSize
131
+ }),
132
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_HeaderText.HeaderText, {
133
+ variant: "titleSmall",
134
+ emphasized: true,
135
+ color: cr.surface.surface.sysOnSurface,
136
+ style: styles.titleText,
137
+ children: title ?? ''
138
+ }),
139
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
140
+ onPress: onClose,
141
+ accessibilityRole: "button",
142
+ accessibilityLabel: "Close",
143
+ style: ({ pressed })=>[
144
+ styles.closeButtonSize,
145
+ dynamicStyles.closeButton,
146
+ pressed && styles.closePressed
147
+ ],
148
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_vectoricons.Ionicons, {
149
+ name: "close",
150
+ size: 20,
151
+ color: cr.surface.surface.sysOnSurface
152
+ })
153
+ })
154
+ ]
155
+ })
156
+ ]
157
+ }),
158
+ children && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.ScrollView, {
159
+ style: styles.content,
160
+ contentContainerStyle: dynamicStyles.contentInner,
161
+ showsVerticalScrollIndicator: false,
162
+ children: children
163
+ }),
164
+ (primaryAction || secondaryAction) && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
165
+ style: dynamicStyles.actions,
166
+ children: [
167
+ primaryAction && /*#__PURE__*/ (0, _jsxruntime.jsx)(_Button.Button, {
168
+ label: primaryAction.label,
169
+ variant: "filled",
170
+ size: "xl",
171
+ fullWidth: true,
172
+ onPress: primaryAction.onPress
173
+ }),
174
+ secondaryAction && /*#__PURE__*/ (0, _jsxruntime.jsx)(_Button.Button, {
175
+ label: secondaryAction.label,
176
+ variant: "outlined",
177
+ size: "xl",
178
+ fullWidth: true,
179
+ onPress: secondaryAction.onPress
180
+ })
181
+ ]
182
+ })
183
+ ]
184
+ })
185
+ })
186
+ ]
187
+ });
188
+ }
189
+ const styles = _reactnative.StyleSheet.create({
190
+ backdrop: {
191
+ position: 'absolute',
192
+ left: 0,
193
+ right: 0,
194
+ top: 0,
195
+ bottom: 0,
196
+ backgroundColor: 'rgba(0,0,0,0.4)'
197
+ },
198
+ sheetWrapper: {
199
+ flex: 1,
200
+ justifyContent: 'flex-end'
201
+ },
202
+ sheet: {
203
+ borderWidth: 1,
204
+ borderColor: 'rgba(255,255,255,0.4)',
205
+ overflow: 'hidden',
206
+ shadowColor: '#000',
207
+ shadowOffset: {
208
+ width: 0,
209
+ height: 4
210
+ },
211
+ shadowOpacity: 0.1,
212
+ shadowRadius: 16,
213
+ elevation: 8
214
+ },
215
+ toolbar: {
216
+ alignItems: 'center',
217
+ width: '100%'
218
+ },
219
+ grabberRow: {
220
+ height: 16,
221
+ justifyContent: 'flex-end',
222
+ alignItems: 'center',
223
+ paddingBottom: 0,
224
+ paddingTop: 5
225
+ },
226
+ grabber: {
227
+ width: 36,
228
+ height: 5,
229
+ borderRadius: 100,
230
+ backgroundColor: '#ccc'
231
+ },
232
+ titleRow: {
233
+ flexDirection: 'row',
234
+ alignItems: 'center',
235
+ justifyContent: 'space-between',
236
+ width: '100%'
237
+ },
238
+ titleText: {
239
+ flex: 1,
240
+ textAlign: 'center'
241
+ },
242
+ closeButtonSize: {
243
+ width: 32,
244
+ height: 32,
245
+ alignItems: 'center',
246
+ justifyContent: 'center'
247
+ },
248
+ closePressed: {
249
+ opacity: 0.7
250
+ },
251
+ content: {
252
+ maxHeight: 400
253
+ }
254
+ });
255
+
256
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/ActionSheet/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\n\r\nimport {\r\n Modal,\r\n Pressable,\r\n ScrollView,\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\n\r\nimport { useTheme } from '../../theme';\r\nimport { Button } from '../Button';\r\nimport { HeaderText } from '../HeaderText';\r\n\r\nexport interface ActionSheetAction {\r\n label: string;\r\n onPress: () => void;\r\n}\r\n\r\nexport interface ActionSheetProps {\r\n visible: boolean;\r\n onClose: () => void;\r\n title?: string;\r\n children?: React.ReactNode;\r\n primaryAction?: ActionSheetAction;\r\n secondaryAction?: ActionSheetAction;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\nexport function ActionSheet({\r\n visible,\r\n onClose,\r\n title,\r\n children,\r\n primaryAction,\r\n secondaryAction,\r\n style,\r\n}: ActionSheetProps) {\r\n const { colorRoles: cr, dimensions: dim } = useTheme();\r\n\r\n const dynamicStyles = useMemo(\r\n () => ({\r\n sheetWrapper: {\r\n paddingHorizontal: dim.spacing.padding.sysPadding6,\r\n paddingBottom: dim.spacing.padding.sysPadding6,\r\n },\r\n sheet: {\r\n backgroundColor: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n borderRadius: dim.borderRadius.sysRadiusXxl,\r\n },\r\n titleRow: {\r\n paddingHorizontal: dim.spacing.padding.sysPadding16,\r\n paddingVertical: dim.spacing.padding.sysPadding8,\r\n },\r\n closeButton: {\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n backgroundColor: cr.surface.surfaceContainer.sysSurfaceContainer,\r\n },\r\n contentInner: {\r\n padding: dim.spacing.padding.sysPadding16,\r\n },\r\n actions: {\r\n padding: dim.spacing.padding.sysPadding24,\r\n gap: dim.spacing.padding.sysPadding12,\r\n },\r\n }),\r\n [cr, dim],\r\n );\r\n\r\n return (\r\n <Modal\r\n visible={visible}\r\n transparent\r\n animationType=\"slide\"\r\n onRequestClose={onClose}\r\n statusBarTranslucent\r\n >\r\n {/* Backdrop */}\r\n <Pressable style={styles.backdrop} onPress={onClose} accessible={false} />\r\n\r\n {/* Sheet */}\r\n <View\r\n style={[styles.sheetWrapper, dynamicStyles.sheetWrapper, style]}\r\n pointerEvents=\"box-none\"\r\n >\r\n <View style={[styles.sheet, dynamicStyles.sheet]}>\r\n {/* Toolbar */}\r\n <View style={styles.toolbar}>\r\n {/* Grabber */}\r\n <View style={styles.grabberRow}>\r\n <View style={styles.grabber} />\r\n </View>\r\n\r\n {/* Title row */}\r\n <View style={[styles.titleRow, dynamicStyles.titleRow]}>\r\n {/* Invisible spacer to balance the close button */}\r\n <View style={styles.closeButtonSize} />\r\n\r\n <HeaderText\r\n variant=\"titleSmall\"\r\n emphasized\r\n color={cr.surface.surface.sysOnSurface}\r\n style={styles.titleText}\r\n >\r\n {title ?? ''}\r\n </HeaderText>\r\n\r\n {/* Close button */}\r\n <Pressable\r\n onPress={onClose}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel=\"Close\"\r\n style={({ pressed }) => [\r\n styles.closeButtonSize,\r\n dynamicStyles.closeButton,\r\n pressed && styles.closePressed,\r\n ]}\r\n >\r\n <Ionicons\r\n name=\"close\"\r\n size={20}\r\n color={cr.surface.surface.sysOnSurface}\r\n />\r\n </Pressable>\r\n </View>\r\n </View>\r\n\r\n {/* Content */}\r\n {children && (\r\n <ScrollView\r\n style={styles.content}\r\n contentContainerStyle={dynamicStyles.contentInner}\r\n showsVerticalScrollIndicator={false}\r\n >\r\n {children}\r\n </ScrollView>\r\n )}\r\n\r\n {/* Actions */}\r\n {(primaryAction || secondaryAction) && (\r\n <View style={dynamicStyles.actions}>\r\n {primaryAction && (\r\n <Button\r\n label={primaryAction.label}\r\n variant=\"filled\"\r\n size=\"xl\"\r\n fullWidth\r\n onPress={primaryAction.onPress}\r\n />\r\n )}\r\n {secondaryAction && (\r\n <Button\r\n label={secondaryAction.label}\r\n variant=\"outlined\"\r\n size=\"xl\"\r\n fullWidth\r\n onPress={secondaryAction.onPress}\r\n />\r\n )}\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n </Modal>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n backdrop: {\r\n position: 'absolute', left: 0, right: 0, top: 0, bottom: 0,\r\n backgroundColor: 'rgba(0,0,0,0.4)',\r\n },\r\n sheetWrapper: {\r\n flex: 1,\r\n justifyContent: 'flex-end',\r\n },\r\n sheet: {\r\n borderWidth: 1,\r\n borderColor: 'rgba(255,255,255,0.4)',\r\n overflow: 'hidden',\r\n shadowColor: '#000',\r\n shadowOffset: { width: 0, height: 4 },\r\n shadowOpacity: 0.1,\r\n shadowRadius: 16,\r\n elevation: 8,\r\n },\r\n toolbar: {\r\n alignItems: 'center',\r\n width: '100%',\r\n },\r\n grabberRow: {\r\n height: 16,\r\n justifyContent: 'flex-end',\r\n alignItems: 'center',\r\n paddingBottom: 0,\r\n paddingTop: 5,\r\n },\r\n grabber: {\r\n width: 36,\r\n height: 5,\r\n borderRadius: 100,\r\n backgroundColor: '#ccc',\r\n },\r\n titleRow: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n },\r\n titleText: {\r\n flex: 1,\r\n textAlign: 'center',\r\n },\r\n closeButtonSize: {\r\n width: 32,\r\n height: 32,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n closePressed: {\r\n opacity: 0.7,\r\n },\r\n content: {\r\n maxHeight: 400,\r\n },\r\n});\r\n"],"names":["ActionSheet","visible","onClose","title","children","primaryAction","secondaryAction","style","colorRoles","cr","dimensions","dim","useTheme","dynamicStyles","useMemo","sheetWrapper","paddingHorizontal","spacing","padding","sysPadding6","paddingBottom","sheet","backgroundColor","surface","surfaceContainer","sysSurfaceContainerLowest","borderRadius","sysRadiusXxl","titleRow","sysPadding16","paddingVertical","sysPadding8","closeButton","sysRadiusFull","sysSurfaceContainer","contentInner","actions","sysPadding24","gap","sysPadding12","Modal","transparent","animationType","onRequestClose","statusBarTranslucent","Pressable","styles","backdrop","onPress","accessible","View","pointerEvents","toolbar","grabberRow","grabber","closeButtonSize","HeaderText","variant","emphasized","color","sysOnSurface","titleText","accessibilityRole","accessibilityLabel","pressed","closePressed","Ionicons","name","size","ScrollView","content","contentContainerStyle","showsVerticalScrollIndicator","Button","label","fullWidth","StyleSheet","create","position","left","right","top","bottom","flex","justifyContent","borderWidth","borderColor","overflow","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","alignItems","paddingTop","flexDirection","textAlign","opacity","maxHeight"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export type AlertVariant = 'default' | 'elevated' | 'informative' | 'warning' | 'positive' | 'danger';
4
+ export type AlertSize = 'sm' | 'lg';
5
+ export interface AlertProps {
6
+ variant?: AlertVariant;
7
+ size?: AlertSize;
8
+ /** Bold title — lg size only */
9
+ title?: string;
10
+ /** Body / description text */
11
+ description: string;
12
+ /** Custom leading icon — overrides the default per-variant icon */
13
+ icon?: React.ReactNode;
14
+ /** Hide the leading icon entirely */
15
+ hideIcon?: boolean;
16
+ /** Label for the optional action button */
17
+ actionLabel?: string;
18
+ onAction?: () => void;
19
+ /** Show dismiss (×) button */
20
+ dismissible?: boolean;
21
+ onDismiss?: () => void;
22
+ style?: StyleProp<ViewStyle>;
23
+ }
24
+ export declare function Alert({ variant, size, title, description, icon, hideIcon, actionLabel, onAction, dismissible, onDismiss, style, }: AlertProps): React.JSX.Element;
@@ -0,0 +1,304 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Alert", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Alert;
9
+ }
10
+ });
11
+ const _jsxruntime = require("react/jsx-runtime");
12
+ const _react = /*#__PURE__*/ _interop_require_default(require("react"));
13
+ const _reactnative = require("react-native");
14
+ const _vectoricons = require("@expo/vector-icons");
15
+ const _theme = require("../../theme");
16
+ function _interop_require_default(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
21
+ function getVariantColors(variant, cr) {
22
+ switch(variant){
23
+ case 'default':
24
+ return {
25
+ bg: cr.surface.surfaceContainer.sysSurfaceContainerLow,
26
+ text: cr.surface.surface.sysOnSurface,
27
+ iconColor: cr.surface.surface.sysOnSurfaceVariant,
28
+ elevated: false,
29
+ actionBorder: false
30
+ };
31
+ case 'elevated':
32
+ return {
33
+ bg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
34
+ text: cr.surface.surface.sysOnSurface,
35
+ iconColor: cr.surface.surface.sysOnSurfaceVariant,
36
+ elevated: true,
37
+ actionBorder: true
38
+ };
39
+ case 'informative':
40
+ return {
41
+ bg: cr.custom.info.sysInfoContainer,
42
+ text: cr.custom.info.sysOnInfoContainer,
43
+ iconColor: cr.custom.info.sysOnInfoContainer,
44
+ elevated: false,
45
+ actionBorder: false
46
+ };
47
+ case 'warning':
48
+ return {
49
+ bg: cr.custom.warning.sysWarningContainer,
50
+ text: cr.custom.warning.sysOnWarningContainer,
51
+ iconColor: cr.custom.warning.sysOnWarningContainer,
52
+ elevated: false,
53
+ actionBorder: false
54
+ };
55
+ case 'positive':
56
+ return {
57
+ bg: cr.custom.success.sysSuccessContainer,
58
+ text: cr.custom.success.sysOnSuccessContainer,
59
+ iconColor: cr.custom.success.sysOnSuccessContainer,
60
+ elevated: false,
61
+ actionBorder: false
62
+ };
63
+ case 'danger':
64
+ return {
65
+ bg: cr.error.sysErrorContainer,
66
+ text: cr.error.sysOnErrorContainer,
67
+ iconColor: cr.error.sysOnErrorContainer,
68
+ elevated: false,
69
+ actionBorder: false
70
+ };
71
+ }
72
+ }
73
+ // ── Default icon per variant ─────────────────────────────────────────────────
74
+ function defaultIconName(variant) {
75
+ switch(variant){
76
+ case 'default':
77
+ case 'elevated':
78
+ return 'information-circle-outline';
79
+ case 'informative':
80
+ return 'information-circle';
81
+ case 'warning':
82
+ return 'warning';
83
+ case 'positive':
84
+ return 'checkmark-circle';
85
+ case 'danger':
86
+ return 'alert-circle';
87
+ }
88
+ }
89
+ function Alert({ variant = 'default', size = 'lg', title, description, icon, hideIcon = false, actionLabel, onAction, dismissible = false, onDismiss, style }) {
90
+ const { colorRoles: cr, dimensions: dim, typeScale: ts } = (0, _theme.useTheme)();
91
+ const c = getVariantColors(variant, cr);
92
+ const isLg = size === 'lg';
93
+ const resolvedIcon = !hideIcon && (icon ?? /*#__PURE__*/ (0, _jsxruntime.jsx)(_vectoricons.Ionicons, {
94
+ name: defaultIconName(variant),
95
+ size: isLg ? 24 : 20,
96
+ color: c.iconColor
97
+ }));
98
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
99
+ accessibilityRole: "alert",
100
+ accessibilityLiveRegion: "polite",
101
+ style: [
102
+ styles.root,
103
+ {
104
+ backgroundColor: c.bg,
105
+ borderRadius: isLg ? dim.borderRadius.sysRadiusLg : dim.borderRadius.sysRadiusMd
106
+ },
107
+ c.elevated && styles.elevated,
108
+ style
109
+ ],
110
+ children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
111
+ style: [
112
+ styles.content,
113
+ {
114
+ paddingHorizontal: isLg ? dim.spacing.padding.sysPadding24 : dim.spacing.padding.sysPadding16,
115
+ paddingVertical: isLg ? dim.spacing.padding.sysPadding16 : dim.spacing.padding.sysPadding16,
116
+ gap: isLg ? dim.spacing.padding.sysPadding16 : dim.spacing.padding.sysPadding12,
117
+ alignItems: isLg ? 'flex-start' : 'center'
118
+ }
119
+ ],
120
+ children: [
121
+ resolvedIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
122
+ style: {
123
+ paddingTop: isLg ? dim.spacing.padding.sysPadding2 : 0,
124
+ flexShrink: 0
125
+ },
126
+ children: resolvedIcon
127
+ }),
128
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
129
+ style: styles.textAction,
130
+ children: [
131
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
132
+ style: [
133
+ styles.textBlock,
134
+ {
135
+ gap: 4
136
+ }
137
+ ],
138
+ children: [
139
+ isLg && title && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
140
+ style: {
141
+ color: c.text,
142
+ fontSize: ts.titleSmall.sysFontSize,
143
+ lineHeight: ts.titleSmall.sysLineHeight,
144
+ fontWeight: '500',
145
+ includeFontPadding: false
146
+ },
147
+ children: title
148
+ }),
149
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
150
+ style: {
151
+ color: c.text,
152
+ fontSize: isLg ? ts.bodyMedium.sysFontSize : ts.bodySmall.sysFontSize,
153
+ lineHeight: isLg ? ts.bodyMedium.sysLineHeight : ts.bodySmall.sysLineHeight,
154
+ fontWeight: '400',
155
+ includeFontPadding: false
156
+ },
157
+ children: description
158
+ })
159
+ ]
160
+ }),
161
+ actionLabel && (isLg ? // lg: pill button with white bg + shadow (or border for elevated)
162
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
163
+ onPress: onAction,
164
+ accessibilityRole: "button",
165
+ accessibilityLabel: actionLabel,
166
+ style: ({ pressed })=>[
167
+ styles.actionLg,
168
+ {
169
+ backgroundColor: cr.surface.surfaceContainer.sysSurfaceContainerLowest
170
+ },
171
+ c.actionBorder && [
172
+ styles.actionLgBorderBase,
173
+ {
174
+ borderColor: cr.outline.sysOutline
175
+ }
176
+ ],
177
+ pressed && {
178
+ opacity: 0.84
179
+ }
180
+ ],
181
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
182
+ style: {
183
+ color: cr.surface.surface.sysOnSurface,
184
+ fontSize: ts.labelMedium.sysFontSize,
185
+ lineHeight: ts.labelMedium.sysLineHeight,
186
+ fontWeight: '400',
187
+ includeFontPadding: false
188
+ },
189
+ children: actionLabel
190
+ })
191
+ }) : // sm: text-only button
192
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
193
+ onPress: onAction,
194
+ accessibilityRole: "button",
195
+ accessibilityLabel: actionLabel,
196
+ style: styles.actionSm,
197
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
198
+ style: {
199
+ color: c.text,
200
+ fontSize: ts.labelMedium.sysFontSize,
201
+ lineHeight: ts.labelMedium.sysLineHeight,
202
+ fontWeight: '500',
203
+ includeFontPadding: false
204
+ },
205
+ children: actionLabel
206
+ })
207
+ }))
208
+ ]
209
+ }),
210
+ dismissible && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
211
+ onPress: onDismiss,
212
+ accessibilityRole: "button",
213
+ accessibilityLabel: "Dismiss",
214
+ style: ({ pressed })=>[
215
+ styles.closeBtn,
216
+ isLg ? styles.closeBtnLg : styles.closeBtnSm,
217
+ pressed && {
218
+ opacity: 0.6
219
+ }
220
+ ],
221
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_vectoricons.Ionicons, {
222
+ name: "close",
223
+ size: 16,
224
+ color: c.iconColor
225
+ })
226
+ })
227
+ ]
228
+ })
229
+ });
230
+ }
231
+ const styles = _reactnative.StyleSheet.create({
232
+ root: {
233
+ overflow: 'hidden'
234
+ },
235
+ elevated: {
236
+ shadowColor: '#000',
237
+ shadowOffset: {
238
+ width: 0,
239
+ height: 2
240
+ },
241
+ shadowOpacity: 0.06,
242
+ shadowRadius: 4,
243
+ elevation: 1,
244
+ overflow: 'visible'
245
+ },
246
+ content: {
247
+ flexDirection: 'row'
248
+ },
249
+ textAction: {
250
+ flex: 1,
251
+ flexDirection: 'row',
252
+ alignItems: 'center',
253
+ justifyContent: 'space-between',
254
+ minWidth: 0,
255
+ gap: 16
256
+ },
257
+ textBlock: {
258
+ flex: 1,
259
+ minWidth: 0
260
+ },
261
+ // lg action button — elevated pill (backgroundColor and borderColor applied inline)
262
+ actionLg: {
263
+ height: 40,
264
+ paddingHorizontal: 24,
265
+ borderRadius: 9999,
266
+ alignItems: 'center',
267
+ justifyContent: 'center',
268
+ flexShrink: 0,
269
+ shadowColor: '#000',
270
+ shadowOffset: {
271
+ width: 0,
272
+ height: 2
273
+ },
274
+ shadowOpacity: 0.06,
275
+ shadowRadius: 4,
276
+ elevation: 1
277
+ },
278
+ actionLgBorderBase: {
279
+ borderWidth: 1
280
+ },
281
+ // sm action button — text only
282
+ actionSm: {
283
+ flexShrink: 0
284
+ },
285
+ closeBtn: {
286
+ alignItems: 'center',
287
+ justifyContent: 'center',
288
+ borderRadius: 9999
289
+ },
290
+ closeBtnLg: {
291
+ position: 'absolute',
292
+ top: 8,
293
+ right: 8,
294
+ width: 32,
295
+ height: 32
296
+ },
297
+ closeBtnSm: {
298
+ width: 32,
299
+ height: 32,
300
+ flexShrink: 0
301
+ }
302
+ });
303
+
304
+ //# sourceMappingURL=index.js.map