@addsign/moje-agenda-shared-lib 2.0.11 → 2.0.13

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 (152) hide show
  1. package/dist/Dialog-4hkwYHTJ.js +424 -0
  2. package/dist/Dialog-4hkwYHTJ.js.map +1 -0
  3. package/dist/Dialog-CrRXl-G2.js +424 -0
  4. package/dist/Dialog-CrRXl-G2.js.map +1 -0
  5. package/dist/Dialog-D9rsAQnn.js +424 -0
  6. package/dist/Dialog-D9rsAQnn.js.map +1 -0
  7. package/dist/Dialog-v5zgZE_G.js +424 -0
  8. package/dist/Dialog-v5zgZE_G.js.map +1 -0
  9. package/dist/assets/style.css +192 -0
  10. package/dist/components/datatable/DataTable.js +2 -1
  11. package/dist/components/datatable/DataTable.js.map +1 -1
  12. package/dist/components/datatable/DataTableServer.js +2 -1
  13. package/dist/components/datatable/DataTableServer.js.map +1 -1
  14. package/dist/components/form/AutocompleteSearchBar.js +2 -1
  15. package/dist/components/form/AutocompleteSearchBar.js.map +1 -1
  16. package/dist/components/form/AutocompleteSearchBarServer.js +2 -1
  17. package/dist/components/form/AutocompleteSearchBarServer.js.map +1 -1
  18. package/dist/components/form/FileInput.js +3 -2
  19. package/dist/components/form/FileInput.js.map +1 -1
  20. package/dist/components/form/FileInputMultiple.js +5 -3
  21. package/dist/components/form/FileInputMultiple.js.map +1 -1
  22. package/dist/components/form/FormField.js +2 -1
  23. package/dist/components/form/FormField.js.map +1 -1
  24. package/dist/components/form/PositionsSelectorSingle.js +2 -1
  25. package/dist/components/form/PositionsSelectorSingle.js.map +1 -1
  26. package/dist/components/form/SelectField.js +2 -1
  27. package/dist/components/form/SelectField.js.map +1 -1
  28. package/dist/components/layout/CollapsibleSection.d.ts +11 -0
  29. package/dist/components/layout/CollapsibleSection.js +35 -0
  30. package/dist/components/layout/CollapsibleSection.js.map +1 -0
  31. package/dist/components/profiles/ProfileOverview.js +2 -1
  32. package/dist/components/profiles/ProfileOverview.js.map +1 -1
  33. package/dist/components/ui/Combobox.js +1 -1
  34. package/dist/components/ui/DateTimePicker.js +35 -28
  35. package/dist/components/ui/DateTimePicker.js.map +1 -1
  36. package/dist/components/ui/Dialog.js +1 -1
  37. package/dist/components/ui/ScrollArea.js +1 -1
  38. package/dist/components/ui/checkbox.js +1 -1
  39. package/dist/components/ui/command.js +2 -2
  40. package/dist/components/ui/datepicker.js +1 -1
  41. package/dist/components/ui/label.js +1 -1
  42. package/dist/components/ui/popover.js +7 -314
  43. package/dist/components/ui/popover.js.map +1 -1
  44. package/dist/components/ui/radioGroup.js +1 -1
  45. package/dist/components/ui/select.js +7 -5
  46. package/dist/components/ui/select.js.map +1 -1
  47. package/dist/components/ui/separator.js +1 -1
  48. package/dist/components/ui/sonner.d.ts +5 -0
  49. package/dist/components/ui/sonner.js +27 -0
  50. package/dist/components/ui/sonner.js.map +1 -0
  51. package/dist/components/ui/toast.d.ts +15 -0
  52. package/dist/components/ui/toast.js +742 -0
  53. package/dist/components/ui/toast.js.map +1 -0
  54. package/dist/components/ui/tooltip.js +4 -4
  55. package/dist/index-B4D9tlF2.js +37 -0
  56. package/dist/index-B4D9tlF2.js.map +1 -0
  57. package/dist/index-BIGXjoju.js +1162 -0
  58. package/dist/index-BIGXjoju.js.map +1 -0
  59. package/dist/index-BM2wqH4l.js +270 -0
  60. package/dist/index-BM2wqH4l.js.map +1 -0
  61. package/dist/index-BkUJPEGE.js +43 -0
  62. package/dist/index-BkUJPEGE.js.map +1 -0
  63. package/dist/index-BqfaqJMm.js +43 -0
  64. package/dist/index-BqfaqJMm.js.map +1 -0
  65. package/dist/index-BvG0B6Se.js +43 -0
  66. package/dist/index-BvG0B6Se.js.map +1 -0
  67. package/dist/index-ByYhNx4V.js +2204 -0
  68. package/dist/index-ByYhNx4V.js.map +1 -0
  69. package/dist/index-C1NhngpB.js +2212 -0
  70. package/dist/index-C1NhngpB.js.map +1 -0
  71. package/dist/index-C5uX_8yI.js +36 -0
  72. package/dist/index-C5uX_8yI.js.map +1 -0
  73. package/dist/index-CEVipgcd.js +234 -0
  74. package/dist/index-CEVipgcd.js.map +1 -0
  75. package/dist/index-CFdw_5ue.js +2204 -0
  76. package/dist/index-CFdw_5ue.js.map +1 -0
  77. package/dist/index-CQ3u2ZB9.js +28845 -0
  78. package/dist/index-CQ3u2ZB9.js.map +1 -0
  79. package/dist/index-CcUZ0rsE.js +2397 -0
  80. package/dist/index-CcUZ0rsE.js.map +1 -0
  81. package/dist/index-CmEWEow1.js +304 -0
  82. package/dist/index-CmEWEow1.js.map +1 -0
  83. package/dist/index-CwJgIvMz.js +43 -0
  84. package/dist/index-CwJgIvMz.js.map +1 -0
  85. package/dist/index-CxRvlMsQ.js +1162 -0
  86. package/dist/index-CxRvlMsQ.js.map +1 -0
  87. package/dist/index-Cxv2lY-3.js +234 -0
  88. package/dist/index-Cxv2lY-3.js.map +1 -0
  89. package/dist/index-CzU-7Pp-.js +1162 -0
  90. package/dist/index-CzU-7Pp-.js.map +1 -0
  91. package/dist/index-D2vw2lEy.js +2266 -0
  92. package/dist/index-D2vw2lEy.js.map +1 -0
  93. package/dist/index-D71KqwUL.js +28839 -0
  94. package/dist/index-D71KqwUL.js.map +1 -0
  95. package/dist/index-DVCdWg5e.js +36 -0
  96. package/dist/index-DVCdWg5e.js.map +1 -0
  97. package/dist/index-DWPKrsrN.js +234 -0
  98. package/dist/index-DWPKrsrN.js.map +1 -0
  99. package/dist/index-DiJxz9_S.js +36 -0
  100. package/dist/index-DiJxz9_S.js.map +1 -0
  101. package/dist/index-DjS0QG2f.js +28845 -0
  102. package/dist/index-DjS0QG2f.js.map +1 -0
  103. package/dist/index-FMLr5tN7.js +19 -0
  104. package/dist/index-FMLr5tN7.js.map +1 -0
  105. package/dist/index-GT3w9A2i.js +19 -0
  106. package/dist/index-GT3w9A2i.js.map +1 -0
  107. package/dist/index-Gbap2fMl.js +304 -0
  108. package/dist/index-Gbap2fMl.js.map +1 -0
  109. package/dist/index-R1AkuSsS.js +2204 -0
  110. package/dist/index-R1AkuSsS.js.map +1 -0
  111. package/dist/index-VCw-BbEd.js +36 -0
  112. package/dist/index-VCw-BbEd.js.map +1 -0
  113. package/dist/index-WjZKx4Rq.js +2266 -0
  114. package/dist/index-WjZKx4Rq.js.map +1 -0
  115. package/dist/index-XoubH6QK.js +19 -0
  116. package/dist/index-XoubH6QK.js.map +1 -0
  117. package/dist/index-cAAySw6z.js +19 -0
  118. package/dist/index-cAAySw6z.js.map +1 -0
  119. package/dist/index-eb1oES0O.js +234 -0
  120. package/dist/index-eb1oES0O.js.map +1 -0
  121. package/dist/index-efRbPAF9.js +304 -0
  122. package/dist/index-efRbPAF9.js.map +1 -0
  123. package/dist/index-g4PMBWfd.js +1162 -0
  124. package/dist/index-g4PMBWfd.js.map +1 -0
  125. package/dist/index-kx4d2yA2.js +2204 -0
  126. package/dist/index-kx4d2yA2.js.map +1 -0
  127. package/dist/index-tDQ16jIS.js +304 -0
  128. package/dist/index-tDQ16jIS.js.map +1 -0
  129. package/dist/index-u7IL3f7h.js +28811 -0
  130. package/dist/index-u7IL3f7h.js.map +1 -0
  131. package/dist/index.es-CORXX5Cy.js +9594 -0
  132. package/dist/index.es-CORXX5Cy.js.map +1 -0
  133. package/dist/jspdf.plugin.autotable-f-NQ-KEg.js +11475 -0
  134. package/dist/jspdf.plugin.autotable-f-NQ-KEg.js.map +1 -0
  135. package/dist/main.d.ts +2 -0
  136. package/dist/main.js +21 -15
  137. package/dist/main.js.map +1 -1
  138. package/dist/popover-BtPiVBn9.js +319 -0
  139. package/dist/popover-BtPiVBn9.js.map +1 -0
  140. package/dist/types.d.ts +1 -0
  141. package/dist/types.js.map +1 -1
  142. package/dist/utils/handleErrors.js +2 -1
  143. package/dist/utils/handleErrors.js.map +1 -1
  144. package/lib/components/form/FileInputMultiple.tsx +1 -0
  145. package/lib/components/layout/CollapsibleSection.tsx +48 -0
  146. package/lib/components/ui/DateTimePicker.tsx +50 -37
  147. package/lib/components/ui/sonner.tsx +31 -0
  148. package/lib/components/ui/toast.tsx +129 -0
  149. package/lib/main.ts +5 -0
  150. package/lib/types.ts +1 -0
  151. package/lib/utils/handleErrors.ts +2 -1
  152. package/package.json +4 -1
