ptechcore_ui 1.0.3 → 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,14 +29,23 @@ 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
- ToastProvider: () => ToastProvider
46
+ ToastProvider: () => ToastProvider,
47
+ useSession: () => useSession,
48
+ useToast: () => useToast
40
49
  });
41
50
  module.exports = __toCommonJS(index_exports);
42
51
 
@@ -73,9 +82,189 @@ var SecondaryButton = ({
73
82
  );
74
83
  var Buttons_default = PrimaryButton;
75
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
+
76
265
  // src/components/layout/ModernDoubleSidebarLayout.tsx
77
266
  var import_react2 = __toESM(require("react"), 1);
78
- var import_react_router_dom = require("react-router-dom");
267
+ var import_react_router_dom2 = require("react-router-dom");
79
268
  var import_lucide_react = require("lucide-react");
80
269
 
81
270
  // src/utils/utils.ts
@@ -418,7 +607,7 @@ var getThemeCSSVariables = (theme) => {
418
607
  };
419
608
 
420
609
  // src/contexts/ThemeContext.tsx
421
- var import_jsx_runtime2 = require("react/jsx-runtime");
610
+ var import_jsx_runtime4 = require("react/jsx-runtime");
422
611
  var ThemeContext = (0, import_react.createContext)(void 0);
423
612
  var useTheme = () => {
424
613
  const context = (0, import_react.useContext)(ThemeContext);
@@ -449,15 +638,15 @@ var ThemeProvider = ({ children }) => {
449
638
  setThemeState(themes[type]);
450
639
  }
451
640
  };
452
- 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 });
453
642
  };
454
643
  var ThemeContext_default = ThemeProvider;
455
644
 
456
645
  // src/components/layout/ModernDoubleSidebarLayout.tsx
457
- var import_jsx_runtime3 = require("react/jsx-runtime");
646
+ var import_jsx_runtime5 = require("react/jsx-runtime");
458
647
  var RewiseLayout = ({ children, module_name = "Rewise", module_description = "Description du module", primaryMenuItems, secondaryMenuItems }) => {
459
- const location = (0, import_react_router_dom.useLocation)();
460
- 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)();
461
650
  const { theme, themeType, setTheme } = useTheme();
462
651
  const [primaryCollapsed, setPrimaryCollapsed] = (0, import_react2.useState)(false);
463
652
  const [secondaryCollapsed, setSecondaryCollapsed] = (0, import_react2.useState)(false);
@@ -540,8 +729,8 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
540
729
  (prev) => prev.map((n) => n.id === id ? { ...n, read: true } : n)
541
730
  );
542
731
  };
