ptechcore_ui 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -29,11 +29,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  // src/index.ts
30
30
  var index_exports = {};
31
31
  __export(index_exports, {
32
+ DateInput: () => DateInput,
33
+ FileInput: () => FileInput,
34
+ InputField: () => InputField,
35
+ Modal: () => Modals_default,
36
+ NumberInput: () => NumberInput,
32
37
  Pages: () => Pages_default,
33
38
  PrimaryButton: () => Buttons_default,
34
39
  RewiseLayout: () => ModernDoubleSidebarLayout_default,
35
40
  SecondaryButton: () => SecondaryButton,
41
+ SelectInput: () => SelectInput,
36
42
  SessionProvider: () => SessionProvider,
43
+ TextInput: () => TextInput,
37
44
  ThemeProvider: () => ThemeContext_default,
38
45
  ToastContainer: () => Toast_default,
39
46
  ToastProvider: () => ToastProvider,
@@ -75,9 +82,189 @@ var SecondaryButton = ({
75
82
  );
76
83
  var Buttons_default = PrimaryButton;
77
84
 
85
+ // src/components/common/Modals.tsx
86
+ var import_jsx_runtime2 = require("react/jsx-runtime");
87
+ var Modal = ({ title, description, width, open, onClose, children }) => {
88
+ if (!open) return null;
89
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: `bg-white rounded-lg py-4 px-6 mx-4 w-[${width ? width : "60%"}]`, children: [
90
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "flex justify-between items-start mb-6", children: [
91
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
92
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h3", { className: "text-xl font-semibold text-tuatara flex items-center space-x-2", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: title }) }),
93
+ description && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "text-sm text-gray-600 mt-1", children: description })
94
+ ] }),
95
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
96
+ "button",
97
+ {
98
+ onClick: onClose,
99
+ className: "text-gray-400 hover:text-gray-600 text-xl",
100
+ "aria-label": "Close modal",
101
+ children: "\u2715"
102
+ }
103
+ )
104
+ ] }),
105
+ children
106
+ ] }) });
107
+ };
108
+ var Modals_default = Modal;
109
+
110
+ // src/components/common/Inputs.tsx
111
+ var import_react_router_dom = require("react-router-dom");
112
+ var import_jsx_runtime3 = require("react/jsx-runtime");
113
+ var InputField = ({
114
+ label,
115
+ name,
116
+ type = "text",
117
+ value,
118
+ placeholder,
119
+ required = false,
120
+ disabled = false,
121
+ error,
122
+ onChange,
123
+ onBlur
124
+ }) => {
125
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex flex-col gap-1 w-full", children: [
126
+ label && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("label", { htmlFor: name, className: "block text-gray-700 text-sm font-medium mb-2", children: [
127
+ label,
128
+ " ",
129
+ required && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-red-500", children: "*" })
130
+ ] }),
131
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
132
+ "input",
133
+ {
134
+ id: name,
135
+ name,
136
+ type,
137
+ value,
138
+ placeholder,
139
+ required,
140
+ disabled,
141
+ onChange,
142
+ onBlur,
143
+ className: `w-full px-3 py-2 border border-[#D9D9D9] focus:ring-2 focus:ring-[#6A8A82]/20
144
+ ${error ? "border-red-500" : "border-gray-300"}
145
+ ${disabled ? "bg-gray-100 cursor-not-allowed" : ""}
146
+ `
147
+ }
148
+ ),
149
+ error && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs text-red-500", children: error })
150
+ ] });
151
+ };
152
+ var TextInput = (props) => {
153
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(InputField, { ...props, type: "text" });
154
+ };
155
+ var NumberInput = (props) => {
156
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(InputField, { type: "number", ...props });
157
+ };
158
+ var DateInput = (props) => {
159
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(InputField, { type: "date", ...props });
160
+ };
161
+ var SelectInput = ({
162
+ label,
163
+ name,
164
+ value,
165
+ options,
166
+ defaultValue = "",
167
+ required = false,
168
+ disabled = false,
169
+ error,
170
+ className = "",
171
+ onChange,
172
+ onBlur
173
+ }) => {
174
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: `${className} flex flex-col gap-1 w-full`, children: [
175
+ label && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
176
+ "label",
177
+ {
178
+ htmlFor: name,
179
+ className: "block text-gray-700 text-sm font-medium mb-2",
180
+ children: [
181
+ label,
182
+ " ",
183
+ required && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-red-500", children: "*" })
184
+ ]
185
+ }
186
+ ),
187
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
188
+ "select",
189
+ {
190
+ id: name,
191
+ name,
192
+ value: value ?? "",
193
+ required,
194
+ disabled,
195
+ onChange,
196
+ onBlur,
197
+ className: `w-full px-4 py-2 border rounded-lg text-sm
198
+ focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent
199
+ ${error ? "border-red-500" : "border-gray-300"}
200
+ ${disabled ? "bg-gray-100 cursor-not-allowed" : ""}
201
+ `,
202
+ children: [
203
+ defaultValue !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("option", { value: "", children: typeof defaultValue === "string" ? defaultValue : "S\xE9lectionnez une option" }),
204
+ options.map(({ label: label2, value: optionValue }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("option", { value: optionValue, children: label2 }, optionValue))
205
+ ]
206
+ }
207
+ ),
208
+ error && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs text-red-500", children: error })
209
+ ] });
210
+ };
211
+ var addressIpformMedia = "http://localhost:8000/media/";
212
+ var FileInput = ({
213
+ label,
214
+ name,
215
+ file,
216
+ required = false,
217
+ disabled = false,
218
+ readOnly = false,
219
+ error,
220
+ onChange
221
+ }) => {
222
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex flex-col gap-1 w-full", children: [
223
+ label && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
224
+ "label",
225
+ {
226
+ htmlFor: name,
227
+ className: "block text-gray-700 text-sm font-medium mb-2",
228
+ children: [
229
+ label,
230
+ " ",
231
+ required && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-red-500", children: "*" }),
232
+ file && typeof file === "string" && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
233
+ import_react_router_dom.Link,
234
+ {
235
+ to: addressIpformMedia + file,
236
+ target: "_blank",
237
+ className: "ml-2 text-blue-600 underline text-sm",
238
+ children: file.split("/").pop()
239
+ }
240
+ ) })
241
+ ]
242
+ }
243
+ ),
244
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
245
+ "input",
246
+ {
247
+ id: name,
248
+ type: "file",
249
+ name,
250
+ onChange,
251
+ readOnly,
252
+ disabled,
253
+ required,
254
+ className: `w-full px-4 py-2 border rounded-lg text-sm
255
+ focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent
256
+ ${error ? "border-red-500" : "border-gray-300"}
257
+ ${disabled ? "bg-gray-100 cursor-not-allowed" : ""}
258
+ `
259
+ }
260
+ ),
261
+ error && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs text-red-500", children: error })
262
+ ] });
263
+ };
264
+
78
265
  // src/components/layout/ModernDoubleSidebarLayout.tsx
