@xsolla/xui-button 0.133.0-pr226.1776244133 → 0.134.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 +4 -4
- package/web/index.js +28 -141
- package/web/index.js.map +1 -1
- package/web/index.mjs +21 -134
- package/web/index.mjs.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xsolla/xui-button",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.134.0",
|
|
4
4
|
"main": "./web/index.js",
|
|
5
5
|
"module": "./web/index.mjs",
|
|
6
6
|
"types": "./web/index.d.ts",
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"test:coverage": "vitest run --coverage"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@xsolla/xui-core": "0.
|
|
17
|
-
"@xsolla/xui-icons": "0.
|
|
18
|
-
"@xsolla/xui-primitives-core": "0.
|
|
16
|
+
"@xsolla/xui-core": "0.134.0",
|
|
17
|
+
"@xsolla/xui-icons": "0.134.0",
|
|
18
|
+
"@xsolla/xui-primitives-core": "0.134.0"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
21
|
"react": ">=16.8.0",
|
package/web/index.js
CHANGED
|
@@ -39,120 +39,13 @@ __export(index_exports, {
|
|
|
39
39
|
module.exports = __toCommonJS(index_exports);
|
|
40
40
|
|
|
41
41
|
// src/Button.tsx
|
|
42
|
-
var import_react3 = __toESM(require("react"));
|
|
43
|
-
|
|
44
|
-
// ../primitives-web/src/Box.tsx
|
|
45
42
|
var import_react2 = __toESM(require("react"));
|
|
46
|
-
var import_styled_components = __toESM(require("styled-components"));
|
|
47
|
-
|
|
48
|
-
// ../primitives-web/src/filterDOMProps.ts
|
|
49
|
-
var import_react = __toESM(require("react"));
|
|
50
|
-
var NON_HTML_PROPS = /* @__PURE__ */ new Set([
|
|
51
|
-
// BoxProps — layout & styling
|
|
52
|
-
"backgroundColor",
|
|
53
|
-
"borderColor",
|
|
54
|
-
"borderWidth",
|
|
55
|
-
"borderBottomWidth",
|
|
56
|
-
"borderBottomColor",
|
|
57
|
-
"borderTopWidth",
|
|
58
|
-
"borderTopColor",
|
|
59
|
-
"borderLeftWidth",
|
|
60
|
-
"borderLeftColor",
|
|
61
|
-
"borderRightWidth",
|
|
62
|
-
"borderRightColor",
|
|
63
|
-
"borderRadius",
|
|
64
|
-
"borderStyle",
|
|
65
|
-
"flexDirection",
|
|
66
|
-
"flexWrap",
|
|
67
|
-
"alignItems",
|
|
68
|
-
"justifyContent",
|
|
69
|
-
"alignSelf",
|
|
70
|
-
"flex",
|
|
71
|
-
"flexShrink",
|
|
72
|
-
"gap",
|
|
73
|
-
"position",
|
|
74
|
-
"top",
|
|
75
|
-
"bottom",
|
|
76
|
-
"left",
|
|
77
|
-
"right",
|
|
78
|
-
"outline",
|
|
79
|
-
"overflow",
|
|
80
|
-
"overflowX",
|
|
81
|
-
"overflowY",
|
|
82
|
-
"zIndex",
|
|
83
|
-
"cursor",
|
|
84
|
-
"padding",
|
|
85
|
-
"paddingHorizontal",
|
|
86
|
-
"paddingVertical",
|
|
87
|
-
"paddingTop",
|
|
88
|
-
"paddingBottom",
|
|
89
|
-
"paddingLeft",
|
|
90
|
-
"paddingRight",
|
|
91
|
-
"margin",
|
|
92
|
-
"marginTop",
|
|
93
|
-
"marginBottom",
|
|
94
|
-
"marginLeft",
|
|
95
|
-
"marginRight",
|
|
96
|
-
"minWidth",
|
|
97
|
-
"minHeight",
|
|
98
|
-
"maxWidth",
|
|
99
|
-
"maxHeight",
|
|
100
|
-
"hoverStyle",
|
|
101
|
-
"pressStyle",
|
|
102
|
-
"focusStyle",
|
|
103
|
-
"outlineColor",
|
|
104
|
-
"outlineWidth",
|
|
105
|
-
"outlineOffset",
|
|
106
|
-
"outlineStyle",
|
|
107
|
-
// BoxProps — RN-only
|
|
108
|
-
"onPress",
|
|
109
|
-
"onLayout",
|
|
110
|
-
"onMoveShouldSetResponder",
|
|
111
|
-
"onResponderGrant",
|
|
112
|
-
"onResponderMove",
|
|
113
|
-
"onResponderRelease",
|
|
114
|
-
"onResponderTerminate",
|
|
115
|
-
"testID",
|
|
116
|
-
// Box — custom element type
|
|
117
|
-
"elementType",
|
|
118
|
-
// TextProps
|
|
119
|
-
"fontSize",
|
|
120
|
-
"fontWeight",
|
|
121
|
-
"fontFamily",
|
|
122
|
-
"lineHeight",
|
|
123
|
-
"whiteSpace",
|
|
124
|
-
"textAlign",
|
|
125
|
-
"textDecoration",
|
|
126
|
-
"numberOfLines",
|
|
127
|
-
"letterSpacing",
|
|
128
|
-
"textTransform",
|
|
129
|
-
// SpinnerProps
|
|
130
|
-
"strokeWidth",
|
|
131
|
-
// DividerProps
|
|
132
|
-
"vertical",
|
|
133
|
-
"dashStroke"
|
|
134
|
-
]);
|
|
135
|
-
function createFilteredElement(defaultTag) {
|
|
136
|
-
const Component = import_react.default.forwardRef(
|
|
137
|
-
({ children, elementType, ...props }, ref) => {
|
|
138
|
-
const Tag = elementType || defaultTag;
|
|
139
|
-
const htmlProps = {};
|
|
140
|
-
for (const key of Object.keys(props)) {
|
|
141
|
-
if (!NON_HTML_PROPS.has(key)) {
|
|
142
|
-
htmlProps[key] = props[key];
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return import_react.default.createElement(Tag, { ref, ...htmlProps }, children);
|
|
146
|
-
}
|
|
147
|
-
);
|
|
148
|
-
Component.displayName = `Filtered(${defaultTag})`;
|
|
149
|
-
return Component;
|
|
150
|
-
}
|
|
151
43
|
|
|
152
44
|
// ../primitives-web/src/Box.tsx
|
|
45
|
+
var import_react = __toESM(require("react"));
|
|
46
|
+
var import_styled_components = __toESM(require("styled-components"));
|
|
153
47
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
154
|
-
var
|
|
155
|
-
var StyledBox = (0, import_styled_components.default)(FilteredDiv)`
|
|
48
|
+
var StyledBox = import_styled_components.default.div`
|
|
156
49
|
display: flex;
|
|
157
50
|
box-sizing: border-box;
|
|
158
51
|
background-color: ${(props) => props.backgroundColor || "transparent"};
|
|
@@ -239,7 +132,7 @@ var StyledBox = (0, import_styled_components.default)(FilteredDiv)`
|
|
|
239
132
|
${(props) => props.pressStyle?.backgroundColor && `background-color: ${props.pressStyle.backgroundColor};`}
|
|
240
133
|
}
|
|
241
134
|
`;
|
|
242
|
-
var Box =
|
|
135
|
+
var Box = import_react.default.forwardRef(
|
|
243
136
|
({
|
|
244
137
|
children,
|
|
245
138
|
onPress,
|
|
@@ -264,8 +157,6 @@ var Box = import_react2.default.forwardRef(
|
|
|
264
157
|
type,
|
|
265
158
|
disabled,
|
|
266
159
|
id,
|
|
267
|
-
testID,
|
|
268
|
-
"data-testid": dataTestId,
|
|
269
160
|
...props
|
|
270
161
|
}, ref) => {
|
|
271
162
|
if (as === "img" && src) {
|
|
@@ -293,7 +184,7 @@ var Box = import_react2.default.forwardRef(
|
|
|
293
184
|
StyledBox,
|
|
294
185
|
{
|
|
295
186
|
ref,
|
|
296
|
-
|
|
187
|
+
as,
|
|
297
188
|
id,
|
|
298
189
|
type: as === "button" ? type || "button" : void 0,
|
|
299
190
|
disabled: as === "button" ? disabled : void 0,
|
|
@@ -313,7 +204,6 @@ var Box = import_react2.default.forwardRef(
|
|
|
313
204
|
"aria-controls": ariaControls,
|
|
314
205
|
"aria-live": ariaLive,
|
|
315
206
|
tabIndex: tabIndex !== void 0 ? tabIndex : void 0,
|
|
316
|
-
"data-testid": dataTestId || testID,
|
|
317
207
|
...props,
|
|
318
208
|
children
|
|
319
209
|
}
|
|
@@ -325,8 +215,7 @@ Box.displayName = "Box";
|
|
|
325
215
|
// ../primitives-web/src/Text.tsx
|
|
326
216
|
var import_styled_components2 = __toESM(require("styled-components"));
|
|
327
217
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
328
|
-
var
|
|
329
|
-
var StyledText = (0, import_styled_components2.default)(FilteredSpan)`
|
|
218
|
+
var StyledText = import_styled_components2.default.span`
|
|
330
219
|
color: ${(props) => props.color || "inherit"};
|
|
331
220
|
font-size: ${(props) => typeof props.fontSize === "number" ? `${props.fontSize}px` : props.fontSize || "inherit"};
|
|
332
221
|
font-weight: ${(props) => props.fontWeight || "normal"};
|
|
@@ -367,8 +256,7 @@ var rotate = import_styled_components3.keyframes`
|
|
|
367
256
|
transform: rotate(360deg);
|
|
368
257
|
}
|
|
369
258
|
`;
|
|
370
|
-
var
|
|
371
|
-
var StyledSpinner = (0, import_styled_components3.default)(FilteredDiv2)`
|
|
259
|
+
var StyledSpinner = import_styled_components3.default.div`
|
|
372
260
|
width: ${(props) => typeof props.size === "number" ? `${props.size}px` : props.size || "24px"};
|
|
373
261
|
height: ${(props) => typeof props.size === "number" ? `${props.size}px` : props.size || "24px"};
|
|
374
262
|
border: ${(props) => props.strokeWidth || 2}px solid
|
|
@@ -404,8 +292,7 @@ Spinner.displayName = "Spinner";
|
|
|
404
292
|
// ../primitives-web/src/Icon.tsx
|
|
405
293
|
var import_styled_components4 = __toESM(require("styled-components"));
|
|
406
294
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
407
|
-
var
|
|
408
|
-
var StyledIcon = (0, import_styled_components4.default)(FilteredDiv3)`
|
|
295
|
+
var StyledIcon = import_styled_components4.default.div`
|
|
409
296
|
display: flex;
|
|
410
297
|
align-items: center;
|
|
411
298
|
justify-content: center;
|
|
@@ -428,10 +315,10 @@ var Icon = ({ children, ...props }) => {
|
|
|
428
315
|
var import_xui_core = require("@xsolla/xui-core");
|
|
429
316
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
430
317
|
var cloneIconWithDefaults = (icon, defaultSize, defaultColor) => {
|
|
431
|
-
if (!
|
|
318
|
+
if (!import_react2.default.isValidElement(icon)) return icon;
|
|
432
319
|
const iconElement = icon;
|
|
433
320
|
const existingProps = iconElement.props || {};
|
|
434
|
-
return
|
|
321
|
+
return import_react2.default.cloneElement(iconElement, {
|
|
435
322
|
...existingProps,
|
|
436
323
|
// Preserve existing props (including accessibility attributes)
|
|
437
324
|
size: existingProps.size ?? defaultSize,
|
|
@@ -466,7 +353,7 @@ var Button = ({
|
|
|
466
353
|
themeProductContext
|
|
467
354
|
}) => {
|
|
468
355
|
const { theme } = (0, import_xui_core.useResolvedTheme)({ themeMode, themeProductContext });
|
|
469
|
-
const [isKeyboardPressed, setIsKeyboardPressed] = (0,
|
|
356
|
+
const [isKeyboardPressed, setIsKeyboardPressed] = (0, import_react2.useState)(false);
|
|
470
357
|
const isDisabled = disabled || loading;
|
|
471
358
|
const sizeStyles = theme.sizing.button(size);
|
|
472
359
|
const controlTone = theme?.colors?.control?.[tone];
|
|
@@ -658,14 +545,14 @@ var Button = ({
|
|
|
658
545
|
Button.displayName = "Button";
|
|
659
546
|
|
|
660
547
|
// src/IconButton.tsx
|
|
661
|
-
var
|
|
548
|
+
var import_react3 = __toESM(require("react"));
|
|
662
549
|
var import_xui_core2 = require("@xsolla/xui-core");
|
|
663
550
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
664
551
|
var cloneIconWithDefaults2 = (icon, defaultSize, defaultColor) => {
|
|
665
|
-
if (!
|
|
552
|
+
if (!import_react3.default.isValidElement(icon)) return icon;
|
|
666
553
|
const iconElement = icon;
|
|
667
554
|
const existingProps = iconElement.props || {};
|
|
668
|
-
return
|
|
555
|
+
return import_react3.default.cloneElement(iconElement, {
|
|
669
556
|
...existingProps,
|
|
670
557
|
// Preserve existing props (including accessibility attributes)
|
|
671
558
|
size: existingProps.size ?? defaultSize,
|
|
@@ -694,7 +581,7 @@ var IconButton = ({
|
|
|
694
581
|
hoverBackground
|
|
695
582
|
}) => {
|
|
696
583
|
const { theme } = (0, import_xui_core2.useResolvedTheme)({ themeMode, themeProductContext });
|
|
697
|
-
const [isKeyboardPressed, setIsKeyboardPressed] = (0,
|
|
584
|
+
const [isKeyboardPressed, setIsKeyboardPressed] = (0, import_react3.useState)(false);
|
|
698
585
|
const isDisabled = disabled || loading;
|
|
699
586
|
const sizeStyles = theme.sizing.button(size);
|
|
700
587
|
const controlTone = theme?.colors?.control?.[tone];
|
|
@@ -829,7 +716,7 @@ var IconButton = ({
|
|
|
829
716
|
IconButton.displayName = "IconButton";
|
|
830
717
|
|
|
831
718
|
// src/FlexButton.tsx
|
|
832
|
-
var
|
|
719
|
+
var import_react4 = require("react");
|
|
833
720
|
var import_xui_core3 = require("@xsolla/xui-core");
|
|
834
721
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
835
722
|
var ICON_SIZES = {
|
|
@@ -893,9 +780,9 @@ var FlexButton = ({
|
|
|
893
780
|
...buttonProps
|
|
894
781
|
}) => {
|
|
895
782
|
const { theme } = (0, import_xui_core3.useResolvedTheme)({ themeMode, themeProductContext });
|
|
896
|
-
const [state, setState] = (0,
|
|
897
|
-
const [isFocused, setIsFocused] = (0,
|
|
898
|
-
const isMouseOverRef = (0,
|
|
783
|
+
const [state, setState] = (0, import_react4.useState)("default");
|
|
784
|
+
const [isFocused, setIsFocused] = (0, import_react4.useState)(false);
|
|
785
|
+
const isMouseOverRef = (0, import_react4.useRef)(false);
|
|
899
786
|
const isDisabled = disabled || loading;
|
|
900
787
|
const getVariantColors = (currentState) => {
|
|
901
788
|
if (isDisabled) {
|
|
@@ -1166,14 +1053,14 @@ var FlexButton = ({
|
|
|
1166
1053
|
FlexButton.displayName = "FlexButton";
|
|
1167
1054
|
|
|
1168
1055
|
// src/AppButton.tsx
|
|
1169
|
-
var
|
|
1056
|
+
var import_react5 = __toESM(require("react"));
|
|
1170
1057
|
var import_xui_core4 = require("@xsolla/xui-core");
|
|
1171
1058
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1172
1059
|
var cloneIconWithDefaults3 = (icon, defaultSize, defaultColor) => {
|
|
1173
|
-
if (!
|
|
1060
|
+
if (!import_react5.default.isValidElement(icon)) return icon;
|
|
1174
1061
|
const iconElement = icon;
|
|
1175
1062
|
const existingProps = iconElement.props || {};
|
|
1176
|
-
return
|
|
1063
|
+
return import_react5.default.cloneElement(iconElement, {
|
|
1177
1064
|
...existingProps,
|
|
1178
1065
|
size: existingProps.size ?? defaultSize,
|
|
1179
1066
|
color: existingProps.color ?? defaultColor
|
|
@@ -1205,7 +1092,7 @@ var AppButton = ({
|
|
|
1205
1092
|
themeProductContext
|
|
1206
1093
|
}) => {
|
|
1207
1094
|
const { theme } = (0, import_xui_core4.useResolvedTheme)({ themeMode, themeProductContext });
|
|
1208
|
-
const [isKeyboardPressed, setIsKeyboardPressed] = (0,
|
|
1095
|
+
const [isKeyboardPressed, setIsKeyboardPressed] = (0, import_react5.useState)(false);
|
|
1209
1096
|
const isDisabled = disabled || loading;
|
|
1210
1097
|
const sizeStyles = theme.sizing.button(size);
|
|
1211
1098
|
const tokens = theme?.colors?.control?.appButton || {
|
|
@@ -1389,7 +1276,7 @@ var AppButton = ({
|
|
|
1389
1276
|
AppButton.displayName = "AppButton";
|
|
1390
1277
|
|
|
1391
1278
|
// src/ButtonGroup.tsx
|
|
1392
|
-
var
|
|
1279
|
+
var import_react6 = __toESM(require("react"));
|
|
1393
1280
|
var import_xui_core5 = require("@xsolla/xui-core");
|
|
1394
1281
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1395
1282
|
var ButtonGroup = ({
|
|
@@ -1410,8 +1297,8 @@ var ButtonGroup = ({
|
|
|
1410
1297
|
const { theme } = (0, import_xui_core5.useResolvedTheme)({ themeMode, themeProductContext });
|
|
1411
1298
|
const flattenChildren = (children2) => {
|
|
1412
1299
|
const result = [];
|
|
1413
|
-
|
|
1414
|
-
if (
|
|
1300
|
+
import_react6.default.Children.forEach(children2, (child) => {
|
|
1301
|
+
if (import_react6.default.isValidElement(child) && child.type === import_react6.default.Fragment) {
|
|
1415
1302
|
result.push(...flattenChildren(child.props.children));
|
|
1416
1303
|
} else if (child !== null && child !== void 0) {
|
|
1417
1304
|
result.push(child);
|
|
@@ -1447,8 +1334,8 @@ var ButtonGroup = ({
|
|
|
1447
1334
|
const processChildren = (childrenToProcess) => {
|
|
1448
1335
|
if (orientation === "vertical") {
|
|
1449
1336
|
return childrenToProcess.map((child, index) => {
|
|
1450
|
-
if (
|
|
1451
|
-
return
|
|
1337
|
+
if (import_react6.default.isValidElement(child)) {
|
|
1338
|
+
return import_react6.default.cloneElement(child, {
|
|
1452
1339
|
...child.props,
|
|
1453
1340
|
fullWidth: true,
|
|
1454
1341
|
key: child.key ?? index
|