@xsolla/xui-b2b-chip-stepper 0.195.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/README.md +16 -0
- package/native/index.d.mts +137 -0
- package/native/index.d.ts +137 -0
- package/native/index.js +493 -0
- package/native/index.js.map +1 -0
- package/native/index.mjs +472 -0
- package/native/index.mjs.map +1 -0
- package/package.json +58 -0
- package/web/index.d.mts +137 -0
- package/web/index.d.ts +137 -0
- package/web/index.js +552 -0
- package/web/index.js.map +1 -0
- package/web/index.mjs +514 -0
- package/web/index.mjs.map +1 -0
package/web/index.js
ADDED
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.tsx
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
ChipStepper: () => ChipStepper,
|
|
34
|
+
chipStepperSizing: () => chipStepperSizing
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(index_exports);
|
|
37
|
+
|
|
38
|
+
// src/ChipStepper.tsx
|
|
39
|
+
var import_react4 = require("react");
|
|
40
|
+
|
|
41
|
+
// ../../foundation/primitives-web/src/Box.tsx
|
|
42
|
+
var import_react2 = __toESM(require("react"));
|
|
43
|
+
var import_styled_components = __toESM(require("styled-components"));
|
|
44
|
+
|
|
45
|
+
// ../../foundation/primitives-web/src/filterDOMProps.ts
|
|
46
|
+
var import_react = __toESM(require("react"));
|
|
47
|
+
|
|
48
|
+
// ../../../node_modules/@emotion/memoize/dist/memoize.esm.js
|
|
49
|
+
function memoize(fn) {
|
|
50
|
+
var cache = {};
|
|
51
|
+
return function(arg) {
|
|
52
|
+
if (cache[arg] === void 0) cache[arg] = fn(arg);
|
|
53
|
+
return cache[arg];
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
var memoize_esm_default = memoize;
|
|
57
|
+
|
|
58
|
+
// ../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js
|
|
59
|
+
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)-.*))$/;
|
|
60
|
+
var index = memoize_esm_default(
|
|
61
|
+
function(prop) {
|
|
62
|
+
return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91;
|
|
63
|
+
}
|
|
64
|
+
/* Z+1 */
|
|
65
|
+
);
|
|
66
|
+
var is_prop_valid_esm_default = index;
|
|
67
|
+
|
|
68
|
+
// ../../foundation/primitives-web/src/filterDOMProps.ts
|
|
69
|
+
var ADDITIONAL_BLOCKED_PROPS = /* @__PURE__ */ new Set([
|
|
70
|
+
// RN-only event handlers (pass isPropValid's on* pattern)
|
|
71
|
+
"onPress",
|
|
72
|
+
"onChangeText",
|
|
73
|
+
"onLayout",
|
|
74
|
+
"onMoveShouldSetResponder",
|
|
75
|
+
"onResponderGrant",
|
|
76
|
+
"onResponderMove",
|
|
77
|
+
"onResponderRelease",
|
|
78
|
+
"onResponderTerminate",
|
|
79
|
+
// SVG attributes that pass isPropValid
|
|
80
|
+
"strokeWidth",
|
|
81
|
+
// CSS properties that pass isPropValid but are used as component props
|
|
82
|
+
"overflow",
|
|
83
|
+
"cursor",
|
|
84
|
+
"fontSize",
|
|
85
|
+
"fontWeight",
|
|
86
|
+
"fontFamily",
|
|
87
|
+
"textDecoration"
|
|
88
|
+
]);
|
|
89
|
+
function shouldForwardProp(key) {
|
|
90
|
+
if (ADDITIONAL_BLOCKED_PROPS.has(key)) return false;
|
|
91
|
+
return is_prop_valid_esm_default(key);
|
|
92
|
+
}
|
|
93
|
+
function createFilteredElement(defaultTag) {
|
|
94
|
+
const Component = import_react.default.forwardRef(
|
|
95
|
+
({ children, elementType, ...props }, ref) => {
|
|
96
|
+
const Tag = elementType || defaultTag;
|
|
97
|
+
const htmlProps = {};
|
|
98
|
+
for (const key of Object.keys(props)) {
|
|
99
|
+
if (shouldForwardProp(key)) {
|
|
100
|
+
htmlProps[key] = props[key];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return import_react.default.createElement(
|
|
104
|
+
Tag,
|
|
105
|
+
{ ref, ...htmlProps },
|
|
106
|
+
children
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
Component.displayName = `Filtered(${defaultTag})`;
|
|
111
|
+
return Component;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ../../foundation/primitives-web/src/Box.tsx
|
|
115
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
116
|
+
var FilteredDiv = createFilteredElement("div");
|
|
117
|
+
var StyledBox = (0, import_styled_components.default)(FilteredDiv)`
|
|
118
|
+
display: flex;
|
|
119
|
+
box-sizing: border-box;
|
|
120
|
+
background-color: ${(props) => props.backgroundColor || "transparent"};
|
|
121
|
+
border-color: ${(props) => props.borderColor || "transparent"};
|
|
122
|
+
border-width: ${(props) => typeof props.borderWidth === "number" ? `${props.borderWidth}px` : props.borderWidth || 0};
|
|
123
|
+
|
|
124
|
+
${(props) => props.borderBottomWidth !== void 0 && `
|
|
125
|
+
border-bottom-width: ${typeof props.borderBottomWidth === "number" ? `${props.borderBottomWidth}px` : props.borderBottomWidth};
|
|
126
|
+
border-bottom-color: ${props.borderBottomColor || props.borderColor || "transparent"};
|
|
127
|
+
border-bottom-style: solid;
|
|
128
|
+
`}
|
|
129
|
+
${(props) => props.borderTopWidth !== void 0 && `
|
|
130
|
+
border-top-width: ${typeof props.borderTopWidth === "number" ? `${props.borderTopWidth}px` : props.borderTopWidth};
|
|
131
|
+
border-top-color: ${props.borderTopColor || props.borderColor || "transparent"};
|
|
132
|
+
border-top-style: solid;
|
|
133
|
+
`}
|
|
134
|
+
${(props) => props.borderLeftWidth !== void 0 && `
|
|
135
|
+
border-left-width: ${typeof props.borderLeftWidth === "number" ? `${props.borderLeftWidth}px` : props.borderLeftWidth};
|
|
136
|
+
border-left-color: ${props.borderLeftColor || props.borderColor || "transparent"};
|
|
137
|
+
border-left-style: solid;
|
|
138
|
+
`}
|
|
139
|
+
${(props) => props.borderRightWidth !== void 0 && `
|
|
140
|
+
border-right-width: ${typeof props.borderRightWidth === "number" ? `${props.borderRightWidth}px` : props.borderRightWidth};
|
|
141
|
+
border-right-color: ${props.borderRightColor || props.borderColor || "transparent"};
|
|
142
|
+
border-right-style: solid;
|
|
143
|
+
`}
|
|
144
|
+
|
|
145
|
+
border-style: ${(props) => props.borderStyle || (props.borderWidth || props.borderBottomWidth || props.borderTopWidth || props.borderLeftWidth || props.borderRightWidth ? "solid" : "none")};
|
|
146
|
+
border-radius: ${(props) => typeof props.borderRadius === "number" ? `${props.borderRadius}px` : props.borderRadius || 0};
|
|
147
|
+
height: ${(props) => typeof props.height === "number" ? `${props.height}px` : props.height || "auto"};
|
|
148
|
+
width: ${(props) => typeof props.width === "number" ? `${props.width}px` : props.width || "auto"};
|
|
149
|
+
min-width: ${(props) => typeof props.minWidth === "number" ? `${props.minWidth}px` : props.minWidth || "auto"};
|
|
150
|
+
min-height: ${(props) => typeof props.minHeight === "number" ? `${props.minHeight}px` : props.minHeight || "auto"};
|
|
151
|
+
max-width: ${(props) => typeof props.maxWidth === "number" ? `${props.maxWidth}px` : props.maxWidth || "none"};
|
|
152
|
+
max-height: ${(props) => typeof props.maxHeight === "number" ? `${props.maxHeight}px` : props.maxHeight || "none"};
|
|
153
|
+
|
|
154
|
+
padding: ${(props) => typeof props.padding === "number" ? `${props.padding}px` : props.padding || 0};
|
|
155
|
+
${(props) => props.paddingHorizontal && `
|
|
156
|
+
padding-left: ${typeof props.paddingHorizontal === "number" ? `${props.paddingHorizontal}px` : props.paddingHorizontal};
|
|
157
|
+
padding-right: ${typeof props.paddingHorizontal === "number" ? `${props.paddingHorizontal}px` : props.paddingHorizontal};
|
|
158
|
+
`}
|
|
159
|
+
${(props) => props.paddingVertical && `
|
|
160
|
+
padding-top: ${typeof props.paddingVertical === "number" ? `${props.paddingVertical}px` : props.paddingVertical};
|
|
161
|
+
padding-bottom: ${typeof props.paddingVertical === "number" ? `${props.paddingVertical}px` : props.paddingVertical};
|
|
162
|
+
`}
|
|
163
|
+
${(props) => props.paddingTop !== void 0 && `padding-top: ${typeof props.paddingTop === "number" ? `${props.paddingTop}px` : props.paddingTop};`}
|
|
164
|
+
${(props) => props.paddingBottom !== void 0 && `padding-bottom: ${typeof props.paddingBottom === "number" ? `${props.paddingBottom}px` : props.paddingBottom};`}
|
|
165
|
+
${(props) => props.paddingLeft !== void 0 && `padding-left: ${typeof props.paddingLeft === "number" ? `${props.paddingLeft}px` : props.paddingLeft};`}
|
|
166
|
+
${(props) => props.paddingRight !== void 0 && `padding-right: ${typeof props.paddingRight === "number" ? `${props.paddingRight}px` : props.paddingRight};`}
|
|
167
|
+
|
|
168
|
+
margin: ${(props) => typeof props.margin === "number" ? `${props.margin}px` : props.margin || 0};
|
|
169
|
+
${(props) => props.marginTop !== void 0 && `margin-top: ${typeof props.marginTop === "number" ? `${props.marginTop}px` : props.marginTop};`}
|
|
170
|
+
${(props) => props.marginBottom !== void 0 && `margin-bottom: ${typeof props.marginBottom === "number" ? `${props.marginBottom}px` : props.marginBottom};`}
|
|
171
|
+
${(props) => props.marginLeft !== void 0 && `margin-left: ${typeof props.marginLeft === "number" ? `${props.marginLeft}px` : props.marginLeft};`}
|
|
172
|
+
${(props) => props.marginRight !== void 0 && `margin-right: ${typeof props.marginRight === "number" ? `${props.marginRight}px` : props.marginRight};`}
|
|
173
|
+
|
|
174
|
+
flex-direction: ${(props) => props.flexDirection || "column"};
|
|
175
|
+
flex-wrap: ${(props) => props.flexWrap || "nowrap"};
|
|
176
|
+
align-items: ${(props) => props.alignItems || "stretch"};
|
|
177
|
+
justify-content: ${(props) => props.justifyContent || "flex-start"};
|
|
178
|
+
cursor: ${(props) => props.cursor ? props.cursor : props.onClick || props.onPress ? "pointer" : "inherit"};
|
|
179
|
+
position: ${(props) => props.position || "static"};
|
|
180
|
+
top: ${(props) => typeof props.top === "number" ? `${props.top}px` : props.top};
|
|
181
|
+
bottom: ${(props) => typeof props.bottom === "number" ? `${props.bottom}px` : props.bottom};
|
|
182
|
+
left: ${(props) => typeof props.left === "number" ? `${props.left}px` : props.left};
|
|
183
|
+
right: ${(props) => typeof props.right === "number" ? `${props.right}px` : props.right};
|
|
184
|
+
flex: ${(props) => props.flex};
|
|
185
|
+
flex-shrink: ${(props) => props.flexShrink ?? 1};
|
|
186
|
+
gap: ${(props) => typeof props.gap === "number" ? `${props.gap}px` : props.gap || 0};
|
|
187
|
+
align-self: ${(props) => props.alignSelf || "auto"};
|
|
188
|
+
overflow: ${(props) => props.overflow || "visible"};
|
|
189
|
+
overflow-x: ${(props) => props.overflowX || "visible"};
|
|
190
|
+
overflow-y: ${(props) => props.overflowY || "visible"};
|
|
191
|
+
z-index: ${(props) => props.zIndex};
|
|
192
|
+
opacity: ${(props) => props.disabled ? 0.5 : 1};
|
|
193
|
+
pointer-events: ${(props) => props.disabled ? "none" : "auto"};
|
|
194
|
+
|
|
195
|
+
&:hover {
|
|
196
|
+
${(props) => props.hoverStyle?.backgroundColor && `background-color: ${props.hoverStyle.backgroundColor};`}
|
|
197
|
+
${(props) => props.hoverStyle?.borderColor && `border-color: ${props.hoverStyle.borderColor};`}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
&:active {
|
|
201
|
+
${(props) => props.pressStyle?.backgroundColor && `background-color: ${props.pressStyle.backgroundColor};`}
|
|
202
|
+
}
|
|
203
|
+
`;
|
|
204
|
+
var Box = import_react2.default.forwardRef(
|
|
205
|
+
({
|
|
206
|
+
children,
|
|
207
|
+
onPress,
|
|
208
|
+
onKeyDown,
|
|
209
|
+
onKeyUp,
|
|
210
|
+
role,
|
|
211
|
+
"aria-label": ariaLabel,
|
|
212
|
+
"aria-labelledby": ariaLabelledBy,
|
|
213
|
+
"aria-current": ariaCurrent,
|
|
214
|
+
"aria-disabled": ariaDisabled,
|
|
215
|
+
"aria-live": ariaLive,
|
|
216
|
+
"aria-busy": ariaBusy,
|
|
217
|
+
"aria-describedby": ariaDescribedBy,
|
|
218
|
+
"aria-expanded": ariaExpanded,
|
|
219
|
+
"aria-haspopup": ariaHasPopup,
|
|
220
|
+
"aria-pressed": ariaPressed,
|
|
221
|
+
"aria-controls": ariaControls,
|
|
222
|
+
tabIndex,
|
|
223
|
+
as,
|
|
224
|
+
src,
|
|
225
|
+
alt,
|
|
226
|
+
onError,
|
|
227
|
+
onLoad,
|
|
228
|
+
type,
|
|
229
|
+
disabled,
|
|
230
|
+
id,
|
|
231
|
+
testID,
|
|
232
|
+
"data-testid": dataTestId,
|
|
233
|
+
...props
|
|
234
|
+
}, ref) => {
|
|
235
|
+
if (as === "img" && src) {
|
|
236
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
237
|
+
"img",
|
|
238
|
+
{
|
|
239
|
+
src,
|
|
240
|
+
alt: alt || "",
|
|
241
|
+
onError,
|
|
242
|
+
onLoad,
|
|
243
|
+
style: {
|
|
244
|
+
display: "block",
|
|
245
|
+
objectFit: "cover",
|
|
246
|
+
width: typeof props.width === "number" ? `${props.width}px` : props.width,
|
|
247
|
+
height: typeof props.height === "number" ? `${props.height}px` : props.height,
|
|
248
|
+
borderRadius: typeof props.borderRadius === "number" ? `${props.borderRadius}px` : props.borderRadius,
|
|
249
|
+
position: props.position,
|
|
250
|
+
top: typeof props.top === "number" ? `${props.top}px` : props.top,
|
|
251
|
+
left: typeof props.left === "number" ? `${props.left}px` : props.left,
|
|
252
|
+
right: typeof props.right === "number" ? `${props.right}px` : props.right,
|
|
253
|
+
bottom: typeof props.bottom === "number" ? `${props.bottom}px` : props.bottom,
|
|
254
|
+
...props.style
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
260
|
+
StyledBox,
|
|
261
|
+
{
|
|
262
|
+
ref,
|
|
263
|
+
elementType: as,
|
|
264
|
+
id,
|
|
265
|
+
type: as === "button" ? type || "button" : void 0,
|
|
266
|
+
disabled: as === "button" ? disabled : void 0,
|
|
267
|
+
onClick: onPress,
|
|
268
|
+
onKeyDown,
|
|
269
|
+
onKeyUp,
|
|
270
|
+
role,
|
|
271
|
+
"aria-label": ariaLabel,
|
|
272
|
+
"aria-labelledby": ariaLabelledBy,
|
|
273
|
+
"aria-current": ariaCurrent,
|
|
274
|
+
"aria-disabled": ariaDisabled,
|
|
275
|
+
"aria-busy": ariaBusy,
|
|
276
|
+
"aria-describedby": ariaDescribedBy,
|
|
277
|
+
"aria-expanded": ariaExpanded,
|
|
278
|
+
"aria-haspopup": ariaHasPopup,
|
|
279
|
+
"aria-pressed": ariaPressed,
|
|
280
|
+
"aria-controls": ariaControls,
|
|
281
|
+
"aria-live": ariaLive,
|
|
282
|
+
tabIndex: tabIndex !== void 0 ? tabIndex : void 0,
|
|
283
|
+
"data-testid": dataTestId || testID,
|
|
284
|
+
...props,
|
|
285
|
+
children
|
|
286
|
+
}
|
|
287
|
+
);
|
|
288
|
+
}
|
|
289
|
+
);
|
|
290
|
+
Box.displayName = "Box";
|
|
291
|
+
|
|
292
|
+
// ../../foundation/primitives-web/src/Text.tsx
|
|
293
|
+
var import_styled_components2 = __toESM(require("styled-components"));
|
|
294
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
295
|
+
var FilteredSpan = createFilteredElement("span");
|
|
296
|
+
var StyledText = (0, import_styled_components2.default)(FilteredSpan)`
|
|
297
|
+
color: ${(props) => props.color || "inherit"};
|
|
298
|
+
font-size: ${(props) => typeof props.fontSize === "number" ? `${props.fontSize}px` : props.fontSize || "inherit"};
|
|
299
|
+
font-weight: ${(props) => props.fontWeight || "normal"};
|
|
300
|
+
font-family: ${(props) => props.fontFamily || '"Aktiv Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif'};
|
|
301
|
+
line-height: ${(props) => typeof props.lineHeight === "number" ? `${props.lineHeight}px` : props.lineHeight || "inherit"};
|
|
302
|
+
white-space: ${(props) => props.whiteSpace || "normal"};
|
|
303
|
+
text-align: ${(props) => props.textAlign || "inherit"};
|
|
304
|
+
text-decoration: ${(props) => props.textDecoration || "none"};
|
|
305
|
+
`;
|
|
306
|
+
var Text = ({
|
|
307
|
+
style,
|
|
308
|
+
className,
|
|
309
|
+
id,
|
|
310
|
+
role,
|
|
311
|
+
testID,
|
|
312
|
+
"data-testid": dataTestId,
|
|
313
|
+
numberOfLines: _numberOfLines,
|
|
314
|
+
...props
|
|
315
|
+
}) => {
|
|
316
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
317
|
+
StyledText,
|
|
318
|
+
{
|
|
319
|
+
...props,
|
|
320
|
+
style,
|
|
321
|
+
className,
|
|
322
|
+
id,
|
|
323
|
+
role,
|
|
324
|
+
"data-testid": dataTestId || testID
|
|
325
|
+
}
|
|
326
|
+
);
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
// src/ChipStepper.tsx
|
|
330
|
+
var import_xui_core = require("@xsolla/xui-core");
|
|
331
|
+
var import_xui_icons_base2 = require("@xsolla/xui-icons-base");
|
|
332
|
+
|
|
333
|
+
// src/ChipStep.tsx
|
|
334
|
+
var import_react3 = require("react");
|
|
335
|
+
var import_xui_icons_base = require("@xsolla/xui-icons-base");
|
|
336
|
+
|
|
337
|
+
// src/sizing.ts
|
|
338
|
+
var SMALL = {
|
|
339
|
+
itemGap: 4,
|
|
340
|
+
chipPaddingTop: 4,
|
|
341
|
+
chipPaddingBottom: 4,
|
|
342
|
+
chipPaddingLeft: 4,
|
|
343
|
+
chipPaddingRight: 6,
|
|
344
|
+
chipRadius: 4,
|
|
345
|
+
chipBorderWidth: 1,
|
|
346
|
+
chipIconSize: 12,
|
|
347
|
+
separatorIconSize: 12,
|
|
348
|
+
labelFontSize: 10,
|
|
349
|
+
labelLineHeight: 14
|
|
350
|
+
};
|
|
351
|
+
var MEDIUM = {
|
|
352
|
+
itemGap: 4,
|
|
353
|
+
chipPaddingTop: 6,
|
|
354
|
+
chipPaddingBottom: 6,
|
|
355
|
+
chipPaddingLeft: 6,
|
|
356
|
+
chipPaddingRight: 8,
|
|
357
|
+
chipRadius: 4,
|
|
358
|
+
chipBorderWidth: 1,
|
|
359
|
+
chipIconSize: 16,
|
|
360
|
+
separatorIconSize: 16,
|
|
361
|
+
labelFontSize: 12,
|
|
362
|
+
labelLineHeight: 16
|
|
363
|
+
};
|
|
364
|
+
var chipStepperSizing = {
|
|
365
|
+
sm: SMALL,
|
|
366
|
+
md: MEDIUM
|
|
367
|
+
};
|
|
368
|
+
var getExtraLeftPadding = (sizing) => sizing.itemGap;
|
|
369
|
+
|
|
370
|
+
// src/ChipStep.tsx
|
|
371
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
372
|
+
var getChipPalette = (status, theme) => {
|
|
373
|
+
switch (status) {
|
|
374
|
+
case "active":
|
|
375
|
+
return {
|
|
376
|
+
background: theme.colors.overlay.brand,
|
|
377
|
+
border: theme.colors.border.brand,
|
|
378
|
+
text: theme.colors.content.primary
|
|
379
|
+
};
|
|
380
|
+
case "done":
|
|
381
|
+
return {
|
|
382
|
+
background: theme.colors.background.primary,
|
|
383
|
+
border: theme.colors.border.secondary,
|
|
384
|
+
text: theme.colors.content.primary
|
|
385
|
+
};
|
|
386
|
+
case "error":
|
|
387
|
+
return {
|
|
388
|
+
background: theme.colors.overlay.alert,
|
|
389
|
+
border: theme.colors.border.alert,
|
|
390
|
+
text: theme.colors.content.alert.primary
|
|
391
|
+
};
|
|
392
|
+
case "disabled":
|
|
393
|
+
return {
|
|
394
|
+
background: theme.colors.background.neutral.secondary,
|
|
395
|
+
border: "transparent",
|
|
396
|
+
text: theme.colors.control.text.disable
|
|
397
|
+
};
|
|
398
|
+
case "next":
|
|
399
|
+
default:
|
|
400
|
+
return {
|
|
401
|
+
background: theme.colors.background.primary,
|
|
402
|
+
border: theme.colors.border.secondary,
|
|
403
|
+
text: theme.colors.content.tertiary
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
var ChipStep = ({
|
|
408
|
+
step,
|
|
409
|
+
stepNumber,
|
|
410
|
+
showStepNumber,
|
|
411
|
+
sizing,
|
|
412
|
+
theme,
|
|
413
|
+
onActivate
|
|
414
|
+
}) => {
|
|
415
|
+
const {
|
|
416
|
+
label,
|
|
417
|
+
status = "next",
|
|
418
|
+
leftIcon,
|
|
419
|
+
showLeftExtraPadding = false,
|
|
420
|
+
onClick
|
|
421
|
+
} = step;
|
|
422
|
+
const isDisabled = status === "disabled";
|
|
423
|
+
const isActive = status === "active";
|
|
424
|
+
const isInteractive = !isDisabled && (!!onClick || !!onActivate);
|
|
425
|
+
const palette = getChipPalette(status, theme);
|
|
426
|
+
const handlePress = (0, import_react3.useCallback)(() => {
|
|
427
|
+
if (isDisabled) return;
|
|
428
|
+
onClick?.();
|
|
429
|
+
onActivate?.();
|
|
430
|
+
}, [isDisabled, onClick, onActivate]);
|
|
431
|
+
const icon = status === "error" ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_xui_icons_base.Warning, { size: sizing.chipIconSize, color: palette.text }) : leftIcon;
|
|
432
|
+
const paddingLeft = sizing.chipPaddingLeft + (showLeftExtraPadding ? getExtraLeftPadding(sizing) : 0);
|
|
433
|
+
const textStyle = {
|
|
434
|
+
color: palette.text,
|
|
435
|
+
fontSize: sizing.labelFontSize,
|
|
436
|
+
lineHeight: sizing.labelLineHeight,
|
|
437
|
+
fontWeight: "500"
|
|
438
|
+
};
|
|
439
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
440
|
+
Box,
|
|
441
|
+
{
|
|
442
|
+
as: isInteractive ? "button" : void 0,
|
|
443
|
+
onPress: isInteractive ? handlePress : void 0,
|
|
444
|
+
flexDirection: "row",
|
|
445
|
+
alignItems: "center",
|
|
446
|
+
justifyContent: "center",
|
|
447
|
+
backgroundColor: palette.background,
|
|
448
|
+
borderColor: palette.border,
|
|
449
|
+
borderWidth: sizing.chipBorderWidth,
|
|
450
|
+
borderRadius: sizing.chipRadius,
|
|
451
|
+
"data-testid": "chip-step",
|
|
452
|
+
"data-step-status": status,
|
|
453
|
+
"aria-current": isActive ? "step" : void 0,
|
|
454
|
+
"aria-disabled": isDisabled ? true : void 0,
|
|
455
|
+
style: {
|
|
456
|
+
gap: sizing.itemGap,
|
|
457
|
+
paddingTop: sizing.chipPaddingTop,
|
|
458
|
+
paddingBottom: sizing.chipPaddingBottom,
|
|
459
|
+
paddingLeft,
|
|
460
|
+
paddingRight: sizing.chipPaddingRight,
|
|
461
|
+
flexShrink: 0,
|
|
462
|
+
cursor: isInteractive ? "pointer" : "default"
|
|
463
|
+
},
|
|
464
|
+
children: [
|
|
465
|
+
icon,
|
|
466
|
+
showStepNumber && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Text, { ...textStyle, children: `${stepNumber}.` }),
|
|
467
|
+
typeof label === "string" || typeof label === "number" ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Text, { ...textStyle, children: label }) : label
|
|
468
|
+
]
|
|
469
|
+
}
|
|
470
|
+
);
|
|
471
|
+
};
|
|
472
|
+
ChipStep.displayName = "ChipStep";
|
|
473
|
+
|
|
474
|
+
// src/ChipStepper.tsx
|
|
475
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
476
|
+
var ChipStepper = (0, import_react4.forwardRef)(
|
|
477
|
+
({
|
|
478
|
+
steps,
|
|
479
|
+
size = "sm",
|
|
480
|
+
onStepClick,
|
|
481
|
+
showStepNumbers = true,
|
|
482
|
+
showSeparators = true,
|
|
483
|
+
className,
|
|
484
|
+
"aria-label": ariaLabel,
|
|
485
|
+
testID,
|
|
486
|
+
themeMode,
|
|
487
|
+
themeProductContext,
|
|
488
|
+
...rest
|
|
489
|
+
}, ref) => {
|
|
490
|
+
const { theme } = (0, import_xui_core.useResolvedTheme)({ themeMode, themeProductContext });
|
|
491
|
+
const sizing = chipStepperSizing[size];
|
|
492
|
+
const defaultAriaLabel = `Progress: ${steps.length} step${steps.length === 1 ? "" : "s"}`;
|
|
493
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
494
|
+
Box,
|
|
495
|
+
{
|
|
496
|
+
ref,
|
|
497
|
+
as: "nav",
|
|
498
|
+
role: "navigation",
|
|
499
|
+
"aria-label": ariaLabel ?? defaultAriaLabel,
|
|
500
|
+
className,
|
|
501
|
+
testID,
|
|
502
|
+
"data-chip-stepper-size": size,
|
|
503
|
+
flexDirection: "row",
|
|
504
|
+
alignItems: "center",
|
|
505
|
+
flexWrap: "wrap",
|
|
506
|
+
style: { gap: sizing.itemGap },
|
|
507
|
+
...rest,
|
|
508
|
+
children: steps.map((step, i) => {
|
|
509
|
+
const isLast = i === steps.length - 1;
|
|
510
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
511
|
+
Box,
|
|
512
|
+
{
|
|
513
|
+
flexDirection: "row",
|
|
514
|
+
alignItems: "center",
|
|
515
|
+
style: { gap: sizing.itemGap },
|
|
516
|
+
children: [
|
|
517
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
518
|
+
ChipStep,
|
|
519
|
+
{
|
|
520
|
+
step,
|
|
521
|
+
stepNumber: i + 1,
|
|
522
|
+
showStepNumber: showStepNumbers,
|
|
523
|
+
sizing,
|
|
524
|
+
theme,
|
|
525
|
+
onActivate: onStepClick ? () => onStepClick({ number: i + 1, step }) : void 0
|
|
526
|
+
}
|
|
527
|
+
),
|
|
528
|
+
!isLast && showSeparators && // Decorative: the ordered labels already convey sequence.
|
|
529
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
530
|
+
import_xui_icons_base2.ChevronRight,
|
|
531
|
+
{
|
|
532
|
+
size: sizing.separatorIconSize,
|
|
533
|
+
color: theme.colors.content.tertiary,
|
|
534
|
+
"aria-hidden": true
|
|
535
|
+
}
|
|
536
|
+
)
|
|
537
|
+
]
|
|
538
|
+
},
|
|
539
|
+
step.key ?? `chip-step-${i}`
|
|
540
|
+
);
|
|
541
|
+
})
|
|
542
|
+
}
|
|
543
|
+
);
|
|
544
|
+
}
|
|
545
|
+
);
|
|
546
|
+
ChipStepper.displayName = "ChipStepper";
|
|
547
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
548
|
+
0 && (module.exports = {
|
|
549
|
+
ChipStepper,
|
|
550
|
+
chipStepperSizing
|
|
551
|
+
});
|
|
552
|
+
//# sourceMappingURL=index.js.map
|
package/web/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.tsx","../../src/ChipStepper.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","../../src/ChipStep.tsx","../../src/sizing.ts"],"sourcesContent":["export { ChipStepper } from \"./ChipStepper\";\nexport { chipStepperSizing } from \"./sizing\";\nexport type { ChipStepperSizing } from \"./sizing\";\nexport type {\n ChipStepClickType,\n ChipStepSize,\n ChipStepStatus,\n ChipStepType,\n ChipStepperProps,\n} from \"./types\";\n","import { forwardRef } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme } from \"@xsolla/xui-core\";\nimport { ChevronRight } from \"@xsolla/xui-icons-base\";\nimport { ChipStep, type ChipStepperTheme } from \"./ChipStep\";\nimport { chipStepperSizing } from \"./sizing\";\nimport type { ChipStepperProps } from \"./types\";\n\n/**\n * A horizontal, pill-per-step progress indicator for B2B surfaces.\n *\n * Each step renders as a small chip (`\"1. Label\"`, optionally with a leading\n * icon) and steps are separated by chevron glyphs. Step numbers are derived\n * from array position — callers pass labels only.\n *\n * Distinct from `@xsolla/xui-b2b-stepper`, which renders numbered circles with\n * title/description blocks and supports a vertical layout. Reach for this one\n * in tight horizontal spaces such as form and drawer headers.\n *\n * ```tsx\n * <ChipStepper\n * steps={[\n * { label: \"Details\", status: \"done\" },\n * { label: \"Billing\", status: \"active\" },\n * { label: \"Confirm\" },\n * ]}\n * onStepClick={({ number }) => goTo(number)}\n * />\n * ```\n */\nexport const ChipStepper = forwardRef<HTMLDivElement, ChipStepperProps>(\n (\n {\n steps,\n size = \"sm\",\n onStepClick,\n showStepNumbers = true,\n showSeparators = true,\n className,\n \"aria-label\": ariaLabel,\n testID,\n themeMode,\n themeProductContext,\n ...rest\n },\n ref\n ) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n const sizing = chipStepperSizing[size];\n\n const defaultAriaLabel = `Progress: ${steps.length} step${\n steps.length === 1 ? \"\" : \"s\"\n }`;\n\n return (\n <Box\n ref={ref}\n as=\"nav\"\n // `role` is redundant on a real <nav> but is the only semantic the\n // native Box can honour, where `as` is ignored.\n role=\"navigation\"\n aria-label={ariaLabel ?? defaultAriaLabel}\n className={className}\n testID={testID}\n data-chip-stepper-size={size}\n flexDirection=\"row\"\n alignItems=\"center\"\n flexWrap=\"wrap\"\n style={{ gap: sizing.itemGap }}\n {...rest}\n >\n {steps.map((step, i) => {\n const isLast = i === steps.length - 1;\n return (\n <Box\n key={step.key ?? `chip-step-${i}`}\n flexDirection=\"row\"\n alignItems=\"center\"\n style={{ gap: sizing.itemGap }}\n >\n <ChipStep\n step={step}\n stepNumber={i + 1}\n showStepNumber={showStepNumbers}\n sizing={sizing}\n theme={theme as ChipStepperTheme}\n onActivate={\n onStepClick\n ? () => onStepClick({ number: i + 1, step })\n : undefined\n }\n />\n {!isLast && showSeparators && (\n // Decorative: the ordered labels already convey sequence.\n <ChevronRight\n size={sizing.separatorIconSize}\n color={theme.colors.content.tertiary}\n aria-hidden\n />\n )}\n </Box>\n );\n })}\n </Box>\n );\n }\n);\n\nChipStepper.displayName = \"ChipStepper\";\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 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 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 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 \"cursor\",\n \"fontSize\",\n \"fontWeight\",\n \"fontFamily\",\n \"textDecoration\",\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\";\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\nexport const Text: React.FC<TextProps> = ({\n style,\n className,\n id,\n role,\n testID,\n \"data-testid\": dataTestId,\n numberOfLines: _numberOfLines,\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","import React, { useCallback } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text } from \"@xsolla/xui-primitives\";\nimport { Warning } from \"@xsolla/xui-icons-base\";\nimport { getExtraLeftPadding, type ChipStepperSizing } from \"./sizing\";\nimport type { ChipStepStatus, ChipStepType } from \"./types\";\n\n/**\n * Relaxed theme shape — only the token paths this component reads. Mirrors the\n * pattern used by `@xsolla/xui-b2b-stepper`'s `StepperTheme`.\n */\nexport type ChipStepperTheme = {\n colors: {\n background: {\n primary: string;\n neutral: { secondary: string };\n };\n border: {\n brand: string;\n secondary: string;\n alert: string;\n };\n overlay: {\n brand: string;\n alert: string;\n };\n content: {\n primary: string;\n tertiary: string;\n alert: { primary: string };\n };\n control: {\n text: { disable: string };\n };\n };\n};\n\ntype ChipPalette = {\n background: string;\n border: string;\n text: string;\n};\n\n/**\n * Per-status colour resolution. Every value comes from the active theme, so\n * the chip follows whichever theme mode is in effect.\n */\nexport const getChipPalette = (\n status: ChipStepStatus,\n theme: ChipStepperTheme\n): ChipPalette => {\n switch (status) {\n case \"active\":\n return {\n background: theme.colors.overlay.brand,\n border: theme.colors.border.brand,\n text: theme.colors.content.primary,\n };\n case \"done\":\n // Same neutral chip as `next`; only the text colour differs, so a\n // completed step reads as \"settled\" rather than \"upcoming\".\n return {\n background: theme.colors.background.primary,\n border: theme.colors.border.secondary,\n text: theme.colors.content.primary,\n };\n case \"error\":\n return {\n background: theme.colors.overlay.alert,\n border: theme.colors.border.alert,\n text: theme.colors.content.alert.primary,\n };\n case \"disabled\":\n return {\n background: theme.colors.background.neutral.secondary,\n border: \"transparent\",\n text: theme.colors.control.text.disable,\n };\n case \"next\":\n default:\n return {\n background: theme.colors.background.primary,\n border: theme.colors.border.secondary,\n text: theme.colors.content.tertiary,\n };\n }\n};\n\nexport interface ChipStepProps {\n step: ChipStepType;\n /** 1-based position, computed by the container. */\n stepNumber: number;\n showStepNumber: boolean;\n sizing: ChipStepperSizing;\n theme: ChipStepperTheme;\n onActivate?: () => void;\n}\n\nexport const ChipStep: React.FC<ChipStepProps> = ({\n step,\n stepNumber,\n showStepNumber,\n sizing,\n theme,\n onActivate,\n}) => {\n const {\n label,\n status = \"next\",\n leftIcon,\n showLeftExtraPadding = false,\n onClick,\n } = step;\n\n const isDisabled = status === \"disabled\";\n const isActive = status === \"active\";\n const isInteractive = !isDisabled && (!!onClick || !!onActivate);\n const palette = getChipPalette(status, theme);\n\n const handlePress = useCallback(() => {\n if (isDisabled) return;\n onClick?.();\n onActivate?.();\n }, [isDisabled, onClick, onActivate]);\n\n // `error` always shows the warning glyph, overriding any caller icon — the\n // error state must not be colour-only (WCAG 1.4.1).\n const icon =\n status === \"error\" ? (\n <Warning size={sizing.chipIconSize} color={palette.text} />\n ) : (\n leftIcon\n );\n\n const paddingLeft =\n sizing.chipPaddingLeft +\n (showLeftExtraPadding ? getExtraLeftPadding(sizing) : 0);\n\n const textStyle = {\n color: palette.text,\n fontSize: sizing.labelFontSize,\n lineHeight: sizing.labelLineHeight,\n fontWeight: \"500\" as const,\n };\n\n return (\n <Box\n as={isInteractive ? \"button\" : undefined}\n onPress={isInteractive ? handlePress : undefined}\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"center\"\n backgroundColor={palette.background}\n borderColor={palette.border}\n borderWidth={sizing.chipBorderWidth}\n borderRadius={sizing.chipRadius}\n data-testid=\"chip-step\"\n data-step-status={status}\n aria-current={isActive ? \"step\" : undefined}\n aria-disabled={isDisabled ? true : undefined}\n style={{\n gap: sizing.itemGap,\n paddingTop: sizing.chipPaddingTop,\n paddingBottom: sizing.chipPaddingBottom,\n paddingLeft,\n paddingRight: sizing.chipPaddingRight,\n flexShrink: 0,\n cursor: isInteractive ? \"pointer\" : \"default\",\n }}\n >\n {icon}\n {/* Figma keeps the ordinal and the label as two separate TEXT nodes\n separated by the 4px auto-layout gap, not one concatenated string. */}\n {showStepNumber && <Text {...textStyle}>{`${stepNumber}.`}</Text>}\n {typeof label === \"string\" || typeof label === \"number\" ? (\n <Text {...textStyle}>{label}</Text>\n ) : (\n label\n )}\n </Box>\n );\n};\n\nChipStep.displayName = \"ChipStep\";\n","import type { ChipStepSize } from \"./types\";\n\n/**\n * Chip-stepper metrics, measured from the Figma `.Step-item` component set\n * (file `fGm4yji206wAW2ZU7hhRRV`, node `15643:9363`) rather than derived from\n * prose. Read via the Figma API on 2026-07-30.\n *\n * Kept local to the package rather than added to `theme.sizing` (where the\n * circle-based `stepperB2b()` lives) because these values are specific to the\n * pill layout and are not shared with any other component. If a second\n * consumer appears, promote this into `theme.sizing.chipStepperB2b()`.\n *\n * Colours are NOT defined here — every colour is read from the active theme so\n * the component follows all theme modes.\n */\nexport type ChipStepperSizing = {\n /** Auto-layout gap between chip children, and between chip and separator. */\n itemGap: number;\n chipPaddingTop: number;\n chipPaddingBottom: number;\n /** Leading inset. Measured smaller than the trailing inset in both sizes. */\n chipPaddingLeft: number;\n chipPaddingRight: number;\n chipRadius: number;\n chipBorderWidth: number;\n chipIconSize: number;\n separatorIconSize: number;\n labelFontSize: number;\n labelLineHeight: number;\n};\n\n/**\n * Figma Size=S — 22px tall chip. The design's default variant.\n */\nconst SMALL: ChipStepperSizing = {\n itemGap: 4,\n chipPaddingTop: 4,\n chipPaddingBottom: 4,\n chipPaddingLeft: 4,\n chipPaddingRight: 6,\n chipRadius: 4,\n chipBorderWidth: 1,\n chipIconSize: 12,\n separatorIconSize: 12,\n labelFontSize: 10,\n labelLineHeight: 14,\n};\n\n/**\n * Figma Size=M — 28px tall chip.\n */\nconst MEDIUM: ChipStepperSizing = {\n itemGap: 4,\n chipPaddingTop: 6,\n chipPaddingBottom: 6,\n chipPaddingLeft: 6,\n chipPaddingRight: 8,\n chipRadius: 4,\n chipBorderWidth: 1,\n chipIconSize: 16,\n separatorIconSize: 16,\n labelFontSize: 12,\n labelLineHeight: 16,\n};\n\nexport const chipStepperSizing: Record<ChipStepSize, ChipStepperSizing> = {\n sm: SMALL,\n md: MEDIUM,\n};\n\n/**\n * `showLeftExtraPadding` in Figma is a zero-width spacer frame toggled by a\n * boolean, so enabling it adds exactly one auto-layout gap (not a bespoke\n * padding value).\n */\nexport const getExtraLeftPadding = (sizing: ChipStepperSizing): number =>\n sizing.itemGap;\n"],"mappings":"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","names":["import_react","import_react","React","styled","React","import_styled_components","import_jsx_runtime","styled","import_xui_icons_base","import_react","import_jsx_runtime","import_jsx_runtime"]}
|