79
266
  var import_react2 = __toESM(require("react"), 1);
80
- var import_react_router_dom = require("react-router-dom");
267
+ var import_react_router_dom2 = require("react-router-dom");
81
268
  var import_lucide_react = require("lucide-react");
82
269
 
83
270
  // src/utils/utils.ts
@@ -420,7 +607,7 @@ var getThemeCSSVariables = (theme) => {
420
607
  };
421
608
 
422
609
  // src/contexts/ThemeContext.tsx
423
- var import_jsx_runtime2 = require("react/jsx-runtime");
610
+ var import_jsx_runtime4 = require("react/jsx-runtime");
424
611
  var ThemeContext = (0, import_react.createContext)(void 0);
425
612
  var useTheme = () => {
426
613
  const context = (0, import_react.useContext)(ThemeContext);
@@ -451,15 +638,15 @@ var ThemeProvider = ({ children }) => {
451
638
  setThemeState(themes[type]);
452
639
  }
453
640
  };
454
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ThemeContext.Provider, { value: { theme, themeType, setTheme }, children });
641
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ThemeContext.Provider, { value: { theme, themeType, setTheme }, children });
455
642
  };
456
643
  var ThemeContext_default = ThemeProvider;
457
644
 
458
645
  // src/components/layout/ModernDoubleSidebarLayout.tsx
459
- var import_jsx_runtime3 = require("react/jsx-runtime");
646
+ var import_jsx_runtime5 = require("react/jsx-runtime");
460
647
  var RewiseLayout = ({ children, module_name = "Rewise", module_description = "Description du module", primaryMenuItems, secondaryMenuItems }) => {
461
- const location = (0, import_react_router_dom.useLocation)();
462
- const navigate = (0, import_react_router_dom.useNavigate)();
648
+ const location = (0, import_react_router_dom2.useLocation)();
649
+ const navigate = (0, import_react_router_dom2.useNavigate)();
463
650
  const { theme, themeType, setTheme } = useTheme();
464
651
  const [primaryCollapsed, setPrimaryCollapsed] = (0, import_react2.useState)(false);
465
652
  const [secondaryCollapsed, setSecondaryCollapsed] = (0, import_react2.useState)(false);
@@ -542,8 +729,8 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
542
729
  (prev) => prev.map((n) => n.id === id ? { ...n, read: true } : n)
543
730
  );
544
731
  };
545
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex h-screen bg-[var(--color-background)] overflow-hidden", children: [
546
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
732
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex h-screen bg-[var(--color-background)] overflow-hidden", children: [
733
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
547
734
  "a",
548
735
  {
549
736
  href: "#main-content",
@@ -551,7 +738,7 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
551
738
  children: "Aller au contenu principal"
552
739
  }
553
740
  ),
554
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
741
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
555
742
  "aside",
556
743
  {
557
744
  className: cn(
@@ -561,38 +748,38 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
561
748
  role: "navigation",
562
749
  "aria-label": "Navigation principale",
563
750
  children: [
564
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "h-16 flex items-center justify-between px-4 border-b border-[var(--color-sidebar-border)]", children: [
565
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: cn(
751
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "h-16 flex items-center justify-between px-4 border-b border-[var(--color-sidebar-border)]", children: [
752
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: cn(
566
753
  "flex items-center gap-3",
567
754
  primaryCollapsed && "justify-center"
568
755
  ), children: [
569
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "w-10 h-10 bg-[var(--color-primary)] rounded-lg flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-[var(--color-background)] font-bold text-xl", children: "W" }) }),
570
- !primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
571
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { className: "text-[var(--color-sidebar-text)] font-bold text-lg", children: module_name }),
572
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-[var(--color-sidebar-text-secondary)] text-xs", children: module_description })
756
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "w-10 h-10 bg-[var(--color-primary)] rounded-lg flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-[var(--color-background)] font-bold text-xl", children: "W" }) }),
757
+ !primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { children: [
758
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h1", { className: "text-[var(--color-sidebar-text)] font-bold text-lg", children: module_name }),
759
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-[var(--color-sidebar-text-secondary)] text-xs", children: module_description })
573
760
  ] })
574
761
  ] }),
575
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
762
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
576
763
  "button",
577
764
  {
578
765
  onClick: () => setPrimaryCollapsed(!primaryCollapsed),
579
766
  className: "text-[var(--color-sidebar-text-secondary)] hover:text-[var(--color-sidebar-text)] transition-colors",
580
767
  "aria-label": primaryCollapsed ? "D\xE9velopper le menu" : "R\xE9duire le menu",
581
768
  "aria-expanded": !primaryCollapsed,
582
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.ChevronLeft, { className: cn(
769
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.ChevronLeft, { className: cn(
583
770
  "w-5 h-5 transition-transform",
584
771
  primaryCollapsed && "rotate-180"
585
772
  ) })
586
773
  }
587
774
  )
588
775
  ] }),
589
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
776
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
590
777
  "nav",
