@compsych-ui-components/react-native 7.0.5 → 7.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/package.json +3 -7
  2. package/src/components/ActionSheet/index.d.ts +10 -1
  3. package/src/components/ActionSheet/index.js +59 -28
  4. package/src/components/ActionSheet/index.js.map +1 -1
  5. package/src/components/BodyText/index.d.ts +1 -0
  6. package/src/components/BodyText/index.js.map +1 -1
  7. package/src/components/Button/index.d.ts +1 -1
  8. package/src/components/Button/index.js +57 -37
  9. package/src/components/Button/index.js.map +1 -1
  10. package/src/components/ChatBubble/index.js +16 -14
  11. package/src/components/ChatBubble/index.js.map +1 -1
  12. package/src/components/ChatInput/index.d.ts +3 -1
  13. package/src/components/ChatInput/index.js +105 -98
  14. package/src/components/ChatInput/index.js.map +1 -1
  15. package/src/components/Checkbox/index.js.map +1 -1
  16. package/src/components/DateTimePicker/index.d.ts +16 -0
  17. package/src/components/DateTimePicker/index.js +587 -0
  18. package/src/components/DateTimePicker/index.js.map +1 -0
  19. package/src/components/Input/index.js +2 -3
  20. package/src/components/Input/index.js.map +1 -1
  21. package/src/components/Pagination/index.js.map +1 -1
  22. package/src/components/RadioButton/index.js.map +1 -1
  23. package/src/components/ScreenContainer/index.d.ts +2 -0
  24. package/src/components/ScreenContainer/index.js +2 -2
  25. package/src/components/ScreenContainer/index.js.map +1 -1
  26. package/src/components/SegmentedControl/index.d.ts +3 -3
  27. package/src/components/SegmentedControl/index.js +27 -40
  28. package/src/components/SegmentedControl/index.js.map +1 -1
  29. package/src/components/SelectionCard/index.js +12 -9
  30. package/src/components/SelectionCard/index.js.map +1 -1
  31. package/src/components/ServiceCard/index.js +141 -47
  32. package/src/components/ServiceCard/index.js.map +1 -1
  33. package/src/components/StatusChip/index.d.ts +15 -0
  34. package/src/components/StatusChip/index.js +80 -0
  35. package/src/components/StatusChip/index.js.map +1 -0
  36. package/src/icons/index.d.ts +8 -21
  37. package/src/icons/index.js +12 -92
  38. package/src/icons/index.js.map +1 -1
  39. package/src/icons/types.d.ts +3 -1
  40. package/src/icons/types.js +4 -4
  41. package/src/icons/types.js.map +1 -1
  42. package/src/index.d.ts +6 -5
  43. package/src/index.js +16 -60
  44. package/src/index.js.map +1 -1
  45. package/src/components/PromotionCard/index.d.ts +0 -23
  46. package/src/components/PromotionCard/index.js +0 -514
  47. package/src/components/PromotionCard/index.js.map +0 -1
  48. package/src/icons/AtomIcon.d.ts +0 -2
  49. package/src/icons/AtomIcon.js +0 -85
  50. package/src/icons/AtomIcon.js.map +0 -1
  51. package/src/icons/BinocularsIcon.d.ts +0 -2
  52. package/src/icons/BinocularsIcon.js +0 -103
  53. package/src/icons/BinocularsIcon.js.map +0 -1
  54. package/src/icons/FileChartColumnIncreasingIcon.d.ts +0 -2
  55. package/src/icons/FileChartColumnIncreasingIcon.js +0 -97
  56. package/src/icons/FileChartColumnIncreasingIcon.js.map +0 -1
  57. package/src/icons/FlagIcon.d.ts +0 -2
  58. package/src/icons/FlagIcon.js +0 -71
  59. package/src/icons/FlagIcon.js.map +0 -1
  60. package/src/icons/GlobeIcon.d.ts +0 -2
  61. package/src/icons/GlobeIcon.js +0 -71
  62. package/src/icons/GlobeIcon.js.map +0 -1
  63. package/src/icons/GraduationCapIcon.d.ts +0 -2
  64. package/src/icons/GraduationCapIcon.js +0 -85
  65. package/src/icons/GraduationCapIcon.js.map +0 -1
  66. package/src/icons/HandHeartIcon.d.ts +0 -2
  67. package/src/icons/HandHeartIcon.js +0 -91
  68. package/src/icons/HandHeartIcon.js.map +0 -1
  69. package/src/icons/HandshakeIcon.d.ts +0 -2
  70. package/src/icons/HandshakeIcon.js +0 -97
  71. package/src/icons/HandshakeIcon.js.map +0 -1
  72. package/src/icons/HazeIcon.d.ts +0 -2
  73. package/src/icons/HazeIcon.js +0 -115
  74. package/src/icons/HazeIcon.js.map +0 -1
  75. package/src/icons/HeartHandshakeIcon.d.ts +0 -2
  76. package/src/icons/HeartHandshakeIcon.js +0 -71
  77. package/src/icons/HeartHandshakeIcon.js.map +0 -1
  78. package/src/icons/HourglassIcon.d.ts +0 -2
  79. package/src/icons/HourglassIcon.js +0 -91
  80. package/src/icons/HourglassIcon.js.map +0 -1
  81. package/src/icons/IdCardIcon.d.ts +0 -2
  82. package/src/icons/IdCardIcon.js +0 -97
  83. package/src/icons/IdCardIcon.js.map +0 -1
  84. package/src/icons/MessageCirclePlusIcon.d.ts +0 -2
  85. package/src/icons/MessageCirclePlusIcon.js +0 -85
  86. package/src/icons/MessageCirclePlusIcon.js.map +0 -1
  87. package/src/icons/MountainSnowIcon.d.ts +0 -2
  88. package/src/icons/MountainSnowIcon.js +0 -79
  89. package/src/icons/MountainSnowIcon.js.map +0 -1
  90. package/src/icons/SnowflakeIcon.d.ts +0 -2
  91. package/src/icons/SnowflakeIcon.js +0 -139
  92. package/src/icons/SnowflakeIcon.js.map +0 -1
  93. package/src/icons/StethoscopeIcon.d.ts +0 -2
  94. package/src/icons/StethoscopeIcon.js +0 -97
  95. package/src/icons/StethoscopeIcon.js.map +0 -1
  96. package/src/icons/UserRoundIcon.d.ts +0 -2
  97. package/src/icons/UserRoundIcon.js +0 -79
  98. package/src/icons/UserRoundIcon.js.map +0 -1
  99. package/src/icons/WheatIcon.d.ts +0 -2
  100. package/src/icons/WheatIcon.js +0 -115
  101. package/src/icons/WheatIcon.js.map +0 -1
