@gamecp/ui 0.1.0 → 0.1.14
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 +489 -68
- package/dist/index.d.ts +489 -68
- package/dist/index.js +3215 -923
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3167 -915
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -4
package/dist/index.d.mts
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import React__default, { ButtonHTMLAttributes, ReactNode, AnchorHTMLAttributes } from 'react';
|
|
3
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React$1 from 'react';
|
|
3
|
+
import React__default, { ButtonHTMLAttributes, ReactNode, AnchorHTMLAttributes } from 'react';
|
|
4
4
|
import { IconType } from 'react-icons';
|
|
5
5
|
|
|
6
|
-
type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'ghost' | 'link' | 'outline';
|
|
7
|
-
type ButtonSize = 'sm' | 'md' | 'lg';
|
|
8
|
-
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
9
|
-
variant?: ButtonVariant;
|
|
10
|
-
size?: ButtonSize;
|
|
11
|
-
isLoading?: boolean;
|
|
12
|
-
leftIcon?: React__default.ReactNode;
|
|
13
|
-
rightIcon?: React__default.ReactNode;
|
|
14
|
-
fullWidth?: boolean;
|
|
15
|
-
}
|
|
16
|
-
declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
17
|
-
|
|
18
6
|
type BadgeVariant = 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'gray' | 'purple' | 'pink' | 'indigo' | 'yellow' | 'orange' | 'teal' | 'cyan' | 'lime' | 'emerald' | 'rose' | 'sky' | 'violet' | 'fuchsia' | 'amber' | 'custom';
|
|
19
7
|
type BadgeSize = 'sm' | 'md' | 'lg';
|
|
20
8
|
interface BadgeProps {
|
|
@@ -29,17 +17,18 @@ interface BadgeProps {
|
|
|
29
17
|
};
|
|
30
18
|
}
|
|
31
19
|
declare function Badge({ children, variant, size, className, customColors, }: BadgeProps): react_jsx_runtime.JSX.Element;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
20
|
+
|
|
21
|
+
type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'danger' | 'ghost' | 'link' | 'outline';
|
|
22
|
+
type ButtonSize = 'sm' | 'md' | 'lg';
|
|
23
|
+
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
24
|
+
variant?: ButtonVariant;
|
|
25
|
+
size?: ButtonSize;
|
|
26
|
+
isLoading?: boolean;
|
|
27
|
+
leftIcon?: React__default.ReactNode;
|
|
28
|
+
rightIcon?: React__default.ReactNode;
|
|
29
|
+
fullWidth?: boolean;
|
|
30
|
+
}
|
|
31
|
+
declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
43
32
|
|
|
44
33
|
interface BaseCardProps {
|
|
45
34
|
children: ReactNode;
|
|
@@ -82,32 +71,82 @@ interface CardProps extends AccordionCardProps, StatusCardProps {
|
|
|
82
71
|
overflow?: 'visible' | 'hidden' | 'scroll' | 'auto';
|
|
83
72
|
minHeight?: string;
|
|
84
73
|
maxHeight?: string;
|
|
74
|
+
id?: string;
|
|
85
75
|
}
|
|
86
|
-
declare function Card({ children, className, onClick, disabled, padding, borderAccent, variant, overflow, minHeight, maxHeight, hover, clickable, title, subtitle, description, icon: Icon, iconColor, iconSize, actionButton, headerClassName, accordion, defaultExpanded, onToggle, contentClassName, status, statusIcon, statusText, }: CardProps): react_jsx_runtime.JSX.Element;
|
|
87
|
-
declare function SimpleCard({ children, className, ...props }: BaseCardProps): react_jsx_runtime.JSX.Element;
|
|
88
|
-
declare function HeaderCard({ title, subtitle, description, icon, iconColor, iconSize, actionButton, children, className, ...props }: HeaderCardProps): react_jsx_runtime.JSX.Element;
|
|
89
|
-
declare function StatusCard({ status, statusIcon, statusText, children, className, ...props }: StatusCardProps): react_jsx_runtime.JSX.Element;
|
|
90
|
-
declare function ClickableCard({ onClick, children, className, ...props }: InteractiveCardProps): react_jsx_runtime.JSX.Element;
|
|
91
|
-
declare function AccordionCard({ accordion, children, className, ...props }: AccordionCardProps): react_jsx_runtime.JSX.Element;
|
|
76
|
+
declare function Card({ children, className, onClick, disabled, padding, borderAccent, variant, overflow, minHeight, maxHeight, hover, clickable, title, subtitle, description, icon: Icon, iconColor, iconSize, actionButton, headerClassName, accordion, defaultExpanded, onToggle, contentClassName, status, statusIcon, statusText, id, }: CardProps): react_jsx_runtime.JSX.Element;
|
|
92
77
|
|
|
93
|
-
interface
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
78
|
+
interface ConfirmDialogOptions {
|
|
79
|
+
title: string;
|
|
80
|
+
message: string;
|
|
81
|
+
confirmText: string;
|
|
82
|
+
cancelText?: string;
|
|
83
|
+
confirmButtonColor?: 'red' | 'blue' | 'green';
|
|
98
84
|
}
|
|
99
|
-
|
|
85
|
+
interface ConfirmDialogProps {
|
|
86
|
+
isOpen: boolean;
|
|
87
|
+
options: ConfirmDialogOptions;
|
|
88
|
+
onConfirm: () => void;
|
|
89
|
+
onCancel: () => void;
|
|
90
|
+
}
|
|
91
|
+
declare function ConfirmDialog({ isOpen, options, onConfirm, onCancel }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
|
|
92
|
+
/**
|
|
93
|
+
* Hook to use confirmation dialogs
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```tsx
|
|
97
|
+
* const { confirm } = useConfirmDialog();
|
|
98
|
+
*
|
|
99
|
+
* const handleDelete = async () => {
|
|
100
|
+
* const confirmed = await confirm({
|
|
101
|
+
* title: 'Delete Item',
|
|
102
|
+
* message: 'Are you sure you want to delete this item?',
|
|
103
|
+
* confirmText: 'Delete',
|
|
104
|
+
* confirmButtonColor: 'red'
|
|
105
|
+
* });
|
|
106
|
+
*
|
|
107
|
+
* if (confirmed) {
|
|
108
|
+
* // Delete the item
|
|
109
|
+
* }
|
|
110
|
+
* };
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
declare function useConfirmDialog(): {
|
|
114
|
+
confirm: (opts: ConfirmDialogOptions) => Promise<boolean>;
|
|
115
|
+
dialog: react_jsx_runtime.JSX.Element;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
interface ContainerProps {
|
|
119
|
+
children: React__default.ReactNode;
|
|
120
|
+
className?: string;
|
|
121
|
+
padding?: 'none' | 'sm' | 'md' | 'lg';
|
|
122
|
+
id?: string;
|
|
123
|
+
}
|
|
124
|
+
declare function Container({ children, className, padding, id }: ContainerProps): react_jsx_runtime.JSX.Element;
|
|
125
|
+
|
|
126
|
+
interface EmptyStateProps {
|
|
127
|
+
icon: IconType;
|
|
128
|
+
title: string;
|
|
129
|
+
subtitle: string;
|
|
130
|
+
action?: React__default.ReactNode;
|
|
131
|
+
className?: string;
|
|
132
|
+
}
|
|
133
|
+
declare const EmptyState: React__default.FC<EmptyStateProps>;
|
|
100
134
|
|
|
135
|
+
interface SelectOption {
|
|
136
|
+
value: string;
|
|
137
|
+
label: string;
|
|
138
|
+
description?: string;
|
|
139
|
+
}
|
|
101
140
|
type IconConfig = React__default.ReactNode | {
|
|
102
141
|
left?: React__default.ReactNode;
|
|
103
142
|
right?: React__default.ReactNode;
|
|
104
143
|
};
|
|
105
144
|
interface FormInputProps {
|
|
106
|
-
label
|
|
145
|
+
label?: string;
|
|
107
146
|
name: string;
|
|
108
|
-
type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'checkbox' | 'textarea' | 'color';
|
|
147
|
+
type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'select' | 'checkbox' | 'textarea' | 'color';
|
|
109
148
|
value: string | number | boolean;
|
|
110
|
-
onChange: (e: React__default.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
149
|
+
onChange: (e: React__default.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => void;
|
|
111
150
|
placeholder?: string;
|
|
112
151
|
required?: boolean;
|
|
113
152
|
disabled?: boolean;
|
|
@@ -125,25 +164,58 @@ interface FormInputProps {
|
|
|
125
164
|
onKeyDown?: (e: React__default.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
126
165
|
onBlur?: (e: React__default.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
127
166
|
icon?: IconConfig;
|
|
167
|
+
options?: SelectOption[];
|
|
168
|
+
multiSelect?: boolean;
|
|
169
|
+
selectWidth?: number;
|
|
170
|
+
searchable?: boolean;
|
|
171
|
+
clearable?: boolean;
|
|
128
172
|
rows?: number;
|
|
129
173
|
showHidePassword?: boolean;
|
|
130
174
|
onGeneratePassword?: () => void;
|
|
175
|
+
isLoading?: boolean;
|
|
131
176
|
copyable?: boolean;
|
|
132
177
|
readOnly?: boolean;
|
|
133
|
-
clearable?: boolean;
|
|
134
178
|
}
|
|
135
|
-
declare function FormInput({ label, name, type, value, onChange, placeholder, required, disabled, error, className, inputClassName, min, max, step, maxLength, autoComplete, description, footerDescription, autoFocus, onKeyDown, onBlur, icon, rows, showHidePassword, onGeneratePassword, copyable, readOnly,
|
|
179
|
+
declare function FormInput({ label, name, type, value, onChange, placeholder, required, disabled, error, className, inputClassName, min, max, step, maxLength, autoComplete, description, footerDescription, autoFocus, onKeyDown, onBlur, icon, options, multiSelect, selectWidth, searchable, clearable, rows, showHidePassword, onGeneratePassword, isLoading, copyable, readOnly, }: FormInputProps): react_jsx_runtime.JSX.Element;
|
|
136
180
|
|
|
137
|
-
interface
|
|
138
|
-
|
|
139
|
-
onChange: (checked: boolean) => void;
|
|
140
|
-
disabled?: boolean;
|
|
141
|
-
label?: string;
|
|
181
|
+
interface FormSectionProps {
|
|
182
|
+
title: string;
|
|
142
183
|
description?: string;
|
|
184
|
+
children: ReactNode;
|
|
143
185
|
className?: string;
|
|
144
|
-
size?: 'sm' | 'md' | 'lg';
|
|
145
186
|
}
|
|
146
|
-
declare function
|
|
187
|
+
declare function FormSection({ title, description, children, className, }: FormSectionProps): react_jsx_runtime.JSX.Element;
|
|
188
|
+
|
|
189
|
+
interface GridProps {
|
|
190
|
+
children: React__default.ReactNode;
|
|
191
|
+
cols?: 1 | 2 | 3 | 4 | 5 | 6 | 12;
|
|
192
|
+
gap?: 1 | 2 | 3 | 4 | 6 | 8;
|
|
193
|
+
className?: string;
|
|
194
|
+
}
|
|
195
|
+
declare function Grid({ children, cols, gap, className, }: GridProps): react_jsx_runtime.JSX.Element;
|
|
196
|
+
|
|
197
|
+
interface InfoBoxProps {
|
|
198
|
+
title: string;
|
|
199
|
+
children: React__default.ReactNode;
|
|
200
|
+
variant?: 'default' | 'warning' | 'info' | 'success';
|
|
201
|
+
className?: string;
|
|
202
|
+
}
|
|
203
|
+
declare function InfoBox({ title, children, variant, className }: InfoBoxProps): react_jsx_runtime.JSX.Element;
|
|
204
|
+
|
|
205
|
+
interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
206
|
+
href: string;
|
|
207
|
+
variant?: 'default' | 'primary' | 'muted';
|
|
208
|
+
underline?: boolean;
|
|
209
|
+
external?: boolean;
|
|
210
|
+
}
|
|
211
|
+
declare const Link: React__default.ForwardRefExoticComponent<LinkProps & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
212
|
+
|
|
213
|
+
interface LoadingSpinnerProps {
|
|
214
|
+
message?: string;
|
|
215
|
+
className?: string;
|
|
216
|
+
showMessage?: boolean;
|
|
217
|
+
}
|
|
218
|
+
declare const LoadingSpinner: ({ message, className, showMessage, }: LoadingSpinnerProps) => react_jsx_runtime.JSX.Element;
|
|
147
219
|
|
|
148
220
|
interface ModalProps {
|
|
149
221
|
isOpen: boolean;
|
|
@@ -169,14 +241,7 @@ interface ModalProps {
|
|
|
169
241
|
footer?: string;
|
|
170
242
|
};
|
|
171
243
|
}
|
|
172
|
-
declare function Modal({ isOpen, onClose, children, title, header, blocking, size, className, footer, fullScreen, noPadding, footerBg, variant, scrollable, 'aria-describedby': ariaDescribedBy, customStyles, }: ModalProps): React.ReactPortal | null;
|
|
173
|
-
|
|
174
|
-
interface LoadingSpinnerProps {
|
|
175
|
-
message?: string;
|
|
176
|
-
className?: string;
|
|
177
|
-
showMessage?: boolean;
|
|
178
|
-
}
|
|
179
|
-
declare const LoadingSpinner: ({ message, className, showMessage, }: LoadingSpinnerProps) => react_jsx_runtime.JSX.Element;
|
|
244
|
+
declare function Modal({ isOpen, onClose, children, title, header, blocking, size, className, footer, fullScreen, noPadding, footerBg, variant, scrollable, 'aria-describedby': ariaDescribedBy, customStyles, }: ModalProps): React$1.ReactPortal | null;
|
|
180
245
|
|
|
181
246
|
interface PageHeaderProps {
|
|
182
247
|
icon?: IconType;
|
|
@@ -187,25 +252,381 @@ interface PageHeaderProps {
|
|
|
187
252
|
}
|
|
188
253
|
declare function PageHeader({ icon: Icon, title, subtitle, rightContent, className, }: PageHeaderProps): react_jsx_runtime.JSX.Element;
|
|
189
254
|
|
|
190
|
-
interface
|
|
191
|
-
|
|
255
|
+
interface SwitchProps {
|
|
256
|
+
checked: boolean;
|
|
257
|
+
onChange: (checked: boolean) => void;
|
|
258
|
+
disabled?: boolean;
|
|
259
|
+
label?: string;
|
|
192
260
|
description?: string;
|
|
261
|
+
className?: string;
|
|
262
|
+
size?: 'sm' | 'md' | 'lg';
|
|
263
|
+
}
|
|
264
|
+
declare function Switch({ checked, onChange, disabled, label, description, className, size, }: SwitchProps): react_jsx_runtime.JSX.Element;
|
|
265
|
+
|
|
266
|
+
interface SmartDropdownProps {
|
|
267
|
+
isOpen: boolean;
|
|
268
|
+
onClose: () => void;
|
|
269
|
+
trigger: ReactNode;
|
|
270
|
+
children: ReactNode | ((position: {
|
|
271
|
+
isAbove: boolean;
|
|
272
|
+
}) => ReactNode);
|
|
273
|
+
className?: string;
|
|
274
|
+
width?: number | 'auto' | 'fit-content';
|
|
275
|
+
maxHeight?: number;
|
|
276
|
+
offset?: number;
|
|
277
|
+
margin?: number;
|
|
278
|
+
id?: string;
|
|
279
|
+
position?: 'auto' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-left-aligned' | 'bottom-left-aligned';
|
|
280
|
+
}
|
|
281
|
+
declare function SmartDropdown({ isOpen, onClose, trigger, children, className, width, maxHeight, offset, margin, id, position, }: SmartDropdownProps): react_jsx_runtime.JSX.Element;
|
|
282
|
+
interface Option {
|
|
283
|
+
value: string;
|
|
284
|
+
label: string;
|
|
285
|
+
description?: string;
|
|
286
|
+
icon?: React.ReactNode;
|
|
287
|
+
metadata?: {
|
|
288
|
+
isDefault?: boolean;
|
|
289
|
+
args?: string[];
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
interface SmartSelectProps {
|
|
293
|
+
options: Option[];
|
|
294
|
+
value: string | string[];
|
|
295
|
+
onChange: (value: string | string[]) => void;
|
|
296
|
+
placeholder?: string;
|
|
297
|
+
className?: string;
|
|
298
|
+
description?: string;
|
|
299
|
+
disabled?: boolean;
|
|
300
|
+
multiple?: boolean;
|
|
301
|
+
width?: number;
|
|
302
|
+
searchable?: boolean;
|
|
303
|
+
keepOpen?: boolean;
|
|
304
|
+
clearable?: boolean;
|
|
305
|
+
onOpen?: () => void;
|
|
306
|
+
onClose?: () => void;
|
|
307
|
+
onSearch?: (search: string) => void;
|
|
308
|
+
isLoading?: boolean;
|
|
309
|
+
}
|
|
310
|
+
declare function SmartSelect({ options, value, onChange, placeholder, className, description, disabled, multiple, width, searchable, keepOpen, clearable, onOpen, onClose, onSearch, isLoading, }: SmartSelectProps): react_jsx_runtime.JSX.Element;
|
|
311
|
+
|
|
312
|
+
interface SkeletonProps {
|
|
313
|
+
className?: string;
|
|
314
|
+
children?: ReactNode;
|
|
315
|
+
}
|
|
316
|
+
interface SkeletonItemProps {
|
|
317
|
+
className?: string;
|
|
318
|
+
width?: string;
|
|
319
|
+
height?: string;
|
|
320
|
+
rounded?: boolean;
|
|
321
|
+
animate?: boolean;
|
|
322
|
+
}
|
|
323
|
+
interface SkeletonCardProps {
|
|
324
|
+
className?: string;
|
|
193
325
|
children: ReactNode;
|
|
326
|
+
}
|
|
327
|
+
interface SkeletonTableProps {
|
|
328
|
+
rows?: number;
|
|
329
|
+
columns?: number;
|
|
194
330
|
className?: string;
|
|
331
|
+
showHeader?: boolean;
|
|
195
332
|
}
|
|
196
|
-
|
|
333
|
+
interface SkeletonListProps {
|
|
334
|
+
items?: number;
|
|
335
|
+
className?: string;
|
|
336
|
+
itemHeight?: string;
|
|
337
|
+
}
|
|
338
|
+
declare function Skeleton({ className, children }: SkeletonProps): react_jsx_runtime.JSX.Element;
|
|
339
|
+
declare function SkeletonItem({ className, width, height, rounded, animate, }: SkeletonItemProps): react_jsx_runtime.JSX.Element;
|
|
340
|
+
declare function SkeletonCard({ className, children }: SkeletonCardProps): react_jsx_runtime.JSX.Element;
|
|
341
|
+
declare function SkeletonTable({ rows, columns, className, showHeader, }: SkeletonTableProps): react_jsx_runtime.JSX.Element;
|
|
342
|
+
declare function SkeletonList({ items, className, itemHeight, }: SkeletonListProps): react_jsx_runtime.JSX.Element;
|
|
343
|
+
declare function SkeletonSearchCard({ className }: {
|
|
344
|
+
className?: string;
|
|
345
|
+
}): react_jsx_runtime.JSX.Element;
|
|
346
|
+
declare function SkeletonGameServerCard({ className, }: {
|
|
347
|
+
className?: string;
|
|
348
|
+
}): react_jsx_runtime.JSX.Element;
|
|
349
|
+
declare function SkeletonGameCard({ className }: {
|
|
350
|
+
className?: string;
|
|
351
|
+
}): react_jsx_runtime.JSX.Element;
|
|
352
|
+
declare function SkeletonUserCard({ className }: {
|
|
353
|
+
className?: string;
|
|
354
|
+
}): react_jsx_runtime.JSX.Element;
|
|
355
|
+
declare function SkeletonNodeCard({ className }: {
|
|
356
|
+
className?: string;
|
|
357
|
+
}): react_jsx_runtime.JSX.Element;
|
|
358
|
+
declare function SkeletonTenantCard({ className }: {
|
|
359
|
+
className?: string;
|
|
360
|
+
}): react_jsx_runtime.JSX.Element;
|
|
361
|
+
declare function SkeletonStats({ className }: {
|
|
362
|
+
className?: string;
|
|
363
|
+
}): react_jsx_runtime.JSX.Element;
|
|
364
|
+
declare function SkeletonRecentActivity({ items, className, }: {
|
|
365
|
+
items?: number;
|
|
366
|
+
className?: string;
|
|
367
|
+
}): react_jsx_runtime.JSX.Element;
|
|
368
|
+
declare function SkeletonForm({ fields, className, }: {
|
|
369
|
+
fields?: number;
|
|
370
|
+
className?: string;
|
|
371
|
+
}): react_jsx_runtime.JSX.Element;
|
|
372
|
+
declare function SkeletonGameServerCards({ items, className, }: {
|
|
373
|
+
items?: number;
|
|
374
|
+
className?: string;
|
|
375
|
+
}): react_jsx_runtime.JSX.Element;
|
|
376
|
+
declare function SkeletonNodeCards({ items, className, }: {
|
|
377
|
+
items?: number;
|
|
378
|
+
className?: string;
|
|
379
|
+
}): react_jsx_runtime.JSX.Element;
|
|
380
|
+
declare function SkeletonNodeTable({ items, className, }: {
|
|
381
|
+
items?: number;
|
|
382
|
+
className?: string;
|
|
383
|
+
}): react_jsx_runtime.JSX.Element;
|
|
384
|
+
declare function SkeletonGameServerTable({ items, className, }: {
|
|
385
|
+
items?: number;
|
|
386
|
+
className?: string;
|
|
387
|
+
}): react_jsx_runtime.JSX.Element;
|
|
388
|
+
declare function SkeletonGamesTable({ items, className, }: {
|
|
389
|
+
items?: number;
|
|
390
|
+
className?: string;
|
|
391
|
+
}): react_jsx_runtime.JSX.Element;
|
|
392
|
+
declare function SkeletonEnvironmentsList({ items, className, }: {
|
|
393
|
+
items?: number;
|
|
394
|
+
className?: string;
|
|
395
|
+
}): react_jsx_runtime.JSX.Element;
|
|
197
396
|
|
|
198
|
-
|
|
397
|
+
type TypographyElement = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div';
|
|
398
|
+
type TypographyVariant = 'default' | 'muted' | 'bold';
|
|
399
|
+
type TypographySize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl';
|
|
400
|
+
interface TypographyProps {
|
|
401
|
+
as?: TypographyElement;
|
|
402
|
+
variant?: TypographyVariant;
|
|
403
|
+
size?: TypographySize;
|
|
199
404
|
children: React__default.ReactNode;
|
|
200
|
-
cols?: 1 | 2 | 3 | 4 | 5 | 6 | 12;
|
|
201
|
-
gap?: 1 | 2 | 3 | 4 | 6 | 8;
|
|
202
405
|
className?: string;
|
|
203
406
|
}
|
|
204
|
-
declare function
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
407
|
+
declare function Typography({ as: Element, variant, size, children, className }: TypographyProps): react_jsx_runtime.JSX.Element;
|
|
408
|
+
|
|
409
|
+
interface DataTableProps {
|
|
410
|
+
children: ReactNode;
|
|
411
|
+
className?: string;
|
|
412
|
+
containerClassName?: string;
|
|
413
|
+
stickyActions?: boolean;
|
|
414
|
+
}
|
|
415
|
+
interface DataTableHeaderProps {
|
|
416
|
+
children: ReactNode;
|
|
417
|
+
className?: string;
|
|
418
|
+
}
|
|
419
|
+
interface DataTableBodyProps {
|
|
420
|
+
children: ReactNode;
|
|
421
|
+
className?: string;
|
|
422
|
+
}
|
|
423
|
+
interface DataTableRowProps {
|
|
424
|
+
children: ReactNode;
|
|
425
|
+
className?: string;
|
|
426
|
+
onClick?: () => void;
|
|
427
|
+
hover?: boolean;
|
|
428
|
+
}
|
|
429
|
+
interface DataTableCellProps {
|
|
430
|
+
children: ReactNode;
|
|
431
|
+
className?: string;
|
|
432
|
+
align?: 'left' | 'center' | 'right';
|
|
433
|
+
padding?: 'sm' | 'md' | 'lg';
|
|
434
|
+
sticky?: 'left' | 'right';
|
|
435
|
+
stickyOffset?: number;
|
|
436
|
+
}
|
|
437
|
+
interface DataTableHeaderCellProps {
|
|
438
|
+
children: ReactNode;
|
|
208
439
|
className?: string;
|
|
440
|
+
align?: 'left' | 'center' | 'right';
|
|
441
|
+
padding?: 'sm' | 'md' | 'lg';
|
|
442
|
+
sticky?: 'left' | 'right';
|
|
443
|
+
stickyOffset?: number;
|
|
444
|
+
}
|
|
445
|
+
declare function DataTable({ children, className, containerClassName, stickyActions, }: DataTableProps): react_jsx_runtime.JSX.Element;
|
|
446
|
+
declare function DataTableHeader({ children, className, }: DataTableHeaderProps): react_jsx_runtime.JSX.Element;
|
|
447
|
+
declare function DataTableBody({ children, className, }: DataTableBodyProps): react_jsx_runtime.JSX.Element;
|
|
448
|
+
declare function DataTableRow({ children, className, onClick, hover, }: DataTableRowProps): react_jsx_runtime.JSX.Element;
|
|
449
|
+
declare function DataTableHeaderCell({ children, className, align, padding, sticky, stickyOffset, }: DataTableHeaderCellProps): react_jsx_runtime.JSX.Element;
|
|
450
|
+
declare function DataTableCell({ children, className, align, padding, sticky, stickyOffset, }: DataTableCellProps): react_jsx_runtime.JSX.Element;
|
|
451
|
+
declare function DataTableEmptyState({ icon: Icon, title, description, action, variant, }: {
|
|
452
|
+
icon: React.ComponentType<{
|
|
453
|
+
className?: string;
|
|
454
|
+
}>;
|
|
455
|
+
title: string;
|
|
456
|
+
description: string;
|
|
457
|
+
action?: ReactNode;
|
|
458
|
+
variant?: 'table' | 'div';
|
|
459
|
+
}): react_jsx_runtime.JSX.Element;
|
|
460
|
+
declare function DataTableLoadingState({ message, rows, columns, }: {
|
|
461
|
+
message?: string;
|
|
462
|
+
rows?: number;
|
|
463
|
+
columns?: number;
|
|
464
|
+
}): react_jsx_runtime.JSX.Element;
|
|
465
|
+
declare function StatusBadge({ status, variant, }: {
|
|
466
|
+
status: string;
|
|
467
|
+
variant?: 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
468
|
+
}): react_jsx_runtime.JSX.Element;
|
|
469
|
+
declare function DataTableActions({ children, className, enhanced, }: {
|
|
470
|
+
children: ReactNode;
|
|
471
|
+
className?: string;
|
|
472
|
+
enhanced?: boolean;
|
|
473
|
+
}): react_jsx_runtime.JSX.Element;
|
|
474
|
+
declare function StickyActionsColumn({ children, className, }: {
|
|
475
|
+
children: ReactNode;
|
|
476
|
+
className?: string;
|
|
477
|
+
}): react_jsx_runtime.JSX.Element;
|
|
478
|
+
|
|
479
|
+
interface SearchCardProps {
|
|
480
|
+
title: string;
|
|
481
|
+
count: number;
|
|
482
|
+
total: number;
|
|
483
|
+
actionButton?: ReactNode;
|
|
484
|
+
children: ReactNode;
|
|
485
|
+
className?: string;
|
|
486
|
+
icon?: IconType;
|
|
487
|
+
description?: string;
|
|
488
|
+
}
|
|
489
|
+
interface SearchCardHeaderProps {
|
|
490
|
+
title: string;
|
|
491
|
+
count: number;
|
|
492
|
+
total: number;
|
|
493
|
+
actionButton?: ReactNode;
|
|
494
|
+
icon?: IconType;
|
|
495
|
+
description?: string;
|
|
496
|
+
}
|
|
497
|
+
interface SearchCardContentProps {
|
|
498
|
+
children: ReactNode;
|
|
499
|
+
className?: string;
|
|
500
|
+
}
|
|
501
|
+
declare function SearchCard({ title, count, total, actionButton, children, className, icon: Icon, description, }: SearchCardProps): react_jsx_runtime.JSX.Element;
|
|
502
|
+
declare function SearchCardHeader({ title, count, total, actionButton, icon: Icon, description, }: SearchCardHeaderProps): react_jsx_runtime.JSX.Element;
|
|
503
|
+
declare function SearchCardContent({ children, className, }: SearchCardContentProps): react_jsx_runtime.JSX.Element;
|
|
504
|
+
declare function SearchInput({ placeholder, value, onChange, className, }: {
|
|
505
|
+
placeholder: string;
|
|
506
|
+
value: string;
|
|
507
|
+
onChange: (value: string) => void;
|
|
508
|
+
className?: string;
|
|
509
|
+
}): react_jsx_runtime.JSX.Element;
|
|
510
|
+
declare function FilterSelect({ value, onChange, options, placeholder, className, multiple, searchable, }: {
|
|
511
|
+
value: string | string[];
|
|
512
|
+
onChange: (value: string | string[]) => void;
|
|
513
|
+
options: {
|
|
514
|
+
value: string;
|
|
515
|
+
label: string;
|
|
516
|
+
icon?: React.ReactNode;
|
|
517
|
+
}[];
|
|
518
|
+
placeholder: string;
|
|
519
|
+
className?: string;
|
|
520
|
+
multiple?: boolean;
|
|
521
|
+
searchable?: boolean;
|
|
522
|
+
}): react_jsx_runtime.JSX.Element;
|
|
523
|
+
declare function RefreshButton({ onClick, isLoading, className, }: {
|
|
524
|
+
onClick: () => void;
|
|
525
|
+
isLoading?: boolean;
|
|
526
|
+
className?: string;
|
|
527
|
+
}): react_jsx_runtime.JSX.Element;
|
|
528
|
+
declare function FilterToggleButton({ isOpen, onClick, onClear, activeCount, className, }: {
|
|
529
|
+
isOpen: boolean;
|
|
530
|
+
onClick: () => void;
|
|
531
|
+
onClear?: () => void;
|
|
532
|
+
activeCount?: number;
|
|
533
|
+
className?: string;
|
|
534
|
+
}): react_jsx_runtime.JSX.Element;
|
|
535
|
+
declare function MobileSearchLayout({ searchInput, filters, viewControls, activeFilterCount, onClearFilters, className, filterInline, searchButton, }: {
|
|
536
|
+
searchInput: ReactNode;
|
|
537
|
+
filters: ReactNode;
|
|
538
|
+
viewControls?: ReactNode;
|
|
539
|
+
activeFilterCount?: number;
|
|
540
|
+
onClearFilters?: () => void;
|
|
541
|
+
className?: string;
|
|
542
|
+
filterInline?: boolean;
|
|
543
|
+
searchButton?: ReactNode;
|
|
209
544
|
}): react_jsx_runtime.JSX.Element;
|
|
210
545
|
|
|
211
|
-
|
|
546
|
+
interface ViewToggleProps {
|
|
547
|
+
currentView: 'cards' | 'list';
|
|
548
|
+
onViewChange: (view: 'cards' | 'list') => void;
|
|
549
|
+
className?: string;
|
|
550
|
+
}
|
|
551
|
+
declare function ViewToggle({ currentView, onViewChange, className, }: ViewToggleProps): react_jsx_runtime.JSX.Element;
|
|
552
|
+
|
|
553
|
+
interface ActionButtonProps {
|
|
554
|
+
icon?: React__default.ComponentType<{
|
|
555
|
+
className?: string;
|
|
556
|
+
}>;
|
|
557
|
+
label?: string;
|
|
558
|
+
onClick?: () => void | Promise<void>;
|
|
559
|
+
href?: string;
|
|
560
|
+
disabled?: boolean;
|
|
561
|
+
loading?: boolean;
|
|
562
|
+
loadingIcon?: React__default.ComponentType<{
|
|
563
|
+
className?: string;
|
|
564
|
+
}>;
|
|
565
|
+
disableLoadingSpin?: boolean;
|
|
566
|
+
size?: 'sm' | 'md' | 'lg';
|
|
567
|
+
iconOnly?: boolean;
|
|
568
|
+
className?: string;
|
|
569
|
+
title?: string;
|
|
570
|
+
tooltipId?: string;
|
|
571
|
+
tooltipPlace?: 'top' | 'bottom' | 'left' | 'right';
|
|
572
|
+
tooltipOffset?: number;
|
|
573
|
+
tooltipDelayShow?: number;
|
|
574
|
+
tooltipDelayHide?: number;
|
|
575
|
+
type?: 'button' | 'submit' | 'reset';
|
|
576
|
+
variant?: 'primary' | 'secondary' | 'danger' | 'success' | 'warning' | 'info' | 'edit' | 'delete' | 'deactivate' | 'activate' | 'view' | 'metrics' | 'start' | 'stop' | 'restart' | 'pause' | 'clone';
|
|
577
|
+
terminalMode?: boolean;
|
|
578
|
+
fill?: boolean;
|
|
579
|
+
[key: string]: any;
|
|
580
|
+
}
|
|
581
|
+
declare function ActionButton({ icon: IconComponent, label, onClick, href, disabled, size, iconOnly, className, title, tooltipId, tooltipPlace, tooltipOffset, tooltipDelayShow, tooltipDelayHide, type, variant, terminalMode, fill, loading: externalLoading, // Extract loading prop to prevent it from being passed to DOM
|
|
582
|
+
loadingIcon: LoadingIconComponent, // Custom loading icon
|
|
583
|
+
disableLoadingSpin, // Disable spin animation for custom loading icons
|
|
584
|
+
...restProps }: ActionButtonProps): react_jsx_runtime.JSX.Element;
|
|
585
|
+
|
|
586
|
+
interface SharedTooltipProps {
|
|
587
|
+
id: string;
|
|
588
|
+
place?: 'top' | 'bottom' | 'left' | 'right';
|
|
589
|
+
offset?: number;
|
|
590
|
+
delayShow?: number;
|
|
591
|
+
delayHide?: number;
|
|
592
|
+
className?: string;
|
|
593
|
+
style?: React__default.CSSProperties;
|
|
594
|
+
children?: React__default.ReactNode;
|
|
595
|
+
}
|
|
596
|
+
declare function SharedTooltip({ id, place, offset, delayShow, delayHide, className, style, children, }: SharedTooltipProps): react_jsx_runtime.JSX.Element;
|
|
597
|
+
|
|
598
|
+
interface SpinnerProps {
|
|
599
|
+
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
600
|
+
color?: 'primary' | 'blue' | 'white' | 'current';
|
|
601
|
+
className?: string;
|
|
602
|
+
}
|
|
603
|
+
declare const Spinner: React__default.FC<SpinnerProps>;
|
|
604
|
+
|
|
605
|
+
interface IconButtonWithCountProps {
|
|
606
|
+
icon: ReactNode;
|
|
607
|
+
label?: string;
|
|
608
|
+
count?: number;
|
|
609
|
+
onClick: () => void;
|
|
610
|
+
onClear?: () => void;
|
|
611
|
+
showLabel?: boolean;
|
|
612
|
+
className?: string;
|
|
613
|
+
buttonClassName?: string;
|
|
614
|
+
countVariant?: 'primary' | 'secondary' | 'success' | 'warning' | 'error';
|
|
615
|
+
clearVariant?: 'overlay' | 'inline' | 'ghost';
|
|
616
|
+
tooltipId?: string;
|
|
617
|
+
tooltipContent?: string;
|
|
618
|
+
clearTooltipId?: string;
|
|
619
|
+
clearTooltipContent?: string;
|
|
620
|
+
}
|
|
621
|
+
declare function IconButtonWithCount({ icon, label, count, onClick, onClear, showLabel, className, buttonClassName, countVariant, clearVariant, tooltipId, tooltipContent, clearTooltipId, clearTooltipContent, }: IconButtonWithCountProps): react_jsx_runtime.JSX.Element;
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* @gamecp/ui - GameCP UI Component Library
|
|
625
|
+
*
|
|
626
|
+
* A collection of reusable React components for GameCP extensions.
|
|
627
|
+
* All components are built with TypeScript and Tailwind CSS.
|
|
628
|
+
*/
|
|
629
|
+
|
|
630
|
+
declare const VERSION = "0.1.3";
|
|
631
|
+
|
|
632
|
+
export { ActionButton, Badge, type BadgeSize, type BadgeVariant, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, ConfirmDialog, type ConfirmDialogOptions, Container, DataTable, DataTableActions, DataTableBody, DataTableCell, DataTableEmptyState, DataTableHeader, DataTableHeaderCell, DataTableLoadingState, DataTableRow, EmptyState, FilterSelect, FilterToggleButton, FormInput, FormSection, Grid, IconButtonWithCount, InfoBox, Link, type LinkProps, LoadingSpinner, MobileSearchLayout, Modal, PageHeader, RefreshButton, SearchCard, SearchCardContent, SearchCardHeader, SearchInput, SharedTooltip, Skeleton, SkeletonCard, SkeletonEnvironmentsList, SkeletonForm, SkeletonGameCard, SkeletonGameServerCard, SkeletonGameServerCards, SkeletonGameServerTable, SkeletonGamesTable, SkeletonItem, SkeletonList, SkeletonNodeCard, SkeletonNodeCards, SkeletonNodeTable, SkeletonRecentActivity, SkeletonSearchCard, SkeletonStats, SkeletonTable, SkeletonTenantCard, SkeletonUserCard, SmartDropdown, SmartSelect, Spinner, StatusBadge, StickyActionsColumn, Switch, Typography, VERSION, ViewToggle, useConfirmDialog };
|