591
778
  {
592
779
  className: "flex-1 py-4 overflow-y-auto",
593
780
  role: "menubar",
594
781
  "aria-label": "Modules principaux",
595
- children: primaryMenuItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
782
+ children: primaryMenuItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
596
783
  "button",
597
784
  {
598
785
  onClick: () => {
@@ -612,48 +799,48 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
612
799
  "aria-label": item.ariaLabel || item.label,
613
800
  "aria-current": isModuleActive(item.id) ? "page" : void 0,
614
801
  children: [
615
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn(
802
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn(
616
803
  "transition-colors",
617
804
  isModuleActive(item.id) ? "text-[var(--color-primary)]" : "text-[var(--color-sidebar-text-secondary)] group-hover:text-[var(--color-sidebar-text)]"
618
805
  ), children: item.icon }),
619
- !primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
620
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cn(
806
+ !primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
807
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn(
621
808
  "flex-1 text-left text-sm font-medium transition-colors",
622
809
  isModuleActive(item.id) ? "text-[var(--color-sidebar-text)]" : "text-[var(--color-sidebar-text-secondary)] group-hover:text-[var(--color-sidebar-text)]"
623
810
  ), children: item.label }),
624
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "px-2 py-0.5 text-xs bg-[var(--color-primary)] text-[var(--color-background)] rounded-full", children: item.badge })
811
+ item.badge && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "px-2 py-0.5 text-xs bg-[var(--color-primary)] text-[var(--color-background)] rounded-full", children: item.badge })
625
812
  ] }),
626
- primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "absolute left-full ml-2 px-2 py-1 bg-[var(--color-sidebar-active)] text-[var(--color-sidebar-text)] text-xs rounded opacity-0 group-hover:opacity-100 pointer-events-none whitespace-nowrap z-50", children: item.label })
813
+ primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "absolute left-full ml-2 px-2 py-1 bg-[var(--color-sidebar-active)] text-[var(--color-sidebar-text)] text-xs rounded opacity-0 group-hover:opacity-100 pointer-events-none whitespace-nowrap z-50", children: item.label })
627
814
  ]
628
815
  },
629
816
  item.id
630
817
  ))
631
818
  }
632
819
  ),
633
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "p-4 border-t border-[var(--color-sidebar-border)]", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: cn(
820
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "p-4 border-t border-[var(--color-sidebar-border)]", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: cn(
634
821
  "flex items-center gap-3",
635
822
  primaryCollapsed && "justify-center"
636
823
  ), children: [
637
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "w-10 h-10 bg-[var(--color-sidebar-avatar-bg)] rounded-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.User, { className: "w-5 h-5 text-[var(--color-sidebar-text-secondary)]" }) }),
638
- !primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex-1", children: [
639
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-medium text-[var(--color-sidebar-text)]", children: "Admin" }),
640
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs text-[var(--color-sidebar-text-secondary)]", children: "admin@wisebook.com" })
824
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "w-10 h-10 bg-[var(--color-sidebar-avatar-bg)] rounded-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.User, { className: "w-5 h-5 text-[var(--color-sidebar-text-secondary)]" }) }),
825
+ !primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex-1", children: [
826
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium text-[var(--color-sidebar-text)]", children: "Admin" }),
827
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-xs text-[var(--color-sidebar-text-secondary)]", children: "admin@wisebook.com" })
641
828
  ] })
642
829
  ] }) })
643
830
  ]
644
831
  }
645
832
  ),
646
- secondaryMenuItems[selectedModule] && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
647
- secondaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
833
+ secondaryMenuItems[selectedModule] && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
834
+ secondaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
648
835
  "button",
649
836
  {
650
837
  onClick: () => setSecondaryCollapsed(false),
651
838
  className: "hidden lg:flex items-center justify-center w-12 h-full bg-[var(--color-background)] border-r border-[var(--color-border)] hover:bg-[var(--color-surface-hover)] transition-colors",
652
839
  "aria-label": "Ouvrir le sous-menu",
653
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.ChevronRight, { className: "w-5 h-5 text-[var(--color-text-tertiary)]" })
840
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.ChevronRight, { className: "w-5 h-5 text-[var(--color-text-tertiary)]" })
654
841
  }
655
842
  ),
656
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
843
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
657
844
  "aside",
658
845
  {
659
846
  className: cn(
@@ -663,28 +850,28 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
663
850
  role: "navigation",
664
851
  "aria-label": "Navigation secondaire",
665
852
  children: [
666
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "h-16 flex items-center justify-between px-4 border-b border-[var(--color-border)]", children: [
667
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h2", { className: "text-sm font-semibold text-[var(--color-text-secondary)] uppercase tracking-wider whitespace-nowrap", children: primaryMenuItems.find((item) => item.id === selectedModule)?.label }),
668
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
853
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "h-16 flex items-center justify-between px-4 border-b border-[var(--color-border)]", children: [
854
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h2", { className: "text-sm font-semibold text-[var(--color-text-secondary)] uppercase tracking-wider whitespace-nowrap", children: primaryMenuItems.find((item) => item.id === selectedModule)?.label }),
855
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
669
856
  "button",
670
857
  {
671
858
  onClick: () => setSecondaryCollapsed(!secondaryCollapsed),
672
859
  className: "text-[var(--color-text-tertiary)] hover:text-[var(--color-text-primary)] flex-shrink-0",
673
860
  "aria-label": secondaryCollapsed ? "D\xE9velopper le sous-menu" : "R\xE9duire le sous-menu",
674
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.ChevronLeft, { className: cn(
861
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.ChevronLeft, { className: cn(
675
862
  "w-4 h-4 transition-transform",
676
863
  secondaryCollapsed && "rotate-180"
677
864
  ) })
678
865
  }
679
866
  )
680
867
  ] }),
681
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
868
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
682
869
  "nav",
683
870
  {
684
871
  className: "flex-1 py-4 overflow-y-auto",
685
872
  role: "menu",
686
873
  "aria-label": "Sous-navigation",
687
- children: secondaryMenuItems[selectedModule]?.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
874
+ children: secondaryMenuItems[selectedModule]?.map((item) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
688
875
  "button",
689
876
  {
690
877
  onClick: () => item.path && navigate(item.path),
@@ -696,15 +883,15 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
696
883
  role: "menuitem",
697
884
  "aria-current": isActive(item.path || "") ? "page" : void 0,
698
885
  children: [
699
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn(
886
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn(
700
887
  "transition-colors",
701
888
  isActive(item.path || "") ? "text-[var(--color-primary)]" : "text-[var(--color-text-tertiary)]"
702
889
  ), children: item.icon }),
703
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cn(
890
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn(
704
891
  "flex-1 text-left text-sm",
705
892
  isActive(item.path || "") ? "text-[var(--color-primary)] font-medium" : "text-[var(--color-text-secondary)]"
706
893
  ), children: item.label }),
707
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "px-2 py-0.5 text-xs bg-[var(--color-primary)] text-white rounded-full", children: item.badge })
894
+ item.badge && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "px-2 py-0.5 text-xs bg-[var(--color-primary)] text-white rounded-full", children: item.badge })
708
895
  ]