@@ -11,11 +11,15 @@ Object.defineProperty(exports, "ServiceCard", {
11
11
  const _jsxruntime = require("react/jsx-runtime");
12
12
  const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
13
13
  const _reactnative = require("react-native");
14
- const _vectoricons = require("@expo/vector-icons");
15
- const _expolineargradient = require("expo-linear-gradient");
14
+ const _reactnativelineargradient = /*#__PURE__*/ _interop_require_default(require("react-native-linear-gradient"));
16
15
  const _icons = require("../../icons");
17
16
  const _theme = require("../../theme");
18
17
  const _BodyText = require("../BodyText");
18
+ function _interop_require_default(obj) {
19
+ return obj && obj.__esModule ? obj : {
20
+ default: obj
21
+ };
22
+ }
19
23
  function _getRequireWildcardCache(nodeInterop) {
20
24
  if (typeof WeakMap !== "function") return null;
21
25
  var cacheBabelInterop = new WeakMap();
@@ -80,7 +84,8 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
80
84
  chevronColor: cr.outline.sysOutlineFixed,
81
85
  innerBg: undefined,
82
86
  iconBadgeBg: undefined,
83
- iconBadgeColor: undefined
87
+ iconBadgeColor: undefined,
88
+ buttonIconBg: cr.surface.surfaceContainer.sysSurfaceContainer
84
89
  },
85
90
  tonal: {
86
91
  bg: cr.addOn.primaryFixed.sysPrimaryFixedDim,
@@ -92,7 +97,8 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
92
97
  chevronColor: cr.addOn.primaryFixed.sysOnPrimaryFixed,
93
98
  innerBg: undefined,
94
99
  iconBadgeBg: undefined,
95
- iconBadgeColor: undefined
100
+ iconBadgeColor: undefined,
101
+ buttonIconBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest
96
102
  },
97
103
  filled: {
98
104
  bg: cr.accent.primary.sysPrimaryContainer,
@@ -104,7 +110,8 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
104
110
  chevronColor: cr.accent.primary.sysOnPrimary,
105
111
  innerBg: undefined,
106
112
  iconBadgeBg: undefined,
107
- iconBadgeColor: undefined
113
+ iconBadgeColor: undefined,
114
+ buttonIconBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest
108
115
  },
109
116
  doubled: {
110
117
  bg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,
@@ -116,7 +123,8 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
116
123
  chevronColor: cr.outline.sysOutlineFixed,
117
124
  innerBg: cr.transparent.primary.sysPrimary08,
118
125
  iconBadgeBg: cr.accent.primary.sysPrimary,
119
- iconBadgeColor: cr.accent.primary.sysOnPrimary
126
+ iconBadgeColor: cr.accent.primary.sysOnPrimary,
127
+ buttonIconBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest
120
128
  },
121
129
  image: {
122
130
  bg: 'transparent',
@@ -128,7 +136,8 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
128
136
  chevronColor: cr.surface.inverse.sysInverseOnSurface,
129
137
  innerBg: undefined,
130
138
  iconBadgeBg: undefined,
131
- iconBadgeColor: undefined
139
+ iconBadgeColor: undefined,
140
+ buttonIconBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest
132
141
  }
133
142
  }), [
134
143
  cr,
@@ -174,11 +183,14 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
174
183
  const v = variantTokens[variant];
175
184
  const s = sizeTokens[size];
176
185
  const isRow = s.layout === 'row';
177
- const IconComponent = icon ? _icons.ICON_MAP[icon] : null;
186
+ const LucideIcon = icon ? (0, _icons.resolveIcon)(icon) : null;
187
+ const ChevronRight = (0, _icons.resolveIcon)('ChevronRight');
178
188
  const iconColor = v.iconBadgeColor ?? v.titleColor;
179
- const renderedIcon = IconComponent ? /*#__PURE__*/ (0, _jsxruntime.jsx)(IconComponent, {
180
- size: s.iconSizeName,
181
- color: iconColor
189
+ const { size: iconPx, strokeWidth: iconSW } = _icons.SIZE_MAP[s.iconSizeName];
190
+ const renderedIcon = LucideIcon ? /*#__PURE__*/ (0, _jsxruntime.jsx)(LucideIcon, {
191
+ size: iconPx,
192
+ color: iconColor,
193
+ strokeWidth: iconSW
182
194
  }) : null;
183
195
  const outerStyle = [
184
196
  {
@@ -186,18 +198,23 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
186
198
  borderColor: v.borderColor,
187
199
  borderWidth: v.borderWidth,
188
200
  borderRadius: variant === 'doubled' ? dim.borderRadius.sysRadiusXl : s.borderRadius,
189
- paddingHorizontal: variant === 'doubled' ? dim.spacing.padding.sysPadding8 : s.paddingH,
190
- paddingVertical: variant === 'doubled' ? dim.spacing.padding.sysPadding8 : s.paddingV,
191
201
  opacity: disabled ? 0.48 : 1
192
202
  },
193
203
  v.elevated && ELEVATION,
204
+ variant !== 'doubled' && {
205
+ paddingHorizontal: s.paddingH,
206
+ paddingVertical: s.paddingV
207
+ },
194
208
  fullWidth && {
195
209
  alignSelf: 'stretch'
196
210
  },
197
211
  isRow ? styles.rowRoot : styles.colRoot,
198
- !isRow && {
212
+ !isRow && variant !== 'image' && {
199
213
  gap: s.gap
200
214
  },
215
+ variant === 'image' && {
216
+ justifyContent: 'space-between'
217
+ },
201
218
  style
202
219
  ];
203
220
  // ── Text block ──────────────────────────────────────────────────────────────
@@ -222,10 +239,13 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
222
239
  const doubledInnerStyle = [
223
240
  styles.colRoot,
224
241
  {
225
- borderRadius: s.borderRadius,
226
- paddingHorizontal: s.paddingH,
227
- paddingVertical: s.paddingV,
228
- gap: dim.spacing.padding.sysPadding24
242
+ alignSelf: 'stretch',
243
+ borderRadius: dim.borderRadius.sysRadiusXl,
244
+ borderColor: cr.accent.primary.sysOnPrimary,
245
+ borderWidth: dim.spacing.padding.sysPadding8,
246
+ paddingHorizontal: dim.spacing.padding.sysPadding8,
247
+ paddingVertical: dim.spacing.padding.sysPadding16,
248
+ gap: dim.spacing.padding.sysPadding12
229
249
  }
230
250
  ];
231
251
  const doubledInnerContent = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
@@ -244,26 +264,35 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
244
264
  children
245
265
  ]
246
266
  });
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, {
267
+ inner = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
260
268
  style: [
261
269
  doubledInnerStyle,
262
- {
270
+ !gradient && {
263
271
  backgroundColor: v.innerBg
264
272
  }
265
273
  ],
266
- children: doubledInnerContent
274
+ children: [
275
+ gradient && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnativelineargradient.default, {
276
+ colors: [
277
+ ...gradient
278
+ ],
279
+ start: gradientStart ?? {
280
+ x: 0,
281
+ y: 0
282
+ },
283
+ end: gradientEnd ?? {
284
+ x: 0,
285
+ y: 1
286
+ },
287
+ style: [
288
+ _reactnative.StyleSheet.absoluteFill,
289
+ {
290
+ borderRadius: dim.borderRadius.sysRadiusLg
291
+ }
292
+ ]
293
+ }),
294
+ doubledInnerContent
295
+ ]
267
296
  });
