@ramses1er/cbk-toolkit 2.1.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/packages/lib/src/auth-guard.d.ts +10 -0
  2. package/dist/packages/lib/src/auth-guard.d.ts.map +1 -0
  3. package/dist/packages/lib/src/auth-guard.js +60 -0
  4. package/dist/packages/lib/src/auth-guard.js.map +1 -0
  5. package/dist/packages/lib/src/handle-server-error.d.ts +9 -0
  6. package/dist/packages/lib/src/handle-server-error.d.ts.map +1 -0
  7. package/dist/packages/lib/src/handle-server-error.js +43 -0
  8. package/dist/packages/lib/src/handle-server-error.js.map +1 -0
  9. package/dist/packages/lib/src/http-error.d.ts +6 -0
  10. package/dist/packages/lib/src/http-error.d.ts.map +1 -0
  11. package/dist/packages/lib/src/http-error.js +12 -0
  12. package/dist/packages/lib/src/http-error.js.map +1 -0
  13. package/dist/packages/lib/src/index.d.ts +5 -0
  14. package/dist/packages/lib/src/index.d.ts.map +1 -0
  15. package/dist/packages/lib/src/index.js +9 -0
  16. package/dist/packages/lib/src/index.js.map +1 -0
  17. package/dist/packages/lib/src/with-auth.d.ts +8 -0
  18. package/dist/packages/lib/src/with-auth.d.ts.map +1 -0
  19. package/dist/packages/lib/src/with-auth.js +32 -0
  20. package/dist/packages/lib/src/with-auth.js.map +1 -0
  21. package/dist/packages/ui/src/config/create-side-nav.d.ts +6 -0
  22. package/dist/packages/ui/src/config/create-side-nav.d.ts.map +1 -0
  23. package/dist/packages/ui/src/config/create-side-nav.js +9 -0
  24. package/dist/packages/ui/src/config/create-side-nav.js.map +1 -0
  25. package/dist/packages/ui/src/feedback/confirmation.d.ts +16 -0
  26. package/dist/packages/ui/src/feedback/confirmation.d.ts.map +1 -0
  27. package/dist/packages/ui/src/feedback/confirmation.js +82 -0
  28. package/dist/packages/ui/src/feedback/confirmation.js.map +1 -0
  29. package/dist/packages/ui/src/feedback/error-display.d.ts +7 -0
  30. package/dist/packages/ui/src/feedback/error-display.d.ts.map +1 -0
  31. package/dist/packages/ui/src/feedback/error-display.js +11 -0
  32. package/dist/packages/ui/src/feedback/error-display.js.map +1 -0
  33. package/dist/packages/ui/src/forms/date-picker.d.ts +4 -0
  34. package/dist/packages/ui/src/forms/date-picker.d.ts.map +1 -0
  35. package/dist/packages/ui/src/forms/date-picker.js +9 -0
  36. package/dist/packages/ui/src/forms/date-picker.js.map +1 -0
  37. package/dist/packages/ui/src/forms/field-container.d.ts +8 -0
  38. package/dist/packages/ui/src/forms/field-container.d.ts.map +1 -0
  39. package/dist/packages/ui/src/forms/field-container.js +6 -0
  40. package/dist/packages/ui/src/forms/field-container.js.map +1 -0
  41. package/dist/packages/ui/src/forms/form.d.ts +9 -0
  42. package/dist/packages/ui/src/forms/form.d.ts.map +1 -0
  43. package/dist/packages/ui/src/forms/form.js +63 -0
  44. package/dist/packages/ui/src/forms/form.js.map +1 -0
  45. package/dist/packages/ui/src/forms/input.d.ts +4 -0
  46. package/dist/packages/ui/src/forms/input.d.ts.map +1 -0
  47. package/dist/packages/ui/src/forms/input.js +13 -0
  48. package/dist/packages/ui/src/forms/input.js.map +1 -0
  49. package/dist/packages/ui/src/forms/label.d.ts +7 -0
  50. package/dist/packages/ui/src/forms/label.d.ts.map +1 -0
  51. package/dist/packages/ui/src/forms/label.js +9 -0
  52. package/dist/packages/ui/src/forms/label.js.map +1 -0
  53. package/dist/packages/ui/src/forms/select.d.ts +6 -0
  54. package/dist/packages/ui/src/forms/select.d.ts.map +1 -0
  55. package/dist/packages/ui/src/forms/select.js +19 -0
  56. package/dist/packages/ui/src/forms/select.js.map +1 -0
  57. package/dist/packages/ui/src/forms/textarea.d.ts +4 -0
  58. package/dist/packages/ui/src/forms/textarea.d.ts.map +1 -0
  59. package/dist/packages/ui/src/forms/textarea.js +9 -0
  60. package/dist/packages/ui/src/forms/textarea.js.map +1 -0
  61. package/dist/packages/ui/src/headers/header-content.d.ts +11 -0
  62. package/dist/packages/ui/src/headers/header-content.d.ts.map +1 -0
  63. package/dist/packages/ui/src/headers/header-content.js +6 -0
  64. package/dist/packages/ui/src/headers/header-content.js.map +1 -0
  65. package/dist/packages/ui/src/illustrations/topic-illustration.d.ts +1 -0
  66. package/dist/packages/ui/src/illustrations/topic-illustration.d.ts.map +1 -0
  67. package/dist/packages/ui/src/illustrations/topic-illustration.js +69 -0
  68. package/dist/packages/ui/src/illustrations/topic-illustration.js.map +1 -0
  69. package/dist/packages/ui/src/index.d.ts +28 -0
  70. package/dist/packages/ui/src/index.d.ts.map +1 -0
  71. package/dist/packages/ui/src/index.js +38 -0
  72. package/dist/packages/ui/src/index.js.map +1 -0
  73. package/dist/packages/ui/src/layouts/side-nav.d.ts +45 -0
  74. package/dist/packages/ui/src/layouts/side-nav.d.ts.map +1 -0
  75. package/dist/packages/ui/src/layouts/side-nav.js +127 -0
  76. package/dist/packages/ui/src/layouts/side-nav.js.map +1 -0
  77. package/dist/packages/ui/src/loaders/loader-submit.d.ts +8 -0
  78. package/dist/packages/ui/src/loaders/loader-submit.d.ts.map +1 -0
  79. package/dist/packages/ui/src/loaders/loader-submit.js +7 -0
  80. package/dist/packages/ui/src/loaders/loader-submit.js.map +1 -0
  81. package/dist/packages/ui/src/loaders/loading.d.ts +6 -0
  82. package/dist/packages/ui/src/loaders/loading.d.ts.map +1 -0
  83. package/dist/packages/ui/src/loaders/loading.js +7 -0
  84. package/dist/packages/ui/src/loaders/loading.js.map +1 -0
  85. package/dist/packages/ui/src/modals/modal.d.ts +10 -0
  86. package/dist/packages/ui/src/modals/modal.d.ts.map +1 -0
  87. package/dist/packages/ui/src/modals/modal.js +36 -0
  88. package/dist/packages/ui/src/modals/modal.js.map +1 -0
  89. package/dist/packages/ui/src/pages/access-denied.d.ts +8 -0
  90. package/dist/packages/ui/src/pages/access-denied.d.ts.map +1 -0
  91. package/dist/packages/ui/src/pages/access-denied.js +8 -0
  92. package/dist/packages/ui/src/pages/access-denied.js.map +1 -0
  93. package/dist/packages/ui/src/pages/session-expired.d.ts +6 -0
  94. package/dist/packages/ui/src/pages/session-expired.d.ts.map +1 -0
  95. package/dist/packages/ui/src/pages/session-expired.js +21 -0
  96. package/dist/packages/ui/src/pages/session-expired.js.map +1 -0
  97. package/dist/packages/ui/src/pwa/InstallPrompt.d.ts +7 -0
  98. package/dist/packages/ui/src/pwa/InstallPrompt.d.ts.map +1 -0
  99. package/dist/packages/ui/src/pwa/InstallPrompt.js +71 -0
  100. package/dist/packages/ui/src/pwa/InstallPrompt.js.map +1 -0
  101. package/dist/packages/ui/src/pwa/SwRegistration.d.ts +5 -0
  102. package/dist/packages/ui/src/pwa/SwRegistration.d.ts.map +1 -0
  103. package/dist/packages/ui/src/pwa/SwRegistration.js +13 -0
  104. package/dist/packages/ui/src/pwa/SwRegistration.js.map +1 -0
  105. package/dist/packages/ui/src/route-guard/route-guard.d.ts +31 -0
  106. package/dist/packages/ui/src/route-guard/route-guard.d.ts.map +1 -0
  107. package/dist/packages/ui/src/route-guard/route-guard.js +75 -0
  108. package/dist/packages/ui/src/route-guard/route-guard.js.map +1 -0
  109. package/dist/packages/ui/src/search/input-search.d.ts +1 -0
  110. package/dist/packages/ui/src/search/input-search.d.ts.map +1 -0
  111. package/dist/packages/ui/src/search/input-search.js +47 -0
  112. package/dist/packages/ui/src/search/input-search.js.map +1 -0
  113. package/dist/packages/ui/src/search/select-search.d.ts +1 -0
  114. package/dist/packages/ui/src/search/select-search.d.ts.map +1 -0
  115. package/dist/packages/ui/src/search/select-search.js +100 -0
  116. package/dist/packages/ui/src/search/select-search.js.map +1 -0
  117. package/dist/packages/ui/src/table/actions-menu.d.ts +14 -0
  118. package/dist/packages/ui/src/table/actions-menu.d.ts.map +1 -0
  119. package/dist/packages/ui/src/table/actions-menu.js +53 -0
  120. package/dist/packages/ui/src/table/actions-menu.js.map +1 -0
  121. package/dist/packages/ui/src/table/table.d.ts +24 -0
  122. package/dist/packages/ui/src/table/table.d.ts.map +1 -0
  123. package/dist/packages/ui/src/table/table.js +99 -0
  124. package/dist/packages/ui/src/table/table.js.map +1 -0
  125. package/dist/packages/utils/src/fetcher.d.ts +16 -0
  126. package/dist/packages/utils/src/fetcher.d.ts.map +1 -0
  127. package/dist/packages/utils/src/fetcher.js +38 -0
  128. package/dist/packages/utils/src/fetcher.js.map +1 -0
  129. package/dist/packages/utils/src/formatCurrency.d.ts +1 -0
  130. package/dist/packages/utils/src/formatCurrency.d.ts.map +1 -0
  131. package/dist/packages/utils/src/formatCurrency.js +2 -0
  132. package/dist/packages/utils/src/formatCurrency.js.map +1 -0
  133. package/dist/packages/utils/src/formatDate.d.ts +1 -0
  134. package/dist/packages/utils/src/formatDate.d.ts.map +1 -0
  135. package/dist/packages/utils/src/formatDate.js +2 -0
  136. package/dist/packages/utils/src/formatDate.js.map +1 -0
  137. package/dist/packages/utils/src/index.d.ts +3 -0
  138. package/dist/packages/utils/src/index.d.ts.map +1 -0
  139. package/dist/packages/utils/src/index.js +2 -0
  140. package/dist/packages/utils/src/index.js.map +1 -0
  141. package/dist/src/client.d.ts +3 -0
  142. package/dist/src/client.d.ts.map +1 -0
  143. package/dist/src/client.js +5 -0
  144. package/dist/src/client.js.map +1 -0
  145. package/dist/src/server.d.ts +2 -0
  146. package/dist/src/server.d.ts.map +1 -0
  147. package/dist/src/server.js +3 -0
  148. package/dist/src/server.js.map +1 -0
  149. package/package.json +8 -8
  150. package/dist/client.d.ts +0 -210
  151. package/dist/client.js +0 -1407
  152. package/dist/client.js.map +0 -1
  153. package/dist/server.d.ts +0 -33
  154. package/dist/server.js +0 -161
  155. package/dist/server.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import React from "react";