709
896
  },
710
897
  item.id
@@ -715,13 +902,13 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
715
902
  }
716
903
  )
717
904
  ] }),
718
- mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
905
+ mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
719
906
  "div",
720
907
  {
721
908
  className: "fixed inset-0 bg-black bg-opacity-50 z-50 lg:hidden",
722
909
  onClick: () => setMobileMenuOpen(false),
723
910
  "aria-hidden": "true",
724
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
911
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
725
912
  "aside",
726
913
  {
727
914
  className: "w-80 h-full bg-[var(--color-sidebar-bg)]",
@@ -729,26 +916,26 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
729
916
  role: "navigation",
730
917
  "aria-label": "Navigation mobile",
731
918
  children: [
732
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "h-16 flex items-center justify-between px-4 border-b border-[var(--color-sidebar-border)]", children: [
733
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-center gap-3", children: [
734
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "w-10 h-10 bg-[var(--color-primary)] rounded-lg flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-[var(--color-background)] font-bold text-xl", children: "W" }) }),
735
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
736
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { className: "text-white font-bold text-lg", children: "WiseBook" }),
737
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-gray-400 text-xs", children: "ERP Next-Gen" })
919
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "h-16 flex items-center justify-between px-4 border-b border-[var(--color-sidebar-border)]", children: [
920
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-3", children: [
921
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "w-10 h-10 bg-[var(--color-primary)] rounded-lg flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-[var(--color-background)] font-bold text-xl", children: "W" }) }),
922
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { children: [
923
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h1", { className: "text-white font-bold text-lg", children: "WiseBook" }),
924
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-gray-400 text-xs", children: "ERP Next-Gen" })
738
925
  ] })
739
926
  ] }),
740
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
927
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
741
928
  "button",
742
929
  {
743
930
  onClick: () => setMobileMenuOpen(false),
744
931
  className: "text-[var(--color-sidebar-text-secondary)]",
745
932
  "aria-label": "Fermer le menu",
746
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.X, { className: "w-6 h-6" })
933
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.X, { className: "w-6 h-6" })
747
934
  }
748
935
  )
749
936
  ] }),
750
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("nav", { className: "py-4", role: "menubar", children: primaryMenuItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
751
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
937
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("nav", { className: "py-4", role: "menubar", children: primaryMenuItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { children: [
938
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
752
939
  "button",
753
940
  {
754
941
  onClick: () => {
@@ -767,19 +954,19 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
767
954
  role: "menuitem",
768
955
  "aria-current": isModuleActive(item.id) ? "page" : void 0,
769
956
  children: [
770
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn(
957
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn(
771
958
  "transition-colors",
772
959
  isModuleActive(item.id) ? "text-[var(--color-primary)]" : "text-[var(--color-sidebar-text-secondary)]"
773
960
  ), children: item.icon }),
774
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cn(
961
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn(
775
962
  "flex-1 text-left text-sm font-medium",
776
963
  isModuleActive(item.id) ? "text-[var(--color-sidebar-text)]" : "text-[var(--color-sidebar-text-secondary)]"
777
964
  ), children: item.label }),
778
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "px-2 py-0.5 text-xs bg-[var(--color-primary)] text-[var(--color-background)] rounded-full", children: item.badge })
965
+ item.badge && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "px-2 py-0.5 text-xs bg-[var(--color-primary)] text-[var(--color-background)] rounded-full", children: item.badge })
779
966
  ]
780
967
  }
781
968
  ),
782
- isModuleActive(item.id) && secondaryMenuItems[item.id] && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "bg-[var(--color-sidebar-submenu-bg)] py-2", children: secondaryMenuItems[item.id].map((subItem) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
969
+ isModuleActive(item.id) && secondaryMenuItems[item.id] && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "bg-[var(--color-sidebar-submenu-bg)] py-2", children: secondaryMenuItems[item.id].map((subItem) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
783
970
  "button",
784
971
  {
785
972
  onClick: () => {
@@ -795,7 +982,7 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
795
982
  ),
796
983
  children: [
797
984
  subItem.icon,
798
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cn(
985
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn(
799
986
  isActive(subItem.path || "") ? "text-[var(--color-primary)]" : "text-[var(--color-sidebar-text-secondary)]"
800
987
  ), children: subItem.label })
801
988
  ]
@@ -808,31 +995,31 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
808
995
  )
809
996
  }
810
997
  ),
811
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex-1 flex flex-col overflow-hidden", children: [
812
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
998
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex-1 flex flex-col overflow-hidden", children: [
999
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
813
1000
  "header",
814
1001
  {
815
1002
  className: "h-14 bg-[var(--color-background)] border-b border-[var(--color-border)] flex items-center justify-between px-3 lg:px-4",
816
1003
  role: "banner",
817
1004
  children: [
818
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-center gap-4 flex-1", children: [
819
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1005
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-4 flex-1", children: [
1006
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
820
1007
  "button",
821
1008
  {
822
1009
  onClick: () => setMobileMenuOpen(true),
823
1010
  className: "lg:hidden text-[var(--color-text-primary)]",
824
1011
  "aria-label": "Ouvrir le menu mobile",
825
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Menu, { className: "w-6 h-6" })
1012
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.Menu, { className: "w-6 h-6" })
826
1013
  }
827
1014
  ),
828
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1015
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
829
1016
  "nav",
830
1017
  {
831
1018
  className: "hidden sm:flex items-center gap-2 text-sm",
832
1019
  "aria-label": "Fil d'Ariane",
833
- children: getBreadcrumbs().map((crumb, index) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react2.default.Fragment, { children: [
834
- index > 0 && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.ChevronRight, { className: "w-4 h-4 text-[var(--color-text-tertiary)]" }),
835
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1020
+ children: getBreadcrumbs().map((crumb, index) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_react2.default.Fragment, { children: [
1021
+ index > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.ChevronRight, { className: "w-4 h-4 text-[var(--color-text-tertiary)]" }),
1022
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
836
1023
  "button",
837
1024
  {
838
1025
  onClick: () => navigate(crumb.path),
@@ -846,9 +1033,9 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
846
1033
  ] }, crumb.path))
847
1034
  }
848
1035
  ),