268
297
  } else if (variant === 'image') {
269
298
  inner = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
@@ -287,7 +316,17 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
287
316
  resizeMode: "cover",
288
317
  accessible: false
289
318
  }),
290
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
319
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnativelineargradient.default, {
320
+ colors: [
321
+ 'rgba(0,0,0,0.4)',
322
+ 'rgba(0,0,0,0.05)',
323
+ 'rgba(0,0,0,0.5)'
324
+ ],
325
+ locations: [
326
+ 0.012,
327
+ 0.268,
328
+ 1
329
+ ],
291
330
  style: [
292
331
  {
293
332
  position: 'absolute',
@@ -297,22 +336,39 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
297
336
  bottom: 0
298
337
  },
299
338
  {
300
- borderRadius: s.borderRadius,
301
- backgroundColor: 'rgba(0,0,0,0.30)'
339
+ borderRadius: s.borderRadius
302
340
  }
303
341
  ],
304
342
  pointerEvents: "none"
305
343
  })
306
344
  ]
307
345
  }),
308
- renderedIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
346
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
309
347
  style: {
310
348
  width: s.iconSize,
311
349
  height: s.iconSize
312
350
  },
313
351
  children: renderedIcon
314
352
  }),
315
- textBlock,
353
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
354
+ style: styles.imageBottom,
355
+ children: [
356
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
357
+ style: {
358
+ flex: 1
359
+ },
360
+ children: textBlock
361
+ }),
362
+ onPress && ChevronRight && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
363
+ style: styles.imageArrowButton,
364
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(ChevronRight, {
365
+ size: 16,
366
+ color: cr.surface.surface.sysOnSurface,
367
+ strokeWidth: 1.5
368
+ })
369
+ })
370
+ ]
371
+ }),
316
372
  children
317
373
  ]
318
374
  });
@@ -328,11 +384,10 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
328
384
  children: renderedIcon
329
385
  }),
330
386
  textBlock,
331
- s.showChevron && /*#__PURE__*/ (0, _jsxruntime.jsx)(_vectoricons.Ionicons, {
332
- name: "chevron-forward",
387
+ s.showChevron && ChevronRight && /*#__PURE__*/ (0, _jsxruntime.jsx)(ChevronRight, {
333
388
  size: 20,
334
389
  color: v.chevronColor,
335
- accessible: false
390
+ strokeWidth: 1.5
336
391
  }),
337
392
  children
338
393
  ]
@@ -351,13 +406,27 @@ function ServiceCard({ variant = 'outlined', size = 'lg', title, description, ic
351
406
  textBlock,
352
407
  children,
353
408
  buttonIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
354
- style: {
355
- position: 'absolute',
356
- bottom: s.paddingV,
357
- right: s.paddingH
358
- },
409
+ style: [
410
+ styles.buttonIconWrapper,
411
+ {
412
+ bottom: s.paddingV,
413
+ ..._reactnative.I18nManager.isRTL ? {
414
+ left: s.paddingH
415
+ } : {
416
+ right: s.paddingH
417
+ }
418
+ }
419
+ ],
359
420
  pointerEvents: "none",
360
- children: buttonIcon
421
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
422
+ style: [
423
+ styles.buttonIconCircle,
424
+ {
425
+ backgroundColor: v.buttonIconBg
426
+ }
427
+ ],
428
+ children: buttonIcon
429
+ })
361
430
  })
362
431
  ]
363
432
  });
