@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.
- package/dist/packages/lib/src/auth-guard.d.ts +10 -0
- package/dist/packages/lib/src/auth-guard.d.ts.map +1 -0
- package/dist/packages/lib/src/auth-guard.js +60 -0
- package/dist/packages/lib/src/auth-guard.js.map +1 -0
- package/dist/packages/lib/src/handle-server-error.d.ts +9 -0
- package/dist/packages/lib/src/handle-server-error.d.ts.map +1 -0
- package/dist/packages/lib/src/handle-server-error.js +43 -0
- package/dist/packages/lib/src/handle-server-error.js.map +1 -0
- package/dist/packages/lib/src/http-error.d.ts +6 -0
- package/dist/packages/lib/src/http-error.d.ts.map +1 -0
- package/dist/packages/lib/src/http-error.js +12 -0
- package/dist/packages/lib/src/http-error.js.map +1 -0
- package/dist/packages/lib/src/index.d.ts +5 -0
- package/dist/packages/lib/src/index.d.ts.map +1 -0
- package/dist/packages/lib/src/index.js +9 -0
- package/dist/packages/lib/src/index.js.map +1 -0
- package/dist/packages/lib/src/with-auth.d.ts +8 -0
- package/dist/packages/lib/src/with-auth.d.ts.map +1 -0
- package/dist/packages/lib/src/with-auth.js +32 -0
- package/dist/packages/lib/src/with-auth.js.map +1 -0
- package/dist/packages/ui/src/config/create-side-nav.d.ts +6 -0
- package/dist/packages/ui/src/config/create-side-nav.d.ts.map +1 -0
- package/dist/packages/ui/src/config/create-side-nav.js +9 -0
- package/dist/packages/ui/src/config/create-side-nav.js.map +1 -0
- package/dist/packages/ui/src/feedback/confirmation.d.ts +16 -0
- package/dist/packages/ui/src/feedback/confirmation.d.ts.map +1 -0
- package/dist/packages/ui/src/feedback/confirmation.js +82 -0
- package/dist/packages/ui/src/feedback/confirmation.js.map +1 -0
- package/dist/packages/ui/src/feedback/error-display.d.ts +7 -0
- package/dist/packages/ui/src/feedback/error-display.d.ts.map +1 -0
- package/dist/packages/ui/src/feedback/error-display.js +11 -0
- package/dist/packages/ui/src/feedback/error-display.js.map +1 -0
- package/dist/packages/ui/src/forms/date-picker.d.ts +4 -0
- package/dist/packages/ui/src/forms/date-picker.d.ts.map +1 -0
- package/dist/packages/ui/src/forms/date-picker.js +9 -0
- package/dist/packages/ui/src/forms/date-picker.js.map +1 -0
- package/dist/packages/ui/src/forms/field-container.d.ts +8 -0
- package/dist/packages/ui/src/forms/field-container.d.ts.map +1 -0
- package/dist/packages/ui/src/forms/field-container.js +6 -0
- package/dist/packages/ui/src/forms/field-container.js.map +1 -0
- package/dist/packages/ui/src/forms/form.d.ts +9 -0
- package/dist/packages/ui/src/forms/form.d.ts.map +1 -0
- package/dist/packages/ui/src/forms/form.js +63 -0
- package/dist/packages/ui/src/forms/form.js.map +1 -0
- package/dist/packages/ui/src/forms/input.d.ts +4 -0
- package/dist/packages/ui/src/forms/input.d.ts.map +1 -0
- package/dist/packages/ui/src/forms/input.js +13 -0
- package/dist/packages/ui/src/forms/input.js.map +1 -0
- package/dist/packages/ui/src/forms/label.d.ts +7 -0
- package/dist/packages/ui/src/forms/label.d.ts.map +1 -0
- package/dist/packages/ui/src/forms/label.js +9 -0
- package/dist/packages/ui/src/forms/label.js.map +1 -0
- package/dist/packages/ui/src/forms/select.d.ts +6 -0
- package/dist/packages/ui/src/forms/select.d.ts.map +1 -0
- package/dist/packages/ui/src/forms/select.js +19 -0
- package/dist/packages/ui/src/forms/select.js.map +1 -0
- package/dist/packages/ui/src/forms/textarea.d.ts +4 -0
- package/dist/packages/ui/src/forms/textarea.d.ts.map +1 -0
- package/dist/packages/ui/src/forms/textarea.js +9 -0
- package/dist/packages/ui/src/forms/textarea.js.map +1 -0
- package/dist/packages/ui/src/headers/header-content.d.ts +11 -0
- package/dist/packages/ui/src/headers/header-content.d.ts.map +1 -0
- package/dist/packages/ui/src/headers/header-content.js +6 -0
- package/dist/packages/ui/src/headers/header-content.js.map +1 -0
- package/dist/packages/ui/src/illustrations/topic-illustration.d.ts +1 -0
- package/dist/packages/ui/src/illustrations/topic-illustration.d.ts.map +1 -0
- package/dist/packages/ui/src/illustrations/topic-illustration.js +69 -0
- package/dist/packages/ui/src/illustrations/topic-illustration.js.map +1 -0
- package/dist/packages/ui/src/index.d.ts +28 -0
- package/dist/packages/ui/src/index.d.ts.map +1 -0
- package/dist/packages/ui/src/index.js +38 -0
- package/dist/packages/ui/src/index.js.map +1 -0
- package/dist/packages/ui/src/layouts/side-nav.d.ts +45 -0
- package/dist/packages/ui/src/layouts/side-nav.d.ts.map +1 -0
- package/dist/packages/ui/src/layouts/side-nav.js +127 -0
- package/dist/packages/ui/src/layouts/side-nav.js.map +1 -0
- package/dist/packages/ui/src/loaders/loader-submit.d.ts +8 -0
- package/dist/packages/ui/src/loaders/loader-submit.d.ts.map +1 -0
- package/dist/packages/ui/src/loaders/loader-submit.js +7 -0
- package/dist/packages/ui/src/loaders/loader-submit.js.map +1 -0
- package/dist/packages/ui/src/loaders/loading.d.ts +6 -0
- package/dist/packages/ui/src/loaders/loading.d.ts.map +1 -0
- package/dist/packages/ui/src/loaders/loading.js +7 -0
- package/dist/packages/ui/src/loaders/loading.js.map +1 -0
- package/dist/packages/ui/src/modals/modal.d.ts +10 -0
- package/dist/packages/ui/src/modals/modal.d.ts.map +1 -0
- package/dist/packages/ui/src/modals/modal.js +36 -0
- package/dist/packages/ui/src/modals/modal.js.map +1 -0
- package/dist/packages/ui/src/pages/access-denied.d.ts +8 -0
- package/dist/packages/ui/src/pages/access-denied.d.ts.map +1 -0
- package/dist/packages/ui/src/pages/access-denied.js +8 -0
- package/dist/packages/ui/src/pages/access-denied.js.map +1 -0
- package/dist/packages/ui/src/pages/session-expired.d.ts +6 -0
- package/dist/packages/ui/src/pages/session-expired.d.ts.map +1 -0
- package/dist/packages/ui/src/pages/session-expired.js +21 -0
- package/dist/packages/ui/src/pages/session-expired.js.map +1 -0
- package/dist/packages/ui/src/pwa/InstallPrompt.d.ts +7 -0
- package/dist/packages/ui/src/pwa/InstallPrompt.d.ts.map +1 -0
- package/dist/packages/ui/src/pwa/InstallPrompt.js +71 -0
- package/dist/packages/ui/src/pwa/InstallPrompt.js.map +1 -0
- package/dist/packages/ui/src/pwa/SwRegistration.d.ts +5 -0
- package/dist/packages/ui/src/pwa/SwRegistration.d.ts.map +1 -0
- package/dist/packages/ui/src/pwa/SwRegistration.js +13 -0
- package/dist/packages/ui/src/pwa/SwRegistration.js.map +1 -0
- package/dist/packages/ui/src/route-guard/route-guard.d.ts +31 -0
- package/dist/packages/ui/src/route-guard/route-guard.d.ts.map +1 -0
- package/dist/packages/ui/src/route-guard/route-guard.js +75 -0
- package/dist/packages/ui/src/route-guard/route-guard.js.map +1 -0
- package/dist/packages/ui/src/search/input-search.d.ts +1 -0
- package/dist/packages/ui/src/search/input-search.d.ts.map +1 -0
- package/dist/packages/ui/src/search/input-search.js +47 -0
- package/dist/packages/ui/src/search/input-search.js.map +1 -0
- package/dist/packages/ui/src/search/select-search.d.ts +1 -0
- package/dist/packages/ui/src/search/select-search.d.ts.map +1 -0
- package/dist/packages/ui/src/search/select-search.js +100 -0
- package/dist/packages/ui/src/search/select-search.js.map +1 -0
- package/dist/packages/ui/src/table/actions-menu.d.ts +14 -0
- package/dist/packages/ui/src/table/actions-menu.d.ts.map +1 -0
- package/dist/packages/ui/src/table/actions-menu.js +53 -0
- package/dist/packages/ui/src/table/actions-menu.js.map +1 -0
- package/dist/packages/ui/src/table/table.d.ts +24 -0
- package/dist/packages/ui/src/table/table.d.ts.map +1 -0
- package/dist/packages/ui/src/table/table.js +99 -0
- package/dist/packages/ui/src/table/table.js.map +1 -0
- package/dist/packages/utils/src/fetcher.d.ts +16 -0
- package/dist/packages/utils/src/fetcher.d.ts.map +1 -0
- package/dist/packages/utils/src/fetcher.js +38 -0
- package/dist/packages/utils/src/fetcher.js.map +1 -0
- package/dist/packages/utils/src/formatCurrency.d.ts +1 -0
- package/dist/packages/utils/src/formatCurrency.d.ts.map +1 -0
- package/dist/packages/utils/src/formatCurrency.js +2 -0
- package/dist/packages/utils/src/formatCurrency.js.map +1 -0
- package/dist/packages/utils/src/formatDate.d.ts +1 -0
- package/dist/packages/utils/src/formatDate.d.ts.map +1 -0
- package/dist/packages/utils/src/formatDate.js +2 -0
- package/dist/packages/utils/src/formatDate.js.map +1 -0
- package/dist/packages/utils/src/index.d.ts +3 -0
- package/dist/packages/utils/src/index.d.ts.map +1 -0
- package/dist/packages/utils/src/index.js +2 -0
- package/dist/packages/utils/src/index.js.map +1 -0
- package/dist/src/client.d.ts +3 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/client.js +5 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/server.d.ts +2 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +3 -0
- package/dist/src/server.js.map +1 -0
- package/package.json +8 -8
- package/dist/client.d.ts +0 -210
- package/dist/client.js +0 -1407
- package/dist/client.js.map +0 -1
- package/dist/server.d.ts +0 -33
- package/dist/server.js +0 -161
- 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 @@
|
|
|
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":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAEL,QAAQ,EACR,SAAS,EACT,aAAa,EACb,cAAc,GAEf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AA4CtD,SAAS,QAAQ,CAAC,IAAY,EAAE,WAAmB;IACjD,OAAO,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,WAAmB;IACtD,OAAO,WAAW,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAAoB,EACpB,MAAgC,EAChC,WAAmB;IAEnB,IAAI,IAAiE,CAAC;IACtE,MAAM,QAAQ,GAAG,CAAC,IAAqD,EAAE,EAAE;QACzE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;YAAE,OAAO;QAC9C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,KAAgB,EAAE,EAAE;QACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtE,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,SAAS,CAAC,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,IAA0B;IAChD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,eAAM,SAAS,EAAC,SAAS,YAAE,IAAI,GAAQ,CAAC;IAC7E,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,aAAa,CAAC,IAAwC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,WAAW,EACX,KAAK,EACL,MAAM,EACN,UAAU,GACG;IACb,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAC9E,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAChF,MAAM,WAAW,GACf,KAAK,IAAI,iBAAiB,EAAE,KAAK,IAAI,iBAAiB,EAAE,KAAK,IAAI,UAAU,EAAE,KAAK,CAAC;IACrF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CACpD,UAAU,EAAE,EAAE,IAAI,IAAI,CACvB,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,EAAU,EAAE,EAAE;QACnC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,CAAC,CAAgB,EAAE,EAAE;YACxC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,eAAe,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACnD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACrE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAC;IAE1D,MAAM,WAAW,GAAG,CAAC,IAAgB,EAAE,EAAE;QACvC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,cAAc,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,OAAO;YAAE,OAAO;QACpB,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,SAAS,IAAI,cAAc,CAAC;YAAE,OAAO;QAC9D,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,QAAQ,CACN,CAAC,YAAY,QAAQ;gBACnB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,IAAI,QAAQ,CAAC;oBACX,OAAO,EACL,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;oBAC5D,MAAM,EAAE,GAAG;iBACZ,CAAC,CACP,CAAC;YACF,MAAM,CAAC,CAAC;QACV,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAChC,iBACE,SAAS,EAAE,yIACT,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBACnC,EAAE,aAED,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,oCAAoC,YACjD,eAAK,SAAS,EAAC,kCAAkC,aAC9C,KAAK,CAAC,IAAI;oCACT,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAChC,cACE,GAAG,EAAE,KAAK,CAAC,IAAI,EACf,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,EACrB,SAAS,EAAC,eAAe,GACzB,CACH,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,IAAI,CACX,CAAC,EACH,KAAK,CAAC,IAAI,IAAI,CACb,YAAG,SAAS,EAAC,uCAAuC,YACjD,KAAK,CAAC,IAAI,GACT,CACL,IACG,GACF,CACP,EAED,cAAK,SAAS,EAAC,4BAA4B,YACzC,aAAI,SAAS,EAAC,WAAW,YACtB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gCACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gCAChD,MAAM,UAAU,GAAG,eAAe,KAAK,IAAI,CAAC,EAAE,CAAC;gCAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gCAE9D,OAAO,CACL,yBACE,eAAK,SAAS,EAAC,yBAAyB,aACtC,aACE,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,+FACT,MAAM;wDACJ,CAAC,CAAC,wBAAwB;wDAC1B,CAAC,CAAC,iCACN,EAAE,aAED,IAAI,CAAC,IAAI;4DACR,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC/B,eAAM,SAAS,EAAC,SAAS,YAAE,IAAI,CAAC,IAAI,GAAQ,CAC7C,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC9B,IAAI,CAAC,IAAI,CACV,CAAC,CAAC,CAAC,CACF,aAAa,CACX,IAAI,CAAC,IAAwC,EAC7C,EAAE,IAAI,EAAE,EAAE,EAAE,CACb,CACF,CAAC,EACH,IAAI,CAAC,KAAK,IACT,EACH,MAAM,IAAI,WAAW,IAAI,CACxB,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EACrC,SAAS,EAAE,sCACT,MAAM;wDACJ,CAAC,CAAC,8BAA8B;wDAChC,CAAC,CAAC,iCACN,EAAE,EACF,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,YAE3C,UAAU,CAAC,CAAC,CAAC,CACZ,eACE,SAAS,EAAE,kDACT,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAC5B,EAAE,YAED,UAAU,GACN,CACR,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,SAAS,YACtB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAClB,CACR,GACM,CACV,IACG,EAEL,MAAM,IAAI,WAAW,IAAI,CACxB,cACE,SAAS,EAAE,gDACT,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBACnC,EAAE,YAEF,cAAK,SAAS,EAAC,iBAAiB,YAC9B,aAAI,SAAS,EAAC,0BAA0B,YACrC,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAC3B,uBACE,YACE,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,sFACT,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;gEAClC,CAAC,CAAC,wBAAwB;gEAC1B,CAAC,CAAC,iCACN,EAAE,YAED,GAAG,CAAC,KAAK,GACR,IAXG,GAAG,CAAC,EAAE,CAYV,CACN,CAAC,GACC,GACD,GACF,CACP,KA7EM,IAAI,CAAC,EAAE,CA8EX,CACN,CAAC;4BACJ,CAAC,CAAC,GACC,GACD,EAEL,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B,cAAK,SAAS,EAAC,wCAAwC,YACpD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnB,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,CAClB,kBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAChC,SAAS,EAAC,oJAAoJ,aAE7J,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB,IAAI,CAAC,KAAK,KANN,IAAI,CAAC,KAAK,CAOR,CACV,CAAC,CAAC,CAAC,CACF,aAEE,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,cAAc,EACvB,SAAS,EAAC,sHAAsH,aAE/H,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB,IAAI,CAAC,KAAK,KANN,IAAI,CAAC,KAAK,CAOb,CACL,CACF,GACG,CACP,IACK,EAEP,cAAc,IAAI,SAAS,IAAI,cAAc,IAAI,CAChD,KAAC,KAAK,IACJ,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,EAC3D,MAAM,QACN,OAAO,EAAE,YAAY,YAEpB,CAAC,YAAY,EAAE,EAAE,CAAC,CACjB,KAAC,YAAY,IACX,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,EACzC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU,EAC7C,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAC3C,YAAY,EAAE,GAAG,EAAE;wBACjB,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBACxB,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACjB,CAAC,EACD,QAAQ,EAAE,mBAAmB,EAC7B,YAAY,EAAE,OAAO,EACrB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAClC,CACH,GACK,CACT,EAEA,YAAY,IAAI,CACf,cACE,SAAS,EAAC,0CAA0C,EACpD,OAAO,EAAE,cAAc,iBACX,MAAM,GAClB,CACH,EAED,eAAK,SAAS,EAAC,kCAAkC,aAC9C,WAAW,IAAI,CACd,kBAAQ,SAAS,EAAC,8HAA8H,aAC9I,eAAK,SAAS,EAAC,yBAAyB,aACtC,iBACE,SAAS,EAAC,oEAAoE,EAC9E,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,gBACjC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,mBACrC,YAAY,YAE1B,YAAY,CAAC,CAAC,CAAC,CACd,cACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,CAAC,YAEd,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,CAAC,EAAC,sBAAsB,GACxB,GACE,CACP,CAAC,CAAC,CAAC,CACF,cACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,CAAC,YAEd,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,CAAC,EAAC,yBAAyB,GAC3B,GACE,CACP,GACM,EACT,aAAI,SAAS,EAAC,uCAAuC,YAClD,WAAW,GACT,IACD,EACL,KAAK,EAAE,OAAO,IAAI,CACjB,eAAM,SAAS,EAAC,qCAAqC,YAClD,KAAK,CAAC,OAAO,GACT,CACR,IACM,CACV,EACA,CAAC,WAAW,IAAI,CACf,iBACE,SAAS,EAAC,gIAAgI,EAC1I,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,gBACjC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,mBACrC,YAAY,YAE1B,YAAY,CAAC,CAAC,CAAC,CACd,cACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,CAAC,YAEd,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,CAAC,EAAC,sBAAsB,GACxB,GACE,CACP,CAAC,CAAC,CAAC,CACF,cACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,CAAC,YAEd,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,CAAC,EAAC,yBAAyB,GAC3B,GACE,CACP,GACM,CACV,EACD,eACE,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,kBAAkB,YAElE,QAAQ,GACJ,IACH,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -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 @@
|
|
|
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
|