@xsolla/xui-stepper-native 0.64.0-pr56.1768348754

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/index.mjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Stepper.tsx","../../../primitives-native/src/Box.tsx","../../../primitives-native/src/Text.tsx","../../../primitives-native/src/Spinner.tsx","../../../primitives-native/src/Icon.tsx","../../../primitives-native/src/Divider.tsx","../../../primitives-native/src/Input.tsx","../../../primitives-native/src/TextArea.tsx","../../src/Step.tsx","../../src/utils/colors.ts","../../src/utils/platform.ts","../../src/StepTail.tsx","../../src/hooks/useStepHoverStyles.ts","../../src/ProgressStep.tsx","../../src/ProgressStepItem.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\n// @ts-ignore - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useDesignSystem } from \"@xsolla/xui-core\";\nimport { Step } from \"./Step\";\nimport type { StepperProps, StepStateType } from \"./types\";\n\nexport const Stepper = forwardRef<any, StepperProps>(\n (\n {\n direction = \"horizontal\",\n variantUI = \"current\",\n size = \"md\",\n steps,\n tail = false,\n onClick,\n className,\n customClass,\n palette = \"brand\",\n \"aria-label\": ariaLabel,\n ...rest\n },\n ref\n ) => {\n const { theme } = useDesignSystem();\n const isHorizontal = direction === \"horizontal\";\n const isCurrentVariant = variantUI === \"current\";\n const tailSize = size === \"sm\" ? 3 : 5;\n const tailOffset = tailSize / 2;\n\n // Generate default aria-label if not provided\n const defaultAriaLabel = `Stepper with ${steps.length} step${steps.length !== 1 ? \"s\" : \"\"}`;\n const stepperAriaLabel = ariaLabel || defaultAriaLabel;\n\n return (\n <Box\n ref={ref}\n role=\"navigation\"\n aria-label={stepperAriaLabel}\n flexDirection={isHorizontal ? \"row\" : \"column\"}\n justifyContent={isHorizontal ? \"flex-start\" : undefined}\n width=\"100%\"\n height=\"auto\"\n overflowX={isHorizontal ? \"auto\" : undefined}\n overflowY={isHorizontal ? \"hidden\" : undefined}\n paddingBottom={\n isHorizontal && isCurrentVariant ? tailOffset : undefined\n }\n borderBottomWidth={isHorizontal && isCurrentVariant ? 1 : 0}\n borderBottomColor={\n isHorizontal && isCurrentVariant\n ? theme.colors.border.secondary\n : undefined\n }\n borderLeftWidth={!isHorizontal && isCurrentVariant ? 1 : 0}\n borderLeftColor={\n !isHorizontal && isCurrentVariant\n ? theme.colors.border.secondary\n : undefined\n }\n className={[className, customClass].filter(Boolean).join(\" \")}\n {...rest}\n >\n {(() => {\n const coloredTailStates: Array<StepStateType> = [\n \"current\",\n \"loading\",\n \"alert\",\n \"warning\",\n ];\n let firstColoredTailIndex = -1;\n let lastColoredTailIndex = -1;\n\n steps.forEach((step, index) => {\n if (\n step.state &&\n coloredTailStates.includes(step.state) &&\n index < steps.length - 1\n ) {\n if (firstColoredTailIndex === -1) {\n firstColoredTailIndex = index;\n }\n lastColoredTailIndex = index;\n }\n });\n\n return steps.map((step, index) => {\n const isLast = index === steps.length - 1;\n const isFirstColoredTail = index === firstColoredTailIndex;\n const isLastColoredTail = index === lastColoredTailIndex;\n\n return (\n <Step\n size={size}\n {...step}\n key={step.key || `stepper-${index}`}\n onClick={onClick}\n stepNumber={index}\n tail={tail && variantUI === \"simple\" && !isLast}\n direction={direction}\n variantUI={variantUI}\n palette={palette}\n isLast={isLast}\n isFirstColoredTail={isFirstColoredTail}\n isLastColoredTail={isLastColoredTail}\n />\n );\n });\n })()}\n </Box>\n );\n }\n);\n\nStepper.displayName = \"Stepper\";\n\n// Export types\nexport type {\n StepClickType,\n StepperDirectionType,\n StepperPaletteType,\n StepperProps,\n StepperSize,\n StepperUIVariantType,\n StepStateType,\n StepType,\n} from \"./types\";\n","import React from \"react\";\nimport {\n View,\n Pressable,\n Image,\n ViewStyle,\n ImageStyle,\n DimensionValue,\n AnimatableNumericValue,\n} from \"react-native\";\nimport { BoxProps } from \"@xsolla/xui-primitives-core\";\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 alignItems,\n justifyContent,\n position,\n top,\n bottom,\n left,\n right,\n width,\n flex,\n overflow,\n zIndex,\n hoverStyle,\n pressStyle,\n style,\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 zIndex,\n height: height as DimensionValue,\n width: width 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 alignItems,\n justifyContent,\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 ...(style as ViewStyle),\n });\n\n const finalTestID = dataTestId || testID;\n\n // Destructure and drop web-only props from rest before passing to RN components\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 className,\n \"data-testid\": _dataTestId,\n ...nativeRest\n } = rest as Record<string, unknown>;\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 resizeMode=\"cover\"\n {...nativeRest}\n />\n );\n }\n\n if (onPress) {\n return (\n <Pressable\n onPress={onPress}\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 {...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 {...nativeRest}\n >\n {children}\n </View>\n );\n};\n","import React from \"react\";\nimport { Text as RNText, TextStyle, AccessibilityRole } from \"react-native\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\n\n// Map web roles to React Native accessibility roles\nconst roleMap: Record<string, AccessibilityRole> = {\n alert: \"alert\",\n heading: \"header\",\n button: \"button\",\n link: \"link\",\n text: \"text\",\n};\n\nexport const Text: React.FC<TextProps> = ({\n children,\n color,\n fontSize,\n fontWeight,\n fontFamily,\n id,\n role,\n ...props\n}) => {\n // Extract the first font name from a comma-separated list (e.g. for web-style font stacks)\n let resolvedFontFamily = fontFamily\n ? fontFamily.split(\",\")[0].replace(/['\"]/g, \"\").trim()\n : undefined;\n\n // On native, if we don't have the custom font loaded, it's better to use the system font\n // to avoid rendering issues or missing text.\n if (resolvedFontFamily === \"Pilat Wide Bold\") {\n resolvedFontFamily = undefined;\n }\n\n const style: TextStyle = {\n 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 };\n\n // Map role to React Native accessibilityRole\n const accessibilityRole = role ? roleMap[role] : undefined;\n\n return (\n <RNText style={style} testID={id} accessibilityRole={accessibilityRole}>\n {children}\n </RNText>\n );\n};\n","import type React from \"react\";\nimport { ActivityIndicator, View } from \"react-native\";\nimport type { SpinnerProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Spinner: React.FC<SpinnerProps> = ({\n color,\n size,\n role,\n \"aria-label\": ariaLabel,\n \"aria-live\": ariaLive,\n \"aria-describedby\": ariaDescribedBy,\n testID,\n}) => {\n return (\n <View\n accessible={true}\n accessibilityRole={role === \"status\" ? \"none\" : undefined}\n accessibilityLabel={ariaLabel}\n accessibilityLiveRegion={\n ariaLive === \"polite\"\n ? \"polite\"\n : ariaLive === \"assertive\"\n ? \"assertive\"\n : \"none\"\n }\n testID={testID}\n >\n <ActivityIndicator\n color={color}\n size={typeof size === \"number\" ? size : \"small\"}\n />\n </View>\n );\n};\n\nSpinner.displayName = \"Spinner\";\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> = ({ children, color, size }) => {\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 // @ts-ignore - passing color down to potential Text/Icon children\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 <View style={style}>{childrenWithProps}</View>;\n};\n","import React from \"react\";\nimport { View, ViewStyle } from \"react-native\";\nimport { DividerProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Divider: React.FC<DividerProps> = ({\n color,\n height,\n width,\n vertical,\n dashStroke,\n}) => {\n const style: ViewStyle = {\n backgroundColor: dashStroke\n ? \"transparent\"\n : color || \"rgba(255, 255, 255, 0.15)\",\n width: vertical ? (typeof width === \"number\" ? width : 1) : \"100%\",\n height: vertical ? \"100%\" : typeof height === \"number\" ? height : 1,\n ...(dashStroke && {\n borderStyle: \"dashed\",\n borderColor: color || \"rgba(255, 255, 255, 0.15)\",\n borderWidth: 0,\n ...(vertical\n ? { borderLeftWidth: typeof width === \"number\" ? width : 1 }\n : { borderTopWidth: typeof height === \"number\" ? height : 1 }),\n }),\n };\n\n return <View style={style} />;\n};\n","import React, { forwardRef } from \"react\";\nimport { TextInput as RNTextInput } from \"react-native\";\nimport { InputPrimitiveProps } from \"@xsolla/xui-primitives-core\";\n\n// Map web input types to React Native keyboard types\nconst keyboardTypeMap: Record<string, any> = {\n text: \"default\",\n number: \"numeric\",\n email: \"email-address\",\n tel: \"phone-pad\",\n url: \"url\",\n decimal: \"decimal-pad\",\n};\n\n// Map web inputMode to React Native keyboard types\nconst inputModeToKeyboardType: Record<string, any> = {\n none: \"default\",\n text: \"default\",\n decimal: \"decimal-pad\",\n numeric: \"number-pad\",\n tel: \"phone-pad\",\n search: \"default\",\n email: \"email-address\",\n url: \"url\",\n};\n\n// Map web autoComplete to React Native textContentType (iOS)\nconst autoCompleteToTextContentType: Record<string, any> = {\n \"one-time-code\": \"oneTimeCode\",\n email: \"emailAddress\",\n username: \"username\",\n password: \"password\",\n \"new-password\": \"newPassword\",\n tel: \"telephoneNumber\",\n \"postal-code\": \"postalCode\",\n name: \"name\",\n};\n\nexport const InputPrimitive = forwardRef<RNTextInput, InputPrimitiveProps>(\n (\n {\n value,\n placeholder,\n onChange,\n onChangeText,\n onFocus,\n onBlur,\n onKeyDown,\n disabled,\n secureTextEntry,\n style,\n color,\n fontSize,\n placeholderTextColor,\n maxLength,\n name,\n type,\n inputMode,\n autoComplete,\n id,\n \"aria-invalid\": ariaInvalid,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-label\": ariaLabel,\n \"aria-disabled\": ariaDisabled,\n \"data-testid\": dataTestId,\n },\n ref\n ) => {\n const handleChangeText = (text: string) => {\n onChangeText?.(text);\n\n // Create a synthetic event for onChange compatibility\n // Include nativeEvent and no-op methods to prevent runtime errors\n // when consumers expect DOM-like event behavior\n if (onChange) {\n const syntheticEvent = {\n target: { value: text },\n currentTarget: { value: text },\n type: \"change\",\n nativeEvent: { text },\n preventDefault: () => {},\n stopPropagation: () => {},\n isTrusted: false,\n } as unknown as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }\n };\n\n // Determine keyboard type - inputMode takes precedence over type\n const keyboardType = inputMode\n ? inputModeToKeyboardType[inputMode] || \"default\"\n : type\n ? keyboardTypeMap[type] || \"default\"\n : \"default\";\n\n // Determine textContentType for iOS autofill\n const textContentType = autoComplete\n ? autoCompleteToTextContentType[autoComplete]\n : undefined;\n\n return (\n <RNTextInput\n ref={ref}\n value={value}\n placeholder={placeholder}\n onChangeText={handleChangeText}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyPress={(e) => {\n // Map onKeyPress to onKeyDown for cross-platform compatibility\n // Include preventDefault to avoid runtime errors when consumers call it\n if (onKeyDown) {\n onKeyDown({\n key: e.nativeEvent.key,\n preventDefault: () => {},\n } as any);\n }\n }}\n editable={!disabled}\n secureTextEntry={secureTextEntry || type === \"password\"}\n keyboardType={keyboardType}\n textContentType={textContentType}\n style={[\n {\n color,\n fontSize: typeof fontSize === \"number\" ? fontSize : undefined,\n flex: 1,\n padding: 0,\n textAlign: (style as any)?.textAlign || \"left\",\n },\n style as any,\n ]}\n placeholderTextColor={placeholderTextColor}\n maxLength={maxLength}\n // React Native accessibility props\n testID={dataTestId || id}\n accessibilityLabel={ariaLabel}\n accessibilityHint={ariaDescribedBy}\n accessibilityState={{\n disabled: disabled || ariaDisabled,\n }}\n accessible={true}\n />\n );\n }\n);\n\nInputPrimitive.displayName = \"InputPrimitive\";\n","import React, { forwardRef } from \"react\";\nimport { TextInput as RNTextInput } from \"react-native\";\nimport { TextAreaPrimitiveProps } from \"@xsolla/xui-primitives-core\";\n\nexport const TextAreaPrimitive = forwardRef<\n RNTextInput,\n TextAreaPrimitiveProps\n>(\n (\n {\n value,\n placeholder,\n onChange,\n onChangeText,\n onFocus,\n onBlur,\n onKeyDown,\n disabled,\n style,\n color,\n fontSize,\n placeholderTextColor,\n maxLength,\n rows,\n id,\n \"aria-invalid\": ariaInvalid,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-label\": ariaLabel,\n \"aria-disabled\": ariaDisabled,\n \"data-testid\": dataTestId,\n },\n ref\n ) => {\n const handleChangeText = (text: string) => {\n onChangeText?.(text);\n\n if (onChange) {\n const syntheticEvent = {\n target: { value: text },\n currentTarget: { value: text },\n type: \"change\",\n nativeEvent: { text },\n preventDefault: () => {},\n stopPropagation: () => {},\n isTrusted: false,\n } as unknown as React.ChangeEvent<HTMLTextAreaElement>;\n onChange(syntheticEvent);\n }\n };\n\n return (\n <RNTextInput\n ref={ref}\n value={value}\n placeholder={placeholder}\n onChangeText={handleChangeText}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyPress={(e) => {\n if (onKeyDown) {\n onKeyDown({\n key: e.nativeEvent.key,\n preventDefault: () => {},\n } as any);\n }\n }}\n editable={!disabled}\n multiline={true}\n numberOfLines={rows || 4}\n style={[\n {\n color,\n fontSize: typeof fontSize === \"number\" ? fontSize : undefined,\n flex: 1,\n padding: 0,\n textAlignVertical: \"top\",\n textAlign: (style as any)?.textAlign || \"left\",\n },\n style as any,\n ]}\n placeholderTextColor={placeholderTextColor}\n maxLength={maxLength}\n testID={dataTestId || id}\n accessibilityLabel={ariaLabel}\n accessibilityHint={ariaDescribedBy}\n accessibilityState={{\n disabled: disabled || ariaDisabled,\n }}\n accessible={true}\n />\n );\n }\n);\n\nTextAreaPrimitive.displayName = \"TextAreaPrimitive\";\n","import React, { useCallback, useMemo } from \"react\";\n// @ts-ignore - this will be resolved at build time\nimport { Box, Text, Spinner, Divider } from \"@xsolla/xui-primitives\";\nimport { useDesignSystem } from \"@xsolla/xui-core\";\nimport { Check, X, AlertCircle } from \"@xsolla/xui-icons\";\nimport type {\n StepProps,\n StepStateType,\n StepperSize,\n StepperPaletteType,\n} from \"./types\";\nimport { getPaletteColor, hexToRgba } from \"./utils/colors\";\nimport { isWeb } from \"./utils/platform\";\nimport { StepTail } from \"./StepTail\";\nimport { useStepHoverStyles } from \"./hooks/useStepHoverStyles\";\n\ninterface StepStateProps {\n state: StepStateType;\n size: StepperSize;\n step: number;\n variantUI: \"current\" | \"simple\";\n disabled: boolean;\n noClick: boolean;\n palette: StepperPaletteType;\n theme: ReturnType<typeof useDesignSystem>[\"theme\"];\n mode: ReturnType<typeof useDesignSystem>[\"mode\"];\n sizeStyles: ReturnType<\n ReturnType<typeof useDesignSystem>[\"theme\"][\"sizing\"][\"stepper\"]\n >;\n className?: string;\n isLast?: boolean;\n}\n\nconst StepState: React.FC<StepStateProps> = ({\n state,\n size,\n step,\n variantUI,\n disabled,\n noClick,\n palette,\n theme,\n mode,\n sizeStyles,\n className,\n isLast = false,\n}) => {\n const paletteColor = getPaletteColor(palette, theme, \"active\");\n const paletteTextColor = getPaletteColor(palette, theme, \"text\");\n\n const iconStyles = useMemo(() => {\n if (variantUI === \"simple\") {\n switch (state) {\n case \"current\":\n return {\n backgroundColor: paletteColor,\n borderColor: paletteColor,\n color: theme.colors.content.static.light,\n };\n case \"incomplete\":\n return {\n backgroundColor: \"transparent\",\n borderColor: theme.colors.control.input.bgDisable,\n color: theme.colors.control.input.textDisable,\n };\n case \"loading\":\n const loadingBg = hexToRgba(paletteColor, 0.05);\n return {\n backgroundColor: loadingBg,\n borderColor: \"transparent\",\n color: paletteColor,\n };\n case \"complete\":\n return {\n backgroundColor: \"transparent\",\n borderColor: paletteColor,\n color: paletteColor,\n };\n case \"alert\":\n return {\n backgroundColor: theme.colors.content.alert.primary,\n borderColor: theme.colors.content.alert.primary,\n color: theme.colors.content.static.light,\n };\n case \"warning\":\n return {\n backgroundColor: theme.colors.content.warning.primary,\n borderColor: theme.colors.content.warning.primary,\n color: theme.colors.content.static.light,\n };\n default:\n return {\n backgroundColor: \"transparent\",\n borderColor: theme.colors.control.input.bgDisable,\n color: theme.colors.control.input.textDisable,\n };\n }\n } else {\n switch (state) {\n case \"current\":\n return {\n backgroundColor: paletteColor,\n borderColor: paletteColor,\n color: theme.colors.content.static.light,\n };\n case \"incomplete\":\n if (mode === \"light\") {\n return {\n backgroundColor: theme.colors.content.static.dark,\n borderColor: theme.colors.content.static.dark,\n color: theme.colors.content.static.light,\n };\n } else {\n return {\n backgroundColor: theme.colors.content.static.light,\n borderColor: theme.colors.content.static.light,\n color: theme.colors.content.static.dark,\n };\n }\n case \"loading\":\n const loadingBg = hexToRgba(paletteColor, 0.05);\n return {\n backgroundColor: loadingBg,\n borderColor: \"transparent\",\n color: paletteColor,\n };\n case \"complete\":\n return {\n backgroundColor: paletteColor,\n borderColor: paletteColor,\n color: theme.colors.content.static.light,\n };\n case \"alert\":\n return {\n backgroundColor: theme.colors.content.alert.primary,\n borderColor: theme.colors.content.alert.primary,\n color: theme.colors.content.static.light,\n };\n case \"warning\":\n return {\n backgroundColor: theme.colors.content.warning.primary,\n borderColor: theme.colors.content.warning.primary,\n color: theme.colors.content.static.light,\n };\n default:\n return {\n backgroundColor: theme.colors.control.input.bg,\n borderColor: theme.colors.control.input.bg,\n color: theme.colors.control.brand.primary.text.primary,\n };\n }\n }\n }, [state, variantUI, theme, paletteColor]);\n\n const iconHoverStyles = useMemo(() => {\n if (disabled || noClick) return {};\n if (variantUI === \"simple\") {\n if (isLast) {\n return {\n backgroundColor: paletteColor,\n borderColor: paletteColor,\n color: theme.colors.content.static.light,\n opacity: 0.9,\n };\n }\n switch (state) {\n case \"current\":\n return {\n backgroundColor: paletteColor,\n borderColor: paletteColor,\n opacity: 0.9,\n };\n case \"incomplete\":\n return {\n borderColor: paletteColor,\n color: paletteColor,\n opacity: 0.9,\n };\n case \"loading\":\n return {\n color: paletteColor,\n opacity: 0.9,\n };\n case \"complete\":\n return {\n borderColor: paletteColor,\n color: paletteColor,\n opacity: 0.9,\n };\n case \"alert\":\n case \"warning\":\n return {};\n default:\n return {};\n }\n } else {\n switch (state) {\n case \"current\":\n return {\n backgroundColor: theme.colors.control.brand.primary.bgHover,\n };\n case \"incomplete\":\n return {\n backgroundColor:\n theme.colors.control.input.bgHover ||\n theme.colors.control.input.bg,\n };\n case \"loading\":\n return {\n color: theme.colors.control.brand.primary.bgHover,\n };\n case \"complete\":\n return {\n backgroundColor: theme.colors.control.brand.primary.bgHover,\n };\n case \"alert\":\n case \"warning\":\n return {};\n default:\n return {};\n }\n }\n }, [state, variantUI, disabled, noClick, theme, paletteColor]);\n\n const iconSize = size === \"sm\" ? 18 : 18;\n\n return (\n <Box\n className={className}\n width={sizeStyles.iconSize}\n height={sizeStyles.iconSize}\n borderRadius={sizeStyles.iconSize / 2}\n backgroundColor={iconStyles.backgroundColor}\n borderColor={iconStyles.borderColor}\n borderWidth={iconStyles.borderColor !== \"transparent\" ? 1 : 0}\n alignItems=\"center\"\n justifyContent=\"center\"\n flexShrink={0}\n >\n {state === \"loading\" ? (\n <Spinner size={size === \"sm\" ? 16 : 20} color={iconStyles.color} />\n ) : state === \"complete\" ? (\n <Check size={iconSize} color={iconStyles.color} />\n ) : state === \"alert\" ? (\n <X size={iconSize} color={iconStyles.color} />\n ) : state === \"warning\" ? (\n <AlertCircle size={iconSize} color={iconStyles.color} />\n ) : (\n <Text\n color={iconStyles.color}\n fontSize={size === \"sm\" ? 12 : 14}\n fontWeight=\"600\"\n >\n {step}\n </Text>\n )}\n </Box>\n );\n};\n\nexport const Step: React.FC<StepProps> = ({\n title,\n state = \"incomplete\",\n description,\n size,\n onClick,\n tail,\n stepNumber,\n disabled = false,\n direction,\n variantUI,\n noClick = false,\n palette = \"brand\",\n isLast = false,\n isFirstColoredTail = false,\n isLastColoredTail = false,\n}) => {\n const { theme, mode } = useDesignSystem();\n // @ts-ignore\n const sizeStyles = theme.sizing.stepper(size);\n\n const stepClassName = useMemo(\n () =>\n `step-${stepNumber}-${variantUI}-${direction}-${size}-${state}-${palette}`,\n [stepNumber, variantUI, direction, size, state, palette]\n );\n\n useStepHoverStyles(\n variantUI,\n state,\n stepClassName,\n theme,\n isLast,\n disabled,\n noClick,\n palette\n );\n\n const stepClick = useCallback(() => {\n if (onClick && !disabled && !noClick) {\n onClick({\n number: stepNumber,\n step: {\n title,\n description,\n state,\n disabled,\n },\n });\n }\n }, [onClick, disabled, noClick, stepNumber, title, description, state]);\n\n // Generate aria-label for the step\n const stepAriaLabel = useMemo(() => {\n const stepNum = stepNumber + 1;\n const titleText = typeof title === \"string\" ? title : \"Step\";\n const descriptionText =\n description && typeof description === \"string\" ? description : \"\";\n const stateText =\n {\n current: \"current\",\n incomplete: \"incomplete\",\n loading: \"loading\",\n complete: \"complete\",\n alert: \"alert\",\n warning: \"warning\",\n }[state] || \"incomplete\";\n\n let label = `Step ${stepNum}: ${titleText}`;\n if (descriptionText) {\n label += `, ${descriptionText}`;\n }\n label += `, ${stateText}`;\n if (isLast) {\n label += \", last step\";\n }\n return label;\n }, [stepNumber, title, description, state, isLast]);\n\n // Keyboard handler for accessibility\n // Enter triggers on keydown, Space triggers on keyup (button semantics)\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" && !disabled && !noClick) {\n event.preventDefault();\n stepClick();\n }\n // Prevent default scroll on Space keydown\n if (event.key === \" \" && !disabled && !noClick) {\n event.preventDefault();\n }\n },\n [stepClick, disabled, noClick]\n );\n\n const handleKeyUp = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \" \" && !disabled && !noClick) {\n event.preventDefault();\n stepClick();\n }\n },\n [stepClick, disabled, noClick]\n );\n\n // Determine if step is interactive\n const isInteractive = !disabled && !noClick && !!onClick;\n const isCurrent = state === \"current\";\n\n const titleStyles = useMemo(() => {\n if (variantUI === \"simple\") {\n const sizeStylesMap = {\n sm: {\n fontSize: 14,\n lineHeight: 22,\n paddingTop: 1,\n paddingBottom: 1,\n },\n md: {\n fontSize: 16,\n lineHeight: 24,\n paddingTop: 4,\n paddingBottom: 4,\n },\n };\n return {\n ...sizeStylesMap[size],\n color:\n state === \"incomplete\"\n ? theme.colors.control.input.textDisable\n : theme.colors.content.primary,\n fontWeight: \"500\",\n };\n } else {\n const sizeDirectionStyles = {\n sm_horizontal: {\n fontSize: 16,\n lineHeight: 20,\n fontWeight: \"500\",\n },\n md_horizontal: {\n fontSize: 18,\n lineHeight: 24,\n fontWeight: \"500\",\n },\n sm_vertical: {\n fontSize: 18,\n lineHeight: 20,\n fontWeight: \"500\",\n },\n md_vertical: {\n fontSize: 18,\n lineHeight: 24,\n fontWeight: \"500\",\n },\n };\n const stateColors: Record<string, string> = {\n incomplete: theme.colors.content.secondary,\n current: getPaletteColor(palette, theme, \"text\"),\n loading: getPaletteColor(palette, theme, \"text\"),\n alert: theme.colors.content.primary,\n warning: theme.colors.content.primary,\n complete: theme.colors.content.primary,\n };\n return {\n ...sizeDirectionStyles[\n `${size}_${direction}` as keyof typeof sizeDirectionStyles\n ],\n color: stateColors[state] || theme.colors.content.primary,\n };\n }\n }, [variantUI, direction, size, state, theme, palette]);\n\n const descriptionStyles = useMemo(() => {\n const sizeStylesMap = {\n sm: {\n fontSize: 12,\n lineHeight: variantUI === \"simple\" ? 20 : 18,\n marginTop: variantUI === \"simple\" ? 0 : 2,\n },\n md: {\n fontSize: 14,\n lineHeight: variantUI === \"simple\" ? 22 : 20,\n marginTop: variantUI === \"simple\" ? 0 : 4,\n },\n };\n let descriptionColor = theme.colors.content.secondary;\n if (variantUI === \"current\" && (state === \"incomplete\" || !state)) {\n descriptionColor =\n theme.colors.content.tertiary || \"rgba(24, 23, 28, 0.5)\";\n }\n return {\n ...sizeStylesMap[size],\n color: descriptionColor,\n fontWeight: \"400\",\n };\n }, [size, variantUI, state, theme]);\n\n const contentWrapperStyles = useMemo(() => {\n if (variantUI === \"simple\") {\n if (direction === \"horizontal\") {\n return {\n marginLeft: size === \"sm\" ? 8 : 12,\n flex: 1,\n };\n }\n return {\n marginLeft: size === \"sm\" ? 8 : 12,\n };\n } else {\n const baseStyles = {\n marginTop: size === \"sm\" ? 10 : 12,\n };\n if (direction === \"horizontal\") {\n return {\n ...baseStyles,\n paddingLeft: size === \"sm\" ? 20 : 24,\n paddingRight: size === \"sm\" ? 20 : 24,\n gap: 12,\n };\n } else {\n return {};\n }\n return baseStyles;\n }\n }, [variantUI, direction, size]);\n\n const stepWrapperStyles = useMemo(() => {\n if (variantUI === \"current\") {\n if (direction === \"horizontal\") {\n return {\n flex: 1,\n minWidth: 0,\n flexShrink: 0,\n paddingBottom: size === \"sm\" ? 27 : 37,\n };\n } else {\n return {\n paddingTop: size === \"sm\" ? 20 : 24,\n paddingBottom: size === \"sm\" ? 20 : 24,\n paddingLeft: size === \"sm\" ? 24 : 32,\n paddingRight: size === \"sm\" ? 10 : 10,\n minWidth: 184,\n };\n }\n } else {\n if (direction === \"horizontal\") {\n return {\n flexShrink: 0,\n marginRight: isLast ? 0 : size === \"sm\" ? 8 : 12,\n };\n } else {\n return {\n marginBottom: isLast ? 0 : 8,\n minHeight: 56,\n };\n }\n }\n }, [variantUI, direction, size, isLast]);\n\n if (variantUI === \"current\" && direction === \"horizontal\") {\n return (\n <Box\n role={isWeb() ? \"button\" : undefined}\n aria-label={isWeb() ? stepAriaLabel : undefined}\n aria-current={isWeb() && isCurrent ? \"step\" : undefined}\n aria-disabled={isWeb() && (disabled || noClick) ? true : undefined}\n tabIndex={isWeb() && isInteractive ? 0 : undefined}\n onPress={stepClick}\n onKeyDown={isWeb() && isInteractive ? handleKeyDown : undefined}\n onKeyUp={isWeb() && isInteractive ? handleKeyUp : undefined}\n disabled={disabled}\n data-testid=\"step\"\n className={stepClassName}\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n position=\"relative\"\n {...stepWrapperStyles}\n {...(isWeb() && {\n cursor: disabled || noClick ? \"default\" : \"pointer\",\n })}\n >\n <StepTail\n variantUI={variantUI}\n direction={direction}\n size={size}\n state={state}\n isLast={isLast}\n isFirstColoredTail={isFirstColoredTail}\n isLastColoredTail={isLastColoredTail}\n palette={palette}\n />\n <Box\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n gap={12}\n paddingLeft={size === \"sm\" ? 20 : 24}\n paddingRight={size === \"sm\" ? 20 : 24}\n width=\"100%\"\n >\n <Box flexDirection=\"column\" alignItems=\"flex-start\">\n <StepState\n state={state}\n size={size}\n step={stepNumber + 1}\n variantUI={variantUI}\n disabled={disabled}\n noClick={noClick}\n palette={palette}\n theme={theme}\n mode={mode}\n sizeStyles={sizeStyles}\n className={`step-icon-${stepClassName}`}\n isLast={isLast}\n />\n </Box>\n <Box\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n gap={4}\n width=\"100%\"\n >\n {typeof title === \"string\" ? (\n <Text\n className={`step-title-${stepClassName}`}\n color={titleStyles.color}\n fontSize={titleStyles.fontSize}\n fontWeight={titleStyles.fontWeight}\n lineHeight={titleStyles.lineHeight}\n >\n {title}\n </Text>\n ) : (\n title\n )}\n {description && (\n <Box width=\"100%\" alignItems=\"flex-start\">\n {typeof description === \"string\" ||\n typeof description === \"number\" ? (\n <Text\n className={`step-description-${stepClassName}`}\n color={descriptionStyles.color}\n fontSize={descriptionStyles.fontSize}\n fontWeight={descriptionStyles.fontWeight}\n lineHeight={descriptionStyles.lineHeight}\n >\n {description}\n </Text>\n ) : (\n description\n )}\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n );\n }\n\n if (variantUI === \"simple\" && direction === \"horizontal\") {\n return (\n <Box\n role={isWeb() ? \"button\" : undefined}\n aria-label={isWeb() ? stepAriaLabel : undefined}\n aria-current={isWeb() && isCurrent ? \"step\" : undefined}\n aria-disabled={isWeb() && (disabled || noClick) ? true : undefined}\n tabIndex={isWeb() && isInteractive ? 0 : undefined}\n onPress={stepClick}\n onKeyDown={isWeb() && isInteractive ? handleKeyDown : undefined}\n onKeyUp={isWeb() && isInteractive ? handleKeyUp : undefined}\n disabled={disabled}\n data-testid=\"step\"\n className={stepClassName}\n flexDirection=\"row\"\n alignItems=\"flex-start\"\n {...stepWrapperStyles}\n {...(isWeb() && {\n cursor: disabled || noClick ? \"default\" : \"pointer\",\n })}\n >\n <Box flexDirection=\"column\">\n <StepState\n state={state}\n size={size}\n step={stepNumber + 1}\n variantUI={variantUI}\n disabled={disabled}\n noClick={noClick}\n palette={palette}\n theme={theme}\n mode={mode}\n sizeStyles={sizeStyles}\n isLast={isLast}\n />\n </Box>\n <Box {...contentWrapperStyles}>\n <Box\n flexDirection=\"row\"\n alignItems=\"center\"\n width=\"100%\"\n paddingTop={\n variantUI === \"simple\" ? (size === \"sm\" ? 1 : 4) : undefined\n }\n paddingBottom={\n variantUI === \"simple\" ? (size === \"sm\" ? 1 : 4) : undefined\n }\n >\n {typeof title === \"string\" ? (\n <Text\n className={`step-title-${stepClassName}`}\n color={titleStyles.color}\n fontSize={titleStyles.fontSize}\n fontWeight={titleStyles.fontWeight}\n lineHeight={titleStyles.lineHeight}\n >\n {title}\n </Text>\n ) : (\n title\n )}\n {tail && (\n <Box\n flex={1}\n marginLeft={size === \"sm\" ? 8 : 12}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Divider color={theme.colors.border.secondary} />\n </Box>\n )}\n </Box>\n {description && (\n <Box>\n {typeof description === \"string\" ||\n typeof description === \"number\" ? (\n <Text\n className={`step-description-${stepClassName}`}\n color={descriptionStyles.color}\n fontSize={descriptionStyles.fontSize}\n fontWeight={descriptionStyles.fontWeight}\n lineHeight={descriptionStyles.lineHeight}\n >\n {description}\n </Text>\n ) : (\n description\n )}\n </Box>\n )}\n </Box>\n </Box>\n );\n }\n\n if (variantUI === \"current\" && direction === \"vertical\") {\n return (\n <Box\n role={isWeb() ? \"button\" : undefined}\n aria-label={isWeb() ? stepAriaLabel : undefined}\n aria-current={isWeb() && isCurrent ? \"step\" : undefined}\n aria-disabled={isWeb() && (disabled || noClick) ? true : undefined}\n tabIndex={isWeb() && isInteractive ? 0 : undefined}\n onPress={stepClick}\n onKeyDown={isWeb() && isInteractive ? handleKeyDown : undefined}\n onKeyUp={isWeb() && isInteractive ? handleKeyUp : undefined}\n disabled={disabled}\n data-testid=\"step\"\n className={stepClassName}\n flexDirection=\"row\"\n alignItems=\"flex-start\"\n position=\"relative\"\n {...stepWrapperStyles}\n {...(isWeb() && {\n cursor: disabled || noClick ? \"default\" : \"pointer\",\n })}\n >\n <StepTail\n variantUI={variantUI}\n direction={direction}\n size={size}\n state={state}\n isLast={isLast}\n isFirstColoredTail={isFirstColoredTail}\n isLastColoredTail={isLastColoredTail}\n palette={palette}\n />\n <Box\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n gap={12}\n paddingTop={size === \"sm\" ? 20 : 24}\n paddingBottom={size === \"sm\" ? 20 : 24}\n flex={1}\n >\n <Box flexDirection=\"column\" alignItems=\"flex-start\">\n <StepState\n state={state}\n size={size}\n step={stepNumber + 1}\n variantUI={variantUI}\n disabled={disabled}\n noClick={noClick}\n palette={palette}\n theme={theme}\n mode={mode}\n sizeStyles={sizeStyles}\n className={`step-icon-${stepClassName}`}\n isLast={isLast}\n />\n </Box>\n <Box\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n gap={4}\n width=\"100%\"\n >\n {typeof title === \"string\" ? (\n <Text\n className={`step-title-${stepClassName}`}\n color={titleStyles.color}\n fontSize={titleStyles.fontSize}\n fontWeight={titleStyles.fontWeight}\n lineHeight={titleStyles.lineHeight}\n >\n {title}\n </Text>\n ) : (\n title\n )}\n {description && (\n <Box>\n {typeof description === \"string\" ||\n typeof description === \"number\" ? (\n <Text\n className={`step-description-${stepClassName}`}\n color={descriptionStyles.color}\n fontSize={descriptionStyles.fontSize}\n fontWeight={descriptionStyles.fontWeight}\n lineHeight={descriptionStyles.lineHeight}\n >\n {description}\n </Text>\n ) : (\n description\n )}\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n );\n }\n\n return (\n <Box\n role={isWeb() ? \"button\" : undefined}\n aria-label={isWeb() ? stepAriaLabel : undefined}\n aria-current={isWeb() && isCurrent ? \"step\" : undefined}\n aria-disabled={isWeb() && (disabled || noClick) ? true : undefined}\n tabIndex={isWeb() && isInteractive ? 0 : undefined}\n onPress={stepClick}\n onKeyDown={isWeb() && isInteractive ? handleKeyDown : undefined}\n onKeyUp={isWeb() && isInteractive ? handleKeyUp : undefined}\n disabled={disabled}\n data-testid=\"step\"\n className={stepClassName}\n flexDirection=\"row\"\n alignItems=\"flex-start\"\n {...stepWrapperStyles}\n {...(isWeb() && { cursor: disabled || noClick ? \"default\" : \"pointer\" })}\n >\n <Box flexDirection=\"column\" alignItems=\"center\" flexShrink={0}>\n <StepState\n state={state}\n size={size}\n step={stepNumber + 1}\n variantUI={variantUI}\n disabled={disabled}\n noClick={noClick}\n palette={palette}\n theme={theme}\n mode={mode}\n sizeStyles={sizeStyles}\n />\n {tail && !isLast && (\n <Box\n width={1}\n flex={1}\n minHeight={24}\n marginTop={8}\n alignItems=\"stretch\"\n justifyContent=\"flex-start\"\n position=\"relative\"\n backgroundColor={theme.colors.border.secondary}\n />\n )}\n </Box>\n <Box {...contentWrapperStyles} flex={1}>\n {typeof title === \"string\" ? (\n <Text\n color={titleStyles.color}\n fontSize={titleStyles.fontSize}\n fontWeight={titleStyles.fontWeight}\n lineHeight={titleStyles.lineHeight}\n >\n {title}\n </Text>\n ) : (\n title\n )}\n {description && (\n <Box marginTop={descriptionStyles.marginTop}>\n {typeof description === \"string\" ||\n typeof description === \"number\" ? (\n <Text\n color={descriptionStyles.color}\n fontSize={descriptionStyles.fontSize}\n fontWeight={descriptionStyles.fontWeight}\n lineHeight={descriptionStyles.lineHeight}\n >\n {description}\n </Text>\n ) : (\n description\n )}\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n","import type { StepperPaletteType } from \"../types\";\nimport type { useDesignSystem } from \"@xsolla/xui-core\";\n\nexport const getPaletteColor = (\n palette: StepperPaletteType,\n theme: ReturnType<typeof useDesignSystem>[\"theme\"],\n type: \"active\" | \"text\" = \"text\"\n): string => {\n const fallback = type === \"active\" ? \"#00d4ff\" : \"#00d4ff\";\n\n if (palette === \"brand\") {\n const brandText = theme.colors?.content?.brand?.secondary;\n const brandActive =\n theme.colors?.control?.brand?.primary?.bgHover || brandText;\n\n if (type === \"active\") {\n return brandActive || fallback;\n }\n return brandText || fallback;\n }\n\n if (palette === \"brandSecondary\") {\n const extraText = theme.colors?.content?.brandExtra?.primary;\n const extraActive =\n theme.colors?.control?.brandExtra?.primary?.bgHover || extraText;\n\n if (type === \"active\") {\n return extraActive || \"#d9ff66\";\n }\n return extraText || \"#d9ff66\";\n }\n\n const brandText = theme.colors?.content?.brand?.secondary;\n const brandActive =\n theme.colors?.control?.brand?.primary?.bgHover || brandText;\n return (type === \"active\" ? brandActive : brandText) || fallback;\n};\n\nexport const hexToRgba = (hex: string, opacity: number): string => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (result) {\n const r = parseInt(result[1], 16);\n const g = parseInt(result[2], 16);\n const b = parseInt(result[3], 16);\n return `rgba(${r}, ${g}, ${b}, ${opacity})`;\n }\n return hex;\n};\n","/**\n * Platform detection utility\n * Detects if we're running on web or React Native\n */\nexport const isWeb = (): boolean => {\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n};\n\nexport const isNative = (): boolean => {\n return !isWeb();\n};\n","import React from \"react\";\nimport { Box } from \"@xsolla/xui-primitives\";\nimport type { StepperSize, StepperPaletteType, StepStateType } from \"./types\";\nimport { getPaletteColor, hexToRgba } from \"./utils/colors\";\nimport { useDesignSystem } from \"@xsolla/xui-core\";\nimport { isWeb } from \"./utils/platform\";\n\ninterface StepTailProps {\n variantUI: \"current\" | \"simple\";\n direction: \"horizontal\" | \"vertical\";\n size: StepperSize;\n state: StepStateType;\n isLast: boolean;\n isFirstColoredTail: boolean;\n isLastColoredTail: boolean;\n palette: StepperPaletteType;\n}\n\nexport const StepTail: React.FC<StepTailProps> = ({\n variantUI,\n direction,\n size,\n state,\n isLast,\n isFirstColoredTail,\n isLastColoredTail,\n palette,\n}) => {\n const { theme } = useDesignSystem();\n\n if (variantUI !== \"current\" || isLast) {\n return null;\n }\n\n const tailSize = size === \"sm\" ? 3 : 5;\n const verticalTailWidth = size === \"sm\" ? 2 : 4;\n const isHorizontal = direction === \"horizontal\";\n\n let tailBgColor = \"transparent\";\n let tailHeight = tailSize;\n let tailWidth = tailSize;\n let borderRadius: number = 0;\n let borderRadiusStyle: React.CSSProperties | undefined;\n\n try {\n if (isFirstColoredTail && isLastColoredTail) {\n borderRadius = 4;\n } else if (isFirstColoredTail) {\n if (isWeb()) {\n borderRadiusStyle = isHorizontal\n ? { borderRadius: \"4px 0 0 4px\" }\n : { borderRadius: \"4px 4px 0 0\" };\n } else {\n if (isHorizontal) {\n borderRadiusStyle = {\n borderTopLeftRadius: 4,\n borderBottomLeftRadius: 4,\n };\n } else {\n borderRadiusStyle = {\n borderTopLeftRadius: 4,\n borderTopRightRadius: 4,\n };\n }\n }\n } else if (isLastColoredTail) {\n if (isWeb()) {\n borderRadiusStyle = isHorizontal\n ? { borderRadius: \"0 4px 4px 0\" }\n : { borderRadius: \"0 0 4px 4px\" };\n } else {\n if (isHorizontal) {\n borderRadiusStyle = {\n borderTopRightRadius: 4,\n borderBottomRightRadius: 4,\n };\n } else {\n borderRadiusStyle = {\n borderBottomLeftRadius: 4,\n borderBottomRightRadius: 4,\n };\n }\n }\n }\n\n if (state === \"current\" || state === \"loading\") {\n tailBgColor = getPaletteColor(palette, theme, \"active\");\n tailHeight = tailSize;\n tailWidth = isHorizontal ? tailSize : verticalTailWidth;\n } else if (state === \"alert\") {\n tailBgColor = theme.colors.content.alert.primary;\n tailHeight = tailSize;\n tailWidth = isHorizontal ? tailSize : verticalTailWidth;\n } else if (state === \"warning\") {\n tailBgColor = theme.colors.content.warning.primary;\n tailHeight = tailSize;\n tailWidth = isHorizontal ? tailSize : verticalTailWidth;\n } else if (state === \"complete\") {\n return null;\n } else {\n const paletteColor = getPaletteColor(palette, theme, \"active\");\n tailBgColor = hexToRgba(paletteColor, 0.15);\n tailHeight = 2;\n tailWidth = isHorizontal ? 2 : 2;\n borderRadius = 0;\n }\n } catch {\n return null;\n }\n\n const borderOffset = isHorizontal ? -(tailHeight / 2 + 0.5) : -3;\n\n if (isHorizontal) {\n return (\n <Box\n position=\"absolute\"\n bottom={borderOffset}\n left={0}\n width=\"100%\"\n height={tailHeight}\n backgroundColor={tailBgColor}\n borderRadius={borderRadius}\n zIndex={1}\n style={borderRadiusStyle}\n />\n );\n }\n\n return (\n <Box\n position=\"absolute\"\n top={0}\n left={borderOffset}\n height=\"100%\"\n width={tailWidth}\n backgroundColor={tailBgColor}\n borderRadius={borderRadius}\n zIndex={1}\n style={borderRadiusStyle}\n />\n );\n};\n","import { useEffect } from \"react\";\nimport { isWeb } from \"../utils/platform\";\nimport { getPaletteColor } from \"../utils/colors\";\nimport type { StepStateType, StepperPaletteType } from \"../types\";\nimport type { useDesignSystem } from \"@xsolla/xui-core\";\n\n/**\n * Hook to inject hover styles for web only\n * Returns early on React Native\n */\nexport const useStepHoverStyles = (\n variantUI: \"current\" | \"simple\",\n state: StepStateType,\n className: string,\n theme: ReturnType<typeof useDesignSystem>[\"theme\"],\n isLast: boolean,\n disabled: boolean,\n noClick: boolean,\n palette: StepperPaletteType\n) => {\n useEffect(() => {\n if (!isWeb()) {\n return;\n }\n\n const styleId = `step-hover-styles-${className}`;\n let styleElement = document.getElementById(\n styleId\n ) as HTMLStyleElement | null;\n\n if (!styleElement) {\n styleElement = document.createElement(\"style\");\n styleElement.id = styleId;\n document.head.appendChild(styleElement);\n }\n\n const getHoverTextColor = () => {\n if (state === \"alert\") {\n return theme.colors.content.alert.primary;\n } else if (state === \"warning\") {\n return theme.colors.content.warning.primary;\n } else {\n return getPaletteColor(palette, theme, \"text\");\n }\n };\n\n let hoverCss = \"\";\n if (!disabled && !noClick) {\n const hoverTextColor = getHoverTextColor();\n const hoverPaletteColor = getPaletteColor(palette, theme, \"active\");\n\n let circleHoverCss = \"\";\n if (isLast) {\n const whiteColor = theme.colors.content.static.light;\n circleHoverCss = `\n .step-icon-${className} {\n background-color: ${hoverPaletteColor} !important;\n border-color: ${hoverPaletteColor} !important;\n color: ${whiteColor} !important;\n }\n `;\n } else {\n if (variantUI === \"simple\") {\n if (state === \"incomplete\") {\n const whiteColor = theme.colors.content.static.light;\n circleHoverCss = `\n .step-icon-${className} {\n background-color: ${hoverPaletteColor} !important;\n border-color: ${hoverPaletteColor} !important;\n color: ${whiteColor} !important;\n }\n `;\n } else if (state === \"complete\") {\n circleHoverCss = `\n .step-icon-${className} {\n border-color: ${hoverPaletteColor} !important;\n color: ${hoverPaletteColor} !important;\n }\n `;\n } else if (state === \"loading\") {\n circleHoverCss = `\n .step-icon-${className} {\n color: ${hoverPaletteColor} !important;\n }\n `;\n }\n } else {\n if (state === \"incomplete\") {\n const whiteColor = theme.colors.content.static.light;\n circleHoverCss = `\n .step-icon-${className} {\n background-color: ${hoverPaletteColor} !important;\n border-color: ${hoverPaletteColor} !important;\n color: ${whiteColor} !important;\n }\n `;\n } else if (state === \"complete\") {\n circleHoverCss = `\n .step-icon-${className} {\n border-color: ${hoverPaletteColor} !important;\n color: ${hoverPaletteColor} !important;\n }\n `;\n } else if (state === \"loading\") {\n circleHoverCss = `\n .step-icon-${className} {\n color: ${hoverPaletteColor} !important;\n }\n `;\n }\n }\n }\n\n hoverCss = `\n &:hover {\n .step-title-${className} {\n color: ${hoverTextColor} !important;\n }\n .step-description-${className} {\n color: ${hoverTextColor} !important;\n }\n ${circleHoverCss}\n }\n `;\n }\n\n const css = `\n .${className} {\n ${hoverCss}\n }\n `;\n\n styleElement.textContent = css;\n\n return () => {\n if (styleElement && styleElement.parentNode) {\n styleElement.parentNode.removeChild(styleElement);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [variantUI, state, className, isLast, disabled, noClick, palette, theme]);\n};\n","import React from \"react\";\n// @ts-ignore - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useDesignSystem } from \"@xsolla/xui-core\";\nimport { ArrowLeft, ArrowRight } from \"@xsolla/xui-icons\";\nimport { ProgressStepItem } from \"./ProgressStepItem\";\nimport type { ProgressStepProps } from \"./types\";\n\nexport const ProgressStep: React.FC<ProgressStepProps> = ({\n count,\n activeStep,\n size = \"md\",\n arrows = true,\n onStepPress,\n className,\n}) => {\n const { theme } = useDesignSystem();\n\n const handlePrev = () => {\n if (activeStep > 0 && onStepPress) {\n onStepPress(activeStep - 1);\n }\n };\n\n const handleNext = () => {\n if (activeStep < count - 1 && onStepPress) {\n onStepPress(activeStep + 1);\n }\n };\n\n const arrowSize = size === \"md\" ? 24 : 18;\n const iconSize = size === \"md\" ? 18 : 14;\n const isFirst = activeStep <= 0;\n const isLast = activeStep >= count - 1;\n\n return (\n <Box\n className={className}\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={4}\n height={size === \"md\" ? 24 : 18}\n >\n {arrows && (\n <Box\n onPress={handlePrev}\n width={arrowSize}\n height={arrowSize}\n alignItems=\"center\"\n justifyContent=\"center\"\n borderRadius={4}\n opacity={isFirst ? 0.2 : 1}\n cursor={isFirst ? \"default\" : \"pointer\"}\n >\n <ArrowLeft size={iconSize} color={theme.colors.content.primary} />\n </Box>\n )}\n\n <Box flexDirection=\"row\" alignItems=\"center\" gap={4}>\n {Array.from({ length: count }).map((_, i) => (\n <ProgressStepItem\n key={i}\n size={size}\n state={i === activeStep ? \"active\" : \"default\"}\n onPress={onStepPress ? () => onStepPress(i) : undefined}\n />\n ))}\n </Box>\n\n {arrows && (\n <Box\n onPress={handleNext}\n width={arrowSize}\n height={arrowSize}\n alignItems=\"center\"\n justifyContent=\"center\"\n borderRadius={4}\n opacity={isLast ? 0.2 : 1}\n cursor={isLast ? \"default\" : \"pointer\"}\n >\n <ArrowRight size={iconSize} color={theme.colors.content.primary} />\n </Box>\n )}\n </Box>\n );\n};\n","import React from \"react\";\n// @ts-ignore - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useDesignSystem } from \"@xsolla/xui-core\";\nimport type { ProgressStepItemProps } from \"./types\";\n\nexport const ProgressStepItem: React.FC<ProgressStepItemProps> = ({\n state = \"default\",\n size = \"md\",\n className,\n onPress,\n onMouseEnter,\n onMouseLeave,\n}) => {\n const { theme } = useDesignSystem();\n const isActive = state === \"active\";\n const isHover = state === \"hover\";\n const isMD = size === \"md\";\n\n const width = isActive ? (isMD ? 24 : 18) : isMD ? 8 : 6;\n const height = isMD ? 8 : 6;\n const borderRadius = isMD ? 2 : 1;\n\n let backgroundColor = theme.colors.content.primary;\n let opacity = 1;\n\n if (!isActive) {\n backgroundColor = theme.colors.content.tertiary || \"rgba(0, 0, 0, 0.6)\";\n opacity = isHover ? 0.5 : 0.2;\n }\n\n return (\n <Box\n className={className}\n width={width}\n height={height}\n borderRadius={borderRadius}\n backgroundColor={backgroundColor}\n opacity={opacity}\n onPress={onPress}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n cursor={onPress ? \"pointer\" : \"default\"}\n />\n );\n};\n"],"mappings":"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","names":["forwardRef","jsx","View","jsx","View","jsx","View","jsx","jsx","forwardRef","RNTextInput","jsx","useDesignSystem","useDesignSystem","brandText","brandActive","jsx","jsx","useDesignSystem","jsx","forwardRef","useDesignSystem","useDesignSystem","useDesignSystem","jsx","jsx","jsxs","useDesignSystem"]}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@xsolla/xui-stepper-native",
3
+ "version": "0.64.0-pr56.1768348754",
4
+ "main": "./index.js",
5
+ "module": "./index.mjs",
6
+ "types": "./index.d.ts",
7
+ "scripts": {
8
+ "build": "yarn build:web && yarn build:native",
9
+ "build:web": "PLATFORM=web tsup src/index.tsx --format esm,cjs --dts --env.PLATFORM web --clean",
10
+ "build:native": "PLATFORM=native tsup src/index.tsx --format esm,cjs --dts --env.PLATFORM native --clean",
11
+ "test": "vitest",
12
+ "test:run": "vitest run",
13
+ "test:watch": "vitest --watch",
14
+ "test:coverage": "vitest run --coverage"
15
+ },
16
+ "dependencies": {
17
+ "@xsolla/xui-core": "0.64.0-pr56.1768348754",
18
+ "@xsolla/xui-icons": "0.64.0-pr56.1768348754",
19
+ "@xsolla/xui-primitives-core": "0.64.0-pr56.1768348754"
20
+ },
21
+ "peerDependencies": {
22
+ "react": ">=16.8.0",
23
+ "styled-components": ">=4",
24
+ "react-native": "*"
25
+ },
26
+ "devDependencies": {
27
+ "@testing-library/jest-dom": "^6.1.5",
28
+ "@testing-library/react": "^14.1.2",
29
+ "@testing-library/user-event": "^14.5.1",
30
+ "@vitest/coverage-v8": "^1.0.0",
31
+ "jsdom": "^24.0.0",
32
+ "react": "^18.0.0",
33
+ "react-dom": "^18.0.0",
34
+ "tsup": "^8.0.0",
35
+ "vitest": "^1.0.0"
36
+ },
37
+ "license": "MIT"
38
+ }