@@ -400,6 +469,31 @@ const styles = _reactnative.StyleSheet.create({
400
469
  alignItems: 'center',
401
470
  gap: 12
402
471
  },
472
+ imageBottom: {
473
+ flexDirection: 'row',
474
+ alignItems: 'flex-end',
475
+ width: '100%',
476
+ gap: 16
477
+ },
478
+ buttonIconWrapper: {
479
+ position: 'absolute'
480
+ },
481
+ buttonIconCircle: {
482
+ width: 36,
483
+ height: 36,
484
+ borderRadius: 18,
485
+ alignItems: 'center',
486
+ justifyContent: 'center'
487
+ },
488
+ imageArrowButton: {
489
+ width: 32,
490
+ height: 32,
491
+ borderRadius: 999,
492
+ backgroundColor: '#ffffff',
493
+ alignItems: 'center',
494
+ justifyContent: 'center',
495
+ flexShrink: 0
496
+ },
403
497
  rowTextBlock: {
404
498
  flex: 1,
405
499
  minWidth: 0
@@ -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\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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"}
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/ServiceCard/index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\n\r\nimport {\r\n I18nManager,\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 LinearGradient from 'react-native-linear-gradient';\r\n\r\nimport { type IconName, SIZE_MAP, resolveIcon } 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 buttonIconBg: cr.surface.surfaceContainer.sysSurfaceContainer,\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 buttonIconBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\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 buttonIconBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\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 buttonIconBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\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 buttonIconBg: cr.surface.surfaceContainer.sysSurfaceContainerLowest,\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 LucideIcon = icon ? resolveIcon(icon) : null;\r\n const ChevronRight = resolveIcon('ChevronRight');\r\n const iconColor = v.iconBadgeColor ?? v.titleColor;\r\n const { size: iconPx, strokeWidth: iconSW } = SIZE_MAP[s.iconSizeName];\r\n const renderedIcon = LucideIcon ? (\r\n <LucideIcon size={iconPx} color={iconColor} strokeWidth={iconSW} />\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\r\n opacity: disabled ? 0.48 : 1,\r\n },\r\n v.elevated && ELEVATION,\r\n variant !== 'doubled' && {\r\n paddingHorizontal: s.paddingH,\r\n paddingVertical: s.paddingV,\r\n },\r\n fullWidth && { alignSelf: 'stretch' as const },\r\n isRow ? styles.rowRoot : styles.colRoot,\r\n !isRow && variant !== 'image' && { gap: s.gap },\r\n variant === 'image' && { justifyContent: 'space-between' as const },\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 alignSelf: 'stretch',\r\n borderRadius: dim.borderRadius.sysRadiusXl,\r\n borderColor: cr.accent.primary.sysOnPrimary,\r\n borderWidth: dim.spacing.padding.sysPadding8,\r\n paddingHorizontal: dim.spacing.padding.sysPadding8,\r\n paddingVertical: dim.spacing.padding.sysPadding16,\r\n gap: dim.spacing.padding.sysPadding12,\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 = (\r\n <View\r\n style={[doubledInnerStyle, !gradient && { backgroundColor: v.innerBg }]}\r\n >\r\n {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={[\r\n StyleSheet.absoluteFill,\r\n { borderRadius: dim.borderRadius.sysRadiusLg },\r\n ]}\r\n />\r\n )}\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 <LinearGradient\r\n colors={[\r\n 'rgba(0,0,0,0.4)',\r\n 'rgba(0,0,0,0.05)',\r\n 'rgba(0,0,0,0.5)',\r\n ]}\r\n locations={[0.012, 0.268, 1]}\r\n style={[\r\n { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 },\r\n { borderRadius: s.borderRadius },\r\n ]}\r\n pointerEvents=\"none\"\r\n />\r\n </>\r\n )}\r\n <View style={{ width: s.iconSize, height: s.iconSize }}>\r\n {renderedIcon}\r\n </View>\r\n <View style={styles.imageBottom}>\r\n <View style={{ flex: 1 }}>{textBlock}</View>\r\n {onPress && ChevronRight && (\r\n <View style={styles.imageArrowButton}>\r\n <ChevronRight\r\n size={16}\r\n color={cr.surface.surface.sysOnSurface}\r\n strokeWidth={1.5}\r\n />\r\n </View>\r\n )}\r\n </View>\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 && ChevronRight && (\r\n <ChevronRight size={20} color={v.chevronColor} strokeWidth={1.5} />\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 styles.buttonIconWrapper,\r\n {\r\n bottom: s.paddingV,\r\n ...(I18nManager.isRTL\r\n ? { left: s.paddingH }\r\n : { right: s.paddingH }),\r\n },\r\n ]}\r\n pointerEvents=\"none\"\r\n >\r\n <View\r\n style={[\r\n styles.buttonIconCircle,\r\n { backgroundColor: v.buttonIconBg },\r\n ]}\r\n >\r\n {buttonIcon}\r\n </View>\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 imageBottom: {\r\n flexDirection: 'row',\r\n alignItems: 'flex-end',\r\n width: '100%',\r\n gap: 16,\r\n },\r\n buttonIconWrapper: {\r\n position: 'absolute',\r\n },\r\n buttonIconCircle: {\r\n width: 36,\r\n height: 36,\r\n borderRadius: 18,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n imageArrowButton: {\r\n width: 32,\r\n height: 32,\r\n borderRadius: 999,\r\n backgroundColor: '#ffffff',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\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","buttonIconBg","sysSurfaceContainer","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","LucideIcon","resolveIcon","ChevronRight","iconColor","iconPx","strokeWidth","iconSW","SIZE_MAP","renderedIcon","color","outerStyle","backgroundColor","sysRadiusXl","opacity","paddingHorizontal","paddingVertical","alignSelf","styles","rowRoot","colRoot","justifyContent","textBlock","View","rowTextBlock","BodyText","inner","doubledInnerStyle","sysPadding8","doubledInnerContent","doubledIconBadge","sysRadiusFull","LinearGradient","colors","start","x","y","end","StyleSheet","absoluteFill","Image","source","position","top","left","right","bottom","resizeMode","accessible","locations","pointerEvents","imageBottom","flex","imageArrowButton","buttonIconWrapper","I18nManager","isRTL","buttonIconCircle","Pressable","accessibilityRole","accessibilityState","pressed","overflow","create","flexDirection","alignItems","flexShrink","minWidth"],"mappings":";;;;+BA4DgBA;;;eAAAA;;;;+DA5De;6BAWxB;kFAEoB;uBAE0B;uBAC5B;0BACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCzB,MAAMC,YAAY;IAChBC,aAAa;IACbC,cAAc;QAAEC,OAAO;QAAGC,QAAQ;IAAE;IACpCC,eAAe;IACfC,cAAc;IACdC,WAAW;AACb;AAIO,SAASR,YAAY,EAC1BS,UAAU,UAAU,EACpBC,OAAO,IAAI,EACXC,KAAK,EACLC,WAAW,EACXC,IAAI,EACJC,KAAK,EACLC,UAAU,EACVC,cAAc,KAAK,EACnBC,WAAW,KAAK,EAChBC,OAAO,EACPC,QAAQ,EACRC,kBAAkB,EAClBC,YAAY,KAAK,EACjBC,KAAK,EACLC,QAAQ,EACRC,aAAa,EACbC,WAAW,EACM;IACjB,MAAM,EAAEC,YAAYC,EAAE,EAAEC,YAAYC,GAAG,EAAE,GAAGC,IAAAA,eAAQ;IAEpD,MAAMC,gBAAgBC,IAAAA,cAAO,EAC3B,IAAO,CAAA;YACLC,UAAU;gBACRC,IAAIP,GAAGQ,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;gBACzDC,aAAaX,GAAGY,OAAO,CAACC,UAAU;gBAClCC,aAAaZ,IAAIY,WAAW,CAACC,aAAa;gBAC1CC,UAAU;gBACVC,YAAYjB,GAAGQ,OAAO,CAACA,OAAO,CAACU,YAAY;gBAC3CC,WAAWnB,GAAGQ,OAAO,CAACA,OAAO,CAACY,mBAAmB;gBACjDC,cAAcrB,GAAGY,OAAO,CAACU,eAAe;gBACxCC,SAASC;gBACTC,aAAaD;gBACbE,gBAAgBF;gBAChBG,cAAc3B,GAAGQ,OAAO,CAACC,gBAAgB,CAACmB,mBAAmB;YAC/D;YACAC,OAAO;gBACLtB,IAAIP,GAAG8B,KAAK,CAACC,YAAY,CAACC,kBAAkB;gBAC5CrB,aAAa;gBACbG,aAAa;gBACbE,UAAU;gBACVC,YAAYjB,GAAG8B,KAAK,CAACC,YAAY,CAACE,iBAAiB;gBACnDd,WAAWnB,GAAG8B,KAAK,CAACC,YAAY,CAACE,iBAAiB;gBAClDZ,cAAcrB,GAAG8B,KAAK,CAACC,YAAY,CAACE,iBAAiB;gBACrDV,SAASC;gBACTC,aAAaD;gBACbE,gBAAgBF;gBAChBG,cAAc3B,GAAGQ,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;YACrE;YACAwB,QAAQ;gBACN3B,IAAIP,GAAGmC,MAAM,CAACC,OAAO,CAACC,mBAAmB;gBACzC1B,aAAa;gBACbG,aAAa;gBACbE,UAAU;gBACVC,YAAYjB,GAAGmC,MAAM,CAACC,OAAO,CAACE,YAAY;gBAC1CnB,WAAWnB,GAAGuC,WAAW,CAACC,OAAO,CAACC,UAAU;gBAC5CpB,cAAcrB,GAAGmC,MAAM,CAACC,OAAO,CAACE,YAAY;gBAC5Cf,SAASC;gBACTC,aAAaD;gBACbE,gBAAgBF;gBAChBG,cAAc3B,GAAGQ,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;YACrE;YACAgC,SAAS;gBACPnC,IAAIP,GAAGQ,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;gBACzDC,aAAaX,GAAGY,OAAO,CAACC,UAAU;gBAClCC,aAAaZ,IAAIY,WAAW,CAACC,aAAa;gBAC1CC,UAAU;gBACVC,YAAYjB,GAAGQ,OAAO,CAACA,OAAO,CAACU,YAAY;gBAC3CC,WAAWnB,GAAGQ,OAAO,CAACA,OAAO,CAACY,mBAAmB;gBACjDC,cAAcrB,GAAGY,OAAO,CAACU,eAAe;gBACxCC,SAASvB,GAAGuC,WAAW,CAACH,OAAO,CAACO,YAAY;gBAC5ClB,aAAazB,GAAGmC,MAAM,CAACC,OAAO,CAACQ,UAAU;gBACzClB,gBAAgB1B,GAAGmC,MAAM,CAACC,OAAO,CAACE,YAAY;gBAC9CX,cAAc3B,GAAGQ,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;YACrE;YACAvB,OAAO;gBACLoB,IAAI;gBACJI,aAAa;gBACbG,aAAa;gBACbE,UAAU;gBACVC,YAAYjB,GAAGQ,OAAO,CAACqC,OAAO,CAACC,mBAAmB;gBAClD3B,WAAWnB,GAAGuC,WAAW,CAACC,OAAO,CAACC,UAAU;gBAC5CpB,cAAcrB,GAAGQ,OAAO,CAACqC,OAAO,CAACC,mBAAmB;gBACpDvB,SAASC;gBACTC,aAAaD;gBACbE,gBAAgBF;gBAChBG,cAAc3B,GAAGQ,OAAO,CAACC,gBAAgB,CAACC,yBAAyB;YACrE;QACF,CAAA,GACA;QAACV;QAAIE;KAAI;IAGX,MAAM6C,aAAa1C,IAAAA,cAAO,EACxB,IAAO,CAAA;YACL2C,IAAI;gBACFC,QAAQ;gBACRC,UAAUhD,IAAIiD,OAAO,CAACC,OAAO,CAACC,YAAY;gBAC1CC,UAAUpD,IAAIiD,OAAO,CAACC,OAAO,CAACG,YAAY;gBAC1CC,KAAKtD,IAAIiD,OAAO,CAACC,OAAO,CAACG,YAAY;gBACrCE,cAAcvD,IAAIuD,YAAY,CAACC,WAAW;gBAC1CC,UAAU;gBACVC,cAAc;gBACdC,cAAc;gBACdC,aAAa;YACf;YACAC,IAAI;gBACFd,QAAQ;gBACRC,UAAUhD,IAAIiD,OAAO,CAACC,OAAO,CAACC,YAAY;gBAC1CC,UAAUpD,IAAIiD,OAAO,CAACC,OAAO,CAACC,YAAY;gBAC1CG,KAAKtD,IAAIiD,OAAO,CAACC,OAAO,CAACY,YAAY;gBACrCP,cAAcvD,IAAIuD,YAAY,CAACQ,WAAW;gBAC1CN,UAAU;gBACVC,cAAc;gBACdC,cAAc;gBACdC,aAAa;YACf;YACAI,IAAI;gBACFjB,QAAQ;gBACRC,UAAUhD,IAAIiD,OAAO,CAACC,OAAO,CAACC,YAAY;gBAC1CC,UAAUpD,IAAIiD,OAAO,CAACC,OAAO,CAACC,YAAY;gBAC1CG,KAAKtD,IAAIiD,OAAO,CAACC,OAAO,CAACe,YAAY;gBACrCV,cAAcvD,IAAIuD,YAAY,CAACQ,WAAW;gBAC1CN,UAAU;gBACVC,cAAc;gBACdC,cAAc;gBACdC,aAAa;YACf;QACF,CAAA,GACA;QAAC5D;KAAI;IAGP,MAAMkE,IAAIhE,aAAa,CAACtB,QAAQ;IAChC,MAAMuF,IAAItB,UAAU,CAAChE,KAAK;IAC1B,MAAMuF,QAAQD,EAAEpB,MAAM,KAAK;IAE3B,MAAMsB,aAAarF,OAAOsF,IAAAA,kBAAW,EAACtF,QAAQ;IAC9C,MAAMuF,eAAeD,IAAAA,kBAAW,EAAC;IACjC,MAAME,YAAYN,EAAE1C,cAAc,IAAI0C,EAAEnD,UAAU;IAClD,MAAM,EAAElC,MAAM4F,MAAM,EAAEC,aAAaC,MAAM,EAAE,GAAGC,eAAQ,CAACT,EAAET,YAAY,CAAC;IACtE,MAAMmB,eAAeR,2BACnB,qBAACA;QAAWxF,MAAM4F;QAAQK,OAAON;QAAWE,aAAaC;SACvD;IAEJ,MAAMI,aAAa;QACjB;YACEC,iBAAiBd,EAAE7D,EAAE;YACrBI,aAAayD,EAAEzD,WAAW;YAC1BG,aAAasD,EAAEtD,WAAW;YAC1B2C,cACE3E,YAAY,YAAYoB,IAAIuD,YAAY,CAAC0B,WAAW,GAAGd,EAAEZ,YAAY;YAEvE2B,SAAS9F,WAAW,OAAO;QAC7B;QACA8E,EAAEpD,QAAQ,IAAI1C;QACdQ,YAAY,aAAa;YACvBuG,mBAAmBhB,EAAEnB,QAAQ;YAC7BoC,iBAAiBjB,EAAEf,QAAQ;QAC7B;QACA5D,aAAa;YAAE6F,WAAW;QAAmB;QAC7CjB,QAAQkB,OAAOC,OAAO,GAAGD,OAAOE,OAAO;QACvC,CAACpB,SAASxF,YAAY,WAAW;YAAE0E,KAAKa,EAAEb,GAAG;QAAC;QAC9C1E,YAAY,WAAW;YAAE6G,gBAAgB;QAAyB;QAClEhG;KACD;IAED,+EAA+E;IAC/E,MAAMiG,YACJ5G,SAASC,4BACP,sBAAC4G,iBAAI;QAAClG,OAAO2E,QAAQkB,OAAOM,YAAY,GAAGtE;;YACxCxC,uBACC,qBAAC+G,kBAAQ;gBAACjH,SAASuF,EAAER,YAAY;gBAAEmB,OAAOZ,EAAEnD,UAAU;0BACnDjC;;YAGJ,CAACsF,SAASrF,6BACT,qBAAC8G,kBAAQ;gBAACjH,SAAQ;gBAAQkG,OAAOZ,EAAEjD,SAAS;0BACzClC;;;SAIL;IAEN,+EAA+E;IAC/E,IAAI+G;IAEJ,IAAIlH,YAAY,WAAW;QACzB,MAAMmH,oBAA0C;YAC9CT,OAAOE,OAAO;YACd;gBACEH,WAAW;gBACX9B,cAAcvD,IAAIuD,YAAY,CAAC0B,WAAW;gBAC1CxE,aAAaX,GAAGmC,MAAM,CAACC,OAAO,CAACE,YAAY;gBAC3CxB,aAAaZ,IAAIiD,OAAO,CAACC,OAAO,CAAC8C,WAAW;gBAC5Cb,mBAAmBnF,IAAIiD,OAAO,CAACC,OAAO,CAAC8C,WAAW;gBAClDZ,iBAAiBpF,IAAIiD,OAAO,CAACC,OAAO,CAACC,YAAY;gBACjDG,KAAKtD,IAAIiD,OAAO,CAACC,OAAO,CAACG,YAAY;YACvC;SACD;QAED,MAAM4C,oCACJ;;gBACGpB,8BACC,qBAACc,iBAAI;oBACHlG,OAAO;wBACL6F,OAAOY,gBAAgB;wBACvB;4BACElB,iBAAiBd,EAAE3C,WAAW;4BAC9BgC,cAAcvD,IAAIuD,YAAY,CAAC4C,aAAa;wBAC9C;qBACD;8BAEAtB;;gBAGJa;gBACApG;;;QAILwG,sBACE,sBAACH,iBAAI;YACHlG,OAAO;gBAACsG;gBAAmB,CAACrG,YAAY;oBAAEsF,iBAAiBd,EAAE7C,OAAO;gBAAC;aAAE;;gBAEtE3B,0BACC,qBAAC0G,kCAAc;oBACbC,QAAQ;2BAAI3G;qBAAS;oBACrB4G,OAAO3G,iBAAiB;wBAAE4G,GAAG;wBAAGC,GAAG;oBAAE;oBACrCC,KAAK7G,eAAe;wBAAE2G,GAAG;wBAAGC,GAAG;oBAAE;oBACjC/G,OAAO;wBACLiH,uBAAU,CAACC,YAAY;wBACvB;4BAAEpD,cAAcvD,IAAIuD,YAAY,CAACQ,WAAW;wBAAC;qBAC9C;;gBAGJkC;;;IAGP,OAAO,IAAIrH,YAAY,SAAS;QAC9BkH,sBACE;;gBACG7G,uBACC;;sCACE,qBAAC2H,kBAAK;4BACJC,QAAQ5H;4BACRQ,OAAO;gCACL;oCAAEqH,UAAU;oCAAYC,KAAK;oCAAGC,MAAM;oCAAGC,OAAO;oCAAGC,QAAQ;gCAAE;gCAC7D;oCAAE3D,cAAcY,EAAEZ,YAAY;gCAAC;6BAChC;4BACD4D,YAAW;4BACXC,YAAY;;sCAEd,qBAAChB,kCAAc;4BACbC,QAAQ;gCACN;gCACA;gCACA;6BACD;4BACDgB,WAAW;gCAAC;gCAAO;gCAAO;6BAAE;4BAC5B5H,OAAO;gCACL;oCAAEqH,UAAU;oCAAYC,KAAK;oCAAGC,MAAM;oCAAGC,OAAO;oCAAGC,QAAQ;gCAAE;gCAC7D;oCAAE3D,cAAcY,EAAEZ,YAAY;gCAAC;6BAChC;4BACD+D,eAAc;;;;8BAIpB,qBAAC3B,iBAAI;oBAAClG,OAAO;wBAAElB,OAAO4F,EAAEV,QAAQ;wBAAEjF,QAAQ2F,EAAEV,QAAQ;oBAAC;8BAClDoB;;8BAEH,sBAACc,iBAAI;oBAAClG,OAAO6F,OAAOiC,WAAW;;sCAC7B,qBAAC5B,iBAAI;4BAAClG,OAAO;gCAAE+H,MAAM;4BAAE;sCAAI9B;;wBAC1BrG,WAAWkF,8BACV,qBAACoB,iBAAI;4BAAClG,OAAO6F,OAAOmC,gBAAgB;sCAClC,cAAA,qBAAClD;gCACC1F,MAAM;gCACNiG,OAAOhF,GAAGQ,OAAO,CAACA,OAAO,CAACU,YAAY;gCACtC0D,aAAa;;;;;gBAKpBpF;;;IAGP,OAAO,IAAI8E,OAAO;QAChB,sBAAsB;QACtB0B,sBACE;;gBACGjB,8BACC,qBAACc,iBAAI;oBAAClG,OAAO;wBAAElB,OAAO4F,EAAEV,QAAQ;wBAAEjF,QAAQ2F,EAAEV,QAAQ;oBAAC;8BAClDoB;;gBAGJa;gBACAvB,EAAEP,WAAW,IAAIW,8BAChB,qBAACA;oBAAa1F,MAAM;oBAAIiG,OAAOZ,EAAE/C,YAAY;oBAAEuD,aAAa;;gBAE7DpF;;;IAGP,OAAO;QACL,4BAA4B;QAC5BwG,sBACE;;gBACGjB,8BACC,qBAACc,iBAAI;oBAAClG,OAAO;wBAAElB,OAAO4F,EAAEV,QAAQ;wBAAEjF,QAAQ2F,EAAEV,QAAQ;oBAAC;8BAClDoB;;gBAGJa;gBACApG;gBACAJ,4BACC,qBAACyG,iBAAI;oBACHlG,OAAO;wBACL6F,OAAOoC,iBAAiB;wBACxB;4BACER,QAAQ/C,EAAEf,QAAQ;4BAClB,GAAIuE,wBAAW,CAACC,KAAK,GACjB;gCAAEZ,MAAM7C,EAAEnB,QAAQ;4BAAC,IACnB;gCAAEiE,OAAO9C,EAAEnB,QAAQ;4BAAC,CAAC;wBAC3B;qBACD;oBACDsE,eAAc;8BAEd,cAAA,qBAAC3B,iBAAI;wBACHlG,OAAO;4BACL6F,OAAOuC,gBAAgB;4BACvB;gCAAE7C,iBAAiBd,EAAEzC,YAAY;4BAAC;yBACnC;kCAEAvC;;;;;IAMb;IAEA,+EAA+E;IAC/E,IAAIC,eAAeE,SAAS;QAC1B,qBACE,qBAACyI,sBAAS;YACRzI,SAASD,WAAWkC,YAAYjC;YAChC0I,mBAAkB;YAClBxI,oBACEA,sBAAuB,CAAA,OAAOT,UAAU,WAAWA,QAAQwC,SAAQ;YAErE0G,oBAAoB;gBAAE5I;YAAS;YAC/BK,OAAO,CAAC,EAAEwI,OAAO,EAAE,GAAK;oBACtB3C,OAAO4C,QAAQ;uBACZnD;oBACHkD,WAAW,CAAC7I,YAAYkG,OAAO2C,OAAO;iBACvC;sBAEAnC;;IAGP;IAEA,qBAAO,qBAACH,iBAAI;QAAClG,OAAO;YAAC6F,OAAO4C,QAAQ;eAAKnD;SAAW;kBAAGe;;AACzD;AAEA,MAAMR,SAASoB,uBAAU,CAACyB,MAAM,CAAC;IAC/BD,UAAU;QACRA,UAAU;IACZ;IACA1C,SAAS;QACP4C,eAAe;QACfC,YAAY;IACd;IACA9C,SAAS;QACP6C,eAAe;QACfC,YAAY;QACZ/E,KAAK;IACP;IACAiE,aAAa;QACXa,eAAe;QACfC,YAAY;QACZ9J,OAAO;QACP+E,KAAK;IACP;IACAoE,mBAAmB;QACjBZ,UAAU;IACZ;IACAe,kBAAkB;QAChBtJ,OAAO;QACPC,QAAQ;QACR+E,cAAc;QACd8E,YAAY;QACZ5C,gBAAgB;IAClB;IACAgC,kBAAkB;QAChBlJ,OAAO;QACPC,QAAQ;QACR+E,cAAc;QACdyB,iBAAiB;QACjBqD,YAAY;QACZ5C,gBAAgB;QAChB6C,YAAY;IACd;IACA1C,cAAc;QACZ4B,MAAM;QACNe,UAAU;IACZ;IACArC,kBAAkB;QAChB3H,OAAO;QACPC,QAAQ;QACR6J,YAAY;QACZ5C,gBAAgB;IAClB;IACAwC,SAAS;QACP/C,SAAS;IACX;AACF"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ import { type IconName } from '../../icons';
4
+ export type StatusChipVariant = 'warning' | 'error';
5
+ export type StatusChipAlign = 'left' | 'center' | 'right';
6
+ export interface StatusChipProps {
7
+ label: string;
8
+ variant?: StatusChipVariant;
9
+ /** Icon name — defaults to ClockFadingIcon (warning) or ClockAlertIcon (error) */
10
+ icon?: IconName;
11
+ align?: StatusChipAlign;
12
+ fullWidth?: boolean;
13
+ style?: StyleProp<ViewStyle>;
14
+ }
15
+ export declare function StatusChip({ label, variant, icon, align, fullWidth, style, }: StatusChipProps): React.JSX.Element;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "StatusChip", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return StatusChip;
9
+ }
10
+ });
11
+ const _jsxruntime = require("react/jsx-runtime");
12
+ const _react = /*#__PURE__*/ _interop_require_default(require("react"));
13
+ const _reactnative = require("react-native");
14
+ const _icons = require("../../icons");
15
+ const _theme = require("../../theme");
16
+ const _BodyText = require("../BodyText");
17
+ function _interop_require_default(obj) {
18
+ return obj && obj.__esModule ? obj : {
19
+ default: obj
20
+ };
21
+ }
22
+ const DEFAULT_ICONS = {
23
+ warning: 'ClockFadingIcon',
24
+ error: 'ClockAlertIcon'
25
+ };
26
+ const JUSTIFY = {
27
+ left: 'flex-start',
28
+ center: 'center',
29
+ right: 'flex-end'
30
+ };
31
+ function StatusChip({ label, variant = 'warning', icon, align = 'center', fullWidth = false, style }) {
32
+ const { colorRoles: cr } = (0, _theme.useTheme)();
33
+ const colors = variant === 'warning' ? {
34
+ bg: cr.custom.warning.sysWarningContainer,
35
+ text: cr.custom.warning.sysOnWarningContainer
36
+ } : {
37
+ bg: cr.error.sysErrorContainer,
38
+ text: cr.error.sysOnErrorContainer
39
+ };
40
+ const iconName = icon ?? DEFAULT_ICONS[variant];
41
+ const IconComponent = (0, _icons.resolveIcon)(iconName);
42
+ const { size: iconPx, strokeWidth: iconSW } = _icons.SIZE_MAP['small'];
43
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
44
+ style: [
45
+ styles.chip,
46
+ {
47
+ backgroundColor: colors.bg,
48
+ justifyContent: JUSTIFY[align],
49
+ alignSelf: fullWidth ? 'stretch' : 'flex-start'
50
+ },
51
+ style
52
+ ],
53
+ children: [
54
+ IconComponent && /*#__PURE__*/ (0, _jsxruntime.jsx)(IconComponent, {
55
+ size: iconPx,
56
+ strokeWidth: iconSW,
57
+ color: colors.text
58
+ }),
59
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_BodyText.BodyText, {
60
+ variant: "labelMedium",
61
+ color: colors.text,
62
+ numberOfLines: 1,
63
+ children: label
64
+ })
65
+ ]
66
+ });
67
+ }
68
+ const styles = _reactnative.StyleSheet.create({
69
+ chip: {
70
+ flexDirection: 'row',
71
+ alignItems: 'center',
72
+ borderRadius: 9999,
73
+ paddingHorizontal: 16,
74
+ paddingVertical: 4,
75
+ gap: 8,
76
+ height: 32
77
+ }
78
+ });
79
+
80
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/react-native/src/components/StatusChip/index.tsx"],"sourcesContent":["import React from 'react';\r\n\r\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\r\n\r\nimport { type IconName, SIZE_MAP, resolveIcon } from '../../icons';\r\nimport { useTheme } from '../../theme';\r\nimport { BodyText } from '../BodyText';\r\n\r\nexport type StatusChipVariant = 'warning' | 'error';\r\nexport type StatusChipAlign = 'left' | 'center' | 'right';\r\n\r\nexport interface StatusChipProps {\r\n label: string;\r\n variant?: StatusChipVariant;\r\n /** Icon name — defaults to ClockFadingIcon (warning) or ClockAlertIcon (error) */\r\n icon?: IconName;\r\n align?: StatusChipAlign;\r\n fullWidth?: boolean;\r\n style?: StyleProp<ViewStyle>;\r\n}\r\n\r\nconst DEFAULT_ICONS: Record<StatusChipVariant, IconName> = {\r\n warning: 'ClockFadingIcon',\r\n error: 'ClockAlertIcon',\r\n};\r\n\r\nconst JUSTIFY: Record<StatusChipAlign, 'flex-start' | 'center' | 'flex-end'> = {\r\n left: 'flex-start',\r\n center: 'center',\r\n right: 'flex-end',\r\n};\r\n\r\nexport function StatusChip({\r\n label,\r\n variant = 'warning',\r\n icon,\r\n align = 'center',\r\n fullWidth = false,\r\n style,\r\n}: StatusChipProps) {\r\n const { colorRoles: cr } = useTheme();\r\n\r\n const colors =\r\n variant === 'warning'\r\n ? {\r\n bg: cr.custom.warning.sysWarningContainer,\r\n text: cr.custom.warning.sysOnWarningContainer,\r\n }\r\n : {\r\n bg: cr.error.sysErrorContainer,\r\n text: cr.error.sysOnErrorContainer,\r\n };\r\n\r\n const iconName = icon ?? DEFAULT_ICONS[variant];\r\n const IconComponent = resolveIcon(iconName);\r\n const { size: iconPx, strokeWidth: iconSW } = SIZE_MAP['small'];\r\n\r\n return (\r\n <View\r\n style={[\r\n styles.chip,\r\n {\r\n backgroundColor: colors.bg,\r\n justifyContent: JUSTIFY[align],\r\n alignSelf: fullWidth ? ('stretch' as const) : ('flex-start' as const),\r\n },\r\n style,\r\n ]}\r\n >\r\n {IconComponent && (\r\n <IconComponent size={iconPx} strokeWidth={iconSW} color={colors.text} />\r\n )}\r\n <BodyText variant=\"labelMedium\" color={colors.text} numberOfLines={1}>\r\n {label}\r\n </BodyText>\r\n </View>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n chip: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n borderRadius: 9999,\r\n paddingHorizontal: 16,\r\n paddingVertical: 4,\r\n gap: 8,\r\n height: 32,\r\n },\r\n});\r\n"],"names":["StatusChip","DEFAULT_ICONS","warning","error","JUSTIFY","left","center","right","label","variant","icon","align","fullWidth","style","colorRoles","cr","useTheme","colors","bg","custom","sysWarningContainer","text","sysOnWarningContainer","sysErrorContainer","sysOnErrorContainer","iconName","IconComponent","resolveIcon","size","iconPx","strokeWidth","iconSW","SIZE_MAP","View","styles","chip","backgroundColor","justifyContent","alignSelf","color","BodyText","numberOfLines","StyleSheet","create","flexDirection","alignItems","borderRadius","paddingHorizontal","paddingVertical","gap","height"],"mappings":";;;;+BAgCgBA;;;eAAAA;;;;8DAhCE;6BAEqC;uBAEF;uBAC5B;0BACA;;;;;;AAezB,MAAMC,gBAAqD;IACzDC,SAAS;IACTC,OAAO;AACT;AAEA,MAAMC,UAAyE;IAC7EC,MAAM;IACNC,QAAQ;IACRC,OAAO;AACT;AAEO,SAASP,WAAW,EACzBQ,KAAK,EACLC,UAAU,SAAS,EACnBC,IAAI,EACJC,QAAQ,QAAQ,EAChBC,YAAY,KAAK,EACjBC,KAAK,EACW;IAChB,MAAM,EAAEC,YAAYC,EAAE,EAAE,GAAGC,IAAAA,eAAQ;IAEnC,MAAMC,SACJR,YAAY,YACR;QACES,IAAIH,GAAGI,MAAM,CAACjB,OAAO,CAACkB,mBAAmB;QACzCC,MAAMN,GAAGI,MAAM,CAACjB,OAAO,CAACoB,qBAAqB;IAC/C,IACA;QACEJ,IAAIH,GAAGZ,KAAK,CAACoB,iBAAiB;QAC9BF,MAAMN,GAAGZ,KAAK,CAACqB,mBAAmB;IACpC;IAEN,MAAMC,WAAWf,QAAQT,aAAa,CAACQ,QAAQ;IAC/C,MAAMiB,gBAAgBC,IAAAA,kBAAW,EAACF;IAClC,MAAM,EAAEG,MAAMC,MAAM,EAAEC,aAAaC,MAAM,EAAE,GAAGC,eAAQ,CAAC,QAAQ;IAE/D,qBACE,sBAACC,iBAAI;QACHpB,OAAO;YACLqB,OAAOC,IAAI;YACX;gBACEC,iBAAiBnB,OAAOC,EAAE;gBAC1BmB,gBAAgBjC,OAAO,CAACO,MAAM;gBAC9B2B,WAAW1B,YAAa,YAAuB;YACjD;YACAC;SACD;;YAEAa,+BACC,qBAACA;gBAAcE,MAAMC;gBAAQC,aAAaC;gBAAQQ,OAAOtB,OAAOI,IAAI;;0BAEtE,qBAACmB,kBAAQ;gBAAC/B,SAAQ;gBAAc8B,OAAOtB,OAAOI,IAAI;gBAAEoB,eAAe;0BAChEjC;;;;AAIT;AAEA,MAAM0B,SAASQ,uBAAU,CAACC,MAAM,CAAC;IAC/BR,MAAM;QACJS,eAAe;QACfC,YAAY;QACZC,cAAc;QACdC,mBAAmB;QACnBC,iBAAiB;QACjBC,KAAK;QACLC,QAAQ;IACV;AACF"}
@@ -1,22 +1,9 @@
1
- import type { IconName, IconProps } from './types';
1
+ import type { LucideIcon } from 'lucide-react-native';
2
2
  export type { IconProps, IconSize, IconName } from './types';
