@xsolla/xui-stepper 0.136.0 → 0.137.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xsolla/xui-stepper",
3
- "version": "0.136.0",
3
+ "version": "0.137.0",
4
4
  "main": "./web/index.js",
5
5
  "module": "./web/index.mjs",
6
6
  "types": "./web/index.d.ts",
@@ -14,9 +14,9 @@
14
14
  "test:coverage": "vitest run --coverage"
15
15
  },
16
16
  "dependencies": {
17
- "@xsolla/xui-core": "0.136.0",
18
- "@xsolla/xui-icons": "0.136.0",
19
- "@xsolla/xui-primitives-core": "0.136.0"
17
+ "@xsolla/xui-core": "0.137.0",
18
+ "@xsolla/xui-icons": "0.137.0",
19
+ "@xsolla/xui-primitives-core": "0.137.0"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "react": ">=16.8.0",
package/web/index.js CHANGED
@@ -38,13 +38,85 @@ __export(index_exports, {
38
38
  module.exports = __toCommonJS(index_exports);
39
39
 
40
40
  // src/Stepper.tsx
41
- var import_react4 = require("react");
41
+ var import_react5 = require("react");
42
42
 
43
43
  // ../primitives-web/src/Box.tsx
44
- var import_react = __toESM(require("react"));
44
+ var import_react2 = __toESM(require("react"));
45
45
  var import_styled_components = __toESM(require("styled-components"));
46
+
47
+ // ../primitives-web/src/filterDOMProps.ts
48
+ var import_react = __toESM(require("react"));
49
+
50
+ // ../../node_modules/@emotion/memoize/dist/memoize.esm.js
51
+ function memoize(fn) {
52
+ var cache = {};
53
+ return function(arg) {
54
+ if (cache[arg] === void 0) cache[arg] = fn(arg);
55
+ return cache[arg];
56
+ };
57
+ }
58
+ var memoize_esm_default = memoize;
59
+
60
+ // ../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js
61
+ var 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)-.*))$/;
62
+ var index = memoize_esm_default(
63
+ function(prop) {
64
+ return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91;
65
+ }
66
+ /* Z+1 */
67
+ );
68
+ var is_prop_valid_esm_default = index;
69
+
70
+ // ../primitives-web/src/filterDOMProps.ts
71
+ var ADDITIONAL_BLOCKED_PROPS = /* @__PURE__ */ new Set([
72
+ // RN-only event handlers (pass isPropValid's on* pattern)
73
+ "onPress",
74
+ "onChangeText",
75
+ "onLayout",
76
+ "onMoveShouldSetResponder",
77
+ "onResponderGrant",
78
+ "onResponderMove",
79
+ "onResponderRelease",
80
+ "onResponderTerminate",
81
+ // SVG attributes that pass isPropValid
82
+ "strokeWidth",
83
+ // CSS properties that pass isPropValid but are used as component props
84
+ "overflow",
85
+ "cursor",
86
+ "fontSize",
87
+ "fontWeight",
88
+ "fontFamily",
89
+ "textDecoration"
90
+ ]);
91
+ function shouldForwardProp(key) {
92
+ if (ADDITIONAL_BLOCKED_PROPS.has(key)) return false;
93
+ return is_prop_valid_esm_default(key);
94
+ }
95
+ function createFilteredElement(defaultTag) {
96
+ const Component = import_react.default.forwardRef(
97
+ ({ children, elementType, ...props }, ref) => {
98
+ const Tag = elementType || defaultTag;
99
+ const htmlProps = {};
100
+ for (const key of Object.keys(props)) {
101
+ if (shouldForwardProp(key)) {
102
+ htmlProps[key] = props[key];
103
+ }
104
+ }
105
+ return import_react.default.createElement(
106
+ Tag,
107
+ { ref, ...htmlProps },
108
+ children
109
+ );
110
+ }
111
+ );
112
+ Component.displayName = `Filtered(${defaultTag})`;
113
+ return Component;
114
+ }
115
+
116
+ // ../primitives-web/src/Box.tsx
46
117
  var import_jsx_runtime = require("react/jsx-runtime");
