@xsolla/xui-input-pin 0.89.0 → 0.91.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/web/index.js CHANGED
@@ -35,7 +35,7 @@ __export(index_exports, {
35
35
  module.exports = __toCommonJS(index_exports);
36
36
 
37
37
  // src/InputPin.tsx
38
- var import_react4 = require("react");
38
+ var import_react3 = require("react");
39
39
 
40
40
  // ../primitives-web/src/Box.tsx
41
41
  var import_react = __toESM(require("react"));
@@ -238,96 +238,11 @@ var Text = ({
238
238
  );
239
239
  };
240
240
 
241
- // ../primitives-web/src/Spinner.tsx
242
- var import_styled_components3 = __toESM(require("styled-components"));
243
- var import_jsx_runtime3 = require("react/jsx-runtime");
244
- var rotate = import_styled_components3.keyframes`
245
- from {
246
- transform: rotate(0deg);
247
- }
248
- to {
249
- transform: rotate(360deg);
250
- }
251
- `;
252
- var StyledSpinner = import_styled_components3.default.div`
253
- width: ${(props) => typeof props.size === "number" ? `${props.size}px` : props.size || "24px"};
254
- height: ${(props) => typeof props.size === "number" ? `${props.size}px` : props.size || "24px"};
255
- border: ${(props) => props.strokeWidth || 2}px solid
256
- ${(props) => props.color || "currentColor"};
257
- border-bottom-color: transparent;
258
- border-radius: 50%;
259
- display: inline-block;
260
- box-sizing: border-box;
261
- animation: ${rotate} 1s linear infinite;
262
- `;
263
- var Spinner = ({
264
- role = "status",
265
- "aria-label": ariaLabel,
266
- "aria-live": ariaLive = "polite",
267
- "aria-describedby": ariaDescribedBy,
268
- testID,
269
- ...props
270
- }) => {
271
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
272
- StyledSpinner,
273
- {
274
- role,
275
- "aria-label": ariaLabel,
276
- "aria-live": ariaLive,
277
- "aria-describedby": ariaDescribedBy,
278
- "data-testid": testID,
279
- ...props
280
- }
281
- );
282
- };
283
- Spinner.displayName = "Spinner";
284
-
285
- // ../primitives-web/src/Icon.tsx
286
- var import_styled_components4 = __toESM(require("styled-components"));
287
- var import_jsx_runtime4 = require("react/jsx-runtime");
288
- var StyledIcon = import_styled_components4.default.div`
289
- display: flex;
290
- align-items: center;
291
- justify-content: center;
292
- width: ${(props) => typeof props.size === "number" ? `${props.size}px` : props.size || "24px"};
293
- height: ${(props) => typeof props.size === "number" ? `${props.size}px` : props.size || "24px"};
294
- color: ${(props) => props.color || "currentColor"};
295
-
296
- svg {
297
- width: 100%;
298
- height: 100%;
299
- fill: none;
300
- stroke: currentColor;
301
- }
302
- `;
303
-
304
- // ../primitives-web/src/Divider.tsx
305
- var import_styled_components5 = __toESM(require("styled-components"));
306
- var import_jsx_runtime5 = require("react/jsx-runtime");
307
- var StyledDivider = import_styled_components5.default.div`
308
- background-color: ${(props) => props.dashStroke ? "transparent" : props.color || "rgba(255, 255, 255, 0.15)"};
309
- width: ${(props) => props.vertical ? typeof props.width === "number" ? `${props.width}px` : props.width || "1px" : "100%"};
310
- height: ${(props) => props.vertical ? "100%" : typeof props.height === "number" ? `${props.height}px` : props.height || "1px"};
311
-
312
- ${(props) => props.dashStroke && `
313
- border-style: dashed;
314
- border-color: ${props.color || "rgba(255, 255, 255, 0.15)"};
315
- border-width: 0;
316
- ${props.vertical ? `
317
- border-left-width: ${typeof props.width === "number" ? `${props.width}px` : props.width || "1px"};
318
- height: 100%;
319
- ` : `
320
- border-top-width: ${typeof props.height === "number" ? `${props.height}px` : props.height || "1px"};
321
- width: 100%;
322
- `}
323
- `}
324
- `;
325
-
326
241
  // ../primitives-web/src/Input.tsx
327
242
  var import_react2 = require("react");
328
- var import_styled_components6 = __toESM(require("styled-components"));
329
- var import_jsx_runtime6 = require("react/jsx-runtime");
330
- var StyledInput = import_styled_components6.default.input`
243
+ var import_styled_components3 = __toESM(require("styled-components"));
244
+ var import_jsx_runtime3 = require("react/jsx-runtime");
245
+ var StyledInput = import_styled_components3.default.input`
331
246
  background: transparent;
332
247
  border: none;
333
248
  outline: none;
@@ -386,7 +301,7 @@ var InputPrimitive = (0, import_react2.forwardRef)(
386
301
  }
387
302
  };
388
303
  const inputValue = value !== void 0 ? value : "";
389
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
304
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
390
305
  StyledInput,
