@compsych-ui-components/react-native 4.0.13 → 4.0.18

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.
@@ -253,7 +253,13 @@ function PromotionCard({ size = 'md', variant = 'filled', usage = 'neutral', tit
253
253
  /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Image, {
254
254
  source: image,
255
255
  style: [
256
- _reactnative.StyleSheet.absoluteFill,
256
+ {
257
+ position: 'absolute',
258
+ top: 0,
259
+ left: 0,
260
+ right: 0,
261
+ bottom: 0
262
+ },
257
263
  {
258
264
  borderRadius: isLg ? dim.borderRadius.sysRadiusXl : dim.borderRadius.sysRadiusLg
259
265
  }
@@ -263,7 +269,13 @@ function PromotionCard({ size = 'md', variant = 'filled', usage = 'neutral', tit
263
269
  }),
264
270
  /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
265
271
  style: [
266
- _reactnative.StyleSheet.absoluteFill,
272
+ {
273
+ position: 'absolute',
274
+ top: 0,
275
+ left: 0,
276
+ right: 0,
277
+ bottom: 0
278
+ },
267
279
  {
268
280
  borderRadius: isLg ? dim.borderRadius.sysRadiusXl : dim.borderRadius.sysRadiusLg,
269
281
  backgroundColor: 'rgba(0,0,0,0.35)'
@@ -381,7 +393,13 @@ function PromotionCard({ size = 'md', variant = 'filled', usage = 'neutral', tit
381
393
  showRingTimer && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnativesvg.default, {
382
394
  width: buttonSize,
383
395
  height: buttonSize,
384
- style: _reactnative.StyleSheet.absoluteFill,
396
+ style: {
397
+ position: 'absolute',
398
+ top: 0,
399
+ left: 0,
400
+ right: 0,
401
+ bottom: 0
402
+ },
385
403
  children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnativesvg.Circle, {
386
404
  cx: buttonSize / 2,
387
405
  cy: buttonSize / 2,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/react-native/src/components/PromotionCard/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\n\r\nimport {\r\n Image,\r\n type ImageSourcePropType,\r\n Pressable,\r\n StyleProp,\r\n StyleSheet,\r\n View,\r\n ViewStyle,\r\n} from 'react-native';\r\n\r\nimport { Ionicons } from '@expo/vector-icons';\r\nimport Svg, { Circle as SvgCircle } from 'react-native-svg';\r\n\r\nimport { useTheme } from '../../theme';\r\nimport { BodyText } from '../BodyText';\r\nimport { HeaderText } from '../HeaderText';\r\n\r\nexport type PromotionCardVariant = 'filled' | 'tonal';\r\nexport type PromotionCardUsage =\r\n | 'neutral'\r\n | 'informative'\r\n | 'positive'\r\n | 'danger'\r\n | 'warning'\r\n | 'image';\r\nexport type PromotionCardSize = 'md' | 'lg';\r\n\r\nexport interface PromotionCardProps {\r\n size?: PromotionCardSize;\r\n variant?: PromotionCardVariant;\r\n usage?: PromotionCardUsage;\r\n title?: string;\r\n description?: string;\r\n chipLabel?: string;\r\n chipIcon?: React.ReactNode;\r\n image?: ImageSourcePropType;\r\n progress?: number;\r\n showProgressBar?: boolean;\r\n showRingTimer?: boolean;\r\n onPress?: () => void;\r\n disabled?: boolean;\r\n accessibilityLabel?: string;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\ntype VariantTokens = {\r\n cardBg: string;\r\n chipBg: string;\r\n chipTextColor: string;\r\n titleColor: string;\r\n descColor: string;\r\n descOpacity: number;\r\n buttonBg: string;\r\n buttonIconColor: string;\r\n progressColor: string;\r\n};\r\n\r\nconst MD_HEIGHT = 197;\r\nconst LG_HEIGHT = 363;\r\nconst MD_BUTTON = 32;\r\nconst LG_BUTTON = 48;\r\nconst MD_RING_R = 14;\r\nconst LG_RING_R = 21;\r\nconst MD_RING_C = 2 * Math.PI * MD_RING_R;\r\nconst LG_RING_C = 2 * Math.PI * LG_RING_R;\r\nconst LG_DOTS_BOTTOM = 53;\r\nconst LG_DOTS_LEFT = 32;\r\nconst LG_DOT_SIZE = 6;\r\nconst LG_DOT_GAP = 4;\r\nconst LG_DOT_COUNT = 5;\r\n\r\nexport function PromotionCard({\r\n size = 'md',\r\n variant = 'filled',\r\n usage = 'neutral',\r\n title,\r\n description,\r\n chipLabel,\r\n chipIcon,\r\n image,\r\n progress = 0.25,\r\n showProgressBar = true,\r\n showRingTimer = true,\r\n onPress,\r\n disabled = false,\r\n accessibilityLabel,\r\n style,\r\n}: PromotionCardProps) {\r\n const { colorRoles: cr, dimensions: dim } = useTheme();\r\n\r\n const tokens = useMemo(\r\n (): Record<\r\n PromotionCardVariant,\r\n Record<PromotionCardUsage, VariantTokens>\r\n > => ({\r\n filled: {\r\n neutral: {\r\n cardBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n chipBg: cr.surface.surfaceContainer.sysSurfaceContainerHighest,\r\n chipTextColor: cr.surface.surface.sysOnSurface,\r\n titleColor: '#0f0f0f',\r\n descColor: cr.surface.surface.sysOnSurfaceVariant,\r\n descOpacity: 1,\r\n buttonBg: cr.addOn.primaryFixed.sysPrimaryFixedDim,\r\n buttonIconColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,\r\n progressColor: cr.accent.primary.sysPrimary,\r\n },\r\n informative: {\r\n cardBg: cr.custom.info.sysOnInfoContainer,\r\n chipBg: cr.custom.info.sysInfoContainer,\r\n chipTextColor: cr.custom.info.sysOnInfoContainer,\r\n titleColor: cr.custom.info.sysOnInfo,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.custom.info.sysOnInfo,\r\n buttonIconColor: cr.custom.info.sysOnInfoContainer,\r\n progressColor: cr.custom.info.sysOnInfo,\r\n },\r\n positive: {\r\n cardBg: cr.custom.success.sysOnSuccessContainer,\r\n chipBg: cr.custom.success.sysSuccessContainer,\r\n chipTextColor: cr.custom.success.sysOnSuccessContainer,\r\n titleColor: cr.custom.success.sysOnSuccess,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.custom.success.sysOnSuccess,\r\n buttonIconColor: cr.custom.success.sysOnSuccessContainer,\r\n progressColor: cr.custom.success.sysOnSuccess,\r\n },\r\n danger: {\r\n cardBg: cr.error.sysOnErrorContainer,\r\n chipBg: cr.error.sysErrorContainer,\r\n chipTextColor: cr.error.sysOnErrorContainer,\r\n titleColor: cr.error.sysOnError,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.error.sysOnError,\r\n buttonIconColor: cr.error.sysOnErrorContainer,\r\n progressColor: cr.error.sysOnError,\r\n },\r\n warning: {\r\n cardBg: cr.custom.warning.sysOnWarningContainer,\r\n chipBg: cr.custom.warning.sysWarningContainer,\r\n chipTextColor: cr.custom.warning.sysOnWarningContainer,\r\n titleColor: cr.custom.warning.sysOnWarning,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.custom.warning.sysOnWarning,\r\n buttonIconColor: cr.custom.warning.sysOnWarningContainer,\r\n progressColor: cr.custom.warning.sysOnWarning,\r\n },\r\n image: {\r\n cardBg: 'transparent',\r\n chipBg: 'rgba(255,255,255,0.2)',\r\n chipTextColor: cr.surface.inverse.sysInverseOnSurface,\r\n titleColor: cr.accent.primary.sysOnPrimary,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n buttonIconColor: cr.surface.surface.sysOnSurface,\r\n progressColor: cr.accent.primary.sysOnPrimary,\r\n },\r\n },\r\n tonal: {\r\n neutral: {\r\n cardBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n chipBg: cr.surface.surfaceContainer.sysSurfaceContainerHighest,\r\n chipTextColor: cr.surface.surface.sysOnSurface,\r\n titleColor: '#0f0f0f',\r\n descColor: cr.surface.surface.sysOnSurfaceVariant,\r\n descOpacity: 1,\r\n buttonBg: cr.addOn.primaryFixed.sysPrimaryFixedDim,\r\n buttonIconColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,\r\n progressColor: cr.accent.primary.sysPrimary,\r\n },\r\n informative: {\r\n cardBg: cr.custom.info.sysInfoContainer,\r\n chipBg: cr.custom.info.sysOnInfo,\r\n chipTextColor: cr.custom.info.sysOnInfoContainer,\r\n titleColor: cr.custom.info.sysOnInfoContainer,\r\n descColor: cr.custom.info.sysOnInfoContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.custom.info.sysInfo,\r\n buttonIconColor: cr.custom.info.sysOnInfo,\r\n progressColor: cr.custom.info.sysInfo,\r\n },\r\n positive: {\r\n cardBg: cr.custom.success.sysSuccessContainer,\r\n chipBg: cr.custom.success.sysOnSuccess,\r\n chipTextColor: cr.custom.success.sysOnSuccessContainer,\r\n titleColor: cr.custom.success.sysOnSuccessContainer,\r\n descColor: cr.custom.success.sysOnSuccessContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.custom.success.sysSuccess,\r\n buttonIconColor: cr.custom.success.sysOnSuccess,\r\n progressColor: cr.custom.success.sysSuccess,\r\n },\r\n danger: {\r\n cardBg: cr.error.sysErrorContainer,\r\n chipBg: cr.error.sysOnError,\r\n chipTextColor: cr.error.sysOnErrorContainer,\r\n titleColor: cr.error.sysOnErrorContainer,\r\n descColor: cr.error.sysOnErrorContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.error.sysError,\r\n buttonIconColor: cr.error.sysOnError,\r\n progressColor: cr.error.sysError,\r\n },\r\n warning: {\r\n cardBg: cr.custom.warning.sysWarningContainer,\r\n chipBg: cr.custom.warning.sysOnWarning,\r\n chipTextColor: cr.custom.warning.sysOnWarningContainer,\r\n titleColor: cr.custom.warning.sysOnWarningContainer,\r\n descColor: cr.custom.warning.sysOnWarningContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.custom.warning.sysWarning,\r\n buttonIconColor: cr.custom.warning.sysOnWarning,\r\n progressColor: cr.custom.warning.sysWarning,\r\n },\r\n image: {\r\n cardBg: 'transparent',\r\n chipBg: 'rgba(255,255,255,0.2)',\r\n chipTextColor: cr.surface.inverse.sysInverseOnSurface,\r\n titleColor: cr.accent.primary.sysOnPrimary,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n buttonIconColor: cr.surface.surface.sysOnSurface,\r\n progressColor: cr.accent.primary.sysOnPrimary,\r\n },\r\n },\r\n }),\r\n [cr],\r\n );\r\n\r\n // lg tokens: neutral uses filled, others use tonal\r\n function getLgTokens(u: PromotionCardUsage): VariantTokens {\r\n if (u === 'neutral') return tokens.filled.neutral;\r\n return tokens.tonal[u];\r\n }\r\n\r\n const isLg = size === 'lg';\r\n const t = isLg ? getLgTokens(usage) : tokens[variant][usage];\r\n const isImage = usage === 'image';\r\n const p = Math.max(0, Math.min(1, progress));\r\n\r\n const buttonSize = isLg ? LG_BUTTON : MD_BUTTON;\r\n const ringR = isLg ? LG_RING_R : MD_RING_R;\r\n const ringC = isLg ? LG_RING_C : MD_RING_C;\r\n const ringArcLength = ringC * p;\r\n\r\n const containerStyle = [\r\n styles.card,\r\n isLg\r\n ? {\r\n height: LG_HEIGHT,\r\n borderRadius: dim.borderRadius.sysRadiusXl,\r\n padding: dim.spacing.padding.sysPadding32,\r\n flexDirection: 'column' as const,\r\n gap: dim.spacing.padding.sysPadding24,\r\n }\r\n : {\r\n height: MD_HEIGHT,\r\n borderRadius: dim.borderRadius.sysRadiusLg,\r\n paddingHorizontal: dim.spacing.padding.sysPadding16,\r\n paddingVertical: dim.spacing.padding.sysPadding16,\r\n justifyContent: 'space-between' as const,\r\n },\r\n { backgroundColor: t.cardBg, opacity: disabled ? 0.48 : 1 },\r\n style,\r\n ];\r\n\r\n const inner = (\r\n <>\r\n {isImage && image && (\r\n <>\r\n <Image\r\n source={image}\r\n style={[\r\n StyleSheet.absoluteFill,\r\n {\r\n borderRadius: isLg\r\n ? dim.borderRadius.sysRadiusXl\r\n : dim.borderRadius.sysRadiusLg,\r\n },\r\n ]}\r\n resizeMode=\"cover\"\r\n accessible={false}\r\n />\r\n <View\r\n style={[\r\n StyleSheet.absoluteFill,\r\n {\r\n borderRadius: isLg\r\n ? dim.borderRadius.sysRadiusXl\r\n : dim.borderRadius.sysRadiusLg,\r\n backgroundColor: 'rgba(0,0,0,0.35)',\r\n },\r\n ]}\r\n pointerEvents=\"none\"\r\n />\r\n </>\r\n )}\r\n\r\n {/* Chip */}\r\n {chipLabel && (\r\n <View\r\n style={[\r\n isLg\r\n ? {\r\n flexDirection: 'row' as const,\r\n alignItems: 'center' as const,\r\n alignSelf: 'flex-start' as const,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n paddingHorizontal: dim.spacing.padding.sysPadding16,\r\n paddingVertical: dim.spacing.padding.sysPadding4,\r\n gap: dim.spacing.padding.sysPadding8,\r\n height: 32,\r\n }\r\n : {\r\n flexDirection: 'row' as const,\r\n alignItems: 'center' as const,\r\n alignSelf: 'flex-start' as const,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n paddingHorizontal: dim.spacing.padding.sysPadding12,\r\n paddingVertical: dim.spacing.padding.sysPadding4,\r\n gap: dim.spacing.padding.sysPadding4,\r\n height: 24,\r\n },\r\n { backgroundColor: t.chipBg },\r\n ]}\r\n >\r\n {chipIcon && (\r\n <View\r\n style={\r\n isLg\r\n ? {\r\n width: 20,\r\n height: 20,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }\r\n : {\r\n width: 16,\r\n height: 16,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }\r\n }\r\n >\r\n {chipIcon}\r\n </View>\r\n )}\r\n <BodyText variant=\"labelMedium\" color={t.chipTextColor}>\r\n {chipLabel}\r\n </BodyText>\r\n </View>\r\n )}\r\n\r\n {/* Content (title + description) */}\r\n <View\r\n style={\r\n isLg\r\n ? { gap: dim.spacing.padding.sysPadding8, flex: 1 }\r\n : { gap: dim.spacing.padding.sysPadding4, maxWidth: '78%' }\r\n }\r\n >\r\n {title &&\r\n (isLg ? (\r\n <HeaderText variant=\"titleLarge\" color={t.titleColor}>\r\n {title}\r\n </HeaderText>\r\n ) : (\r\n <HeaderText variant=\"titleSmall\" color={t.titleColor}>\r\n {title}\r\n </HeaderText>\r\n ))}\r\n {description && (\r\n <View style={{ opacity: t.descOpacity }}>\r\n <BodyText variant={isLg ? 'medium' : 'small'} color={t.descColor}>\r\n {description}\r\n </BodyText>\r\n </View>\r\n )}\r\n </View>\r\n\r\n {/* Arrow button (absolute, bottom-right) */}\r\n <View\r\n style={[\r\n styles.buttonWrap,\r\n {\r\n bottom: isLg\r\n ? dim.spacing.padding.sysPadding32\r\n : dim.spacing.padding.sysPadding16,\r\n right: isLg\r\n ? dim.spacing.padding.sysPadding32\r\n : dim.spacing.padding.sysPadding16,\r\n width: buttonSize,\r\n height: buttonSize,\r\n },\r\n ]}\r\n >\r\n <View\r\n style={[\r\n styles.button,\r\n {\r\n width: buttonSize,\r\n height: buttonSize,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n backgroundColor: t.buttonBg,\r\n },\r\n ]}\r\n >\r\n <Ionicons\r\n name=\"arrow-forward\"\r\n size={isLg ? 24 : 16}\r\n color={t.buttonIconColor}\r\n accessible={false}\r\n />\r\n </View>\r\n {showRingTimer && (\r\n <Svg\r\n width={buttonSize}\r\n height={buttonSize}\r\n style={StyleSheet.absoluteFill}\r\n >\r\n <SvgCircle\r\n cx={buttonSize / 2}\r\n cy={buttonSize / 2}\r\n r={ringR}\r\n stroke={t.progressColor}\r\n strokeWidth={2}\r\n fill=\"transparent\"\r\n strokeDasharray={`${ringArcLength} ${ringC - ringArcLength}`}\r\n strokeLinecap=\"round\"\r\n rotation={-90}\r\n origin={`${buttonSize / 2}, ${buttonSize / 2}`}\r\n />\r\n </Svg>\r\n )}\r\n </View>\r\n\r\n {/* Pagination dots (lg only) */}\r\n {isLg && (\r\n <View style={styles.dotsRow}>\r\n {[...Array(LG_DOT_COUNT)].map((_: unknown, i: number) => (\r\n <View\r\n key={i}\r\n style={[\r\n styles.dot,\r\n {\r\n backgroundColor: i === 0 ? t.progressColor : 'transparent',\r\n borderColor: t.progressColor,\r\n borderWidth: i === 0 ? 0 : 1.5,\r\n opacity: i === 0 ? 1 : 0.4,\r\n },\r\n ]}\r\n />\r\n ))}\r\n </View>\r\n )}\r\n\r\n {/* Progress bar */}\r\n {showProgressBar && (\r\n <View\r\n style={[styles.progressTrack, { height: isLg ? 4 : 2 }]}\r\n pointerEvents=\"none\"\r\n >\r\n <View\r\n style={[\r\n styles.progressFill,\r\n {\r\n width: `${p * 100}%` as any,\r\n height: isLg ? 4 : 2,\r\n backgroundColor: t.progressColor,\r\n },\r\n ]}\r\n />\r\n </View>\r\n )}\r\n </>\r\n );\r\n\r\n if (onPress) {\r\n return (\r\n <Pressable\r\n onPress={disabled ? undefined : onPress}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n accessibilityState={{ disabled }}\r\n style={({ pressed }: { pressed: boolean }) => [\r\n ...containerStyle,\r\n pressed && !disabled && styles.pressed,\r\n ]}\r\n >\r\n {inner}\r\n </Pressable>\r\n );\r\n }\r\n\r\n return <View style={containerStyle}>{inner}</View>;\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n card: {\r\n overflow: 'hidden',\r\n alignSelf: 'stretch',\r\n },\r\n buttonWrap: {\r\n position: 'absolute',\r\n },\r\n button: {\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflow: 'hidden',\r\n },\r\n dotsRow: {\r\n position: 'absolute',\r\n bottom: LG_DOTS_BOTTOM,\r\n left: LG_DOTS_LEFT,\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: LG_DOT_GAP,\r\n },\r\n dot: {\r\n width: LG_DOT_SIZE,\r\n height: LG_DOT_SIZE,\r\n borderRadius: LG_DOT_SIZE / 2,\r\n },\r\n progressTrack: {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n backgroundColor: 'rgba(0,0,0,0.08)',\r\n },\r\n progressFill: {},\r\n pressed: {\r\n opacity: 0.84,\r\n },\r\n});\r\n"],"names":["PromotionCard","MD_HEIGHT","LG_HEIGHT","MD_BUTTON","LG_BUTTON","MD_RING_R","LG_RING_R","MD_RING_C","Math","PI","LG_RING_C","LG_DOTS_BOTTOM","LG_DOTS_LEFT","LG_DOT_SIZE","LG_DOT_GAP","LG_DOT_COUNT","size","variant","usage","title","description","chipLabel","chipIcon","image","progress","showProgressBar","showRingTimer","onPress","disabled","accessibilityLabel","style","colorRoles","cr","dimensions","dim","useTheme","tokens","useMemo","filled","neutral","cardBg","surface","surfaceContainer","sysSurfaceContainerLowest","chipBg","sysSurfaceContainerHighest","chipTextColor","sysOnSurface","titleColor","descColor","sysOnSurfaceVariant","descOpacity","buttonBg","addOn","primaryFixed","sysPrimaryFixedDim","buttonIconColor","sysOnPrimaryFixed","progressColor","accent","primary","sysPrimary","informative","custom","info","sysOnInfoContainer","sysInfoContainer","sysOnInfo","transparent","sysWhite80","positive","success","sysOnSuccessContainer","sysSuccessContainer","sysOnSuccess","danger","error","sysOnErrorContainer","sysErrorContainer","sysOnError","warning","sysOnWarningContainer","sysWarningContainer","sysOnWarning","inverse","sysInverseOnSurface","sysOnPrimary","tonal","sysInfo","sysSuccess","sysError","sysWarning","getLgTokens","u","isLg","t","isImage","p","max","min","buttonSize","ringR","ringC","ringArcLength","containerStyle","styles","card","height","borderRadius","sysRadiusXl","padding","spacing","sysPadding32","flexDirection","gap","sysPadding24","sysRadiusLg","paddingHorizontal","sysPadding16","paddingVertical","justifyContent","backgroundColor","opacity","inner","Image","source","StyleSheet","absoluteFill","resizeMode","accessible","View","pointerEvents","alignItems","alignSelf","sysRadiusFull","sysPadding4","sysPadding8","sysPadding12","width","BodyText","color","flex","maxWidth","HeaderText","buttonWrap","bottom","right","button","Ionicons","name","Svg","SvgCircle","cx","cy","r","stroke","strokeWidth","fill","strokeDasharray","strokeLinecap","rotation","origin","dotsRow","Array","map","_","i","dot","borderColor","borderWidth","progressTrack","progressFill","Pressable","undefined","accessibilityRole","accessibilityState","pressed","create","overflow","position","left"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/PromotionCard/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\n\r\nimport {\r\n Image,\r\n type ImageSourcePropType,\r\n Pressable,\r\n StyleProp,\r\n StyleSheet,\r\n View,\r\n ViewStyle,\r\n} from 'react-native';\r\n\r\nimport { Ionicons } from '@expo/vector-icons';\r\nimport Svg, { Circle as SvgCircle } from 'react-native-svg';\r\n\r\nimport { useTheme } from '../../theme';\r\nimport { BodyText } from '../BodyText';\r\nimport { HeaderText } from '../HeaderText';\r\n\r\nexport type PromotionCardVariant = 'filled' | 'tonal';\r\nexport type PromotionCardUsage =\r\n | 'neutral'\r\n | 'informative'\r\n | 'positive'\r\n | 'danger'\r\n | 'warning'\r\n | 'image';\r\nexport type PromotionCardSize = 'md' | 'lg';\r\n\r\nexport interface PromotionCardProps {\r\n size?: PromotionCardSize;\r\n variant?: PromotionCardVariant;\r\n usage?: PromotionCardUsage;\r\n title?: string;\r\n description?: string;\r\n chipLabel?: string;\r\n chipIcon?: React.ReactNode;\r\n image?: ImageSourcePropType;\r\n progress?: number;\r\n showProgressBar?: boolean;\r\n showRingTimer?: boolean;\r\n onPress?: () => void;\r\n disabled?: boolean;\r\n accessibilityLabel?: string;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\ntype VariantTokens = {\r\n cardBg: string;\r\n chipBg: string;\r\n chipTextColor: string;\r\n titleColor: string;\r\n descColor: string;\r\n descOpacity: number;\r\n buttonBg: string;\r\n buttonIconColor: string;\r\n progressColor: string;\r\n};\r\n\r\nconst MD_HEIGHT = 197;\r\nconst LG_HEIGHT = 363;\r\nconst MD_BUTTON = 32;\r\nconst LG_BUTTON = 48;\r\nconst MD_RING_R = 14;\r\nconst LG_RING_R = 21;\r\nconst MD_RING_C = 2 * Math.PI * MD_RING_R;\r\nconst LG_RING_C = 2 * Math.PI * LG_RING_R;\r\nconst LG_DOTS_BOTTOM = 53;\r\nconst LG_DOTS_LEFT = 32;\r\nconst LG_DOT_SIZE = 6;\r\nconst LG_DOT_GAP = 4;\r\nconst LG_DOT_COUNT = 5;\r\n\r\nexport function PromotionCard({\r\n size = 'md',\r\n variant = 'filled',\r\n usage = 'neutral',\r\n title,\r\n description,\r\n chipLabel,\r\n chipIcon,\r\n image,\r\n progress = 0.25,\r\n showProgressBar = true,\r\n showRingTimer = true,\r\n onPress,\r\n disabled = false,\r\n accessibilityLabel,\r\n style,\r\n}: PromotionCardProps) {\r\n const { colorRoles: cr, dimensions: dim } = useTheme();\r\n\r\n const tokens = useMemo(\r\n (): Record<\r\n PromotionCardVariant,\r\n Record<PromotionCardUsage, VariantTokens>\r\n > => ({\r\n filled: {\r\n neutral: {\r\n cardBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n chipBg: cr.surface.surfaceContainer.sysSurfaceContainerHighest,\r\n chipTextColor: cr.surface.surface.sysOnSurface,\r\n titleColor: '#0f0f0f',\r\n descColor: cr.surface.surface.sysOnSurfaceVariant,\r\n descOpacity: 1,\r\n buttonBg: cr.addOn.primaryFixed.sysPrimaryFixedDim,\r\n buttonIconColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,\r\n progressColor: cr.accent.primary.sysPrimary,\r\n },\r\n informative: {\r\n cardBg: cr.custom.info.sysOnInfoContainer,\r\n chipBg: cr.custom.info.sysInfoContainer,\r\n chipTextColor: cr.custom.info.sysOnInfoContainer,\r\n titleColor: cr.custom.info.sysOnInfo,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.custom.info.sysOnInfo,\r\n buttonIconColor: cr.custom.info.sysOnInfoContainer,\r\n progressColor: cr.custom.info.sysOnInfo,\r\n },\r\n positive: {\r\n cardBg: cr.custom.success.sysOnSuccessContainer,\r\n chipBg: cr.custom.success.sysSuccessContainer,\r\n chipTextColor: cr.custom.success.sysOnSuccessContainer,\r\n titleColor: cr.custom.success.sysOnSuccess,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.custom.success.sysOnSuccess,\r\n buttonIconColor: cr.custom.success.sysOnSuccessContainer,\r\n progressColor: cr.custom.success.sysOnSuccess,\r\n },\r\n danger: {\r\n cardBg: cr.error.sysOnErrorContainer,\r\n chipBg: cr.error.sysErrorContainer,\r\n chipTextColor: cr.error.sysOnErrorContainer,\r\n titleColor: cr.error.sysOnError,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.error.sysOnError,\r\n buttonIconColor: cr.error.sysOnErrorContainer,\r\n progressColor: cr.error.sysOnError,\r\n },\r\n warning: {\r\n cardBg: cr.custom.warning.sysOnWarningContainer,\r\n chipBg: cr.custom.warning.sysWarningContainer,\r\n chipTextColor: cr.custom.warning.sysOnWarningContainer,\r\n titleColor: cr.custom.warning.sysOnWarning,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.custom.warning.sysOnWarning,\r\n buttonIconColor: cr.custom.warning.sysOnWarningContainer,\r\n progressColor: cr.custom.warning.sysOnWarning,\r\n },\r\n image: {\r\n cardBg: 'transparent',\r\n chipBg: 'rgba(255,255,255,0.2)',\r\n chipTextColor: cr.surface.inverse.sysInverseOnSurface,\r\n titleColor: cr.accent.primary.sysOnPrimary,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n buttonIconColor: cr.surface.surface.sysOnSurface,\r\n progressColor: cr.accent.primary.sysOnPrimary,\r\n },\r\n },\r\n tonal: {\r\n neutral: {\r\n cardBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n chipBg: cr.surface.surfaceContainer.sysSurfaceContainerHighest,\r\n chipTextColor: cr.surface.surface.sysOnSurface,\r\n titleColor: '#0f0f0f',\r\n descColor: cr.surface.surface.sysOnSurfaceVariant,\r\n descOpacity: 1,\r\n buttonBg: cr.addOn.primaryFixed.sysPrimaryFixedDim,\r\n buttonIconColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,\r\n progressColor: cr.accent.primary.sysPrimary,\r\n },\r\n informative: {\r\n cardBg: cr.custom.info.sysInfoContainer,\r\n chipBg: cr.custom.info.sysOnInfo,\r\n chipTextColor: cr.custom.info.sysOnInfoContainer,\r\n titleColor: cr.custom.info.sysOnInfoContainer,\r\n descColor: cr.custom.info.sysOnInfoContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.custom.info.sysInfo,\r\n buttonIconColor: cr.custom.info.sysOnInfo,\r\n progressColor: cr.custom.info.sysInfo,\r\n },\r\n positive: {\r\n cardBg: cr.custom.success.sysSuccessContainer,\r\n chipBg: cr.custom.success.sysOnSuccess,\r\n chipTextColor: cr.custom.success.sysOnSuccessContainer,\r\n titleColor: cr.custom.success.sysOnSuccessContainer,\r\n descColor: cr.custom.success.sysOnSuccessContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.custom.success.sysSuccess,\r\n buttonIconColor: cr.custom.success.sysOnSuccess,\r\n progressColor: cr.custom.success.sysSuccess,\r\n },\r\n danger: {\r\n cardBg: cr.error.sysErrorContainer,\r\n chipBg: cr.error.sysOnError,\r\n chipTextColor: cr.error.sysOnErrorContainer,\r\n titleColor: cr.error.sysOnErrorContainer,\r\n descColor: cr.error.sysOnErrorContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.error.sysError,\r\n buttonIconColor: cr.error.sysOnError,\r\n progressColor: cr.error.sysError,\r\n },\r\n warning: {\r\n cardBg: cr.custom.warning.sysWarningContainer,\r\n chipBg: cr.custom.warning.sysOnWarning,\r\n chipTextColor: cr.custom.warning.sysOnWarningContainer,\r\n titleColor: cr.custom.warning.sysOnWarningContainer,\r\n descColor: cr.custom.warning.sysOnWarningContainer,\r\n descOpacity: 0.64,\r\n buttonBg: cr.custom.warning.sysWarning,\r\n buttonIconColor: cr.custom.warning.sysOnWarning,\r\n progressColor: cr.custom.warning.sysWarning,\r\n },\r\n image: {\r\n cardBg: 'transparent',\r\n chipBg: 'rgba(255,255,255,0.2)',\r\n chipTextColor: cr.surface.inverse.sysInverseOnSurface,\r\n titleColor: cr.accent.primary.sysOnPrimary,\r\n descColor: cr.transparent.neutral.sysWhite80,\r\n descOpacity: 1,\r\n buttonBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n buttonIconColor: cr.surface.surface.sysOnSurface,\r\n progressColor: cr.accent.primary.sysOnPrimary,\r\n },\r\n },\r\n }),\r\n [cr],\r\n );\r\n\r\n // lg tokens: neutral uses filled, others use tonal\r\n function getLgTokens(u: PromotionCardUsage): VariantTokens {\r\n if (u === 'neutral') return tokens.filled.neutral;\r\n return tokens.tonal[u];\r\n }\r\n\r\n const isLg = size === 'lg';\r\n const t = isLg ? getLgTokens(usage) : tokens[variant][usage];\r\n const isImage = usage === 'image';\r\n const p = Math.max(0, Math.min(1, progress));\r\n\r\n const buttonSize = isLg ? LG_BUTTON : MD_BUTTON;\r\n const ringR = isLg ? LG_RING_R : MD_RING_R;\r\n const ringC = isLg ? LG_RING_C : MD_RING_C;\r\n const ringArcLength = ringC * p;\r\n\r\n const containerStyle = [\r\n styles.card,\r\n isLg\r\n ? {\r\n height: LG_HEIGHT,\r\n borderRadius: dim.borderRadius.sysRadiusXl,\r\n padding: dim.spacing.padding.sysPadding32,\r\n flexDirection: 'column' as const,\r\n gap: dim.spacing.padding.sysPadding24,\r\n }\r\n : {\r\n height: MD_HEIGHT,\r\n borderRadius: dim.borderRadius.sysRadiusLg,\r\n paddingHorizontal: dim.spacing.padding.sysPadding16,\r\n paddingVertical: dim.spacing.padding.sysPadding16,\r\n justifyContent: 'space-between' as const,\r\n },\r\n { backgroundColor: t.cardBg, opacity: disabled ? 0.48 : 1 },\r\n style,\r\n ];\r\n\r\n const inner = (\r\n <>\r\n {isImage && image && (\r\n <>\r\n <Image\r\n source={image}\r\n style={[\r\n { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 },\r\n {\r\n borderRadius: isLg\r\n ? dim.borderRadius.sysRadiusXl\r\n : dim.borderRadius.sysRadiusLg,\r\n },\r\n ]}\r\n resizeMode=\"cover\"\r\n accessible={false}\r\n />\r\n <View\r\n style={[\r\n { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 },\r\n {\r\n borderRadius: isLg\r\n ? dim.borderRadius.sysRadiusXl\r\n : dim.borderRadius.sysRadiusLg,\r\n backgroundColor: 'rgba(0,0,0,0.35)',\r\n },\r\n ]}\r\n pointerEvents=\"none\"\r\n />\r\n </>\r\n )}\r\n\r\n {/* Chip */}\r\n {chipLabel && (\r\n <View\r\n style={[\r\n isLg\r\n ? {\r\n flexDirection: 'row' as const,\r\n alignItems: 'center' as const,\r\n alignSelf: 'flex-start' as const,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n paddingHorizontal: dim.spacing.padding.sysPadding16,\r\n paddingVertical: dim.spacing.padding.sysPadding4,\r\n gap: dim.spacing.padding.sysPadding8,\r\n height: 32,\r\n }\r\n : {\r\n flexDirection: 'row' as const,\r\n alignItems: 'center' as const,\r\n alignSelf: 'flex-start' as const,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n paddingHorizontal: dim.spacing.padding.sysPadding12,\r\n paddingVertical: dim.spacing.padding.sysPadding4,\r\n gap: dim.spacing.padding.sysPadding4,\r\n height: 24,\r\n },\r\n { backgroundColor: t.chipBg },\r\n ]}\r\n >\r\n {chipIcon && (\r\n <View\r\n style={\r\n isLg\r\n ? {\r\n width: 20,\r\n height: 20,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }\r\n : {\r\n width: 16,\r\n height: 16,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }\r\n }\r\n >\r\n {chipIcon}\r\n </View>\r\n )}\r\n <BodyText variant=\"labelMedium\" color={t.chipTextColor}>\r\n {chipLabel}\r\n </BodyText>\r\n </View>\r\n )}\r\n\r\n {/* Content (title + description) */}\r\n <View\r\n style={\r\n isLg\r\n ? { gap: dim.spacing.padding.sysPadding8, flex: 1 }\r\n : { gap: dim.spacing.padding.sysPadding4, maxWidth: '78%' }\r\n }\r\n >\r\n {title &&\r\n (isLg ? (\r\n <HeaderText variant=\"titleLarge\" color={t.titleColor}>\r\n {title}\r\n </HeaderText>\r\n ) : (\r\n <HeaderText variant=\"titleSmall\" color={t.titleColor}>\r\n {title}\r\n </HeaderText>\r\n ))}\r\n {description && (\r\n <View style={{ opacity: t.descOpacity }}>\r\n <BodyText variant={isLg ? 'medium' : 'small'} color={t.descColor}>\r\n {description}\r\n </BodyText>\r\n </View>\r\n )}\r\n </View>\r\n\r\n {/* Arrow button (absolute, bottom-right) */}\r\n <View\r\n style={[\r\n styles.buttonWrap,\r\n {\r\n bottom: isLg\r\n ? dim.spacing.padding.sysPadding32\r\n : dim.spacing.padding.sysPadding16,\r\n right: isLg\r\n ? dim.spacing.padding.sysPadding32\r\n : dim.spacing.padding.sysPadding16,\r\n width: buttonSize,\r\n height: buttonSize,\r\n },\r\n ]}\r\n >\r\n <View\r\n style={[\r\n styles.button,\r\n {\r\n width: buttonSize,\r\n height: buttonSize,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n backgroundColor: t.buttonBg,\r\n },\r\n ]}\r\n >\r\n <Ionicons\r\n name=\"arrow-forward\"\r\n size={isLg ? 24 : 16}\r\n color={t.buttonIconColor}\r\n accessible={false}\r\n />\r\n </View>\r\n {showRingTimer && (\r\n <Svg\r\n width={buttonSize}\r\n height={buttonSize}\r\n style={{ position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 }}\r\n >\r\n <SvgCircle\r\n cx={buttonSize / 2}\r\n cy={buttonSize / 2}\r\n r={ringR}\r\n stroke={t.progressColor}\r\n strokeWidth={2}\r\n fill=\"transparent\"\r\n strokeDasharray={`${ringArcLength} ${ringC - ringArcLength}`}\r\n strokeLinecap=\"round\"\r\n rotation={-90}\r\n origin={`${buttonSize / 2}, ${buttonSize / 2}`}\r\n />\r\n </Svg>\r\n )}\r\n </View>\r\n\r\n {/* Pagination dots (lg only) */}\r\n {isLg && (\r\n <View style={styles.dotsRow}>\r\n {[...Array(LG_DOT_COUNT)].map((_: unknown, i: number) => (\r\n <View\r\n key={i}\r\n style={[\r\n styles.dot,\r\n {\r\n backgroundColor: i === 0 ? t.progressColor : 'transparent',\r\n borderColor: t.progressColor,\r\n borderWidth: i === 0 ? 0 : 1.5,\r\n opacity: i === 0 ? 1 : 0.4,\r\n },\r\n ]}\r\n />\r\n ))}\r\n </View>\r\n )}\r\n\r\n {/* Progress bar */}\r\n {showProgressBar && (\r\n <View\r\n style={[styles.progressTrack, { height: isLg ? 4 : 2 }]}\r\n pointerEvents=\"none\"\r\n >\r\n <View\r\n style={[\r\n styles.progressFill,\r\n {\r\n width: `${p * 100}%` as any,\r\n height: isLg ? 4 : 2,\r\n backgroundColor: t.progressColor,\r\n },\r\n ]}\r\n />\r\n </View>\r\n )}\r\n </>\r\n );\r\n\r\n if (onPress) {\r\n return (\r\n <Pressable\r\n onPress={disabled ? undefined : onPress}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel={accessibilityLabel ?? title}\r\n accessibilityState={{ disabled }}\r\n style={({ pressed }: { pressed: boolean }) => [\r\n ...containerStyle,\r\n pressed && !disabled && styles.pressed,\r\n ]}\r\n >\r\n {inner}\r\n </Pressable>\r\n );\r\n }\r\n\r\n return <View style={containerStyle}>{inner}</View>;\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n card: {\r\n overflow: 'hidden',\r\n alignSelf: 'stretch',\r\n },\r\n buttonWrap: {\r\n position: 'absolute',\r\n },\r\n button: {\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflow: 'hidden',\r\n },\r\n dotsRow: {\r\n position: 'absolute',\r\n bottom: LG_DOTS_BOTTOM,\r\n left: LG_DOTS_LEFT,\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: LG_DOT_GAP,\r\n },\r\n dot: {\r\n width: LG_DOT_SIZE,\r\n height: LG_DOT_SIZE,\r\n borderRadius: LG_DOT_SIZE / 2,\r\n },\r\n progressTrack: {\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n backgroundColor: 'rgba(0,0,0,0.08)',\r\n },\r\n progressFill: {},\r\n pressed: {\r\n opacity: 0.84,\r\n },\r\n});\r\n"],"names":["PromotionCard","MD_HEIGHT","LG_HEIGHT","MD_BUTTON","LG_BUTTON","MD_RING_R","LG_RING_R","MD_RING_C","Math","PI","LG_RING_C","LG_DOTS_BOTTOM","LG_DOTS_LEFT","LG_DOT_SIZE","LG_DOT_GAP","LG_DOT_COUNT","size","variant","usage","title","description","chipLabel","chipIcon","image","progress","showProgressBar","showRingTimer","onPress","disabled","accessibilityLabel","style","colorRoles","cr","dimensions","dim","useTheme","tokens","useMemo","filled","neutral","cardBg","surface","surfaceContainer","sysSurfaceContainerLowest","chipBg","sysSurfaceContainerHighest","chipTextColor","sysOnSurface","titleColor","descColor","sysOnSurfaceVariant","descOpacity","buttonBg","addOn","primaryFixed","sysPrimaryFixedDim","buttonIconColor","sysOnPrimaryFixed","progressColor","accent","primary","sysPrimary","informative","custom","info","sysOnInfoContainer","sysInfoContainer","sysOnInfo","transparent","sysWhite80","positive","success","sysOnSuccessContainer","sysSuccessContainer","sysOnSuccess","danger","error","sysOnErrorContainer","sysErrorContainer","sysOnError","warning","sysOnWarningContainer","sysWarningContainer","sysOnWarning","inverse","sysInverseOnSurface","sysOnPrimary","tonal","sysInfo","sysSuccess","sysError","sysWarning","getLgTokens","u","isLg","t","isImage","p","max","min","buttonSize","ringR","ringC","ringArcLength","containerStyle","styles","card","height","borderRadius","sysRadiusXl","padding","spacing","sysPadding32","flexDirection","gap","sysPadding24","sysRadiusLg","paddingHorizontal","sysPadding16","paddingVertical","justifyContent","backgroundColor","opacity","inner","Image","source","position","top","left","right","bottom","resizeMode","accessible","View","pointerEvents","alignItems","alignSelf","sysRadiusFull","sysPadding4","sysPadding8","sysPadding12","width","BodyText","color","flex","maxWidth","HeaderText","buttonWrap","button","Ionicons","name","Svg","SvgCircle","cx","cy","r","stroke","strokeWidth","fill","strokeDasharray","strokeLinecap","rotation","origin","dotsRow","Array","map","_","i","dot","borderColor","borderWidth","progressTrack","progressFill","Pressable","undefined","accessibilityRole","accessibilityState","pressed","StyleSheet","create","overflow"],"mappings":"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"}
@@ -18,5 +18,17 @@ export interface ServiceCardProps {
18
18
  accessibilityLabel?: string;
19
19
  fullWidth?: boolean;
20
20
  style?: StyleProp<ViewStyle>;
21
+ /** Gradient colors for the "doubled" variant inner card (e.g. ['#a855f7', '#6366f1']). Falls back to the solid token color when omitted. */
22
+ gradient?: readonly [string, string, ...string[]];
23
+ /** Start point of the gradient in 0–1 coordinate space. Defaults to { x: 0, y: 0 } (top). */
24
+ gradientStart?: {
25
+ x: number;
26
+ y: number;
27
+ };
28
+ /** End point of the gradient in 0–1 coordinate space. Defaults to { x: 0, y: 1 } (bottom). */
29
+ gradientEnd?: {
30
+ x: number;
31
+ y: number;
32
+ };
21
33
  }
22
- export declare function ServiceCard({ variant, size, title, description, icon, image, buttonIcon, interactive, disabled, onPress, children, accessibilityLabel, fullWidth, style, }: ServiceCardProps): React.JSX.Element;
34
+ export declare function ServiceCard({ variant, size, title, description, icon, image, buttonIcon, interactive, disabled, onPress, children, accessibilityLabel, fullWidth, style, gradient, gradientStart, gradientEnd, }: ServiceCardProps): React.JSX.Element;
@@ -12,6 +12,7 @@ const _jsxruntime = require("react/jsx-runtime");
12
12
  const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
13
13
  const _reactnative = require("react-native");
14
14
  const _vectoricons = require("@expo/vector-icons");
15
+ const _expolineargradient = require("expo-linear-gradient");
15
16
  const _icons = require("../../icons");
16
17
  const _theme = require("../../theme");
17
18
  const _BodyText = require("../BodyText");
@@ -66,7 +67,7 @@ const ELEVATION = {
66
67
  shadowRadius: 8,
67
68
  elevation: 2
68
69
  };
69
- function ServiceCard({ variant = 'outlined', size = 'lg', title, description, icon, image, buttonIcon, interactive = false, disabled = false, onPress, children, accessibilityLabel, fullWidth = false, style }) {
70
+ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, icon, image, buttonIcon, interactive = false, disabled = false, onPress, children, accessibilityLabel, fullWidth = false, style, gradient, gradientStart, gradientEnd }) {
70
71
  const { colorRoles: cr, dimensions: dim } = (0, _theme.useTheme)();
71
72
  const variantTokens = (0, _react.useMemo)(()=>({
72
73
  outlined: {
@@ -218,17 +219,16 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
218
219
  // ── Inner content by variant ────────────────────────────────────────────────
219
220
  let inner;
220
221
  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
- ],
222
+ const doubledInnerStyle = [
223
+ styles.colRoot,
224
+ {
225
+ borderRadius: s.borderRadius,
226
+ paddingHorizontal: s.paddingH,
227
+ paddingVertical: s.paddingV,
228
+ gap: dim.spacing.padding.sysPadding24
229
+ }
230
+ ];
231
+ const doubledInnerContent = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
232
232
  children: [
233
233
  renderedIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
234
234
  style: [
@@ -244,6 +244,27 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
244
244
  children
245
245
  ]
246
246
  });
247
+ inner = gradient ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_expolineargradient.LinearGradient, {
248
+ colors: gradient,
249
+ start: gradientStart ?? {
250
+ x: 0,
251
+ y: 0
252
+ },
253
+ end: gradientEnd ?? {
254
+ x: 0,
255
+ y: 1
256
+ },
257
+ style: doubledInnerStyle,
258
+ children: doubledInnerContent
259
+ }) : /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
260
+ style: [
261
+ doubledInnerStyle,
262
+ {
263
+ backgroundColor: v.innerBg
264
+ }
265
+ ],
266
+ children: doubledInnerContent
267
+ });
247
268
  } else if (variant === 'image') {
248
269
  inner = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
249
270
  children: [
@@ -252,7 +273,13 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
252
273
  /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Image, {
253
274
  source: image,
254
275
  style: [
255
- _reactnative.StyleSheet.absoluteFill,
276
+ {
277
+ position: 'absolute',
278
+ top: 0,
279
+ left: 0,
280
+ right: 0,
281
+ bottom: 0
282
+ },
256
283
  {
257
284
  borderRadius: s.borderRadius
258
285
  }
@@ -262,7 +289,13 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
262
289
  }),
263
290
  /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
264
291
  style: [
265
- _reactnative.StyleSheet.absoluteFill,
292
+ {
293
+ position: 'absolute',
294
+ top: 0,
295
+ left: 0,
296
+ right: 0,
297
+ bottom: 0
298
+ },
266
299
  {
267
300
  borderRadius: s.borderRadius,
268
301
  backgroundColor: 'rgba(0,0,0,0.30)'
@@ -1 +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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"}
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\nimport { LinearGradient } from 'expo-linear-gradient';\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 /** Gradient colors for the \"doubled\" variant inner card (e.g. ['#a855f7', '#6366f1']). Falls back to the solid token color when omitted. */\r\n gradient?: readonly [string, string, ...string[]];\r\n /** Start point of the gradient in 0–1 coordinate space. Defaults to { x: 0, y: 0 } (top). */\r\n gradientStart?: { x: number; y: number };\r\n /** End point of the gradient in 0–1 coordinate space. Defaults to { x: 0, y: 1 } (bottom). */\r\n gradientEnd?: { x: number; y: number };\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 gradient,\r\n gradientStart,\r\n gradientEnd,\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 const doubledInnerStyle: StyleProp<ViewStyle> = [\r\n styles.colRoot,\r\n {\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 const doubledInnerContent = (\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 </>\r\n );\r\n\r\n inner = gradient ? (\r\n <LinearGradient\r\n colors={gradient}\r\n start={gradientStart ?? { x: 0, y: 0 }}\r\n end={gradientEnd ?? { x: 0, y: 1 }}\r\n style={doubledInnerStyle}\r\n >\r\n {doubledInnerContent}\r\n </LinearGradient>\r\n ) : (\r\n <View style={[doubledInnerStyle, { backgroundColor: v.innerBg }]}>\r\n {doubledInnerContent}\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 { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 },\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 { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 },\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","gradient","gradientStart","gradientEnd","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","doubledInnerStyle","doubledInnerContent","doubledIconBadge","sysRadiusFull","LinearGradient","colors","start","x","y","end","Image","source","position","top","left","right","bottom","resizeMode","accessible","pointerEvents","Ionicons","name","Pressable","accessibilityRole","accessibilityState","pressed","overflow","StyleSheet","create","flexDirection","alignItems","flex","minWidth","justifyContent"],"mappings":"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"}
@@ -108,13 +108,15 @@ function Snackbar({ visible, message, variant = 'filled', actionLabel, onAction,
108
108
  borderRadius: dim.borderRadius.sysRadiusMd,
109
109
  gap: dim.spacing.padding.sysPadding16,
110
110
  width: '100%',
111
+ // Elevation/lv3: Figma radius=16 (primary), radius=6 (secondary). RN iOS
112
+ // supports one shadow; use the dominant layer. Android uses elevation.
111
113
  shadowColor: '#000',
112
114
  shadowOffset: {
113
115
  width: 0,
114
116
  height: 4
115
117
  },
116
- shadowOpacity: 0.12,
117
- shadowRadius: 12,
118
+ shadowOpacity: 0.16,
119
+ shadowRadius: 16,
118
120
  elevation: 6
119
121
  },
120
122
  containerFilled: {
@@ -123,7 +125,7 @@ function Snackbar({ visible, message, variant = 'filled', actionLabel, onAction,
123
125
  containerOutlined: {
124
126
  backgroundColor: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
125
127
  borderWidth: dim.borderWidth.sysStrokeThin,
126
- borderColor: cr.outline.sysOutline
128
+ borderColor: cr.outline.sysOutlineVariant
127
129
  },
128
130
  actionSlot: {
129
131
  flexDirection: 'row',
@@ -188,8 +190,7 @@ function Snackbar({ visible, message, variant = 'filled', actionLabel, onAction,
188
190
  pressed && styles.pressed
189
191
  ],
190
192
  children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_BodyText.BodyText, {
191
- variant: "small",
192
- emphasized: true,
193
+ variant: "labelMedium",
193
194
  color: actionColor,
194
195
  children: actionLabel
195
196
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/react-native/src/components/Snackbar/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from 'react';\r\n\r\nimport {\r\n Animated,\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 { useTheme } from '../../theme';\r\nimport { BodyText } from '../BodyText';\r\n\r\nexport type SnackbarVariant = 'filled' | 'outlined';\r\n\r\nexport interface SnackbarProps {\r\n visible: boolean;\r\n message: string;\r\n variant?: SnackbarVariant;\r\n actionLabel?: string;\r\n onAction?: () => void;\r\n onClose?: () => void;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\nexport function Snackbar({\r\n visible,\r\n message,\r\n variant = 'filled',\r\n actionLabel,\r\n onAction,\r\n onClose,\r\n style,\r\n}: SnackbarProps) {\r\n const { colorRoles: cr, dimensions: dim } = useTheme();\r\n\r\n const translateY = useRef(new Animated.Value(100)).current;\r\n const opacity = useRef(new Animated.Value(0)).current;\r\n\r\n useEffect(() => {\r\n if (visible) {\r\n Animated.parallel([\r\n Animated.spring(translateY, {\r\n toValue: 0,\r\n useNativeDriver: true,\r\n damping: 20,\r\n stiffness: 300,\r\n }),\r\n Animated.timing(opacity, {\r\n toValue: 1,\r\n duration: 200,\r\n useNativeDriver: true,\r\n }),\r\n ]).start();\r\n } else {\r\n Animated.parallel([\r\n Animated.timing(translateY, {\r\n toValue: 100,\r\n duration: 200,\r\n useNativeDriver: true,\r\n }),\r\n Animated.timing(opacity, {\r\n toValue: 0,\r\n duration: 150,\r\n useNativeDriver: true,\r\n }),\r\n ]).start();\r\n }\r\n }, [visible]);\r\n\r\n const isFilled = variant === 'filled';\r\n\r\n const tokenStyles = useMemo(\r\n () => ({\r\n wrapper: {\r\n position: 'absolute' as const,\r\n bottom: dim.spacing.padding.sysPadding24,\r\n left: dim.spacing.padding.sysPadding16,\r\n right: dim.spacing.padding.sysPadding16,\r\n alignItems: 'center' as const,\r\n },\r\n container: {\r\n flexDirection: 'row' as const,\r\n alignItems: 'center' as const,\r\n paddingVertical: dim.spacing.padding.sysPadding12,\r\n paddingHorizontal: dim.spacing.padding.sysPadding16,\r\n borderRadius: dim.borderRadius.sysRadiusMd,\r\n gap: dim.spacing.padding.sysPadding16,\r\n width: '100%' as const,\r\n shadowColor: '#000',\r\n shadowOffset: { width: 0, height: 4 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 12,\r\n elevation: 6,\r\n },\r\n containerFilled: {\r\n backgroundColor: cr.accent.primary.sysPrimaryContainer,\r\n },\r\n containerOutlined: {\r\n backgroundColor: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n borderWidth: dim.borderWidth.sysStrokeThin,\r\n borderColor: cr.outline.sysOutline,\r\n },\r\n actionSlot: {\r\n flexDirection: 'row' as const,\r\n alignItems: 'center' as const,\r\n gap: dim.spacing.padding.sysPadding12,\r\n },\r\n actionButton: {\r\n paddingVertical: dim.spacing.padding.sysPadding4,\r\n },\r\n closeButton: {\r\n width: 24,\r\n height: 24,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n alignItems: 'center' as const,\r\n justifyContent: 'center' as const,\r\n },\r\n }),\r\n [cr, dim],\r\n );\r\n\r\n const containerVariantStyle = isFilled\r\n ? tokenStyles.containerFilled\r\n : tokenStyles.containerOutlined;\r\n const labelColor = isFilled\r\n ? cr.accent.primary.sysOnPrimary\r\n : cr.surface.surface.sysOnSurface;\r\n const actionColor = isFilled\r\n ? cr.accent.primary.sysOnPrimary\r\n : cr.accent.primary.sysPrimary;\r\n const closeBg = isFilled\r\n ? cr.transparent.neutral.sysWhite10\r\n : cr.surface.surfaceContainer.sysSurfaceContainer;\r\n const closeIconColor = isFilled\r\n ? cr.accent.primary.sysOnPrimary\r\n : cr.surface.surface.sysOnSurfaceVariant;\r\n\r\n return (\r\n <Animated.View\r\n style={[\r\n tokenStyles.wrapper,\r\n { opacity, transform: [{ translateY }] },\r\n style,\r\n ]}\r\n pointerEvents={visible ? 'box-none' : 'none'}\r\n >\r\n <View style={[tokenStyles.container, containerVariantStyle]}>\r\n <BodyText\r\n variant=\"medium\"\r\n color={labelColor}\r\n style={styles.label}\r\n numberOfLines={2}\r\n >\r\n {message}\r\n </BodyText>\r\n\r\n <View style={tokenStyles.actionSlot}>\r\n {actionLabel && onAction && (\r\n <Pressable\r\n onPress={onAction}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel={actionLabel}\r\n style={({ pressed }) => [\r\n tokenStyles.actionButton,\r\n pressed && styles.pressed,\r\n ]}\r\n >\r\n <BodyText variant=\"small\" emphasized color={actionColor}>\r\n {actionLabel}\r\n </BodyText>\r\n </Pressable>\r\n )}\r\n\r\n {onClose && (\r\n <Pressable\r\n onPress={onClose}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel=\"Dismiss\"\r\n style={({ pressed }) => [\r\n tokenStyles.closeButton,\r\n { backgroundColor: closeBg },\r\n pressed && styles.pressed,\r\n ]}\r\n >\r\n <Ionicons name=\"close\" size={16} color={closeIconColor} />\r\n </Pressable>\r\n )}\r\n </View>\r\n </View>\r\n </Animated.View>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n label: {\r\n flex: 1,\r\n },\r\n pressed: {\r\n opacity: 0.7,\r\n },\r\n});\r\n"],"names":["Snackbar","visible","message","variant","actionLabel","onAction","onClose","style","colorRoles","cr","dimensions","dim","useTheme","translateY","useRef","Animated","Value","current","opacity","useEffect","parallel","spring","toValue","useNativeDriver","damping","stiffness","timing","duration","start","isFilled","tokenStyles","useMemo","wrapper","position","bottom","spacing","padding","sysPadding24","left","sysPadding16","right","alignItems","container","flexDirection","paddingVertical","sysPadding12","paddingHorizontal","borderRadius","sysRadiusMd","gap","width","shadowColor","shadowOffset","height","shadowOpacity","shadowRadius","elevation","containerFilled","backgroundColor","accent","primary","sysPrimaryContainer","containerOutlined","surface","surfaceContainer","sysSurfaceContainerLowest","borderWidth","sysStrokeThin","borderColor","outline","sysOutline","actionSlot","actionButton","sysPadding4","closeButton","sysRadiusFull","justifyContent","containerVariantStyle","labelColor","sysOnPrimary","sysOnSurface","actionColor","sysPrimary","closeBg","transparent","neutral","sysWhite10","sysSurfaceContainer","closeIconColor","sysOnSurfaceVariant","View","transform","pointerEvents","BodyText","color","styles","label","numberOfLines","Pressable","onPress","accessibilityRole","accessibilityLabel","pressed","emphasized","Ionicons","name","size","StyleSheet","create","flex"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/Snackbar/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from 'react';\r\n\r\nimport {\r\n Animated,\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 { useTheme } from '../../theme';\r\nimport { BodyText } from '../BodyText';\r\n\r\nexport type SnackbarVariant = 'filled' | 'outlined';\r\n\r\nexport interface SnackbarProps {\r\n visible: boolean;\r\n message: string;\r\n variant?: SnackbarVariant;\r\n actionLabel?: string;\r\n onAction?: () => void;\r\n onClose?: () => void;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\nexport function Snackbar({\r\n visible,\r\n message,\r\n variant = 'filled',\r\n actionLabel,\r\n onAction,\r\n onClose,\r\n style,\r\n}: SnackbarProps) {\r\n const { colorRoles: cr, dimensions: dim } = useTheme();\r\n\r\n const translateY = useRef(new Animated.Value(100)).current;\r\n const opacity = useRef(new Animated.Value(0)).current;\r\n\r\n useEffect(() => {\r\n if (visible) {\r\n Animated.parallel([\r\n Animated.spring(translateY, {\r\n toValue: 0,\r\n useNativeDriver: true,\r\n damping: 20,\r\n stiffness: 300,\r\n }),\r\n Animated.timing(opacity, {\r\n toValue: 1,\r\n duration: 200,\r\n useNativeDriver: true,\r\n }),\r\n ]).start();\r\n } else {\r\n Animated.parallel([\r\n Animated.timing(translateY, {\r\n toValue: 100,\r\n duration: 200,\r\n useNativeDriver: true,\r\n }),\r\n Animated.timing(opacity, {\r\n toValue: 0,\r\n duration: 150,\r\n useNativeDriver: true,\r\n }),\r\n ]).start();\r\n }\r\n }, [visible]);\r\n\r\n const isFilled = variant === 'filled';\r\n\r\n const tokenStyles = useMemo(\r\n () => ({\r\n wrapper: {\r\n position: 'absolute' as const,\r\n bottom: dim.spacing.padding.sysPadding24,\r\n left: dim.spacing.padding.sysPadding16,\r\n right: dim.spacing.padding.sysPadding16,\r\n alignItems: 'center' as const,\r\n },\r\n container: {\r\n flexDirection: 'row' as const,\r\n alignItems: 'center' as const,\r\n paddingVertical: dim.spacing.padding.sysPadding12,\r\n paddingHorizontal: dim.spacing.padding.sysPadding16,\r\n borderRadius: dim.borderRadius.sysRadiusMd,\r\n gap: dim.spacing.padding.sysPadding16,\r\n width: '100%' as const,\r\n // Elevation/lv3: Figma radius=16 (primary), radius=6 (secondary). RN iOS\r\n // supports one shadow; use the dominant layer. Android uses elevation.\r\n shadowColor: '#000',\r\n shadowOffset: { width: 0, height: 4 },\r\n shadowOpacity: 0.16,\r\n shadowRadius: 16,\r\n elevation: 6,\r\n },\r\n containerFilled: {\r\n backgroundColor: cr.accent.primary.sysPrimaryContainer,\r\n },\r\n containerOutlined: {\r\n backgroundColor: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\r\n borderWidth: dim.borderWidth.sysStrokeThin,\r\n borderColor: cr.outline.sysOutlineVariant,\r\n },\r\n actionSlot: {\r\n flexDirection: 'row' as const,\r\n alignItems: 'center' as const,\r\n gap: dim.spacing.padding.sysPadding12,\r\n },\r\n actionButton: {\r\n paddingVertical: dim.spacing.padding.sysPadding4,\r\n },\r\n closeButton: {\r\n width: 24,\r\n height: 24,\r\n borderRadius: dim.borderRadius.sysRadiusFull,\r\n alignItems: 'center' as const,\r\n justifyContent: 'center' as const,\r\n },\r\n }),\r\n [cr, dim],\r\n );\r\n\r\n const containerVariantStyle = isFilled\r\n ? tokenStyles.containerFilled\r\n : tokenStyles.containerOutlined;\r\n const labelColor = isFilled\r\n ? cr.accent.primary.sysOnPrimary\r\n : cr.surface.surface.sysOnSurface;\r\n const actionColor = isFilled\r\n ? cr.accent.primary.sysOnPrimary\r\n : cr.accent.primary.sysPrimary;\r\n const closeBg = isFilled\r\n ? cr.transparent.neutral.sysWhite10\r\n : cr.surface.surfaceContainer.sysSurfaceContainer;\r\n const closeIconColor = isFilled\r\n ? cr.accent.primary.sysOnPrimary\r\n : cr.surface.surface.sysOnSurfaceVariant;\r\n\r\n return (\r\n <Animated.View\r\n style={[\r\n tokenStyles.wrapper,\r\n { opacity, transform: [{ translateY }] },\r\n style,\r\n ]}\r\n pointerEvents={visible ? 'box-none' : 'none'}\r\n >\r\n <View style={[tokenStyles.container, containerVariantStyle]}>\r\n <BodyText\r\n variant=\"medium\"\r\n color={labelColor}\r\n style={styles.label}\r\n numberOfLines={2}\r\n >\r\n {message}\r\n </BodyText>\r\n\r\n <View style={tokenStyles.actionSlot}>\r\n {actionLabel && onAction && (\r\n <Pressable\r\n onPress={onAction}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel={actionLabel}\r\n style={({ pressed }) => [\r\n tokenStyles.actionButton,\r\n pressed && styles.pressed,\r\n ]}\r\n >\r\n <BodyText variant=\"labelMedium\" color={actionColor}>\r\n {actionLabel}\r\n </BodyText>\r\n </Pressable>\r\n )}\r\n\r\n {onClose && (\r\n <Pressable\r\n onPress={onClose}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel=\"Dismiss\"\r\n style={({ pressed }) => [\r\n tokenStyles.closeButton,\r\n { backgroundColor: closeBg },\r\n pressed && styles.pressed,\r\n ]}\r\n >\r\n <Ionicons name=\"close\" size={16} color={closeIconColor} />\r\n </Pressable>\r\n )}\r\n </View>\r\n </View>\r\n </Animated.View>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n label: {\r\n flex: 1,\r\n },\r\n pressed: {\r\n opacity: 0.7,\r\n },\r\n});\r\n"],"names":["Snackbar","visible","message","variant","actionLabel","onAction","onClose","style","colorRoles","cr","dimensions","dim","useTheme","translateY","useRef","Animated","Value","current","opacity","useEffect","parallel","spring","toValue","useNativeDriver","damping","stiffness","timing","duration","start","isFilled","tokenStyles","useMemo","wrapper","position","bottom","spacing","padding","sysPadding24","left","sysPadding16","right","alignItems","container","flexDirection","paddingVertical","sysPadding12","paddingHorizontal","borderRadius","sysRadiusMd","gap","width","shadowColor","shadowOffset","height","shadowOpacity","shadowRadius","elevation","containerFilled","backgroundColor","accent","primary","sysPrimaryContainer","containerOutlined","surface","surfaceContainer","sysSurfaceContainerLowest","borderWidth","sysStrokeThin","borderColor","outline","sysOutlineVariant","actionSlot","actionButton","sysPadding4","closeButton","sysRadiusFull","justifyContent","containerVariantStyle","labelColor","sysOnPrimary","sysOnSurface","actionColor","sysPrimary","closeBg","transparent","neutral","sysWhite10","sysSurfaceContainer","closeIconColor","sysOnSurfaceVariant","View","transform","pointerEvents","BodyText","color","styles","label","numberOfLines","Pressable","onPress","accessibilityRole","accessibilityLabel","pressed","Ionicons","name","size","StyleSheet","create","flex"],"mappings":";;;;+BA4BgBA;;;eAAAA;;;;+DA5BkC;6BAS3C;6BAEkB;uBAEA;0BACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAclB,SAASA,SAAS,EACvBC,OAAO,EACPC,OAAO,EACPC,UAAU,QAAQ,EAClBC,WAAW,EACXC,QAAQ,EACRC,OAAO,EACPC,KAAK,EACS;IACd,MAAM,EAAEC,YAAYC,EAAE,EAAEC,YAAYC,GAAG,EAAE,GAAGC,IAAAA,eAAQ;IAEpD,MAAMC,aAAaC,IAAAA,aAAM,EAAC,IAAIC,qBAAQ,CAACC,KAAK,CAAC,MAAMC,OAAO;IAC1D,MAAMC,UAAUJ,IAAAA,aAAM,EAAC,IAAIC,qBAAQ,CAACC,KAAK,CAAC,IAAIC,OAAO;IAErDE,IAAAA,gBAAS,EAAC;QACR,IAAIlB,SAAS;YACXc,qBAAQ,CAACK,QAAQ,CAAC;gBAChBL,qBAAQ,CAACM,MAAM,CAACR,YAAY;oBAC1BS,SAAS;oBACTC,iBAAiB;oBACjBC,SAAS;oBACTC,WAAW;gBACb;gBACAV,qBAAQ,CAACW,MAAM,CAACR,SAAS;oBACvBI,SAAS;oBACTK,UAAU;oBACVJ,iBAAiB;gBACnB;aACD,EAAEK,KAAK;QACV,OAAO;YACLb,qBAAQ,CAACK,QAAQ,CAAC;gBAChBL,qBAAQ,CAACW,MAAM,CAACb,YAAY;oBAC1BS,SAAS;oBACTK,UAAU;oBACVJ,iBAAiB;gBACnB;gBACAR,qBAAQ,CAACW,MAAM,CAACR,SAAS;oBACvBI,SAAS;oBACTK,UAAU;oBACVJ,iBAAiB;gBACnB;aACD,EAAEK,KAAK;QACV;IACF,GAAG;QAAC3B;KAAQ;IAEZ,MAAM4B,WAAW1B,YAAY;IAE7B,MAAM2B,cAAcC,IAAAA,cAAO,EACzB,IAAO,CAAA;YACLC,SAAS;gBACPC,UAAU;gBACVC,QAAQvB,IAAIwB,OAAO,CAACC,OAAO,CAACC,YAAY;gBACxCC,MAAM3B,IAAIwB,OAAO,CAACC,OAAO,CAACG,YAAY;gBACtCC,OAAO7B,IAAIwB,OAAO,CAACC,OAAO,CAACG,YAAY;gBACvCE,YAAY;YACd;YACAC,WAAW;gBACTC,eAAe;gBACfF,YAAY;gBACZG,iBAAiBjC,IAAIwB,OAAO,CAACC,OAAO,CAACS,YAAY;gBACjDC,mBAAmBnC,IAAIwB,OAAO,CAACC,OAAO,CAACG,YAAY;gBACnDQ,cAAcpC,IAAIoC,YAAY,CAACC,WAAW;gBAC1CC,KAAKtC,IAAIwB,OAAO,CAACC,OAAO,CAACG,YAAY;gBACrCW,OAAO;gBACP,yEAAyE;gBACzE,uEAAuE;gBACvEC,aAAa;gBACbC,cAAc;oBAAEF,OAAO;oBAAGG,QAAQ;gBAAE;gBACpCC,eAAe;gBACfC,cAAc;gBACdC,WAAW;YACb;YACAC,iBAAiB;gBACfC,iBAAiBjD,GAAGkD,MAAM,CAACC,OAAO,CAACC,mBAAmB;YACxD;YACAC,mBAAmB;gBACjBJ,iBAAiBjD,GAAGsD,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;gBACtEC,aAAavD,IAAIuD,WAAW,CAACC,aAAa;gBAC1CC,aAAa3D,GAAG4D,OAAO,CAACC,iBAAiB;YAC3C;YACAC,YAAY;gBACV5B,eAAe;gBACfF,YAAY;gBACZQ,KAAKtC,IAAIwB,OAAO,CAACC,OAAO,CAACS,YAAY;YACvC;YACA2B,cAAc;gBACZ5B,iBAAiBjC,IAAIwB,OAAO,CAACC,OAAO,CAACqC,WAAW;YAClD;YACAC,aAAa;gBACXxB,OAAO;gBACPG,QAAQ;gBACRN,cAAcpC,IAAIoC,YAAY,CAAC4B,aAAa;gBAC5ClC,YAAY;gBACZmC,gBAAgB;YAClB;QACF,CAAA,GACA;QAACnE;QAAIE;KAAI;IAGX,MAAMkE,wBAAwBhD,WAC1BC,YAAY2B,eAAe,GAC3B3B,YAAYgC,iBAAiB;IACjC,MAAMgB,aAAajD,WACfpB,GAAGkD,MAAM,CAACC,OAAO,CAACmB,YAAY,GAC9BtE,GAAGsD,OAAO,CAACA,OAAO,CAACiB,YAAY;IACnC,MAAMC,cAAcpD,WAChBpB,GAAGkD,MAAM,CAACC,OAAO,CAACmB,YAAY,GAC9BtE,GAAGkD,MAAM,CAACC,OAAO,CAACsB,UAAU;IAChC,MAAMC,UAAUtD,WACZpB,GAAG2E,WAAW,CAACC,OAAO,CAACC,UAAU,GACjC7E,GAAGsD,OAAO,CAACC,gBAAgB,CAACuB,mBAAmB;IACnD,MAAMC,iBAAiB3D,WACnBpB,GAAGkD,MAAM,CAACC,OAAO,CAACmB,YAAY,GAC9BtE,GAAGsD,OAAO,CAACA,OAAO,CAAC0B,mBAAmB;IAE1C,qBACE,qBAAC1E,qBAAQ,CAAC2E,IAAI;QACZnF,OAAO;YACLuB,YAAYE,OAAO;YACnB;gBAAEd;gBAASyE,WAAW;oBAAC;wBAAE9E;oBAAW;iBAAE;YAAC;YACvCN;SACD;QACDqF,eAAe3F,UAAU,aAAa;kBAEtC,cAAA,sBAACyF,iBAAI;YAACnF,OAAO;gBAACuB,YAAYY,SAAS;gBAAEmC;aAAsB;;8BACzD,qBAACgB,kBAAQ;oBACP1F,SAAQ;oBACR2F,OAAOhB;oBACPvE,OAAOwF,OAAOC,KAAK;oBACnBC,eAAe;8BAEd/F;;8BAGH,sBAACwF,iBAAI;oBAACnF,OAAOuB,YAAYyC,UAAU;;wBAChCnE,eAAeC,0BACd,qBAAC6F,sBAAS;4BACRC,SAAS9F;4BACT+F,mBAAkB;4BAClBC,oBAAoBjG;4BACpBG,OAAO,CAAC,EAAE+F,OAAO,EAAE,GAAK;oCACtBxE,YAAY0C,YAAY;oCACxB8B,WAAWP,OAAOO,OAAO;iCAC1B;sCAED,cAAA,qBAACT,kBAAQ;gCAAC1F,SAAQ;gCAAc2F,OAAOb;0CACpC7E;;;wBAKNE,yBACC,qBAAC4F,sBAAS;4BACRC,SAAS7F;4BACT8F,mBAAkB;4BAClBC,oBAAmB;4BACnB9F,OAAO,CAAC,EAAE+F,OAAO,EAAE,GAAK;oCACtBxE,YAAY4C,WAAW;oCACvB;wCAAEhB,iBAAiByB;oCAAQ;oCAC3BmB,WAAWP,OAAOO,OAAO;iCAC1B;sCAED,cAAA,qBAACC,qBAAQ;gCAACC,MAAK;gCAAQC,MAAM;gCAAIX,OAAON;;;;;;;;AAOtD;AAEA,MAAMO,SAASW,uBAAU,CAACC,MAAM,CAAC;IAC/BX,OAAO;QACLY,MAAM;IACR;IACAN,SAAS;QACPpF,SAAS;IACX;AACF"}
package/src/index.d.ts CHANGED
@@ -48,6 +48,10 @@ export { Tooltip } from './components/Tooltip';
48
48
  export type { TooltipProps, TooltipVariant, TooltipDirection, } from './components/Tooltip';
49
49
  export { ActionSheet } from './components/ActionSheet';
50
50
  export type { ActionSheetProps, ActionSheetAction, } from './components/ActionSheet';
51
+ export { ChatBubble } from './components/ChatBubble';
52
+ export type { ChatBubbleProps, ChatBubbleVariant } from './components/ChatBubble';
53
+ export { ChatInput } from './components/ChatInput';
54
+ export type { ChatInputProps, ChatAttachment } from './components/ChatInput';
51
55
  export { BodyText } from './components/BodyText';
52
56
  export type { BodyTextProps, BodyVariant } from './components/BodyText';
53
57
  export { HeaderText } from './components/HeaderText';
package/src/index.js CHANGED
@@ -38,6 +38,12 @@ _export(exports, {
38
38
  get Button () {
39
39
  return _Button.Button;
40
40
  },
41
+ get ChatBubble () {
42
+ return _ChatBubble.ChatBubble;
43
+ },
44
+ get ChatInput () {
45
+ return _ChatInput.ChatInput;
46
+ },
41
47
  get Checkbox () {
42
48
  return _Checkbox.Checkbox;
43
49
  },
@@ -196,6 +202,8 @@ const _Snackbar = require("./components/Snackbar");
196
202
  const _Switch = require("./components/Switch");
197
203
  const _Tooltip = require("./components/Tooltip");
198
204
  const _ActionSheet = require("./components/ActionSheet");
205
+ const _ChatBubble = require("./components/ChatBubble");
206
+ const _ChatInput = require("./components/ChatInput");
199
207
  const _BodyText = require("./components/BodyText");
200
208
  const _HeaderText = require("./components/HeaderText");
201
209
  const _tokens = require("./tokens");