@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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/SelectionCard/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\n\r\nimport {\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\n\r\nimport { ICON_MAP, type IconName } from '../../icons';\r\nimport { useTheme } from '../../theme';\r\nimport { BodyText } from '../BodyText';\r\nimport { HeaderText } from '../HeaderText';\r\n\r\nexport type SelectionCardSize = 'sm' | 'md';\r\n\r\nexport interface SelectionCardProps {\r\n title: string;\r\n icon?: IconName;\r\n size?: SelectionCardSize;\r\n multiSelect?: boolean;\r\n selected?: boolean;\r\n disabled?: boolean;\r\n onPress?: () => void;\r\n accessibilityLabel?: string;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\nexport function SelectionCard({\r\n title,\r\n icon,\r\n size = 'md',\r\n multiSelect = false,\r\n selected = false,\r\n disabled = false,\r\n onPress,\r\n accessibilityLabel,\r\n style,\r\n}: SelectionCardProps) {\r\n const { colorRoles: cr, dimensions: dim } = useTheme();\r\n\r\n const selectedRing = useMemo(\r\n () => ({\r\n shadowColor: cr.accent.primary.sysPrimary,\r\n shadowOffset: { width: 1, height: 2 },\r\n shadowOpacity: 1,\r\n shadowRadius: 0,\r\n elevation: 2,\r\n }),\r\n [cr],\r\n );\r\n\r\n const IconComponent = icon ? ICON_MAP[icon] : null;\r\n\r\n const a11yState = {\r\n disabled,\r\n ...(multiSelect ? { checked: selected } : { selected }),\r\n };\r\n\r\n const checkboxNode = (\r\n <Ionicons\r\n name={selected ? 'checkbox' : 'square-outline'}\r\n size={20}\r\n color={selected ? cr.accent.primary.sysPrimary : cr.outline.sysOutline}\r\n accessible={false}\r\n />\r\n );\r\n\r\n if (size === 'sm') {\r\n const iconColor = selected\r\n ? cr.accent.primary.sysPrimary\r\n : cr.surface.surface.sysOnSurface;\r\n\r\n return (\r\n <Pressable\r\n onPress={disabled ? undefined : onPress}\r\n accessibilityRole={multiSelect ? 'checkbox' : 'radio'}\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n accessibilityState={a11yState}\r\n style={({ pressed }) => [\r\n styles.smRoot,\r\n {\r\n gap: dim.spacing.padding.sysPadding12,\r\n paddingHorizontal: dim.spacing.padding.sysPadding20,\r\n paddingVertical: dim.spacing.padding.sysPadding16,\r\n borderRadius: dim.borderRadius.sysRadiusMd,\r\n backgroundColor:\r\n cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n borderColor: selected\r\n ? cr.accent.primary.sysPrimary\r\n : cr.outline.sysOutline,\r\n borderWidth: selected\r\n ? dim.borderWidth.sysStrokeMedium\r\n : dim.borderWidth.sysStrokeThin,\r\n opacity: disabled ? 0.38 : 1,\r\n },\r\n selected && selectedRing,\r\n pressed && !disabled && styles.pressed,\r\n style,\r\n ]}\r\n >\r\n {IconComponent && (\r\n <View style={styles.smIconWrap}>\r\n <IconComponent size=\"small\" color={iconColor} />\r\n </View>\r\n )}\r\n <BodyText\r\n variant=\"labelLarge\"\r\n color={cr.surface.surface.sysOnSurface}\r\n emphasized={selected}\r\n style={styles.smTitle}\r\n >\r\n {title}\r\n </BodyText>\r\n {multiSelect && checkboxNode}\r\n </Pressable>\r\n );\r\n }\r\n\r\n // ── Medium ──────────────────────────────────────────────────────────────────\r\n const iconBgColor = selected\r\n ? cr.accent.primary.sysPrimary\r\n : cr.surface.surfaceContainer.sysSurfaceContainer;\r\n const iconColor = selected\r\n ? cr.accent.primary.sysOnPrimary\r\n : cr.surface.surface.sysOnSurface;\r\n const titleColor = selected\r\n ? cr.accent.primary.sysPrimary\r\n : cr.surface.surface.sysOnSurface;\r\n\r\n const iconCircle = IconComponent ? (\r\n <View\r\n style={[\r\n styles.mdIconCircle,\r\n {\r\n padding: dim.spacing.padding.sysPadding12,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n backgroundColor: iconBgColor,\r\n },\r\n ]}\r\n >\r\n <IconComponent size=\"small\" color={iconColor} />\r\n </View>\r\n ) : null;\r\n\r\n return (\r\n <Pressable\r\n onPress={disabled ? undefined : onPress}\r\n accessibilityRole={multiSelect ? 'checkbox' : 'radio'}\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n accessibilityState={a11yState}\r\n style={({ pressed }) => [\r\n styles.mdRoot,\r\n {\r\n padding: dim.spacing.padding.sysPadding24,\r\n gap: dim.spacing.padding.sysPadding24,\r\n borderRadius: dim.borderRadius.sysRadiusLg,\r\n backgroundColor:\r\n cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n borderColor: selected\r\n ? cr.accent.primary.sysPrimary\r\n : cr.outline.sysOutline,\r\n borderWidth: selected\r\n ? dim.borderWidth.sysStrokeThick\r\n : dim.borderWidth.sysStrokeMedium,\r\n opacity: disabled ? 0.38 : 1,\r\n },\r\n selected && selectedRing,\r\n pressed && !disabled && styles.pressed,\r\n style,\r\n ]}\r\n >\r\n {multiSelect ? (\r\n <View style={styles.mdIconCheckboxRow}>\r\n {iconCircle}\r\n {checkboxNode}\r\n </View>\r\n ) : (\r\n iconCircle\r\n )}\r\n <HeaderText variant=\"titleSmall\" color={titleColor} emphasized={selected}>\r\n {title}\r\n </HeaderText>\r\n </Pressable>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n mdRoot: {\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n overflow: 'hidden',\r\n },\r\n mdIconCircle: {\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflow: 'hidden',\r\n },\r\n mdIconCheckboxRow: {\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n },\r\n smRoot: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n overflow: 'hidden',\r\n },\r\n smIconWrap: {\r\n width: 24,\r\n height: 24,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n smTitle: {\r\n flex: 1,\r\n },\r\n pressed: {\r\n opacity: 0.84,\r\n },\r\n});\r\n"],"names":["SelectionCard","title","icon","size","multiSelect","selected","disabled","onPress","accessibilityLabel","style","colorRoles","cr","dimensions","dim","useTheme","selectedRing","useMemo","shadowColor","accent","primary","sysPrimary","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","IconComponent","ICON_MAP","a11yState","checked","checkboxNode","Ionicons","name","color","outline","sysOutline","accessible","iconColor","surface","sysOnSurface","Pressable","undefined","accessibilityRole","accessibilityState","pressed","styles","smRoot","gap","spacing","padding","sysPadding12","paddingHorizontal","sysPadding20","paddingVertical","sysPadding16","borderRadius","sysRadiusMd","backgroundColor","surfaceContainer","sysSurfaceContainerLowest","borderColor","borderWidth","sysStrokeMedium","sysStrokeThin","opacity","View","smIconWrap","BodyText","variant","emphasized","smTitle","iconBgColor","sysSurfaceContainer","sysOnPrimary","titleColor","iconCircle","mdIconCircle","sysRadiusFull","mdRoot","sysPadding24","sysRadiusLg","sysStrokeThick","mdIconCheckboxRow","HeaderText","StyleSheet","create","flexDirection","alignItems","overflow","justifyContent","flex"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { type ImageSourcePropType, StyleProp, ViewStyle } from 'react-native';
3
+ import { type IconName } from '../../icons';
4
+ export type ServiceCardVariant = 'outlined' | 'tonal' | 'filled' | 'doubled' | 'image';
5
+ export type ServiceCardSize = 'sm' | 'md' | 'lg';
6
+ export interface ServiceCardProps {
7
+ variant?: ServiceCardVariant;
8
+ size?: ServiceCardSize;
9
+ title?: React.ReactNode;
10
+ description?: React.ReactNode;
11
+ icon?: IconName;
12
+ image?: ImageSourcePropType;
13
+ buttonIcon?: React.ReactNode;
14
+ interactive?: boolean;
15
+ disabled?: boolean;
16
+ onPress?: () => void;
17
+ children?: React.ReactNode;
18
+ accessibilityLabel?: string;
19
+ fullWidth?: boolean;
20
+ style?: StyleProp<ViewStyle>;
21
+ }
22
+ export declare function ServiceCard({ variant, size, title, description, icon, image, buttonIcon, interactive, disabled, onPress, children, accessibilityLabel, fullWidth, style, }: ServiceCardProps): React.JSX.Element;
@@ -0,0 +1,385 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ServiceCard", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ServiceCard;
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 _icons = require("../../icons");
16
+ const _theme = require("../../theme");
17
+ const _BodyText = require("../BodyText");
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
+ const ELEVATION = {
60
+ shadowColor: '#000',
61
+ shadowOffset: {
62
+ width: 0,
63
+ height: 2
64
+ },
65
+ shadowOpacity: 0.08,
66
+ shadowRadius: 8,
67
+ elevation: 2
68
+ };
69
+ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, icon, image, buttonIcon, interactive = false, disabled = false, onPress, children, accessibilityLabel, fullWidth = false, style }) {
70
+ const { colorRoles: cr, dimensions: dim } = (0, _theme.useTheme)();
71
+ const variantTokens = (0, _react.useMemo)(()=>({
72
+ outlined: {
73
+ bg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
74
+ borderColor: cr.outline.sysOutline,
75
+ borderWidth: dim.borderWidth.sysStrokeThin,
76
+ elevated: true,
77
+ titleColor: cr.surface.surface.sysOnSurface,
78
+ descColor: cr.surface.surface.sysOnSurfaceVariant,
79
+ chevronColor: cr.outline.sysOutlineFixed,
80
+ innerBg: undefined,
81
+ iconBadgeBg: undefined,
82
+ iconBadgeColor: undefined
83
+ },
84
+ tonal: {
85
+ bg: cr.addOn.primaryFixed.sysPrimaryFixedDim,
86
+ borderColor: 'transparent',
87
+ borderWidth: 0,
88
+ elevated: false,
89
+ titleColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,
90
+ descColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,
91
+ chevronColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,
92
+ innerBg: undefined,
93
+ iconBadgeBg: undefined,
94
+ iconBadgeColor: undefined
95
+ },
96
+ filled: {
97
+ bg: cr.accent.primary.sysPrimaryContainer,
98
+ borderColor: 'transparent',
99
+ borderWidth: 0,
100
+ elevated: false,
101
+ titleColor: cr.accent.primary.sysOnPrimary,
102
+ descColor: cr.transparent.neutral.sysWhite80,
103
+ chevronColor: cr.accent.primary.sysOnPrimary,
104
+ innerBg: undefined,
105
+ iconBadgeBg: undefined,
106
+ iconBadgeColor: undefined
107
+ },
108
+ doubled: {
109
+ bg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
110
+ borderColor: cr.outline.sysOutline,
111
+ borderWidth: dim.borderWidth.sysStrokeThin,
112
+ elevated: false,
113
+ titleColor: cr.surface.surface.sysOnSurface,
114
+ descColor: cr.surface.surface.sysOnSurfaceVariant,
115
+ chevronColor: cr.outline.sysOutlineFixed,
116
+ innerBg: cr.transparent.primary.sysPrimary08,
117
+ iconBadgeBg: cr.accent.primary.sysPrimary,
118
+ iconBadgeColor: cr.accent.primary.sysOnPrimary
119
+ },
120
+ image: {
121
+ bg: 'transparent',
122
+ borderColor: 'transparent',
123
+ borderWidth: 0,
124
+ elevated: false,
125
+ titleColor: cr.surface.inverse.sysInverseOnSurface,
126
+ descColor: cr.transparent.neutral.sysWhite80,
127
+ chevronColor: cr.surface.inverse.sysInverseOnSurface,
128
+ innerBg: undefined,
129
+ iconBadgeBg: undefined,
130
+ iconBadgeColor: undefined
131
+ }
132
+ }), [
133
+ cr,
134
+ dim
135
+ ]);
136
+ const sizeTokens = (0, _react.useMemo)(()=>({
137
+ sm: {
138
+ layout: 'row',
139
+ paddingH: dim.spacing.padding.sysPadding16,
140
+ paddingV: dim.spacing.padding.sysPadding12,
141
+ gap: dim.spacing.padding.sysPadding12,
142
+ borderRadius: dim.borderRadius.sysRadiusMd,
143
+ iconSize: 24,
144
+ iconSizeName: 'small',
145
+ titleVariant: 'medium',
146
+ showChevron: true
147
+ },
148
+ md: {
149
+ layout: 'column',
150
+ paddingH: dim.spacing.padding.sysPadding16,
151
+ paddingV: dim.spacing.padding.sysPadding16,
152
+ gap: dim.spacing.padding.sysPadding24,
153
+ borderRadius: dim.borderRadius.sysRadiusLg,
154
+ iconSize: 32,
155
+ iconSizeName: 'medium',
156
+ titleVariant: 'medium',
157
+ showChevron: false
158
+ },
159
+ lg: {
160
+ layout: 'column',
161
+ paddingH: dim.spacing.padding.sysPadding16,
162
+ paddingV: dim.spacing.padding.sysPadding16,
163
+ gap: dim.spacing.padding.sysPadding32,
164
+ borderRadius: dim.borderRadius.sysRadiusLg,
165
+ iconSize: 32,
166
+ iconSizeName: 'large',
167
+ titleVariant: 'large',
168
+ showChevron: false
169
+ }
170
+ }), [
171
+ dim
172
+ ]);
173
+ const v = variantTokens[variant];
174
+ const s = sizeTokens[size];
175
+ const isRow = s.layout === 'row';
176
+ const IconComponent = icon ? _icons.ICON_MAP[icon] : null;
177
+ const iconColor = v.iconBadgeColor ?? v.titleColor;
178
+ const renderedIcon = IconComponent ? /*#__PURE__*/ (0, _jsxruntime.jsx)(IconComponent, {
179
+ size: s.iconSizeName,
180
+ color: iconColor
181
+ }) : null;
182
+ const outerStyle = [
183
+ {
184
+ backgroundColor: v.bg,
185
+ borderColor: v.borderColor,
186
+ borderWidth: v.borderWidth,
187
+ borderRadius: variant === 'doubled' ? dim.borderRadius.sysRadiusXl : s.borderRadius,
188
+ paddingHorizontal: variant === 'doubled' ? dim.spacing.padding.sysPadding8 : s.paddingH,
189
+ paddingVertical: variant === 'doubled' ? dim.spacing.padding.sysPadding8 : s.paddingV,
190
+ opacity: disabled ? 0.48 : 1
191
+ },
192
+ v.elevated && ELEVATION,
193
+ fullWidth && {
194
+ alignSelf: 'stretch'
195
+ },
196
+ isRow ? styles.rowRoot : styles.colRoot,
197
+ !isRow && {
198
+ gap: s.gap
199
+ },
200
+ style
201
+ ];
202
+ // ── Text block ──────────────────────────────────────────────────────────────
203
+ const textBlock = title || description ? /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
204
+ style: isRow ? styles.rowTextBlock : undefined,
205
+ children: [
206
+ title && /*#__PURE__*/ (0, _jsxruntime.jsx)(_BodyText.BodyText, {
207
+ variant: s.titleVariant,
208
+ color: v.titleColor,
209
+ children: title
210
+ }),
211
+ !isRow && description && /*#__PURE__*/ (0, _jsxruntime.jsx)(_BodyText.BodyText, {
212
+ variant: "small",
213
+ color: v.descColor,
214
+ children: description
215
+ })
216
+ ]
217
+ }) : null;
218
+ // ── Inner content by variant ────────────────────────────────────────────────
219
+ let inner;
220
+ if (variant === 'doubled') {
221
+ inner = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
222
+ style: [
223
+ styles.colRoot,
224
+ {
225
+ backgroundColor: v.innerBg,
226
+ borderRadius: s.borderRadius,
227
+ paddingHorizontal: s.paddingH,
228
+ paddingVertical: s.paddingV,
229
+ gap: dim.spacing.padding.sysPadding24
230
+ }
231
+ ],
232
+ children: [
233
+ renderedIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
234
+ style: [
235
+ styles.doubledIconBadge,
236
+ {
237
+ backgroundColor: v.iconBadgeBg,
238
+ borderRadius: dim.borderRadius.sysRadiusFull
239
+ }
240
+ ],
241
+ children: renderedIcon
242
+ }),
243
+ textBlock,
244
+ children
245
+ ]
246
+ });
247
+ } else if (variant === 'image') {
248
+ inner = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
249
+ children: [
250
+ image && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
251
+ children: [
252
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Image, {
253
+ source: image,
254
+ style: [
255
+ _reactnative.StyleSheet.absoluteFill,
256
+ {
257
+ borderRadius: s.borderRadius
258
+ }
259
+ ],
260
+ resizeMode: "cover",
261
+ accessible: false
262
+ }),
263
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
264
+ style: [
265
+ _reactnative.StyleSheet.absoluteFill,
266
+ {
267
+ borderRadius: s.borderRadius,
268
+ backgroundColor: 'rgba(0,0,0,0.30)'
269
+ }
270
+ ],
271
+ pointerEvents: "none"
272
+ })
273
+ ]
274
+ }),
275
+ renderedIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
276
+ style: {
277
+ width: s.iconSize,
278
+ height: s.iconSize
279
+ },
280
+ children: renderedIcon
281
+ }),
282
+ textBlock,
283
+ children
284
+ ]
285
+ });
286
+ } else if (isRow) {
287
+ // sm — horizontal row
288
+ inner = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
289
+ children: [
290
+ renderedIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
291
+ style: {
292
+ width: s.iconSize,
293
+ height: s.iconSize
294
+ },
295
+ children: renderedIcon
296
+ }),
297
+ textBlock,
298
+ s.showChevron && /*#__PURE__*/ (0, _jsxruntime.jsx)(_vectoricons.Ionicons, {
299
+ name: "chevron-forward",
300
+ size: 20,
301
+ color: v.chevronColor,
302
+ accessible: false
303
+ }),
304
+ children
305
+ ]
306
+ });
307
+ } else {
308
+ // md / lg — vertical column
309
+ inner = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
310
+ children: [
311
+ renderedIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
312
+ style: {
313
+ width: s.iconSize,
314
+ height: s.iconSize
315
+ },
316
+ children: renderedIcon
317
+ }),
318
+ textBlock,
319
+ children,
320
+ buttonIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
321
+ style: {
322
+ position: 'absolute',
323
+ bottom: s.paddingV,
324
+ right: s.paddingH
325
+ },
326
+ pointerEvents: "none",
327
+ children: buttonIcon
328
+ })
329
+ ]
330
+ });
331
+ }
332
+ // ── Wrapper ─────────────────────────────────────────────────────────────────
333
+ if (interactive || onPress) {
334
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
335
+ onPress: disabled ? undefined : onPress,
336
+ accessibilityRole: "button",
337
+ accessibilityLabel: accessibilityLabel ?? (typeof title === 'string' ? title : undefined),
338
+ accessibilityState: {
339
+ disabled
340
+ },
341
+ style: ({ pressed })=>[
342
+ styles.overflow,
343
+ ...outerStyle,
344
+ pressed && !disabled && styles.pressed
345
+ ],
346
+ children: inner
347
+ });
348
+ }
349
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
350
+ style: [
351
+ styles.overflow,
352
+ ...outerStyle
353
+ ],
354
+ children: inner
355
+ });
356
+ }
357
+ const styles = _reactnative.StyleSheet.create({
358
+ overflow: {
359
+ overflow: 'hidden'
360
+ },
361
+ colRoot: {
362
+ flexDirection: 'column',
363
+ alignItems: 'flex-start'
364
+ },
365
+ rowRoot: {
366
+ flexDirection: 'row',
367
+ alignItems: 'center',
368
+ gap: 12
369
+ },
370
+ rowTextBlock: {
371
+ flex: 1,
372
+ minWidth: 0
373
+ },
374
+ doubledIconBadge: {
375
+ width: 48,
376
+ height: 48,
377
+ alignItems: 'center',
378
+ justifyContent: 'center'
379
+ },
380
+ pressed: {
381
+ opacity: 0.84
382
+ }
383
+ });
384
+
385
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/ServiceCard/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\n\r\nimport { ICON_MAP, type IconName } from '../../icons';\r\nimport { useTheme } from '../../theme';\r\nimport { BodyText } from '../BodyText';\r\n\r\nexport type ServiceCardVariant =\r\n | 'outlined'\r\n | 'tonal'\r\n | 'filled'\r\n | 'doubled'\r\n | 'image';\r\nexport type ServiceCardSize = 'sm' | 'md' | 'lg';\r\n\r\nexport interface ServiceCardProps {\r\n variant?: ServiceCardVariant;\r\n size?: ServiceCardSize;\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n icon?: IconName;\r\n image?: ImageSourcePropType;\r\n buttonIcon?: React.ReactNode;\r\n interactive?: boolean;\r\n disabled?: boolean;\r\n onPress?: () => void;\r\n children?: React.ReactNode;\r\n accessibilityLabel?: string;\r\n fullWidth?: boolean;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\nconst ELEVATION = {\r\n shadowColor: '#000',\r\n shadowOffset: { width: 0, height: 2 },\r\n shadowOpacity: 0.08,\r\n shadowRadius: 8,\r\n elevation: 2,\r\n};\r\n\r\n// ── Component ─────────────────────────────────────────────────────────────────\r\n\r\nexport function ServiceCard({\r\n variant = 'outlined',\r\n size = 'lg',\r\n title,\r\n description,\r\n icon,\r\n image,\r\n buttonIcon,\r\n interactive = false,\r\n disabled = false,\r\n onPress,\r\n children,\r\n accessibilityLabel,\r\n fullWidth = false,\r\n style,\r\n}: ServiceCardProps) {\r\n const { colorRoles: cr, dimensions: dim } = useTheme();\r\n\r\n const variantTokens = useMemo(\r\n () => ({\r\n outlined: {\r\n bg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n borderColor: cr.outline.sysOutline,\r\n borderWidth: dim.borderWidth.sysStrokeThin,\r\n elevated: true,\r\n titleColor: cr.surface.surface.sysOnSurface,\r\n descColor: cr.surface.surface.sysOnSurfaceVariant,\r\n chevronColor: cr.outline.sysOutlineFixed,\r\n innerBg: undefined,\r\n iconBadgeBg: undefined,\r\n iconBadgeColor: undefined,\r\n },\r\n tonal: {\r\n bg: cr.addOn.primaryFixed.sysPrimaryFixedDim,\r\n borderColor: 'transparent',\r\n borderWidth: 0,\r\n elevated: false,\r\n titleColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,\r\n descColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,\r\n chevronColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,\r\n innerBg: undefined,\r\n iconBadgeBg: undefined,\r\n iconBadgeColor: undefined,\r\n },\r\n filled: {\r\n bg: cr.accent.primary.sysPrimaryContainer,\r\n borderColor: 'transparent',\r\n borderWidth: 0,\r\n elevated: false,\r\n titleColor: cr.accent.primary.sysOnPrimary,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n chevronColor: cr.accent.primary.sysOnPrimary,\r\n innerBg: undefined,\r\n iconBadgeBg: undefined,\r\n iconBadgeColor: undefined,\r\n },\r\n doubled: {\r\n bg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n borderColor: cr.outline.sysOutline,\r\n borderWidth: dim.borderWidth.sysStrokeThin,\r\n elevated: false,\r\n titleColor: cr.surface.surface.sysOnSurface,\r\n descColor: cr.surface.surface.sysOnSurfaceVariant,\r\n chevronColor: cr.outline.sysOutlineFixed,\r\n innerBg: cr.transparent.primary.sysPrimary08,\r\n iconBadgeBg: cr.accent.primary.sysPrimary,\r\n iconBadgeColor: cr.accent.primary.sysOnPrimary,\r\n },\r\n image: {\r\n bg: 'transparent',\r\n borderColor: 'transparent',\r\n borderWidth: 0,\r\n elevated: false,\r\n titleColor: cr.surface.inverse.sysInverseOnSurface,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n chevronColor: cr.surface.inverse.sysInverseOnSurface,\r\n innerBg: undefined,\r\n iconBadgeBg: undefined,\r\n iconBadgeColor: undefined,\r\n },\r\n }),\r\n [cr, dim],\r\n );\r\n\r\n const sizeTokens = useMemo(\r\n () => ({\r\n sm: {\r\n layout: 'row' as const,\r\n paddingH: dim.spacing.padding.sysPadding16,\r\n paddingV: dim.spacing.padding.sysPadding12,\r\n gap: dim.spacing.padding.sysPadding12,\r\n borderRadius: dim.borderRadius.sysRadiusMd,\r\n iconSize: 24,\r\n iconSizeName: 'small' as const,\r\n titleVariant: 'medium' as const,\r\n showChevron: true,\r\n },\r\n md: {\r\n layout: 'column' as const,\r\n paddingH: dim.spacing.padding.sysPadding16,\r\n paddingV: dim.spacing.padding.sysPadding16,\r\n gap: dim.spacing.padding.sysPadding24,\r\n borderRadius: dim.borderRadius.sysRadiusLg,\r\n iconSize: 32,\r\n iconSizeName: 'medium' as const,\r\n titleVariant: 'medium' as const,\r\n showChevron: false,\r\n },\r\n lg: {\r\n layout: 'column' as const,\r\n paddingH: dim.spacing.padding.sysPadding16,\r\n paddingV: dim.spacing.padding.sysPadding16,\r\n gap: dim.spacing.padding.sysPadding32,\r\n borderRadius: dim.borderRadius.sysRadiusLg,\r\n iconSize: 32,\r\n iconSizeName: 'large' as const,\r\n titleVariant: 'large' as const,\r\n showChevron: false,\r\n },\r\n }),\r\n [dim],\r\n );\r\n\r\n const v = variantTokens[variant];\r\n const s = sizeTokens[size];\r\n const isRow = s.layout === 'row';\r\n\r\n const IconComponent = icon ? ICON_MAP[icon] : null;\r\n const iconColor = v.iconBadgeColor ?? v.titleColor;\r\n const renderedIcon = IconComponent ? (\r\n <IconComponent size={s.iconSizeName} color={iconColor} />\r\n ) : null;\r\n\r\n const outerStyle = [\r\n {\r\n backgroundColor: v.bg,\r\n borderColor: v.borderColor,\r\n borderWidth: v.borderWidth,\r\n borderRadius:\r\n variant === 'doubled' ? dim.borderRadius.sysRadiusXl : s.borderRadius,\r\n paddingHorizontal:\r\n variant === 'doubled' ? dim.spacing.padding.sysPadding8 : s.paddingH,\r\n paddingVertical:\r\n variant === 'doubled' ? dim.spacing.padding.sysPadding8 : s.paddingV,\r\n opacity: disabled ? 0.48 : 1,\r\n },\r\n v.elevated && ELEVATION,\r\n fullWidth && { alignSelf: 'stretch' as const },\r\n isRow ? styles.rowRoot : styles.colRoot,\r\n !isRow && { gap: s.gap },\r\n style,\r\n ];\r\n\r\n // ── Text block ──────────────────────────────────────────────────────────────\r\n const textBlock =\r\n title || description ? (\r\n <View style={isRow ? styles.rowTextBlock : undefined}>\r\n {title && (\r\n <BodyText variant={s.titleVariant} color={v.titleColor}>\r\n {title}\r\n </BodyText>\r\n )}\r\n {!isRow && description && (\r\n <BodyText variant=\"small\" color={v.descColor}>\r\n {description}\r\n </BodyText>\r\n )}\r\n </View>\r\n ) : null;\r\n\r\n // ── Inner content by variant ────────────────────────────────────────────────\r\n let inner: React.ReactNode;\r\n\r\n if (variant === 'doubled') {\r\n inner = (\r\n <View\r\n style={[\r\n styles.colRoot,\r\n {\r\n backgroundColor: v.innerBg,\r\n borderRadius: s.borderRadius,\r\n paddingHorizontal: s.paddingH,\r\n paddingVertical: s.paddingV,\r\n gap: dim.spacing.padding.sysPadding24,\r\n },\r\n ]}\r\n >\r\n {renderedIcon && (\r\n <View\r\n style={[\r\n styles.doubledIconBadge,\r\n {\r\n backgroundColor: v.iconBadgeBg,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n },\r\n ]}\r\n >\r\n {renderedIcon}\r\n </View>\r\n )}\r\n {textBlock}\r\n {children}\r\n </View>\r\n );\r\n } else if (variant === 'image') {\r\n inner = (\r\n <>\r\n {image && (\r\n <>\r\n <Image\r\n source={image}\r\n style={[\r\n StyleSheet.absoluteFill,\r\n { borderRadius: s.borderRadius },\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: s.borderRadius,\r\n backgroundColor: 'rgba(0,0,0,0.30)',\r\n },\r\n ]}\r\n pointerEvents=\"none\"\r\n />\r\n </>\r\n )}\r\n {renderedIcon && (\r\n <View style={{ width: s.iconSize, height: s.iconSize }}>\r\n {renderedIcon}\r\n </View>\r\n )}\r\n {textBlock}\r\n {children}\r\n </>\r\n );\r\n } else if (isRow) {\r\n // sm — horizontal row\r\n inner = (\r\n <>\r\n {renderedIcon && (\r\n <View style={{ width: s.iconSize, height: s.iconSize }}>\r\n {renderedIcon}\r\n </View>\r\n )}\r\n {textBlock}\r\n {s.showChevron && (\r\n <Ionicons\r\n name=\"chevron-forward\"\r\n size={20}\r\n color={v.chevronColor}\r\n accessible={false}\r\n />\r\n )}\r\n {children}\r\n </>\r\n );\r\n } else {\r\n // md / lg — vertical column\r\n inner = (\r\n <>\r\n {renderedIcon && (\r\n <View style={{ width: s.iconSize, height: s.iconSize }}>\r\n {renderedIcon}\r\n </View>\r\n )}\r\n {textBlock}\r\n {children}\r\n {buttonIcon && (\r\n <View\r\n style={{\r\n position: 'absolute',\r\n bottom: s.paddingV,\r\n right: s.paddingH,\r\n }}\r\n pointerEvents=\"none\"\r\n >\r\n {buttonIcon}\r\n </View>\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n // ── Wrapper ─────────────────────────────────────────────────────────────────\r\n if (interactive || onPress) {\r\n return (\r\n <Pressable\r\n onPress={disabled ? undefined : onPress}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel={\r\n accessibilityLabel ?? (typeof title === 'string' ? title : undefined)\r\n }\r\n accessibilityState={{ disabled }}\r\n style={({ pressed }) => [\r\n styles.overflow,\r\n ...outerStyle,\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={[styles.overflow, ...outerStyle]}>{inner}</View>;\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n overflow: {\r\n overflow: 'hidden',\r\n },\r\n colRoot: {\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n },\r\n rowRoot: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: 12,\r\n },\r\n rowTextBlock: {\r\n flex: 1,\r\n minWidth: 0,\r\n },\r\n doubledIconBadge: {\r\n width: 48,\r\n height: 48,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n pressed: {\r\n opacity: 0.84,\r\n },\r\n});\r\n"],"names":["ServiceCard","ELEVATION","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","variant","size","title","description","icon","image","buttonIcon","interactive","disabled","onPress","children","accessibilityLabel","fullWidth","style","colorRoles","cr","dimensions","dim","useTheme","variantTokens","useMemo","outlined","bg","surface","surfaceContainer","sysSurfaceContainerLowest","borderColor","outline","sysOutline","borderWidth","sysStrokeThin","elevated","titleColor","sysOnSurface","descColor","sysOnSurfaceVariant","chevronColor","sysOutlineFixed","innerBg","undefined","iconBadgeBg","iconBadgeColor","tonal","addOn","primaryFixed","sysPrimaryFixedDim","sysOnPrimaryFixed","filled","accent","primary","sysPrimaryContainer","sysOnPrimary","transparent","neutral","sysWhite80","doubled","sysPrimary08","sysPrimary","inverse","sysInverseOnSurface","sizeTokens","sm","layout","paddingH","spacing","padding","sysPadding16","paddingV","sysPadding12","gap","borderRadius","sysRadiusMd","iconSize","iconSizeName","titleVariant","showChevron","md","sysPadding24","sysRadiusLg","lg","sysPadding32","v","s","isRow","IconComponent","ICON_MAP","iconColor","renderedIcon","color","outerStyle","backgroundColor","sysRadiusXl","paddingHorizontal","sysPadding8","paddingVertical","opacity","alignSelf","styles","rowRoot","colRoot","textBlock","View","rowTextBlock","BodyText","inner","doubledIconBadge","sysRadiusFull","Image","source","StyleSheet","absoluteFill","resizeMode","accessible","pointerEvents","Ionicons","name","position","bottom","right","Pressable","accessibilityRole","accessibilityState","pressed","overflow","create","flexDirection","alignItems","flex","minWidth","justifyContent"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export interface SliderProps {
4
+ /** Controlled value */
5
+ value?: number;
6
+ /** Default value for uncontrolled usage (default: min) */
7
+ defaultValue?: number;
8
+ min?: number;
9
+ max?: number;
10
+ /** Snapping interval (default: 1) */
11
+ step?: number;
12
+ /** Called continuously while dragging */
13
+ onValueChange?: (value: number) => void;
14
+ /** Called when the user releases the thumb */
15
+ onSlidingComplete?: (value: number) => void;
16
+ /** Label rendered above the track */
17
+ label?: string;
18
+ /** Show min/max value labels on either side of the track */
19
+ showMinMax?: boolean;
20
+ disabled?: boolean;
21
+ accessibilityLabel?: string;
22
+ style?: StyleProp<ViewStyle>;
23
+ }
24
+ export declare function Slider({ value: valueProp, defaultValue, min, max, step, onValueChange, onSlidingComplete, label, showMinMax, disabled, accessibilityLabel, style, }: SliderProps): React.JSX.Element;