849
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative max-w-md flex-1 hidden lg:block", children: [
850
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 text-[var(--color-text-tertiary)] w-5 h-5" }),
851
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1036
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative max-w-md flex-1 hidden lg:block", children: [
1037
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 text-[var(--color-text-tertiary)] w-5 h-5" }),
1038
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
852
1039
  "input",
853
1040
  {
854
1041
  id: "global-search",
@@ -862,9 +1049,9 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
862
1049
  )
863
1050
  ] })
864
1051
  ] }),
865
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-center gap-3", children: [
866
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative", children: [
867
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1052
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-3", children: [
1053
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative", children: [
1054
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
868
1055
  "button",
869
1056
  {
870
1057
  onClick: () => setShowThemeMenu(!showThemeMenu),
@@ -872,18 +1059,18 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
872
1059
  title: "Changer le th\xE8me",
873
1060
  "aria-label": "S\xE9lecteur de th\xE8me",
874
1061
  "aria-expanded": showThemeMenu,
875
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Palette, { className: "w-5 h-5 text-[var(--color-text-secondary)]" })
1062
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.Palette, { className: "w-5 h-5 text-[var(--color-text-secondary)]" })
876
1063
  }
877
1064
  ),
878
- showThemeMenu && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1065
+ showThemeMenu && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
879
1066
  "div",
880
1067
  {
881
1068
  className: "absolute right-0 mt-2 w-64 bg-[var(--color-background)] rounded-lg shadow-xl border border-[var(--color-border)] z-50",
882
1069
  role: "menu",
883
1070
  "aria-label": "S\xE9lection du th\xE8me",
884
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "p-2", children: [
885
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "px-3 py-2 text-xs font-semibold text-[var(--color-text-tertiary)] uppercase", children: "Th\xE8mes disponibles" }),
886
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1071
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "p-2", children: [
1072
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "px-3 py-2 text-xs font-semibold text-[var(--color-text-tertiary)] uppercase", children: "Th\xE8mes disponibles" }),
1073
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
887
1074
  "button",
888
1075
  {
889
1076
  onClick: () => handleThemeChange("elegant"),
@@ -893,15 +1080,15 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
893
1080
  ),
894
1081
  role: "menuitem",
895
1082
  children: [
896
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "w-10 h-10 rounded-lg bg-gradient-to-br from-[var(--color-primary)] to-[var(--color-accent)]" }),
897
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "text-left", children: [
898
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-medium", children: "\xC9l\xE9gance Sobre" }),
899
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs text-[var(--color-text-tertiary)]", children: "Finance traditionnelle" })
1083
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "w-10 h-10 rounded-lg bg-gradient-to-br from-[var(--color-primary)] to-[var(--color-accent)]" }),
1084
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "text-left", children: [
1085
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium", children: "\xC9l\xE9gance Sobre" }),
1086
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-xs text-[var(--color-text-tertiary)]", children: "Finance traditionnelle" })
900
1087
  ] })
901
1088
  ]
902
1089
  }
903
1090
  ),
904
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1091
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
905
1092
  "button",
906
1093
  {
907
1094
  onClick: () => handleThemeChange("fintech"),
@@ -911,15 +1098,15 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
911
1098
  ),
912
1099
  role: "menuitem",
913
1100
  children: [
914
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "w-10 h-10 rounded-lg bg-gradient-to-br from-[var(--color-success)] to-[var(--color-text-primary)]" }),
915
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "text-left", children: [
916
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-medium", children: "Modern Fintech" }),
917
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs text-[var(--color-text-tertiary)]", children: "Tableau de bord moderne" })
1101
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "w-10 h-10 rounded-lg bg-gradient-to-br from-[var(--color-success)] to-[var(--color-text-primary)]" }),
1102
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "text-left", children: [
1103
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium", children: "Modern Fintech" }),
1104
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-xs text-[var(--color-text-tertiary)]", children: "Tableau de bord moderne" })
918
1105
  ] })
919
1106
  ]
920
1107
  }
921
1108
  ),
922
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1109
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
923
1110
  "button",
924
1111
  {
925
1112
  onClick: () => handleThemeChange("minimalist"),
@@ -929,10 +1116,10 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
929
1116
  ),
930
1117
  role: "menuitem",
931
1118
  children: [
932
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "w-10 h-10 rounded-lg bg-gradient-to-br from-[var(--color-text-secondary)] to-[var(--color-accent)]" }),
933
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "text-left", children: [
934
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-medium", children: "Minimaliste Premium" }),
935
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs text-[var(--color-text-tertiary)]", children: "\xC9l\xE9gance minimaliste" })
1119
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "w-10 h-10 rounded-lg bg-gradient-to-br from-[var(--color-text-secondary)] to-[var(--color-accent)]" }),
1120
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "text-left", children: [
1121
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium", children: "Minimaliste Premium" }),
1122
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-xs text-[var(--color-text-tertiary)]", children: "\xC9l\xE9gance minimaliste" })
936
1123
  ] })
937
1124
  ]
938
1125
  }
@@ -941,12 +1128,12 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
941
1128
  }
942
1129
  )
943
1130
  ] }),
944
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-center px-3 py-1.5 bg-[var(--color-surface)] rounded-lg border border-[var(--color-border)]", children: [
945
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.DollarSign, { className: "w-4 h-4 text-[var(--color-primary)] mr-2" }),
946
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-sm font-medium text-[var(--color-text-primary)]", children: "FCFA" })
1131
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center px-3 py-1.5 bg-[var(--color-surface)] rounded-lg border border-[var(--color-border)]", children: [
1132
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.DollarSign, { className: "w-4 h-4 text-[var(--color-primary)] mr-2" }),
1133
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm font-medium text-[var(--color-text-primary)]", children: "FCFA" })
947
1134
  ] }),
948
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative", children: [
949
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1135
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative", children: [
1136
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
950
1137
  "button",
951
1138
  {
952
1139
  className: "relative p-2 hover:bg-[var(--color-surface-hover)] rounded-lg transition-colors",
@@ -954,20 +1141,20 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
954
1141
  "aria-label": `Notifications ${notifications.filter((n) => !n.read).length > 0 ? `(${notifications.filter((n) => !n.read).length} non lues)` : ""}`,
955
1142
  "aria-expanded": showNotifications,
956
1143
  children: [
957
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Bell, { className: "w-5 h-5 text-[var(--color-text-secondary)]" }),
958
- notifications.filter((n) => !n.read).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "absolute top-1 right-1 w-2 h-2 bg-[var(--color-error)] rounded-full" })
1144
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.Bell, { className: "w-5 h-5 text-[var(--color-text-secondary)]" }),
1145
+ notifications.filter((n) => !n.read).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "absolute top-1 right-1 w-2 h-2 bg-[var(--color-error)] rounded-full" })
959
1146
  ]