543
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex h-screen bg-[var(--color-background)] overflow-hidden", children: [
544
- /* @__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)(
545
734
  "a",
546
735
  {
547
736
  href: "#main-content",
@@ -549,7 +738,7 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
549
738
  children: "Aller au contenu principal"
550
739
  }
551
740
  ),
552
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
741
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
553
742
  "aside",
554
743
  {
555
744
  className: cn(
@@ -559,38 +748,38 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
559
748
  role: "navigation",
560
749
  "aria-label": "Navigation principale",
561
750
  children: [
562
- /* @__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: [
563
- /* @__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(
564
753
  "flex items-center gap-3",
565
754
  primaryCollapsed && "justify-center"
566
755
  ), children: [
567
- /* @__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" }) }),
568
- !primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
569
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { className: "text-[var(--color-sidebar-text)] font-bold text-lg", children: module_name }),
570
- /* @__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 })
571
760
  ] })
572
761
  ] }),
573
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
762
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
574
763
  "button",
575
764
  {
576
765
  onClick: () => setPrimaryCollapsed(!primaryCollapsed),
577
766
  className: "text-[var(--color-sidebar-text-secondary)] hover:text-[var(--color-sidebar-text)] transition-colors",
578
767
  "aria-label": primaryCollapsed ? "D\xE9velopper le menu" : "R\xE9duire le menu",
579
768
  "aria-expanded": !primaryCollapsed,
580
- 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(
581
770
  "w-5 h-5 transition-transform",
582
771
  primaryCollapsed && "rotate-180"
583
772
  ) })
584
773
  }
585
774
  )
586
775
  ] }),
587
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
776
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
588
777
  "nav",
589
778
  {
590
779
  className: "flex-1 py-4 overflow-y-auto",
591
780
  role: "menubar",
592
781
  "aria-label": "Modules principaux",
593
- children: primaryMenuItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
782
+ children: primaryMenuItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
594
783
  "button",
595
784
  {
596
785
  onClick: () => {
@@ -610,48 +799,48 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
610
799
  "aria-label": item.ariaLabel || item.label,
611
800
  "aria-current": isModuleActive(item.id) ? "page" : void 0,
612
801
  children: [
613
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn(
802
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn(
614
803
  "transition-colors",
615
804
  isModuleActive(item.id) ? "text-[var(--color-primary)]" : "text-[var(--color-sidebar-text-secondary)] group-hover:text-[var(--color-sidebar-text)]"
616
805
  ), children: item.icon }),
617
- !primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
618
- /* @__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(
619
808
  "flex-1 text-left text-sm font-medium transition-colors",
620
809
  isModuleActive(item.id) ? "text-[var(--color-sidebar-text)]" : "text-[var(--color-sidebar-text-secondary)] group-hover:text-[var(--color-sidebar-text)]"
621
810
  ), children: item.label }),
622
- 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 })
623
812
  ] }),
624
- 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 })
625
814
  ]
626
815
  },
627
816
  item.id
628
817
  ))
629
818
  }
630
819
  ),
631
- /* @__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(
632
821
  "flex items-center gap-3",
633
822
  primaryCollapsed && "justify-center"
634
823
  ), children: [
635
- /* @__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)]" }) }),
636
- !primaryCollapsed && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex-1", children: [
637
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-medium text-[var(--color-sidebar-text)]", children: "Admin" }),
638
- /* @__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" })
639
828
  ] })
640
829
  ] }) })
641
830
  ]
642
831
  }
643
832
  ),
644
- secondaryMenuItems[selectedModule] && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
645
- 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)(
646
835
  "button",
647
836
  {
648
837
  onClick: () => setSecondaryCollapsed(false),
649
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",
650
839
  "aria-label": "Ouvrir le sous-menu",
651
- 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)]" })
652
841
  }
653
842
  ),
654
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
843
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
655
844
  "aside",
656
845
  {
657
846
  className: cn(
@@ -661,28 +850,28 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
661
850
  role: "navigation",
662
851
  "aria-label": "Navigation secondaire",
663
852
  children: [
664
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "h-16 flex items-center justify-between px-4 border-b border-[var(--color-border)]", children: [
665
- /* @__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 }),
666
- /* @__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)(
667
856
  "button",
668
857
  {
669
858
  onClick: () => setSecondaryCollapsed(!secondaryCollapsed),
670
859
  className: "text-[var(--color-text-tertiary)] hover:text-[var(--color-text-primary)] flex-shrink-0",
671
860
  "aria-label": secondaryCollapsed ? "D\xE9velopper le sous-menu" : "R\xE9duire le sous-menu",
672
- 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(
673
862
  "w-4 h-4 transition-transform",
674
863
  secondaryCollapsed && "rotate-180"
675
864
  ) })
676
865
  }
677
866
  )
678
867
  ] }),
679
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
868
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
680
869
  "nav",
681
870
  {
682
871
  className: "flex-1 py-4 overflow-y-auto",
683
872
  role: "menu",
684
873
  "aria-label": "Sous-navigation",
685
- children: secondaryMenuItems[selectedModule]?.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
874
+ children: secondaryMenuItems[selectedModule]?.map((item) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
686
875
  "button",
687
876
  {
688
877
  onClick: () => item.path && navigate(item.path),
@@ -694,15 +883,15 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
694
883
  role: "menuitem",
695
884
  "aria-current": isActive(item.path || "") ? "page" : void 0,
696
885
  children: [
697
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn(
886
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn(
698
887
  "transition-colors",
699
888
  isActive(item.path || "") ? "text-[var(--color-primary)]" : "text-[var(--color-text-tertiary)]"
700
889
  ), children: item.icon }),
701
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cn(
890
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn(
702
891
  "flex-1 text-left text-sm",
703
892
  isActive(item.path || "") ? "text-[var(--color-primary)] font-medium" : "text-[var(--color-text-secondary)]"
704
893
  ), children: item.label }),
705
- 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 })
706
895
  ]
707
896
  },
708
897
  item.id
@@ -713,13 +902,13 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
713
902
  }
714
903
  )
715
904
  ] }),
716
- mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
905
+ mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
717
906
  "div",
718
907
  {
719
908
  className: "fixed inset-0 bg-black bg-opacity-50 z-50 lg:hidden",
720
909
  onClick: () => setMobileMenuOpen(false),
721
910
  "aria-hidden": "true",
722
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
911
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
723
912
  "aside",
724
913
  {
725
914
  className: "w-80 h-full bg-[var(--color-sidebar-bg)]",
@@ -727,26 +916,26 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
727
916
  role: "navigation",
728
917
  "aria-label": "Navigation mobile",
729
918
  children: [
730
- /* @__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: [
731
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-center gap-3", children: [
732
- /* @__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" }) }),
733
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
734
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { className: "text-white font-bold text-lg", children: "WiseBook" }),
735
- /* @__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" })
736
925
  ] })
737
926
  ] }),
738
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
927
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
739
928
  "button",
740
929
  {
741
930
  onClick: () => setMobileMenuOpen(false),
742
931
  className: "text-[var(--color-sidebar-text-secondary)]",
743
932
  "aria-label": "Fermer le menu",
744
- 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" })
745
934
  }
746
935
  )
747
936
  ] }),
748
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("nav", { className: "py-4", role: "menubar", children: primaryMenuItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
749
- /* @__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)(
750
939
  "button",
751
940
  {
752
941
  onClick: () => {
@@ -765,19 +954,19 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
765
954
  role: "menuitem",
766
955
  "aria-current": isModuleActive(item.id) ? "page" : void 0,
767
956
  children: [
768
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn(
957
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn(
769
958
  "transition-colors",
770
959
  isModuleActive(item.id) ? "text-[var(--color-primary)]" : "text-[var(--color-sidebar-text-secondary)]"
771
960
  ), children: item.icon }),
772
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cn(
961
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn(
773
962
  "flex-1 text-left text-sm font-medium",
774
963
  isModuleActive(item.id) ? "text-[var(--color-sidebar-text)]" : "text-[var(--color-sidebar-text-secondary)]"
775
964
  ), children: item.label }),
776
- 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 })
777
966
  ]
778
967
  }
779
968
  ),
780
- 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)(
781
970
  "button",
782
971
  {
783
972
  onClick: () => {
@@ -793,7 +982,7 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
793
982
  ),
794
983
  children: [
795
984
  subItem.icon,
796
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cn(
985
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn(
797
986
  isActive(subItem.path || "") ? "text-[var(--color-primary)]" : "text-[var(--color-sidebar-text-secondary)]"
798
987
  ), children: subItem.label })
799
988
  ]
@@ -806,31 +995,31 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
806
995
  )
807
996
  }
808
997
  ),
809
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex-1 flex flex-col overflow-hidden", children: [
810
- /* @__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)(
811
1000
  "header",
812
1001
  {
813
1002
  className: "h-14 bg-[var(--color-background)] border-b border-[var(--color-border)] flex items-center justify-between px-3 lg:px-4",
814
1003
  role: "banner",
815
1004
  children: [
816
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-center gap-4 flex-1", children: [
817
- /* @__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)(
818
1007
  "button",
819
1008
  {
820
1009
  onClick: () => setMobileMenuOpen(true),
821
1010
  className: "lg:hidden text-[var(--color-text-primary)]",
822
1011
  "aria-label": "Ouvrir le menu mobile",
823
- 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" })
824
1013
  }
825
1014
  ),
826
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1015
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
827
1016
  "nav",
828
1017
  {
829
1018
  className: "hidden sm:flex items-center gap-2 text-sm",
830
1019
  "aria-label": "Fil d'Ariane",
831
- children: getBreadcrumbs().map((crumb, index) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react2.default.Fragment, { children: [
832
- index > 0 && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.ChevronRight, { className: "w-4 h-4 text-[var(--color-text-tertiary)]" }),
833
- /* @__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)(
834
1023
  "button",
835
1024
  {
836
1025
  onClick: () => navigate(crumb.path),
@@ -844,9 +1033,9 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
844
1033
  ] }, crumb.path))
845
1034
  }
846
1035
  ),
847
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative max-w-md flex-1 hidden lg:block", children: [
848
- /* @__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" }),
849
- /* @__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)(
850
1039
  "input",
851
1040
  {
852
1041
  id: "global-search",
@@ -860,9 +1049,9 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
860
1049
  )
861
1050
  ] })
862
1051
  ] }),
863
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-center gap-3", children: [
864
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative", children: [
865
- /* @__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)(
866
1055
  "button",
867
1056
  {
868
1057
  onClick: () => setShowThemeMenu(!showThemeMenu),
@@ -870,18 +1059,18 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
870
1059
  title: "Changer le th\xE8me",
871
1060
  "aria-label": "S\xE9lecteur de th\xE8me",
872
1061
  "aria-expanded": showThemeMenu,
873
- 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)]" })
874
1063
  }
875
1064
  ),
876
- showThemeMenu && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1065
+ showThemeMenu && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
877
1066
  "div",
878
1067
  {
879
1068
  className: "absolute right-0 mt-2 w-64 bg-[var(--color-background)] rounded-lg shadow-xl border border-[var(--color-border)] z-50",
880
1069
  role: "menu",
881
1070
  "aria-label": "S\xE9lection du th\xE8me",
882
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "p-2", children: [
883
- /* @__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" }),
884
- /* @__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)(
885
1074
  "button",
886
1075
  {
887
1076
  onClick: () => handleThemeChange("elegant"),
@@ -891,15 +1080,15 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
891
1080
  ),
892
1081
  role: "menuitem",
893
1082
  children: [
894
- /* @__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)]" }),
895
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "text-left", children: [
896
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-medium", children: "\xC9l\xE9gance Sobre" }),
897
- /* @__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" })
898
1087
  ] })
899
1088
  ]
900
1089
  }
901
1090
  ),
902
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1091
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
903
1092
  "button",
904
1093
  {
905
1094
  onClick: () => handleThemeChange("fintech"),
@@ -909,15 +1098,15 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
909
1098
  ),
910
1099
  role: "menuitem",
911
1100
  children: [
912
- /* @__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)]" }),
913
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "text-left", children: [
914
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-medium", children: "Modern Fintech" }),
915
- /* @__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" })
916
1105
  ] })
917
1106
  ]
918
1107
  }
919
1108
  ),
920
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1109
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
921
1110
  "button",
922
1111
  {
923
1112
  onClick: () => handleThemeChange("minimalist"),
@@ -927,10 +1116,10 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
927
1116
  ),
928
1117
  role: "menuitem",
929
1118
  children: [
930
- /* @__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)]" }),
931
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "text-left", children: [
932
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-medium", children: "Minimaliste Premium" }),
933
- /* @__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" })
934
1123
  ] })
935
1124
  ]
936
1125
  }
@@ -939,12 +1128,12 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
939
1128
  }
940
1129
  )
941
1130
  ] }),
942
- /* @__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: [
943
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.DollarSign, { className: "w-4 h-4 text-[var(--color-primary)] mr-2" }),
944
- /* @__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" })
945
1134
  ] }),
946
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative", children: [
947
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1135
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative", children: [
1136
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
948
1137
  "button",
949
1138
  {
950
1139
  className: "relative p-2 hover:bg-[var(--color-surface-hover)] rounded-lg transition-colors",
@@ -952,20 +1141,20 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
952
1141
  "aria-label": `Notifications ${notifications.filter((n) => !n.read).length > 0 ? `(${notifications.filter((n) => !n.read).length} non lues)` : ""}`,
953
1142
  "aria-expanded": showNotifications,
954
1143
  children: [
955
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Bell, { className: "w-5 h-5 text-[var(--color-text-secondary)]" }),
956
- 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" })
957
1146
  ]
958
1147
  }
959
1148
  ),
960
- showNotifications && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1149
+ showNotifications && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
961
1150
  "div",
962
1151
  {
963
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",
964
1153
  role: "region",
965
1154
  "aria-label": "Centre de notifications",
966
1155
  children: [
967
- /* @__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" }) }),
968
- /* @__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)(
969
1158
  "div",
970
1159
  {
971
1160
  className: cn(
@@ -973,18 +1162,18 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
973
1162
  !notif.read && "bg-[var(--color-primary-light)] bg-opacity-10"
974
1163
  ),
975
1164
  onClick: () => markNotificationAsRead(notif.id),
976
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-start gap-3", children: [
977
- /* @__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(
978
1167
  "w-2 h-2 rounded-full mt-2",
979
1168
  notif.type === "error" && "bg-[var(--color-error)]",
980
1169
  notif.type === "warning" && "bg-[var(--color-warning)]",
981
1170
  notif.type === "success" && "bg-[var(--color-success)]",
982
1171
  notif.type === "info" && "bg-[var(--color-info)]"
983
1172
  ) }),
984
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex-1", children: [
985
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-medium text-[var(--color-text-primary)]", children: notif.title }),
986
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs text-[var(--color-text-secondary)] mt-1", children: notif.message }),
987
- /* @__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() })
988
1177
  ] })
989
1178
  ] })
990
1179
  },
@@ -994,36 +1183,36 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
994
1183
  }
995
1184
  )
996
1185
  ] }),
997
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative", children: [
998
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1186
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative", children: [
1187
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
999
1188
  "button",
1000
1189
  {
1001
1190
  onClick: () => setShowUserMenu(!showUserMenu),
1002
1191
  className: "flex items-center gap-2 p-2 hover:bg-[var(--color-surface-hover)] rounded-lg transition-colors",
1003
1192
  "aria-label": "Menu utilisateur",
1004
1193
  "aria-expanded": showUserMenu,
1005
- 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)]" }) })
1006
1195
  }
1007
1196
  ),
1008
- showUserMenu && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1197
+ showUserMenu && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1009
1198
  "div",
1010
1199
  {
1011
1200
  className: "absolute right-0 mt-2 w-56 bg-[var(--color-background)] rounded-lg shadow-xl border border-[var(--color-border)] z-50",
1012
1201
  role: "menu",
1013
1202
  "aria-label": "Menu utilisateur",
1014
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "p-2", children: [
1015
- /* @__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)(
1016
1205
  "button",
1017
1206
  {
1018
1207
  className: "w-full flex items-center gap-3 px-3 py-2 rounded-lg hover:bg-[var(--color-surface-hover)] transition-colors",
1019
1208
  role: "menuitem",
1020
1209
  children: [
1021
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.User, { className: "w-4 h-4" }),
1022
- /* @__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" })
1023
1212
  ]
1024
1213
  }
1025
1214
  ),
1026
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1215
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1027
1216
  "button",
1028
1217
  {
1029
1218
  onClick: () => {
@@ -1033,31 +1222,31 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
1033
1222
  className: "w-full flex items-center gap-3 px-3 py-2 rounded-lg hover:bg-[var(--color-surface-hover)] transition-colors",
1034
1223
  role: "menuitem",
1035
1224
  children: [
1036
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Settings, { className: "w-4 h-4" }),
1037
- /* @__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" })
1038
1227
  ]
1039
1228
  }
1040
1229
  ),
1041
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1230
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1042
1231
  "button",
1043
1232
  {
1044
1233
  className: "w-full flex items-center gap-3 px-3 py-2 rounded-lg hover:bg-[var(--color-surface-hover)] transition-colors",
1045
1234
  role: "menuitem",
1046
1235
  children: [
1047
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.HelpCircle, { className: "w-4 h-4" }),
1048
- /* @__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" })
1049
1238
  ]
1050
1239
  }
1051
1240
  ),
1052
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("hr", { className: "my-2 border-[var(--color-border)]" }),
1053
- /* @__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)(
1054
1243
  "button",
1055
1244
  {
1056
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",
1057
1246
  role: "menuitem",
1058
1247
  children: [
1059
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.LogOut, { className: "w-4 h-4" }),
1060
- /* @__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" })
1061
1250
  ]
1062
1251
  }
1063
1252
  )
@@ -1069,13 +1258,13 @@ var RewiseLayout = ({ children, module_name = "Rewise", module_description = "De
1069
1258
  ]
1070
1259
  }
1071
1260
  ),
1072
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1261
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1073
1262
  "main",
1074
1263
  {
1075
1264
  id: "main-content",
1076
1265
  className: "flex-1 overflow-y-auto bg-[var(--color-background)]",
1077
1266
  role: "main",
1078
- 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 })
1079
1268
  }
1080
1269
  )
1081
1270
  ] })
@@ -1088,7 +1277,7 @@ var import_react4 = require("react");
1088
1277
 
1089
1278
  // src/contexts/ToastContext.tsx
1090
1279
  var import_react3 = require("react");
1091
- var import_jsx_runtime4 = require("react/jsx-runtime");
1280
+ var import_jsx_runtime6 = require("react/jsx-runtime");
1092
1281
  var ToastContext = (0, import_react3.createContext)(void 0);
1093
1282
  var useToast = () => {
1094
1283
  const context = (0, import_react3.useContext)(ToastContext);
@@ -1140,12 +1329,12 @@ var ToastProvider = ({ children }) => {
1140
1329
  warning,
1141
1330
  info
1142
1331
  };
1143
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ToastContext.Provider, { value, children });
1332
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ToastContext.Provider, { value, children });
1144
1333
  };
1145
1334
 
1146
1335
  // src/components/ui/Toast.tsx
1147
1336
  var import_lucide_react2 = require("lucide-react");
1148
- var import_jsx_runtime5 = require("react/jsx-runtime");
1337
+ var import_jsx_runtime7 = require("react/jsx-runtime");
1149
1338
  var ToastItem = ({ toast }) => {
1150
1339
  const { removeToast } = useToast();
1151
1340
  const [isVisible, setIsVisible] = (0, import_react4.useState)(false);
@@ -1163,13 +1352,13 @@ var ToastItem = ({ toast }) => {
1163
1352
  const getIcon = () => {
1164
1353
  switch (toast.type) {
1165
1354
  case "success":
1166
- 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" });
1167
1356
  case "error":
1168
- 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" });
1169
1358
  case "warning":
1170
- 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" });
1171
1360
  case "info":
1172
- 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" });
1173
1362
  }
1174
1363
  };
1175
1364
  const getBackgroundColor = () => {
@@ -1184,7 +1373,7 @@ var ToastItem = ({ toast }) => {
1184
1373
  return "bg-blue-50 border-blue-200";
1185
1374
  }
1186
1375
  };
1187
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1376
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1188
1377
  "div",
1189
1378
  {
1190
1379
  className: `
@@ -1195,14 +1384,14 @@ var ToastItem = ({ toast }) => {
1195
1384
  flex items-start space-x-3
1196
1385
  `,
1197
1386
  children: [
1198
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex-shrink-0", children: getIcon() }),
1199
- /* @__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 }) }),
1200
- /* @__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)(
1201
1390
  "button",
1202
1391
  {
1203
1392
  onClick: handleClose,
1204
1393
  className: "flex-shrink-0 ml-4 text-gray-400 hover:text-gray-600 transition-colors",
1205
- 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" })
1206
1395
  }
1207
1396
  )
1208
1397
  ]
@@ -1211,7 +1400,7 @@ var ToastItem = ({ toast }) => {
1211
1400
  };
1212
1401
  var ToastContainer = () => {
1213
1402
  const { toasts } = useToast();
1214
- 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)) });
1215
1404
  };
1216
1405
  var Toast_default = ToastContainer;
1217
1406
 
@@ -1265,8 +1454,15 @@ var AuthServices = {
1265
1454
  };
1266
1455
 
1267
1456
  // src/contexts/SessionContext.tsx
1268
- var import_jsx_runtime6 = require("react/jsx-runtime");
1457
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1269
1458
  var SessionContext = (0, import_react5.createContext)(void 0);
1459
+ var useSession = () => {
1460
+ const context = (0, import_react5.useContext)(SessionContext);
1461
+ if (!context) {
1462
+ throw new Error("useSession must be used within a SessionProvider");
1463
+ }
1464
+ return context;
1465
+ };
1270
1466
  var SessionProvider = ({ children }) => {
1271
1467
  const [token, setToken] = (0, import_react5.useState)(localStorage.getItem("token"));
1272
1468
  const [loggedUser, setLoggedUser] = (0, import_react5.useState)(null);
@@ -1298,7 +1494,7 @@ var SessionProvider = ({ children }) => {
1298
1494
  setLoggedUser(null);
1299
1495
  }
1300
1496
  }, [token]);
1301
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SessionContext.Provider, { value: {
1497
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SessionContext.Provider, { value: {
1302
1498
  isAuthenticated: !!token,
1303
1499
  loggedUser,
1304
1500
  token,
@@ -1310,7 +1506,7 @@ var SessionProvider = ({ children }) => {
1310
1506
  // src/components/common/Pages.tsx
1311
1507
  var import_lucide_react3 = require("lucide-react");
1312
1508
  var import_react6 = require("react");
1313
- var import_jsx_runtime7 = require("react/jsx-runtime");
1509
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1314
1510
  var Pages = ({
1315
1511
  title = "",
1316
1512
  description = "",
@@ -1320,17 +1516,17 @@ var Pages = ({
1320
1516
  children
1321
1517
  }) => {
1322
1518
  const [sidebarOpen, setSidebarOpen] = (0, import_react6.useState)(false);
1323
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex h-full bg-gray-50", children: [
1324
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex-1 flex flex-col", children: [
1325
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "bg-white border-b border-gray-200 p-6", children: [
1326
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center justify-between", children: [
1327
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center space-x-4", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
1328
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h1", { className: "text-2xl font-bold text-gray-900", children: title }),
1329
- /* @__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 })
1330
1526
  ] }) }),
1331
- /* @__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 })
1332
1528
  ] }),
1333
- 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)(
1334
1530
  "button",
1335
1531
  {
1336
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"}`,
@@ -1339,43 +1535,43 @@ var Pages = ({
1339
1535
  tab.id
1340
1536
  )) })
1341
1537
  ] }),
1342
- /* @__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 })
1343
1539
  ] }),
1344
- 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: [
1345
- /* @__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: [
1346
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h2", { className: `font-semibold text-[var(--color-text-primary)] ${!sidebarOpen && "hidden"}`, children: "Classes SYSCOHADA" }),
1347
- /* @__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)(
1348
1544
  "button",
1349
1545
  {
1350
1546
  onClick: () => setSidebarOpen(!sidebarOpen),
1351
1547
  className: "p-2 hover:bg-[var(--color-surface-hover)] rounded-lg transition-colors",
1352
1548
  "aria-label": sidebarOpen ? "R\xE9duire" : "Ouvrir",
1353
- 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" })
1354
1550
  }
1355
1551
  )
1356
1552
  ] }) }),
1357
- /* @__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)(
1358
1554
  "button",
1359
1555
  {
1360
1556
  onClick: () => {
1361
1557
  },
1362
1558
  className: `w-full flex items-center gap-3 px-4 py-3 transition-all relative group hover:bg-[var(--color-surface-hover)]`,
1363
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1559
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1364
1560
  "div",
1365
1561
  {
1366
1562
  className: `flex-shrink-0 w-10 h-10 rounded-lg flex items-center justify-center transition-colors bg-[var(--color-background)]`,
1367
- 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 })
1368
1564
  }
1369
1565
  )
1370
1566
  }
1371
1567
  ) }),
1372
- 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: [
1373
- /* @__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: [
1374
- /* @__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" }),
1375
1571
  "Exporter le plan"
1376
1572
  ] }),
1377
- /* @__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: [
1378
- /* @__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" }),
1379
1575
  "Configuration"
1380
1576
  ] })
1381
1577
  ] }) })
@@ -1385,12 +1581,21 @@ var Pages = ({
1385
1581
  var Pages_default = Pages;
1386
1582
  // Annotate the CommonJS export names for ESM import in node:
1387
1583
  0 && (module.exports = {
1584
+ DateInput,
1585
+ FileInput,
1586
+ InputField,
1587
+ Modal,
1588
+ NumberInput,
1388
1589
  Pages,
1389
1590
  PrimaryButton,
1390
1591
  RewiseLayout,
1391
1592
  SecondaryButton,
1593
+ SelectInput,
1392
1594
  SessionProvider,
1595
+ TextInput,
1393
1596
  ThemeProvider,
1394
1597
  ToastContainer,
1395
- ToastProvider
1598
+ ToastProvider,
1599
+ useSession,
1600
+ useToast
1396
1601
  });