@xsolla/xui-tag-label 0.218.1 → 0.219.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +108 -17
- package/native/index.d.mts +36 -1
- package/native/index.d.ts +36 -1
- package/native/index.js +81 -58
- package/native/index.js.map +1 -1
- package/native/index.mjs +81 -58
- package/native/index.mjs.map +1 -1
- package/package.json +4 -4
- package/web/index.d.mts +36 -1
- package/web/index.d.ts +36 -1
- package/web/index.js +84 -60
- package/web/index.js.map +1 -1
- package/web/index.mjs +84 -60
- package/web/index.mjs.map +1 -1
package/native/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.tsx","../../../../foundation/primitives-native/src/Box.tsx","../../../../foundation/primitives-native/src/Text.tsx","../../../../foundation/primitives-native/src/Icon.tsx","../../src/TagLabel.tsx"],"sourcesContent":["export * from \"./TagLabel\";\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","import React from \"react\";\nimport { View, ViewStyle } from \"react-native\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Icon: React.FC<IconProps> = ({\n children,\n color,\n size,\n testID,\n \"data-testid\": dataTestId,\n}) => {\n const style: ViewStyle = {\n width: typeof size === \"number\" ? size : undefined,\n height: typeof size === \"number\" ? size : undefined,\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n // On native, we try to pass the color down to children (like Text primitives)\n // to mimic the CSS inheritance behavior of the web version.\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n color: child.props.color || color,\n // Also pass size if child seems to be an icon that needs it\n size: child.props.size || size,\n });\n }\n return child;\n });\n\n return (\n <View style={style} testID={dataTestId || testID}>\n {childrenWithProps}\n </View>\n );\n};\n","import React, { type ReactNode } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, Icon } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, type ThemeOverrideProps } from \"@xsolla/xui-core\";\nimport { User, Settings, Info, X } from \"@xsolla/xui-icons\";\n\n// --- Types ---\n\nexport type EntityType = \"item\" | \"product\" | \"account\";\n\nexport type StatusType = \"sale\" | \"maintenance\" | \"inactive\";\n\nexport type SubentityType =\n | \"skin\"\n | \"in-game-item\"\n | \"currency\"\n | \"bundle\"\n | \"lootbox\"\n | \"game-key\"\n | \"discount\"\n | \"coupon\"\n | \"game\"\n | \"sdk\"\n | \"plugin\"\n | \"api\"\n | \"service\"\n | \"tool\"\n | \"webshop\"\n | \"app\"\n | \"launcher\"\n | \"library\"\n | \"engine\"\n | \"user\"\n | \"developer\"\n | \"influencer\"\n | \"publisher\"\n | \"settings\";\n\nexport interface TagLabelProps extends ThemeOverrideProps {\n /** Main entity type */\n entityType?: EntityType;\n /** Detailed sub-category */\n subentityType?: SubentityType;\n /** Custom icon for entity/subentity if needed */\n icon?: ReactNode;\n /** ID series (e.g. \"XLA\") */\n series?: string;\n /** ID number (e.g. \"-001-001\") */\n number?: string;\n /** Item label/name */\n label?: string;\n /** Rarity icon or indicator */\n rarity?: ReactNode;\n /** Status indicator */\n status?: StatusType;\n /** Whether to show the compact version */\n compact?: boolean;\n /** Custom content slot */\n children?: ReactNode;\n /** Custom styles */\n style?: any;\n testID?: string;\n}\n\n// --- Internal Segments ---\n\nconst SEGMENT_HEIGHT = 24;\n\nconst TagLabelEntitySegment: React.FC<{\n type: EntityType;\n compact?: boolean;\n icon?: ReactNode;\n theme: any;\n}> = ({ type, compact, icon, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.[type];\n\n if (!colors) return null;\n\n // Generic icon placeholders for now based on Figma intent\n const renderIcon = () => {\n if (icon) return icon;\n switch (type) {\n case \"item\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Cube placeholder\n case \"product\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Chip placeholder\n case \"account\":\n return <User size=\"100%\" />;\n }\n };\n\n if (compact) {\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={16} color={colors.textCompact || colors.text}>\n {renderIcon()}\n </Icon>\n </Box>\n );\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingLeft={2}\n paddingRight={4}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={2}\n >\n <Icon size={20} color={colors.text}>\n {renderIcon()}\n </Icon>\n <Text\n color={colors.text}\n fontSize={14}\n fontWeight=\"500\"\n whiteSpace=\"nowrap\"\n >\n {type.charAt(0).toUpperCase() + type.slice(1)}\n </Text>\n </Box>\n );\n};\n\nconst TagLabelSubentitySegment: React.FC<{\n type: SubentityType;\n theme: any;\n}> = ({ type, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.subentity;\n\n if (!colors || !type || typeof type !== \"string\") return null;\n\n // Icon mapping based on Figma\n const renderIcon = () => {\n switch (type) {\n case \"skin\":\n case \"in-game-item\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Pencil placeholder\n case \"game\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Controller placeholder\n case \"user\":\n return <User size=\"100%\" />;\n case \"settings\":\n return <Settings size=\"100%\" />;\n // ... more icons as needed\n default:\n return <Info size=\"100%\" />;\n }\n };\n\n const label = type\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingLeft={2}\n paddingRight={4}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={2}\n >\n <Icon size={20} color={colors.text}>\n {renderIcon()}\n </Icon>\n <Text\n color={colors.text}\n fontSize={14}\n fontWeight=\"500\"\n whiteSpace=\"nowrap\"\n >\n {label}\n </Text>\n </Box>\n );\n};\n\nconst TagLabelIdSegment: React.FC<{\n series?: string;\n number?: string;\n compact?: boolean;\n theme: any;\n}> = ({ series, number, compact, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.id;\n\n if (!colors) return null;\n\n if (compact) {\n return (\n <Box\n height={SEGMENT_HEIGHT}\n paddingLeft={4}\n paddingRight={6}\n flexDirection=\"row\"\n alignItems=\"center\"\n >\n {series && (\n <Text color={colors.textCompact} fontSize={14} fontWeight=\"400\">\n {series}\n </Text>\n )}\n {number && (\n <Text color={colors.textCompact} fontSize={14} fontWeight=\"400\">\n {number}\n </Text>\n )}\n </Box>\n );\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingLeft={4}\n paddingRight={6}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={2}\n >\n {series && (\n <Box\n backgroundColor={colors.bgSeries}\n height={16}\n paddingHorizontal={2}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Text color={colors.textSeries} fontSize={14} fontWeight=\"500\">\n {series}\n </Text>\n </Box>\n )}\n {number && (\n <Text color={colors.textNumber} fontSize={14} fontWeight=\"500\">\n {number}\n </Text>\n )}\n </Box>\n );\n};\n\nconst TagLabelNameSegment: React.FC<{ label: string; theme: any }> = ({\n label,\n theme,\n}) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.name;\n\n if (!colors) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingHorizontal={4}\n justifyContent=\"center\"\n >\n <Text\n color={colors.text}\n fontSize={14}\n fontWeight=\"400\"\n whiteSpace=\"nowrap\"\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {label}\n </Text>\n </Box>\n );\n};\n\nconst TagLabelRaritySegment: React.FC<{ rarity: ReactNode; theme: any }> = ({\n rarity,\n theme,\n}) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.rarity;\n\n if (!colors) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingHorizontal={6}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={18} color={colors.text}>\n {rarity || <Info size=\"100%\" />}\n </Icon>\n </Box>\n );\n};\n\nconst TagLabelStatusSegment: React.FC<{ type: StatusType; theme: any }> = ({\n type,\n theme,\n}) => {\n let bg;\n let icon;\n\n if (!theme?.colors?.background) return null;\n\n switch (type) {\n case \"sale\":\n bg = theme.colors.background.warning?.primary;\n icon = <Info size=\"100%\" />; // Info placeholder\n break;\n case \"maintenance\":\n bg = theme.colors.background.success?.primary;\n icon = <Settings size=\"100%\" />;\n break;\n case \"inactive\":\n bg = theme.colors.background.alert?.primary;\n icon = <X size=\"100%\" />;\n break;\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n backgroundColor={bg}\n paddingHorizontal={2}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={20} color=\"black\">\n {icon}\n </Icon>\n </Box>\n );\n};\n\nconst TagLabelCustomSlot: React.FC<{ children: ReactNode; theme: any }> = ({\n children,\n theme,\n}) => {\n if (!theme?.colors?.background) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={theme.colors.background.secondary}\n paddingHorizontal={6}\n justifyContent=\"center\"\n >\n {typeof children === \"string\" ? (\n <Text\n color={theme?.colors?.content?.primary}\n fontSize={14}\n fontWeight=\"500\"\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Box>\n );\n};\n\n// --- Main Component ---\n\nexport const TagLabel: React.FC<TagLabelProps> = ({\n entityType,\n subentityType,\n icon,\n series,\n number,\n label,\n rarity,\n status,\n compact = false,\n children,\n style,\n testID,\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n return (\n <Box\n testID={testID}\n flexDirection=\"row\"\n alignItems=\"center\"\n style={{\n overflow: \"hidden\",\n borderRadius: theme.shape.tagLabel.borderRadius,\n ...style,\n }}\n >\n {entityType && (\n <TagLabelEntitySegment\n type={entityType}\n compact={compact}\n icon={icon}\n theme={theme}\n />\n )}\n\n {!compact && subentityType && (\n <TagLabelSubentitySegment type={subentityType} theme={theme} />\n )}\n\n {(series || number) && (\n <TagLabelIdSegment\n series={series}\n number={number}\n compact={compact}\n theme={theme}\n />\n )}\n\n {!compact && label && <TagLabelNameSegment label={label} theme={theme} />}\n\n {!compact && rarity && (\n <TagLabelRaritySegment rarity={rarity} theme={theme} />\n )}\n\n {!compact && status && (\n <TagLabelStatusSegment type={status} theme={theme} />\n )}\n\n {!compact && children && (\n <TagLabelCustomSlot theme={theme}>{children}</TagLabelCustomSlot>\n )}\n </Box>\n );\n};\n"],"mappings":"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","names":["import_react_native","import_jsx_runtime","RNText","import_react_native","import_jsx_runtime","React","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.tsx","../../../../foundation/primitives-native/src/Box.tsx","../../../../foundation/primitives-native/src/Text.tsx","../../../../foundation/primitives-native/src/Icon.tsx","../../src/TagLabel.tsx"],"sourcesContent":["export * from \"./TagLabel\";\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\n/**\n * Yoga has no inline formatting context, so RN's ViewStyle.display only\n * accepts \"flex\" | \"none\". Every inline-ish web value collapses to a plain\n * flex container — the box already fills only its content on native, which is\n * what those callers wanted on web anyway. Returning undefined (rather than\n * \"flex\") leaves RN's own default in place.\n */\nconst toNativeDisplay = (\n display: BoxProps[\"display\"]\n): ViewStyle[\"display\"] => (display === \"none\" ? \"none\" : undefined);\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 display,\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 display: toNativeDisplay(display),\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\";\nimport { View, ViewStyle } from \"react-native\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Icon: React.FC<IconProps> = ({\n children,\n color,\n size,\n testID,\n \"data-testid\": dataTestId,\n}) => {\n const style: ViewStyle = {\n width: typeof size === \"number\" ? size : undefined,\n height: typeof size === \"number\" ? size : undefined,\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n // On native, we try to pass the color down to children (like Text primitives)\n // to mimic the CSS inheritance behavior of the web version.\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n color: child.props.color || color,\n // Also pass size if child seems to be an icon that needs it\n size: child.props.size || size,\n });\n }\n return child;\n });\n\n return (\n <View style={style} testID={dataTestId || testID}>\n {childrenWithProps}\n </View>\n );\n};\n","import React, { type ReactNode } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, Icon } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, type ThemeOverrideProps } from \"@xsolla/xui-core\";\nimport { User, Settings, Info, X } from \"@xsolla/xui-icons\";\n\n// --- Types ---\n\nexport type EntityType = \"item\" | \"product\" | \"account\";\n\nexport type StatusType = \"sale\" | \"maintenance\" | \"inactive\";\n\nexport type SubentityType =\n | \"skin\"\n | \"in-game-item\"\n | \"currency\"\n | \"bundle\"\n | \"lootbox\"\n | \"game-key\"\n | \"discount\"\n | \"coupon\"\n | \"game\"\n | \"sdk\"\n | \"plugin\"\n | \"api\"\n | \"service\"\n | \"tool\"\n | \"webshop\"\n | \"app\"\n | \"launcher\"\n | \"library\"\n | \"engine\"\n | \"user\"\n | \"developer\"\n | \"influencer\"\n | \"publisher\"\n | \"settings\";\n\nexport interface TagLabelProps extends ThemeOverrideProps {\n /** Main entity type */\n entityType?: EntityType;\n /** Detailed sub-category */\n subentityType?: SubentityType;\n /**\n * Custom icon for the entity module.\n *\n * @deprecated Use {@link TagLabelProps.entityIcon} instead. `icon` is kept as\n * an alias for backwards compatibility and will be removed in a future major.\n */\n icon?: ReactNode;\n /**\n * Show the icon of the entity module.\n *\n * @default true\n */\n showEntityIcon?: boolean;\n /**\n * Show the text label of the entity module. Defaults to `!compact`, so\n * `compact` only seeds the default — an explicit value always wins.\n *\n * @default !compact\n */\n showEntityLabel?: boolean;\n /** Custom icon override for the entity module. Takes precedence over `icon`. */\n entityIcon?: ReactNode;\n /**\n * Show the icon of the subentity module.\n *\n * @default true\n */\n showSubentityIcon?: boolean;\n /**\n * Show the text label of the subentity module. Defaults to `!compact`, so\n * `compact` only seeds the default — an explicit value always wins.\n *\n * @default !compact\n */\n showSubentityLabel?: boolean;\n /** Custom icon override for the subentity module. */\n subentityIcon?: ReactNode;\n /** ID series (e.g. \"XLA\") */\n series?: string;\n /** ID number (e.g. \"-001-001\") */\n number?: string;\n /** Item label/name */\n label?: string;\n /** Rarity icon or indicator */\n rarity?: ReactNode;\n /** Status indicator */\n status?: StatusType;\n /** Whether to show the compact version */\n compact?: boolean;\n /** Custom content slot */\n children?: ReactNode;\n /** Custom styles */\n style?: any;\n testID?: string;\n}\n\n// --- Internal Segments ---\n\nconst SEGMENT_HEIGHT = 24;\n\ninterface ModuleColors {\n bg?: string;\n text?: string;\n textCompact?: string;\n}\n\n/**\n * Shared chip renderer for the entity and subentity modules.\n *\n * Rendering rules (see XUITSD-101):\n * - icon + label -> full chip: tinted background, icon, text.\n * - icon only -> 24x24 square, no chip background (the legacy compact\n * entity rendering).\n * - label only -> full chip minus the icon; background, padding and\n * typography are unchanged.\n * - neither -> nothing is rendered at all.\n */\nconst TagLabelModuleChip: React.FC<{\n showIcon: boolean;\n showLabel: boolean;\n icon: ReactNode;\n label: string;\n colors: ModuleColors;\n}> = ({ showIcon, showLabel, icon, label, colors }) => {\n if (!showIcon && !showLabel) return null;\n\n if (showIcon && !showLabel) {\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={16} color={colors.textCompact || colors.text}>\n {icon}\n </Icon>\n </Box>\n );\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingLeft={2}\n paddingRight={4}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={2}\n >\n {showIcon && (\n <Icon size={20} color={colors.text}>\n {icon}\n </Icon>\n )}\n <Text\n color={colors.text}\n fontSize={14}\n fontWeight=\"500\"\n whiteSpace=\"nowrap\"\n >\n {label}\n </Text>\n </Box>\n );\n};\n\nconst TagLabelEntitySegment: React.FC<{\n type: EntityType;\n showIcon: boolean;\n showLabel: boolean;\n icon?: ReactNode;\n theme: any;\n}> = ({ type, showIcon, showLabel, icon, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors: ModuleColors | undefined = tagLabel?.[type];\n\n if (!colors) return null;\n\n // Generic icon placeholders for now based on Figma intent\n const renderIcon = () => {\n if (icon) return icon;\n switch (type) {\n case \"item\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Cube placeholder\n case \"product\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Chip placeholder\n case \"account\":\n return <User size=\"100%\" />;\n }\n };\n\n return (\n <TagLabelModuleChip\n showIcon={showIcon}\n showLabel={showLabel}\n icon={renderIcon()}\n label={type.charAt(0).toUpperCase() + type.slice(1)}\n colors={colors}\n />\n );\n};\n\nconst TagLabelSubentitySegment: React.FC<{\n type: SubentityType;\n showIcon: boolean;\n showLabel: boolean;\n icon?: ReactNode;\n theme: any;\n}> = ({ type, showIcon, showLabel, icon, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors: ModuleColors | undefined = tagLabel?.subentity;\n\n if (!colors || !type || typeof type !== \"string\") return null;\n\n // Icon mapping based on Figma\n const renderIcon = () => {\n if (icon) return icon;\n switch (type) {\n case \"skin\":\n case \"in-game-item\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Pencil placeholder\n case \"game\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Controller placeholder\n case \"user\":\n return <User size=\"100%\" />;\n case \"settings\":\n return <Settings size=\"100%\" />;\n // ... more icons as needed\n default:\n return <Info size=\"100%\" />;\n }\n };\n\n const label = type\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n\n return (\n <TagLabelModuleChip\n showIcon={showIcon}\n showLabel={showLabel}\n icon={renderIcon()}\n label={label}\n colors={colors}\n />\n );\n};\n\nconst TagLabelIdSegment: React.FC<{\n series?: string;\n number?: string;\n compact?: boolean;\n theme: any;\n}> = ({ series, number, compact, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.id;\n\n if (!colors) return null;\n\n if (compact) {\n return (\n <Box\n height={SEGMENT_HEIGHT}\n paddingLeft={4}\n paddingRight={6}\n flexDirection=\"row\"\n alignItems=\"center\"\n >\n {series && (\n <Text color={colors.textCompact} fontSize={14} fontWeight=\"400\">\n {series}\n </Text>\n )}\n {number && (\n <Text color={colors.textCompact} fontSize={14} fontWeight=\"400\">\n {number}\n </Text>\n )}\n </Box>\n );\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingLeft={4}\n paddingRight={6}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={2}\n >\n {series && (\n <Box\n backgroundColor={colors.bgSeries}\n height={16}\n paddingHorizontal={2}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Text color={colors.textSeries} fontSize={14} fontWeight=\"500\">\n {series}\n </Text>\n </Box>\n )}\n {number && (\n <Text color={colors.textNumber} fontSize={14} fontWeight=\"500\">\n {number}\n </Text>\n )}\n </Box>\n );\n};\n\nconst TagLabelNameSegment: React.FC<{ label: string; theme: any }> = ({\n label,\n theme,\n}) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.name;\n\n if (!colors) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingHorizontal={4}\n justifyContent=\"center\"\n >\n <Text\n color={colors.text}\n fontSize={14}\n fontWeight=\"400\"\n whiteSpace=\"nowrap\"\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {label}\n </Text>\n </Box>\n );\n};\n\nconst TagLabelRaritySegment: React.FC<{ rarity: ReactNode; theme: any }> = ({\n rarity,\n theme,\n}) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.rarity;\n\n if (!colors) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingHorizontal={6}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={18} color={colors.text}>\n {rarity || <Info size=\"100%\" />}\n </Icon>\n </Box>\n );\n};\n\nconst TagLabelStatusSegment: React.FC<{ type: StatusType; theme: any }> = ({\n type,\n theme,\n}) => {\n let bg;\n let icon;\n\n if (!theme?.colors?.background) return null;\n\n switch (type) {\n case \"sale\":\n bg = theme.colors.background.warning?.primary;\n icon = <Info size=\"100%\" />; // Info placeholder\n break;\n case \"maintenance\":\n bg = theme.colors.background.success?.primary;\n icon = <Settings size=\"100%\" />;\n break;\n case \"inactive\":\n bg = theme.colors.background.alert?.primary;\n icon = <X size=\"100%\" />;\n break;\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n backgroundColor={bg}\n paddingHorizontal={2}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={20} color=\"black\">\n {icon}\n </Icon>\n </Box>\n );\n};\n\nconst TagLabelCustomSlot: React.FC<{ children: ReactNode; theme: any }> = ({\n children,\n theme,\n}) => {\n if (!theme?.colors?.background) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={theme.colors.background.secondary}\n paddingHorizontal={6}\n justifyContent=\"center\"\n >\n {typeof children === \"string\" ? (\n <Text\n color={theme?.colors?.content?.primary}\n fontSize={14}\n fontWeight=\"500\"\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Box>\n );\n};\n\n// --- Main Component ---\n\nexport const TagLabel: React.FC<TagLabelProps> = ({\n entityType,\n subentityType,\n icon,\n entityIcon,\n showEntityIcon = true,\n showEntityLabel,\n subentityIcon,\n showSubentityIcon = true,\n showSubentityLabel,\n series,\n number,\n label,\n rarity,\n status,\n compact = false,\n children,\n style,\n testID,\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n // `compact` only seeds the DEFAULT for the label flags — an explicit\n // show*Label always wins over it.\n const entityLabelVisible = showEntityLabel ?? !compact;\n const subentityLabelVisible = showSubentityLabel ?? !compact;\n\n // `entityIcon` is the canonical prop; `icon` is the deprecated alias.\n const resolvedEntityIcon = entityIcon ?? icon;\n\n const renderEntity =\n Boolean(entityType) && (showEntityIcon || entityLabelVisible);\n const renderSubentity =\n Boolean(subentityType) && (showSubentityIcon || subentityLabelVisible);\n\n return (\n <Box\n testID={testID}\n flexDirection=\"row\"\n alignItems=\"center\"\n style={{\n overflow: \"hidden\",\n borderRadius: theme.shape.tagLabel.borderRadius,\n ...style,\n }}\n >\n {renderEntity && (\n <TagLabelEntitySegment\n type={entityType as EntityType}\n showIcon={showEntityIcon}\n showLabel={entityLabelVisible}\n icon={resolvedEntityIcon}\n theme={theme}\n />\n )}\n\n {renderSubentity && (\n <TagLabelSubentitySegment\n type={subentityType as SubentityType}\n showIcon={showSubentityIcon}\n showLabel={subentityLabelVisible}\n icon={subentityIcon}\n theme={theme}\n />\n )}\n\n {(series || number) && (\n <TagLabelIdSegment\n series={series}\n number={number}\n compact={compact}\n theme={theme}\n />\n )}\n\n {!compact && label && <TagLabelNameSegment label={label} theme={theme} />}\n\n {!compact && rarity && (\n <TagLabelRaritySegment rarity={rarity} theme={theme} />\n )}\n\n {!compact && status && (\n <TagLabelStatusSegment type={status} theme={theme} />\n )}\n\n {!compact && children && (\n <TagLabelCustomSlot theme={theme}>{children}</TagLabelCustomSlot>\n )}\n </Box>\n );\n};\n"],"mappings":"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","names":["import_react_native","import_jsx_runtime","RNText","import_react_native","import_jsx_runtime","React","import_jsx_runtime"]}
|
package/native/index.mjs
CHANGED
|
@@ -37,6 +37,7 @@ var toGapValue = (gap) => {
|
|
|
37
37
|
const asNumber = Number(gap);
|
|
38
38
|
return Number.isFinite(asNumber) ? asNumber : void 0;
|
|
39
39
|
};
|
|
40
|
+
var toNativeDisplay = (display) => display === "none" ? "none" : void 0;
|
|
40
41
|
var Box = ({
|
|
41
42
|
children,
|
|
42
43
|
onPress,
|
|
@@ -68,6 +69,7 @@ var Box = ({
|
|
|
68
69
|
marginBottom,
|
|
69
70
|
marginLeft,
|
|
70
71
|
marginRight,
|
|
72
|
+
display,
|
|
71
73
|
flexDirection,
|
|
72
74
|
flexWrap,
|
|
73
75
|
alignItems,
|
|
@@ -131,6 +133,7 @@ var Box = ({
|
|
|
131
133
|
marginBottom,
|
|
132
134
|
marginLeft,
|
|
133
135
|
marginRight,
|
|
136
|
+
display: toNativeDisplay(display),
|
|
134
137
|
flexDirection,
|
|
135
138
|
flexWrap,
|
|
136
139
|
alignItems,
|
|
@@ -342,34 +345,9 @@ import { useResolvedTheme } from "@xsolla/xui-core";
|
|
|
342
345
|
import { User, Settings, Info, X } from "@xsolla/xui-icons";
|
|
343
346
|
import { jsx as jsx4, jsxs } from "react/jsx-runtime";
|
|
344
347
|
var SEGMENT_HEIGHT = 24;
|
|
345
|
-
var
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
if (!colors) return null;
|
|
349
|
-
const renderIcon = () => {
|
|
350
|
-
if (icon) return icon;
|
|
351
|
-
switch (type) {
|
|
352
|
-
case "item":
|
|
353
|
-
return /* @__PURE__ */ jsx4(
|
|
354
|
-
Box,
|
|
355
|
-
{
|
|
356
|
-
style: { width: 12, height: 12, backgroundColor: colors.text }
|
|
357
|
-
}
|
|
358
|
-
);
|
|
359
|
-
// Cube placeholder
|
|
360
|
-
case "product":
|
|
361
|
-
return /* @__PURE__ */ jsx4(
|
|
362
|
-
Box,
|
|
363
|
-
{
|
|
364
|
-
style: { width: 12, height: 12, backgroundColor: colors.text }
|
|
365
|
-
}
|
|
366
|
-
);
|
|
367
|
-
// Chip placeholder
|
|
368
|
-
case "account":
|
|
369
|
-
return /* @__PURE__ */ jsx4(User, { size: "100%" });
|
|
370
|
-
}
|
|
371
|
-
};
|
|
372
|
-
if (compact) {
|
|
348
|
+
var TagLabelModuleChip = ({ showIcon, showLabel, icon, label, colors }) => {
|
|
349
|
+
if (!showIcon && !showLabel) return null;
|
|
350
|
+
if (showIcon && !showLabel) {
|
|
373
351
|
return /* @__PURE__ */ jsx4(
|
|
374
352
|
Box,
|
|
375
353
|
{
|
|
@@ -377,7 +355,7 @@ var TagLabelEntitySegment = ({ type, compact, icon, theme }) => {
|
|
|
377
355
|
width: SEGMENT_HEIGHT,
|
|
378
356
|
alignItems: "center",
|
|
379
357
|
justifyContent: "center",
|
|
380
|
-
children: /* @__PURE__ */ jsx4(Icon, { size: 16, color: colors.textCompact || colors.text, children:
|
|
358
|
+
children: /* @__PURE__ */ jsx4(Icon, { size: 16, color: colors.textCompact || colors.text, children: icon })
|
|
381
359
|
}
|
|
382
360
|
);
|
|
383
361
|
}
|
|
@@ -392,7 +370,7 @@ var TagLabelEntitySegment = ({ type, compact, icon, theme }) => {
|
|
|
392
370
|
alignItems: "center",
|
|
393
371
|
gap: 2,
|
|
394
372
|
children: [
|
|
395
|
-
/* @__PURE__ */ jsx4(Icon, { size: 20, color: colors.text, children:
|
|
373
|
+
showIcon && /* @__PURE__ */ jsx4(Icon, { size: 20, color: colors.text, children: icon }),
|
|
396
374
|
/* @__PURE__ */ jsx4(
|
|
397
375
|
Text,
|
|
398
376
|
{
|
|
@@ -400,18 +378,57 @@ var TagLabelEntitySegment = ({ type, compact, icon, theme }) => {
|
|
|
400
378
|
fontSize: 14,
|
|
401
379
|
fontWeight: "500",
|
|
402
380
|
whiteSpace: "nowrap",
|
|
403
|
-
children:
|
|
381
|
+
children: label
|
|
404
382
|
}
|
|
405
383
|
)
|
|
406
384
|
]
|
|
407
385
|
}
|
|
408
386
|
);
|
|
409
387
|
};
|
|
410
|
-
var
|
|
388
|
+
var TagLabelEntitySegment = ({ type, showIcon, showLabel, icon, theme }) => {
|
|
389
|
+
const tagLabel = theme?.colors?.control?.tagLabel;
|
|
390
|
+
const colors = tagLabel?.[type];
|
|
391
|
+
if (!colors) return null;
|
|
392
|
+
const renderIcon = () => {
|
|
393
|
+
if (icon) return icon;
|
|
394
|
+
switch (type) {
|
|
395
|
+
case "item":
|
|
396
|
+
return /* @__PURE__ */ jsx4(
|
|
397
|
+
Box,
|
|
398
|
+
{
|
|
399
|
+
style: { width: 12, height: 12, backgroundColor: colors.text }
|
|
400
|
+
}
|
|
401
|
+
);
|
|
402
|
+
// Cube placeholder
|
|
403
|
+
case "product":
|
|
404
|
+
return /* @__PURE__ */ jsx4(
|
|
405
|
+
Box,
|
|
406
|
+
{
|
|
407
|
+
style: { width: 12, height: 12, backgroundColor: colors.text }
|
|
408
|
+
}
|
|
409
|
+
);
|
|
410
|
+
// Chip placeholder
|
|
411
|
+
case "account":
|
|
412
|
+
return /* @__PURE__ */ jsx4(User, { size: "100%" });
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
return /* @__PURE__ */ jsx4(
|
|
416
|
+
TagLabelModuleChip,
|
|
417
|
+
{
|
|
418
|
+
showIcon,
|
|
419
|
+
showLabel,
|
|
420
|
+
icon: renderIcon(),
|
|
421
|
+
label: type.charAt(0).toUpperCase() + type.slice(1),
|
|
422
|
+
colors
|
|
423
|
+
}
|
|
424
|
+
);
|
|
425
|
+
};
|
|
426
|
+
var TagLabelSubentitySegment = ({ type, showIcon, showLabel, icon, theme }) => {
|
|
411
427
|
const tagLabel = theme?.colors?.control?.tagLabel;
|
|
412
428
|
const colors = tagLabel?.subentity;
|
|
413
429
|
if (!colors || !type || typeof type !== "string") return null;
|
|
414
430
|
const renderIcon = () => {
|
|
431
|
+
if (icon) return icon;
|
|
415
432
|
switch (type) {
|
|
416
433
|
case "skin":
|
|
417
434
|
case "in-game-item":
|
|
@@ -440,29 +457,14 @@ var TagLabelSubentitySegment = ({ type, theme }) => {
|
|
|
440
457
|
}
|
|
441
458
|
};
|
|
442
459
|
const label = type.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
443
|
-
return /* @__PURE__ */
|
|
444
|
-
|
|
460
|
+
return /* @__PURE__ */ jsx4(
|
|
461
|
+
TagLabelModuleChip,
|
|
445
462
|
{
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
alignItems: "center",
|
|
452
|
-
gap: 2,
|
|
453
|
-
children: [
|
|
454
|
-
/* @__PURE__ */ jsx4(Icon, { size: 20, color: colors.text, children: renderIcon() }),
|
|
455
|
-
/* @__PURE__ */ jsx4(
|
|
456
|
-
Text,
|
|
457
|
-
{
|
|
458
|
-
color: colors.text,
|
|
459
|
-
fontSize: 14,
|
|
460
|
-
fontWeight: "500",
|
|
461
|
-
whiteSpace: "nowrap",
|
|
462
|
-
children: label
|
|
463
|
-
}
|
|
464
|
-
)
|
|
465
|
-
]
|
|
463
|
+
showIcon,
|
|
464
|
+
showLabel,
|
|
465
|
+
icon: renderIcon(),
|
|
466
|
+
label,
|
|
467
|
+
colors
|
|
466
468
|
}
|
|
467
469
|
);
|
|
468
470
|
};
|
|
@@ -626,6 +628,12 @@ var TagLabel = ({
|
|
|
626
628
|
entityType,
|
|
627
629
|
subentityType,
|
|
628
630
|
icon,
|
|
631
|
+
entityIcon,
|
|
632
|
+
showEntityIcon = true,
|
|
633
|
+
showEntityLabel,
|
|
634
|
+
subentityIcon,
|
|
635
|
+
showSubentityIcon = true,
|
|
636
|
+
showSubentityLabel,
|
|
629
637
|
series,
|
|
630
638
|
number,
|
|
631
639
|
label,
|
|
@@ -639,6 +647,11 @@ var TagLabel = ({
|
|
|
639
647
|
themeProductContext
|
|
640
648
|
}) => {
|
|
641
649
|
const { theme } = useResolvedTheme({ themeMode, themeProductContext });
|
|
650
|
+
const entityLabelVisible = showEntityLabel ?? !compact;
|
|
651
|
+
const subentityLabelVisible = showSubentityLabel ?? !compact;
|
|
652
|
+
const resolvedEntityIcon = entityIcon ?? icon;
|
|
653
|
+
const renderEntity = Boolean(entityType) && (showEntityIcon || entityLabelVisible);
|
|
654
|
+
const renderSubentity = Boolean(subentityType) && (showSubentityIcon || subentityLabelVisible);
|
|
642
655
|
return /* @__PURE__ */ jsxs(
|
|
643
656
|
Box,
|
|
644
657
|
{
|
|
@@ -651,16 +664,26 @@ var TagLabel = ({
|
|
|
651
664
|
...style
|
|
652
665
|
},
|
|
653
666
|
children: [
|
|
654
|
-
|
|
667
|
+
renderEntity && /* @__PURE__ */ jsx4(
|
|
655
668
|
TagLabelEntitySegment,
|
|
656
669
|
{
|
|
657
670
|
type: entityType,
|
|
658
|
-
|
|
659
|
-
|
|
671
|
+
showIcon: showEntityIcon,
|
|
672
|
+
showLabel: entityLabelVisible,
|
|
673
|
+
icon: resolvedEntityIcon,
|
|
674
|
+
theme
|
|
675
|
+
}
|
|
676
|
+
),
|
|
677
|
+
renderSubentity && /* @__PURE__ */ jsx4(
|
|
678
|
+
TagLabelSubentitySegment,
|
|
679
|
+
{
|
|
680
|
+
type: subentityType,
|
|
681
|
+
showIcon: showSubentityIcon,
|
|
682
|
+
showLabel: subentityLabelVisible,
|
|
683
|
+
icon: subentityIcon,
|
|
660
684
|
theme
|
|
661
685
|
}
|
|
662
686
|
),
|
|
663
|
-
!compact && subentityType && /* @__PURE__ */ jsx4(TagLabelSubentitySegment, { type: subentityType, theme }),
|
|
664
687
|
(series || number) && /* @__PURE__ */ jsx4(
|
|
665
688
|
TagLabelIdSegment,
|
|
666
689
|
{
|
package/native/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../foundation/primitives-native/src/Box.tsx","../../../../foundation/primitives-native/src/Text.tsx","../../../../foundation/primitives-native/src/Icon.tsx","../../src/TagLabel.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\";\nimport { View, ViewStyle } from \"react-native\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Icon: React.FC<IconProps> = ({\n children,\n color,\n size,\n testID,\n \"data-testid\": dataTestId,\n}) => {\n const style: ViewStyle = {\n width: typeof size === \"number\" ? size : undefined,\n height: typeof size === \"number\" ? size : undefined,\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n // On native, we try to pass the color down to children (like Text primitives)\n // to mimic the CSS inheritance behavior of the web version.\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n color: child.props.color || color,\n // Also pass size if child seems to be an icon that needs it\n size: child.props.size || size,\n });\n }\n return child;\n });\n\n return (\n <View style={style} testID={dataTestId || testID}>\n {childrenWithProps}\n </View>\n );\n};\n","import React, { type ReactNode } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, Icon } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, type ThemeOverrideProps } from \"@xsolla/xui-core\";\nimport { User, Settings, Info, X } from \"@xsolla/xui-icons\";\n\n// --- Types ---\n\nexport type EntityType = \"item\" | \"product\" | \"account\";\n\nexport type StatusType = \"sale\" | \"maintenance\" | \"inactive\";\n\nexport type SubentityType =\n | \"skin\"\n | \"in-game-item\"\n | \"currency\"\n | \"bundle\"\n | \"lootbox\"\n | \"game-key\"\n | \"discount\"\n | \"coupon\"\n | \"game\"\n | \"sdk\"\n | \"plugin\"\n | \"api\"\n | \"service\"\n | \"tool\"\n | \"webshop\"\n | \"app\"\n | \"launcher\"\n | \"library\"\n | \"engine\"\n | \"user\"\n | \"developer\"\n | \"influencer\"\n | \"publisher\"\n | \"settings\";\n\nexport interface TagLabelProps extends ThemeOverrideProps {\n /** Main entity type */\n entityType?: EntityType;\n /** Detailed sub-category */\n subentityType?: SubentityType;\n /** Custom icon for entity/subentity if needed */\n icon?: ReactNode;\n /** ID series (e.g. \"XLA\") */\n series?: string;\n /** ID number (e.g. \"-001-001\") */\n number?: string;\n /** Item label/name */\n label?: string;\n /** Rarity icon or indicator */\n rarity?: ReactNode;\n /** Status indicator */\n status?: StatusType;\n /** Whether to show the compact version */\n compact?: boolean;\n /** Custom content slot */\n children?: ReactNode;\n /** Custom styles */\n style?: any;\n testID?: string;\n}\n\n// --- Internal Segments ---\n\nconst SEGMENT_HEIGHT = 24;\n\nconst TagLabelEntitySegment: React.FC<{\n type: EntityType;\n compact?: boolean;\n icon?: ReactNode;\n theme: any;\n}> = ({ type, compact, icon, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.[type];\n\n if (!colors) return null;\n\n // Generic icon placeholders for now based on Figma intent\n const renderIcon = () => {\n if (icon) return icon;\n switch (type) {\n case \"item\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Cube placeholder\n case \"product\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Chip placeholder\n case \"account\":\n return <User size=\"100%\" />;\n }\n };\n\n if (compact) {\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={16} color={colors.textCompact || colors.text}>\n {renderIcon()}\n </Icon>\n </Box>\n );\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingLeft={2}\n paddingRight={4}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={2}\n >\n <Icon size={20} color={colors.text}>\n {renderIcon()}\n </Icon>\n <Text\n color={colors.text}\n fontSize={14}\n fontWeight=\"500\"\n whiteSpace=\"nowrap\"\n >\n {type.charAt(0).toUpperCase() + type.slice(1)}\n </Text>\n </Box>\n );\n};\n\nconst TagLabelSubentitySegment: React.FC<{\n type: SubentityType;\n theme: any;\n}> = ({ type, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.subentity;\n\n if (!colors || !type || typeof type !== \"string\") return null;\n\n // Icon mapping based on Figma\n const renderIcon = () => {\n switch (type) {\n case \"skin\":\n case \"in-game-item\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Pencil placeholder\n case \"game\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Controller placeholder\n case \"user\":\n return <User size=\"100%\" />;\n case \"settings\":\n return <Settings size=\"100%\" />;\n // ... more icons as needed\n default:\n return <Info size=\"100%\" />;\n }\n };\n\n const label = type\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingLeft={2}\n paddingRight={4}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={2}\n >\n <Icon size={20} color={colors.text}>\n {renderIcon()}\n </Icon>\n <Text\n color={colors.text}\n fontSize={14}\n fontWeight=\"500\"\n whiteSpace=\"nowrap\"\n >\n {label}\n </Text>\n </Box>\n );\n};\n\nconst TagLabelIdSegment: React.FC<{\n series?: string;\n number?: string;\n compact?: boolean;\n theme: any;\n}> = ({ series, number, compact, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.id;\n\n if (!colors) return null;\n\n if (compact) {\n return (\n <Box\n height={SEGMENT_HEIGHT}\n paddingLeft={4}\n paddingRight={6}\n flexDirection=\"row\"\n alignItems=\"center\"\n >\n {series && (\n <Text color={colors.textCompact} fontSize={14} fontWeight=\"400\">\n {series}\n </Text>\n )}\n {number && (\n <Text color={colors.textCompact} fontSize={14} fontWeight=\"400\">\n {number}\n </Text>\n )}\n </Box>\n );\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingLeft={4}\n paddingRight={6}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={2}\n >\n {series && (\n <Box\n backgroundColor={colors.bgSeries}\n height={16}\n paddingHorizontal={2}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Text color={colors.textSeries} fontSize={14} fontWeight=\"500\">\n {series}\n </Text>\n </Box>\n )}\n {number && (\n <Text color={colors.textNumber} fontSize={14} fontWeight=\"500\">\n {number}\n </Text>\n )}\n </Box>\n );\n};\n\nconst TagLabelNameSegment: React.FC<{ label: string; theme: any }> = ({\n label,\n theme,\n}) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.name;\n\n if (!colors) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingHorizontal={4}\n justifyContent=\"center\"\n >\n <Text\n color={colors.text}\n fontSize={14}\n fontWeight=\"400\"\n whiteSpace=\"nowrap\"\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {label}\n </Text>\n </Box>\n );\n};\n\nconst TagLabelRaritySegment: React.FC<{ rarity: ReactNode; theme: any }> = ({\n rarity,\n theme,\n}) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.rarity;\n\n if (!colors) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingHorizontal={6}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={18} color={colors.text}>\n {rarity || <Info size=\"100%\" />}\n </Icon>\n </Box>\n );\n};\n\nconst TagLabelStatusSegment: React.FC<{ type: StatusType; theme: any }> = ({\n type,\n theme,\n}) => {\n let bg;\n let icon;\n\n if (!theme?.colors?.background) return null;\n\n switch (type) {\n case \"sale\":\n bg = theme.colors.background.warning?.primary;\n icon = <Info size=\"100%\" />; // Info placeholder\n break;\n case \"maintenance\":\n bg = theme.colors.background.success?.primary;\n icon = <Settings size=\"100%\" />;\n break;\n case \"inactive\":\n bg = theme.colors.background.alert?.primary;\n icon = <X size=\"100%\" />;\n break;\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n backgroundColor={bg}\n paddingHorizontal={2}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={20} color=\"black\">\n {icon}\n </Icon>\n </Box>\n );\n};\n\nconst TagLabelCustomSlot: React.FC<{ children: ReactNode; theme: any }> = ({\n children,\n theme,\n}) => {\n if (!theme?.colors?.background) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={theme.colors.background.secondary}\n paddingHorizontal={6}\n justifyContent=\"center\"\n >\n {typeof children === \"string\" ? (\n <Text\n color={theme?.colors?.content?.primary}\n fontSize={14}\n fontWeight=\"500\"\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Box>\n );\n};\n\n// --- Main Component ---\n\nexport const TagLabel: React.FC<TagLabelProps> = ({\n entityType,\n subentityType,\n icon,\n series,\n number,\n label,\n rarity,\n status,\n compact = false,\n children,\n style,\n testID,\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n return (\n <Box\n testID={testID}\n flexDirection=\"row\"\n alignItems=\"center\"\n style={{\n overflow: \"hidden\",\n borderRadius: theme.shape.tagLabel.borderRadius,\n ...style,\n }}\n >\n {entityType && (\n <TagLabelEntitySegment\n type={entityType}\n compact={compact}\n icon={icon}\n theme={theme}\n />\n )}\n\n {!compact && subentityType && (\n <TagLabelSubentitySegment type={subentityType} theme={theme} />\n )}\n\n {(series || number) && (\n <TagLabelIdSegment\n series={series}\n number={number}\n compact={compact}\n theme={theme}\n />\n )}\n\n {!compact && label && <TagLabelNameSegment label={label} theme={theme} />}\n\n {!compact && rarity && (\n <TagLabelRaritySegment rarity={rarity} theme={theme} />\n )}\n\n {!compact && status && (\n <TagLabelStatusSegment type={status} theme={theme} />\n )}\n\n {!compact && children && (\n <TagLabelCustomSlot theme={theme}>{children}</TagLabelCustomSlot>\n )}\n </Box>\n );\n};\n"],"mappings":";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAMK;AAwMD;AArMN,IAAM,0BAA6D;AAAA,EACjE,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,cAAc;AAAA,EACd,aAAa;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,OAAO;AACT;AAGA,IAAM,aAAa,CAAC,QAAyD;AAC3E,MAAI,QAAQ,OAAW,QAAO;AAC9B,MAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,QAAM,UAAU,sBAAsB,KAAK,GAAG;AAC9C,MAAI,QAAS,QAAO,OAAO,QAAQ,CAAC,CAAC;AACrC,QAAM,WAAW,OAAO,GAAG;AAC3B,SAAO,OAAO,SAAS,QAAQ,IAAI,WAAW;AAChD;AAEO,IAAM,MAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,oBAAoB,CAAC,aAAkC;AAAA,IAC3D,iBACE,WAAW,YAAY,kBACnB,WAAW,kBACX;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,YAAY,WAAW,MAAM;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK,WAAW,GAAG;AAAA,IACnB,GAAI;AAAA,EACN;AAEA,QAAM,cAAc,cAAc;AAKlC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,aAAa;AAAA,IACb;AAAA,IACA,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,oBACH,OAAO,SAAS,YAAY,wBAAwB,IAAI,MACxD,OAAO,WAAW,WAAW;AAChC,QAAM,aAAa,QAAQ,YAAY,YAAY;AACnD,QAAM,qBAAqB;AAAA,IACzB,UAAU,cAAc;AAAA,IACxB,MAAM,QAAQ,QAAQ,KAAK;AAAA,EAC7B;AACA,QAAM,0BACJ,aAAa,YAAY,aAAa,cAAc,WAAW;AAGjE,MAAI,OAAO,SAAS,KAAK;AACvB,UAAM,aAAyB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAI;AAAA,IACN;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ,EAAE,KAAK,IAAI;AAAA,QACnB,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,oBAAoB,OAAO,cAAc,WAAW,YAAY;AAAA,QAChE,YAAW;AAAA,QACV,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AAIA,MAAI,WAAW,OAAO,UAAU;AAC9B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,CAAC,cAAc,UAAU,UAAU;AAAA,QAC5C,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,CAAC,EAAE,QAAQ,MAAM,kBAAkB,OAAO;AAAA,QACjD,QAAQ;AAAA,QACR;AAAA,QACA,oBACE,OAAO,cAAc,WAAW,YAAY;AAAA,QAE9C;AAAA,QACA;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,kBAAkB;AAAA,MACzB,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,oBAAoB,OAAO,cAAc,WAAW,YAAY;AAAA,MAChE;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AC3QA;AAAA,EACE,QAAQ;AAAA,EAGR;AAAA,OACK;AAqEH,gBAAAA,YAAA;AAlEJ,IAAM,UAA6C;AAAA,EACjD,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AACR;AAEA,IAAM,oBAAoB,CACxB,UACuB;AACvB,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,SAAS,WAAW,KAAK;AAC/B,SAAO,MAAM,MAAM,IAAI,SAAY;AACrC;AAEO,IAAM,OAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,OAAO;AAAA,EACP,GAAG;AACL,MAAM;AACJ,MAAI,qBAAqB,aACrB,WAAW,MAAM,GAAG,EAAE,CAAC,EAAE,QAAQ,SAAS,EAAE,EAAE,KAAK,IACnD;AAEJ,MACE,uBAAuB,gBACvB,uBAAuB,qBACvB,uBAAuB,iBACvB;AACA,yBAAqB;AAAA,EACvB;AAEA,QAAM,gBAAgB,WAAW,QAAQ,SAAS;AAElD,QAAM,YAAuB;AAAA,IAC3B,OAAO,SAAS,eAAe;AAAA,IAC/B,UAAU,OAAO,aAAa,WAAW,WAAW;AAAA,IACpD;AAAA,IACA,YAAY;AAAA,IACZ,oBAAoB,MAAM;AAAA,IAC1B,WAAW,aAAa,eAAe;AAAA,IACvC,YAAY,kBAAkB,cAAc,eAAe,UAAU;AAAA,IACrE,WAAW;AAAA,MACT,eAAe;AAAA,IACjB;AAAA,IACA,cAAc;AAAA,MACZ,eAAe;AAAA,IACjB;AAAA,EACF;AAEA,QAAM,oBAAoB,OAAO,QAAQ,IAAI,IAAI;AAEjD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA,QAAQ,cAAc,UAAU;AAAA,MAChC;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;ACpFA,OAAO,WAAW;AAClB,SAAS,QAAAC,aAAuB;AA+B5B,gBAAAC,YAAA;AA5BG,IAAM,OAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AACjB,MAAM;AACJ,QAAM,QAAmB;AAAA,IACvB,OAAO,OAAO,SAAS,WAAW,OAAO;AAAA,IACzC,QAAQ,OAAO,SAAS,WAAW,OAAO;AAAA,IAC1C,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAClB;AAIA,QAAM,oBAAoB,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU;AAChE,QAAI,MAAM,eAAe,KAAK,GAAG;AAC/B,aAAO,MAAM,aAAa,OAAO;AAAA,QAC/B,OAAO,MAAM,MAAM,SAAS;AAAA;AAAA,QAE5B,MAAM,MAAM,MAAM,QAAQ;AAAA,MAC5B,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT,CAAC;AAED,SACE,gBAAAA,KAACD,OAAA,EAAK,OAAc,QAAQ,cAAc,QACvC,6BACH;AAEJ;;;ACjCA,SAAS,wBAAiD;AAC1D,SAAS,MAAM,UAAU,MAAM,SAAS;AAiF9B,gBAAAE,MA+BN,YA/BM;AAnBV,IAAM,iBAAiB;AAEvB,IAAM,wBAKD,CAAC,EAAE,MAAM,SAAS,MAAM,MAAM,MAAM;AACvC,QAAM,WAAW,OAAO,QAAQ,SAAS;AACzC,QAAM,SAAS,WAAW,IAAI;AAE9B,MAAI,CAAC,OAAQ,QAAO;AAGpB,QAAM,aAAa,MAAM;AACvB,QAAI,KAAM,QAAO;AACjB,YAAQ,MAAM;AAAA,MACZ,KAAK;AACH,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,iBAAiB,OAAO,KAAK;AAAA;AAAA,QAC/D;AAAA;AAAA,MAEJ,KAAK;AACH,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,iBAAiB,OAAO,KAAK;AAAA;AAAA,QAC/D;AAAA;AAAA,MAEJ,KAAK;AACH,eAAO,gBAAAA,KAAC,QAAK,MAAK,QAAO;AAAA,IAC7B;AAAA,EACF;AAEA,MAAI,SAAS;AACX,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,YAAW;AAAA,QACX,gBAAe;AAAA,QAEf,0BAAAA,KAAC,QAAK,MAAM,IAAI,OAAO,OAAO,eAAe,OAAO,MACjD,qBAAW,GACd;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ;AAAA,MACR,iBAAiB,OAAO;AAAA,MACxB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,eAAc;AAAA,MACd,YAAW;AAAA,MACX,KAAK;AAAA,MAEL;AAAA,wBAAAA,KAAC,QAAK,MAAM,IAAI,OAAO,OAAO,MAC3B,qBAAW,GACd;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,OAAO;AAAA,YACd,UAAU;AAAA,YACV,YAAW;AAAA,YACX,YAAW;AAAA,YAEV,eAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA;AAAA,QAC9C;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,2BAGD,CAAC,EAAE,MAAM,MAAM,MAAM;AACxB,QAAM,WAAW,OAAO,QAAQ,SAAS;AACzC,QAAM,SAAS,UAAU;AAEzB,MAAI,CAAC,UAAU,CAAC,QAAQ,OAAO,SAAS,SAAU,QAAO;AAGzD,QAAM,aAAa,MAAM;AACvB,YAAQ,MAAM;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AACH,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,iBAAiB,OAAO,KAAK;AAAA;AAAA,QAC/D;AAAA;AAAA,MAEJ,KAAK;AACH,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,iBAAiB,OAAO,KAAK;AAAA;AAAA,QAC/D;AAAA;AAAA,MAEJ,KAAK;AACH,eAAO,gBAAAA,KAAC,QAAK,MAAK,QAAO;AAAA,MAC3B,KAAK;AACH,eAAO,gBAAAA,KAAC,YAAS,MAAK,QAAO;AAAA;AAAA,MAE/B;AACE,eAAO,gBAAAA,KAAC,QAAK,MAAK,QAAO;AAAA,IAC7B;AAAA,EACF;AAEA,QAAM,QAAQ,KACX,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AAEX,SACE;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ;AAAA,MACR,iBAAiB,OAAO;AAAA,MACxB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,eAAc;AAAA,MACd,YAAW;AAAA,MACX,KAAK;AAAA,MAEL;AAAA,wBAAAA,KAAC,QAAK,MAAM,IAAI,OAAO,OAAO,MAC3B,qBAAW,GACd;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,OAAO;AAAA,YACd,UAAU;AAAA,YACV,YAAW;AAAA,YACX,YAAW;AAAA,YAEV;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,oBAKD,CAAC,EAAE,QAAQ,QAAQ,SAAS,MAAM,MAAM;AAC3C,QAAM,WAAW,OAAO,QAAQ,SAAS;AACzC,QAAM,SAAS,UAAU;AAEzB,MAAI,CAAC,OAAQ,QAAO;AAEpB,MAAI,SAAS;AACX,WACE;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,cAAc;AAAA,QACd,eAAc;AAAA,QACd,YAAW;AAAA,QAEV;AAAA,oBACC,gBAAAA,KAAC,QAAK,OAAO,OAAO,aAAa,UAAU,IAAI,YAAW,OACvD,kBACH;AAAA,UAED,UACC,gBAAAA,KAAC,QAAK,OAAO,OAAO,aAAa,UAAU,IAAI,YAAW,OACvD,kBACH;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ;AAAA,MACR,iBAAiB,OAAO;AAAA,MACxB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,eAAc;AAAA,MACd,YAAW;AAAA,MACX,KAAK;AAAA,MAEJ;AAAA,kBACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,iBAAiB,OAAO;AAAA,YACxB,QAAQ;AAAA,YACR,mBAAmB;AAAA,YACnB,YAAW;AAAA,YACX,gBAAe;AAAA,YAEf,0BAAAA,KAAC,QAAK,OAAO,OAAO,YAAY,UAAU,IAAI,YAAW,OACtD,kBACH;AAAA;AAAA,QACF;AAAA,QAED,UACC,gBAAAA,KAAC,QAAK,OAAO,OAAO,YAAY,UAAU,IAAI,YAAW,OACtD,kBACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAM,sBAA+D,CAAC;AAAA,EACpE;AAAA,EACA;AACF,MAAM;AACJ,QAAM,WAAW,OAAO,QAAQ,SAAS;AACzC,QAAM,SAAS,UAAU;AAEzB,MAAI,CAAC,OAAQ,QAAO;AAEpB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ;AAAA,MACR,iBAAiB,OAAO;AAAA,MACxB,mBAAmB;AAAA,MACnB,gBAAe;AAAA,MAEf,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,OAAO;AAAA,UACd,UAAU;AAAA,UACV,YAAW;AAAA,UACX,YAAW;AAAA,UACX,OAAO;AAAA,YACL,UAAU;AAAA,YACV,cAAc;AAAA,UAChB;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,wBAAqE,CAAC;AAAA,EAC1E;AAAA,EACA;AACF,MAAM;AACJ,QAAM,WAAW,OAAO,QAAQ,SAAS;AACzC,QAAM,SAAS,UAAU;AAEzB,MAAI,CAAC,OAAQ,QAAO;AAEpB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,iBAAiB,OAAO;AAAA,MACxB,mBAAmB;AAAA,MACnB,YAAW;AAAA,MACX,gBAAe;AAAA,MAEf,0BAAAA,KAAC,QAAK,MAAM,IAAI,OAAO,OAAO,MAC3B,oBAAU,gBAAAA,KAAC,QAAK,MAAK,QAAO,GAC/B;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,wBAAoE,CAAC;AAAA,EACzE;AAAA,EACA;AACF,MAAM;AACJ,MAAI;AACJ,MAAI;AAEJ,MAAI,CAAC,OAAO,QAAQ,WAAY,QAAO;AAEvC,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,WAAK,MAAM,OAAO,WAAW,SAAS;AACtC,aAAO,gBAAAA,KAAC,QAAK,MAAK,QAAO;AACzB;AAAA,IACF,KAAK;AACH,WAAK,MAAM,OAAO,WAAW,SAAS;AACtC,aAAO,gBAAAA,KAAC,YAAS,MAAK,QAAO;AAC7B;AAAA,IACF,KAAK;AACH,WAAK,MAAM,OAAO,WAAW,OAAO;AACpC,aAAO,gBAAAA,KAAC,KAAE,MAAK,QAAO;AACtB;AAAA,EACJ;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB,YAAW;AAAA,MACX,gBAAe;AAAA,MAEf,0BAAAA,KAAC,QAAK,MAAM,IAAI,OAAM,SACnB,gBACH;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,qBAAoE,CAAC;AAAA,EACzE;AAAA,EACA;AACF,MAAM;AACJ,MAAI,CAAC,OAAO,QAAQ,WAAY,QAAO;AAEvC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ;AAAA,MACR,iBAAiB,MAAM,OAAO,WAAW;AAAA,MACzC,mBAAmB;AAAA,MACnB,gBAAe;AAAA,MAEd,iBAAO,aAAa,WACnB,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,OAAO,QAAQ,SAAS;AAAA,UAC/B,UAAU;AAAA,UACV,YAAW;AAAA,UAEV;AAAA;AAAA,MACH,IAEA;AAAA;AAAA,EAEJ;AAEJ;AAIO,IAAM,WAAoC,CAAC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,EAAE,MAAM,IAAI,iBAAiB,EAAE,WAAW,oBAAoB,CAAC;AAErE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAc;AAAA,MACd,YAAW;AAAA,MACX,OAAO;AAAA,QACL,UAAU;AAAA,QACV,cAAc,MAAM,MAAM,SAAS;AAAA,QACnC,GAAG;AAAA,MACL;AAAA,MAEC;AAAA,sBACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QAGD,CAAC,WAAW,iBACX,gBAAAA,KAAC,4BAAyB,MAAM,eAAe,OAAc;AAAA,SAG7D,UAAU,WACV,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QAGD,CAAC,WAAW,SAAS,gBAAAA,KAAC,uBAAoB,OAAc,OAAc;AAAA,QAEtE,CAAC,WAAW,UACX,gBAAAA,KAAC,yBAAsB,QAAgB,OAAc;AAAA,QAGtD,CAAC,WAAW,UACX,gBAAAA,KAAC,yBAAsB,MAAM,QAAQ,OAAc;AAAA,QAGpD,CAAC,WAAW,YACX,gBAAAA,KAAC,sBAAmB,OAAe,UAAS;AAAA;AAAA;AAAA,EAEhD;AAEJ;","names":["jsx","View","jsx","jsx"]}
|
|
1
|
+
{"version":3,"sources":["../../../../foundation/primitives-native/src/Box.tsx","../../../../foundation/primitives-native/src/Text.tsx","../../../../foundation/primitives-native/src/Icon.tsx","../../src/TagLabel.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\n/**\n * Yoga has no inline formatting context, so RN's ViewStyle.display only\n * accepts \"flex\" | \"none\". Every inline-ish web value collapses to a plain\n * flex container — the box already fills only its content on native, which is\n * what those callers wanted on web anyway. Returning undefined (rather than\n * \"flex\") leaves RN's own default in place.\n */\nconst toNativeDisplay = (\n display: BoxProps[\"display\"]\n): ViewStyle[\"display\"] => (display === \"none\" ? \"none\" : undefined);\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 display,\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 display: toNativeDisplay(display),\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\";\nimport { View, ViewStyle } from \"react-native\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Icon: React.FC<IconProps> = ({\n children,\n color,\n size,\n testID,\n \"data-testid\": dataTestId,\n}) => {\n const style: ViewStyle = {\n width: typeof size === \"number\" ? size : undefined,\n height: typeof size === \"number\" ? size : undefined,\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n // On native, we try to pass the color down to children (like Text primitives)\n // to mimic the CSS inheritance behavior of the web version.\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n color: child.props.color || color,\n // Also pass size if child seems to be an icon that needs it\n size: child.props.size || size,\n });\n }\n return child;\n });\n\n return (\n <View style={style} testID={dataTestId || testID}>\n {childrenWithProps}\n </View>\n );\n};\n","import React, { type ReactNode } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, Icon } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, type ThemeOverrideProps } from \"@xsolla/xui-core\";\nimport { User, Settings, Info, X } from \"@xsolla/xui-icons\";\n\n// --- Types ---\n\nexport type EntityType = \"item\" | \"product\" | \"account\";\n\nexport type StatusType = \"sale\" | \"maintenance\" | \"inactive\";\n\nexport type SubentityType =\n | \"skin\"\n | \"in-game-item\"\n | \"currency\"\n | \"bundle\"\n | \"lootbox\"\n | \"game-key\"\n | \"discount\"\n | \"coupon\"\n | \"game\"\n | \"sdk\"\n | \"plugin\"\n | \"api\"\n | \"service\"\n | \"tool\"\n | \"webshop\"\n | \"app\"\n | \"launcher\"\n | \"library\"\n | \"engine\"\n | \"user\"\n | \"developer\"\n | \"influencer\"\n | \"publisher\"\n | \"settings\";\n\nexport interface TagLabelProps extends ThemeOverrideProps {\n /** Main entity type */\n entityType?: EntityType;\n /** Detailed sub-category */\n subentityType?: SubentityType;\n /**\n * Custom icon for the entity module.\n *\n * @deprecated Use {@link TagLabelProps.entityIcon} instead. `icon` is kept as\n * an alias for backwards compatibility and will be removed in a future major.\n */\n icon?: ReactNode;\n /**\n * Show the icon of the entity module.\n *\n * @default true\n */\n showEntityIcon?: boolean;\n /**\n * Show the text label of the entity module. Defaults to `!compact`, so\n * `compact` only seeds the default — an explicit value always wins.\n *\n * @default !compact\n */\n showEntityLabel?: boolean;\n /** Custom icon override for the entity module. Takes precedence over `icon`. */\n entityIcon?: ReactNode;\n /**\n * Show the icon of the subentity module.\n *\n * @default true\n */\n showSubentityIcon?: boolean;\n /**\n * Show the text label of the subentity module. Defaults to `!compact`, so\n * `compact` only seeds the default — an explicit value always wins.\n *\n * @default !compact\n */\n showSubentityLabel?: boolean;\n /** Custom icon override for the subentity module. */\n subentityIcon?: ReactNode;\n /** ID series (e.g. \"XLA\") */\n series?: string;\n /** ID number (e.g. \"-001-001\") */\n number?: string;\n /** Item label/name */\n label?: string;\n /** Rarity icon or indicator */\n rarity?: ReactNode;\n /** Status indicator */\n status?: StatusType;\n /** Whether to show the compact version */\n compact?: boolean;\n /** Custom content slot */\n children?: ReactNode;\n /** Custom styles */\n style?: any;\n testID?: string;\n}\n\n// --- Internal Segments ---\n\nconst SEGMENT_HEIGHT = 24;\n\ninterface ModuleColors {\n bg?: string;\n text?: string;\n textCompact?: string;\n}\n\n/**\n * Shared chip renderer for the entity and subentity modules.\n *\n * Rendering rules (see XUITSD-101):\n * - icon + label -> full chip: tinted background, icon, text.\n * - icon only -> 24x24 square, no chip background (the legacy compact\n * entity rendering).\n * - label only -> full chip minus the icon; background, padding and\n * typography are unchanged.\n * - neither -> nothing is rendered at all.\n */\nconst TagLabelModuleChip: React.FC<{\n showIcon: boolean;\n showLabel: boolean;\n icon: ReactNode;\n label: string;\n colors: ModuleColors;\n}> = ({ showIcon, showLabel, icon, label, colors }) => {\n if (!showIcon && !showLabel) return null;\n\n if (showIcon && !showLabel) {\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={16} color={colors.textCompact || colors.text}>\n {icon}\n </Icon>\n </Box>\n );\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingLeft={2}\n paddingRight={4}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={2}\n >\n {showIcon && (\n <Icon size={20} color={colors.text}>\n {icon}\n </Icon>\n )}\n <Text\n color={colors.text}\n fontSize={14}\n fontWeight=\"500\"\n whiteSpace=\"nowrap\"\n >\n {label}\n </Text>\n </Box>\n );\n};\n\nconst TagLabelEntitySegment: React.FC<{\n type: EntityType;\n showIcon: boolean;\n showLabel: boolean;\n icon?: ReactNode;\n theme: any;\n}> = ({ type, showIcon, showLabel, icon, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors: ModuleColors | undefined = tagLabel?.[type];\n\n if (!colors) return null;\n\n // Generic icon placeholders for now based on Figma intent\n const renderIcon = () => {\n if (icon) return icon;\n switch (type) {\n case \"item\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Cube placeholder\n case \"product\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Chip placeholder\n case \"account\":\n return <User size=\"100%\" />;\n }\n };\n\n return (\n <TagLabelModuleChip\n showIcon={showIcon}\n showLabel={showLabel}\n icon={renderIcon()}\n label={type.charAt(0).toUpperCase() + type.slice(1)}\n colors={colors}\n />\n );\n};\n\nconst TagLabelSubentitySegment: React.FC<{\n type: SubentityType;\n showIcon: boolean;\n showLabel: boolean;\n icon?: ReactNode;\n theme: any;\n}> = ({ type, showIcon, showLabel, icon, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors: ModuleColors | undefined = tagLabel?.subentity;\n\n if (!colors || !type || typeof type !== \"string\") return null;\n\n // Icon mapping based on Figma\n const renderIcon = () => {\n if (icon) return icon;\n switch (type) {\n case \"skin\":\n case \"in-game-item\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Pencil placeholder\n case \"game\":\n return (\n <Box\n style={{ width: 12, height: 12, backgroundColor: colors.text }}\n />\n ); // Controller placeholder\n case \"user\":\n return <User size=\"100%\" />;\n case \"settings\":\n return <Settings size=\"100%\" />;\n // ... more icons as needed\n default:\n return <Info size=\"100%\" />;\n }\n };\n\n const label = type\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n\n return (\n <TagLabelModuleChip\n showIcon={showIcon}\n showLabel={showLabel}\n icon={renderIcon()}\n label={label}\n colors={colors}\n />\n );\n};\n\nconst TagLabelIdSegment: React.FC<{\n series?: string;\n number?: string;\n compact?: boolean;\n theme: any;\n}> = ({ series, number, compact, theme }) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.id;\n\n if (!colors) return null;\n\n if (compact) {\n return (\n <Box\n height={SEGMENT_HEIGHT}\n paddingLeft={4}\n paddingRight={6}\n flexDirection=\"row\"\n alignItems=\"center\"\n >\n {series && (\n <Text color={colors.textCompact} fontSize={14} fontWeight=\"400\">\n {series}\n </Text>\n )}\n {number && (\n <Text color={colors.textCompact} fontSize={14} fontWeight=\"400\">\n {number}\n </Text>\n )}\n </Box>\n );\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingLeft={4}\n paddingRight={6}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={2}\n >\n {series && (\n <Box\n backgroundColor={colors.bgSeries}\n height={16}\n paddingHorizontal={2}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Text color={colors.textSeries} fontSize={14} fontWeight=\"500\">\n {series}\n </Text>\n </Box>\n )}\n {number && (\n <Text color={colors.textNumber} fontSize={14} fontWeight=\"500\">\n {number}\n </Text>\n )}\n </Box>\n );\n};\n\nconst TagLabelNameSegment: React.FC<{ label: string; theme: any }> = ({\n label,\n theme,\n}) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.name;\n\n if (!colors) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingHorizontal={4}\n justifyContent=\"center\"\n >\n <Text\n color={colors.text}\n fontSize={14}\n fontWeight=\"400\"\n whiteSpace=\"nowrap\"\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {label}\n </Text>\n </Box>\n );\n};\n\nconst TagLabelRaritySegment: React.FC<{ rarity: ReactNode; theme: any }> = ({\n rarity,\n theme,\n}) => {\n const tagLabel = theme?.colors?.control?.tagLabel;\n const colors = tagLabel?.rarity;\n\n if (!colors) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n backgroundColor={colors.bg}\n paddingHorizontal={6}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={18} color={colors.text}>\n {rarity || <Info size=\"100%\" />}\n </Icon>\n </Box>\n );\n};\n\nconst TagLabelStatusSegment: React.FC<{ type: StatusType; theme: any }> = ({\n type,\n theme,\n}) => {\n let bg;\n let icon;\n\n if (!theme?.colors?.background) return null;\n\n switch (type) {\n case \"sale\":\n bg = theme.colors.background.warning?.primary;\n icon = <Info size=\"100%\" />; // Info placeholder\n break;\n case \"maintenance\":\n bg = theme.colors.background.success?.primary;\n icon = <Settings size=\"100%\" />;\n break;\n case \"inactive\":\n bg = theme.colors.background.alert?.primary;\n icon = <X size=\"100%\" />;\n break;\n }\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n width={SEGMENT_HEIGHT}\n backgroundColor={bg}\n paddingHorizontal={2}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Icon size={20} color=\"black\">\n {icon}\n </Icon>\n </Box>\n );\n};\n\nconst TagLabelCustomSlot: React.FC<{ children: ReactNode; theme: any }> = ({\n children,\n theme,\n}) => {\n if (!theme?.colors?.background) return null;\n\n return (\n <Box\n height={SEGMENT_HEIGHT}\n backgroundColor={theme.colors.background.secondary}\n paddingHorizontal={6}\n justifyContent=\"center\"\n >\n {typeof children === \"string\" ? (\n <Text\n color={theme?.colors?.content?.primary}\n fontSize={14}\n fontWeight=\"500\"\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Box>\n );\n};\n\n// --- Main Component ---\n\nexport const TagLabel: React.FC<TagLabelProps> = ({\n entityType,\n subentityType,\n icon,\n entityIcon,\n showEntityIcon = true,\n showEntityLabel,\n subentityIcon,\n showSubentityIcon = true,\n showSubentityLabel,\n series,\n number,\n label,\n rarity,\n status,\n compact = false,\n children,\n style,\n testID,\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n // `compact` only seeds the DEFAULT for the label flags — an explicit\n // show*Label always wins over it.\n const entityLabelVisible = showEntityLabel ?? !compact;\n const subentityLabelVisible = showSubentityLabel ?? !compact;\n\n // `entityIcon` is the canonical prop; `icon` is the deprecated alias.\n const resolvedEntityIcon = entityIcon ?? icon;\n\n const renderEntity =\n Boolean(entityType) && (showEntityIcon || entityLabelVisible);\n const renderSubentity =\n Boolean(subentityType) && (showSubentityIcon || subentityLabelVisible);\n\n return (\n <Box\n testID={testID}\n flexDirection=\"row\"\n alignItems=\"center\"\n style={{\n overflow: \"hidden\",\n borderRadius: theme.shape.tagLabel.borderRadius,\n ...style,\n }}\n >\n {renderEntity && (\n <TagLabelEntitySegment\n type={entityType as EntityType}\n showIcon={showEntityIcon}\n showLabel={entityLabelVisible}\n icon={resolvedEntityIcon}\n theme={theme}\n />\n )}\n\n {renderSubentity && (\n <TagLabelSubentitySegment\n type={subentityType as SubentityType}\n showIcon={showSubentityIcon}\n showLabel={subentityLabelVisible}\n icon={subentityIcon}\n theme={theme}\n />\n )}\n\n {(series || number) && (\n <TagLabelIdSegment\n series={series}\n number={number}\n compact={compact}\n theme={theme}\n />\n )}\n\n {!compact && label && <TagLabelNameSegment label={label} theme={theme} />}\n\n {!compact && rarity && (\n <TagLabelRaritySegment rarity={rarity} theme={theme} />\n )}\n\n {!compact && status && (\n <TagLabelStatusSegment type={status} theme={theme} />\n )}\n\n {!compact && children && (\n <TagLabelCustomSlot theme={theme}>{children}</TagLabelCustomSlot>\n )}\n </Box>\n );\n};\n"],"mappings":"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","names":["jsx","View","jsx","jsx"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xsolla/xui-tag-label",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.219.0",
|
|
4
4
|
"main": "./web/index.js",
|
|
5
5
|
"module": "./web/index.mjs",
|
|
6
6
|
"types": "./web/index.d.ts",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"build:native": "PLATFORM=native tsup"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xsolla/xui-core": "0.
|
|
14
|
-
"@xsolla/xui-icons": "0.
|
|
15
|
-
"@xsolla/xui-primitives-core": "0.
|
|
13
|
+
"@xsolla/xui-core": "0.219.0",
|
|
14
|
+
"@xsolla/xui-icons": "0.219.0",
|
|
15
|
+
"@xsolla/xui-primitives-core": "0.219.0"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
18
|
"react": ">=16.8.0",
|