391
306
  {
392
307
  ref,
@@ -420,74 +335,9 @@ var InputPrimitive = (0, import_react2.forwardRef)(
420
335
  );
421
336
  InputPrimitive.displayName = "InputPrimitive";
422
337
 
423
- // ../primitives-web/src/TextArea.tsx
424
- var import_react3 = require("react");
425
- var import_styled_components7 = __toESM(require("styled-components"));
426
- var import_jsx_runtime7 = require("react/jsx-runtime");
427
- var StyledTextArea = import_styled_components7.default.textarea`
428
- background: transparent;
429
- border: none;
430
- outline: none;
431
- width: 100%;
432
- height: 100%;
433
- padding: 0;
434
- margin: 0;
435
- color: ${(props) => props.color || "inherit"};
436
- font-size: ${(props) => typeof props.fontSize === "number" ? `${props.fontSize}px` : props.fontSize || "inherit"};
437
- font-family: inherit;
438
- text-align: inherit;
439
- resize: none;
440
-
441
- &::placeholder {
442
- color: ${(props) => props.placeholderTextColor || "rgba(255, 255, 255, 0.5)"};
443
- }
444
-
445
- &:disabled {
446
- cursor: not-allowed;
447
- }
448
- `;
449
- var TextAreaPrimitive = (0, import_react3.forwardRef)(
450
- ({
451
- value,
452
- placeholder,
453
- onChangeText,
454
- onFocus,
455
- onBlur,
456
- onKeyDown,
457
- disabled,
458
- style,
459
- color,
460
- fontSize,
461
- placeholderTextColor,
462
- maxLength,
463
- rows
464
- }, ref) => {
465
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
466
- StyledTextArea,
467
- {
468
- ref,
469
- value,
470
- placeholder,
471
- onChange: (e) => onChangeText?.(e.target.value),
472
- onFocus,
473
- onBlur,
474
- onKeyDown,
475
- disabled,
476
- style,
477
- color,
478
- fontSize,
479
- placeholderTextColor,
480
- maxLength,
481
- rows
482
- }
483
- );
484
- }
485
- );
486
- TextAreaPrimitive.displayName = "TextAreaPrimitive";
487
-
488
338
  // src/InputPin.tsx
489
339
  var import_xui_core = require("@xsolla/xui-core");
