@compsych-ui-components/react-native 4.0.4 → 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 +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,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Checkbox", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Checkbox;
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
+ function _getRequireWildcardCache(nodeInterop) {
17
+ if (typeof WeakMap !== "function") return null;
18
+ var cacheBabelInterop = new WeakMap();
19
+ var cacheNodeInterop = new WeakMap();
20
+ return (_getRequireWildcardCache = function(nodeInterop) {
21
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
22
+ })(nodeInterop);
23
+ }
24
+ function _interop_require_wildcard(obj, nodeInterop) {
25
+ if (!nodeInterop && obj && obj.__esModule) {
26
+ return obj;
27
+ }
28
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
29
+ return {
30
+ default: obj
31
+ };
32
+ }
33
+ var cache = _getRequireWildcardCache(nodeInterop);
34
+ if (cache && cache.has(obj)) {
35
+ return cache.get(obj);
36
+ }
37
+ var newObj = {
38
+ __proto__: null
39
+ };
40
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
41
+ for(var key in obj){
42
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
43
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
44
+ if (desc && (desc.get || desc.set)) {
45
+ Object.defineProperty(newObj, key, desc);
46
+ } else {
47
+ newObj[key] = obj[key];
48
+ }
49
+ }
50
+ }
51
+ newObj.default = obj;
52
+ if (cache) {
53
+ cache.set(obj, newObj);
54
+ }
55
+ return newObj;
56
+ }
57
+ function Checkbox({ checked: checkedProp, defaultChecked = false, onChange, size = 'md', label, description, disabled = false, invalid = false, style }) {
58
+ const { colorRoles: cr, dimensions: dim, typeScale: ts } = (0, _theme.useTheme)();
59
+ const [internalChecked, setInternalChecked] = (0, _react.useState)(defaultChecked);
60
+ const SIZE_TOKENS = (0, _react.useMemo)(()=>({
61
+ sm: {
62
+ box: 20,
63
+ hitArea: 36,
64
+ fontSize: ts.bodySmall.sysFontSize,
65
+ lineHeight: ts.bodySmall.sysLineHeight,
66
+ iconSize: 13
67
+ },
68
+ md: {
69
+ box: 24,
70
+ hitArea: 40,
71
+ fontSize: ts.bodyMedium.sysFontSize,
72
+ lineHeight: ts.bodyMedium.sysLineHeight,
73
+ iconSize: 16
74
+ }
75
+ }), [
76
+ ts
77
+ ]);
78
+ const isControlled = checkedProp !== undefined;
79
+ const checkedState = isControlled ? checkedProp : internalChecked;
80
+ const isChecked = checkedState === true;
81
+ const isIndeterminate = checkedState === 'indeterminate';
82
+ const isSelected = isChecked || isIndeterminate;
83
+ const s = SIZE_TOKENS[size];
84
+ function handlePress() {
85
+ if (disabled) return;
86
+ // Indeterminate → true on activation (matches HTML spec)
87
+ const next = checkedState === true ? false : true;
88
+ if (!isControlled) setInternalChecked(next);
89
+ onChange?.(next);
90
+ }
91
+ const borderColor = invalid ? cr.error.sysError : isSelected ? 'transparent' : cr.outline.sysOutlineFixed;
92
+ const boxBg = isSelected ? invalid ? cr.error.sysError : cr.accent.primary.sysPrimary : 'transparent';
93
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
94
+ onPress: handlePress,
95
+ accessibilityRole: "checkbox",
96
+ accessibilityLabel: label,
97
+ accessibilityState: {
98
+ checked: isIndeterminate ? 'mixed' : isChecked,
99
+ disabled
100
+ },
101
+ style: ()=>[
102
+ styles.root,
103
+ disabled && styles.disabled,
104
+ style
105
+ ],
106
+ children: ({ pressed })=>/*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
107
+ children: [
108
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
109
+ style: [
110
+ styles.hitArea,
111
+ {
112
+ width: s.hitArea,
113
+ height: s.hitArea,
114
+ borderRadius: s.hitArea / 2,
115
+ backgroundColor: pressed && !disabled ? cr.transparent.neutral.sysBlack10 : 'transparent'
116
+ }
117
+ ],
118
+ children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
119
+ style: {
120
+ width: s.box,
121
+ height: s.box,
122
+ borderRadius: dim.borderRadius.sysRadiusXs,
123
+ borderWidth: isSelected ? 0 : dim.borderWidth.sysStrokeMedium,
124
+ borderColor,
125
+ backgroundColor: boxBg,
126
+ alignItems: 'center',
127
+ justifyContent: 'center'
128
+ },
129
+ children: [
130
+ isChecked && !isIndeterminate && /*#__PURE__*/ (0, _jsxruntime.jsx)(_vectoricons.Ionicons, {
131
+ name: "checkmark",
132
+ size: s.iconSize,
133
+ color: cr.accent.primary.sysOnPrimary
134
+ }),
135
+ isIndeterminate && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
136
+ style: {
137
+ width: s.box * 0.5,
138
+ height: 2,
139
+ borderRadius: 1,
140
+ backgroundColor: cr.accent.primary.sysOnPrimary
141
+ }
142
+ })
143
+ ]
144
+ })
145
+ }),
146
+ (label || description) && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
147
+ style: [
148
+ styles.textBlock,
149
+ {
150
+ gap: 2
151
+ }
152
+ ],
153
+ children: [
154
+ label && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
155
+ style: {
156
+ color: cr.surface.surface.sysOnSurface,
157
+ fontSize: s.fontSize,
158
+ lineHeight: s.lineHeight,
159
+ includeFontPadding: false
160
+ },
161
+ children: label
162
+ }),
163
+ description && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
164
+ style: {
165
+ color: cr.surface.surface.sysOnSurfaceVariant,
166
+ fontSize: s.fontSize - 2,
167
+ lineHeight: s.lineHeight - 2,
168
+ includeFontPadding: false
169
+ },
170
+ children: description
171
+ })
172
+ ]
173
+ })
174
+ ]
175
+ })
176
+ });
177
+ }
178
+ const styles = _reactnative.StyleSheet.create({
179
+ root: {
180
+ flexDirection: 'row',
181
+ alignItems: 'center'
182
+ },
183
+ hitArea: {
184
+ alignItems: 'center',
185
+ justifyContent: 'center'
186
+ },
187
+ textBlock: {
188
+ flex: 1,
189
+ flexDirection: 'column'
190
+ },
191
+ disabled: {
192
+ opacity: 0.48
193
+ }
194
+ });
195
+
196
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/Checkbox/index.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\r\n\r\nimport {\r\n Pressable,\r\n StyleProp,\r\n StyleSheet,\r\n Text,\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\n\r\nexport type CheckboxSize = 'sm' | 'md';\r\nexport type CheckboxCheckedState = boolean | 'indeterminate';\r\n\r\nexport interface CheckboxProps {\r\n checked?: CheckboxCheckedState;\r\n defaultChecked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n size?: CheckboxSize;\r\n label?: string;\r\n description?: string;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\nexport function Checkbox({\r\n checked: checkedProp,\r\n defaultChecked = false,\r\n onChange,\r\n size = 'md',\r\n label,\r\n description,\r\n disabled = false,\r\n invalid = false,\r\n style,\r\n}: CheckboxProps) {\r\n const { colorRoles: cr, dimensions: dim, typeScale: ts } = useTheme();\r\n const [internalChecked, setInternalChecked] =\r\n useState<boolean>(defaultChecked);\r\n\r\n const SIZE_TOKENS = useMemo(\r\n () => ({\r\n sm: {\r\n box: 20,\r\n hitArea: 36,\r\n fontSize: ts.bodySmall.sysFontSize,\r\n lineHeight: ts.bodySmall.sysLineHeight,\r\n iconSize: 13,\r\n },\r\n md: {\r\n box: 24,\r\n hitArea: 40,\r\n fontSize: ts.bodyMedium.sysFontSize,\r\n lineHeight: ts.bodyMedium.sysLineHeight,\r\n iconSize: 16,\r\n },\r\n }),\r\n [ts],\r\n );\r\n\r\n const isControlled = checkedProp !== undefined;\r\n const checkedState: CheckboxCheckedState = isControlled\r\n ? checkedProp\r\n : internalChecked;\r\n\r\n const isChecked = checkedState === true;\r\n const isIndeterminate = checkedState === 'indeterminate';\r\n const isSelected = isChecked || isIndeterminate;\r\n\r\n const s = SIZE_TOKENS[size];\r\n function handlePress() {\r\n if (disabled) return;\r\n // Indeterminate → true on activation (matches HTML spec)\r\n const next = checkedState === true ? false : true;\r\n if (!isControlled) setInternalChecked(next);\r\n onChange?.(next);\r\n }\r\n\r\n const borderColor = invalid\r\n ? cr.error.sysError\r\n : isSelected\r\n ? 'transparent'\r\n : cr.outline.sysOutlineFixed;\r\n\r\n const boxBg = isSelected\r\n ? invalid\r\n ? cr.error.sysError\r\n : cr.accent.primary.sysPrimary\r\n : 'transparent';\r\n\r\n return (\r\n <Pressable\r\n onPress={handlePress}\r\n accessibilityRole=\"checkbox\"\r\n accessibilityLabel={label}\r\n accessibilityState={{\r\n checked: isIndeterminate ? 'mixed' : isChecked,\r\n disabled,\r\n }}\r\n style={() => [styles.root, disabled && styles.disabled, style]}\r\n >\r\n {({ pressed }: { pressed: boolean }) => (\r\n <>\r\n {/* Hit-area / state-layer circle */}\r\n <View\r\n style={[\r\n styles.hitArea,\r\n {\r\n width: s.hitArea,\r\n height: s.hitArea,\r\n borderRadius: s.hitArea / 2,\r\n backgroundColor:\r\n pressed && !disabled\r\n ? cr.transparent.neutral.sysBlack10\r\n : 'transparent',\r\n },\r\n ]}\r\n >\r\n {/* Checkbox box */}\r\n <View\r\n style={{\r\n width: s.box,\r\n height: s.box,\r\n borderRadius: dim.borderRadius.sysRadiusXs,\r\n borderWidth: isSelected ? 0 : dim.borderWidth.sysStrokeMedium,\r\n borderColor,\r\n backgroundColor: boxBg,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n {isChecked && !isIndeterminate && (\r\n <Ionicons\r\n name=\"checkmark\"\r\n size={s.iconSize}\r\n color={cr.accent.primary.sysOnPrimary}\r\n />\r\n )}\r\n {isIndeterminate && (\r\n <View\r\n style={{\r\n width: s.box * 0.5,\r\n height: 2,\r\n borderRadius: 1,\r\n backgroundColor: cr.accent.primary.sysOnPrimary,\r\n }}\r\n />\r\n )}\r\n </View>\r\n </View>\r\n\r\n {(label || description) && (\r\n <View style={[styles.textBlock, { gap: 2 }]}>\r\n {label && (\r\n <Text\r\n style={{\r\n color: cr.surface.surface.sysOnSurface,\r\n fontSize: s.fontSize,\r\n lineHeight: s.lineHeight,\r\n includeFontPadding: false,\r\n }}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n {description && (\r\n <Text\r\n style={{\r\n color: cr.surface.surface.sysOnSurfaceVariant,\r\n fontSize: s.fontSize - 2,\r\n lineHeight: s.lineHeight - 2,\r\n includeFontPadding: false,\r\n }}\r\n >\r\n {description}\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n </>\r\n )}\r\n </Pressable>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n root: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n hitArea: {\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n textBlock: {\r\n flex: 1,\r\n flexDirection: 'column',\r\n },\r\n disabled: {\r\n opacity: 0.48,\r\n },\r\n});\r\n"],"names":["Checkbox","checked","checkedProp","defaultChecked","onChange","size","label","description","disabled","invalid","style","colorRoles","cr","dimensions","dim","typeScale","ts","useTheme","internalChecked","setInternalChecked","useState","SIZE_TOKENS","useMemo","sm","box","hitArea","fontSize","bodySmall","sysFontSize","lineHeight","sysLineHeight","iconSize","md","bodyMedium","isControlled","undefined","checkedState","isChecked","isIndeterminate","isSelected","s","handlePress","next","borderColor","error","sysError","outline","sysOutlineFixed","boxBg","accent","primary","sysPrimary","Pressable","onPress","accessibilityRole","accessibilityLabel","accessibilityState","styles","root","pressed","View","width","height","borderRadius","backgroundColor","transparent","neutral","sysBlack10","sysRadiusXs","borderWidth","sysStrokeMedium","alignItems","justifyContent","Ionicons","name","color","sysOnPrimary","textBlock","gap","Text","surface","sysOnSurface","includeFontPadding","sysOnSurfaceVariant","StyleSheet","create","flexDirection","flex","opacity"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export type ChipSize = 'sm' | 'md' | 'lg' | 'xl';
4
+ export type ChipUsage = 'neutral' | 'informative' | 'positive' | 'danger' | 'warning';
5
+ export interface ChipProps {
6
+ label: string;
7
+ size?: ChipSize;
8
+ usage?: ChipUsage;
9
+ /** Optional icon rendered before the label */
10
+ leadingIcon?: React.ReactNode;
11
+ /** Renders a close button — fires onDismiss when tapped */
12
+ dismissible?: boolean;
13
+ onDismiss?: () => void;
14
+ /** Renders a small count badge after the label */
15
+ badge?: number | string;
16
+ style?: StyleProp<ViewStyle>;
17
+ }
18
+ export declare function Chip({ label, size, usage, leadingIcon, dismissible, onDismiss, badge, style, }: ChipProps): React.JSX.Element;
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Chip", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Chip;
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
+ function _getRequireWildcardCache(nodeInterop) {
17
+ if (typeof WeakMap !== "function") return null;
18
+ var cacheBabelInterop = new WeakMap();
19
+ var cacheNodeInterop = new WeakMap();
20
+ return (_getRequireWildcardCache = function(nodeInterop) {
21
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
22
+ })(nodeInterop);
23
+ }
24
+ function _interop_require_wildcard(obj, nodeInterop) {
25
+ if (!nodeInterop && obj && obj.__esModule) {
26
+ return obj;
27
+ }
28
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
29
+ return {
30
+ default: obj
31
+ };
32
+ }
33
+ var cache = _getRequireWildcardCache(nodeInterop);
34
+ if (cache && cache.has(obj)) {
35
+ return cache.get(obj);
36
+ }
37
+ var newObj = {
38
+ __proto__: null
39
+ };
40
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
41
+ for(var key in obj){
42
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
43
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
44
+ if (desc && (desc.get || desc.set)) {
45
+ Object.defineProperty(newObj, key, desc);
46
+ } else {
47
+ newObj[key] = obj[key];
48
+ }
49
+ }
50
+ }
51
+ newObj.default = obj;
52
+ if (cache) {
53
+ cache.set(obj, newObj);
54
+ }
55
+ return newObj;
56
+ }
57
+ function getUsageColors(usage, cr) {
58
+ switch(usage){
59
+ case 'neutral':
60
+ return {
61
+ bg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
62
+ text: cr.surface.surface.sysOnSurface,
63
+ closeBg: cr.surface.surfaceContainer.sysSurfaceContainerLow,
64
+ badgeBg: cr.surface.surfaceContainer.sysSurfaceContainer,
65
+ badgeText: cr.surface.surface.sysOnSurface,
66
+ elevated: true
67
+ };
68
+ case 'informative':
69
+ return {
70
+ bg: cr.custom.info.sysInfo,
71
+ text: cr.accent.primary.sysOnPrimary,
72
+ closeBg: cr.transparent.neutral.sysWhite20,
73
+ badgeBg: cr.transparent.neutral.sysWhite20,
74
+ badgeText: cr.custom.info.sysOnInfo,
75
+ elevated: false
76
+ };
77
+ case 'positive':
78
+ return {
79
+ bg: cr.custom.success.sysSuccess,
80
+ text: cr.custom.success.sysOnSuccess,
81
+ closeBg: cr.transparent.neutral.sysWhite20,
82
+ badgeBg: cr.transparent.neutral.sysWhite20,
83
+ badgeText: cr.custom.success.sysOnSuccess,
84
+ elevated: false
85
+ };
86
+ case 'danger':
87
+ return {
88
+ bg: cr.error.sysError,
89
+ text: cr.error.sysOnError,
90
+ closeBg: cr.transparent.neutral.sysWhite20,
91
+ badgeBg: cr.transparent.neutral.sysWhite20,
92
+ badgeText: cr.error.sysOnError,
93
+ elevated: false
94
+ };
95
+ case 'warning':
96
+ return {
97
+ bg: cr.custom.warning.sysWarning,
98
+ text: cr.custom.warning.sysOnWarning,
99
+ closeBg: cr.transparent.neutral.sysWhite20,
100
+ badgeBg: cr.transparent.neutral.sysWhite20,
101
+ badgeText: cr.custom.warning.sysOnWarning,
102
+ elevated: false
103
+ };
104
+ }
105
+ }
106
+ function Chip({ label, size = 'md', usage = 'neutral', leadingIcon, dismissible = false, onDismiss, badge, style }) {
107
+ const { colorRoles: cr, dimensions: dim, typeScale: ts } = (0, _theme.useTheme)();
108
+ const SIZE_TOKENS = (0, _react.useMemo)(()=>({
109
+ sm: {
110
+ height: 20,
111
+ paddingH: dim.spacing.padding.sysPadding8,
112
+ paddingV: dim.spacing.padding.sysPadding4,
113
+ gap: dim.spacing.padding.sysPadding4,
114
+ fontSize: ts.labelSmall.sysFontSize,
115
+ lineHeight: ts.labelSmall.sysLineHeight,
116
+ letterSpacing: ts.labelSmall.sysTracking,
117
+ iconSize: 16,
118
+ closeBtnSize: 16,
119
+ closeIconSize: 12,
120
+ badgeSize: 16,
121
+ badgeFontSize: ts.labelSmall.sysFontSize,
122
+ badgeLineHeight: ts.labelSmall.sysLineHeight
123
+ },
124
+ md: {
125
+ height: 24,
126
+ paddingH: dim.spacing.padding.sysPadding12,
127
+ paddingV: dim.spacing.padding.sysPadding4,
128
+ gap: dim.spacing.padding.sysPadding4,
129
+ fontSize: ts.labelMedium.sysFontSize,
130
+ lineHeight: ts.labelMedium.sysLineHeight,
131
+ letterSpacing: ts.labelMedium.sysTracking,
132
+ iconSize: 16,
133
+ closeBtnSize: 16,
134
+ closeIconSize: 12,
135
+ badgeSize: 16,
136
+ badgeFontSize: ts.labelSmall.sysFontSize,
137
+ badgeLineHeight: ts.labelSmall.sysLineHeight
138
+ },
139
+ lg: {
140
+ height: 32,
141
+ paddingH: dim.spacing.padding.sysPadding16,
142
+ paddingV: dim.spacing.padding.sysPadding4,
143
+ gap: dim.spacing.padding.sysPadding8,
144
+ fontSize: ts.labelMedium.sysFontSize,
145
+ lineHeight: ts.labelMedium.sysLineHeight,
146
+ letterSpacing: ts.labelMedium.sysTracking,
147
+ iconSize: 20,
148
+ closeBtnSize: 20,
149
+ closeIconSize: 16,
150
+ badgeSize: 20,
151
+ badgeFontSize: ts.labelSmall.sysFontSize,
152
+ badgeLineHeight: ts.labelSmall.sysLineHeight
153
+ },
154
+ xl: {
155
+ height: 40,
156
+ paddingH: dim.spacing.padding.sysPadding16,
157
+ paddingV: dim.spacing.padding.sysPadding8,
158
+ gap: dim.spacing.padding.sysPadding8,
159
+ fontSize: ts.bodyMedium.sysFontSize,
160
+ lineHeight: ts.bodyMedium.sysLineHeight,
161
+ letterSpacing: ts.bodyMedium.sysTracking,
162
+ iconSize: 20,
163
+ closeBtnSize: 24,
164
+ closeIconSize: 16,
165
+ badgeSize: 24,
166
+ badgeFontSize: ts.labelMedium.sysFontSize,
167
+ badgeLineHeight: ts.labelMedium.sysLineHeight
168
+ }
169
+ }), [
170
+ dim,
171
+ ts
172
+ ]);
173
+ const s = SIZE_TOKENS[size];
174
+ const c = getUsageColors(usage, cr);
175
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
176
+ accessible: true,
177
+ accessibilityRole: "none",
178
+ accessibilityLabel: badge !== undefined ? `${label}, ${badge}` : label,
179
+ style: [
180
+ styles.root,
181
+ {
182
+ height: s.height,
183
+ paddingHorizontal: s.paddingH,
184
+ paddingVertical: s.paddingV,
185
+ gap: s.gap,
186
+ backgroundColor: c.bg
187
+ },
188
+ c.elevated && styles.elevated,
189
+ style
190
+ ],
191
+ children: [
192
+ leadingIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
193
+ style: {
194
+ width: s.iconSize,
195
+ height: s.iconSize,
196
+ alignItems: 'center',
197
+ justifyContent: 'center',
198
+ flexShrink: 0
199
+ },
200
+ children: leadingIcon
201
+ }),
202
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
203
+ style: {
204
+ color: c.text,
205
+ fontSize: s.fontSize,
206
+ lineHeight: s.lineHeight,
207
+ letterSpacing: s.letterSpacing,
208
+ includeFontPadding: false
209
+ },
210
+ numberOfLines: 1,
211
+ children: label
212
+ }),
213
+ badge !== undefined && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
214
+ style: {
215
+ width: s.badgeSize,
216
+ height: s.badgeSize,
217
+ borderRadius: s.badgeSize / 2,
218
+ backgroundColor: c.badgeBg,
219
+ alignItems: 'center',
220
+ justifyContent: 'center',
221
+ flexShrink: 0
222
+ },
223
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
224
+ style: {
225
+ color: c.badgeText,
226
+ fontSize: s.badgeFontSize,
227
+ lineHeight: s.badgeLineHeight,
228
+ includeFontPadding: false,
229
+ fontWeight: '500'
230
+ },
231
+ children: badge
232
+ })
233
+ }),
234
+ dismissible && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
235
+ onPress: onDismiss,
236
+ accessibilityRole: "button",
237
+ accessibilityLabel: "Dismiss",
238
+ hitSlop: 4,
239
+ style: ({ pressed })=>({
240
+ width: s.closeBtnSize,
241
+ height: s.closeBtnSize,
242
+ borderRadius: s.closeBtnSize / 2,
243
+ backgroundColor: pressed ? cr.transparent.neutral.sysBlack10 : c.closeBg,
244
+ alignItems: 'center',
245
+ justifyContent: 'center',
246
+ flexShrink: 0,
247
+ overflow: 'hidden'
248
+ }),
249
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_vectoricons.Ionicons, {
250
+ name: "close",
251
+ size: s.closeIconSize,
252
+ color: c.text
253
+ })
254
+ })
255
+ ]
256
+ });
257
+ }
258
+ const styles = _reactnative.StyleSheet.create({
259
+ root: {
260
+ flexDirection: 'row',
261
+ alignItems: 'center',
262
+ alignSelf: 'flex-start',
263
+ borderRadius: 9999,
264
+ overflow: 'hidden'
265
+ },
266
+ elevated: {
267
+ shadowColor: '#000',
268
+ shadowOffset: {
269
+ width: 0,
270
+ height: 2
271
+ },
272
+ shadowOpacity: 0.1,
273
+ shadowRadius: 8,
274
+ elevation: 2,
275
+ // overflow must be visible for shadow on iOS — override here
276
+ overflow: 'visible'
277
+ }
278
+ });
279
+
280
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/Chip/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\n\r\nimport {\r\n Pressable,\r\n StyleProp,\r\n StyleSheet,\r\n Text,\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\n\r\nexport type ChipSize = 'sm' | 'md' | 'lg' | 'xl';\r\nexport type ChipUsage =\r\n | 'neutral'\r\n | 'informative'\r\n | 'positive'\r\n | 'danger'\r\n | 'warning';\r\n\r\nexport interface ChipProps {\r\n label: string;\r\n size?: ChipSize;\r\n usage?: ChipUsage;\r\n /** Optional icon rendered before the label */\r\n leadingIcon?: React.ReactNode;\r\n /** Renders a close button — fires onDismiss when tapped */\r\n dismissible?: boolean;\r\n onDismiss?: () => void;\r\n /** Renders a small count badge after the label */\r\n badge?: number | string;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\n// ── Usage/color types ─────────────────────────────────────────────────────────\r\n\r\ntype UsageColors = {\r\n bg: string;\r\n text: string;\r\n closeBg: string;\r\n badgeBg: string;\r\n badgeText: string;\r\n /** true → render elevation shadow */\r\n elevated: boolean;\r\n};\r\n\r\ntype ColorRoles = ReturnType<typeof useTheme>['colorRoles'];\r\n\r\nfunction getUsageColors(usage: ChipUsage, cr: ColorRoles): UsageColors {\r\n switch (usage) {\r\n case 'neutral':\r\n return {\r\n bg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n text: cr.surface.surface.sysOnSurface,\r\n closeBg: cr.surface.surfaceContainer.sysSurfaceContainerLow,\r\n badgeBg: cr.surface.surfaceContainer.sysSurfaceContainer,\r\n badgeText: cr.surface.surface.sysOnSurface,\r\n elevated: true,\r\n };\r\n case 'informative':\r\n return {\r\n bg: cr.custom.info.sysInfo,\r\n text: cr.accent.primary.sysOnPrimary,\r\n closeBg: cr.transparent.neutral.sysWhite20,\r\n badgeBg: cr.transparent.neutral.sysWhite20,\r\n badgeText: cr.custom.info.sysOnInfo,\r\n elevated: false,\r\n };\r\n case 'positive':\r\n return {\r\n bg: cr.custom.success.sysSuccess,\r\n text: cr.custom.success.sysOnSuccess,\r\n closeBg: cr.transparent.neutral.sysWhite20,\r\n badgeBg: cr.transparent.neutral.sysWhite20,\r\n badgeText: cr.custom.success.sysOnSuccess,\r\n elevated: false,\r\n };\r\n case 'danger':\r\n return {\r\n bg: cr.error.sysError,\r\n text: cr.error.sysOnError,\r\n closeBg: cr.transparent.neutral.sysWhite20,\r\n badgeBg: cr.transparent.neutral.sysWhite20,\r\n badgeText: cr.error.sysOnError,\r\n elevated: false,\r\n };\r\n case 'warning':\r\n return {\r\n bg: cr.custom.warning.sysWarning,\r\n text: cr.custom.warning.sysOnWarning,\r\n closeBg: cr.transparent.neutral.sysWhite20,\r\n badgeBg: cr.transparent.neutral.sysWhite20,\r\n badgeText: cr.custom.warning.sysOnWarning,\r\n elevated: false,\r\n };\r\n }\r\n}\r\n\r\n// ── Component ─────────────────────────────────────────────────────────────────\r\n\r\nexport function Chip({\r\n label,\r\n size = 'md',\r\n usage = 'neutral',\r\n leadingIcon,\r\n dismissible = false,\r\n onDismiss,\r\n badge,\r\n style,\r\n}: ChipProps) {\r\n const { colorRoles: cr, dimensions: dim, typeScale: ts } = useTheme();\r\n\r\n const SIZE_TOKENS = useMemo(\r\n () => ({\r\n sm: {\r\n height: 20,\r\n paddingH: dim.spacing.padding.sysPadding8,\r\n paddingV: dim.spacing.padding.sysPadding4,\r\n gap: dim.spacing.padding.sysPadding4,\r\n fontSize: ts.labelSmall.sysFontSize,\r\n lineHeight: ts.labelSmall.sysLineHeight,\r\n letterSpacing: ts.labelSmall.sysTracking,\r\n iconSize: 16,\r\n closeBtnSize: 16,\r\n closeIconSize: 12,\r\n badgeSize: 16,\r\n badgeFontSize: ts.labelSmall.sysFontSize,\r\n badgeLineHeight: ts.labelSmall.sysLineHeight,\r\n },\r\n md: {\r\n height: 24,\r\n paddingH: dim.spacing.padding.sysPadding12,\r\n paddingV: dim.spacing.padding.sysPadding4,\r\n gap: dim.spacing.padding.sysPadding4,\r\n fontSize: ts.labelMedium.sysFontSize,\r\n lineHeight: ts.labelMedium.sysLineHeight,\r\n letterSpacing: ts.labelMedium.sysTracking,\r\n iconSize: 16,\r\n closeBtnSize: 16,\r\n closeIconSize: 12,\r\n badgeSize: 16,\r\n badgeFontSize: ts.labelSmall.sysFontSize,\r\n badgeLineHeight: ts.labelSmall.sysLineHeight,\r\n },\r\n lg: {\r\n height: 32,\r\n paddingH: dim.spacing.padding.sysPadding16,\r\n paddingV: dim.spacing.padding.sysPadding4,\r\n gap: dim.spacing.padding.sysPadding8,\r\n fontSize: ts.labelMedium.sysFontSize,\r\n lineHeight: ts.labelMedium.sysLineHeight,\r\n letterSpacing: ts.labelMedium.sysTracking,\r\n iconSize: 20,\r\n closeBtnSize: 20,\r\n closeIconSize: 16,\r\n badgeSize: 20,\r\n badgeFontSize: ts.labelSmall.sysFontSize,\r\n badgeLineHeight: ts.labelSmall.sysLineHeight,\r\n },\r\n xl: {\r\n height: 40,\r\n paddingH: dim.spacing.padding.sysPadding16,\r\n paddingV: dim.spacing.padding.sysPadding8,\r\n gap: dim.spacing.padding.sysPadding8,\r\n fontSize: ts.bodyMedium.sysFontSize,\r\n lineHeight: ts.bodyMedium.sysLineHeight,\r\n letterSpacing: ts.bodyMedium.sysTracking,\r\n iconSize: 20,\r\n closeBtnSize: 24,\r\n closeIconSize: 16,\r\n badgeSize: 24,\r\n badgeFontSize: ts.labelMedium.sysFontSize,\r\n badgeLineHeight: ts.labelMedium.sysLineHeight,\r\n },\r\n }),\r\n [dim, ts],\r\n );\r\n\r\n const s = SIZE_TOKENS[size];\r\n const c = getUsageColors(usage, cr);\r\n\r\n return (\r\n <View\r\n accessible\r\n accessibilityRole=\"none\"\r\n accessibilityLabel={badge !== undefined ? `${label}, ${badge}` : label}\r\n style={[\r\n styles.root,\r\n {\r\n height: s.height,\r\n paddingHorizontal: s.paddingH,\r\n paddingVertical: s.paddingV,\r\n gap: s.gap,\r\n backgroundColor: c.bg,\r\n },\r\n c.elevated && styles.elevated,\r\n style,\r\n ]}\r\n >\r\n {/* Leading icon */}\r\n {leadingIcon && (\r\n <View\r\n style={{\r\n width: s.iconSize,\r\n height: s.iconSize,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n }}\r\n >\r\n {leadingIcon}\r\n </View>\r\n )}\r\n\r\n {/* Label */}\r\n <Text\r\n style={{\r\n color: c.text,\r\n fontSize: s.fontSize,\r\n lineHeight: s.lineHeight,\r\n letterSpacing: s.letterSpacing,\r\n includeFontPadding: false,\r\n }}\r\n numberOfLines={1}\r\n >\r\n {label}\r\n </Text>\r\n\r\n {/* Badge */}\r\n {badge !== undefined && (\r\n <View\r\n style={{\r\n width: s.badgeSize,\r\n height: s.badgeSize,\r\n borderRadius: s.badgeSize / 2,\r\n backgroundColor: c.badgeBg,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n }}\r\n >\r\n <Text\r\n style={{\r\n color: c.badgeText,\r\n fontSize: s.badgeFontSize,\r\n lineHeight: s.badgeLineHeight,\r\n includeFontPadding: false,\r\n fontWeight: '500',\r\n }}\r\n >\r\n {badge}\r\n </Text>\r\n </View>\r\n )}\r\n\r\n {/* Dismiss button */}\r\n {dismissible && (\r\n <Pressable\r\n onPress={onDismiss}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel=\"Dismiss\"\r\n hitSlop={4}\r\n style={({ pressed }) => ({\r\n width: s.closeBtnSize,\r\n height: s.closeBtnSize,\r\n borderRadius: s.closeBtnSize / 2,\r\n backgroundColor: pressed\r\n ? cr.transparent.neutral.sysBlack10\r\n : c.closeBg,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n overflow: 'hidden',\r\n })}\r\n >\r\n <Ionicons name=\"close\" size={s.closeIconSize} color={c.text} />\r\n </Pressable>\r\n )}\r\n </View>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n root: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n alignSelf: 'flex-start',\r\n borderRadius: 9999,\r\n overflow: 'hidden',\r\n },\r\n elevated: {\r\n shadowColor: '#000',\r\n shadowOffset: { width: 0, height: 2 },\r\n shadowOpacity: 0.1,\r\n shadowRadius: 8,\r\n elevation: 2,\r\n // overflow must be visible for shadow on iOS — override here\r\n overflow: 'visible',\r\n },\r\n});\r\n"],"names":["Chip","getUsageColors","usage","cr","bg","surface","surfaceContainer","sysSurfaceContainerLowest","text","sysOnSurface","closeBg","sysSurfaceContainerLow","badgeBg","sysSurfaceContainer","badgeText","elevated","custom","info","sysInfo","accent","primary","sysOnPrimary","transparent","neutral","sysWhite20","sysOnInfo","success","sysSuccess","sysOnSuccess","error","sysError","sysOnError","warning","sysWarning","sysOnWarning","label","size","leadingIcon","dismissible","onDismiss","badge","style","colorRoles","dimensions","dim","typeScale","ts","useTheme","SIZE_TOKENS","useMemo","sm","height","paddingH","spacing","padding","sysPadding8","paddingV","sysPadding4","gap","fontSize","labelSmall","sysFontSize","lineHeight","sysLineHeight","letterSpacing","sysTracking","iconSize","closeBtnSize","closeIconSize","badgeSize","badgeFontSize","badgeLineHeight","md","sysPadding12","labelMedium","lg","sysPadding16","xl","bodyMedium","s","c","View","accessible","accessibilityRole","accessibilityLabel","undefined","styles","root","paddingHorizontal","paddingVertical","backgroundColor","width","alignItems","justifyContent","flexShrink","Text","color","includeFontPadding","numberOfLines","borderRadius","fontWeight","Pressable","onPress","hitSlop","pressed","sysBlack10","overflow","Ionicons","name","StyleSheet","create","flexDirection","alignSelf","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export type DividerVariant = 'horizontal' | 'vertical';
4
+ export type DividerWeight = 'thin' | 'thick';
5
+ export interface DividerProps {
6
+ variant?: DividerVariant;
7
+ weight?: DividerWeight;
8
+ dashed?: boolean;
9
+ style?: StyleProp<ViewStyle>;
10
+ }
11
+ export declare function Divider({ variant, weight, dashed, style, }: DividerProps): React.JSX.Element;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Divider", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Divider;
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 _theme = require("../../theme");
15
+ function _interop_require_default(obj) {
16
+ return obj && obj.__esModule ? obj : {
17
+ default: obj
18
+ };
19
+ }
20
+ function Divider({ variant = 'horizontal', weight = 'thin', dashed = false, style }) {
21
+ const { colorRoles: cr, dimensions: dim } = (0, _theme.useTheme)();
22
+ const thickness = weight === 'thin' ? dim.borderWidth.sysStrokeThin : dim.borderWidth.sysStrokeThick;
23
+ const color = cr.outline.sysOutlineVariant;
24
+ if (variant === 'horizontal') {
25
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
26
+ style: [
27
+ {
28
+ // Zero height — the line is drawn as a top border
29
+ height: 0,
30
+ // Stretch to fill parent width
31
+ alignSelf: 'stretch',
32
+ borderTopWidth: thickness,
33
+ borderTopColor: color,
34
+ borderStyle: dashed ? 'dashed' : 'solid'
35
+ },
36
+ style
37
+ ],
38
+ accessible: false
39
+ });
40
+ }
41
+ // Vertical
42
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
43
+ style: [
44
+ {
45
+ // Zero width — the line is drawn as a left border
46
+ width: 0,
47
+ // Stretch to fill parent height
48
+ alignSelf: 'stretch',
49
+ borderLeftWidth: thickness,
50
+ borderLeftColor: color,
51
+ borderStyle: dashed ? 'dashed' : 'solid'
52
+ },
53
+ style
54
+ ],
55
+ accessible: false
56
+ });
57
+ }
58
+
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/Divider/index.tsx"],"sourcesContent":["import React from 'react';\r\n\r\nimport { StyleProp, View, ViewStyle } from 'react-native';\r\n\r\nimport { useTheme } from '../../theme';\r\n\r\nexport type DividerVariant = 'horizontal' | 'vertical';\r\nexport type DividerWeight = 'thin' | 'thick';\r\n\r\nexport interface DividerProps {\r\n variant?: DividerVariant;\r\n weight?: DividerWeight;\r\n dashed?: boolean;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\nexport function Divider({\r\n variant = 'horizontal',\r\n weight = 'thin',\r\n dashed = false,\r\n style,\r\n}: DividerProps) {\r\n const { colorRoles: cr, dimensions: dim } = useTheme();\r\n\r\n const thickness =\r\n weight === 'thin'\r\n ? dim.borderWidth.sysStrokeThin\r\n : dim.borderWidth.sysStrokeThick;\r\n\r\n const color = cr.outline.sysOutlineVariant;\r\n\r\n if (variant === 'horizontal') {\r\n return (\r\n <View\r\n style={[\r\n {\r\n // Zero height — the line is drawn as a top border\r\n height: 0,\r\n // Stretch to fill parent width\r\n alignSelf: 'stretch',\r\n borderTopWidth: thickness,\r\n borderTopColor: color,\r\n borderStyle: dashed ? 'dashed' : 'solid',\r\n },\r\n style,\r\n ]}\r\n accessible={false}\r\n />\r\n );\r\n }\r\n\r\n // Vertical\r\n return (\r\n <View\r\n style={[\r\n {\r\n // Zero width — the line is drawn as a left border\r\n width: 0,\r\n // Stretch to fill parent height\r\n alignSelf: 'stretch',\r\n borderLeftWidth: thickness,\r\n borderLeftColor: color,\r\n borderStyle: dashed ? 'dashed' : 'solid',\r\n },\r\n style,\r\n ]}\r\n accessible={false}\r\n />\r\n );\r\n}\r\n"],"names":["Divider","variant","weight","dashed","style","colorRoles","cr","dimensions","dim","useTheme","thickness","borderWidth","sysStrokeThin","sysStrokeThick","color","outline","sysOutlineVariant","View","height","alignSelf","borderTopWidth","borderTopColor","borderStyle","accessible","width","borderLeftWidth","borderLeftColor"],"mappings":";;;;+BAgBgBA;;;eAAAA;;;;8DAhBE;6BAEyB;uBAElB;;;;;;AAYlB,SAASA,QAAQ,EACtBC,UAAU,YAAY,EACtBC,SAAS,MAAM,EACfC,SAAS,KAAK,EACdC,KAAK,EACQ;IACb,MAAM,EAAEC,YAAYC,EAAE,EAAEC,YAAYC,GAAG,EAAE,GAAGC,IAAAA,eAAQ;IAEpD,MAAMC,YACJR,WAAW,SACPM,IAAIG,WAAW,CAACC,aAAa,GAC7BJ,IAAIG,WAAW,CAACE,cAAc;IAEpC,MAAMC,QAAQR,GAAGS,OAAO,CAACC,iBAAiB;IAE1C,IAAIf,YAAY,cAAc;QAC5B,qBACE,qBAACgB,iBAAI;YACHb,OAAO;gBACL;oBACE,kDAAkD;oBAClDc,QAAQ;oBACR,+BAA+B;oBAC/BC,WAAW;oBACXC,gBAAgBV;oBAChBW,gBAAgBP;oBAChBQ,aAAanB,SAAS,WAAW;gBACnC;gBACAC;aACD;YACDmB,YAAY;;IAGlB;IAEA,WAAW;IACX,qBACE,qBAACN,iBAAI;QACHb,OAAO;YACL;gBACE,kDAAkD;gBAClDoB,OAAO;gBACP,gCAAgC;gBAChCL,WAAW;gBACXM,iBAAiBf;gBACjBgB,iBAAiBZ;gBACjBQ,aAAanB,SAAS,WAAW;YACnC;YACAC;SACD;QACDmB,YAAY;;AAGlB"}
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export type EmptyStateStyle = 'icon' | 'illustration';
4
+ export type EmptyStateViewport = 'desktop' | 'mobile';
5
+ export interface EmptyStateProps {
6
+ /** Visual style of the graphic area */
7
+ style?: EmptyStateStyle;
8
+ /** desktop = larger type + 60px icon circle; mobile = smaller type + 48px circle */
9
+ viewport?: EmptyStateViewport;
10
+ /** Heading text (default: "No results") */
11
+ title?: string;
12
+ /** Body copy below the title */
13
+ description?: string;
14
+ /** Hide the description even when `description` is provided */
15
+ showDescription?: boolean;
16
+ /** Custom icon rendered inside the icon circle (icon style only) */
17
+ icon?: React.ReactNode;
18
+ /** Label for the optional action button */
19
+ actionLabel?: string;
20
+ onAction?: () => void;
21
+ /** Whether the action button is shown (default: true when actionLabel is set) */
22
+ showAction?: boolean;
23
+ containerStyle?: StyleProp<ViewStyle>;
24
+ }
25
+ export declare function EmptyState({ style, viewport, title, description, showDescription, icon, actionLabel, onAction, showAction, containerStyle, }: EmptyStateProps): React.JSX.Element;