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