3
- export { UserRoundIcon } from './UserRoundIcon';
4
- export { GlobeIcon } from './GlobeIcon';
5
- export { HandshakeIcon } from './HandshakeIcon';
6
- export { HeartHandshakeIcon } from './HeartHandshakeIcon';
7
- export { AtomIcon } from './AtomIcon';
8
- export { HazeIcon } from './HazeIcon';
9
- export { HourglassIcon } from './HourglassIcon';
10
- export { GraduationCapIcon } from './GraduationCapIcon';
11
- export { HandHeartIcon } from './HandHeartIcon';
12
- export { IdCardIcon } from './IdCardIcon';
13
- export { MessageCirclePlusIcon } from './MessageCirclePlusIcon';
14
- export { StethoscopeIcon } from './StethoscopeIcon';
15
- export { BinocularsIcon } from './BinocularsIcon';
16
- export { FlagIcon } from './FlagIcon';
17
- export { MountainSnowIcon } from './MountainSnowIcon';
18
- export { SnowflakeIcon } from './SnowflakeIcon';
19
- export { FileChartColumnIncreasingIcon } from './FileChartColumnIncreasingIcon';
20
- export { WheatIcon } from './WheatIcon';
21
- type IconComponent = (props: IconProps) => React.JSX.Element;
22
- export declare const ICON_MAP: Record<IconName, IconComponent>;
3
+ export { DEFAULT_ICON_COLOR, SIZE_MAP } from './types';
4
+ /**
5
+ * Resolves an icon name to a Lucide React Native component.
6
+ * Accepts both "StethoscopeIcon" (trailing Icon suffix) and "Stethoscope".
7
+ * Returns undefined if the icon name is not found in lucide-react-native.
8
+ */
9
+ export declare function resolveIcon(name: string): LucideIcon | undefined;