{"version":3,"sources":["../../src/InputTime.tsx","../../../../foundation/primitives-native/src/Box.tsx","../../../../foundation/primitives-native/src/Text.tsx","../../../../foundation/primitives-native/src/Input.tsx","../../src/TimeSegment.tsx","../../src/utils.ts","../../src/PeriodToggle.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect, useCallback } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text } from \"@xsolla/xui-primitives\";\nimport { useDesignSystem, useId } from \"@xsolla/xui-core\";\nimport { Clock } from \"@xsolla/xui-icons-base\";\nimport { TimeSegment } from \"./TimeSegment\";\nimport { PeriodToggle } from \"./PeriodToggle\";\nimport {\n  clampHours,\n  clampMinutes,\n  clampSeconds,\n  parseTimeString,\n} from \"./utils\";\nimport type { InputTimeProps, TimeValue } from \"./types\";\n\nexport const InputTime: React.FC<InputTimeProps> = ({\n  value,\n  onChange,\n  showSeconds = false,\n  showPeriod = false,\n  hourCycle = 24,\n  icon = <Clock />,\n  size = \"md\",\n  disabled = false,\n  error,\n  \"aria-label\": ariaLabel,\n  testID,\n}) => {\n  const { theme } = useDesignSystem();\n  const rawId = useId();\n  const safeId = rawId.replace(/:/g, \"\");\n  const inputId = `input-time-${safeId}`;\n  const errorId = `${inputId}-error`;\n\n  const [internalState, setInternalState] = useState<\"default\" | \"focus\">(\n    \"default\"\n  );\n\n  const segmentRefs = useRef<Array<{ focus: () => void }>>([]);\n  const periodRef = useRef<{ focus: () => void } | null>(null);\n\n  const is12h = hourCycle === 12;\n\n  const [hours, setHours] = useState<number | null>(value?.hours ?? null);\n  const [minutes, setMinutes] = useState<number | null>(value?.minutes ?? null);\n  const [seconds, setSeconds] = useState<number | null>(value?.seconds ?? null);\n  const [period, setPeriod] = useState<\"am\" | \"pm\">(value?.period ?? \"am\");\n\n  useEffect(() => {\n    if (value) {\n      setHours(value.hours);\n      setMinutes(value.minutes);\n      setSeconds(value.seconds ?? null);\n      setPeriod(value.period ?? \"am\");\n    } else if (value === null) {\n      setHours(null);\n      setMinutes(null);\n      setSeconds(null);\n      setPeriod(\"am\");\n    }\n  }, [value]);\n\n  const emitChange = useCallback(\n    (h: number | null, m: number | null, s: number | null, p: \"am\" | \"pm\") => {\n      if (h === null || m === null) {\n        onChange?.(null);\n        return;\n      }\n      const result: TimeValue = {\n        hours: clampHours(h, is12h),\n        minutes: clampMinutes(m),\n      };\n      if (showSeconds) {\n        result.seconds = s !== null ? clampSeconds(s) : 0;\n      }\n      if (showPeriod) {\n        result.period = p;\n      }\n      onChange?.(result);\n    },\n    [onChange, is12h, showSeconds, showPeriod]\n  );\n\n  const handleHoursChange = (v: number | null) => {\n    const clamped = v !== null ? clampHours(v, is12h) : null;\n    setHours(clamped);\n    emitChange(clamped, minutes, seconds, period);\n  };\n\n  const handleMinutesChange = (v: number | null) => {\n    const clamped = v !== null ? clampMinutes(v) : null;\n    setMinutes(clamped);\n    emitChange(hours, clamped, seconds, period);\n  };\n\n  const handleSecondsChange = (v: number | null) => {\n    const clamped = v !== null ? clampSeconds(v) : null;\n    setSeconds(clamped);\n    emitChange(hours, minutes, clamped, period);\n  };\n\n  const handlePeriodChange = (v: \"am\" | \"pm\") => {\n    setPeriod(v);\n    emitChange(hours, minutes, seconds, v);\n  };\n\n  const handlePasteTime = (text: string) => {\n    const parsed = parseTimeString(text);\n    if (!parsed) return;\n    const h = clampHours(parsed.hours, is12h);\n    const m = clampMinutes(parsed.minutes);\n    const s = parsed.seconds !== null ? clampSeconds(parsed.seconds) : seconds;\n    const p = parsed.period ?? period;\n    setHours(h);\n    setMinutes(m);\n    setSeconds(s);\n    setPeriod(p);\n    emitChange(h, m, s, p);\n  };\n\n  const focusSegment = (index: number) => {\n    segmentRefs.current[index]?.focus?.();\n  };\n\n  const segmentCount = showSeconds ? 3 : 2;\n  const advanceFrom = (i: number) => () => {\n    if (i < segmentCount - 1) focusSegment(i + 1);\n    else if (showPeriod) periodRef.current?.focus?.();\n  };\n  const retreatFrom = (i: number) => () => {\n    if (i > 0) focusSegment(i - 1);\n  };\n\n  const sizeStyles = theme.sizing.input(size);\n  const inputColors = theme.colors.control.input;\n\n  const isError = !!error;\n  const isFocus = internalState === \"focus\";\n\n  let backgroundColor = inputColors.bg;\n  let borderColor = inputColors.border;\n  let outlineColor: string | undefined;\n\n  if (disabled) {\n    backgroundColor = inputColors.bgDisable;\n    borderColor = inputColors.borderDisable;\n  } else if (isError) {\n    outlineColor = theme.colors.border.alert;\n    if (isFocus) {\n      backgroundColor = theme.colors.control.focus.bg;\n    }\n  } else if (isFocus) {\n    backgroundColor = theme.colors.control.focus.bg;\n    outlineColor = theme.colors.border.brand;\n  }\n\n  const textColor = disabled ? inputColors.textDisable : inputColors.text;\n  const placeholderColor = inputColors.placeholder;\n  const iconColor = inputColors.placeholder;\n\n  const paddingConfig: Record<\n    string,\n    { vertical: number; horizontal: number }\n  > = {\n    xl: { vertical: 12, horizontal: 12 },\n    lg: { vertical: 14, horizontal: 12 },\n    md: { vertical: 11, horizontal: 12 },\n    sm: { vertical: 7, horizontal: 10 },\n    xs: { vertical: 7, horizontal: 10 },\n  };\n\n  const iconSizeConfig: Record<string, number> = {\n    xl: 22,\n    lg: 20,\n    md: 18,\n    sm: 16,\n    xs: 14,\n  };\n\n  const focusOutlineConfig: Record<string, { width: number; offset: number }> =\n    {\n      xl: { width: 1, offset: -1 },\n      lg: { width: 1, offset: -1 },\n      md: { width: 1, offset: -1 },\n      sm: { width: 1, offset: -1 },\n      xs: { width: 1, offset: -1 },\n    };\n\n  const padding = paddingConfig[size];\n  const borderRadius = theme.shape.input[size].borderRadius;\n  const iconSize = iconSizeConfig[size];\n  const focusOutline = focusOutlineConfig[size];\n\n  const handleContainerFocus = () => {\n    if (!disabled) setInternalState(\"focus\");\n  };\n  const handleContainerBlur = () => {\n    if (!disabled) setInternalState(\"default\");\n  };\n\n  const colonColor = textColor;\n\n  return (\n    <Box\n      flexDirection=\"column\"\n      gap={sizeStyles.fieldGap}\n      width=\"100%\"\n      testID={testID}\n    >\n      <Box\n        backgroundColor={backgroundColor}\n        borderColor={borderColor}\n        borderWidth={borderColor !== \"transparent\" ? 1 : 0}\n        borderRadius={borderRadius}\n        height={sizeStyles.height}\n        paddingVertical={padding.vertical}\n        paddingHorizontal={padding.horizontal}\n        flexDirection=\"row\"\n        alignItems=\"center\"\n        gap={2}\n        position=\"relative\"\n        style={{\n          ...(outlineColor\n            ? {\n                outline: `${focusOutline.width}px solid ${outlineColor}`,\n                outlineOffset: `${focusOutline.offset}px`,\n              }\n            : {}),\n        }}\n        hoverStyle={\n          !disabled && !isFocus && !isError\n            ? {\n                backgroundColor: inputColors.bgHover,\n                borderColor: inputColors.borderHover,\n              }\n            : undefined\n        }\n        onFocus={handleContainerFocus}\n        onBlur={handleContainerBlur}\n        role=\"group\"\n        aria-label={ariaLabel || \"Time input\"}\n        aria-describedby={error ? errorId : undefined}\n      >\n        {icon && (\n          <Box marginRight={6} alignItems=\"center\" justifyContent=\"center\">\n            {React.isValidElement(icon)\n              ? React.cloneElement(icon as React.ReactElement<any>, {\n                  size: iconSize,\n                  color: iconColor,\n                })\n              : icon}\n          </Box>\n        )}\n\n        <TimeSegment\n          ref={(el: any) => {\n            segmentRefs.current[0] = el;\n          }}\n          value={hours}\n          onChange={handleHoursChange}\n          onAdvance={advanceFrom(0)}\n          onRetreat={retreatFrom(0)}\n          onPasteTime={handlePasteTime}\n          min={is12h ? 1 : 0}\n          max={is12h ? 12 : 23}\n          disabled={disabled}\n          placeholder=\"--\"\n          fontSize={sizeStyles.fontSize}\n          textColor={textColor}\n          placeholderColor={placeholderColor}\n          focusColor={theme.colors.background.brand.primary}\n          aria-label=\"Hours\"\n          testID={testID ? `${testID}-hours` : undefined}\n        />\n\n        <Text\n          color={colonColor}\n          fontSize={sizeStyles.fontSize}\n          fontWeight=\"400\"\n        >\n          :\n        </Text>\n\n        <TimeSegment\n          ref={(el: any) => {\n            segmentRefs.current[1] = el;\n          }}\n          value={minutes}\n          onChange={handleMinutesChange}\n          onAdvance={advanceFrom(1)}\n          onRetreat={retreatFrom(1)}\n          onPasteTime={handlePasteTime}\n          min={0}\n          max={59}\n          disabled={disabled}\n          placeholder=\"--\"\n          fontSize={sizeStyles.fontSize}\n          textColor={textColor}\n          placeholderColor={placeholderColor}\n          focusColor={theme.colors.background.brand.primary}\n          aria-label=\"Minutes\"\n          testID={testID ? `${testID}-minutes` : undefined}\n        />\n\n        {showSeconds && (\n          <>\n            <Text\n              color={colonColor}\n              fontSize={sizeStyles.fontSize}\n              fontWeight=\"400\"\n            >\n              :\n            </Text>\n            <TimeSegment\n              ref={(el: any) => {\n                segmentRefs.current[2] = el;\n              }}\n              value={seconds}\n              onChange={handleSecondsChange}\n              onAdvance={advanceFrom(2)}\n              onRetreat={retreatFrom(2)}\n              onPasteTime={handlePasteTime}\n              min={0}\n              max={59}\n              disabled={disabled}\n              placeholder=\"--\"\n              fontSize={sizeStyles.fontSize}\n              textColor={textColor}\n              placeholderColor={placeholderColor}\n              focusColor={theme.colors.background.brand.primary}\n              aria-label=\"Seconds\"\n              testID={testID ? `${testID}-seconds` : undefined}\n            />\n          </>\n        )}\n\n        {showPeriod && (\n          <PeriodToggle\n            ref={periodRef as any}\n            value={period}\n            onChange={handlePeriodChange}\n            disabled={disabled}\n            fontSize={sizeStyles.fontSize}\n            textColor={textColor}\n            testID={testID ? `${testID}-period` : undefined}\n          />\n        )}\n      </Box>\n\n      {error && (\n        <Text\n          id={errorId}\n          role=\"alert\"\n          color={theme.colors.content.alert.primary}\n          fontSize={sizeStyles.fontSize - 2}\n        >\n          {error}\n        </Text>\n      )}\n    </Box>\n  );\n};\n\nInputTime.displayName = \"InputTime\";\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, { 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      fontFamily,\n      placeholderTextColor,\n      maxLength,\n      type,\n      inputMode,\n      autoComplete,\n      id,\n      \"aria-describedby\": ariaDescribedBy,\n      \"aria-label\": ariaLabel,\n      \"aria-disabled\": ariaDisabled,\n      \"data-testid\": dataTestId,\n      testID,\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    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    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            fontFamily: resolvedFontFamily,\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 || testID || 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, {\n  useRef,\n  useState,\n  useCallback,\n  forwardRef,\n  useImperativeHandle,\n} from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, InputPrimitive } from \"@xsolla/xui-primitives\";\nimport { formatSegment, parseSegmentInput } from \"./utils\";\n\ninterface TimeSegmentProps {\n  value: number | null;\n  onChange: (value: number | null) => void;\n  onAdvance: () => void;\n  onRetreat: () => void;\n  min: number;\n  max: number;\n  onPasteTime?: (text: string) => void;\n  disabled?: boolean;\n  placeholder?: string;\n  fontSize: number;\n  textColor: string;\n  placeholderColor: string;\n  focusColor: string;\n  \"aria-label\"?: string;\n  testID?: string;\n}\n\nexport const TimeSegment = forwardRef<{ focus: () => void }, TimeSegmentProps>(\n  (\n    {\n      value,\n      onChange,\n      onAdvance,\n      onRetreat,\n      min,\n      max,\n      onPasteTime,\n      disabled = false,\n      placeholder = \"--\",\n      fontSize,\n      textColor,\n      placeholderColor,\n      focusColor,\n      \"aria-label\": ariaLabel,\n      testID,\n    },\n    ref\n  ) => {\n    const inputRef = useRef<any>(null);\n    const [editBuffer, setEditBuffer] = useState<string>(\"\");\n    const [isFocused, setIsFocused] = useState(false);\n    const committedRef = useRef(false);\n    const freshFocusRef = useRef(false);\n\n    useImperativeHandle(ref, () => ({\n      focus: () => inputRef.current?.focus?.(),\n    }));\n\n    const displayValue = isFocused\n      ? editBuffer\n      : value !== null\n        ? formatSegment(value)\n        : \"\";\n\n    const commitValue = useCallback(\n      (text: string) => {\n        const parsed = parseSegmentInput(text);\n        if (parsed !== null) {\n          const clamped = Math.min(max, Math.max(min, parsed));\n          onChange(clamped);\n        }\n      },\n      [onChange, min, max]\n    );\n\n    const handleFocus = () => {\n      setIsFocused(true);\n      setEditBuffer(value !== null ? formatSegment(value) : \"\");\n      committedRef.current = false;\n      freshFocusRef.current = true;\n    };\n\n    const handleBlur = () => {\n      setIsFocused(false);\n      if (!committedRef.current && editBuffer) {\n        commitValue(editBuffer);\n      }\n      committedRef.current = false;\n      setEditBuffer(\"\");\n    };\n\n    const extractTypedDigit = (newText: string, oldText: string): string => {\n      const newDigits = newText.replace(/\\D/g, \"\");\n      const oldDigits = oldText.replace(/\\D/g, \"\");\n      if (newDigits.length <= oldDigits.length) return \"\";\n      let remaining = newDigits;\n      for (const ch of oldDigits) {\n        const idx = remaining.indexOf(ch);\n        if (idx !== -1) {\n          remaining = remaining.slice(0, idx) + remaining.slice(idx + 1);\n        }\n      }\n      return remaining.charAt(0);\n    };\n\n    const handleChangeText = (text: string) => {\n      let digitsOnly = text.replace(/\\D/g, \"\");\n      if (freshFocusRef.current || committedRef.current) {\n        const typed = extractTypedDigit(text, displayValue);\n        freshFocusRef.current = false;\n        committedRef.current = false;\n        if (!typed) return;\n        digitsOnly = typed;\n      } else {\n        digitsOnly = digitsOnly.slice(-2);\n      }\n      setEditBuffer(digitsOnly);\n      if (digitsOnly.length === 2) {\n        committedRef.current = true;\n        commitValue(digitsOnly);\n        onAdvance();\n      } else if (digitsOnly.length === 1) {\n        const d = parseInt(digitsOnly, 10);\n        if (d * 10 > max) {\n          committedRef.current = true;\n          commitValue(digitsOnly);\n          onAdvance();\n        }\n      }\n    };\n\n    const handlePaste = (e: any) => {\n      const text: string = e.clipboardData?.getData?.(\"text\") ?? \"\";\n      if (onPasteTime && text.includes(\":\")) {\n        e.preventDefault();\n        onPasteTime(text);\n      }\n    };\n\n    const handleKeyDown = (e: any) => {\n      const key = e.key || e.nativeEvent?.key;\n\n      if (key === \"ArrowUp\") {\n        e.preventDefault();\n        const current = value ?? min;\n        const next = current >= max ? min : current + 1;\n        onChange(next);\n        setEditBuffer(formatSegment(next));\n        committedRef.current = true;\n      } else if (key === \"ArrowDown\") {\n        e.preventDefault();\n        const current = value ?? min;\n        const next = current <= min ? max : current - 1;\n        onChange(next);\n        setEditBuffer(formatSegment(next));\n        committedRef.current = true;\n      } else if (key === \"ArrowRight\") {\n        onAdvance();\n      } else if (key === \"ArrowLeft\") {\n        onRetreat();\n      } else if (key === \"Backspace\" && editBuffer.length === 0) {\n        onChange(null);\n        onRetreat();\n      } else if (key === \"Tab\") {\n        if (editBuffer) {\n          commitValue(editBuffer);\n        }\n      } else if (key === \"Enter\") {\n        if (editBuffer) {\n          commitValue(editBuffer);\n        }\n        inputRef.current?.blur?.();\n      }\n    };\n\n    return (\n      <Box\n        onPress={() => inputRef.current?.focus?.()}\n        width={fontSize * 1.5}\n        height={fontSize + 8}\n        justifyContent=\"center\"\n        alignItems=\"center\"\n        backgroundColor={isFocused ? focusColor : \"transparent\"}\n        borderRadius={4}\n      >\n        <InputPrimitive\n          ref={inputRef}\n          value={displayValue}\n          placeholder={placeholder}\n          onChangeText={handleChangeText}\n          onFocus={handleFocus}\n          onBlur={handleBlur}\n          onKeyDown={handleKeyDown}\n          onPaste={handlePaste}\n          disabled={disabled}\n          inputMode=\"numeric\"\n          color={textColor}\n          fontSize={fontSize}\n          placeholderTextColor={placeholderColor}\n          role=\"spinbutton\"\n          aria-label={ariaLabel}\n          aria-valuemin={min}\n          aria-valuemax={max}\n          aria-valuenow={value !== null ? value : undefined}\n          aria-valuetext={value !== null ? formatSegment(value) : undefined}\n          aria-disabled={disabled || undefined}\n          data-testid={testID}\n          style={{\n            textAlign: \"center\",\n            width: \"100%\",\n            padding: 0,\n            border: \"none\",\n            outline: \"none\",\n            boxShadow: \"none\",\n            background: \"transparent\",\n            caretColor: \"transparent\",\n          }}\n        />\n      </Box>\n    );\n  }\n);\n\nTimeSegment.displayName = \"TimeSegment\";\n","export function clampValue(value: number, min: number, max: number): number {\n  if (isNaN(value)) return min;\n  return Math.min(max, Math.max(min, value));\n}\n\nexport function clampHours(value: number, is12h: boolean): number {\n  return is12h ? clampValue(value, 1, 12) : clampValue(value, 0, 23);\n}\n\nexport function clampMinutes(value: number): number {\n  return clampValue(value, 0, 59);\n}\n\nexport function clampSeconds(value: number): number {\n  return clampValue(value, 0, 59);\n}\n\nexport function formatSegment(value: number | undefined | null): string {\n  if (value === undefined || value === null) return \"\";\n  return value.toString().padStart(2, \"0\");\n}\n\nexport function parseSegmentInput(text: string): number | null {\n  const num = parseInt(text, 10);\n  return isNaN(num) ? null : num;\n}\n\nexport interface ParsedTime {\n  hours: number;\n  minutes: number;\n  seconds: number | null;\n  period: \"am\" | \"pm\" | null;\n}\n\nexport function parseTimeString(text: string): ParsedTime | null {\n  const match = text\n    .trim()\n    .match(\n      /(\\d{1,2})\\s*:\\s*(\\d{1,2})(?:\\s*:\\s*(\\d{1,2}))?\\s*(?:([ap])\\.?m\\.?)?/i\n    );\n  if (!match) return null;\n  const hours = parseInt(match[1], 10);\n  const minutes = parseInt(match[2], 10);\n  if (isNaN(hours) || isNaN(minutes)) return null;\n  const seconds = match[3] != null ? parseInt(match[3], 10) : null;\n  const period = match[4]\n    ? match[4].toLowerCase() === \"p\"\n      ? \"pm\"\n      : \"am\"\n    : null;\n  return { hours, minutes, seconds, period };\n}\n","import React, { forwardRef } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text } from \"@xsolla/xui-primitives\";\n\ninterface PeriodToggleProps {\n  value: \"am\" | \"pm\";\n  onChange: (value: \"am\" | \"pm\") => void;\n  disabled?: boolean;\n  fontSize: number;\n  textColor: string;\n  testID?: string;\n}\n\nexport const PeriodToggle = forwardRef<HTMLElement, PeriodToggleProps>(\n  ({ value, onChange, disabled = false, fontSize, textColor, testID }, ref) => {\n    const toggle = () => {\n      if (!disabled) {\n        onChange(value === \"am\" ? \"pm\" : \"am\");\n      }\n    };\n\n    const handleKeyDown = (e: any) => {\n      if (disabled) return;\n      const key = (e.key || e.nativeEvent?.key || \"\").toLowerCase();\n      if (key === \"a\") {\n        e.preventDefault();\n        onChange(\"am\");\n      } else if (key === \"p\") {\n        e.preventDefault();\n        onChange(\"pm\");\n      }\n    };\n\n    return (\n      <Box\n        ref={ref}\n        as=\"button\"\n        type=\"button\"\n        onPress={toggle}\n        onKeyDown={handleKeyDown}\n        disabled={disabled}\n        cursor={disabled ? \"default\" : \"pointer\"}\n        justifyContent=\"center\"\n        alignItems=\"center\"\n        marginLeft=\"auto\"\n        paddingHorizontal={4}\n        backgroundColor=\"transparent\"\n        borderWidth={0}\n        role=\"switch\"\n        aria-checked={value === \"pm\"}\n        aria-disabled={disabled || undefined}\n        aria-label={value.toUpperCase()}\n        data-testid={testID}\n      >\n        <Text color={textColor} fontSize={fontSize} fontWeight=\"400\">\n          {value}\n        </Text>\n      </Box>\n    );\n  }\n);\n\nPeriodToggle.displayName = \"PeriodToggle\";\n"],"mappings":"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","names":["React","useRef","useState","useCallback","jsx","jsx","forwardRef","jsx","forwardRef","forwardRef","jsx","forwardRef","jsx","useState","useRef","useCallback","React"]}