@motor-hero/ui-kit 0.5.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.
Files changed (74) hide show
  1. package/README.md +52 -0
  2. package/dist/components/auth-card.d.ts +10 -0
  3. package/dist/components/auth-card.d.ts.map +1 -0
  4. package/dist/components/confirm-dialog.d.ts +15 -0
  5. package/dist/components/confirm-dialog.d.ts.map +1 -0
  6. package/dist/components/data-table-wrapper.d.ts +16 -0
  7. package/dist/components/data-table-wrapper.d.ts.map +1 -0
  8. package/dist/components/empty-state.d.ts +11 -0
  9. package/dist/components/empty-state.d.ts.map +1 -0
  10. package/dist/components/form-dialog.d.ts +14 -0
  11. package/dist/components/form-dialog.d.ts.map +1 -0
  12. package/dist/components/form-field.d.ts +12 -0
  13. package/dist/components/form-field.d.ts.map +1 -0
  14. package/dist/components/mobile-card-list.d.ts +12 -0
  15. package/dist/components/mobile-card-list.d.ts.map +1 -0
  16. package/dist/components/mode-toggle.d.ts +2 -0
  17. package/dist/components/mode-toggle.d.ts.map +1 -0
  18. package/dist/components/page-header.d.ts +10 -0
  19. package/dist/components/page-header.d.ts.map +1 -0
  20. package/dist/components/pagination.d.ts +10 -0
  21. package/dist/components/pagination.d.ts.map +1 -0
  22. package/dist/components/responsive-data-view.d.ts +14 -0
  23. package/dist/components/responsive-data-view.d.ts.map +1 -0
  24. package/dist/components/search-input.d.ts +7 -0
  25. package/dist/components/search-input.d.ts.map +1 -0
  26. package/dist/components/stat-card.d.ts +11 -0
  27. package/dist/components/stat-card.d.ts.map +1 -0
  28. package/dist/components/status-dot.d.ts +8 -0
  29. package/dist/components/status-dot.d.ts.map +1 -0
  30. package/dist/components/table-skeleton.d.ts +7 -0
  31. package/dist/components/table-skeleton.d.ts.map +1 -0
  32. package/dist/components/theme-provider.d.ts +14 -0
  33. package/dist/components/theme-provider.d.ts.map +1 -0
  34. package/dist/components/toaster.d.ts +5 -0
  35. package/dist/components/toaster.d.ts.map +1 -0
  36. package/dist/hooks/use-disclosure.d.ts +8 -0
  37. package/dist/hooks/use-disclosure.d.ts.map +1 -0
  38. package/dist/hooks/use-toast.d.ts +5 -0
  39. package/dist/hooks/use-toast.d.ts.map +1 -0
  40. package/dist/index.cjs +620 -0
  41. package/dist/index.cjs.map +1 -0
  42. package/dist/index.d.ts +23 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +561 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/lib/api-error.d.ts +2 -0
  47. package/dist/lib/api-error.d.ts.map +1 -0
  48. package/dist/lib/utils.d.ts +3 -0
  49. package/dist/lib/utils.d.ts.map +1 -0
  50. package/dist/styles.css +45 -0
  51. package/package.json +80 -0
  52. package/src/components/auth-card.tsx +25 -0
  53. package/src/components/confirm-dialog.tsx +58 -0
  54. package/src/components/data-table-wrapper.tsx +65 -0
  55. package/src/components/empty-state.tsx +22 -0
  56. package/src/components/form-dialog.tsx +48 -0
  57. package/src/components/form-field.tsx +26 -0
  58. package/src/components/mobile-card-list.tsx +54 -0
  59. package/src/components/mode-toggle.tsx +47 -0
  60. package/src/components/page-header.tsx +22 -0
  61. package/src/components/pagination.tsx +31 -0
  62. package/src/components/responsive-data-view.tsx +31 -0
  63. package/src/components/search-input.tsx +36 -0
  64. package/src/components/stat-card.tsx +35 -0
  65. package/src/components/status-dot.tsx +16 -0
  66. package/src/components/table-skeleton.tsx +20 -0
  67. package/src/components/theme-provider.tsx +69 -0
  68. package/src/components/toaster.tsx +31 -0
  69. package/src/hooks/use-disclosure.ts +9 -0
  70. package/src/hooks/use-toast.ts +30 -0
  71. package/src/index.ts +29 -0
  72. package/src/lib/api-error.ts +7 -0
  73. package/src/lib/utils.ts +6 -0
  74. package/src/styles.css +45 -0
