@sito/dashboard-app 0.0.43 → 0.0.45

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/README.md CHANGED
@@ -28,8 +28,8 @@ pnpm add @sito/dashboard-app
28
28
  - Actions and menus: `Actions`, `Action`, `Dropdown`, button components
29
29
  - Dialogs and forms: `Dialog`, `FormDialog`, `ImportDialog`, form inputs
30
30
  - Feedback: `Notification`, `Loading`, `Empty`, `Error`, `Onboarding`
31
- - Hooks: `useImportDialog`, `useDeleteDialog`, `usePostForm`, `useDeleteAction`, and more — all action hooks ship with default `sticky`, `multiple`, `id`, `icon`, and `tooltip` values so only `onClick` is required
32
- - Providers and utilities: `ConfigProvider`, `ManagerProvider`, `AuthProvider`, `NotificationProvider`, DTOs, API clients
31
+ - Hooks: `useImportDialog`, `useDeleteDialog`, `usePostForm`, `useDeleteAction`, `useNavbar`, and more — all action hooks ship with default `sticky`, `multiple`, `id`, `icon`, and `tooltip` values so only `onClick` is required
32
+ - Providers and utilities: `ConfigProvider`, `ManagerProvider`, `AuthProvider`, `NotificationProvider`, `NavbarProvider`, DTOs, API clients
33
33
 
34
34
  ## Initial setup example
35
35
 
@@ -112,6 +112,88 @@ export function App() {
112
112
  - `npm run storybook`: run Storybook locally
113
113
  - `npm run build-storybook`: generate static Storybook build
114
114
 
115
+ ## Offline-first / IndexedDB fallback
116
+
117
+ `IndexedDBClient` is a drop-in offline alternative to `BaseClient`. It exposes the exact same method surface (`insert`, `insertMany`, `update`, `get`, `getById`, `export`, `import`, `commonGet`, `softDelete`, `restore`) but stores data locally in the browser's IndexedDB instead of calling a remote API.
118
+
119
+ ### When to use it
120
+
121
+ Use `IndexedDBClient` when the remote API is unreachable — for example in offline-capable dashboards, field apps, or PWAs. The pattern is to detect connectivity and swap the client transparently:
122
+
123
+ ```ts
124
+ import { BaseClient, IndexedDBClient } from "@sito/dashboard-app";
125
+
126
+ // Online: hit the API. Offline: read/write from IndexedDB.
127
+ const productsClient = navigator.onLine
128
+ ? new ProductsClient(import.meta.env.VITE_API_URL)
129
+ : new ProductsIndexedDBClient();
130
+ ```
131
+
132
+ ### Creating an offline client
133
+
134
+ Extend `IndexedDBClient` the same way you would extend `BaseClient`:
135
+
136
+ ```ts
137
+ import {
138
+ IndexedDBClient,
139
+ BaseEntityDto,
140
+ BaseCommonEntityDto,
141
+ BaseFilterDto,
142
+ DeleteDto,
143
+ ImportPreviewDto,
144
+ } from "@sito/dashboard-app";
145
+
146
+ interface ProductDto extends BaseEntityDto {
147
+ name: string;
148
+ price: number;
149
+ }
150
+
151
+ interface ProductFilterDto extends BaseFilterDto {
152
+ category?: string;
153
+ }
154
+
155
+ class ProductsIndexedDBClient extends IndexedDBClient<
156
+ "products",
157
+ ProductDto,
158
+ ProductDto, // TCommonDto
159
+ Omit<ProductDto, "id" | "createdAt" | "updatedAt" | "deletedAt">,
160
+ ProductDto, // TUpdateDto (extends DeleteDto via BaseEntityDto)
161
+ ProductFilterDto,
162
+ ImportPreviewDto
163
+ > {
164
+ constructor() {
165
+ super("products", "my-app-db");
166
+ }
167
+ }
168
+ ```
169
+
170
+ ### Reacting to connectivity changes at runtime
171
+
172
+ ```ts
173
+ import { useState, useEffect } from "react";
174
+
175
+ function useProductsClient() {
176
+ const [client, setClient] = useState(
177
+ () => navigator.onLine ? new ProductsClient(apiUrl) : new ProductsIndexedDBClient()
178
+ );
179
+
180
+ useEffect(() => {
181
+ const goOnline = () => setClient(new ProductsClient(apiUrl));
182
+ const goOffline = () => setClient(new ProductsIndexedDBClient());
183
+ window.addEventListener("online", goOnline);
184
+ window.addEventListener("offline", goOffline);
185
+ return () => {
186
+ window.removeEventListener("online", goOnline);
187
+ window.removeEventListener("offline", goOffline);
188
+ };
189
+ }, []);
190
+
191
+ return client;
192
+ }
193
+ ```
194
+
195
+ > **Note:** `IndexedDBClient` requires a browser environment. It will not work in SSR/Node contexts.
196
+
115
197
  ## Tests
116
198
 
117
199
  Automated tests are configured with `Vitest` + `@testing-library/react`.
@@ -1 +1,5 @@
1
+ /**
2
+ * @deprecated
3
+ * @returns
4
+ */
1
5
  export declare const Clock: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export { Clock } from './Clock';
@@ -14,13 +14,19 @@ declare const meta: {
14
14
  };
15
15
  args: {
16
16
  openDrawer: () => void;
17
- showClock: true;
18
17
  showSearch: true;
19
18
  };
19
+ decorators: ((Story: import('@storybook/core/csf').PartialStoryFn<import('@storybook/react').ReactRenderer, {
20
+ menuButtonProps?: import('..').IconButtonPropsLocalType | undefined;
21
+ openDrawer: () => void;
22
+ showSearch?: boolean | undefined;
23
+ }>) => import("react/jsx-runtime").JSX.Element)[];
20
24
  };
21
25
  export default meta;
22
26
  type Story = StoryObj<typeof meta>;
23
27
  export declare const Basic: Story;
24
- export declare const WithoutClock: Story;
25
28
  export declare const WithoutSearch: Story;
26
29
  export declare const WithCustomMenuButtonProps: Story;
30
+ export declare const WithCustomTitle: Story;
31
+ export declare const WithRightContent: Story;
32
+ export declare const WithTitleAndRightContent: Story;
@@ -0,0 +1,14 @@
1
+ import { NavbarContextType, NavbarProviderPropTypes } from './types.js';
2
+ declare const NavbarContext: import('react').Context<NavbarContextType>;
3
+ /**
4
+ * Navbar Provider
5
+ * @param props - provider props
6
+ * @returns React component
7
+ */
8
+ declare const NavbarProvider: (props: NavbarProviderPropTypes) => import("react/jsx-runtime").JSX.Element;
9
+ /**
10
+ * useNavbar hook
11
+ * @returns Navbar context
12
+ */
13
+ declare const useNavbar: () => NavbarContextType;
14
+ export { NavbarContext, NavbarProvider, useNavbar };
@@ -1,2 +1,3 @@
1
1
  export * from './Navbar';
2
+ export * from './NavbarProvider';
2
3
  export * from './types';
@@ -1,7 +1,16 @@
1
+ import { ReactNode } from 'react';
1
2
  import { IconButtonPropsLocalType } from '../Buttons/IconButton';
2
3
  export type NavbarPropsType = {
3
4
  menuButtonProps?: IconButtonPropsLocalType;
4
5
  openDrawer: () => void;
5
- showClock?: boolean;
6
6
  showSearch?: boolean;
7
7
  };