@@ -14,6 +14,7 @@ import {
14
14
  SelectTrigger,
15
15
  SelectValue,
16
16
  } from "./select";
17
+ import { PopoverClose } from "@radix-ui/react-popover";
17
18
 
18
19
  const DATE_FORMAT = "dd.MM.yyyy HH:mm";
19
20
 
@@ -25,6 +26,18 @@ interface DateTimePickerProps {
25
26
  clearable?: boolean;
26
27
  }
27
28
 
29
+ // Helper function to round to the nearest half-hour
30
+ const roundToNearestHalfHour = (date: Date) => {
31
+ const minutes = date.getMinutes();
32
+ const roundedMinutes = minutes < 15 ? 0 : minutes < 45 ? 30 : 60;
33
+ return set(date, {
34
+ seconds: 0,
35
+ milliseconds: 0,
36
+ minutes: roundedMinutes,
37
+ hours: roundedMinutes === 60 ? date.getHours() + 1 : date.getHours(),
38
+ });
39
+ };
40
+
28
41
  const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(
29
42
  (
30
43
  { value, onChange, className, clearable = true, placeholder, ...props },
@@ -35,8 +48,9 @@ const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(
35
48
 
36
49
  useEffect(() => {
37
50
  if (value) {
38
- setDateTime(value);
39
- setInputValue(format(value, DATE_FORMAT));
51
+ const roundedDate = roundToNearestHalfHour(value);
52
+ setDateTime(roundedDate);
53
+ setInputValue(format(roundedDate, DATE_FORMAT));
40
54
  } else {
41
55
  setDateTime(null);
42
56
  setInputValue("");
@@ -100,17 +114,11 @@ const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(
100
114
 
101
115
  const handleTimeSelect = (time: string) => {
102
116
  const [hours, minutes] = time.split(":").map(Number);
103
- if (dateTime) {
104
- const newDateTime = set(dateTime, { hours, minutes });
105
- setDateTime(newDateTime);
106
- onChange?.(newDateTime);
107
- setInputValue(format(newDateTime, DATE_FORMAT));
108
- } else {
109
- const newDateTime = set(new Date(), { hours, minutes });
110
- setDateTime(newDateTime);
111
- onChange?.(newDateTime);
112
- setInputValue(format(newDateTime, DATE_FORMAT));
113
- }
117
+
118
+ const newDateTime = set(dateTime ?? new Date(), { hours, minutes });
119
+ setDateTime(newDateTime);
120
+ onChange?.(newDateTime);
121
+ setInputValue(format(newDateTime, DATE_FORMAT));
114
122
  };
115
123
 
116
124
  const handleClear = () => {
@@ -165,30 +173,35 @@ const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(
165
173
  initialFocus
166
174
  />
167
175
  <div className="p-3 border-t border-border">
168
- <Select
169
- onValueChange={handleTimeSelect}
170
- value={dateTime ? format(dateTime, "HH:mm") : undefined}
171
- >
172
- <SelectTrigger>
173
- <SelectValue placeholder="Select time">
174
- {dateTime ? (
175
- <div className="flex items-center">
176
- <Clock className="mr-2 h-4 w-4" />
177
- {format(dateTime, "HH:mm")}
178
- </div>
179
- ) : (
180
- "Select time"
181
- )}
182
- </SelectValue>
183
- </SelectTrigger>
184
- <SelectContent>
185
- {timeOptions.map((time) => (
186
- <SelectItem key={time} value={time}>
187
- {time}
188
- </SelectItem>
189
- ))}
190
- </SelectContent>
191
- </Select>
176
+ <div className="flex items-center justify-between">
177
+ <Select
178
+ onValueChange={handleTimeSelect}
179
+ value={dateTime ? format(dateTime, "HH:mm") : undefined}
180
+ >
181
+ <SelectTrigger>
182
+ <SelectValue placeholder="Select time">
183
+ {dateTime ? (
184
+ <div className="flex items-center">
185
+ <Clock className="mr-2 h-4 w-4" />
186
+ {format(dateTime, "HH:mm")}
187
+ </div>
188
+ ) : (
189
+ "Select time"
190
+ )}
191
+ </SelectValue>
192
+ </SelectTrigger>
193
+ <SelectContent>
194
+ {timeOptions.map((time) => (
195
+ <SelectItem key={time} value={time}>
196
+ {time}
197
+ </SelectItem>
198
+ ))}
199
+ </SelectContent>
200
+ </Select>
201
+ <PopoverClose asChild>
202
+ <Button className="ml-2 px-3">OK</Button>
203
+ </PopoverClose>
204
+ </div>
192
205
  </div>
193
206
  </PopoverContent>
194
207
  </Popover>
@@ -0,0 +1,31 @@
1
+ "use client";
2
+
3
+ import { useTheme } from "next-themes";
4
+ import { Toaster as Sonner, toast } from "sonner";
5
+
6
+ type ToasterProps = React.ComponentProps<typeof Sonner>;
7
+
8
+ const Toaster = ({ ...props }: ToasterProps) => {
9
+ const { theme = "system" } = useTheme();
10
+
11
+ return (
12
+ <Sonner
13
+ theme={theme as ToasterProps["theme"]}
14
+ className="toaster group"
15
+ toastOptions={{
16
+ classNames: {
17
+ toast:
18
+ "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
19
+ description: "group-[.toast]:text-muted-foreground",
20
+ actionButton:
21
+ "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
22
+ cancelButton:
23
+ "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",
24
+ },
25
+ }}
26
+ {...props}
27
+ />
28
+ );
29
+ };
30
+
31
+ export { Toaster, toast };
@@ -0,0 +1,129 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import * as ToastPrimitives from "@radix-ui/react-toast";
5
+ import { cva, type VariantProps } from "class-variance-authority";
6
+ import { X } from "lucide-react";
7
+
8
+ import { cn } from "../../utils/utils";
9
+
10
+ const ToastProvider = ToastPrimitives.Provider;
11
+
12
+ const ToastViewport = React.forwardRef<
13
+ React.ElementRef<typeof ToastPrimitives.Viewport>,
14
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>
15
+ >(({ className, ...props }, ref) => (
16
+ <ToastPrimitives.Viewport
17
+ ref={ref}
18
+ className={cn(
19
+ "fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",
20
+ className
21
+ )}
22
+ {...props}
23
+ />
24
+ ));
25
+ ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
26
+
27
+ const toastVariants = cva(
28
+ "group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",
29
+ {
30
+ variants: {
31
+ variant: {
32
+ default: "border bg-background text-foreground",
33
+ destructive:
34
+ "destructive group border-destructive bg-destructive text-destructive-foreground",
35
+ },
36
+ },
37
+ defaultVariants: {
38
+ variant: "default",
39
+ },
40
+ }
41
+ );
42
+
43
+ const Toast = React.forwardRef<
44
+ React.ElementRef<typeof ToastPrimitives.Root>,
45
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &
46
+ VariantProps<typeof toastVariants>
47
+ >(({ className, variant, ...props }, ref) => {
48
+ return (
49
+ <ToastPrimitives.Root
50
+ ref={ref}
51
+ className={cn(toastVariants({ variant }), className)}
52
+ {...props}
53
+ />
54
+ );
55
+ });
56
+ Toast.displayName = ToastPrimitives.Root.displayName;
57
+
58
+ const ToastAction = React.forwardRef<
59
+ React.ElementRef<typeof ToastPrimitives.Action>,
60
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>
61
+ >(({ className, ...props }, ref) => (
62
+ <ToastPrimitives.Action
63
+ ref={ref}
64
+ className={cn(
65
+ "inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",
66
+ className
67
+ )}
68
+ {...props}
69
+ />
70
+ ));
71
+ ToastAction.displayName = ToastPrimitives.Action.displayName;
72
+
73
+ const ToastClose = React.forwardRef<
74
+ React.ElementRef<typeof ToastPrimitives.Close>,
75
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>
76
+ >(({ className, ...props }, ref) => (
77
+ <ToastPrimitives.Close
78
+ ref={ref}
79
+ className={cn(
80
+ "absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",
81
+ className
82
+ )}
83
+ toast-close=""
84
+ {...props}
85
+ >
86
+ <X className="h-4 w-4" />
87
+ </ToastPrimitives.Close>
88
+ ));
89
+ ToastClose.displayName = ToastPrimitives.Close.displayName;
90
+
91
+ const ToastTitle = React.forwardRef<
92
+ React.ElementRef<typeof ToastPrimitives.Title>,
93
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>
94
+ >(({ className, ...props }, ref) => (
95
+ <ToastPrimitives.Title
96
+ ref={ref}
97
+ className={cn("text-sm font-semibold", className)}
98
+ {...props}
99
+ />
100
+ ));
101
+ ToastTitle.displayName = ToastPrimitives.Title.displayName;
102
+
103
+ const ToastDescription = React.forwardRef<
104
+ React.ElementRef<typeof ToastPrimitives.Description>,
105
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>
106
+ >(({ className, ...props }, ref) => (
107
+ <ToastPrimitives.Description
108
+ ref={ref}
109
+ className={cn("text-sm opacity-90", className)}
110
+ {...props}
111
+ />
112
+ ));
113
+ ToastDescription.displayName = ToastPrimitives.Description.displayName;
114
+
115
+ type ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;
116
+
117
+ type ToastActionElement = React.ReactElement<typeof ToastAction>;
118
+
119
+ export {
120
+ type ToastProps,
121
+ type ToastActionElement,
122
+ ToastProvider,
123
+ ToastViewport,
124
+ Toast,
125
+ ToastTitle,
126
+ ToastDescription,
127
+ ToastClose,
128
+ ToastAction,
129
+ };
package/lib/main.ts CHANGED
@@ -23,6 +23,10 @@ export { default as Modal } from "./components/Modal.tsx";
23
23
  export { default as PositionsSelectorSingle } from "./components/form/PositionsSelectorSingle.tsx";
24
24
  export { default as Calendar } from "./components/Calendar.tsx";
25
25
  export { default as DataTable } from "./components/datatable/DataTable.tsx";
26
+ export { default as CollapsibleSection } from "./components/layout/CollapsibleSection.tsx";
27
+
28
+
29
+
26
30
  export {
27
31
  default as DataTableServer,
28
32
  resetAllDataTablePaging,
@@ -61,6 +65,7 @@ export * from "./components/ui/tooltip.tsx";
61
65
  export * from "./components/ui/separator.tsx";
62
66
  export * from "./components/ui/textarea.tsx";
63
67
  export * from "./components/ui/checkbox.tsx";
68
+ export * from "./components/ui/sonner.tsx";
64
69
  export { Button as ButtonCN, buttonVariants } from "./components/ui/button.tsx";
65
70
 
66
71
 
package/lib/types.ts CHANGED
@@ -66,6 +66,7 @@ export interface IEventMessage {
66
66
  message?: string;
67
67
  timeout?: number;
68
68
  classes?: string;
69
+ type?: "success" | "info" | "warning" | "error";
69
70
  }
70
71
 
71
72
  export type Events = {
@@ -22,7 +22,8 @@ const handleErrors = (error: AxiosError, emitter: Emitter<Events>, customMessage
22
22
  title: errorTitle,
23
23
  message: errmsgToDisplay,
24
24
  classes: "bg-danger ",
25
- timeout: 0
25
+ timeout: 0,
26
+ type: "error"
26
27
  });
27
28
  }
28
29
  export { handleErrors }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@addsign/moje-agenda-shared-lib",
3
3
  "private": false,
4
- "version": "2.0.11",
4
+ "version": "2.0.13",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",
7
7
  "types": "dist/main.d.ts",
@@ -73,6 +73,7 @@
73
73
  "@radix-ui/react-select": "^2.1.2",
74
74
  "@radix-ui/react-separator": "^1.1.0",
75
75
  "@radix-ui/react-slot": "^1.1.0",
76
+ "@radix-ui/react-toast": "^1.2.2",
76
77
  "@radix-ui/react-tooltip": "^1.1.4",
77
78
  "@types/date-fns": "^2.6.3",
78
79
  "axios": "^1.7.2",
@@ -85,6 +86,7 @@
85
86
  "jspdf-autotable": "^3.8.3",
86
87
  "lucide-react": "^0.456.0",
87
88
  "mitt": "^3.0.1",
89
+ "next-themes": "^0.4.4",
88
90
  "react-datepicker": "^7.5.0",
89
91
  "react-day-picker": "^8.10.1",
90
92
  "react-dropzone": "^14.2.3",
@@ -92,6 +94,7 @@
92
94
  "react-icons": "^5.2.1",
93
95
  "react-tailwindcss-datepicker": "^1.6.6",
94
96
  "react-use": "^17.5.0",
97
+ "sonner": "^1.7.1",
95
98
  "tailwind-merge": "^2.5.4",
96
99
  "tailwindcss-animate": "^1.0.7",
97
100
  "xlsx": "^0.18.5",