package/README.md ADDED
@@ -0,0 +1,52 @@
1
+ <p align="center">
2
+ <img src="docs/public/mh-logo-dark.png" alt="MotorHero" width="80" />
3
+ </p>
4
+
5
+ <h1 align="center">@motor-hero/ui-kit</h1>
6
+
7
+ <p align="center">
8
+ Design system interno da MotorHero.<br />
9
+ React + shadcn/ui + Tailwind CSS v4 + TypeScript.
10
+ </p>
11
+
12
+ <p align="center">
13
+ <a href="https://ui.motorhero.com.br">ui.motorhero.com.br</a>
14
+ </p>
15
+
16
+ ---
17
+
18
+ ## Instalação
19
+
20
+ ```bash
21
+ npm install @motor-hero/ui-kit
22
+ npm install react react-dom clsx tailwind-merge lucide-react sonner
23
+ ```
24
+
25
+ ## Setup
26
+
27
+ ```css
28
+ /* src/index.css */
29
+ @import "tailwindcss";
30
+ @source "../node_modules/@motor-hero/ui-kit/dist";
31
+ ```
32
+
33
+ ```tsx
34
+ import { ThemeProvider, Toaster } from "@motor-hero/ui-kit"
35
+
36
+ function App() {
37
+ return (
38
+ <ThemeProvider defaultTheme="dark">
39
+ <MyApp />
40
+ <Toaster />
41
+ </ThemeProvider>
42
+ )
43
+ }
44
+ ```
45
+
46
+ ## Desenvolvimento
47
+
48
+ ```bash
49
+ npm run build # Build da library
50
+ npm run docs:dev # Dev server da documentação
51
+ npm run docs:build # Build estático da documentação
52
+ ```
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from "react";
2
+ interface AuthCardProps {
3
+ title: string;
4
+ description?: string;
5
+ children: ReactNode;
6
+ footer?: ReactNode;
7
+ }
8
+ export declare function AuthCard({ title, description, children, footer }: AuthCardProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=auth-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-card.d.ts","sourceRoot":"","sources":["../../src/components/auth-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,aAAa,2CAe/E"}
@@ -0,0 +1,15 @@
1
+ import type { ReactNode } from "react";
2
+ interface ConfirmDialogProps {
3
+ open: boolean;
4
+ onOpenChange: (open: boolean) => void;
5
+ onConfirm: () => void;
6
+ title: string;
7
+ description: ReactNode;
8
+ confirmLabel?: string;
9
+ cancelLabel?: string;
10
+ loading?: boolean;
11
+ variant?: "default" | "destructive";
12
+ }
13
+ export declare function ConfirmDialog({ open, onOpenChange, onConfirm, title, description, confirmLabel, cancelLabel, loading, variant, }: ConfirmDialogProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=confirm-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm-dialog.d.ts","sourceRoot":"","sources":["../../src/components/confirm-dialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,UAAU,kBAAkB;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,SAAS,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAA;CACpC;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAA0B,EAC1B,WAAwB,EACxB,OAAe,EACf,OAAmB,GACpB,EAAE,kBAAkB,2CAgCpB"}
@@ -0,0 +1,16 @@
1
+ import type { ReactNode } from "react";
2
+ interface DataTableWrapperProps {
3
+ children: ReactNode;
4
+ isEmpty: boolean;
5
+ isLoading: boolean;
6
+ emptyIcon?: ReactNode;
7
+ emptyTitle?: string;
8
+ emptyDescription?: string;
9
+ page?: number;
10
+ onPageChange?: (page: number) => void;
11
+ hasNextPage?: boolean;
12
+ hasPreviousPage?: boolean;
13
+ }
14
+ export declare function DataTableWrapper({ children, isEmpty, isLoading, emptyIcon, emptyTitle, emptyDescription, page, onPageChange, hasNextPage, hasPreviousPage, }: DataTableWrapperProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=data-table-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-wrapper.d.ts","sourceRoot":"","sources":["../../src/components/data-table-wrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,SAAS,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,UAAyC,EACzC,gBAAgB,EAChB,IAAI,EACJ,YAAY,EACZ,WAAmB,EACnB,eAAuB,GACxB,EAAE,qBAAqB,2CAsCvB"}
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from "react";
2
+ interface EmptyStateProps {
3
+ icon?: ReactNode;
4
+ title: string;
5
+ description?: string;
6
+ action?: ReactNode;
7
+ className?: string;
8
+ }
9
+ export declare function EmptyState({ icon, title, description, action, className }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=empty-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../src/components/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,eAAe,2CAW1F"}
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from "react";
2
+ interface FormDialogLayoutProps {
3
+ title: string;
4
+ children: ReactNode;
5
+ onSubmit: (e: React.FormEvent) => void;
6
+ submitLabel?: string;
7
+ cancelLabel?: string;
8
+ onCancel: () => void;
9
+ isSubmitting?: boolean;
10
+ isDisabled?: boolean;
11
+ }
12
+ export declare function FormDialogLayout({ title, children, onSubmit, submitLabel, cancelLabel, onCancel, isSubmitting, isDisabled, }: FormDialogLayoutProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=form-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-dialog.d.ts","sourceRoot":"","sources":["../../src/components/form-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,SAAS,CAAA;IACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAA;IACtC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAsB,EACtB,WAAwB,EACxB,QAAQ,EACR,YAAoB,EACpB,UAAkB,GACnB,EAAE,qBAAqB,2CAyBvB"}
@@ -0,0 +1,12 @@
1
+ import type { ReactNode } from "react";
2
+ interface FormFieldProps {
3
+ label: string;
4
+ htmlFor?: string;
5
+ error?: string;
6
+ required?: boolean;
7
+ children: ReactNode;
8
+ className?: string;
9
+ }
10
+ export declare function FormField({ label, htmlFor, error, required, children, className }: FormFieldProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=form-field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../src/components/form-field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,2CAcjG"}
@@ -0,0 +1,12 @@
1
+ import type { ReactNode } from "react";
2
+ interface MobileCardListProps<T> {
3
+ data: T[];
4
+ renderCard: (item: T, index: number) => ReactNode;
5
+ keyExtractor: (item: T) => string;
6
+ isLoading?: boolean;
7
+ loadingCount?: number;
8
+ className?: string;
9
+ }
10
+ export declare function MobileCardList<T>({ data, renderCard, keyExtractor, isLoading, loadingCount, className, }: MobileCardListProps<T>): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=mobile-card-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-card-list.d.ts","sourceRoot":"","sources":["../../src/components/mobile-card-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,UAAU,mBAAmB,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAA;IACjD,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;IACjC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,EAChC,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,SAAiB,EACjB,YAAgB,EAChB,SAAS,GACV,EAAE,mBAAmB,CAAC,CAAC,CAAC,2CAmCxB"}
@@ -0,0 +1,2 @@
1
+ export declare function ModeToggle(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=mode-toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-toggle.d.ts","sourceRoot":"","sources":["../../src/components/mode-toggle.tsx"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,4CA0CzB"}
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from "react";
2
+ interface PageHeaderProps {
3
+ title: string;
4
+ description?: string;
5
+ action?: ReactNode;
6
+ className?: string;
7
+ }
8
+ export declare function PageHeader({ title, description, action, className }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=page-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-header.d.ts","sourceRoot":"","sources":["../../src/components/page-header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,eAAe,2CAYpF"}
@@ -0,0 +1,10 @@
1
+ interface PaginationProps {
2
+ page: number;
3
+ onPageChange: (page: number) => void;
4
+ hasNextPage: boolean;
5
+ hasPreviousPage: boolean;
6
+ className?: string;
7
+ }
8
+ export declare function Pagination({ page, onPageChange, hasNextPage, hasPreviousPage, className }: PaginationProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,eAAe,2CAsB1G"}
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from "react";
2
+ interface ResponsiveDataViewProps {
3
+ table: ReactNode;
4
+ cards: ReactNode;
5
+ isEmpty: boolean;
6
+ isLoading: boolean;
7
+ emptyIcon?: ReactNode;
8
+ emptyTitle?: string;
9
+ emptyDescription?: string;
10
+ pagination?: ReactNode;
11
+ }
12
+ export declare function ResponsiveDataView({ table, cards, isEmpty, isLoading, emptyIcon, emptyTitle, emptyDescription, pagination, }: ResponsiveDataViewProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=responsive-data-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsive-data-view.d.ts","sourceRoot":"","sources":["../../src/components/responsive-data-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,SAAS,CAAA;CACvB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAyC,EAAE,gBAAgB,EAAE,UAAU,GACrH,EAAE,uBAAuB,2CAezB"}
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ interface SearchInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
3
+ containerClassName?: string;
4
+ }
5
+ export declare const SearchInput: React.ForwardRefExoticComponent<SearchInputProps & React.RefAttributes<HTMLInputElement>>;
6
+ export {};
7
+ //# sourceMappingURL=search-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-input.d.ts","sourceRoot":"","sources":["../../src/components/search-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,UAAU,gBAAiB,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;IAC5E,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,eAAO,MAAM,WAAW,2FA4BvB,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from "react";
2
+ interface StatCardProps {
3
+ label: string;
4
+ value: ReactNode;
5
+ detail?: string;
6
+ icon?: ReactNode;
7
+ isLoading?: boolean;
8
+ }
9
+ export declare function StatCard({ label, value, detail, icon, isLoading }: StatCardProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=stat-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stat-card.d.ts","sourceRoot":"","sources":["../../src/components/stat-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,aAAa,2CAwBhF"}
@@ -0,0 +1,8 @@
1
+ interface StatusDotProps {
2
+ active: boolean;
3
+ label?: string;
4
+ className?: string;
5
+ }
6
+ export declare function StatusDot({ active, label, className }: StatusDotProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=status-dot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-dot.d.ts","sourceRoot":"","sources":["../../src/components/status-dot.tsx"],"names":[],"mappings":"AAAA,UAAU,cAAc;IACtB,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,cAAc,2CASrE"}
@@ -0,0 +1,7 @@
1
+ interface TableSkeletonProps {
2
+ rows?: number;
3
+ columns?: number;
4
+ }
5
+ export declare function TableSkeleton({ rows, columns }: TableSkeletonProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=table-skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-skeleton.d.ts","sourceRoot":"","sources":["../../src/components/table-skeleton.tsx"],"names":[],"mappings":"AAAA,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAQ,EAAE,OAAW,EAAE,EAAE,kBAAkB,2CAc1E"}
@@ -0,0 +1,14 @@
1
+ type Theme = "dark" | "light" | "system";
2
+ type ThemeProviderProps = {
3
+ children: React.ReactNode;
4
+ defaultTheme?: Theme;
5
+ storageKey?: string;
6
+ };
7
+ type ThemeProviderState = {
8
+ theme: Theme;
9
+ setTheme: (theme: Theme) => void;
10
+ };
11
+ export declare function ThemeProvider({ children, defaultTheme, storageKey, ...props }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function useTheme(): ThemeProviderState;
13
+ export type { Theme, ThemeProviderProps, ThemeProviderState };
14
+ //# sourceMappingURL=theme-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../src/components/theme-provider.tsx"],"names":[],"mappings":"AAEA,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AAExC,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC,CAAA;AASD,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,YAAuB,EACvB,UAAuB,EACvB,GAAG,KAAK,EACT,EAAE,kBAAkB,2CA+BpB;AAED,wBAAgB,QAAQ,uBAMvB;AAED,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { Toaster as Sonner } from "sonner";
2
+ type ToasterProps = React.ComponentProps<typeof Sonner>;
3
+ export declare function Toaster(props: ToasterProps): import("react/jsx-runtime").JSX.Element;
4
+ export {};
5
+ //# sourceMappingURL=toaster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.d.ts","sourceRoot":"","sources":["../../src/components/toaster.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE1C,KAAK,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAA;AAEvD,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAyB1C"}
@@ -0,0 +1,8 @@
1
+ export declare function useDisclosure(initial?: boolean): {
2
+ open: boolean;
3
+ onOpen: () => void;
4
+ onClose: () => void;
5
+ onToggle: () => void;
6
+ setOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
7
+ };
8
+ //# sourceMappingURL=use-disclosure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-disclosure.d.ts","sourceRoot":"","sources":["../../src/hooks/use-disclosure.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,OAAO,UAAQ;;;;;;EAM5C"}
@@ -0,0 +1,5 @@
1
+ import { toast } from "sonner";
2
+ type ToastStatus = "success" | "error" | "info" | "warning";
3
+ export declare function useCustomToast(): (title: string, description?: string, status?: ToastStatus) => void;
4
+ export { toast };
5
+ //# sourceMappingURL=use-toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.d.ts","sourceRoot":"","sources":["../../src/hooks/use-toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAG9B,KAAK,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;AAE3D,wBAAgB,cAAc,YAElB,MAAM,gBAAgB,MAAM,WAAU,WAAW,UAoB5D;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}