indas-ui 0.0.1

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.
@@ -0,0 +1,3173 @@
1
+ import * as React$1 from 'react';
2
+ import React__default, { ReactNode } from 'react';
3
+ import { LucideIcon } from 'lucide-react';
4
+ import * as react_jsx_runtime from 'react/jsx-runtime';
5
+ import * as class_variance_authority_types from 'class-variance-authority/types';
6
+ import { VariantProps } from 'class-variance-authority';
7
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
8
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
9
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
10
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
11
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
12
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
13
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
14
+ import { ColumnDef, Row, ColumnFiltersState, Column, Table, SortingState, Header, Cell, VisibilityState, ExpandedState } from '@tanstack/react-table';
15
+ import * as _tanstack_table_core from '@tanstack/table-core';
16
+ import { Session } from 'next-auth';
17
+ import { ClassValue } from 'clsx';
18
+
19
+ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
20
+ variant?: 'primary' | 'secondary' | 'tertiary' | 'outline' | 'ghost' | 'destructive' | 'footer-primary' | 'footer-secondary' | 'action-create' | 'action-save' | 'action-save-as' | 'action-edit' | 'action-delete' | 'action-print' | 'action-send' | 'action-mail' | 'action-download' | 'action-refresh' | 'action-cancel' | 'action-secondary' | 'action-apply' | 'action-back';
21
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'footer';
22
+ loading?: boolean;
23
+ icon?: LucideIcon | React$1.ReactNode;
24
+ iconPosition?: 'left' | 'right';
25
+ /** When true, renders as circular icon-only button (36px × 36px) */
26
+ iconOnly?: boolean;
27
+ /** Tooltip text for icon-only buttons */
28
+ tooltip?: string;
29
+ /** When true, renders as inline button on desktop + floating action button on mobile (bottom-right, above bottom nav) */
30
+ fab?: boolean;
31
+ }
32
+ declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
33
+ /**
34
+ * CheckboxButton - Toggle button with checkbox-style UI
35
+ * Styled like "Set First Plan as Master"
36
+ */
37
+ interface CheckboxButtonProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {
38
+ checked?: boolean;
39
+ onChange?: (checked: boolean) => void;
40
+ label: string;
41
+ size?: 'xs' | 'sm' | 'md';
42
+ }
43
+ declare const CheckboxButton: React$1.ForwardRefExoticComponent<CheckboxButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
44
+ /**
45
+ * InputButton - Inline input with label in bordered container
46
+ * Styled like "Show Wastage upto: 30%"
47
+ */
48
+ interface InputButtonProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, 'size'> {
49
+ label: string;
50
+ size?: 'sm' | 'md';
51
+ inputClassName?: string;
52
+ suffix?: string;
53
+ /** Show inline minus/plus stepper buttons around the input. */
54
+ stepper?: boolean;
55
+ /** Called when stepper buttons are clicked. Receives 'inc' or 'dec'.
56
+ * Use this to advance to the next valid value (e.g. skip 4 → 5). */
57
+ onStep?: (direction: 'inc' | 'dec') => void;
58
+ /** Optional gate for disabling the stepper buttons (e.g. at min/max). */
59
+ canStep?: (direction: 'inc' | 'dec') => boolean;
60
+ }
61
+ declare const InputButton: React$1.ForwardRefExoticComponent<InputButtonProps & React$1.RefAttributes<HTMLInputElement>>;
62
+
63
+ interface InputProps extends React$1.InputHTMLAttributes<HTMLInputElement> {
64
+ label?: React$1.ReactNode;
65
+ error?: string | boolean;
66
+ helper?: string;
67
+ leftIcon?: LucideIcon;
68
+ rightIcon?: LucideIcon;
69
+ onRightIconClick?: () => void;
70
+ selectOnFocus?: boolean;
71
+ position?: 'first' | 'middle' | 'last' | 'only';
72
+ compact?: boolean;
73
+ trackEdits?: boolean;
74
+ originalValue?: string | number;
75
+ isEdited?: boolean;
76
+ }
77
+ declare const Input: React$1.ForwardRefExoticComponent<InputProps & React$1.RefAttributes<HTMLInputElement>>;
78
+
79
+ interface CheckboxProps extends React__default.InputHTMLAttributes<HTMLInputElement> {
80
+ label?: string;
81
+ indeterminate?: boolean;
82
+ }
83
+ declare const Checkbox: React__default.FC<CheckboxProps>;
84
+
85
+ interface LabelProps extends React__default.LabelHTMLAttributes<HTMLLabelElement> {
86
+ children: React__default.ReactNode;
87
+ }
88
+ declare const Label: React__default.FC<LabelProps>;
89
+
90
+ interface TextareaProps extends React$1.TextareaHTMLAttributes<HTMLTextAreaElement> {
91
+ label?: string;
92
+ error?: string;
93
+ helper?: string;
94
+ }
95
+ declare const Textarea: React$1.ForwardRefExoticComponent<TextareaProps & React$1.RefAttributes<HTMLTextAreaElement>>;
96
+
97
+ interface SwitchProps {
98
+ checked?: boolean;
99
+ defaultChecked?: boolean;
100
+ onCheckedChange?: (checked: boolean) => void;
101
+ disabled?: boolean;
102
+ className?: string;
103
+ }
104
+ declare const Switch: React$1.ForwardRefExoticComponent<SwitchProps & React$1.RefAttributes<HTMLButtonElement>>;
105
+
106
+ interface DropdownOption {
107
+ value: string | number;
108
+ label: string;
109
+ disabled?: boolean;
110
+ description?: string;
111
+ key?: string;
112
+ image?: string;
113
+ }
114
+ interface DropdownProps {
115
+ options: DropdownOption[];
116
+ value?: string | number | string[];
117
+ placeholder?: string;
118
+ onValueChange: (value: string | number | string[]) => void;
119
+ onOpen?: () => void;
120
+ disabled?: boolean;
121
+ loading?: boolean;
122
+ searchable?: boolean;
123
+ clearable?: boolean;
124
+ className?: string;
125
+ error?: boolean | string;
126
+ label?: React.ReactNode;
127
+ labelExtra?: React.ReactNode;
128
+ required?: boolean;
129
+ emptyMessage?: string;
130
+ triggerClassName?: string;
131
+ autoWidth?: boolean;
132
+ customFooter?: React.ReactNode;
133
+ multiSelect?: boolean;
134
+ maxSelections?: number;
135
+ showSelectedCount?: boolean;
136
+ showAsTags?: boolean;
137
+ allowTextInput?: boolean;
138
+ onCreateOption?: (inputValue: string) => DropdownOption | Promise<DropdownOption>;
139
+ createOptionLabel?: string;
140
+ allowCustomValues?: boolean;
141
+ allowCustomInput?: boolean;
142
+ trackEdits?: boolean;
143
+ originalValue?: string | number | string[];
144
+ isEdited?: boolean;
145
+ variant?: 'default' | 'compact' | 'detailed';
146
+ size?: 'sm' | 'md' | 'lg';
147
+ contentClassName?: string;
148
+ /** Header title for select all section */
149
+ selectAllLabel?: string;
150
+ /** Show "ONLY" button on hover (like OTIF) */
151
+ showOnlyButton?: boolean;
152
+ /** Custom trigger element - replaces default trigger button */
153
+ customTrigger?: React.ReactNode;
154
+ }
155
+
156
+ declare function Dropdown({ options, value, placeholder, onValueChange, onOpen, disabled, loading, searchable, clearable, className, error, label, labelExtra, required, emptyMessage, triggerClassName, autoWidth, customFooter, multiSelect, maxSelections, showSelectedCount, showAsTags, allowTextInput, onCreateOption, createOptionLabel, allowCustomValues, allowCustomInput, variant, size, contentClassName, selectAllLabel, showOnlyButton, customTrigger }: DropdownProps): react_jsx_runtime.JSX.Element;
157
+
158
+ type CurrencyCode = string;
159
+ interface CurrencyInfo {
160
+ code: string;
161
+ name: string;
162
+ symbol: string;
163
+ flag: string;
164
+ decimal: number;
165
+ }
166
+ interface ExchangeRates {
167
+ [key: string]: number;
168
+ }
169
+ interface CurrencyContextType {
170
+ selectedCurrency: CurrencyCode;
171
+ baseCurrency: CurrencyCode;
172
+ exchangeRates: ExchangeRates;
173
+ availableCurrencies: CurrencyInfo[];
174
+ isLoading: boolean;
175
+ lastUpdated: Date | null;
176
+ error: string | null;
177
+ setCurrency: (currency: CurrencyCode) => void;
178
+ refreshRates: () => Promise<void>;
179
+ convertAmount: (amount: number, from?: CurrencyCode, to?: CurrencyCode) => number;
180
+ formatCurrency: (amount: number, currency?: CurrencyCode, options?: {
181
+ showSymbol?: boolean;
182
+ locale?: string;
183
+ compact?: boolean;
184
+ precision?: number;
185
+ }) => string;
186
+ parseCurrencyInput: (input: string, currency?: CurrencyCode) => number | null;
187
+ getCurrencyInfo: (currency: CurrencyCode) => CurrencyInfo | null;
188
+ getAllCurrencies: () => CurrencyInfo[];
189
+ setManualRate: (from: CurrencyCode, to: CurrencyCode, rate: number) => void;
190
+ removeManualRate: (from: CurrencyCode, to: CurrencyCode) => void;
191
+ isManualRate: (from: CurrencyCode, to: CurrencyCode) => boolean;
192
+ }
193
+ declare function CurrencyProvider({ children, baseCurrencyCode }: {
194
+ children: React__default.ReactNode;
195
+ baseCurrencyCode?: string;
196
+ }): react_jsx_runtime.JSX.Element;
197
+ declare function useCurrency(): CurrencyContextType;
198
+
199
+ interface UnifiedCurrencyDropdownProps {
200
+ value?: CurrencyCode;
201
+ onValueChange?: (currency: CurrencyCode) => void;
202
+ amount?: number;
203
+ onAmountChange?: (amount: number) => void;
204
+ showRates?: boolean;
205
+ showConverter?: boolean;
206
+ allowManualRates?: boolean;
207
+ className?: string;
208
+ label?: string;
209
+ placeholder?: string;
210
+ disabled?: boolean;
211
+ required?: boolean;
212
+ size?: 'sm' | 'md' | 'lg';
213
+ variant?: 'default' | 'compact' | 'detailed';
214
+ validation?: {
215
+ min?: number;
216
+ max?: number;
217
+ required?: boolean;
218
+ customValidator?: (value: CurrencyCode) => string | null;
219
+ };
220
+ error?: string;
221
+ }
222
+ declare function UnifiedCurrencyDropdown({ value, onValueChange, amount, onAmountChange, showRates, showConverter, allowManualRates, className, label, placeholder, disabled, required, size, variant, validation, error }: UnifiedCurrencyDropdownProps): react_jsx_runtime.JSX.Element;
223
+
224
+ interface DateRange {
225
+ from?: Date;
226
+ to?: Date;
227
+ }
228
+ interface DatePickerProps {
229
+ value?: Date | DateRange | string;
230
+ onChange?: (date: Date | DateRange | string | undefined) => void;
231
+ mode?: 'single' | 'range';
232
+ placeholder?: string;
233
+ label?: string;
234
+ error?: string;
235
+ disabled?: boolean;
236
+ minDate?: Date;
237
+ maxDate?: Date;
238
+ className?: string;
239
+ showTime?: boolean;
240
+ showFromTo?: boolean;
241
+ returnFormat?: 'date' | 'string';
242
+ /** Show calendar inline without trigger/popover */
243
+ inline?: boolean;
244
+ /** Render just a calendar icon button as the trigger (for use inside search bars) */
245
+ iconOnly?: boolean;
246
+ /** Alignment of the popover relative to the trigger */
247
+ popoverAlign?: 'start' | 'center' | 'end';
248
+ presets?: Array<{
249
+ label: string;
250
+ value: Date | DateRange;
251
+ }>;
252
+ }
253
+ declare function DatePicker({ value, onChange, mode, placeholder, label, error, disabled, minDate, maxDate, className, showTime, showFromTo, returnFormat, inline, iconOnly, popoverAlign, presets }: DatePickerProps): react_jsx_runtime.JSX.Element;
254
+
255
+ interface DateTimePickerProps {
256
+ value?: Date | string;
257
+ onChange?: (date: Date | string | undefined) => void;
258
+ placeholder?: string;
259
+ label?: string;
260
+ error?: string;
261
+ disabled?: boolean;
262
+ minDate?: Date;
263
+ maxDate?: Date;
264
+ className?: string;
265
+ returnFormat?: 'date' | 'string';
266
+ timeFormat?: '12h' | '24h';
267
+ }
268
+ declare function DateTimePicker({ value, onChange, placeholder, label, error, disabled, minDate, maxDate, className, returnFormat, timeFormat }: DateTimePickerProps): react_jsx_runtime.JSX.Element;
269
+
270
+ interface AttachedFile {
271
+ id: string;
272
+ name: string;
273
+ size: number;
274
+ type: string;
275
+ url?: string;
276
+ file?: File;
277
+ }
278
+ interface FileAttachmentProps {
279
+ value?: AttachedFile[];
280
+ onChange?: (files: AttachedFile[]) => void;
281
+ maxFiles?: number;
282
+ maxFileSize?: number;
283
+ acceptedFileTypes?: string[];
284
+ label?: string;
285
+ className?: string;
286
+ disabled?: boolean;
287
+ showInlinePreview?: boolean;
288
+ previewShape?: 'circular' | 'rectangular';
289
+ previewSize?: 'sm' | 'md' | 'lg';
290
+ hideInstructions?: boolean;
291
+ enableEmailImport?: boolean;
292
+ }
293
+ declare function FileAttachment({ value, onChange, maxFiles, maxFileSize, // 10MB
294
+ acceptedFileTypes, label, className, disabled, showInlinePreview, previewShape, previewSize, hideInstructions, enableEmailImport }: FileAttachmentProps): react_jsx_runtime.JSX.Element;
295
+
296
+ interface CardProps extends React__default.HTMLAttributes<HTMLDivElement> {
297
+ children: React__default.ReactNode;
298
+ }
299
+ declare const Card: React__default.FC<CardProps>;
300
+ declare const CardHeader: React__default.FC<CardProps>;
301
+ declare const CardTitle: React__default.FC<CardProps>;
302
+ declare const CardDescription: React__default.FC<CardProps>;
303
+ declare const CardContent: React__default.FC<CardProps>;
304
+ declare const CardFooter: React__default.FC<CardProps>;
305
+
306
+ interface StatsCardProps {
307
+ title: string;
308
+ value: string | number;
309
+ icon?: LucideIcon;
310
+ trend?: {
311
+ value: number;
312
+ direction: 'up' | 'down';
313
+ label?: string;
314
+ };
315
+ description?: string;
316
+ className?: string;
317
+ variant?: 'default' | 'accent' | 'warning' | 'error';
318
+ }
319
+ declare function StatsCard({ title, value, icon: Icon, trend, description, className, variant }: StatsCardProps): react_jsx_runtime.JSX.Element;
320
+ interface StatsGridProps {
321
+ children: React$1.ReactNode;
322
+ columns?: 1 | 2 | 3 | 4;
323
+ className?: string;
324
+ }
325
+ declare function StatsGrid({ children, columns, className }: StatsGridProps): react_jsx_runtime.JSX.Element;
326
+
327
+ declare const textVariants: (props?: {
328
+ variant?: "primary" | "secondary" | "destructive" | "warning" | "success" | "link" | "default" | "muted" | "link-hover";
329
+ size?: "xs" | "sm" | "lg" | "base" | "xl" | "2xl" | "3xl" | "4xl";
330
+ weight?: "bold" | "normal" | "medium" | "semibold";
331
+ align?: "left" | "right" | "center" | "justify";
332
+ } & class_variance_authority_types.ClassProp) => string;
333
+ interface TextProps extends React$1.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof textVariants> {
334
+ as?: 'span' | 'p' | 'div' | 'label' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
335
+ truncate?: boolean;
336
+ }
337
+ declare const Text: React$1.ForwardRefExoticComponent<TextProps & React$1.RefAttributes<HTMLElement>>;
338
+
339
+ declare const Separator: React$1.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
340
+
341
+ declare const Collapsible: React$1.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleProps & React$1.RefAttributes<HTMLDivElement>>;
342
+ declare const CollapsibleTrigger: React$1.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
343
+ declare const CollapsibleContent: React$1.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleContentProps & React$1.RefAttributes<HTMLDivElement>>;
344
+
345
+ interface FormToggleProps {
346
+ /** Whether the form section is expanded */
347
+ isExpanded: boolean;
348
+ /** Callback when toggle state changes */
349
+ onToggle: (expanded: boolean) => void;
350
+ /** Title to display in the header */
351
+ title?: string;
352
+ /** Title when creating new record */
353
+ createTitle?: string;
354
+ /** Title when editing existing record */
355
+ editTitle?: string;
356
+ /** Whether currently editing a record */
357
+ isEditing?: boolean;
358
+ /** Form content to display when expanded */
359
+ children: React__default.ReactNode;
360
+ /** Additional actions to show in header (right side) */
361
+ headerActions?: React__default.ReactNode;
362
+ /** Show "New" button when collapsed */
363
+ showNewButton?: boolean;
364
+ /** Custom "New" button text */
365
+ newButtonText?: string;
366
+ /** Custom class for the container */
367
+ className?: string;
368
+ /** Custom class for the content area */
369
+ contentClassName?: string;
370
+ /** Disable the toggle */
371
+ disabled?: boolean;
372
+ /** Show close button when expanded */
373
+ showCloseButton?: boolean;
374
+ /** Callback when close button is clicked (optional - defaults to just toggling) */
375
+ onClose?: () => void;
376
+ }
377
+ /**
378
+ * Reusable form toggle component for master modules
379
+ *
380
+ * Features:
381
+ * - Smooth expand/collapse animation
382
+ * - "New" button when collapsed
383
+ * - Customizable titles for create/edit modes
384
+ * - Header actions support
385
+ * - Fully themed with CSS variables
386
+ *
387
+ * @example
388
+ * ```tsx
389
+ * <FormToggle
390
+ * isExpanded={isFormExpanded}
391
+ * onToggle={setIsFormExpanded}
392
+ * createTitle="Create New Company"
393
+ * editTitle="Edit Company"
394
+ * isEditing={!!editingCompany}
395
+ * >
396
+ * <form>...</form>
397
+ * </FormToggle>
398
+ * ```
399
+ */
400
+ declare function FormToggle({ isExpanded, onToggle, title, createTitle, editTitle, isEditing, children, headerActions, showNewButton, newButtonText, className, contentClassName, disabled, showCloseButton, onClose }: FormToggleProps): react_jsx_runtime.JSX.Element;
401
+
402
+ declare const badgeVariants: (props?: {
403
+ variant?: "secondary" | "outline" | "destructive" | "warning" | "success" | "orange" | "cyan" | "indigo" | "lime" | "pink" | "purple" | "teal" | "violet" | "default" | "department" | "module" | "danger" | "info" | "amber" | "emerald" | "sky" | "rose" | "primary-selected" | "warning-selected" | "success-selected" | "orange-selected" | "error-selected" | "primary-unselected" | "warning-unselected" | "success-unselected" | "orange-unselected" | "error-unselected";
404
+ size?: "sm" | "lg" | "default";
405
+ } & class_variance_authority_types.ClassProp) => string;
406
+ interface BadgeProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
407
+ }
408
+ declare function Badge({ className, variant, size, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
409
+ declare namespace Badge {
410
+ var displayName: string;
411
+ }
412
+ /**
413
+ * FilterBadge - Clickable badge for status filters
414
+ * Responsive: smaller on mobile, full text on desktop
415
+ */
416
+ type FilterBadgeVariant = 'primary' | 'warning' | 'success' | 'orange' | 'error';
417
+ interface FilterBadgeProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
418
+ label: string;
419
+ shortLabel?: string;
420
+ count: number;
421
+ variant: FilterBadgeVariant;
422
+ selected?: boolean;
423
+ }
424
+ declare function FilterBadge({ label, shortLabel, count, variant, selected, className, ...props }: FilterBadgeProps): react_jsx_runtime.JSX.Element;
425
+ declare namespace FilterBadge {
426
+ var displayName: string;
427
+ }
428
+ /**
429
+ * FilterBadgeGroup - Badges on desktop, compact dropdown on mobile
430
+ */
431
+ interface FilterBadgeItem {
432
+ id: string;
433
+ label: string;
434
+ shortLabel?: string;
435
+ count: number;
436
+ variant: FilterBadgeVariant;
437
+ }
438
+ interface FilterBadgeGroupProps {
439
+ items: FilterBadgeItem[];
440
+ selected: string;
441
+ onSelect: (id: string) => void;
442
+ className?: string;
443
+ }
444
+ declare function FilterBadgeGroup({ items, selected, onSelect, className }: FilterBadgeGroupProps): react_jsx_runtime.JSX.Element;
445
+ declare namespace FilterBadgeGroup {
446
+ var displayName: string;
447
+ }
448
+
449
+ interface BooleanBadgeProps {
450
+ value: boolean;
451
+ variant?: 'success' | 'info' | 'primary';
452
+ className?: string;
453
+ }
454
+ declare const BooleanBadge: React__default.ForwardRefExoticComponent<BooleanBadgeProps & React__default.RefAttributes<HTMLSpanElement>>;
455
+
456
+ declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: {
457
+ variant?: "destructive" | "default";
458
+ } & class_variance_authority_types.ClassProp) => string> & React$1.RefAttributes<HTMLDivElement>>;
459
+ declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
460
+ declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
461
+
462
+ declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressPrimitive.ProgressProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
463
+
464
+ declare const TooltipProvider: React$1.FC<TooltipPrimitive.TooltipProviderProps>;
465
+ declare const Tooltip: React$1.FC<TooltipPrimitive.TooltipProps>;
466
+ declare const TooltipTrigger: React$1.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
467
+ declare const TooltipContent: React$1.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
468
+ interface TooltipDetailedProps extends React$1.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {
469
+ title?: string;
470
+ actions?: Array<{
471
+ label: string;
472
+ shortcut?: string;
473
+ }>;
474
+ }
475
+ declare const TooltipDetailed: React$1.ForwardRefExoticComponent<TooltipDetailedProps & React$1.RefAttributes<HTMLDivElement>>;
476
+
477
+ interface SkeletonProps extends React__default.HTMLAttributes<HTMLDivElement> {
478
+ /**
479
+ * Width of the skeleton (can be CSS value like '100%', '200px', etc.)
480
+ */
481
+ width?: string | number;
482
+ /**
483
+ * Height of the skeleton (can be CSS value like '40px', '2rem', etc.)
484
+ */
485
+ height?: string | number;
486
+ /**
487
+ * Border radius variant
488
+ */
489
+ variant?: 'default' | 'rounded' | 'circular';
490
+ /**
491
+ * Animation type
492
+ */
493
+ animation?: 'pulse' | 'wave' | 'none';
494
+ }
495
+ /**
496
+ * Skeleton component for loading states
497
+ * Provides visual placeholder while content is loading
498
+ *
499
+ * @example
500
+ * // Basic usage
501
+ * <Skeleton width="100%" height="40px" />
502
+ *
503
+ * // Circular avatar skeleton
504
+ * <Skeleton width="48px" height="48px" variant="circular" />
505
+ *
506
+ * // Multiple skeletons for form fields
507
+ * <div className="space-y-3">
508
+ * <Skeleton width="100%" height="40px" />
509
+ * <Skeleton width="100%" height="40px" />
510
+ * <Skeleton width="60%" height="40px" />
511
+ * </div>
512
+ */
513
+ declare function Skeleton({ width, height, variant, animation, className, style, ...props }: SkeletonProps): react_jsx_runtime.JSX.Element;
514
+ /**
515
+ * Skeleton for text lines
516
+ */
517
+ declare function SkeletonText({ lines, className }: {
518
+ lines?: number;
519
+ className?: string;
520
+ }): react_jsx_runtime.JSX.Element;
521
+ /**
522
+ * Skeleton for form fields (matching your modal layout)
523
+ */
524
+ declare function SkeletonFormFields({ count, columns }: {
525
+ count?: number;
526
+ columns?: number;
527
+ }): react_jsx_runtime.JSX.Element;
528
+
529
+ interface SkeletonTableProps {
530
+ rows?: number;
531
+ columns?: number;
532
+ }
533
+ /**
534
+ * Skeleton loading state for DataGrid tables
535
+ * Shows animated placeholder rows while data is loading
536
+ *
537
+ * @example
538
+ * {loading ? (
539
+ * <SkeletonTable rows={10} columns={6} />
540
+ * ) : (
541
+ * <DataGrid data={data} columns={columns} />
542
+ * )}
543
+ */
544
+ declare function SkeletonTable({ rows, columns }: SkeletonTableProps): react_jsx_runtime.JSX.Element;
545
+
546
+ declare const modalSizes: {
547
+ sm: string;
548
+ md: string;
549
+ lg: string;
550
+ xl: string;
551
+ master: string;
552
+ fullscreen: string;
553
+ };
554
+ /**
555
+ * Modal wrapper — intercepts the device back button in standalone PWA mode.
556
+ * When a modal opens, a history entry is pushed. Pressing the device back
557
+ * button fires `popstate` which closes the modal instead of navigating away.
558
+ */
559
+ declare function Modal({ open, onOpenChange, ...props }: DialogPrimitive.DialogProps): react_jsx_runtime.JSX.Element;
560
+ /**
561
+ * ADAPTIVE TRIGGER
562
+ *
563
+ * On desktop: opens the modal dialog as normal.
564
+ * On mobile + mobilePageUrl: navigates to a dedicated page instead,
565
+ * so users get native back-button support and full-screen real estate.
566
+ */
567
+ declare const ModalTrigger: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & {
568
+ mobilePageUrl?: string;
569
+ onMobileNavigate?: (url: string) => void;
570
+ mobileBreakpoint?: number;
571
+ } & React$1.RefAttributes<HTMLButtonElement>>;
572
+ declare const ModalPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
573
+ declare const ModalClose: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
574
+ declare const ModalOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
575
+ /**
576
+ * ADAPTIVE MODAL CONTENT
577
+ *
578
+ * Desktop: standard Radix dialog overlay (unchanged)
579
+ * Mobile: renders as a full-screen page with a back-arrow header.
580
+ * No Radix overlay/portal — just a fixed div on top of everything.
581
+ * ModalHeader/ModalTitle inside become the page header automatically.
582
+ */
583
+ declare const ModalContent: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
584
+ hideCloseButton?: boolean;
585
+ disableOutsideClick?: boolean;
586
+ size?: keyof typeof modalSizes;
587
+ } & React$1.RefAttributes<HTMLDivElement>>;
588
+ /**
589
+ * ADAPTIVE HEADER
590
+ *
591
+ * Desktop: renders as normal header div
592
+ * Mobile page mode: renders as a sticky top bar with a back arrow (ChevronLeft)
593
+ * that closes the modal, plus the title inline
594
+ */
595
+ declare const ModalHeader: {
596
+ ({ className, children, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
597
+ displayName: string;
598
+ };
599
+ declare const ModalFooter: {
600
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
601
+ displayName: string;
602
+ };
603
+ declare const ModalTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
604
+ declare const ModalDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
605
+ declare const Dialog: typeof Modal;
606
+ declare const DialogTrigger: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & {
607
+ mobilePageUrl?: string;
608
+ onMobileNavigate?: (url: string) => void;
609
+ mobileBreakpoint?: number;
610
+ } & React$1.RefAttributes<HTMLButtonElement>>;
611
+ declare const DialogPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
612
+ declare const DialogClose: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
613
+ declare const DialogOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
614
+ declare const DialogContent: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
615
+ hideCloseButton?: boolean;
616
+ disableOutsideClick?: boolean;
617
+ size?: keyof typeof modalSizes;
618
+ } & React$1.RefAttributes<HTMLDivElement>>;
619
+ declare const DialogHeader: {
620
+ ({ className, children, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
621
+ displayName: string;
622
+ };
623
+ declare const DialogFooter: {
624
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
625
+ displayName: string;
626
+ };
627
+ declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
628
+ declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
629
+
630
+ type AlertType = 'success' | 'error' | 'warning' | 'info' | 'confirmation' | 'critical' | 'loading';
631
+ interface AlertAction {
632
+ label: string;
633
+ onClick: () => void;
634
+ variant?: 'primary' | 'secondary';
635
+ disabled?: boolean;
636
+ }
637
+ interface ModalAlertProps {
638
+ open: boolean;
639
+ onOpenChange: (open: boolean) => void;
640
+ type: AlertType;
641
+ title: string;
642
+ description: string;
643
+ actions?: AlertAction[];
644
+ showCloseButton?: boolean;
645
+ autoClose?: number;
646
+ preventClose?: boolean;
647
+ className?: string;
648
+ 'aria-labelledby'?: string;
649
+ 'aria-describedby'?: string;
650
+ }
651
+ declare function ModalAlert({ open, onOpenChange, type, title, description, actions, showCloseButton, autoClose, preventClose, className, 'aria-labelledby': ariaLabelledby, 'aria-describedby': ariaDescribedby, ...props }: ModalAlertProps): react_jsx_runtime.JSX.Element;
652
+ declare function useModalAlert(): {
653
+ alert: {
654
+ open: boolean;
655
+ type: AlertType;
656
+ title: string;
657
+ description: string;
658
+ actions?: AlertAction[];
659
+ autoClose?: number;
660
+ };
661
+ showAlert: (params: Omit<{
662
+ open: boolean;
663
+ type: AlertType;
664
+ title: string;
665
+ description: string;
666
+ actions?: AlertAction[];
667
+ autoClose?: number;
668
+ }, "open">) => void;
669
+ hideAlert: () => void;
670
+ showSuccess: (title: string, description: string, autoClose?: number) => void;
671
+ showError: (title: string, description: string) => void;
672
+ showWarning: (title: string, description: string, actions?: AlertAction[]) => void;
673
+ showInfo: (title: string, description: string, autoClose?: number) => void;
674
+ showConfirmation: (title: string, description: string, onConfirm: () => void, onCancel?: () => void) => void;
675
+ showLoading: (title: string, description: string) => void;
676
+ AlertComponent: () => react_jsx_runtime.JSX.Element;
677
+ };
678
+
679
+ declare const TabsRoot: React$1.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>>;
680
+ declare const TabsList: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
681
+ declare const TabsTrigger: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
682
+ declare const TabsContent: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
683
+ interface TabItem {
684
+ id: string;
685
+ label: string;
686
+ icon?: LucideIcon;
687
+ /** Dropdown options for this tab (for time filter style) */
688
+ dropdownOptions?: Array<{
689
+ value: string;
690
+ label: string;
691
+ }>;
692
+ }
693
+ interface TabsProps {
694
+ tabs: TabItem[];
695
+ activeTab: string;
696
+ onTabChange: (tabId: string) => void;
697
+ fullWidth?: boolean;
698
+ className?: string;
699
+ /** Visual variant: 'pill' (default) or 'rounded' (square corners) */
700
+ variant?: 'pill' | 'rounded';
701
+ /** Size variant */
702
+ size?: 'sm' | 'md';
703
+ /** For dropdown mode: currently selected values per tab */
704
+ dropdownValues?: Record<string, string[]>;
705
+ /** For dropdown mode: callback when dropdown selection changes */
706
+ onDropdownChange?: (tabId: string, selectedValues: string[]) => void;
707
+ }
708
+ declare function Tabs({ tabs, activeTab, onTabChange, fullWidth, className, variant, size, dropdownValues, onDropdownChange }: TabsProps): react_jsx_runtime.JSX.Element;
709
+
710
+ interface HeaderStepItem {
711
+ id: number;
712
+ label: string;
713
+ subtitle?: string;
714
+ icon?: LucideIcon;
715
+ }
716
+ interface HeaderStepsProps {
717
+ steps: HeaderStepItem[];
718
+ currentStep: number;
719
+ onStepClick?: (stepId: number) => void;
720
+ className?: string;
721
+ }
722
+ declare function HeaderSteps({ steps, currentStep, onStepClick, className }: HeaderStepsProps): react_jsx_runtime.JSX.Element;
723
+
724
+ declare const DropdownMenu: React$1.FC<DropdownMenuPrimitive.DropdownMenuProps>;
725
+ declare const DropdownMenuTrigger: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
726
+ declare const DropdownMenuGroup: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React$1.RefAttributes<HTMLDivElement>>;
727
+ declare const DropdownMenuPortal: React$1.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
728
+ declare const DropdownMenuSub: React$1.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
729
+ declare const DropdownMenuRadioGroup: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React$1.RefAttributes<HTMLDivElement>>;
730
+ declare const DropdownMenuSubTrigger: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
731
+ inset?: boolean;
732
+ } & React$1.RefAttributes<HTMLDivElement>>;
733
+ declare const DropdownMenuSubContent: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
734
+ declare const DropdownMenuContent: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
735
+ declare const DropdownMenuItem: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
736
+ inset?: boolean;
737
+ } & React$1.RefAttributes<HTMLDivElement>>;
738
+ declare const DropdownMenuCheckboxItem: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
739
+ declare const DropdownMenuRadioItem: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
740
+ declare const DropdownMenuLabel: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
741
+ inset?: boolean;
742
+ } & React$1.RefAttributes<HTMLDivElement>>;
743
+ declare const DropdownMenuSeparator: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
744
+ declare const DropdownMenuShortcut: {
745
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): react_jsx_runtime.JSX.Element;
746
+ displayName: string;
747
+ };
748
+
749
+ interface PageLoadingProps extends React$1.HTMLAttributes<HTMLDivElement> {
750
+ size?: 'sm' | 'md' | 'lg';
751
+ text?: string;
752
+ color?: string;
753
+ speed?: string;
754
+ }
755
+ declare const PageLoading: React$1.ForwardRefExoticComponent<PageLoadingProps & React$1.RefAttributes<HTMLDivElement>>;
756
+
757
+ interface LoadingProps extends React$1.HTMLAttributes<HTMLDivElement> {
758
+ size?: 'sm' | 'md' | 'lg' | 'xl';
759
+ text?: string;
760
+ variant?: 'spinner' | 'cradle' | 'pendulum' | 'pulse' | 'dots';
761
+ color?: string;
762
+ }
763
+ declare const Loading: React$1.ForwardRefExoticComponent<LoadingProps & React$1.RefAttributes<HTMLDivElement>>;
764
+
765
+ declare const LoadingStates: {
766
+ Saving: () => react_jsx_runtime.JSX.Element;
767
+ Loading: () => react_jsx_runtime.JSX.Element;
768
+ Processing: () => react_jsx_runtime.JSX.Element;
769
+ Calculating: () => react_jsx_runtime.JSX.Element;
770
+ Generating: () => react_jsx_runtime.JSX.Element;
771
+ Validating: () => react_jsx_runtime.JSX.Element;
772
+ Exporting: () => react_jsx_runtime.JSX.Element;
773
+ Importing: () => react_jsx_runtime.JSX.Element;
774
+ Syncing: () => react_jsx_runtime.JSX.Element;
775
+ Connecting: () => react_jsx_runtime.JSX.Element;
776
+ Authenticating: () => react_jsx_runtime.JSX.Element;
777
+ SigningIn: () => react_jsx_runtime.JSX.Element;
778
+ Inline: ({ size }: {
779
+ size?: "sm" | "md";
780
+ }) => react_jsx_runtime.JSX.Element;
781
+ InlinePendulum: ({ size }: {
782
+ size?: "sm" | "md";
783
+ }) => react_jsx_runtime.JSX.Element;
784
+ InlineCradle: ({ size }: {
785
+ size?: "sm" | "md";
786
+ }) => react_jsx_runtime.JSX.Element;
787
+ };
788
+ declare function LoadingOverlay({ isVisible, text, variant, size }: {
789
+ isVisible: boolean;
790
+ text?: string;
791
+ variant?: LoadingProps['variant'];
792
+ size?: LoadingProps['size'];
793
+ }): react_jsx_runtime.JSX.Element;
794
+ declare function NavigationProgress(): react_jsx_runtime.JSX.Element;
795
+
796
+ interface DynamicSidebarProps {
797
+ isCollapsed?: boolean;
798
+ onMenuItemClick?: () => void;
799
+ onToggleSidebar?: () => void;
800
+ onQuickCreate?: (modulePath: string, moduleName: string) => void;
801
+ className?: string;
802
+ companyId?: number;
803
+ userId?: number;
804
+ }
805
+ declare function DynamicSidebar({ isCollapsed, onMenuItemClick, onToggleSidebar, onQuickCreate, className, companyId, userId }: DynamicSidebarProps): react_jsx_runtime.JSX.Element;
806
+
807
+ interface FooterKPI {
808
+ id: string;
809
+ label: string;
810
+ value: string | number;
811
+ trend?: {
812
+ value: number;
813
+ direction: 'up' | 'down';
814
+ };
815
+ onClick?: () => void;
816
+ }
817
+ interface FooterIconButton {
818
+ id: string;
819
+ icon: LucideIcon;
820
+ label: string;
821
+ onClick: () => void;
822
+ variant?: 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
823
+ disabled?: boolean;
824
+ }
825
+ interface FooterProps {
826
+ kpis?: FooterKPI[];
827
+ actions?: React$1.ReactNode;
828
+ iconButtons?: FooterIconButton[];
829
+ leftContent?: React$1.ReactNode;
830
+ className?: string;
831
+ sticky?: boolean;
832
+ compact?: boolean;
833
+ padding?: 'compact' | 'normal' | 'medium';
834
+ variant?: 'page' | 'modal';
835
+ gradient?: boolean;
836
+ }
837
+ declare function Footer({ kpis, actions, iconButtons, leftContent, className, sticky, compact, padding, variant, gradient }: FooterProps): react_jsx_runtime.JSX.Element;
838
+ declare function CompactFooter({ className, children }: {
839
+ className?: string;
840
+ children?: React$1.ReactNode;
841
+ }): react_jsx_runtime.JSX.Element;
842
+
843
+ interface AppShellProps {
844
+ children: React$1.ReactNode;
845
+ sidebar?: DynamicSidebarProps;
846
+ footer?: FooterProps;
847
+ className?: string;
848
+ }
849
+ declare function AppShell({ children, sidebar, footer, className }: AppShellProps): react_jsx_runtime.JSX.Element;
850
+ interface PageProps {
851
+ children: React$1.ReactNode;
852
+ title?: string;
853
+ description?: string;
854
+ actions?: React$1.ReactNode;
855
+ className?: string;
856
+ maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
857
+ padding?: boolean;
858
+ }
859
+ declare function Page({ children, title, description, actions, className, maxWidth, padding }: PageProps): react_jsx_runtime.JSX.Element;
860
+ interface GridProps {
861
+ children: React$1.ReactNode;
862
+ columns?: {
863
+ sm?: number;
864
+ md?: number;
865
+ lg?: number;
866
+ xl?: number;
867
+ };
868
+ gap?: number;
869
+ className?: string;
870
+ }
871
+ declare function Grid({ children, columns, gap, className }: GridProps): react_jsx_runtime.JSX.Element;
872
+
873
+ interface FABAction {
874
+ label: string;
875
+ onClick: () => void;
876
+ }
877
+ interface FloatingActionButtonProps {
878
+ actions: FABAction[];
879
+ className?: string;
880
+ }
881
+ declare function FloatingActionButton({ actions, className }: FloatingActionButtonProps): react_jsx_runtime.JSX.Element;
882
+
883
+ /**
884
+ * Summary aggregation types
885
+ */
886
+ type SummaryAggregationType = 'sum' | 'avg' | 'count' | 'min' | 'max' | 'custom';
887
+ /**
888
+ * Summary configuration for a column
889
+ */
890
+ interface ColumnSummary<TData = any> {
891
+ type: SummaryAggregationType;
892
+ label?: string;
893
+ customFn?: (data: TData[]) => string | number;
894
+ format?: (value: number) => string;
895
+ className?: string;
896
+ customValue?: () => string | number;
897
+ }
898
+ /**
899
+ * Summary configuration for the entire grid
900
+ */
901
+ interface SummaryConfig<TData = any> {
902
+ columns: Record<string, ColumnSummary<TData>>;
903
+ position?: 'top' | 'bottom';
904
+ style?: React.CSSProperties;
905
+ className?: string;
906
+ }
907
+
908
+ interface DataGridProps<TData> {
909
+ data: TData[];
910
+ columns: ColumnDef<TData>[];
911
+ onRowClick?: (row: TData) => void;
912
+ onRowContextMenu?: (row: TData, event: React__default.MouseEvent) => void;
913
+ onRowSelect?: (selectedRows: TData[]) => void;
914
+ onImport?: (data: TData[]) => void;
915
+ selectedRowIds?: string[];
916
+ getRowId?: (row: TData) => string;
917
+ getRowProps?: (row: TData) => {
918
+ className?: string;
919
+ style?: React__default.CSSProperties;
920
+ };
921
+ enableViewToggle?: boolean;
922
+ viewMode?: 'all' | 'selected';
923
+ onViewModeChange?: (mode: 'all' | 'selected') => void;
924
+ enableVirtualization?: boolean;
925
+ enableColumnResizing?: boolean;
926
+ enableColumnReordering?: boolean;
927
+ enableColumnFreezing?: boolean;
928
+ frozenColumns?: string[];
929
+ rightFrozenColumns?: string[];
930
+ enableGrouping?: boolean;
931
+ groupByColumns?: string[];
932
+ onGroupingChange?: (grouping: string[]) => void;
933
+ enableExport?: boolean;
934
+ enableImport?: boolean;
935
+ enableVisualization?: boolean;
936
+ enableStickyActions?: boolean;
937
+ enableRowSelection?: boolean;
938
+ enableSorting?: boolean;
939
+ defaultSortBy?: string;
940
+ defaultSortOrder?: 'asc' | 'desc';
941
+ initialColumnVisibility?: Record<string, boolean>;
942
+ enableSearch?: boolean;
943
+ enableFiltering?: boolean;
944
+ enableColumnVisibility?: boolean;
945
+ pageSize?: number;
946
+ stickyHeader?: boolean;
947
+ className?: string;
948
+ title?: string;
949
+ description?: string;
950
+ headerActions?: React__default.ReactNode;
951
+ headerActionsRight?: React__default.ReactNode;
952
+ preToggleActions?: React__default.ReactNode;
953
+ loading?: boolean;
954
+ hideHeader?: boolean;
955
+ compactHeader?: boolean;
956
+ columnResizeMode?: 'onChange' | 'onEnd';
957
+ style?: React__default.CSSProperties;
958
+ compactMode?: boolean;
959
+ minHeight?: number | string;
960
+ maxHeight?: number | string;
961
+ rowHeight?: number;
962
+ mainColumns?: string;
963
+ enableBacchaSearch?: boolean;
964
+ searchType?: 'advanced' | 'new';
965
+ enablePagination?: boolean;
966
+ paginationPageSize?: number;
967
+ paginationPageSizeOptions?: number[];
968
+ circularCheckboxes?: boolean;
969
+ enableAutoResize?: boolean;
970
+ rowSelectionMode?: 'single' | 'multi';
971
+ enableRowClickSelection?: boolean;
972
+ enableCtrlClickMultiSelect?: boolean;
973
+ enableShiftClickRange?: boolean;
974
+ singleSelectionStyle?: 'radio' | 'highlight';
975
+ enableRowReordering?: boolean;
976
+ onRowOrderChange?: (reorderedData: TData[]) => void;
977
+ hideSelectionInSelectedView?: boolean;
978
+ renderSubComponent?: (row: Row<TData>) => React__default.ReactNode;
979
+ getRowCanExpand?: (row: Row<TData>) => boolean;
980
+ /** 'basic' = custom content in colSpan td, 'detailed' = real grid rows from subData */
981
+ expandMode?: 'basic' | 'detailed';
982
+ /** Return sub-data items for a row (used in detailed mode) */
983
+ getSubData?: (row: TData) => TData[];
984
+ /** Row ID accessor for sub-rows in detailed mode */
985
+ getSubRowId?: (row: TData) => string;
986
+ /** Callback when a sub-row is clicked in detailed mode */
987
+ onSubRowClick?: (item: TData) => void;
988
+ /** Callback when a sub-row is selected — propagates to parent for footer actions */
989
+ onSubRowSelect?: (item: TData) => void;
990
+ /** Auto-expand all expandable rows by default */
991
+ defaultExpandAll?: boolean;
992
+ enableDateFilter?: boolean;
993
+ dateFrom?: Date | null;
994
+ dateTo?: Date | null;
995
+ onDateFromChange?: (date: Date | null) => void;
996
+ onDateToChange?: (date: Date | null) => void;
997
+ /** Actions to render just before the date picker (left of date picker) */
998
+ preDateActions?: React__default.ReactNode;
999
+ enableSummary?: boolean;
1000
+ summaryConfig?: SummaryConfig<TData>;
1001
+ enableFilterRow?: boolean;
1002
+ /**
1003
+ * Optional initial values for the column filter row. Seeded into state on mount and
1004
+ * re-applied when the prop reference changes (so modals can pre-filter on open).
1005
+ */
1006
+ initialColumnFilters?: ColumnFiltersState;
1007
+ }
1008
+ declare function DataGrid<TData>({ data, columns: initialColumns, onRowClick, onRowContextMenu, onRowSelect, onImport, selectedRowIds, getRowId, getRowProps, enableViewToggle, viewMode, onViewModeChange, enableVirtualization, enableColumnResizing, enableColumnReordering, enableColumnFreezing, frozenColumns, rightFrozenColumns, enableGrouping, groupByColumns, onGroupingChange, enableExport, enableImport, enableVisualization, enableStickyActions, enableRowSelection, enableSorting, defaultSortBy, defaultSortOrder, initialColumnVisibility, enableSearch, enableFiltering, enableColumnVisibility, pageSize, stickyHeader, className, title, description, headerActions, headerActionsRight, preToggleActions, loading, hideHeader, compactHeader, columnResizeMode, style, compactMode, minHeight, maxHeight, // Default: standard mode, responsive to screen height
1009
+ rowHeight, mainColumns, enableBacchaSearch, searchType, enablePagination, paginationPageSize, paginationPageSizeOptions, circularCheckboxes, enableAutoResize, rowSelectionMode, enableRowClickSelection, enableCtrlClickMultiSelect, enableShiftClickRange, singleSelectionStyle, enableRowReordering, onRowOrderChange, hideSelectionInSelectedView, renderSubComponent, getRowCanExpand, expandMode, getSubData, getSubRowId, onSubRowClick, onSubRowSelect, defaultExpandAll, enableDateFilter, preDateActions, enableSummary, summaryConfig, dateFrom, dateTo, onDateFromChange, onDateToChange, enableFilterRow, initialColumnFilters, }: DataGridProps<TData>): react_jsx_runtime.JSX.Element;
1010
+
1011
+ interface PaginationControlsProps {
1012
+ pageIndex: number;
1013
+ pageSize: number;
1014
+ totalRows: number;
1015
+ pageSizeOptions?: number[];
1016
+ onPageChange: (pageIndex: number) => void;
1017
+ onPageSizeChange: (pageSize: number) => void;
1018
+ }
1019
+ declare function PaginationControls({ pageIndex, pageSize, totalRows, pageSizeOptions, onPageChange, onPageSizeChange, }: PaginationControlsProps): react_jsx_runtime.JSX.Element;
1020
+
1021
+ interface AutoResizeButtonProps {
1022
+ onAutoResize: () => void;
1023
+ disabled?: boolean;
1024
+ className?: string;
1025
+ }
1026
+ declare function AutoResizeButton({ onAutoResize, disabled, className, }: AutoResizeButtonProps): react_jsx_runtime.JSX.Element;
1027
+
1028
+ interface ActionsMenuProps<TData> {
1029
+ enableVisualization?: boolean;
1030
+ currentView: 'grid' | 'chart' | 'cards';
1031
+ onViewChange: (view: 'grid' | 'chart' | 'cards') => void;
1032
+ enableExport?: boolean;
1033
+ enableImport?: boolean;
1034
+ data: TData[];
1035
+ filename?: string;
1036
+ onImportComplete: (data: TData[]) => void;
1037
+ enableColumnVisibility?: boolean;
1038
+ onOpenColumnChooser: () => void;
1039
+ enableAutoResize?: boolean;
1040
+ onAutoResize?: () => void;
1041
+ enableDateFilter?: boolean;
1042
+ dateFrom?: Date | null;
1043
+ dateTo?: Date | null;
1044
+ onDateFromChange?: (date: Date | null) => void;
1045
+ onDateToChange?: (date: Date | null) => void;
1046
+ enableFiltering?: boolean;
1047
+ onOpenAdvancedFilter: () => void;
1048
+ activeFiltersCount?: number;
1049
+ enableGrouping?: boolean;
1050
+ columns?: Column<TData, unknown>[];
1051
+ grouping?: string[];
1052
+ onGroupingChange?: (columnId: string) => void;
1053
+ onClearGrouping?: () => void;
1054
+ }
1055
+ declare function ActionsMenu<TData>({ enableVisualization, currentView, onViewChange, enableExport, enableImport, data, filename, onImportComplete, enableColumnVisibility, onOpenColumnChooser, enableAutoResize, onAutoResize, enableDateFilter, dateFrom, dateTo, onDateFromChange, onDateToChange, enableFiltering, onOpenAdvancedFilter, activeFiltersCount, enableGrouping, columns, grouping, onGroupingChange, onClearGrouping }: ActionsMenuProps<TData>): react_jsx_runtime.JSX.Element;
1056
+
1057
+ type CardSize = 'compact' | 'normal' | 'expanded';
1058
+ interface CardViewProps<TData> {
1059
+ data: TData[];
1060
+ columns: ColumnDef<TData>[];
1061
+ onRowClick?: (item: TData) => void;
1062
+ selectedRows: TData[];
1063
+ onRowSelect?: (item: TData, selected: boolean) => void;
1064
+ isLoading?: boolean;
1065
+ cardSize?: CardSize;
1066
+ circularCheckboxes?: boolean;
1067
+ }
1068
+ declare function CardView<TData>({ data, columns, onRowClick, selectedRows, onRowSelect, isLoading, cardSize, circularCheckboxes, }: CardViewProps<TData>): react_jsx_runtime.JSX.Element;
1069
+
1070
+ interface DataVisualizationProps<TData> {
1071
+ data: TData[];
1072
+ columns: ColumnDef<TData>[];
1073
+ title?: string;
1074
+ }
1075
+ declare function DataVisualization<TData>({ data, columns, title }: DataVisualizationProps<TData>): react_jsx_runtime.JSX.Element;
1076
+
1077
+ interface ColumnChooserModalProps<TData> {
1078
+ isOpen: boolean;
1079
+ onClose: () => void;
1080
+ table: Table<TData>;
1081
+ frozenColumnsState: Set<string>;
1082
+ setFrozenColumnsState: (columns: Set<string>) => void;
1083
+ enableColumnFreezing?: boolean;
1084
+ autoResizeAllColumns?: (table: Table<TData>) => void;
1085
+ }
1086
+ declare function ColumnChooserModal<TData>({ isOpen, onClose, table, frozenColumnsState, setFrozenColumnsState, enableColumnFreezing, autoResizeAllColumns }: ColumnChooserModalProps<TData>): react_jsx_runtime.JSX.Element;
1087
+
1088
+ interface FilterCondition {
1089
+ id: string;
1090
+ column: string;
1091
+ operator: string;
1092
+ value: any;
1093
+ type: 'string' | 'number' | 'date' | 'boolean' | 'multi-select';
1094
+ }
1095
+ type TabId = 'filters' | 'columns' | 'sort';
1096
+ interface AdvancedFilterModalProps<TData> {
1097
+ isOpen: boolean;
1098
+ onClose: () => void;
1099
+ onApply: (filters: FilterCondition[]) => void;
1100
+ columns: ColumnDef<TData>[];
1101
+ data: TData[];
1102
+ table?: Table<TData>;
1103
+ sorting?: SortingState;
1104
+ onSortingChange?: (sorting: SortingState) => void;
1105
+ enableGrouping?: boolean;
1106
+ grouping?: string[];
1107
+ onGroupingChange?: (columnId: string) => void;
1108
+ onClearGrouping?: () => void;
1109
+ initialTab?: TabId;
1110
+ }
1111
+ declare function AdvancedFilterModal<TData>({ isOpen, onClose, onApply, columns, data, table, sorting, onSortingChange, enableGrouping, grouping, onGroupingChange, onClearGrouping, initialTab, }: AdvancedFilterModalProps<TData>): react_jsx_runtime.JSX.Element;
1112
+
1113
+ interface DraggableColumnHeaderProps<TData> {
1114
+ header: Header<TData, unknown>;
1115
+ enableReordering?: boolean;
1116
+ enableResizing?: boolean;
1117
+ enableFreezing?: boolean;
1118
+ enableGrouping?: boolean;
1119
+ isGrouped?: boolean;
1120
+ isFrozen?: boolean;
1121
+ isLastFrozen?: boolean;
1122
+ isFirstPinnedRight?: boolean;
1123
+ isLastColumn?: boolean;
1124
+ onRightClick?: (header: Header<TData, unknown>, event: React__default.MouseEvent) => void;
1125
+ onFilterClick?: (header: Header<TData, unknown>, event: React__default.MouseEvent) => void;
1126
+ style?: React__default.CSSProperties;
1127
+ }
1128
+ declare function DraggableColumnHeader<TData>({ header, enableReordering, enableResizing, enableFreezing, enableGrouping, isGrouped, isFrozen, isLastFrozen, isFirstPinnedRight, isLastColumn, onRightClick, onFilterClick, style, }: DraggableColumnHeaderProps<TData>): react_jsx_runtime.JSX.Element;
1129
+
1130
+ interface ColumnContextMenuProps<TData> {
1131
+ column: Column<TData, unknown>;
1132
+ data: TData[];
1133
+ isVisible: boolean;
1134
+ position: {
1135
+ x: number;
1136
+ y: number;
1137
+ };
1138
+ onClose: () => void;
1139
+ onApplyFilter: (columnId: string, filterType: string, value: any) => void;
1140
+ }
1141
+ declare function ColumnContextMenu<TData>({ column, data, isVisible, position, onClose, onApplyFilter, }: ColumnContextMenuProps<TData>): react_jsx_runtime.JSX.Element;
1142
+
1143
+ interface ActionsColumnConfig<TData = any> {
1144
+ /**
1145
+ * Module-level permissions. When provided, actions that require a permission
1146
+ * the user lacks are automatically hidden — no need to set showEdit/showDelete manually.
1147
+ *
1148
+ * canEdit → controls: edit button (modify existing records)
1149
+ * canSave → controls: duplicate (creates a new record)
1150
+ * canDelete → controls: delete, archive (destructive operations)
1151
+ * canExport → controls: export
1152
+ * canPrint → controls: print
1153
+ * canCancel → controls: block (cancel/block operations)
1154
+ *
1155
+ * Individual show* props still work as a further per-row override on top of permissions.
1156
+ */
1157
+ permissions?: {
1158
+ canEdit?: boolean;
1159
+ canSave?: boolean;
1160
+ canDelete?: boolean;
1161
+ canExport?: boolean;
1162
+ canPrint?: boolean;
1163
+ canCancel?: boolean;
1164
+ };
1165
+ onView?: (row: TData) => void;
1166
+ onEdit?: (row: TData) => void;
1167
+ onDelete?: (row: TData) => void;
1168
+ onDuplicate?: (row: TData) => void;
1169
+ onTarget?: (row: TData) => void;
1170
+ onPin?: (row: TData, pinned: boolean) => void;
1171
+ onFavorite?: (row: TData, favorited: boolean) => void;
1172
+ onArchive?: (row: TData) => void;
1173
+ onRestore?: (row: TData) => void;
1174
+ onExport?: (row: TData) => void;
1175
+ onPrint?: (row: TData) => void;
1176
+ onCopy?: (row: TData) => void;
1177
+ onShare?: (row: TData) => void;
1178
+ onBlock?: (row: TData, blocked: boolean) => void;
1179
+ showView?: boolean | ((row: TData) => boolean);
1180
+ showEdit?: boolean | ((row: TData) => boolean);
1181
+ showDelete?: boolean | ((row: TData) => boolean);
1182
+ showDuplicate?: boolean | ((row: TData) => boolean);
1183
+ showTarget?: boolean | ((row: TData) => boolean);
1184
+ showPin?: boolean | ((row: TData) => boolean);
1185
+ showFavorite?: boolean | ((row: TData) => boolean);
1186
+ showArchive?: boolean | ((row: TData) => boolean);
1187
+ showRestore?: boolean | ((row: TData) => boolean);
1188
+ showExport?: boolean | ((row: TData) => boolean);
1189
+ showPrint?: boolean | ((row: TData) => boolean);
1190
+ showCopy?: boolean | ((row: TData) => boolean);
1191
+ showShare?: boolean | ((row: TData) => boolean);
1192
+ showBlock?: boolean | ((row: TData) => boolean);
1193
+ isPinned?: (row: TData) => boolean;
1194
+ isFavorited?: (row: TData) => boolean;
1195
+ isArchived?: (row: TData) => boolean;
1196
+ isProtected?: (row: TData) => boolean;
1197
+ isBlocked?: (row: TData) => boolean;
1198
+ mode?: 'buttons' | 'dropdown' | 'mixed';
1199
+ primaryActions?: ActionType[];
1200
+ maxVisibleActions?: number;
1201
+ confirmDelete?: boolean;
1202
+ confirmArchive?: boolean;
1203
+ showStatusBadges?: boolean;
1204
+ labels?: {
1205
+ view?: string;
1206
+ edit?: string;
1207
+ delete?: string;
1208
+ duplicate?: string;
1209
+ target?: string;
1210
+ pin?: string;
1211
+ unpin?: string;
1212
+ favorite?: string;
1213
+ unfavorite?: string;
1214
+ archive?: string;
1215
+ restore?: string;
1216
+ export?: string;
1217
+ print?: string;
1218
+ copy?: string;
1219
+ share?: string;
1220
+ block?: string;
1221
+ unblock?: string;
1222
+ };
1223
+ deleteConfirmation?: {
1224
+ title?: string;
1225
+ description?: string;
1226
+ };
1227
+ archiveConfirmation?: {
1228
+ title?: string;
1229
+ description?: string;
1230
+ };
1231
+ blockConfirmation?: {
1232
+ title?: string;
1233
+ description?: string;
1234
+ };
1235
+ }
1236
+ type ActionType = 'view' | 'edit' | 'delete' | 'duplicate' | 'target' | 'pin' | 'favorite' | 'archive' | 'restore' | 'export' | 'print' | 'copy' | 'share' | 'block';
1237
+ interface ActionsColumnProps<TData> {
1238
+ row: {
1239
+ original: TData;
1240
+ };
1241
+ config: ActionsColumnConfig<TData>;
1242
+ }
1243
+ declare function ActionsColumn<TData>({ row, config, }: ActionsColumnProps<TData>): react_jsx_runtime.JSX.Element;
1244
+ /**
1245
+ * Helper function to create an actions column definition for DataGrid
1246
+ *
1247
+ * @example
1248
+ * const columns = [
1249
+ * { accessorKey: 'name', header: 'Name' },
1250
+ * { accessorKey: 'email', header: 'Email' },
1251
+ * createActionsColumn({
1252
+ * onEdit: handleEdit,
1253
+ * onDelete: handleDelete,
1254
+ * showEdit: true,
1255
+ * showDelete: true,
1256
+ * mode: 'buttons'
1257
+ * })
1258
+ * ]
1259
+ */
1260
+ declare function createActionsColumn<TData>(config: ActionsColumnConfig<TData>): {
1261
+ id: string;
1262
+ header: () => react_jsx_runtime.JSX.Element;
1263
+ cell: ({ row }: {
1264
+ row: {
1265
+ original: TData;
1266
+ };
1267
+ }) => react_jsx_runtime.JSX.Element;
1268
+ enableSorting: boolean;
1269
+ enableHiding: boolean;
1270
+ enableColumnFilter: boolean;
1271
+ size: number;
1272
+ };
1273
+
1274
+ declare function createSelectColumn<TData>(): ColumnDef<TData>;
1275
+
1276
+ interface ExpandableRowProps<TData> {
1277
+ row: Row<TData>;
1278
+ renderSubComponent?: (row: Row<TData>) => React__default.ReactNode;
1279
+ /** 'basic' = custom content in colSpan td, 'detailed' = real grid rows from subData */
1280
+ expandMode?: 'basic' | 'detailed';
1281
+ /** Data items to render as rows in detailed mode */
1282
+ subData?: TData[];
1283
+ /** Column definitions for detailed mode (should match parent grid columns) */
1284
+ subColumns?: ColumnDef<TData, any>[];
1285
+ /** Row ID accessor for detailed mode */
1286
+ getSubRowId?: (row: TData) => string;
1287
+ /** Callback when a sub-row is clicked in detailed mode */
1288
+ onSubRowClick?: (item: TData) => void;
1289
+ /** Callback when a sub-row is selected (clicked) — propagates selection to parent */
1290
+ onSubRowSelect?: (item: TData) => void;
1291
+ onRowClick?: (e: React__default.MouseEvent) => void;
1292
+ onRowDoubleClick?: () => void;
1293
+ onRowContextMenu?: (e: React__default.MouseEvent) => void;
1294
+ className?: string;
1295
+ rowHeight?: number;
1296
+ children: React__default.ReactNode;
1297
+ }
1298
+ declare function ExpandableRow<TData>({ row, renderSubComponent, expandMode, subData, subColumns, getSubRowId, onSubRowClick, onSubRowSelect, onRowClick, onRowDoubleClick, onRowContextMenu, className, rowHeight, children }: ExpandableRowProps<TData>): react_jsx_runtime.JSX.Element;
1299
+ interface ExpansionToggleCellProps<TData> {
1300
+ row: Row<TData>;
1301
+ }
1302
+ declare function ExpansionToggleCell<TData>({ row }: ExpansionToggleCellProps<TData>): react_jsx_runtime.JSX.Element;
1303
+ declare function ExpansionToggleHeader({ table }: {
1304
+ table: any;
1305
+ }): react_jsx_runtime.JSX.Element;
1306
+ interface ProcessBreakdownProps {
1307
+ processes: Array<{
1308
+ name: string;
1309
+ totalCost: number;
1310
+ unitCost: number;
1311
+ }>;
1312
+ }
1313
+ declare function ProcessBreakdown({ processes }: ProcessBreakdownProps): react_jsx_runtime.JSX.Element;
1314
+
1315
+ interface DraggableRowProps<TData> {
1316
+ row: Row<TData>;
1317
+ rowIndex: number;
1318
+ enableBacchaSearch?: boolean;
1319
+ mainColumnsArray?: string[];
1320
+ frozenColumnsState?: Set<string>;
1321
+ isHighlighted?: boolean;
1322
+ isSelected?: boolean;
1323
+ onRowClick?: (e: React__default.MouseEvent) => void;
1324
+ onRowDoubleClick?: () => void;
1325
+ onRowContextMenu?: (e: React__default.MouseEvent) => void;
1326
+ showDragHandle?: boolean;
1327
+ navigationState?: {
1328
+ searchTerm?: string;
1329
+ };
1330
+ columnSearches?: Record<string, string>;
1331
+ isColumnSearchActive?: Record<string, boolean>;
1332
+ onColumnSearch?: (columnId: string, rowId: string, value: string) => void;
1333
+ onClearColumnSearch?: (columnId: string) => void;
1334
+ SearchHighlighter?: React__default.ComponentType<{
1335
+ text: string;
1336
+ searchTerm: string;
1337
+ }>;
1338
+ InlineSearchCell?: React__default.ComponentType<any>;
1339
+ }
1340
+ declare function DraggableRow<TData>({ row, rowIndex, enableBacchaSearch, mainColumnsArray, frozenColumnsState, isHighlighted, isSelected, onRowClick, onRowDoubleClick, onRowContextMenu, showDragHandle, navigationState, columnSearches, isColumnSearchActive, onColumnSearch, onClearColumnSearch, SearchHighlighter, InlineSearchCell, }: DraggableRowProps<TData>): react_jsx_runtime.JSX.Element;
1341
+
1342
+ interface SummaryRowProps<TData> {
1343
+ table: Table<TData>;
1344
+ data: TData[];
1345
+ config: SummaryConfig<TData> | SummaryConfig<TData>[];
1346
+ enableRowSelection?: boolean;
1347
+ showDragHandle?: boolean;
1348
+ }
1349
+ declare function SummaryRow<TData>({ table, data, config, enableRowSelection, showDragHandle }: SummaryRowProps<TData>): react_jsx_runtime.JSX.Element;
1350
+
1351
+ interface EditableCellProps$1 {
1352
+ value: any;
1353
+ rowId?: string;
1354
+ columnId?: string;
1355
+ onSave: ((rowId: string, columnId: string, newValue: any) => void) | ((newValue: any) => void);
1356
+ onCancel?: () => void;
1357
+ onNavigate?: (direction: 'next' | 'previous') => void;
1358
+ editable?: boolean;
1359
+ type?: 'text' | 'number' | 'date' | 'email' | 'dropdown';
1360
+ options?: Array<{
1361
+ label: string;
1362
+ value: any;
1363
+ }>;
1364
+ className?: string;
1365
+ formatDisplay?: (value: number) => string;
1366
+ currencySymbol?: string;
1367
+ trackEdits?: boolean;
1368
+ originalValue?: any;
1369
+ isEdited?: boolean;
1370
+ }
1371
+ declare function EditableCell$1({ value, rowId, columnId, onSave, onCancel, onNavigate, editable, type, options, className, formatDisplay, currencySymbol, trackEdits, originalValue, isEdited: externalIsEdited }: EditableCellProps$1): react_jsx_runtime.JSX.Element;
1372
+ declare const EditableTableCell: typeof EditableCell$1;
1373
+ declare function useCellEditing<TData>(): {
1374
+ data: TData[];
1375
+ setData: React__default.Dispatch<React__default.SetStateAction<TData[]>>;
1376
+ editingCell: {
1377
+ rowId: string;
1378
+ columnId: string;
1379
+ };
1380
+ startEditing: (rowId: string, columnId: string) => void;
1381
+ isEditing: (rowId: string, columnId: string) => boolean;
1382
+ handleCellSave: (rowId: string, columnId: string, newValue: any) => void;
1383
+ handleCellCancel: () => void;
1384
+ };
1385
+
1386
+ interface CellRendererProps<TData> {
1387
+ cell: Cell<TData, unknown>;
1388
+ cellIndex: number;
1389
+ row: any;
1390
+ enableBacchaSearch?: boolean;
1391
+ mainColumnsArray?: string[];
1392
+ frozenColumnsState?: Set<string>;
1393
+ navigationState?: {
1394
+ searchTerm?: string;
1395
+ };
1396
+ columnSearches?: Record<string, string>;
1397
+ isColumnSearchActive?: Record<string, boolean>;
1398
+ onColumnSearch?: (columnId: string, rowId: string, value: string) => void;
1399
+ onClearColumnSearch?: (columnId: string) => void;
1400
+ SearchHighlighter?: React__default.ComponentType<{
1401
+ text: string;
1402
+ searchTerm: string;
1403
+ }>;
1404
+ InlineSearchCell?: React__default.ComponentType<any>;
1405
+ isSelected?: boolean;
1406
+ }
1407
+ declare function CellRenderer<TData>({ cell, cellIndex, row, enableBacchaSearch, mainColumnsArray, frozenColumnsState, navigationState, columnSearches, isColumnSearchActive, onColumnSearch, onClearColumnSearch, SearchHighlighter, InlineSearchCell, isSelected }: CellRendererProps<TData>): react_jsx_runtime.JSX.Element;
1408
+
1409
+ interface SelectionCellProps {
1410
+ checked: boolean;
1411
+ indeterminate?: boolean;
1412
+ onChange: (checked: boolean) => void;
1413
+ disabled?: boolean;
1414
+ circular?: boolean;
1415
+ mode?: 'checkbox' | 'radio';
1416
+ }
1417
+ declare function SelectionCell({ checked, indeterminate, onChange, disabled, circular, mode, }: SelectionCellProps): react_jsx_runtime.JSX.Element;
1418
+
1419
+ interface BooleanCellProps {
1420
+ value: boolean;
1421
+ variant?: 'success' | 'info' | 'warning' | 'danger';
1422
+ }
1423
+ /**
1424
+ * Standardized Boolean Cell Component for DataGrid
1425
+ * Displays a compact checkmark or X icon in a colored circle
1426
+ * Matches the Die availability column style from machine planning grid
1427
+ */
1428
+ declare function BooleanCell({ value, variant }: BooleanCellProps): react_jsx_runtime.JSX.Element;
1429
+ declare namespace BooleanCell {
1430
+ var displayName: string;
1431
+ }
1432
+
1433
+ interface InlineSearchCellProps {
1434
+ value: any;
1435
+ columnId: string;
1436
+ rowId: string;
1437
+ onSearch: (columnId: string, searchTerm: string) => void;
1438
+ onClearSearch: (columnId: string) => void;
1439
+ isSearchActive: boolean;
1440
+ searchTerm: string;
1441
+ className?: string;
1442
+ }
1443
+ declare function InlineSearchCell({ value, columnId, rowId, onSearch, onClearSearch, isSearchActive, searchTerm, className }: InlineSearchCellProps): react_jsx_runtime.JSX.Element;
1444
+
1445
+ interface SearchNavigationState {
1446
+ currentIndex: number;
1447
+ totalResults: number;
1448
+ highlightedRowId: string | null;
1449
+ searchTerm: string;
1450
+ }
1451
+ interface SearchNavigatorProps {
1452
+ navigationState: SearchNavigationState;
1453
+ onNavigate: (direction: 'up' | 'down') => void;
1454
+ onSelect: (rowId: string) => void;
1455
+ onClear: () => void;
1456
+ searchInputRef?: React__default.RefObject<HTMLInputElement>;
1457
+ enabled: boolean;
1458
+ }
1459
+ declare function SearchNavigator({ navigationState, onNavigate, onSelect, onClear, searchInputRef, enabled }: SearchNavigatorProps): any;
1460
+ declare function useSearchNavigation(scrollContainerRef?: React__default.RefObject<HTMLDivElement>): {
1461
+ navigationState: SearchNavigationState;
1462
+ updateSearchResults: (searchTerm: string, matchingRowIds: string[]) => void;
1463
+ navigate: (direction: "up" | "down") => void;
1464
+ selectRow: (rowId: string) => string;
1465
+ clearNavigation: () => void;
1466
+ };
1467
+
1468
+ interface SearchHighlighterProps {
1469
+ text: string;
1470
+ searchTerm: string;
1471
+ className?: string;
1472
+ highlightClassName?: string;
1473
+ }
1474
+ declare function SearchHighlighter({ text, searchTerm, className, highlightClassName }: SearchHighlighterProps): react_jsx_runtime.JSX.Element;
1475
+ declare function fuzzyMatch(text: string, searchTerm: string): boolean;
1476
+ declare function advancedSearch(data: any[], searchTerm: string, columns: any[], mainColumns?: string[]): {
1477
+ matchingRows: any[];
1478
+ rowIds: string[];
1479
+ columnMatches: Record<string, string[]>;
1480
+ };
1481
+
1482
+ interface SearchNewModalProps<TData> {
1483
+ data: TData[];
1484
+ columns: any[];
1485
+ mainColumns?: string;
1486
+ onRowSelect?: (rowId: string) => void;
1487
+ selectedRows?: Set<string>;
1488
+ className?: string;
1489
+ onSearchClear?: () => void;
1490
+ }
1491
+ declare function SearchNewModal<TData>({ data, columns, mainColumns, onRowSelect, selectedRows, className, onSearchClear }: SearchNewModalProps<TData>): react_jsx_runtime.JSX.Element;
1492
+
1493
+ interface KeyboardNavigationConfig {
1494
+ enableArrowKeys?: boolean;
1495
+ enableTabNavigation?: boolean;
1496
+ enableEnterToEdit?: boolean;
1497
+ enableSpaceToSelect?: boolean;
1498
+ enableCtrlA?: boolean;
1499
+ }
1500
+ declare function useKeyboardNavigation<TData>(table: Table<TData>, config?: KeyboardNavigationConfig): {
1501
+ focusedCell: {
1502
+ rowIndex: number;
1503
+ columnIndex: number;
1504
+ };
1505
+ setFocus: (rowIndex: number, columnIndex: number) => void;
1506
+ clearFocus: () => void;
1507
+ getCellClassName: (rowIndex: number, columnIndex: number) => "" | "ring-2 ring-blue-500 bg-blue-50";
1508
+ moveFocus: (direction: "up" | "down" | "left" | "right") => void;
1509
+ };
1510
+
1511
+ interface ClipboardConfig {
1512
+ enableCopy?: boolean;
1513
+ enablePaste?: boolean;
1514
+ copyFormat?: 'csv' | 'tsv' | 'json';
1515
+ includeHeaders?: boolean;
1516
+ }
1517
+ declare function useClipboard<TData>(table: Table<TData>, config?: ClipboardConfig): {
1518
+ copyToClipboard: (customData?: string) => Promise<boolean>;
1519
+ pasteFromClipboard: () => Promise<string>;
1520
+ getSelectedData: () => {
1521
+ rows: Row<TData>[];
1522
+ columns: _tanstack_table_core.Column<TData, unknown>[];
1523
+ };
1524
+ };
1525
+
1526
+ interface CellPosition {
1527
+ rowIndex: number;
1528
+ columnIndex: number;
1529
+ }
1530
+ interface CellRange {
1531
+ start: CellPosition;
1532
+ end: CellPosition;
1533
+ }
1534
+ declare function useCellRangeSelection(): {
1535
+ range: CellRange;
1536
+ isSelecting: boolean;
1537
+ handleMouseDown: (rowIndex: number, columnIndex: number, event: React.MouseEvent) => void;
1538
+ handleMouseEnter: (rowIndex: number, columnIndex: number) => void;
1539
+ handleMouseUp: () => void;
1540
+ isCellInRange: (rowIndex: number, columnIndex: number) => boolean;
1541
+ getCellClassName: (rowIndex: number, columnIndex: number) => string;
1542
+ clearRange: () => void;
1543
+ getSelectedCells: () => CellPosition[];
1544
+ selectAll: (rowCount: number, columnCount: number) => void;
1545
+ };
1546
+
1547
+ interface UseDataGridStateProps<TData> {
1548
+ data: TData[];
1549
+ selectedRowIds: string[];
1550
+ enablePagination: boolean;
1551
+ paginationPageSize: number;
1552
+ frozenColumns: string[];
1553
+ enableViewToggle: boolean;
1554
+ viewMode: 'all' | 'selected';
1555
+ enableRowReordering: boolean;
1556
+ getRowId?: (row: TData) => string;
1557
+ }
1558
+ declare function useDataGridState<TData>({ data, selectedRowIds, enablePagination, paginationPageSize, frozenColumns, enableViewToggle, viewMode, enableRowReordering, getRowId, }: UseDataGridStateProps<TData>): {
1559
+ sorting: SortingState;
1560
+ setSorting: React$1.Dispatch<React$1.SetStateAction<SortingState>>;
1561
+ columnFilters: ColumnFiltersState;
1562
+ setColumnFilters: React$1.Dispatch<React$1.SetStateAction<ColumnFiltersState>>;
1563
+ columnVisibility: VisibilityState;
1564
+ setColumnVisibility: React$1.Dispatch<React$1.SetStateAction<VisibilityState>>;
1565
+ rowSelection: Record<string, boolean>;
1566
+ setRowSelection: React$1.Dispatch<React$1.SetStateAction<Record<string, boolean>>>;
1567
+ globalFilter: string;
1568
+ setGlobalFilter: React$1.Dispatch<React$1.SetStateAction<string>>;
1569
+ expanded: ExpandedState;
1570
+ setExpanded: React$1.Dispatch<React$1.SetStateAction<ExpandedState>>;
1571
+ frozenColumnsState: Set<string>;
1572
+ setFrozenColumnsState: React$1.Dispatch<React$1.SetStateAction<Set<string>>>;
1573
+ reorderedData: TData[];
1574
+ setReorderedData: React$1.Dispatch<React$1.SetStateAction<TData[]>>;
1575
+ pagination: {
1576
+ pageIndex: number;
1577
+ pageSize: number;
1578
+ };
1579
+ setPagination: React$1.Dispatch<React$1.SetStateAction<{
1580
+ pageIndex: number;
1581
+ pageSize: number;
1582
+ }>>;
1583
+ columnSearches: Record<string, string>;
1584
+ setColumnSearches: React$1.Dispatch<React$1.SetStateAction<Record<string, string>>>;
1585
+ isColumnSearchActive: Record<string, boolean>;
1586
+ setIsColumnSearchActive: React$1.Dispatch<React$1.SetStateAction<Record<string, boolean>>>;
1587
+ filteredData: TData[];
1588
+ stableRowSelection: Record<string, boolean>;
1589
+ safeSelectedCount: number;
1590
+ toggleShouldBeVisible: boolean;
1591
+ };
1592
+
1593
+ /**
1594
+ * Export data to CSV format
1595
+ */
1596
+ declare function exportToCSV<TData>(data: TData[], filename?: string): void;
1597
+ /**
1598
+ * Export data to Excel format
1599
+ */
1600
+ declare function exportToExcel<TData>(data: TData[], filename?: string): Promise<void>;
1601
+ /**
1602
+ * Export data to PDF format
1603
+ */
1604
+ declare function exportToPDF<TData>(data: TData[], filename?: string): void;
1605
+ /**
1606
+ * Export data to JSON format
1607
+ */
1608
+ declare function exportToJSON<TData>(data: TData[], filename?: string): void;
1609
+ /**
1610
+ * Unified export function that handles all formats
1611
+ */
1612
+ declare function exportData<TData>(data: TData[], format: 'excel' | 'csv' | 'pdf' | 'json', filename?: string): Promise<void>;
1613
+
1614
+ /**
1615
+ * Result of import operation
1616
+ */
1617
+ interface ImportResult<TData> {
1618
+ success: boolean;
1619
+ data: TData[];
1620
+ errors: string[];
1621
+ warnings: string[];
1622
+ totalRows: number;
1623
+ validRows: number;
1624
+ }
1625
+ /**
1626
+ * Import data from CSV file
1627
+ */
1628
+ declare function importFromCSV<TData>(file: File, onProgress?: (progress: number) => void): Promise<ImportResult<TData>>;
1629
+ /**
1630
+ * Import data from Excel file
1631
+ */
1632
+ declare function importFromExcel<TData>(file: File, onProgress?: (progress: number) => void): Promise<ImportResult<TData>>;
1633
+ /**
1634
+ * Import data from JSON file
1635
+ */
1636
+ declare function importFromJSON<TData>(file: File, onProgress?: (progress: number) => void): Promise<ImportResult<TData>>;
1637
+ /**
1638
+ * Unified import function that handles all formats
1639
+ */
1640
+ declare function importData<TData>(file: File, onProgress?: (progress: number) => void): Promise<ImportResult<TData>>;
1641
+
1642
+ interface FilterConfig {
1643
+ id: string;
1644
+ label: string;
1645
+ type: 'dropdown' | 'multiselect';
1646
+ options: Array<{
1647
+ value: string;
1648
+ label: string;
1649
+ }>;
1650
+ placeholder?: string;
1651
+ }
1652
+ interface ReportOption {
1653
+ value: string;
1654
+ label: string;
1655
+ dividerAfter?: boolean;
1656
+ }
1657
+ interface ToggleOption {
1658
+ value: string;
1659
+ label: string;
1660
+ }
1661
+ interface TimeFilterSelection {
1662
+ type: 'Day' | 'Week' | 'Month' | 'Quarter' | 'Year';
1663
+ /** For Day type: selected days like ['today', 'yesterday', 'last7'] */
1664
+ days?: string[];
1665
+ /** For Week type: selected weeks like ['this', 'last', 'last2'] */
1666
+ weeks?: string[];
1667
+ /** For Month type: selected months like ['this', 'last', 'jan', 'feb'] */
1668
+ months?: string[];
1669
+ /** For Quarter type: selected quarters like ['Q1', 'Q2'] */
1670
+ quarters?: string[];
1671
+ /** For Year type: selected years */
1672
+ years?: string[];
1673
+ }
1674
+ interface FilterBarProps {
1675
+ /** Dashboard title */
1676
+ title: string;
1677
+ /** Dynamic context label (shown as subtitle) */
1678
+ contextLabel?: string;
1679
+ /** Secondary toggle (e.g., Job/Value) */
1680
+ secondaryToggle?: {
1681
+ options: ToggleOption[];
1682
+ value: string;
1683
+ onChange: (value: string) => void;
1684
+ };
1685
+ /** Time filter */
1686
+ timeFilter?: 'Day' | 'Week' | 'Month' | 'Quarter' | 'Year';
1687
+ onTimeFilterChange?: (filter: 'Day' | 'Week' | 'Month' | 'Quarter' | 'Year') => void;
1688
+ /** Time filter selection (for dropdown selections) */
1689
+ timeFilterSelection?: TimeFilterSelection;
1690
+ onTimeFilterSelectionChange?: (selection: TimeFilterSelection) => void;
1691
+ /** Hide time filter toggle */
1692
+ hideTimeFilter?: boolean;
1693
+ /** Filter configurations */
1694
+ filters?: FilterConfig[];
1695
+ /** Filter values (controlled) */
1696
+ filterValues?: Record<string, string | string[]>;
1697
+ onFilterChange?: (filterId: string, value: string | string[]) => void;
1698
+ /** Date range */
1699
+ dateFrom?: Date;
1700
+ dateTo?: Date;
1701
+ onDateFromChange?: (date: Date | undefined) => void;
1702
+ onDateToChange?: (date: Date | undefined) => void;
1703
+ /** Apply/Reset handlers */
1704
+ onApply?: () => void;
1705
+ onReset?: () => void;
1706
+ /** Reports dropdown */
1707
+ reports?: ReportOption[];
1708
+ onReportSelect?: (reportValue: string) => void;
1709
+ /** Export dropdown (Print, Excel, PDF) - shows automatically when onExport is provided */
1710
+ onExport?: (exportType: 'print' | 'excel' | 'pdf') => void;
1711
+ /** Hide filter button */
1712
+ hideFilterButton?: boolean;
1713
+ /** Hide date range picker */
1714
+ hideDateRange?: boolean;
1715
+ /** Show Apply button */
1716
+ showApplyButton?: boolean;
1717
+ /** Insights button */
1718
+ showInsights?: boolean;
1719
+ insightsActive?: boolean;
1720
+ onInsightsClick?: () => void;
1721
+ /** Additional content */
1722
+ children?: React$1.ReactNode;
1723
+ className?: string;
1724
+ /** Layout variant: 'default' or 'centered' (title in center) */
1725
+ layout?: 'default' | 'centered';
1726
+ }
1727
+ declare function FilterBar({ title, contextLabel, secondaryToggle, timeFilter, onTimeFilterChange, timeFilterSelection, onTimeFilterSelectionChange, hideTimeFilter, filters, filterValues, onFilterChange, dateFrom, dateTo, onDateFromChange, onDateToChange, onApply, onReset, reports, onReportSelect, onExport, hideFilterButton, hideDateRange, showApplyButton, showInsights, insightsActive, onInsightsClick, children, className, layout }: FilterBarProps): react_jsx_runtime.JSX.Element;
1728
+
1729
+ interface DashboardTooltipProps {
1730
+ /** Tooltip content */
1731
+ content: React$1.ReactNode;
1732
+ /** Position of tooltip relative to trigger */
1733
+ position?: 'top' | 'bottom' | 'left' | 'right';
1734
+ /** Delay before showing tooltip (ms) */
1735
+ delay?: number;
1736
+ /** Children element that triggers tooltip */
1737
+ children: React$1.ReactElement;
1738
+ /** Additional class for tooltip container */
1739
+ className?: string;
1740
+ /** Disable tooltip */
1741
+ disabled?: boolean;
1742
+ }
1743
+ /**
1744
+ * DashboardTooltip - Hover tooltip for dashboard elements
1745
+ *
1746
+ * Usage:
1747
+ * <DashboardTooltip content="This is a tooltip">
1748
+ * <button>Hover me</button>
1749
+ * </DashboardTooltip>
1750
+ */
1751
+ declare function DashboardTooltip({ content, position, delay, children, className, disabled }: DashboardTooltipProps): react_jsx_runtime.JSX.Element;
1752
+
1753
+ interface AreaChartDataItem {
1754
+ [key: string]: string | number;
1755
+ }
1756
+ interface AreaChartSeries {
1757
+ key: string;
1758
+ name: string;
1759
+ color?: string;
1760
+ }
1761
+ interface AreaChartProps {
1762
+ data: AreaChartDataItem[];
1763
+ xKey: string;
1764
+ series: AreaChartSeries[];
1765
+ height?: number;
1766
+ showLegend?: boolean;
1767
+ showGrid?: boolean;
1768
+ smooth?: boolean;
1769
+ className?: string;
1770
+ }
1771
+ /**
1772
+ * AreaChart - ECharts Area Chart component
1773
+ */
1774
+ declare function AreaChart({ data, xKey, series, height, showLegend, showGrid, smooth, className }: AreaChartProps): react_jsx_runtime.JSX.Element;
1775
+
1776
+ interface BarChartDataItem {
1777
+ [key: string]: string | number;
1778
+ }
1779
+ interface BarChartSeries {
1780
+ key: string;
1781
+ name: string;
1782
+ color?: string;
1783
+ }
1784
+ interface BarChartProps {
1785
+ data: BarChartDataItem[];
1786
+ xKey: string;
1787
+ series: BarChartSeries[];
1788
+ height?: number;
1789
+ showLegend?: boolean;
1790
+ showGrid?: boolean;
1791
+ horizontal?: boolean;
1792
+ stacked?: boolean;
1793
+ className?: string;
1794
+ }
1795
+ /**
1796
+ * BarChart - ECharts Bar Chart component
1797
+ */
1798
+ declare function BarChart({ data, xKey, series, height, showLegend, showGrid, horizontal, stacked, className }: BarChartProps): react_jsx_runtime.JSX.Element;
1799
+
1800
+ interface DonutChartDataItem {
1801
+ name: string;
1802
+ value: number;
1803
+ color?: string;
1804
+ }
1805
+ interface DonutChartProps {
1806
+ data: DonutChartDataItem[];
1807
+ height?: number;
1808
+ showLegend?: boolean;
1809
+ centerLabel?: string;
1810
+ centerValue?: string;
1811
+ innerRadius?: string;
1812
+ outerRadius?: string;
1813
+ className?: string;
1814
+ }
1815
+ /**
1816
+ * DonutChart - ECharts Donut/Pie Chart component
1817
+ * On hover: shows slice name + value in the center of the donut.
1818
+ * On mouseout: restores the default centerLabel / centerValue.
1819
+ */
1820
+ declare function DonutChart({ data, height, showLegend, centerLabel, centerValue, innerRadius, outerRadius, className }: DonutChartProps): react_jsx_runtime.JSX.Element;
1821
+
1822
+ interface GaugeChartProps {
1823
+ /** Current value (0-100 or custom max) */
1824
+ value: number;
1825
+ /** Maximum value */
1826
+ max?: number;
1827
+ /** Minimum value */
1828
+ min?: number;
1829
+ /** Chart height in pixels */
1830
+ height?: number;
1831
+ /** Title shown below the value */
1832
+ title?: string;
1833
+ /** Unit suffix (%, $, etc.) */
1834
+ unit?: string;
1835
+ /** Color or gradient stops */
1836
+ color?: string | {
1837
+ offset: number;
1838
+ color: string;
1839
+ }[];
1840
+ /** Show axis ticks */
1841
+ showAxis?: boolean;
1842
+ /** Gauge style variant */
1843
+ variant?: 'default' | 'progress' | 'meter';
1844
+ /** Class name for wrapper */
1845
+ className?: string;
1846
+ }
1847
+ /**
1848
+ * GaugeChart - ECharts Gauge component
1849
+ *
1850
+ * Variants:
1851
+ * - default: Half-donut arc, no pointer, value centered — clean and modern
1852
+ * - progress: Full ring progress with rounded cap
1853
+ * - meter: Speedometer with pointer needle
1854
+ */
1855
+ declare function GaugeChart({ value, max, min, height, title, unit, color, showAxis, variant, className }: GaugeChartProps): react_jsx_runtime.JSX.Element;
1856
+
1857
+ interface LineChartDataItem {
1858
+ [key: string]: string | number;
1859
+ }
1860
+ interface LineChartSeries {
1861
+ key: string;
1862
+ name: string;
1863
+ color?: string;
1864
+ /** Line style: solid, dashed, dotted */
1865
+ lineStyle?: 'solid' | 'dashed' | 'dotted';
1866
+ /** Show data points */
1867
+ showSymbol?: boolean;
1868
+ }
1869
+ interface LineChartProps {
1870
+ data: LineChartDataItem[];
1871
+ xKey: string;
1872
+ series: LineChartSeries[];
1873
+ height?: number;
1874
+ showLegend?: boolean;
1875
+ showGrid?: boolean;
1876
+ /** Smooth curve or straight lines */
1877
+ smooth?: boolean;
1878
+ /** Show data labels on points */
1879
+ showLabels?: boolean;
1880
+ /** Y-axis minimum value */
1881
+ yMin?: number;
1882
+ /** Y-axis maximum value */
1883
+ yMax?: number;
1884
+ className?: string;
1885
+ }
1886
+ /**
1887
+ * LineChart - ECharts Line Chart component (no area fill)
1888
+ */
1889
+ declare function LineChart({ data, xKey, series, height, showLegend, showGrid, smooth, showLabels, yMin, yMax, className }: LineChartProps): react_jsx_runtime.JSX.Element;
1890
+
1891
+ interface RadarChartIndicator {
1892
+ /** Dimension name */
1893
+ name: string;
1894
+ /** Maximum value for this dimension */
1895
+ max: number;
1896
+ /** Minimum value (default 0) */
1897
+ min?: number;
1898
+ }
1899
+ interface RadarChartSeries {
1900
+ name: string;
1901
+ values: number[];
1902
+ color?: string;
1903
+ /** Fill area opacity (0-1) */
1904
+ areaOpacity?: number;
1905
+ }
1906
+ interface RadarChartProps {
1907
+ /** Dimensions/axes of the radar */
1908
+ indicators: RadarChartIndicator[];
1909
+ /** Data series to plot */
1910
+ series: RadarChartSeries[];
1911
+ height?: number;
1912
+ showLegend?: boolean;
1913
+ /** Radar shape: polygon or circle */
1914
+ shape?: 'polygon' | 'circle';
1915
+ /** Number of split rings */
1916
+ splitNumber?: number;
1917
+ className?: string;
1918
+ }
1919
+ /**
1920
+ * RadarChart - ECharts Radar/Spider Chart for multi-dimensional data
1921
+ */
1922
+ declare function RadarChart({ indicators, series, height, showLegend, shape, splitNumber, className }: RadarChartProps): react_jsx_runtime.JSX.Element;
1923
+
1924
+ interface FunnelChartDataItem {
1925
+ name: string;
1926
+ value: number;
1927
+ color?: string;
1928
+ }
1929
+ interface FunnelChartProps {
1930
+ data: FunnelChartDataItem[];
1931
+ height?: number;
1932
+ showLegend?: boolean;
1933
+ /** Show labels on funnel stages */
1934
+ showLabels?: boolean;
1935
+ /** Label position */
1936
+ labelPosition?: 'left' | 'right' | 'inside' | 'center';
1937
+ /** Funnel orientation */
1938
+ orient?: 'vertical' | 'horizontal';
1939
+ /** Sort order */
1940
+ sort?: 'ascending' | 'descending' | 'none';
1941
+ /** Gap between stages */
1942
+ gap?: number;
1943
+ className?: string;
1944
+ }
1945
+ /**
1946
+ * FunnelChart - ECharts Funnel Chart for conversion/process flows
1947
+ */
1948
+ declare function FunnelChart({ data, height, showLegend, showLabels, labelPosition, orient, sort, gap, className }: FunnelChartProps): react_jsx_runtime.JSX.Element;
1949
+
1950
+ interface HeatmapChartDataItem {
1951
+ /** X-axis index or value */
1952
+ x: number | string;
1953
+ /** Y-axis index or value */
1954
+ y: number | string;
1955
+ /** Heat value */
1956
+ value: number;
1957
+ }
1958
+ interface HeatmapChartProps {
1959
+ data: HeatmapChartDataItem[];
1960
+ /** X-axis categories */
1961
+ xCategories: string[];
1962
+ /** Y-axis categories */
1963
+ yCategories: string[];
1964
+ height?: number;
1965
+ /** Show value labels in cells */
1966
+ showLabels?: boolean;
1967
+ /** Color range [min, max] */
1968
+ colorRange?: [string, string];
1969
+ /** Min value for color scale */
1970
+ minValue?: number;
1971
+ /** Max value for color scale */
1972
+ maxValue?: number;
1973
+ /** Show visual map legend */
1974
+ showVisualMap?: boolean;
1975
+ className?: string;
1976
+ }
1977
+ /**
1978
+ * HeatmapChart - ECharts Heatmap for time/category based data visualization
1979
+ */
1980
+ declare function HeatmapChart({ data, xCategories, yCategories, height, showLabels, colorRange, minValue, maxValue, showVisualMap, className }: HeatmapChartProps): react_jsx_runtime.JSX.Element;
1981
+
1982
+ interface ScatterChartDataItem {
1983
+ /** X value */
1984
+ x: number;
1985
+ /** Y value */
1986
+ y: number;
1987
+ /** Optional size value for bubble charts */
1988
+ size?: number;
1989
+ /** Optional label */
1990
+ label?: string;
1991
+ }
1992
+ interface ScatterChartSeries {
1993
+ name: string;
1994
+ data: ScatterChartDataItem[];
1995
+ color?: string;
1996
+ /** Symbol shape */
1997
+ symbol?: 'circle' | 'rect' | 'triangle' | 'diamond' | 'pin' | 'arrow';
1998
+ /** Fixed symbol size (ignored if data has size values) */
1999
+ symbolSize?: number;
2000
+ }
2001
+ interface ScatterChartProps {
2002
+ series: ScatterChartSeries[];
2003
+ height?: number;
2004
+ showLegend?: boolean;
2005
+ showGrid?: boolean;
2006
+ /** X-axis label */
2007
+ xAxisName?: string;
2008
+ /** Y-axis label */
2009
+ yAxisName?: string;
2010
+ /** Enable bubble mode (size based on data) */
2011
+ bubbleMode?: boolean;
2012
+ /** Size range for bubble mode [min, max] */
2013
+ sizeRange?: [number, number];
2014
+ className?: string;
2015
+ }
2016
+ /**
2017
+ * ScatterChart - ECharts Scatter/Bubble Chart for correlation data
2018
+ */
2019
+ declare function ScatterChart({ series, height, showLegend, showGrid, xAxisName, yAxisName, bubbleMode, sizeRange, className }: ScatterChartProps): react_jsx_runtime.JSX.Element;
2020
+
2021
+ interface ParetoChartDataItem {
2022
+ name: string;
2023
+ value: number;
2024
+ }
2025
+ interface ParetoChartProps {
2026
+ data: ParetoChartDataItem[];
2027
+ height?: number;
2028
+ showLegend?: boolean;
2029
+ /** Bar color */
2030
+ barColor?: string;
2031
+ /** Line color for cumulative percentage */
2032
+ lineColor?: string;
2033
+ /** Y-axis label for values */
2034
+ valueAxisName?: string;
2035
+ className?: string;
2036
+ }
2037
+ /**
2038
+ * ParetoChart - Combined bar and line chart showing values and cumulative percentage
2039
+ * Used for identifying the "vital few" from the "trivial many" (80/20 rule)
2040
+ */
2041
+ declare function ParetoChart({ data, height, showLegend, barColor, lineColor, valueAxisName, className }: ParetoChartProps): react_jsx_runtime.JSX.Element;
2042
+
2043
+ interface HistogramChartProps {
2044
+ /** Raw data values to create histogram from */
2045
+ data: number[];
2046
+ /** Number of bins (default: auto-calculated) */
2047
+ bins?: number;
2048
+ height?: number;
2049
+ showLegend?: boolean;
2050
+ /** Bar color */
2051
+ color?: string;
2052
+ /** X-axis label */
2053
+ xAxisName?: string;
2054
+ /** Y-axis label */
2055
+ yAxisName?: string;
2056
+ /** Show normal distribution curve overlay */
2057
+ showNormalCurve?: boolean;
2058
+ className?: string;
2059
+ }
2060
+ /**
2061
+ * HistogramChart - Frequency distribution chart
2062
+ * Automatically bins data and shows distribution
2063
+ */
2064
+ declare function HistogramChart({ data, bins, height, showLegend, color, xAxisName, yAxisName, showNormalCurve, className }: HistogramChartProps): react_jsx_runtime.JSX.Element;
2065
+
2066
+ interface BubbleChartDataItem {
2067
+ /** X-axis value */
2068
+ x: number;
2069
+ /** Y-axis value */
2070
+ y: number;
2071
+ /** Bubble size value */
2072
+ size: number;
2073
+ /** Optional label */
2074
+ label?: string;
2075
+ }
2076
+ interface BubbleChartSeries {
2077
+ name: string;
2078
+ data: BubbleChartDataItem[];
2079
+ color?: string;
2080
+ }
2081
+ interface BubbleChartProps {
2082
+ series: BubbleChartSeries[];
2083
+ height?: number;
2084
+ showLegend?: boolean;
2085
+ /** X-axis label */
2086
+ xAxisName?: string;
2087
+ /** Y-axis label */
2088
+ yAxisName?: string;
2089
+ /** Size axis label (for tooltip) */
2090
+ sizeAxisName?: string;
2091
+ /** Size range [min, max] in pixels */
2092
+ sizeRange?: [number, number];
2093
+ /** Bubble opacity (0-1) */
2094
+ opacity?: number;
2095
+ className?: string;
2096
+ }
2097
+ /**
2098
+ * BubbleChart - Three-dimensional scatter plot with size encoding
2099
+ * Shows relationship between X, Y, and Size dimensions
2100
+ */
2101
+ declare function BubbleChart({ series, height, showLegend, xAxisName, yAxisName, sizeAxisName, sizeRange, opacity, className }: BubbleChartProps): react_jsx_runtime.JSX.Element;
2102
+
2103
+ interface BoxPlotChartDataItem {
2104
+ /** Category name */
2105
+ name: string;
2106
+ /** Raw data values to calculate box plot from */
2107
+ values: number[];
2108
+ }
2109
+ interface BoxPlotChartProps {
2110
+ data: BoxPlotChartDataItem[];
2111
+ height?: number;
2112
+ showLegend?: boolean;
2113
+ /** Box color */
2114
+ color?: string;
2115
+ /** Orientation */
2116
+ horizontal?: boolean;
2117
+ /** Show outliers */
2118
+ showOutliers?: boolean;
2119
+ className?: string;
2120
+ }
2121
+ /**
2122
+ * BoxPlotChart - Statistical box and whisker plot
2123
+ * Shows min, Q1, median, Q3, max and outliers
2124
+ */
2125
+ declare function BoxPlotChart({ data, height, showLegend, color, horizontal, showOutliers, className }: BoxPlotChartProps): react_jsx_runtime.JSX.Element;
2126
+
2127
+ interface GeoMapDataItem {
2128
+ /** Location name */
2129
+ name: string;
2130
+ /** Value for this location */
2131
+ value: number;
2132
+ }
2133
+ interface GeoMapMarker {
2134
+ /** Marker name/label */
2135
+ name: string;
2136
+ /** Coordinates [longitude, latitude] */
2137
+ coords: [number, number];
2138
+ /** Optional value (affects size) */
2139
+ value?: number;
2140
+ }
2141
+ interface GeoMapProps {
2142
+ /** Point markers on the map */
2143
+ markers?: GeoMapMarker[];
2144
+ height?: number;
2145
+ /** Marker color */
2146
+ markerColor?: string;
2147
+ /** Marker size range [min, max] */
2148
+ markerSizeRange?: [number, number];
2149
+ /** Show ripple effect */
2150
+ showRipple?: boolean;
2151
+ /** Map background color */
2152
+ mapColor?: string;
2153
+ /** Map border color */
2154
+ borderColor?: string;
2155
+ /** Show state labels on hover */
2156
+ showStateLabels?: boolean;
2157
+ className?: string;
2158
+ }
2159
+ /**
2160
+ * GeoMap - Geographic scatter/bubble map for India
2161
+ * Shows location markers with optional size based on values
2162
+ * Includes all Indian states and union territories
2163
+ */
2164
+ declare function GeoMap({ markers, height, markerColor, markerSizeRange, showRipple, mapColor, borderColor, showStateLabels, className }: GeoMapProps): react_jsx_runtime.JSX.Element;
2165
+
2166
+ interface TreemapDataItem {
2167
+ /** Node name */
2168
+ name: string;
2169
+ /** Node value (determines size) */
2170
+ value: number;
2171
+ /** Optional children for hierarchical data */
2172
+ children?: TreemapDataItem[];
2173
+ /** Optional custom color */
2174
+ color?: string;
2175
+ }
2176
+ interface TreemapChartProps {
2177
+ data: TreemapDataItem[];
2178
+ height?: number;
2179
+ /** Show breadcrumb navigation */
2180
+ showBreadcrumb?: boolean;
2181
+ /** Color palette */
2182
+ colors?: string[];
2183
+ /** Show labels on leaves */
2184
+ showLabels?: boolean;
2185
+ /** Label position */
2186
+ labelPosition?: 'inside' | 'insideTopLeft' | 'insideBottomLeft';
2187
+ /** Enable drill-down on click */
2188
+ drillDown?: boolean;
2189
+ className?: string;
2190
+ }
2191
+ /**
2192
+ * TreemapChart - Hierarchical data visualization
2193
+ * Great for: Cost breakdown, category distribution, budget allocation
2194
+ */
2195
+ declare function TreemapChart({ data, height, showBreadcrumb, colors, showLabels, labelPosition, drillDown, className }: TreemapChartProps): react_jsx_runtime.JSX.Element;
2196
+
2197
+ interface SankeyNode {
2198
+ /** Node name (must be unique) */
2199
+ name: string;
2200
+ /** Optional custom color */
2201
+ color?: string;
2202
+ /** Optional depth level (0 = leftmost) */
2203
+ depth?: number;
2204
+ }
2205
+ interface SankeyLink {
2206
+ /** Source node name */
2207
+ source: string;
2208
+ /** Target node name */
2209
+ target: string;
2210
+ /** Flow value */
2211
+ value: number;
2212
+ /** Optional custom color */
2213
+ color?: string;
2214
+ }
2215
+ interface SankeyChartProps {
2216
+ /** Nodes in the diagram */
2217
+ nodes: SankeyNode[];
2218
+ /** Links/flows between nodes */
2219
+ links: SankeyLink[];
2220
+ height?: number;
2221
+ /** Orientation */
2222
+ orient?: 'horizontal' | 'vertical';
2223
+ /** Node width */
2224
+ nodeWidth?: number;
2225
+ /** Gap between nodes */
2226
+ nodeGap?: number;
2227
+ /** Show labels */
2228
+ showLabels?: boolean;
2229
+ /** Color palette for nodes */
2230
+ colors?: string[];
2231
+ /** Link opacity */
2232
+ linkOpacity?: number;
2233
+ className?: string;
2234
+ }
2235
+ /**
2236
+ * SankeyChart - Flow/relationship visualization
2237
+ * Great for: Material flow, process flow, cost flow, conversion funnels
2238
+ */
2239
+ declare function SankeyChart({ nodes, links, height, orient, nodeWidth, nodeGap, showLabels, colors, linkOpacity, className }: SankeyChartProps): react_jsx_runtime.JSX.Element;
2240
+
2241
+ interface WaterfallDataItem {
2242
+ /** Category/step name */
2243
+ name: string;
2244
+ /** Value (positive = increase, negative = decrease) */
2245
+ value: number;
2246
+ /** Mark as total/subtotal (shows cumulative value) */
2247
+ isTotal?: boolean;
2248
+ }
2249
+ interface WaterfallChartProps {
2250
+ data: WaterfallDataItem[];
2251
+ height?: number;
2252
+ /** Color for positive values */
2253
+ increaseColor?: string;
2254
+ /** Color for negative values */
2255
+ decreaseColor?: string;
2256
+ /** Color for total bars */
2257
+ totalColor?: string;
2258
+ /** Show values on bars */
2259
+ showValues?: boolean;
2260
+ /** Horizontal orientation */
2261
+ horizontal?: boolean;
2262
+ /** Y-axis label */
2263
+ yAxisName?: string;
2264
+ className?: string;
2265
+ }
2266
+ /**
2267
+ * WaterfallChart - Cumulative effect visualization
2268
+ * Great for: Profit/loss analysis, cost breakdown, variance analysis
2269
+ */
2270
+ declare function WaterfallChart({ data, height, increaseColor, decreaseColor, totalColor, showValues, horizontal, yAxisName, className }: WaterfallChartProps): react_jsx_runtime.JSX.Element;
2271
+
2272
+ interface BulletChartDataItem {
2273
+ /** Category name */
2274
+ name: string;
2275
+ /** Actual value */
2276
+ actual: number;
2277
+ /** Target value */
2278
+ target: number;
2279
+ /** Range thresholds [poor, satisfactory, good] */
2280
+ ranges?: [number, number, number];
2281
+ }
2282
+ interface BulletChartProps {
2283
+ data: BulletChartDataItem[];
2284
+ height?: number;
2285
+ /** Actual bar color */
2286
+ actualColor?: string;
2287
+ /** Target marker color */
2288
+ targetColor?: string;
2289
+ /** Range colors [poor, satisfactory, good] */
2290
+ rangeColors?: [string, string, string];
2291
+ /** Show values on bars */
2292
+ showValues?: boolean;
2293
+ /** Horizontal orientation (default) */
2294
+ horizontal?: boolean;
2295
+ className?: string;
2296
+ }
2297
+ /**
2298
+ * BulletChart - Compact KPI vs Target visualization
2299
+ * Great for: KPI dashboards, performance metrics, goal tracking
2300
+ * Alternative to gauge charts when space is limited
2301
+ */
2302
+ declare function BulletChart({ data, height, actualColor, targetColor, rangeColors, showValues, horizontal, className }: BulletChartProps): react_jsx_runtime.JSX.Element;
2303
+
2304
+ interface SparklineProps {
2305
+ /** Data points */
2306
+ data: number[];
2307
+ /** Chart type */
2308
+ type?: 'line' | 'area' | 'bar';
2309
+ /** Height in pixels */
2310
+ height?: number;
2311
+ /** Width (can be percentage or pixels) */
2312
+ width?: number | string;
2313
+ /** Line/bar color */
2314
+ color?: string;
2315
+ /** Area fill color (for area type) */
2316
+ fillColor?: string;
2317
+ /** Show end dot */
2318
+ showEndDot?: boolean;
2319
+ /** Show min/max markers */
2320
+ showMinMax?: boolean;
2321
+ /** Smooth line */
2322
+ smooth?: boolean;
2323
+ /** Reference line value */
2324
+ referenceLine?: number;
2325
+ className?: string;
2326
+ }
2327
+ /**
2328
+ * Sparkline - Compact inline trend visualization
2329
+ * Great for: KPI cards, table cells, compact trend indicators
2330
+ */
2331
+ declare function Sparkline({ data, type, height, width, color, fillColor, showEndDot, showMinMax, smooth, referenceLine, className }: SparklineProps): react_jsx_runtime.JSX.Element;
2332
+
2333
+ interface GanttTask {
2334
+ id: string;
2335
+ name: string;
2336
+ start: string | Date;
2337
+ end: string | Date;
2338
+ progress?: number;
2339
+ color?: string;
2340
+ category?: string;
2341
+ dependencies?: string[];
2342
+ }
2343
+ interface GanttChartProps {
2344
+ tasks: GanttTask[];
2345
+ height?: number;
2346
+ showProgress?: boolean;
2347
+ showToday?: boolean;
2348
+ showGrid?: boolean;
2349
+ dateFormat?: 'short' | 'medium' | 'long';
2350
+ className?: string;
2351
+ }
2352
+ /**
2353
+ * GanttChart - ECharts Gantt Chart component
2354
+ *
2355
+ * Displays project timelines with tasks, progress, and dependencies.
2356
+ * Built on ECharts custom series for flexibility.
2357
+ */
2358
+ declare function GanttChart({ tasks, height, showProgress, showToday, showGrid, dateFormat, className }: GanttChartProps): react_jsx_runtime.JSX.Element;
2359
+
2360
+ interface FlowMapMarker {
2361
+ name: string;
2362
+ coords: [number, number];
2363
+ value?: number;
2364
+ }
2365
+ interface FlowMapLine {
2366
+ name?: string;
2367
+ from: [number, number];
2368
+ to: [number, number];
2369
+ value?: number;
2370
+ color?: string;
2371
+ }
2372
+ interface FlowMapProps {
2373
+ markers?: FlowMapMarker[];
2374
+ lines?: FlowMapLine[];
2375
+ height?: number;
2376
+ markerColor?: string;
2377
+ lineColor?: string;
2378
+ markerSizeRange?: [number, number];
2379
+ lineWidth?: number;
2380
+ showRipple?: boolean;
2381
+ showLineEffect?: boolean;
2382
+ effectSymbol?: 'circle' | 'arrow' | 'plane' | 'pin';
2383
+ mapColor?: string;
2384
+ borderColor?: string;
2385
+ showLabels?: boolean;
2386
+ curveness?: number;
2387
+ className?: string;
2388
+ }
2389
+ /**
2390
+ * FlowMap - Geographic flow/route visualization
2391
+ *
2392
+ * Combines scatter markers with animated flow lines between locations.
2393
+ * Perfect for logistics, shipping routes, migration, trade flows.
2394
+ *
2395
+ * Uses ECharts Lines series for flow visualization.
2396
+ */
2397
+ declare function FlowMap({ markers, lines, height, markerColor, lineColor, markerSizeRange, lineWidth, showRipple, showLineEffect, effectSymbol, mapColor, borderColor, showLabels, curveness, className }: FlowMapProps): react_jsx_runtime.JSX.Element;
2398
+
2399
+ interface ChartCardProps {
2400
+ title?: string;
2401
+ description?: string;
2402
+ children: React$1.ReactNode;
2403
+ className?: string;
2404
+ headerAction?: React$1.ReactNode;
2405
+ }
2406
+ /**
2407
+ * ChartCard - Container for chart components with title and description
2408
+ */
2409
+ declare function ChartCard({ title, description, children, className, headerAction }: ChartCardProps): react_jsx_runtime.JSX.Element;
2410
+
2411
+ type KpiAccent = 'primary' | 'success' | 'warning' | 'error' | 'info' | 'tertiary' | 'secondary';
2412
+ interface KpiProps {
2413
+ /** KPI title/label — uppercase, small, accent-colored */
2414
+ title: string;
2415
+ /** Main value to display */
2416
+ value: string | number;
2417
+ /** Optional unit suffix (%, $, etc.) — appended after value */
2418
+ unit?: string;
2419
+ /** Optional badge in bottom-right corner (e.g., "12 actions") — shown only when `change` is undefined */
2420
+ badge?: string | number;
2421
+ /** Optional badge label (e.g., "actions") shown after the badge value */
2422
+ badgeLabel?: string;
2423
+ /** Change from previous period — renders trend pill (overrides badge) */
2424
+ change?: number;
2425
+ /** Change label (e.g., "vs last week") — small text after the trend pill */
2426
+ changeLabel?: string;
2427
+ /** Optional subtitle/description below value */
2428
+ subtitle?: string;
2429
+ /** Decorative watermark icon (bottom-right, faded) */
2430
+ icon?: LucideIcon;
2431
+ /** Accent color — drives title color, background tint, and watermark */
2432
+ accent?: KpiAccent;
2433
+ /** Active/selected state — adds ring and stronger background */
2434
+ active?: boolean;
2435
+ /** Size variant */
2436
+ size?: 'sm' | 'md' | 'lg';
2437
+ /** Loading skeleton */
2438
+ loading?: boolean;
2439
+ /** Click handler — makes the card a button */
2440
+ onClick?: () => void;
2441
+ /** Optional footer content (e.g., sparkline chart) */
2442
+ footer?: React$1.ReactNode;
2443
+ className?: string;
2444
+ }
2445
+ /**
2446
+ * Kpi — Compact KPI card with watermark icon style (matches home dashboard).
2447
+ * Layout: tiny uppercase accent label on top, big bold value bottom-left,
2448
+ * optional badge or trend pill bottom-right, decorative watermark icon in corner.
2449
+ *
2450
+ * Supports: trend %, subtitle, footer (sparkline), 3 sizes, active/loading states.
2451
+ */
2452
+ declare function Kpi({ title, value, unit, badge, badgeLabel, change, changeLabel, subtitle, icon: Icon, accent, active, size, loading, onClick, footer, className, }: KpiProps): react_jsx_runtime.JSX.Element;
2453
+
2454
+ interface ComparisonBar {
2455
+ /** Label for this bar */
2456
+ label: string;
2457
+ /** Value to display */
2458
+ value: number;
2459
+ /** Percentage fill (0-100) */
2460
+ percentage: number;
2461
+ /** Bar color: success, warning, error, primary, or custom */
2462
+ color?: 'success' | 'warning' | 'error' | 'primary' | string;
2463
+ }
2464
+ interface KpiComparisonProps {
2465
+ /** Title of the KPI */
2466
+ title: string;
2467
+ /** Main value to display */
2468
+ value: string | number;
2469
+ /** Target value (optional) */
2470
+ target?: string | number;
2471
+ /** Status label (e.g., "On Track", "Behind") */
2472
+ status?: {
2473
+ label: string;
2474
+ type: 'success' | 'warning' | 'error';
2475
+ };
2476
+ /** Comparison bars to display */
2477
+ bars: ComparisonBar[];
2478
+ /** Additional class names */
2479
+ className?: string;
2480
+ }
2481
+ /**
2482
+ * KpiComparison - KPI card with comparison progress bars
2483
+ *
2484
+ * Great for: Target tracking, period comparisons, goal progress
2485
+ */
2486
+ declare function KpiComparison({ title, value, target, status, bars, className }: KpiComparisonProps): react_jsx_runtime.JSX.Element;
2487
+
2488
+ interface KpiTrendProps {
2489
+ /** Title of the KPI */
2490
+ title: string;
2491
+ /** Main value to display */
2492
+ value: string | number;
2493
+ /** Unit label (e.g., "days", "%", "hrs") */
2494
+ unit?: string;
2495
+ /** Change value (positive or negative) */
2496
+ change?: number;
2497
+ /** Change unit (defaults to same as unit) */
2498
+ changeUnit?: string;
2499
+ /** Description text (e.g., "Improved from 5.0 days last month") */
2500
+ description?: string;
2501
+ /** Icon to display next to title */
2502
+ icon?: LucideIcon;
2503
+ /** Icon color class */
2504
+ iconColor?: string;
2505
+ /** Whether a decrease is positive (e.g., for lead time, costs) */
2506
+ decreaseIsGood?: boolean;
2507
+ /** Additional class names */
2508
+ className?: string;
2509
+ }
2510
+ /**
2511
+ * KpiTrend - KPI card with trend indicator
2512
+ *
2513
+ * Great for: Metrics with period-over-period changes
2514
+ */
2515
+ declare function KpiTrend({ title, value, unit, change, changeUnit, description, icon: Icon, iconColor, decreaseIsGood, className }: KpiTrendProps): react_jsx_runtime.JSX.Element;
2516
+
2517
+ interface BreakdownItem {
2518
+ /** Label for this item */
2519
+ label: string;
2520
+ /** Value to display */
2521
+ value: string | number;
2522
+ /** Color indicator: success, warning, error, primary, info, or custom hex */
2523
+ color?: 'success' | 'warning' | 'error' | 'primary' | 'info' | string;
2524
+ }
2525
+ interface KpiBreakdownProps {
2526
+ /** Title of the KPI */
2527
+ title: string;
2528
+ /** Total/summary value (optional, displayed in header) */
2529
+ total?: string | number;
2530
+ /** Breakdown items to display */
2531
+ items: BreakdownItem[];
2532
+ /** Show percentage next to values */
2533
+ showPercentage?: boolean;
2534
+ /** Additional class names */
2535
+ className?: string;
2536
+ }
2537
+ /**
2538
+ * KpiBreakdown - KPI card with list breakdown
2539
+ *
2540
+ * Great for: Status distributions, category splits, item counts by type
2541
+ */
2542
+ declare function KpiBreakdown({ title, total, items, showPercentage, className }: KpiBreakdownProps): react_jsx_runtime.JSX.Element;
2543
+
2544
+ interface QuickStat {
2545
+ /** Label for this stat */
2546
+ label: string;
2547
+ /** Value to display */
2548
+ value: string | number;
2549
+ /** Icon component */
2550
+ icon: LucideIcon;
2551
+ /** Icon color: success, warning, error, primary, info */
2552
+ iconColor?: 'success' | 'warning' | 'error' | 'primary' | 'info';
2553
+ }
2554
+ interface KpiQuickStatsProps {
2555
+ /** Title of the KPI card */
2556
+ title: string;
2557
+ /** Stats to display (2-4 recommended) */
2558
+ stats: QuickStat[];
2559
+ /** Number of columns (2, 3, or 4) */
2560
+ columns?: 2 | 3 | 4;
2561
+ /** Additional class names */
2562
+ className?: string;
2563
+ }
2564
+ /**
2565
+ * KpiQuickStats - KPI card with grid of icon stats
2566
+ *
2567
+ * Great for: Quick overview panels, dashboard summaries, multi-metric cards
2568
+ */
2569
+ declare function KpiQuickStats({ title, stats, columns, className }: KpiQuickStatsProps): react_jsx_runtime.JSX.Element;
2570
+
2571
+ interface RatingBreakdown {
2572
+ /** Star rating (1-5) */
2573
+ stars: number;
2574
+ /** Number of ratings */
2575
+ count: number;
2576
+ /** Percentage of total */
2577
+ percentage: number;
2578
+ }
2579
+ interface KpiRatingProps {
2580
+ /** Title of the KPI */
2581
+ title: string;
2582
+ /** Rating score (e.g., 4.8) */
2583
+ score: number;
2584
+ /** Maximum score (defaults to 5) */
2585
+ maxScore?: number;
2586
+ /** Total number of reviews */
2587
+ reviewCount?: number;
2588
+ /** Status badge text (e.g., "Excellent", "Good") */
2589
+ status?: string;
2590
+ /** Status type for coloring */
2591
+ statusType?: 'success' | 'warning' | 'error';
2592
+ /** Change from previous period */
2593
+ change?: number;
2594
+ /** Period label (e.g., "from last month") */
2595
+ changeLabel?: string;
2596
+ /** Footer period text (e.g., "Last 30 days") */
2597
+ periodLabel?: string;
2598
+ /** Tooltip info */
2599
+ tooltip?: {
2600
+ /** Formula explanation */
2601
+ formula?: string;
2602
+ /** Description */
2603
+ description?: string;
2604
+ /** Rating breakdown data */
2605
+ breakdown?: RatingBreakdown[];
2606
+ };
2607
+ /** Additional class names */
2608
+ className?: string;
2609
+ }
2610
+ /**
2611
+ * KpiRating - KPI card with star rating display
2612
+ *
2613
+ * Great for: Customer satisfaction, NPS scores, product ratings
2614
+ */
2615
+ declare function KpiRating({ title, score, maxScore, reviewCount, status, statusType, change, changeLabel, periodLabel, tooltip, className }: KpiRatingProps): react_jsx_runtime.JSX.Element;
2616
+
2617
+ interface KpiBeforeAfterProps {
2618
+ /** Title of the KPI */
2619
+ title: string;
2620
+ /** Before value */
2621
+ beforeValue: string | number;
2622
+ /** Before label (defaults to "Before") */
2623
+ beforeLabel?: string;
2624
+ /** Before sublabel (e.g., "Avg cycle time") */
2625
+ beforeSublabel?: string;
2626
+ /** After value */
2627
+ afterValue: string | number;
2628
+ /** After label (defaults to "After") */
2629
+ afterLabel?: string;
2630
+ /** After sublabel (e.g., "Avg cycle time") */
2631
+ afterSublabel?: string;
2632
+ /** Improvement percentage */
2633
+ improvement?: number;
2634
+ /** Improvement label (defaults to "improvement") */
2635
+ improvementLabel?: string;
2636
+ /** Whether improvement is shown as decrease (down arrow) or increase (up arrow) */
2637
+ improvementType?: 'decrease' | 'increase';
2638
+ /** Additional class names */
2639
+ className?: string;
2640
+ }
2641
+ /**
2642
+ * KpiBeforeAfter - KPI card comparing before/after values
2643
+ *
2644
+ * Great for: Process improvements, A/B results, optimization metrics
2645
+ */
2646
+ declare function KpiBeforeAfter({ title, beforeValue, beforeLabel, beforeSublabel, afterValue, afterLabel, afterSublabel, improvement, improvementLabel, improvementType, className }: KpiBeforeAfterProps): react_jsx_runtime.JSX.Element;
2647
+
2648
+ interface KpiScrollItem {
2649
+ /** Unique identifier */
2650
+ id: string;
2651
+ /** Icon component */
2652
+ icon?: LucideIcon;
2653
+ /** Icon background color */
2654
+ iconBg?: string;
2655
+ /** Icon color */
2656
+ iconColor?: string;
2657
+ /** Custom icon element (for images/svgs/avatars) */
2658
+ customIcon?: React$1.ReactNode;
2659
+ /** Main title */
2660
+ title: string;
2661
+ /** Subtitle/description */
2662
+ subtitle?: string;
2663
+ /** Metric value */
2664
+ value: string | number;
2665
+ /** Metric prefix (e.g., +, -, ₹) */
2666
+ prefix?: string;
2667
+ /** Metric suffix (e.g., %, k, m) */
2668
+ suffix?: string;
2669
+ /** Whether the value is positive (green), negative (red), or neutral */
2670
+ sentiment?: 'positive' | 'negative' | 'neutral';
2671
+ /** Secondary value (shown below main value) */
2672
+ secondaryValue?: string;
2673
+ /** Click handler */
2674
+ onClick?: () => void;
2675
+ }
2676
+ interface KpiScrollProps {
2677
+ /** Section title */
2678
+ title?: string;
2679
+ /** Section description */
2680
+ description?: string;
2681
+ /** Period options for dropdown */
2682
+ periodOptions?: {
2683
+ value: string;
2684
+ label: string;
2685
+ }[];
2686
+ /** Selected period value */
2687
+ periodValue?: string;
2688
+ /** Period change handler */
2689
+ onPeriodChange?: (value: string) => void;
2690
+ /** Items to display */
2691
+ items: KpiScrollItem[];
2692
+ /** Show "View All" button */
2693
+ showViewAll?: boolean;
2694
+ /** View All click handler */
2695
+ onViewAll?: () => void;
2696
+ /** View All label */
2697
+ viewAllLabel?: string;
2698
+ /** Card variant */
2699
+ variant?: 'default' | 'compact' | 'detailed';
2700
+ /** Additional class names */
2701
+ className?: string;
2702
+ }
2703
+ /**
2704
+ * KpiScroll - Horizontal scrollable KPI cards
2705
+ *
2706
+ * Great for: Channel stats, customer metrics, quick summaries
2707
+ */
2708
+ declare function KpiScroll({ title, description, periodOptions, periodValue, onPeriodChange, items, showViewAll, onViewAll, viewAllLabel, variant, className }: KpiScrollProps): react_jsx_runtime.JSX.Element;
2709
+
2710
+ /**
2711
+ * Chart height presets (in pixels)
2712
+ * These ensure consistent sizing across all dashboard charts
2713
+ */
2714
+ declare const chartHeights: {
2715
+ /** Small charts - KPIs, mini sparklines */
2716
+ readonly sm: 180;
2717
+ /** Medium charts - Standard dashboard charts */
2718
+ readonly md: 240;
2719
+ /** Large charts - Featured/hero charts */
2720
+ readonly lg: 300;
2721
+ /** Extra large - Full-width detailed charts */
2722
+ readonly xl: 360;
2723
+ };
2724
+ /**
2725
+ * Grid layout configurations
2726
+ * Responsive column layouts for different chart groupings
2727
+ */
2728
+ declare const gridLayouts: {
2729
+ /** Single chart full width */
2730
+ readonly single: "grid-cols-1";
2731
+ /** 2 charts side by side on large screens */
2732
+ readonly double: "grid-cols-1 lg:grid-cols-2";
2733
+ /** 3 charts on large screens, 2 on medium */
2734
+ readonly triple: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3";
2735
+ /** 4 charts - 2x2 on medium, 4 on large */
2736
+ readonly quad: "grid-cols-1 md:grid-cols-2 xl:grid-cols-4";
2737
+ /** KPI cards - 4 columns on large, 2 on medium */
2738
+ readonly kpi: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4";
2739
+ };
2740
+ /**
2741
+ * Section spacing
2742
+ * Gap between charts and sections
2743
+ */
2744
+ declare const spacing: {
2745
+ /** Gap between charts in a grid */
2746
+ readonly chartGap: "gap-4 lg:gap-6";
2747
+ /** Gap between sections */
2748
+ readonly sectionGap: "space-y-4 lg:space-y-6";
2749
+ /** Padding for main content area */
2750
+ readonly contentPadding: "p-4 md:p-6";
2751
+ };
2752
+ /**
2753
+ * Chart card configurations
2754
+ */
2755
+ declare const chartCard: {
2756
+ /** Default border radius */
2757
+ readonly borderRadius: "rounded-xl";
2758
+ /** Default padding */
2759
+ readonly padding: "p-4";
2760
+ /** Background */
2761
+ readonly background: "bg-[rgb(var(--bg-surface))]";
2762
+ /** Border */
2763
+ readonly border: "border border-[rgb(var(--bd-default))]";
2764
+ };
2765
+ /**
2766
+ * Donut chart configurations
2767
+ */
2768
+ declare const donutConfig: {
2769
+ /** Inner radius percentage for donut hole */
2770
+ readonly innerRadius: 60;
2771
+ /** Outer radius percentage */
2772
+ readonly outerRadius: 80;
2773
+ };
2774
+ /**
2775
+ * Bar chart configurations
2776
+ */
2777
+ declare const barConfig: {
2778
+ /** Default bar radius */
2779
+ readonly barRadius: 4;
2780
+ /** Max bar width */
2781
+ readonly maxBarWidth: 40;
2782
+ };
2783
+ /**
2784
+ * Color palette for charts
2785
+ * Using CSS variables where possible, hex fallbacks for chart libraries
2786
+ */
2787
+ declare const chartColors: {
2788
+ readonly primary: "#5470c6";
2789
+ readonly success: "#52c41a";
2790
+ readonly warning: "#faad14";
2791
+ readonly error: "#f5222d";
2792
+ readonly info: "#1890ff";
2793
+ readonly muted: "#8c8c8c";
2794
+ /** Extended palette for multi-series */
2795
+ readonly palette: readonly ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4", "#ea7ccc"];
2796
+ };
2797
+ /**
2798
+ * Helper to get responsive chart height
2799
+ * Returns different heights based on viewport considerations
2800
+ */
2801
+ declare function getChartHeight(size?: keyof typeof chartHeights): number;
2802
+ /**
2803
+ * Helper to build grid classes
2804
+ */
2805
+ declare function getGridClasses(layout: keyof typeof gridLayouts): string;
2806
+
2807
+ interface APIConfigModalProps {
2808
+ isOpen: boolean;
2809
+ onClose: () => void;
2810
+ onConfigured?: () => void;
2811
+ }
2812
+ declare function APIConfigModal({ isOpen, onClose, onConfigured }: APIConfigModalProps): react_jsx_runtime.JSX.Element;
2813
+
2814
+ interface GlobalAPIConfigModalProps {
2815
+ isOpen: boolean;
2816
+ onClose: () => void;
2817
+ onConfigured?: () => void;
2818
+ }
2819
+ declare function GlobalAPIConfigModal({ isOpen, onClose, onConfigured }: GlobalAPIConfigModalProps): react_jsx_runtime.JSX.Element;
2820
+
2821
+ interface ImageModalDetail {
2822
+ label: string;
2823
+ value: string | number;
2824
+ }
2825
+ interface ImageModalProps {
2826
+ title?: string;
2827
+ children: React__default.ReactNode;
2828
+ preview?: React__default.ReactNode;
2829
+ previewClassName?: string;
2830
+ previewContainerClassName?: string;
2831
+ isOpen?: boolean;
2832
+ onClose?: () => void;
2833
+ details?: ImageModalDetail[];
2834
+ onPreviewClick?: () => void;
2835
+ isPdfMode?: boolean;
2836
+ pdfUrl?: string;
2837
+ onDownloadPdf?: () => void;
2838
+ cleanMode?: boolean;
2839
+ enableZoom?: boolean;
2840
+ viewBoxWidthMM?: number;
2841
+ viewBoxHeightMM?: number;
2842
+ exportFilename?: string;
2843
+ extraExportButtons?: React__default.ReactNode;
2844
+ }
2845
+ declare function ImageModal({ isOpen: controlledIsOpen, onClose: controlledOnClose, title, children, preview, previewClassName, previewContainerClassName, details, onPreviewClick, isPdfMode, pdfUrl, onDownloadPdf, cleanMode, enableZoom, viewBoxWidthMM, viewBoxHeightMM, exportFilename, extraExportButtons }: ImageModalProps): react_jsx_runtime.JSX.Element;
2846
+
2847
+ interface ThreeDModalDetail {
2848
+ label: string;
2849
+ value: string | number;
2850
+ }
2851
+ interface ThreeDModalProps {
2852
+ /** Card title shown above the preview */
2853
+ title?: string;
2854
+ /** @deprecated Pass renderContent instead */
2855
+ children?: React__default.ReactNode;
2856
+ /** Render function for 3D content */
2857
+ renderContent?: () => React__default.ReactNode;
2858
+ /** Fallback when there's no data to render */
2859
+ placeholder?: string;
2860
+ /** Whether to show the 3D content (false = show placeholder) */
2861
+ hasData?: boolean;
2862
+ /** Preview card height — default 13.75rem to match planning modal cards */
2863
+ previewHeight?: string;
2864
+ /** Additional className for the preview card container */
2865
+ className?: string;
2866
+ /** Metadata row shown below the header in the expanded modal */
2867
+ details?: ThreeDModalDetail[];
2868
+ /** Extra actions rendered next to the expand/close icon in headers */
2869
+ headerActions?: React__default.ReactNode;
2870
+ /** When provided, shows a refresh button next to the expand icon */
2871
+ onRefresh?: () => void;
2872
+ }
2873
+ declare function ThreeDModal({ title, children, renderContent, placeholder, hasData, previewHeight, className, details, headerActions, onRefresh, }: ThreeDModalProps): react_jsx_runtime.JSX.Element;
2874
+
2875
+ interface DeviceInfo {
2876
+ id: string;
2877
+ name: string;
2878
+ type: 'desktop' | 'mobile' | 'tablet';
2879
+ browser?: string;
2880
+ os?: string;
2881
+ lastUsed: Date;
2882
+ isCurrent: boolean;
2883
+ }
2884
+ interface TaskStatus {
2885
+ overdue: number;
2886
+ dueSoon: number;
2887
+ total: number;
2888
+ }
2889
+ interface LogoutModalProps {
2890
+ isOpen: boolean;
2891
+ onClose: () => void;
2892
+ onLogout: () => void;
2893
+ onLogoutEverywhere: () => void;
2894
+ sessionData: {
2895
+ duration: string;
2896
+ startTime: Date;
2897
+ tasks: TaskStatus;
2898
+ activeDevices: DeviceInfo[];
2899
+ isInactivityWarning?: boolean;
2900
+ timeUntilAutoLogout?: string;
2901
+ };
2902
+ onExtendSession?: () => void;
2903
+ onViewTasks?: () => void;
2904
+ className?: string;
2905
+ }
2906
+ declare function LogoutModal({ isOpen, onClose, onLogout, sessionData, onViewTasks, className }: LogoutModalProps): react_jsx_runtime.JSX.Element;
2907
+
2908
+ interface StandardModalProps {
2909
+ isOpen: boolean;
2910
+ onClose: () => void;
2911
+ title: string;
2912
+ children: React__default.ReactNode;
2913
+ subtitle?: string;
2914
+ badge?: {
2915
+ label: string;
2916
+ variant?: 'default' | 'outline' | 'secondary' | 'destructive';
2917
+ };
2918
+ size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
2919
+ className?: string;
2920
+ showFooter?: boolean;
2921
+ footerActions?: React__default.ReactNode;
2922
+ onSave?: () => void;
2923
+ onCancel?: () => void;
2924
+ saveLabel?: string;
2925
+ cancelLabel?: string;
2926
+ saveIcon?: LucideIcon;
2927
+ cancelIcon?: LucideIcon;
2928
+ saving?: boolean;
2929
+ ariaDescribedBy?: string;
2930
+ ariaDescription?: string;
2931
+ }
2932
+ declare function StandardModal({ isOpen, onClose, title, subtitle, badge, children, size, className, showFooter, footerActions, onSave, onCancel, saveLabel, cancelLabel, saveIcon: SaveIcon, cancelIcon: CancelIcon, saving, ariaDescribedBy, ariaDescription }: StandardModalProps): react_jsx_runtime.JSX.Element;
2933
+
2934
+ type EditableCellType = 'text' | 'number' | 'decimal';
2935
+ interface EditableCellProps {
2936
+ value: string | number;
2937
+ onSave: (value: string | number) => void;
2938
+ type?: EditableCellType;
2939
+ step?: string;
2940
+ className?: string;
2941
+ placeholder?: string;
2942
+ disabled?: boolean;
2943
+ }
2944
+ /**
2945
+ * Unified Editable Cell Component
2946
+ * Supports text, number, and decimal editing
2947
+ *
2948
+ * @example
2949
+ * // Text editing
2950
+ * <EditableCell value="John" onSave={handleSave} type="text" />
2951
+ *
2952
+ * // Integer editing
2953
+ * <EditableCell value={100} onSave={handleSave} type="number" />
2954
+ *
2955
+ * // Decimal editing
2956
+ * <EditableCell value={99.99} onSave={handleSave} type="decimal" step="0.01" />
2957
+ */
2958
+ declare function EditableCell({ value, onSave, type, step, className, placeholder, disabled }: EditableCellProps): react_jsx_runtime.JSX.Element;
2959
+ declare const EditableTextCell: (props: Omit<EditableCellProps, "type"> & {
2960
+ onSave: (value: string) => void;
2961
+ }) => react_jsx_runtime.JSX.Element;
2962
+ declare const EditableDecimalCell: (props: Omit<EditableCellProps, "type" | "step"> & {
2963
+ step?: string;
2964
+ onSave: (value: number) => void;
2965
+ }) => react_jsx_runtime.JSX.Element;
2966
+
2967
+ interface QuantityInputPopupProps {
2968
+ isOpen: boolean;
2969
+ onClose: () => void;
2970
+ onConfirm: (quantity: number) => void;
2971
+ triggerRef: React$1.RefObject<HTMLElement>;
2972
+ className?: string;
2973
+ }
2974
+ declare function QuantityInputPopup({ isOpen, onClose, onConfirm, triggerRef, className }: QuantityInputPopupProps): react_jsx_runtime.JSX.Element;
2975
+
2976
+ type ColorMode = 'light' | 'dark';
2977
+ type ThemeVariant = 'default' | 'red' | 'green' | 'purple' | 'orange' | 'black' | 'custom';
2978
+ type FontFamily = 'system' | 'roboto' | 'openSans' | 'lato' | 'poppins' | 'montserrat' | 'nunito' | 'sourceSansPro' | 'workSans' | 'ubuntu';
2979
+ type FontSize = 'small' | 'normal' | 'large' | 'extraLarge';
2980
+ type Theme = {
2981
+ variant: ThemeVariant;
2982
+ mode: ColorMode;
2983
+ fontFamily?: FontFamily;
2984
+ fontSize?: FontSize;
2985
+ fontScale?: number;
2986
+ };
2987
+ interface CustomThemeColors {
2988
+ accent: string;
2989
+ accentHover: string;
2990
+ accentSubtle: string;
2991
+ accentMuted: string;
2992
+ }
2993
+ interface CustomTheme extends CustomThemeColors {
2994
+ name: string;
2995
+ id: string;
2996
+ createdAt: Date;
2997
+ updatedAt: Date;
2998
+ }
2999
+ interface ThemeContextValue {
3000
+ theme: Theme;
3001
+ setTheme: (theme: Theme) => void;
3002
+ setVariant: (variant: ThemeVariant) => void;
3003
+ setMode: (mode: ColorMode) => void;
3004
+ toggleMode: () => void;
3005
+ setFontFamily: (family: FontFamily) => void;
3006
+ setFontSize: (size: FontSize) => void;
3007
+ setFontScale: (scale: number) => void;
3008
+ customTheme: CustomTheme | null;
3009
+ setCustomTheme: (colors: CustomThemeColors, name?: string) => void;
3010
+ removeCustomTheme: () => void;
3011
+ isDark: boolean;
3012
+ isSystemPreference: boolean;
3013
+ availableThemes: ThemeVariant[];
3014
+ currentThemeClass: string;
3015
+ }
3016
+ interface ThemeProviderProps {
3017
+ children: React.ReactNode;
3018
+ defaultTheme?: Theme;
3019
+ storageKey?: string;
3020
+ enableSystem?: boolean;
3021
+ attribute?: 'class' | 'data-theme';
3022
+ defaultMode?: ColorMode;
3023
+ }
3024
+
3025
+ declare const ThemeContext: React__default.Context<ThemeContextValue>;
3026
+ /**
3027
+ * Theme Provider Component
3028
+ *
3029
+ * Provides theme context to the entire application.
3030
+ * Should be placed at the root of your app, typically in layout.tsx
3031
+ *
3032
+ * @example
3033
+ * ```tsx
3034
+ * <ThemeProvider defaultTheme={{ variant: 'blue', mode: 'light' }}>
3035
+ * <App />
3036
+ * </ThemeProvider>
3037
+ * ```
3038
+ */
3039
+ declare function ThemeProvider({ children, defaultTheme, storageKey, enableSystem, attribute, defaultMode }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
3040
+ /**
3041
+ * Theme Script Component
3042
+ *
3043
+ * Injects a script to prevent flash of incorrect theme on page load.
3044
+ * Should be placed in the <head> of your document, typically in layout.tsx
3045
+ *
3046
+ * @example
3047
+ * ```tsx
3048
+ * <html>
3049
+ * <head>
3050
+ * <ThemeScript />
3051
+ * </head>
3052
+ * <body>...</body>
3053
+ * </html>
3054
+ * ```
3055
+ */
3056
+ declare function ThemeScript({ storageKey, defaultTheme, defaultMode }: {
3057
+ storageKey?: string;
3058
+ defaultTheme?: string;
3059
+ defaultMode?: string;
3060
+ }): react_jsx_runtime.JSX.Element;
3061
+
3062
+ interface GlobalAlertContextType {
3063
+ showSuccess: (title: string, description: string, autoCloseOrActions?: number | AlertAction[]) => void;
3064
+ showError: (title: string, description: string) => void;
3065
+ showWarning: (title: string, description: string, actions?: AlertAction[]) => void;
3066
+ showInfo: (title: string, description: string, autoCloseOrActions?: number | AlertAction[]) => void;
3067
+ showConfirmation: (title: string, description: string, onConfirm: () => void, onCancel?: () => void) => void;
3068
+ showLoading: (title: string, description: string) => void;
3069
+ showCritical: (title: string, description: string, actions?: AlertAction[]) => void;
3070
+ hideAlert: () => void;
3071
+ showAppStartup: (message?: string) => void;
3072
+ showDataLoading: (message?: string) => void;
3073
+ showFormSaving: (message?: string) => void;
3074
+ showAuthentication: (message?: string) => void;
3075
+ showBackgroundSync: (message?: string, progress?: string) => void;
3076
+ showModalProcessing: (message?: string) => void;
3077
+ showFieldValidation: (message?: string) => void;
3078
+ hideLoading: () => void;
3079
+ }
3080
+ interface GlobalAlertProviderProps {
3081
+ children: ReactNode;
3082
+ }
3083
+ declare function GlobalAlertProvider({ children }: GlobalAlertProviderProps): react_jsx_runtime.JSX.Element;
3084
+ declare function useGlobalAlert(): GlobalAlertContextType;
3085
+ declare function useQuickAlert(): {
3086
+ showSuccess: (title: string, description: string, autoCloseOrActions?: number | AlertAction[]) => void;
3087
+ showError: (title: string, description: string) => void;
3088
+ showWarning: (title: string, description: string, actions?: AlertAction[]) => void;
3089
+ showInfo: (title: string, description: string, autoCloseOrActions?: number | AlertAction[]) => void;
3090
+ showConfirmation: (title: string, description: string, onConfirm: () => void, onCancel?: () => void) => void;
3091
+ showLoading: (title: string, description: string) => void;
3092
+ showCritical: (title: string, description: string, actions?: AlertAction[]) => void;
3093
+ hideAlert: () => void;
3094
+ };
3095
+
3096
+ interface AppConfigContextType {
3097
+ selectedFinancialYear: string;
3098
+ setSelectedFinancialYear: (fy: string) => void;
3099
+ selectedProductionUnit: string;
3100
+ setSelectedProductionUnit: (unit: string) => void;
3101
+ getFinancialYearSuffix: () => string;
3102
+ }
3103
+ declare function AppConfigProvider({ children }: {
3104
+ children: React__default.ReactNode;
3105
+ }): react_jsx_runtime.JSX.Element;
3106
+ declare function useAppConfig(): AppConfigContextType;
3107
+
3108
+ type Language = 'en' | 'hi' | 'fr' | 'de' | 'es';
3109
+ interface LanguageContextType {
3110
+ language: Language;
3111
+ setLanguage: (lang: Language) => void;
3112
+ translations: Record<string, string>;
3113
+ isLoading: boolean;
3114
+ t: (key: string) => string;
3115
+ }
3116
+ declare function LanguageProvider({ children }: {
3117
+ children: ReactNode;
3118
+ }): react_jsx_runtime.JSX.Element;
3119
+ declare function useLanguage(): LanguageContextType;
3120
+
3121
+ interface DeviceContextValue {
3122
+ deviceType: 'desktop' | 'mobile' | 'tablet';
3123
+ isMobile: boolean;
3124
+ isTablet: boolean;
3125
+ isDesktop: boolean;
3126
+ }
3127
+ declare function DeviceProvider({ children }: {
3128
+ children: React$1.ReactNode;
3129
+ }): react_jsx_runtime.JSX.Element;
3130
+ declare function useDevice(): DeviceContextValue;
3131
+
3132
+ type SearchType = 'advanced' | 'new';
3133
+ interface SearchPreferences {
3134
+ defaultSearchType: SearchType;
3135
+ setDefaultSearchType: (type: SearchType) => void;
3136
+ }
3137
+ declare function SearchPreferencesProvider({ children }: {
3138
+ children: React__default.ReactNode;
3139
+ }): react_jsx_runtime.JSX.Element;
3140
+ declare function useSearchPreferences(): SearchPreferences;
3141
+
3142
+ interface PageTitleContextType {
3143
+ title: string;
3144
+ setTitle: (title: string) => void;
3145
+ }
3146
+ declare const usePageTitle: () => PageTitleContextType;
3147
+ interface PageTitleProviderProps {
3148
+ children: React__default.ReactNode;
3149
+ }
3150
+ declare const PageTitleProvider: React__default.FC<PageTitleProviderProps>;
3151
+
3152
+ interface AuthSessionProviderProps {
3153
+ children: React.ReactNode;
3154
+ session: Session | null;
3155
+ }
3156
+ declare function AuthSessionProvider({ children, session }: AuthSessionProviderProps): react_jsx_runtime.JSX.Element;
3157
+
3158
+ interface APIContextType {
3159
+ initialized: boolean;
3160
+ }
3161
+ declare function useAPI(): APIContextType;
3162
+ interface APIProviderProps {
3163
+ children: ReactNode;
3164
+ }
3165
+ declare function APIProvider({ children }: APIProviderProps): react_jsx_runtime.JSX.Element;
3166
+
3167
+ declare function QueryProvider({ children }: {
3168
+ children: React.ReactNode;
3169
+ }): react_jsx_runtime.JSX.Element;
3170
+
3171
+ declare function cn(...inputs: ClassValue[]): string;
3172
+
3173
+ export { APIConfigModal, APIProvider, ActionsColumn, type ActionsColumnConfig, ActionsMenu, AdvancedFilterModal, Alert, type AlertAction, AlertDescription, AlertTitle, AppConfigProvider, AppShell, type AppShellProps, AreaChart, type AreaChartDataItem, type AreaChartProps, type AreaChartSeries, type AttachedFile, AuthSessionProvider, AutoResizeButton, Badge, type BadgeProps, BarChart, type BarChartDataItem, type BarChartProps, type BarChartSeries, BooleanBadge, type BooleanBadgeProps, BooleanCell, BoxPlotChart, type BoxPlotChartDataItem, type BoxPlotChartProps, type BreakdownItem, BubbleChart, type BubbleChartDataItem, type BubbleChartProps, type BubbleChartSeries, BulletChart, type BulletChartDataItem, type BulletChartProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, CardView, CellRenderer, ChartCard, type ChartCardProps, DataVisualization as ChartView, Checkbox, CheckboxButton, type CheckboxButtonProps, type CheckboxProps, Collapsible, CollapsibleContent, CollapsibleTrigger, ColumnChooserModal, ColumnContextMenu, CompactFooter, type ComparisonBar, CurrencyProvider, DashboardTooltip, type DashboardTooltipProps, DataGrid, type DataGridProps, DataVisualization, DatePicker, type DatePickerProps, type DateRange, DateTimePicker, type DateTimePickerProps, DeviceProvider, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DonutChart, type DonutChartDataItem, type DonutChartProps, DraggableColumnHeader, DraggableRow, Dropdown, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type DropdownOption, type DropdownProps, DynamicSidebar, type DynamicSidebarProps, EditableCell$1 as EditableCell, type EditableCellProps$1 as EditableCellProps, EditableDecimalCell, EditableTableCell, EditableTextCell, ExpandableRow, ExpansionToggleCell, ExpansionToggleHeader, type FABAction, FileAttachment, type FileAttachmentProps, FilterBadge, FilterBadgeGroup, type FilterBadgeGroupProps, type FilterBadgeItem, type FilterBadgeProps, type FilterBadgeVariant, FilterBar, type FilterBarProps, type FilterConfig, FloatingActionButton, FlowMap, type FlowMapLine, type FlowMapMarker, type FlowMapProps, Footer, type FooterKPI, type FooterProps, FormToggle, type FormToggleProps, FunnelChart, type FunnelChartDataItem, type FunnelChartProps, GanttChart, type GanttChartProps, type GanttTask, GaugeChart, type GaugeChartProps, GeoMap, type GeoMapDataItem, type GeoMapMarker, type GeoMapProps, GlobalAPIConfigModal, GlobalAlertProvider, Grid, type GridProps, type HeaderStepItem, HeaderSteps, HeatmapChart, type HeatmapChartDataItem, type HeatmapChartProps, HistogramChart, type HistogramChartProps, ImageModal, type ImportResult, InlineSearchCell, Input, InputButton, type InputButtonProps, type InputProps, Kpi, KpiBeforeAfter, type KpiBeforeAfterProps, KpiBreakdown, type KpiBreakdownProps, KpiComparison, type KpiComparisonProps, type KpiProps, KpiQuickStats, type KpiQuickStatsProps, KpiRating, type KpiRatingProps, KpiScroll, type KpiScrollItem, type KpiScrollProps, KpiTrend, type KpiTrendProps, Label, LanguageProvider, LineChart, type LineChartDataItem, type LineChartProps, type LineChartSeries, Loading, LoadingOverlay, type LoadingProps, LoadingStates, LogoutModal, EditableCell as MasterEditableCell, Modal, ModalAlert, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalPortal, ModalTitle, ModalTrigger, NavigationProgress, Page, PageLoading, type PageLoadingProps, type PageProps, PageTitleProvider, PaginationControls, ParetoChart, type ParetoChartDataItem, type ParetoChartProps, ProcessBreakdown, Progress, QuantityInputPopup, QueryProvider, type QuickStat, RadarChart, type RadarChartIndicator, type RadarChartProps, type RadarChartSeries, TabsRoot as RadixTabs, type RatingBreakdown, type ReportOption, SankeyChart, type SankeyChartProps, type SankeyLink, type SankeyNode, ScatterChart, type ScatterChartDataItem, type ScatterChartProps, type ScatterChartSeries, SearchHighlighter, SearchNavigator, SearchNewModal, SearchPreferencesProvider, SelectionCell, SelectionCell as SelectionCheckbox, Separator, Skeleton, SkeletonFormFields, SkeletonTable, SkeletonText, Sparkline, type SparklineProps, StandardModal, type StandardModalProps, StatsCard, type StatsCardProps, StatsGrid, type StatsGridProps, SummaryRow, Switch, type TabItem, Tabs, TabsContent, TabsList, type TabsProps, TabsTrigger, Text, type TextProps, Textarea, ThemeContext, ThemeProvider, ThemeScript, ThreeDModal, type TimeFilterSelection, type ToggleOption, Tooltip, TooltipContent, TooltipDetailed, TooltipProvider, TooltipTrigger, TreemapChart, type TreemapChartProps, type TreemapDataItem, UnifiedCurrencyDropdown, type UnifiedCurrencyDropdownProps, WaterfallChart, type WaterfallChartProps, type WaterfallDataItem, advancedSearch, barConfig, chartCard, chartColors, chartHeights, cn, createActionsColumn, createSelectColumn, donutConfig, exportData, exportToCSV, exportToExcel, exportToJSON, exportToPDF, fuzzyMatch, getChartHeight, getGridClasses, gridLayouts, importData, importFromCSV, importFromExcel, importFromJSON, spacing, useAPI, useAppConfig, useCellEditing, useCellRangeSelection, useClipboard, useCurrency, useDataGridState, useDevice, useGlobalAlert, useKeyboardNavigation, useLanguage, useModalAlert, usePageTitle, useQuickAlert, useSearchNavigation, useSearchPreferences };