{"version":3,"sources":["../../src/InputTime.tsx","../../../../foundation/primitives-web/src/Box.tsx","../../../../foundation/primitives-web/src/filterDOMProps.ts","../../../../../node_modules/@emotion/memoize/dist/memoize.esm.js","../../../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js","../../../../foundation/primitives-web/src/Text.tsx","../../../../foundation/primitives-web/src/textTruncation.ts","../../../../foundation/primitives-web/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 styled from \"styled-components\";\nimport type { BoxProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledBox = styled(FilteredDiv)<BoxProps>`\n  display: flex;\n  box-sizing: border-box;\n  background-color: ${(props) => props.backgroundColor || \"transparent\"};\n  border-color: ${(props) => props.borderColor || \"transparent\"};\n  border-width: ${(props) =>\n    typeof props.borderWidth === \"number\"\n      ? `${props.borderWidth}px`\n      : props.borderWidth || 0};\n\n  ${(props) =>\n    props.borderBottomWidth !== undefined &&\n    `\n    border-bottom-width: ${typeof props.borderBottomWidth === \"number\" ? `${props.borderBottomWidth}px` : props.borderBottomWidth};\n    border-bottom-color: ${props.borderBottomColor || props.borderColor || \"transparent\"};\n    border-bottom-style: solid;\n  `}\n  ${(props) =>\n    props.borderTopWidth !== undefined &&\n    `\n    border-top-width: ${typeof props.borderTopWidth === \"number\" ? `${props.borderTopWidth}px` : props.borderTopWidth};\n    border-top-color: ${props.borderTopColor || props.borderColor || \"transparent\"};\n    border-top-style: solid;\n  `}\n  ${(props) =>\n    props.borderLeftWidth !== undefined &&\n    `\n    border-left-width: ${typeof props.borderLeftWidth === \"number\" ? `${props.borderLeftWidth}px` : props.borderLeftWidth};\n    border-left-color: ${props.borderLeftColor || props.borderColor || \"transparent\"};\n    border-left-style: solid;\n  `}\n  ${(props) =>\n    props.borderRightWidth !== undefined &&\n    `\n    border-right-width: ${typeof props.borderRightWidth === \"number\" ? `${props.borderRightWidth}px` : props.borderRightWidth};\n    border-right-color: ${props.borderRightColor || props.borderColor || \"transparent\"};\n    border-right-style: solid;\n  `}\n\n  border-style: ${(props) =>\n    props.borderStyle ||\n    (props.borderWidth ||\n    props.borderBottomWidth ||\n    props.borderTopWidth ||\n    props.borderLeftWidth ||\n    props.borderRightWidth\n      ? \"solid\"\n      : \"none\")};\n  border-radius: ${(props) =>\n    typeof props.borderRadius === \"number\"\n      ? `${props.borderRadius}px`\n      : props.borderRadius || 0};\n  height: ${(props) =>\n    typeof props.height === \"number\"\n      ? `${props.height}px`\n      : props.height || \"auto\"};\n  width: ${(props) =>\n    typeof props.width === \"number\"\n      ? `${props.width}px`\n      : props.width || \"auto\"};\n  min-width: ${(props) =>\n    typeof props.minWidth === \"number\"\n      ? `${props.minWidth}px`\n      : props.minWidth || \"auto\"};\n  min-height: ${(props) =>\n    typeof props.minHeight === \"number\"\n      ? `${props.minHeight}px`\n      : props.minHeight || \"auto\"};\n  max-width: ${(props) =>\n    typeof props.maxWidth === \"number\"\n      ? `${props.maxWidth}px`\n      : props.maxWidth || \"none\"};\n  max-height: ${(props) =>\n    typeof props.maxHeight === \"number\"\n      ? `${props.maxHeight}px`\n      : props.maxHeight || \"none\"};\n\n  padding: ${(props) =>\n    typeof props.padding === \"number\"\n      ? `${props.padding}px`\n      : props.padding || 0};\n  ${(props) =>\n    props.paddingHorizontal &&\n    `\n    padding-left: ${typeof props.paddingHorizontal === \"number\" ? `${props.paddingHorizontal}px` : props.paddingHorizontal};\n    padding-right: ${typeof props.paddingHorizontal === \"number\" ? `${props.paddingHorizontal}px` : props.paddingHorizontal};\n  `}\n  ${(props) =>\n    props.paddingVertical &&\n    `\n    padding-top: ${typeof props.paddingVertical === \"number\" ? `${props.paddingVertical}px` : props.paddingVertical};\n    padding-bottom: ${typeof props.paddingVertical === \"number\" ? `${props.paddingVertical}px` : props.paddingVertical};\n  `}\n  ${(props) =>\n    props.paddingTop !== undefined &&\n    `padding-top: ${typeof props.paddingTop === \"number\" ? `${props.paddingTop}px` : props.paddingTop};`}\n  ${(props) =>\n    props.paddingBottom !== undefined &&\n    `padding-bottom: ${typeof props.paddingBottom === \"number\" ? `${props.paddingBottom}px` : props.paddingBottom};`}\n  ${(props) =>\n    props.paddingLeft !== undefined &&\n    `padding-left: ${typeof props.paddingLeft === \"number\" ? `${props.paddingLeft}px` : props.paddingLeft};`}\n  ${(props) =>\n    props.paddingRight !== undefined &&\n    `padding-right: ${typeof props.paddingRight === \"number\" ? `${props.paddingRight}px` : props.paddingRight};`}\n\n  margin: ${(props) =>\n    typeof props.margin === \"number\" ? `${props.margin}px` : props.margin || 0};\n  ${(props) =>\n    props.marginTop !== undefined &&\n    `margin-top: ${typeof props.marginTop === \"number\" ? `${props.marginTop}px` : props.marginTop};`}\n  ${(props) =>\n    props.marginBottom !== undefined &&\n    `margin-bottom: ${typeof props.marginBottom === \"number\" ? `${props.marginBottom}px` : props.marginBottom};`}\n  ${(props) =>\n    props.marginLeft !== undefined &&\n    `margin-left: ${typeof props.marginLeft === \"number\" ? `${props.marginLeft}px` : props.marginLeft};`}\n  ${(props) =>\n    props.marginRight !== undefined &&\n    `margin-right: ${typeof props.marginRight === \"number\" ? `${props.marginRight}px` : props.marginRight};`}\n\n  flex-direction: ${(props) => props.flexDirection || \"column\"};\n  flex-wrap: ${(props) => props.flexWrap || \"nowrap\"};\n  align-items: ${(props) => props.alignItems || \"stretch\"};\n  justify-content: ${(props) => props.justifyContent || \"flex-start\"};\n  cursor: ${(props) =>\n    props.cursor\n      ? props.cursor\n      : props.onClick || props.onPress\n        ? \"pointer\"\n        : \"inherit\"};\n  position: ${(props) => props.position || \"static\"};\n  top: ${(props) =>\n    typeof props.top === \"number\" ? `${props.top}px` : props.top};\n  bottom: ${(props) =>\n    typeof props.bottom === \"number\" ? `${props.bottom}px` : props.bottom};\n  left: ${(props) =>\n    typeof props.left === \"number\" ? `${props.left}px` : props.left};\n  right: ${(props) =>\n    typeof props.right === \"number\" ? `${props.right}px` : props.right};\n  flex: ${(props) => props.flex};\n  flex-shrink: ${(props) => props.flexShrink ?? 1};\n  gap: ${(props) =>\n    typeof props.gap === \"number\" ? `${props.gap}px` : props.gap || 0};\n  align-self: ${(props) => props.alignSelf || \"auto\"};\n  /* Only emit overflow-x/y when explicitly set. Defaulting them to\n     visible after overflow would override the shorthand and break\n     clipping (e.g. OtherCard bottom-right promo image). */\n  overflow: ${(props) => props.overflow || \"visible\"};\n  ${(props) =>\n    props.overflowX != null ? `overflow-x: ${props.overflowX};` : \"\"}\n  ${(props) =>\n    props.overflowY != null ? `overflow-y: ${props.overflowY};` : \"\"}\n  z-index: ${(props) => props.zIndex};\n  opacity: ${(props) =>\n    props.opacity != null ? props.opacity : props.disabled ? 0.5 : 1};\n  pointer-events: ${(props) => (props.disabled ? \"none\" : \"auto\")};\n\n  &:hover {\n    ${(props) =>\n      props.hoverStyle?.backgroundColor &&\n      `background-color: ${props.hoverStyle.backgroundColor};`}\n    ${(props) =>\n      props.hoverStyle?.borderColor &&\n      `border-color: ${props.hoverStyle.borderColor};`}\n  }\n\n  &:active {\n    ${(props) =>\n      props.pressStyle?.backgroundColor &&\n      `background-color: ${props.pressStyle.backgroundColor};`}\n  }\n`;\n\nexport const Box = React.forwardRef<\n  HTMLDivElement | HTMLButtonElement,\n  BoxProps\n>(\n  (\n    {\n      children,\n      onPress,\n      onKeyDown,\n      onKeyUp,\n      role,\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      \"aria-describedby\": ariaDescribedBy,\n      \"aria-expanded\": ariaExpanded,\n      \"aria-haspopup\": ariaHasPopup,\n      \"aria-pressed\": ariaPressed,\n      \"aria-controls\": ariaControls,\n      tabIndex,\n      as,\n      src,\n      alt,\n      onError,\n      onLoad,\n      type,\n      disabled,\n      id,\n      testID,\n      \"data-testid\": dataTestId,\n      ...props\n    },\n    ref\n  ) => {\n    // Handle as=\"img\" for rendering images with proper border-radius\n    if (as === \"img\" && src) {\n      return (\n        <img\n          src={src}\n          alt={alt || \"\"}\n          onError={onError}\n          onLoad={onLoad}\n          data-testid={dataTestId || testID}\n          style={{\n            display: \"block\",\n            objectFit: \"cover\",\n            width:\n              typeof props.width === \"number\"\n                ? `${props.width}px`\n                : props.width,\n            height:\n              typeof props.height === \"number\"\n                ? `${props.height}px`\n                : props.height,\n            borderRadius:\n              typeof props.borderRadius === \"number\"\n                ? `${props.borderRadius}px`\n                : props.borderRadius,\n            position: props.position,\n            top: typeof props.top === \"number\" ? `${props.top}px` : props.top,\n            left:\n              typeof props.left === \"number\" ? `${props.left}px` : props.left,\n            right:\n              typeof props.right === \"number\"\n                ? `${props.right}px`\n                : props.right,\n            bottom:\n              typeof props.bottom === \"number\"\n                ? `${props.bottom}px`\n                : props.bottom,\n            ...props.style,\n          }}\n        />\n      );\n    }\n\n    return (\n      <StyledBox\n        ref={ref}\n        elementType={as}\n        id={id}\n        type={as === \"button\" ? type || \"button\" : undefined}\n        disabled={as === \"button\" ? disabled : undefined}\n        onClick={onPress}\n        onKeyDown={onKeyDown}\n        onKeyUp={onKeyUp}\n        role={role}\n        aria-label={ariaLabel}\n        aria-labelledby={ariaLabelledBy}\n        aria-current={ariaCurrent}\n        aria-disabled={ariaDisabled}\n        aria-busy={ariaBusy}\n        aria-describedby={ariaDescribedBy}\n        aria-expanded={ariaExpanded}\n        aria-haspopup={ariaHasPopup}\n        aria-pressed={ariaPressed}\n        aria-controls={ariaControls}\n        aria-live={ariaLive}\n        tabIndex={tabIndex !== undefined ? tabIndex : undefined}\n        data-testid={dataTestId || testID}\n        {...props}\n      >\n        {children}\n      </StyledBox>\n    );\n  }\n);\n\nBox.displayName = \"Box\";\n","import React from \"react\";\nimport isPropValid from \"@emotion/is-prop-valid\";\n\n// Props that @emotion/is-prop-valid incorrectly treats as valid HTML.\n// These are React Native or component-specific props that match\n// valid HTML patterns (on* event handlers, SVG attributes).\nexport const ADDITIONAL_BLOCKED_PROPS = new Set([\n  // RN-only event handlers (pass isPropValid's on* pattern)\n  \"onPress\",\n  \"onChangeText\",\n  \"onLayout\",\n  \"onMoveShouldSetResponder\",\n  \"onResponderGrant\",\n  \"onResponderMove\",\n  \"onResponderRelease\",\n  \"onResponderTerminate\",\n  // SVG attributes that pass isPropValid\n  \"strokeWidth\",\n  // CSS properties that pass isPropValid but are used as component props\n  \"overflow\",\n  \"opacity\",\n  \"cursor\",\n  \"fontSize\",\n  \"fontWeight\",\n  \"fontFamily\",\n  \"textDecoration\",\n  // Cross-platform layout prop that Text consumes as CSS, never as an\n  // attribute. Pinned explicitly because it is now spread into the styled\n  // component rather than destructured away before it can reach the DOM.\n  \"numberOfLines\",\n]);\n\nfunction shouldForwardProp(key: string): boolean {\n  if (ADDITIONAL_BLOCKED_PROPS.has(key)) return false;\n  return isPropValid(key);\n}\n\n/**\n * Creates a React component that renders the given HTML tag\n * but filters out non-HTML props before they reach the DOM.\n *\n * Uses @emotion/is-prop-valid (same library styled-components v4\n * uses internally) to automatically block invalid HTML attributes,\n * plus a small blocklist for false positives (RN on* handlers, SVG attrs).\n *\n * Usage: `const FilteredDiv = createFilteredElement(\"div\");`\n * Then:  `const StyledBox = styled(FilteredDiv)<BoxProps>\\`...\\`;`\n *\n * styled-components can still read ALL props for CSS interpolation,\n * but only valid HTML attributes are forwarded to the DOM element.\n */\nexport function createFilteredElement(defaultTag: string) {\n  const Component = React.forwardRef<HTMLElement, Record<string, unknown>>(\n    ({ children, elementType, ...props }, ref) => {\n      const Tag = (elementType as string) || defaultTag;\n      const htmlProps: Record<string, unknown> = {};\n      for (const key of Object.keys(props)) {\n        if (shouldForwardProp(key)) {\n          htmlProps[key] = props[key];\n        }\n      }\n      return React.createElement(\n        Tag,\n        { ref, ...htmlProps },\n        children as React.ReactNode\n      );\n    }\n  );\n  Component.displayName = `Filtered(${defaultTag})`;\n  return Component;\n}\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\nimport { truncationStyles } from \"./textTruncation\";\n\nconst FilteredSpan = createFilteredElement(\"span\");\n\nconst StyledText = styled(FilteredSpan)<TextProps>`\n  color: ${(props) => props.color || \"inherit\"};\n  font-size: ${(props) =>\n    typeof props.fontSize === \"number\"\n      ? `${props.fontSize}px`\n      : props.fontSize || \"inherit\"};\n  font-weight: ${(props) => props.fontWeight || \"normal\"};\n  font-family: ${(props) =>\n    props.fontFamily ||\n    '\"Aktiv Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'};\n  line-height: ${(props) =>\n    typeof props.lineHeight === \"number\"\n      ? `${props.lineHeight}px`\n      : props.lineHeight || \"inherit\"};\n  white-space: ${(props) => props.whiteSpace || \"normal\"};\n  text-align: ${(props) => props.textAlign || \"inherit\"};\n  text-decoration: ${(props) => props.textDecoration || \"none\"};\n\n  /* Keep last: single-line truncation has to win over white-space above. */\n  ${(props) => truncationStyles(props.numberOfLines)}\n`;\n\nexport const Text: React.FC<TextProps> = ({\n  style,\n  className,\n  id,\n  role,\n  testID,\n  \"data-testid\": dataTestId,\n  ...props\n}) => {\n  return (\n    <StyledText\n      {...props}\n      style={style}\n      className={className}\n      id={id}\n      role={role}\n      data-testid={dataTestId || testID}\n    />\n  );\n};\n","/**\n * Web implementation of the cross-platform `numberOfLines` text prop.\n *\n * Native maps `numberOfLines` straight onto `RNText`. A web `<span>` has no\n * equivalent, so emit the CSS that produces the same result.\n *\n * Two details matter for the single-line case:\n * - `text-overflow` only takes effect on a block container, so the inline\n *   `<span>` is promoted to `display: block` and capped at `max-width: 100%`.\n * - `min-width: 0` lets the text shrink below its own content width when it\n *   sits in a flex row. Without it a `nowrap` label keeps its full intrinsic\n *   width and pushes its siblings (icons, chevrons) out of a fixed-width field.\n *\n * Returns an empty string when there is nothing to clamp, so the declaration\n * block stays untouched for the majority of callers.\n */\nexport const truncationStyles = (numberOfLines?: number): string => {\n  if (!numberOfLines || numberOfLines < 1) return \"\";\n\n  if (numberOfLines === 1) {\n    return `\n      display: block;\n      max-width: 100%;\n      min-width: 0;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    `;\n  }\n\n  return `\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: ${numberOfLines};\n    line-clamp: ${numberOfLines};\n    max-width: 100%;\n    min-width: 0;\n    overflow: hidden;\n  `;\n};\n","import React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nimport { InputPrimitiveProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredInput = createFilteredElement(\"input\");\n\nconst StyledInput = styled(FilteredInput)<InputPrimitiveProps>`\n  background: transparent;\n  border: none;\n  outline: none;\n  width: 100%;\n  height: 100%;\n  padding: 0;\n  margin: 0;\n  color: ${(props) => props.color || \"inherit\"};\n  font-size: ${(props) =>\n    typeof props.fontSize === \"number\"\n      ? `${props.fontSize}px`\n      : props.fontSize || \"inherit\"};\n  font-family: ${(props) =>\n    props.fontFamily ||\n    '\"Aktiv Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'};\n  text-align: inherit;\n\n  &::placeholder {\n    color: ${(props) =>\n      props.placeholderTextColor || \"rgba(255, 255, 255, 0.5)\"};\n  }\n\n  &:disabled {\n    cursor: not-allowed;\n  }\n\n  /* Override browser autofill background */\n  &:-webkit-autofill,\n  &:-webkit-autofill:hover,\n  &:-webkit-autofill:focus,\n  &:-webkit-autofill:active {\n    -webkit-box-shadow: 0 0 0 1000px transparent inset !important;\n    -webkit-background-clip: text !important;\n    -webkit-text-fill-color: ${(props) => props.color || \"inherit\"} !important;\n  }\n`;\n\nexport const InputPrimitive = forwardRef<HTMLInputElement, 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      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      testID,\n      ...rest\n    },\n    ref\n  ) => {\n    const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n      if (onChange) {\n        onChange(e);\n      }\n      if (onChangeText) {\n        onChangeText(e.target.value);\n      }\n    };\n\n    return (\n      <StyledInput\n        ref={ref}\n        id={id}\n        value={value}\n        name={name}\n        placeholder={placeholder}\n        onChange={handleChange}\n        onFocus={onFocus}\n        onBlur={onBlur}\n        onKeyDown={onKeyDown}\n        disabled={disabled}\n        type={secureTextEntry ? \"password\" : type || \"text\"}\n        inputMode={inputMode}\n        autoComplete={autoComplete}\n        style={style}\n        color={color}\n        fontSize={fontSize}\n        fontFamily={fontFamily}\n        placeholderTextColor={placeholderTextColor}\n        maxLength={maxLength}\n        aria-invalid={ariaInvalid}\n        aria-describedby={ariaDescribedBy}\n        aria-labelledby={ariaLabelledBy}\n        aria-label={ariaLabel}\n        aria-disabled={ariaDisabled}\n        data-testid={dataTestId || testID}\n        {...rest}\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","React","React","styled","jsx","styled","styled","jsx","styled","forwardRef","jsx","forwardRef","forwardRef","jsx","forwardRef","jsx","useState","useRef","useCallback","index","React"]}