@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 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
- declare const SuccessBadge: (props: Omit<BadgeProps, "variant">) => react_jsx_runtime.JSX.Element;
33
- declare const WarningBadge: (props: Omit<BadgeProps, "variant">) => react_jsx_runtime.JSX.Element;
34
- declare const ErrorBadge: (props: Omit<BadgeProps, "variant">) => react_jsx_runtime.JSX.Element;
35
- declare const InfoBadge: (props: Omit<BadgeProps, "variant">) => react_jsx_runtime.JSX.Element;
36
- declare const PrimaryBadge: (props: Omit<BadgeProps, "variant">) => react_jsx_runtime.JSX.Element;
37
- declare const GrayBadge: (props: Omit<BadgeProps, "variant">) => react_jsx_runtime.JSX.Element;
38
- declare function StatusBadge({ isActive, activeText, inactiveText, ...props }: {
39
- isActive: boolean;
40
- activeText?: string;
41
- inactiveText?: string;
42
- } & Omit<BadgeProps, 'children' | 'variant'>): react_jsx_runtime.JSX.Element;
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 LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
94
- href: string;
95
- variant?: 'default' | 'primary' | 'muted';
96
- underline?: boolean;
97
- external?: boolean;
78
+ interface ConfirmDialogOptions {
79
+ title: string;
80
+ message: string;
81
+ confirmText: string;
82
+ cancelText?: string;
83
+ confirmButtonColor?: 'red' | 'blue' | 'green';
98
84
  }
99
- declare const Link: React__default.ForwardRefExoticComponent<LinkProps & React__default.RefAttributes<HTMLAnchorElement>>;
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: string;
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, clearable, }: FormInputProps): react_jsx_runtime.JSX.Element;
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 SwitchProps {
138
- checked: boolean;
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 Switch({ checked, onChange, disabled, label, description, className, size, }: SwitchProps): react_jsx_runtime.JSX.Element;
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 FormSectionProps {
191
- title: string;
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
- declare function FormSection({ title, description, children, className, }: FormSectionProps): react_jsx_runtime.JSX.Element;
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
- interface GridProps {
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 Grid({ children, cols, gap, className, }: GridProps): react_jsx_runtime.JSX.Element;
205
- declare function GridItem({ children, span, className, }: {
206
- children: React__default.ReactNode;
207
- span?: number;
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
- export { AccordionCard, Badge, type BadgeSize, type BadgeVariant, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, ClickableCard, ErrorBadge, FormInput, FormSection, GrayBadge, Grid, GridItem, HeaderCard, InfoBadge, Link, type LinkProps, LoadingSpinner, Modal, PageHeader, PrimaryBadge, SimpleCard, StatusBadge, StatusCard, SuccessBadge, Switch, WarningBadge };
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 };