4
+ const Label = React.forwardRef(({ required, children, className, ...props }, ref) => {
5
+ return (_jsxs("label", { ref: ref, className: `font-semibold text-gray-600 block ${className ?? ""}`.trim(), ...props, children: [children, required ? _jsx("span", { className: "text-red-500 ml-1", children: "*" }) : null] }));
6
+ });
7
+ Label.displayName = "Label";
8
+ export { Label };
9
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../../../../packages/ui/src/forms/label.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACnD,OAAO,CACL,iBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,qCAAqC,SAAS,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KACpE,KAAK,aAER,QAAQ,EACR,QAAQ,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,mBAAmB,kBAAS,CAAC,CAAC,CAAC,IAAI,IACzD,CACT,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ declare const Select: React.ForwardRefExoticComponent<React.SelectHTMLAttributes<HTMLSelectElement> & React.RefAttributes<HTMLSelectElement>>;
3
+ export { Select };
4
+ declare const Option: React.ForwardRefExoticComponent<React.OptionHTMLAttributes<HTMLOptionElement> & React.RefAttributes<HTMLOptionElement>>;
5
+ export { Option };
6
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/forms/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,QAAA,MAAM,MAAM,yHAgBV,CAAC;AAIH,OAAO,EAAE,MAAM,EAAE,CAAC;AAIlB,QAAA,MAAM,MAAM,yHAKV,CAAC;AAIH,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import React from "react";
4
+ const Select = React.forwardRef(({ className, ...props }, ref) => {
5
+ return (_jsx("select", { ref: ref, className: `w-full px-3 py-2 pr-10 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-gray-500 focus:border-transparent transition duration-200 bg-white cursor-pointer appearance-none bg-no-repeat bg-right bg-contain ${className || ""}`, style: {
6
+ backgroundImage: `url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e")`,
7
+ backgroundPosition: "right 0.75rem center",
8
+ backgroundSize: "1.25em 1.25em",
9
+ }, ...props }));
10
+ });
11
+ Select.displayName = "Select";
12
+ export { Select };
13
+ // Option Component
14
+ const Option = React.forwardRef(({ ...props }, ref) => {
15
+ return _jsx("option", { ref: ref, ...props });
16
+ });
17
+ Option.displayName = "Option";
18
+ export { Option };
19
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../../packages/ui/src/forms/select.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAG7B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACjC,OAAO,CACL,iBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,0OAA0O,SAAS,IAAI,EAAE,EAAE,EACtQ,KAAK,EAAE;YACL,eAAe,EAAE,mOAAmO;YACpP,kBAAkB,EAAE,sBAAsB;YAC1C,cAAc,EAAE,eAAe;SAChC,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,mBAAmB;AAEnB,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAG7B,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACtB,OAAO,iBAAQ,GAAG,EAAE,GAAG,KAAM,KAAK,GAAI,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ declare const TextArea: React.ForwardRefExoticComponent<React.TextareaHTMLAttributes<HTMLTextAreaElement> & React.RefAttributes<HTMLTextAreaElement>>;
3
+ export { TextArea };
4
+ //# sourceMappingURL=textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/forms/textarea.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,QAAA,MAAM,QAAQ,+HAWZ,CAAC;AAIH,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import React from "react";
4
+ const TextArea = React.forwardRef(({ ...props }, ref) => {
5
+ return (_jsx("textarea", { ref: ref, className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-gray-500 focus:border-transparent transition duration-200 resize-none", ...props }));
6
+ });
7
+ TextArea.displayName = "TextArea";
8
+ export { TextArea };
9
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../../../packages/ui/src/forms/textarea.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAG/B,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACtB,OAAO,CACL,mBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,qKAAqK,KAC3K,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ type HeaderContentProps = {
3
+ title: string;
4
+ description: string;
5
+ actionLabel?: string;
6
+ onAction?: () => void;
7
+ icon?: React.ReactNode;
8
+ };
9
+ export declare function HeaderContent({ title, description, actionLabel, onAction, icon, }: HeaderContentProps): React.JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=header-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-content.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/headers/header-content.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,IAAI,GACL,EAAE,kBAAkB,qBAwBpB"}
@@ -0,0 +1,6 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ export function HeaderContent({ title, description, actionLabel, onAction, icon, }) {
4
+ return (_jsxs("div", { className: "flex flex-col md:flex-row md:items-center md:justify-between gap-4 mb-6", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-xl font-semibold text-gray-900 flex items-center gap-2", children: title }), description && (_jsx("p", { className: "text-sm text-gray-500 mt-1", children: description }))] }), actionLabel && onAction && (_jsxs("button", { onClick: onAction, className: "font-semibold md:inline-flex items-center gap-2 bg-gray-900 text-white px-4 py-2 rounded-md text-sm hover:bg-gray-700 transition hover:cursor-pointer", children: [icon && _jsx("span", { className: "w-4 h-4", children: icon }), actionLabel] }))] }));
5
+ }
6
+ //# sourceMappingURL=header-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-content.js","sourceRoot":"","sources":["../../../../../packages/ui/src/headers/header-content.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAab,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,IAAI,GACe;IACnB,OAAO,CACL,eAAK,SAAS,EAAC,yEAAyE,aACtF,0BACE,aAAI,SAAS,EAAC,6DAA6D,YACxE,KAAK,GACH,EAEJ,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAK,CAC5D,IACG,EAEL,WAAW,IAAI,QAAQ,IAAI,CAC1B,kBACE,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,uJAAuJ,aAEhK,IAAI,IAAI,eAAM,SAAS,EAAC,SAAS,YAAE,IAAI,GAAQ,EAC/C,WAAW,IACL,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=topic-illustration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-illustration.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/illustrations/topic-illustration.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /*
3
+ "use client";
4
+
5
+ import Link from "next/link";
6
+ import type { LucideIcon } from "lucide-react";
7
+
8
+ interface TopicIllustrationProps {
9
+ icon: LucideIcon;
10
+ title: string;
11
+ description: string;
12
+ href: string;
13
+ }
14
+
15
+ export function TopicIllustration({
16
+ icon: Icon,
17
+ title,
18
+ description,
19
+ href,
20
+ }: TopicIllustrationProps) {
21
+ return (
22
+ <Link
23
+ href={href}
24
+ className="group block relative w-64 bg-white rounded-2xl border border-gray-200 shadow-sm hover:shadow-xl hover:border-gray-300 transition-all duration-300 cursor-pointer overflow-hidden"
25
+ >
26
+ <div className="p-6 flex flex-col min-h-[200px]">
27
+ <div className="flex-1"></div>
28
+
29
+ <div>
30
+ <div className="opacity-0 group-hover:opacity-100 transition-opacity duration-300 absolute bottom-4 right-4">
31
+ <div className="w-8 h-8 rounded-full bg-gray-100 flex items-center justify-center">
32
+ <svg
33
+ className="w-4 h-4 text-gray-700"
34
+ fill="none"
35
+ stroke="currentColor"
36
+ viewBox="0 0 24 24"
37
+ >
38
+ <path
39
+ strokeLinecap="round"
40
+ strokeLinejoin="round"
41
+ strokeWidth={2}
42
+ d="M9 5l7 7-7 7"
43
+ />
44
+ </svg>
45
+ </div>
46
+ </div>
47
+ </div>
48
+
49
+ <div className="mt-auto">
50
+ <div className="w-14 h-14 rounded-2xl bg-gradient-to-br from-gray-100 to-gray-200 flex items-center justify-center mb-4 group-hover:from-gray-200 group-hover:to-gray-300 transition-colors">
51
+ <Icon className="w-7 h-7 text-gray-700" strokeWidth={1.5} />
52
+ </div>
53
+
54
+ <h3 className="text-xl font-bold text-gray-900 mb-2 group-hover:text-gray-900 transition-colors">
55
+ {title}
56
+ </h3>
57
+
58
+ <p className="text-sm text-gray-500 group-hover:text-gray-600 transition-colors">
59
+ {description}
60
+ </p>
61
+ </div>
62
+ </div>
63
+
64
+ <div className="absolute inset-0 rounded-2xl ring-1 ring-inset ring-gray-900/5 group-hover:ring-gray-300/50 transition-colors" />
65
+ </Link>
66
+ );
67
+ }
68
+ */
69
+ //# sourceMappingURL=topic-illustration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-illustration.js","sourceRoot":"","sources":["../../../../../packages/ui/src/illustrations/topic-illustration.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkEE"}
@@ -0,0 +1,28 @@
1
+ export { SideNav } from "./layouts/side-nav";
2
+ export type { NavItem, SideNavProps, SideNavStaticConfig, FooterItem, } from "./layouts/side-nav";
3
+ export { createSideNav } from "./config/create-side-nav";
4
+ export { Table } from "./table/table";
5
+ export type { Column, ColumnPriority } from "./table/table";
6
+ export { ActionsMenu } from "./table/actions-menu";
7
+ export type { TableAction } from "./table/actions-menu";
8
+ export { Modal } from "./modals/modal";
9
+ export { Confirmation } from "./feedback/confirmation";
10
+ export { HeaderContent } from "./headers/header-content";
11
+ export { Form } from "./forms/form";
12
+ export { FieldContainer } from "./forms/field-container";
13
+ export { Label } from "./forms/label";
14
+ export { Input } from "./forms/input";
15
+ export { Select, Option } from "./forms/select";
16
+ export { TextArea } from "./forms/textarea";
17
+ export { DatePicker } from "./forms/date-picker";
18
+ export { Loading } from "./loaders/loading";
19
+ export { LoaderSubmit } from "./loaders/loader-submit";
20
+ export { SessionExpired } from "./pages/session-expired";
21
+ export { AccessDenied } from "./pages/access-denied";
22
+ export { InstallPrompt } from "./pwa/InstallPrompt";
23
+ export type { InstallPromptProps } from "./pwa/InstallPrompt";
24
+ export { SwRegistration } from "./pwa/SwRegistration";
25
+ export type { SwRegistrationProps } from "./pwa/SwRegistration";
26
+ export { routeGuard, RouteGuardProvider, createRouteGuardConfig, } from "./route-guard/route-guard";
27
+ export type { UseCurrentUser, RouteGuardConfig } from "./route-guard/route-guard";
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/ui/src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EACV,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,38 @@
1
+ // exports of sideNav
2
+ export { SideNav } from "./layouts/side-nav";
3
+ export { createSideNav } from "./config/create-side-nav";
4
+ // exports of table components
5
+ export { Table } from "./table/table";
6
+ export { ActionsMenu } from "./table/actions-menu";
7
+ // exports of modal
8
+ export { Modal } from "./modals/modal";
9
+ // exports of feedback
10
+ export { Confirmation } from "./feedback/confirmation";
11
+ // exports of headers
12
+ export { HeaderContent } from "./headers/header-content";
13
+ // exports of forms
14
+ export { Form } from "./forms/form";
15
+ // exports of field container
16
+ export { FieldContainer } from "./forms/field-container";
17
+ // exports of label
18
+ export { Label } from "./forms/label";
19
+ // exports of input
20
+ export { Input } from "./forms/input";
21
+ // exports of select
22
+ export { Select, Option } from "./forms/select";
23
+ // exports of textarea
24
+ export { TextArea } from "./forms/textarea";
25
+ // exports of date picker
26
+ export { DatePicker } from "./forms/date-picker";
27
+ // exports of loaders
28
+ export { Loading } from "./loaders/loading";
29
+ export { LoaderSubmit } from "./loaders/loader-submit";
30
+ // exports of pages
31
+ export { SessionExpired } from "./pages/session-expired";
32
+ export { AccessDenied } from "./pages/access-denied";
33
+ // exports of pwa
34
+ export { InstallPrompt } from "./pwa/InstallPrompt";
35
+ export { SwRegistration } from "./pwa/SwRegistration";
36
+ // exports of route guard
37
+ export { routeGuard, RouteGuardProvider, createRouteGuardConfig, } from "./route-guard/route-guard";
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ui/src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAO7C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,8BAA8B;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,sBAAsB;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,qBAAqB;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,mBAAmB;AACnB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,6BAA6B;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,oBAAoB;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEhD,sBAAsB;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,yBAAyB;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAqB;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,yBAAyB;AACzB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { ReactNode, type ComponentType } from "react";
2
+ type IconType = ReactNode | ComponentType<{
3
+ size?: number;
4
+ }>;
5
+ export interface NavItem {
6
+ id: string;
7
+ label: string;
8
+ title?: string;
9
+ icon?: IconType;
10
+ href: string;
11
+ subItems?: NavItem[];
12
+ }
13
+ export type FooterItem = {
14
+ icon?: IconType;
15
+ label: string;
16
+ href: string;
17
+ } | {
18
+ icon?: IconType;
19
+ label: string;
20
+ confirm: {
21
+ title?: string;
22
+ question: string;
23
+ messageYes: string;
24
+ messageNo: string;
25
+ onAction: () => Promise<void> | void;
26
+ };
27
+ };
28
+ export interface SideNavStaticConfig {
29
+ brand?: {
30
+ logo?: ReactNode;
31
+ name?: string;
32
+ tagline?: string;
33
+ };
34
+ mainItems: NavItem[];
35
+ title?: string;
36
+ footer?: FooterItem[];
37
+ toggleIcon?: ReactNode;
38
+ }
39
+ export interface SideNavProps extends SideNavStaticConfig {
40
+ children: ReactNode;
41
+ currentPath: string;
42
+ }
43
+ export declare function SideNav({ children, title, mainItems, currentPath, brand, footer, toggleIcon, }: SideNavProps): import("react").JSX.Element;
44
+ export {};
45
+ //# sourceMappingURL=side-nav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"side-nav.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/layouts/side-nav.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EAKT,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AAKf,KAAK,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE7D,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IACE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KACtC,CAAC;CACH,CAAC;AAEN,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AA0CD,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,WAAW,EACX,KAAK,EACL,MAAM,EACN,UAAU,GACX,EAAE,YAAY,+BAiWd"}
@@ -0,0 +1,127 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useEffect, createElement, isValidElement, } from "react";
4
+ import { Modal } from "../modals/modal";
5
+ import { Confirmation } from "../feedback/confirmation";
6
+ import { ApiError } from "../../../utils/src/fetcher";
7
+ function isActive(href, currentPath) {
8
+ return currentPath === href || currentPath.startsWith(href + "/");
9
+ }
10
+ function isExactActive(href, currentPath) {
11
+ return currentPath === href;
12
+ }
13
+ function findActiveTitleSource(mainItems, footer, currentPath) {
14
+ let best;
15
+ const consider = (item) => {
16
+ if (!isActive(item.href, currentPath))
17
+ return;
18
+ if (!best || item.href.length > best.href.length) {
19
+ best = item;
20
+ }
21
+ };
22
+ const visit = (items) => {
23
+ for (const item of items) {
24
+ consider(item);
25
+ if (item.subItems && item.subItems.length > 0)
26
+ visit(item.subItems);
27
+ }
28
+ };
29
+ visit(mainItems);
30
+ footer?.forEach((item) => {
31
+ if (!("confirm" in item))
32
+ consider(item);
33
+ });
34
+ return best;
35
+ }
36
+ function renderItemIcon(icon) {
37
+ if (!icon)
38
+ return null;
39
+ if (typeof icon === "string")
40
+ return _jsx("span", { className: "text-lg", children: icon });
41
+ if (isValidElement(icon))
42
+ return icon;
43
+ return createElement(icon, { size: 20 });
44
+ }
45
+ export function SideNav({ children, title, mainItems, currentPath, brand, footer, toggleIcon, }) {
46
+ const activeMain = mainItems.find((item) => isActive(item.href, currentPath));
47
+ const activeTitleSource = findActiveTitleSource(mainItems, footer, currentPath);
48
+ const headerTitle = title ?? activeTitleSource?.title ?? activeTitleSource?.label ?? activeMain?.label;
49
+ const [expandedSection, setExpandedSection] = useState(activeMain?.id ?? null);
50
+ const toggleSection = (id) => {
51
+ setExpandedSection((prev) => (prev === id ? null : id));
52
+ };
53
+ const [isMobileOpen, setIsMobileOpen] = useState(false);
54
+ useEffect(() => {
55
+ const handleEscape = (e) => {
56
+ if (e.key === "Escape")
57
+ setIsMobileOpen(false);
58
+ };
59
+ document.addEventListener("keydown", handleEscape);
60
+ return () => document.removeEventListener("keydown", handleEscape);
61
+ }, []);
62
+ useEffect(() => {
63
+ if (isMobileOpen) {
64
+ document.body.style.overflow = "hidden";
65
+ }
66
+ else {
67
+ document.body.style.overflow = "";
68
+ }
69
+ return () => {
70
+ document.body.style.overflow = "";
71
+ };
72
+ }, [isMobileOpen]);
73
+ const closeMobileNav = () => setIsMobileOpen(false);
74
+ const [confirmingItem, setConfirmingItem] = useState(null);
75
+ const [pending, setPending] = useState(false);
76
+ const [error, setError] = useState(null);
77
+ const openConfirm = (item) => {
78
+ setError(null);
79
+ setConfirmingItem(item);
80
+ closeMobileNav();
81
+ };
82
+ const closeConfirm = () => {
83
+ if (pending)
84
+ return;
85
+ setConfirmingItem(null);
86
+ setError(null);
87
+ };
88
+ const handleConfirmAction = async () => {
89
+ if (!confirmingItem || !("confirm" in confirmingItem))
90
+ return;
91
+ setPending(true);
92
+ setError(null);
93
+ try {
94
+ await confirmingItem.confirm.onAction();
95
+ }
96
+ catch (e) {
97
+ setError(e instanceof ApiError
98
+ ? e
99
+ : new ApiError({
100
+ message: e instanceof Error ? e.message : "Une erreur est survenue",
101
+ status: 500,
102
+ }));
103
+ throw e;
104
+ }
105
+ finally {
106
+ setPending(false);
107
+ }
108
+ };
109
+ return (_jsxs("div", { className: "flex min-h-screen", children: [_jsxs("aside", { className: `w-64 bg-white border-r border-gray-200 flex flex-col fixed h-full z-50 transition-transform duration-300 ease-in-out md:translate-x-0 ${isMobileOpen ? "translate-x-0" : "-translate-x-full"}`, children: [brand && (_jsx("div", { className: "p-[6.5px] border-b border-gray-100", children: _jsxs("div", { className: "flex flex-row gap-2 items-center", children: [brand.logo &&
110
+ (typeof brand.logo === "string" ? (_jsx("img", { src: brand.logo, alt: brand.name ?? "", className: "w-12.5 h-12.5" })) : (brand.logo)), brand.name && (_jsx("p", { className: "text-gray-500 text-base font-semibold", children: brand.name }))] }) })), _jsx("nav", { className: "flex-1 p-4 overflow-y-auto", children: _jsx("ul", { className: "space-y-1", children: mainItems.map((item) => {
111
+ const active = isActive(item.href, currentPath);
112
+ const isExpanded = expandedSection === item.id;
113
+ const hasSubItems = item.subItems && item.subItems.length > 0;
114
+ return (_jsxs("li", { children: [_jsxs("div", { className: "flex items-center gap-1", children: [_jsxs("a", { href: item.href, onClick: closeMobileNav, className: `flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors flex-1 ${active
115
+ ? "bg-gray-200 text-black"
116
+ : "text-gray-500 hover:bg-gray-100"}`, children: [item.icon &&
117
+ (typeof item.icon === "string" ? (_jsx("span", { className: "text-lg", children: item.icon })) : isValidElement(item.icon) ? (item.icon) : (createElement(item.icon, { size: 20 }))), item.label] }), active && hasSubItems && (_jsx("button", { onClick: () => toggleSection(item.id), className: `p-1.5 rounded-lg transition-colors ${active
118
+ ? "text-black hover:bg-gray-100"
119
+ : "text-gray-500 hover:bg-gray-100"}`, title: isExpanded ? "Réduire" : "Développer", children: toggleIcon ? (_jsx("span", { className: `inline-block transition-transform duration-200 ${isExpanded ? "rotate-0" : "-rotate-90"}`, children: toggleIcon })) : (_jsx("span", { className: "text-xs", children: isExpanded ? "▼" : "▶" })) }))] }), active && hasSubItems && (_jsx("div", { className: `grid transition-all duration-300 ease-in-out ${isExpanded ? "grid-rows-[1fr]" : "grid-rows-[0fr]"}`, children: _jsx("div", { className: "overflow-hidden", children: _jsx("ul", { className: "ml-4 mt-1 space-y-1 pl-2", children: item.subItems.map((sub) => (_jsx("li", { children: _jsx("a", { href: sub.href, onClick: closeMobileNav, className: `flex items-center gap-2 px-3 py-2 rounded-lg text-sm font-medium transition-colors ${isExactActive(sub.href, currentPath)
120
+ ? "bg-gray-200 text-black"
121
+ : "text-gray-500 hover:bg-gray-100"}`, children: sub.label }) }, sub.id))) }) }) }))] }, item.id));
122
+ }) }) }), footer && footer.length > 0 && (_jsx("div", { className: "p-4 border-t border-gray-100 space-y-1", children: footer.map((item) => "confirm" in item ? (_jsxs("button", { type: "button", onClick: () => openConfirm(item), className: "flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium text-gray-700 hover:bg-gray-100 transition-colors bg-transparent cursor-pointer", children: [renderItemIcon(item.icon), item.label] }, item.label)) : (_jsxs("a", { href: item.href, onClick: closeMobileNav, className: "flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium text-gray-700 hover:bg-gray-100 transition-colors", children: [renderItemIcon(item.icon), item.label] }, item.label))) }))] }), confirmingItem && "confirm" in confirmingItem && (_jsx(Modal, { title: confirmingItem.confirm.title ?? confirmingItem.label, isOpen: true, onClose: closeConfirm, children: (requestClose) => (_jsx(Confirmation, { question: confirmingItem.confirm.question, messageYes: confirmingItem.confirm.messageYes, messageNo: confirmingItem.confirm.messageNo, requestClose: () => {
123
+ setConfirmingItem(null);
124
+ setError(null);
125
+ }, onAction: handleConfirmAction, isProcessing: pending, error: error, resetRequest: () => setError(null) })) })), isMobileOpen && (_jsx("div", { className: "fixed inset-0 z-40 bg-black/50 md:hidden", onClick: closeMobileNav, "aria-hidden": "true" })), _jsxs("div", { className: "flex-1 ml-64 max-md:ml-0 min-w-0", children: [headerTitle && (_jsxs("header", { className: "h-16 bg-white border-b border-gray-200 flex items-center justify-between px-6 fixed top-0 right-0 left-64 max-md:left-0 z-20", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { className: "md:hidden p-2 -ml-2 rounded-lg hover:bg-gray-100 transition-colors", onClick: () => setIsMobileOpen(!isMobileOpen), "aria-label": isMobileOpen ? "Fermer le menu" : "Menu", "aria-expanded": isMobileOpen, children: isMobileOpen ? (_jsx("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) })) : (_jsx("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4 6h16M4 12h16M4 18h16" }) })) }), _jsx("h1", { className: "text-base font-semibold text-gray-500", children: headerTitle })] }), brand?.tagline && (_jsx("span", { className: "text-sm text-gray-500 max-md:hidden", children: brand.tagline }))] })), !headerTitle && (_jsx("button", { className: "md:hidden fixed top-4 left-4 z-10 p-2 rounded-lg bg-white border border-gray-200 shadow-sm hover:bg-gray-100 transition-colors", onClick: () => setIsMobileOpen(!isMobileOpen), "aria-label": isMobileOpen ? "Fermer le menu" : "Menu", "aria-expanded": isMobileOpen, children: isMobileOpen ? (_jsx("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) })) : (_jsx("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4 6h16M4 12h16M4 18h16" }) })) })), _jsx("main", { className: (headerTitle ? "p-6 pt-20" : "p-6") + " overflow-x-auto", children: children })] })] }));
126
+ }
127
+ //# sourceMappingURL=side-nav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"side-nav.js","sourceRoot":"","sources":["../../../../../packages/ui/src/layouts/side-nav.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface LoaderSubmitProps {
2
+ label: string;
3
+ loadingLabel: string;
4
+ isLoading: boolean;
5
+ }
6
+ export declare function LoaderSubmit({ label, loadingLabel, isLoading }: LoaderSubmitProps): import("react").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=loader-submit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-submit.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/loaders/loader-submit.tsx"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,iBAAiB,+BAmBjF"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { LoaderCircle } from "lucide-react";
4
+ export function LoaderSubmit({ label, loadingLabel, isLoading }) {
5
+ return (_jsx(_Fragment, { children: isLoading ? (_jsxs("div", { className: "flex flex-row gap-2 items-center", children: [_jsx(LoaderCircle, { className: "animate-spin text-gray-500" }), _jsx("p", { className: "text-gray-500 font-semibold", children: loadingLabel })] })) : (_jsx("button", { type: "submit", className: "bg-gray-900 text-white px-6 py-2 rounded-md hover:bg-gray-700 hover:cursor-pointer transition-colors duration-300 font-semibold shadow-md", disabled: isLoading, children: label })) }));
6
+ }
7
+ //# sourceMappingURL=loader-submit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-submit.js","sourceRoot":"","sources":["../../../../../packages/ui/src/loaders/loader-submit.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQ5C,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAqB;IAChF,OAAO,CACL,4BACG,SAAS,CAAC,CAAC,CAAC,CACX,eAAK,SAAS,EAAC,kCAAkC,aAC/C,KAAC,YAAY,IAAC,SAAS,EAAC,4BAA4B,GAAG,EACvD,YAAG,SAAS,EAAC,6BAA6B,YAAE,YAAY,GAAK,IACzD,CACP,CAAC,CAAC,CAAC,CACF,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,2IAA2I,EACrJ,QAAQ,EAAE,SAAS,YAElB,KAAK,GACC,CACV,GACA,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ interface LoadingProps {
2
+ text: string;
3
+ }
4
+ export declare function Loading(props: LoadingProps): import("react").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=loading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/loaders/loading.tsx"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,+BAU1C"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Loader } from "lucide-react";
4
+ export function Loading(props) {
5
+ return (_jsx("div", { className: "flex items-center justify-center", children: _jsxs("div", { className: "flex flex-col items-center gap-4", children: [_jsx(Loader, { className: "animate-spin", size: 40 }), _jsx("p", { className: "text-gray-600 text-md font-medium", children: props.text })] }) }));
6
+ }
7
+ //# sourceMappingURL=loading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading.js","sourceRoot":"","sources":["../../../../../packages/ui/src/loaders/loading.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAMtC,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,OAAO,CACL,cAAK,SAAS,EAAC,kCAAkC,YAC/C,eAAK,SAAS,EAAC,kCAAkC,aAC/C,KAAC,MAAM,IAAC,SAAS,EAAC,cAAc,EAAC,IAAI,EAAE,EAAE,GAAI,EAE7C,YAAG,SAAS,EAAC,mCAAmC,YAAE,KAAK,CAAC,IAAI,GAAK,IAC7D,GACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ type ModalProps = {
3
+ title: string;
4
+ isOpen: boolean;
5
+ onClose: () => void;
6
+ children: React.ReactNode | ((requestClose: () => void) => React.ReactNode);
7
+ };
8
+ export declare function Modal({ title, isOpen, onClose, children }: ModalProps): React.ReactPortal | null;
9
+ export {};
10
+ //# sourceMappingURL=modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/modals/modal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAGzC,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CAC7E,CAAC;AAEF,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,4BA4DrE"}
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { X } from "lucide-react";
4
+ import { useEffect } from "react";
5
+ import { createPortal } from "react-dom";
6
+ export function Modal({ title, isOpen, onClose, children }) {
7
+ const requestClose = () => {
8
+ onClose();
9
+ };
10
+ useEffect(() => {
11
+ if (isOpen) {
12
+ document.body.style.overflow = "hidden";
13
+ }
14
+ return () => {
15
+ document.body.style.overflow = "";
16
+ };
17
+ }, [isOpen]);
18
+ useEffect(() => {
19
+ function handleEsc(e) {
20
+ if (e.key === "Escape") {
21
+ onClose();
22
+ }
23
+ }
24
+ if (isOpen) {
25
+ document.addEventListener("keydown", handleEsc);
26
+ }
27
+ return () => {
28
+ document.removeEventListener("keydown", handleEsc);
29
+ };
30
+ }, [isOpen, onClose]);
31
+ if (!isOpen)
32
+ return null;
33
+ const content = typeof children === "function" ? children(requestClose) : children;
34
+ return createPortal(_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx("div", { className: "absolute inset-0 bg-black/20 backdrop-blur-sm", onClick: onClose }), _jsxs("div", { className: "relative bg-white rounded-lg shadow-lg w-full max-w-2xl mx-4 p-6 flex flex-col max-h-[85vh]", children: [_jsxs("div", { className: "flex items-center justify-between mb-4 border-b-2 border-gray-400 pb-3 sticky top-0 bg-white z-10", children: [_jsx("h2", { className: "text-lg font-semibold text-gray-900", children: title }), _jsx("button", { onClick: onClose, className: "text-gray-500 hover:text-gray-700 text-xl cursor-pointer", children: _jsx(X, {}) })] }), _jsx("div", { className: "overflow-y-auto flex-1 min-h-0", children: content })] })] }), document.body);
35
+ }
36
+ //# sourceMappingURL=modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../../../packages/ui/src/modals/modal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AASzC,MAAM,UAAU,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAc;IACpE,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1C,CAAC;QAED,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,SAAS,CAAC,CAAgB;YACjC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACvB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtB,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,OAAO,GACX,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAErE,OAAO,YAAY,CACjB,eAAK,SAAS,EAAC,qDAAqD,aAClE,cACE,SAAS,EAAC,+CAA+C,EACzD,OAAO,EAAE,OAAO,GAChB,EAEF,eAAK,SAAS,EAAC,6FAA6F,aAC1G,eAAK,SAAS,EAAC,mGAAmG,aAChH,aAAI,SAAS,EAAC,qCAAqC,YAAE,KAAK,GAAM,EAEhE,iBACE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,0DAA0D,YAEpE,KAAC,CAAC,KAAG,GACE,IACL,EAEN,cAAK,SAAS,EAAC,gCAAgC,YAAE,OAAO,GAAO,IAC3D,IACF,EACN,QAAQ,CAAC,IAAI,CACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface AccessDeniedProps {
2
+ logo: string;
3
+ redirectTo: string;
4
+ textRedirection: string;
5
+ }
6
+ export declare function AccessDenied({ logo, redirectTo, textRedirection }: AccessDeniedProps): import("react").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=access-denied.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-denied.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/pages/access-denied.tsx"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,iBAAiB,+BA8BpF"}
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import Image from "next/image";
4
+ import Link from "next/link";
5
+ export function AccessDenied({ logo, redirectTo, textRedirection }) {
6
+ return (_jsx("main", { className: "min-h-screen py-16 px-4 bg-gradient-to-b from-gray-100 to-white text-gray-900 flex items-center justify-center", children: _jsxs("div", { className: "max-w-md mx-auto text-center", children: [_jsx("div", { className: "flex justify-center mb-6", children: _jsx(Image, { alt: "Logo", height: 100, width: 100, src: logo }) }), _jsx("h1", { className: "text-2xl font-bold text-red-600 mb-4", children: "Acc\u00E8s refus\u00E9" }), _jsx("p", { className: "text-gray-500 mb-8", children: "Vous ne disposez pas des droits n\u00E9cessaires pour acc\u00E9der \u00E0 cette page." }), _jsx(Link, { href: redirectTo, className: "inline-block px-6 py-3 bg-gray-900 text-white rounded-lg font-semibold hover:bg-gray-700 transition-colors", children: textRedirection })] }) }));
7
+ }
8
+ //# sourceMappingURL=access-denied.js.map