960
1147
  }
961
1148
  ),
962
- showNotifications && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1149
+ showNotifications && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
963
1150
  "div",
964
1151
  {
965
1152
  className: "absolute right-0 mt-2 w-80 bg-[var(--color-background)] rounded-lg shadow-xl border border-[var(--color-border)] z-50 max-h-96 overflow-y-auto",
966
1153
  role: "region",
967
1154
  "aria-label": "Centre de notifications",
968
1155
  children: [
969
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "p-4 border-b border-[var(--color-border)]", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h3", { className: "font-semibold text-[var(--color-text-primary)]", children: "Notifications" }) }),
970
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "divide-y divide-[var(--color-border)]", children: notifications.map((notif) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1156
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "p-4 border-b border-[var(--color-border)]", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h3", { className: "font-semibold text-[var(--color-text-primary)]", children: "Notifications" }) }),
1157
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "divide-y divide-[var(--color-border)]", children: notifications.map((notif) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
971
1158
  "div",
972
1159
  {
973
1160
  className: cn(
@@ -975,18 +1162,18 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
975
1162
  !notif.read && "bg-[var(--color-primary-light)] bg-opacity-10"
976
1163
  ),
977
1164
  onClick: () => markNotificationAsRead(notif.id),
978
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-start gap-3", children: [
979
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn(
1165
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-start gap-3", children: [
1166
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn(
980
1167
  "w-2 h-2 rounded-full mt-2",
981
1168
  notif.type === "error" && "bg-[var(--color-error)]",
982
1169
  notif.type === "warning" && "bg-[var(--color-warning)]",
983
1170
  notif.type === "success" && "bg-[var(--color-success)]",
984
1171
  notif.type === "info" && "bg-[var(--color-info)]"
985
1172
  ) }),
986
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex-1", children: [
987
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-medium text-[var(--color-text-primary)]", children: notif.title }),
988
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs text-[var(--color-text-secondary)] mt-1", children: notif.message }),
989
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs text-[var(--color-text-tertiary)] mt-2", children: notif.timestamp.toLocaleTimeString() })
1173
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex-1", children: [
1174
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium text-[var(--color-text-primary)]", children: notif.title }),
1175
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-xs text-[var(--color-text-secondary)] mt-1", children: notif.message }),
1176
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-xs text-[var(--color-text-tertiary)] mt-2", children: notif.timestamp.toLocaleTimeString() })
990
1177
  ] })
991
1178
  ] })
992
1179
  },
@@ -996,36 +1183,36 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
996
1183
  }
997
1184
  )
998
1185
  ] }),
999
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative", children: [
1000
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1186
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative", children: [
1187
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1001
1188
  "button",
1002
1189
  {
1003
1190
  onClick: () => setShowUserMenu(!showUserMenu),
1004
1191
  className: "flex items-center gap-2 p-2 hover:bg-[var(--color-surface-hover)] rounded-lg transition-colors",
1005
1192
  "aria-label": "Menu utilisateur",
1006
1193
  "aria-expanded": showUserMenu,
1007
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "w-8 h-8 bg-[var(--color-primary)] rounded-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.User, { className: "w-4 h-4 text-[var(--color-background)]" }) })
1194
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "w-8 h-8 bg-[var(--color-primary)] rounded-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.User, { className: "w-4 h-4 text-[var(--color-background)]" }) })
1008
1195
  }
1009
1196
  ),
1010
- showUserMenu && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1197
+ showUserMenu && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1011
1198
  "div",
1012
1199
  {
1013
1200
  className: "absolute right-0 mt-2 w-56 bg-[var(--color-background)] rounded-lg shadow-xl border border-[var(--color-border)] z-50",
1014
1201
  role: "menu",
1015
1202
  "aria-label": "Menu utilisateur",
1016
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "p-2", children: [
1017
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1203
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "p-2", children: [
1204
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1018
1205
  "button",
1019
1206
  {
1020
1207
  className: "w-full flex items-center gap-3 px-3 py-2 rounded-lg hover:bg-[var(--color-surface-hover)] transition-colors",
1021
1208
  role: "menuitem",
1022
1209
  children: [
1023
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.User, { className: "w-4 h-4" }),
1024
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-sm", children: "Mon profil" })
1210
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.User, { className: "w-4 h-4" }),
1211
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm", children: "Mon profil" })
1025
1212
  ]
1026
1213
  }
1027
1214
  ),
1028
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1215
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1029
1216
  "button",
1030
1217
  {
1031
1218
  onClick: () => {
@@ -1035,31 +1222,31 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
1035
1222
  className: "w-full flex items-center gap-3 px-3 py-2 rounded-lg hover:bg-[var(--color-surface-hover)] transition-colors",
1036
1223
  role: "menuitem",
1037
1224
  children: [
1038
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Settings, { className: "w-4 h-4" }),
1039
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-sm", children: "Param\xE8tres" })
1225
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.Settings, { className: "w-4 h-4" }),
1226
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm", children: "Param\xE8tres" })
1040
1227
  ]
1041
1228
  }
1042
1229
  ),
1043
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1230
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1044
1231
  "button",
1045
1232
  {
1046
1233
  className: "w-full flex items-center gap-3 px-3 py-2 rounded-lg hover:bg-[var(--color-surface-hover)] transition-colors",
1047
1234
  role: "menuitem",
1048
1235
  children: [
1049
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.HelpCircle, { className: "w-4 h-4" }),
1050
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-sm", children: "Aide" })
1236
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.HelpCircle, { className: "w-4 h-4" }),
1237
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm", children: "Aide" })
1051
1238
  ]
1052
1239
  }
1053
1240
  ),
1054
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("hr", { className: "my-2 border-[var(--color-border)]" }),
1055
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1241
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("hr", { className: "my-2 border-[var(--color-border)]" }),
1242
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1056
1243
  "button",
