elseware-ui 2.40.3 → 3.0.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/LICENSE +20 -20
- package/dist/index.css +124 -24
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +82 -251
- package/dist/index.d.ts +82 -251
- package/dist/index.js +630 -430
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +320 -123
- package/dist/index.mjs.map +1 -1
- package/dist/index.native.d.mts +7 -0
- package/dist/index.native.d.ts +7 -0
- package/dist/index.native.js +351 -0
- package/dist/index.native.js.map +1 -0
- package/dist/index.native.mjs +346 -0
- package/dist/index.native.mjs.map +1 -0
- package/dist/resolveGlobalConfigs-CcaOIQCE.d.mts +228 -0
- package/dist/resolveGlobalConfigs-CcaOIQCE.d.ts +228 -0
- package/package.json +32 -4
- package/tailwind.preset.js +116 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { B as ButtonProps } from './resolveGlobalConfigs-CcaOIQCE.mjs';
|
|
3
|
+
export { a as ButtonIcon, b as ButtonMode, E as EUIComponentDefaults, c as EUIConfigs, d as EUIProvider, e as EUIRoute, r as resolveWithGlobal, u as useEUIConfig } from './resolveGlobalConfigs-CcaOIQCE.mjs';
|
|
4
|
+
|
|
5
|
+
declare function Button({ icon, text, children, loading, disabled, block, compact, mode, buttonColor, textColor, contentClassName, labelClassName, className, variant, appearance, shape, size, style, contentStyle, labelStyle, accessibilityRole, accessibilityState, type: _type, onClick: _onClick, onMouseMove: _onMouseMove, onPress, ...rest }: ButtonProps): React.JSX.Element;
|
|
6
|
+
|
|
7
|
+
export { Button, ButtonProps };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { B as ButtonProps } from './resolveGlobalConfigs-CcaOIQCE.js';
|
|
3
|
+
export { a as ButtonIcon, b as ButtonMode, E as EUIComponentDefaults, c as EUIConfigs, d as EUIProvider, e as EUIRoute, r as resolveWithGlobal, u as useEUIConfig } from './resolveGlobalConfigs-CcaOIQCE.js';
|
|
4
|
+
|
|
5
|
+
declare function Button({ icon, text, children, loading, disabled, block, compact, mode, buttonColor, textColor, contentClassName, labelClassName, className, variant, appearance, shape, size, style, contentStyle, labelStyle, accessibilityRole, accessibilityState, type: _type, onClick: _onClick, onMouseMove: _onMouseMove, onPress, ...rest }: ButtonProps): React.JSX.Element;
|
|
6
|
+
|
|
7
|
+
export { Button, ButtonProps };
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var reactNative = require('react-native');
|
|
4
|
+
var tailwindMerge = require('tailwind-merge');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var jsxRuntime$1 = require('nativewind/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
// src/components/data-entry/button/native/Button.native.tsx
|
|
10
|
+
|
|
11
|
+
// node_modules/clsx/dist/clsx.mjs
|
|
12
|
+
function r(e) {
|
|
13
|
+
var t, f, n = "";
|
|
14
|
+
if ("string" == typeof e || "number" == typeof e) n += e;
|
|
15
|
+
else if ("object" == typeof e) if (Array.isArray(e)) {
|
|
16
|
+
var o = e.length;
|
|
17
|
+
for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
|
|
18
|
+
} else for (f in e) e[f] && (n && (n += " "), n += f);
|
|
19
|
+
return n;
|
|
20
|
+
}
|
|
21
|
+
function clsx() {
|
|
22
|
+
for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
|
|
23
|
+
return n;
|
|
24
|
+
}
|
|
25
|
+
var clsx_default = clsx;
|
|
26
|
+
function cn(...inputs) {
|
|
27
|
+
return tailwindMerge.twMerge(clsx_default(inputs));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// src/utils/styles.ts
|
|
31
|
+
function resolveAppearanceStyles({
|
|
32
|
+
appearance = "solid",
|
|
33
|
+
variant = "default",
|
|
34
|
+
solid,
|
|
35
|
+
lite,
|
|
36
|
+
ghost
|
|
37
|
+
}) {
|
|
38
|
+
switch (appearance) {
|
|
39
|
+
case "ghost":
|
|
40
|
+
return ghost[variant];
|
|
41
|
+
case "lite":
|
|
42
|
+
return lite[variant];
|
|
43
|
+
default:
|
|
44
|
+
return solid[variant];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
var EUIContext = react.createContext(null);
|
|
48
|
+
var EUIProvider = ({
|
|
49
|
+
config,
|
|
50
|
+
children
|
|
51
|
+
}) => {
|
|
52
|
+
const [state, setState] = react.useState(config);
|
|
53
|
+
return /* @__PURE__ */ jsxRuntime.jsx(EUIContext.Provider, { value: { config: state, setConfig: setState }, children });
|
|
54
|
+
};
|
|
55
|
+
var useEUIConfig = () => {
|
|
56
|
+
const ctx = react.useContext(EUIContext);
|
|
57
|
+
if (!ctx) {
|
|
58
|
+
throw new Error("useEUIConfig must be used inside EUIProvider");
|
|
59
|
+
}
|
|
60
|
+
return ctx;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// src/components/eui/resolveGlobalConfigs.tsx
|
|
64
|
+
function resolveWithGlobal(config, props, defaults) {
|
|
65
|
+
return {
|
|
66
|
+
...defaults,
|
|
67
|
+
...config?.global ?? {},
|
|
68
|
+
...props
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// src/components/data-entry/button/base/Button.config.ts
|
|
73
|
+
var buttonModeAppearance = {
|
|
74
|
+
contained: "solid",
|
|
75
|
+
"contained-tonal": "lite",
|
|
76
|
+
outlined: "ghost",
|
|
77
|
+
text: "ghost"
|
|
78
|
+
};
|
|
79
|
+
function useResolvedButtonConfig({
|
|
80
|
+
compact = false,
|
|
81
|
+
mode,
|
|
82
|
+
variant,
|
|
83
|
+
appearance,
|
|
84
|
+
shape,
|
|
85
|
+
size
|
|
86
|
+
}) {
|
|
87
|
+
const eui = useEUIConfig();
|
|
88
|
+
const configuredSize = size ?? eui?.config?.global?.size ?? "md";
|
|
89
|
+
return {
|
|
90
|
+
shape: shape ?? eui?.config?.global?.shape ?? "square",
|
|
91
|
+
size: compact && configuredSize === "md" ? "sm" : configuredSize,
|
|
92
|
+
variant: variant ?? eui?.config?.global?.variant ?? "success",
|
|
93
|
+
appearance: appearance ?? (mode ? buttonModeAppearance[mode] : "solid")
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// src/data/styles.tsx
|
|
98
|
+
var variantsSolid = {
|
|
99
|
+
["default" /* default */]: "bg-gray-300 text-gray-900 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-100 dark:hover:bg-gray-600",
|
|
100
|
+
["primary" /* primary */]: "bg-gradient-to-r from-eui-primary-500 to-eui-primary-600 text-white hover:brightness-110",
|
|
101
|
+
["secondary" /* secondary */]: "bg-gradient-to-r from-eui-secondary-600 to-eui-secondary-500 text-white hover:brightness-110",
|
|
102
|
+
["success" /* success */]: "bg-gradient-to-r from-eui-success-600 to-eui-success-500 text-white hover:brightness-110",
|
|
103
|
+
["danger" /* danger */]: "bg-gradient-to-r from-eui-danger-600 to-eui-danger-500 text-white hover:brightness-110",
|
|
104
|
+
["warning" /* warning */]: "bg-gradient-to-r from-eui-warning-500 to-eui-warning-400 text-black hover:brightness-105",
|
|
105
|
+
["info" /* info */]: "bg-gradient-to-r from-eui-info-600 to-eui-info-500 text-white hover:brightness-110",
|
|
106
|
+
["light" /* light */]: "bg-gradient-to-r from-eui-light-400 to-eui-light-300 text-gray-900 hover:brightness-105 dark:from-gray-200 dark:to-gray-100 dark:text-gray-900",
|
|
107
|
+
["dark" /* dark */]: "bg-gradient-to-r from-eui-dark-400 to-eui-dark-500 text-white hover:brightness-110 dark:from-eui-dark-300 dark:to-eui-dark-400"
|
|
108
|
+
};
|
|
109
|
+
var variantsLite = {
|
|
110
|
+
["default" /* default */]: "bg-gray-500/10 border border-gray-300 text-gray-700 dark:bg-gray-400/10 dark:border-gray-700 dark:text-gray-200",
|
|
111
|
+
["primary" /* primary */]: "bg-eui-primary-500/10 border border-eui-primary-500/30 text-eui-primary-400 dark:text-eui-primary-300",
|
|
112
|
+
["secondary" /* secondary */]: "bg-eui-secondary-500/10 border border-eui-secondary-500/30 text-eui-secondary-500 dark:text-eui-secondary-400",
|
|
113
|
+
["success" /* success */]: "bg-eui-success-500/10 border border-eui-success-500/30 text-eui-success-500 dark:text-eui-success-400",
|
|
114
|
+
["danger" /* danger */]: "bg-eui-danger-500/10 border border-eui-danger-500/30 text-eui-danger-500 dark:text-eui-danger-400",
|
|
115
|
+
["warning" /* warning */]: "bg-eui-warning-500/10 border border-eui-warning-500/30 text-eui-warning-600 dark:text-eui-warning-400",
|
|
116
|
+
["info" /* info */]: "bg-eui-info-500/10 border border-eui-info-500/30 text-eui-info-500 dark:text-eui-info-400",
|
|
117
|
+
["light" /* light */]: "bg-white/40 border border-white/30 text-gray-800 dark:bg-white/10 dark:border-white/10 dark:text-gray-100",
|
|
118
|
+
["dark" /* dark */]: "bg-eui-dark-500/10 border border-eui-dark-500/30 text-eui-dark-500 dark:text-eui-dark-300"
|
|
119
|
+
};
|
|
120
|
+
var variantsGhost = {
|
|
121
|
+
["default" /* default */]: "bg-transparent border border-gray-300 text-gray-700 hover:bg-gray-100 dark:border-gray-700 dark:text-gray-200 dark:hover:bg-gray-800",
|
|
122
|
+
["primary" /* primary */]: "bg-transparent border border-eui-primary-500 text-eui-primary-500 hover:bg-eui-primary-500/10 dark:text-eui-primary-300 dark:border-eui-primary-400",
|
|
123
|
+
["secondary" /* secondary */]: "bg-transparent border border-eui-secondary-500 text-eui-secondary-500 hover:bg-eui-secondary-500/10 dark:text-eui-secondary-400 dark:border-eui-secondary-400",
|
|
124
|
+
["success" /* success */]: "bg-transparent border border-eui-success-500 text-eui-success-500 hover:bg-eui-success-500/10 dark:text-eui-success-400 dark:border-eui-success-400",
|
|
125
|
+
["danger" /* danger */]: "bg-transparent border border-eui-danger-500 text-eui-danger-500 hover:bg-eui-danger-500/10 dark:text-eui-danger-400 dark:border-eui-danger-400",
|
|
126
|
+
["warning" /* warning */]: "bg-transparent border border-eui-warning-500 text-eui-warning-600 hover:bg-eui-warning-500/10 dark:text-eui-warning-400 dark:border-eui-warning-400",
|
|
127
|
+
["info" /* info */]: "bg-transparent border border-eui-info-500 text-eui-info-500 hover:bg-eui-info-500/10 dark:text-eui-info-400 dark:border-eui-info-400",
|
|
128
|
+
["light" /* light */]: "bg-transparent border border-gray-300 text-gray-700 hover:bg-white/10 dark:border-gray-500 dark:text-gray-100 dark:hover:bg-white/5",
|
|
129
|
+
["dark" /* dark */]: "bg-transparent border border-eui-dark-500 text-eui-dark-500 hover:bg-eui-dark-500/10 dark:text-eui-dark-300 dark:border-eui-dark-300"
|
|
130
|
+
};
|
|
131
|
+
var shapes = {
|
|
132
|
+
["square" /* square */]: "rounded-none",
|
|
133
|
+
["roundedSquare" /* roundedSquare */]: "rounded-md",
|
|
134
|
+
["softRoundedSquare" /* softRoundedSquare */]: "rounded-lg",
|
|
135
|
+
["circle" /* circle */]: "rounded-full"
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
// src/components/data-entry/button/base/Button.styles.ts
|
|
139
|
+
var buttonShapes = shapes;
|
|
140
|
+
var buttonIconSizes = {
|
|
141
|
+
xs: 14,
|
|
142
|
+
sm: 16,
|
|
143
|
+
md: 18,
|
|
144
|
+
lg: 20,
|
|
145
|
+
xl: 22
|
|
146
|
+
};
|
|
147
|
+
function resolveButtonVariantStyles({
|
|
148
|
+
appearance,
|
|
149
|
+
variant
|
|
150
|
+
}) {
|
|
151
|
+
return resolveAppearanceStyles({
|
|
152
|
+
appearance,
|
|
153
|
+
variant,
|
|
154
|
+
solid: variantsSolid,
|
|
155
|
+
lite: variantsLite,
|
|
156
|
+
ghost: variantsGhost
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function getButtonTextColorClassName(className) {
|
|
160
|
+
return className.split(/\s+/).filter(
|
|
161
|
+
(token) => token.startsWith("text-") || token.startsWith("dark:text-") || token.startsWith("disabled:text-")
|
|
162
|
+
).join(" ");
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// src/components/data-entry/button/native/Button.native.styles.ts
|
|
166
|
+
var nativeButtonSizes = {
|
|
167
|
+
xs: {
|
|
168
|
+
rootClassName: "min-h-[30px] px-2.5 py-1",
|
|
169
|
+
labelClassName: "text-xs leading-[14px]",
|
|
170
|
+
slotClassName: "h-[14px] w-[14px]"
|
|
171
|
+
},
|
|
172
|
+
sm: {
|
|
173
|
+
rootClassName: "min-h-9 px-3 py-1.5",
|
|
174
|
+
labelClassName: "text-sm leading-4",
|
|
175
|
+
slotClassName: "h-4 w-4"
|
|
176
|
+
},
|
|
177
|
+
md: {
|
|
178
|
+
rootClassName: "min-h-11 px-4 py-2",
|
|
179
|
+
labelClassName: "text-[15px] leading-[18px]",
|
|
180
|
+
slotClassName: "h-[18px] w-[18px]"
|
|
181
|
+
},
|
|
182
|
+
lg: {
|
|
183
|
+
rootClassName: "min-h-[50px] px-[18px] py-3",
|
|
184
|
+
labelClassName: "text-[17px] leading-5",
|
|
185
|
+
slotClassName: "h-5 w-5"
|
|
186
|
+
},
|
|
187
|
+
xl: {
|
|
188
|
+
rootClassName: "min-h-14 px-[22px] py-4",
|
|
189
|
+
labelClassName: "text-[19px] leading-[22px]",
|
|
190
|
+
slotClassName: "h-[22px] w-[22px]"
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
var nativeLabelBaseStyle = {
|
|
194
|
+
includeFontPadding: false,
|
|
195
|
+
textAlignVertical: "center"
|
|
196
|
+
};
|
|
197
|
+
function Button({
|
|
198
|
+
icon,
|
|
199
|
+
text,
|
|
200
|
+
children,
|
|
201
|
+
loading = false,
|
|
202
|
+
disabled = false,
|
|
203
|
+
block = false,
|
|
204
|
+
compact = false,
|
|
205
|
+
mode,
|
|
206
|
+
buttonColor,
|
|
207
|
+
textColor,
|
|
208
|
+
contentClassName,
|
|
209
|
+
labelClassName,
|
|
210
|
+
className,
|
|
211
|
+
variant,
|
|
212
|
+
appearance,
|
|
213
|
+
shape,
|
|
214
|
+
size,
|
|
215
|
+
style,
|
|
216
|
+
contentStyle,
|
|
217
|
+
labelStyle,
|
|
218
|
+
accessibilityRole = "button",
|
|
219
|
+
accessibilityState,
|
|
220
|
+
type: _type,
|
|
221
|
+
onClick: _onClick,
|
|
222
|
+
onMouseMove: _onMouseMove,
|
|
223
|
+
onPress,
|
|
224
|
+
...rest
|
|
225
|
+
}) {
|
|
226
|
+
const {
|
|
227
|
+
shape: resolvedShape,
|
|
228
|
+
size: resolvedSize,
|
|
229
|
+
variant: resolvedVariant,
|
|
230
|
+
appearance: resolvedAppearance
|
|
231
|
+
} = useResolvedButtonConfig({
|
|
232
|
+
compact,
|
|
233
|
+
mode,
|
|
234
|
+
variant,
|
|
235
|
+
appearance,
|
|
236
|
+
shape,
|
|
237
|
+
size
|
|
238
|
+
});
|
|
239
|
+
const metrics = nativeButtonSizes[resolvedSize];
|
|
240
|
+
const iconSize = buttonIconSizes[resolvedSize];
|
|
241
|
+
const variantStyles = resolveButtonVariantStyles({
|
|
242
|
+
appearance: resolvedAppearance,
|
|
243
|
+
variant: resolvedVariant
|
|
244
|
+
});
|
|
245
|
+
const textColorClassName = getButtonTextColorClassName(variantStyles);
|
|
246
|
+
const rootStyle = {
|
|
247
|
+
...mode === "text" ? {
|
|
248
|
+
backgroundColor: "transparent",
|
|
249
|
+
borderColor: "transparent"
|
|
250
|
+
} : null,
|
|
251
|
+
...buttonColor && mode !== "text" ? {
|
|
252
|
+
backgroundColor: buttonColor,
|
|
253
|
+
borderColor: buttonColor
|
|
254
|
+
} : null,
|
|
255
|
+
...!buttonColor && textColor && resolvedAppearance !== "solid" ? { borderColor: textColor } : null
|
|
256
|
+
};
|
|
257
|
+
const labelTextStyle = textColor ? { color: textColor } : null;
|
|
258
|
+
const content = text ?? children;
|
|
259
|
+
const resolvedIcon = typeof icon === "function" ? icon({ color: textColor ?? "currentColor", size: iconSize }) : icon;
|
|
260
|
+
return /* @__PURE__ */ jsxRuntime$1.jsx(
|
|
261
|
+
reactNative.Pressable,
|
|
262
|
+
{
|
|
263
|
+
...rest,
|
|
264
|
+
accessibilityRole,
|
|
265
|
+
accessibilityState: {
|
|
266
|
+
disabled: disabled || loading,
|
|
267
|
+
...accessibilityState
|
|
268
|
+
},
|
|
269
|
+
className: cn(
|
|
270
|
+
"relative items-center justify-center overflow-hidden",
|
|
271
|
+
variantStyles,
|
|
272
|
+
buttonShapes[resolvedShape],
|
|
273
|
+
metrics.rootClassName,
|
|
274
|
+
block && "w-full",
|
|
275
|
+
mode === "text" && "border-transparent bg-transparent",
|
|
276
|
+
(disabled || loading) && "opacity-55",
|
|
277
|
+
!disabled && !loading && "active:opacity-80",
|
|
278
|
+
className
|
|
279
|
+
),
|
|
280
|
+
disabled: disabled || loading,
|
|
281
|
+
onPress,
|
|
282
|
+
style: ({ pressed }) => [
|
|
283
|
+
rootStyle,
|
|
284
|
+
pressed && !disabled && !loading ? { opacity: 0.82 } : null,
|
|
285
|
+
disabled || loading ? { opacity: 0.55 } : null,
|
|
286
|
+
style
|
|
287
|
+
],
|
|
288
|
+
children: /* @__PURE__ */ jsxRuntime$1.jsxs(
|
|
289
|
+
reactNative.View,
|
|
290
|
+
{
|
|
291
|
+
className: cn(
|
|
292
|
+
"z-10 flex-row items-center justify-center gap-2",
|
|
293
|
+
contentClassName
|
|
294
|
+
),
|
|
295
|
+
style: contentStyle,
|
|
296
|
+
children: [
|
|
297
|
+
loading ? /* @__PURE__ */ jsxRuntime$1.jsx(
|
|
298
|
+
reactNative.View,
|
|
299
|
+
{
|
|
300
|
+
className: cn(
|
|
301
|
+
"shrink-0 items-center justify-center",
|
|
302
|
+
metrics.slotClassName
|
|
303
|
+
),
|
|
304
|
+
children: /* @__PURE__ */ jsxRuntime$1.jsx(
|
|
305
|
+
reactNative.ActivityIndicator,
|
|
306
|
+
{
|
|
307
|
+
className: textColorClassName,
|
|
308
|
+
color: textColor,
|
|
309
|
+
size: "small"
|
|
310
|
+
}
|
|
311
|
+
)
|
|
312
|
+
}
|
|
313
|
+
) : null,
|
|
314
|
+
!loading && resolvedIcon ? /* @__PURE__ */ jsxRuntime$1.jsx(
|
|
315
|
+
reactNative.View,
|
|
316
|
+
{
|
|
317
|
+
className: cn(
|
|
318
|
+
"shrink-0 items-center justify-center",
|
|
319
|
+
metrics.slotClassName
|
|
320
|
+
),
|
|
321
|
+
children: resolvedIcon
|
|
322
|
+
}
|
|
323
|
+
) : null,
|
|
324
|
+
typeof content === "string" || typeof content === "number" ? /* @__PURE__ */ jsxRuntime$1.jsx(reactNative.View, { className: "items-center justify-center", children: /* @__PURE__ */ jsxRuntime$1.jsx(
|
|
325
|
+
reactNative.Text,
|
|
326
|
+
{
|
|
327
|
+
className: cn(
|
|
328
|
+
"font-bold",
|
|
329
|
+
metrics.labelClassName,
|
|
330
|
+
textColorClassName,
|
|
331
|
+
labelClassName
|
|
332
|
+
),
|
|
333
|
+
numberOfLines: 1,
|
|
334
|
+
style: [nativeLabelBaseStyle, labelTextStyle, labelStyle],
|
|
335
|
+
children: content
|
|
336
|
+
}
|
|
337
|
+
) }) : content
|
|
338
|
+
]
|
|
339
|
+
}
|
|
340
|
+
)
|
|
341
|
+
}
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
var Button_native_default = Button;
|
|
345
|
+
|
|
346
|
+
exports.Button = Button_native_default;
|
|
347
|
+
exports.EUIProvider = EUIProvider;
|
|
348
|
+
exports.resolveWithGlobal = resolveWithGlobal;
|
|
349
|
+
exports.useEUIConfig = useEUIConfig;
|
|
350
|
+
//# sourceMappingURL=index.native.js.map
|
|
351
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/clsx/dist/clsx.mjs","../src/utils/cn.ts","../src/utils/styles.ts","../src/components/eui/EUIProvider.tsx","../src/components/eui/resolveGlobalConfigs.tsx","../src/components/data-entry/button/base/Button.config.ts","../src/data/styles.tsx","../src/components/data-entry/button/base/Button.styles.ts","../src/components/data-entry/button/native/Button.native.styles.ts","../src/components/data-entry/button/native/Button.native.tsx"],"names":["twMerge","createContext","useState","jsx","useContext","Pressable","jsxs","View","ActivityIndicator","Text"],"mappings":"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","file":"index.native.js","sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { ClassValue } from \"clsx\";\nimport clsx from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { Appearance, Variant } from \"../types\";\n\ninterface ResolveAppearanceStylesProps<T> {\n appearance?: Appearance;\n variant: Variant;\n solid: Record<Variant, T>;\n lite: Record<Variant, T>;\n ghost: Record<Variant, T>;\n}\n\nexport function resolveAppearanceStyles<T = string>({\n appearance = \"solid\",\n variant = \"default\",\n solid,\n lite,\n ghost,\n}: ResolveAppearanceStylesProps<T>): T {\n switch (appearance) {\n case \"ghost\":\n return ghost[variant];\n\n case \"lite\":\n return lite[variant];\n\n default:\n return solid[variant];\n }\n}\n","import React, { createContext, useContext, useState } from \"react\";\nimport { EUIConfigs } from \"./EUITypes\";\n\ninterface EUIContextValue {\n config: EUIConfigs;\n setConfig: React.Dispatch<React.SetStateAction<EUIConfigs>>;\n}\n\nconst EUIContext = createContext<EUIContextValue | null>(null);\n\nexport const EUIProvider = ({\n config,\n children,\n}: {\n config: EUIConfigs;\n children: React.ReactNode;\n}) => {\n const [state, setState] = useState<EUIConfigs>(config);\n\n return (\n <EUIContext.Provider value={{ config: state, setConfig: setState }}>\n {children}\n </EUIContext.Provider>\n );\n};\n\nexport const useEUIConfig = () => {\n const ctx = useContext(EUIContext);\n if (!ctx) {\n throw new Error(\"useEUIConfig must be used inside EUIProvider\");\n }\n return ctx;\n};\n","import { EUIConfigs } from \"./EUITypes\";\n\nexport function resolveWithGlobal<T>(\n config: EUIConfigs | null,\n props: T,\n defaults: Partial<T>,\n): T {\n return {\n ...defaults,\n ...(config?.global ?? {}),\n ...props,\n } as T;\n}\n","import { useEUIConfig } from \"../../../eui\";\n\nimport type { Appearance, Shape, Size, Variant } from \"../../../../types\";\nimport type { ButtonMode, ButtonProps } from \"./Button.types\";\n\nexport const buttonModeAppearance: Record<ButtonMode, Appearance> = {\n contained: \"solid\",\n \"contained-tonal\": \"lite\",\n outlined: \"ghost\",\n text: \"ghost\",\n};\n\nexport interface ResolvedButtonConfig {\n shape: Shape;\n size: Size;\n variant: Variant;\n appearance: Appearance;\n}\n\nexport function useResolvedButtonConfig({\n compact = false,\n mode,\n variant,\n appearance,\n shape,\n size,\n}: Pick<\n ButtonProps,\n \"compact\" | \"mode\" | \"variant\" | \"appearance\" | \"shape\" | \"size\"\n>): ResolvedButtonConfig {\n const eui = useEUIConfig();\n const configuredSize = size ?? eui?.config?.global?.size ?? \"md\";\n\n return {\n shape: shape ?? eui?.config?.global?.shape ?? \"square\",\n size: compact && configuredSize === \"md\" ? \"sm\" : configuredSize,\n variant: variant ?? eui?.config?.global?.variant ?? \"success\",\n appearance: appearance ?? (mode ? buttonModeAppearance[mode] : \"solid\"),\n };\n}\n","import {\n Decoration,\n Shape,\n Target,\n ToastPosition,\n ToastStatus,\n Variant,\n} from \"./enums\";\n\nexport const variantsSolid: Record<Variant, string> = {\n [Variant.default]:\n \"bg-gray-300 text-gray-900 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-100 dark:hover:bg-gray-600\",\n [Variant.primary]:\n \"bg-gradient-to-r from-eui-primary-500 to-eui-primary-600 text-white hover:brightness-110\",\n [Variant.secondary]:\n \"bg-gradient-to-r from-eui-secondary-600 to-eui-secondary-500 text-white hover:brightness-110\",\n [Variant.success]:\n \"bg-gradient-to-r from-eui-success-600 to-eui-success-500 text-white hover:brightness-110\",\n [Variant.danger]:\n \"bg-gradient-to-r from-eui-danger-600 to-eui-danger-500 text-white hover:brightness-110\",\n [Variant.warning]:\n \"bg-gradient-to-r from-eui-warning-500 to-eui-warning-400 text-black hover:brightness-105\",\n [Variant.info]:\n \"bg-gradient-to-r from-eui-info-600 to-eui-info-500 text-white hover:brightness-110\",\n [Variant.light]:\n \"bg-gradient-to-r from-eui-light-400 to-eui-light-300 text-gray-900 hover:brightness-105 dark:from-gray-200 dark:to-gray-100 dark:text-gray-900\",\n [Variant.dark]:\n \"bg-gradient-to-r from-eui-dark-400 to-eui-dark-500 text-white hover:brightness-110 dark:from-eui-dark-300 dark:to-eui-dark-400\",\n};\n\nexport const variantsLite: Record<Variant, string> = {\n [Variant.default]:\n \"bg-gray-500/10 border border-gray-300 text-gray-700 dark:bg-gray-400/10 dark:border-gray-700 dark:text-gray-200\",\n [Variant.primary]:\n \"bg-eui-primary-500/10 border border-eui-primary-500/30 text-eui-primary-400 dark:text-eui-primary-300\",\n [Variant.secondary]:\n \"bg-eui-secondary-500/10 border border-eui-secondary-500/30 text-eui-secondary-500 dark:text-eui-secondary-400\",\n [Variant.success]:\n \"bg-eui-success-500/10 border border-eui-success-500/30 text-eui-success-500 dark:text-eui-success-400\",\n [Variant.danger]:\n \"bg-eui-danger-500/10 border border-eui-danger-500/30 text-eui-danger-500 dark:text-eui-danger-400\",\n [Variant.warning]:\n \"bg-eui-warning-500/10 border border-eui-warning-500/30 text-eui-warning-600 dark:text-eui-warning-400\",\n [Variant.info]:\n \"bg-eui-info-500/10 border border-eui-info-500/30 text-eui-info-500 dark:text-eui-info-400\",\n [Variant.light]:\n \"bg-white/40 border border-white/30 text-gray-800 dark:bg-white/10 dark:border-white/10 dark:text-gray-100\",\n [Variant.dark]:\n \"bg-eui-dark-500/10 border border-eui-dark-500/30 text-eui-dark-500 dark:text-eui-dark-300\",\n};\n\nexport const variantsGhost: Record<Variant, string> = {\n [Variant.default]:\n \"bg-transparent border border-gray-300 text-gray-700 hover:bg-gray-100 dark:border-gray-700 dark:text-gray-200 dark:hover:bg-gray-800\",\n [Variant.primary]:\n \"bg-transparent border border-eui-primary-500 text-eui-primary-500 hover:bg-eui-primary-500/10 dark:text-eui-primary-300 dark:border-eui-primary-400\",\n [Variant.secondary]:\n \"bg-transparent border border-eui-secondary-500 text-eui-secondary-500 hover:bg-eui-secondary-500/10 dark:text-eui-secondary-400 dark:border-eui-secondary-400\",\n [Variant.success]:\n \"bg-transparent border border-eui-success-500 text-eui-success-500 hover:bg-eui-success-500/10 dark:text-eui-success-400 dark:border-eui-success-400\",\n [Variant.danger]:\n \"bg-transparent border border-eui-danger-500 text-eui-danger-500 hover:bg-eui-danger-500/10 dark:text-eui-danger-400 dark:border-eui-danger-400\",\n [Variant.warning]:\n \"bg-transparent border border-eui-warning-500 text-eui-warning-600 hover:bg-eui-warning-500/10 dark:text-eui-warning-400 dark:border-eui-warning-400\",\n [Variant.info]:\n \"bg-transparent border border-eui-info-500 text-eui-info-500 hover:bg-eui-info-500/10 dark:text-eui-info-400 dark:border-eui-info-400\",\n [Variant.light]:\n \"bg-transparent border border-gray-300 text-gray-700 hover:bg-white/10 dark:border-gray-500 dark:text-gray-100 dark:hover:bg-white/5\",\n [Variant.dark]:\n \"bg-transparent border border-eui-dark-500 text-eui-dark-500 hover:bg-eui-dark-500/10 dark:text-eui-dark-300 dark:border-eui-dark-300\",\n};\n\nexport const textVariants: Record<Variant, string> = {\n [Variant.default]: \"eui-text-md\",\n [Variant.primary]: \"text-blue-500\",\n [Variant.secondary]: \"text-gray-500\",\n [Variant.success]: \"text-green-500\",\n [Variant.danger]: \"text-red-500\",\n [Variant.warning]: \"text-yellow-500\",\n [Variant.info]: \"text-blue-400\",\n [Variant.light]: \"text-gray-300\",\n [Variant.dark]: \"text-gray-900\",\n};\n\nexport const borderVariants: Record<Variant, string> = {\n [Variant.default]: \"border-gray-300\",\n [Variant.primary]: \"border-eui-primary-500\",\n [Variant.secondary]: \"border-eui-secondary-500\",\n [Variant.success]: \"border-eui-success-500\",\n [Variant.danger]: \"border-eui-danger-500\",\n [Variant.warning]: \"border-eui-warning-500\",\n [Variant.info]: \"border-eui-info-500\",\n [Variant.light]: \"border-eui-light-500\",\n [Variant.dark]: \"border-eui-dark-500\",\n};\n\nexport const decorations: Record<Decoration, string> = {\n [Decoration.underline]: \"underline\",\n [Decoration.overline]: \"overline\",\n [Decoration.lineThrough]: \"line-through\",\n [Decoration.noUnderline]: \"no-underline\",\n};\n\nexport const targets: Record<Target, string> = {\n [Target.blank]: \"_blank\",\n [Target.self]: \"_self\",\n [Target.parent]: \"_parent\",\n [Target.top]: \"_top\",\n};\n\nexport const shapes: Record<Shape, string> = {\n [Shape.square]: \"rounded-none\",\n [Shape.roundedSquare]: \"rounded-md\",\n [Shape.softRoundedSquare]: \"rounded-lg\",\n [Shape.circle]: \"rounded-full\",\n};\n\nexport const cardBorderVariants: Record<Variant, string> = {\n [Variant.default]: \"border-white/10\",\n [Variant.primary]: \"border-eui-primary-500/30\",\n [Variant.secondary]: \"border-eui-secondary-500/30\",\n [Variant.success]: \"border-eui-success-500/30\",\n [Variant.danger]: \"border-eui-danger-500/30\",\n [Variant.warning]: \"border-eui-warning-500/30\",\n [Variant.info]: \"border-eui-info-500/30\",\n [Variant.light]: \"border-eui-light-500/30\",\n [Variant.dark]: \"border-eui-dark-500/30\",\n};\n\nexport const cardHoverBorderVariants: Record<Variant, string> = {\n [Variant.default]: \"hover:border-white/20\",\n [Variant.primary]: \"hover:border-eui-primary-500\",\n [Variant.secondary]: \"hover:border-eui-secondary-500\",\n [Variant.success]: \"hover:border-eui-success-500\",\n [Variant.danger]: \"hover:border-eui-danger-500\",\n [Variant.warning]: \"hover:border-eui-warning-500\",\n [Variant.info]: \"hover:border-eui-info-500\",\n [Variant.light]: \"hover:border-eui-light-500\",\n [Variant.dark]: \"hover:border-eui-dark-500\",\n};\n\nexport const cardBgVariants: Record<Variant, string> = {\n [Variant.default]: \"bg-white/5\",\n [Variant.primary]: \"bg-eui-primary-500/10\",\n [Variant.secondary]: \"bg-eui-secondary-500/10\",\n [Variant.success]: \"bg-eui-success-500/10\",\n [Variant.danger]: \"bg-eui-danger-500/10\",\n [Variant.warning]: \"bg-eui-warning-500/10\",\n [Variant.info]: \"bg-eui-info-500/10\",\n [Variant.light]: \"bg-eui-light-500/10\",\n [Variant.dark]: \"bg-eui-dark-500/20\",\n};\n\nexport const checkboxVariants: Record<Variant, string> = {\n [Variant.default]:\n \"checked:bg-gray-600 checked:border-gray-600 dark:checked:bg-gray-500 dark:checked:border-gray-500\",\n\n [Variant.primary]:\n \"checked:bg-eui-primary-600 checked:border-eui-primary-600 dark:checked:bg-eui-primary-500 dark:checked:border-eui-primary-500\",\n\n [Variant.secondary]:\n \"checked:bg-eui-secondary-600 checked:border-eui-secondary-600 dark:checked:bg-eui-secondary-500 dark:checked:border-eui-secondary-500\",\n\n [Variant.success]:\n \"checked:bg-eui-success-600 checked:border-eui-success-600 dark:checked:bg-eui-success-500 dark:checked:border-eui-success-500\",\n\n [Variant.danger]:\n \"checked:bg-eui-danger-600 checked:border-eui-danger-600 dark:checked:bg-eui-danger-500 dark:checked:border-eui-danger-500\",\n\n [Variant.warning]:\n \"checked:bg-eui-warning-500 checked:border-eui-warning-500 dark:checked:bg-eui-warning-400 dark:checked:border-eui-warning-400\",\n\n [Variant.info]:\n \"checked:bg-eui-info-600 checked:border-eui-info-600 dark:checked:bg-eui-info-500 dark:checked:border-eui-info-500\",\n\n [Variant.light]:\n \"checked:bg-eui-light-400 checked:border-eui-light-400 dark:checked:bg-gray-200 dark:checked:border-gray-200\",\n\n [Variant.dark]:\n \"checked:bg-eui-dark-500 checked:border-eui-dark-500 dark:checked:bg-eui-dark-300 dark:checked:border-eui-dark-300\",\n};\n\nexport const toastPositionStyles: Record<ToastPosition, string> = {\n [ToastPosition.topLeft]: \"top-4 left-4 items-start\",\n [ToastPosition.topCenter]: \"top-4 left-1/2 -translate-x-1/2 items-center\",\n [ToastPosition.topRight]: \"top-4 right-4 items-end\",\n\n [ToastPosition.bottomLeft]: \"bottom-4 left-4 items-start\",\n [ToastPosition.bottomCenter]:\n \"bottom-4 left-1/2 -translate-x-1/2 items-center\",\n [ToastPosition.bottomRight]: \"bottom-4 right-4 items-end\",\n};\n\nexport type ToastDisplayVariant =\n | Variant.default\n | Variant.success\n | Variant.warning\n | Variant.danger\n | Variant.info;\n\nexport interface ToastVariantStyle {\n root: string;\n icon: string;\n progress: string;\n title: string;\n message: string;\n}\n\nexport const toastStatusVariantMap: Record<ToastStatus, ToastDisplayVariant> = {\n [ToastStatus.default]: Variant.default,\n [ToastStatus.success]: Variant.success,\n [ToastStatus.warning]: Variant.warning,\n [ToastStatus.error]: Variant.danger,\n [ToastStatus.danger]: Variant.danger,\n [ToastStatus.info]: Variant.info,\n};\n\nexport const toastVariantStyles: Record<\n ToastDisplayVariant,\n ToastVariantStyle\n> = {\n [Variant.default]: {\n root: \"border-gray-200 bg-white text-gray-900 shadow-xl dark:border-gray-700 dark:bg-gray-900 dark:text-white\",\n icon: \"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-200\",\n progress: \"bg-gray-500\",\n title: \"text-gray-950 dark:text-white\",\n message: \"text-gray-600 dark:text-gray-300\",\n },\n\n [Variant.success]: {\n root: \"border-eui-success-500/30 bg-eui-success-500/10 text-eui-success-700 shadow-xl dark:border-eui-success-400/40 dark:bg-eui-success-500/15 dark:text-eui-success-300\",\n icon: \"bg-eui-success-500/15 text-eui-success-600 dark:bg-eui-success-500/20 dark:text-eui-success-300\",\n progress: \"bg-eui-success-500\",\n title: \"text-eui-success-700 dark:text-eui-success-300\",\n message: \"text-eui-success-600 dark:text-eui-success-300/80\",\n },\n\n [Variant.warning]: {\n root: \"border-eui-warning-500/30 bg-eui-warning-500/10 text-eui-warning-700 shadow-xl dark:border-eui-warning-400/40 dark:bg-eui-warning-500/15 dark:text-eui-warning-300\",\n icon: \"bg-eui-warning-500/15 text-eui-warning-600 dark:bg-eui-warning-500/20 dark:text-eui-warning-300\",\n progress: \"bg-eui-warning-500\",\n title: \"text-eui-warning-700 dark:text-eui-warning-300\",\n message: \"text-eui-warning-600 dark:text-eui-warning-300/80\",\n },\n\n [Variant.danger]: {\n root: \"border-eui-danger-500/30 bg-eui-danger-500/10 text-eui-danger-700 shadow-xl dark:border-eui-danger-400/40 dark:bg-eui-danger-500/15 dark:text-eui-danger-300\",\n icon: \"bg-eui-danger-500/15 text-eui-danger-600 dark:bg-eui-danger-500/20 dark:text-eui-danger-300\",\n progress: \"bg-eui-danger-500\",\n title: \"text-eui-danger-700 dark:text-eui-danger-300\",\n message: \"text-eui-danger-600 dark:text-eui-danger-300/80\",\n },\n\n [Variant.info]: {\n root: \"border-eui-info-500/30 bg-eui-info-500/10 text-eui-info-700 shadow-xl dark:border-eui-info-400/40 dark:bg-eui-info-500/15 dark:text-eui-info-300\",\n icon: \"bg-eui-info-500/15 text-eui-info-600 dark:bg-eui-info-500/20 dark:text-eui-info-300\",\n progress: \"bg-eui-info-500\",\n title: \"text-eui-info-700 dark:text-eui-info-300\",\n message: \"text-eui-info-600 dark:text-eui-info-300/80\",\n },\n};\n\nexport const toastShapeStyles: Record<Shape, string> = {\n [Shape.circle]: \"!rounded-3xl\",\n [Shape.roundedSquare]: \"!rounded-lg\",\n [Shape.softRoundedSquare]: \"!rounded-3xl\",\n [Shape.square]: \"!rounded-none\",\n};\n","import {\n shapes,\n variantsGhost,\n variantsLite,\n variantsSolid,\n} from \"../../../../data/styles\";\nimport type { Shape, Size } from \"../../../../types\";\nimport { resolveAppearanceStyles } from \"../../../../utils\";\nimport type { ResolvedButtonConfig } from \"./Button.config\";\n\nexport const buttonShapes: Record<Shape, string> = shapes;\n\nexport const buttonIconSizes: Record<Size, number> = {\n xs: 14,\n sm: 16,\n md: 18,\n lg: 20,\n xl: 22,\n};\n\nexport function resolveButtonVariantStyles({\n appearance,\n variant,\n}: Pick<ResolvedButtonConfig, \"appearance\" | \"variant\">): string {\n return resolveAppearanceStyles({\n appearance,\n variant,\n solid: variantsSolid,\n lite: variantsLite,\n ghost: variantsGhost,\n });\n}\n\nexport function getButtonTextColorClassName(className: string): string {\n return className\n .split(/\\s+/)\n .filter(\n (token) =>\n token.startsWith(\"text-\") ||\n token.startsWith(\"dark:text-\") ||\n token.startsWith(\"disabled:text-\"),\n )\n .join(\" \");\n}\n","import type { Size } from \"../../../../types\";\n\nexport const nativeButtonSizes: Record<\n Size,\n {\n rootClassName: string;\n labelClassName: string;\n slotClassName: string;\n }\n> = {\n xs: {\n rootClassName: \"min-h-[30px] px-2.5 py-1\",\n labelClassName: \"text-xs leading-[14px]\",\n slotClassName: \"h-[14px] w-[14px]\",\n },\n sm: {\n rootClassName: \"min-h-9 px-3 py-1.5\",\n labelClassName: \"text-sm leading-4\",\n slotClassName: \"h-4 w-4\",\n },\n md: {\n rootClassName: \"min-h-11 px-4 py-2\",\n labelClassName: \"text-[15px] leading-[18px]\",\n slotClassName: \"h-[18px] w-[18px]\",\n },\n lg: {\n rootClassName: \"min-h-[50px] px-[18px] py-3\",\n labelClassName: \"text-[17px] leading-5\",\n slotClassName: \"h-5 w-5\",\n },\n xl: {\n rootClassName: \"min-h-14 px-[22px] py-4\",\n labelClassName: \"text-[19px] leading-[22px]\",\n slotClassName: \"h-[22px] w-[22px]\",\n },\n};\n","/** @jsxImportSource nativewind */\n// External\nimport { ActivityIndicator, Pressable, Text, View } from \"react-native\";\n\n// Internal\nimport { cn } from \"../../../../utils\";\nimport {\n getButtonTextColorClassName,\n resolveButtonVariantStyles,\n useResolvedButtonConfig,\n} from \"../base\";\n\n// Types\nimport type { ButtonProps } from \"../base\";\n\n// Data\nimport { buttonIconSizes, buttonShapes } from \"../base\";\nimport { nativeButtonSizes } from \"./Button.native.styles\";\n\nconst nativeLabelBaseStyle = {\n includeFontPadding: false,\n textAlignVertical: \"center\",\n} as const;\n\nfunction Button({\n icon,\n text,\n children,\n loading = false,\n disabled = false,\n block = false,\n compact = false,\n mode,\n buttonColor,\n textColor,\n contentClassName,\n labelClassName,\n className,\n variant,\n appearance,\n shape,\n size,\n style,\n contentStyle,\n labelStyle,\n accessibilityRole = \"button\",\n accessibilityState,\n type: _type,\n onClick: _onClick,\n onMouseMove: _onMouseMove,\n onPress,\n ...rest\n}: ButtonProps) {\n const {\n shape: resolvedShape,\n size: resolvedSize,\n variant: resolvedVariant,\n appearance: resolvedAppearance,\n } = useResolvedButtonConfig({\n compact,\n mode,\n variant,\n appearance,\n shape,\n size,\n });\n\n const metrics = nativeButtonSizes[resolvedSize];\n const iconSize = buttonIconSizes[resolvedSize];\n const variantStyles = resolveButtonVariantStyles({\n appearance: resolvedAppearance,\n variant: resolvedVariant,\n });\n const textColorClassName = getButtonTextColorClassName(variantStyles);\n const rootStyle = {\n ...(mode === \"text\"\n ? {\n backgroundColor: \"transparent\",\n borderColor: \"transparent\",\n }\n : null),\n ...(buttonColor && mode !== \"text\"\n ? {\n backgroundColor: buttonColor,\n borderColor: buttonColor,\n }\n : null),\n ...(!buttonColor && textColor && resolvedAppearance !== \"solid\"\n ? { borderColor: textColor }\n : null),\n };\n const labelTextStyle = textColor ? { color: textColor } : null;\n const content = text ?? children;\n const resolvedIcon =\n typeof icon === \"function\"\n ? icon({ color: textColor ?? \"currentColor\", size: iconSize })\n : icon;\n\n return (\n <Pressable\n {...rest}\n accessibilityRole={accessibilityRole}\n accessibilityState={{\n disabled: disabled || loading,\n ...(accessibilityState as object),\n }}\n className={cn(\n \"relative items-center justify-center overflow-hidden\",\n variantStyles,\n buttonShapes[resolvedShape],\n metrics.rootClassName,\n block && \"w-full\",\n mode === \"text\" && \"border-transparent bg-transparent\",\n (disabled || loading) && \"opacity-55\",\n !disabled && !loading && \"active:opacity-80\",\n className,\n )}\n disabled={disabled || loading}\n onPress={onPress}\n style={({ pressed }: { pressed: boolean }) => [\n rootStyle,\n pressed && !disabled && !loading ? { opacity: 0.82 } : null,\n disabled || loading ? { opacity: 0.55 } : null,\n style,\n ]}\n >\n <View\n className={cn(\n \"z-10 flex-row items-center justify-center gap-2\",\n contentClassName,\n )}\n style={contentStyle}\n >\n {loading ? (\n <View\n className={cn(\n \"shrink-0 items-center justify-center\",\n metrics.slotClassName,\n )}\n >\n <ActivityIndicator\n className={textColorClassName}\n color={textColor}\n size=\"small\"\n />\n </View>\n ) : null}\n {!loading && resolvedIcon ? (\n <View\n className={cn(\n \"shrink-0 items-center justify-center\",\n metrics.slotClassName,\n )}\n >\n {resolvedIcon}\n </View>\n ) : null}\n {typeof content === \"string\" || typeof content === \"number\" ? (\n <View className=\"items-center justify-center\">\n <Text\n className={cn(\n \"font-bold\",\n metrics.labelClassName,\n textColorClassName,\n labelClassName,\n )}\n numberOfLines={1}\n style={[nativeLabelBaseStyle, labelTextStyle, labelStyle]}\n >\n {content}\n </Text>\n </View>\n ) : (\n content\n )}\n </View>\n </Pressable>\n );\n}\n\nexport default Button;\n"]}
|