@tree-ia/design-system 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1069 @@
1
+ import React, { ReactNode } from "react";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
+
4
+ //#region src/components/Button/index.d.ts
5
+ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
6
+ variant?: "primary" | "secondary" | "danger" | "ghost";
7
+ size?: "sm" | "md" | "lg";
8
+ isLoading?: boolean;
9
+ icon?: React.ReactNode;
10
+ iconPosition?: "left" | "right";
11
+ }
12
+ declare function Button({
13
+ children,
14
+ variant,
15
+ size,
16
+ isLoading,
17
+ icon,
18
+ iconPosition,
19
+ className,
20
+ disabled,
21
+ ...props
22
+ }: ButtonProps): react_jsx_runtime0.JSX.Element;
23
+ //#endregion
24
+ //#region src/components/Input/index.d.ts
25
+ interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
26
+ label?: string;
27
+ error?: string;
28
+ children?: ReactNode;
29
+ }
30
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
31
+ //#endregion
32
+ //#region src/components/Dropdown/index.d.ts
33
+ interface DropdownOption {
34
+ value: string;
35
+ label: string;
36
+ color?: string;
37
+ backgroundColor?: string;
38
+ }
39
+ interface DropdownProps {
40
+ options: DropdownOption[];
41
+ value?: string;
42
+ onChange: (value: string) => void;
43
+ label?: string;
44
+ placeholder?: string;
45
+ disabled?: boolean;
46
+ className?: string;
47
+ containerClassName?: string;
48
+ fullWidth?: boolean;
49
+ size?: "small" | "medium" | "large";
50
+ error?: string;
51
+ variant?: "default" | "underline" | "simple" | "compact";
52
+ customDropdownHeight?: string;
53
+ icon?: React.ReactNode;
54
+ fitContent?: boolean;
55
+ isActive?: boolean;
56
+ }
57
+ declare function Dropdown({
58
+ options,
59
+ value,
60
+ onChange,
61
+ label,
62
+ placeholder,
63
+ disabled,
64
+ className,
65
+ containerClassName,
66
+ fullWidth,
67
+ size,
68
+ error,
69
+ variant,
70
+ customDropdownHeight,
71
+ icon,
72
+ fitContent,
73
+ isActive
74
+ }: DropdownProps): react_jsx_runtime0.JSX.Element;
75
+ //#endregion
76
+ //#region src/components/Table/index.d.ts
77
+ interface TableColumn<T> {
78
+ key: string;
79
+ header: string;
80
+ render: (item: T) => ReactNode;
81
+ width?: string;
82
+ align?: "left" | "center" | "right";
83
+ sortable?: boolean;
84
+ }
85
+ interface TableProps<T> {
86
+ columns: TableColumn<T>[];
87
+ data: T[];
88
+ onRowClick?: (item: T) => void;
89
+ isLoading?: boolean;
90
+ emptyMessage?: string;
91
+ emptyIcon?: ReactNode;
92
+ loadingComponent?: ReactNode;
93
+ emptyComponent?: ReactNode;
94
+ keyExtractor: (item: T) => string;
95
+ className?: string;
96
+ }
97
+ declare function Table<T>({
98
+ columns,
99
+ data,
100
+ onRowClick,
101
+ isLoading,
102
+ emptyMessage,
103
+ emptyIcon,
104
+ loadingComponent,
105
+ emptyComponent,
106
+ keyExtractor,
107
+ className
108
+ }: TableProps<T>): react_jsx_runtime0.JSX.Element;
109
+ declare function TableHeader<T>({
110
+ columns
111
+ }: {
112
+ columns: TableColumn<T>[];
113
+ }): react_jsx_runtime0.JSX.Element;
114
+ declare function TableBody<T>({
115
+ columns,
116
+ data,
117
+ onRowClick,
118
+ keyExtractor
119
+ }: {
120
+ columns: TableColumn<T>[];
121
+ data: T[];
122
+ onRowClick?: (item: T) => void;
123
+ keyExtractor: (item: T) => string;
124
+ }): react_jsx_runtime0.JSX.Element;
125
+ declare function TableSkeleton(): react_jsx_runtime0.JSX.Element;
126
+ declare function TableEmpty({
127
+ message,
128
+ icon
129
+ }: {
130
+ message: string;
131
+ icon?: ReactNode;
132
+ }): react_jsx_runtime0.JSX.Element;
133
+ //#endregion
134
+ //#region src/components/Modal/index.d.ts
135
+ interface ModalProps {
136
+ isOpen: boolean;
137
+ onClose: () => void;
138
+ onSave?: () => void;
139
+ title?: string;
140
+ children: React.ReactNode;
141
+ showFooter?: boolean;
142
+ saveButtonText?: string;
143
+ cancelButtonText?: string;
144
+ size?: "small" | "medium" | "large" | "extraLarge" | "largeXl";
145
+ disableSaveButton?: boolean;
146
+ saveButtonVariant?: "primary" | "secondary" | "danger" | "ghost";
147
+ closeOnEscape?: boolean;
148
+ closeOnOverlayClick?: boolean;
149
+ }
150
+ declare function Modal({
151
+ isOpen,
152
+ onClose,
153
+ onSave,
154
+ title,
155
+ children,
156
+ showFooter,
157
+ saveButtonText,
158
+ cancelButtonText,
159
+ size,
160
+ disableSaveButton,
161
+ saveButtonVariant,
162
+ closeOnEscape,
163
+ closeOnOverlayClick
164
+ }: ModalProps): react_jsx_runtime0.JSX.Element | null;
165
+ //#endregion
166
+ //#region src/components/Card/index.d.ts
167
+ interface CardProps {
168
+ children: React.ReactNode;
169
+ className?: string;
170
+ title?: string;
171
+ subtitle?: string;
172
+ icon?: React.ReactNode;
173
+ headerActions?: React.ReactNode;
174
+ showDivider?: boolean;
175
+ }
176
+ declare function Card({
177
+ children,
178
+ className,
179
+ title,
180
+ subtitle,
181
+ icon,
182
+ headerActions,
183
+ showDivider
184
+ }: CardProps): react_jsx_runtime0.JSX.Element;
185
+ //#endregion
186
+ //#region src/components/Toast/index.d.ts
187
+ interface ToastProps {
188
+ title: string;
189
+ subtitle?: string;
190
+ type?: "success" | "error" | "warning" | "info";
191
+ duration?: number;
192
+ onClose: () => void;
193
+ showProgress?: boolean;
194
+ }
195
+ declare function Toast({
196
+ title,
197
+ subtitle,
198
+ type,
199
+ duration,
200
+ onClose,
201
+ showProgress
202
+ }: ToastProps): react_jsx_runtime0.JSX.Element;
203
+ //#endregion
204
+ //#region src/components/Loading/index.d.ts
205
+ interface LoadingProps {
206
+ size?: "sm" | "md" | "lg";
207
+ className?: string;
208
+ text?: string;
209
+ textColor?: string;
210
+ color?: string;
211
+ variant?: "spinner" | "border";
212
+ fullscreen?: boolean;
213
+ }
214
+ declare function Loading({
215
+ size,
216
+ className,
217
+ text,
218
+ textColor,
219
+ color,
220
+ variant,
221
+ fullscreen
222
+ }: LoadingProps): react_jsx_runtime0.JSX.Element;
223
+ //#endregion
224
+ //#region src/components/Pagination/index.d.ts
225
+ interface PaginationProps {
226
+ currentPage: number;
227
+ totalPages: number;
228
+ onPageChange: (page: number) => void;
229
+ itemsPerPage: number;
230
+ totalItems: number;
231
+ onItemsPerPageChange?: (itemsPerPage: number) => void;
232
+ itemsPerPageOptions?: number[];
233
+ showPageInfo?: boolean;
234
+ compact?: boolean;
235
+ className?: string;
236
+ }
237
+ declare function Pagination({
238
+ currentPage,
239
+ totalPages,
240
+ onPageChange,
241
+ itemsPerPage,
242
+ totalItems,
243
+ onItemsPerPageChange,
244
+ itemsPerPageOptions,
245
+ showPageInfo,
246
+ compact,
247
+ className
248
+ }: PaginationProps): react_jsx_runtime0.JSX.Element;
249
+ //#endregion
250
+ //#region src/components/FormField/index.d.ts
251
+ interface FormFieldProps {
252
+ label: string;
253
+ name: string;
254
+ type?: "text" | "email" | "password" | "number" | "tel";
255
+ value: string;
256
+ onChange: (value: string) => void;
257
+ error?: string;
258
+ required?: boolean;
259
+ placeholder?: string;
260
+ disabled?: boolean;
261
+ className?: string;
262
+ }
263
+ declare function FormField({
264
+ label,
265
+ name,
266
+ type,
267
+ value,
268
+ onChange,
269
+ error,
270
+ required,
271
+ placeholder,
272
+ disabled,
273
+ className
274
+ }: FormFieldProps): react_jsx_runtime0.JSX.Element;
275
+ //#endregion
276
+ //#region src/components/Tabs/index.d.ts
277
+ interface Tab {
278
+ id: string;
279
+ label: string;
280
+ count?: number;
281
+ icon?: ReactNode;
282
+ }
283
+ interface TabsProps {
284
+ tabs: Tab[];
285
+ activeTab: string;
286
+ onChange: (tabId: string) => void;
287
+ /** Estilo visual das tabs. Default: "underline" */
288
+ variant?: "underline" | "pill";
289
+ className?: string;
290
+ }
291
+ declare function Tabs({
292
+ tabs,
293
+ activeTab,
294
+ onChange,
295
+ variant,
296
+ className
297
+ }: TabsProps): react_jsx_runtime0.JSX.Element;
298
+ //#endregion
299
+ //#region src/components/DateRangePicker/index.d.ts
300
+ type DateRange = {
301
+ start: Date | null;
302
+ end: Date | null;
303
+ };
304
+ interface DateRangePickerProps {
305
+ value: DateRange;
306
+ onChange: (range: DateRange) => void;
307
+ locale?: "pt" | "en";
308
+ className?: string;
309
+ }
310
+ declare function DateRangePicker({
311
+ value,
312
+ onChange,
313
+ locale,
314
+ className
315
+ }: DateRangePickerProps): react_jsx_runtime0.JSX.Element;
316
+ //#endregion
317
+ //#region src/components/Title/index.d.ts
318
+ interface TitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
319
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
320
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl";
321
+ weight?: "normal" | "medium" | "semibold" | "bold" | "extrabold";
322
+ align?: "left" | "center" | "right";
323
+ color?: string;
324
+ }
325
+ declare function Title({
326
+ children,
327
+ level,
328
+ size,
329
+ weight,
330
+ align,
331
+ color,
332
+ className,
333
+ ...props
334
+ }: TitleProps): react_jsx_runtime0.JSX.Element;
335
+ //#endregion
336
+ //#region src/components/ToggleSwitch/index.d.ts
337
+ interface ToggleSwitchProps {
338
+ enabled: boolean;
339
+ onChange: (enabled: boolean) => void;
340
+ disabled?: boolean;
341
+ size?: "sm" | "md" | "lg";
342
+ label?: string;
343
+ className?: string;
344
+ }
345
+ declare function ToggleSwitch({
346
+ enabled,
347
+ onChange,
348
+ disabled,
349
+ size,
350
+ label,
351
+ className
352
+ }: ToggleSwitchProps): react_jsx_runtime0.JSX.Element;
353
+ //#endregion
354
+ //#region src/components/BadgeStatus/index.d.ts
355
+ interface BadgeStatusProps {
356
+ label: string;
357
+ variant?: "success" | "warning" | "danger" | "info" | "neutral";
358
+ color?: string;
359
+ bgColor?: string;
360
+ size?: "sm" | "md";
361
+ className?: string;
362
+ }
363
+ declare function BadgeStatus({
364
+ label,
365
+ variant,
366
+ color,
367
+ bgColor,
368
+ size,
369
+ className
370
+ }: BadgeStatusProps): react_jsx_runtime0.JSX.Element;
371
+ //#endregion
372
+ //#region src/components/Sidebar/index.d.ts
373
+ interface SidebarMenuItem {
374
+ id: string;
375
+ label: string;
376
+ href: string;
377
+ icon: React.ComponentType<{
378
+ size?: number;
379
+ className?: string;
380
+ style?: React.CSSProperties;
381
+ }>;
382
+ }
383
+ interface SidebarUser {
384
+ name: string;
385
+ email: string;
386
+ subtitle?: string;
387
+ }
388
+ interface SidebarProps {
389
+ menuItems: SidebarMenuItem[];
390
+ logo: ReactNode;
391
+ collapsedLogo?: ReactNode;
392
+ currentPath: string;
393
+ linkComponent?: React.ComponentType<{
394
+ href: string;
395
+ className?: string;
396
+ children: ReactNode;
397
+ }>;
398
+ isCollapsed?: boolean;
399
+ onToggleCollapse?: () => void;
400
+ user?: SidebarUser;
401
+ onUserClick?: () => void;
402
+ onLogout?: () => void;
403
+ logoutLabel?: string;
404
+ className?: string;
405
+ }
406
+ declare function Sidebar({
407
+ menuItems,
408
+ logo,
409
+ collapsedLogo,
410
+ currentPath,
411
+ linkComponent: LinkComponent,
412
+ isCollapsed,
413
+ onToggleCollapse,
414
+ user,
415
+ onUserClick,
416
+ onLogout,
417
+ logoutLabel,
418
+ className
419
+ }: SidebarProps): react_jsx_runtime0.JSX.Element;
420
+ //#endregion
421
+ //#region src/components/ThemeSwitcher/index.d.ts
422
+ interface ThemeSwitcherProps {
423
+ className?: string;
424
+ }
425
+ declare function ThemeSwitcher({
426
+ className
427
+ }: ThemeSwitcherProps): react_jsx_runtime0.JSX.Element;
428
+ //#endregion
429
+ //#region src/components/KPICard/index.d.ts
430
+ type KPIValueFormat = "currency" | "number" | "percentage" | "rating";
431
+ interface KPICardProps {
432
+ title: string;
433
+ value: number;
434
+ variation: number;
435
+ trend: "up" | "down" | "stable";
436
+ format?: KPIValueFormat;
437
+ benchmark?: string;
438
+ isLoading?: boolean;
439
+ className?: string;
440
+ }
441
+ declare function KPICard({
442
+ title,
443
+ value,
444
+ variation,
445
+ trend,
446
+ format,
447
+ benchmark,
448
+ isLoading,
449
+ className
450
+ }: KPICardProps): react_jsx_runtime0.JSX.Element;
451
+ //#endregion
452
+ //#region src/components/PageLayout/index.d.ts
453
+ interface PageLayoutProps {
454
+ /** Titulo principal da pagina */
455
+ title: string;
456
+ /** Descricao opcional da pagina (aparece abaixo do titulo) */
457
+ description?: string;
458
+ /** Componentes de filtros ou acoes para o header (ex: PeriodFilter, botoes) */
459
+ headerActions?: ReactNode;
460
+ /** Conteudo principal da pagina */
461
+ children: ReactNode;
462
+ /** Se true, aplica padding no conteudo. Default: true */
463
+ contentPadding?: boolean;
464
+ /** Componente de sidebar a ser renderizado */
465
+ sidebar?: ReactNode;
466
+ /** Se a sidebar esta recolhida */
467
+ sidebarCollapsed?: boolean;
468
+ /** Largura da sidebar expandida em px. Default: 280 */
469
+ sidebarWidth?: number;
470
+ /** Largura da sidebar recolhida em px. Default: 109 */
471
+ sidebarCollapsedWidth?: number;
472
+ className?: string;
473
+ }
474
+ declare function PageLayout({
475
+ title,
476
+ description,
477
+ headerActions,
478
+ children,
479
+ contentPadding,
480
+ sidebar,
481
+ sidebarCollapsed,
482
+ sidebarWidth,
483
+ sidebarCollapsedWidth,
484
+ className
485
+ }: PageLayoutProps): react_jsx_runtime0.JSX.Element;
486
+ //#endregion
487
+ //#region src/components/ComparisonLineChart/index.d.ts
488
+ interface ComparisonLineChartProps {
489
+ /** Labels do eixo X (ex: datas) */
490
+ labels: string[];
491
+ /** Dados do periodo atual */
492
+ currentPeriodData: number[];
493
+ /** Dados do periodo anterior */
494
+ previousPeriodData: number[];
495
+ /** Label da legenda do periodo atual */
496
+ currentPeriodLabel?: string;
497
+ /** Label da legenda do periodo anterior */
498
+ previousPeriodLabel?: string;
499
+ /** Titulo do grafico */
500
+ title?: string;
501
+ /** Cor principal (default: --dashboard-primary) */
502
+ color?: string;
503
+ /** Altura do container do grafico em px. Default: 300 */
504
+ height?: number;
505
+ className?: string;
506
+ }
507
+ declare function ComparisonLineChart({
508
+ labels,
509
+ currentPeriodData,
510
+ previousPeriodData,
511
+ currentPeriodLabel,
512
+ previousPeriodLabel,
513
+ title,
514
+ color,
515
+ height,
516
+ className
517
+ }: ComparisonLineChartProps): react_jsx_runtime0.JSX.Element;
518
+ //#endregion
519
+ //#region src/components/HorizontalBarChart/index.d.ts
520
+ interface HorizontalBarChartTab {
521
+ id: string;
522
+ label: string;
523
+ }
524
+ interface HorizontalBarChartProps {
525
+ /** Labels do eixo Y (ex: horarios) */
526
+ labels: string[];
527
+ /** Dados por tab. Chave = tab.id, valor = array de numeros */
528
+ datasets: Record<string, number[]>;
529
+ /** Tabs para alternar entre datasets */
530
+ tabs?: HorizontalBarChartTab[];
531
+ /** Titulo do grafico */
532
+ title?: string;
533
+ /** Icone ao lado do titulo */
534
+ titleIcon?: React.ReactNode;
535
+ /** Cor das barras (default: --dashboard-primary) */
536
+ color?: string;
537
+ /** Label para tooltip (ex: "vendas", "pedidos") */
538
+ valueLabel?: string;
539
+ /** Label no singular (ex: "venda", "pedido") */
540
+ valueLabelSingular?: string;
541
+ /** Texto para melhor item (ex: "Melhor horário") */
542
+ bestItemLabel?: string;
543
+ className?: string;
544
+ }
545
+ declare function HorizontalBarChart({
546
+ labels,
547
+ datasets,
548
+ tabs,
549
+ title,
550
+ titleIcon,
551
+ color,
552
+ valueLabel,
553
+ valueLabelSingular,
554
+ bestItemLabel,
555
+ className
556
+ }: HorizontalBarChartProps): react_jsx_runtime0.JSX.Element;
557
+ //#endregion
558
+ //#region src/components/VerticalBarChart/index.d.ts
559
+ interface VerticalBarChartProps {
560
+ /** Labels do eixo X (ex: dias da semana) */
561
+ labels: string[];
562
+ /** Valores para cada label */
563
+ data: number[];
564
+ /** Titulo do grafico */
565
+ title?: string;
566
+ /** Icone ao lado do titulo */
567
+ titleIcon?: React.ReactNode;
568
+ /** Cor das barras (default: --dashboard-primary) */
569
+ color?: string;
570
+ /** Label do tooltip (ex: "vendas") */
571
+ valueLabel?: string;
572
+ /** Label no singular (ex: "venda") */
573
+ valueLabelSingular?: string;
574
+ /** Texto para melhor item (ex: "Melhor dia") */
575
+ bestItemLabel?: string;
576
+ /** Maximo de caracteres dos labels. Default: 3 */
577
+ labelMaxChars?: number;
578
+ className?: string;
579
+ }
580
+ declare function VerticalBarChart({
581
+ labels,
582
+ data: values,
583
+ title,
584
+ titleIcon,
585
+ color,
586
+ valueLabel,
587
+ valueLabelSingular,
588
+ bestItemLabel,
589
+ labelMaxChars,
590
+ className
591
+ }: VerticalBarChartProps): react_jsx_runtime0.JSX.Element;
592
+ //#endregion
593
+ //#region src/components/ProgressBarList/index.d.ts
594
+ interface ProgressBarListItem {
595
+ /** Label do item */
596
+ label: string;
597
+ /** Valor numerico */
598
+ value: number;
599
+ /** Icone opcional */
600
+ icon?: ReactNode;
601
+ }
602
+ interface ProgressBarListProps {
603
+ /** Itens da lista */
604
+ items: ProgressBarListItem[];
605
+ /** Titulo da lista */
606
+ title?: string;
607
+ /** Icone ao lado do titulo */
608
+ titleIcon?: ReactNode;
609
+ /** Cor da barra de progresso (default: --dashboard-primary) */
610
+ color?: string;
611
+ /** Label do valor (ex: "vendas") */
612
+ valueLabel?: string;
613
+ /** Label no singular (ex: "venda") */
614
+ valueLabelSingular?: string;
615
+ /** Ordenar automaticamente por valor desc. Default: true */
616
+ sortByValue?: boolean;
617
+ /** Formatar valor customizado */
618
+ formatValue?: (value: number) => string;
619
+ className?: string;
620
+ }
621
+ declare function ProgressBarList({
622
+ items,
623
+ title,
624
+ titleIcon,
625
+ color,
626
+ valueLabel,
627
+ valueLabelSingular,
628
+ sortByValue,
629
+ formatValue,
630
+ className
631
+ }: ProgressBarListProps): react_jsx_runtime0.JSX.Element;
632
+ //#endregion
633
+ //#region src/components/MetricPanel/index.d.ts
634
+ interface MetricPanelMetric {
635
+ /** Chave unica da metrica */
636
+ key: string;
637
+ /** Label exibida na tab e KPI */
638
+ label: string;
639
+ /** Icone da tab */
640
+ icon: React.ComponentType<{
641
+ className?: string;
642
+ }>;
643
+ /** Label da legenda do periodo atual */
644
+ currentLabel: string;
645
+ /** Label da legenda do periodo anterior */
646
+ previousLabel: string;
647
+ /** Formato do valor */
648
+ format: KPIValueFormat;
649
+ /** Unidade opcional (ex: "pedidos") */
650
+ unit?: string;
651
+ /** Valores do KPI */
652
+ kpiValue: {
653
+ current: number;
654
+ previous: number;
655
+ variation: number;
656
+ trend: "up" | "down" | "stable";
657
+ };
658
+ }
659
+ interface MetricPanelChartData {
660
+ labels: string[];
661
+ metrics: Record<string, {
662
+ currentPeriod: number[];
663
+ previousPeriod: number[];
664
+ }>;
665
+ }
666
+ interface MetricPanelProps {
667
+ /** Titulo do painel */
668
+ title: string;
669
+ /** Icone do titulo */
670
+ titleIcon: React.ComponentType<{
671
+ className?: string;
672
+ }>;
673
+ /** Configuracoes das metricas */
674
+ metrics: MetricPanelMetric[];
675
+ /** Dados do grafico */
676
+ chartData: MetricPanelChartData;
677
+ /** Cor principal */
678
+ color?: string;
679
+ /** Cor secundaria (periodo anterior) */
680
+ secondaryColor?: string;
681
+ /** Callback do botao de acao */
682
+ onActionClick?: () => void;
683
+ /** Label do botao de acao */
684
+ actionLabel?: string;
685
+ /** Estado de loading */
686
+ isLoading?: boolean;
687
+ className?: string;
688
+ }
689
+ declare function MetricPanel({
690
+ title,
691
+ titleIcon: TitleIcon,
692
+ metrics,
693
+ chartData,
694
+ color,
695
+ secondaryColor,
696
+ onActionClick,
697
+ actionLabel,
698
+ isLoading,
699
+ className
700
+ }: MetricPanelProps): react_jsx_runtime0.JSX.Element;
701
+ //#endregion
702
+ //#region src/components/FilterBar/index.d.ts
703
+ interface FilterBarProps {
704
+ /** Valor do campo de busca */
705
+ searchValue?: string;
706
+ /** Callback de mudanca do campo de busca */
707
+ onSearchChange?: (value: string) => void;
708
+ /** Placeholder do campo de busca */
709
+ searchPlaceholder?: string;
710
+ /** Slot para dropdowns, date pickers e outros filtros */
711
+ children?: ReactNode;
712
+ /** Slot para acoes extras (ex: botao de exportar) */
713
+ actions?: ReactNode;
714
+ className?: string;
715
+ }
716
+ declare function FilterBar({
717
+ searchValue,
718
+ onSearchChange,
719
+ searchPlaceholder,
720
+ children,
721
+ actions,
722
+ className
723
+ }: FilterBarProps): react_jsx_runtime0.JSX.Element;
724
+ //#endregion
725
+ //#region src/components/AuthLayout/index.d.ts
726
+ interface AuthField {
727
+ /** Unique name / id for the field */
728
+ name: string;
729
+ /** Label displayed above the input (omit for placeholder-only mode) */
730
+ label?: string;
731
+ /** HTML input type */
732
+ type?: "text" | "email" | "password" | "tel" | "number";
733
+ /** Placeholder text */
734
+ placeholder?: string;
735
+ /** Whether the field is required */
736
+ required?: boolean;
737
+ /** Minimum length for validation */
738
+ minLength?: number;
739
+ /** Field-level error message */
740
+ error?: string;
741
+ }
742
+ interface AuthLink {
743
+ /** Link text */
744
+ label: string;
745
+ /** URL or click handler */
746
+ href?: string;
747
+ /** Custom click handler (takes precedence over href) */
748
+ onClick?: () => void;
749
+ }
750
+ interface AuthCheckbox {
751
+ /** Checkbox name */
752
+ name: string;
753
+ /** Checkbox label */
754
+ label: string;
755
+ /** Whether checked */
756
+ checked?: boolean;
757
+ /** Change handler */
758
+ onChange?: (checked: boolean) => void;
759
+ }
760
+ interface AuthBackground {
761
+ /** Solid color, gradient, or CSS value for the page background */
762
+ color?: string;
763
+ /** Background image URL or element (for Next.js Image support) */
764
+ image?: string;
765
+ /** React element for the background (e.g., next/image with fill) */
766
+ imageElement?: ReactNode;
767
+ /** Overlay opacity (0-1) — rendered as bg-black/{opacity} */
768
+ overlayOpacity?: number;
769
+ /** Custom CSS for the background container */
770
+ style?: React.CSSProperties;
771
+ }
772
+ interface AuthHeadline {
773
+ /** Main headline text */
774
+ text: string;
775
+ /** Highlighted / accent portion (rendered on new line if not found inside text) */
776
+ highlight?: string;
777
+ /** Color of the main text (defaults to #faf3e1) */
778
+ color?: string;
779
+ /** Color of the highlighted text (defaults to primaryColor) */
780
+ highlightColor?: string;
781
+ }
782
+ interface AuthBranding {
783
+ /** Array of logo elements to render at the bottom-left */
784
+ logos: ReactNode[];
785
+ }
786
+ interface AuthCardStyle {
787
+ /** Card background color (defaults to #faf3e1) */
788
+ background?: string;
789
+ /** Card border radius in px (defaults to 16 = rounded-2xl) */
790
+ borderRadius?: number;
791
+ /** Card box shadow CSS */
792
+ shadow?: string;
793
+ /** Card max width in px (defaults to 420) */
794
+ maxWidth?: number;
795
+ /** Card padding in px (defaults to 32 = p-8) */
796
+ padding?: number;
797
+ /** Card border */
798
+ border?: string;
799
+ }
800
+ interface AuthLayoutProps {
801
+ /** Logo element displayed at top of card */
802
+ logo?: ReactNode;
803
+ /** Page title (e.g., "Painel de Controle") */
804
+ title: string;
805
+ /** Subtitle / description below the title (supports ReactNode for inline formatting) */
806
+ subtitle?: ReactNode;
807
+ /** Global error message displayed above the form */
808
+ error?: string;
809
+ /** Global success message displayed above the form */
810
+ success?: string;
811
+ /** Form field definitions */
812
+ fields: AuthField[];
813
+ /** Current field values keyed by field name */
814
+ values: Record<string, string>;
815
+ /** Callback when a field value changes */
816
+ onFieldChange: (name: string, value: string) => void;
817
+ /** Submit handler */
818
+ onSubmit: (values: Record<string, string>) => void;
819
+ /** Submit button label */
820
+ submitLabel?: string;
821
+ /** Loading label while submitting */
822
+ loadingLabel?: string;
823
+ /** Whether the form is currently submitting */
824
+ isLoading?: boolean;
825
+ /** Checkbox between fields and submit (e.g., "Lembrar conta") */
826
+ checkbox?: AuthCheckbox;
827
+ /** Primary link below the form */
828
+ primaryLink?: AuthLink;
829
+ /** Secondary link / text (e.g., "Ainda nao tem cadastro? Cadastre-se") */
830
+ secondaryLink?: AuthLink & {
831
+ prefix?: string;
832
+ };
833
+ /** Content rendered between the submit button and the links */
834
+ extraContent?: ReactNode;
835
+ /** Content rendered above the form (below title/subtitle) */
836
+ headerContent?: ReactNode;
837
+ /** Content rendered just above the submit button (e.g., resend code link) */
838
+ beforeSubmitContent?: ReactNode;
839
+ /** Content rendered at the very bottom of the card */
840
+ footerContent?: ReactNode;
841
+ /** Headline text displayed over the background (top-left, hidden on mobile) */
842
+ headline?: AuthHeadline;
843
+ /** Branding logos at the bottom-left over the background (hidden on mobile) */
844
+ branding?: AuthBranding;
845
+ /** Card horizontal position */
846
+ cardPosition?: "left" | "center" | "right";
847
+ /** Right padding for the card container on lg screens (defaults to 256 = pr-64) */
848
+ cardOffsetRight?: number;
849
+ /** Background configuration */
850
+ background?: AuthBackground;
851
+ /** Card styling overrides */
852
+ cardStyle?: AuthCardStyle;
853
+ /** Primary color (buttons, links, focus rings, checkbox). Defaults to #ff521d */
854
+ primaryColor?: string;
855
+ /** Text color for the title */
856
+ titleColor?: string;
857
+ /** Text alignment for the card header (title + subtitle). Defaults to "center" */
858
+ titleAlign?: "left" | "center" | "right";
859
+ /** Additional class name for the outermost container */
860
+ className?: string;
861
+ }
862
+ declare function AuthLayout({
863
+ logo,
864
+ title,
865
+ subtitle,
866
+ error,
867
+ success,
868
+ fields,
869
+ values,
870
+ onFieldChange,
871
+ onSubmit,
872
+ submitLabel,
873
+ loadingLabel,
874
+ isLoading,
875
+ checkbox,
876
+ primaryLink,
877
+ secondaryLink,
878
+ extraContent,
879
+ headerContent,
880
+ beforeSubmitContent,
881
+ footerContent,
882
+ headline,
883
+ branding,
884
+ cardPosition,
885
+ cardOffsetRight,
886
+ background,
887
+ cardStyle,
888
+ primaryColor,
889
+ titleColor,
890
+ titleAlign,
891
+ className
892
+ }: AuthLayoutProps): react_jsx_runtime0.JSX.Element;
893
+ //#endregion
894
+ //#region src/components/CodeInput/index.d.ts
895
+ interface CodeInputProps {
896
+ /** Number of digit boxes (defaults to 6) */
897
+ length?: number;
898
+ /** Current value as a string (e.g. "12" for the first two digits filled) */
899
+ value: string;
900
+ /** Called with the full string whenever a digit changes */
901
+ onChange: (value: string) => void;
902
+ /** Disable all inputs */
903
+ disabled?: boolean;
904
+ /** Show error styling */
905
+ error?: boolean;
906
+ /** Primary / accent color for focused box border */
907
+ primaryColor?: string;
908
+ /** Additional className on the container */
909
+ className?: string;
910
+ }
911
+ declare function CodeInput({
912
+ length,
913
+ value,
914
+ onChange,
915
+ disabled,
916
+ error,
917
+ primaryColor,
918
+ className
919
+ }: CodeInputProps): react_jsx_runtime0.JSX.Element;
920
+ //#endregion
921
+ //#region src/components/Checkbox/index.d.ts
922
+ interface CheckboxProps {
923
+ /** Input name */
924
+ name?: string;
925
+ /** Input id (defaults to name) */
926
+ id?: string;
927
+ /** Label text next to the checkbox */
928
+ label?: string;
929
+ /** Whether checked */
930
+ checked?: boolean;
931
+ /** Change handler */
932
+ onChange?: (checked: boolean) => void;
933
+ /** Disable the checkbox */
934
+ disabled?: boolean;
935
+ /** Size variant */
936
+ size?: "sm" | "md" | "lg";
937
+ /** Primary color override for checked state. Defaults to --dashboard-primary / #ff521d */
938
+ primaryColor?: string;
939
+ /** Additional className on the wrapper label */
940
+ className?: string;
941
+ /** Children rendered as label (takes precedence over label prop) */
942
+ children?: React.ReactNode;
943
+ }
944
+ declare function Checkbox({
945
+ name,
946
+ id,
947
+ label,
948
+ checked,
949
+ onChange,
950
+ disabled,
951
+ size,
952
+ primaryColor,
953
+ className,
954
+ children
955
+ }: CheckboxProps): react_jsx_runtime0.JSX.Element;
956
+ //#endregion
957
+ //#region src/config/types.d.ts
958
+ interface ThemeColors {
959
+ primary: string;
960
+ secondary: string;
961
+ background: string;
962
+ surface: string;
963
+ textPrimary: string;
964
+ textSecondary: string;
965
+ statusSuccess: string;
966
+ statusDanger: string;
967
+ statusWarning: string;
968
+ statusInfo: string;
969
+ statusNeutral: string;
970
+ }
971
+ interface ComponentsConfig {
972
+ modal: {
973
+ closeOnEscape: boolean;
974
+ closeOnOverlayClick: boolean;
975
+ };
976
+ toast: {
977
+ duration: number;
978
+ position: "top-right" | "top-left" | "bottom-right" | "bottom-left";
979
+ };
980
+ notification: {
981
+ duration: number;
982
+ };
983
+ pagination: {
984
+ itemsPerPageOptions: number[];
985
+ defaultItemsPerPage: number;
986
+ };
987
+ }
988
+ interface DashboardConfig {
989
+ name: string;
990
+ colors: ThemeColors;
991
+ components: ComponentsConfig;
992
+ }
993
+ //#endregion
994
+ //#region src/providers/DashboardProvider.d.ts
995
+ type DeepPartial$1<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial$1<T[P]> : T[P] };
996
+ interface DashboardProviderProps {
997
+ config?: DeepPartial$1<DashboardConfig>;
998
+ children: React.ReactNode;
999
+ }
1000
+ declare function DashboardProvider({
1001
+ config: configOverrides,
1002
+ children
1003
+ }: DashboardProviderProps): react_jsx_runtime0.JSX.Element;
1004
+ //#endregion
1005
+ //#region src/providers/ThemeProvider.d.ts
1006
+ declare function ThemeProvider({
1007
+ children
1008
+ }: {
1009
+ children: React.ReactNode;
1010
+ }): react_jsx_runtime0.JSX.Element;
1011
+ //#endregion
1012
+ //#region src/providers/LoadingProvider.d.ts
1013
+ declare function LoadingProvider({
1014
+ children
1015
+ }: {
1016
+ children: React.ReactNode;
1017
+ }): react_jsx_runtime0.JSX.Element;
1018
+ //#endregion
1019
+ //#region src/providers/NotificationsProvider.d.ts
1020
+ declare function NotificationsProvider({
1021
+ children
1022
+ }: {
1023
+ children: React.ReactNode;
1024
+ }): react_jsx_runtime0.JSX.Element;
1025
+ //#endregion
1026
+ //#region src/hooks/useTheme.d.ts
1027
+ type Theme = "light" | "dark" | "system";
1028
+ interface ThemeContextType {
1029
+ theme: Theme;
1030
+ setTheme: (theme: Theme) => void;
1031
+ resolvedTheme: "light" | "dark";
1032
+ }
1033
+ declare function useTheme(): ThemeContextType;
1034
+ //#endregion
1035
+ //#region src/hooks/useConfig.d.ts
1036
+ declare function useConfig(): DashboardConfig;
1037
+ //#endregion
1038
+ //#region src/hooks/useLoading.d.ts
1039
+ interface LoadingContextType {
1040
+ isLoading: boolean;
1041
+ showLoading: () => void;
1042
+ hideLoading: () => void;
1043
+ }
1044
+ declare function useLoading(): LoadingContextType;
1045
+ //#endregion
1046
+ //#region src/hooks/useNotifications.d.ts
1047
+ interface Notification {
1048
+ id: string;
1049
+ title: string;
1050
+ subtitle: string;
1051
+ type: "success" | "error" | "warning" | "info";
1052
+ }
1053
+ interface NotificationsContextType {
1054
+ notifications: Notification[];
1055
+ addNotification: (notification: Omit<Notification, "id">) => void;
1056
+ removeNotification: (id: string) => void;
1057
+ clearNotifications: () => void;
1058
+ }
1059
+ declare function useNotifications(): NotificationsContextType;
1060
+ //#endregion
1061
+ //#region src/config/createConfig.d.ts
1062
+ type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] };
1063
+ declare function createConfig(overrides?: DeepPartial<DashboardConfig>): DashboardConfig;
1064
+ //#endregion
1065
+ //#region src/config/defaults.d.ts
1066
+ declare const defaultConfig: DashboardConfig;
1067
+ //#endregion
1068
+ export { type AuthBackground, type AuthBranding, type AuthCardStyle, type AuthCheckbox, type AuthField, type AuthHeadline, AuthLayout, type AuthLayoutProps, type AuthLink, BadgeStatus, type BadgeStatusProps, Button, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, CodeInput, type CodeInputProps, ComparisonLineChart, type ComparisonLineChartProps, type ComponentsConfig, type DashboardConfig, DashboardProvider, type DateRange, DateRangePicker, type DateRangePickerProps, Dropdown, type DropdownOption, type DropdownProps, FilterBar, type FilterBarProps, FormField, type FormFieldProps, HorizontalBarChart, type HorizontalBarChartProps, type HorizontalBarChartTab, Input, type InputProps, KPICard, type KPICardProps, type KPIValueFormat, Loading, type LoadingContextType, type LoadingProps, LoadingProvider, MetricPanel, type MetricPanelChartData, type MetricPanelMetric, type MetricPanelProps, Modal, type ModalProps, type Notification, type NotificationsContextType, NotificationsProvider, PageLayout, type PageLayoutProps, Pagination, type PaginationProps, ProgressBarList, type ProgressBarListItem, type ProgressBarListProps, Sidebar, type SidebarMenuItem, type SidebarProps, type SidebarUser, type Tab, Table, TableBody, type TableColumn, TableEmpty, TableHeader, type TableProps, TableSkeleton, Tabs, type TabsProps, type Theme, type ThemeColors, type ThemeContextType, ThemeProvider, ThemeSwitcher, type ThemeSwitcherProps, Title, type TitleProps, Toast, type ToastProps, ToggleSwitch, type ToggleSwitchProps, VerticalBarChart, type VerticalBarChartProps, createConfig, defaultConfig, useConfig, useLoading, useNotifications, useTheme };
1069
+ //# sourceMappingURL=index.d.mts.map