1057
1244
  {
1058
1245
  className: "w-full flex items-center gap-3 px-3 py-2 rounded-lg hover:bg-[var(--color-surface-hover)] text-[var(--color-error)] transition-colors",
1059
1246
  role: "menuitem",
1060
1247
  children: [
1061
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.LogOut, { className: "w-4 h-4" }),
1062
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-sm", children: "D\xE9connexion" })
1248
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react.LogOut, { className: "w-4 h-4" }),
1249
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm", children: "D\xE9connexion" })
1063
1250
  ]
1064
1251
  }
1065
1252
  )
@@ -1071,13 +1258,13 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
1071
1258
  ]
1072
1259
  }
1073
1260
  ),
1074
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1261
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1075
1262
  "main",
1076
1263
  {
1077
1264
  id: "main-content",
1078
1265
  className: "flex-1 overflow-y-auto bg-[var(--color-background)]",
1079
1266
  role: "main",
1080
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "p-3 lg:p-4", children })
1267
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "p-3 lg:p-4", children })
1081
1268
  }
1082
1269
  )
1083
1270
  ] })
@@ -1090,7 +1277,7 @@ var import_react4 = require("react");
1090
1277
 
1091
1278
  // src/contexts/ToastContext.tsx
1092
1279
  var import_react3 = require("react");
1093
- var import_jsx_runtime4 = require("react/jsx-runtime");
1280
+ var import_jsx_runtime6 = require("react/jsx-runtime");
1094
1281
  var ToastContext = (0, import_react3.createContext)(void 0);
1095
1282
  var useToast = () => {
1096
1283
  const context = (0, import_react3.useContext)(ToastContext);
@@ -1142,12 +1329,12 @@ var ToastProvider = ({ children }) => {
1142
1329
  warning,
1143
1330
  info
1144
1331
  };
1145
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ToastContext.Provider, { value, children });
1332
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ToastContext.Provider, { value, children });
1146
1333
  };
1147
1334
 
1148
1335
  // src/components/ui/Toast.tsx
1149
1336
  var import_lucide_react2 = require("lucide-react");
1150
- var import_jsx_runtime5 = require("react/jsx-runtime");
1337
+ var import_jsx_runtime7 = require("react/jsx-runtime");
1151
1338
  var ToastItem = ({ toast }) => {
1152
1339
  const { removeToast } = useToast();
1153
1340
  const [isVisible, setIsVisible] = (0, import_react4.useState)(false);
@@ -1165,13 +1352,13 @@ var ToastItem = ({ toast }) => {
1165
1352
  const getIcon = () => {
1166
1353
  switch (toast.type) {
1167
1354
  case "success":
1168
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.CheckCircle, { className: "w-5 h-5 text-green-600" });
1355
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react2.CheckCircle, { className: "w-5 h-5 text-green-600" });
1169
1356
  case "error":
1170
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.XCircle, { className: "w-5 h-5 text-red-600" });
1357
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react2.XCircle, { className: "w-5 h-5 text-red-600" });
1171
1358
  case "warning":
1172
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.AlertTriangle, { className: "w-5 h-5 text-yellow-600" });
1359
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react2.AlertTriangle, { className: "w-5 h-5 text-yellow-600" });
1173
1360
  case "info":
1174
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Info, { className: "w-5 h-5 text-blue-600" });
1361
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react2.Info, { className: "w-5 h-5 text-blue-600" });
1175
1362
  }
1176
1363
  };
1177
1364
  const getBackgroundColor = () => {
@@ -1186,7 +1373,7 @@ var ToastItem = ({ toast }) => {
1186
1373
  return "bg-blue-50 border-blue-200";
1187
1374
  }
1188
1375
  };
1189
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1376
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1190
1377
  "div",
1191
1378
  {
1192
1379
  className: `
@@ -1197,14 +1384,14 @@ var ToastItem = ({ toast }) => {
1197
1384
  flex items-start space-x-3
1198
1385
  `,
1199
1386
  children: [
1200
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex-shrink-0", children: getIcon() }),
1201
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm text-gray-900 font-medium", children: toast.message }) }),
1202
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1387
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex-shrink-0", children: getIcon() }),
1388
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-sm text-gray-900 font-medium", children: toast.message }) }),
1389
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1203
1390
  "button",
1204
1391
  {
1205
1392
  onClick: handleClose,
1206
1393
  className: "flex-shrink-0 ml-4 text-gray-400 hover:text-gray-600 transition-colors",
1207
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.X, { className: "w-4 h-4" })
1394
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react2.X, { className: "w-4 h-4" })
1208
1395
  }
1209
1396
  )
1210
1397
  ]
@@ -1213,7 +1400,7 @@ var ToastItem = ({ toast }) => {
1213
1400
  };
1214
1401
  var ToastContainer = () => {
1215
1402
  const { toasts } = useToast();
1216
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "fixed top-4 right-4 z-50 space-y-3", children: toasts.map((toast) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ToastItem, { toast }, toast.id)) });
1403
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "fixed top-4 right-4 z-50 space-y-3", children: toasts.map((toast) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ToastItem, { toast }, toast.id)) });
1217
1404
  };
1218
1405
  var Toast_default = ToastContainer;
1219
1406
 
@@ -1267,7 +1454,7 @@ var AuthServices = {
1267
1454
  };
1268
1455
 
1269
1456
  // src/contexts/SessionContext.tsx
1270
- var import_jsx_runtime6 = require("react/jsx-runtime");
1457
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1271
1458
  var SessionContext = (0, import_react5.createContext)(void 0);
1272
1459
  var useSession = () => {
1273
1460
  const context = (0, import_react5.useContext)(SessionContext);
@@ -1307,7 +1494,7 @@ var SessionProvider = ({ children }) => {
1307
1494
  setLoggedUser(null);
1308
1495
  }
1309
1496
  }, [token]);
