@raydenui/ui 0.1.0 → 0.3.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/dist/index.d.cts CHANGED
@@ -1,8 +1,24 @@
1
1
  import * as react from 'react';
2
- import { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, HTMLAttributes } from 'react';
2
+ import { SVGAttributes, ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, HTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { ClassValue } from 'clsx';
5
5
 
6
+ type IconVariant = "outline" | "solid";
7
+ type IconName = "3d" | "AI-stars" | "AR" | "BTC" | "ETH" | "NFT" | "NFT-add" | "NFT-profile" | "NFT-remove" | "QR-code" | "VR-goggles" | "airplane" | "airpod" | "alarm-clock" | "align-center" | "align-justify" | "align-left" | "align-right" | "arrow-down" | "arrow-down-left" | "arrow-down-right" | "arrow-expand" | "arrow-left" | "arrow-right" | "arrow-shrink" | "arrow-up" | "arrow-up-left" | "arrow-up-right" | "arrow-up-split" | "at" | "backward" | "badge" | "bag" | "ball" | "bank" | "bar-chart-h" | "bar-chart-v" | "battery" | "battery-charging" | "battery-empty" | "bed" | "beizer-curve" | "bell" | "bell-slash" | "bicycle" | "bin" | "bluetooth" | "bold" | "book" | "book-open" | "bookmark" | "bookmark-add" | "bookmarks" | "books" | "bot" | "box" | "box-1" | "branch" | "brush" | "bug" | "building-1" | "building-2" | "building-3" | "building-4" | "building-5" | "building-6" | "bulb" | "bulb-slash" | "bus" | "calendar" | "calendar-add" | "calendar-alt" | "calendar-cross" | "calendar-remove" | "calendar-tick" | "call" | "call-add" | "call-cross" | "call-incoming" | "call-outgoing" | "call-remove" | "call-ringing" | "camera" | "camera-slash" | "candles-h" | "candles-v" | "car" | "card" | "card-add" | "card-cross" | "card-fund" | "card-in" | "card-out" | "card-remove" | "card-tick" | "card-withdraw" | "cart" | "cart-add" | "cart-check" | "cart-cross" | "cart-minus" | "chart" | "chart-down" | "chart-up" | "chat" | "chat-alt" | "chats" | "check" | "check-circle" | "checkbox" | "checkbox-checked" | "chevron-down" | "chevron-h" | "chevron-left" | "chevron-right" | "chevron-up" | "chevron-v" | "clipboard" | "clock" | "cloud" | "cloud-1" | "cloud-download" | "cloud-info" | "cloud-lightning" | "cloud-rain" | "cloud-slash" | "cloud-snowy" | "cloud-upload" | "clouds" | "code" | "code-2" | "coin-stack" | "coin-swap" | "coins" | "coins-alt" | "color-picker" | "column" | "compass" | "conical-flask" | "copy" | "corner" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "crop" | "cup" | "cursor" | "data" | "devices" | "dislike" | "division" | "dollar" | "dots-h" | "dots-h-circle" | "dots-v" | "dots-v-circle" | "download" | "elements" | "emoji" | "emoji-add" | "euro" | "expand" | "eye" | "eye-slash" | "face-id" | "feather" | "feather-AI" | "feather-add" | "file" | "file-alt" | "file-cloud" | "file-code" | "file-download" | "file-upload" | "filter" | "filter-alt" | "fingerprint" | "first-aid" | "flag" | "flower" | "folder" | "folder-add" | "folder-cloud" | "folder-cross" | "folder-download" | "folder-lock" | "folder-move" | "folder-shield" | "folder-upload" | "folder-user" | "fork" | "forward" | "game-pad" | "gear-AI" | "gem" | "gift" | "globe" | "globe-alt" | "gps" | "graduating cap" | "grid" | "grid-2" | "hashtag" | "heading" | "headphones" | "headset" | "health-plus" | "heart" | "heart-beat" | "heart-beat-wave" | "history" | "home" | "home-alt" | "image" | "image-add" | "image-check" | "image-circle" | "image-cross" | "image-remove" | "info-circle" | "info-hexagon" | "info-triangle" | "italics" | "key" | "keyboard" | "lamp" | "laptop" | "layer" | "lifebuoy" | "lightning" | "lightning-off" | "like" | "line-height" | "link" | "link-detach" | "list" | "list-add" | "lock" | "lock-open" | "loudspeaker" | "magic-wand" | "mail" | "mail-add" | "mail-check" | "mail-cross" | "mail-remove" | "map" | "map-alt" | "map-marker" | "media" | "merge" | "message" | "message-alt" | "messages" | "microphone" | "microphone-slash" | "minus" | "minus-circle" | "mobile" | "money" | "money-1" | "money-2" | "moon" | "moon-cloud" | "moon-stars" | "mouse" | "move" | "multiply" | "multiply-circle" | "music" | "music-AI" | "music-note" | "naira" | "navigation" | "navigation-alt" | "newspaper" | "next" | "paint-brush" | "paint-bucket" | "palette" | "paper-clip" | "paragraph-spacing" | "pause" | "pc" | "pc-lock" | "pc-speaker" | "pc-user" | "pencil" | "pencil-edit" | "pie-chart" | "pin" | "pin-alt" | "plant" | "plant-2" | "play" | "playlist" | "plus" | "plus-circle" | "pounds" | "power" | "previous" | "printer" | "processor" | "pull-request" | "question-circle" | "quote" | "radio-button" | "radio-selected" | "receipt" | "redo" | "refresh" | "repeat" | "repeat-once" | "road-sign" | "rocket" | "rocket-alt" | "rotate-left" | "rotate-right" | "route" | "row" | "save" | "scan" | "scissor" | "screenshot" | "search" | "send" | "send-AI" | "send-alt" | "server" | "server-alt" | "settings" | "settings-1" | "settings-2" | "share" | "share-alt" | "shield" | "shield-cross" | "shield-tick" | "ship" | "shower" | "shrink" | "shrink-alt" | "shuffle" | "sign-in" | "sign-out" | "signal" | "signal-off" | "sim" | "snooze" | "snowflake" | "sofa" | "speaker" | "star" | "stars" | "stop" | "stopwatch" | "store" | "strikethrough" | "subscript" | "suitcase" | "sun" | "sun-cloud" | "superscript" | "support" | "switch-diagonal" | "switch-horizontal" | "switch-vertical" | "tablet" | "target" | "taxi" | "terminal" | "text" | "thermometer" | "ticket" | "tissue" | "train" | "trophy" | "truck" | "tv" | "underline" | "undo" | "upload" | "user" | "user-add" | "user-circle" | "user-cross" | "user-group" | "user-heart" | "user-remove" | "user-tick" | "users" | "verified" | "video" | "video-slash" | "voice-note" | "volume" | "volume-low" | "volume-mute" | "volume-slash" | "wallet" | "wallet-add" | "wallet-check" | "wallet-cross" | "wallet-fund" | "wallet-remove" | "wallet-withdraw" | "water-drop" | "wifi" | "wristwatch" | "yen" | "zoom-in" | "zoom-out";
8
+
9
+ type IconSize = "xs" | "sm" | "md" | "lg" | "xl";
10
+ interface IconProps extends Omit<SVGAttributes<SVGSVGElement>, "children"> {
11
+ /** Icon name from the registry. */
12
+ name: IconName;
13
+ /** Preset size or pixel value. @default "md" */
14
+ size?: IconSize | number;
15
+ /** SVG color — applied via CSS `color`. @default "currentColor" */
16
+ color?: string;
17
+ /** Outline (stroke) or solid (filled) variant. @default "outline" */
18
+ variant?: IconVariant;
19
+ }
20
+ declare const Icon: react.ForwardRefExoticComponent<IconProps & react.RefAttributes<SVGSVGElement>>;
21
+
6
22
  type ButtonVariant = "primary" | "secondary" | "grey" | "destructive" | "text" | "success" | "warning" | "info";
7
23
  type ButtonAppearance = "solid" | "outlined";
8
24
  type ButtonSize = "sm" | "lg";
@@ -10,7 +26,7 @@ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
10
26
  variant?: ButtonVariant;
11
27
  appearance?: ButtonAppearance;
12
28
  size?: ButtonSize;
13
- icon?: ReactNode;
29
+ icon?: ReactNode | IconName;
14
30
  iconPosition?: "none" | "leading" | "trailing" | "icon-only";
15
31
  }
