@gamecp/ui 0.1.19 → 0.1.21
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/dist/index.d.mts +10 -7
- package/dist/index.d.ts +10 -7
- package/dist/index.js +113 -98
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +113 -98
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -8,28 +8,27 @@ import { Tooltip } from 'react-tooltip';
|
|
|
8
8
|
|
|
9
9
|
// src/Badge.tsx
|
|
10
10
|
var badgeVariants = {
|
|
11
|
-
default: "bg-
|
|
11
|
+
default: "bg-muted text-foreground border-border",
|
|
12
12
|
primary: "bg-primary-100 text-primary-800 border-primary-200",
|
|
13
|
-
secondary: "bg-
|
|
13
|
+
secondary: "bg-muted text-foreground border-border",
|
|
14
14
|
success: "bg-success text-success-dark border-success-light",
|
|
15
|
-
warning: "bg-
|
|
16
|
-
error: "bg-
|
|
15
|
+
warning: "bg-amber/20 text-yellow-800 border-amber/30",
|
|
16
|
+
error: "bg-danger/20 text-danger border-danger/30",
|
|
17
17
|
info: "bg-muted text-muted-foreground border-ring",
|
|
18
|
-
gray: "bg-
|
|
18
|
+
gray: "bg-muted text-foreground border-border",
|
|
19
19
|
purple: "bg-purple-100 text-purple-800 border-purple-200",
|
|
20
|
-
pink: "bg-pink
|
|
21
|
-
indigo: "bg-indigo
|
|
22
|
-
|
|
23
|
-
orange: "bg-orange-100 text-orange-800 border-orange-200",
|
|
20
|
+
pink: "bg-pink/20 text-pink border-pink-200",
|
|
21
|
+
indigo: "bg-indigo/20 text-indigo border-indigo-200",
|
|
22
|
+
orange: "bg-orange/20 text-orange-800 border-orange/30",
|
|
24
23
|
teal: "bg-teal-100 text-teal-800 border-teal-200",
|
|
25
|
-
cyan: "bg-cyan
|
|
24
|
+
cyan: "bg-cyan/20 text-cyan-800 border-cyan-200",
|
|
26
25
|
lime: "bg-lime-100 text-lime-800 border-lime-200",
|
|
27
|
-
emerald: "bg-emerald
|
|
26
|
+
emerald: "bg-emerald/20 text-emerald-800 border-emerald-200",
|
|
28
27
|
rose: "bg-rose-100 text-rose-800 border-rose-200",
|
|
29
28
|
sky: "bg-sky-100 text-sky-800 border-sky-200",
|
|
30
29
|
violet: "bg-violet-100 text-violet-800 border-violet-200",
|
|
31
30
|
fuchsia: "bg-fuchsia-100 text-fuchsia-800 border-fuchsia-200",
|
|
32
|
-
amber: "bg-amber
|
|
31
|
+
amber: "bg-amber/20 text-amber-800 border-amber/30"
|
|
33
32
|
};
|
|
34
33
|
var badgeSizes = {
|
|
35
34
|
sm: "px-2 py-0.5 text-xs",
|
|
@@ -64,7 +63,7 @@ var variantClasses = {
|
|
|
64
63
|
primary: "bg-primary text-primary-foreground hover:bg-primary/90 border-transparent",
|
|
65
64
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent",
|
|
66
65
|
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 border-transparent",
|
|
67
|
-
danger: "bg-
|
|
66
|
+
danger: "bg-danger text-white hover:bg-danger border-transparent",
|
|
68
67
|
ghost: "bg-transparent hover:bg-muted hover:text-foreground border-transparent",
|
|
69
68
|
link: "bg-transparent text-primary underline-offset-4 hover:underline border-transparent p-0",
|
|
70
69
|
outline: "bg-transparent border-border hover:bg-muted hover:text-foreground"
|
|
@@ -184,13 +183,13 @@ var paddingClasses = {
|
|
|
184
183
|
};
|
|
185
184
|
var borderAccentClasses = {
|
|
186
185
|
none: "",
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
purple: "border-l-4 border-l-purple
|
|
192
|
-
orange: "border-l-4 border-l-orange
|
|
193
|
-
gray: "border-l-4 border-l-gray
|
|
186
|
+
success: "border-l-4 border-l-success",
|
|
187
|
+
info: "border-l-4 border-l-info",
|
|
188
|
+
danger: "border-l-4 border-l-danger",
|
|
189
|
+
amber: "border-l-4 border-l-amber",
|
|
190
|
+
purple: "border-l-4 border-l-purple",
|
|
191
|
+
orange: "border-l-4 border-l-orange",
|
|
192
|
+
gray: "border-l-4 border-l-gray"
|
|
194
193
|
};
|
|
195
194
|
var variantClasses2 = {
|
|
196
195
|
default: "card",
|
|
@@ -199,15 +198,15 @@ var variantClasses2 = {
|
|
|
199
198
|
filled: "bg-muted rounded-lg border border-border"
|
|
200
199
|
};
|
|
201
200
|
var iconColorClasses = {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
purple: "text-purple
|
|
207
|
-
orange: "text-orange
|
|
201
|
+
success: "text-success",
|
|
202
|
+
info: "text-info",
|
|
203
|
+
danger: "text-danger",
|
|
204
|
+
amber: "text-amber",
|
|
205
|
+
purple: "text-purple",
|
|
206
|
+
orange: "text-orange",
|
|
208
207
|
gray: "text-muted-foreground",
|
|
209
|
-
indigo: "text-indigo
|
|
210
|
-
pink: "text-pink
|
|
208
|
+
indigo: "text-indigo",
|
|
209
|
+
pink: "text-pink"
|
|
211
210
|
};
|
|
212
211
|
var iconSizeClasses = {
|
|
213
212
|
sm: "w-4 h-4",
|
|
@@ -215,10 +214,10 @@ var iconSizeClasses = {
|
|
|
215
214
|
lg: "w-8 h-8"
|
|
216
215
|
};
|
|
217
216
|
var statusClasses = {
|
|
218
|
-
success: "bg-success
|
|
219
|
-
warning: "bg-
|
|
220
|
-
error: "bg-
|
|
221
|
-
info: "bg-
|
|
217
|
+
success: "bg-success/10 border-success",
|
|
218
|
+
warning: "bg-amber/10 border-amber",
|
|
219
|
+
error: "bg-danger/10 border-danger",
|
|
220
|
+
info: "bg-info/10 border-info",
|
|
222
221
|
neutral: "bg-muted border-border"
|
|
223
222
|
};
|
|
224
223
|
function Card({
|
|
@@ -238,7 +237,7 @@ function Card({
|
|
|
238
237
|
subtitle,
|
|
239
238
|
description,
|
|
240
239
|
icon: Icon,
|
|
241
|
-
iconColor = "
|
|
240
|
+
iconColor = "info",
|
|
242
241
|
iconSize = "md",
|
|
243
242
|
actionButton,
|
|
244
243
|
headerClassName = "",
|
|
@@ -249,14 +248,42 @@ function Card({
|
|
|
249
248
|
status,
|
|
250
249
|
statusIcon,
|
|
251
250
|
statusText,
|
|
251
|
+
headerBorder,
|
|
252
|
+
headerBg,
|
|
253
|
+
headerStatus,
|
|
252
254
|
id
|
|
253
255
|
}) {
|
|
254
256
|
const [isExpanded, setIsExpanded] = useState(defaultExpanded);
|
|
257
|
+
const getHeaderStatusClasses = (status2) => {
|
|
258
|
+
switch (status2) {
|
|
259
|
+
case "online":
|
|
260
|
+
case "success":
|
|
261
|
+
return { border: "bg-success", bg: "status-running-bg-50" };
|
|
262
|
+
case "offline":
|
|
263
|
+
case "error":
|
|
264
|
+
return { border: "bg-destructive", bg: "status-error-bg-50" };
|
|
265
|
+
case "maintenance":
|
|
266
|
+
case "starting":
|
|
267
|
+
case "info":
|
|
268
|
+
return { border: "bg-warning", bg: "status-starting-bg-50" };
|
|
269
|
+
case "restarting":
|
|
270
|
+
case "updating":
|
|
271
|
+
return { border: "bg-orange", bg: "status-restarting-bg-50" };
|
|
272
|
+
case "unknown":
|
|
273
|
+
return { border: "bg-muted-foreground/30", bg: "bg-muted/10" };
|
|
274
|
+
default:
|
|
275
|
+
return { border: headerBorder, bg: headerBg };
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
const statusClassesMapped = getHeaderStatusClasses(headerStatus);
|
|
279
|
+
const activeHeaderBorder = statusClassesMapped?.border || headerBorder;
|
|
280
|
+
const activeHeaderBg = statusClassesMapped?.bg || headerBg;
|
|
255
281
|
const baseClasses = [
|
|
256
282
|
variantClasses2[variant],
|
|
257
283
|
paddingClasses[padding],
|
|
258
284
|
borderAccentClasses[borderAccent],
|
|
259
|
-
overflow !== "visible" ? `overflow-${overflow}` : "",
|
|
285
|
+
overflow !== "visible" || activeHeaderBorder ? `overflow-${overflow === "visible" && activeHeaderBorder ? "hidden" : overflow}` : "",
|
|
286
|
+
activeHeaderBorder ? "relative" : "",
|
|
260
287
|
hover ? "hover:shadow-md transition-shadow" : "",
|
|
261
288
|
clickable || onClick ? "cursor-pointer" : "",
|
|
262
289
|
disabled ? "opacity-50 cursor-not-allowed" : "",
|
|
@@ -284,7 +311,8 @@ function Card({
|
|
|
284
311
|
style,
|
|
285
312
|
onClick: clickable || onClick ? handleClick : void 0,
|
|
286
313
|
children: [
|
|
287
|
-
|
|
314
|
+
activeHeaderBorder && /* @__PURE__ */ jsx("div", { className: "absolute top-0 left-0 right-0 flex justify-center z-10 pointer-events-none", children: /* @__PURE__ */ jsx("div", { className: `h-1.5 w-24 ${activeHeaderBorder} rounded-b-xl shadow-sm` }) }),
|
|
315
|
+
(title || subtitle || description || Icon || actionButton || status) && /* @__PURE__ */ jsx("div", { className: `${activeHeaderBg ? activeHeaderBg + " " : ""}${headerClassName}${activeHeaderBorder ? " pt-6 pb-4 px-4" : ""}`, children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
288
316
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-3 flex-1 min-w-0", children: [
|
|
289
317
|
Icon && /* @__PURE__ */ jsx("div", { className: `${iconColorClasses[iconColor]} flex-shrink-0`, children: /* @__PURE__ */ jsx(Icon, { className: iconSizeClasses[iconSize] }) }),
|
|
290
318
|
statusIcon && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: statusIcon }),
|
|
@@ -492,7 +520,7 @@ function Modal({
|
|
|
492
520
|
/* @__PURE__ */ jsx(AnimatePresence, { children: /* @__PURE__ */ jsx(
|
|
493
521
|
motion.div,
|
|
494
522
|
{
|
|
495
|
-
className: `modal-backdrop fixed inset-0 w-screen h-screen flex items-center ${customStyles.backdrop?.includes("justify-") ? customStyles.backdrop : customStyles.backdrop ? `${customStyles.backdrop} justify-center` : "justify-center bg-black/10"} z-
|
|
523
|
+
className: `modal-backdrop fixed inset-0 w-screen h-screen flex items-center ${customStyles.backdrop?.includes("justify-") ? customStyles.backdrop : customStyles.backdrop ? `${customStyles.backdrop} justify-center` : "justify-center bg-black/10"} z-50 m-0 ${fullScreen ? "p-0" : "p-4"}`,
|
|
496
524
|
variants: backdropVariants,
|
|
497
525
|
initial: "hidden",
|
|
498
526
|
animate: isOpen ? "visible" : "hidden",
|
|
@@ -507,7 +535,7 @@ function Modal({
|
|
|
507
535
|
"aria-labelledby": title ? "modal-title-plain" : void 0,
|
|
508
536
|
"aria-describedby": ariaDescribedBy || "modal-content-plain",
|
|
509
537
|
tabIndex: -1,
|
|
510
|
-
className: `w-full flex flex-col overflow-hidden relative
|
|
538
|
+
className: `w-full flex flex-col overflow-hidden relative ${customStyles.container || "bg-card shadow-xl"} ${fullScreen ? "h-full rounded-none" : `rounded-lg ${className} ${sizeClasses3[size]} max-h-[90vh]`}`,
|
|
511
539
|
variants: modalVariants,
|
|
512
540
|
initial: "hidden",
|
|
513
541
|
animate: isOpen ? "visible" : "exit",
|
|
@@ -534,7 +562,7 @@ function Modal({
|
|
|
534
562
|
/* @__PURE__ */ jsx(AnimatePresence, { children: /* @__PURE__ */ jsx(
|
|
535
563
|
motion.div,
|
|
536
564
|
{
|
|
537
|
-
className: `modal-backdrop fixed inset-0 w-screen h-screen bg-black/10 flex items-center ${customStyles.backdrop || "justify-center"} z-
|
|
565
|
+
className: `modal-backdrop fixed inset-0 w-screen h-screen bg-black/10 flex items-center ${customStyles.backdrop || "justify-center"} z-50 m-0 ${fullScreen ? "p-0" : "p-4"}`,
|
|
538
566
|
variants: backdropVariants,
|
|
539
567
|
initial: "hidden",
|
|
540
568
|
animate: isOpen ? "visible" : "hidden",
|
|
@@ -549,7 +577,7 @@ function Modal({
|
|
|
549
577
|
"aria-labelledby": title ? "modal-title" : void 0,
|
|
550
578
|
"aria-describedby": ariaDescribedBy || "modal-content",
|
|
551
579
|
tabIndex: -1,
|
|
552
|
-
className: `bg-card border border-border shadow-xl w-full flex flex-col overflow-hidden relative
|
|
580
|
+
className: `bg-card border border-border shadow-xl w-full flex flex-col overflow-hidden relative ${fullScreen ? "h-full rounded-none" : `rounded-lg ${customStyles.container || className || sizeClasses3[size]} max-h-[90vh]`}`,
|
|
553
581
|
variants: modalVariants,
|
|
554
582
|
initial: "hidden",
|
|
555
583
|
animate: isOpen ? "visible" : "exit",
|
|
@@ -609,14 +637,14 @@ function Modal({
|
|
|
609
637
|
);
|
|
610
638
|
}
|
|
611
639
|
function ConfirmDialog({ isOpen, options, onConfirm, onCancel }) {
|
|
612
|
-
const { title, message, confirmText, cancelText = "Cancel", confirmButtonColor = "
|
|
640
|
+
const { title, message, confirmText, cancelText = "Cancel", confirmButtonColor = "info" } = options;
|
|
613
641
|
const getConfirmVariant = () => {
|
|
614
642
|
switch (confirmButtonColor) {
|
|
615
|
-
case "
|
|
643
|
+
case "danger":
|
|
616
644
|
return "danger";
|
|
617
|
-
case "
|
|
645
|
+
case "success":
|
|
618
646
|
return "primary";
|
|
619
|
-
case "
|
|
647
|
+
case "info":
|
|
620
648
|
default:
|
|
621
649
|
return "primary";
|
|
622
650
|
}
|
|
@@ -1885,7 +1913,7 @@ function SkeletonGamesTable({
|
|
|
1885
1913
|
"div",
|
|
1886
1914
|
{
|
|
1887
1915
|
className: `overflow-hidden shadow ring-1 ring-black ring-opacity-5 md:rounded-lg ${className}`,
|
|
1888
|
-
children: /* @__PURE__ */ jsxs("table", { className: "min-w-full divide-y divide-
|
|
1916
|
+
children: /* @__PURE__ */ jsxs("table", { className: "min-w-full divide-y divide-border", children: [
|
|
1889
1917
|
/* @__PURE__ */ jsx("thead", { className: "bg-muted", children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
1890
1918
|
/* @__PURE__ */ jsx("th", { className: "px-6 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider", children: "Game" }),
|
|
1891
1919
|
/* @__PURE__ */ jsx("th", { className: "px-6 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider", children: "Type" }),
|
|
@@ -2072,7 +2100,7 @@ function FormInput({
|
|
|
2072
2100
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
2073
2101
|
/* @__PURE__ */ jsxs("label", { className: "form-label", children: [
|
|
2074
2102
|
label,
|
|
2075
|
-
required && /* @__PURE__ */ jsx("span", { className: "text-
|
|
2103
|
+
required && /* @__PURE__ */ jsx("span", { className: "text-danger ml-1", children: "*" })
|
|
2076
2104
|
] }),
|
|
2077
2105
|
description && /* @__PURE__ */ jsx("p", { className: "text-sm text-secondary-foreground", children: description }),
|
|
2078
2106
|
/* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx(
|
|
@@ -2090,7 +2118,7 @@ function FormInput({
|
|
|
2090
2118
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
2091
2119
|
/* @__PURE__ */ jsxs("label", { className: "form-label", children: [
|
|
2092
2120
|
label,
|
|
2093
|
-
required && /* @__PURE__ */ jsx("span", { className: "text-
|
|
2121
|
+
required && /* @__PURE__ */ jsx("span", { className: "text-danger ml-1", children: "*" })
|
|
2094
2122
|
] }),
|
|
2095
2123
|
description && /* @__PURE__ */ jsx("p", { className: "text-sm text-secondary-foreground", children: description }),
|
|
2096
2124
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-3", children: [
|
|
@@ -2102,7 +2130,7 @@ function FormInput({
|
|
|
2102
2130
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
2103
2131
|
/* @__PURE__ */ jsxs("label", { className: "form-label", children: [
|
|
2104
2132
|
label,
|
|
2105
|
-
required && /* @__PURE__ */ jsx("span", { className: "text-
|
|
2133
|
+
required && /* @__PURE__ */ jsx("span", { className: "text-danger ml-1", children: "*" })
|
|
2106
2134
|
] }),
|
|
2107
2135
|
description && /* @__PURE__ */ jsx("p", { className: "text-sm text-secondary-foreground", children: description }),
|
|
2108
2136
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
@@ -2372,7 +2400,7 @@ function FormInput({
|
|
|
2372
2400
|
className: "absolute inset-y-0 right-8 flex items-center pr-3 text-muted-foreground hover:text-foreground transition-colors duration-200 z-10",
|
|
2373
2401
|
"aria-label": `Copy ${label}`,
|
|
2374
2402
|
title: copied ? "Copied!" : `Copy ${label}`,
|
|
2375
|
-
children: copied ? /* @__PURE__ */ jsx(RiCheckLine, { className: "w-4 h-4 text-
|
|
2403
|
+
children: copied ? /* @__PURE__ */ jsx(RiCheckLine, { className: "w-4 h-4 text-success", "aria-hidden": "true" }) : /* @__PURE__ */ jsx(RiFileCopyLine, { className: "w-4 h-4", "aria-hidden": "true" })
|
|
2376
2404
|
}
|
|
2377
2405
|
),
|
|
2378
2406
|
/* @__PURE__ */ jsx(
|
|
@@ -2438,7 +2466,7 @@ function FormInput({
|
|
|
2438
2466
|
className: `absolute inset-y-0 right-0 flex items-center pr-3 text-muted-foreground hover:text-foreground transition-all duration-200 z-10`,
|
|
2439
2467
|
"aria-label": `Copy ${label}`,
|
|
2440
2468
|
title: copied ? "Copied!" : `Copy ${label}`,
|
|
2441
|
-
children: copied ? /* @__PURE__ */ jsx(RiCheckLine, { className: "w-4 h-4 text-
|
|
2469
|
+
children: copied ? /* @__PURE__ */ jsx(RiCheckLine, { className: "w-4 h-4 text-success", "aria-hidden": "true" }) : /* @__PURE__ */ jsx(RiFileCopyLine, { className: "w-4 h-4", "aria-hidden": "true" })
|
|
2442
2470
|
}
|
|
2443
2471
|
),
|
|
2444
2472
|
clearable && !copyable && value !== "" && value !== null && value !== void 0 && !disabled && !readOnly && /* @__PURE__ */ jsx(
|
|
@@ -2503,15 +2531,15 @@ function Grid({
|
|
|
2503
2531
|
}
|
|
2504
2532
|
var variantStyles = {
|
|
2505
2533
|
default: "bg-accent border-border text-muted-foreground",
|
|
2506
|
-
warning: "bg-
|
|
2507
|
-
info: "bg-
|
|
2508
|
-
success: "bg-
|
|
2534
|
+
warning: "bg-amber/10 border-amber text-amber",
|
|
2535
|
+
info: "bg-info/10 border-info text-info",
|
|
2536
|
+
success: "bg-success/10 border-success text-success"
|
|
2509
2537
|
};
|
|
2510
2538
|
var titleStyles = {
|
|
2511
2539
|
default: "text-foreground",
|
|
2512
|
-
warning: "text-
|
|
2513
|
-
info: "text-
|
|
2514
|
-
success: "text-
|
|
2540
|
+
warning: "text-amber",
|
|
2541
|
+
info: "text-info",
|
|
2542
|
+
success: "text-success"
|
|
2515
2543
|
};
|
|
2516
2544
|
function InfoBox({
|
|
2517
2545
|
title,
|
|
@@ -2715,7 +2743,7 @@ var Spinner = ({
|
|
|
2715
2743
|
};
|
|
2716
2744
|
const colorClasses2 = {
|
|
2717
2745
|
primary: "border-primary-600",
|
|
2718
|
-
|
|
2746
|
+
info: "border-info",
|
|
2719
2747
|
white: "border-white",
|
|
2720
2748
|
current: "border-current"
|
|
2721
2749
|
};
|
|
@@ -2869,8 +2897,8 @@ function StatusBadge({
|
|
|
2869
2897
|
const variantClasses5 = {
|
|
2870
2898
|
default: "bg-muted text-muted-foreground",
|
|
2871
2899
|
success: "bg-success text-success-dark",
|
|
2872
|
-
warning: "bg-
|
|
2873
|
-
error: "bg-
|
|
2900
|
+
warning: "bg-amber/20 text-yellow-800",
|
|
2901
|
+
error: "bg-danger/20 text-danger",
|
|
2874
2902
|
info: "bg-primary-100 text-primary-800"
|
|
2875
2903
|
};
|
|
2876
2904
|
return /* @__PURE__ */ jsx("span", { className: `badge ${variantClasses5[variant]}`, children: status });
|
|
@@ -2935,9 +2963,9 @@ function CountBadge({
|
|
|
2935
2963
|
const variantClasses5 = {
|
|
2936
2964
|
primary: "bg-ring ",
|
|
2937
2965
|
secondary: "bg-muted0 ",
|
|
2938
|
-
success: "bg-
|
|
2939
|
-
warning: "bg-
|
|
2940
|
-
error: "bg-
|
|
2966
|
+
success: "bg-success ",
|
|
2967
|
+
warning: "bg-amber ",
|
|
2968
|
+
error: "bg-danger "
|
|
2941
2969
|
};
|
|
2942
2970
|
if (count <= 0) return null;
|
|
2943
2971
|
return /* @__PURE__ */ jsx(
|
|
@@ -2968,8 +2996,8 @@ function ClearButton({
|
|
|
2968
2996
|
lg: "w-5 h-5"
|
|
2969
2997
|
};
|
|
2970
2998
|
const variantClasses5 = {
|
|
2971
|
-
overlay: "absolute -top-1 -right-1 bg-
|
|
2972
|
-
inline: "bg-
|
|
2999
|
+
overlay: "absolute -top-1 -right-1 bg-danger rounded-full flex items-center justify-center hover:bg-danger transition-colors cursor-pointer",
|
|
3000
|
+
inline: "bg-danger rounded-full flex items-center justify-center hover:bg-danger transition-colors",
|
|
2973
3001
|
ghost: "text-muted-foreground hover:text-muted-foreground transition-colors"
|
|
2974
3002
|
};
|
|
2975
3003
|
const baseProps = {
|
|
@@ -3080,86 +3108,73 @@ function ActionButton({
|
|
|
3080
3108
|
lg: terminalMode ? "" : "btn-lg"
|
|
3081
3109
|
};
|
|
3082
3110
|
const paddingClasses3 = iconOnly ? terminalMode ? "" : "p-2" : "px-3 py-1.5";
|
|
3083
|
-
const t = {
|
|
3084
|
-
edit: "Edit",
|
|
3085
|
-
delete: "Delete",
|
|
3086
|
-
deactivate: "Deactivate",
|
|
3087
|
-
activate: "Activate",
|
|
3088
|
-
view: "View",
|
|
3089
|
-
metrics: "Metrics",
|
|
3090
|
-
start: "Start",
|
|
3091
|
-
stop: "Stop",
|
|
3092
|
-
restart: "Restart",
|
|
3093
|
-
pause: "Pause",
|
|
3094
|
-
clone: "Clone"
|
|
3095
|
-
};
|
|
3096
3111
|
const getVariantConfig = () => {
|
|
3097
3112
|
switch (variant) {
|
|
3098
3113
|
case "edit":
|
|
3099
3114
|
return {
|
|
3100
3115
|
icon: fill ? RiEditFill : RiEditLine,
|
|
3101
|
-
label:
|
|
3116
|
+
label: "Edit",
|
|
3102
3117
|
className: "btn-secondary"
|
|
3103
3118
|
};
|
|
3104
3119
|
case "delete":
|
|
3105
3120
|
return {
|
|
3106
3121
|
icon: fill ? RiDeleteBinFill : RiDeleteBinLine,
|
|
3107
|
-
label:
|
|
3122
|
+
label: "Delete",
|
|
3108
3123
|
className: "btn-danger"
|
|
3109
3124
|
};
|
|
3110
3125
|
case "deactivate":
|
|
3111
3126
|
return {
|
|
3112
3127
|
icon: fill ? RiStopCircleFill : RiStopCircleLine,
|
|
3113
|
-
label:
|
|
3128
|
+
label: "Deactivate",
|
|
3114
3129
|
className: "bg-slate-50 text-slate-600 hover:bg-slate-100 hover:text-slate-700 border border-slate-200 transition-all duration-300 ease-in-out"
|
|
3115
3130
|
};
|
|
3116
3131
|
case "activate":
|
|
3117
3132
|
return {
|
|
3118
3133
|
icon: fill ? RiPlayCircleFill : RiPlayCircleLine,
|
|
3119
|
-
label:
|
|
3120
|
-
className: "bg-emerald
|
|
3134
|
+
label: "Activate",
|
|
3135
|
+
className: "bg-emerald/10 text-emerald hover:bg-emerald/20 hover:text-emerald-700 border border-emerald-200 transition-all duration-300 ease-in-out"
|
|
3121
3136
|
};
|
|
3122
3137
|
case "view":
|
|
3123
3138
|
return {
|
|
3124
3139
|
icon: fill ? RiEyeFill : RiEyeLine,
|
|
3125
|
-
label:
|
|
3126
|
-
className: "bg-muted text-muted-foreground hover:bg-
|
|
3140
|
+
label: "View",
|
|
3141
|
+
className: "bg-muted text-muted-foreground hover:bg-muted hover:text-foreground border border-border transition-all duration-300 ease-in-out"
|
|
3127
3142
|
};
|
|
3128
3143
|
case "metrics":
|
|
3129
3144
|
return {
|
|
3130
3145
|
icon: fill ? RiBarChartFill : RiBarChartLine,
|
|
3131
|
-
label:
|
|
3132
|
-
className: "bg-purple
|
|
3146
|
+
label: "Metrics",
|
|
3147
|
+
className: "bg-purple/10 text-purple-600 hover:bg-purple-100 hover:text-purple-700 border border-purple-200 transition-all duration-300 ease-in-out"
|
|
3133
3148
|
};
|
|
3134
3149
|
case "start":
|
|
3135
3150
|
return {
|
|
3136
3151
|
icon: fill ? RiPlayFill : RiPlayLine,
|
|
3137
|
-
label:
|
|
3138
|
-
className: "bg-
|
|
3152
|
+
label: "Start",
|
|
3153
|
+
className: "bg-success/10 text-success hover:bg-success/20 hover:text-success border border-success transition-all duration-300 ease-in-out"
|
|
3139
3154
|
};
|
|
3140
3155
|
case "stop":
|
|
3141
3156
|
return {
|
|
3142
3157
|
icon: fill ? RiStopFill : RiStopLine,
|
|
3143
|
-
label:
|
|
3144
|
-
className: "bg-
|
|
3158
|
+
label: "Stop",
|
|
3159
|
+
className: "bg-danger/10 text-danger hover:bg-danger/20 hover:text-danger border border-danger transition-all duration-300 ease-in-out"
|
|
3145
3160
|
};
|
|
3146
3161
|
case "restart":
|
|
3147
3162
|
return {
|
|
3148
3163
|
icon: fill ? RiRestartFill : RiRestartLine,
|
|
3149
|
-
label:
|
|
3150
|
-
className: "bg-orange
|
|
3164
|
+
label: "Restart",
|
|
3165
|
+
className: "bg-orange/10 text-orange hover:bg-orange/20 hover:text-orange-700 border border-orange/30 transition-all duration-300 ease-in-out"
|
|
3151
3166
|
};
|
|
3152
3167
|
case "pause":
|
|
3153
3168
|
return {
|
|
3154
3169
|
icon: fill ? RiPauseFill : RiPauseLine,
|
|
3155
|
-
label:
|
|
3156
|
-
className: "bg-
|
|
3170
|
+
label: "Pause",
|
|
3171
|
+
className: "bg-amber/10 text-amber hover:bg-amber/20 hover:text-amber border border-amber transition-all duration-300 ease-in-out"
|
|
3157
3172
|
};
|
|
3158
3173
|
case "clone":
|
|
3159
3174
|
return {
|
|
3160
3175
|
icon: fill ? RiFileCopyFill : RiFileCopyLine,
|
|
3161
|
-
label:
|
|
3162
|
-
className: "bg-indigo
|
|
3176
|
+
label: "Clone",
|
|
3177
|
+
className: "bg-indigo/10 text-indigo hover:bg-indigo/20 hover:text-indigo-700 border border-indigo-200 transition-all duration-300 ease-in-out"
|
|
3163
3178
|
};
|
|
3164
3179
|
default:
|
|
3165
3180
|
return null;
|
|
@@ -3170,10 +3185,10 @@ function ActionButton({
|
|
|
3170
3185
|
primary: "btn-primary",
|
|
3171
3186
|
secondary: "btn-secondary",
|
|
3172
3187
|
danger: "btn-danger",
|
|
3173
|
-
success: "bg-
|
|
3174
|
-
warning: "bg-
|
|
3188
|
+
success: "bg-success/10 text-success hover:bg-success/20 hover:text-success border border-success transition-all duration-300 ease-in-out",
|
|
3189
|
+
warning: "bg-amber/10 text-amber hover:bg-amber/20 hover:text-amber border border-amber transition-all duration-300 ease-in-out",
|
|
3175
3190
|
info: "bg-muted text-muted-foreground hover:bg-primary hover:text-primary-foreground border border-ring transition-all duration-300 ease-in-out",
|
|
3176
|
-
metrics: "bg-purple
|
|
3191
|
+
metrics: "bg-purple/10 text-purple-600 hover:bg-purple-100 hover:text-purple-700 border border-purple-200 transition-all duration-300 ease-in-out"
|
|
3177
3192
|
};
|
|
3178
3193
|
let variantClass = variantConfig ? variantConfig.className : variant ? variantClasses5[variant] : "";
|
|
3179
3194
|
if (terminalMode && variantClass) {
|