1310
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SessionContext.Provider, { value: {
1497
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SessionContext.Provider, { value: {
1311
1498
  isAuthenticated: !!token,
1312
1499
  loggedUser,
1313
1500
  token,
@@ -1319,7 +1506,7 @@ var SessionProvider = ({ children }) => {
1319
1506
  // src/components/common/Pages.tsx
1320
1507
  var import_lucide_react3 = require("lucide-react");
1321
1508
  var import_react6 = require("react");
1322
- var import_jsx_runtime7 = require("react/jsx-runtime");
1509
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1323
1510
  var Pages = ({
1324
1511
  title = "",
1325
1512
  description = "",
@@ -1329,17 +1516,17 @@ var Pages = ({
1329
1516
  children
1330
1517
  }) => {
1331
1518
  const [sidebarOpen, setSidebarOpen] = (0, import_react6.useState)(false);
1332
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex h-full bg-gray-50", children: [
1333
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex-1 flex flex-col", children: [
1334
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "bg-white border-b border-gray-200 p-6", children: [
1335
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center justify-between", children: [
1336
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center space-x-4", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
1337
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h1", { className: "text-2xl font-bold text-gray-900", children: title }),
1338
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-sm text-gray-600", children: description })
1519
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex h-full bg-gray-50", children: [
1520
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex-1 flex flex-col", children: [
1521
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "bg-white border-b border-gray-200 p-6", children: [
1522
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center justify-between", children: [
1523
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex items-center space-x-4", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
1524
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h1", { className: "text-2xl font-bold text-gray-900", children: title }),
1525
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-sm text-gray-600", children: description })
1339
1526
  ] }) }),
1340
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center space-x-3", children: sideAction })
1527
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex items-center space-x-3", children: sideAction })
1341
1528
  ] }),
1342
- tabs.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex space-x-1 mt-4 overflow-x-auto", children: tabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1529
+ tabs.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex space-x-1 mt-4 overflow-x-auto", children: tabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1343
1530
  "button",
1344
1531
  {
1345
1532
  className: `px-4 py-2 text-sm rounded-lg transition-all whitespace-nowrap ${tab.id === "manual" ? "bg-[#6A8A82] text-white shadow-md" : "text-gray-600 hover:bg-gray-100"}`,
@@ -1348,43 +1535,43 @@ var Pages = ({
1348
1535
  tab.id
1349
1536
  )) })
1350
1537
  ] }),
1351
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex-1 p-6 space-y-6", children })
1538
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex-1 p-6 space-y-6", children })
1352
1539
  ] }),
1353
- sidebar && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: `${sidebarOpen ? "w-80" : "w-16"} bg-[var(--color-surface)] border-r border-[var(--color-border)] transition-all duration-300 flex flex-col`, children: [
1354
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "p-4 ", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center justify-between", children: [
1355
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h2", { className: `font-semibold text-[var(--color-text-primary)] ${!sidebarOpen && "hidden"}`, children: "Classes SYSCOHADA" }),
1356
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1540
+ sidebar && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: `${sidebarOpen ? "w-80" : "w-16"} bg-[var(--color-surface)] border-r border-[var(--color-border)] transition-all duration-300 flex flex-col`, children: [
1541
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "p-4 ", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center justify-between", children: [
1542
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h2", { className: `font-semibold text-[var(--color-text-primary)] ${!sidebarOpen && "hidden"}`, children: "Classes SYSCOHADA" }),
1543
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1357
1544
  "button",
1358
1545
  {
1359
1546
  onClick: () => setSidebarOpen(!sidebarOpen),
1360
1547
  className: "p-2 hover:bg-[var(--color-surface-hover)] rounded-lg transition-colors",
1361
1548
  "aria-label": sidebarOpen ? "R\xE9duire" : "Ouvrir",
1362
- children: sidebarOpen ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.ChevronLeft, { className: "w-5 h-5" }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.Menu, { className: "w-5 h-5" })
1549
+ children: sidebarOpen ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.ChevronLeft, { className: "w-5 h-5" }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.Menu, { className: "w-5 h-5" })
1363
1550
  }
1364
1551
  )
1365
1552
  ] }) }),
1366
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex-1 overflow-y-auto py-2", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1553
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex-1 overflow-y-auto py-2", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1367
1554
  "button",
1368
1555
  {
1369
1556
  onClick: () => {
1370
1557
  },
1371
1558
  className: `w-full flex items-center gap-3 px-4 py-3 transition-all relative group hover:bg-[var(--color-surface-hover)]`,
1372
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1559
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1373
1560
  "div",
1374
1561
  {
1375
1562
  className: `flex-shrink-0 w-10 h-10 rounded-lg flex items-center justify-center transition-colors bg-[var(--color-background)]`,
1376
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "font-bold text-lg", children: 1 })
1563
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "font-bold text-lg", children: 1 })
1377
1564
  }
1378
1565
  )
1379
1566
  }
1380
1567
  ) }),
1381
- sidebarOpen && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "p-4 border-t border-[var(--color-border)]", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "space-y-2", children: [
1382
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("button", { className: "w-full px-3 py-2 bg-[var(--color-background)] rounded-lg text-sm text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors flex items-center gap-2", children: [
1383
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.Download, { className: "w-4 h-4" }),
1568
+ sidebarOpen && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "p-4 border-t border-[var(--color-border)]", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "space-y-2", children: [
1569
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { className: "w-full px-3 py-2 bg-[var(--color-background)] rounded-lg text-sm text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors flex items-center gap-2", children: [
1570
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.Download, { className: "w-4 h-4" }),
1384
1571
  "Exporter le plan"
1385
1572
  ] }),
1386
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("button", { className: "w-full px-3 py-2 bg-[var(--color-background)] rounded-lg text-sm text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors flex items-center gap-2", children: [
1387
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.Settings, { className: "w-4 h-4" }),
1573
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { className: "w-full px-3 py-2 bg-[var(--color-background)] rounded-lg text-sm text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors flex items-center gap-2", children: [
1574
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.Settings, { className: "w-4 h-4" }),
1388
1575
  "Configuration"
1389
1576
  ] })
1390
1577
  ] }) })
@@ -1394,11 +1581,18 @@ var Pages = ({
1394
1581
  var Pages_default = Pages;
1395
1582
  // Annotate the CommonJS export names for ESM import in node:
1396
1583
  0 && (module.exports = {
1584
+ DateInput,
1585
+ FileInput,
1586
+ InputField,
1587
+ Modal,
1588
+ NumberInput,
1397
1589
  Pages,
1398
1590
  PrimaryButton,
1399
1591
  RewiseLayout,
1400
1592
  SecondaryButton,
1593
+ SelectInput,
1401
1594
  SessionProvider,
1595
+ TextInput,
1402
1596
  ThemeProvider,
1403
1597
  ToastContainer,
1404
1598
  ToastProvider,