490
- var import_jsx_runtime8 = require("react/jsx-runtime");
340
+ var import_jsx_runtime4 = require("react/jsx-runtime");
491
341
  var InputPin = ({
492
342
  value = "",
493
343
  onChange,
@@ -512,8 +362,8 @@ var InputPin = ({
512
362
  }) => {
513
363
  const { theme } = (0, import_xui_core.useDesignSystem)();
514
364
  const uniqueId = (0, import_xui_core.useId)();
515
- const [focusedIndex, setFocusedIndex] = (0, import_react4.useState)(null);
516
- const [internalValue, setInternalValue] = (0, import_react4.useState)(value);
365
+ const [focusedIndex, setFocusedIndex] = (0, import_react3.useState)(null);
366
+ const [internalValue, setInternalValue] = (0, import_react3.useState)(value);
517
367
  const actualLength = codeLength ?? length;
518
368
  const errorText = errorMessage ?? errorLabel;
519
369
  const isError = errorProp ?? (!!errorText || externalState === "error");
@@ -521,16 +371,16 @@ var InputPin = ({
521
371
  const isHover = externalState === "hover";
522
372
  const sizeStyles = theme.sizing.inputPin(size);
523
373
  const inputColors = theme.colors.control.input;
524
- const inputs = (0, import_react4.useRef)([]);
525
- (0, import_react4.useEffect)(() => {
374
+ const inputs = (0, import_react3.useRef)([]);
375
+ (0, import_react3.useEffect)(() => {
526
376
  setInternalValue(value);
527
377
  }, [value]);
528
- (0, import_react4.useEffect)(() => {
378
+ (0, import_react3.useEffect)(() => {
529
379
  if (currentFocus !== void 0 && currentFocus >= 0 && currentFocus < actualLength) {
530
380
  inputs.current[currentFocus]?.focus();
531
381
  }
532
382
  }, [currentFocus, actualLength]);
533
- const checkIsComplete = (0, import_react4.useCallback)(
383
+ const checkIsComplete = (0, import_react3.useCallback)(
534
384
  (val) => val.length >= actualLength,
535
385
  [actualLength]
536
386
  );
@@ -627,7 +477,7 @@ var InputPin = ({
627
477
  borderColor = inputColors.border;
628
478
  }
629
479
  const textColor = isDisabled ? inputColors.textDisable : inputColors.text;
630
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
480
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
631
481
  Box,
632
482
  {
633
483
  width: flexibleWidth ? void 0 : sizeStyles.size,
@@ -643,7 +493,7 @@ var InputPin = ({
643
493
  backgroundColor: inputColors.bgHover,
644
494
  borderColor: inputColors.borderHover
645
495
  } : void 0,
646
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
496
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
647
497
  InputPrimitive,
648
498
  {
649
499
  ref: addRef ? handleRef(index) : (el) => inputs.current[index] = el,
@@ -672,7 +522,7 @@ var InputPin = ({
672
522
  index
673
523
  );
674
524
  });
675
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
525
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
676
526
  Box,
677
527
  {
678
528
  flexDirection: "column",
@@ -682,7 +532,7 @@ var InputPin = ({
682
532
  "aria-labelledby": label ? labelId : void 0,
683
533
  "aria-label": !label && ariaLabel ? ariaLabel : void 0,
684
534
  children: [
685
- label && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
535
+ label && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
686
536
  Text,
687
537
  {
688
538
  id: labelId,
@@ -692,7 +542,7 @@ var InputPin = ({
692
542
  children: label
693
543
  }
694
544
  ),
695
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
545
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
696
546
  Box,
697
547
  {
698
548
  flexDirection: "row",
@@ -702,7 +552,7 @@ var InputPin = ({
702
552
  children: pinItems
703
553
  }
704
554
  ),
705
- isError && errorText && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
555
+ isError && errorText && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
706
556
  Text,
707
557
  {
708
558
  id: errorId,
package/web/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.tsx","../../src/InputPin.tsx","../../../primitives-web/src/Box.tsx","../../../primitives-web/src/Text.tsx","../../../primitives-web/src/Spinner.tsx","../../../primitives-web/src/Icon.tsx","../../../primitives-web/src/Divider.tsx","../../../primitives-web/src/Input.tsx","../../../primitives-web/src/TextArea.tsx"],"sourcesContent":["export * from \"./InputPin\";\n","import React, { useState, useRef, useEffect, useCallback } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, InputPrimitive } from \"@xsolla/xui-primitives\";\nimport { useDesignSystem, useId } from \"@xsolla/xui-core\";\n\nexport interface OnInputPinCompleteProps {\n isComplete: boolean;\n value: string;\n}\n\nexport interface InputPinProps {\n /** Current value of the input pin */\n value?: string;\n /** Function that will be called when the input value changes */\n onChange?: (props: OnInputPinCompleteProps) => void;\n /** Function that will be called when the input is completed */\n onComplete?: (props: OnInputPinCompleteProps) => void;\n /** The length of the code to be input. Default is 4 */\n codeLength?: number;\n /** @deprecated Use codeLength instead */\n length?: number;\n /** Property for changing the size of the input */\n size?: \"xl\" | \"lg\" | \"md\" | \"sm\" | \"xs\";\n /** @deprecated Use disabled and error props instead */\n state?: \"default\" | \"hover\" | \"disable\" | \"error\";\n /** Property for disabling the control */\n disabled?: boolean;\n /** Property for displaying an error state */\n error?: boolean;\n /** Property for displaying a label above the input */\n label?: string;\n /** Property for displaying an error message */\n errorMessage?: string;\n /** @deprecated Use errorMessage instead */\n errorLabel?: string;\n /** Whether to hide the text (like a password field) */\n secureTextEntry?: boolean;\n /** Show dot placeholders in empty inputs */\n showPlaceholderDots?: boolean;\n /** Expands input cells to fill the width of the container */\n flexibleWidth?: boolean;\n /** Boolean value indicating if the input is filled or not */\n isComplete?: boolean;\n /** The current focused input index */\n currentFocus?: number;\n /** Function to add a ref to an input element */\n addRef?: (index: number) => (element: HTMLInputElement | null) => void;\n /** Test identifier for the component */\n testID?: string;\n /** Accessible label for screen readers (use when no visible label) */\n \"aria-label\"?: string;\n}\n\nexport const InputPin: React.FC<InputPinProps> = ({\n value = \"\",\n onChange,\n onComplete,\n codeLength,\n length = 4,\n size = \"md\",\n state: externalState,\n disabled: disabledProp,\n error: errorProp,\n label,\n errorMessage,\n errorLabel,\n secureTextEntry = false,\n showPlaceholderDots = true,\n flexibleWidth = false,\n isComplete: isCompleteProp,\n currentFocus,\n addRef,\n testID,\n \"aria-label\": ariaLabel,\n}) => {\n const { theme } = useDesignSystem();\n const uniqueId = useId();\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [internalValue, setInternalValue] = useState(value);\n\n // Support both codeLength (new) and length (deprecated)\n const actualLength = codeLength ?? length;\n\n // Support both errorMessage (new) and errorLabel (deprecated)\n const errorText = errorMessage ?? errorLabel;\n\n // Support both new props and deprecated state prop\n // Error state is true if error prop is set, or errorMessage is provided, or state is \"error\"\n const isError = errorProp ?? (!!errorText || externalState === \"error\");\n const isDisabled = disabledProp ?? externalState === \"disable\";\n const isHover = externalState === \"hover\";\n const sizeStyles = theme.sizing.inputPin(size);\n const inputColors = theme.colors.control.input;\n\n const inputs = useRef<(HTMLInputElement | null)[]>([]);\n\n // Sync internal value with external value\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n // Handle currentFocus prop\n useEffect(() => {\n if (\n currentFocus !== undefined &&\n currentFocus >= 0 &&\n currentFocus < actualLength\n ) {\n inputs.current[currentFocus]?.focus();\n }\n }, [currentFocus, actualLength]);\n\n // Calculate isComplete status\n const checkIsComplete = useCallback(\n (val: string) => val.length >= actualLength,\n [actualLength]\n );\n\n // IDs for accessibility\n const labelId = `${uniqueId}-label`;\n const errorId = `${uniqueId}-error`;\n\n const handleTextChange = (text: string, index: number) => {\n // Filter to only alphanumeric characters\n const sanitizedText = text.replace(/[^0-9a-zA-Z]/g, \"\");\n\n // Handle multi-character input (paste on React Native)\n if (sanitizedText.length > 1) {\n const pastedData = sanitizedText.slice(0, actualLength - index);\n const newValue = internalValue.split(\"\");\n\n // Ensure the array has the correct length\n while (newValue.length < actualLength) {\n newValue.push(\"\");\n }\n\n // Fill in characters starting from current index\n for (let i = 0; i < pastedData.length && index + i < actualLength; i++) {\n newValue[index + i] = pastedData[i];\n }\n\n const updatedValue = newValue.slice(0, actualLength).join(\"\");\n setInternalValue(updatedValue);\n\n const complete = checkIsComplete(updatedValue);\n const changeProps = { isComplete: complete, value: updatedValue };\n\n onChange?.(changeProps);\n\n if (complete) {\n onComplete?.(changeProps);\n }\n\n // Focus the next empty input or the last input\n const nextIndex = Math.min(index + pastedData.length, actualLength - 1);\n inputs.current[nextIndex]?.focus();\n return;\n }\n\n // Handle single character input\n const char = sanitizedText.slice(-1);\n const newValue = internalValue.split(\"\");\n\n // Ensure the array has the correct length\n while (newValue.length < actualLength) {\n newValue.push(\"\");\n }\n\n newValue[index] = char;\n const updatedValue = newValue.slice(0, actualLength).join(\"\");\n setInternalValue(updatedValue);\n\n const complete = checkIsComplete(updatedValue);\n const changeProps = { isComplete: complete, value: updatedValue };\n\n onChange?.(changeProps);\n\n if (complete) {\n onComplete?.(changeProps);\n }\n\n if (char && index < actualLength - 1) {\n inputs.current[index + 1]?.focus();\n }\n };\n\n const handleKeyDown = (\n e: React.KeyboardEvent<HTMLInputElement>,\n index: number\n ) => {\n if (e.key === \"Backspace\") {\n if (!internalValue[index] && index > 0) {\n inputs.current[index - 1]?.focus();\n }\n } else if (e.key === \"ArrowLeft\" && index > 0) {\n inputs.current[index - 1]?.focus();\n } else if (e.key === \"ArrowRight\" && index < actualLength - 1) {\n inputs.current[index + 1]?.focus();\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent) => {\n e.preventDefault();\n const pastedData = e.clipboardData\n .getData(\"text\")\n .replace(/[^0-9a-zA-Z]/g, \"\")\n .slice(0, actualLength);\n setInternalValue(pastedData);\n\n const complete = checkIsComplete(pastedData);\n const changeProps = { isComplete: complete, value: pastedData };\n\n onChange?.(changeProps);\n\n if (complete) {\n onComplete?.(changeProps);\n }\n\n // Focus the last filled input or the first empty one\n const nextIndex = Math.min(pastedData.length, actualLength - 1);\n inputs.current[nextIndex]?.focus();\n };\n\n // Handler for storing refs that can be provided to addRef prop\n const handleRef = (index: number) => (element: HTMLInputElement | null) => {\n inputs.current[index] = element;\n addRef?.(index)(element);\n };\n\n const pinItems = Array.from({ length: actualLength }).map((_, index) => {\n const char = internalValue[index] || \"\";\n const isFocused = focusedIndex === index;\n\n let backgroundColor = inputColors.bg;\n let borderColor = inputColors.border;\n\n if (isDisabled) {\n backgroundColor = inputColors.bgDisable;\n borderColor = inputColors.borderDisable;\n } else if (isError) {\n borderColor = theme.colors.border.alert;\n backgroundColor = isFocused\n ? theme.colors.control.focus.bg\n : inputColors.bg;\n } else if (isFocused) {\n backgroundColor = theme.colors.control.focus.bg;\n borderColor = theme.colors.content.brand.secondary;\n } else if (isHover) {\n backgroundColor = inputColors.bgHover;\n borderColor = inputColors.borderHover;\n } else {\n backgroundColor = inputColors.bg;\n borderColor = inputColors.border;\n }\n\n const textColor = isDisabled ? inputColors.textDisable : inputColors.text;\n\n return (\n <Box\n key={index}\n width={flexibleWidth ? undefined : sizeStyles.size}\n height={sizeStyles.size}\n flex={flexibleWidth ? 1 : undefined}\n backgroundColor={backgroundColor}\n borderColor={borderColor}\n borderWidth={sizeStyles.borderWidth}\n borderRadius={sizeStyles.radius}\n alignItems=\"center\"\n justifyContent=\"center\"\n hoverStyle={\n !isDisabled && !isFocused && !isError\n ? {\n backgroundColor: inputColors.bgHover,\n borderColor: inputColors.borderHover,\n }\n : undefined\n }\n >\n <InputPrimitive\n ref={\n addRef\n ? handleRef(index)\n : (el: any) => (inputs.current[index] = el)\n }\n value={char}\n placeholder={showPlaceholderDots && !isFocused ? \"•\" : undefined}\n onChangeText={(text: string) => handleTextChange(text, index)}\n onFocus={() => setFocusedIndex(index)}\n onBlur={() => setFocusedIndex(null)}\n onKeyDown={(e: any) => handleKeyDown(e, index)}\n disabled={isDisabled}\n secureTextEntry={secureTextEntry}\n color={textColor}\n placeholderTextColor={inputColors.placeholder}\n fontSize={sizeStyles.fontSize}\n style={{ textAlign: \"center\" }}\n maxLength={1}\n inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n aria-label={\n ariaLabel\n ? `${ariaLabel} digit ${index + 1}`\n : `PIN digit ${index + 1}`\n }\n aria-invalid={isError}\n aria-describedby={isError && errorText ? errorId : undefined}\n data-testid={\n testID ? `${testID}-input-${index}` : `input-pin-input-${index}`\n }\n />\n </Box>\n );\n });\n\n return (\n <Box\n flexDirection=\"column\"\n gap={8}\n data-testid={testID || \"input-pin\"}\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={!label && ariaLabel ? ariaLabel : undefined}\n >\n {label && (\n <Text\n id={labelId}\n color={theme.colors.content.secondary}\n fontSize={sizeStyles.fontSize - 2}\n fontWeight=\"500\"\n >\n {label}\n </Text>\n )}\n <Box\n flexDirection=\"row\"\n gap={sizeStyles.gap}\n onPaste={handlePaste}\n width={flexibleWidth ? \"100%\" : undefined}\n >\n {pinItems}\n </Box>\n {isError && errorText && (\n <Text\n id={errorId}\n role=\"alert\"\n color={theme.colors.content.alert.primary}\n fontSize={sizeStyles.fontSize - 2}\n >\n {errorText}\n </Text>\n )}\n </Box>\n );\n};\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport type { BoxProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledBox = styled.div<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\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 overflow: ${(props) => props.overflow || \"visible\"};\n overflow-x: ${(props) => props.overflowX || \"visible\"};\n overflow-y: ${(props) => props.overflowY || \"visible\"};\n z-index: ${(props) => props.zIndex};\n opacity: ${(props) => (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 type,\n disabled,\n id,\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 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 }}\n />\n );\n }\n\n return (\n <StyledBox\n ref={ref}\n as={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 {...props}\n >\n {children}\n </StyledBox>\n );\n }\n);\n\nBox.displayName = \"Box\";\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledText = styled.span<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 '\"Pilat Wide Bold\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif !important'};\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\nexport const Text: React.FC<TextProps> = ({\n style,\n className,\n id,\n role,\n ...props\n}) => {\n return (\n <StyledText\n {...props}\n style={style}\n className={className}\n id={id}\n role={role}\n />\n );\n};\n","import React from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport type { SpinnerProps } from \"@xsolla/xui-primitives-core\";\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nconst StyledSpinner = styled.div<SpinnerProps>`\n width: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n height: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n border: ${(props) => props.strokeWidth || 2}px solid\n ${(props) => props.color || \"currentColor\"};\n border-bottom-color: transparent;\n border-radius: 50%;\n display: inline-block;\n box-sizing: border-box;\n animation: ${rotate} 1s linear infinite;\n`;\n\nexport const Spinner: React.FC<SpinnerProps> = ({\n role = \"status\",\n \"aria-label\": ariaLabel,\n \"aria-live\": ariaLive = \"polite\",\n \"aria-describedby\": ariaDescribedBy,\n testID,\n ...props\n}) => {\n return (\n <StyledSpinner\n role={role}\n aria-label={ariaLabel}\n aria-live={ariaLive}\n aria-describedby={ariaDescribedBy}\n data-testid={testID}\n {...props}\n />\n );\n};\n\nSpinner.displayName = \"Spinner\";\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledIcon = styled.div<IconProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n height: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n color: ${(props) => props.color || \"currentColor\"};\n\n svg {\n width: 100%;\n height: 100%;\n fill: none;\n stroke: currentColor;\n }\n`;\n\nexport const Icon: React.FC<IconProps> = ({ children, ...props }) => {\n return <StyledIcon {...props}>{children}</StyledIcon>;\n};\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { DividerProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledDivider = styled.div<DividerProps>`\n background-color: ${(props) =>\n props.dashStroke\n ? \"transparent\"\n : props.color || \"rgba(255, 255, 255, 0.15)\"};\n width: ${(props) =>\n props.vertical\n ? typeof props.width === \"number\"\n ? `${props.width}px`\n : props.width || \"1px\"\n : \"100%\"};\n height: ${(props) =>\n props.vertical\n ? \"100%\"\n : typeof props.height === \"number\"\n ? `${props.height}px`\n : props.height || \"1px\"};\n\n ${(props) =>\n props.dashStroke &&\n `\n border-style: dashed;\n border-color: ${props.color || \"rgba(255, 255, 255, 0.15)\"};\n border-width: 0;\n ${\n props.vertical\n ? `\n border-left-width: ${typeof props.width === \"number\" ? `${props.width}px` : props.width || \"1px\"};\n height: 100%;\n `\n : `\n border-top-width: ${typeof props.height === \"number\" ? `${props.height}px` : props.height || \"1px\"};\n width: 100%;\n `\n }\n `}\n`;\n\nexport const Divider: React.FC<DividerProps> = (props) => {\n return <StyledDivider {...props} />;\n};\n","import React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nimport { InputPrimitiveProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledInput = styled.input<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: inherit;\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\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 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 ...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 // Always pass value to make it a controlled input\n const inputValue = value !== undefined ? value : \"\";\n\n return (\n <StyledInput\n ref={ref}\n id={id}\n value={inputValue}\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 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}\n {...rest}\n />\n );\n }\n);\n\nInputPrimitive.displayName = \"InputPrimitive\";\n","import { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nimport { TextAreaPrimitiveProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledTextArea = styled.textarea<TextAreaPrimitiveProps>`\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: inherit;\n text-align: inherit;\n resize: none;\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\nexport const TextAreaPrimitive = forwardRef<\n HTMLTextAreaElement,\n TextAreaPrimitiveProps\n>(\n (\n {\n value,\n placeholder,\n onChangeText,\n onFocus,\n onBlur,\n onKeyDown,\n disabled,\n style,\n color,\n fontSize,\n placeholderTextColor,\n maxLength,\n rows,\n },\n ref\n ) => {\n return (\n <StyledTextArea\n ref={ref}\n value={value}\n placeholder={placeholder}\n onChange={(e) => onChangeText?.(e.target.value)}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n disabled={disabled}\n style={style}\n color={color}\n fontSize={fontSize}\n placeholderTextColor={placeholderTextColor}\n maxLength={maxLength}\n rows={rows}\n />\n );\n }\n);\n\nTextAreaPrimitive.displayName = \"TextAreaPrimitive\";\n"],"mappings":"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","names":["import_react","styled","React","import_styled_components","import_jsx_runtime","styled","import_styled_components","import_jsx_runtime","styled","import_styled_components","import_jsx_runtime","styled","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_jsx_runtime","newValue","updatedValue","complete","changeProps"]}
1
+ {"version":3,"sources":["../../src/index.tsx","../../src/InputPin.tsx","../../../primitives-web/src/Box.tsx","../../../primitives-web/src/Text.tsx","../../../primitives-web/src/Input.tsx"],"sourcesContent":["export * from \"./InputPin\";\n","import React, { useState, useRef, useEffect, useCallback } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, InputPrimitive } from \"@xsolla/xui-primitives\";\nimport { useDesignSystem, useId } from \"@xsolla/xui-core\";\n\nexport interface OnInputPinCompleteProps {\n isComplete: boolean;\n value: string;\n}\n\nexport interface InputPinProps {\n /** Current value of the input pin */\n value?: string;\n /** Function that will be called when the input value changes */\n onChange?: (props: OnInputPinCompleteProps) => void;\n /** Function that will be called when the input is completed */\n onComplete?: (props: OnInputPinCompleteProps) => void;\n /** The length of the code to be input. Default is 4 */\n codeLength?: number;\n /** @deprecated Use codeLength instead */\n length?: number;\n /** Property for changing the size of the input */\n size?: \"xl\" | \"lg\" | \"md\" | \"sm\" | \"xs\";\n /** @deprecated Use disabled and error props instead */\n state?: \"default\" | \"hover\" | \"disable\" | \"error\";\n /** Property for disabling the control */\n disabled?: boolean;\n /** Property for displaying an error state */\n error?: boolean;\n /** Property for displaying a label above the input */\n label?: string;\n /** Property for displaying an error message */\n errorMessage?: string;\n /** @deprecated Use errorMessage instead */\n errorLabel?: string;\n /** Whether to hide the text (like a password field) */\n secureTextEntry?: boolean;\n /** Show dot placeholders in empty inputs */\n showPlaceholderDots?: boolean;\n /** Expands input cells to fill the width of the container */\n flexibleWidth?: boolean;\n /** Boolean value indicating if the input is filled or not */\n isComplete?: boolean;\n /** The current focused input index */\n currentFocus?: number;\n /** Function to add a ref to an input element */\n addRef?: (index: number) => (element: HTMLInputElement | null) => void;\n /** Test identifier for the component */\n testID?: string;\n /** Accessible label for screen readers (use when no visible label) */\n \"aria-label\"?: string;\n}\n\nexport const InputPin: React.FC<InputPinProps> = ({\n value = \"\",\n onChange,\n onComplete,\n codeLength,\n length = 4,\n size = \"md\",\n state: externalState,\n disabled: disabledProp,\n error: errorProp,\n label,\n errorMessage,\n errorLabel,\n secureTextEntry = false,\n showPlaceholderDots = true,\n flexibleWidth = false,\n isComplete: isCompleteProp,\n currentFocus,\n addRef,\n testID,\n \"aria-label\": ariaLabel,\n}) => {\n const { theme } = useDesignSystem();\n const uniqueId = useId();\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [internalValue, setInternalValue] = useState(value);\n\n // Support both codeLength (new) and length (deprecated)\n const actualLength = codeLength ?? length;\n\n // Support both errorMessage (new) and errorLabel (deprecated)\n const errorText = errorMessage ?? errorLabel;\n\n // Support both new props and deprecated state prop\n // Error state is true if error prop is set, or errorMessage is provided, or state is \"error\"\n const isError = errorProp ?? (!!errorText || externalState === \"error\");\n const isDisabled = disabledProp ?? externalState === \"disable\";\n const isHover = externalState === \"hover\";\n const sizeStyles = theme.sizing.inputPin(size);\n const inputColors = theme.colors.control.input;\n\n const inputs = useRef<(HTMLInputElement | null)[]>([]);\n\n // Sync internal value with external value\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n // Handle currentFocus prop\n useEffect(() => {\n if (\n currentFocus !== undefined &&\n currentFocus >= 0 &&\n currentFocus < actualLength\n ) {\n inputs.current[currentFocus]?.focus();\n }\n }, [currentFocus, actualLength]);\n\n // Calculate isComplete status\n const checkIsComplete = useCallback(\n (val: string) => val.length >= actualLength,\n [actualLength]\n );\n\n // IDs for accessibility\n const labelId = `${uniqueId}-label`;\n const errorId = `${uniqueId}-error`;\n\n const handleTextChange = (text: string, index: number) => {\n // Filter to only alphanumeric characters\n const sanitizedText = text.replace(/[^0-9a-zA-Z]/g, \"\");\n\n // Handle multi-character input (paste on React Native)\n if (sanitizedText.length > 1) {\n const pastedData = sanitizedText.slice(0, actualLength - index);\n const newValue = internalValue.split(\"\");\n\n // Ensure the array has the correct length\n while (newValue.length < actualLength) {\n newValue.push(\"\");\n }\n\n // Fill in characters starting from current index\n for (let i = 0; i < pastedData.length && index + i < actualLength; i++) {\n newValue[index + i] = pastedData[i];\n }\n\n const updatedValue = newValue.slice(0, actualLength).join(\"\");\n setInternalValue(updatedValue);\n\n const complete = checkIsComplete(updatedValue);\n const changeProps = { isComplete: complete, value: updatedValue };\n\n onChange?.(changeProps);\n\n if (complete) {\n onComplete?.(changeProps);\n }\n\n // Focus the next empty input or the last input\n const nextIndex = Math.min(index + pastedData.length, actualLength - 1);\n inputs.current[nextIndex]?.focus();\n return;\n }\n\n // Handle single character input\n const char = sanitizedText.slice(-1);\n const newValue = internalValue.split(\"\");\n\n // Ensure the array has the correct length\n while (newValue.length < actualLength) {\n newValue.push(\"\");\n }\n\n newValue[index] = char;\n const updatedValue = newValue.slice(0, actualLength).join(\"\");\n setInternalValue(updatedValue);\n\n const complete = checkIsComplete(updatedValue);\n const changeProps = { isComplete: complete, value: updatedValue };\n\n onChange?.(changeProps);\n\n if (complete) {\n onComplete?.(changeProps);\n }\n\n if (char && index < actualLength - 1) {\n inputs.current[index + 1]?.focus();\n }\n };\n\n const handleKeyDown = (\n e: React.KeyboardEvent<HTMLInputElement>,\n index: number\n ) => {\n if (e.key === \"Backspace\") {\n if (!internalValue[index] && index > 0) {\n inputs.current[index - 1]?.focus();\n }\n } else if (e.key === \"ArrowLeft\" && index > 0) {\n inputs.current[index - 1]?.focus();\n } else if (e.key === \"ArrowRight\" && index < actualLength - 1) {\n inputs.current[index + 1]?.focus();\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent) => {\n e.preventDefault();\n const pastedData = e.clipboardData\n .getData(\"text\")\n .replace(/[^0-9a-zA-Z]/g, \"\")\n .slice(0, actualLength);\n setInternalValue(pastedData);\n\n const complete = checkIsComplete(pastedData);\n const changeProps = { isComplete: complete, value: pastedData };\n\n onChange?.(changeProps);\n\n if (complete) {\n onComplete?.(changeProps);\n }\n\n // Focus the last filled input or the first empty one\n const nextIndex = Math.min(pastedData.length, actualLength - 1);\n inputs.current[nextIndex]?.focus();\n };\n\n // Handler for storing refs that can be provided to addRef prop\n const handleRef = (index: number) => (element: HTMLInputElement | null) => {\n inputs.current[index] = element;\n addRef?.(index)(element);\n };\n\n const pinItems = Array.from({ length: actualLength }).map((_, index) => {\n const char = internalValue[index] || \"\";\n const isFocused = focusedIndex === index;\n\n let backgroundColor = inputColors.bg;\n let borderColor = inputColors.border;\n\n if (isDisabled) {\n backgroundColor = inputColors.bgDisable;\n borderColor = inputColors.borderDisable;\n } else if (isError) {\n borderColor = theme.colors.border.alert;\n backgroundColor = isFocused\n ? theme.colors.control.focus.bg\n : inputColors.bg;\n } else if (isFocused) {\n backgroundColor = theme.colors.control.focus.bg;\n borderColor = theme.colors.content.brand.secondary;\n } else if (isHover) {\n backgroundColor = inputColors.bgHover;\n borderColor = inputColors.borderHover;\n } else {\n backgroundColor = inputColors.bg;\n borderColor = inputColors.border;\n }\n\n const textColor = isDisabled ? inputColors.textDisable : inputColors.text;\n\n return (\n <Box\n key={index}\n width={flexibleWidth ? undefined : sizeStyles.size}\n height={sizeStyles.size}\n flex={flexibleWidth ? 1 : undefined}\n backgroundColor={backgroundColor}\n borderColor={borderColor}\n borderWidth={sizeStyles.borderWidth}\n borderRadius={sizeStyles.radius}\n alignItems=\"center\"\n justifyContent=\"center\"\n hoverStyle={\n !isDisabled && !isFocused && !isError\n ? {\n backgroundColor: inputColors.bgHover,\n borderColor: inputColors.borderHover,\n }\n : undefined\n }\n >\n <InputPrimitive\n ref={\n addRef\n ? handleRef(index)\n : (el: any) => (inputs.current[index] = el)\n }\n value={char}\n placeholder={showPlaceholderDots && !isFocused ? \"•\" : undefined}\n onChangeText={(text: string) => handleTextChange(text, index)}\n onFocus={() => setFocusedIndex(index)}\n onBlur={() => setFocusedIndex(null)}\n onKeyDown={(e: any) => handleKeyDown(e, index)}\n disabled={isDisabled}\n secureTextEntry={secureTextEntry}\n color={textColor}\n placeholderTextColor={inputColors.placeholder}\n fontSize={sizeStyles.fontSize}\n style={{ textAlign: \"center\" }}\n maxLength={1}\n inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n aria-label={\n ariaLabel\n ? `${ariaLabel} digit ${index + 1}`\n : `PIN digit ${index + 1}`\n }\n aria-invalid={isError}\n aria-describedby={isError && errorText ? errorId : undefined}\n data-testid={\n testID ? `${testID}-input-${index}` : `input-pin-input-${index}`\n }\n />\n </Box>\n );\n });\n\n return (\n <Box\n flexDirection=\"column\"\n gap={8}\n data-testid={testID || \"input-pin\"}\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={!label && ariaLabel ? ariaLabel : undefined}\n >\n {label && (\n <Text\n id={labelId}\n color={theme.colors.content.secondary}\n fontSize={sizeStyles.fontSize - 2}\n fontWeight=\"500\"\n >\n {label}\n </Text>\n )}\n <Box\n flexDirection=\"row\"\n gap={sizeStyles.gap}\n onPaste={handlePaste}\n width={flexibleWidth ? \"100%\" : undefined}\n >\n {pinItems}\n </Box>\n {isError && errorText && (\n <Text\n id={errorId}\n role=\"alert\"\n color={theme.colors.content.alert.primary}\n fontSize={sizeStyles.fontSize - 2}\n >\n {errorText}\n </Text>\n )}\n </Box>\n );\n};\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport type { BoxProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledBox = styled.div<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\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 overflow: ${(props) => props.overflow || \"visible\"};\n overflow-x: ${(props) => props.overflowX || \"visible\"};\n overflow-y: ${(props) => props.overflowY || \"visible\"};\n z-index: ${(props) => props.zIndex};\n opacity: ${(props) => (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 type,\n disabled,\n id,\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 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 }}\n />\n );\n }\n\n return (\n <StyledBox\n ref={ref}\n as={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 {...props}\n >\n {children}\n </StyledBox>\n );\n }\n);\n\nBox.displayName = \"Box\";\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledText = styled.span<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 '\"Pilat Wide Bold\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif !important'};\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\nexport const Text: React.FC<TextProps> = ({\n style,\n className,\n id,\n role,\n ...props\n}) => {\n return (\n <StyledText\n {...props}\n style={style}\n className={className}\n id={id}\n role={role}\n />\n );\n};\n","import React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nimport { InputPrimitiveProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledInput = styled.input<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: inherit;\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\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 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 ...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 // Always pass value to make it a controlled input\n const inputValue = value !== undefined ? value : \"\";\n\n return (\n <StyledInput\n ref={ref}\n id={id}\n value={inputValue}\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 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}\n {...rest}\n />\n );\n }\n);\n\nInputPrimitive.displayName = \"InputPrimitive\";\n"],"mappings":"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","names":["import_react","styled","React","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_jsx_runtime","newValue","updatedValue","complete","changeProps"]}