{"version":3,"sources":["../../../../foundation/primitives-native/src/Box.tsx","../../../../foundation/primitives-native/src/Text.tsx","../../src/ShopCard.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n  View,\n  Pressable,\n  Image,\n  ViewStyle,\n  ImageStyle,\n  DimensionValue,\n  AnimatableNumericValue,\n  AccessibilityRole,\n} from \"react-native\";\nimport { BoxProps } from \"@xsolla/xui-primitives-core\";\n\nconst roleToAccessibilityRole: Record<string, AccessibilityRole> = {\n  button: \"button\",\n  link: \"link\",\n  img: \"image\",\n  image: \"image\",\n  summary: \"summary\",\n  switch: \"switch\",\n  checkbox: \"checkbox\",\n  radio: \"radio\",\n  heading: \"header\",\n  text: \"text\",\n  search: \"search\",\n  alert: \"alert\",\n  none: \"none\",\n  presentation: \"none\",\n  progressbar: \"progressbar\",\n  scrollbar: \"scrollbar\",\n  adjustable: \"adjustable\",\n  tab: \"tab\",\n  menu: \"menu\",\n  menuitem: \"menuitem\",\n  list: \"list\",\n  timer: \"timer\",\n};\n\n/** RN ViewStyle.gap is typed as number (Yoga gap), not DimensionValue. */\nconst toGapValue = (gap: number | string | undefined): number | undefined => {\n  if (gap === undefined) return undefined;\n  if (typeof gap === \"number\") return gap;\n  const pxMatch = /^(\\d+(?:\\.\\d+)?)px$/.exec(gap);\n  if (pxMatch) return Number(pxMatch[1]);\n  const asNumber = Number(gap);\n  return Number.isFinite(asNumber) ? asNumber : undefined;\n};\n\nexport const Box: React.FC<BoxProps> = ({\n  children,\n  onPress,\n  onLayout,\n  onMoveShouldSetResponder,\n  onResponderGrant,\n  onResponderMove,\n  onResponderRelease,\n  onResponderTerminate,\n  backgroundColor,\n  borderColor,\n  borderWidth,\n  borderBottomWidth,\n  borderBottomColor,\n  borderTopWidth,\n  borderTopColor,\n  borderLeftWidth,\n  borderLeftColor,\n  borderRightWidth,\n  borderRightColor,\n  borderRadius,\n  borderStyle,\n  height,\n  padding,\n  paddingHorizontal,\n  paddingVertical,\n  margin,\n  marginTop,\n  marginBottom,\n  marginLeft,\n  marginRight,\n  flexDirection,\n  flexWrap,\n  alignItems,\n  justifyContent,\n  alignSelf,\n  position,\n  top,\n  bottom,\n  left,\n  right,\n  width,\n  minWidth,\n  minHeight,\n  maxWidth,\n  maxHeight,\n  flex,\n  flexShrink,\n  gap,\n  overflow,\n  opacity,\n  zIndex,\n  hoverStyle,\n  pressStyle,\n  style,\n  disabled,\n  \"data-testid\": dataTestId,\n  testID,\n  as,\n  src,\n  alt,\n  ...rest\n}) => {\n  const getContainerStyle = (pressed?: boolean): ViewStyle => ({\n    backgroundColor:\n      pressed && pressStyle?.backgroundColor\n        ? pressStyle.backgroundColor\n        : backgroundColor,\n    borderColor,\n    borderWidth,\n    borderBottomWidth,\n    borderBottomColor,\n    borderTopWidth,\n    borderTopColor,\n    borderLeftWidth,\n    borderLeftColor,\n    borderRightWidth,\n    borderRightColor,\n    borderRadius: borderRadius as AnimatableNumericValue,\n    borderStyle: borderStyle as ViewStyle[\"borderStyle\"],\n    overflow,\n    opacity: opacity ?? (disabled ? 0.5 : undefined),\n    zIndex,\n    height: height as DimensionValue,\n    width: width as DimensionValue,\n    minWidth: minWidth as DimensionValue,\n    minHeight: minHeight as DimensionValue,\n    maxWidth: maxWidth as DimensionValue,\n    maxHeight: maxHeight as DimensionValue,\n    padding: padding as DimensionValue,\n    paddingHorizontal: paddingHorizontal as DimensionValue,\n    paddingVertical: paddingVertical as DimensionValue,\n    margin: margin as DimensionValue,\n    marginTop: marginTop as DimensionValue,\n    marginBottom: marginBottom as DimensionValue,\n    marginLeft: marginLeft as DimensionValue,\n    marginRight: marginRight as DimensionValue,\n    flexDirection,\n    flexWrap,\n    alignItems,\n    justifyContent,\n    alignSelf,\n    position: position as ViewStyle[\"position\"],\n    top: top as DimensionValue,\n    bottom: bottom as DimensionValue,\n    left: left as DimensionValue,\n    right: right as DimensionValue,\n    flex,\n    flexShrink,\n    gap: toGapValue(gap),\n    ...(style as ViewStyle),\n  });\n\n  const finalTestID = dataTestId || testID;\n\n  // Map web a11y props; drop the rest of the web-only attributes before\n  // spreading onto RN hosts (unknown props warn at runtime).\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const {\n    role,\n    tabIndex,\n    onKeyDown,\n    onKeyUp,\n    \"aria-label\": ariaLabel,\n    \"aria-labelledby\": _ariaLabelledBy,\n    \"aria-current\": _ariaCurrent,\n    \"aria-disabled\": ariaDisabled,\n    \"aria-live\": ariaLive,\n    \"aria-busy\": ariaBusy,\n    className,\n    \"data-testid\": _dataTestId,\n    cursor: _cursor,\n    type: _type,\n    ...nativeRest\n  } = rest as Record<string, unknown>;\n\n  const accessibilityRole =\n    (typeof role === \"string\" && roleToAccessibilityRole[role]) ||\n    (as === \"button\" ? \"button\" : undefined);\n  const isDisabled = Boolean(disabled || ariaDisabled);\n  const accessibilityState = {\n    disabled: isDisabled || undefined,\n    busy: Boolean(ariaBusy) || undefined,\n  };\n  const accessibilityLiveRegion =\n    ariaLive === \"polite\" || ariaLive === \"assertive\" ? ariaLive : undefined;\n\n  // Handle as=\"img\" for React Native\n  if (as === \"img\" && src) {\n    const imageStyle: ImageStyle = {\n      width: width as DimensionValue,\n      height: height as DimensionValue,\n      borderRadius: borderRadius as number,\n      position: position as ImageStyle[\"position\"],\n      top: top as DimensionValue,\n      bottom: bottom as DimensionValue,\n      left: left as DimensionValue,\n      right: right as DimensionValue,\n      ...(style as ImageStyle),\n    };\n\n    return (\n      <Image\n        source={{ uri: src }}\n        style={imageStyle}\n        testID={finalTestID}\n        accessibilityLabel={typeof ariaLabel === \"string\" ? ariaLabel : alt}\n        resizeMode=\"cover\"\n        {...nativeRest}\n      />\n    );\n  }\n\n  // Prefer Pressable whenever the node is interactive or explicitly a button,\n  // so disabled / aria-disabled controls stay in the a11y tree as buttons.\n  if (onPress || as === \"button\") {\n    return (\n      <Pressable\n        onPress={!isDisabled && onPress ? onPress : undefined}\n        disabled={isDisabled}\n        onLayout={onLayout}\n        onMoveShouldSetResponder={onMoveShouldSetResponder}\n        onResponderGrant={onResponderGrant}\n        onResponderMove={onResponderMove}\n        onResponderRelease={onResponderRelease}\n        onResponderTerminate={onResponderTerminate}\n        style={({ pressed }) => getContainerStyle(pressed)}\n        testID={finalTestID}\n        accessibilityRole={accessibilityRole}\n        accessibilityLabel={\n          typeof ariaLabel === \"string\" ? ariaLabel : undefined\n        }\n        accessibilityState={accessibilityState}\n        accessibilityLiveRegion={accessibilityLiveRegion}\n        {...nativeRest}\n      >\n        {children}\n      </Pressable>\n    );\n  }\n\n  return (\n    <View\n      style={getContainerStyle()}\n      testID={finalTestID}\n      onLayout={onLayout}\n      onMoveShouldSetResponder={onMoveShouldSetResponder}\n      onResponderGrant={onResponderGrant}\n      onResponderMove={onResponderMove}\n      onResponderRelease={onResponderRelease}\n      onResponderTerminate={onResponderTerminate}\n      accessibilityRole={accessibilityRole}\n      accessibilityLabel={typeof ariaLabel === \"string\" ? ariaLabel : undefined}\n      accessibilityState={accessibilityState}\n      accessibilityLiveRegion={accessibilityLiveRegion}\n      {...nativeRest}\n    >\n      {children}\n    </View>\n  );\n};\n","import React from \"react\";\nimport {\n  Text as RNText,\n  TextStyle,\n  AccessibilityRole,\n  StyleSheet,\n} from \"react-native\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\n\nconst roleMap: Record<string, AccessibilityRole> = {\n  alert: \"alert\",\n  heading: \"header\",\n  button: \"button\",\n  link: \"link\",\n  text: \"text\",\n};\n\nconst parseNumericValue = (\n  value: string | number | undefined\n): number | undefined => {\n  if (value === undefined) return undefined;\n  if (typeof value === \"number\") return value;\n  const parsed = parseFloat(value);\n  return isNaN(parsed) ? undefined : parsed;\n};\n\nexport const Text: React.FC<TextProps> = ({\n  children,\n  color,\n  fontSize,\n  fontWeight,\n  fontFamily,\n  textAlign,\n  lineHeight,\n  numberOfLines,\n  id,\n  role,\n  testID,\n  \"data-testid\": dataTestId,\n  style: styleProp,\n  ...props\n}) => {\n  let resolvedFontFamily = fontFamily\n    ? fontFamily.split(\",\")[0].replace(/['\"]/g, \"\").trim()\n    : undefined;\n\n  if (\n    resolvedFontFamily === \"Pilat Wide\" ||\n    resolvedFontFamily === \"Pilat Wide Bold\" ||\n    resolvedFontFamily === \"Aktiv Grotesk\"\n  ) {\n    resolvedFontFamily = undefined;\n  }\n\n  const incomingStyle = StyleSheet.flatten(styleProp) as TextStyle | undefined;\n\n  const baseStyle: TextStyle = {\n    color: color ?? incomingStyle?.color,\n    fontSize: typeof fontSize === \"number\" ? fontSize : undefined,\n    fontWeight: fontWeight as TextStyle[\"fontWeight\"],\n    fontFamily: resolvedFontFamily,\n    textDecorationLine: props.textDecoration as TextStyle[\"textDecorationLine\"],\n    textAlign: textAlign ?? incomingStyle?.textAlign,\n    lineHeight: parseNumericValue(lineHeight ?? incomingStyle?.lineHeight),\n    marginTop: parseNumericValue(\n      incomingStyle?.marginTop as number | string | undefined\n    ),\n    marginBottom: parseNumericValue(\n      incomingStyle?.marginBottom as number | string | undefined\n    ),\n  };\n\n  const accessibilityRole = role ? roleMap[role] : undefined;\n\n  return (\n    <RNText\n      style={baseStyle}\n      numberOfLines={numberOfLines}\n      testID={dataTestId || testID || id}\n      accessibilityRole={accessibilityRole}\n    >\n      {children}\n    </RNText>\n  );\n};\n","import React from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme } from \"@xsolla/xui-core\";\nimport type {\n  ShopCardPlatform,\n  ShopCardProps,\n  ShopCardStatus,\n  ShopCardTagData,\n} from \"./types\";\n\nconst sizeConfig: Record<\n  ShopCardPlatform,\n  {\n    width: number;\n    minWidth: number;\n    paddingTop: number;\n    paddingX: number;\n    paddingBottom: number;\n    imageSize: number;\n    imageAreaHeight: number;\n    titleFontSize: number;\n    titleLineHeight: number;\n    buttonHeight: number;\n  }\n> = {\n  mobile: {\n    width: 170,\n    minWidth: 140,\n    paddingTop: 36,\n    paddingX: 8,\n    paddingBottom: 8,\n    imageSize: 120,\n    imageAreaHeight: 122,\n    titleFontSize: 14,\n    titleLineHeight: 18,\n    buttonHeight: 32,\n  },\n  desktop: {\n    width: 200,\n    minWidth: 180,\n    paddingTop: 40,\n    paddingX: 16,\n    paddingBottom: 16,\n    imageSize: 120,\n    imageAreaHeight: 136,\n    titleFontSize: 16,\n    titleLineHeight: 20,\n    buttonHeight: 40,\n  },\n};\n\nconst getDefaultActionLabel = (status: ShopCardStatus) => {\n  if (status === \"free\") return \"Claim for free\";\n  if (status === \"redeem\") return \"Redeem\";\n  if (status === \"owned\") return \"Owned\";\n  return \"$2.50\";\n};\n\nconst Tag: React.FC<{\n  tag: ShopCardTagData;\n  tone: \"primary\" | \"success\";\n  theme: ReturnType<typeof useResolvedTheme>[\"theme\"];\n}> = ({ tag, tone, theme }) => {\n  const isSuccess = tone === \"success\";\n\n  return (\n    <Box\n      alignItems=\"center\"\n      justifyContent=\"center\"\n      paddingHorizontal={6}\n      paddingVertical={2}\n      borderRadius={4}\n      borderWidth={1}\n      borderColor={\n        isSuccess ? theme.colors.border.success : theme.colors.border.secondary\n      }\n      backgroundColor={\n        isSuccess\n          ? theme.colors.background.success.primary\n          : theme.colors.overlay.mono\n      }\n    >\n      <Text\n        color={\n          isSuccess\n            ? theme.colors.content.on.success\n            : theme.colors.content.primary\n        }\n        fontFamily={theme.fonts.body}\n        fontSize={12}\n        lineHeight={14}\n        fontWeight=\"500\"\n        numberOfLines={1}\n      >\n        {tag.label}\n      </Text>\n    </Box>\n  );\n};\n\nexport const ShopCard: React.FC<ShopCardProps> = ({\n  title,\n  imageSrc,\n  imageAlt = \"\",\n  imageFit = \"contain\",\n  imageVisible = true,\n  imageFallback,\n  glowSrc,\n  glowVisible = true,\n  leftTags = [],\n  rightTags = [],\n  status = \"default\",\n  state = \"default\",\n  platform = \"mobile\",\n  actionLabel,\n  actionSubLabel,\n  onActionPress,\n  onPress,\n  disabled,\n  \"aria-label\": ariaLabel,\n  testID,\n  themeMode,\n  themeProductContext = \"b2c\",\n}) => {\n  const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n  const config = sizeConfig[platform];\n  const isOwned = status === \"owned\";\n  const isDisabled = disabled || state === \"disabled\" || isOwned;\n  const isInteractive = Boolean(onPress) && !isDisabled;\n  const isActionInteractive = Boolean(onActionPress) && !isDisabled;\n  const resolvedActionLabel = actionLabel ?? getDefaultActionLabel(status);\n  const cardBackground =\n    state === \"press\"\n      ? theme.colors.overlay.brand || theme.colors.overlay.mono\n      : theme.colors.overlay.mono;\n  const actionBackground = isDisabled\n    ? theme.colors.overlay.mono\n    : theme.colors.background.brand.primary;\n\n  return (\n    <Box\n      width={config.width}\n      minWidth={config.minWidth}\n      flexDirection=\"column\"\n      alignItems=\"center\"\n      paddingTop={config.paddingTop}\n      borderRadius={8}\n      borderWidth={1}\n      borderStyle=\"solid\"\n      borderColor={theme.colors.border.secondary}\n      backgroundColor={cardBackground}\n      position=\"relative\"\n      overflow=\"hidden\"\n      cursor={isInteractive ? \"pointer\" : undefined}\n      role={isInteractive ? \"button\" : \"group\"}\n      aria-label={ariaLabel}\n      aria-disabled={isDisabled || undefined}\n      tabIndex={isInteractive ? 0 : undefined}\n      opacity={isDisabled ? 0.72 : 1}\n      onPress={isInteractive ? onPress : undefined}\n      hoverStyle={\n        isInteractive && state === \"default\"\n          ? { backgroundColor: theme.colors.background.secondary }\n          : undefined\n      }\n      pressStyle={{ backgroundColor: theme.colors.overlay.brand }}\n      testID={testID || \"shop-card\"}\n    >\n      {leftTags.length > 0 && (\n        <Box\n          position=\"absolute\"\n          top={7}\n          left={platform === \"desktop\" ? 15 : 7}\n          zIndex={4}\n          gap={4}\n          alignItems=\"flex-start\"\n        >\n          {leftTags.map((tag, index) => (\n            <Tag\n              key={`${String(tag.label)}-${index}`}\n              tag={tag}\n              tone={tag.tone || \"success\"}\n              theme={theme}\n            />\n          ))}\n        </Box>\n      )}\n      {rightTags.length > 0 && (\n        <Box\n          position=\"absolute\"\n          top={7}\n          right={platform === \"desktop\" ? 15 : 7}\n          zIndex={5}\n          gap={4}\n          alignItems=\"flex-end\"\n        >\n          {rightTags.map((tag, index) => (\n            <Tag\n              key={`${String(tag.label)}-${index}`}\n              tag={tag}\n              tone={tag.tone || \"primary\"}\n              theme={theme}\n            />\n          ))}\n        </Box>\n      )}\n      <Box\n        width=\"100%\"\n        height={config.imageAreaHeight}\n        position=\"relative\"\n        alignItems=\"center\"\n        justifyContent=\"center\"\n        paddingHorizontal={24}\n      >\n        {imageVisible &&\n          imageSrc &&\n          glowVisible &&\n          (glowSrc ? (\n            <Box\n              as=\"img\"\n              src={glowSrc}\n              alt=\"\"\n              position=\"absolute\"\n              width={160}\n              height={160}\n              style={{ objectFit: \"contain\" }}\n            />\n          ) : (\n            <Box\n              position=\"absolute\"\n              width={160}\n              height={160}\n              borderRadius={999}\n              backgroundColor={theme.colors.background.brand.primary}\n              opacity={0.12}\n            />\n          ))}\n        {imageVisible && imageSrc ? (\n          <Box\n            as=\"img\"\n            src={imageSrc}\n            alt={imageAlt}\n            width={config.imageSize}\n            height={config.imageSize}\n            style={{\n              objectFit: imageFit,\n              pointerEvents: \"none\",\n            }}\n          />\n        ) : (\n          <Box\n            width={48}\n            height={48}\n            alignItems=\"center\"\n            justifyContent=\"center\"\n            opacity={0.72}\n          >\n            {imageFallback}\n          </Box>\n        )}\n      </Box>\n      <Box\n        width=\"100%\"\n        minHeight={20}\n        paddingHorizontal={config.paddingX}\n        paddingVertical={platform === \"desktop\" ? 12 : 8}\n      >\n        <Text\n          color={theme.colors.content.primary}\n          fontFamily={theme.fonts.body}\n          fontSize={config.titleFontSize}\n          lineHeight={config.titleLineHeight}\n          fontWeight=\"500\"\n          numberOfLines={1}\n          style={{\n            overflow: \"hidden\",\n            textOverflow: \"ellipsis\",\n            whiteSpace: \"nowrap\",\n          }}\n        >\n          {title}\n        </Text>\n      </Box>\n      <Box\n        width=\"100%\"\n        paddingHorizontal={config.paddingX}\n        paddingBottom={config.paddingBottom}\n      >\n        <Box\n          width=\"100%\"\n          height={config.buttonHeight}\n          flexDirection=\"row\"\n          alignItems=\"center\"\n          justifyContent=\"center\"\n          gap={4}\n          borderRadius={4}\n          backgroundColor={actionBackground}\n          opacity={isDisabled ? 0.48 : 1}\n          cursor={isActionInteractive ? \"pointer\" : undefined}\n          role={isActionInteractive ? \"button\" : undefined}\n          aria-label={\n            isActionInteractive\n              ? `Buy ${typeof title === \"string\" ? title : \"item\"}`\n              : undefined\n          }\n          aria-disabled={isDisabled || undefined}\n          onPress={isActionInteractive ? onActionPress : undefined}\n          pressStyle={{\n            backgroundColor: theme.colors.background.brand.secondary,\n          }}\n          testID=\"shop-card-action\"\n        >\n          <Text\n            color={\n              isDisabled\n                ? theme.colors.content.secondary\n                : theme.colors.content.on.brand\n            }\n            fontFamily={theme.fonts.body}\n            fontSize={12}\n            lineHeight={14}\n            fontWeight=\"500\"\n            numberOfLines={1}\n          >\n            {resolvedActionLabel}\n          </Text>\n          {actionSubLabel && (\n            <Text\n              color={\n                isDisabled\n                  ? theme.colors.content.secondary\n                  : theme.colors.content.on.brand\n              }\n              fontFamily={theme.fonts.body}\n              fontSize={12}\n              lineHeight={14}\n              fontWeight=\"500\"\n              numberOfLines={1}\n              style={{ opacity: 0.72 }}\n            >\n              {actionSubLabel}\n            </Text>\n          )}\n        </Box>\n      </Box>\n    </Box>\n  );\n};\n"],"mappings":"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","names":["jsx","jsx"]}