47
- var StyledBox = import_styled_components.default.div`
118
+ var FilteredDiv = createFilteredElement("div");
119
+ var StyledBox = (0, import_styled_components.default)(FilteredDiv)`
48
120
  display: flex;
49
121
  box-sizing: border-box;
50
122
  background-color: ${(props) => props.backgroundColor || "transparent"};
@@ -131,7 +203,7 @@ var StyledBox = import_styled_components.default.div`
131
203
  ${(props) => props.pressStyle?.backgroundColor && `background-color: ${props.pressStyle.backgroundColor};`}
132
204
  }
133
205
  `;
134
- var Box = import_react.default.forwardRef(
206
+ var Box = import_react2.default.forwardRef(
135
207
  ({
136
208
  children,
137
209
  onPress,
@@ -156,6 +228,8 @@ var Box = import_react.default.forwardRef(
156
228
  type,
157
229
  disabled,
158
230
  id,
231
+ testID,
232
+ "data-testid": dataTestId,
159
233
  ...props
160
234
  }, ref) => {
161
235
  if (as === "img" && src) {
@@ -183,7 +257,7 @@ var Box = import_react.default.forwardRef(
183
257
  StyledBox,
184
258
  {
185
259
  ref,
186
- as,
260
+ elementType: as,
187
261
  id,
188
262
  type: as === "button" ? type || "button" : void 0,
189
263
  disabled: as === "button" ? disabled : void 0,
@@ -203,6 +277,7 @@ var Box = import_react.default.forwardRef(
203
277
  "aria-controls": ariaControls,
204
278
  "aria-live": ariaLive,
205
279
  tabIndex: tabIndex !== void 0 ? tabIndex : void 0,
280
+ "data-testid": dataTestId || testID,
206
281
  ...props,
207
282
  children
208
283
  }
@@ -214,7 +289,8 @@ Box.displayName = "Box";
214
289
  // ../primitives-web/src/Text.tsx
215
290
  var import_styled_components2 = __toESM(require("styled-components"));
216
291
  var import_jsx_runtime2 = require("react/jsx-runtime");
217
- var StyledText = import_styled_components2.default.span`
292
+ var FilteredSpan = createFilteredElement("span");
293
+ var StyledText = (0, import_styled_components2.default)(FilteredSpan)`
218
294
  color: ${(props) => props.color || "inherit"};
219
295
  font-size: ${(props) => typeof props.fontSize === "number" ? `${props.fontSize}px` : props.fontSize || "inherit"};
220
296
  font-weight: ${(props) => props.fontWeight || "normal"};
@@ -255,7 +331,8 @@ var rotate = import_styled_components3.keyframes`
255
331
  transform: rotate(360deg);
256
332
  }
257
333
  `;
258
- var StyledSpinner = import_styled_components3.default.div`
334
+ var FilteredDiv2 = createFilteredElement("div");
335
+ var StyledSpinner = (0, import_styled_components3.default)(FilteredDiv2)`
259
336
  width: ${(props) => typeof props.size === "number" ? `${props.size}px` : props.size || "24px"};
260
337
  height: ${(props) => typeof props.size === "number" ? `${props.size}px` : props.size || "24px"};
261
338
  border: ${(props) => props.strokeWidth || 2}px solid
@@ -291,7 +368,8 @@ Spinner.displayName = "Spinner";
291
368
  // ../primitives-web/src/Divider.tsx
292
369
  var import_styled_components4 = __toESM(require("styled-components"));
293
370
  var import_jsx_runtime4 = require("react/jsx-runtime");
294
- var StyledDivider = import_styled_components4.default.div`
371
+ var FilteredDiv3 = createFilteredElement("div");
372
+ var StyledDivider = (0, import_styled_components4.default)(FilteredDiv3)`
295
373
  background-color: ${(props) => props.dashStroke ? "transparent" : props.color || "rgba(255, 255, 255, 0.15)"};
296
374
  width: ${(props) => props.vertical ? typeof props.width === "number" ? `${props.width}px` : props.width || "1px" : "100%"};
297
375
  height: ${(props) => props.vertical ? "100%" : typeof props.height === "number" ? `${props.height}px` : props.height || "1px"};
@@ -317,7 +395,7 @@ var Divider = (props) => {
317
395
  var import_xui_core3 = require("@xsolla/xui-core");
318
396
 
319
397
  // src/Step.tsx
320
- var import_react3 = require("react");
398
+ var import_react4 = require("react");
321
399
  var import_xui_core2 = require("@xsolla/xui-core");
322
400
  var import_xui_icons = require("@xsolla/xui-icons");
323
401
 
@@ -481,9 +559,9 @@ var StepTail = ({
481
559
  };
482
560
 
483
561
  // src/hooks/useStepHoverStyles.ts
484
- var import_react2 = require("react");
562
+ var import_react3 = require("react");
485
563
  var useStepHoverStyles = (variantUI, state, className, theme, isLast, disabled, noClick, palette) => {
486
- (0, import_react2.useEffect)(() => {
564
+ (0, import_react3.useEffect)(() => {
487
565
  if (!isWeb()) {
488
566
  return;
489
567
  }
@@ -610,7 +688,7 @@ var StepState = ({
610
688
  className
611
689
  }) => {
612
690
  const paletteColor = getPaletteColor(palette, theme, "active");
613
- const iconStyles = (0, import_react3.useMemo)(() => {
691
+ const iconStyles = (0, import_react4.useMemo)(() => {
614
692
  if (variantUI === "simple") {
615
693
  switch (state) {
616
694
  case "current":
@@ -760,7 +838,7 @@ var Step = ({
760
838
  }) => {
761
839
  const { theme, mode } = (0, import_xui_core2.useResolvedTheme)({ themeMode, themeProductContext });
762
840
  const sizeStyles = theme.sizing.stepper(size);
763
- const stepClassName = (0, import_react3.useMemo)(
841
+ const stepClassName = (0, import_react4.useMemo)(
764
842
  () => `step-${stepNumber}-${variantUI}-${direction}-${size}-${state}-${palette}`,
765
843
  [stepNumber, variantUI, direction, size, state, palette]
766
844
  );
@@ -774,7 +852,7 @@ var Step = ({
774
852
  noClick,
775
853
  palette
776
854
  );
777
- const stepClick = (0, import_react3.useCallback)(() => {
855
+ const stepClick = (0, import_react4.useCallback)(() => {
778
856
  if (onClick && !disabled && !noClick) {
779
857
  onClick({
780
858
  number: stepNumber,
@@ -787,7 +865,7 @@ var Step = ({
787
865
  });
788
866
  }
789
867
  }, [onClick, disabled, noClick, stepNumber, title, description, state]);
790
- const stepAriaLabel = (0, import_react3.useMemo)(() => {
868
+ const stepAriaLabel = (0, import_react4.useMemo)(() => {
791
869
  const stepNum = stepNumber + 1;
792
870
  const titleText = typeof title === "string" ? title : "Step";
793
871
  const descriptionText = description && typeof description === "string" ? description : "";
@@ -809,7 +887,7 @@ var Step = ({
809
887
  }
810
888
  return label;
811
889
  }, [stepNumber, title, description, state, isLast]);
812
- const handleKeyDown = (0, import_react3.useCallback)(
890
+ const handleKeyDown = (0, import_react4.useCallback)(
813
891
  (event) => {
814
892
  if (event.key === "Enter" && !disabled && !noClick) {
815
893
  event.preventDefault();
@@ -821,7 +899,7 @@ var Step = ({
821
899
  },
822
900
  [stepClick, disabled, noClick]
823
901
  );
824
- const handleKeyUp = (0, import_react3.useCallback)(
902
+ const handleKeyUp = (0, import_react4.useCallback)(
825
903
  (event) => {
826
904
  if (event.key === " " && !disabled && !noClick) {
827
905
  event.preventDefault();
@@ -832,7 +910,7 @@ var Step = ({
832
910
  );
833
911
  const isInteractive = !disabled && !noClick && !!onClick;
834
912
  const isCurrent = state === "current";
835
- const titleStyles = (0, import_react3.useMemo)(() => {
913
+ const titleStyles = (0, import_react4.useMemo)(() => {
836
914
  if (variantUI === "simple") {
837
915
  const sizeStylesMap = {
838
916
  sm: {
@@ -890,7 +968,7 @@ var Step = ({
890
968
  };
891
969
  }
892
970
  }, [variantUI, direction, size, state, theme, palette]);
893
- const descriptionStyles = (0, import_react3.useMemo)(() => {
971
+ const descriptionStyles = (0, import_react4.useMemo)(() => {
894
972
  const sizeStylesMap = {
895
973
  sm: {
896
974
  fontSize: 12,
@@ -913,7 +991,7 @@ var Step = ({
913
991
  fontWeight: "400"
914
992
  };
915
993
  }, [size, variantUI, state, theme]);
916
- const contentWrapperStyles = (0, import_react3.useMemo)(() => {
994
+ const contentWrapperStyles = (0, import_react4.useMemo)(() => {
917
995
  if (variantUI === "simple") {
918
996
  if (direction === "horizontal") {
919
997
  return {
@@ -941,7 +1019,7 @@ var Step = ({
941
1019
  return baseStyles;
942
1020
  }
943
1021
  }, [variantUI, direction, size]);
944
- const stepWrapperStyles = (0, import_react3.useMemo)(() => {
1022
+ const stepWrapperStyles = (0, import_react4.useMemo)(() => {
945
1023
  if (variantUI === "current") {
946
1024
  if (direction === "horizontal") {
947
1025
  return {
@@ -1350,8 +1428,8 @@ var Step = ({
1350
1428
 
1351
1429
  // src/Stepper.tsx
1352
1430
  var import_jsx_runtime7 = require("react/jsx-runtime");
1353
- var import_react5 = require("react");
1354
- var Stepper = (0, import_react4.forwardRef)(
1431
+ var import_react6 = require("react");
1432
+ var Stepper = (0, import_react5.forwardRef)(
1355
1433
  ({
1356
1434
  direction = "horizontal",
1357
1435
  variantUI = "current",
@@ -1402,26 +1480,26 @@ var Stepper = (0, import_react4.forwardRef)(
1402
1480
  ];
1403
1481
  let firstColoredTailIndex = -1;
1404
1482
  let lastColoredTailIndex = -1;
1405
- steps.forEach((step, index) => {
1406
- if (step.state && coloredTailStates.includes(step.state) && index < steps.length - 1) {
1483
+ steps.forEach((step, index2) => {
1484
+ if (step.state && coloredTailStates.includes(step.state) && index2 < steps.length - 1) {
1407
1485
  if (firstColoredTailIndex === -1) {
1408
- firstColoredTailIndex = index;
1486
+ firstColoredTailIndex = index2;
1409
1487
  }
1410
- lastColoredTailIndex = index;
1488
+ lastColoredTailIndex = index2;
1411
1489
  }
1412
1490
  });
1413
- return steps.map((step, index) => {
1414
- const isLast = index === steps.length - 1;
1415
- const isFirstColoredTail = index === firstColoredTailIndex;
1416
- const isLastColoredTail = index === lastColoredTailIndex;
1417
- return /* @__PURE__ */ (0, import_react5.createElement)(
1491
+ return steps.map((step, index2) => {
1492
+ const isLast = index2 === steps.length - 1;
1493
+ const isFirstColoredTail = index2 === firstColoredTailIndex;
1494
+ const isLastColoredTail = index2 === lastColoredTailIndex;
1495
+ return /* @__PURE__ */ (0, import_react6.createElement)(
1418
1496
  Step,
1419
1497
  {
1420
1498
  size,
1421
1499
  ...step,
1422
- key: step.key || `stepper-${index}`,
1500
+ key: step.key || `stepper-${index2}`,
1423
1501
  onClick,
1424
- stepNumber: index,
1502
+ stepNumber: index2,
1425
1503
  tail: tail && variantUI === "simple" && !isLast,
1426
1504
  direction,
1427
1505
  variantUI,