8
+ export type NavbarProviderPropTypes = {
9
+ children: ReactNode;
10
+ };
11
+ export type NavbarContextType = {
12
+ title: string;
13
+ setTitle: (value: string) => void;
14
+ rightContent: ReactNode;
15
+ setRightContent: (value: ReactNode) => void;
16
+ };
@@ -1 +1 @@
1
- var xs=Object.defineProperty;var vs=(e,t,s)=>t in e?xs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var ue=(e,t,s)=>vs(e,typeof t!="symbol"?t+"":t,s);var Pr=require("./main.css");Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("@sito/dashboard"),d=require("react/jsx-runtime"),ae=require("@fortawesome/react-fontawesome"),b=require("react"),B=require("@fortawesome/free-solid-svg-icons"),It=require("react-dom"),we=require("@tanstack/react-query"),Cs=require("@fortawesome/free-regular-svg-icons"),Ct=e=>e==null?!1:`${e}`.length>0,Ss=b.forwardRef(function(e,t){const{value:s,defaultValue:n,onChange:i,state:r=S.State.default,name:a="",id:c="",label:l="",disabled:g=!1,required:y=!1,containerClassName:h="",inputClassName:f="",labelClassName:p="",helperText:C="",helperTextClassName:_="",...A}=e,q=s!==void 0,[T,D]=b.useState(()=>Ct(n)),F=q?Ct(s):T,N=$=>{q||D($.currentTarget.value.length>0),i==null||i($)};return d.jsxs("div",{className:`form-paragraph-container group ${h}`,children:[d.jsx("textarea",{ref:t,name:a,id:c,className:`text-input text-area form-paragraph-textarea peer ${S.inputStateClassName(r)} ${F?"has-value":""} ${A.placeholder?"has-placeholder":""} ${f}`,required:y,defaultValue:n,...q?{value:s}:{},onChange:N,disabled:g,...A}),d.jsxs("label",{htmlFor:c,className:`text-input-label ${S.labelStateClassName(r)} ${p}`,children:[l,y?" *":""]}),!!C&&d.jsx("p",{className:`text-input-helper-text ${S.helperTextStateClassName(r)} ${_}`,children:C})]})}),ks=e=>{const{t}=S.useTranslation(),{children:s,handleSubmit:n,onSubmit:i,isLoading:r=!1,buttonEnd:a=!0,reset:c}=e;return d.jsxs("form",{className:"form-container",onSubmit:n(i),children:[s,d.jsxs("div",{className:`form-actions ${a?"end":""}`,children:[d.jsxs(S.Button,{type:"submit",color:"primary",variant:"submit",disabled:r,name:t("_accessibility:buttons.submit"),"aria-label":t("_accessibility:ariaLabels.submit"),children:[r?d.jsx(S.Loading,{color:"stroke-base",loaderClass:"!w-6 mt-1",strokeWidth:"6"}):null,t("_accessibility:buttons.submit")]}),d.jsx(S.Button,{type:"button",variant:"outlined",onClick:()=>c==null?void 0:c(),name:t("_accessibility:buttons.cancel"),"aria-label":t("_accessibility:ariaLabels.cancel"),children:t("_accessibility:buttons.cancel")})]})]})},_s=b.forwardRef(function(e,t){const{t:s}=S.useTranslation(),[n,i]=b.useState(!1);return d.jsx(S.TextInput,{...e,type:n?"text":"password",ref:t,children:d.jsx(ge,{type:"button",tabIndex:-1,"aria-label":s(n?"_accessibility:ariaLabels.hidePassword":"_accessibility:ariaLabels.showPassword"),className:"password-icon",onClick:()=>i(!n),icon:n?B.faEyeSlash:B.faEye})})}),Re=e=>{const{t}=S.useTranslation(),{title:s,children:n,handleClose:i,open:r=!1,containerClassName:a="",className:c="",animationClass:l="appear"}=e,g=b.useCallback(h=>{h.key==="Escape"&&r&&i()},[r,i]);b.useEffect(()=>(window.addEventListener("keydown",g),()=>{window.removeEventListener("keydown",g)}),[g]);const y=b.useCallback(h=>{h.target===h.currentTarget&&i()},[i]);return b.useEffect(()=>{const h=f=>{f?document.body.style.overflow="hidden":document.body.style.overflow="auto"};return h(r),()=>{h(!1)}},[r]),It.createPortal(d.jsx("div",{"aria-label":t("_accessibility:ariaLabels.closeDialog"),"aria-hidden":!r,onClick:y,className:`dialog-backdrop animated ${r?`opened ${l}`:"closed"} ${a}`,children:d.jsxs("div",{className:`dialog elevated animated ${r?`opened ${l}`:"closed"} ${c}`,children:[d.jsxs("div",{className:"dialog-header",children:[d.jsx("h3",{className:"dialog-title",children:s}),d.jsx(ge,{icon:B.faClose,disabled:!r,"aria-disabled":!r,onClick:i,className:"icon-button dialog-close-btn",name:t("_accessibility:buttons.closeDialog"),"aria-label":t("_accessibility:ariaLabels.closeDialog")})]}),n]})}),document.body)},Ue=e=>{const{primaryText:t,cancelText:s,onPrimaryClick:n,onCancel:i,isLoading:r=!1,disabled:a=!1,primaryType:c="submit",containerClassName:l="",primaryClassName:g="",alignEnd:y=!1,primaryName:h,primaryAriaLabel:f,cancelName:p,cancelAriaLabel:C}=e;return d.jsxs("div",{className:`dialog-actions ${y?"end":""} ${l}`,children:[d.jsxs(S.Button,{type:c,color:"primary",variant:"submit",className:g,disabled:a,onClick:n,name:h,"aria-label":f,children:[r?d.jsx(S.Loading,{color:"stroke-base",loaderClass:"!w-6 mt-1",strokeWidth:"6"}):null,t]}),d.jsx(S.Button,{type:"button",variant:"outlined",disabled:a,onClick:i,name:p,"aria-label":C,children:s})]})},Es=e=>{const{t}=S.useTranslation(),{children:s,handleSubmit:n,onSubmit:i,handleClose:r,isLoading:a=!1,buttonEnd:c=!0,...l}=e;return d.jsx(Re,{...l,handleClose:r,children:d.jsxs("form",{onSubmit:n(i),children:[d.jsx("div",{className:"form-container",children:s}),d.jsx(Ue,{primaryType:"submit",primaryText:t("_accessibility:buttons.submit"),cancelText:t("_accessibility:buttons.cancel"),onCancel:r,isLoading:a,disabled:a,primaryClassName:"dialog-form-primary",alignEnd:c,primaryName:t("_accessibility:buttons.submit"),primaryAriaLabel:t("_accessibility:ariaLabels.submit"),cancelName:t("_accessibility:buttons.cancel"),cancelAriaLabel:t("_accessibility:ariaLabels.cancel")})]})})},As=e=>{const{t}=S.useTranslation(),{children:s,handleSubmit:n,handleClose:i,isLoading:r=!1,...a}=e;return d.jsxs(Re,{...a,handleClose:i,children:[s,d.jsx(Ue,{primaryText:t("_accessibility:buttons.ok"),cancelText:t("_accessibility:buttons.cancel"),onPrimaryClick:n,onCancel:i,isLoading:r,disabled:r,primaryType:"button",containerClassName:"mt-5",primaryName:t("_accessibility:buttons.ok"),primaryAriaLabel:t("_accessibility:ariaLabels.ok"),cancelName:t("_accessibility:buttons.cancel"),cancelAriaLabel:t("_accessibility:ariaLabels.cancel")})]})};function Ts(e){const{message:t,className:s=""}=e,{t:n}=S.useTranslation();return d.jsx("p",{className:`import-error-message ${s}`,children:t??n("_messages:errors.parseFile",{defaultValue:"Failed to process file"})})}function Ns(e){const{message:t,className:s=""}=e,{t:n}=S.useTranslation();return d.jsxs("div",{className:`import-loading ${s}`,children:[d.jsx(S.Loading,{loaderClass:"w-5 h-5",className:"!w-auto"}),d.jsx("span",{children:t??n("_messages:loading.processingFile",{defaultValue:"Processing file..."})})]})}function Fs(e){const{items:t,max:s=5,className:n=""}=e,{t:i}=S.useTranslation();if(!t||t.length===0)return null;const r=t.slice(0,s);return d.jsxs("div",{className:`import-preview ${n}`,children:[d.jsx("p",{className:"import-preview-count",children:i("_pages:common.actions.import.previewCount",{count:t.length,defaultValue:`Preview: ${t.length} items`})}),d.jsx("pre",{className:"import-preview-content",children:JSON.stringify(r,null,2)})]})}const Pt=()=>({file:null,previewItems:null,parseError:null,processing:!1,overrideExisting:!1,inputKey:0});function js(e,t){switch(t.type){case"SET_FILE":return{...e,file:t.file,previewItems:null,parseError:null,processing:!1};case"START_PROCESSING":return{...e,processing:!0};case"SET_PREVIEW":return{...e,previewItems:t.items,parseError:null,processing:!1};case"SET_ERROR":return{...e,previewItems:null,parseError:t.message,processing:!1};case"SET_OVERRIDE":return{...e,overrideExisting:t.value};case"RESET":return{...Pt(),inputKey:e.inputKey+1}}}const Ds=e=>{const{t}=S.useTranslation(),{children:s,handleSubmit:n,handleClose:i,isLoading:r=!1,fileProcessor:a,onFileProcessed:c,onOverrideChange:l,open:g,...y}=e,[h,f]=b.useReducer(js,Pt()),{file:p,previewItems:C,parseError:_,processing:A,overrideExisting:q,inputKey:T}=h,D=b.useRef(c),F=b.useRef(a);b.useEffect(()=>{D.current=c},[c]),b.useEffect(()=>{F.current=a},[a]),b.useEffect(()=>{g||f({type:"RESET"})},[g]);const N=b.useCallback(async($,P)=>{var te;if(F.current){f({type:"START_PROCESSING"});try{const V=await F.current($,{override:P});f({type:"SET_PREVIEW",items:V??[]}),(te=D.current)==null||te.call(D,V??[])}catch(V){console.error(V);const se=V instanceof Error?V.message:"Failed to parse file";f({type:"SET_ERROR",message:se})}}},[]);return d.jsxs(Re,{...y,open:g,handleClose:i,children:[d.jsx(S.FileInput,{onClear:()=>{var $;f({type:"SET_FILE",file:null}),($=D.current)==null||$.call(D,[])},onChange:$=>{var te,V;const P=(te=$.target.files)==null?void 0:te[0];if(!P){f({type:"SET_FILE",file:null}),(V=D.current)==null||V.call(D,[]);return}f({type:"SET_FILE",file:P}),N(P,q)},label:t("_accessibility:labels.file")},T),d.jsxs("label",{className:"import-override-label",children:[d.jsx("input",{type:"checkbox",checked:q,onChange:$=>{const P=$.target.checked;f({type:"SET_OVERRIDE",value:P}),l==null||l(P),p&&N(p,P)}}),d.jsx("span",{children:t("_pages:common.actions.import.override",{defaultValue:"Override existing items"})})]}),d.jsx(Ts,{message:_}),A&&d.jsx(Ns,{}),!!C&&C.length>0&&d.jsx(Fs,{items:C}),s,d.jsx(Ue,{primaryText:t("_accessibility:buttons.ok"),cancelText:t("_accessibility:buttons.cancel"),onPrimaryClick:()=>{(!a||!!C&&C.length>0)&&n()},onCancel:i,isLoading:r,primaryType:"button",containerClassName:"import-dialog-actions",primaryName:t("_accessibility:buttons.ok"),primaryAriaLabel:t("_accessibility:ariaLabels.ok"),cancelName:t("_accessibility:buttons.cancel"),cancelAriaLabel:t("_accessibility:ariaLabels.cancel")})]})};var W=(e=>(e[e.success=0]="success",e[e.error=1]="error",e[e.warning=2]="warning",e[e.info=3]="info",e))(W||{}),Z=(e=>(e.GET="GET",e.POST="POST",e.PUT="PUT",e.PATCH="PATCH",e.DELETE="DELETE",e))(Z||{});async function ke(e,t="GET",s,n){const i={...s?{"Content-Type":"application/json"}:{},...n};try{const r=await fetch(e,{method:t,headers:i,...s?{body:JSON.stringify(s)}:{}}),a=await r.text();let c=null;try{c=a?JSON.parse(a):null}catch{c=null}if(!r.ok){const l=typeof c=="object"&&c!==null?c.message??c.error??a:a||r.statusText;return{data:null,status:r.status,error:{status:r.status,message:l||"Unknown error occurred"}}}return{data:r.status!==204&&c!==null?c:null,status:r.status,error:null}}catch(r){return{data:null,status:500,error:{status:500,message:r instanceof Error?r.message:"Unknown error occurred"}}}}function Mt(e,t){if(t){const s=Object.entries(t).filter(([,n])=>n!=null).map(([n,i])=>`${encodeURIComponent(n)}=${encodeURIComponent(String(i))}`).join("&");return s?`${e}?${s}`:e}return e}const tt=(e,t,s)=>{const n=[];if(t){const{sortingBy:i,sortingOrder:r,currentPage:a,pageSize:c}=t;n.push(`sort=${String(i)}`,`order=${r}`,`page=${a}`,`pageSize=${c}`)}if(s){const i=Object.entries(s).filter(([,r])=>r!=null&&r!=="").flatMap(([r,a])=>{if(Array.isArray(a))return a.map(c=>`${r}==${encodeURIComponent((c==null?void 0:c.id)??c)}`);if(typeof a=="object"&&a!==null&&"start"in a&&"end"in a){const c=[];return a.start!=null&&a.start!==""&&c.push(`${r}>=${encodeURIComponent(a.start)}`),a.end!=null&&a.end!==""&&c.push(`${r}<=${encodeURIComponent(a.end)}`),c}return typeof a=="object"&&a!==null?`${r}==${encodeURIComponent(a.id??"")}`:`${r}==${encodeURIComponent(a)}`});i.length>0&&n.push(`filters=${i.join(",")}`)}return n.length?`${e}?${n.join("&")}`:e};class st{constructor(t,s="user",n=!0,i){ue(this,"baseUrl");ue(this,"userKey");ue(this,"secured");ue(this,"tokenAcquirer");this.baseUrl=t,this.secured=n,this.userKey=s,this.tokenAcquirer=i??this.defaultTokenAcquirer}defaultTokenAcquirer(t){if(t)return{credentials:"include"};const s=rt(this.userKey);if(s&&s.length)return{Authorization:`Bearer ${s}`}}async doQuery(t,s=Z.GET,n,i){const r=this.secured?this.tokenAcquirer():{},{data:a,status:c,error:l}=await ke(`${this.baseUrl}${t}`,s,n,{...r,...i??{}});if(l||c<200||c>=300)throw l??{status:c,message:String(c)};return a}async get(t,s,n){const i=tt(t,s,n),r=this.secured?this.tokenAcquirer():void 0,{data:a,error:c}=await ke(`${this.baseUrl}${i}`,Z.GET,null,r);if(c)throw c;return a}async patch(t,s){const n=this.secured?this.tokenAcquirer():void 0,{error:i,data:r,status:a}=await ke(`${this.baseUrl}${t}`,Z.PATCH,s,n);if(i||!r)throw i??{status:a,message:"Unknown error"};return r}async delete(t,s){const n=this.secured?this.tokenAcquirer():void 0,{error:i,data:r,status:a}=await ke(`${this.baseUrl}${t}`,Z.DELETE,s,n);if(i||!r)throw i??{status:a,message:"Unknown error"};return r}async post(t,s){const n=this.secured?this.tokenAcquirer():void 0,{error:i,data:r,status:a}=await ke(`${this.baseUrl}${t}`,Z.POST,s,n);if(i||!r)throw i??{status:a,message:"Unknown error"};return r}}class Ot{constructor(t,s="user"){ue(this,"api");this.api=new st(t,s,!1)}async login(t){const s="auth/sign-in",n=t;return await this.api.doQuery(s,Z.POST,n)}async logout(){return await this.api.doQuery("auth/sign-out",Z.POST)}async register(t){return await this.api.doQuery("auth/sign-up",Z.POST,t)}async getSession(){return await this.api.doQuery("auth/session",Z.GET,null,{...this.api.defaultTokenAcquirer()})}}class Ls{constructor(t,s){ue(this,"auth");this.auth=new Ot(t,s)}get Auth(){return this.auth}}class $s{constructor(t,s,n="user",i=!0){ue(this,"table");ue(this,"secured");ue(this,"api");this.table=t,this.secured=i,this.api=new st(s,n,i)}async insert(t){return await this.api.post(`${this.table}`,t)}async insertMany(t){return await this.api.doQuery(`${this.table}/batch`,Z.POST,t)}async update(t){return await this.api.patch(`${this.table}/${t.id}`,t)}async get(t,s){return await this.api.get(`${this.table}`,t,s)}async export(t){const s=tt(`${this.table}/export`,void 0,t);return await this.api.doQuery(s,Z.GET,void 0)}async import(t){return await this.api.doQuery(`${this.table}/import`,Z.POST,t)}async commonGet(t){return await this.api.doQuery(Mt(`${this.table}/common`,t),Z.GET)}async getById(t){return await this.api.doQuery(`${this.table}/${t}`)}async softDelete(t){return await this.api.delete(`${this.table}`,t)}async restore(t){return await this.api.patch(`${this.table}/restore`,t)}}function Vs(e){return Object.keys(e).filter(t=>isNaN(Number(t))).map(t=>({key:t,value:e[t]}))}const rt=(e,t="")=>{const s=localStorage.getItem(e)??void 0;if(s&&t.length)switch(t){case"object":return JSON.parse(s);case"number":return Number(s);case"boolean":return s==="true"||s==="1";default:return s}return s},Ye=(e,t)=>localStorage.setItem(e,typeof t=="object"?JSON.stringify(t):t),Xe=e=>localStorage.removeItem(e);function Ze(e){const t=e?new Date(e):new Date,s={weekday:"long",day:"numeric",month:"long",year:"numeric",hour:"numeric",minute:"2-digit",hour12:!0};return t.toLocaleString(navigator.language||"es-ES",s)}function Rt(e){const t=e?new Date(e):new Date,s=String(t.getDate()).padStart(2,"0"),n=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getFullYear()).slice(-2),r=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${s}/${n}/${i} ${r}:${a}`}function Is(e){const t=e?new Date(e):new Date,s=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),r=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${s}-${n}-${i}T${r}:${a}`}const Ut=()=>{var s;const e=navigator,t=((s=e==null?void 0:e.userAgentData)==null?void 0:s.platform)||(e==null?void 0:e.platform)||"";return/Mac|iPhone|iPod|iPad/i.test(t)};function Fe(e){if(!e||typeof e!="object")return!1;const t=e;return Array.isArray(t.errors)&&t.errors.every(s=>Array.isArray(s)&&s.length===2&&typeof s[0]=="string")}function je(e){if(!e||typeof e!="object")return!1;const t=e;return typeof(t==null?void 0:t.status)=="number"&&typeof(t==null?void 0:t.message)=="string"}function Ps(e,t){return e!=null&&e.errors?e.errors.map(([s,n])=>t(s,n)):[]}const qt=b.createContext({});function Ms(e){const{children:t}=e,s=b.useRef(0),[n,i]=b.useReducer((h,f)=>{const{type:p,items:C,id:_}=f;switch(p){case"set":return C??[];case"remove":return _!==void 0?h.filter(A=>A.id!==_):[]}return h},[],()=>[]),r=h=>h.map(f=>({...f,id:s.current++})),a=h=>i({type:"set",items:r([{...h,type:W.error}])}),c=h=>i({type:"set",items:r([{...h}])}),l=h=>i({type:"set",items:r(h)}),g=h=>i({type:"set",items:r([{...h,type:W.success}])}),y=h=>i({type:"remove",id:h});return d.jsx(qt.Provider,{value:{notification:n,removeNotification:y,showErrorNotification:a,showNotification:c,showSuccessNotification:g,showStackNotifications:l},children:t})}const xe=()=>{const e=b.useContext(qt);if(e===void 0)throw new Error("NotificationContext must be used within a Provider");return e},me=new we.QueryClient({defaultOptions:{queries:{refetchInterval:!1,refetchOnMount:!0,refetchOnReconnect:!1,retry:!1,retryOnMount:!0,refetchOnWindowFocus:!1}}}),Bt=b.createContext(void 0),Os=e=>{const{children:t,manager:s}=e;return d.jsx(Bt.Provider,{value:{client:s},children:d.jsx(we.QueryClientProvider,{client:me,children:t})})},Ht=()=>{const e=b.useContext(Bt);if(!e)throw new Error("managerContext must be used within a Provider");return e.client},Qt=b.createContext(void 0),Rs=e=>{const{children:t,guestMode:s="guest_mode",user:n="user"}=e,i=Ht(),[r,a]=b.useState({}),c=b.useCallback(()=>!!rt(s,"boolean")&&r.token===void 0,[r.token,s]),l=b.useCallback(p=>{Ye(s,p)},[s]),g=b.useCallback(p=>{p&&(a(p),Xe(s),Ye(n,p.token))},[s,n]),y=b.useCallback(async()=>{try{await i.Auth.logout()}catch(p){console.error(p)}a({}),Xe(n)},[i.Auth,n]),h=b.useCallback(async()=>{try{const p=await i.Auth.getSession();g(p)}catch(p){console.error(p),y()}},[g,y,i.Auth]),f={account:r,logUser:g,logoutUser:y,logUserFromLocal:h,isInGuestMode:c,setGuestMode:l};return d.jsx(Qt.Provider,{value:f,children:t})},nt=()=>{const e=b.useContext(Qt);if(!e)throw new Error("authContext must be used within a Provider");return e},Kt=b.createContext({}),Us=e=>{const{children:t,location:s,navigate:n,linkComponent:i,searchComponent:r}=e;return d.jsx(Kt.Provider,{value:{location:s,navigate:n,linkComponent:i,searchComponent:r},children:t})},_e=()=>{const e=b.useContext(Kt);if(e===void 0||Object.keys(e).length===0)throw new Error("Config provider has not been set. This step is required and cannot be skipped.");return e},it=b.createContext({}),qs=e=>{const{children:t}=e,[s,n]=b.useState({}),i=b.useCallback((l,g)=>n(y=>({...y,[l]:[...y[l]??[],g]})),[]),r=b.useCallback((l,g)=>n(y=>({...y,[l]:(y[l]??[]).filter((h,f)=>f!==g)})),[]),a=b.useCallback(l=>{n(l?g=>({...g,[l]:[]}):{})},[]),c=b.useMemo(()=>({dynamicItems:s,addChildItem:i,removeChildItem:r,clearDynamicItems:a}),[s,a,r,i]);return d.jsx(it.Provider,{value:c,children:t})},Wt=()=>b.useContext(it);function Bs(e){const{t}=S.useTranslation(),{open:s,onClose:n,menuMap:i,logo:r}=e,{account:a}=nt(),{dynamicItems:c}=Wt(),{linkComponent:l,location:g}=_e(),y=l,h=b.useMemo(()=>i.filter(A=>{const q=A.auth,T=!!(a!=null&&a.email);return q==null||q&&T||!q&&!T}),[a==null?void 0:a.email,i]),f=b.useCallback(A=>{A.key==="Escape"&&s&&n()},[n,s]);b.useEffect(()=>(document.addEventListener("keydown",f),()=>{document.removeEventListener("keydown",f)}),[f]);const p=b.useCallback((A,q)=>q?A===`${g.pathname}${g.search}`:A===g.pathname,[g.pathname,g.search]),C=b.useCallback(A=>d.jsx("li",{className:`drawer-list-item-child ${p(A.path,!0)?"active":""} animated`,children:A.path?d.jsx(y,{tabIndex:s?0:-1,to:A.path??"/","aria-label":t(`_accessibility:ariaLabels.${A.id}`,{defaultValue:A.label}),className:"drawer-link",children:A.label}):A.label},A.id),[y,s,t,p]),_=b.useMemo(()=>h.map((A,q)=>{const T=A.page??String(q),D=`drawer-list-item ${p(A.path)?"active":""} animated`;if(A.type==="divider")return d.jsx("li",{className:D,children:d.jsx("hr",{className:"drawer-divider"})},T);const F=A.children??(A.page&&c?c[A.page]:null);return d.jsxs("li",{className:D,children:[d.jsxs(y,{tabIndex:s?0:-1,to:A.path??"/","aria-label":t(`_accessibility:ariaLabels.${String(A.page)}`,{defaultValue:t(`_pages:${String(A.page)}.title`)}),className:"drawer-link",children:[A.icon,t(`_pages:${A.page}.title`)]}),F&&d.jsx("ul",{className:"drawer-children-list",children:F.map(C)})]},T)}),[y,c,p,s,h,C,t]);return d.jsx("div",{"aria-label":t("_accessibility:ariaLabels.closeMenu"),"aria-disabled":!s,className:`${s?"opened":"closed"} drawer-backdrop`,onClick:()=>n(),children:d.jsxs("aside",{className:`${s?"opened":"closed"} drawer animated`,children:[d.jsxs("div",{className:"drawer-header-container",children:[r,d.jsx("h2",{className:"drawer-header poppins",children:t("_pages:home.appName")})]}),d.jsx("ul",{className:"drawer-menu-list",children:_})]})})}function Hs(e){const{error:t,resetErrorBoundary:s}=e,{t:n}=S.useTranslation();return d.jsxs("div",{className:"error-container",children:[d.jsx(ae.FontAwesomeIcon,{icon:Cs.faSadTear,className:"error-icon"}),d.jsx("p",{className:"error-message",children:(t==null?void 0:t.message)??n("_accessibility:errors.unknownError")}),s&&d.jsx("button",{className:"error-retry",onClick:s,children:n("_accessibility:actions.retry",{defaultValue:"Retry"})})]})}function Qs(){const{t:e,language:t}=S.useTranslation();return{timeAge:b.useCallback(n=>{const r=new Date-n,a=Math.floor(r/(1e3*60)),c=Math.floor(a/60),l=t==="es",g=e("_accessibility:labels.ago"),y=e("_accessibility:labels.minute"),h=e("_accessibility:labels.minutes"),f=e("_accessibility:labels.hour"),p=e("_accessibility:labels.hours"),C=e("_accessibility:labels.yesterday"),_=e("_accessibility:labels.justNow");return r<1e3*60?_:a<60?`${l?g:""} ${a} ${a===1?y:h} ${l?"":g}`:c<24?`${l?g:""} ${c} ${c===1?f:p} ${l?"":g}`:c<48?C:n.toLocaleDateString(navigator.language||"es-ES",{day:"2-digit",month:"2-digit",year:"numeric"})},[e,t])}}const at=e=>{const{showSuccessNotification:t}=xe(),{mutationFn:s,onError:n,onSuccess:i,onSuccessMessage:r}=e,[a,c]=b.useState([]),{open:l,handleClose:g,handleOpen:y}=ft(),h=()=>{g(),c([])},f=async C=>{c(C),y()},p=we.useMutation({mutationFn:()=>s(Array.isArray(a)?a:[a]),onError:C=>{console.error(C),n&&n(C),h()},onSuccess:async C=>{i&&i(C),t({message:r}),h()}});return{open:l,onClick:f,close:h,dialogFn:p,isLoading:p.isPending}};var De=e=>e.type==="checkbox",Ce=e=>e instanceof Date,X=e=>e==null;const Gt=e=>typeof e=="object";var H=e=>!X(e)&&!Array.isArray(e)&&Gt(e)&&!Ce(e),Ks=e=>H(e)&&e.target?De(e.target)?e.target.checked:e.target.value:e,Ws=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,Gs=(e,t)=>e.has(Ws(t)),Js=e=>{const t=e.constructor&&e.constructor.prototype;return H(t)&&t.hasOwnProperty("isPrototypeOf")},ot=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function J(e){let t;const s=Array.isArray(e),n=typeof FileList<"u"?e instanceof FileList:!1;if(e instanceof Date)t=new Date(e);else if(!(ot&&(e instanceof Blob||n))&&(s||H(e)))if(t=s?[]:{},!s&&!Js(e))t=e;else for(const i in e)e.hasOwnProperty(i)&&(t[i]=J(e[i]));else return e;return t}var qe=e=>/^\w*$/.test(e),K=e=>e===void 0,ct=e=>Array.isArray(e)?e.filter(Boolean):[],lt=e=>ct(e.replace(/["|']|\]/g,"").split(/\.|\[/)),k=(e,t,s)=>{if(!t||!H(e))return s;const n=(qe(t)?[t]:lt(t)).reduce((i,r)=>X(i)?i:i[r],e);return K(n)||n===e?K(e[t])?s:e[t]:n},de=e=>typeof e=="boolean",R=(e,t,s)=>{let n=-1;const i=qe(t)?[t]:lt(t),r=i.length,a=r-1;for(;++n<r;){const c=i[n];let l=s;if(n!==a){const g=e[c];l=H(g)||Array.isArray(g)?g:isNaN(+i[n+1])?{}:[]}if(c==="__proto__"||c==="constructor"||c==="prototype")return;e[c]=l,e=e[c]}};const St={BLUR:"blur",FOCUS_OUT:"focusout"},ce={onBlur:"onBlur",onChange:"onChange",onSubmit:"onSubmit",onTouched:"onTouched",all:"all"},he={max:"max",min:"min",maxLength:"maxLength",minLength:"minLength",pattern:"pattern",required:"required",validate:"validate"},zs=b.createContext(null);zs.displayName="HookFormContext";var Ys=(e,t,s,n=!0)=>{const i={defaultValues:t._defaultValues};for(const r in e)Object.defineProperty(i,r,{get:()=>{const a=r;return t._proxyFormState[a]!==ce.all&&(t._proxyFormState[a]=!n||ce.all),e[a]}});return i};const Xs=typeof window<"u"?b.useLayoutEffect:b.useEffect;var fe=e=>typeof e=="string",Zs=(e,t,s,n,i)=>fe(e)?(n&&t.watch.add(e),k(s,e,i)):Array.isArray(e)?e.map(r=>(n&&t.watch.add(r),k(s,r))):(n&&(t.watchAll=!0),s),et=e=>X(e)||!Gt(e);function pe(e,t,s=new WeakSet){if(et(e)||et(t))return e===t;if(Ce(e)&&Ce(t))return e.getTime()===t.getTime();const n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;if(s.has(e)||s.has(t))return!0;s.add(e),s.add(t);for(const r of n){const a=e[r];if(!i.includes(r))return!1;if(r!=="ref"){const c=t[r];if(Ce(a)&&Ce(c)||H(a)&&H(c)||Array.isArray(a)&&Array.isArray(c)?!pe(a,c,s):a!==c)return!1}}return!0}var er=(e,t,s,n,i)=>t?{...s[e],types:{...s[e]&&s[e].types?s[e].types:{},[n]:i||!0}}:{},Te=e=>Array.isArray(e)?e:[e],kt=()=>{let e=[];return{get observers(){return e},next:i=>{for(const r of e)r.next&&r.next(i)},subscribe:i=>(e.push(i),{unsubscribe:()=>{e=e.filter(r=>r!==i)}}),unsubscribe:()=>{e=[]}}},ee=e=>H(e)&&!Object.keys(e).length,ut=e=>e.type==="file",le=e=>typeof e=="function",Pe=e=>{if(!ot)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},Jt=e=>e.type==="select-multiple",dt=e=>e.type==="radio",tr=e=>dt(e)||De(e),Ge=e=>Pe(e)&&e.isConnected;function sr(e,t){const s=t.slice(0,-1).length;let n=0;for(;n<s;)e=K(e)?n++:e[t[n++]];return e}function rr(e){for(const t in e)if(e.hasOwnProperty(t)&&!K(e[t]))return!1;return!0}function Q(e,t){const s=Array.isArray(t)?t:qe(t)?[t]:lt(t),n=s.length===1?e:sr(e,s),i=s.length-1,r=s[i];return n&&delete n[r],i!==0&&(H(n)&&ee(n)||Array.isArray(n)&&rr(n))&&Q(e,s.slice(0,-1)),e}var zt=e=>{for(const t in e)if(le(e[t]))return!0;return!1};function Me(e,t={}){const s=Array.isArray(e);if(H(e)||s)for(const n in e)Array.isArray(e[n])||H(e[n])&&!zt(e[n])?(t[n]=Array.isArray(e[n])?[]:{},Me(e[n],t[n])):X(e[n])||(t[n]=!0);return t}function Yt(e,t,s){const n=Array.isArray(e);if(H(e)||n)for(const i in e)Array.isArray(e[i])||H(e[i])&&!zt(e[i])?K(t)||et(s[i])?s[i]=Array.isArray(e[i])?Me(e[i],[]):{...Me(e[i])}:Yt(e[i],X(t)?{}:t[i],s[i]):s[i]=!pe(e[i],t[i]);return s}var Ee=(e,t)=>Yt(e,t,Me(t));const _t={value:!1,isValid:!1},Et={value:!0,isValid:!0};var Xt=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(s=>s&&s.checked&&!s.disabled).map(s=>s.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!K(e[0].attributes.value)?K(e[0].value)||e[0].value===""?Et:{value:e[0].value,isValid:!0}:Et:_t}return _t},Zt=(e,{valueAsNumber:t,valueAsDate:s,setValueAs:n})=>K(e)?e:t?e===""?NaN:e&&+e:s&&fe(e)?new Date(e):n?n(e):e;const At={isValid:!1,value:null};var es=e=>Array.isArray(e)?e.reduce((t,s)=>s&&s.checked&&!s.disabled?{isValid:!0,value:s.value}:t,At):At;function Tt(e){const t=e.ref;return ut(t)?t.files:dt(t)?es(e.refs).value:Jt(t)?[...t.selectedOptions].map(({value:s})=>s):De(t)?Xt(e.refs).value:Zt(K(t.value)?e.ref.value:t.value,e)}var nr=(e,t,s,n)=>{const i={};for(const r of e){const a=k(t,r);a&&R(i,r,a._f)}return{criteriaMode:s,names:[...e],fields:i,shouldUseNativeValidation:n}},Oe=e=>e instanceof RegExp,Ae=e=>K(e)?e:Oe(e)?e.source:H(e)?Oe(e.value)?e.value.source:e.value:e,Nt=e=>({isOnSubmit:!e||e===ce.onSubmit,isOnBlur:e===ce.onBlur,isOnChange:e===ce.onChange,isOnAll:e===ce.all,isOnTouch:e===ce.onTouched});const Ft="AsyncFunction";var ir=e=>!!e&&!!e.validate&&!!(le(e.validate)&&e.validate.constructor.name===Ft||H(e.validate)&&Object.values(e.validate).find(t=>t.constructor.name===Ft)),ar=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),jt=(e,t,s)=>!s&&(t.watchAll||t.watch.has(e)||[...t.watch].some(n=>e.startsWith(n)&&/^\.\w+/.test(e.slice(n.length))));const Ne=(e,t,s,n)=>{for(const i of s||Object.keys(e)){const r=k(e,i);if(r){const{_f:a,...c}=r;if(a){if(a.refs&&a.refs[0]&&t(a.refs[0],i)&&!n)return!0;if(a.ref&&t(a.ref,a.name)&&!n)return!0;if(Ne(c,t))break}else if(H(c)&&Ne(c,t))break}}};function Dt(e,t,s){const n=k(e,s);if(n||qe(s))return{error:n,name:s};const i=s.split(".");for(;i.length;){const r=i.join("."),a=k(t,r),c=k(e,r);if(a&&!Array.isArray(a)&&s!==r)return{name:s};if(c&&c.type)return{name:r,error:c};if(c&&c.root&&c.root.type)return{name:`${r}.root`,error:c.root};i.pop()}return{name:s}}var or=(e,t,s,n)=>{s(e);const{name:i,...r}=e;return ee(r)||Object.keys(r).length>=Object.keys(t).length||Object.keys(r).find(a=>t[a]===(!n||ce.all))},cr=(e,t,s)=>!e||!t||e===t||Te(e).some(n=>n&&(s?n===t:n.startsWith(t)||t.startsWith(n))),lr=(e,t,s,n,i)=>i.isOnAll?!1:!s&&i.isOnTouch?!(t||e):(s?n.isOnBlur:i.isOnBlur)?!e:(s?n.isOnChange:i.isOnChange)?e:!0,ur=(e,t)=>!ct(k(e,t)).length&&Q(e,t),dr=(e,t,s)=>{const n=Te(k(e,s));return R(n,"root",t[s]),R(e,s,n),e},Ie=e=>fe(e);function Lt(e,t,s="validate"){if(Ie(e)||Array.isArray(e)&&e.every(Ie)||de(e)&&!e)return{type:s,message:Ie(e)?e:"",ref:t}}var Se=e=>H(e)&&!Oe(e)?e:{value:e,message:""},$t=async(e,t,s,n,i,r)=>{const{ref:a,refs:c,required:l,maxLength:g,minLength:y,min:h,max:f,pattern:p,validate:C,name:_,valueAsNumber:A,mount:q}=e._f,T=k(s,_);if(!q||t.has(_))return{};const D=c?c[0]:a,F=j=>{i&&D.reportValidity&&(D.setCustomValidity(de(j)?"":j||""),D.reportValidity())},N={},$=dt(a),P=De(a),te=$||P,V=(A||ut(a))&&K(a.value)&&K(T)||Pe(a)&&a.value===""||T===""||Array.isArray(T)&&!T.length,se=er.bind(null,_,n,N),ne=(j,L,U,G=he.maxLength,z=he.minLength)=>{const M=j?L:U;N[_]={type:j?G:z,message:M,ref:a,...se(j?G:z,M)}};if(r?!Array.isArray(T)||!T.length:l&&(!te&&(V||X(T))||de(T)&&!T||P&&!Xt(c).isValid||$&&!es(c).isValid)){const{value:j,message:L}=Ie(l)?{value:!!l,message:l}:Se(l);if(j&&(N[_]={type:he.required,message:L,ref:D,...se(he.required,L)},!n))return F(L),N}if(!V&&(!X(h)||!X(f))){let j,L;const U=Se(f),G=Se(h);if(!X(T)&&!isNaN(T)){const z=a.valueAsNumber||T&&+T;X(U.value)||(j=z>U.value),X(G.value)||(L=z<G.value)}else{const z=a.valueAsDate||new Date(T),M=oe=>new Date(new Date().toDateString()+" "+oe),Y=a.type=="time",re=a.type=="week";fe(U.value)&&T&&(j=Y?M(T)>M(U.value):re?T>U.value:z>new Date(U.value)),fe(G.value)&&T&&(L=Y?M(T)<M(G.value):re?T<G.value:z<new Date(G.value))}if((j||L)&&(ne(!!j,U.message,G.message,he.max,he.min),!n))return F(N[_].message),N}if((g||y)&&!V&&(fe(T)||r&&Array.isArray(T))){const j=Se(g),L=Se(y),U=!X(j.value)&&T.length>+j.value,G=!X(L.value)&&T.length<+L.value;if((U||G)&&(ne(U,j.message,L.message),!n))return F(N[_].message),N}if(p&&!V&&fe(T)){const{value:j,message:L}=Se(p);if(Oe(j)&&!T.match(j)&&(N[_]={type:he.pattern,message:L,ref:a,...se(he.pattern,L)},!n))return F(L),N}if(C){if(le(C)){const j=await C(T,s),L=Lt(j,D);if(L&&(N[_]={...L,...se(he.validate,L.message)},!n))return F(L.message),N}else if(H(C)){let j={};for(const L in C){if(!ee(j)&&!n)break;const U=Lt(await C[L](T,s),D,L);U&&(j={...U,...se(L,U.message)},F(U.message),n&&(N[_]=j))}if(!ee(j)&&(N[_]={ref:D,...j},!n))return N}}return F(!0),N};const fr={mode:ce.onSubmit,reValidateMode:ce.onChange,shouldFocusError:!0};function mr(e={}){let t={...fr,...e},s={submitCount:0,isDirty:!1,isReady:!1,isLoading:le(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},n={},i=H(t.defaultValues)||H(t.values)?J(t.defaultValues||t.values)||{}:{},r=t.shouldUnregister?{}:J(i),a={action:!1,mount:!1,watch:!1},c={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},l,g=0;const y={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1};let h={...y};const f={array:kt(),state:kt()},p=t.criteriaMode===ce.all,C=o=>u=>{clearTimeout(g),g=setTimeout(o,u)},_=async o=>{if(!t.disabled&&(y.isValid||h.isValid||o)){const u=t.resolver?ee((await P()).errors):await V(n,!0);u!==s.isValid&&f.state.next({isValid:u})}},A=(o,u)=>{!t.disabled&&(y.isValidating||y.validatingFields||h.isValidating||h.validatingFields)&&((o||Array.from(c.mount)).forEach(m=>{m&&(u?R(s.validatingFields,m,u):Q(s.validatingFields,m))}),f.state.next({validatingFields:s.validatingFields,isValidating:!ee(s.validatingFields)}))},q=(o,u=[],m,v,x=!0,w=!0)=>{if(v&&m&&!t.disabled){if(a.action=!0,w&&Array.isArray(k(n,o))){const E=m(k(n,o),v.argA,v.argB);x&&R(n,o,E)}if(w&&Array.isArray(k(s.errors,o))){const E=m(k(s.errors,o),v.argA,v.argB);x&&R(s.errors,o,E),ur(s.errors,o)}if((y.touchedFields||h.touchedFields)&&w&&Array.isArray(k(s.touchedFields,o))){const E=m(k(s.touchedFields,o),v.argA,v.argB);x&&R(s.touchedFields,o,E)}(y.dirtyFields||h.dirtyFields)&&(s.dirtyFields=Ee(i,r)),f.state.next({name:o,isDirty:ne(o,u),dirtyFields:s.dirtyFields,errors:s.errors,isValid:s.isValid})}else R(r,o,u)},T=(o,u)=>{R(s.errors,o,u),f.state.next({errors:s.errors})},D=o=>{s.errors=o,f.state.next({errors:s.errors,isValid:!1})},F=(o,u,m,v)=>{const x=k(n,o);if(x){const w=k(r,o,K(m)?k(i,o):m);K(w)||v&&v.defaultChecked||u?R(r,o,u?w:Tt(x._f)):U(o,w),a.mount&&_()}},N=(o,u,m,v,x)=>{let w=!1,E=!1;const I={name:o};if(!t.disabled){if(!m||v){(y.isDirty||h.isDirty)&&(E=s.isDirty,s.isDirty=I.isDirty=ne(),w=E!==I.isDirty);const O=pe(k(i,o),u);E=!!k(s.dirtyFields,o),O?Q(s.dirtyFields,o):R(s.dirtyFields,o,!0),I.dirtyFields=s.dirtyFields,w=w||(y.dirtyFields||h.dirtyFields)&&E!==!O}if(m){const O=k(s.touchedFields,o);O||(R(s.touchedFields,o,m),I.touchedFields=s.touchedFields,w=w||(y.touchedFields||h.touchedFields)&&O!==m)}w&&x&&f.state.next(I)}return w?I:{}},$=(o,u,m,v)=>{const x=k(s.errors,o),w=(y.isValid||h.isValid)&&de(u)&&s.isValid!==u;if(t.delayError&&m?(l=C(()=>T(o,m)),l(t.delayError)):(clearTimeout(g),l=null,m?R(s.errors,o,m):Q(s.errors,o)),(m?!pe(x,m):x)||!ee(v)||w){const E={...v,...w&&de(u)?{isValid:u}:{},errors:s.errors,name:o};s={...s,...E},f.state.next(E)}},P=async o=>{A(o,!0);const u=await t.resolver(r,t.context,nr(o||c.mount,n,t.criteriaMode,t.shouldUseNativeValidation));return A(o),u},te=async o=>{const{errors:u}=await P(o);if(o)for(const m of o){const v=k(u,m);v?R(s.errors,m,v):Q(s.errors,m)}else s.errors=u;return u},V=async(o,u,m={valid:!0})=>{for(const v in o){const x=o[v];if(x){const{_f:w,...E}=x;if(w){const I=c.array.has(w.name),O=x._f&&ir(x._f);O&&y.validatingFields&&A([v],!0);const ie=await $t(x,c.disabled,r,p,t.shouldUseNativeValidation&&!u,I);if(O&&y.validatingFields&&A([v]),ie[w.name]&&(m.valid=!1,u))break;!u&&(k(ie,w.name)?I?dr(s.errors,ie,w.name):R(s.errors,w.name,ie[w.name]):Q(s.errors,w.name))}!ee(E)&&await V(E,u,m)}}return m.valid},se=()=>{for(const o of c.unMount){const u=k(n,o);u&&(u._f.refs?u._f.refs.every(m=>!Ge(m)):!Ge(u._f.ref))&&Be(o)}c.unMount=new Set},ne=(o,u)=>!t.disabled&&(o&&u&&R(r,o,u),!pe(oe(),i)),j=(o,u,m)=>Zs(o,c,{...a.mount?r:K(u)?i:fe(o)?{[o]:u}:u},m,u),L=o=>ct(k(a.mount?r:i,o,t.shouldUnregister?k(i,o,[]):[])),U=(o,u,m={})=>{const v=k(n,o);let x=u;if(v){const w=v._f;w&&(!w.disabled&&R(r,o,Zt(u,w)),x=Pe(w.ref)&&X(u)?"":u,Jt(w.ref)?[...w.ref.options].forEach(E=>E.selected=x.includes(E.value)):w.refs?De(w.ref)?w.refs.forEach(E=>{(!E.defaultChecked||!E.disabled)&&(Array.isArray(x)?E.checked=!!x.find(I=>I===E.value):E.checked=x===E.value||!!x)}):w.refs.forEach(E=>E.checked=E.value===x):ut(w.ref)?w.ref.value="":(w.ref.value=x,w.ref.type||f.state.next({name:o,values:J(r)})))}(m.shouldDirty||m.shouldTouch)&&N(o,x,m.shouldTouch,m.shouldDirty,!0),m.shouldValidate&&re(o)},G=(o,u,m)=>{for(const v in u){if(!u.hasOwnProperty(v))return;const x=u[v],w=o+"."+v,E=k(n,w);(c.array.has(o)||H(x)||E&&!E._f)&&!Ce(x)?G(w,x,m):U(w,x,m)}},z=(o,u,m={})=>{const v=k(n,o),x=c.array.has(o),w=J(u);R(r,o,w),x?(f.array.next({name:o,values:J(r)}),(y.isDirty||y.dirtyFields||h.isDirty||h.dirtyFields)&&m.shouldDirty&&f.state.next({name:o,dirtyFields:Ee(i,r),isDirty:ne(o,w)})):v&&!v._f&&!X(w)?G(o,w,m):U(o,w,m),jt(o,c)&&f.state.next({...s,name:o}),f.state.next({name:a.mount?o:void 0,values:J(r)})},M=async o=>{a.mount=!0;const u=o.target;let m=u.name,v=!0;const x=k(n,m),w=O=>{v=Number.isNaN(O)||Ce(O)&&isNaN(O.getTime())||pe(O,k(r,m,O))},E=Nt(t.mode),I=Nt(t.reValidateMode);if(x){let O,ie;const $e=u.type?Tt(x._f):Ks(o),be=o.type===St.BLUR||o.type===St.FOCUS_OUT,bs=!ar(x._f)&&!t.resolver&&!k(s.errors,m)&&!x._f.deps||lr(be,k(s.touchedFields,m),s.isSubmitted,I,E),Ke=jt(m,c,be);R(r,m,$e),be?(x._f.onBlur&&x._f.onBlur(o),l&&l(0)):x._f.onChange&&x._f.onChange(o);const We=N(m,$e,be),ps=!ee(We)||Ke;if(!be&&f.state.next({name:m,type:o.type,values:J(r)}),bs)return(y.isValid||h.isValid)&&(t.mode==="onBlur"?be&&_():be||_()),ps&&f.state.next({name:m,...Ke?{}:We});if(!be&&Ke&&f.state.next({...s}),t.resolver){const{errors:xt}=await P([m]);if(w($e),v){const ws=Dt(s.errors,n,m),vt=Dt(xt,n,ws.name||m);O=vt.error,m=vt.name,ie=ee(xt)}}else A([m],!0),O=(await $t(x,c.disabled,r,p,t.shouldUseNativeValidation))[m],A([m]),w($e),v&&(O?ie=!1:(y.isValid||h.isValid)&&(ie=await V(n,!0)));v&&(x._f.deps&&re(x._f.deps),$(m,ie,O,We))}},Y=(o,u)=>{if(k(s.errors,u)&&o.focus)return o.focus(),1},re=async(o,u={})=>{let m,v;const x=Te(o);if(t.resolver){const w=await te(K(o)?o:x);m=ee(w),v=o?!x.some(E=>k(w,E)):m}else o?(v=(await Promise.all(x.map(async w=>{const E=k(n,w);return await V(E&&E._f?{[w]:E}:E)}))).every(Boolean),!(!v&&!s.isValid)&&_()):v=m=await V(n);return f.state.next({...!fe(o)||(y.isValid||h.isValid)&&m!==s.isValid?{}:{name:o},...t.resolver||!o?{isValid:m}:{},errors:s.errors}),u.shouldFocus&&!v&&Ne(n,Y,o?x:c.mount),v},oe=o=>{const u={...a.mount?r:i};return K(o)?u:fe(o)?k(u,o):o.map(m=>k(u,m))},Le=(o,u)=>({invalid:!!k((u||s).errors,o),isDirty:!!k((u||s).dirtyFields,o),error:k((u||s).errors,o),isValidating:!!k(s.validatingFields,o),isTouched:!!k((u||s).touchedFields,o)}),ve=o=>{o&&Te(o).forEach(u=>Q(s.errors,u)),f.state.next({errors:o?s.errors:{}})},mt=(o,u,m)=>{const v=(k(n,o,{_f:{}})._f||{}).ref,x=k(s.errors,o)||{},{ref:w,message:E,type:I,...O}=x;R(s.errors,o,{...O,...u,ref:v}),f.state.next({name:o,errors:s.errors,isValid:!1}),m&&m.shouldFocus&&v&&v.focus&&v.focus()},ds=(o,u)=>le(o)?f.state.subscribe({next:m=>"values"in m&&o(j(void 0,u),m)}):j(o,u,!0),gt=o=>f.state.subscribe({next:u=>{cr(o.name,u.name,o.exact)&&or(u,o.formState||y,ys,o.reRenderRoot)&&o.callback({values:{...r},...s,...u,defaultValues:i})}}).unsubscribe,fs=o=>(a.mount=!0,h={...h,...o.formState},gt({...o,formState:h})),Be=(o,u={})=>{for(const m of o?Te(o):c.mount)c.mount.delete(m),c.array.delete(m),u.keepValue||(Q(n,m),Q(r,m)),!u.keepError&&Q(s.errors,m),!u.keepDirty&&Q(s.dirtyFields,m),!u.keepTouched&&Q(s.touchedFields,m),!u.keepIsValidating&&Q(s.validatingFields,m),!t.shouldUnregister&&!u.keepDefaultValue&&Q(i,m);f.state.next({values:J(r)}),f.state.next({...s,...u.keepDirty?{isDirty:ne()}:{}}),!u.keepIsValid&&_()},ht=({disabled:o,name:u})=>{(de(o)&&a.mount||o||c.disabled.has(u))&&(o?c.disabled.add(u):c.disabled.delete(u))},He=(o,u={})=>{let m=k(n,o);const v=de(u.disabled)||de(t.disabled);return R(n,o,{...m||{},_f:{...m&&m._f?m._f:{ref:{name:o}},name:o,mount:!0,...u}}),c.mount.add(o),m?ht({disabled:de(u.disabled)?u.disabled:t.disabled,name:o}):F(o,!0,u.value),{...v?{disabled:u.disabled||t.disabled}:{},...t.progressive?{required:!!u.required,min:Ae(u.min),max:Ae(u.max),minLength:Ae(u.minLength),maxLength:Ae(u.maxLength),pattern:Ae(u.pattern)}:{},name:o,onChange:M,onBlur:M,ref:x=>{if(x){He(o,u),m=k(n,o);const w=K(x.value)&&x.querySelectorAll&&x.querySelectorAll("input,select,textarea")[0]||x,E=tr(w),I=m._f.refs||[];if(E?I.find(O=>O===w):w===m._f.ref)return;R(n,o,{_f:{...m._f,...E?{refs:[...I.filter(Ge),w,...Array.isArray(k(i,o))?[{}]:[]],ref:{type:w.type,name:o}}:{ref:w}}}),F(o,!1,void 0,w)}else m=k(n,o,{}),m._f&&(m._f.mount=!1),(t.shouldUnregister||u.shouldUnregister)&&!(Gs(c.array,o)&&a.action)&&c.unMount.add(o)}}},Qe=()=>t.shouldFocusError&&Ne(n,Y,c.mount),ms=o=>{de(o)&&(f.state.next({disabled:o}),Ne(n,(u,m)=>{const v=k(n,m);v&&(u.disabled=v._f.disabled||o,Array.isArray(v._f.refs)&&v._f.refs.forEach(x=>{x.disabled=v._f.disabled||o}))},0,!1))},yt=(o,u)=>async m=>{let v;m&&(m.preventDefault&&m.preventDefault(),m.persist&&m.persist());let x=J(r);if(f.state.next({isSubmitting:!0}),t.resolver){const{errors:w,values:E}=await P();s.errors=w,x=J(E)}else await V(n);if(c.disabled.size)for(const w of c.disabled)Q(x,w);if(Q(s.errors,"root"),ee(s.errors)){f.state.next({errors:{}});try{await o(x,m)}catch(w){v=w}}else u&&await u({...s.errors},m),Qe(),setTimeout(Qe);if(f.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:ee(s.errors)&&!v,submitCount:s.submitCount+1,errors:s.errors}),v)throw v},gs=(o,u={})=>{k(n,o)&&(K(u.defaultValue)?z(o,J(k(i,o))):(z(o,u.defaultValue),R(i,o,J(u.defaultValue))),u.keepTouched||Q(s.touchedFields,o),u.keepDirty||(Q(s.dirtyFields,o),s.isDirty=u.defaultValue?ne(o,J(k(i,o))):ne()),u.keepError||(Q(s.errors,o),y.isValid&&_()),f.state.next({...s}))},bt=(o,u={})=>{const m=o?J(o):i,v=J(m),x=ee(o),w=x?i:v;if(u.keepDefaultValues||(i=m),!u.keepValues){if(u.keepDirtyValues){const E=new Set([...c.mount,...Object.keys(Ee(i,r))]);for(const I of Array.from(E))k(s.dirtyFields,I)?R(w,I,k(r,I)):z(I,k(w,I))}else{if(ot&&K(o))for(const E of c.mount){const I=k(n,E);if(I&&I._f){const O=Array.isArray(I._f.refs)?I._f.refs[0]:I._f.ref;if(Pe(O)){const ie=O.closest("form");if(ie){ie.reset();break}}}}if(u.keepFieldsRef)for(const E of c.mount)z(E,k(w,E));else n={}}r=t.shouldUnregister?u.keepDefaultValues?J(i):{}:J(w),f.array.next({values:{...w}}),f.state.next({values:{...w}})}c={mount:u.keepDirtyValues?c.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},a.mount=!y.isValid||!!u.keepIsValid||!!u.keepDirtyValues,a.watch=!!t.shouldUnregister,f.state.next({submitCount:u.keepSubmitCount?s.submitCount:0,isDirty:x?!1:u.keepDirty?s.isDirty:!!(u.keepDefaultValues&&!pe(o,i)),isSubmitted:u.keepIsSubmitted?s.isSubmitted:!1,dirtyFields:x?{}:u.keepDirtyValues?u.keepDefaultValues&&r?Ee(i,r):s.dirtyFields:u.keepDefaultValues&&o?Ee(i,o):u.keepDirty?s.dirtyFields:{},touchedFields:u.keepTouched?s.touchedFields:{},errors:u.keepErrors?s.errors:{},isSubmitSuccessful:u.keepIsSubmitSuccessful?s.isSubmitSuccessful:!1,isSubmitting:!1})},pt=(o,u)=>bt(le(o)?o(r):o,u),hs=(o,u={})=>{const m=k(n,o),v=m&&m._f;if(v){const x=v.refs?v.refs[0]:v.ref;x.focus&&(x.focus(),u.shouldSelect&&le(x.select)&&x.select())}},ys=o=>{s={...s,...o}},wt={control:{register:He,unregister:Be,getFieldState:Le,handleSubmit:yt,setError:mt,_subscribe:gt,_runSchema:P,_focusError:Qe,_getWatch:j,_getDirty:ne,_setValid:_,_setFieldArray:q,_setDisabledField:ht,_setErrors:D,_getFieldArray:L,_reset:bt,_resetDefaultValues:()=>le(t.defaultValues)&&t.defaultValues().then(o=>{pt(o,t.resetOptions),f.state.next({isLoading:!1})}),_removeUnmounted:se,_disableForm:ms,_subjects:f,_proxyFormState:y,get _fields(){return n},get _formValues(){return r},get _state(){return a},set _state(o){a=o},get _defaultValues(){return i},get _names(){return c},set _names(o){c=o},get _formState(){return s},get _options(){return t},set _options(o){t={...t,...o}}},subscribe:fs,trigger:re,register:He,handleSubmit:yt,watch:ds,setValue:z,getValues:oe,reset:pt,resetField:gs,clearErrors:ve,unregister:Be,setError:mt,setFocus:hs,getFieldState:Le};return{...wt,formControl:wt}}function ts(e={}){const t=b.useRef(void 0),s=b.useRef(void 0),[n,i]=b.useState({isDirty:!1,isValidating:!1,isLoading:le(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:le(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:n},e.defaultValues&&!le(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:a,...c}=mr(e);t.current={...c,formState:n}}const r=t.current.control;return r._options=e,Xs(()=>{const a=r._subscribe({formState:r._proxyFormState,callback:()=>i({...r._formState}),reRenderRoot:!0});return i(c=>({...c,isReady:!0})),r._formState.isReady=!0,a},[r]),b.useEffect(()=>r._disableForm(e.disabled),[r,e.disabled]),b.useEffect(()=>{e.mode&&(r._options.mode=e.mode),e.reValidateMode&&(r._options.reValidateMode=e.reValidateMode)},[r,e.mode,e.reValidateMode]),b.useEffect(()=>{e.errors&&(r._setErrors(e.errors),r._focusError())},[r,e.errors]),b.useEffect(()=>{e.shouldUnregister&&r._subjects.state.next({values:r._getWatch()})},[r,e.shouldUnregister]),b.useEffect(()=>{if(r._proxyFormState.isDirty){const a=r._getDirty();a!==n.isDirty&&r._subjects.state.next({isDirty:a})}},[r,n.isDirty]),b.useEffect(()=>{e.values&&!pe(e.values,s.current)?(r._reset(e.values,{keepFieldsRef:!0,...r._options.resetOptions}),s.current=e.values,i(a=>({...a}))):r._resetDefaultValues()},[r,e.values]),b.useEffect(()=>{r._state.mount||(r._setValid(),r._state.mount=!0),r._state.watch&&(r._state.watch=!1,r._subjects.state.next({...r._formState})),r._removeUnmounted()}),t.current.formState=Ys(n,r),t.current}const gr=e=>{const{t}=S.useTranslation(),{showStackNotifications:s,showSuccessNotification:n}=xe(),{defaultValues:i,mutationFn:r,formToDto:a,onError:c,onSuccess:l,queryKey:g,onSuccessMessage:y}=e,{control:h,handleSubmit:f,reset:p,setError:C,getValues:_,setValue:A}=ts({defaultValues:i}),q=b.useCallback(F=>{const N=F==null?void 0:F.errors,$=[];return N&&N.forEach(([P,te])=>{const V=document.querySelector(`[name="${P}"]`);(V instanceof HTMLInputElement||V instanceof HTMLTextAreaElement||V instanceof HTMLSelectElement)&&(V.focus(),V.classList.add("error"),$.push(t(`_entities:${g}.${P}.${te}`)))}),$},[t,g]),T=b.useCallback(()=>{document.querySelectorAll("input, textarea, select").forEach(N=>{N.classList.remove("error")})},[]),D=we.useMutation({mutationFn:r,onError:F=>{console.error(F);const N=F;if(c)c(F);else if(Fe(N)){const $=q(N);s($.map(P=>({message:P,type:W.error})))}else if(je(N)){const $=N.message||t("_accessibility:errors.500"),P=t(`_accessibility:errors.${N.status}`);s([{message:P||$,type:W.error}])}},onSuccess:async F=>{me&&await me.invalidateQueries({queryKey:g}),l&&l(F),y&&n({message:y})}});return{control:h,getValues:_,setValue:A,handleSubmit:f,onSubmit:F=>{T(),D.mutate(a?a(F):F)},reset:p,setError:C,isLoading:D.isPending}},ss=e=>{const{t}=S.useTranslation(),{onClick:s,icon:n=B.faTrash,sticky:i=!0,hidden:r=!1,multiple:a=!0,disabled:c=!1,id:l=ye.Delete,tooltip:g=t("_pages:common.actions.delete.text")}=e;return{action:b.useCallback(h=>({id:l,sticky:i,tooltip:g,multiple:a,onClick:()=>s([h==null?void 0:h.id]),hidden:!!h.deletedAt||r,disabled:!!h.deletedAt||c,icon:d.jsx(ae.FontAwesomeIcon,{className:"text-bg-error",icon:n}),onMultipleClick:f=>s(f.map(p=>p.id))}),[c,r,n,l,a,s,i,g])}},rs=e=>{const{t}=S.useTranslation(),{onClick:s,sticky:n=!0,hidden:i=!1,disabled:r=!1,multiple:a=!1,icon:c=B.faRotateLeft,id:l=ye.Restore,tooltip:g=t("_pages:common.actions.restore.text")}=e;return{action:b.useCallback(h=>({id:l,sticky:n,tooltip:g,multiple:a,onClick:()=>s([h==null?void 0:h.id]),hidden:!h.deletedAt||i,disabled:!h.deletedAt||r,icon:d.jsx(ae.FontAwesomeIcon,{className:"text-bg-error",icon:c}),onMultipleClick:f=>s(f.map(p=>p.id))}),[r,i,c,l,a,s,n,g])}},hr=e=>{const{t}=S.useTranslation(),{onClick:s,hidden:n=!1,sticky:i=!0,disabled:r=!1,id:a=ye.Edit,icon:c=B.faPencil,tooltip:l=t("_pages:common.actions.edit.text")}=e;return{action:b.useCallback(y=>({id:a,sticky:i,tooltip:l,onClick:()=>s(y==null?void 0:y.id),hidden:!!y.deletedAt||n,disabled:!!y.deletedAt||r,icon:d.jsx(ae.FontAwesomeIcon,{className:"primary",icon:c})}),[r,n,c,a,s,i,l])}};var ye=(e=>(e.Add="add",e.Edit="edit",e.Delete="delete",e.Restore="restore",e.Refresh="refresh",e.Export="export",e.Import="import",e))(ye||{});const ns=e=>{const{t}=S.useTranslation(),{onClick:s,hidden:n=!1,disabled:i=!1,isLoading:r=!1}=e;return{action:b.useCallback(()=>({id:ye.Export,hidden:n,disabled:i,icon:d.jsx(ae.FontAwesomeIcon,{className:`${r?"rotate":""}`,icon:r?B.faCircleNotch:B.faCloudArrowDown}),tooltip:t("_pages:common.actions.export.text"),onClick:s}),[i,n,r,s,t])}},is=e=>{const{t}=S.useTranslation(),{onClick:s,hidden:n=!1,disabled:i=!1,isLoading:r=!1}=e;return{action:b.useCallback(()=>({id:ye.Import,hidden:n,disabled:i,icon:d.jsx(ae.FontAwesomeIcon,{className:`${r?"rotate":""}`,icon:r?B.faCircleNotch:B.faCloudUpload}),tooltip:t("_pages:common.actions.import.text"),onClick:s}),[i,n,r,s,t])}},yr=e=>{const{queryKey:t,onSuccess:s,...n}=e,{showStackNotifications:i}=xe(),{t:r}=S.useTranslation(),{open:a,onClick:c,close:l,dialogFn:g,isLoading:y}=at({onSuccessMessage:r("_pages:common.actions.delete.successMessage"),onError:f=>{const p=f;if(Fe(p))i(p.errors.map(([C,_])=>({message:r(`_pages:${C}.errors.${_}`),type:W.error})));else if(je(p)){const C=p.message||r("_accessibility:errors.500"),_=r(`_accessibility:errors.${p.status}`);i([{message:_||C,type:W.error}])}},onSuccess:async f=>{await me.invalidateQueries({queryKey:t}),s&&s(f)},...n}),{action:h}=ss({onClick:c});return{onClick:c,title:r("_pages:common.actions.delete.dialog.title"),open:a,isLoading:y,handleSubmit:()=>g.mutate(),handleClose:l,action:h}},ft=()=>{const[e,t]=b.useState(!1);return{open:e,setOpen:t,handleClose:()=>t(!1),handleOpen:()=>t(!0)}},br=e=>{const{t}=S.useTranslation(),{showErrorNotification:s,showStackNotifications:n,showSuccessNotification:i}=xe(),{defaultValues:r,getFunction:a,mutationFn:c,formToDto:l,dtoToForm:g,onError:y,onSuccess:h,queryKey:f,onSuccessMessage:p,title:C}=e,[_,A]=b.useState(0),{open:q,handleClose:T,handleOpen:D}=ft(),{control:F,handleSubmit:N,reset:$,setError:P,getValues:te,setValue:V}=ts({defaultValues:r}),{data:se,isLoading:ne}=we.useQuery({queryFn:()=>a==null?void 0:a(_),queryKey:[...f,_],enabled:!!a&&!!f&&!!_});b.useEffect(()=>{se&&g&&$({...g(se)})},[se]);const j=b.useCallback(M=>{const Y=M==null?void 0:M.errors,re=[];return Y&&Y.forEach(([oe,Le])=>{const ve=document.querySelector(`[name="${oe}"]`);(ve instanceof HTMLInputElement||ve instanceof HTMLTextAreaElement||ve instanceof HTMLSelectElement)&&(ve.focus(),ve.classList.add("error"),re.push(t(`_entities:${f}.${oe}.${Le}`)))}),re},[t,f]),L=b.useCallback(()=>{document.querySelectorAll("input, textarea, select").forEach(Y=>{Y.classList.remove("error")})},[]),U=b.useCallback(M=>{A(M??0),D()},[D]),G=b.useCallback(()=>{L(),T(),$()},[$,L,T]),z=we.useMutation({mutationFn:c,onError:M=>{if(console.error(M),y)y(M);else{const Y=M;if(Fe(Y)){const re=j(Y);n(re.map(oe=>({message:oe,type:W.error})))}else if(je(Y)){const re=Y.message||t("_accessibility:errors.500"),oe=t(`_accessibility:errors.${Y.status}`);s({message:oe||re})}else s({message:t("_accessibility:errors.500")})}},onSuccess:async M=>{await me.invalidateQueries({queryKey:f}),h&&h(M),i({message:p}),G()}});return{open:q,openDialog:U,handleClose:G,control:F,getValues:te,setValue:V,handleSubmit:N,onSubmit:M=>z.mutate(l?l(M):M),reset:$,setError:P,title:C,isLoading:ne||z.isPending}},pr=e=>{const{queryKey:t,onSuccess:s,...n}=e,{showStackNotifications:i}=xe(),{t:r}=S.useTranslation(),{open:a,onClick:c,close:l,dialogFn:g,isLoading:y}=at({onSuccessMessage:r("_pages:common.actions.restore.successMessage"),onError:f=>{const p=f;if(Fe(p))i(p.errors.map(([C,_])=>({message:r(`_pages:${C}.errors.${_}`),type:W.error})));else if(je(p)){const C=p.message||r("_accessibility:errors.500"),_=r(`_accessibility:errors.${p.status}`);i([{message:_||C,type:W.error}])}},onSuccess:async f=>{await me.invalidateQueries({queryKey:t}),s&&s(f)},...n}),{action:h}=rs({onClick:c});return{onClick:c,title:r("_pages:common.actions.restore.dialog.title"),open:a,isLoading:y,handleSubmit:()=>g.mutate(),handleClose:l,action:h}};function wr(e){const{t}=S.useTranslation(),{queryKey:s,mutationFn:n,entity:i,fileProcessor:r,onError:a}=e,[c,l]=b.useState(!1),[g,y]=b.useState(null),[h,f]=b.useState(!1),p=we.useMutation({mutationFn:n,onError:_=>{console.error(_),a==null||a(_)},onSuccess:async()=>{me&&await me.invalidateQueries({queryKey:s})}}),{action:C}=is({onClick:()=>l(!0)});return{handleSubmit:async()=>{if(!(!g||g.length===0))try{await p.mutateAsync({items:g,override:h}),l(!1),y(null),f(!1)}catch(_){console.error(_)}},isLoading:p.isPending,fileProcessor:r,onFileProcessed:_=>y(_),onOverrideChange:_=>f(_),open:c,title:t("_pages:common.actions.import.dialog.title",{entity:t(`_pages:${i}.title`)}),handleClose:()=>{l(!1),y(null)},action:C}}const xr=e=>{const{showSuccessNotification:t}=xe(),{t:s}=S.useTranslation(),{entity:n,mutationFn:i,onError:r,onSuccess:a,onSuccessMessage:c=s("_pages:common.actions.export.successMessage")}=e,l=we.useMutation({mutationFn:()=>i(),onError:h=>{console.error(h),r&&r(h)},onSuccess:async h=>{const f=JSON.stringify(h,null,2),p=new Blob([f],{type:"application/json"}),C=URL.createObjectURL(p),_=document.createElement("a");_.href=C,_.download=`${n}.json`,_.click(),URL.revokeObjectURL(C),a&&a(h),t({message:c})}}),g=b.useCallback(()=>{l.mutate()},[l]),{action:y}=ns({onClick:g,isLoading:l.isPending});return{action:y}};function as(e){const[t,s]=b.useState(!1),n=b.useCallback(()=>{const i=window.scrollY>e;s(i)},[e]);return b.useEffect(()=>(window.addEventListener("scroll",n),()=>{window.removeEventListener("scroll",n)}),[n]),t}const vr=e=>{const{showBackButton:t,title:s,actions:n}=e,{t:i}=S.useTranslation(),{navigate:r}=_e();return d.jsxs("div",{className:"page-header",children:[d.jsxs("div",{className:"page-header-left",children:[t&&d.jsx(ge,{icon:B.faArrowLeft,onClick:()=>r(-1),name:i("_accessibility:buttons.back"),"data-tooltip-id":"tooltip","data-tooltip-content":i("_accessibility:buttons.back")}),d.jsx("h2",{className:"page-header-title",children:s})]}),d.jsxs("div",{children:[d.jsx(S.Actions,{className:"page-header-actions-desktop",actions:n??[]}),d.jsx(S.ActionsDropdown,{className:"page-header-actions-mobile",actions:n??[]})]})]})},Cr=e=>{const{title:t,children:s,addOptions:n,filterOptions:i,actions:r,queryKey:a,isLoading:c=!1,isAnimated:l=!0,showBackButton:g=!1}=e,{t:y}=S.useTranslation(),{countOfFilters:h}=S.useTableOptions(),f=b.useMemo(()=>{const p=Array.isArray(r)?[...r]:[];if(a){const C={id:ye.Refresh,onClick:()=>me.invalidateQueries({queryKey:a}),icon:d.jsx(ae.FontAwesomeIcon,{icon:B.faRotateLeft}),tooltip:y("_pages:common.actions.refresh.text")};p.unshift(C)}if(n){const C={...n,id:ye.Add,icon:d.jsx(ae.FontAwesomeIcon,{icon:B.faAdd})};p.unshift(C)}if(i){const C={...i,id:"filter",icon:d.jsx(ae.FontAwesomeIcon,{icon:B.faFilter}),children:d.jsx(S.Badge,{className:`${h>0?"show":"hide"} `,count:h})};p.push(C)}return p},[r,n,h,i,a,y]);return d.jsxs("main",{className:"page-main",children:[d.jsx(vr,{showBackButton:g,actions:f,title:t}),d.jsx("div",{className:`page-main-content ${l?"appear":""}`,children:c?d.jsx(S.Loading,{className:"page-loading"}):s}),n&&d.jsx(ge,{icon:n.icon??B.faAdd,color:n.color??"primary",variant:n.variant??"submit",onClick:()=>{var p;return(p=n.onClick)==null?void 0:p.call(n)},className:`button fab ${n.className??""}`})]})},Sr=e=>{const{t}=S.useTranslation(),{className:s="",itemClassName:n="",loading:i=!1,emptyComponent:r=null,emptyMessage:a=t("_accessibility:messages.empty"),renderComponent:c,data:l=[]}=e;return i?d.jsx(S.Loading,{}):d.jsx(d.Fragment,{children:l!=null&&l.length?d.jsx("ul",{className:`pretty-grid-main ${s}`,children:l==null?void 0:l.map(g=>d.jsx("li",{className:`pretty-grid-item ${n}`,children:c(g)},g.id))}):d.jsx(d.Fragment,{children:r||d.jsx(us,{message:a})})})},kr=()=>{const[e,t]=b.useState(Ze());return b.useEffect(()=>{const s=window.matchMedia("(min-width: 768px)"),n=()=>{t(s.matches?Ze():Rt())},i=setInterval(n,1e3);return s.addEventListener("change",n),()=>{clearInterval(i),s.removeEventListener("change",n)}},[]),d.jsx("p",{className:"clock",children:e})};function _r(e){const{t}=S.useTranslation(),{openDrawer:s,showClock:n=!0,showSearch:i=!0,menuButtonProps:r}=e,{searchComponent:a,location:c}=_e(),[l,g]=b.useState(!1),y=b.useCallback(f=>{(Ut()?f.metaKey:f.ctrlKey)&&f.shiftKey&&f.key.toLowerCase()==="f"&&(g(!0),f.preventDefault())},[]);b.useEffect(()=>(window.addEventListener("keydown",y),()=>{window.removeEventListener("keydown",y)}),[y]);const h=a;return d.jsxs(d.Fragment,{children:[c.pathname!=="/"&&!!h&&d.jsx(h,{open:l,onClose:()=>g(!1)}),d.jsxs("header",{id:"header",className:"header",children:[d.jsxs("div",{className:"navbar-left",children:[d.jsx(ge,{...r,type:(r==null?void 0:r.type)??"button",icon:(r==null?void 0:r.icon)??B.faBars,onClick:f=>{var p;(p=r==null?void 0:r.onClick)==null||p.call(r,f),s()},name:(r==null?void 0:r.name)??t("_accessibility:buttons.openMenu"),"aria-label":(r==null?void 0:r["aria-label"])??t("_accessibility:ariaLabels.openMenu"),className:`navbar-menu animated ${(r==null?void 0:r.className)??""}`}),d.jsx("h1",{className:"poppins navbar-title",children:t("_pages:home.appName")})]}),d.jsxs("div",{className:"navbar-right",children:[i&&d.jsx(ge,{icon:B.faSearch,className:"navbar-search-btn",onClick:()=>g(!0)}),n&&d.jsx(kr,{})]})]})]})}const ge=({icon:e,...t})=>d.jsx(S.IconButton,{icon:d.jsx(ae.FontAwesomeIcon,{icon:e}),...t});var Je,Vt;function Er(){if(Vt)return Je;Vt=1;const e=(c,l="local",g=void 0)=>{if(l==="local"){if(localStorage.getItem(c)!==void 0&&localStorage.getItem(c)!=="undefined"&&localStorage.getItem(c)!==null)return g===void 0||g!==void 0&&localStorage.getItem(c)===g}else if(l==="session"&&sessionStorage.getItem(c)!==void 0&&sessionStorage.getItem(c)!=="undefined"&&sessionStorage.getItem(c)!==null)return g===void 0||g!==void 0&&sessionStorage.getItem(c)===g;return!1},t=c=>{const l={};return c.substring(1).split("&").forEach(y=>{const[h,f]=y.split("=");l[h]=f}),l},s=(c="")=>{if(r(c)&&c.length)return r(c);{let l=navigator.language||navigator.userLanguage;if(l.indexOf("en")<0&&l.indexOf("es")<0&&(l="en-US"),l=l.split("-")[0],l)return c.length&&i(c,730,l),l}return"en"},n=(c=0,l=0,g=window,y="smooth")=>g.scroll({top:c,left:l,behavior:y}),i=(c,l,g,y="/",h="Lax")=>{var f=new Date;f.setTime(f.getTime()+l*24*60*60*1e3);const p="; expires="+f.toUTCString();document.cookie=`${c}=${g||""}${p};path=${y};SameSite=${h}`},r=c=>{const l=`${c}=`,y=decodeURIComponent(document.cookie).split(";");for(let h=0;h<y.length;h+=1){let f=y[h];for(;f.charAt(0)===" ";)f=f.substring(1);if(f.indexOf(l)===0)return f.substring(l.length,f.length)}return""};return Je={getCookie:r,createCookie:i,deleteCookie:c=>document.cookie=`${c}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`,getUserLanguage:s,scrollTo:n,parseQueries:t,validation:e},Je}var Ar=Er();const Tr=()=>{const{t:e}=S.useTranslation(),t=as(200);return d.jsx(ge,{variant:"submit",color:"primary",icon:B.faArrowUp,"data-tooltip-id":"tooltip",onClick:()=>Ar.scrollTo(0,0),className:`to-top ${t?"show":"hide"}`,"data-tooltip-content":e("_accessibility:buttons.toTop")})},Ve=300,Nr=e=>e??W.error,Fr=e=>{switch(e){case W.error:return B.faWarning;default:return B.faCircleCheck}},ze=e=>{switch(e){case W.success:return"!text-success";case W.error:return"!text-error";case W.warning:return"!text-warning";default:return"!text-info"}},jr=e=>{switch(e){case W.success:return"bg-bg-success";case W.error:return"bg-bg-error";case W.warning:return"bg-bg-warning";default:return"bg-bg-info"}};function Dr(){const{t:e}=S.useTranslation(),{notification:t,removeNotification:s}=xe(),[n,i]=b.useState([]),r=b.useRef(n);b.useLayoutEffect(()=>{r.current=n});const a=b.useRef(null),c=b.useCallback(l=>{i(g=>l!==void 0?g.map(y=>y.id===l?{...y,closing:!0}:y):g.map(y=>({...y,closing:!0}))),l!==void 0?setTimeout(()=>{s(l),i(g=>g.filter(y=>y.id!==l))},Ve):(a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{s(),i([]),a.current=null},Ve))},[s]);return b.useEffect(()=>{let l=null;const g=()=>{l&&clearTimeout(l),a.current&&(clearTimeout(a.current),a.current=null)};if(t.length===0)return r.current.length===0?void 0:(a.current&&clearTimeout(a.current),l=setTimeout(()=>{i(p=>p.map(C=>({...C,closing:!0}))),l=null},0),a.current=setTimeout(()=>{i([]),a.current=null},Ve),g);const y=new Set(r.current.map(p=>p.id));if(!t.some(p=>p.id!==void 0&&!y.has(p.id)))return;if(r.current.length===0){const p=[...t];return l=setTimeout(()=>{i(p.map(C=>({...C,closing:!1}))),l=null},0),()=>{l&&clearTimeout(l)}}a.current&&clearTimeout(a.current),l=setTimeout(()=>{i(p=>p.every(C=>C.closing)?p:p.map(C=>({...C,closing:!0}))),l=null},0);const f=[...t];return a.current=setTimeout(()=>{i(f.map(p=>({...p,closing:!1}))),a.current=null},Ve),g},[t]),b.useEffect(()=>{if(!n.length)return;let l;const g=window.setTimeout(()=>{l=()=>c(),window.addEventListener("click",l)},0),y=h=>{h.key==="Escape"&&c()};return window.addEventListener("keydown",y),()=>{window.clearTimeout(g),l&&window.removeEventListener("click",l),window.removeEventListener("keydown",y)}},[n.length,c]),It.createPortal(d.jsx("div",{className:`notification-portal ${n.length?"active":""}`,children:n.map(({id:l,type:g,message:y,closing:h})=>{const f=Nr(g);return d.jsxs("div",{className:`notification ${h?"closing":""} ${jr(f)}`,onClick:p=>p.stopPropagation(),children:[d.jsxs("div",{className:"notification-body",children:[d.jsx(ae.FontAwesomeIcon,{icon:Fr(f),className:`notification-icon ${ze(f)}`}),d.jsx("p",{className:`notification-text ${ze(f)}`,children:y})]}),d.jsx(ge,{type:"button",icon:B.faClose,color:"error",className:"notification-close group",onClick:p=>{p.stopPropagation(),l!==void 0&&c(l)},iconClassName:`${ze(f)} notification-close-icon`,name:e("_accessibility:buttons.closeNotification"),"aria-label":e("_accessibility:ariaLabels.closeNotification")})]},l)})}),document.body)}function Lr(e){const{className:t,...s}=e;return d.jsx("div",{className:"splash-screen",children:d.jsx(S.Loading,{className:`blur-appear ${t?` ${t}`:""}`,...s})})}const os=e=>{const{id:t,active:s,onClick:n,children:i,to:r}=e,{linkComponent:a}=_e(),c=a;return d.jsx(c,{to:r??`#${t}`,onClick:()=>n(),className:`button submit tab ${s?"primary":"outlined"}`,children:i})},cs=e=>{var l;const{tabs:t=[],defaultTab:s,className:n="",tabsContainerClassName:i=""}=e,[r,a]=b.useState(s??((l=t[0])==null?void 0:l.id)),c=b.useMemo(()=>t.find(g=>g.id===r),[t,r]);return d.jsxs("div",{className:`tabs-layout-main ${n}`,children:[d.jsx("ul",{className:`horizontal tabs tabs-container ${i}`,children:t.map(({id:g,to:y,label:h})=>d.jsx("li",{children:d.jsx(os,{onClick:()=>a(g),id:g,to:y??"",siblings:t.length>1,active:r===g,children:h})},g))}),c==null?void 0:c.content]})},ls=e=>{const{translation:t,onClickNext:s,image:n="",alt:i="",final:r=!1}=e,{setGuestMode:a}=nt(),{navigate:c}=_e(),{t:l}=S.useTranslation();return d.jsxs("div",{className:"big-appear step-container",children:[n&&d.jsx("img",{src:n,alt:i}),d.jsx("h2",{className:"step-title",children:l(`_pages:onboarding.${t}.title`)}),d.jsx("p",{className:"step-body",children:l(`_pages:onboarding.${t}.body`)}),d.jsx("div",{className:"step-actions",children:r?d.jsxs(d.Fragment,{children:[d.jsx(S.Button,{color:"primary",className:"step-button",variant:"outlined",onClick:()=>{a(!0),c("/")},"aria-label":l("_accessibility:ariaLabels.start"),children:l("_accessibility:buttons.startAsGuest")}),d.jsx(S.Button,{color:"primary",variant:"submit",className:"step-button","aria-label":l("_accessibility:ariaLabels.start"),onClick:()=>c("/auth/sign-in"),children:l("_accessibility:buttons.signIn")})]}):d.jsxs(d.Fragment,{children:[d.jsx(S.Button,{color:"primary",className:"step-button",variant:"outlined",onClick:()=>c("/auth/sign-in"),"aria-label":l("_accessibility:ariaLabels.skip"),children:l("_accessibility:buttons.skip")}),d.jsx(S.Button,{color:"primary",className:"step-button",variant:"outlined",onClick:()=>s(),"aria-label":l("_accessibility:ariaLabels.next"),children:l("_accessibility:buttons.next")})]})})]})},$r=e=>{const{steps:t}=e,[s,n]=b.useState(1),i=b.useMemo(()=>t.map((r,a)=>({id:a+1,label:"",content:d.jsx(ls,{translation:r,final:a===t.length-1,onClickNext:()=>n(c=>c+1)})})),[t]);return d.jsx("div",{className:"onboarding-main",children:d.jsx(cs,{defaultTab:s,tabs:i})})},us=e=>{const{message:t,messageProps:s={className:"empty-message"},action:n,iconProps:i}=e;return d.jsxs("div",{className:"empty-container",children:[i&&d.jsx(ae.FontAwesomeIcon,{...i}),d.jsx("p",{...s,children:t}),n&&d.jsx(S.Action,{showTooltips:!1,showText:!0,...n})]})};Object.defineProperty(exports,"Action",{enumerable:!0,get:()=>S.Action});Object.defineProperty(exports,"Actions",{enumerable:!0,get:()=>S.Actions});Object.defineProperty(exports,"ActionsDropdown",{enumerable:!0,get:()=>S.ActionsDropdown});Object.defineProperty(exports,"Button",{enumerable:!0,get:()=>S.Button});exports.APIClient=st;exports.AppIconButton=ge;exports.AuthClient=Ot;exports.AuthProvider=Rs;exports.BaseClient=$s;exports.ConfigProvider=Us;exports.ConfirmationDialog=As;exports.Dialog=Re;exports.DialogActions=Ue;exports.Drawer=Bs;exports.DrawerMenuContext=it;exports.DrawerMenuProvider=qs;exports.Empty=us;exports.Error=Hs;exports.FormContainer=ks;exports.FormDialog=Es;exports.GlobalActions=ye;exports.IManager=Ls;exports.IconButton=ge;exports.ImportDialog=Ds;exports.ManagerProvider=Os;exports.Methods=Z;exports.Navbar=_r;exports.Notification=Dr;exports.NotificationEnumType=W;exports.NotificationProvider=Ms;exports.Onboarding=$r;exports.Page=Cr;exports.ParagraphInput=Ss;exports.PasswordInput=_s;exports.PrettyGrid=Sr;exports.SplashScreen=Lr;exports.Step=ls;exports.Tab=os;exports.TabsLayout=cs;exports.ToTop=Tr;exports.buildQueryUrl=Mt;exports.enumToKeyValueArray=Vs;exports.formatForDatetimeLocal=Is;exports.fromLocal=rt;exports.getFormattedDateTime=Ze;exports.getShortFormattedDateTime=Rt;exports.isHttpError=je;exports.isMac=Ut;exports.isValidationError=Fe;exports.makeRequest=ke;exports.mapValidationErrors=Ps;exports.parseQueries=tt;exports.queryClient=me;exports.removeFromLocal=Xe;exports.toLocal=Ye;exports.useAuth=nt;exports.useConfig=_e;exports.useConfirmationForm=at;exports.useDeleteAction=ss;exports.useDeleteDialog=yr;exports.useDialog=ft;exports.useDrawerMenu=Wt;exports.useEditAction=hr;exports.useExportAction=ns;exports.useExportActionMutate=xr;exports.useFormDialog=br;exports.useImportAction=is;exports.useImportDialog=wr;exports.useManager=Ht;exports.useNotification=xe;exports.usePostForm=gr;exports.useRestoreAction=rs;exports.useRestoreDialog=pr;exports.useScrollTrigger=as;exports.useTimeAge=Qs;Object.keys(S).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>S[e]})});
1
+ var xs=Object.defineProperty;var vs=(e,t,s)=>t in e?xs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var ee=(e,t,s)=>vs(e,typeof t!="symbol"?t+"":t,s);var Rr=require("./main.css");Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("@sito/dashboard"),d=require("react/jsx-runtime"),oe=require("@fortawesome/react-fontawesome"),b=require("react"),B=require("@fortawesome/free-solid-svg-icons"),It=require("react-dom"),we=require("@tanstack/react-query"),Cs=require("@fortawesome/free-regular-svg-icons"),Ct=e=>e==null?!1:`${e}`.length>0,Ss=b.forwardRef(function(e,t){const{value:s,defaultValue:r,onChange:n,state:i=S.State.default,name:a="",id:c="",label:l="",disabled:h=!1,required:y=!1,containerClassName:g="",inputClassName:f="",labelClassName:p="",helperText:v="",helperTextClassName:k="",...E}=e,R=s!==void 0,[T,D]=b.useState(()=>Ct(r)),F=R?Ct(s):T,N=L=>{R||D(L.currentTarget.value.length>0),n==null||n(L)};return d.jsxs("div",{className:`form-paragraph-container group ${g}`,children:[d.jsx("textarea",{ref:t,name:a,id:c,className:`text-input text-area form-paragraph-textarea peer ${S.inputStateClassName(i)} ${F?"has-value":""} ${E.placeholder?"has-placeholder":""} ${f}`,required:y,defaultValue:r,...R?{value:s}:{},onChange:N,disabled:h,...E}),d.jsxs("label",{htmlFor:c,className:`text-input-label ${S.labelStateClassName(i)} ${p}`,children:[l,y?" *":""]}),!!v&&d.jsx("p",{className:`text-input-helper-text ${S.helperTextStateClassName(i)} ${k}`,children:v})]})}),_s=e=>{const{t}=S.useTranslation(),{children:s,handleSubmit:r,onSubmit:n,isLoading:i=!1,buttonEnd:a=!0,reset:c}=e;return d.jsxs("form",{className:"form-container",onSubmit:r(n),children:[s,d.jsxs("div",{className:`form-actions ${a?"end":""}`,children:[d.jsxs(S.Button,{type:"submit",color:"primary",variant:"submit",disabled:i,name:t("_accessibility:buttons.submit"),"aria-label":t("_accessibility:ariaLabels.submit"),children:[i?d.jsx(S.Loading,{color:"stroke-base",loaderClass:"!w-6 mt-1",strokeWidth:"6"}):null,t("_accessibility:buttons.submit")]}),d.jsx(S.Button,{type:"button",variant:"outlined",onClick:()=>c==null?void 0:c(),name:t("_accessibility:buttons.cancel"),"aria-label":t("_accessibility:ariaLabels.cancel"),children:t("_accessibility:buttons.cancel")})]})]})},ks=b.forwardRef(function(e,t){const{t:s}=S.useTranslation(),[r,n]=b.useState(!1);return d.jsx(S.TextInput,{...e,type:r?"text":"password",ref:t,children:d.jsx(he,{type:"button",tabIndex:-1,"aria-label":s(r?"_accessibility:ariaLabels.hidePassword":"_accessibility:ariaLabels.showPassword"),className:"password-icon",onClick:()=>n(!r),icon:r?B.faEyeSlash:B.faEye})})}),Re=e=>{const{t}=S.useTranslation(),{title:s,children:r,handleClose:n,open:i=!1,containerClassName:a="",className:c="",animationClass:l="appear"}=e,h=b.useCallback(g=>{g.key==="Escape"&&i&&n()},[i,n]);b.useEffect(()=>(window.addEventListener("keydown",h),()=>{window.removeEventListener("keydown",h)}),[h]);const y=b.useCallback(g=>{g.target===g.currentTarget&&n()},[n]);return b.useEffect(()=>{const g=f=>{f?document.body.style.overflow="hidden":document.body.style.overflow="auto"};return g(i),()=>{g(!1)}},[i]),It.createPortal(d.jsx("div",{"aria-label":t("_accessibility:ariaLabels.closeDialog"),"aria-hidden":!i,onClick:y,className:`dialog-backdrop animated ${i?`opened ${l}`:"closed"} ${a}`,children:d.jsxs("div",{className:`dialog elevated animated ${i?`opened ${l}`:"closed"} ${c}`,children:[d.jsxs("div",{className:"dialog-header",children:[d.jsx("h3",{className:"dialog-title",children:s}),d.jsx(he,{icon:B.faClose,disabled:!i,"aria-disabled":!i,onClick:n,className:"icon-button dialog-close-btn",name:t("_accessibility:buttons.closeDialog"),"aria-label":t("_accessibility:ariaLabels.closeDialog")})]}),r]})}),document.body)},Ue=e=>{const{primaryText:t,cancelText:s,onPrimaryClick:r,onCancel:n,isLoading:i=!1,disabled:a=!1,primaryType:c="submit",containerClassName:l="",primaryClassName:h="",alignEnd:y=!1,primaryName:g,primaryAriaLabel:f,cancelName:p,cancelAriaLabel:v}=e;return d.jsxs("div",{className:`dialog-actions ${y?"end":""} ${l}`,children:[d.jsxs(S.Button,{type:c,color:"primary",variant:"submit",className:h,disabled:a,onClick:r,name:g,"aria-label":f,children:[i?d.jsx(S.Loading,{color:"stroke-base",loaderClass:"!w-6 mt-1",strokeWidth:"6"}):null,t]}),d.jsx(S.Button,{type:"button",variant:"outlined",disabled:a,onClick:n,name:p,"aria-label":v,children:s})]})},As=e=>{const{t}=S.useTranslation(),{children:s,handleSubmit:r,onSubmit:n,handleClose:i,isLoading:a=!1,buttonEnd:c=!0,...l}=e;return d.jsx(Re,{...l,handleClose:i,children:d.jsxs("form",{onSubmit:r(n),children:[d.jsx("div",{className:"form-container",children:s}),d.jsx(Ue,{primaryType:"submit",primaryText:t("_accessibility:buttons.submit"),cancelText:t("_accessibility:buttons.cancel"),onCancel:i,isLoading:a,disabled:a,primaryClassName:"dialog-form-primary",alignEnd:c,primaryName:t("_accessibility:buttons.submit"),primaryAriaLabel:t("_accessibility:ariaLabels.submit"),cancelName:t("_accessibility:buttons.cancel"),cancelAriaLabel:t("_accessibility:ariaLabels.cancel")})]})})},Es=e=>{const{t}=S.useTranslation(),{children:s,handleSubmit:r,handleClose:n,isLoading:i=!1,...a}=e;return d.jsxs(Re,{...a,handleClose:n,children:[s,d.jsx(Ue,{primaryText:t("_accessibility:buttons.ok"),cancelText:t("_accessibility:buttons.cancel"),onPrimaryClick:r,onCancel:n,isLoading:i,disabled:i,primaryType:"button",containerClassName:"mt-5",primaryName:t("_accessibility:buttons.ok"),primaryAriaLabel:t("_accessibility:ariaLabels.ok"),cancelName:t("_accessibility:buttons.cancel"),cancelAriaLabel:t("_accessibility:ariaLabels.cancel")})]})};function Ts(e){const{message:t,className:s=""}=e,{t:r}=S.useTranslation();return d.jsx("p",{className:`import-error-message ${s}`,children:t??r("_messages:errors.parseFile",{defaultValue:"Failed to process file"})})}function Ns(e){const{message:t,className:s=""}=e,{t:r}=S.useTranslation();return d.jsxs("div",{className:`import-loading ${s}`,children:[d.jsx(S.Loading,{loaderClass:"w-5 h-5",className:"!w-auto"}),d.jsx("span",{children:t??r("_messages:loading.processingFile",{defaultValue:"Processing file..."})})]})}function Fs(e){const{items:t,max:s=5,className:r=""}=e,{t:n}=S.useTranslation();if(!t||t.length===0)return null;const i=t.slice(0,s);return d.jsxs("div",{className:`import-preview ${r}`,children:[d.jsx("p",{className:"import-preview-count",children:n("_pages:common.actions.import.previewCount",{count:t.length,defaultValue:`Preview: ${t.length} items`})}),d.jsx("pre",{className:"import-preview-content",children:JSON.stringify(i,null,2)})]})}const Pt=()=>({file:null,previewItems:null,parseError:null,processing:!1,overrideExisting:!1,inputKey:0});function js(e,t){switch(t.type){case"SET_FILE":return{...e,file:t.file,previewItems:null,parseError:null,processing:!1};case"START_PROCESSING":return{...e,processing:!0};case"SET_PREVIEW":return{...e,previewItems:t.items,parseError:null,processing:!1};case"SET_ERROR":return{...e,previewItems:null,parseError:t.message,processing:!1};case"SET_OVERRIDE":return{...e,overrideExisting:t.value};case"RESET":return{...Pt(),inputKey:e.inputKey+1}}}const Ds=e=>{const{t}=S.useTranslation(),{children:s,handleSubmit:r,handleClose:n,isLoading:i=!1,fileProcessor:a,onFileProcessed:c,onOverrideChange:l,open:h,...y}=e,[g,f]=b.useReducer(js,Pt()),{file:p,previewItems:v,parseError:k,processing:E,overrideExisting:R,inputKey:T}=g,D=b.useRef(c),F=b.useRef(a);b.useEffect(()=>{D.current=c},[c]),b.useEffect(()=>{F.current=a},[a]),b.useEffect(()=>{h||f({type:"RESET"})},[h]);const N=b.useCallback(async(L,P)=>{var se;if(F.current){f({type:"START_PROCESSING"});try{const V=await F.current(L,{override:P});f({type:"SET_PREVIEW",items:V??[]}),(se=D.current)==null||se.call(D,V??[])}catch(V){console.error(V);const re=V instanceof Error?V.message:"Failed to parse file";f({type:"SET_ERROR",message:re})}}},[]);return d.jsxs(Re,{...y,open:h,handleClose:n,children:[d.jsx(S.FileInput,{onClear:()=>{var L;f({type:"SET_FILE",file:null}),(L=D.current)==null||L.call(D,[])},onChange:L=>{var se,V;const P=(se=L.target.files)==null?void 0:se[0];if(!P){f({type:"SET_FILE",file:null}),(V=D.current)==null||V.call(D,[]);return}f({type:"SET_FILE",file:P}),N(P,R)},label:t("_accessibility:labels.file")},T),d.jsxs("label",{className:"import-override-label",children:[d.jsx("input",{type:"checkbox",checked:R,onChange:L=>{const P=L.target.checked;f({type:"SET_OVERRIDE",value:P}),l==null||l(P),p&&N(p,P)}}),d.jsx("span",{children:t("_pages:common.actions.import.override",{defaultValue:"Override existing items"})})]}),d.jsx(Ts,{message:k}),E&&d.jsx(Ns,{}),!!v&&v.length>0&&d.jsx(Fs,{items:v}),s,d.jsx(Ue,{primaryText:t("_accessibility:buttons.ok"),cancelText:t("_accessibility:buttons.cancel"),onPrimaryClick:()=>{(!a||!!v&&v.length>0)&&r()},onCancel:n,isLoading:i,primaryType:"button",containerClassName:"import-dialog-actions",primaryName:t("_accessibility:buttons.ok"),primaryAriaLabel:t("_accessibility:ariaLabels.ok"),cancelName:t("_accessibility:buttons.cancel"),cancelAriaLabel:t("_accessibility:ariaLabels.cancel")})]})};var W=(e=>(e[e.success=0]="success",e[e.error=1]="error",e[e.warning=2]="warning",e[e.info=3]="info",e))(W||{}),Z=(e=>(e.GET="GET",e.POST="POST",e.PUT="PUT",e.PATCH="PATCH",e.DELETE="DELETE",e))(Z||{});async function _e(e,t="GET",s,r){const n={...s?{"Content-Type":"application/json"}:{},...r};try{const i=await fetch(e,{method:t,headers:n,...s?{body:JSON.stringify(s)}:{}}),a=await i.text();let c=null;try{c=a?JSON.parse(a):null}catch{c=null}if(!i.ok){const l=typeof c=="object"&&c!==null?c.message??c.error??a:a||i.statusText;return{data:null,status:i.status,error:{status:i.status,message:l||"Unknown error occurred"}}}return{data:i.status!==204&&c!==null?c:null,status:i.status,error:null}}catch(i){return{data:null,status:500,error:{status:500,message:i instanceof Error?i.message:"Unknown error occurred"}}}}function Mt(e,t){if(t){const s=Object.entries(t).filter(([,r])=>r!=null).map(([r,n])=>`${encodeURIComponent(r)}=${encodeURIComponent(String(n))}`).join("&");return s?`${e}?${s}`:e}return e}const et=(e,t,s)=>{const r=[];if(t){const{sortingBy:n,sortingOrder:i,currentPage:a,pageSize:c}=t;r.push(`sort=${String(n)}`,`order=${i}`,`page=${a}`,`pageSize=${c}`)}if(s){const n=Object.entries(s).filter(([,i])=>i!=null&&i!=="").flatMap(([i,a])=>{if(Array.isArray(a))return a.map(c=>`${i}==${encodeURIComponent((c==null?void 0:c.id)??c)}`);if(typeof a=="object"&&a!==null&&"start"in a&&"end"in a){const c=[];return a.start!=null&&a.start!==""&&c.push(`${i}>=${encodeURIComponent(a.start)}`),a.end!=null&&a.end!==""&&c.push(`${i}<=${encodeURIComponent(a.end)}`),c}return typeof a=="object"&&a!==null?`${i}==${encodeURIComponent(a.id??"")}`:`${i}==${encodeURIComponent(a)}`});n.length>0&&r.push(`filters=${n.join(",")}`)}return r.length?`${e}?${r.join("&")}`:e};class tt{constructor(t,s="user",r=!0,n){ee(this,"baseUrl");ee(this,"userKey");ee(this,"secured");ee(this,"tokenAcquirer");this.baseUrl=t,this.secured=r,this.userKey=s,this.tokenAcquirer=n??this.defaultTokenAcquirer}defaultTokenAcquirer(t){if(t)return{credentials:"include"};const s=st(this.userKey);if(s&&s.length)return{Authorization:`Bearer ${s}`}}async doQuery(t,s=Z.GET,r,n){const i=this.secured?this.tokenAcquirer():{},{data:a,status:c,error:l}=await _e(`${this.baseUrl}${t}`,s,r,{...i,...n??{}});if(l||c<200||c>=300)throw l??{status:c,message:String(c)};return a}async get(t,s,r){const n=et(t,s,r),i=this.secured?this.tokenAcquirer():void 0,{data:a,error:c}=await _e(`${this.baseUrl}${n}`,Z.GET,null,i);if(c)throw c;return a}async patch(t,s){const r=this.secured?this.tokenAcquirer():void 0,{error:n,data:i,status:a}=await _e(`${this.baseUrl}${t}`,Z.PATCH,s,r);if(n||!i)throw n??{status:a,message:"Unknown error"};return i}async delete(t,s){const r=this.secured?this.tokenAcquirer():void 0,{error:n,data:i,status:a}=await _e(`${this.baseUrl}${t}`,Z.DELETE,s,r);if(n||!i)throw n??{status:a,message:"Unknown error"};return i}async post(t,s){const r=this.secured?this.tokenAcquirer():void 0,{error:n,data:i,status:a}=await _e(`${this.baseUrl}${t}`,Z.POST,s,r);if(n||!i)throw n??{status:a,message:"Unknown error"};return i}}class Ot{constructor(t,s="user"){ee(this,"api");this.api=new tt(t,s,!1)}async login(t){const s="auth/sign-in",r=t;return await this.api.doQuery(s,Z.POST,r)}async logout(){return await this.api.doQuery("auth/sign-out",Z.POST)}async register(t){return await this.api.doQuery("auth/sign-up",Z.POST,t)}async getSession(){return await this.api.doQuery("auth/session",Z.GET,null,{...this.api.defaultTokenAcquirer()})}}class $s{constructor(t,s){ee(this,"auth");this.auth=new Ot(t,s)}get Auth(){return this.auth}}class Ls{constructor(t,s,r="user",n=!0){ee(this,"table");ee(this,"secured");ee(this,"api");this.table=t,this.secured=n,this.api=new tt(s,r,n)}async insert(t){return await this.api.post(`${this.table}`,t)}async insertMany(t){return await this.api.doQuery(`${this.table}/batch`,Z.POST,t)}async update(t){return await this.api.patch(`${this.table}/${t.id}`,t)}async get(t,s){return await this.api.get(`${this.table}`,t,s)}async export(t){const s=et(`${this.table}/export`,void 0,t);return await this.api.doQuery(s,Z.GET,void 0)}async import(t){return await this.api.doQuery(`${this.table}/import`,Z.POST,t)}async commonGet(t){return await this.api.doQuery(Mt(`${this.table}/common`,t),Z.GET)}async getById(t){return await this.api.doQuery(`${this.table}/${t}`)}async softDelete(t){return await this.api.delete(`${this.table}`,t)}async restore(t){return await this.api.patch(`${this.table}/restore`,t)}}class Vs{constructor(t,s,r=1){ee(this,"table");ee(this,"dbName");ee(this,"version");ee(this,"db",null);this.table=t,this.dbName=s,this.version=r}open(){return this.db?Promise.resolve(this.db):new Promise((t,s)=>{const r=indexedDB.open(this.dbName,this.version);r.onupgradeneeded=n=>{const i=n.target.result;i.objectStoreNames.contains(this.table)||i.createObjectStore(this.table,{keyPath:"id",autoIncrement:!0})},r.onsuccess=n=>{this.db=n.target.result,t(this.db)},r.onerror=n=>{s(n.target.error)}})}transaction(t){return this.open().then(s=>s.transaction(this.table,t).objectStore(this.table))}request(t){return new Promise((s,r)=>{t.onsuccess=()=>s(t.result),t.onerror=()=>r(t.error)})}async insert(t){const s=await this.transaction("readwrite"),r=await this.request(s.add(t));return{...t,id:r}}async insertMany(t){const s=await this.transaction("readwrite");let r=0;for(const n of t)r=await this.request(s.add(n));return{...t[t.length-1],id:r}}async update(t){const s=await this.transaction("readwrite");return await this.request(s.put(t)),t}async get(t,s){var p;const r=await this.transaction("readonly"),n=await this.request(r.getAll()),i=this.applyFilter(n,s),a=(t==null?void 0:t.sortingBy)??"id",c=((p=t==null?void 0:t.sortingOrder)==null?void 0:p.toLowerCase())??"asc";i.sort((v,k)=>{const E=v[a],R=k[a];return E<R?c==="asc"?-1:1:E>R?c==="asc"?1:-1:0});const l=(t==null?void 0:t.pageSize)??10,h=(t==null?void 0:t.currentPage)??0,y=i.length,g=Math.ceil(y/l),f=i.slice(h*l,h*l+l);return{sort:a,order:c,currentPage:h,pageSize:l,totalElements:y,totalPages:g,items:f}}async export(t){const s=await this.transaction("readonly"),r=await this.request(s.getAll());return this.applyFilter(r,t)}async import(t){const s=await this.transaction("readwrite");let r=0;for(const n of t.items)t.override?await this.request(s.put(n)):await this.request(s.add(n)),r++;return r}async commonGet(t){const s=await this.transaction("readonly"),r=await this.request(s.getAll());return this.applyFilter(r,t)}async getById(t){const s=await this.transaction("readonly"),r=await this.request(s.get(t));if(!r)throw new Error(`Record ${t} not found in ${this.table}`);return r}async softDelete(t){const s=await this.transaction("readwrite");let r=0;for(const n of t){const i=await this.request(s.get(n));i&&(await this.request(s.put({...i,deletedAt:new Date})),r++)}return r}async restore(t){const s=await this.transaction("readwrite");let r=0;for(const n of t){const i=await this.request(s.get(n));i&&(await this.request(s.put({...i,deletedAt:null})),r++)}return r}applyFilter(t,s){return s?t.filter(r=>Object.keys(s).every(n=>s[n]===void 0||r[n]===s[n])):t}}function Is(e){return Object.keys(e).filter(t=>isNaN(Number(t))).map(t=>({key:t,value:e[t]}))}const st=(e,t="")=>{const s=localStorage.getItem(e)??void 0;if(s&&t.length)switch(t){case"object":return JSON.parse(s);case"number":return Number(s);case"boolean":return s==="true"||s==="1";default:return s}return s},Ye=(e,t)=>localStorage.setItem(e,typeof t=="object"?JSON.stringify(t):t),Xe=e=>localStorage.removeItem(e);function Ps(e){const t=e?new Date(e):new Date,s={weekday:"long",day:"numeric",month:"long",year:"numeric",hour:"numeric",minute:"2-digit",hour12:!0};return t.toLocaleString(navigator.language||"es-ES",s)}function Ms(e){const t=e?new Date(e):new Date,s=String(t.getDate()).padStart(2,"0"),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getFullYear()).slice(-2),i=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${s}/${r}/${n} ${i}:${a}`}function Os(e){const t=e?new Date(e):new Date,s=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${s}-${r}-${n}T${i}:${a}`}const Rt=()=>{var s;const e=navigator,t=((s=e==null?void 0:e.userAgentData)==null?void 0:s.platform)||(e==null?void 0:e.platform)||"";return/Mac|iPhone|iPod|iPad/i.test(t)};function Fe(e){if(!e||typeof e!="object")return!1;const t=e;return Array.isArray(t.errors)&&t.errors.every(s=>Array.isArray(s)&&s.length===2&&typeof s[0]=="string")}function je(e){if(!e||typeof e!="object")return!1;const t=e;return typeof(t==null?void 0:t.status)=="number"&&typeof(t==null?void 0:t.message)=="string"}function Rs(e,t){return e!=null&&e.errors?e.errors.map(([s,r])=>t(s,r)):[]}const Ut=b.createContext({});function Us(e){const{children:t}=e,s=b.useRef(0),[r,n]=b.useReducer((g,f)=>{const{type:p,items:v,id:k}=f;switch(p){case"set":return v??[];case"remove":return k!==void 0?g.filter(E=>E.id!==k):[]}return g},[],()=>[]),i=g=>g.map(f=>({...f,id:s.current++})),a=g=>n({type:"set",items:i([{...g,type:W.error}])}),c=g=>n({type:"set",items:i([{...g}])}),l=g=>n({type:"set",items:i(g)}),h=g=>n({type:"set",items:i([{...g,type:W.success}])}),y=g=>n({type:"remove",id:g});return d.jsx(Ut.Provider,{value:{notification:r,removeNotification:y,showErrorNotification:a,showNotification:c,showSuccessNotification:h,showStackNotifications:l},children:t})}const xe=()=>{const e=b.useContext(Ut);if(e===void 0)throw new Error("NotificationContext must be used within a Provider");return e},me=new we.QueryClient({defaultOptions:{queries:{refetchInterval:!1,refetchOnMount:!0,refetchOnReconnect:!1,retry:!1,retryOnMount:!0,refetchOnWindowFocus:!1}}}),qt=b.createContext(void 0),qs=e=>{const{children:t,manager:s}=e;return d.jsx(qt.Provider,{value:{client:s},children:d.jsx(we.QueryClientProvider,{client:me,children:t})})},Bt=()=>{const e=b.useContext(qt);if(!e)throw new Error("managerContext must be used within a Provider");return e.client},Ht=b.createContext(void 0),Bs=e=>{const{children:t,guestMode:s="guest_mode",user:r="user"}=e,n=Bt(),[i,a]=b.useState({}),c=b.useCallback(()=>!!st(s,"boolean")&&i.token===void 0,[i.token,s]),l=b.useCallback(p=>{Ye(s,p)},[s]),h=b.useCallback(p=>{p&&(a(p),Xe(s),Ye(r,p.token))},[s,r]),y=b.useCallback(async()=>{try{await n.Auth.logout()}catch(p){console.error(p)}a({}),Xe(r)},[n.Auth,r]),g=b.useCallback(async()=>{try{const p=await n.Auth.getSession();h(p)}catch(p){console.error(p),y()}},[h,y,n.Auth]),f={account:i,logUser:h,logoutUser:y,logUserFromLocal:g,isInGuestMode:c,setGuestMode:l};return d.jsx(Ht.Provider,{value:f,children:t})},rt=()=>{const e=b.useContext(Ht);if(!e)throw new Error("authContext must be used within a Provider");return e},Qt=b.createContext({}),Hs=e=>{const{children:t,location:s,navigate:r,linkComponent:n,searchComponent:i}=e;return d.jsx(Qt.Provider,{value:{location:s,navigate:r,linkComponent:n,searchComponent:i},children:t})},ke=()=>{const e=b.useContext(Qt);if(e===void 0||Object.keys(e).length===0)throw new Error("Config provider has not been set. This step is required and cannot be skipped.");return e},nt=b.createContext({}),Qs=e=>{const{children:t}=e,[s,r]=b.useState({}),n=b.useCallback((l,h)=>r(y=>({...y,[l]:[...y[l]??[],h]})),[]),i=b.useCallback((l,h)=>r(y=>({...y,[l]:(y[l]??[]).filter((g,f)=>f!==h)})),[]),a=b.useCallback(l=>{r(l?h=>({...h,[l]:[]}):{})},[]),c=b.useMemo(()=>({dynamicItems:s,addChildItem:n,removeChildItem:i,clearDynamicItems:a}),[s,a,i,n]);return d.jsx(nt.Provider,{value:c,children:t})},Kt=()=>b.useContext(nt);function Ks(e){const{t}=S.useTranslation(),{open:s,onClose:r,menuMap:n,logo:i}=e,{account:a}=rt(),{dynamicItems:c}=Kt(),{linkComponent:l,location:h}=ke(),y=l,g=b.useMemo(()=>n.filter(E=>{const R=E.auth,T=!!(a!=null&&a.email);return R==null||R&&T||!R&&!T}),[a==null?void 0:a.email,n]),f=b.useCallback(E=>{E.key==="Escape"&&s&&r()},[r,s]);b.useEffect(()=>(document.addEventListener("keydown",f),()=>{document.removeEventListener("keydown",f)}),[f]);const p=b.useCallback((E,R)=>R?E===`${h.pathname}${h.search}`:E===h.pathname,[h.pathname,h.search]),v=b.useCallback(E=>d.jsx("li",{className:`drawer-list-item-child ${p(E.path,!0)?"active":""} animated`,children:E.path?d.jsx(y,{tabIndex:s?0:-1,to:E.path??"/","aria-label":t(`_accessibility:ariaLabels.${E.id}`,{defaultValue:E.label}),className:"drawer-link",children:E.label}):E.label},E.id),[y,s,t,p]),k=b.useMemo(()=>g.map((E,R)=>{const T=E.page??String(R),D=`drawer-list-item ${p(E.path)?"active":""} animated`;if(E.type==="divider")return d.jsx("li",{className:D,children:d.jsx("hr",{className:"drawer-divider"})},T);const F=E.children??(E.page&&c?c[E.page]:null);return d.jsxs("li",{className:D,children:[d.jsxs(y,{tabIndex:s?0:-1,to:E.path??"/","aria-label":t(`_accessibility:ariaLabels.${String(E.page)}`,{defaultValue:t(`_pages:${String(E.page)}.title`)}),className:"drawer-link",children:[E.icon,t(`_pages:${E.page}.title`)]}),F&&d.jsx("ul",{className:"drawer-children-list",children:F.map(v)})]},T)}),[y,c,p,s,g,v,t]);return d.jsx("div",{"aria-label":t("_accessibility:ariaLabels.closeMenu"),"aria-disabled":!s,className:`${s?"opened":"closed"} drawer-backdrop`,onClick:()=>r(),children:d.jsxs("aside",{className:`${s?"opened":"closed"} drawer animated`,children:[d.jsxs("div",{className:"drawer-header-container",children:[i,d.jsx("h2",{className:"drawer-header poppins",children:t("_pages:home.appName")})]}),d.jsx("ul",{className:"drawer-menu-list",children:k})]})})}function Ws(e){const{error:t,resetErrorBoundary:s}=e,{t:r}=S.useTranslation();return d.jsxs("div",{className:"error-container",children:[d.jsx(oe.FontAwesomeIcon,{icon:Cs.faSadTear,className:"error-icon"}),d.jsx("p",{className:"error-message",children:(t==null?void 0:t.message)??r("_accessibility:errors.unknownError")}),s&&d.jsx("button",{className:"error-retry",onClick:s,children:r("_accessibility:actions.retry",{defaultValue:"Retry"})})]})}function Gs(){const{t:e,language:t}=S.useTranslation();return{timeAge:b.useCallback(r=>{const i=new Date-r,a=Math.floor(i/(1e3*60)),c=Math.floor(a/60),l=t==="es",h=e("_accessibility:labels.ago"),y=e("_accessibility:labels.minute"),g=e("_accessibility:labels.minutes"),f=e("_accessibility:labels.hour"),p=e("_accessibility:labels.hours"),v=e("_accessibility:labels.yesterday"),k=e("_accessibility:labels.justNow");return i<1e3*60?k:a<60?`${l?h:""} ${a} ${a===1?y:g} ${l?"":h}`:c<24?`${l?h:""} ${c} ${c===1?f:p} ${l?"":h}`:c<48?v:r.toLocaleDateString(navigator.language||"es-ES",{day:"2-digit",month:"2-digit",year:"numeric"})},[e,t])}}const it=e=>{const{showSuccessNotification:t}=xe(),{mutationFn:s,onError:r,onSuccess:n,onSuccessMessage:i}=e,[a,c]=b.useState([]),{open:l,handleClose:h,handleOpen:y}=dt(),g=()=>{h(),c([])},f=async v=>{c(v),y()},p=we.useMutation({mutationFn:()=>s(Array.isArray(a)?a:[a]),onError:v=>{console.error(v),r&&r(v),g()},onSuccess:async v=>{n&&n(v),t({message:i}),g()}});return{open:l,onClick:f,close:g,dialogFn:p,isLoading:p.isPending}};var De=e=>e.type==="checkbox",Ce=e=>e instanceof Date,X=e=>e==null;const Wt=e=>typeof e=="object";var H=e=>!X(e)&&!Array.isArray(e)&&Wt(e)&&!Ce(e),zs=e=>H(e)&&e.target?De(e.target)?e.target.checked:e.target.value:e,Js=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,Ys=(e,t)=>e.has(Js(t)),Xs=e=>{const t=e.constructor&&e.constructor.prototype;return H(t)&&t.hasOwnProperty("isPrototypeOf")},at=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function z(e){let t;const s=Array.isArray(e),r=typeof FileList<"u"?e instanceof FileList:!1;if(e instanceof Date)t=new Date(e);else if(!(at&&(e instanceof Blob||r))&&(s||H(e)))if(t=s?[]:{},!s&&!Xs(e))t=e;else for(const n in e)e.hasOwnProperty(n)&&(t[n]=z(e[n]));else return e;return t}var qe=e=>/^\w*$/.test(e),K=e=>e===void 0,ot=e=>Array.isArray(e)?e.filter(Boolean):[],ct=e=>ot(e.replace(/["|']|\]/g,"").split(/\.|\[/)),_=(e,t,s)=>{if(!t||!H(e))return s;const r=(qe(t)?[t]:ct(t)).reduce((n,i)=>X(n)?n:n[i],e);return K(r)||r===e?K(e[t])?s:e[t]:r},de=e=>typeof e=="boolean",U=(e,t,s)=>{let r=-1;const n=qe(t)?[t]:ct(t),i=n.length,a=i-1;for(;++r<i;){const c=n[r];let l=s;if(r!==a){const h=e[c];l=H(h)||Array.isArray(h)?h:isNaN(+n[r+1])?{}:[]}if(c==="__proto__"||c==="constructor"||c==="prototype")return;e[c]=l,e=e[c]}};const St={BLUR:"blur",FOCUS_OUT:"focusout"},le={onBlur:"onBlur",onChange:"onChange",onSubmit:"onSubmit",onTouched:"onTouched",all:"all"},ge={max:"max",min:"min",maxLength:"maxLength",minLength:"minLength",pattern:"pattern",required:"required",validate:"validate"},Zs=b.createContext(null);Zs.displayName="HookFormContext";var er=(e,t,s,r=!0)=>{const n={defaultValues:t._defaultValues};for(const i in e)Object.defineProperty(n,i,{get:()=>{const a=i;return t._proxyFormState[a]!==le.all&&(t._proxyFormState[a]=!r||le.all),e[a]}});return n};const tr=typeof window<"u"?b.useLayoutEffect:b.useEffect;var fe=e=>typeof e=="string",sr=(e,t,s,r,n)=>fe(e)?(r&&t.watch.add(e),_(s,e,n)):Array.isArray(e)?e.map(i=>(r&&t.watch.add(i),_(s,i))):(r&&(t.watchAll=!0),s),Ze=e=>X(e)||!Wt(e);function pe(e,t,s=new WeakSet){if(Ze(e)||Ze(t))return e===t;if(Ce(e)&&Ce(t))return e.getTime()===t.getTime();const r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;if(s.has(e)||s.has(t))return!0;s.add(e),s.add(t);for(const i of r){const a=e[i];if(!n.includes(i))return!1;if(i!=="ref"){const c=t[i];if(Ce(a)&&Ce(c)||H(a)&&H(c)||Array.isArray(a)&&Array.isArray(c)?!pe(a,c,s):a!==c)return!1}}return!0}var rr=(e,t,s,r,n)=>t?{...s[e],types:{...s[e]&&s[e].types?s[e].types:{},[r]:n||!0}}:{},Te=e=>Array.isArray(e)?e:[e],_t=()=>{let e=[];return{get observers(){return e},next:n=>{for(const i of e)i.next&&i.next(n)},subscribe:n=>(e.push(n),{unsubscribe:()=>{e=e.filter(i=>i!==n)}}),unsubscribe:()=>{e=[]}}},te=e=>H(e)&&!Object.keys(e).length,lt=e=>e.type==="file",ue=e=>typeof e=="function",Pe=e=>{if(!at)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},Gt=e=>e.type==="select-multiple",ut=e=>e.type==="radio",nr=e=>ut(e)||De(e),Ge=e=>Pe(e)&&e.isConnected;function ir(e,t){const s=t.slice(0,-1).length;let r=0;for(;r<s;)e=K(e)?r++:e[t[r++]];return e}function ar(e){for(const t in e)if(e.hasOwnProperty(t)&&!K(e[t]))return!1;return!0}function Q(e,t){const s=Array.isArray(t)?t:qe(t)?[t]:ct(t),r=s.length===1?e:ir(e,s),n=s.length-1,i=s[n];return r&&delete r[i],n!==0&&(H(r)&&te(r)||Array.isArray(r)&&ar(r))&&Q(e,s.slice(0,-1)),e}var zt=e=>{for(const t in e)if(ue(e[t]))return!0;return!1};function Me(e,t={}){const s=Array.isArray(e);if(H(e)||s)for(const r in e)Array.isArray(e[r])||H(e[r])&&!zt(e[r])?(t[r]=Array.isArray(e[r])?[]:{},Me(e[r],t[r])):X(e[r])||(t[r]=!0);return t}function Jt(e,t,s){const r=Array.isArray(e);if(H(e)||r)for(const n in e)Array.isArray(e[n])||H(e[n])&&!zt(e[n])?K(t)||Ze(s[n])?s[n]=Array.isArray(e[n])?Me(e[n],[]):{...Me(e[n])}:Jt(e[n],X(t)?{}:t[n],s[n]):s[n]=!pe(e[n],t[n]);return s}var Ae=(e,t)=>Jt(e,t,Me(t));const kt={value:!1,isValid:!1},At={value:!0,isValid:!0};var Yt=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(s=>s&&s.checked&&!s.disabled).map(s=>s.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!K(e[0].attributes.value)?K(e[0].value)||e[0].value===""?At:{value:e[0].value,isValid:!0}:At:kt}return kt},Xt=(e,{valueAsNumber:t,valueAsDate:s,setValueAs:r})=>K(e)?e:t?e===""?NaN:e&&+e:s&&fe(e)?new Date(e):r?r(e):e;const Et={isValid:!1,value:null};var Zt=e=>Array.isArray(e)?e.reduce((t,s)=>s&&s.checked&&!s.disabled?{isValid:!0,value:s.value}:t,Et):Et;function Tt(e){const t=e.ref;return lt(t)?t.files:ut(t)?Zt(e.refs).value:Gt(t)?[...t.selectedOptions].map(({value:s})=>s):De(t)?Yt(e.refs).value:Xt(K(t.value)?e.ref.value:t.value,e)}var or=(e,t,s,r)=>{const n={};for(const i of e){const a=_(t,i);a&&U(n,i,a._f)}return{criteriaMode:s,names:[...e],fields:n,shouldUseNativeValidation:r}},Oe=e=>e instanceof RegExp,Ee=e=>K(e)?e:Oe(e)?e.source:H(e)?Oe(e.value)?e.value.source:e.value:e,Nt=e=>({isOnSubmit:!e||e===le.onSubmit,isOnBlur:e===le.onBlur,isOnChange:e===le.onChange,isOnAll:e===le.all,isOnTouch:e===le.onTouched});const Ft="AsyncFunction";var cr=e=>!!e&&!!e.validate&&!!(ue(e.validate)&&e.validate.constructor.name===Ft||H(e.validate)&&Object.values(e.validate).find(t=>t.constructor.name===Ft)),lr=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),jt=(e,t,s)=>!s&&(t.watchAll||t.watch.has(e)||[...t.watch].some(r=>e.startsWith(r)&&/^\.\w+/.test(e.slice(r.length))));const Ne=(e,t,s,r)=>{for(const n of s||Object.keys(e)){const i=_(e,n);if(i){const{_f:a,...c}=i;if(a){if(a.refs&&a.refs[0]&&t(a.refs[0],n)&&!r)return!0;if(a.ref&&t(a.ref,a.name)&&!r)return!0;if(Ne(c,t))break}else if(H(c)&&Ne(c,t))break}}};function Dt(e,t,s){const r=_(e,s);if(r||qe(s))return{error:r,name:s};const n=s.split(".");for(;n.length;){const i=n.join("."),a=_(t,i),c=_(e,i);if(a&&!Array.isArray(a)&&s!==i)return{name:s};if(c&&c.type)return{name:i,error:c};if(c&&c.root&&c.root.type)return{name:`${i}.root`,error:c.root};n.pop()}return{name:s}}var ur=(e,t,s,r)=>{s(e);const{name:n,...i}=e;return te(i)||Object.keys(i).length>=Object.keys(t).length||Object.keys(i).find(a=>t[a]===(!r||le.all))},dr=(e,t,s)=>!e||!t||e===t||Te(e).some(r=>r&&(s?r===t:r.startsWith(t)||t.startsWith(r))),fr=(e,t,s,r,n)=>n.isOnAll?!1:!s&&n.isOnTouch?!(t||e):(s?r.isOnBlur:n.isOnBlur)?!e:(s?r.isOnChange:n.isOnChange)?e:!0,mr=(e,t)=>!ot(_(e,t)).length&&Q(e,t),hr=(e,t,s)=>{const r=Te(_(e,s));return U(r,"root",t[s]),U(e,s,r),e},Ie=e=>fe(e);function $t(e,t,s="validate"){if(Ie(e)||Array.isArray(e)&&e.every(Ie)||de(e)&&!e)return{type:s,message:Ie(e)?e:"",ref:t}}var Se=e=>H(e)&&!Oe(e)?e:{value:e,message:""},Lt=async(e,t,s,r,n,i)=>{const{ref:a,refs:c,required:l,maxLength:h,minLength:y,min:g,max:f,pattern:p,validate:v,name:k,valueAsNumber:E,mount:R}=e._f,T=_(s,k);if(!R||t.has(k))return{};const D=c?c[0]:a,F=j=>{n&&D.reportValidity&&(D.setCustomValidity(de(j)?"":j||""),D.reportValidity())},N={},L=ut(a),P=De(a),se=L||P,V=(E||lt(a))&&K(a.value)&&K(T)||Pe(a)&&a.value===""||T===""||Array.isArray(T)&&!T.length,re=rr.bind(null,k,r,N),ie=(j,$,q,G=ge.maxLength,J=ge.minLength)=>{const M=j?$:q;N[k]={type:j?G:J,message:M,ref:a,...re(j?G:J,M)}};if(i?!Array.isArray(T)||!T.length:l&&(!se&&(V||X(T))||de(T)&&!T||P&&!Yt(c).isValid||L&&!Zt(c).isValid)){const{value:j,message:$}=Ie(l)?{value:!!l,message:l}:Se(l);if(j&&(N[k]={type:ge.required,message:$,ref:D,...re(ge.required,$)},!r))return F($),N}if(!V&&(!X(g)||!X(f))){let j,$;const q=Se(f),G=Se(g);if(!X(T)&&!isNaN(T)){const J=a.valueAsNumber||T&&+T;X(q.value)||(j=J>q.value),X(G.value)||($=J<G.value)}else{const J=a.valueAsDate||new Date(T),M=ce=>new Date(new Date().toDateString()+" "+ce),Y=a.type=="time",ne=a.type=="week";fe(q.value)&&T&&(j=Y?M(T)>M(q.value):ne?T>q.value:J>new Date(q.value)),fe(G.value)&&T&&($=Y?M(T)<M(G.value):ne?T<G.value:J<new Date(G.value))}if((j||$)&&(ie(!!j,q.message,G.message,ge.max,ge.min),!r))return F(N[k].message),N}if((h||y)&&!V&&(fe(T)||i&&Array.isArray(T))){const j=Se(h),$=Se(y),q=!X(j.value)&&T.length>+j.value,G=!X($.value)&&T.length<+$.value;if((q||G)&&(ie(q,j.message,$.message),!r))return F(N[k].message),N}if(p&&!V&&fe(T)){const{value:j,message:$}=Se(p);if(Oe(j)&&!T.match(j)&&(N[k]={type:ge.pattern,message:$,ref:a,...re(ge.pattern,$)},!r))return F($),N}if(v){if(ue(v)){const j=await v(T,s),$=$t(j,D);if($&&(N[k]={...$,...re(ge.validate,$.message)},!r))return F($.message),N}else if(H(v)){let j={};for(const $ in v){if(!te(j)&&!r)break;const q=$t(await v[$](T,s),D,$);q&&(j={...q,...re($,q.message)},F(q.message),r&&(N[k]=j))}if(!te(j)&&(N[k]={ref:D,...j},!r))return N}}return F(!0),N};const gr={mode:le.onSubmit,reValidateMode:le.onChange,shouldFocusError:!0};function yr(e={}){let t={...gr,...e},s={submitCount:0,isDirty:!1,isReady:!1,isLoading:ue(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},r={},n=H(t.defaultValues)||H(t.values)?z(t.defaultValues||t.values)||{}:{},i=t.shouldUnregister?{}:z(n),a={action:!1,mount:!1,watch:!1},c={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},l,h=0;const y={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1};let g={...y};const f={array:_t(),state:_t()},p=t.criteriaMode===le.all,v=o=>u=>{clearTimeout(h),h=setTimeout(o,u)},k=async o=>{if(!t.disabled&&(y.isValid||g.isValid||o)){const u=t.resolver?te((await P()).errors):await V(r,!0);u!==s.isValid&&f.state.next({isValid:u})}},E=(o,u)=>{!t.disabled&&(y.isValidating||y.validatingFields||g.isValidating||g.validatingFields)&&((o||Array.from(c.mount)).forEach(m=>{m&&(u?U(s.validatingFields,m,u):Q(s.validatingFields,m))}),f.state.next({validatingFields:s.validatingFields,isValidating:!te(s.validatingFields)}))},R=(o,u=[],m,C,x=!0,w=!0)=>{if(C&&m&&!t.disabled){if(a.action=!0,w&&Array.isArray(_(r,o))){const A=m(_(r,o),C.argA,C.argB);x&&U(r,o,A)}if(w&&Array.isArray(_(s.errors,o))){const A=m(_(s.errors,o),C.argA,C.argB);x&&U(s.errors,o,A),mr(s.errors,o)}if((y.touchedFields||g.touchedFields)&&w&&Array.isArray(_(s.touchedFields,o))){const A=m(_(s.touchedFields,o),C.argA,C.argB);x&&U(s.touchedFields,o,A)}(y.dirtyFields||g.dirtyFields)&&(s.dirtyFields=Ae(n,i)),f.state.next({name:o,isDirty:ie(o,u),dirtyFields:s.dirtyFields,errors:s.errors,isValid:s.isValid})}else U(i,o,u)},T=(o,u)=>{U(s.errors,o,u),f.state.next({errors:s.errors})},D=o=>{s.errors=o,f.state.next({errors:s.errors,isValid:!1})},F=(o,u,m,C)=>{const x=_(r,o);if(x){const w=_(i,o,K(m)?_(n,o):m);K(w)||C&&C.defaultChecked||u?U(i,o,u?w:Tt(x._f)):q(o,w),a.mount&&k()}},N=(o,u,m,C,x)=>{let w=!1,A=!1;const I={name:o};if(!t.disabled){if(!m||C){(y.isDirty||g.isDirty)&&(A=s.isDirty,s.isDirty=I.isDirty=ie(),w=A!==I.isDirty);const O=pe(_(n,o),u);A=!!_(s.dirtyFields,o),O?Q(s.dirtyFields,o):U(s.dirtyFields,o,!0),I.dirtyFields=s.dirtyFields,w=w||(y.dirtyFields||g.dirtyFields)&&A!==!O}if(m){const O=_(s.touchedFields,o);O||(U(s.touchedFields,o,m),I.touchedFields=s.touchedFields,w=w||(y.touchedFields||g.touchedFields)&&O!==m)}w&&x&&f.state.next(I)}return w?I:{}},L=(o,u,m,C)=>{const x=_(s.errors,o),w=(y.isValid||g.isValid)&&de(u)&&s.isValid!==u;if(t.delayError&&m?(l=v(()=>T(o,m)),l(t.delayError)):(clearTimeout(h),l=null,m?U(s.errors,o,m):Q(s.errors,o)),(m?!pe(x,m):x)||!te(C)||w){const A={...C,...w&&de(u)?{isValid:u}:{},errors:s.errors,name:o};s={...s,...A},f.state.next(A)}},P=async o=>{E(o,!0);const u=await t.resolver(i,t.context,or(o||c.mount,r,t.criteriaMode,t.shouldUseNativeValidation));return E(o),u},se=async o=>{const{errors:u}=await P(o);if(o)for(const m of o){const C=_(u,m);C?U(s.errors,m,C):Q(s.errors,m)}else s.errors=u;return u},V=async(o,u,m={valid:!0})=>{for(const C in o){const x=o[C];if(x){const{_f:w,...A}=x;if(w){const I=c.array.has(w.name),O=x._f&&cr(x._f);O&&y.validatingFields&&E([C],!0);const ae=await Lt(x,c.disabled,i,p,t.shouldUseNativeValidation&&!u,I);if(O&&y.validatingFields&&E([C]),ae[w.name]&&(m.valid=!1,u))break;!u&&(_(ae,w.name)?I?hr(s.errors,ae,w.name):U(s.errors,w.name,ae[w.name]):Q(s.errors,w.name))}!te(A)&&await V(A,u,m)}}return m.valid},re=()=>{for(const o of c.unMount){const u=_(r,o);u&&(u._f.refs?u._f.refs.every(m=>!Ge(m)):!Ge(u._f.ref))&&Be(o)}c.unMount=new Set},ie=(o,u)=>!t.disabled&&(o&&u&&U(i,o,u),!pe(ce(),n)),j=(o,u,m)=>sr(o,c,{...a.mount?i:K(u)?n:fe(o)?{[o]:u}:u},m,u),$=o=>ot(_(a.mount?i:n,o,t.shouldUnregister?_(n,o,[]):[])),q=(o,u,m={})=>{const C=_(r,o);let x=u;if(C){const w=C._f;w&&(!w.disabled&&U(i,o,Xt(u,w)),x=Pe(w.ref)&&X(u)?"":u,Gt(w.ref)?[...w.ref.options].forEach(A=>A.selected=x.includes(A.value)):w.refs?De(w.ref)?w.refs.forEach(A=>{(!A.defaultChecked||!A.disabled)&&(Array.isArray(x)?A.checked=!!x.find(I=>I===A.value):A.checked=x===A.value||!!x)}):w.refs.forEach(A=>A.checked=A.value===x):lt(w.ref)?w.ref.value="":(w.ref.value=x,w.ref.type||f.state.next({name:o,values:z(i)})))}(m.shouldDirty||m.shouldTouch)&&N(o,x,m.shouldTouch,m.shouldDirty,!0),m.shouldValidate&&ne(o)},G=(o,u,m)=>{for(const C in u){if(!u.hasOwnProperty(C))return;const x=u[C],w=o+"."+C,A=_(r,w);(c.array.has(o)||H(x)||A&&!A._f)&&!Ce(x)?G(w,x,m):q(w,x,m)}},J=(o,u,m={})=>{const C=_(r,o),x=c.array.has(o),w=z(u);U(i,o,w),x?(f.array.next({name:o,values:z(i)}),(y.isDirty||y.dirtyFields||g.isDirty||g.dirtyFields)&&m.shouldDirty&&f.state.next({name:o,dirtyFields:Ae(n,i),isDirty:ie(o,w)})):C&&!C._f&&!X(w)?G(o,w,m):q(o,w,m),jt(o,c)&&f.state.next({...s,name:o}),f.state.next({name:a.mount?o:void 0,values:z(i)})},M=async o=>{a.mount=!0;const u=o.target;let m=u.name,C=!0;const x=_(r,m),w=O=>{C=Number.isNaN(O)||Ce(O)&&isNaN(O.getTime())||pe(O,_(i,m,O))},A=Nt(t.mode),I=Nt(t.reValidateMode);if(x){let O,ae;const Le=u.type?Tt(x._f):zs(o),be=o.type===St.BLUR||o.type===St.FOCUS_OUT,bs=!lr(x._f)&&!t.resolver&&!_(s.errors,m)&&!x._f.deps||fr(be,_(s.touchedFields,m),s.isSubmitted,I,A),Ke=jt(m,c,be);U(i,m,Le),be?(x._f.onBlur&&x._f.onBlur(o),l&&l(0)):x._f.onChange&&x._f.onChange(o);const We=N(m,Le,be),ps=!te(We)||Ke;if(!be&&f.state.next({name:m,type:o.type,values:z(i)}),bs)return(y.isValid||g.isValid)&&(t.mode==="onBlur"?be&&k():be||k()),ps&&f.state.next({name:m,...Ke?{}:We});if(!be&&Ke&&f.state.next({...s}),t.resolver){const{errors:xt}=await P([m]);if(w(Le),C){const ws=Dt(s.errors,r,m),vt=Dt(xt,r,ws.name||m);O=vt.error,m=vt.name,ae=te(xt)}}else E([m],!0),O=(await Lt(x,c.disabled,i,p,t.shouldUseNativeValidation))[m],E([m]),w(Le),C&&(O?ae=!1:(y.isValid||g.isValid)&&(ae=await V(r,!0)));C&&(x._f.deps&&ne(x._f.deps),L(m,ae,O,We))}},Y=(o,u)=>{if(_(s.errors,u)&&o.focus)return o.focus(),1},ne=async(o,u={})=>{let m,C;const x=Te(o);if(t.resolver){const w=await se(K(o)?o:x);m=te(w),C=o?!x.some(A=>_(w,A)):m}else o?(C=(await Promise.all(x.map(async w=>{const A=_(r,w);return await V(A&&A._f?{[w]:A}:A)}))).every(Boolean),!(!C&&!s.isValid)&&k()):C=m=await V(r);return f.state.next({...!fe(o)||(y.isValid||g.isValid)&&m!==s.isValid?{}:{name:o},...t.resolver||!o?{isValid:m}:{},errors:s.errors}),u.shouldFocus&&!C&&Ne(r,Y,o?x:c.mount),C},ce=o=>{const u={...a.mount?i:n};return K(o)?u:fe(o)?_(u,o):o.map(m=>_(u,m))},$e=(o,u)=>({invalid:!!_((u||s).errors,o),isDirty:!!_((u||s).dirtyFields,o),error:_((u||s).errors,o),isValidating:!!_(s.validatingFields,o),isTouched:!!_((u||s).touchedFields,o)}),ve=o=>{o&&Te(o).forEach(u=>Q(s.errors,u)),f.state.next({errors:o?s.errors:{}})},mt=(o,u,m)=>{const C=(_(r,o,{_f:{}})._f||{}).ref,x=_(s.errors,o)||{},{ref:w,message:A,type:I,...O}=x;U(s.errors,o,{...O,...u,ref:C}),f.state.next({name:o,errors:s.errors,isValid:!1}),m&&m.shouldFocus&&C&&C.focus&&C.focus()},ds=(o,u)=>ue(o)?f.state.subscribe({next:m=>"values"in m&&o(j(void 0,u),m)}):j(o,u,!0),ht=o=>f.state.subscribe({next:u=>{dr(o.name,u.name,o.exact)&&ur(u,o.formState||y,ys,o.reRenderRoot)&&o.callback({values:{...i},...s,...u,defaultValues:n})}}).unsubscribe,fs=o=>(a.mount=!0,g={...g,...o.formState},ht({...o,formState:g})),Be=(o,u={})=>{for(const m of o?Te(o):c.mount)c.mount.delete(m),c.array.delete(m),u.keepValue||(Q(r,m),Q(i,m)),!u.keepError&&Q(s.errors,m),!u.keepDirty&&Q(s.dirtyFields,m),!u.keepTouched&&Q(s.touchedFields,m),!u.keepIsValidating&&Q(s.validatingFields,m),!t.shouldUnregister&&!u.keepDefaultValue&&Q(n,m);f.state.next({values:z(i)}),f.state.next({...s,...u.keepDirty?{isDirty:ie()}:{}}),!u.keepIsValid&&k()},gt=({disabled:o,name:u})=>{(de(o)&&a.mount||o||c.disabled.has(u))&&(o?c.disabled.add(u):c.disabled.delete(u))},He=(o,u={})=>{let m=_(r,o);const C=de(u.disabled)||de(t.disabled);return U(r,o,{...m||{},_f:{...m&&m._f?m._f:{ref:{name:o}},name:o,mount:!0,...u}}),c.mount.add(o),m?gt({disabled:de(u.disabled)?u.disabled:t.disabled,name:o}):F(o,!0,u.value),{...C?{disabled:u.disabled||t.disabled}:{},...t.progressive?{required:!!u.required,min:Ee(u.min),max:Ee(u.max),minLength:Ee(u.minLength),maxLength:Ee(u.maxLength),pattern:Ee(u.pattern)}:{},name:o,onChange:M,onBlur:M,ref:x=>{if(x){He(o,u),m=_(r,o);const w=K(x.value)&&x.querySelectorAll&&x.querySelectorAll("input,select,textarea")[0]||x,A=nr(w),I=m._f.refs||[];if(A?I.find(O=>O===w):w===m._f.ref)return;U(r,o,{_f:{...m._f,...A?{refs:[...I.filter(Ge),w,...Array.isArray(_(n,o))?[{}]:[]],ref:{type:w.type,name:o}}:{ref:w}}}),F(o,!1,void 0,w)}else m=_(r,o,{}),m._f&&(m._f.mount=!1),(t.shouldUnregister||u.shouldUnregister)&&!(Ys(c.array,o)&&a.action)&&c.unMount.add(o)}}},Qe=()=>t.shouldFocusError&&Ne(r,Y,c.mount),ms=o=>{de(o)&&(f.state.next({disabled:o}),Ne(r,(u,m)=>{const C=_(r,m);C&&(u.disabled=C._f.disabled||o,Array.isArray(C._f.refs)&&C._f.refs.forEach(x=>{x.disabled=C._f.disabled||o}))},0,!1))},yt=(o,u)=>async m=>{let C;m&&(m.preventDefault&&m.preventDefault(),m.persist&&m.persist());let x=z(i);if(f.state.next({isSubmitting:!0}),t.resolver){const{errors:w,values:A}=await P();s.errors=w,x=z(A)}else await V(r);if(c.disabled.size)for(const w of c.disabled)Q(x,w);if(Q(s.errors,"root"),te(s.errors)){f.state.next({errors:{}});try{await o(x,m)}catch(w){C=w}}else u&&await u({...s.errors},m),Qe(),setTimeout(Qe);if(f.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:te(s.errors)&&!C,submitCount:s.submitCount+1,errors:s.errors}),C)throw C},hs=(o,u={})=>{_(r,o)&&(K(u.defaultValue)?J(o,z(_(n,o))):(J(o,u.defaultValue),U(n,o,z(u.defaultValue))),u.keepTouched||Q(s.touchedFields,o),u.keepDirty||(Q(s.dirtyFields,o),s.isDirty=u.defaultValue?ie(o,z(_(n,o))):ie()),u.keepError||(Q(s.errors,o),y.isValid&&k()),f.state.next({...s}))},bt=(o,u={})=>{const m=o?z(o):n,C=z(m),x=te(o),w=x?n:C;if(u.keepDefaultValues||(n=m),!u.keepValues){if(u.keepDirtyValues){const A=new Set([...c.mount,...Object.keys(Ae(n,i))]);for(const I of Array.from(A))_(s.dirtyFields,I)?U(w,I,_(i,I)):J(I,_(w,I))}else{if(at&&K(o))for(const A of c.mount){const I=_(r,A);if(I&&I._f){const O=Array.isArray(I._f.refs)?I._f.refs[0]:I._f.ref;if(Pe(O)){const ae=O.closest("form");if(ae){ae.reset();break}}}}if(u.keepFieldsRef)for(const A of c.mount)J(A,_(w,A));else r={}}i=t.shouldUnregister?u.keepDefaultValues?z(n):{}:z(w),f.array.next({values:{...w}}),f.state.next({values:{...w}})}c={mount:u.keepDirtyValues?c.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},a.mount=!y.isValid||!!u.keepIsValid||!!u.keepDirtyValues,a.watch=!!t.shouldUnregister,f.state.next({submitCount:u.keepSubmitCount?s.submitCount:0,isDirty:x?!1:u.keepDirty?s.isDirty:!!(u.keepDefaultValues&&!pe(o,n)),isSubmitted:u.keepIsSubmitted?s.isSubmitted:!1,dirtyFields:x?{}:u.keepDirtyValues?u.keepDefaultValues&&i?Ae(n,i):s.dirtyFields:u.keepDefaultValues&&o?Ae(n,o):u.keepDirty?s.dirtyFields:{},touchedFields:u.keepTouched?s.touchedFields:{},errors:u.keepErrors?s.errors:{},isSubmitSuccessful:u.keepIsSubmitSuccessful?s.isSubmitSuccessful:!1,isSubmitting:!1})},pt=(o,u)=>bt(ue(o)?o(i):o,u),gs=(o,u={})=>{const m=_(r,o),C=m&&m._f;if(C){const x=C.refs?C.refs[0]:C.ref;x.focus&&(x.focus(),u.shouldSelect&&ue(x.select)&&x.select())}},ys=o=>{s={...s,...o}},wt={control:{register:He,unregister:Be,getFieldState:$e,handleSubmit:yt,setError:mt,_subscribe:ht,_runSchema:P,_focusError:Qe,_getWatch:j,_getDirty:ie,_setValid:k,_setFieldArray:R,_setDisabledField:gt,_setErrors:D,_getFieldArray:$,_reset:bt,_resetDefaultValues:()=>ue(t.defaultValues)&&t.defaultValues().then(o=>{pt(o,t.resetOptions),f.state.next({isLoading:!1})}),_removeUnmounted:re,_disableForm:ms,_subjects:f,_proxyFormState:y,get _fields(){return r},get _formValues(){return i},get _state(){return a},set _state(o){a=o},get _defaultValues(){return n},get _names(){return c},set _names(o){c=o},get _formState(){return s},get _options(){return t},set _options(o){t={...t,...o}}},subscribe:fs,trigger:ne,register:He,handleSubmit:yt,watch:ds,setValue:J,getValues:ce,reset:pt,resetField:hs,clearErrors:ve,unregister:Be,setError:mt,setFocus:gs,getFieldState:$e};return{...wt,formControl:wt}}function es(e={}){const t=b.useRef(void 0),s=b.useRef(void 0),[r,n]=b.useState({isDirty:!1,isValidating:!1,isLoading:ue(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:ue(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:r},e.defaultValues&&!ue(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:a,...c}=yr(e);t.current={...c,formState:r}}const i=t.current.control;return i._options=e,tr(()=>{const a=i._subscribe({formState:i._proxyFormState,callback:()=>n({...i._formState}),reRenderRoot:!0});return n(c=>({...c,isReady:!0})),i._formState.isReady=!0,a},[i]),b.useEffect(()=>i._disableForm(e.disabled),[i,e.disabled]),b.useEffect(()=>{e.mode&&(i._options.mode=e.mode),e.reValidateMode&&(i._options.reValidateMode=e.reValidateMode)},[i,e.mode,e.reValidateMode]),b.useEffect(()=>{e.errors&&(i._setErrors(e.errors),i._focusError())},[i,e.errors]),b.useEffect(()=>{e.shouldUnregister&&i._subjects.state.next({values:i._getWatch()})},[i,e.shouldUnregister]),b.useEffect(()=>{if(i._proxyFormState.isDirty){const a=i._getDirty();a!==r.isDirty&&i._subjects.state.next({isDirty:a})}},[i,r.isDirty]),b.useEffect(()=>{e.values&&!pe(e.values,s.current)?(i._reset(e.values,{keepFieldsRef:!0,...i._options.resetOptions}),s.current=e.values,n(a=>({...a}))):i._resetDefaultValues()},[i,e.values]),b.useEffect(()=>{i._state.mount||(i._setValid(),i._state.mount=!0),i._state.watch&&(i._state.watch=!1,i._subjects.state.next({...i._formState})),i._removeUnmounted()}),t.current.formState=er(r,i),t.current}const br=e=>{const{t}=S.useTranslation(),{showStackNotifications:s,showSuccessNotification:r}=xe(),{defaultValues:n,mutationFn:i,formToDto:a,onError:c,onSuccess:l,queryKey:h,onSuccessMessage:y}=e,{control:g,handleSubmit:f,reset:p,setError:v,getValues:k,setValue:E}=es({defaultValues:n}),R=b.useCallback(F=>{const N=F==null?void 0:F.errors,L=[];return N&&N.forEach(([P,se])=>{const V=document.querySelector(`[name="${P}"]`);(V instanceof HTMLInputElement||V instanceof HTMLTextAreaElement||V instanceof HTMLSelectElement)&&(V.focus(),V.classList.add("error"),L.push(t(`_entities:${h}.${P}.${se}`)))}),L},[t,h]),T=b.useCallback(()=>{document.querySelectorAll("input, textarea, select").forEach(N=>{N.classList.remove("error")})},[]),D=we.useMutation({mutationFn:i,onError:F=>{console.error(F);const N=F;if(c)c(F);else if(Fe(N)){const L=R(N);s(L.map(P=>({message:P,type:W.error})))}else if(je(N)){const L=N.message||t("_accessibility:errors.500"),P=t(`_accessibility:errors.${N.status}`);s([{message:P||L,type:W.error}])}},onSuccess:async F=>{me&&await me.invalidateQueries({queryKey:h}),l&&l(F),y&&r({message:y})}});return{control:g,getValues:k,setValue:E,handleSubmit:f,onSubmit:F=>{T(),D.mutate(a?a(F):F)},reset:p,setError:v,isLoading:D.isPending}},ts=e=>{const{t}=S.useTranslation(),{onClick:s,icon:r=B.faTrash,sticky:n=!0,hidden:i=!1,multiple:a=!0,disabled:c=!1,id:l=ye.Delete,tooltip:h=t("_pages:common.actions.delete.text")}=e;return{action:b.useCallback(g=>({id:l,sticky:n,tooltip:h,multiple:a,onClick:()=>s([g==null?void 0:g.id]),hidden:!!g.deletedAt||i,disabled:!!g.deletedAt||c,icon:d.jsx(oe.FontAwesomeIcon,{className:"text-bg-error",icon:r}),onMultipleClick:f=>s(f.map(p=>p.id))}),[c,i,r,l,a,s,n,h])}},ss=e=>{const{t}=S.useTranslation(),{onClick:s,sticky:r=!0,hidden:n=!1,disabled:i=!1,multiple:a=!1,icon:c=B.faRotateLeft,id:l=ye.Restore,tooltip:h=t("_pages:common.actions.restore.text")}=e;return{action:b.useCallback(g=>({id:l,sticky:r,tooltip:h,multiple:a,onClick:()=>s([g==null?void 0:g.id]),hidden:!g.deletedAt||n,disabled:!g.deletedAt||i,icon:d.jsx(oe.FontAwesomeIcon,{className:"text-bg-error",icon:c}),onMultipleClick:f=>s(f.map(p=>p.id))}),[i,n,c,l,a,s,r,h])}},pr=e=>{const{t}=S.useTranslation(),{onClick:s,hidden:r=!1,sticky:n=!0,disabled:i=!1,id:a=ye.Edit,icon:c=B.faPencil,tooltip:l=t("_pages:common.actions.edit.text")}=e;return{action:b.useCallback(y=>({id:a,sticky:n,tooltip:l,onClick:()=>s(y==null?void 0:y.id),hidden:!!y.deletedAt||r,disabled:!!y.deletedAt||i,icon:d.jsx(oe.FontAwesomeIcon,{className:"primary",icon:c})}),[i,r,c,a,s,n,l])}};var ye=(e=>(e.Add="add",e.Edit="edit",e.Delete="delete",e.Restore="restore",e.Refresh="refresh",e.Export="export",e.Import="import",e))(ye||{});const rs=e=>{const{t}=S.useTranslation(),{onClick:s,hidden:r=!1,disabled:n=!1,isLoading:i=!1}=e;return{action:b.useCallback(()=>({id:ye.Export,hidden:r,disabled:n,icon:d.jsx(oe.FontAwesomeIcon,{className:`${i?"rotate":""}`,icon:i?B.faCircleNotch:B.faCloudArrowDown}),tooltip:t("_pages:common.actions.export.text"),onClick:s}),[n,r,i,s,t])}},ns=e=>{const{t}=S.useTranslation(),{onClick:s,hidden:r=!1,disabled:n=!1,isLoading:i=!1}=e;return{action:b.useCallback(()=>({id:ye.Import,hidden:r,disabled:n,icon:d.jsx(oe.FontAwesomeIcon,{className:`${i?"rotate":""}`,icon:i?B.faCircleNotch:B.faCloudUpload}),tooltip:t("_pages:common.actions.import.text"),onClick:s}),[n,r,i,s,t])}},wr=e=>{const{queryKey:t,onSuccess:s,...r}=e,{showStackNotifications:n}=xe(),{t:i}=S.useTranslation(),{open:a,onClick:c,close:l,dialogFn:h,isLoading:y}=it({onSuccessMessage:i("_pages:common.actions.delete.successMessage"),onError:f=>{const p=f;if(Fe(p))n(p.errors.map(([v,k])=>({message:i(`_pages:${v}.errors.${k}`),type:W.error})));else if(je(p)){const v=p.message||i("_accessibility:errors.500"),k=i(`_accessibility:errors.${p.status}`);n([{message:k||v,type:W.error}])}},onSuccess:async f=>{await me.invalidateQueries({queryKey:t}),s&&s(f)},...r}),{action:g}=ts({onClick:c});return{onClick:c,title:i("_pages:common.actions.delete.dialog.title"),open:a,isLoading:y,handleSubmit:()=>h.mutate(),handleClose:l,action:g}},dt=()=>{const[e,t]=b.useState(!1);return{open:e,setOpen:t,handleClose:()=>t(!1),handleOpen:()=>t(!0)}},xr=e=>{const{t}=S.useTranslation(),{showErrorNotification:s,showStackNotifications:r,showSuccessNotification:n}=xe(),{defaultValues:i,getFunction:a,mutationFn:c,formToDto:l,dtoToForm:h,onError:y,onSuccess:g,queryKey:f,onSuccessMessage:p,title:v}=e,[k,E]=b.useState(0),{open:R,handleClose:T,handleOpen:D}=dt(),{control:F,handleSubmit:N,reset:L,setError:P,getValues:se,setValue:V}=es({defaultValues:i}),{data:re,isLoading:ie}=we.useQuery({queryFn:()=>a==null?void 0:a(k),queryKey:[...f,k],enabled:!!a&&!!f&&!!k});b.useEffect(()=>{re&&h&&L({...h(re)})},[re]);const j=b.useCallback(M=>{const Y=M==null?void 0:M.errors,ne=[];return Y&&Y.forEach(([ce,$e])=>{const ve=document.querySelector(`[name="${ce}"]`);(ve instanceof HTMLInputElement||ve instanceof HTMLTextAreaElement||ve instanceof HTMLSelectElement)&&(ve.focus(),ve.classList.add("error"),ne.push(t(`_entities:${f}.${ce}.${$e}`)))}),ne},[t,f]),$=b.useCallback(()=>{document.querySelectorAll("input, textarea, select").forEach(Y=>{Y.classList.remove("error")})},[]),q=b.useCallback(M=>{E(M??0),D()},[D]),G=b.useCallback(()=>{$(),T(),L()},[L,$,T]),J=we.useMutation({mutationFn:c,onError:M=>{if(console.error(M),y)y(M);else{const Y=M;if(Fe(Y)){const ne=j(Y);r(ne.map(ce=>({message:ce,type:W.error})))}else if(je(Y)){const ne=Y.message||t("_accessibility:errors.500"),ce=t(`_accessibility:errors.${Y.status}`);s({message:ce||ne})}else s({message:t("_accessibility:errors.500")})}},onSuccess:async M=>{await me.invalidateQueries({queryKey:f}),g&&g(M),n({message:p}),G()}});return{open:R,openDialog:q,handleClose:G,control:F,getValues:se,setValue:V,handleSubmit:N,onSubmit:M=>J.mutate(l?l(M):M),reset:L,setError:P,title:v,isLoading:ie||J.isPending}},vr=e=>{const{queryKey:t,onSuccess:s,...r}=e,{showStackNotifications:n}=xe(),{t:i}=S.useTranslation(),{open:a,onClick:c,close:l,dialogFn:h,isLoading:y}=it({onSuccessMessage:i("_pages:common.actions.restore.successMessage"),onError:f=>{const p=f;if(Fe(p))n(p.errors.map(([v,k])=>({message:i(`_pages:${v}.errors.${k}`),type:W.error})));else if(je(p)){const v=p.message||i("_accessibility:errors.500"),k=i(`_accessibility:errors.${p.status}`);n([{message:k||v,type:W.error}])}},onSuccess:async f=>{await me.invalidateQueries({queryKey:t}),s&&s(f)},...r}),{action:g}=ss({onClick:c});return{onClick:c,title:i("_pages:common.actions.restore.dialog.title"),open:a,isLoading:y,handleSubmit:()=>h.mutate(),handleClose:l,action:g}};function Cr(e){const{t}=S.useTranslation(),{queryKey:s,mutationFn:r,entity:n,fileProcessor:i,onError:a}=e,[c,l]=b.useState(!1),[h,y]=b.useState(null),[g,f]=b.useState(!1),p=we.useMutation({mutationFn:r,onError:k=>{console.error(k),a==null||a(k)},onSuccess:async()=>{me&&await me.invalidateQueries({queryKey:s})}}),{action:v}=ns({onClick:()=>l(!0)});return{handleSubmit:async()=>{if(!(!h||h.length===0))try{await p.mutateAsync({items:h,override:g}),l(!1),y(null),f(!1)}catch(k){console.error(k)}},isLoading:p.isPending,fileProcessor:i,onFileProcessed:k=>y(k),onOverrideChange:k=>f(k),open:c,title:t("_pages:common.actions.import.dialog.title",{entity:t(`_pages:${n}.title`)}),handleClose:()=>{l(!1),y(null)},action:v}}const Sr=e=>{const{showSuccessNotification:t}=xe(),{t:s}=S.useTranslation(),{entity:r,mutationFn:n,onError:i,onSuccess:a,onSuccessMessage:c=s("_pages:common.actions.export.successMessage")}=e,l=we.useMutation({mutationFn:()=>n(),onError:g=>{console.error(g),i&&i(g)},onSuccess:async g=>{const f=JSON.stringify(g,null,2),p=new Blob([f],{type:"application/json"}),v=URL.createObjectURL(p),k=document.createElement("a");k.href=v,k.download=`${r}.json`,k.click(),URL.revokeObjectURL(v),a&&a(g),t({message:c})}}),h=b.useCallback(()=>{l.mutate()},[l]),{action:y}=rs({onClick:h,isLoading:l.isPending});return{action:y}};function is(e){const[t,s]=b.useState(!1),r=b.useCallback(()=>{const n=window.scrollY>e;s(n)},[e]);return b.useEffect(()=>(window.addEventListener("scroll",r),()=>{window.removeEventListener("scroll",r)}),[r]),t}const _r=e=>{const{showBackButton:t,title:s,actions:r}=e,{t:n}=S.useTranslation(),{navigate:i}=ke();return d.jsxs("div",{className:"page-header",children:[d.jsxs("div",{className:"page-header-left",children:[t&&d.jsx(he,{icon:B.faArrowLeft,onClick:()=>i(-1),name:n("_accessibility:buttons.back"),"data-tooltip-id":"tooltip","data-tooltip-content":n("_accessibility:buttons.back")}),d.jsx("h2",{className:"page-header-title",children:s})]}),d.jsxs("div",{children:[d.jsx(S.Actions,{className:"page-header-actions-desktop",actions:r??[]}),d.jsx(S.ActionsDropdown,{className:"page-header-actions-mobile",actions:r??[]})]})]})},kr=e=>{const{title:t,children:s,addOptions:r,filterOptions:n,actions:i,queryKey:a,isLoading:c=!1,isAnimated:l=!0,showBackButton:h=!1}=e,{t:y}=S.useTranslation(),{countOfFilters:g}=S.useTableOptions(),f=b.useMemo(()=>{const p=Array.isArray(i)?[...i]:[];if(a){const v={id:ye.Refresh,onClick:()=>me.invalidateQueries({queryKey:a}),icon:d.jsx(oe.FontAwesomeIcon,{icon:B.faRotateLeft}),tooltip:y("_pages:common.actions.refresh.text")};p.unshift(v)}if(r){const v={...r,id:ye.Add,icon:d.jsx(oe.FontAwesomeIcon,{icon:B.faAdd})};p.unshift(v)}if(n){const v={...n,id:"filter",icon:d.jsx(oe.FontAwesomeIcon,{icon:B.faFilter}),children:d.jsx(S.Badge,{className:`${g>0?"show":"hide"} `,count:g})};p.push(v)}return p},[i,r,g,n,a,y]);return d.jsxs("main",{className:"page-main",children:[d.jsx(_r,{showBackButton:h,actions:f,title:t}),d.jsx("div",{className:`page-main-content ${l?"appear":""}`,children:c?d.jsx(S.Loading,{className:"page-loading"}):s}),r&&d.jsx(he,{icon:r.icon??B.faAdd,color:r.color??"primary",variant:r.variant??"submit",onClick:()=>{var p;return(p=r.onClick)==null?void 0:p.call(r)},className:`button fab ${r.className??""}`})]})},Ar=e=>{const{t}=S.useTranslation(),{className:s="",itemClassName:r="",loading:n=!1,emptyComponent:i=null,emptyMessage:a=t("_accessibility:messages.empty"),renderComponent:c,data:l=[]}=e;return n?d.jsx(S.Loading,{}):d.jsx(d.Fragment,{children:l!=null&&l.length?d.jsx("ul",{className:`pretty-grid-main ${s}`,children:l==null?void 0:l.map(h=>d.jsx("li",{className:`pretty-grid-item ${r}`,children:c(h)},h.id))}):d.jsx(d.Fragment,{children:i||d.jsx(us,{message:a})})})},ft=b.createContext({title:"",setTitle:()=>{},rightContent:null,setRightContent:()=>{}}),Er=e=>{const{children:t}=e,[s,r]=b.useState(""),[n,i]=b.useState(null),a=b.useCallback(h=>{r(h)},[]),c=b.useCallback(h=>{i(h)},[]),l=b.useMemo(()=>({title:s,setTitle:a,rightContent:n,setRightContent:c}),[s,a,n,c]);return d.jsx(ft.Provider,{value:l,children:t})},as=()=>b.useContext(ft);function Tr(e){const{t}=S.useTranslation(),{openDrawer:s,showSearch:r=!0,menuButtonProps:n}=e,{searchComponent:i,location:a}=ke(),{title:c,rightContent:l}=as(),[h,y]=b.useState(!1),g=b.useCallback(p=>{(Rt()?p.metaKey:p.ctrlKey)&&p.shiftKey&&p.key.toLowerCase()==="f"&&(y(!0),p.preventDefault())},[]);b.useEffect(()=>(window.addEventListener("keydown",g),()=>{window.removeEventListener("keydown",g)}),[g]);const f=i;return d.jsxs(d.Fragment,{children:[a.pathname!=="/"&&!!f&&d.jsx(f,{open:h,onClose:()=>y(!1)}),d.jsxs("header",{id:"header",className:"header",children:[d.jsxs("div",{className:"navbar-left",children:[d.jsx(he,{...n,type:(n==null?void 0:n.type)??"button",icon:(n==null?void 0:n.icon)??B.faBars,onClick:p=>{var v;(v=n==null?void 0:n.onClick)==null||v.call(n,p),s()},name:(n==null?void 0:n.name)??t("_accessibility:buttons.openMenu"),"aria-label":(n==null?void 0:n["aria-label"])??t("_accessibility:ariaLabels.openMenu"),className:`navbar-menu animated ${(n==null?void 0:n.className)??""}`}),d.jsx("h1",{className:"poppins navbar-title",children:c||t("_pages:home.appName")})]}),d.jsxs("div",{className:"navbar-right",children:[l,r&&d.jsx(he,{icon:B.faSearch,className:"navbar-search-btn",onClick:()=>y(!0)})]})]})]})}const he=({icon:e,...t})=>d.jsx(S.IconButton,{icon:d.jsx(oe.FontAwesomeIcon,{icon:e}),...t});var ze,Vt;function Nr(){if(Vt)return ze;Vt=1;const e=(c,l="local",h=void 0)=>{if(l==="local"){if(localStorage.getItem(c)!==void 0&&localStorage.getItem(c)!=="undefined"&&localStorage.getItem(c)!==null)return h===void 0||h!==void 0&&localStorage.getItem(c)===h}else if(l==="session"&&sessionStorage.getItem(c)!==void 0&&sessionStorage.getItem(c)!=="undefined"&&sessionStorage.getItem(c)!==null)return h===void 0||h!==void 0&&sessionStorage.getItem(c)===h;return!1},t=c=>{const l={};return c.substring(1).split("&").forEach(y=>{const[g,f]=y.split("=");l[g]=f}),l},s=(c="")=>{if(i(c)&&c.length)return i(c);{let l=navigator.language||navigator.userLanguage;if(l.indexOf("en")<0&&l.indexOf("es")<0&&(l="en-US"),l=l.split("-")[0],l)return c.length&&n(c,730,l),l}return"en"},r=(c=0,l=0,h=window,y="smooth")=>h.scroll({top:c,left:l,behavior:y}),n=(c,l,h,y="/",g="Lax")=>{var f=new Date;f.setTime(f.getTime()+l*24*60*60*1e3);const p="; expires="+f.toUTCString();document.cookie=`${c}=${h||""}${p};path=${y};SameSite=${g}`},i=c=>{const l=`${c}=`,y=decodeURIComponent(document.cookie).split(";");for(let g=0;g<y.length;g+=1){let f=y[g];for(;f.charAt(0)===" ";)f=f.substring(1);if(f.indexOf(l)===0)return f.substring(l.length,f.length)}return""};return ze={getCookie:i,createCookie:n,deleteCookie:c=>document.cookie=`${c}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`,getUserLanguage:s,scrollTo:r,parseQueries:t,validation:e},ze}var Fr=Nr();const jr=()=>{const{t:e}=S.useTranslation(),t=is(200);return d.jsx(he,{variant:"submit",color:"primary",icon:B.faArrowUp,"data-tooltip-id":"tooltip",onClick:()=>Fr.scrollTo(0,0),className:`to-top ${t?"show":"hide"}`,"data-tooltip-content":e("_accessibility:buttons.toTop")})},Ve=300,Dr=e=>e??W.error,$r=e=>{switch(e){case W.error:return B.faWarning;default:return B.faCircleCheck}},Je=e=>{switch(e){case W.success:return"!text-success";case W.error:return"!text-error";case W.warning:return"!text-warning";default:return"!text-info"}},Lr=e=>{switch(e){case W.success:return"bg-bg-success";case W.error:return"bg-bg-error";case W.warning:return"bg-bg-warning";default:return"bg-bg-info"}};function Vr(){const{t:e}=S.useTranslation(),{notification:t,removeNotification:s}=xe(),[r,n]=b.useState([]),i=b.useRef(r);b.useLayoutEffect(()=>{i.current=r});const a=b.useRef(null),c=b.useCallback(l=>{n(h=>l!==void 0?h.map(y=>y.id===l?{...y,closing:!0}:y):h.map(y=>({...y,closing:!0}))),l!==void 0?setTimeout(()=>{s(l),n(h=>h.filter(y=>y.id!==l))},Ve):(a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{s(),n([]),a.current=null},Ve))},[s]);return b.useEffect(()=>{let l=null;const h=()=>{l&&clearTimeout(l),a.current&&(clearTimeout(a.current),a.current=null)};if(t.length===0)return i.current.length===0?void 0:(a.current&&clearTimeout(a.current),l=setTimeout(()=>{n(p=>p.map(v=>({...v,closing:!0}))),l=null},0),a.current=setTimeout(()=>{n([]),a.current=null},Ve),h);const y=new Set(i.current.map(p=>p.id));if(!t.some(p=>p.id!==void 0&&!y.has(p.id)))return;if(i.current.length===0){const p=[...t];return l=setTimeout(()=>{n(p.map(v=>({...v,closing:!1}))),l=null},0),()=>{l&&clearTimeout(l)}}a.current&&clearTimeout(a.current),l=setTimeout(()=>{n(p=>p.every(v=>v.closing)?p:p.map(v=>({...v,closing:!0}))),l=null},0);const f=[...t];return a.current=setTimeout(()=>{n(f.map(p=>({...p,closing:!1}))),a.current=null},Ve),h},[t]),b.useEffect(()=>{if(!r.length)return;let l;const h=window.setTimeout(()=>{l=()=>c(),window.addEventListener("click",l)},0),y=g=>{g.key==="Escape"&&c()};return window.addEventListener("keydown",y),()=>{window.clearTimeout(h),l&&window.removeEventListener("click",l),window.removeEventListener("keydown",y)}},[r.length,c]),It.createPortal(d.jsx("div",{className:`notification-portal ${r.length?"active":""}`,children:r.map(({id:l,type:h,message:y,closing:g})=>{const f=Dr(h);return d.jsxs("div",{className:`notification ${g?"closing":""} ${Lr(f)}`,onClick:p=>p.stopPropagation(),children:[d.jsxs("div",{className:"notification-body",children:[d.jsx(oe.FontAwesomeIcon,{icon:$r(f),className:`notification-icon ${Je(f)}`}),d.jsx("p",{className:`notification-text ${Je(f)}`,children:y})]}),d.jsx(he,{type:"button",icon:B.faClose,color:"error",className:"notification-close group",onClick:p=>{p.stopPropagation(),l!==void 0&&c(l)},iconClassName:`${Je(f)} notification-close-icon`,name:e("_accessibility:buttons.closeNotification"),"aria-label":e("_accessibility:ariaLabels.closeNotification")})]},l)})}),document.body)}function Ir(e){const{className:t,...s}=e;return d.jsx("div",{className:"splash-screen",children:d.jsx(S.Loading,{className:`blur-appear ${t?` ${t}`:""}`,...s})})}const os=e=>{const{id:t,active:s,onClick:r,children:n,to:i}=e,{linkComponent:a}=ke(),c=a;return d.jsx(c,{to:i??`#${t}`,onClick:()=>r(),className:`button submit tab ${s?"primary":"outlined"}`,children:n})},cs=e=>{var l;const{tabs:t=[],defaultTab:s,className:r="",tabsContainerClassName:n=""}=e,[i,a]=b.useState(s??((l=t[0])==null?void 0:l.id)),c=b.useMemo(()=>t.find(h=>h.id===i),[t,i]);return d.jsxs("div",{className:`tabs-layout-main ${r}`,children:[d.jsx("ul",{className:`horizontal tabs tabs-container ${n}`,children:t.map(({id:h,to:y,label:g})=>d.jsx("li",{children:d.jsx(os,{onClick:()=>a(h),id:h,to:y??"",siblings:t.length>1,active:i===h,children:g})},h))}),c==null?void 0:c.content]})},ls=e=>{const{translation:t,onClickNext:s,image:r="",alt:n="",final:i=!1}=e,{setGuestMode:a}=rt(),{navigate:c}=ke(),{t:l}=S.useTranslation();return d.jsxs("div",{className:"big-appear step-container",children:[r&&d.jsx("img",{src:r,alt:n}),d.jsx("h2",{className:"step-title",children:l(`_pages:onboarding.${t}.title`)}),d.jsx("p",{className:"step-body",children:l(`_pages:onboarding.${t}.body`)}),d.jsx("div",{className:"step-actions",children:i?d.jsxs(d.Fragment,{children:[d.jsx(S.Button,{color:"primary",className:"step-button",variant:"outlined",onClick:()=>{a(!0),c("/")},"aria-label":l("_accessibility:ariaLabels.start"),children:l("_accessibility:buttons.startAsGuest")}),d.jsx(S.Button,{color:"primary",variant:"submit",className:"step-button","aria-label":l("_accessibility:ariaLabels.start"),onClick:()=>c("/auth/sign-in"),children:l("_accessibility:buttons.signIn")})]}):d.jsxs(d.Fragment,{children:[d.jsx(S.Button,{color:"primary",className:"step-button",variant:"outlined",onClick:()=>c("/auth/sign-in"),"aria-label":l("_accessibility:ariaLabels.skip"),children:l("_accessibility:buttons.skip")}),d.jsx(S.Button,{color:"primary",className:"step-button",variant:"outlined",onClick:()=>s(),"aria-label":l("_accessibility:ariaLabels.next"),children:l("_accessibility:buttons.next")})]})})]})},Pr=e=>{const{steps:t}=e,[s,r]=b.useState(1),n=b.useMemo(()=>t.map((i,a)=>({id:a+1,label:"",content:d.jsx(ls,{translation:i,final:a===t.length-1,onClickNext:()=>r(c=>c+1)})})),[t]);return d.jsx("div",{className:"onboarding-main",children:d.jsx(cs,{defaultTab:s,tabs:n})})},us=e=>{const{message:t,messageProps:s={className:"empty-message"},action:r,iconProps:n}=e;return d.jsxs("div",{className:"empty-container",children:[n&&d.jsx(oe.FontAwesomeIcon,{...n}),d.jsx("p",{...s,children:t}),r&&d.jsx(S.Action,{showTooltips:!1,showText:!0,...r})]})};Object.defineProperty(exports,"Action",{enumerable:!0,get:()=>S.Action});Object.defineProperty(exports,"Actions",{enumerable:!0,get:()=>S.Actions});Object.defineProperty(exports,"ActionsDropdown",{enumerable:!0,get:()=>S.ActionsDropdown});Object.defineProperty(exports,"Button",{enumerable:!0,get:()=>S.Button});exports.APIClient=tt;exports.AppIconButton=he;exports.AuthClient=Ot;exports.AuthProvider=Bs;exports.BaseClient=Ls;exports.ConfigProvider=Hs;exports.ConfirmationDialog=Es;exports.Dialog=Re;exports.DialogActions=Ue;exports.Drawer=Ks;exports.DrawerMenuContext=nt;exports.DrawerMenuProvider=Qs;exports.Empty=us;exports.Error=Ws;exports.FormContainer=_s;exports.FormDialog=As;exports.GlobalActions=ye;exports.IManager=$s;exports.IconButton=he;exports.ImportDialog=Ds;exports.IndexedDBClient=Vs;exports.ManagerProvider=qs;exports.Methods=Z;exports.Navbar=Tr;exports.NavbarContext=ft;exports.NavbarProvider=Er;exports.Notification=Vr;exports.NotificationEnumType=W;exports.NotificationProvider=Us;exports.Onboarding=Pr;exports.Page=kr;exports.ParagraphInput=Ss;exports.PasswordInput=ks;exports.PrettyGrid=Ar;exports.SplashScreen=Ir;exports.Step=ls;exports.Tab=os;exports.TabsLayout=cs;exports.ToTop=jr;exports.buildQueryUrl=Mt;exports.enumToKeyValueArray=Is;exports.formatForDatetimeLocal=Os;exports.fromLocal=st;exports.getFormattedDateTime=Ps;exports.getShortFormattedDateTime=Ms;exports.isHttpError=je;exports.isMac=Rt;exports.isValidationError=Fe;exports.makeRequest=_e;exports.mapValidationErrors=Rs;exports.parseQueries=et;exports.queryClient=me;exports.removeFromLocal=Xe;exports.toLocal=Ye;exports.useAuth=rt;exports.useConfig=ke;exports.useConfirmationForm=it;exports.useDeleteAction=ts;exports.useDeleteDialog=wr;exports.useDialog=dt;exports.useDrawerMenu=Kt;exports.useEditAction=pr;exports.useExportAction=rs;exports.useExportActionMutate=Sr;exports.useFormDialog=xr;exports.useImportAction=ns;exports.useImportDialog=Cr;exports.useManager=Bt;exports.useNavbar=as;exports.useNotification=xe;exports.usePostForm=br;exports.useRestoreAction=ss;exports.useRestoreDialog=vr;exports.useScrollTrigger=is;exports.useTimeAge=Gs;Object.keys(S).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>S[e]})});