16
32
  declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
@@ -22,8 +38,8 @@ interface ButtonGroupProps {
22
38
  declare function ButtonGroup({ children, className }: ButtonGroupProps): react_jsx_runtime.JSX.Element;
23
39
 
24
40
  interface ButtonGroupItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {
25
- leadingIcon?: ReactNode;
26
- trailingIcon?: ReactNode;
41
+ leadingIcon?: ReactNode | IconName;
42
+ trailingIcon?: ReactNode | IconName;
27
43
  active?: boolean;
28
44
  }
29
45
  declare const ButtonGroupItem: react.ForwardRefExoticComponent<ButtonGroupItemProps & react.RefAttributes<HTMLButtonElement>>;
@@ -41,9 +57,9 @@ interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size">
41
57
  /** Success message or boolean. Overrides helperText styling. */
42
58
  success?: string | boolean;
43
59
  /** Icon on the left side of the input */
44
- leadingIcon?: ReactNode;
60
+ leadingIcon?: ReactNode | IconName;
45
61
  /** Icon on the right side of the input */
46
- trailingIcon?: ReactNode;
62
+ trailingIcon?: ReactNode | IconName;
47
63
  /** Text addon on the right side */
48
64
  addonRight?: string;
49
65
  /** Wrapper className */
@@ -64,7 +80,7 @@ declare function Tabs({ variant, value, defaultValue, onValueChange, children, c
64
80
 
65
81
  interface TabProps {
66
82
  value: string;
67
- icon?: ReactNode;
83
+ icon?: ReactNode | IconName;
68
84
  badge?: number | string;
69
85
  disabled?: boolean;
70
86
  children: ReactNode;
@@ -74,7 +90,7 @@ declare function Tab({ value, icon, badge, disabled, children, className, }: Tab
74
90
 
75
91
  interface ChipProps extends HTMLAttributes<HTMLDivElement> {
76
92
  variant?: "input" | "filter";
77
- icon?: ReactNode;
93
+ icon?: ReactNode | IconName;
78
94
  disabled?: boolean;
79
95
  onClose?: () => void;
80
96
  onDropdown?: () => void;
@@ -106,8 +122,8 @@ interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
106
122
  color?: BadgeColor;
107
123
  type?: BadgeType;
108
124
  size?: BadgeSize;
109
- leadingIcon?: ReactNode;
110
- trailingIcon?: ReactNode;
125
+ leadingIcon?: ReactNode | IconName;
126
+ trailingIcon?: ReactNode | IconName;
111
127
  }
112
128
  declare function Badge({ color, type, size, leadingIcon, trailingIcon, className, children, ...rest }: BadgeProps): react_jsx_runtime.JSX.Element;
113
129
 
@@ -122,7 +138,7 @@ interface AlertProps extends HTMLAttributes<HTMLDivElement> {
122
138
  state?: AlertState;
123
139
  title?: string;
124
140
  description?: string;
125
- icon?: ReactNode;
141
+ icon?: ReactNode | IconName;
126
142
  showIcon?: boolean;
127
143
  onClose?: () => void;
128
144
  primaryAction?: AlertAction;
@@ -134,9 +150,9 @@ type DividerVariant = "default" | "with-icon" | "with-label" | "with-title" | "w
134
150
  interface DividerProps extends HTMLAttributes<HTMLDivElement> {
135
151
  variant?: DividerVariant;
136
152
  label?: string;
137
- icon?: ReactNode;
153
+ icon?: ReactNode | IconName;
138
154
  buttonLabel?: string;
139
- buttonIcon?: ReactNode;
155
+ buttonIcon?: ReactNode | IconName;
140
156
  onButtonClick?: () => void;
141
157
  }
142
158
  declare function Divider({ variant, label, icon, buttonLabel, buttonIcon, onButtonClick, className, ...rest }: DividerProps): react_jsx_runtime.JSX.Element;
@@ -191,7 +207,7 @@ declare const Toggle: react.ForwardRefExoticComponent<ToggleProps & react.RefAtt
191
207
  interface BreadcrumbItem {
192
208
  label: string;
193
209
  href?: string;
194
- icon?: ReactNode;
210
+ icon?: ReactNode | IconName;
195
211
  disabled?: boolean;
196
212
  active?: boolean;
197
213
  }
@@ -201,6 +217,336 @@ interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {
201
217
  }
202
218
  declare function Breadcrumb({ items, separator, className, ...rest }: BreadcrumbProps): react_jsx_runtime.JSX.Element;
203
219
 
220
+ type AvatarType = "image" | "icon" | "initials";
221
+ type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
222
+ type AvatarStatus = "none" | "online" | "offline" | "verified";
223
+ interface AvatarProps extends HTMLAttributes<HTMLDivElement> {
224
+ /** Visual type of the avatar. @default "image" */
225
+ type?: AvatarType;
226
+ /** Size preset. @default "md" */
227
+ size?: AvatarSize;
228
+ /** Status indicator shown at bottom-right. @default "none" */
229
+ status?: AvatarStatus;
230
+ /** Image URL (for type="image"). */
231
+ src?: string;
232
+ /** Alt text (for type="image"). */
233
+ alt?: string;
234
+ /** Initials text (for type="initials"). */
235
+ initials?: string;
236
+ /** Custom icon (for type="icon"). Accepts ReactNode or IconName. @default "user" */
237
+ icon?: ReactNode | IconName;
238
+ }
239
+ declare const Avatar: react.ForwardRefExoticComponent<AvatarProps & react.RefAttributes<HTMLDivElement>>;
240
+ type AvatarGroupSize = "sm" | "md" | "lg";
241
+ interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {
242
+ /** Controls the size of avatars in the group. @default "md" */
243
+ size?: AvatarGroupSize;
244
+ /** Maximum visible avatars. Overflow shows a "+N" counter. */
245
+ max?: number;
246
+ }
247
+ declare const AvatarGroup: react.ForwardRefExoticComponent<AvatarGroupProps & react.RefAttributes<HTMLDivElement>>;
248
+
249
+ type MetricsCardVariation = "1" | "2" | "3" | "4" | "5" | "6";
250
+ type MetricsCardTrend = "up" | "down";
251
+ interface MetricsCardTrendBadge {
252
+ label: string;
253
+ trend?: MetricsCardTrend;
254
+ }
255
+ interface MetricsCardStatusBadge {
256
+ label: string;
257
+ variant?: "success" | "error" | "warning" | "info";
258
+ }
259
+ interface MetricsCardCta {
260
+ label: string;
261
+ onClick: () => void;
262
+ icon?: ReactNode | IconName;
263
+ }
264
+ interface MetricsCardProps extends HTMLAttributes<HTMLDivElement> {
265
+ /** Layout variation (1–6), each with a distinct layout */
266
+ variation?: MetricsCardVariation;
267
+ /** Metric label, e.g. "Total Solar Sales" */
268
+ label: string;
269
+ /** Main metric value, e.g. "$45,823" */
270
+ value: string | number;
271
+ /** Optional icon — renders in a bordered square (v2,3,6) or large tinted square (v4) */
272
+ icon?: ReactNode | IconName;
273
+ /** Trend badge with arrow icon, e.g. { label: "10%", trend: "up" } — used in v2–6 */
274
+ trendBadge?: MetricsCardTrendBadge;
275
+ /** Status badge, e.g. { label: "Paid", variant: "success" } — used in v1 */
276
+ statusBadge?: MetricsCardStatusBadge;
277
+ /** Description text, e.g. "Compared to last month" */
278
+ description?: string;
279
+ /** Secondary text shown on the right in v1, e.g. "Jun 12th, 2023" */
280
+ secondaryText?: string;
281
+ /** Call-to-action link */
282
+ cta?: MetricsCardCta;
283
+ }
284
+ declare function MetricsCard({ variation, className, ...props }: MetricsCardProps): react_jsx_runtime.JSX.Element;
285
+
286
+ type FileUploadItemStatus = "pending" | "uploading" | "complete" | "error";
287
+ interface FileUploadFileData {
288
+ id: string;
289
+ name: string;
290
+ size: number;
291
+ type: string;
292
+ progress?: number;
293
+ status: FileUploadItemStatus;
294
+ uploadedAt?: Date;
295
+ error?: string;
296
+ }
297
+ interface FileUploadItemProps extends HTMLAttributes<HTMLDivElement> {
298
+ file: FileUploadFileData;
299
+ onRemove?: (fileId: string) => void;
300
+ onRetry?: (fileId: string) => void;
301
+ onDownload?: (fileId: string) => void;
302
+ }
303
+ declare const FileUploadItem: react.ForwardRefExoticComponent<FileUploadItemProps & react.RefAttributes<HTMLDivElement>>;
304
+
305
+ interface FileUploadProps extends HTMLAttributes<HTMLDivElement> {
306
+ /** Allow multiple file uploads */
307
+ multiple?: boolean;
308
+ /** MIME types to accept, e.g. "image/*,.pdf" */
309
+ accept?: string;
310
+ /** Maximum file size in bytes */
311
+ maxSize?: number;
312
+ /** Maximum number of files (for multiple mode) */
313
+ maxFiles?: number;
314
+ /** Header title, e.g. "Upload Documents" */
315
+ title?: string;
316
+ /** Description shown in the drop zone */
317
+ description?: string;
318
+ /** Controlled file list */
319
+ files: FileUploadFileData[];
320
+ /** Called when files list changes */
321
+ onFilesChange: (files: FileUploadFileData[]) => void;
322
+ /** Called when new files are selected for upload */
323
+ onUpload?: (file: File) => void;
324
+ /** Called when remove/delete is clicked */
325
+ onRemove?: (fileId: string) => void;
326
+ /** Called when retry is clicked */
327
+ onRetry?: (fileId: string) => void;
328
+ /** Called when download is clicked */
329
+ onDownload?: (fileId: string) => void;
330
+ /** Show the header with title and close button */
331
+ showHeader?: boolean;
332
+ /** Close handler for the header */
333
+ onClose?: () => void;
334
+ }
335
+ declare const FileUpload: react.ForwardRefExoticComponent<FileUploadProps & react.RefAttributes<HTMLDivElement>>;
336
+
337
+ type DropZoneState = "default" | "dragging" | "uploading" | "success" | "error";
338
+ interface FileUploadDropZoneProps extends HTMLAttributes<HTMLDivElement> {
339
+ /** Current visual state */
340
+ state?: DropZoneState;
341
+ /** Description text, e.g. "SVG, PNG, JPG or GIF (max 800x400px)" */
342
+ description?: string;
343
+ /** MIME types to accept */
344
+ accept?: string;
345
+ /** Allow multiple files */
346
+ multiple?: boolean;
347
+ /** File info for uploading state */
348
+ uploadingFile?: {
349
+ name: string;
350
+ type: string;
351
+ progress: number;
352
+ };
353
+ /** Error message for error state */
354
+ errorMessage?: string;
355
+ /** Called when files are dropped or selected */
356
+ onFilesSelected?: (files: FileList) => void;
357
+ /** Called on "Clear Upload" in success state */
358
+ onClear?: () => void;
359
+ /** Called on "Try Again" in error state */
360
+ onRetry?: () => void;
361
+ }
362
+ declare const FileUploadDropZone: react.ForwardRefExoticComponent<FileUploadDropZoneProps & react.RefAttributes<HTMLDivElement>>;
363
+
364
+ type SidebarMenuTheme = "light" | "blue" | "dark-blue" | "dark-grey";
365
+ interface SidebarMenuContextValue {
366
+ activeValue: string;
367
+ onSelect: (value: string) => void;
368
+ collapsed: boolean;
369
+ theme: SidebarMenuTheme;
370
+ }
371
+ interface SidebarMenuProps extends HTMLAttributes<HTMLElement> {
372
+ /** Controlled active item value */
373
+ value?: string;
374
+ /** Uncontrolled default active item */
375
+ defaultValue?: string;
376
+ /** Called when active item changes */
377
+ onValueChange?: (value: string) => void;
378
+ /** Collapsed icon-only mode (82 px wide) */
379
+ collapsed?: boolean;
380
+ /** Color theme */
381
+ theme?: SidebarMenuTheme;
382
+ children: ReactNode;
383
+ }
384
+ declare const SidebarMenu: react.ForwardRefExoticComponent<SidebarMenuProps & react.RefAttributes<HTMLElement>>;
385
+
386
+ interface SidebarMenuSubProps {
387
+ children: ReactNode;
388
+ }
389
+ declare function SidebarMenuSub({ children }: SidebarMenuSubProps): react_jsx_runtime.JSX.Element;
390
+ declare namespace SidebarMenuSub {
391
+ var displayName: string;
392
+ }
393
+ interface SidebarMenuSubItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {
394
+ /** Unique identifier for this sub-item */
395
+ value: string;
396
+ children: ReactNode;
397
+ }
398
+ declare const SidebarMenuSubItem: react.ForwardRefExoticComponent<SidebarMenuSubItemProps & react.RefAttributes<HTMLButtonElement>>;
399
+ interface SidebarMenuItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {
400
+ /** Unique identifier for this item */
401
+ value: string;
402
+ /** Icon displayed to the left — accepts IconName string or ReactNode */
403
+ icon?: ReactNode | IconName;
404
+ /** Optional count badge displayed on the right */
405
+ badge?: string | number;
406
+ /** Disabled state */
407
+ disabled?: boolean;
408
+ children: ReactNode;
409
+ }
410
+ declare const SidebarMenuItem: react.ForwardRefExoticComponent<SidebarMenuItemProps & react.RefAttributes<HTMLButtonElement>>;
411
+
412
+ interface SidebarMenuSectionProps extends HTMLAttributes<HTMLDivElement> {
413
+ /** Optional section title, e.g. "MAIN MENU" */
414
+ title?: string;
415
+ /** Whether to show a divider below the section */
416
+ showDivider?: boolean;
417
+ children: ReactNode;
418
+ }
419
+ declare const SidebarMenuSection: react.ForwardRefExoticComponent<SidebarMenuSectionProps & react.RefAttributes<HTMLDivElement>>;
420
+
421
+ declare const illustrationNames: readonly ["calendar", "chat", "contacts", "dashboard", "favorites", "file-manager", "forms", "gallery", "inbox", "invoice", "notifications", "product-catalog", "project-list", "search", "shopping-cart", "subscriptions", "survey", "task-templates", "team"];
422
+ type IllustrationName = (typeof illustrationNames)[number];
423
+
424
+ interface EmptyStateIllustrationProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
425
+ /** Which illustration to display */
426
+ name: IllustrationName;
427
+ /** Show the colored or grey/monochrome variant (default: true) */
428
+ colored?: boolean;
429
+ /**
430
+ * Custom color palette for theming colored illustrations.
431
+ * Provide 11 hex colors (lightest → darkest) to replace the default
432
+ * primary orange palette. Ignored when `colored` is false.
433
+ */
434
+ palette?: string[];
435
+ /** Width/height in pixels (default: 150, the native SVG size) */
436
+ size?: number;
437
+ }
438
+ declare const EmptyStateIllustration: react.ForwardRefExoticComponent<EmptyStateIllustrationProps & react.RefAttributes<HTMLDivElement>>;
439
+
440
+ interface TableProps extends HTMLAttributes<HTMLTableElement> {
441
+ }
442
+ declare const Table: react.ForwardRefExoticComponent<TableProps & react.RefAttributes<HTMLTableElement>>;
443
+ interface TableHeaderProps extends HTMLAttributes<HTMLTableSectionElement> {
444
+ }
445
+ declare const TableHeader: react.ForwardRefExoticComponent<TableHeaderProps & react.RefAttributes<HTMLTableSectionElement>>;
446
+ interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {
447
+ }
448
+ declare const TableBody: react.ForwardRefExoticComponent<TableBodyProps & react.RefAttributes<HTMLTableSectionElement>>;
449
+ interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {
450
+ /** Whether this row is selected */
451
+ selected?: boolean;
452
+ }
453
+ declare const TableRow: react.ForwardRefExoticComponent<TableRowProps & react.RefAttributes<HTMLTableRowElement>>;
454
+ type SortDirection = "asc" | "desc" | null;
455
+ interface TableHeadProps extends ThHTMLAttributes<HTMLTableCellElement> {
456
+ /** Enable sort indicator and click-to-sort behavior */
457
+ sortable?: boolean;
458
+ /** Current sort direction for this column */
459
+ sortDirection?: SortDirection;
460
+ /** Called when the sort indicator is clicked */
461
+ onSort?: () => void;
462
+ }
463
+ declare const TableHead: react.ForwardRefExoticComponent<TableHeadProps & react.RefAttributes<HTMLTableCellElement>>;
464
+ interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {
465
+ }
466
+ declare const TableCell: react.ForwardRefExoticComponent<TableCellProps & react.RefAttributes<HTMLTableCellElement>>;
467
+
468
+ interface DropdownMenuProps extends HTMLAttributes<HTMLDivElement> {
469
+ /** Controlled open state */
470
+ open?: boolean;
471
+ /** Uncontrolled default open state */
472
+ defaultOpen?: boolean;
473
+ /** Called when open state changes */
474
+ onOpenChange?: (open: boolean) => void;
475
+ children: ReactNode;
476
+ }
477
+ declare const DropdownMenu: react.ForwardRefExoticComponent<DropdownMenuProps & react.RefAttributes<HTMLDivElement>>;
478
+ interface DropdownMenuTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {
479
+ }
480
+ declare const DropdownMenuTrigger: react.ForwardRefExoticComponent<DropdownMenuTriggerProps & react.RefAttributes<HTMLButtonElement>>;
481
+ interface DropdownMenuContentProps extends HTMLAttributes<HTMLDivElement> {
482
+ /** Alignment relative to trigger */
483
+ align?: "start" | "end";
484
+ /** Gap from trigger in px */
485
+ sideOffset?: number;
486
+ }
487
+ declare const DropdownMenuContent: react.ForwardRefExoticComponent<DropdownMenuContentProps & react.RefAttributes<HTMLDivElement>>;
488
+ interface DropdownMenuGroupProps extends HTMLAttributes<HTMLDivElement> {
489
+ }
490
+ declare const DropdownMenuGroup: react.ForwardRefExoticComponent<DropdownMenuGroupProps & react.RefAttributes<HTMLDivElement>>;
491
+ interface DropdownMenuLabelProps extends HTMLAttributes<HTMLDivElement> {
492
+ /** Optional description below the title */
493
+ description?: string;
494
+ }
495
+ declare const DropdownMenuLabel: react.ForwardRefExoticComponent<DropdownMenuLabelProps & react.RefAttributes<HTMLDivElement>>;
496
+ interface DropdownMenuItemProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "onSelect"> {
497
+ /** Leading icon — accepts a ReactNode or an IconName string */
498
+ icon?: ReactNode | IconName;
499
+ /** Keyboard shortcut label (e.g. "⌘C") */
500
+ shortcut?: string;
501
+ /** Whether this item is selected (shows check indicator) */
502
+ selected?: boolean;
503
+ /** Whether this item is disabled */
504
+ disabled?: boolean;
505
+ /** Called when the item is selected (click or Enter/Space) */
506
+ onSelect?: () => void;
507
+ }
508
+ declare const DropdownMenuItem: react.ForwardRefExoticComponent<DropdownMenuItemProps & react.RefAttributes<HTMLButtonElement>>;
509
+ interface DropdownMenuSeparatorProps extends HTMLAttributes<HTMLDivElement> {
510
+ }
511
+ declare const DropdownMenuSeparator: react.ForwardRefExoticComponent<DropdownMenuSeparatorProps & react.RefAttributes<HTMLDivElement>>;
512
+
513
+ interface SelectProps extends Omit<HTMLAttributes<HTMLDivElement>, "defaultValue"> {
514
+ /** Controlled value */
515
+ value?: string;
516
+ /** Uncontrolled default value */
517
+ defaultValue?: string;
518
+ /** Called when value changes */
519
+ onValueChange?: (value: string) => void;
520
+ /** Placeholder text when no value is selected */
521
+ placeholder?: string;
522
+ /** Label text above the select */
523
+ label?: string;
524
+ /** Helper text below the select */
525
+ helperText?: string;
526
+ /** Whether the select is disabled */
527
+ disabled?: boolean;
528
+ /** Wrapper className for the outermost div */
529
+ wrapperClassName?: string;
530
+ children: ReactNode;
531
+ }
532
+ declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLDivElement>>;
533
+
534
+ interface SelectOptionProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
535
+ /** Unique value for this option */
536
+ value: string;
537
+ /** Leading icon — accepts a ReactNode or IconName string */
538
+ icon?: ReactNode | IconName;
539
+ /** Leading avatar element (e.g., <Avatar />) */
540
+ avatar?: ReactNode;
541
+ /** Status dot color (CSS color string, e.g., "#04802E") */
542
+ statusColor?: string;
543
+ /** Supporting text shown after the label */
544
+ description?: string;
545
+ /** Whether this option is disabled */
546
+ disabled?: boolean;
547
+ }
548
+ declare const SelectOption: react.ForwardRefExoticComponent<SelectOptionProps & react.RefAttributes<HTMLButtonElement>>;
549
+
204
550
  declare function cn(...inputs: ClassValue[]): string;
205
551
 
206
- export { Alert, type AlertAction, type AlertProps, type AlertState, type AlertVariant, Badge, type BadgeColor, type BadgeProps, type BadgeSize, type BadgeType, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonAppearance, ButtonGroup, ButtonGroupItem, type ButtonGroupItemProps, type ButtonGroupProps, type ButtonProps, type ButtonSize, type ButtonVariant, Checkbox, type CheckboxProps, Chip, type ChipProps, Divider, type DividerProps, type DividerVariant, Input, type InputProps, type InputSize, Pagination, type PaginationProps, ProgressBar, type ProgressBarProps, type ProgressBarSize, ProgressCircle, type ProgressCircleProps, type ProgressCircleSize, Radio, type RadioProps, Tab, type TabProps, Tabs, type TabsProps, type TabsVariant, Toggle, type ToggleProps, Tooltip, type TooltipAction, type TooltipPosition, type TooltipProps, type TooltipTheme, cn };
552
+ export { Alert, type AlertAction, type AlertProps, type AlertState, type AlertVariant, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarGroupSize, type AvatarProps, type AvatarSize, type AvatarStatus, type AvatarType, Badge, type BadgeColor, type BadgeProps, type BadgeSize, type BadgeType, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonAppearance, ButtonGroup, ButtonGroupItem, type ButtonGroupItemProps, type ButtonGroupProps, type ButtonProps, type ButtonSize, type ButtonVariant, Checkbox, type CheckboxProps, Chip, type ChipProps, Divider, type DividerProps, type DividerVariant, type DropZoneState, DropdownMenu, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, type DropdownMenuGroupProps, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, type DropdownMenuProps, DropdownMenuSeparator, type DropdownMenuSeparatorProps, DropdownMenuTrigger, type DropdownMenuTriggerProps, EmptyStateIllustration, type EmptyStateIllustrationProps, FileUpload, FileUploadDropZone, type FileUploadDropZoneProps, type FileUploadFileData, FileUploadItem, type FileUploadItemProps, type FileUploadItemStatus, type FileUploadProps, Icon, type IconName, type IconProps, type IconSize, type IconVariant, type IllustrationName, Input, type InputProps, type InputSize, MetricsCard, type MetricsCardCta, type MetricsCardProps, type MetricsCardStatusBadge, type MetricsCardTrend, type MetricsCardTrendBadge, type MetricsCardVariation, Pagination, type PaginationProps, ProgressBar, type ProgressBarProps, type ProgressBarSize, ProgressCircle, type ProgressCircleProps, type ProgressCircleSize, Radio, type RadioProps, Select, SelectOption, type SelectOptionProps, type SelectProps, SidebarMenu, type SidebarMenuContextValue, SidebarMenuItem, type SidebarMenuItemProps, type SidebarMenuProps, SidebarMenuSection, type SidebarMenuSectionProps, SidebarMenuSub, SidebarMenuSubItem, type SidebarMenuSubItemProps, type SidebarMenuSubProps, type SidebarMenuTheme, type SortDirection, Tab, type TabProps, Table, TableBody, type TableBodyProps, TableCell, type TableCellProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type TabsVariant, Toggle, type ToggleProps, Tooltip, type TooltipAction, type TooltipPosition, type TooltipProps, type TooltipTheme, cn, illustrationNames };