{"version":3,"sources":["../../src/CheckboxTagGroup.tsx","../../../../foundation/primitives-native/src/Box.tsx","../../../../foundation/primitives-native/src/Text.tsx"],"sourcesContent":["import React, { useState } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, useId } from \"@xsolla/xui-core\";\nimport type { CheckboxTagGroupProps } from \"./types\";\n\n// Shape of the design-system control palette tokens (mirrors the Button\n// component). The JSON tokens carry more fields than the public theme type\n// exposes, so `theme.colors.control` is read via a narrow assertion below.\ninterface ControlVariantStyles {\n  bg: string;\n  bgHover: string;\n  bgPress: string;\n  bgDisable?: string;\n  border: string;\n  borderHover: string;\n  borderPress: string;\n  borderDisable?: string;\n}\n\ninterface ControlTextStyles {\n  primary: string;\n  secondary: string;\n  tertiary: string;\n  ghost: string;\n  disable: string;\n}\n\nexport const CheckboxTagGroup: React.FC<CheckboxTagGroupProps> = ({\n  options,\n  value,\n  defaultValue = [],\n  onChange,\n  size = \"md\",\n  variant = \"secondary\",\n  tone = \"brand\",\n  selectionMode = \"multiple\",\n  disabled = false,\n  errorMessage,\n  \"aria-label\": ariaLabel,\n  testID,\n  themeMode,\n  themeProductContext,\n}) => {\n  const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n  const sizeConfig = theme.sizing.checkboxTagGroup(size);\n  const fieldGap = theme.sizing.input(size).fieldGap;\n  const sizeStyles = theme.sizing.input(size);\n  const errorId = useId();\n\n  const [selectedValues, setSelectedValues] = useState<string[]>(defaultValue);\n  const currentValues = value !== undefined ? value : selectedValues;\n  const hasError = Boolean(errorMessage);\n\n  // Resolve the design-system control palette for the chosen tone. The\n  // `primary` variant fills selected tags with these tone-colored tokens; the\n  // `secondary` variant keeps the original low-emphasis monotone look and\n  // ignores `tone`. Guarded with legacy fallbacks so a missing tone degrades\n  // gracefully instead of throwing (mirrors Button's defensive resolution).\n  const controlTone = theme?.colors?.control?.[tone] as unknown as\n    | (Record<string, ControlVariantStyles> & { text: ControlTextStyles })\n    | undefined;\n  const controlPrimary = controlTone?.primary;\n  const controlPrimaryText = controlTone?.text?.primary;\n  const isPrimary = variant === \"primary\";\n\n  // Selected-tag appearance. `secondary` => legacy monotone tokens (unchanged).\n  // `primary` => solid, tone-colored fill from the control palette.\n  const activeBg = isPrimary\n    ? (controlPrimary?.bg ?? theme.colors.background.primary)\n    : theme.colors.background.primary;\n  const activeBorder = isPrimary\n    ? (controlPrimary?.border ?? theme.colors.border.secondary)\n    : theme.colors.border.secondary;\n  const activeText = isPrimary\n    ? (controlPrimaryText ?? theme.colors.content.primary)\n    : theme.colors.content.primary;\n  const activeHoverStyle =\n    isPrimary && controlPrimary\n      ? {\n          backgroundColor: controlPrimary.bgHover ?? activeBg,\n          borderColor: controlPrimary.borderHover ?? activeBorder,\n        }\n      : undefined;\n\n  const isSingle = selectionMode === \"single\";\n  const groupRole = isSingle ? \"radiogroup\" : \"group\";\n  const itemRole = isSingle ? \"radio\" : \"checkbox\";\n\n  const handleToggle = (optionValue: string) => {\n    if (disabled) return;\n\n    const isSelected = currentValues.includes(optionValue);\n    let newValues: string[];\n    if (isSingle) {\n      // Single mode: selecting a new tag replaces the current selection;\n      // clicking the active tag clears it (toggle off).\n      newValues = isSelected ? [] : [optionValue];\n    } else {\n      newValues = isSelected\n        ? currentValues.filter((v) => v !== optionValue)\n        : [...currentValues, optionValue];\n    }\n\n    if (value === undefined) {\n      setSelectedValues(newValues);\n    }\n\n    onChange?.(newValues);\n  };\n\n  return (\n    <Box flexDirection=\"column\" gap={fieldGap}>\n      <Box\n        role={groupRole}\n        aria-label={ariaLabel}\n        flexDirection=\"row\"\n        flexWrap=\"wrap\"\n        alignItems=\"center\"\n        gap={sizeConfig.gap}\n      >\n        {options.map((option) => {\n          const isActive = currentValues.includes(option.value);\n          const isDisabled = disabled || option.disabled;\n\n          const bgColor = isDisabled\n            ? \"transparent\"\n            : isActive\n              ? activeBg\n              : theme.colors.overlay.mono;\n\n          const borderColor = isDisabled\n            ? \"transparent\"\n            : isActive\n              ? activeBorder\n              : theme.colors.border.secondary;\n\n          const textColor = isDisabled\n            ? theme.colors.content.tertiary\n            : isActive\n              ? activeText\n              : theme.colors.content.primary;\n\n          return (\n            <Box\n              testID={testID}\n              key={option.value}\n              as=\"button\"\n              role={itemRole}\n              aria-checked={isActive}\n              aria-disabled={isDisabled}\n              aria-describedby={hasError ? errorId : undefined}\n              tabIndex={isDisabled ? -1 : 0}\n              onPress={() => !isDisabled && handleToggle(option.value)}\n              backgroundColor={bgColor}\n              borderWidth={1}\n              borderColor={borderColor}\n              borderStyle=\"solid\"\n              borderRadius={sizeConfig.borderRadius}\n              paddingHorizontal={sizeConfig.paddingHorizontal}\n              paddingVertical={sizeConfig.paddingVertical}\n              flexDirection=\"row\"\n              alignItems=\"center\"\n              justifyContent=\"center\"\n              gap={sizeConfig.gap}\n              hoverStyle={\n                isDisabled\n                  ? undefined\n                  : isActive\n                    ? activeHoverStyle\n                    : {\n                        backgroundColor: theme.colors.overlay.mono,\n                        borderColor: \"transparent\",\n                      }\n              }\n              style={{\n                cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n                flexShrink: 0,\n              }}\n            >\n              <Text\n                color={textColor}\n                fontSize={sizeConfig.fontSize}\n                fontWeight=\"400\"\n                textAlign=\"center\"\n                style={{\n                  lineHeight: `${sizeConfig.lineHeight}px`,\n                }}\n              >\n                {option.label}\n              </Text>\n            </Box>\n          );\n        })}\n      </Box>\n\n      {errorMessage && (\n        <Text\n          id={errorId}\n          role=\"alert\"\n          color={theme.colors.content.alert.primary}\n          fontSize={sizeConfig.fontSize - 2}\n          style={{ lineHeight: sizeStyles.lineHeight + \"px\" }}\n        >\n          {errorMessage}\n        </Text>\n      )}\n    </Box>\n  );\n};\n\nCheckboxTagGroup.displayName = \"CheckboxTagGroup\";\n","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"],"mappings":"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","names":["jsx","jsx"]}