diff --git a/.gitignore b/.gitignore index 3c3629e..bf64d24 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,9 @@ node_modules +dist +/backend/dist +/backend/node_modules +/frontend/dist +/frontend/node_modules +/frontend/.angular/cache +/.vscode + diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/0.pack b/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/0.pack new file mode 100644 index 0000000..338f354 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/0.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/1.pack b/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/1.pack new file mode 100644 index 0000000..b10ad50 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/1.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/2.pack b/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/2.pack new file mode 100644 index 0000000..2ce00b6 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/2.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/index.pack b/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/index.pack new file mode 100644 index 0000000..b79e227 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/index.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/index.pack.old b/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/index.pack.old new file mode 100644 index 0000000..66e9f27 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/2b050c6ebdcbed732473c2c288113e53d6f794bb/index.pack.old differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/0.pack b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/0.pack index 32aacf7..a851a89 100644 Binary files a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/0.pack and b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/0.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/2.pack b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/2.pack index f64b249..4e6c455 100644 Binary files a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/2.pack and b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/2.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/3.pack b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/3.pack index cd9b559..71765d0 100644 Binary files a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/3.pack and b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/3.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/4.pack b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/4.pack new file mode 100644 index 0000000..a5dfbb8 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/4.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/5.pack b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/5.pack new file mode 100644 index 0000000..ecc082b Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/5.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/index.pack b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/index.pack index 3635d77..d7c4123 100644 Binary files a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/index.pack and b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/index.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/index.pack.old b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/index.pack.old index 11a97b8..c7086f6 100644 Binary files a/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/index.pack.old and b/frontend/.angular/cache/18.2.21/angular-webpack/3e780800b46bc0d4741420d2ad9c5d24a62ffcc0/index.pack.old differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/3ec86829ba397a0dacb71e905f2d158501da8fb9/0.pack b/frontend/.angular/cache/18.2.21/angular-webpack/3ec86829ba397a0dacb71e905f2d158501da8fb9/0.pack new file mode 100644 index 0000000..280a130 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/3ec86829ba397a0dacb71e905f2d158501da8fb9/0.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/3ec86829ba397a0dacb71e905f2d158501da8fb9/index.pack b/frontend/.angular/cache/18.2.21/angular-webpack/3ec86829ba397a0dacb71e905f2d158501da8fb9/index.pack new file mode 100644 index 0000000..4689137 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/3ec86829ba397a0dacb71e905f2d158501da8fb9/index.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/0.pack b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/0.pack new file mode 100644 index 0000000..fdb4378 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/0.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/1.pack b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/1.pack new file mode 100644 index 0000000..f16b7ab Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/1.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/2.pack b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/2.pack new file mode 100644 index 0000000..4553e0e Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/2.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/3.pack b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/3.pack new file mode 100644 index 0000000..66e8e85 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/3.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/4.pack b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/4.pack new file mode 100644 index 0000000..885b767 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/4.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/5.pack b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/5.pack new file mode 100644 index 0000000..7afaeb5 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/5.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/6.pack b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/6.pack new file mode 100644 index 0000000..430d860 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/6.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/index.pack b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/index.pack new file mode 100644 index 0000000..d45277c Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/index.pack differ diff --git a/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/index.pack.old b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/index.pack.old new file mode 100644 index 0000000..42c79f0 Binary files /dev/null and b/frontend/.angular/cache/18.2.21/angular-webpack/675a08689f6127cf79b79a209ffe92c70b7fa769/index.pack.old differ diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/11e8451b5ba73e533903a663d033cc394518316f74a34e4ecb2942b729cb0f9f.json b/frontend/.angular/cache/18.2.21/babel-webpack/11e8451b5ba73e533903a663d033cc394518316f74a34e4ecb2942b729cb0f9f.json new file mode 100644 index 0000000..75aa8a7 --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/11e8451b5ba73e533903a663d033cc394518316f74a34e4ecb2942b729cb0f9f.json @@ -0,0 +1 @@ +{"ast":null,"code":"import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nexport const authGuard = (route, state) => {\n const router = inject(Router);\n const token = localStorage.getItem('kinetix_token');\n if (token) {\n return true;\n }\n // Redirect to login if not authenticated\n router.navigate(['/login']);\n return false;\n};","map":{"version":3,"names":["inject","Router","authGuard","route","state","router","token","localStorage","getItem","navigate"],"sources":["D:\\Jess\\agent\\Kinetix\\frontend\\src\\app\\core\\guards\\auth.guard.ts"],"sourcesContent":["import { inject } from '@angular/core';\nimport { Router, CanActivateFn } from '@angular/router';\n\nexport const authGuard: CanActivateFn = (route, state) => {\n const router = inject(Router);\n const token = localStorage.getItem('kinetix_token');\n\n if (token) {\n return true;\n }\n\n // Redirect to login if not authenticated\n router.navigate(['/login']);\n return false;\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AACtC,SAASC,MAAM,QAAuB,iBAAiB;AAEvD,OAAO,MAAMC,SAAS,GAAkBA,CAACC,KAAK,EAAEC,KAAK,KAAI;EACvD,MAAMC,MAAM,GAAGL,MAAM,CAACC,MAAM,CAAC;EAC7B,MAAMK,KAAK,GAAGC,YAAY,CAACC,OAAO,CAAC,eAAe,CAAC;EAEnD,IAAIF,KAAK,EAAE;IACT,OAAO,IAAI;EACb;EAEA;EACAD,MAAM,CAACI,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;EAC3B,OAAO,KAAK;AACd,CAAC","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/310dfede3739fc14ab18a695e7f4acebab452fe8339781e606d663e3f8fa5400.json b/frontend/.angular/cache/18.2.21/babel-webpack/310dfede3739fc14ab18a695e7f4acebab452fe8339781e606d663e3f8fa5400.json new file mode 100644 index 0000000..dd32c75 --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/310dfede3739fc14ab18a695e7f4acebab452fe8339781e606d663e3f8fa5400.json @@ -0,0 +1 @@ +{"ast":null,"code":"import { signal, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nfunction LoginComponent_Conditional_37_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 25);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r0.errorMsg(), \" \");\n }\n}\nexport let LoginComponent = /*#__PURE__*/(() => {\n class LoginComponent {\n constructor() {\n this.router = inject(Router);\n this.email = '';\n this.password = '';\n this.errorMsg = signal('');\n }\n onEmailChange(event) {\n this.email = event.target.value;\n }\n onPasswordChange(event) {\n this.password = event.target.value;\n }\n loginLocal() {\n if (!this.email || !this.password) {\n this.errorMsg.set('Por favor, ingresa tu correo y contraseña corporativos.');\n return;\n }\n if (this.email.includes('admin') || this.email.includes('kinetix')) {\n // Set local session credentials\n const userName = this.email.split('@')[0];\n const displayName = userName.charAt(0).toUpperCase() + userName.slice(1);\n localStorage.setItem('kinetix_token', 'local-mock-jwt-token-998822');\n localStorage.setItem('kinetix_user', JSON.stringify({\n name: displayName,\n email: this.email,\n role: 'Consortium Manager',\n avatar: displayName.substring(0, 2).toUpperCase()\n }));\n this.router.navigate(['/dashboard']);\n } else {\n this.errorMsg.set('Credenciales locales no encontradas. Intenta usar Active Directory SSO.');\n }\n }\n loginSSO() {\n // Simulate active directory single sign on flow\n localStorage.setItem('kinetix_token', 'ad-jwt-token-microsoft-entra-id-2026');\n localStorage.setItem('kinetix_user', JSON.stringify({\n name: 'Jess Miller',\n email: 'jess.miller@kinetix-consortium.com',\n role: 'Chief Architect & Director',\n avatar: 'JM'\n }));\n this.router.navigate(['/dashboard']);\n }\n static {\n this.ɵfac = function LoginComponent_Factory(t) {\n return new (t || LoginComponent)();\n };\n }\n static {\n this.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n type: LoginComponent,\n selectors: [[\"app-login\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 40,\n vars: 1,\n consts: [[1, \"min-h-[75vh]\", \"flex\", \"items-center\", \"justify-center\", \"relative\", \"overflow-hidden\", \"px-4\"], [1, \"absolute\", \"-right-20\", \"-top-20\", \"w-80\", \"h-80\", \"bg-cyan-500/10\", \"rounded-full\", \"blur-[120px]\"], [1, \"absolute\", \"-left-20\", \"-bottom-20\", \"w-80\", \"h-80\", \"bg-magenta-500/10\", \"rounded-full\", \"blur-[120px]\"], [1, \"glass-panel\", \"p-8\", \"rounded-3xl\", \"w-full\", \"max-w-md\", \"relative\", \"border-white/5\", \"bg-[#0d0f1b]/75\"], [1, \"flex\", \"flex-col\", \"items-center\", \"gap-2\", \"mb-8\", \"text-center\"], [1, \"w-14\", \"h-14\", \"rounded-2xl\", \"bg-gradient-to-tr\", \"from-cyan-400\", \"via-blue-500\", \"to-indigo-500\", \"p-0.5\", \"shadow-[0_0_20px_rgba(0,242,254,0.3)]\"], [1, \"w-full\", \"h-full\", \"bg-[#0a0a0c]\", \"rounded-[14px]\", \"flex\", \"items-center\", \"justify-center\", \"font-black\", \"text-xl\", \"text-cyan-400\"], [1, \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-widest\", \"text-slate-400\"], [1, \"text-2xl\", \"font-black\", \"text-white\", \"tracking-tight\", \"leading-none\", \"mt-1\"], [1, \"text-transparent\", \"bg-clip-text\", \"bg-gradient-to-r\", \"from-cyan-400\", \"to-blue-500\"], [1, \"flex\", \"flex-col\", \"gap-4\"], [1, \"flex\", \"flex-col\", \"gap-1.5\"], [1, \"text-[10px]\", \"uppercase\", \"font-bold\", \"text-slate-400\", \"tracking-wider\"], [\"type\", \"email\", \"placeholder\", \"nombre@kinetix.com\", 1, \"px-4\", \"py-3\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\", 3, \"change\"], [\"type\", \"password\", \"placeholder\", \"\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\", 1, \"px-4\", \"py-3\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\", 3, \"change\"], [1, \"w-full\", \"py-3\", \"rounded-full\", \"btn-cyan\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", \"mt-2\", 3, \"click\"], [1, \"flex\", \"items-center\", \"gap-3\", \"my-3\"], [1, \"flex-grow\", \"border-white/5\"], [1, \"text-[9px]\", \"uppercase\", \"font-bold\", \"text-white/30\", \"tracking-widest\"], [1, \"w-full\", \"py-3\", \"rounded-full\", \"border\", \"border-cyan-500/25\", \"hover:border-cyan-500/50\", \"bg-cyan-950/20\", \"hover:bg-cyan-950/45\", \"text-cyan-400\", \"font-extrabold\", \"text-xs\", \"uppercase\", \"tracking-wider\", \"flex\", \"items-center\", \"justify-center\", \"gap-2.5\", \"transition-all\", 3, \"click\"], [\"viewBox\", \"0 0 23 23\", \"fill\", \"currentColor\", 1, \"w-4\", \"h-4\"], [\"x\", \"0\", \"y\", \"0\", \"width\", \"11\", \"height\", \"11\", \"fill\", \"#f25022\"], [\"x\", \"12\", \"y\", \"0\", \"width\", \"11\", \"height\", \"11\", \"fill\", \"#7fba00\"], [\"x\", \"0\", \"y\", \"12\", \"width\", \"11\", \"height\", \"11\", \"fill\", \"#00a4ef\"], [\"x\", \"12\", \"y\", \"12\", \"width\", \"11\", \"height\", \"11\", \"fill\", \"#ffb900\"], [1, \"mt-4\", \"p-3\", \"bg-magenta-500/10\", \"border\", \"border-magenta-500/20\", \"text-magenta-400\", \"rounded-xl\", \"text-xs\", \"text-center\", \"font-semibold\", \"animate-fadeIn\"], [1, \"text-[9px]\", \"text-white/30\", \"text-center\", \"mt-6\", \"uppercase\", \"tracking-wider\"]],\n template: function LoginComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵelement(1, \"div\", 1)(2, \"div\", 2);\n i0.ɵɵelementStart(3, \"div\", 3)(4, \"div\", 4)(5, \"div\", 5)(6, \"div\", 6);\n i0.ɵɵtext(7, \" K \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(8, \"h2\", 7);\n i0.ɵɵtext(9, \"Portal Corporativo\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(10, \"h1\", 8);\n i0.ɵɵtext(11, \" Consorcio \");\n i0.ɵɵelementStart(12, \"span\", 9);\n i0.ɵɵtext(13, \"Kinetix\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(14, \"div\", 10)(15, \"div\", 11)(16, \"label\", 12);\n i0.ɵɵtext(17, \"Correo Corporativo\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(18, \"input\", 13);\n i0.ɵɵlistener(\"change\", function LoginComponent_Template_input_change_18_listener($event) {\n return ctx.onEmailChange($event);\n });\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(19, \"div\", 11)(20, \"label\", 12);\n i0.ɵɵtext(21, \"Contrase\\u00F1a\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(22, \"input\", 14);\n i0.ɵɵlistener(\"change\", function LoginComponent_Template_input_change_22_listener($event) {\n return ctx.onPasswordChange($event);\n });\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(23, \"button\", 15);\n i0.ɵɵlistener(\"click\", function LoginComponent_Template_button_click_23_listener() {\n return ctx.loginLocal();\n });\n i0.ɵɵtext(24, \" INGRESAR A LA INTRANET \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(25, \"div\", 16);\n i0.ɵɵelement(26, \"hr\", 17);\n i0.ɵɵelementStart(27, \"span\", 18);\n i0.ɵɵtext(28, \"O ACCEDER CON\");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(29, \"hr\", 17);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(30, \"button\", 19);\n i0.ɵɵlistener(\"click\", function LoginComponent_Template_button_click_30_listener() {\n return ctx.loginSSO();\n });\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(31, \"svg\", 20);\n i0.ɵɵelement(32, \"rect\", 21)(33, \"rect\", 22)(34, \"rect\", 23)(35, \"rect\", 24);\n i0.ɵɵelementEnd();\n i0.ɵɵtext(36, \" Active Directory SSO \");\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(37, LoginComponent_Conditional_37_Template, 2, 1, \"div\", 25);\n i0.ɵɵnamespaceHTML();\n i0.ɵɵelementStart(38, \"div\", 26);\n i0.ɵɵtext(39, \" Acceso restringido. Encriptaci\\u00F3n SSL/TLS y pol\\u00EDticas Entra ID activas. \");\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n i0.ɵɵadvance(37);\n i0.ɵɵconditional(ctx.errorMsg() ? 37 : -1);\n }\n },\n dependencies: [CommonModule],\n styles: [\".animate-fadeIn[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeIn .4s ease-out forwards}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\"]\n });\n }\n }\n return LoginComponent;\n})();","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/3c506cd2dff9eb05f7b1873147e819aecae354ea8f180b79697d8bac18a725cd.json b/frontend/.angular/cache/18.2.21/babel-webpack/3c506cd2dff9eb05f7b1873147e819aecae354ea8f180b79697d8bac18a725cd.json new file mode 100644 index 0000000..4badbb9 --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/3c506cd2dff9eb05f7b1873147e819aecae354ea8f180b79697d8bac18a725cd.json @@ -0,0 +1 @@ +{"ast":null,"code":"import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nexport const authGuard = (route, state) => {\n const router = inject(Router);\n const token = localStorage.getItem('kinetix_token');\n if (token) {\n return true;\n }\n // Redirect to login if not authenticated\n router.navigate(['/login']);\n return false;\n};","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/5243557d3980cc802fd2b09711ef9f33f9a4d5091aa177c70f25d5ec3a31dc89.json b/frontend/.angular/cache/18.2.21/babel-webpack/5243557d3980cc802fd2b09711ef9f33f9a4d5091aa177c70f25d5ec3a31dc89.json new file mode 100644 index 0000000..6460db5 --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/5243557d3980cc802fd2b09711ef9f33f9a4d5091aa177c70f25d5ec3a31dc89.json @@ -0,0 +1 @@ +{"ast":null,"code":"import { signal, computed, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nconst _forTrack0 = ($index, $item) => $item.id;\nfunction DashboardComponent_Conditional_62_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 24)(1, \"div\", 26);\n i0.ɵɵelement(2, \"div\", 27)(3, \"div\", 28);\n i0.ɵɵelementStart(4, \"span\", 29);\n i0.ɵɵtext(5, \"PORTAL DE CONSORCIO\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"h2\", 30);\n i0.ɵɵtext(7, \" Consorcio Corporativo \");\n i0.ɵɵelementStart(8, \"span\", 31);\n i0.ɵɵtext(9, \"Kinetix\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(10, \"p\", 32);\n i0.ɵɵtext(11, \" Plataforma unificada de administraci\\u00F3n y autogesti\\u00F3n de recursos del consorcio. Control de identidades centralizado y monitoreo de m\\u00F3dulos integrados en tiempo real. \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"div\", 33)(13, \"button\", 34);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_62_Template_button_click_13_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.setActiveTab(\"directory\"));\n });\n i0.ɵɵtext(14, \" Directorio Consorcio \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"button\", 35);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_62_Template_button_click_15_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.setActiveTab(\"spaces\"));\n });\n i0.ɵɵtext(16, \" Reserva de Salas \");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(17, \"div\", 36)(18, \"div\", 37)(19, \"span\", 38);\n i0.ɵɵtext(20, \"Sedes Integradas\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(21, \"div\", 39);\n i0.ɵɵtext(22, \"3 Sedes\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(23, \"span\", 40);\n i0.ɵɵtext(24, \"London, Tokyo, NY\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(25, \"div\", 41)(26, \"span\", 38);\n i0.ɵɵtext(27, \"Directorio Activo\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(28, \"div\", 39);\n i0.ɵɵtext(29, \"1,450+\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(30, \"span\", 42);\n i0.ɵɵtext(31, \"Usuarios Sincronizados\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(32, \"div\", 43)(33, \"span\", 38);\n i0.ɵɵtext(34, \"Salas Disponibles\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(35, \"div\", 39);\n i0.ɵɵtext(36, \"18 Salas\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(37, \"span\", 44);\n i0.ɵɵtext(38, \"Sistemas IoT Activos\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(39, \"div\", 45)(40, \"span\", 38);\n i0.ɵɵtext(41, \"Flujos de Trabajo\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(42, \"div\", 39);\n i0.ɵɵtext(43, \"12 Activos\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(44, \"span\", 46);\n i0.ɵɵtext(45, \"Reglas AD Operativas\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(46, \"div\", 47)(47, \"h3\", 48);\n i0.ɵɵtext(48, \"M\\u00F3dulos de Nueva Generaci\\u00F3n\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(49, \"div\", 49)(50, \"div\", 50)(51, \"div\", 51);\n i0.ɵɵtext(52, \"\\uD83D\\uDCDA\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(53, \"h4\", 52);\n i0.ɵɵtext(54, \"Bloque de Info\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(55, \"p\", 53);\n i0.ɵɵtext(56, \" Gesti\\u00F3n de contenidos corporativos con arquitectura robusta de microservicios y publicaci\\u00F3n de art\\u00EDculos en tiempo r\\u00E9cord. \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(57, \"div\", 54)(58, \"div\", 55);\n i0.ɵɵtext(59, \"\\uD83D\\uDC64\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(60, \"h4\", 52);\n i0.ɵɵtext(61, \"Directorios AD\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(62, \"p\", 53);\n i0.ɵɵtext(63, \" Sincronizaci\\u00F3n nativa instant\\u00E1nea con Active Directory y perfiles din\\u00E1micos inteligentes para el equipo de desarrollo. \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(64, \"div\", 56)(65, \"div\", 57);\n i0.ɵɵtext(66, \"\\uD83D\\uDCC5\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(67, \"h4\", 52);\n i0.ɵɵtext(68, \"Autogesti\\u00F3n\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(69, \"p\", 53);\n i0.ɵɵtext(70, \" Reserva fluida de salas de conferencias, oficinas temporales e incidencias con disponibilidad y alertas en tiempo real. \");\n i0.ɵɵelementEnd()()()()();\n }\n}\nfunction DashboardComponent_Conditional_63_For_36_For_20_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 88);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const tag_r5 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", tag_r5, \" \");\n }\n}\nfunction DashboardComponent_Conditional_63_For_36_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 75)(1, \"div\", 76)(2, \"span\", 77);\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(4, \"div\", 78)(5, \"div\", 79)(6, \"div\", 80)(7, \"div\", 81);\n i0.ɵɵtext(8);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(9, \"div\", 82)(10, \"span\", 83);\n i0.ɵɵtext(11, \"\\u2605\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"span\", 84);\n i0.ɵɵtext(13);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(14, \"h4\", 85);\n i0.ɵɵtext(15);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(16, \"span\", 86);\n i0.ɵɵtext(17);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(18, \"div\", 87);\n i0.ɵɵrepeaterCreate(19, DashboardComponent_Conditional_63_For_36_For_20_Template, 2, 1, \"span\", 88, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(21, \"hr\", 89);\n i0.ɵɵelementStart(22, \"div\", 90)(23, \"div\", 91)(24, \"div\", 92);\n i0.ɵɵtext(25, \"Clientes\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(26, \"div\", 93);\n i0.ɵɵtext(27);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(28, \"div\", 91)(29, \"div\", 92);\n i0.ɵɵtext(30, \"Tarifa/Hora\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(31, \"div\", 93);\n i0.ɵɵtext(32);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(33, \"button\", 94);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_63_For_36_Template_button_click_33_listener() {\n const emp_r6 = i0.ɵɵrestoreView(_r4).$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.contactEmployee(emp_r6.name));\n });\n i0.ɵɵtext(34, \" Get In Touch \");\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const emp_r6 = ctx.$implicit;\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate1(\" ID: AD-\", emp_r6.id * 123, \" \");\n i0.ɵɵadvance(5);\n i0.ɵɵtextInterpolate1(\" \", emp_r6.avatar, \" \");\n i0.ɵɵadvance(5);\n i0.ɵɵtextInterpolate(emp_r6.rating);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(emp_r6.name);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(emp_r6.role);\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(emp_r6.tags);\n i0.ɵɵadvance(8);\n i0.ɵɵtextInterpolate(emp_r6.clients);\n i0.ɵɵadvance(5);\n i0.ɵɵtextInterpolate1(\"$\", emp_r6.rate, \"/hr\");\n }\n}\nfunction DashboardComponent_Conditional_63_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"h2\", 58);\n i0.ɵɵtext(2, \"Interfaz Directory Modern\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 59)(4, \"div\", 60)(5, \"h3\", 61);\n i0.ɵɵtext(6, \"B\\u00FAsqueda & Filtrado\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(7, \"p\", 62);\n i0.ɵɵtext(8, \"Uso de bordes suaves y ergon\\u00F3micos para optimizar la visualizaci\\u00F3n de datos.\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(9, \"div\", 47)(10, \"div\", 63)(11, \"label\", 38);\n i0.ɵɵtext(12, \"Buscar Empleado\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(13, \"input\", 64);\n i0.ɵɵlistener(\"input\", function DashboardComponent_Conditional_63_Template_input_input_13_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.updateSearch($event));\n });\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(14, \"div\", 63)(15, \"label\", 38);\n i0.ɵɵtext(16, \"Departamento\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(17, \"select\", 65);\n i0.ɵɵlistener(\"change\", function DashboardComponent_Conditional_63_Template_select_change_17_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.updateDept($event));\n });\n i0.ɵɵelementStart(18, \"option\", 66);\n i0.ɵɵtext(19, \"Todos los Departamentos\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(20, \"option\", 67);\n i0.ɵɵtext(21, \"IT & Desarrollo\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(22, \"option\", 68);\n i0.ɵɵtext(23, \"Dise\\u00F1o y UI/UX\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(24, \"option\", 69);\n i0.ɵɵtext(25, \"Mantenimiento\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(26, \"button\", 70);\n i0.ɵɵtext(27, \" APLICAR FILTROS \");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(28, \"div\", 71)(29, \"div\", 72)(30, \"span\");\n i0.ɵɵtext(31);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(32, \"span\", 73);\n i0.ɵɵtext(33, \"Sincronizado con Active Directory\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(34, \"div\", 74);\n i0.ɵɵrepeaterCreate(35, DashboardComponent_Conditional_63_For_36_Template, 35, 7, \"div\", 75, _forTrack0);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(31);\n i0.ɵɵtextInterpolate1(\"Mostrando \", ctx_r1.filteredEmployees().length, \" empleados registrados\");\n i0.ɵɵadvance(4);\n i0.ɵɵrepeater(ctx_r1.filteredEmployees());\n }\n}\nfunction DashboardComponent_Conditional_64_Conditional_40_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 106);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.simulationStatus());\n }\n}\nfunction DashboardComponent_Conditional_64_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"h2\", 58);\n i0.ɵɵtext(2, \"Workflow de Aprobaci\\u00F3n\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 95)(4, \"div\", 96)(5, \"div\", 47)(6, \"span\", 97);\n i0.ɵɵtext(7, \"CICLO COMPLETO DE VIDA\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(8, \"h3\", 98);\n i0.ɵɵtext(9, \"Validaci\\u00F3n y Publicaci\\u00F3n Automatizada\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(10, \"p\", 53);\n i0.ɵɵtext(11, \" Las propuestas de contenidos y flujos pasan por un motor estructurado que valida y publica autom\\u00E1ticamente en canales institucionales y redes corporativas. \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"div\", 99)(13, \"div\", 100)(14, \"span\", 101);\n i0.ɵɵtext(15, \"\\u2713\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(16, \"div\")(17, \"strong\", 102);\n i0.ɵɵtext(18, \"Creaci\\u00F3n\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(19, \"span\", 103);\n i0.ɵɵtext(20, \"Captura de datos optimizada a trav\\u00E9s de formularios reactivos del lado del cliente.\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(21, \"div\", 100)(22, \"span\", 101);\n i0.ɵɵtext(23, \"\\u2713\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(24, \"div\")(25, \"strong\", 102);\n i0.ɵɵtext(26, \"Validaci\\u00F3n\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(27, \"span\", 103);\n i0.ɵɵtext(28, \"Motor de reglas multinivel integrado con SSO y Active Directory para jerarqu\\u00EDas de aprobaci\\u00F3n.\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(29, \"div\", 100)(30, \"span\", 101);\n i0.ɵɵtext(31, \"\\u2713\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(32, \"div\")(33, \"strong\", 102);\n i0.ɵɵtext(34, \"Social\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(35, \"span\", 103);\n i0.ɵɵtext(36, \"Posteo automatizado e inmediato en las redes de comunicaci\\u00F3n interna de Kinetix.\");\n i0.ɵɵelementEnd()()()()();\n i0.ɵɵelementStart(37, \"div\", 104)(38, \"button\", 105);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_64_Template_button_click_38_listener() {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.runSimulation());\n });\n i0.ɵɵtext(39, \" SIMULAR MOTOR DE REGLAS \");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(40, DashboardComponent_Conditional_64_Conditional_40_Template, 2, 1, \"span\", 106);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(41, \"div\", 107);\n i0.ɵɵelement(42, \"div\", 108);\n i0.ɵɵelementStart(43, \"div\", 109);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(44, \"svg\", 110);\n i0.ɵɵelement(45, \"circle\", 111)(46, \"circle\", 112);\n i0.ɵɵelementStart(47, \"g\", 113);\n i0.ɵɵelement(48, \"rect\", 114)(49, \"rect\", 115);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(50, \"text\", 116);\n i0.ɵɵtext(51, \"AD ENGINE\");\n i0.ɵɵelementEnd()();\n i0.ɵɵnamespaceHTML();\n i0.ɵɵelementStart(52, \"div\", 117);\n i0.ɵɵtext(53, \" STATUS: LISTENING ON PORT 3000 \");\n i0.ɵɵelementEnd()()()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(40);\n i0.ɵɵconditional(ctx_r1.simulationStatus() ? 40 : -1);\n }\n}\nfunction DashboardComponent_Conditional_65_Conditional_55_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 135);\n i0.ɵɵtext(1, \" \\u00A1Reserva confirmada con \\u00E9xito! Se ha notificado a tu correo y calendario de Active Directory. \");\n i0.ɵɵelementEnd();\n }\n}\nfunction DashboardComponent_Conditional_65_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"h2\", 58);\n i0.ɵɵtext(2, \"Gesti\\u00F3n de Espacios & Incidencias\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 95)(4, \"div\", 118)(5, \"div\", 119);\n i0.ɵɵelement(6, \"div\", 120)(7, \"div\", 121);\n i0.ɵɵelementStart(8, \"span\", 122);\n i0.ɵɵtext(9, \" SALA DE CONFERENCIAS VIP \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(10, \"div\", 123)(11, \"h3\", 52);\n i0.ɵɵtext(12, \"Sala London Hall \\u2014 Piso 4\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(13, \"p\", 53);\n i0.ɵɵtext(14, \" Equipada con pantalla interactiva 4K de 85 pulgadas, sistema de audio envolvente Jabra, conectividad inal\\u00E1mbrica y capacidad para 12 personas. \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"div\", 124)(16, \"span\");\n i0.ɵɵtext(17, \"\\uD83D\\uDC65 Capacidad: 12 pers.\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(18, \"span\");\n i0.ɵɵtext(19, \"\\uD83D\\uDCF6 Wi-Fi 6 Giga\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(20, \"span\");\n i0.ɵɵtext(21, \"\\uD83C\\uDF21\\uFE0F Termostato IoT\");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵelementStart(22, \"div\", 125)(23, \"div\", 47)(24, \"span\", 126);\n i0.ɵɵtext(25, \"AUTOGESTI\\u00D3N DE ALQUILER\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(26, \"h3\", 98);\n i0.ɵɵtext(27, \"Reserva Directa de Espacios\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(28, \"p\", 127);\n i0.ɵɵtext(29, \"Reserva de salas de conferencias, oficinas temporales y puestos de trabajo con confirmaci\\u00F3n instant\\u00E1nea.\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(30, \"div\", 128)(31, \"div\", 129)(32, \"div\", 63)(33, \"label\", 38);\n i0.ɵɵtext(34, \"Fecha\");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(35, \"input\", 130);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(36, \"div\", 63)(37, \"label\", 38);\n i0.ɵɵtext(38, \"Hora\");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(39, \"input\", 131);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(40, \"div\", 63)(41, \"label\", 38);\n i0.ɵɵtext(42, \"Seleccionar Sala\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(43, \"select\", 132)(44, \"option\");\n i0.ɵɵtext(45, \"Sala London Hall (Piso 4)\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(46, \"option\");\n i0.ɵɵtext(47, \"Sala Tokyo Lab (Piso 2)\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(48, \"option\");\n i0.ɵɵtext(49, \"Oficina Flexible 15B (Piso 1)\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(50, \"option\");\n i0.ɵɵtext(51, \"Sala New York Boardroom (Piso 5)\");\n i0.ɵɵelementEnd()()()()();\n i0.ɵɵelementStart(52, \"div\", 133)(53, \"button\", 134);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_65_Template_button_click_53_listener() {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.bookSpace());\n });\n i0.ɵɵtext(54, \" RESERVAR ESPACIO \");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(55, DashboardComponent_Conditional_65_Conditional_55_Template, 2, 0, \"div\", 135);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(55);\n i0.ɵɵconditional(ctx_r1.bookingSuccess() ? 55 : -1);\n }\n}\nfunction DashboardComponent_Conditional_66_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"h2\", 58);\n i0.ɵɵtext(2, \"Proyecci\\u00F3n de Adopci\\u00F3n & KPIs\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 136)(4, \"div\", 137)(5, \"div\", 17)(6, \"h3\", 61);\n i0.ɵɵtext(7, \"Proyecci\\u00F3n de Adopci\\u00F3n Kinetix\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(8, \"span\", 138);\n i0.ɵɵtext(9, \"ROI +85%\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(10, \"p\", 103);\n i0.ɵɵtext(11, \"Crecimiento exponencial de interacciones tras la implementaci\\u00F3n del dise\\u00F1o UI/UX renovado.\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"div\", 139);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(13, \"svg\", 140)(14, \"defs\")(15, \"linearGradient\", 141);\n i0.ɵɵelement(16, \"stop\", 142)(17, \"stop\", 143);\n i0.ɵɵelementEnd()();\n i0.ɵɵelement(18, \"line\", 144)(19, \"line\", 145)(20, \"line\", 146)(21, \"path\", 147)(22, \"path\", 148)(23, \"circle\", 149)(24, \"circle\", 150)(25, \"circle\", 151);\n i0.ɵɵelementStart(26, \"text\", 152);\n i0.ɵɵtext(27, \"Q1 2026\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(28, \"text\", 153);\n i0.ɵɵtext(29, \"Despliegue\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(30, \"text\", 154);\n i0.ɵɵtext(31, \"ROI +85%\");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵnamespaceHTML();\n i0.ɵɵelementStart(32, \"div\", 155)(33, \"div\", 156)(34, \"h3\", 61);\n i0.ɵɵtext(35, \"Indicadores Clave (KPIs)\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(36, \"div\", 157);\n i0.ɵɵtext(37, \"0.4s\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(38, \"div\", 158);\n i0.ɵɵtext(39, \"Tiempo de Carga Promedio\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(40, \"div\", 159)(41, \"div\", 160)(42, \"span\", 73);\n i0.ɵɵtext(43, \"\\u26A1\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(44, \" Renderizado del lado del cliente altamente eficiente. \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(45, \"div\", 160)(46, \"span\", 73);\n i0.ɵɵtext(47, \"\\u26A1\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(48, \" Compresi\\u00F3n automatizada de activos de imagen. \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(49, \"div\", 160)(50, \"span\", 73);\n i0.ɵɵtext(51, \"\\u26A1\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(52, \" Memoria cach\\u00E9 distribuida para directorios AD. \");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵelementStart(53, \"div\", 161)(54, \"h3\", 61);\n i0.ɵɵtext(55, \"Eficiencia en Resoluci\\u00F3n de Incidencias\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(56, \"p\", 103);\n i0.ɵɵtext(57, \"Reducci\\u00F3n dr\\u00E1stica del tiempo de respuesta mediante el m\\u00F3dulo de ticketing inteligente de Kinetix.\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(58, \"div\", 128)(59, \"div\", 162)(60, \"span\", 163);\n i0.ɵɵtext(61, \"Kinetix V2 (Actual)\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(62, \"div\", 164);\n i0.ɵɵelement(63, \"div\", 165);\n i0.ɵɵelementStart(64, \"span\", 166);\n i0.ɵɵtext(65, \"12 min\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(66, \"div\", 162)(67, \"span\", 167);\n i0.ɵɵtext(68, \"Promedio Industria\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(69, \"div\", 164);\n i0.ɵɵelement(70, \"div\", 168);\n i0.ɵɵelementStart(71, \"span\", 169);\n i0.ɵɵtext(72, \"25 min\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(73, \"div\", 162)(74, \"span\", 167);\n i0.ɵɵtext(75, \"Sistema Anterior\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(76, \"div\", 164);\n i0.ɵɵelement(77, \"div\", 170);\n i0.ɵɵelementStart(78, \"span\", 171);\n i0.ɵɵtext(79, \"45 min\");\n i0.ɵɵelementEnd()()()()()();\n }\n}\nfunction DashboardComponent_Conditional_67_Conditional_52_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 192);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.approvalSuccess(), \" \");\n }\n}\nfunction DashboardComponent_Conditional_67_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"h2\", 58);\n i0.ɵɵtext(2, \"Visi\\u00F3n de Administrador\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 136)(4, \"div\", 172)(5, \"h3\", 173);\n i0.ɵɵtext(6, \"Control Total\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(7, \"div\", 174);\n i0.ɵɵelement(8, \"div\", 175)(9, \"div\", 176);\n i0.ɵɵelementStart(10, \"div\", 177)(11, \"span\", 39);\n i0.ɵɵtext(12, \"94%\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(13, \"span\", 178);\n i0.ɵɵtext(14, \"ESTABILIDAD\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(15, \"span\", 179);\n i0.ɵɵtext(16, \"Monitoreo activo de solicitudes y API gateways de NestJS.\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(17, \"div\", 180)(18, \"div\", 181)(19, \"h3\", 182);\n i0.ɵɵtext(20, \"Alertas Cr\\u00EDticas\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(21, \"div\", 156)(22, \"div\", 183)(23, \"span\");\n i0.ɵɵtext(24, \"\\uD83D\\uDD27 Mantenimiento de servidor de base de datos PostgreSQL\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(25, \"strong\", 184);\n i0.ɵɵtext(26, \"PENDIENTE\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(27, \"div\", 185)(28, \"span\");\n i0.ɵɵtext(29, \"\\uD83D\\uDD12 Expiraci\\u00F3n de secretos de Azure AD Client credentials\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(30, \"strong\", 18);\n i0.ɵɵtext(31, \"En 12 d\\u00EDas\");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵelementStart(32, \"div\", 186)(33, \"h3\", 187);\n i0.ɵɵtext(34, \"Aprobaciones de Contenido\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(35, \"div\", 156)(36, \"div\", 188)(37, \"div\", 189)(38, \"span\", 84);\n i0.ɵɵtext(39, \"Lanzamiento Kinetix V2 Intranet\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(40, \"span\", 190);\n i0.ɵɵtext(41, \"Autor: Director de Tecnolog\\u00EDa (SSO AD)\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(42, \"button\", 191);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_67_Template_button_click_42_listener() {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.approveItem(\"Lanzamiento Kinetix V2\"));\n });\n i0.ɵɵtext(43, \" Aprobar y Postear \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(44, \"div\", 188)(45, \"div\", 189)(46, \"span\", 84);\n i0.ɵɵtext(47, \"Manual del Desarrollador Backend NestJS\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(48, \"span\", 190);\n i0.ɵɵtext(49, \"Autor: Arquitecto Principal\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(50, \"button\", 191);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_67_Template_button_click_50_listener() {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.approveItem(\"Manual del Desarrollador\"));\n });\n i0.ɵɵtext(51, \" Aprobar y Postear \");\n i0.ɵɵelementEnd()()();\n i0.ɵɵtemplate(52, DashboardComponent_Conditional_67_Conditional_52_Template, 2, 1, \"div\", 192);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(52);\n i0.ɵɵconditional(ctx_r1.approvalSuccess() ? 52 : -1);\n }\n}\nexport let DashboardComponent = /*#__PURE__*/(() => {\n class DashboardComponent {\n constructor() {\n this.router = inject(Router);\n // Navigation active tab signal\n this.activeTab = signal('inicio');\n // Directory filter signals\n this.searchQuery = signal('');\n this.selectedDept = signal('ALL');\n // Booking & Simulation mock state signals\n this.bookingSuccess = signal(false);\n this.simulationStatus = signal('');\n this.approvalSuccess = signal('');\n // Sincronized Active Directory Active Profile signal\n this.currentUser = signal({\n name: 'Invitado',\n email: 'guest@kinetix.com',\n role: 'Employee',\n avatar: 'G'\n });\n // Active Directory mock database of employees exactly styled as Slide 4\n this.employees = signal([{\n id: 1,\n name: 'John Morton',\n role: 'UI/UX Designer',\n rating: 4.9,\n clients: 50,\n rate: 65,\n avatar: 'JM',\n tags: ['App Design', 'Web Design', 'Figma', 'Active Directory']\n }, {\n id: 2,\n name: 'Sarah Jenkins',\n role: 'Backend NestJS Architect',\n rating: 4.8,\n clients: 42,\n rate: 75,\n avatar: 'SJ',\n tags: ['NestJS', 'PostgreSQL', 'JWT', 'Active Directory']\n }, {\n id: 3,\n name: 'Alex Rivera',\n role: 'Senior Angular Developer',\n rating: 4.9,\n clients: 68,\n rate: 70,\n avatar: 'AR',\n tags: ['Angular 17', 'Signals', 'RxJS', 'TypeScript']\n }, {\n id: 4,\n name: 'David Chen',\n role: 'Infrastructure Security Engineer',\n rating: 4.7,\n clients: 25,\n rate: 80,\n avatar: 'DC',\n tags: ['Azure Entra ID', 'SSO', 'Docker', 'PostgreSQL']\n }]);\n // Computed signal to filter employee list reactively\n this.filteredEmployees = computed(() => {\n const query = this.searchQuery().toLowerCase();\n const dept = this.selectedDept();\n return this.employees().filter(emp => {\n // Basic text search filter\n const matchesSearch = emp.name.toLowerCase().includes(query) || emp.role.toLowerCase().includes(query) || emp.tags.some(t => t.toLowerCase().includes(query));\n // Basic department match\n let matchesDept = true;\n if (dept !== 'ALL') {\n if (dept === 'IT') {\n matchesDept = emp.role.includes('Backend') || emp.role.includes('Angular') || emp.role.includes('Infrastructure');\n } else if (dept === 'Diseño') {\n matchesDept = emp.role.includes('Designer') || emp.role.includes('UX');\n } else if (dept === 'Mantenimiento') {\n matchesDept = emp.role.includes('Security');\n }\n }\n return matchesSearch && matchesDept;\n });\n });\n }\n ngOnInit() {\n // Load Active Directory profile from local storage\n const userStr = localStorage.getItem('kinetix_user');\n if (userStr) {\n try {\n const user = JSON.parse(userStr);\n this.currentUser.set(user);\n } catch (e) {\n console.error('Error parsing user profile from local storage', e);\n }\n }\n }\n setActiveTab(tab) {\n this.activeTab.set(tab);\n // Reset secondary flags\n this.bookingSuccess.set(false);\n this.simulationStatus.set('');\n this.approvalSuccess.set('');\n }\n updateSearch(event) {\n const value = event.target.value;\n this.searchQuery.set(value);\n }\n updateDept(event) {\n const value = event.target.value;\n this.selectedDept.set(value);\n }\n contactEmployee(name) {\n alert(`Iniciando canal seguro encriptado de comunicación con ${name} vía Microsoft Teams (SSO Active Directory)...`);\n }\n runSimulation() {\n this.simulationStatus.set('Procesando reglas...');\n setTimeout(() => {\n this.simulationStatus.set('Creación capturada ✓');\n setTimeout(() => {\n this.simulationStatus.set('Reglas AD aprobadas ✓');\n setTimeout(() => {\n this.simulationStatus.set('Posteo social programado ✓');\n }, 1000);\n }, 1000);\n }, 1000);\n }\n bookSpace() {\n this.bookingSuccess.set(true);\n }\n approveItem(title) {\n this.approvalSuccess.set(`Publicación \"${title}\" aprobada y publicada en redes corporativas con éxito.`);\n setTimeout(() => {\n this.approvalSuccess.set('');\n }, 4000);\n }\n logout() {\n localStorage.removeItem('kinetix_token');\n localStorage.removeItem('kinetix_user');\n this.router.navigate(['/login']);\n }\n static {\n this.ɵfac = function DashboardComponent_Factory(t) {\n return new (t || DashboardComponent)();\n };\n }\n static {\n this.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n type: DashboardComponent,\n selectors: [[\"app-dashboard\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 68,\n vars: 34,\n consts: [[1, \"flex\", \"flex-col\", \"lg:flex-row\", \"gap-6\", \"p-2\", \"lg:p-6\", \"min-h-[80vh]\"], [1, \"w-full\", \"lg:w-64\", \"flex\", \"flex-col\", \"gap-3\"], [1, \"glass-panel\", \"p-4\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-3\", \"relative\", \"border-cyan-500/20\", \"bg-slate-950/45\"], [1, \"absolute\", \"-right-2\", \"-top-2\", \"w-8\", \"h-8\", \"bg-cyan-500/10\", \"rounded-full\", \"blur-md\"], [1, \"flex\", \"items-center\", \"gap-3\"], [1, \"w-12\", \"h-12\", \"rounded-xl\", \"bg-gradient-to-tr\", \"from-cyan-400\", \"to-indigo-500\", \"p-0.5\", \"shadow-md\"], [1, \"w-full\", \"h-full\", \"bg-[#0a0a0c]\", \"rounded-[10px]\", \"flex\", \"items-center\", \"justify-center\", \"font-black\", \"text-sm\", \"text-cyan-400\"], [1, \"flex\", \"flex-col\", \"min-w-0\"], [1, \"text-sm\", \"font-extrabold\", \"text-white\", \"truncate\"], [1, \"text-[10px]\", \"text-neon-cyan\", \"font-bold\", \"tracking-wide\", \"uppercase\", \"truncate\"], [1, \"text-[9px]\", \"text-white/40\", \"font-mono\", \"truncate\", \"border-t\", \"border-white/5\", \"pt-2\", \"mt-1\"], [1, \"w-full\", \"py-1.5\", \"rounded-xl\", \"border\", \"border-white/10\", \"hover:border-magenta-500/30\", \"hover:bg-magenta-950/20\", \"text-white/60\", \"hover:text-magenta-400\", \"font-extrabold\", \"text-[10px]\", \"uppercase\", \"tracking-wider\", \"transition-all\", \"mt-1\", 3, \"click\"], [1, \"glass-panel\", \"p-4\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-2\"], [1, \"text-xs\", \"font-bold\", \"text-white/40\", \"uppercase\", \"tracking-widest\", \"px-3\", \"mb-2\"], [1, \"flex\", \"items-center\", \"gap-3\", \"px-3\", \"py-2.5\", \"rounded-lg\", \"text-left\", \"text-sm\", \"font-semibold\", \"transition-all\", \"hover:bg-white/5\", \"text-slate-300\", \"hover:text-white\", 3, \"click\"], [1, \"text-lg\"], [1, \"glass-panel\", \"p-4\", \"rounded-2xl\", \"text-xs\", \"flex\", \"flex-col\", \"gap-2\"], [1, \"flex\", \"justify-between\", \"items-center\"], [1, \"text-white/50\"], [1, \"text-emerald-400\", \"font-bold\", \"flex\", \"items-center\", \"gap-1.5\"], [1, \"w-2\", \"h-2\", \"rounded-full\", \"bg-emerald-400\", \"animate-pulse\"], [1, \"text-cyan-400\", \"font-bold\"], [1, \"text-slate-300\", \"font-mono\"], [1, \"flex-grow\", \"flex\", \"flex-col\", \"gap-6\"], [1, \"flex\", \"flex-col\", \"gap-8\", \"animate-fadeIn\"], [1, \"flex\", \"flex-col\", \"gap-6\", \"animate-fadeIn\"], [1, \"glass-panel\", \"p-8\", \"rounded-3xl\", \"relative\", \"overflow-hidden\", \"flex\", \"flex-col\", \"gap-4\", \"bg-gradient-to-br\", \"from-[#0c0f1d]\", \"to-[#080a12]\", \"border-white/5\"], [1, \"absolute\", \"-right-20\", \"-top-20\", \"w-64\", \"h-64\", \"bg-cyan-500/10\", \"rounded-full\", \"blur-[100px]\"], [1, \"absolute\", \"-left-20\", \"-bottom-20\", \"w-64\", \"h-64\", \"bg-magenta-500/10\", \"rounded-full\", \"blur-[100px]\"], [1, \"text-neon-cyan\", \"text-xs\", \"font-bold\", \"uppercase\", \"tracking-widest\"], [1, \"text-4xl\", \"lg:text-5xl\", \"font-black\", \"tracking-tight\", \"text-white\", \"leading-none\"], [1, \"text-transparent\", \"bg-clip-text\", \"bg-gradient-to-r\", \"from-cyan-400\", \"via-blue-500\", \"to-indigo-500\"], [1, \"text-slate-400\", \"text-base\", \"max-w-2xl\", \"leading-relaxed\"], [1, \"flex\", \"flex-wrap\", \"gap-4\", \"mt-2\"], [1, \"px-5\", \"py-2.5\", \"rounded-full\", \"btn-cyan\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", 3, \"click\"], [1, \"px-5\", \"py-2.5\", \"rounded-full\", \"border\", \"border-white/10\", \"hover:border-white/20\", \"transition\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", \"bg-white/5\", \"text-white\", 3, \"click\"], [1, \"grid\", \"grid-cols-1\", \"md:grid-cols-4\", \"gap-6\"], [1, \"glass-panel\", \"p-5\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-1\", \"border-t-2\", \"border-t-cyan-400\"], [1, \"text-[10px]\", \"uppercase\", \"font-bold\", \"text-slate-400\", \"tracking-wider\"], [1, \"text-3xl\", \"font-black\", \"text-white\"], [1, \"text-[10px]\", \"text-cyan-400\", \"font-medium\"], [1, \"glass-panel\", \"p-5\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-1\", \"border-t-2\", \"border-t-magenta-400\"], [1, \"text-[10px]\", \"text-magenta-400\", \"font-medium\"], [1, \"glass-panel\", \"p-5\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-1\", \"border-t-2\", \"border-t-purple-400\"], [1, \"text-[10px]\", \"text-purple-400\", \"font-medium\"], [1, \"glass-panel\", \"p-5\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-1\", \"border-t-2\", \"border-t-emerald-400\"], [1, \"text-[10px]\", \"text-emerald-400\", \"font-medium\"], [1, \"flex\", \"flex-col\", \"gap-4\"], [1, \"text-xl\", \"font-bold\", \"tracking-tight\", \"text-neon-cyan\", \"uppercase\", \"tracking-wide\"], [1, \"grid\", \"grid-cols-1\", \"md:grid-cols-3\", \"gap-6\"], [1, \"glass-panel\", \"glass-panel-hover\", \"p-6\", \"rounded-2xl\", \"neon-border-cyan\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"w-12\", \"h-12\", \"rounded-xl\", \"bg-cyan-500/10\", \"flex\", \"items-center\", \"justify-center\", \"text-2xl\", \"text-cyan-400\"], [1, \"text-lg\", \"font-bold\", \"text-white\"], [1, \"text-sm\", \"text-slate-400\", \"leading-relaxed\"], [1, \"glass-panel\", \"glass-panel-hover\", \"p-6\", \"rounded-2xl\", \"neon-border-magenta\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"w-12\", \"h-12\", \"rounded-xl\", \"bg-magenta-500/10\", \"flex\", \"items-center\", \"justify-center\", \"text-2xl\", \"text-magenta-400\"], [1, \"glass-panel\", \"glass-panel-hover\", \"p-6\", \"rounded-2xl\", \"neon-border-purple\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"w-12\", \"h-12\", \"rounded-xl\", \"bg-purple-500/10\", \"flex\", \"items-center\", \"justify-center\", \"text-2xl\", \"text-purple-400\"], [1, \"text-2xl\", \"font-black\", \"text-white\", \"uppercase\", \"tracking-tight\"], [1, \"grid\", \"grid-cols-1\", \"lg:grid-cols-4\", \"gap-6\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-5\", \"h-fit\"], [1, \"text-sm\", \"font-bold\", \"uppercase\", \"tracking-widest\", \"text-slate-400\"], [1, \"text-xs\", \"text-white/50\", \"leading-relaxed\"], [1, \"flex\", \"flex-col\", \"gap-1.5\"], [\"type\", \"text\", \"placeholder\", \"Buscar empleado...\", 1, \"px-4\", \"py-2.5\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\", 3, \"input\"], [1, \"px-4\", \"py-2.5\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\", \"bg-slate-900\", 3, \"change\"], [\"value\", \"ALL\"], [\"value\", \"IT\"], [\"value\", \"Dise\\u00F1o\"], [\"value\", \"Mantenimiento\"], [1, \"w-full\", \"py-2.5\", \"rounded-full\", \"btn-cyan\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", \"mt-2\"], [1, \"lg:col-span-3\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"text-xs\", \"text-slate-400\", \"flex\", \"justify-between\", \"items-center\"], [1, \"text-neon-cyan\"], [1, \"grid\", \"grid-cols-1\", \"md:grid-cols-2\", \"gap-6\"], [1, \"glass-panel\", \"rounded-3xl\", \"overflow-hidden\", \"relative\", \"flex\", \"flex-col\", \"hover:border-cyan-500/40\", \"transition-all\", \"duration-300\"], [1, \"h-20\", \"bg-gradient-to-r\", \"from-purple-600\", \"via-magenta-500\", \"to-cyan-400\", \"relative\"], [1, \"absolute\", \"top-3\", \"right-3\", \"text-xs\", \"bg-black/40\", \"backdrop-blur\", \"px-2.5\", \"py-0.5\", \"rounded-full\", \"text-white/95\"], [1, \"p-6\", \"pt-0\", \"relative\", \"flex-grow\", \"flex\", \"flex-col\"], [1, \"relative\", \"-mt-10\", \"mb-3\", \"flex\", \"justify-between\", \"items-end\"], [1, \"w-20\", \"h-20\", \"rounded-full\", \"border-4\", \"border-[#0c0f1d]\", \"overflow-hidden\", \"bg-slate-800\"], [1, \"w-full\", \"h-full\", \"flex\", \"items-center\", \"justify-center\", \"text-4xl\", \"bg-slate-900\", \"text-white\", \"font-bold\", \"select-none\"], [1, \"flex\", \"items-center\", \"gap-1\", \"text-xs\", \"bg-slate-900/80\", \"backdrop-blur\", \"px-2.5\", \"py-1\", \"rounded-full\", \"border\", \"border-white/5\"], [1, \"text-amber-400\"], [1, \"font-bold\", \"text-white\"], [1, \"text-lg\", \"font-extrabold\", \"text-white\", \"leading-tight\"], [1, \"text-xs\", \"text-neon-cyan\", \"font-semibold\", \"tracking-wide\", \"uppercase\", \"mb-3\", \"block\"], [1, \"flex\", \"flex-wrap\", \"gap-1.5\", \"mb-4\"], [1, \"text-[10px]\", \"bg-white/5\", \"border\", \"border-white/5\", \"rounded-full\", \"px-2.5\", \"py-0.5\", \"text-slate-300\", \"font-medium\"], [1, \"border-white/5\", \"my-3\"], [1, \"grid\", \"grid-cols-2\", \"gap-4\", \"mb-4\", \"text-center\"], [1, \"bg-white/5\", \"p-2\", \"rounded-xl\", \"border\", \"border-white/5\"], [1, \"text-[10px]\", \"text-white/50\", \"uppercase\", \"font-bold\", \"tracking-wider\"], [1, \"text-sm\", \"font-extrabold\", \"text-white\"], [1, \"w-full\", \"py-2.5\", \"rounded-2xl\", \"bg-white\", \"text-black\", \"font-extrabold\", \"text-xs\", \"uppercase\", \"tracking-wider\", \"hover:bg-cyan-400\", \"hover:text-black\", \"transition-all\", 3, \"click\"], [1, \"grid\", \"grid-cols-1\", \"lg:grid-cols-2\", \"gap-6\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-6\", \"justify-between\"], [1, \"text-neon-magenta\", \"text-xs\", \"font-bold\", \"uppercase\", \"tracking-widest\"], [1, \"text-xl\", \"font-bold\", \"text-white\"], [1, \"flex\", \"flex-col\", \"gap-3\", \"mt-2\"], [1, \"flex\", \"items-start\", \"gap-3.5\", \"p-3.5\", \"rounded-xl\", \"bg-white/5\", \"border\", \"border-white/5\"], [1, \"text-neon-cyan\", \"font-bold\"], [1, \"text-white\", \"block\", \"text-sm\"], [1, \"text-xs\", \"text-slate-400\"], [1, \"flex\", \"gap-4\"], [1, \"px-5\", \"py-2.5\", \"rounded-full\", \"btn-purple\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", 3, \"click\"], [1, \"text-xs\", \"text-green-400\", \"font-bold\", \"self-center\", \"animate-pulse\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"items-center\", \"justify-center\", \"relative\", \"overflow-hidden\", \"bg-slate-950/60\", \"min-h-[300px]\"], [1, \"absolute\", \"-right-20\", \"-bottom-20\", \"w-48\", \"h-48\", \"bg-magenta-500/5\", \"rounded-full\", \"blur-3xl\"], [1, \"flex\", \"flex-col\", \"items-center\", \"gap-6\"], [\"viewBox\", \"0 0 100 100\", \"fill\", \"none\", \"xmlns\", \"http://www.w3.org/2000/svg\", 1, \"w-40\", \"h-40\", \"text-green-400\"], [\"cx\", \"50\", \"cy\", \"50\", \"r\", \"30\", \"stroke\", \"currentColor\", \"stroke-width\", \"2\", \"stroke-dasharray\", \"10, 5\", 1, \"animate-[spin_10s_linear_infinite]\"], [\"cx\", \"50\", \"cy\", \"50\", \"r\", \"20\", \"stroke\", \"currentColor\", \"stroke-width\", \"1.5\", \"stroke-dasharray\", \"5, 3\", 1, \"animate-[spin_6s_linear_infinite_reverse]\"], [\"transform\", \"translate(50, 50) rotate(0)\"], [\"x\", \"-4\", \"y\", \"-28\", \"width\", \"8\", \"height\", \"56\", \"fill\", \"currentColor\", \"opacity\", \"0.3\", 1, \"animate-[spin_8s_linear_infinite]\"], [\"x\", \"-28\", \"y\", \"-4\", \"width\", \"56\", \"height\", \"8\", \"fill\", \"currentColor\", \"opacity\", \"0.3\", 1, \"animate-[spin_8s_linear_infinite]\"], [\"x\", \"50\", \"y\", \"53\", \"text-anchor\", \"middle\", \"font-size\", \"8\", \"fill\", \"#fff\", \"font-weight\", \"bold\", 1, \"font-mono\"], [1, \"text-center\", \"font-mono\", \"text-xs\", \"text-green-400\", \"border\", \"border-green-500/30\", \"px-3\", \"py-1.5\", \"rounded-lg\", \"bg-green-950/20\"], [1, \"glass-panel\", \"rounded-2xl\", \"overflow-hidden\", \"flex\", \"flex-col\"], [1, \"h-64\", \"bg-slate-900\", \"relative\"], [1, \"absolute\", \"inset-0\", \"bg-cover\", \"bg-center\", 2, \"background-image\", \"url('https://images.unsplash.com/photo-1497366216548-37526070297c?auto=format&fit=crop&w=800&q=80')\"], [1, \"absolute\", \"inset-0\", \"bg-gradient-to-t\", \"from-black\", \"via-black/30\", \"to-transparent\"], [1, \"absolute\", \"bottom-4\", \"left-4\", \"text-xs\", \"bg-purple-600\", \"px-3\", \"py-1\", \"rounded-full\", \"font-bold\", \"uppercase\", \"tracking-wider\"], [1, \"p-6\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"flex\", \"gap-4\", \"text-xs\", \"text-white/50\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-5\", \"justify-between\"], [1, \"text-neon-purple\", \"text-xs\", \"font-bold\", \"uppercase\", \"tracking-widest\"], [1, \"text-sm\", \"text-slate-400\"], [1, \"flex\", \"flex-col\", \"gap-4\", \"mt-2\"], [1, \"grid\", \"grid-cols-2\", \"gap-4\"], [\"type\", \"text\", \"value\", \"Fecha: 15/06\", 1, \"px-4\", \"py-2.5\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\"], [\"type\", \"text\", \"value\", \"Hora: 09:00 AM\", 1, \"px-4\", \"py-2.5\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\"], [1, \"px-4\", \"py-2.5\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\", \"bg-slate-900\"], [1, \"flex\", \"flex-col\", \"gap-3\"], [1, \"w-full\", \"py-2.5\", \"rounded-full\", \"btn-purple\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", 3, \"click\"], [1, \"p-3\", \"bg-emerald-500/10\", \"border\", \"border-emerald-500/20\", \"text-emerald-400\", \"rounded-xl\", \"text-xs\", \"text-center\", \"font-bold\", \"animate-fadeIn\"], [1, \"grid\", \"grid-cols-1\", \"lg:grid-cols-3\", \"gap-6\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"lg:col-span-2\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"text-xs\", \"text-emerald-400\", \"font-bold\", \"bg-emerald-500/10\", \"px-2.5\", \"py-0.5\", \"rounded-full\"], [1, \"w-full\", \"h-48\", \"mt-2\"], [\"viewBox\", \"0 0 500 200\", \"preserveAspectRatio\", \"none\", 1, \"w-full\", \"h-full\"], [\"id\", \"chartGrad\", \"x1\", \"0\", \"y1\", \"0\", \"x2\", \"0\", \"y2\", \"1\"], [\"offset\", \"0%\", \"stop-color\", \"#00f2fe\", \"stop-opacity\", \"0.3\"], [\"offset\", \"100%\", \"stop-color\", \"#00f2fe\", \"stop-opacity\", \"0.0\"], [\"x1\", \"50\", \"y1\", \"150\", \"x2\", \"480\", \"y2\", \"150\", \"stroke\", \"rgba(255,255,255,0.05)\", \"stroke-width\", \"1\"], [\"x1\", \"50\", \"y1\", \"100\", \"x2\", \"480\", \"y2\", \"100\", \"stroke\", \"rgba(255,255,255,0.05)\", \"stroke-width\", \"1\"], [\"x1\", \"50\", \"y1\", \"50\", \"x2\", \"480\", \"y2\", \"50\", \"stroke\", \"rgba(255,255,255,0.05)\", \"stroke-width\", \"1\"], [\"d\", \"M 50,150 Q 150,140 250,90 T 450,40 L 450,170 L 50,170 Z\", \"fill\", \"url(#chartGrad)\"], [\"d\", \"M 50,150 Q 150,140 250,90 T 450,40\", \"fill\", \"none\", \"stroke\", \"#00f2fe\", \"stroke-width\", \"3\"], [\"cx\", \"50\", \"cy\", \"150\", \"r\", \"4\", \"fill\", \"#00f2fe\"], [\"cx\", \"250\", \"cy\", \"90\", \"r\", \"4\", \"fill\", \"#00f2fe\"], [\"cx\", \"450\", \"cy\", \"40\", \"r\", \"5\", \"fill\", \"#f00c93\"], [\"x\", \"50\", \"y\", \"165\", \"fill\", \"rgba(255,255,255,0.4)\", \"font-size\", \"9\", \"text-anchor\", \"middle\"], [\"x\", \"250\", \"y\", \"110\", \"fill\", \"rgba(255,255,255,0.4)\", \"font-size\", \"9\", \"text-anchor\", \"middle\"], [\"x\", \"450\", \"y\", \"25\", \"fill\", \"#f00c93\", \"font-size\", \"10\", \"font-weight\", \"bold\", \"text-anchor\", \"middle\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"justify-between\"], [1, \"flex\", \"flex-col\", \"gap-2\"], [1, \"text-5xl\", \"font-black\", \"text-neon-cyan\", \"my-3\"], [1, \"text-sm\", \"font-bold\", \"text-white\"], [1, \"flex\", \"flex-col\", \"gap-3\", \"mt-4\"], [1, \"text-xs\", \"text-slate-400\", \"flex\", \"gap-2\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"flex\", \"flex-col\", \"md:flex-row\", \"md:items-center\", \"gap-2\"], [1, \"w-32\", \"text-xs\", \"font-bold\", \"text-white\"], [1, \"flex-grow\", \"bg-white/5\", \"rounded-full\", \"overflow-hidden\", \"h-7\", \"border\", \"border-white/5\", \"relative\"], [1, \"bg-gradient-to-r\", \"from-cyan-400\", \"to-indigo-500\", \"h-full\", \"rounded-full\", \"transition-all\", \"duration-1000\", 2, \"width\", \"26%\"], [1, \"absolute\", \"right-3\", \"top-1\", \"text-xs\", \"font-bold\", \"text-cyan-400\"], [1, \"w-32\", \"text-xs\", \"font-bold\", \"text-slate-400\"], [1, \"bg-slate-700\", \"h-full\", \"rounded-full\", \"transition-all\", \"duration-1000\", 2, \"width\", \"55%\"], [1, \"absolute\", \"right-3\", \"top-1\", \"text-xs\", \"font-bold\", \"text-slate-300\"], [1, \"bg-slate-800\", \"h-full\", \"rounded-full\", \"transition-all\", \"duration-1000\", 2, \"width\", \"100%\"], [1, \"absolute\", \"right-3\", \"top-1\", \"text-xs\", \"font-bold\", \"text-slate-400\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"items-center\", \"justify-center\", \"gap-4\"], [1, \"text-sm\", \"font-bold\", \"uppercase\", \"tracking-widest\", \"text-slate-400\", \"self-start\"], [1, \"relative\", \"w-40\", \"h-40\", \"flex\", \"items-center\", \"justify-center\"], [1, \"w-full\", \"h-full\", \"rounded-full\", \"border-8\", \"border-white/5\", \"absolute\"], [1, \"w-full\", \"h-full\", \"rounded-full\", \"border-8\", \"border-cyan-400\", \"border-t-transparent\", \"border-l-transparent\", \"absolute\", \"animate-[spin_4s_linear_infinite]\"], [1, \"flex\", \"flex-col\", \"items-center\"], [1, \"text-[9px]\", \"uppercase\", \"tracking-widest\", \"text-slate-400\"], [1, \"text-xs\", \"text-slate-400\", \"text-center\", \"mt-2\"], [1, \"lg:col-span-2\", \"flex\", \"flex-col\", \"gap-6\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-4\", \"border-l-4\", \"border-l-magenta-500\"], [1, \"text-sm\", \"font-bold\", \"uppercase\", \"tracking-widest\", \"text-magenta-400\"], [1, \"flex\", \"justify-between\", \"items-center\", \"text-xs\", \"p-2.5\", \"rounded-lg\", \"bg-magenta-500/5\", \"border\", \"border-magenta-500/10\", \"text-magenta-300\"], [1, \"text-magenta-400\"], [1, \"flex\", \"justify-between\", \"items-center\", \"text-xs\", \"p-2.5\", \"rounded-lg\", \"bg-white/5\", \"border\", \"border-white/5\", \"text-slate-300\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-4\", \"border-l-4\", \"border-l-purple-500\"], [1, \"text-sm\", \"font-bold\", \"uppercase\", \"tracking-widest\", \"text-purple-400\"], [1, \"flex\", \"justify-between\", \"items-center\", \"text-xs\", \"p-3\", \"rounded-lg\", \"bg-white/5\", \"border\", \"border-white/5\"], [1, \"flex\", \"flex-col\"], [1, \"text-[10px]\", \"text-slate-400\"], [1, \"px-3\", \"py-1.5\", \"rounded-lg\", \"bg-purple-600\", \"text-white\", \"font-extrabold\", \"text-[10px]\", \"uppercase\", \"hover:bg-purple-500\", \"transition\", 3, \"click\"], [1, \"text-xs\", \"text-green-400\", \"font-bold\", \"bg-green-500/10\", \"border\", \"border-green-500/15\", \"p-2\", \"rounded-lg\", \"text-center\", \"animate-fadeIn\"]],\n template: function DashboardComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"aside\", 1)(2, \"div\", 2);\n i0.ɵɵelement(3, \"div\", 3);\n i0.ɵɵelementStart(4, \"div\", 4)(5, \"div\", 5)(6, \"div\", 6);\n i0.ɵɵtext(7);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(8, \"div\", 7)(9, \"span\", 8);\n i0.ɵɵtext(10);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(11, \"span\", 9);\n i0.ɵɵtext(12);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(13, \"div\", 10);\n i0.ɵɵtext(14);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"button\", 11);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_15_listener() {\n return ctx.logout();\n });\n i0.ɵɵtext(16, \" Cerrar Sesi\\u00F3n \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(17, \"div\", 12)(18, \"div\", 13);\n i0.ɵɵtext(19, \"Panel Kinetix\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(20, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_20_listener() {\n return ctx.setActiveTab(\"inicio\");\n });\n i0.ɵɵelementStart(21, \"span\", 15);\n i0.ɵɵtext(22, \"\\u26A1\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(23, \" Consorcio Kinetix \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(24, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_24_listener() {\n return ctx.setActiveTab(\"directory\");\n });\n i0.ɵɵelementStart(25, \"span\", 15);\n i0.ɵɵtext(26, \"\\uD83D\\uDC64\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(27, \" Directorio AD \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(28, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_28_listener() {\n return ctx.setActiveTab(\"workflow\");\n });\n i0.ɵɵelementStart(29, \"span\", 15);\n i0.ɵɵtext(30, \"\\u2699\\uFE0F\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(31, \" Workflow Aprobaci\\u00F3n \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(32, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_32_listener() {\n return ctx.setActiveTab(\"spaces\");\n });\n i0.ɵɵelementStart(33, \"span\", 15);\n i0.ɵɵtext(34, \"\\uD83D\\uDCC5\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(35, \" Gesti\\u00F3n de Espacios \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(36, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_36_listener() {\n return ctx.setActiveTab(\"metrics\");\n });\n i0.ɵɵelementStart(37, \"span\", 15);\n i0.ɵɵtext(38, \"\\uD83D\\uDCC8\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(39, \" Adopci\\u00F3n y KPIs \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(40, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_40_listener() {\n return ctx.setActiveTab(\"admin\");\n });\n i0.ɵɵelementStart(41, \"span\", 15);\n i0.ɵɵtext(42, \"\\uD83D\\uDD11\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(43, \" Visi\\u00F3n Admin \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(44, \"div\", 16)(45, \"div\", 17)(46, \"span\", 18);\n i0.ɵɵtext(47, \"Estado API:\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(48, \"span\", 19);\n i0.ɵɵelement(49, \"span\", 20);\n i0.ɵɵtext(50, \" ONLINE \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(51, \"div\", 17)(52, \"span\", 18);\n i0.ɵɵtext(53, \"Sesi\\u00F3n SSO:\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(54, \"span\", 21);\n i0.ɵɵtext(55, \"ACTIVE AD\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(56, \"div\", 17)(57, \"span\", 18);\n i0.ɵɵtext(58, \"Sincronizaci\\u00F3n:\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(59, \"span\", 22);\n i0.ɵɵtext(60, \"Entra ID (AD)\");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵelementStart(61, \"main\", 23);\n i0.ɵɵtemplate(62, DashboardComponent_Conditional_62_Template, 71, 0, \"div\", 24)(63, DashboardComponent_Conditional_63_Template, 37, 1, \"div\", 25)(64, DashboardComponent_Conditional_64_Template, 54, 1, \"div\", 25)(65, DashboardComponent_Conditional_65_Template, 56, 1, \"div\", 25)(66, DashboardComponent_Conditional_66_Template, 80, 0, \"div\", 25)(67, DashboardComponent_Conditional_67_Template, 53, 1, \"div\", 25);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance(7);\n i0.ɵɵtextInterpolate1(\" \", ctx.currentUser().avatar, \" \");\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate(ctx.currentUser().name);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx.currentUser().role);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" SSO: \", ctx.currentUser().email, \" \");\n i0.ɵɵadvance(6);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"inicio\")(\"border-cyan-400\", ctx.activeTab() === \"inicio\");\n i0.ɵɵadvance(4);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"directory\")(\"border-cyan-400\", ctx.activeTab() === \"directory\");\n i0.ɵɵadvance(4);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"workflow\")(\"border-magenta-400\", ctx.activeTab() === \"workflow\");\n i0.ɵɵadvance(4);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"spaces\")(\"border-purple-400\", ctx.activeTab() === \"spaces\");\n i0.ɵɵadvance(4);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"metrics\")(\"border-cyan-400\", ctx.activeTab() === \"metrics\");\n i0.ɵɵadvance(4);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"admin\")(\"border-magenta-400\", ctx.activeTab() === \"admin\");\n i0.ɵɵadvance(22);\n i0.ɵɵconditional(ctx.activeTab() === \"inicio\" ? 62 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.activeTab() === \"directory\" ? 63 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.activeTab() === \"workflow\" ? 64 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.activeTab() === \"spaces\" ? 65 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.activeTab() === \"metrics\" ? 66 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.activeTab() === \"admin\" ? 67 : -1);\n }\n },\n dependencies: [CommonModule],\n styles: [\".animate-fadeIn[_ngcontent-%COMP%] {\\n animation: _ngcontent-%COMP%_fadeIn 0.4s ease-out forwards;\\n }\\n @keyframes _ngcontent-%COMP%_fadeIn {\\n from { opacity: 0; transform: translateY(4px); }\\n to { opacity: 1; transform: translateY(0); }\\n }\\n \\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8uL3NyYy9hcHAvZmVhdHVyZXMvZGFzaGJvYXJkL2Rhc2hib2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtJQUNJO01BQ0Usd0NBQXdDO0lBQzFDO0lBQ0E7TUFDRSxPQUFPLFVBQVUsRUFBRSwwQkFBMEIsRUFBRTtNQUMvQyxLQUFLLFVBQVUsRUFBRSx3QkFBd0IsRUFBRTtJQUM3QyIsInNvdXJjZXNDb250ZW50IjpbIlxuICAgIC5hbmltYXRlLWZhZGVJbiB7XG4gICAgICBhbmltYXRpb246IGZhZGVJbiAwLjRzIGVhc2Utb3V0IGZvcndhcmRzO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIGZhZGVJbiB7XG4gICAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCk7IH1cbiAgICAgIHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XG4gICAgfVxuICAiXSwic291cmNlUm9vdCI6IiJ9 */\"]\n });\n }\n }\n return DashboardComponent;\n})();","map":{"version":3,"names":["signal","computed","inject","Router","CommonModule","i0","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵlistener","DashboardComponent_Conditional_62_Template_button_click_13_listener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","setActiveTab","DashboardComponent_Conditional_62_Template_button_click_15_listener","ɵɵadvance","ɵɵtextInterpolate1","tag_r5","ɵɵrepeaterCreate","DashboardComponent_Conditional_63_For_36_For_20_Template","ɵɵrepeaterTrackByIdentity","DashboardComponent_Conditional_63_For_36_Template_button_click_33_listener","emp_r6","_r4","$implicit","contactEmployee","name","id","avatar","ɵɵtextInterpolate","rating","role","ɵɵrepeater","tags","clients","rate","DashboardComponent_Conditional_63_Template_input_input_13_listener","$event","_r3","updateSearch","DashboardComponent_Conditional_63_Template_select_change_17_listener","updateDept","DashboardComponent_Conditional_63_For_36_Template","_forTrack0","filteredEmployees","length","simulationStatus","DashboardComponent_Conditional_64_Template_button_click_38_listener","_r7","runSimulation","ɵɵtemplate","DashboardComponent_Conditional_64_Conditional_40_Template","ɵɵconditional","DashboardComponent_Conditional_65_Template_button_click_53_listener","_r8","bookSpace","DashboardComponent_Conditional_65_Conditional_55_Template","bookingSuccess","approvalSuccess","DashboardComponent_Conditional_67_Template_button_click_42_listener","_r9","approveItem","DashboardComponent_Conditional_67_Template_button_click_50_listener","DashboardComponent_Conditional_67_Conditional_52_Template","DashboardComponent","constructor","router","activeTab","searchQuery","selectedDept","currentUser","email","employees","query","toLowerCase","dept","filter","emp","matchesSearch","includes","some","t","matchesDept","ngOnInit","userStr","localStorage","getItem","user","JSON","parse","set","e","console","error","tab","event","value","target","alert","setTimeout","title","logout","removeItem","navigate","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","DashboardComponent_Template","rf","ctx","DashboardComponent_Template_button_click_15_listener","DashboardComponent_Template_button_click_20_listener","DashboardComponent_Template_button_click_24_listener","DashboardComponent_Template_button_click_28_listener","DashboardComponent_Template_button_click_32_listener","DashboardComponent_Template_button_click_36_listener","DashboardComponent_Template_button_click_40_listener","DashboardComponent_Conditional_62_Template","DashboardComponent_Conditional_63_Template","DashboardComponent_Conditional_64_Template","DashboardComponent_Conditional_65_Template","DashboardComponent_Conditional_66_Template","DashboardComponent_Conditional_67_Template","ɵɵclassProp","styles"],"sources":["D:\\Jess\\agent\\Kinetix\\frontend\\src\\app\\features\\dashboard\\dashboard.component.ts"],"sourcesContent":["import { Component, signal, computed, OnInit, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\n\ninterface Employee {\n id: number;\n name: string;\n role: string;\n rating: number;\n clients: number;\n rate: number;\n avatar: string;\n tags: string[];\n}\n\ninterface UserProfile {\n name: string;\n email: string;\n role: string;\n avatar: string;\n}\n\n@Component({\n selector: 'app-dashboard',\n standalone: true,\n imports: [CommonModule],\n template: `\n
\n \n \n\n \n
\n \n \n @if (activeTab() === 'inicio') {\n
\n \n
\n
\n
\n \n PORTAL DE CONSORCIO\n

\n Consorcio Corporativo Kinetix\n

\n

\n Plataforma unificada de administración y autogestión de recursos del consorcio. Control de identidades centralizado y monitoreo de módulos integrados en tiempo real.\n

\n \n
\n \n \n
\n
\n\n \n
\n
\n Sedes Integradas\n
3 Sedes
\n London, Tokyo, NY\n
\n
\n Directorio Activo\n
1,450+
\n Usuarios Sincronizados\n
\n
\n Salas Disponibles\n
18 Salas
\n Sistemas IoT Activos\n
\n
\n Flujos de Trabajo\n
12 Activos
\n Reglas AD Operativas\n
\n
\n\n \n
\n

Módulos de Nueva Generación

\n
\n \n
\n
📚
\n

Bloque de Info

\n

\n Gestión de contenidos corporativos con arquitectura robusta de microservicios y publicación de artículos en tiempo récord.\n

\n
\n\n \n
\n
👤
\n

Directorios AD

\n

\n Sincronización nativa instantánea con Active Directory y perfiles dinámicos inteligentes para el equipo de desarrollo.\n

\n
\n\n \n
\n
📅
\n

Autogestión

\n

\n Reserva fluida de salas de conferencias, oficinas temporales e incidencias con disponibilidad y alertas en tiempo real.\n

\n
\n
\n
\n
\n }\n\n \n @if (activeTab() === 'directory') {\n
\n

Interfaz Directory Modern

\n \n
\n \n
\n

Búsqueda & Filtrado

\n

Uso de bordes suaves y ergonómicos para optimizar la visualización de datos.

\n \n
\n \n
\n \n \n
\n\n \n
\n \n \n
\n\n \n
\n
\n\n \n
\n \n
\n Mostrando {{ filteredEmployees().length }} empleados registrados\n Sincronizado con Active Directory\n
\n \n
\n @for (emp of filteredEmployees(); track emp.id) {\n \n
\n \n \n
\n \n ID: AD-{{ emp.id * 123 }}\n \n
\n\n
\n \n
\n
\n
\n {{ emp.avatar }}\n
\n
\n \n
\n \n {{ emp.rating }}\n
\n
\n\n \n

{{ emp.name }}

\n {{ emp.role }}\n \n \n
\n @for (tag of emp.tags; track tag) {\n \n {{ tag }}\n \n }\n
\n\n
\n\n \n
\n
\n
Clientes
\n
{{ emp.clients }}
\n
\n
\n
Tarifa/Hora
\n
\\${{ emp.rate }}/hr
\n
\n
\n\n \n \n
\n
\n }\n
\n
\n
\n
\n }\n\n \n @if (activeTab() === 'workflow') {\n
\n

Workflow de Aprobación

\n \n
\n \n
\n
\n CICLO COMPLETO DE VIDA\n

Validación y Publicación Automatizada

\n

\n Las propuestas de contenidos y flujos pasan por un motor estructurado que valida y publica automáticamente en canales institucionales y redes corporativas.\n

\n \n \n
\n
\n \n
\n Creación\n Captura de datos optimizada a través de formularios reactivos del lado del cliente.\n
\n
\n
\n \n
\n Validación\n Motor de reglas multinivel integrado con SSO y Active Directory para jerarquías de aprobación.\n
\n
\n
\n \n
\n Social\n Posteo automatizado e inmediato en las redes de comunicación interna de Kinetix.\n
\n
\n
\n
\n\n
\n \n @if (simulationStatus()) {\n {{ simulationStatus() }}\n }\n
\n
\n\n \n
\n
\n \n
\n \n \n \n \n \n \n \n \n \n AD ENGINE\n \n \n
\n STATUS: LISTENING ON PORT 3000\n
\n
\n
\n
\n
\n }\n\n \n @if (activeTab() === 'spaces') {\n
\n

Gestión de Espacios & Incidencias

\n \n
\n \n
\n
\n \n
\n
\n \n SALA DE CONFERENCIAS VIP\n \n
\n \n
\n

Sala London Hall — Piso 4

\n

\n Equipada con pantalla interactiva 4K de 85 pulgadas, sistema de audio envolvente Jabra, conectividad inalámbrica y capacidad para 12 personas.\n

\n \n
\n 👥 Capacidad: 12 pers.\n 📶 Wi-Fi 6 Giga\n 🌡️ Termostato IoT\n
\n
\n
\n\n \n
\n
\n AUTOGESTIÓN DE ALQUILER\n

Reserva Directa de Espacios

\n

Reserva de salas de conferencias, oficinas temporales y puestos de trabajo con confirmación instantánea.

\n \n
\n
\n \n
\n \n \n
\n \n \n
\n \n \n
\n
\n\n \n
\n \n \n
\n
\n
\n\n
\n \n \n @if (bookingSuccess()) {\n
\n ¡Reserva confirmada con éxito! Se ha notificado a tu correo y calendario de Active Directory.\n
\n }\n
\n
\n
\n
\n }\n\n \n @if (activeTab() === 'metrics') {\n
\n

Proyección de Adopción & KPIs

\n\n \n
\n \n
\n
\n

Proyección de Adopción Kinetix

\n ROI +85%\n
\n \n

Crecimiento exponencial de interacciones tras la implementación del diseño UI/UX renovado.

\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Q1 2026\n Despliegue\n ROI +85%\n \n
\n
\n\n \n
\n
\n

Indicadores Clave (KPIs)

\n
0.4s
\n
Tiempo de Carga Promedio
\n
\n \n
\n
\n Renderizado del lado del cliente altamente eficiente.\n
\n
\n Compresión automatizada de activos de imagen.\n
\n
\n Memoria caché distribuida para directorios AD.\n
\n
\n
\n
\n\n \n
\n

Eficiencia en Resolución de Incidencias

\n

Reducción drástica del tiempo de respuesta mediante el módulo de ticketing inteligente de Kinetix.

\n \n \n
\n \n
\n Kinetix V2 (Actual)\n
\n
\n 12 min\n
\n
\n\n \n
\n Promedio Industria\n
\n
\n 25 min\n
\n
\n\n \n
\n Sistema Anterior\n
\n
\n 45 min\n
\n
\n
\n
\n
\n }\n\n \n @if (activeTab() === 'admin') {\n
\n

Visión de Administrador

\n\n
\n \n
\n

Control Total

\n \n
\n \n
\n
\n \n
\n 94%\n ESTABILIDAD\n
\n
\n \n Monitoreo activo de solicitudes y API gateways de NestJS.\n
\n\n \n
\n \n
\n

Alertas Críticas

\n \n
\n
\n 🔧 Mantenimiento de servidor de base de datos PostgreSQL\n PENDIENTE\n
\n
\n 🔒 Expiración de secretos de Azure AD Client credentials\n En 12 días\n
\n
\n
\n\n \n
\n

Aprobaciones de Contenido

\n \n
\n
\n
\n Lanzamiento Kinetix V2 Intranet\n Autor: Director de Tecnología (SSO AD)\n
\n \n
\n\n
\n
\n Manual del Desarrollador Backend NestJS\n Autor: Arquitecto Principal\n
\n \n
\n
\n \n @if (approvalSuccess()) {\n
\n {{ approvalSuccess() }}\n
\n }\n
\n
\n
\n
\n }\n\n
\n
\n `,\n styles: [`\n .animate-fadeIn {\n animation: fadeIn 0.4s ease-out forwards;\n }\n @keyframes fadeIn {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n }\n `]\n})\nexport class DashboardComponent implements OnInit {\n private router = inject(Router);\n\n // Navigation active tab signal\n activeTab = signal<'inicio' | 'directory' | 'workflow' | 'spaces' | 'metrics' | 'admin'>('inicio');\n\n // Directory filter signals\n searchQuery = signal('');\n selectedDept = signal('ALL');\n\n // Booking & Simulation mock state signals\n bookingSuccess = signal(false);\n simulationStatus = signal('');\n approvalSuccess = signal('');\n\n // Sincronized Active Directory Active Profile signal\n currentUser = signal({\n name: 'Invitado',\n email: 'guest@kinetix.com',\n role: 'Employee',\n avatar: 'G'\n });\n\n // Active Directory mock database of employees exactly styled as Slide 4\n employees = signal([\n {\n id: 1,\n name: 'John Morton',\n role: 'UI/UX Designer',\n rating: 4.9,\n clients: 50,\n rate: 65,\n avatar: 'JM',\n tags: ['App Design', 'Web Design', 'Figma', 'Active Directory']\n },\n {\n id: 2,\n name: 'Sarah Jenkins',\n role: 'Backend NestJS Architect',\n rating: 4.8,\n clients: 42,\n rate: 75,\n avatar: 'SJ',\n tags: ['NestJS', 'PostgreSQL', 'JWT', 'Active Directory']\n },\n {\n id: 3,\n name: 'Alex Rivera',\n role: 'Senior Angular Developer',\n rating: 4.9,\n clients: 68,\n rate: 70,\n avatar: 'AR',\n tags: ['Angular 17', 'Signals', 'RxJS', 'TypeScript']\n },\n {\n id: 4,\n name: 'David Chen',\n role: 'Infrastructure Security Engineer',\n rating: 4.7,\n clients: 25,\n rate: 80,\n avatar: 'DC',\n tags: ['Azure Entra ID', 'SSO', 'Docker', 'PostgreSQL']\n }\n ]);\n\n // Computed signal to filter employee list reactively\n filteredEmployees = computed(() => {\n const query = this.searchQuery().toLowerCase();\n const dept = this.selectedDept();\n \n return this.employees().filter(emp => {\n // Basic text search filter\n const matchesSearch = emp.name.toLowerCase().includes(query) || \n emp.role.toLowerCase().includes(query) ||\n emp.tags.some(t => t.toLowerCase().includes(query));\n \n // Basic department match\n let matchesDept = true;\n if (dept !== 'ALL') {\n if (dept === 'IT') {\n matchesDept = emp.role.includes('Backend') || emp.role.includes('Angular') || emp.role.includes('Infrastructure');\n } else if (dept === 'Diseño') {\n matchesDept = emp.role.includes('Designer') || emp.role.includes('UX');\n } else if (dept === 'Mantenimiento') {\n matchesDept = emp.role.includes('Security');\n }\n }\n \n return matchesSearch && matchesDept;\n });\n });\n\n ngOnInit() {\n // Load Active Directory profile from local storage\n const userStr = localStorage.getItem('kinetix_user');\n if (userStr) {\n try {\n const user = JSON.parse(userStr);\n this.currentUser.set(user);\n } catch (e) {\n console.error('Error parsing user profile from local storage', e);\n }\n }\n }\n\n setActiveTab(tab: 'inicio' | 'directory' | 'workflow' | 'spaces' | 'metrics' | 'admin') {\n this.activeTab.set(tab);\n // Reset secondary flags\n this.bookingSuccess.set(false);\n this.simulationStatus.set('');\n this.approvalSuccess.set('');\n }\n\n updateSearch(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchQuery.set(value);\n }\n\n updateDept(event: Event) {\n const value = (event.target as HTMLSelectElement).value;\n this.selectedDept.set(value);\n }\n\n contactEmployee(name: string) {\n alert(`Iniciando canal seguro encriptado de comunicación con ${name} vía Microsoft Teams (SSO Active Directory)...`);\n }\n\n runSimulation() {\n this.simulationStatus.set('Procesando reglas...');\n setTimeout(() => {\n this.simulationStatus.set('Creación capturada ✓');\n setTimeout(() => {\n this.simulationStatus.set('Reglas AD aprobadas ✓');\n setTimeout(() => {\n this.simulationStatus.set('Posteo social programado ✓');\n }, 1000);\n }, 1000);\n }, 1000);\n }\n\n bookSpace() {\n this.bookingSuccess.set(true);\n }\n\n approveItem(title: string) {\n this.approvalSuccess.set(`Publicación \"${title}\" aprobada y publicada en redes corporativas con éxito.`);\n setTimeout(() => {\n this.approvalSuccess.set('');\n }, 4000);\n }\n\n logout() {\n localStorage.removeItem('kinetix_token');\n localStorage.removeItem('kinetix_user');\n this.router.navigate(['/login']);\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/55140f1cadb198825dc04057368ace39fd107fdf48d1794b2e4a46edf3a14c8f.json b/frontend/.angular/cache/18.2.21/babel-webpack/55140f1cadb198825dc04057368ace39fd107fdf48d1794b2e4a46edf3a14c8f.json new file mode 100644 index 0000000..a065fff --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/55140f1cadb198825dc04057368ace39fd107fdf48d1794b2e4a46edf3a14c8f.json @@ -0,0 +1 @@ +{"ast":null,"code":"import { signal, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nfunction LoginComponent_Conditional_37_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 25);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r0.errorMsg(), \" \");\n }\n}\nexport let LoginComponent = /*#__PURE__*/(() => {\n class LoginComponent {\n constructor() {\n this.router = inject(Router);\n this.email = '';\n this.password = '';\n this.errorMsg = signal('');\n }\n onEmailChange(event) {\n this.email = event.target.value;\n }\n onPasswordChange(event) {\n this.password = event.target.value;\n }\n loginLocal() {\n if (!this.email || !this.password) {\n this.errorMsg.set('Por favor, ingresa tu correo y contraseña corporativos.');\n return;\n }\n if (this.email.includes('admin') || this.email.includes('kinetix')) {\n // Set local session credentials\n const userName = this.email.split('@')[0];\n const displayName = userName.charAt(0).toUpperCase() + userName.slice(1);\n localStorage.setItem('kinetix_token', 'local-mock-jwt-token-998822');\n localStorage.setItem('kinetix_user', JSON.stringify({\n name: displayName,\n email: this.email,\n role: 'Consortium Manager',\n avatar: displayName.substring(0, 2).toUpperCase()\n }));\n this.router.navigate(['/dashboard']);\n } else {\n this.errorMsg.set('Credenciales locales no encontradas. Intenta usar Active Directory SSO.');\n }\n }\n loginSSO() {\n // Simulate active directory single sign on flow\n localStorage.setItem('kinetix_token', 'ad-jwt-token-microsoft-entra-id-2026');\n localStorage.setItem('kinetix_user', JSON.stringify({\n name: 'Jess Miller',\n email: 'jess.miller@kinetix-consortium.com',\n role: 'Chief Architect & Director',\n avatar: 'JM'\n }));\n this.router.navigate(['/dashboard']);\n }\n static {\n this.ɵfac = function LoginComponent_Factory(t) {\n return new (t || LoginComponent)();\n };\n }\n static {\n this.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n type: LoginComponent,\n selectors: [[\"app-login\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 40,\n vars: 1,\n consts: [[1, \"min-h-[75vh]\", \"flex\", \"items-center\", \"justify-center\", \"relative\", \"overflow-hidden\", \"px-4\"], [1, \"absolute\", \"-right-20\", \"-top-20\", \"w-80\", \"h-80\", \"bg-cyan-500/10\", \"rounded-full\", \"blur-[120px]\"], [1, \"absolute\", \"-left-20\", \"-bottom-20\", \"w-80\", \"h-80\", \"bg-magenta-500/10\", \"rounded-full\", \"blur-[120px]\"], [1, \"glass-panel\", \"p-8\", \"rounded-3xl\", \"w-full\", \"max-w-md\", \"relative\", \"border-white/5\", \"bg-[#0d0f1b]/75\"], [1, \"flex\", \"flex-col\", \"items-center\", \"gap-2\", \"mb-8\", \"text-center\"], [1, \"w-14\", \"h-14\", \"rounded-2xl\", \"bg-gradient-to-tr\", \"from-cyan-400\", \"via-blue-500\", \"to-indigo-500\", \"p-0.5\", \"shadow-[0_0_20px_rgba(0,242,254,0.3)]\"], [1, \"w-full\", \"h-full\", \"bg-[#0a0a0c]\", \"rounded-[14px]\", \"flex\", \"items-center\", \"justify-center\", \"font-black\", \"text-xl\", \"text-cyan-400\"], [1, \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-widest\", \"text-slate-400\"], [1, \"text-2xl\", \"font-black\", \"text-white\", \"tracking-tight\", \"leading-none\", \"mt-1\"], [1, \"text-transparent\", \"bg-clip-text\", \"bg-gradient-to-r\", \"from-cyan-400\", \"to-blue-500\"], [1, \"flex\", \"flex-col\", \"gap-4\"], [1, \"flex\", \"flex-col\", \"gap-1.5\"], [1, \"text-[10px]\", \"uppercase\", \"font-bold\", \"text-slate-400\", \"tracking-wider\"], [\"type\", \"email\", \"placeholder\", \"nombre@kinetix.com\", 1, \"px-4\", \"py-3\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\", 3, \"change\"], [\"type\", \"password\", \"placeholder\", \"\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\", 1, \"px-4\", \"py-3\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\", 3, \"change\"], [1, \"w-full\", \"py-3\", \"rounded-full\", \"btn-cyan\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", \"mt-2\", 3, \"click\"], [1, \"flex\", \"items-center\", \"gap-3\", \"my-3\"], [1, \"flex-grow\", \"border-white/5\"], [1, \"text-[9px]\", \"uppercase\", \"font-bold\", \"text-white/30\", \"tracking-widest\"], [1, \"w-full\", \"py-3\", \"rounded-full\", \"border\", \"border-cyan-500/25\", \"hover:border-cyan-500/50\", \"bg-cyan-950/20\", \"hover:bg-cyan-950/45\", \"text-cyan-400\", \"font-extrabold\", \"text-xs\", \"uppercase\", \"tracking-wider\", \"flex\", \"items-center\", \"justify-center\", \"gap-2.5\", \"transition-all\", 3, \"click\"], [\"viewBox\", \"0 0 23 23\", \"fill\", \"currentColor\", 1, \"w-4\", \"h-4\"], [\"x\", \"0\", \"y\", \"0\", \"width\", \"11\", \"height\", \"11\", \"fill\", \"#f25022\"], [\"x\", \"12\", \"y\", \"0\", \"width\", \"11\", \"height\", \"11\", \"fill\", \"#7fba00\"], [\"x\", \"0\", \"y\", \"12\", \"width\", \"11\", \"height\", \"11\", \"fill\", \"#00a4ef\"], [\"x\", \"12\", \"y\", \"12\", \"width\", \"11\", \"height\", \"11\", \"fill\", \"#ffb900\"], [1, \"mt-4\", \"p-3\", \"bg-magenta-500/10\", \"border\", \"border-magenta-500/20\", \"text-magenta-400\", \"rounded-xl\", \"text-xs\", \"text-center\", \"font-semibold\", \"animate-fadeIn\"], [1, \"text-[9px]\", \"text-white/30\", \"text-center\", \"mt-6\", \"uppercase\", \"tracking-wider\"]],\n template: function LoginComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵelement(1, \"div\", 1)(2, \"div\", 2);\n i0.ɵɵelementStart(3, \"div\", 3)(4, \"div\", 4)(5, \"div\", 5)(6, \"div\", 6);\n i0.ɵɵtext(7, \" K \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(8, \"h2\", 7);\n i0.ɵɵtext(9, \"Portal Corporativo\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(10, \"h1\", 8);\n i0.ɵɵtext(11, \" Consorcio \");\n i0.ɵɵelementStart(12, \"span\", 9);\n i0.ɵɵtext(13, \"Kinetix\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(14, \"div\", 10)(15, \"div\", 11)(16, \"label\", 12);\n i0.ɵɵtext(17, \"Correo Corporativo\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(18, \"input\", 13);\n i0.ɵɵlistener(\"change\", function LoginComponent_Template_input_change_18_listener($event) {\n return ctx.onEmailChange($event);\n });\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(19, \"div\", 11)(20, \"label\", 12);\n i0.ɵɵtext(21, \"Contrase\\u00F1a\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(22, \"input\", 14);\n i0.ɵɵlistener(\"change\", function LoginComponent_Template_input_change_22_listener($event) {\n return ctx.onPasswordChange($event);\n });\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(23, \"button\", 15);\n i0.ɵɵlistener(\"click\", function LoginComponent_Template_button_click_23_listener() {\n return ctx.loginLocal();\n });\n i0.ɵɵtext(24, \" INGRESAR A LA INTRANET \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(25, \"div\", 16);\n i0.ɵɵelement(26, \"hr\", 17);\n i0.ɵɵelementStart(27, \"span\", 18);\n i0.ɵɵtext(28, \"O ACCEDER CON\");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(29, \"hr\", 17);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(30, \"button\", 19);\n i0.ɵɵlistener(\"click\", function LoginComponent_Template_button_click_30_listener() {\n return ctx.loginSSO();\n });\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(31, \"svg\", 20);\n i0.ɵɵelement(32, \"rect\", 21)(33, \"rect\", 22)(34, \"rect\", 23)(35, \"rect\", 24);\n i0.ɵɵelementEnd();\n i0.ɵɵtext(36, \" Active Directory SSO \");\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(37, LoginComponent_Conditional_37_Template, 2, 1, \"div\", 25);\n i0.ɵɵnamespaceHTML();\n i0.ɵɵelementStart(38, \"div\", 26);\n i0.ɵɵtext(39, \" Acceso restringido. Encriptaci\\u00F3n SSL/TLS y pol\\u00EDticas Entra ID activas. \");\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n i0.ɵɵadvance(37);\n i0.ɵɵconditional(ctx.errorMsg() ? 37 : -1);\n }\n },\n dependencies: [CommonModule],\n styles: [\".animate-fadeIn[_ngcontent-%COMP%] {\\n animation: _ngcontent-%COMP%_fadeIn 0.4s ease-out forwards;\\n }\\n @keyframes _ngcontent-%COMP%_fadeIn {\\n from { opacity: 0; transform: translateY(4px); }\\n to { opacity: 1; transform: translateY(0); }\\n }\\n \\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8uL3NyYy9hcHAvZmVhdHVyZXMvYXV0aC9sb2dpbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtJQUNJO01BQ0Usd0NBQXdDO0lBQzFDO0lBQ0E7TUFDRSxPQUFPLFVBQVUsRUFBRSwwQkFBMEIsRUFBRTtNQUMvQyxLQUFLLFVBQVUsRUFBRSx3QkFBd0IsRUFBRTtJQUM3QyIsInNvdXJjZXNDb250ZW50IjpbIlxuICAgIC5hbmltYXRlLWZhZGVJbiB7XG4gICAgICBhbmltYXRpb246IGZhZGVJbiAwLjRzIGVhc2Utb3V0IGZvcndhcmRzO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIGZhZGVJbiB7XG4gICAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCk7IH1cbiAgICAgIHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XG4gICAgfVxuICAiXSwic291cmNlUm9vdCI6IiJ9 */\"]\n });\n }\n }\n return LoginComponent;\n})();","map":{"version":3,"names":["signal","inject","Router","CommonModule","i0","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","errorMsg","LoginComponent","constructor","router","email","password","onEmailChange","event","target","value","onPasswordChange","loginLocal","set","includes","userName","split","displayName","charAt","toUpperCase","slice","localStorage","setItem","JSON","stringify","name","role","avatar","substring","navigate","loginSSO","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","LoginComponent_Template","rf","ctx","ɵɵelement","ɵɵlistener","LoginComponent_Template_input_change_18_listener","$event","LoginComponent_Template_input_change_22_listener","LoginComponent_Template_button_click_23_listener","LoginComponent_Template_button_click_30_listener","ɵɵtemplate","LoginComponent_Conditional_37_Template","ɵɵconditional","styles"],"sources":["D:\\Jess\\agent\\Kinetix\\frontend\\src\\app\\features\\auth\\login.component.ts"],"sourcesContent":["import { Component, signal, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-login',\n standalone: true,\n imports: [CommonModule],\n template: `\n
\n \n
\n
\n\n
\n \n \n
\n
\n
\n K\n
\n
\n

Portal Corporativo

\n

\n Consorcio Kinetix\n

\n
\n\n \n
\n \n
\n \n \n
\n\n
\n \n \n
\n\n \n\n \n
\n
\n O ACCEDER CON\n
\n
\n\n \n \n
\n\n @if (errorMsg()) {\n
\n {{ errorMsg() }}\n
\n }\n\n \n
\n Acceso restringido. Encriptación SSL/TLS y políticas Entra ID activas.\n
\n
\n
\n `,\n styles: [`\n .animate-fadeIn {\n animation: fadeIn 0.4s ease-out forwards;\n }\n @keyframes fadeIn {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n }\n `]\n})\nexport class LoginComponent {\n private router = inject(Router);\n\n email = '';\n password = '';\n errorMsg = signal('');\n\n onEmailChange(event: Event) {\n this.email = (event.target as HTMLInputElement).value;\n }\n\n onPasswordChange(event: Event) {\n this.password = (event.target as HTMLInputElement).value;\n }\n\n loginLocal() {\n if (!this.email || !this.password) {\n this.errorMsg.set('Por favor, ingresa tu correo y contraseña corporativos.');\n return;\n }\n\n if (this.email.includes('admin') || this.email.includes('kinetix')) {\n // Set local session credentials\n const userName = this.email.split('@')[0];\n const displayName = userName.charAt(0).toUpperCase() + userName.slice(1);\n \n localStorage.setItem('kinetix_token', 'local-mock-jwt-token-998822');\n localStorage.setItem('kinetix_user', JSON.stringify({\n name: displayName,\n email: this.email,\n role: 'Consortium Manager',\n avatar: displayName.substring(0, 2).toUpperCase()\n }));\n\n this.router.navigate(['/dashboard']);\n } else {\n this.errorMsg.set('Credenciales locales no encontradas. Intenta usar Active Directory SSO.');\n }\n }\n\n loginSSO() {\n // Simulate active directory single sign on flow\n localStorage.setItem('kinetix_token', 'ad-jwt-token-microsoft-entra-id-2026');\n localStorage.setItem('kinetix_user', JSON.stringify({\n name: 'Jess Miller',\n email: 'jess.miller@kinetix-consortium.com',\n role: 'Chief Architect & Director',\n avatar: 'JM'\n }));\n\n this.router.navigate(['/dashboard']);\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/9ea296097a152eb967613671dbfc16ed75c4e90652c0efa85592c31d25a7bfff.json b/frontend/.angular/cache/18.2.21/babel-webpack/9ea296097a152eb967613671dbfc16ed75c4e90652c0efa85592c31d25a7bfff.json new file mode 100644 index 0000000..c18e110 --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/9ea296097a152eb967613671dbfc16ed75c4e90652c0efa85592c31d25a7bfff.json @@ -0,0 +1 @@ +{"ast":null,"code":"import { authGuard } from './core/guards/auth.guard';\nexport const routes = [{\n path: '',\n redirectTo: 'dashboard',\n pathMatch: 'full'\n}, {\n path: 'login',\n loadComponent: () => import('./features/auth/login.component').then(m => m.LoginComponent)\n}, {\n path: 'dashboard',\n canActivate: [authGuard],\n loadComponent: () => import('./features/dashboard/dashboard.component').then(m => m.DashboardComponent)\n}];\n// Modules for each subagent will be lazily loaded here.","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/aa17b09e02099fa24d566e50880dea27e18e3fead65b4716dd7d269e8c479c36.json b/frontend/.angular/cache/18.2.21/babel-webpack/aa17b09e02099fa24d566e50880dea27e18e3fead65b4716dd7d269e8c479c36.json new file mode 100644 index 0000000..a2a8793 --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/aa17b09e02099fa24d566e50880dea27e18e3fead65b4716dd7d269e8c479c36.json @@ -0,0 +1 @@ +{"ast":null,"code":"import { authGuard } from './core/guards/auth.guard';\nexport const routes = [{\n path: '',\n redirectTo: 'dashboard',\n pathMatch: 'full'\n}, {\n path: 'login',\n loadComponent: () => import('./features/auth/login.component').then(m => m.LoginComponent)\n}, {\n path: 'dashboard',\n canActivate: [authGuard],\n loadComponent: () => import('./features/dashboard/dashboard.component').then(m => m.DashboardComponent)\n}];\n// Modules for each subagent will be lazily loaded here.","map":{"version":3,"names":["authGuard","routes","path","redirectTo","pathMatch","loadComponent","then","m","LoginComponent","canActivate","DashboardComponent"],"sources":["D:\\Jess\\agent\\Kinetix\\frontend\\src\\app\\app.routes.ts"],"sourcesContent":["import { Routes } from '@angular/router';\nimport { authGuard } from './core/guards/auth.guard';\n\nexport const routes: Routes = [\n {\n path: '',\n redirectTo: 'dashboard',\n pathMatch: 'full'\n },\n {\n path: 'login',\n loadComponent: () => import('./features/auth/login.component').then(m => m.LoginComponent)\n },\n {\n path: 'dashboard',\n canActivate: [authGuard],\n loadComponent: () => import('./features/dashboard/dashboard.component').then(m => m.DashboardComponent)\n }\n];\n// Modules for each subagent will be lazily loaded here.\n"],"mappings":"AACA,SAASA,SAAS,QAAQ,0BAA0B;AAEpD,OAAO,MAAMC,MAAM,GAAW,CAC5B;EACEC,IAAI,EAAE,EAAE;EACRC,UAAU,EAAE,WAAW;EACvBC,SAAS,EAAE;CACZ,EACD;EACEF,IAAI,EAAE,OAAO;EACbG,aAAa,EAAEA,CAAA,KAAM,MAAM,CAAC,iCAAiC,CAAC,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,cAAc;CAC1F,EACD;EACEN,IAAI,EAAE,WAAW;EACjBO,WAAW,EAAE,CAACT,SAAS,CAAC;EACxBK,aAAa,EAAEA,CAAA,KAAM,MAAM,CAAC,0CAA0C,CAAC,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACG,kBAAkB;CACvG,CACF;AACD","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/ce4ac9a639be2ecdbefd8c1cda8a0a14dacff29a5758e424255e4c266de17de1.json b/frontend/.angular/cache/18.2.21/babel-webpack/ce4ac9a639be2ecdbefd8c1cda8a0a14dacff29a5758e424255e4c266de17de1.json new file mode 100644 index 0000000..0524e00 --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/ce4ac9a639be2ecdbefd8c1cda8a0a14dacff29a5758e424255e4c266de17de1.json @@ -0,0 +1 @@ +{"ast":null,"code":"import { signal, computed, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nconst _forTrack0 = ($index, $item) => $item.id;\nfunction DashboardComponent_Conditional_62_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 24)(1, \"div\", 26);\n i0.ɵɵelement(2, \"div\", 27)(3, \"div\", 28);\n i0.ɵɵelementStart(4, \"span\", 29);\n i0.ɵɵtext(5, \"PORTAL DE CONSORCIO\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"h2\", 30);\n i0.ɵɵtext(7, \" Consorcio Corporativo \");\n i0.ɵɵelementStart(8, \"span\", 31);\n i0.ɵɵtext(9, \"Kinetix\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(10, \"p\", 32);\n i0.ɵɵtext(11, \" Plataforma unificada de administraci\\u00F3n y autogesti\\u00F3n de recursos del consorcio. Control de identidades centralizado y monitoreo de m\\u00F3dulos integrados en tiempo real. \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"div\", 33)(13, \"button\", 34);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_62_Template_button_click_13_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.setActiveTab(\"directory\"));\n });\n i0.ɵɵtext(14, \" Directorio Consorcio \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"button\", 35);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_62_Template_button_click_15_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.setActiveTab(\"spaces\"));\n });\n i0.ɵɵtext(16, \" Reserva de Salas \");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(17, \"div\", 36)(18, \"div\", 37)(19, \"span\", 38);\n i0.ɵɵtext(20, \"Sedes Integradas\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(21, \"div\", 39);\n i0.ɵɵtext(22, \"3 Sedes\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(23, \"span\", 40);\n i0.ɵɵtext(24, \"London, Tokyo, NY\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(25, \"div\", 41)(26, \"span\", 38);\n i0.ɵɵtext(27, \"Directorio Activo\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(28, \"div\", 39);\n i0.ɵɵtext(29, \"1,450+\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(30, \"span\", 42);\n i0.ɵɵtext(31, \"Usuarios Sincronizados\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(32, \"div\", 43)(33, \"span\", 38);\n i0.ɵɵtext(34, \"Salas Disponibles\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(35, \"div\", 39);\n i0.ɵɵtext(36, \"18 Salas\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(37, \"span\", 44);\n i0.ɵɵtext(38, \"Sistemas IoT Activos\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(39, \"div\", 45)(40, \"span\", 38);\n i0.ɵɵtext(41, \"Flujos de Trabajo\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(42, \"div\", 39);\n i0.ɵɵtext(43, \"12 Activos\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(44, \"span\", 46);\n i0.ɵɵtext(45, \"Reglas AD Operativas\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(46, \"div\", 47)(47, \"h3\", 48);\n i0.ɵɵtext(48, \"M\\u00F3dulos de Nueva Generaci\\u00F3n\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(49, \"div\", 49)(50, \"div\", 50)(51, \"div\", 51);\n i0.ɵɵtext(52, \"\\uD83D\\uDCDA\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(53, \"h4\", 52);\n i0.ɵɵtext(54, \"Bloque de Info\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(55, \"p\", 53);\n i0.ɵɵtext(56, \" Gesti\\u00F3n de contenidos corporativos con arquitectura robusta de microservicios y publicaci\\u00F3n de art\\u00EDculos en tiempo r\\u00E9cord. \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(57, \"div\", 54)(58, \"div\", 55);\n i0.ɵɵtext(59, \"\\uD83D\\uDC64\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(60, \"h4\", 52);\n i0.ɵɵtext(61, \"Directorios AD\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(62, \"p\", 53);\n i0.ɵɵtext(63, \" Sincronizaci\\u00F3n nativa instant\\u00E1nea con Active Directory y perfiles din\\u00E1micos inteligentes para el equipo de desarrollo. \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(64, \"div\", 56)(65, \"div\", 57);\n i0.ɵɵtext(66, \"\\uD83D\\uDCC5\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(67, \"h4\", 52);\n i0.ɵɵtext(68, \"Autogesti\\u00F3n\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(69, \"p\", 53);\n i0.ɵɵtext(70, \" Reserva fluida de salas de conferencias, oficinas temporales e incidencias con disponibilidad y alertas en tiempo real. \");\n i0.ɵɵelementEnd()()()()();\n }\n}\nfunction DashboardComponent_Conditional_63_For_36_For_20_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 88);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const tag_r5 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", tag_r5, \" \");\n }\n}\nfunction DashboardComponent_Conditional_63_For_36_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 75)(1, \"div\", 76)(2, \"span\", 77);\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(4, \"div\", 78)(5, \"div\", 79)(6, \"div\", 80)(7, \"div\", 81);\n i0.ɵɵtext(8);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(9, \"div\", 82)(10, \"span\", 83);\n i0.ɵɵtext(11, \"\\u2605\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"span\", 84);\n i0.ɵɵtext(13);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(14, \"h4\", 85);\n i0.ɵɵtext(15);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(16, \"span\", 86);\n i0.ɵɵtext(17);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(18, \"div\", 87);\n i0.ɵɵrepeaterCreate(19, DashboardComponent_Conditional_63_For_36_For_20_Template, 2, 1, \"span\", 88, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(21, \"hr\", 89);\n i0.ɵɵelementStart(22, \"div\", 90)(23, \"div\", 91)(24, \"div\", 92);\n i0.ɵɵtext(25, \"Clientes\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(26, \"div\", 93);\n i0.ɵɵtext(27);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(28, \"div\", 91)(29, \"div\", 92);\n i0.ɵɵtext(30, \"Tarifa/Hora\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(31, \"div\", 93);\n i0.ɵɵtext(32);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(33, \"button\", 94);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_63_For_36_Template_button_click_33_listener() {\n const emp_r6 = i0.ɵɵrestoreView(_r4).$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.contactEmployee(emp_r6.name));\n });\n i0.ɵɵtext(34, \" Get In Touch \");\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const emp_r6 = ctx.$implicit;\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate1(\" ID: AD-\", emp_r6.id * 123, \" \");\n i0.ɵɵadvance(5);\n i0.ɵɵtextInterpolate1(\" \", emp_r6.avatar, \" \");\n i0.ɵɵadvance(5);\n i0.ɵɵtextInterpolate(emp_r6.rating);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(emp_r6.name);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(emp_r6.role);\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(emp_r6.tags);\n i0.ɵɵadvance(8);\n i0.ɵɵtextInterpolate(emp_r6.clients);\n i0.ɵɵadvance(5);\n i0.ɵɵtextInterpolate1(\"$\", emp_r6.rate, \"/hr\");\n }\n}\nfunction DashboardComponent_Conditional_63_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"h2\", 58);\n i0.ɵɵtext(2, \"Interfaz Directory Modern\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 59)(4, \"div\", 60)(5, \"h3\", 61);\n i0.ɵɵtext(6, \"B\\u00FAsqueda & Filtrado\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(7, \"p\", 62);\n i0.ɵɵtext(8, \"Uso de bordes suaves y ergon\\u00F3micos para optimizar la visualizaci\\u00F3n de datos.\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(9, \"div\", 47)(10, \"div\", 63)(11, \"label\", 38);\n i0.ɵɵtext(12, \"Buscar Empleado\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(13, \"input\", 64);\n i0.ɵɵlistener(\"input\", function DashboardComponent_Conditional_63_Template_input_input_13_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.updateSearch($event));\n });\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(14, \"div\", 63)(15, \"label\", 38);\n i0.ɵɵtext(16, \"Departamento\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(17, \"select\", 65);\n i0.ɵɵlistener(\"change\", function DashboardComponent_Conditional_63_Template_select_change_17_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.updateDept($event));\n });\n i0.ɵɵelementStart(18, \"option\", 66);\n i0.ɵɵtext(19, \"Todos los Departamentos\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(20, \"option\", 67);\n i0.ɵɵtext(21, \"IT & Desarrollo\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(22, \"option\", 68);\n i0.ɵɵtext(23, \"Dise\\u00F1o y UI/UX\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(24, \"option\", 69);\n i0.ɵɵtext(25, \"Mantenimiento\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(26, \"button\", 70);\n i0.ɵɵtext(27, \" APLICAR FILTROS \");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(28, \"div\", 71)(29, \"div\", 72)(30, \"span\");\n i0.ɵɵtext(31);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(32, \"span\", 73);\n i0.ɵɵtext(33, \"Sincronizado con Active Directory\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(34, \"div\", 74);\n i0.ɵɵrepeaterCreate(35, DashboardComponent_Conditional_63_For_36_Template, 35, 7, \"div\", 75, _forTrack0);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(31);\n i0.ɵɵtextInterpolate1(\"Mostrando \", ctx_r1.filteredEmployees().length, \" empleados registrados\");\n i0.ɵɵadvance(4);\n i0.ɵɵrepeater(ctx_r1.filteredEmployees());\n }\n}\nfunction DashboardComponent_Conditional_64_Conditional_40_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 106);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.simulationStatus());\n }\n}\nfunction DashboardComponent_Conditional_64_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"h2\", 58);\n i0.ɵɵtext(2, \"Workflow de Aprobaci\\u00F3n\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 95)(4, \"div\", 96)(5, \"div\", 47)(6, \"span\", 97);\n i0.ɵɵtext(7, \"CICLO COMPLETO DE VIDA\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(8, \"h3\", 98);\n i0.ɵɵtext(9, \"Validaci\\u00F3n y Publicaci\\u00F3n Automatizada\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(10, \"p\", 53);\n i0.ɵɵtext(11, \" Las propuestas de contenidos y flujos pasan por un motor estructurado que valida y publica autom\\u00E1ticamente en canales institucionales y redes corporativas. \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"div\", 99)(13, \"div\", 100)(14, \"span\", 101);\n i0.ɵɵtext(15, \"\\u2713\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(16, \"div\")(17, \"strong\", 102);\n i0.ɵɵtext(18, \"Creaci\\u00F3n\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(19, \"span\", 103);\n i0.ɵɵtext(20, \"Captura de datos optimizada a trav\\u00E9s de formularios reactivos del lado del cliente.\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(21, \"div\", 100)(22, \"span\", 101);\n i0.ɵɵtext(23, \"\\u2713\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(24, \"div\")(25, \"strong\", 102);\n i0.ɵɵtext(26, \"Validaci\\u00F3n\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(27, \"span\", 103);\n i0.ɵɵtext(28, \"Motor de reglas multinivel integrado con SSO y Active Directory para jerarqu\\u00EDas de aprobaci\\u00F3n.\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(29, \"div\", 100)(30, \"span\", 101);\n i0.ɵɵtext(31, \"\\u2713\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(32, \"div\")(33, \"strong\", 102);\n i0.ɵɵtext(34, \"Social\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(35, \"span\", 103);\n i0.ɵɵtext(36, \"Posteo automatizado e inmediato en las redes de comunicaci\\u00F3n interna de Kinetix.\");\n i0.ɵɵelementEnd()()()()();\n i0.ɵɵelementStart(37, \"div\", 104)(38, \"button\", 105);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_64_Template_button_click_38_listener() {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.runSimulation());\n });\n i0.ɵɵtext(39, \" SIMULAR MOTOR DE REGLAS \");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(40, DashboardComponent_Conditional_64_Conditional_40_Template, 2, 1, \"span\", 106);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(41, \"div\", 107);\n i0.ɵɵelement(42, \"div\", 108);\n i0.ɵɵelementStart(43, \"div\", 109);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(44, \"svg\", 110);\n i0.ɵɵelement(45, \"circle\", 111)(46, \"circle\", 112);\n i0.ɵɵelementStart(47, \"g\", 113);\n i0.ɵɵelement(48, \"rect\", 114)(49, \"rect\", 115);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(50, \"text\", 116);\n i0.ɵɵtext(51, \"AD ENGINE\");\n i0.ɵɵelementEnd()();\n i0.ɵɵnamespaceHTML();\n i0.ɵɵelementStart(52, \"div\", 117);\n i0.ɵɵtext(53, \" STATUS: LISTENING ON PORT 3000 \");\n i0.ɵɵelementEnd()()()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(40);\n i0.ɵɵconditional(ctx_r1.simulationStatus() ? 40 : -1);\n }\n}\nfunction DashboardComponent_Conditional_65_Conditional_55_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 135);\n i0.ɵɵtext(1, \" \\u00A1Reserva confirmada con \\u00E9xito! Se ha notificado a tu correo y calendario de Active Directory. \");\n i0.ɵɵelementEnd();\n }\n}\nfunction DashboardComponent_Conditional_65_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"h2\", 58);\n i0.ɵɵtext(2, \"Gesti\\u00F3n de Espacios & Incidencias\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 95)(4, \"div\", 118)(5, \"div\", 119);\n i0.ɵɵelement(6, \"div\", 120)(7, \"div\", 121);\n i0.ɵɵelementStart(8, \"span\", 122);\n i0.ɵɵtext(9, \" SALA DE CONFERENCIAS VIP \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(10, \"div\", 123)(11, \"h3\", 52);\n i0.ɵɵtext(12, \"Sala London Hall \\u2014 Piso 4\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(13, \"p\", 53);\n i0.ɵɵtext(14, \" Equipada con pantalla interactiva 4K de 85 pulgadas, sistema de audio envolvente Jabra, conectividad inal\\u00E1mbrica y capacidad para 12 personas. \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"div\", 124)(16, \"span\");\n i0.ɵɵtext(17, \"\\uD83D\\uDC65 Capacidad: 12 pers.\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(18, \"span\");\n i0.ɵɵtext(19, \"\\uD83D\\uDCF6 Wi-Fi 6 Giga\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(20, \"span\");\n i0.ɵɵtext(21, \"\\uD83C\\uDF21\\uFE0F Termostato IoT\");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵelementStart(22, \"div\", 125)(23, \"div\", 47)(24, \"span\", 126);\n i0.ɵɵtext(25, \"AUTOGESTI\\u00D3N DE ALQUILER\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(26, \"h3\", 98);\n i0.ɵɵtext(27, \"Reserva Directa de Espacios\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(28, \"p\", 127);\n i0.ɵɵtext(29, \"Reserva de salas de conferencias, oficinas temporales y puestos de trabajo con confirmaci\\u00F3n instant\\u00E1nea.\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(30, \"div\", 128)(31, \"div\", 129)(32, \"div\", 63)(33, \"label\", 38);\n i0.ɵɵtext(34, \"Fecha\");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(35, \"input\", 130);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(36, \"div\", 63)(37, \"label\", 38);\n i0.ɵɵtext(38, \"Hora\");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(39, \"input\", 131);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(40, \"div\", 63)(41, \"label\", 38);\n i0.ɵɵtext(42, \"Seleccionar Sala\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(43, \"select\", 132)(44, \"option\");\n i0.ɵɵtext(45, \"Sala London Hall (Piso 4)\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(46, \"option\");\n i0.ɵɵtext(47, \"Sala Tokyo Lab (Piso 2)\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(48, \"option\");\n i0.ɵɵtext(49, \"Oficina Flexible 15B (Piso 1)\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(50, \"option\");\n i0.ɵɵtext(51, \"Sala New York Boardroom (Piso 5)\");\n i0.ɵɵelementEnd()()()()();\n i0.ɵɵelementStart(52, \"div\", 133)(53, \"button\", 134);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_65_Template_button_click_53_listener() {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.bookSpace());\n });\n i0.ɵɵtext(54, \" RESERVAR ESPACIO \");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(55, DashboardComponent_Conditional_65_Conditional_55_Template, 2, 0, \"div\", 135);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(55);\n i0.ɵɵconditional(ctx_r1.bookingSuccess() ? 55 : -1);\n }\n}\nfunction DashboardComponent_Conditional_66_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"h2\", 58);\n i0.ɵɵtext(2, \"Proyecci\\u00F3n de Adopci\\u00F3n & KPIs\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 136)(4, \"div\", 137)(5, \"div\", 17)(6, \"h3\", 61);\n i0.ɵɵtext(7, \"Proyecci\\u00F3n de Adopci\\u00F3n Kinetix\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(8, \"span\", 138);\n i0.ɵɵtext(9, \"ROI +85%\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(10, \"p\", 103);\n i0.ɵɵtext(11, \"Crecimiento exponencial de interacciones tras la implementaci\\u00F3n del dise\\u00F1o UI/UX renovado.\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"div\", 139);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(13, \"svg\", 140)(14, \"defs\")(15, \"linearGradient\", 141);\n i0.ɵɵelement(16, \"stop\", 142)(17, \"stop\", 143);\n i0.ɵɵelementEnd()();\n i0.ɵɵelement(18, \"line\", 144)(19, \"line\", 145)(20, \"line\", 146)(21, \"path\", 147)(22, \"path\", 148)(23, \"circle\", 149)(24, \"circle\", 150)(25, \"circle\", 151);\n i0.ɵɵelementStart(26, \"text\", 152);\n i0.ɵɵtext(27, \"Q1 2026\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(28, \"text\", 153);\n i0.ɵɵtext(29, \"Despliegue\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(30, \"text\", 154);\n i0.ɵɵtext(31, \"ROI +85%\");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵnamespaceHTML();\n i0.ɵɵelementStart(32, \"div\", 155)(33, \"div\", 156)(34, \"h3\", 61);\n i0.ɵɵtext(35, \"Indicadores Clave (KPIs)\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(36, \"div\", 157);\n i0.ɵɵtext(37, \"0.4s\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(38, \"div\", 158);\n i0.ɵɵtext(39, \"Tiempo de Carga Promedio\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(40, \"div\", 159)(41, \"div\", 160)(42, \"span\", 73);\n i0.ɵɵtext(43, \"\\u26A1\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(44, \" Renderizado del lado del cliente altamente eficiente. \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(45, \"div\", 160)(46, \"span\", 73);\n i0.ɵɵtext(47, \"\\u26A1\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(48, \" Compresi\\u00F3n automatizada de activos de imagen. \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(49, \"div\", 160)(50, \"span\", 73);\n i0.ɵɵtext(51, \"\\u26A1\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(52, \" Memoria cach\\u00E9 distribuida para directorios AD. \");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵelementStart(53, \"div\", 161)(54, \"h3\", 61);\n i0.ɵɵtext(55, \"Eficiencia en Resoluci\\u00F3n de Incidencias\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(56, \"p\", 103);\n i0.ɵɵtext(57, \"Reducci\\u00F3n dr\\u00E1stica del tiempo de respuesta mediante el m\\u00F3dulo de ticketing inteligente de Kinetix.\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(58, \"div\", 128)(59, \"div\", 162)(60, \"span\", 163);\n i0.ɵɵtext(61, \"Kinetix V2 (Actual)\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(62, \"div\", 164);\n i0.ɵɵelement(63, \"div\", 165);\n i0.ɵɵelementStart(64, \"span\", 166);\n i0.ɵɵtext(65, \"12 min\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(66, \"div\", 162)(67, \"span\", 167);\n i0.ɵɵtext(68, \"Promedio Industria\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(69, \"div\", 164);\n i0.ɵɵelement(70, \"div\", 168);\n i0.ɵɵelementStart(71, \"span\", 169);\n i0.ɵɵtext(72, \"25 min\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(73, \"div\", 162)(74, \"span\", 167);\n i0.ɵɵtext(75, \"Sistema Anterior\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(76, \"div\", 164);\n i0.ɵɵelement(77, \"div\", 170);\n i0.ɵɵelementStart(78, \"span\", 171);\n i0.ɵɵtext(79, \"45 min\");\n i0.ɵɵelementEnd()()()()()();\n }\n}\nfunction DashboardComponent_Conditional_67_Conditional_52_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 192);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.approvalSuccess(), \" \");\n }\n}\nfunction DashboardComponent_Conditional_67_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"h2\", 58);\n i0.ɵɵtext(2, \"Visi\\u00F3n de Administrador\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 136)(4, \"div\", 172)(5, \"h3\", 173);\n i0.ɵɵtext(6, \"Control Total\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(7, \"div\", 174);\n i0.ɵɵelement(8, \"div\", 175)(9, \"div\", 176);\n i0.ɵɵelementStart(10, \"div\", 177)(11, \"span\", 39);\n i0.ɵɵtext(12, \"94%\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(13, \"span\", 178);\n i0.ɵɵtext(14, \"ESTABILIDAD\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(15, \"span\", 179);\n i0.ɵɵtext(16, \"Monitoreo activo de solicitudes y API gateways de NestJS.\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(17, \"div\", 180)(18, \"div\", 181)(19, \"h3\", 182);\n i0.ɵɵtext(20, \"Alertas Cr\\u00EDticas\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(21, \"div\", 156)(22, \"div\", 183)(23, \"span\");\n i0.ɵɵtext(24, \"\\uD83D\\uDD27 Mantenimiento de servidor de base de datos PostgreSQL\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(25, \"strong\", 184);\n i0.ɵɵtext(26, \"PENDIENTE\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(27, \"div\", 185)(28, \"span\");\n i0.ɵɵtext(29, \"\\uD83D\\uDD12 Expiraci\\u00F3n de secretos de Azure AD Client credentials\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(30, \"strong\", 18);\n i0.ɵɵtext(31, \"En 12 d\\u00EDas\");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵelementStart(32, \"div\", 186)(33, \"h3\", 187);\n i0.ɵɵtext(34, \"Aprobaciones de Contenido\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(35, \"div\", 156)(36, \"div\", 188)(37, \"div\", 189)(38, \"span\", 84);\n i0.ɵɵtext(39, \"Lanzamiento Kinetix V2 Intranet\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(40, \"span\", 190);\n i0.ɵɵtext(41, \"Autor: Director de Tecnolog\\u00EDa (SSO AD)\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(42, \"button\", 191);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_67_Template_button_click_42_listener() {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.approveItem(\"Lanzamiento Kinetix V2\"));\n });\n i0.ɵɵtext(43, \" Aprobar y Postear \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(44, \"div\", 188)(45, \"div\", 189)(46, \"span\", 84);\n i0.ɵɵtext(47, \"Manual del Desarrollador Backend NestJS\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(48, \"span\", 190);\n i0.ɵɵtext(49, \"Autor: Arquitecto Principal\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(50, \"button\", 191);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Conditional_67_Template_button_click_50_listener() {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.approveItem(\"Manual del Desarrollador\"));\n });\n i0.ɵɵtext(51, \" Aprobar y Postear \");\n i0.ɵɵelementEnd()()();\n i0.ɵɵtemplate(52, DashboardComponent_Conditional_67_Conditional_52_Template, 2, 1, \"div\", 192);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(52);\n i0.ɵɵconditional(ctx_r1.approvalSuccess() ? 52 : -1);\n }\n}\nexport let DashboardComponent = /*#__PURE__*/(() => {\n class DashboardComponent {\n constructor() {\n this.router = inject(Router);\n // Navigation active tab signal\n this.activeTab = signal('inicio');\n // Directory filter signals\n this.searchQuery = signal('');\n this.selectedDept = signal('ALL');\n // Booking & Simulation mock state signals\n this.bookingSuccess = signal(false);\n this.simulationStatus = signal('');\n this.approvalSuccess = signal('');\n // Sincronized Active Directory Active Profile signal\n this.currentUser = signal({\n name: 'Invitado',\n email: 'guest@kinetix.com',\n role: 'Employee',\n avatar: 'G'\n });\n // Active Directory mock database of employees exactly styled as Slide 4\n this.employees = signal([{\n id: 1,\n name: 'John Morton',\n role: 'UI/UX Designer',\n rating: 4.9,\n clients: 50,\n rate: 65,\n avatar: 'JM',\n tags: ['App Design', 'Web Design', 'Figma', 'Active Directory']\n }, {\n id: 2,\n name: 'Sarah Jenkins',\n role: 'Backend NestJS Architect',\n rating: 4.8,\n clients: 42,\n rate: 75,\n avatar: 'SJ',\n tags: ['NestJS', 'PostgreSQL', 'JWT', 'Active Directory']\n }, {\n id: 3,\n name: 'Alex Rivera',\n role: 'Senior Angular Developer',\n rating: 4.9,\n clients: 68,\n rate: 70,\n avatar: 'AR',\n tags: ['Angular 17', 'Signals', 'RxJS', 'TypeScript']\n }, {\n id: 4,\n name: 'David Chen',\n role: 'Infrastructure Security Engineer',\n rating: 4.7,\n clients: 25,\n rate: 80,\n avatar: 'DC',\n tags: ['Azure Entra ID', 'SSO', 'Docker', 'PostgreSQL']\n }]);\n // Computed signal to filter employee list reactively\n this.filteredEmployees = computed(() => {\n const query = this.searchQuery().toLowerCase();\n const dept = this.selectedDept();\n return this.employees().filter(emp => {\n // Basic text search filter\n const matchesSearch = emp.name.toLowerCase().includes(query) || emp.role.toLowerCase().includes(query) || emp.tags.some(t => t.toLowerCase().includes(query));\n // Basic department match\n let matchesDept = true;\n if (dept !== 'ALL') {\n if (dept === 'IT') {\n matchesDept = emp.role.includes('Backend') || emp.role.includes('Angular') || emp.role.includes('Infrastructure');\n } else if (dept === 'Diseño') {\n matchesDept = emp.role.includes('Designer') || emp.role.includes('UX');\n } else if (dept === 'Mantenimiento') {\n matchesDept = emp.role.includes('Security');\n }\n }\n return matchesSearch && matchesDept;\n });\n });\n }\n ngOnInit() {\n // Load Active Directory profile from local storage\n const userStr = localStorage.getItem('kinetix_user');\n if (userStr) {\n try {\n const user = JSON.parse(userStr);\n this.currentUser.set(user);\n } catch (e) {\n console.error('Error parsing user profile from local storage', e);\n }\n }\n }\n setActiveTab(tab) {\n this.activeTab.set(tab);\n // Reset secondary flags\n this.bookingSuccess.set(false);\n this.simulationStatus.set('');\n this.approvalSuccess.set('');\n }\n updateSearch(event) {\n const value = event.target.value;\n this.searchQuery.set(value);\n }\n updateDept(event) {\n const value = event.target.value;\n this.selectedDept.set(value);\n }\n contactEmployee(name) {\n alert(`Iniciando canal seguro encriptado de comunicación con ${name} vía Microsoft Teams (SSO Active Directory)...`);\n }\n runSimulation() {\n this.simulationStatus.set('Procesando reglas...');\n setTimeout(() => {\n this.simulationStatus.set('Creación capturada ✓');\n setTimeout(() => {\n this.simulationStatus.set('Reglas AD aprobadas ✓');\n setTimeout(() => {\n this.simulationStatus.set('Posteo social programado ✓');\n }, 1000);\n }, 1000);\n }, 1000);\n }\n bookSpace() {\n this.bookingSuccess.set(true);\n }\n approveItem(title) {\n this.approvalSuccess.set(`Publicación \"${title}\" aprobada y publicada en redes corporativas con éxito.`);\n setTimeout(() => {\n this.approvalSuccess.set('');\n }, 4000);\n }\n logout() {\n localStorage.removeItem('kinetix_token');\n localStorage.removeItem('kinetix_user');\n this.router.navigate(['/login']);\n }\n static {\n this.ɵfac = function DashboardComponent_Factory(t) {\n return new (t || DashboardComponent)();\n };\n }\n static {\n this.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n type: DashboardComponent,\n selectors: [[\"app-dashboard\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 68,\n vars: 34,\n consts: [[1, \"flex\", \"flex-col\", \"lg:flex-row\", \"gap-6\", \"p-2\", \"lg:p-6\", \"min-h-[80vh]\"], [1, \"w-full\", \"lg:w-64\", \"flex\", \"flex-col\", \"gap-3\"], [1, \"glass-panel\", \"p-4\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-3\", \"relative\", \"border-cyan-500/20\", \"bg-slate-950/45\"], [1, \"absolute\", \"-right-2\", \"-top-2\", \"w-8\", \"h-8\", \"bg-cyan-500/10\", \"rounded-full\", \"blur-md\"], [1, \"flex\", \"items-center\", \"gap-3\"], [1, \"w-12\", \"h-12\", \"rounded-xl\", \"bg-gradient-to-tr\", \"from-cyan-400\", \"to-indigo-500\", \"p-0.5\", \"shadow-md\"], [1, \"w-full\", \"h-full\", \"bg-[#0a0a0c]\", \"rounded-[10px]\", \"flex\", \"items-center\", \"justify-center\", \"font-black\", \"text-sm\", \"text-cyan-400\"], [1, \"flex\", \"flex-col\", \"min-w-0\"], [1, \"text-sm\", \"font-extrabold\", \"text-white\", \"truncate\"], [1, \"text-[10px]\", \"text-neon-cyan\", \"font-bold\", \"tracking-wide\", \"uppercase\", \"truncate\"], [1, \"text-[9px]\", \"text-white/40\", \"font-mono\", \"truncate\", \"border-t\", \"border-white/5\", \"pt-2\", \"mt-1\"], [1, \"w-full\", \"py-1.5\", \"rounded-xl\", \"border\", \"border-white/10\", \"hover:border-magenta-500/30\", \"hover:bg-magenta-950/20\", \"text-white/60\", \"hover:text-magenta-400\", \"font-extrabold\", \"text-[10px]\", \"uppercase\", \"tracking-wider\", \"transition-all\", \"mt-1\", 3, \"click\"], [1, \"glass-panel\", \"p-4\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-2\"], [1, \"text-xs\", \"font-bold\", \"text-white/40\", \"uppercase\", \"tracking-widest\", \"px-3\", \"mb-2\"], [1, \"flex\", \"items-center\", \"gap-3\", \"px-3\", \"py-2.5\", \"rounded-lg\", \"text-left\", \"text-sm\", \"font-semibold\", \"transition-all\", \"hover:bg-white/5\", \"text-slate-300\", \"hover:text-white\", 3, \"click\"], [1, \"text-lg\"], [1, \"glass-panel\", \"p-4\", \"rounded-2xl\", \"text-xs\", \"flex\", \"flex-col\", \"gap-2\"], [1, \"flex\", \"justify-between\", \"items-center\"], [1, \"text-white/50\"], [1, \"text-emerald-400\", \"font-bold\", \"flex\", \"items-center\", \"gap-1.5\"], [1, \"w-2\", \"h-2\", \"rounded-full\", \"bg-emerald-400\", \"animate-pulse\"], [1, \"text-cyan-400\", \"font-bold\"], [1, \"text-slate-300\", \"font-mono\"], [1, \"flex-grow\", \"flex\", \"flex-col\", \"gap-6\"], [1, \"flex\", \"flex-col\", \"gap-8\", \"animate-fadeIn\"], [1, \"flex\", \"flex-col\", \"gap-6\", \"animate-fadeIn\"], [1, \"glass-panel\", \"p-8\", \"rounded-3xl\", \"relative\", \"overflow-hidden\", \"flex\", \"flex-col\", \"gap-4\", \"bg-gradient-to-br\", \"from-[#0c0f1d]\", \"to-[#080a12]\", \"border-white/5\"], [1, \"absolute\", \"-right-20\", \"-top-20\", \"w-64\", \"h-64\", \"bg-cyan-500/10\", \"rounded-full\", \"blur-[100px]\"], [1, \"absolute\", \"-left-20\", \"-bottom-20\", \"w-64\", \"h-64\", \"bg-magenta-500/10\", \"rounded-full\", \"blur-[100px]\"], [1, \"text-neon-cyan\", \"text-xs\", \"font-bold\", \"uppercase\", \"tracking-widest\"], [1, \"text-4xl\", \"lg:text-5xl\", \"font-black\", \"tracking-tight\", \"text-white\", \"leading-none\"], [1, \"text-transparent\", \"bg-clip-text\", \"bg-gradient-to-r\", \"from-cyan-400\", \"via-blue-500\", \"to-indigo-500\"], [1, \"text-slate-400\", \"text-base\", \"max-w-2xl\", \"leading-relaxed\"], [1, \"flex\", \"flex-wrap\", \"gap-4\", \"mt-2\"], [1, \"px-5\", \"py-2.5\", \"rounded-full\", \"btn-cyan\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", 3, \"click\"], [1, \"px-5\", \"py-2.5\", \"rounded-full\", \"border\", \"border-white/10\", \"hover:border-white/20\", \"transition\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", \"bg-white/5\", \"text-white\", 3, \"click\"], [1, \"grid\", \"grid-cols-1\", \"md:grid-cols-4\", \"gap-6\"], [1, \"glass-panel\", \"p-5\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-1\", \"border-t-2\", \"border-t-cyan-400\"], [1, \"text-[10px]\", \"uppercase\", \"font-bold\", \"text-slate-400\", \"tracking-wider\"], [1, \"text-3xl\", \"font-black\", \"text-white\"], [1, \"text-[10px]\", \"text-cyan-400\", \"font-medium\"], [1, \"glass-panel\", \"p-5\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-1\", \"border-t-2\", \"border-t-magenta-400\"], [1, \"text-[10px]\", \"text-magenta-400\", \"font-medium\"], [1, \"glass-panel\", \"p-5\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-1\", \"border-t-2\", \"border-t-purple-400\"], [1, \"text-[10px]\", \"text-purple-400\", \"font-medium\"], [1, \"glass-panel\", \"p-5\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-1\", \"border-t-2\", \"border-t-emerald-400\"], [1, \"text-[10px]\", \"text-emerald-400\", \"font-medium\"], [1, \"flex\", \"flex-col\", \"gap-4\"], [1, \"text-xl\", \"font-bold\", \"tracking-tight\", \"text-neon-cyan\", \"uppercase\", \"tracking-wide\"], [1, \"grid\", \"grid-cols-1\", \"md:grid-cols-3\", \"gap-6\"], [1, \"glass-panel\", \"glass-panel-hover\", \"p-6\", \"rounded-2xl\", \"neon-border-cyan\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"w-12\", \"h-12\", \"rounded-xl\", \"bg-cyan-500/10\", \"flex\", \"items-center\", \"justify-center\", \"text-2xl\", \"text-cyan-400\"], [1, \"text-lg\", \"font-bold\", \"text-white\"], [1, \"text-sm\", \"text-slate-400\", \"leading-relaxed\"], [1, \"glass-panel\", \"glass-panel-hover\", \"p-6\", \"rounded-2xl\", \"neon-border-magenta\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"w-12\", \"h-12\", \"rounded-xl\", \"bg-magenta-500/10\", \"flex\", \"items-center\", \"justify-center\", \"text-2xl\", \"text-magenta-400\"], [1, \"glass-panel\", \"glass-panel-hover\", \"p-6\", \"rounded-2xl\", \"neon-border-purple\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"w-12\", \"h-12\", \"rounded-xl\", \"bg-purple-500/10\", \"flex\", \"items-center\", \"justify-center\", \"text-2xl\", \"text-purple-400\"], [1, \"text-2xl\", \"font-black\", \"text-white\", \"uppercase\", \"tracking-tight\"], [1, \"grid\", \"grid-cols-1\", \"lg:grid-cols-4\", \"gap-6\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-5\", \"h-fit\"], [1, \"text-sm\", \"font-bold\", \"uppercase\", \"tracking-widest\", \"text-slate-400\"], [1, \"text-xs\", \"text-white/50\", \"leading-relaxed\"], [1, \"flex\", \"flex-col\", \"gap-1.5\"], [\"type\", \"text\", \"placeholder\", \"Buscar empleado...\", 1, \"px-4\", \"py-2.5\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\", 3, \"input\"], [1, \"px-4\", \"py-2.5\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\", \"bg-slate-900\", 3, \"change\"], [\"value\", \"ALL\"], [\"value\", \"IT\"], [\"value\", \"Dise\\u00F1o\"], [\"value\", \"Mantenimiento\"], [1, \"w-full\", \"py-2.5\", \"rounded-full\", \"btn-cyan\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", \"mt-2\"], [1, \"lg:col-span-3\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"text-xs\", \"text-slate-400\", \"flex\", \"justify-between\", \"items-center\"], [1, \"text-neon-cyan\"], [1, \"grid\", \"grid-cols-1\", \"md:grid-cols-2\", \"gap-6\"], [1, \"glass-panel\", \"rounded-3xl\", \"overflow-hidden\", \"relative\", \"flex\", \"flex-col\", \"hover:border-cyan-500/40\", \"transition-all\", \"duration-300\"], [1, \"h-20\", \"bg-gradient-to-r\", \"from-purple-600\", \"via-magenta-500\", \"to-cyan-400\", \"relative\"], [1, \"absolute\", \"top-3\", \"right-3\", \"text-xs\", \"bg-black/40\", \"backdrop-blur\", \"px-2.5\", \"py-0.5\", \"rounded-full\", \"text-white/95\"], [1, \"p-6\", \"pt-0\", \"relative\", \"flex-grow\", \"flex\", \"flex-col\"], [1, \"relative\", \"-mt-10\", \"mb-3\", \"flex\", \"justify-between\", \"items-end\"], [1, \"w-20\", \"h-20\", \"rounded-full\", \"border-4\", \"border-[#0c0f1d]\", \"overflow-hidden\", \"bg-slate-800\"], [1, \"w-full\", \"h-full\", \"flex\", \"items-center\", \"justify-center\", \"text-4xl\", \"bg-slate-900\", \"text-white\", \"font-bold\", \"select-none\"], [1, \"flex\", \"items-center\", \"gap-1\", \"text-xs\", \"bg-slate-900/80\", \"backdrop-blur\", \"px-2.5\", \"py-1\", \"rounded-full\", \"border\", \"border-white/5\"], [1, \"text-amber-400\"], [1, \"font-bold\", \"text-white\"], [1, \"text-lg\", \"font-extrabold\", \"text-white\", \"leading-tight\"], [1, \"text-xs\", \"text-neon-cyan\", \"font-semibold\", \"tracking-wide\", \"uppercase\", \"mb-3\", \"block\"], [1, \"flex\", \"flex-wrap\", \"gap-1.5\", \"mb-4\"], [1, \"text-[10px]\", \"bg-white/5\", \"border\", \"border-white/5\", \"rounded-full\", \"px-2.5\", \"py-0.5\", \"text-slate-300\", \"font-medium\"], [1, \"border-white/5\", \"my-3\"], [1, \"grid\", \"grid-cols-2\", \"gap-4\", \"mb-4\", \"text-center\"], [1, \"bg-white/5\", \"p-2\", \"rounded-xl\", \"border\", \"border-white/5\"], [1, \"text-[10px]\", \"text-white/50\", \"uppercase\", \"font-bold\", \"tracking-wider\"], [1, \"text-sm\", \"font-extrabold\", \"text-white\"], [1, \"w-full\", \"py-2.5\", \"rounded-2xl\", \"bg-white\", \"text-black\", \"font-extrabold\", \"text-xs\", \"uppercase\", \"tracking-wider\", \"hover:bg-cyan-400\", \"hover:text-black\", \"transition-all\", 3, \"click\"], [1, \"grid\", \"grid-cols-1\", \"lg:grid-cols-2\", \"gap-6\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-6\", \"justify-between\"], [1, \"text-neon-magenta\", \"text-xs\", \"font-bold\", \"uppercase\", \"tracking-widest\"], [1, \"text-xl\", \"font-bold\", \"text-white\"], [1, \"flex\", \"flex-col\", \"gap-3\", \"mt-2\"], [1, \"flex\", \"items-start\", \"gap-3.5\", \"p-3.5\", \"rounded-xl\", \"bg-white/5\", \"border\", \"border-white/5\"], [1, \"text-neon-cyan\", \"font-bold\"], [1, \"text-white\", \"block\", \"text-sm\"], [1, \"text-xs\", \"text-slate-400\"], [1, \"flex\", \"gap-4\"], [1, \"px-5\", \"py-2.5\", \"rounded-full\", \"btn-purple\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", 3, \"click\"], [1, \"text-xs\", \"text-green-400\", \"font-bold\", \"self-center\", \"animate-pulse\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"items-center\", \"justify-center\", \"relative\", \"overflow-hidden\", \"bg-slate-950/60\", \"min-h-[300px]\"], [1, \"absolute\", \"-right-20\", \"-bottom-20\", \"w-48\", \"h-48\", \"bg-magenta-500/5\", \"rounded-full\", \"blur-3xl\"], [1, \"flex\", \"flex-col\", \"items-center\", \"gap-6\"], [\"viewBox\", \"0 0 100 100\", \"fill\", \"none\", \"xmlns\", \"http://www.w3.org/2000/svg\", 1, \"w-40\", \"h-40\", \"text-green-400\"], [\"cx\", \"50\", \"cy\", \"50\", \"r\", \"30\", \"stroke\", \"currentColor\", \"stroke-width\", \"2\", \"stroke-dasharray\", \"10, 5\", 1, \"animate-[spin_10s_linear_infinite]\"], [\"cx\", \"50\", \"cy\", \"50\", \"r\", \"20\", \"stroke\", \"currentColor\", \"stroke-width\", \"1.5\", \"stroke-dasharray\", \"5, 3\", 1, \"animate-[spin_6s_linear_infinite_reverse]\"], [\"transform\", \"translate(50, 50) rotate(0)\"], [\"x\", \"-4\", \"y\", \"-28\", \"width\", \"8\", \"height\", \"56\", \"fill\", \"currentColor\", \"opacity\", \"0.3\", 1, \"animate-[spin_8s_linear_infinite]\"], [\"x\", \"-28\", \"y\", \"-4\", \"width\", \"56\", \"height\", \"8\", \"fill\", \"currentColor\", \"opacity\", \"0.3\", 1, \"animate-[spin_8s_linear_infinite]\"], [\"x\", \"50\", \"y\", \"53\", \"text-anchor\", \"middle\", \"font-size\", \"8\", \"fill\", \"#fff\", \"font-weight\", \"bold\", 1, \"font-mono\"], [1, \"text-center\", \"font-mono\", \"text-xs\", \"text-green-400\", \"border\", \"border-green-500/30\", \"px-3\", \"py-1.5\", \"rounded-lg\", \"bg-green-950/20\"], [1, \"glass-panel\", \"rounded-2xl\", \"overflow-hidden\", \"flex\", \"flex-col\"], [1, \"h-64\", \"bg-slate-900\", \"relative\"], [1, \"absolute\", \"inset-0\", \"bg-cover\", \"bg-center\", 2, \"background-image\", \"url('https://images.unsplash.com/photo-1497366216548-37526070297c?auto=format&fit=crop&w=800&q=80')\"], [1, \"absolute\", \"inset-0\", \"bg-gradient-to-t\", \"from-black\", \"via-black/30\", \"to-transparent\"], [1, \"absolute\", \"bottom-4\", \"left-4\", \"text-xs\", \"bg-purple-600\", \"px-3\", \"py-1\", \"rounded-full\", \"font-bold\", \"uppercase\", \"tracking-wider\"], [1, \"p-6\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"flex\", \"gap-4\", \"text-xs\", \"text-white/50\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-5\", \"justify-between\"], [1, \"text-neon-purple\", \"text-xs\", \"font-bold\", \"uppercase\", \"tracking-widest\"], [1, \"text-sm\", \"text-slate-400\"], [1, \"flex\", \"flex-col\", \"gap-4\", \"mt-2\"], [1, \"grid\", \"grid-cols-2\", \"gap-4\"], [\"type\", \"text\", \"value\", \"Fecha: 15/06\", 1, \"px-4\", \"py-2.5\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\"], [\"type\", \"text\", \"value\", \"Hora: 09:00 AM\", 1, \"px-4\", \"py-2.5\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\"], [1, \"px-4\", \"py-2.5\", \"rounded-full\", \"input-cyberpunk\", \"text-sm\", \"w-full\", \"bg-slate-900\"], [1, \"flex\", \"flex-col\", \"gap-3\"], [1, \"w-full\", \"py-2.5\", \"rounded-full\", \"btn-purple\", \"text-xs\", \"uppercase\", \"font-extrabold\", \"tracking-wider\", 3, \"click\"], [1, \"p-3\", \"bg-emerald-500/10\", \"border\", \"border-emerald-500/20\", \"text-emerald-400\", \"rounded-xl\", \"text-xs\", \"text-center\", \"font-bold\", \"animate-fadeIn\"], [1, \"grid\", \"grid-cols-1\", \"lg:grid-cols-3\", \"gap-6\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"lg:col-span-2\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"text-xs\", \"text-emerald-400\", \"font-bold\", \"bg-emerald-500/10\", \"px-2.5\", \"py-0.5\", \"rounded-full\"], [1, \"w-full\", \"h-48\", \"mt-2\"], [\"viewBox\", \"0 0 500 200\", \"preserveAspectRatio\", \"none\", 1, \"w-full\", \"h-full\"], [\"id\", \"chartGrad\", \"x1\", \"0\", \"y1\", \"0\", \"x2\", \"0\", \"y2\", \"1\"], [\"offset\", \"0%\", \"stop-color\", \"#00f2fe\", \"stop-opacity\", \"0.3\"], [\"offset\", \"100%\", \"stop-color\", \"#00f2fe\", \"stop-opacity\", \"0.0\"], [\"x1\", \"50\", \"y1\", \"150\", \"x2\", \"480\", \"y2\", \"150\", \"stroke\", \"rgba(255,255,255,0.05)\", \"stroke-width\", \"1\"], [\"x1\", \"50\", \"y1\", \"100\", \"x2\", \"480\", \"y2\", \"100\", \"stroke\", \"rgba(255,255,255,0.05)\", \"stroke-width\", \"1\"], [\"x1\", \"50\", \"y1\", \"50\", \"x2\", \"480\", \"y2\", \"50\", \"stroke\", \"rgba(255,255,255,0.05)\", \"stroke-width\", \"1\"], [\"d\", \"M 50,150 Q 150,140 250,90 T 450,40 L 450,170 L 50,170 Z\", \"fill\", \"url(#chartGrad)\"], [\"d\", \"M 50,150 Q 150,140 250,90 T 450,40\", \"fill\", \"none\", \"stroke\", \"#00f2fe\", \"stroke-width\", \"3\"], [\"cx\", \"50\", \"cy\", \"150\", \"r\", \"4\", \"fill\", \"#00f2fe\"], [\"cx\", \"250\", \"cy\", \"90\", \"r\", \"4\", \"fill\", \"#00f2fe\"], [\"cx\", \"450\", \"cy\", \"40\", \"r\", \"5\", \"fill\", \"#f00c93\"], [\"x\", \"50\", \"y\", \"165\", \"fill\", \"rgba(255,255,255,0.4)\", \"font-size\", \"9\", \"text-anchor\", \"middle\"], [\"x\", \"250\", \"y\", \"110\", \"fill\", \"rgba(255,255,255,0.4)\", \"font-size\", \"9\", \"text-anchor\", \"middle\"], [\"x\", \"450\", \"y\", \"25\", \"fill\", \"#f00c93\", \"font-size\", \"10\", \"font-weight\", \"bold\", \"text-anchor\", \"middle\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"justify-between\"], [1, \"flex\", \"flex-col\", \"gap-2\"], [1, \"text-5xl\", \"font-black\", \"text-neon-cyan\", \"my-3\"], [1, \"text-sm\", \"font-bold\", \"text-white\"], [1, \"flex\", \"flex-col\", \"gap-3\", \"mt-4\"], [1, \"text-xs\", \"text-slate-400\", \"flex\", \"gap-2\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-4\"], [1, \"flex\", \"flex-col\", \"md:flex-row\", \"md:items-center\", \"gap-2\"], [1, \"w-32\", \"text-xs\", \"font-bold\", \"text-white\"], [1, \"flex-grow\", \"bg-white/5\", \"rounded-full\", \"overflow-hidden\", \"h-7\", \"border\", \"border-white/5\", \"relative\"], [1, \"bg-gradient-to-r\", \"from-cyan-400\", \"to-indigo-500\", \"h-full\", \"rounded-full\", \"transition-all\", \"duration-1000\", 2, \"width\", \"26%\"], [1, \"absolute\", \"right-3\", \"top-1\", \"text-xs\", \"font-bold\", \"text-cyan-400\"], [1, \"w-32\", \"text-xs\", \"font-bold\", \"text-slate-400\"], [1, \"bg-slate-700\", \"h-full\", \"rounded-full\", \"transition-all\", \"duration-1000\", 2, \"width\", \"55%\"], [1, \"absolute\", \"right-3\", \"top-1\", \"text-xs\", \"font-bold\", \"text-slate-300\"], [1, \"bg-slate-800\", \"h-full\", \"rounded-full\", \"transition-all\", \"duration-1000\", 2, \"width\", \"100%\"], [1, \"absolute\", \"right-3\", \"top-1\", \"text-xs\", \"font-bold\", \"text-slate-400\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"items-center\", \"justify-center\", \"gap-4\"], [1, \"text-sm\", \"font-bold\", \"uppercase\", \"tracking-widest\", \"text-slate-400\", \"self-start\"], [1, \"relative\", \"w-40\", \"h-40\", \"flex\", \"items-center\", \"justify-center\"], [1, \"w-full\", \"h-full\", \"rounded-full\", \"border-8\", \"border-white/5\", \"absolute\"], [1, \"w-full\", \"h-full\", \"rounded-full\", \"border-8\", \"border-cyan-400\", \"border-t-transparent\", \"border-l-transparent\", \"absolute\", \"animate-[spin_4s_linear_infinite]\"], [1, \"flex\", \"flex-col\", \"items-center\"], [1, \"text-[9px]\", \"uppercase\", \"tracking-widest\", \"text-slate-400\"], [1, \"text-xs\", \"text-slate-400\", \"text-center\", \"mt-2\"], [1, \"lg:col-span-2\", \"flex\", \"flex-col\", \"gap-6\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-4\", \"border-l-4\", \"border-l-magenta-500\"], [1, \"text-sm\", \"font-bold\", \"uppercase\", \"tracking-widest\", \"text-magenta-400\"], [1, \"flex\", \"justify-between\", \"items-center\", \"text-xs\", \"p-2.5\", \"rounded-lg\", \"bg-magenta-500/5\", \"border\", \"border-magenta-500/10\", \"text-magenta-300\"], [1, \"text-magenta-400\"], [1, \"flex\", \"justify-between\", \"items-center\", \"text-xs\", \"p-2.5\", \"rounded-lg\", \"bg-white/5\", \"border\", \"border-white/5\", \"text-slate-300\"], [1, \"glass-panel\", \"p-6\", \"rounded-2xl\", \"flex\", \"flex-col\", \"gap-4\", \"border-l-4\", \"border-l-purple-500\"], [1, \"text-sm\", \"font-bold\", \"uppercase\", \"tracking-widest\", \"text-purple-400\"], [1, \"flex\", \"justify-between\", \"items-center\", \"text-xs\", \"p-3\", \"rounded-lg\", \"bg-white/5\", \"border\", \"border-white/5\"], [1, \"flex\", \"flex-col\"], [1, \"text-[10px]\", \"text-slate-400\"], [1, \"px-3\", \"py-1.5\", \"rounded-lg\", \"bg-purple-600\", \"text-white\", \"font-extrabold\", \"text-[10px]\", \"uppercase\", \"hover:bg-purple-500\", \"transition\", 3, \"click\"], [1, \"text-xs\", \"text-green-400\", \"font-bold\", \"bg-green-500/10\", \"border\", \"border-green-500/15\", \"p-2\", \"rounded-lg\", \"text-center\", \"animate-fadeIn\"]],\n template: function DashboardComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"aside\", 1)(2, \"div\", 2);\n i0.ɵɵelement(3, \"div\", 3);\n i0.ɵɵelementStart(4, \"div\", 4)(5, \"div\", 5)(6, \"div\", 6);\n i0.ɵɵtext(7);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(8, \"div\", 7)(9, \"span\", 8);\n i0.ɵɵtext(10);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(11, \"span\", 9);\n i0.ɵɵtext(12);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(13, \"div\", 10);\n i0.ɵɵtext(14);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"button\", 11);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_15_listener() {\n return ctx.logout();\n });\n i0.ɵɵtext(16, \" Cerrar Sesi\\u00F3n \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(17, \"div\", 12)(18, \"div\", 13);\n i0.ɵɵtext(19, \"Panel Kinetix\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(20, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_20_listener() {\n return ctx.setActiveTab(\"inicio\");\n });\n i0.ɵɵelementStart(21, \"span\", 15);\n i0.ɵɵtext(22, \"\\u26A1\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(23, \" Consorcio Kinetix \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(24, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_24_listener() {\n return ctx.setActiveTab(\"directory\");\n });\n i0.ɵɵelementStart(25, \"span\", 15);\n i0.ɵɵtext(26, \"\\uD83D\\uDC64\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(27, \" Directorio AD \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(28, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_28_listener() {\n return ctx.setActiveTab(\"workflow\");\n });\n i0.ɵɵelementStart(29, \"span\", 15);\n i0.ɵɵtext(30, \"\\u2699\\uFE0F\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(31, \" Workflow Aprobaci\\u00F3n \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(32, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_32_listener() {\n return ctx.setActiveTab(\"spaces\");\n });\n i0.ɵɵelementStart(33, \"span\", 15);\n i0.ɵɵtext(34, \"\\uD83D\\uDCC5\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(35, \" Gesti\\u00F3n de Espacios \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(36, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_36_listener() {\n return ctx.setActiveTab(\"metrics\");\n });\n i0.ɵɵelementStart(37, \"span\", 15);\n i0.ɵɵtext(38, \"\\uD83D\\uDCC8\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(39, \" Adopci\\u00F3n y KPIs \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(40, \"button\", 14);\n i0.ɵɵlistener(\"click\", function DashboardComponent_Template_button_click_40_listener() {\n return ctx.setActiveTab(\"admin\");\n });\n i0.ɵɵelementStart(41, \"span\", 15);\n i0.ɵɵtext(42, \"\\uD83D\\uDD11\");\n i0.ɵɵelementEnd();\n i0.ɵɵtext(43, \" Visi\\u00F3n Admin \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(44, \"div\", 16)(45, \"div\", 17)(46, \"span\", 18);\n i0.ɵɵtext(47, \"Estado API:\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(48, \"span\", 19);\n i0.ɵɵelement(49, \"span\", 20);\n i0.ɵɵtext(50, \" ONLINE \");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(51, \"div\", 17)(52, \"span\", 18);\n i0.ɵɵtext(53, \"Sesi\\u00F3n SSO:\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(54, \"span\", 21);\n i0.ɵɵtext(55, \"ACTIVE AD\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(56, \"div\", 17)(57, \"span\", 18);\n i0.ɵɵtext(58, \"Sincronizaci\\u00F3n:\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(59, \"span\", 22);\n i0.ɵɵtext(60, \"Entra ID (AD)\");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵelementStart(61, \"main\", 23);\n i0.ɵɵtemplate(62, DashboardComponent_Conditional_62_Template, 71, 0, \"div\", 24)(63, DashboardComponent_Conditional_63_Template, 37, 1, \"div\", 25)(64, DashboardComponent_Conditional_64_Template, 54, 1, \"div\", 25)(65, DashboardComponent_Conditional_65_Template, 56, 1, \"div\", 25)(66, DashboardComponent_Conditional_66_Template, 80, 0, \"div\", 25)(67, DashboardComponent_Conditional_67_Template, 53, 1, \"div\", 25);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance(7);\n i0.ɵɵtextInterpolate1(\" \", ctx.currentUser().avatar, \" \");\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate(ctx.currentUser().name);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx.currentUser().role);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" SSO: \", ctx.currentUser().email, \" \");\n i0.ɵɵadvance(6);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"inicio\")(\"border-cyan-400\", ctx.activeTab() === \"inicio\");\n i0.ɵɵadvance(4);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"directory\")(\"border-cyan-400\", ctx.activeTab() === \"directory\");\n i0.ɵɵadvance(4);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"workflow\")(\"border-magenta-400\", ctx.activeTab() === \"workflow\");\n i0.ɵɵadvance(4);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"spaces\")(\"border-purple-400\", ctx.activeTab() === \"spaces\");\n i0.ɵɵadvance(4);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"metrics\")(\"border-cyan-400\", ctx.activeTab() === \"metrics\");\n i0.ɵɵadvance(4);\n i0.ɵɵclassProp(\"border-l-4\", ctx.activeTab() === \"admin\")(\"border-magenta-400\", ctx.activeTab() === \"admin\");\n i0.ɵɵadvance(22);\n i0.ɵɵconditional(ctx.activeTab() === \"inicio\" ? 62 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.activeTab() === \"directory\" ? 63 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.activeTab() === \"workflow\" ? 64 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.activeTab() === \"spaces\" ? 65 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.activeTab() === \"metrics\" ? 66 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.activeTab() === \"admin\" ? 67 : -1);\n }\n },\n dependencies: [CommonModule],\n styles: [\".animate-fadeIn[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeIn .4s ease-out forwards}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\"]\n });\n }\n }\n return DashboardComponent;\n})();","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/cf71694c599f238aa36ef44dfd2efa624b6f2fd020c61702342c01e1c6b2174d.json b/frontend/.angular/cache/18.2.21/babel-webpack/cf71694c599f238aa36ef44dfd2efa624b6f2fd020c61702342c01e1c6b2174d.json new file mode 100644 index 0000000..ba2bbaf --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/cf71694c599f238aa36ef44dfd2efa624b6f2fd020c61702342c01e1c6b2174d.json @@ -0,0 +1 @@ +{"ast":null,"code":"\"use strict\";","map":{"version":3,"names":[],"sources":["D:\\Jess\\agent\\Kinetix\\frontend\\src\\app\\features\\dashboard\\dashboard.component.ts"],"sourcesContent":[""],"mappings":"","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/e095f1003fc8473bb5211024860b062bfb17c0215898ac33902ba0f573e373b3.json b/frontend/.angular/cache/18.2.21/babel-webpack/e095f1003fc8473bb5211024860b062bfb17c0215898ac33902ba0f573e373b3.json new file mode 100644 index 0000000..f82661e --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/e095f1003fc8473bb5211024860b062bfb17c0215898ac33902ba0f573e373b3.json @@ -0,0 +1 @@ +{"ast":null,"code":"import { inject } from '@angular/core';\nimport { RouterOutlet, Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nfunction AppComponent_header_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"header\", 4)(1, \"h1\", 5);\n i0.ɵɵtext(2, \" KINETIX INTRANET \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 6);\n i0.ɵɵtext(4, \"MODULAR AGENT ARCHITECTURE\");\n i0.ɵɵelementEnd()();\n }\n}\nfunction AppComponent_footer_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"footer\", 7);\n i0.ɵɵtext(1, \" \\u00A9 2026 Kinetix Corp. All rights reserved. \");\n i0.ɵɵelementEnd();\n }\n}\nexport let AppComponent = /*#__PURE__*/(() => {\n class AppComponent {\n constructor() {\n this.router = inject(Router);\n }\n isLoginView() {\n return this.router.url.includes('/login');\n }\n static {\n this.ɵfac = function AppComponent_Factory(t) {\n return new (t || AppComponent)();\n };\n }\n static {\n this.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n type: AppComponent,\n selectors: [[\"app-root\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 5,\n vars: 2,\n consts: [[1, \"min-h-screen\", \"flex\", \"flex-col\", \"justify-between\", \"p-6\", \"bg-[#0a0a0c]\"], [\"class\", \"flex justify-between items-center border-b border-white/10 pb-4 mb-6\", 4, \"ngIf\"], [1, \"flex-grow\"], [\"class\", \"border-t border-white/5 pt-4 mt-6 text-center text-xs text-white/30\", 4, \"ngIf\"], [1, \"flex\", \"justify-between\", \"items-center\", \"border-b\", \"border-white/10\", \"pb-4\", \"mb-6\"], [1, \"text-2xl\", \"font-extrabold\", \"tracking-wider\", \"text-transparent\", \"bg-clip-text\", \"bg-gradient-to-r\", \"from-cyan-400\", \"to-blue-500\"], [1, \"text-xs\", \"text-white/50\"], [1, \"border-t\", \"border-white/5\", \"pt-4\", \"mt-6\", \"text-center\", \"text-xs\", \"text-white/30\"]],\n template: function AppComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"main\", 0);\n i0.ɵɵtemplate(1, AppComponent_header_1_Template, 5, 0, \"header\", 1);\n i0.ɵɵelementStart(2, \"section\", 2);\n i0.ɵɵelement(3, \"router-outlet\");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, AppComponent_footer_4_Template, 2, 0, \"footer\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.isLoginView());\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", !ctx.isLoginView());\n }\n },\n dependencies: [RouterOutlet, CommonModule, i1.NgIf],\n encapsulation: 2\n });\n }\n }\n return AppComponent;\n})();","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/.angular/cache/18.2.21/babel-webpack/f09f93ad7e4a4f0ce470aa3dbc714c95e8edecc8ea977f3ee8ea5d733f3cbc6c.json b/frontend/.angular/cache/18.2.21/babel-webpack/f09f93ad7e4a4f0ce470aa3dbc714c95e8edecc8ea977f3ee8ea5d733f3cbc6c.json new file mode 100644 index 0000000..42085c3 --- /dev/null +++ b/frontend/.angular/cache/18.2.21/babel-webpack/f09f93ad7e4a4f0ce470aa3dbc714c95e8edecc8ea977f3ee8ea5d733f3cbc6c.json @@ -0,0 +1 @@ +{"ast":null,"code":"import { inject } from '@angular/core';\nimport { RouterOutlet, Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nfunction AppComponent_header_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"header\", 4)(1, \"h1\", 5);\n i0.ɵɵtext(2, \" KINETIX INTRANET \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 6);\n i0.ɵɵtext(4, \"MODULAR AGENT ARCHITECTURE\");\n i0.ɵɵelementEnd()();\n }\n}\nfunction AppComponent_footer_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"footer\", 7);\n i0.ɵɵtext(1, \" \\u00A9 2026 Kinetix Corp. All rights reserved. \");\n i0.ɵɵelementEnd();\n }\n}\nexport let AppComponent = /*#__PURE__*/(() => {\n class AppComponent {\n constructor() {\n this.router = inject(Router);\n }\n isLoginView() {\n return this.router.url.includes('/login');\n }\n static {\n this.ɵfac = function AppComponent_Factory(t) {\n return new (t || AppComponent)();\n };\n }\n static {\n this.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n type: AppComponent,\n selectors: [[\"app-root\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 5,\n vars: 2,\n consts: [[1, \"min-h-screen\", \"flex\", \"flex-col\", \"justify-between\", \"p-6\", \"bg-[#0a0a0c]\"], [\"class\", \"flex justify-between items-center border-b border-white/10 pb-4 mb-6\", 4, \"ngIf\"], [1, \"flex-grow\"], [\"class\", \"border-t border-white/5 pt-4 mt-6 text-center text-xs text-white/30\", 4, \"ngIf\"], [1, \"flex\", \"justify-between\", \"items-center\", \"border-b\", \"border-white/10\", \"pb-4\", \"mb-6\"], [1, \"text-2xl\", \"font-extrabold\", \"tracking-wider\", \"text-transparent\", \"bg-clip-text\", \"bg-gradient-to-r\", \"from-cyan-400\", \"to-blue-500\"], [1, \"text-xs\", \"text-white/50\"], [1, \"border-t\", \"border-white/5\", \"pt-4\", \"mt-6\", \"text-center\", \"text-xs\", \"text-white/30\"]],\n template: function AppComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"main\", 0);\n i0.ɵɵtemplate(1, AppComponent_header_1_Template, 5, 0, \"header\", 1);\n i0.ɵɵelementStart(2, \"section\", 2);\n i0.ɵɵelement(3, \"router-outlet\");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, AppComponent_footer_4_Template, 2, 0, \"footer\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.isLoginView());\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", !ctx.isLoginView());\n }\n },\n dependencies: [RouterOutlet, CommonModule, i1.NgIf],\n encapsulation: 2\n });\n }\n }\n return AppComponent;\n})();","map":{"version":3,"names":["inject","RouterOutlet","Router","CommonModule","i0","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","AppComponent","constructor","router","isLoginView","url","includes","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","AppComponent_Template","rf","ctx","ɵɵtemplate","AppComponent_header_1_Template","ɵɵelement","AppComponent_footer_4_Template","ɵɵadvance","ɵɵproperty","i1","NgIf","encapsulation"],"sources":["D:\\Jess\\agent\\Kinetix\\frontend\\src\\app\\app.component.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { RouterOutlet, Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet, CommonModule],\n template: `\n
\n \n
\n

\n KINETIX INTRANET\n

\n
MODULAR AGENT ARCHITECTURE
\n
\n\n
\n \n
\n\n
\n © 2026 Kinetix Corp. All rights reserved.\n
\n
\n `\n})\nexport class AppComponent {\n private router = inject(Router);\n\n isLoginView(): boolean {\n return this.router.url.includes('/login');\n }\n}\n"],"mappings":"AAAA,SAAoBA,MAAM,QAAQ,eAAe;AACjD,SAASC,YAAY,EAAEC,MAAM,QAAQ,iBAAiB;AACtD,SAASC,YAAY,QAAQ,iBAAiB;;;;;IAUtCC,EADF,CAAAC,cAAA,gBAA4G,YACkB;IAC1HD,EAAA,CAAAE,MAAA,yBACF;IAAAF,EAAA,CAAAG,YAAA,EAAK;IACLH,EAAA,CAAAC,cAAA,aAAmC;IAAAD,EAAA,CAAAE,MAAA,iCAA0B;IAC/DF,EAD+D,CAAAG,YAAA,EAAM,EAC5D;;;;;IAMTH,EAAA,CAAAC,cAAA,gBAA2G;IACzGD,EAAA,CAAAE,MAAA,uDACF;IAAAF,EAAA,CAAAG,YAAA,EAAS;;;AAIf,WAAaC,YAAY;EAAnB,MAAOA,YAAY;IAxBzBC,YAAA;MAyBU,KAAAC,MAAM,GAAGV,MAAM,CAACE,MAAM,CAAC;;IAE/BS,WAAWA,CAAA;MACT,OAAO,IAAI,CAACD,MAAM,CAACE,GAAG,CAACC,QAAQ,CAAC,QAAQ,CAAC;IAC3C;;;yBALWL,YAAY;MAAA;IAAA;;;cAAZA,YAAY;QAAAM,SAAA;QAAAC,UAAA;QAAAC,QAAA,GAAAZ,EAAA,CAAAa,mBAAA;QAAAC,KAAA;QAAAC,IAAA;QAAAC,MAAA;QAAAC,QAAA,WAAAC,sBAAAC,EAAA,EAAAC,GAAA;UAAA,IAAAD,EAAA;YAnBrBnB,EAAA,CAAAC,cAAA,cAA0E;YAExED,EAAA,CAAAqB,UAAA,IAAAC,8BAAA,oBAA4G;YAO5GtB,EAAA,CAAAC,cAAA,iBAA2B;YACzBD,EAAA,CAAAuB,SAAA,oBAA+B;YACjCvB,EAAA,CAAAG,YAAA,EAAU;YAEVH,EAAA,CAAAqB,UAAA,IAAAG,8BAAA,oBAA2G;YAG7GxB,EAAA,CAAAG,YAAA,EAAO;;;YAdIH,EAAA,CAAAyB,SAAA,EAAoB;YAApBzB,EAAA,CAAA0B,UAAA,UAAAN,GAAA,CAAAb,WAAA,GAAoB;YAWpBP,EAAA,CAAAyB,SAAA,GAAoB;YAApBzB,EAAA,CAAA0B,UAAA,UAAAN,GAAA,CAAAb,WAAA,GAAoB;;;uBAfvBV,YAAY,EAAEE,YAAY,EAAA4B,EAAA,CAAAC,IAAA;QAAAC,aAAA;MAAA;IAAA;;SAqBzBzB,YAAY;AAAA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} \ No newline at end of file diff --git a/frontend/angular.json b/frontend/angular.json index e2df18d..b6ff011 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -41,8 +41,8 @@ }, { "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" + "maximumWarning": "6kb", + "maximumError": "8kb" } ], "outputHashing": "all" diff --git a/frontend/dist/kinetix-frontend/3rdpartylicenses.txt b/frontend/dist/kinetix-frontend/3rdpartylicenses.txt index d312887..fa316c1 100644 --- a/frontend/dist/kinetix-frontend/3rdpartylicenses.txt +++ b/frontend/dist/kinetix-frontend/3rdpartylicenses.txt @@ -4,6 +4,9 @@ MIT @angular/core MIT +@angular/forms +MIT + @angular/platform-browser MIT @@ -216,6 +219,21 @@ Apache-2.0 +tslib +0BSD +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + zone.js MIT The MIT License diff --git a/frontend/dist/kinetix-frontend/626.d3df5d187c1cfe3b.js b/frontend/dist/kinetix-frontend/626.d3df5d187c1cfe3b.js deleted file mode 100644 index 327003a..0000000 --- a/frontend/dist/kinetix-frontend/626.d3df5d187c1cfe3b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkkinetix_frontend=self.webpackChunkkinetix_frontend||[]).push([[626],{626:(w,d,r)=>{r.r(d),r.d(d,{DashboardComponent:()=>j});var e=r(690),c=r(661);const p=(i,o)=>o.id;function u(i,o){if(1&i){const t=e.RV6();e.j41(0,"div",14)(1,"div",16),e.nrm(2,"div",17)(3,"div",18),e.j41(4,"span",19),e.EFF(5,"BIENVENIDO AL FUTURO"),e.k0s(),e.j41(6,"h2",20),e.EFF(7," Ecosistema "),e.j41(8,"span",21),e.EFF(9,"Kinetix"),e.k0s()(),e.j41(10,"p",22),e.EFF(11," La evoluci\xf3n de la intranet corporativa: Automatizaci\xf3n de procesos, dise\xf1o premium Ne\xf3n de alta fidelidad y autogesti\xf3n corporativa integral para equipos \xe1giles. "),e.k0s(),e.j41(12,"div",23)(13,"button",24),e.bIt("click",function(){e.eBV(t);const a=e.XpG();return e.Njj(a.setActiveTab("directory"))}),e.EFF(14," Explorar Directorio "),e.k0s(),e.j41(15,"button",25),e.bIt("click",function(){e.eBV(t);const a=e.XpG();return e.Njj(a.setActiveTab("spaces"))}),e.EFF(16," Reservar una Sala "),e.k0s()()(),e.j41(17,"div",26)(18,"h3",27),e.EFF(19,"M\xf3dulos de Nueva Generaci\xf3n"),e.k0s(),e.j41(20,"div",28)(21,"div",29)(22,"div",30),e.EFF(23,"\u{1f4da}"),e.k0s(),e.j41(24,"h4",31),e.EFF(25,"Bloque de Info"),e.k0s(),e.j41(26,"p",32),e.EFF(27," Gesti\xf3n de contenidos corporativos con arquitectura robusta de microservicios y publicaci\xf3n de art\xedculos en tiempo r\xe9cord. "),e.k0s()(),e.j41(28,"div",33)(29,"div",34),e.EFF(30,"\u{1f464}"),e.k0s(),e.j41(31,"h4",31),e.EFF(32,"Directorios AD"),e.k0s(),e.j41(33,"p",32),e.EFF(34," Sincronizaci\xf3n nativa instant\xe1nea con Active Directory y perfiles din\xe1micos inteligentes para el equipo de desarrollo. "),e.k0s()(),e.j41(35,"div",35)(36,"div",36),e.EFF(37,"\u{1f4c5}"),e.k0s(),e.j41(38,"h4",31),e.EFF(39,"Autogesti\xf3n"),e.k0s(),e.j41(40,"p",32),e.EFF(41," Reserva fluida de salas de conferencias, oficinas temporales e incidencias con disponibilidad y alertas en tiempo real. "),e.k0s()()()()()}}function x(i,o){if(1&i&&(e.j41(0,"span",68),e.EFF(1),e.k0s()),2&i){const t=o.$implicit;e.R7$(),e.SpI(" ",t," ")}}function f(i,o){if(1&i){const t=e.RV6();e.j41(0,"div",55)(1,"div",56)(2,"span",57),e.EFF(3),e.k0s()(),e.j41(4,"div",58)(5,"div",59)(6,"div",60)(7,"div",61),e.EFF(8),e.k0s()(),e.j41(9,"div",62)(10,"span",63),e.EFF(11,"\u2605"),e.k0s(),e.j41(12,"span",64),e.EFF(13),e.k0s()()(),e.j41(14,"h4",65),e.EFF(15),e.k0s(),e.j41(16,"span",66),e.EFF(17),e.k0s(),e.j41(18,"div",67),e.Z7z(19,x,2,1,"span",68,e.fX1),e.k0s(),e.nrm(21,"hr",69),e.j41(22,"div",70)(23,"div",71)(24,"div",72),e.EFF(25,"Clientes"),e.k0s(),e.j41(26,"div",73),e.EFF(27),e.k0s()(),e.j41(28,"div",71)(29,"div",72),e.EFF(30,"Tarifa/Hora"),e.k0s(),e.j41(31,"div",73),e.EFF(32),e.k0s()()(),e.j41(33,"button",74),e.bIt("click",function(){const a=e.eBV(t).$implicit,s=e.XpG(2);return e.Njj(s.contactEmployee(a.name))}),e.EFF(34," Get In Touch "),e.k0s()()()}if(2&i){const t=o.$implicit;e.R7$(3),e.SpI(" ID: AD-",123*t.id," "),e.R7$(5),e.SpI(" ",t.avatar," "),e.R7$(5),e.JRh(t.rating),e.R7$(2),e.JRh(t.name),e.R7$(2),e.JRh(t.role),e.R7$(2),e.Dyx(t.tags),e.R7$(8),e.JRh(t.clients),e.R7$(5),e.SpI("$",t.rate,"/hr")}}function b(i,o){if(1&i){const t=e.RV6();e.j41(0,"div",15)(1,"h2",37),e.EFF(2,"Interfaz Directory Modern"),e.k0s(),e.j41(3,"div",38)(4,"div",39)(5,"h3",40),e.EFF(6,"B\xfasqueda & Filtrado"),e.k0s(),e.j41(7,"p",41),e.EFF(8,"Uso de bordes suaves y ergon\xf3micos para optimizar la visualizaci\xf3n de datos."),e.k0s(),e.j41(9,"div",26)(10,"div",42)(11,"label",43),e.EFF(12,"Buscar Empleado"),e.k0s(),e.j41(13,"input",44),e.bIt("input",function(a){e.eBV(t);const s=e.XpG();return e.Njj(s.updateSearch(a))}),e.k0s()(),e.j41(14,"div",42)(15,"label",43),e.EFF(16,"Departamento"),e.k0s(),e.j41(17,"select",45),e.bIt("change",function(a){e.eBV(t);const s=e.XpG();return e.Njj(s.updateDept(a))}),e.j41(18,"option",46),e.EFF(19,"Todos los Departamentos"),e.k0s(),e.j41(20,"option",47),e.EFF(21,"IT & Desarrollo"),e.k0s(),e.j41(22,"option",48),e.EFF(23,"Dise\xf1o y UI/UX"),e.k0s(),e.j41(24,"option",49),e.EFF(25,"Mantenimiento"),e.k0s()()(),e.j41(26,"button",50),e.EFF(27," APLICAR FILTROS "),e.k0s()()(),e.j41(28,"div",51)(29,"div",52)(30,"span"),e.EFF(31),e.k0s(),e.j41(32,"span",53),e.EFF(33,"Sincronizado con Active Directory"),e.k0s()(),e.j41(34,"div",54),e.Z7z(35,f,35,7,"div",55,p),e.k0s()()()()}if(2&i){const t=e.XpG();e.R7$(31),e.SpI("Mostrando ",t.filteredEmployees().length," empleados registrados"),e.R7$(4),e.Dyx(t.filteredEmployees())}}function F(i,o){if(1&i&&(e.j41(0,"span",86),e.EFF(1),e.k0s()),2&i){const t=e.XpG(2);e.R7$(),e.JRh(t.simulationStatus())}}function g(i,o){if(1&i){const t=e.RV6();e.j41(0,"div",15)(1,"h2",37),e.EFF(2,"Workflow de Aprobaci\xf3n"),e.k0s(),e.j41(3,"div",75)(4,"div",76)(5,"div",26)(6,"span",77),e.EFF(7,"CICLO COMPLETO DE VIDA"),e.k0s(),e.j41(8,"h3",78),e.EFF(9,"Validaci\xf3n y Publicaci\xf3n Automatizada"),e.k0s(),e.j41(10,"p",32),e.EFF(11," Las propuestas de contenidos y flujos pasan por un motor estructurado que valida y publica autom\xe1ticamente en canales institucionales y redes corporativas. "),e.k0s(),e.j41(12,"div",79)(13,"div",80)(14,"span",81),e.EFF(15,"\u2713"),e.k0s(),e.j41(16,"div")(17,"strong",82),e.EFF(18,"Creaci\xf3n"),e.k0s(),e.j41(19,"span",83),e.EFF(20,"Captura de datos optimizada a trav\xe9s de formularios reactivos del lado del cliente."),e.k0s()()(),e.j41(21,"div",80)(22,"span",81),e.EFF(23,"\u2713"),e.k0s(),e.j41(24,"div")(25,"strong",82),e.EFF(26,"Validaci\xf3n"),e.k0s(),e.j41(27,"span",83),e.EFF(28,"Motor de reglas multinivel integrado con SSO y Active Directory para jerarqu\xedas de aprobaci\xf3n."),e.k0s()()(),e.j41(29,"div",80)(30,"span",81),e.EFF(31,"\u2713"),e.k0s(),e.j41(32,"div")(33,"strong",82),e.EFF(34,"Social"),e.k0s(),e.j41(35,"span",83),e.EFF(36,"Posteo automatizado e inmediato en las redes de comunicaci\xf3n interna de Kinetix."),e.k0s()()()()(),e.j41(37,"div",84)(38,"button",85),e.bIt("click",function(){e.eBV(t);const a=e.XpG();return e.Njj(a.runSimulation())}),e.EFF(39," SIMULAR MOTOR DE REGLAS "),e.k0s(),e.DNE(40,F,2,1,"span",86),e.k0s()(),e.j41(41,"div",87),e.nrm(42,"div",88),e.j41(43,"div",89),e.qSk(),e.j41(44,"svg",90),e.nrm(45,"circle",91)(46,"circle",92),e.j41(47,"g",93),e.nrm(48,"rect",94)(49,"rect",95),e.k0s(),e.j41(50,"text",96),e.EFF(51,"AD ENGINE"),e.k0s()(),e.joV(),e.j41(52,"div",97),e.EFF(53," STATUS: LISTENING ON PORT 3000 "),e.k0s()()()()()}if(2&i){const t=e.XpG();e.R7$(40),e.vxM(t.simulationStatus()?40:-1)}}function m(i,o){1&i&&(e.j41(0,"div",115),e.EFF(1," \xa1Reserva confirmada con \xe9xito! Se ha notificado a tu correo y calendario de Active Directory. "),e.k0s())}function v(i,o){if(1&i){const t=e.RV6();e.j41(0,"div",15)(1,"h2",37),e.EFF(2,"Gesti\xf3n de Espacios & Incidencias"),e.k0s(),e.j41(3,"div",75)(4,"div",98)(5,"div",99),e.nrm(6,"div",100)(7,"div",101),e.j41(8,"span",102),e.EFF(9," SALA DE CONFERENCIAS VIP "),e.k0s()(),e.j41(10,"div",103)(11,"h3",31),e.EFF(12,"Sala London Hall \u2014 Piso 4"),e.k0s(),e.j41(13,"p",32),e.EFF(14," Equipada con pantalla interactiva 4K de 85 pulgadas, sistema de audio envolvente Jabra, conectividad inal\xe1mbrica y capacidad para 12 personas. "),e.k0s(),e.j41(15,"div",104)(16,"span"),e.EFF(17,"\u{1f465} Capacidad: 12 pers."),e.k0s(),e.j41(18,"span"),e.EFF(19,"\u{1f4f6} Wi-Fi 6 Giga"),e.k0s(),e.j41(20,"span"),e.EFF(21,"\u{1f321}\ufe0f Termostato IoT"),e.k0s()()()(),e.j41(22,"div",105)(23,"div",26)(24,"span",106),e.EFF(25,"AUTOGESTI\xd3N DE ALQUILER"),e.k0s(),e.j41(26,"h3",78),e.EFF(27,"Reserva Directa de Espacios"),e.k0s(),e.j41(28,"p",107),e.EFF(29,"Reserva de salas de conferencias, oficinas temporales y puestos de trabajo con confirmaci\xf3n instant\xe1nea."),e.k0s(),e.j41(30,"div",108)(31,"div",109)(32,"div",42)(33,"label",43),e.EFF(34,"Fecha"),e.k0s(),e.nrm(35,"input",110),e.k0s(),e.j41(36,"div",42)(37,"label",43),e.EFF(38,"Hora"),e.k0s(),e.nrm(39,"input",111),e.k0s()(),e.j41(40,"div",42)(41,"label",43),e.EFF(42,"Seleccionar Sala"),e.k0s(),e.j41(43,"select",112)(44,"option"),e.EFF(45,"Sala London Hall (Piso 4)"),e.k0s(),e.j41(46,"option"),e.EFF(47,"Sala Tokyo Lab (Piso 2)"),e.k0s(),e.j41(48,"option"),e.EFF(49,"Oficina Flexible 15B (Piso 1)"),e.k0s(),e.j41(50,"option"),e.EFF(51,"Sala New York Boardroom (Piso 5)"),e.k0s()()()()(),e.j41(52,"div",113)(53,"button",114),e.bIt("click",function(){e.eBV(t);const a=e.XpG();return e.Njj(a.bookSpace())}),e.EFF(54," RESERVAR ESPACIO "),e.k0s(),e.DNE(55,m,2,0,"div",115),e.k0s()()()()}if(2&i){const t=e.XpG();e.R7$(55),e.vxM(t.bookingSuccess()?55:-1)}}function k(i,o){1&i&&(e.j41(0,"div",15)(1,"h2",37),e.EFF(2,"Proyecci\xf3n de Adopci\xf3n & KPIs"),e.k0s(),e.j41(3,"div",116)(4,"div",117)(5,"div",7)(6,"h3",40),e.EFF(7,"Proyecci\xf3n de Adopci\xf3n Kinetix"),e.k0s(),e.j41(8,"span",118),e.EFF(9,"ROI +85%"),e.k0s()(),e.j41(10,"p",83),e.EFF(11,"Crecimiento exponencial de interacciones tras la implementaci\xf3n del dise\xf1o UI/UX renovado."),e.k0s(),e.j41(12,"div",119),e.qSk(),e.j41(13,"svg",120)(14,"defs")(15,"linearGradient",121),e.nrm(16,"stop",122)(17,"stop",123),e.k0s()(),e.nrm(18,"line",124)(19,"line",125)(20,"line",126)(21,"path",127)(22,"path",128)(23,"circle",129)(24,"circle",130)(25,"circle",131),e.j41(26,"text",132),e.EFF(27,"Q1 2026"),e.k0s(),e.j41(28,"text",133),e.EFF(29,"Despliegue"),e.k0s(),e.j41(30,"text",134),e.EFF(31,"ROI +85%"),e.k0s()()()(),e.joV(),e.j41(32,"div",135)(33,"div",136)(34,"h3",40),e.EFF(35,"Indicadores Clave (KPIs)"),e.k0s(),e.j41(36,"div",137),e.EFF(37,"0.4s"),e.k0s(),e.j41(38,"div",138),e.EFF(39,"Tiempo de Carga Promedio"),e.k0s()(),e.j41(40,"div",139)(41,"div",140)(42,"span",53),e.EFF(43,"\u26a1"),e.k0s(),e.EFF(44," Renderizado del lado del cliente altamente eficiente. "),e.k0s(),e.j41(45,"div",140)(46,"span",53),e.EFF(47,"\u26a1"),e.k0s(),e.EFF(48," Compresi\xf3n automatizada de activos de imagen. "),e.k0s(),e.j41(49,"div",140)(50,"span",53),e.EFF(51,"\u26a1"),e.k0s(),e.EFF(52," Memoria cach\xe9 distribuida para directorios AD. "),e.k0s()()()(),e.j41(53,"div",141)(54,"h3",40),e.EFF(55,"Eficiencia en Resoluci\xf3n de Incidencias"),e.k0s(),e.j41(56,"p",83),e.EFF(57,"Reducci\xf3n dr\xe1stica del tiempo de respuesta mediante el m\xf3dulo de ticketing inteligente de Kinetix."),e.k0s(),e.j41(58,"div",108)(59,"div",142)(60,"span",143),e.EFF(61,"Kinetix V2 (Actual)"),e.k0s(),e.j41(62,"div",144),e.nrm(63,"div",145),e.j41(64,"span",146),e.EFF(65,"12 min"),e.k0s()()(),e.j41(66,"div",142)(67,"span",147),e.EFF(68,"Promedio Industria"),e.k0s(),e.j41(69,"div",144),e.nrm(70,"div",148),e.j41(71,"span",149),e.EFF(72,"25 min"),e.k0s()()(),e.j41(73,"div",142)(74,"span",147),e.EFF(75,"Sistema Anterior"),e.k0s(),e.j41(76,"div",144),e.nrm(77,"div",150),e.j41(78,"span",151),e.EFF(79,"45 min"),e.k0s()()()()()())}function h(i,o){if(1&i&&(e.j41(0,"div",173),e.EFF(1),e.k0s()),2&i){const t=e.XpG(2);e.R7$(),e.SpI(" ",t.approvalSuccess()," ")}}function E(i,o){if(1&i){const t=e.RV6();e.j41(0,"div",15)(1,"h2",37),e.EFF(2,"Visi\xf3n de Administrador"),e.k0s(),e.j41(3,"div",116)(4,"div",152)(5,"h3",153),e.EFF(6,"Control Total"),e.k0s(),e.j41(7,"div",154),e.nrm(8,"div",155)(9,"div",156),e.j41(10,"div",157)(11,"span",158),e.EFF(12,"94%"),e.k0s(),e.j41(13,"span",159),e.EFF(14,"ESTABILIDAD"),e.k0s()()(),e.j41(15,"span",160),e.EFF(16,"Monitoreo activo de solicitudes y API gateways de NestJS."),e.k0s()(),e.j41(17,"div",161)(18,"div",162)(19,"h3",163),e.EFF(20,"Alertas Cr\xedticas"),e.k0s(),e.j41(21,"div",136)(22,"div",164)(23,"span"),e.EFF(24,"\u{1f527} Mantenimiento de servidor de base de datos PostgreSQL"),e.k0s(),e.j41(25,"strong",165),e.EFF(26,"PENDIENTE"),e.k0s()(),e.j41(27,"div",166)(28,"span"),e.EFF(29,"\u{1f512} Expiraci\xf3n de secretos de Azure AD Client credentials"),e.k0s(),e.j41(30,"strong",8),e.EFF(31,"En 12 d\xedas"),e.k0s()()()(),e.j41(32,"div",167)(33,"h3",168),e.EFF(34,"Aprobaciones de Contenido"),e.k0s(),e.j41(35,"div",136)(36,"div",169)(37,"div",170)(38,"span",64),e.EFF(39,"Lanzamiento Kinetix V2 Intranet"),e.k0s(),e.j41(40,"span",171),e.EFF(41,"Autor: Director de Tecnolog\xeda (SSO AD)"),e.k0s()(),e.j41(42,"button",172),e.bIt("click",function(){e.eBV(t);const a=e.XpG();return e.Njj(a.approveItem("Lanzamiento Kinetix V2"))}),e.EFF(43," Aprobar y Postear "),e.k0s()(),e.j41(44,"div",169)(45,"div",170)(46,"span",64),e.EFF(47,"Manual del Desarrollador Backend NestJS"),e.k0s(),e.j41(48,"span",171),e.EFF(49,"Autor: Arquitecto Principal"),e.k0s()(),e.j41(50,"button",172),e.bIt("click",function(){e.eBV(t);const a=e.XpG();return e.Njj(a.approveItem("Manual del Desarrollador"))}),e.EFF(51," Aprobar y Postear "),e.k0s()()(),e.DNE(52,h,2,1,"div",173),e.k0s()()()()}if(2&i){const t=e.XpG();e.R7$(52),e.vxM(t.approvalSuccess()?52:-1)}}let j=(()=>{class i{constructor(){this.activeTab=(0,e.vPA)("inicio"),this.searchQuery=(0,e.vPA)(""),this.selectedDept=(0,e.vPA)("ALL"),this.bookingSuccess=(0,e.vPA)(!1),this.simulationStatus=(0,e.vPA)(""),this.approvalSuccess=(0,e.vPA)(""),this.employees=(0,e.vPA)([{id:1,name:"John Morton",role:"UI/UX Designer",rating:4.9,clients:50,rate:65,avatar:"JM",tags:["App Design","Web Design","Figma","Active Directory"]},{id:2,name:"Sarah Jenkins",role:"Backend NestJS Architect",rating:4.8,clients:42,rate:75,avatar:"SJ",tags:["NestJS","PostgreSQL","JWT","Active Directory"]},{id:3,name:"Alex Rivera",role:"Senior Angular Developer",rating:4.9,clients:68,rate:70,avatar:"AR",tags:["Angular 17","Signals","RxJS","TypeScript"]},{id:4,name:"David Chen",role:"Infrastructure Security Engineer",rating:4.7,clients:25,rate:80,avatar:"DC",tags:["Azure Entra ID","SSO","Docker","PostgreSQL"]}]),this.filteredEmployees=(0,e.EWP)(()=>{const t=this.searchQuery().toLowerCase(),n=this.selectedDept();return this.employees().filter(a=>{const s=a.name.toLowerCase().includes(t)||a.role.toLowerCase().includes(t)||a.tags.some(_=>_.toLowerCase().includes(t));let l=!0;return"ALL"!==n&&("IT"===n?l=a.role.includes("Backend")||a.role.includes("Angular")||a.role.includes("Infrastructure"):"Dise\xf1o"===n?l=a.role.includes("Designer")||a.role.includes("UX"):"Mantenimiento"===n&&(l=a.role.includes("Security"))),s&&l})})}setActiveTab(t){this.activeTab.set(t),this.bookingSuccess.set(!1),this.simulationStatus.set(""),this.approvalSuccess.set("")}updateSearch(t){this.searchQuery.set(t.target.value)}updateDept(t){this.selectedDept.set(t.target.value)}contactEmployee(t){alert(`Iniciando canal seguro encriptado de comunicaci\xf3n con ${t} v\xeda Microsoft Teams (SSO Active Directory)...`)}runSimulation(){this.simulationStatus.set("Procesando reglas..."),setTimeout(()=>{this.simulationStatus.set("Creaci\xf3n capturada \u2713"),setTimeout(()=>{this.simulationStatus.set("Reglas AD aprobadas \u2713"),setTimeout(()=>{this.simulationStatus.set("Posteo social programado \u2713")},1e3)},1e3)},1e3)}bookSpace(){this.bookingSuccess.set(!0)}approveItem(t){this.approvalSuccess.set(`Publicaci\xf3n "${t}" aprobada y publicada en redes corporativas con \xe9xito.`),setTimeout(()=>{this.approvalSuccess.set("")},4e3)}static{this.\u0275fac=function(n){return new(n||i)}}static{this.\u0275cmp=e.VBU({type:i,selectors:[["app-dashboard"]],standalone:!0,features:[e.aNF],decls:53,vars:32,consts:[[1,"flex","flex-col","lg:flex-row","gap-6","p-2","lg:p-6","min-h-[80vh]"],[1,"w-full","lg:w-64","flex","flex-col","gap-3"],[1,"glass-panel","p-4","rounded-2xl","flex","flex-col","gap-2"],[1,"text-xs","font-bold","text-white/40","uppercase","tracking-widest","px-3","mb-2"],[1,"flex","items-center","gap-3","px-3","py-2.5","rounded-lg","text-left","text-sm","font-semibold","transition-all","hover:bg-white/5","text-slate-300","hover:text-white",3,"click"],[1,"text-lg"],[1,"glass-panel","p-4","rounded-2xl","text-xs","flex","flex-col","gap-2"],[1,"flex","justify-between","items-center"],[1,"text-white/50"],[1,"text-emerald-400","font-bold","flex","items-center","gap-1.5"],[1,"w-2","h-2","rounded-full","bg-emerald-400","animate-pulse"],[1,"text-cyan-400","font-bold"],[1,"text-white/30"],[1,"flex-grow","flex","flex-col","gap-6"],[1,"flex","flex-col","gap-8","animate-fadeIn"],[1,"flex","flex-col","gap-6","animate-fadeIn"],[1,"glass-panel","p-8","rounded-3xl","relative","overflow-hidden","flex","flex-col","gap-4","bg-gradient-to-br","from-[#0c0f1d]","to-[#080a12]","border-white/5"],[1,"absolute","-right-20","-top-20","w-64","h-64","bg-cyan-500/10","rounded-full","blur-[100px]"],[1,"absolute","-left-20","-bottom-20","w-64","h-64","bg-magenta-500/10","rounded-full","blur-[100px]"],[1,"text-neon-cyan","text-xs","font-bold","uppercase","tracking-widest"],[1,"text-4xl","lg:text-5xl","font-black","tracking-tight","text-white","leading-none"],[1,"text-transparent","bg-clip-text","bg-gradient-to-r","from-cyan-400","via-blue-500","to-indigo-500"],[1,"text-slate-400","text-base","max-w-2xl","leading-relaxed"],[1,"flex","flex-wrap","gap-4","mt-2"],[1,"px-5","py-2.5","rounded-full","btn-cyan","text-xs","uppercase","font-extrabold","tracking-wider",3,"click"],[1,"px-5","py-2.5","rounded-full","border","border-white/10","hover:border-white/20","transition","text-xs","uppercase","font-extrabold","tracking-wider","bg-white/5","text-white",3,"click"],[1,"flex","flex-col","gap-4"],[1,"text-xl","font-bold","tracking-tight","text-neon-cyan","uppercase","tracking-wide"],[1,"grid","grid-cols-1","md:grid-cols-3","gap-6"],[1,"glass-panel","glass-panel-hover","p-6","rounded-2xl","neon-border-cyan","flex","flex-col","gap-4"],[1,"w-12","h-12","rounded-xl","bg-cyan-500/10","flex","items-center","justify-center","text-2xl","text-cyan-400"],[1,"text-lg","font-bold","text-white"],[1,"text-sm","text-slate-400","leading-relaxed"],[1,"glass-panel","glass-panel-hover","p-6","rounded-2xl","neon-border-magenta","flex","flex-col","gap-4"],[1,"w-12","h-12","rounded-xl","bg-magenta-500/10","flex","items-center","justify-center","text-2xl","text-magenta-400"],[1,"glass-panel","glass-panel-hover","p-6","rounded-2xl","neon-border-purple","flex","flex-col","gap-4"],[1,"w-12","h-12","rounded-xl","bg-purple-500/10","flex","items-center","justify-center","text-2xl","text-purple-400"],[1,"text-2xl","font-black","text-white","uppercase","tracking-tight"],[1,"grid","grid-cols-1","lg:grid-cols-4","gap-6"],[1,"glass-panel","p-6","rounded-2xl","flex","flex-col","gap-5","h-fit"],[1,"text-sm","font-bold","uppercase","tracking-widest","text-slate-400"],[1,"text-xs","text-white/50","leading-relaxed"],[1,"flex","flex-col","gap-1.5"],[1,"text-[10px]","uppercase","font-bold","text-slate-400","tracking-wider"],["type","text","placeholder","Buscar empleado...",1,"px-4","py-2.5","rounded-full","input-cyberpunk","text-sm","w-full",3,"input"],[1,"px-4","py-2.5","rounded-full","input-cyberpunk","text-sm","w-full","bg-slate-900",3,"change"],["value","ALL"],["value","IT"],["value","Dise\xf1o"],["value","Mantenimiento"],[1,"w-full","py-2.5","rounded-full","btn-cyan","text-xs","uppercase","font-extrabold","tracking-wider","mt-2"],[1,"lg:col-span-3","flex","flex-col","gap-4"],[1,"text-xs","text-slate-400","flex","justify-between","items-center"],[1,"text-neon-cyan"],[1,"grid","grid-cols-1","md:grid-cols-2","gap-6"],[1,"glass-panel","rounded-3xl","overflow-hidden","relative","flex","flex-col","hover:border-cyan-500/40","transition-all","duration-300"],[1,"h-20","bg-gradient-to-r","from-purple-600","via-magenta-500","to-cyan-400","relative"],[1,"absolute","top-3","right-3","text-xs","bg-black/40","backdrop-blur","px-2.5","py-0.5","rounded-full","text-white/95"],[1,"p-6","pt-0","relative","flex-grow","flex","flex-col"],[1,"relative","-mt-10","mb-3","flex","justify-between","items-end"],[1,"w-20","h-20","rounded-full","border-4","border-[#0c0f1d]","overflow-hidden","bg-slate-800"],[1,"w-full","h-full","flex","items-center","justify-center","text-4xl","bg-slate-900","text-white","font-bold","select-none"],[1,"flex","items-center","gap-1","text-xs","bg-slate-900/80","backdrop-blur","px-2.5","py-1","rounded-full","border","border-white/5"],[1,"text-amber-400"],[1,"font-bold","text-white"],[1,"text-lg","font-extrabold","text-white","leading-tight"],[1,"text-xs","text-neon-cyan","font-semibold","tracking-wide","uppercase","mb-3","block"],[1,"flex","flex-wrap","gap-1.5","mb-4"],[1,"text-[10px]","bg-white/5","border","border-white/5","rounded-full","px-2.5","py-0.5","text-slate-300","font-medium"],[1,"border-white/5","my-3"],[1,"grid","grid-cols-2","gap-4","mb-4","text-center"],[1,"bg-white/5","p-2","rounded-xl","border","border-white/5"],[1,"text-[10px]","text-white/50","uppercase","font-bold","tracking-wider"],[1,"text-sm","font-extrabold","text-white"],[1,"w-full","py-2.5","rounded-2xl","bg-white","text-black","font-extrabold","text-xs","uppercase","tracking-wider","hover:bg-cyan-400","hover:text-black","transition-all",3,"click"],[1,"grid","grid-cols-1","lg:grid-cols-2","gap-6"],[1,"glass-panel","p-6","rounded-2xl","flex","flex-col","gap-6","justify-between"],[1,"text-neon-magenta","text-xs","font-bold","uppercase","tracking-widest"],[1,"text-xl","font-bold","text-white"],[1,"flex","flex-col","gap-3","mt-2"],[1,"flex","items-start","gap-3.5","p-3.5","rounded-xl","bg-white/5","border","border-white/5"],[1,"text-neon-cyan","font-bold"],[1,"text-white","block","text-sm"],[1,"text-xs","text-slate-400"],[1,"flex","gap-4"],[1,"px-5","py-2.5","rounded-full","btn-purple","text-xs","uppercase","font-extrabold","tracking-wider",3,"click"],[1,"text-xs","text-green-400","font-bold","self-center","animate-pulse"],[1,"glass-panel","p-6","rounded-2xl","flex","items-center","justify-center","relative","overflow-hidden","bg-slate-950/60","min-h-[300px]"],[1,"absolute","-right-20","-bottom-20","w-48","h-48","bg-magenta-500/5","rounded-full","blur-3xl"],[1,"flex","flex-col","items-center","gap-6"],["viewBox","0 0 100 100","fill","none","xmlns","http://www.w3.org/2000/svg",1,"w-40","h-40","text-green-400"],["cx","50","cy","50","r","30","stroke","currentColor","stroke-width","2","stroke-dasharray","10, 5",1,"animate-[spin_10s_linear_infinite]"],["cx","50","cy","50","r","20","stroke","currentColor","stroke-width","1.5","stroke-dasharray","5, 3",1,"animate-[spin_6s_linear_infinite_reverse]"],["transform","translate(50, 50) rotate(0)"],["x","-4","y","-28","width","8","height","56","fill","currentColor","opacity","0.3",1,"animate-[spin_8s_linear_infinite]"],["x","-28","y","-4","width","56","height","8","fill","currentColor","opacity","0.3",1,"animate-[spin_8s_linear_infinite]"],["x","50","y","53","text-anchor","middle","font-size","8","fill","#fff","font-weight","bold",1,"font-mono"],[1,"text-center","font-mono","text-xs","text-green-400","border","border-green-500/30","px-3","py-1.5","rounded-lg","bg-green-950/20"],[1,"glass-panel","rounded-2xl","overflow-hidden","flex","flex-col"],[1,"h-64","bg-slate-900","relative"],[1,"absolute","inset-0","bg-cover","bg-center",2,"background-image","url('https://images.unsplash.com/photo-1497366216548-37526070297c?auto=format&fit=crop&w=800&q=80')"],[1,"absolute","inset-0","bg-gradient-to-t","from-black","via-black/30","to-transparent"],[1,"absolute","bottom-4","left-4","text-xs","bg-purple-600","px-3","py-1","rounded-full","font-bold","uppercase","tracking-wider"],[1,"p-6","flex","flex-col","gap-4"],[1,"flex","gap-4","text-xs","text-white/50"],[1,"glass-panel","p-6","rounded-2xl","flex","flex-col","gap-5","justify-between"],[1,"text-neon-purple","text-xs","font-bold","uppercase","tracking-widest"],[1,"text-sm","text-slate-400"],[1,"flex","flex-col","gap-4","mt-2"],[1,"grid","grid-cols-2","gap-4"],["type","text","value","Fecha: 15/06",1,"px-4","py-2.5","rounded-full","input-cyberpunk","text-sm","w-full"],["type","text","value","Hora: 09:00 AM",1,"px-4","py-2.5","rounded-full","input-cyberpunk","text-sm","w-full"],[1,"px-4","py-2.5","rounded-full","input-cyberpunk","text-sm","w-full","bg-slate-900"],[1,"flex","flex-col","gap-3"],[1,"w-full","py-2.5","rounded-full","btn-purple","text-xs","uppercase","font-extrabold","tracking-wider",3,"click"],[1,"p-3","bg-emerald-500/10","border","border-emerald-500/20","text-emerald-400","rounded-xl","text-xs","text-center","font-bold","animate-fadeIn"],[1,"grid","grid-cols-1","lg:grid-cols-3","gap-6"],[1,"glass-panel","p-6","rounded-2xl","lg:col-span-2","flex","flex-col","gap-4"],[1,"text-xs","text-emerald-400","font-bold","bg-emerald-500/10","px-2.5","py-0.5","rounded-full"],[1,"w-full","h-48","mt-2"],["viewBox","0 0 500 200","preserveAspectRatio","none",1,"w-full","h-full"],["id","chartGrad","x1","0","y1","0","x2","0","y2","1"],["offset","0%","stop-color","#00f2fe","stop-opacity","0.3"],["offset","100%","stop-color","#00f2fe","stop-opacity","0.0"],["x1","50","y1","150","x2","480","y2","150","stroke","rgba(255,255,255,0.05)","stroke-width","1"],["x1","50","y1","100","x2","480","y2","100","stroke","rgba(255,255,255,0.05)","stroke-width","1"],["x1","50","y1","50","x2","480","y2","50","stroke","rgba(255,255,255,0.05)","stroke-width","1"],["d","M 50,150 Q 150,140 250,90 T 450,40 L 450,170 L 50,170 Z","fill","url(#chartGrad)"],["d","M 50,150 Q 150,140 250,90 T 450,40","fill","none","stroke","#00f2fe","stroke-width","3"],["cx","50","cy","150","r","4","fill","#00f2fe"],["cx","250","cy","90","r","4","fill","#00f2fe"],["cx","450","cy","40","r","5","fill","#f00c93"],["x","50","y","165","fill","rgba(255,255,255,0.4)","font-size","9","text-anchor","middle"],["x","250","y","110","fill","rgba(255,255,255,0.4)","font-size","9","text-anchor","middle"],["x","450","y","25","fill","#f00c93","font-size","10","font-weight","bold","text-anchor","middle"],[1,"glass-panel","p-6","rounded-2xl","flex","flex-col","justify-between"],[1,"flex","flex-col","gap-2"],[1,"text-5xl","font-black","text-neon-cyan","my-3"],[1,"text-sm","font-bold","text-white"],[1,"flex","flex-col","gap-3","mt-4"],[1,"text-xs","text-slate-400","flex","gap-2"],[1,"glass-panel","p-6","rounded-2xl","flex","flex-col","gap-4"],[1,"flex","flex-col","md:flex-row","md:items-center","gap-2"],[1,"w-32","text-xs","font-bold","text-white"],[1,"flex-grow","bg-white/5","rounded-full","overflow-hidden","h-7","border","border-white/5","relative"],[1,"bg-gradient-to-r","from-cyan-400","to-indigo-500","h-full","rounded-full","transition-all","duration-1000",2,"width","26%"],[1,"absolute","right-3","top-1","text-xs","font-bold","text-cyan-400"],[1,"w-32","text-xs","font-bold","text-slate-400"],[1,"bg-slate-700","h-full","rounded-full","transition-all","duration-1000",2,"width","55%"],[1,"absolute","right-3","top-1","text-xs","font-bold","text-slate-300"],[1,"bg-slate-800","h-full","rounded-full","transition-all","duration-1000",2,"width","100%"],[1,"absolute","right-3","top-1","text-xs","font-bold","text-slate-400"],[1,"glass-panel","p-6","rounded-2xl","flex","flex-col","items-center","justify-center","gap-4"],[1,"text-sm","font-bold","uppercase","tracking-widest","text-slate-400","self-start"],[1,"relative","w-40","h-40","flex","items-center","justify-center"],[1,"w-full","h-full","rounded-full","border-8","border-white/5","absolute"],[1,"w-full","h-full","rounded-full","border-8","border-cyan-400","border-t-transparent","border-l-transparent","absolute","animate-[spin_4s_linear_infinite]"],[1,"flex","flex-col","items-center"],[1,"text-3xl","font-black","text-white"],[1,"text-[9px]","uppercase","tracking-widest","text-slate-400"],[1,"text-xs","text-slate-400","text-center","mt-2"],[1,"lg:col-span-2","flex","flex-col","gap-6"],[1,"glass-panel","p-6","rounded-2xl","flex","flex-col","gap-4","border-l-4","border-l-magenta-500"],[1,"text-sm","font-bold","uppercase","tracking-widest","text-magenta-400"],[1,"flex","justify-between","items-center","text-xs","p-2.5","rounded-lg","bg-magenta-500/5","border","border-magenta-500/10","text-magenta-300"],[1,"text-magenta-400"],[1,"flex","justify-between","items-center","text-xs","p-2.5","rounded-lg","bg-white/5","border","border-white/5","text-slate-300"],[1,"glass-panel","p-6","rounded-2xl","flex","flex-col","gap-4","border-l-4","border-l-purple-500"],[1,"text-sm","font-bold","uppercase","tracking-widest","text-purple-400"],[1,"flex","justify-between","items-center","text-xs","p-3","rounded-lg","bg-white/5","border","border-white/5"],[1,"flex","flex-col"],[1,"text-[10px]","text-slate-400"],[1,"px-3","py-1.5","rounded-lg","bg-purple-600","text-white","font-extrabold","text-[10px]","uppercase","hover:bg-purple-500","transition",3,"click"],[1,"text-xs","text-green-400","font-bold","bg-green-500/10","border","border-green-500/15","p-2","rounded-lg","text-center","animate-fadeIn"]],template:function(n,a){1&n&&(e.j41(0,"div",0)(1,"aside",1)(2,"div",2)(3,"div",3),e.EFF(4,"Panel Kinetix"),e.k0s(),e.j41(5,"button",4),e.bIt("click",function(){return a.setActiveTab("inicio")}),e.j41(6,"span",5),e.EFF(7,"\u26a1"),e.k0s(),e.EFF(8," Ecosistema Kinetix "),e.k0s(),e.j41(9,"button",4),e.bIt("click",function(){return a.setActiveTab("directory")}),e.j41(10,"span",5),e.EFF(11,"\u{1f464}"),e.k0s(),e.EFF(12," Directorio AD "),e.k0s(),e.j41(13,"button",4),e.bIt("click",function(){return a.setActiveTab("workflow")}),e.j41(14,"span",5),e.EFF(15,"\u2699\ufe0f"),e.k0s(),e.EFF(16," Workflow Aprobaci\xf3n "),e.k0s(),e.j41(17,"button",4),e.bIt("click",function(){return a.setActiveTab("spaces")}),e.j41(18,"span",5),e.EFF(19,"\u{1f4c5}"),e.k0s(),e.EFF(20," Gesti\xf3n de Espacios "),e.k0s(),e.j41(21,"button",4),e.bIt("click",function(){return a.setActiveTab("metrics")}),e.j41(22,"span",5),e.EFF(23,"\u{1f4c8}"),e.k0s(),e.EFF(24," Adopci\xf3n y KPIs "),e.k0s(),e.j41(25,"button",4),e.bIt("click",function(){return a.setActiveTab("admin")}),e.j41(26,"span",5),e.EFF(27,"\u{1f511}"),e.k0s(),e.EFF(28," Visi\xf3n Admin "),e.k0s()(),e.j41(29,"div",6)(30,"div",7)(31,"span",8),e.EFF(32,"Estado API:"),e.k0s(),e.j41(33,"span",9),e.nrm(34,"span",10),e.EFF(35," ONLINE "),e.k0s()(),e.j41(36,"div",7)(37,"span",8),e.EFF(38,"Sesi\xf3n SSO:"),e.k0s(),e.j41(39,"span",11),e.EFF(40,"ACTIVE AD"),e.k0s()(),e.j41(41,"div",7)(42,"span",8),e.EFF(43,"Versi\xf3n:"),e.k0s(),e.j41(44,"span",12),e.EFF(45,"v2.4.0 (Neon)"),e.k0s()()()(),e.j41(46,"main",13),e.DNE(47,u,42,0,"div",14)(48,b,37,1,"div",15)(49,g,54,1,"div",15)(50,v,56,1,"div",15)(51,k,80,0,"div",15)(52,E,53,1,"div",15),e.k0s()()),2&n&&(e.R7$(5),e.AVh("border-l-4","inicio"===a.activeTab())("border-cyan-400","inicio"===a.activeTab())("bg-white-5","inicio"===a.activeTab()),e.R7$(4),e.AVh("border-l-4","directory"===a.activeTab())("border-cyan-400","directory"===a.activeTab()),e.R7$(4),e.AVh("border-l-4","workflow"===a.activeTab())("border-magenta-400","workflow"===a.activeTab()),e.R7$(4),e.AVh("border-l-4","spaces"===a.activeTab())("border-purple-400","spaces"===a.activeTab()),e.R7$(4),e.AVh("border-l-4","metrics"===a.activeTab())("border-cyan-400","metrics"===a.activeTab()),e.R7$(4),e.AVh("border-l-4","admin"===a.activeTab())("border-magenta-400","admin"===a.activeTab()),e.R7$(22),e.vxM("inicio"===a.activeTab()?47:-1),e.R7$(),e.vxM("directory"===a.activeTab()?48:-1),e.R7$(),e.vxM("workflow"===a.activeTab()?49:-1),e.R7$(),e.vxM("spaces"===a.activeTab()?50:-1),e.R7$(),e.vxM("metrics"===a.activeTab()?51:-1),e.R7$(),e.vxM("admin"===a.activeTab()?52:-1))},dependencies:[c.MD],styles:[".animate-fadeIn[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeIn .4s ease-out forwards}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}"]})}}return i})()}}]); \ No newline at end of file diff --git a/frontend/dist/kinetix-frontend/index.html b/frontend/dist/kinetix-frontend/index.html index a452ab2..a8fd441 100644 --- a/frontend/dist/kinetix-frontend/index.html +++ b/frontend/dist/kinetix-frontend/index.html @@ -6,8 +6,8 @@ - + - + diff --git a/frontend/dist/kinetix-frontend/main.80fea3cd03abcfb4.js b/frontend/dist/kinetix-frontend/main.80fea3cd03abcfb4.js deleted file mode 100644 index 823b8a3..0000000 --- a/frontend/dist/kinetix-frontend/main.80fea3cd03abcfb4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkkinetix_frontend=self.webpackChunkkinetix_frontend||[]).push([[792],{259:(ft,ge,H)=>{var _=H(661),I=H(690);class de extends _.VF{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class X extends de{static makeCurrent(){(0,_.ZD)(new X)}onAndCancel(c,a,l){return c.addEventListener(a,l),()=>{c.removeEventListener(a,l)}}dispatchEvent(c,a){c.dispatchEvent(a)}remove(c){c.parentNode&&c.parentNode.removeChild(c)}createElement(c,a){return(a=a||this.getDefaultDocument()).createElement(c)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(c){return c.nodeType===Node.ELEMENT_NODE}isShadowRoot(c){return c instanceof DocumentFragment}getGlobalEventTarget(c,a){return"window"===a?window:"document"===a?c:"body"===a?c.body:null}getBaseHref(c){const a=function q(){return W=W||document.querySelector("base"),W?W.getAttribute("href"):null}();return null==a?null:function We(s){return new URL(s,document.baseURI).pathname}(a)}resetBaseElement(){W=null}getUserAgent(){return window.navigator.userAgent}getCookie(c){return(0,_._b)(document.cookie,c)}}let W=null,Se=(()=>{class s{build(){return new XMLHttpRequest}static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac})}}return s})();const Z=new I.nKC("");let V=(()=>{class s{constructor(a,l){this._zone=l,this._eventNameToPlugin=new Map,a.forEach(p=>{p.manager=this}),this._plugins=a.slice().reverse()}addEventListener(a,l,p){return this._findPluginFor(l).addEventListener(a,l,p)}getZone(){return this._zone}_findPluginFor(a){let l=this._eventNameToPlugin.get(a);if(l)return l;if(l=this._plugins.find(v=>v.supports(a)),!l)throw new I.wOt(5101,!1);return this._eventNameToPlugin.set(a,l),l}static{this.\u0275fac=function(l){return new(l||s)(I.KVO(Z),I.KVO(I.SKi))}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac})}}return s})();class Y{constructor(c){this._doc=c}}const Ue="ng-app-id";let ce=(()=>{class s{constructor(a,l,p,v={}){this.doc=a,this.appId=l,this.nonce=p,this.platformId=v,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=(0,_.Vy)(v),this.resetHostNodes()}addStyles(a){for(const l of a)1===this.changeUsageCount(l,1)&&this.onStyleAdded(l)}removeStyles(a){for(const l of a)this.changeUsageCount(l,-1)<=0&&this.onStyleRemoved(l)}ngOnDestroy(){const a=this.styleNodesInDOM;a&&(a.forEach(l=>l.remove()),a.clear());for(const l of this.getAllStyles())this.onStyleRemoved(l);this.resetHostNodes()}addHost(a){this.hostNodes.add(a);for(const l of this.getAllStyles())this.addStyleToHost(a,l)}removeHost(a){this.hostNodes.delete(a)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(a){for(const l of this.hostNodes)this.addStyleToHost(l,a)}onStyleRemoved(a){const l=this.styleRef;l.get(a)?.elements?.forEach(p=>p.remove()),l.delete(a)}collectServerRenderedStyles(){const a=this.doc.head?.querySelectorAll(`style[${Ue}="${this.appId}"]`);if(a?.length){const l=new Map;return a.forEach(p=>{null!=p.textContent&&l.set(p.textContent,p)}),l}return null}changeUsageCount(a,l){const p=this.styleRef;if(p.has(a)){const v=p.get(a);return v.usage+=l,v.usage}return p.set(a,{usage:l,elements:[]}),l}getStyleElement(a,l){const p=this.styleNodesInDOM,v=p?.get(l);if(v?.parentNode===a)return p.delete(l),v.removeAttribute(Ue),v;{const w=this.doc.createElement("style");return this.nonce&&w.setAttribute("nonce",this.nonce),w.textContent=l,this.platformIsServer&&w.setAttribute(Ue,this.appId),a.appendChild(w),w}}addStyleToHost(a,l){const p=this.getStyleElement(a,l),v=this.styleRef,w=v.get(l)?.elements;w?w.push(p):v.set(l,{elements:[p],usage:1})}resetHostNodes(){const a=this.hostNodes;a.clear(),a.add(this.doc.head)}static{this.\u0275fac=function(l){return new(l||s)(I.KVO(_.qQ),I.KVO(I.sZ2),I.KVO(I.BIS,8),I.KVO(I.Agw))}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac})}}return s})();const Le={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/Math/MathML"},Qt=/%COMP%/g,it=new I.nKC("",{providedIn:"root",factory:()=>!0});function pt(s,c){return c.map(a=>a.replace(Qt,s))}let Zt=(()=>{class s{constructor(a,l,p,v,w,T,M,R=null){this.eventManager=a,this.sharedStylesHost=l,this.appId=p,this.removeStylesOnCompDestroy=v,this.doc=w,this.platformId=T,this.ngZone=M,this.nonce=R,this.rendererByCompId=new Map,this.platformIsServer=(0,_.Vy)(T),this.defaultRenderer=new et(a,w,M,this.platformIsServer)}createRenderer(a,l){if(!a||!l)return this.defaultRenderer;this.platformIsServer&&l.encapsulation===I.gXe.ShadowDom&&(l={...l,encapsulation:I.gXe.Emulated});const p=this.getOrCreateRenderer(a,l);return p instanceof Wo?p.applyToHost(a):p instanceof Go&&p.applyStyles(),p}getOrCreateRenderer(a,l){const p=this.rendererByCompId;let v=p.get(l.id);if(!v){const w=this.doc,T=this.ngZone,M=this.eventManager,R=this.sharedStylesHost,L=this.removeStylesOnCompDestroy,G=this.platformIsServer;switch(l.encapsulation){case I.gXe.Emulated:v=new Wo(M,R,l,this.appId,L,w,T,G);break;case I.gXe.ShadowDom:return new wa(M,R,a,l,w,T,this.nonce,G);default:v=new Go(M,R,l,L,w,T,G)}p.set(l.id,v)}return v}ngOnDestroy(){this.rendererByCompId.clear()}static{this.\u0275fac=function(l){return new(l||s)(I.KVO(V),I.KVO(ce),I.KVO(I.sZ2),I.KVO(it),I.KVO(_.qQ),I.KVO(I.Agw),I.KVO(I.SKi),I.KVO(I.BIS))}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac})}}return s})();class et{constructor(c,a,l,p){this.eventManager=c,this.doc=a,this.ngZone=l,this.platformIsServer=p,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(c,a){return a?this.doc.createElementNS(Le[a]||a,c):this.doc.createElement(c)}createComment(c){return this.doc.createComment(c)}createText(c){return this.doc.createTextNode(c)}appendChild(c,a){(Ke(c)?c.content:c).appendChild(a)}insertBefore(c,a,l){c&&(Ke(c)?c.content:c).insertBefore(a,l)}removeChild(c,a){c&&c.removeChild(a)}selectRootElement(c,a){let l="string"==typeof c?this.doc.querySelector(c):c;if(!l)throw new I.wOt(-5104,!1);return a||(l.textContent=""),l}parentNode(c){return c.parentNode}nextSibling(c){return c.nextSibling}setAttribute(c,a,l,p){if(p){a=p+":"+a;const v=Le[p];v?c.setAttributeNS(v,a,l):c.setAttribute(a,l)}else c.setAttribute(a,l)}removeAttribute(c,a,l){if(l){const p=Le[l];p?c.removeAttributeNS(p,a):c.removeAttribute(`${l}:${a}`)}else c.removeAttribute(a)}addClass(c,a){c.classList.add(a)}removeClass(c,a){c.classList.remove(a)}setStyle(c,a,l,p){p&(I.czy.DashCase|I.czy.Important)?c.style.setProperty(a,l,p&I.czy.Important?"important":""):c.style[a]=l}removeStyle(c,a,l){l&I.czy.DashCase?c.style.removeProperty(a):c.style[a]=""}setProperty(c,a,l){null!=c&&(c[a]=l)}setValue(c,a){c.nodeValue=a}listen(c,a,l){if("string"==typeof c&&!(c=(0,_.QT)().getGlobalEventTarget(this.doc,c)))throw new Error(`Unsupported event target ${c} for event ${a}`);return this.eventManager.addEventListener(c,a,this.decoratePreventDefault(l))}decoratePreventDefault(c){return a=>{if("__ngUnwrap__"===a)return c;!1===(this.platformIsServer?this.ngZone.runGuarded(()=>c(a)):c(a))&&a.preventDefault()}}}function Ke(s){return"TEMPLATE"===s.tagName&&void 0!==s.content}class wa extends et{constructor(c,a,l,p,v,w,T,M){super(c,v,w,M),this.sharedStylesHost=a,this.hostEl=l,this.shadowRoot=l.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const R=pt(p.id,p.styles);for(const L of R){const G=document.createElement("style");T&&G.setAttribute("nonce",T),G.textContent=L,this.shadowRoot.appendChild(G)}}nodeOrShadowRoot(c){return c===this.hostEl?this.shadowRoot:c}appendChild(c,a){return super.appendChild(this.nodeOrShadowRoot(c),a)}insertBefore(c,a,l){return super.insertBefore(this.nodeOrShadowRoot(c),a,l)}removeChild(c,a){return super.removeChild(this.nodeOrShadowRoot(c),a)}parentNode(c){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(c)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class Go extends et{constructor(c,a,l,p,v,w,T,M){super(c,v,w,T),this.sharedStylesHost=a,this.removeStylesOnCompDestroy=p,this.styles=M?pt(M,l.styles):l.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}}class Wo extends Go{constructor(c,a,l,p,v,w,T,M){const R=p+"-"+l.id;super(c,a,l,v,w,T,M,R),this.contentAttr=function oe(s){return"_ngcontent-%COMP%".replace(Qt,s)}(R),this.hostAttr=function qe(s){return"_nghost-%COMP%".replace(Qt,s)}(R)}applyToHost(c){this.applyStyles(),this.setAttribute(c,this.hostAttr,"")}createElement(c,a){const l=super.createElement(c,a);return super.setAttribute(l,this.contentAttr,""),l}}let Qi=(()=>{class s extends Y{constructor(a){super(a)}supports(a){return!0}addEventListener(a,l,p){return a.addEventListener(l,p,!1),()=>this.removeEventListener(a,l,p)}removeEventListener(a,l,p){return a.removeEventListener(l,p)}static{this.\u0275fac=function(l){return new(l||s)(I.KVO(_.qQ))}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac})}}return s})();const Zi=["alt","control","meta","shift"],qo={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},Ic={alt:s=>s.altKey,control:s=>s.ctrlKey,meta:s=>s.metaKey,shift:s=>s.shiftKey};let zd=(()=>{class s extends Y{constructor(a){super(a)}supports(a){return null!=s.parseEventName(a)}addEventListener(a,l,p){const v=s.parseEventName(l),w=s.eventCallback(v.fullKey,p,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>(0,_.QT)().onAndCancel(a,v.domEventName,w))}static parseEventName(a){const l=a.toLowerCase().split("."),p=l.shift();if(0===l.length||"keydown"!==p&&"keyup"!==p)return null;const v=s._normalizeKey(l.pop());let w="",T=l.indexOf("code");if(T>-1&&(l.splice(T,1),w="code."),Zi.forEach(R=>{const L=l.indexOf(R);L>-1&&(l.splice(L,1),w+=R+".")}),w+=v,0!=l.length||0===v.length)return null;const M={};return M.domEventName=p,M.fullKey=w,M}static matchEventFullKeyCode(a,l){let p=qo[a.key]||a.key,v="";return l.indexOf("code.")>-1&&(p=a.code,v="code."),!(null==p||!p)&&(p=p.toLowerCase()," "===p?p="space":"."===p&&(p="dot"),Zi.forEach(w=>{w!==p&&(0,Ic[w])(a)&&(v+=w+".")}),v+=p,v===l)}static eventCallback(a,l,p){return v=>{s.matchEventFullKeyCode(v,a)&&p.runGuarded(()=>l(v))}}static _normalizeKey(a){return"esc"===a?"escape":a}static{this.\u0275fac=function(l){return new(l||s)(I.KVO(_.qQ))}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac})}}return s})();function Pr(s){return{appProviders:[...Ia,...s?.providers??[]],platformProviders:Sc}}const Sc=[{provide:I.Agw,useValue:_.AJ},{provide:I.PLl,useValue:function Zo(){X.makeCurrent()},multi:!0},{provide:_.qQ,useFactory:function Ea(){return(0,I.TL$)(document),document},deps:[]}],Ia=[{provide:I.H8p,useValue:"root"},{provide:I.zcH,useFactory:function Gd(){return new I.zcH},deps:[]},{provide:Z,useClass:Qi,multi:!0,deps:[_.qQ,I.SKi,I.Agw]},{provide:Z,useClass:zd,multi:!0,deps:[_.qQ]},Zt,ce,V,{provide:I._9s,useExisting:Zt},{provide:_.N0,useClass:Se,deps:[]},[]];let z=(()=>{class s{constructor(a){this._doc=a}getTitle(){return this._doc.title}setTitle(a){this._doc.title=a||""}static{this.\u0275fac=function(l){return new(l||s)(I.KVO(_.qQ))}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac,providedIn:"root"})}}return s})();var at=H(799),Fe=H(429);function un(s){return this instanceof un?(this.v=s,this):new un(s)}function jr(s){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var a,c=s[Symbol.asyncIterator];return c?c.call(s):(s=function po(s){var c="function"==typeof Symbol&&Symbol.iterator,a=c&&s[c],l=0;if(a)return a.call(s);if(s&&"number"==typeof s.length)return{next:function(){return s&&l>=s.length&&(s=void 0),{value:s&&s[l++],done:!s}}};throw new TypeError(c?"Object is not iterable.":"Symbol.iterator is not defined.")}(s),a={},l("next"),l("throw"),l("return"),a[Symbol.asyncIterator]=function(){return this},a);function l(v){a[v]=s[v]&&function(w){return new Promise(function(T,M){!function p(v,w,T,M){Promise.resolve(M).then(function(R){v({value:R,done:T})},w)}(T,M,(w=s[v](w)).done,w.value)})}}}"function"==typeof SuppressedError&&SuppressedError;const Fc=s=>s&&"number"==typeof s.length&&"function"!=typeof s;function Aa(s){return(0,Fe.T)(s?.then)}var Ra=H(848);function is(s){return(0,Fe.T)(s[Ra.s])}function go(s){return Symbol.asyncIterator&&(0,Fe.T)(s?.[Symbol.asyncIterator])}function $n(s){return new TypeError(`You provided ${null!==s&&"object"==typeof s?"an invalid object":`'${s}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const mo=function Ur(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function si(s){return(0,Fe.T)(s?.[mo])}function Rn(s){return function Lr(s,c,a){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var p,l=a.apply(s,c||[]),v=[];return p=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),T("next"),T("throw"),T("return",function w(Ee){return function(Ne){return Promise.resolve(Ne).then(Ee,G)}}),p[Symbol.asyncIterator]=function(){return this},p;function T(Ee,Ne){l[Ee]&&(p[Ee]=function(nt){return new Promise(function(Ye,xe){v.push([Ee,nt,Ye,xe])>1||M(Ee,nt)})},Ne&&(p[Ee]=Ne(p[Ee])))}function M(Ee,Ne){try{!function R(Ee){Ee.value instanceof un?Promise.resolve(Ee.value.v).then(L,G):Te(v[0][2],Ee)}(l[Ee](Ne))}catch(nt){Te(v[0][3],nt)}}function L(Ee){M("next",Ee)}function G(Ee){M("throw",Ee)}function Te(Ee,Ne){Ee(Ne),v.shift(),v.length&&M(v[0][0],v[0][1])}}(this,arguments,function*(){const a=s.getReader();try{for(;;){const{value:l,done:p}=yield un(a.read());if(p)return yield un(void 0);yield yield un(l)}}finally{a.releaseLock()}})}function Hr(s){return(0,Fe.T)(s?.getReader)}var ai=H(512);function re(s){if(s instanceof at.c)return s;if(null!=s){if(is(s))return function Re(s){return new at.c(c=>{const a=s[Ra.s]();if((0,Fe.T)(a.subscribe))return a.subscribe(c);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(s);if(Fc(s))return function qd(s){return new at.c(c=>{for(let a=0;a{s.then(a=>{c.closed||(c.next(a),c.complete())},a=>c.error(a)).then(null,ai.m)})}(s);if(go(s))return Oa(s);if(si(s))return function cn(s){return new at.c(c=>{for(const a of s)if(c.next(a),c.closed)return;c.complete()})}(s);if(Hr(s))return function xa(s){return Oa(Rn(s))}(s)}throw $n(s)}function Oa(s){return new at.c(c=>{(function ui(s,c){var a,l,p,v;return function zt(s,c,a,l){return new(a||(a=Promise))(function(v,w){function T(L){try{R(l.next(L))}catch(G){w(G)}}function M(L){try{R(l.throw(L))}catch(G){w(G)}}function R(L){L.done?v(L.value):function p(v){return v instanceof a?v:new a(function(w){w(v)})}(L.value).then(T,M)}R((l=l.apply(s,c||[])).next())})}(this,void 0,void 0,function*(){try{for(a=jr(s);!(l=yield a.next()).done;)if(c.next(l.value),c.closed)return}catch(w){p={error:w}}finally{try{l&&!l.done&&(v=a.return)&&(yield v.call(a))}finally{if(p)throw p.error}}c.complete()})})(s,c).catch(a=>c.error(a))})}function le(s,c,a,l=0,p=!1){const v=c.schedule(function(){a(),p?s.add(this.schedule(null,l)):this.unsubscribe()},l);if(s.add(v),!p)return v}var vt=H(536),Ct=H(578);function xt(s,c=0){return(0,vt.N)((a,l)=>{a.subscribe((0,Ct._)(l,p=>le(l,s,()=>l.next(p),c),()=>le(l,s,()=>l.complete(),c),p=>le(l,s,()=>l.error(p),c)))})}function ci(s,c=0){return(0,vt.N)((a,l)=>{l.add(s.schedule(()=>a.subscribe(l),c))})}function Br(s,c){if(!s)throw new Error("Iterable cannot be null");return new at.c(a=>{le(a,c,()=>{const l=s[Symbol.asyncIterator]();le(a,c,()=>{l.next().then(p=>{p.done?a.complete():a.next(p.value)})},0,!0)})})}function Pt(s,c){return c?function ka(s,c){if(null!=s){if(is(s))return function jc(s,c){return re(s).pipe(ci(c),xt(c))}(s,c);if(Fc(s))return function $r(s,c){return new at.c(a=>{let l=0;return c.schedule(function(){l===s.length?a.complete():(a.next(s[l++]),a.closed||this.schedule())})})}(s,c);if(Aa(s))return function Vc(s,c){return re(s).pipe(ci(c),xt(c))}(s,c);if(go(s))return Br(s,c);if(si(s))return function li(s,c){return new at.c(a=>{let l;return le(a,c,()=>{l=s[mo](),le(a,c,()=>{let p,v;try{({value:p,done:v}=l.next())}catch(w){return void a.error(w)}v?a.complete():a.next(p)},0,!0)}),()=>(0,Fe.T)(l?.return)&&l.return()})}(s,c);if(Hr(s))return function Pa(s,c){return Br(Rn(s),c)}(s,c)}throw $n(s)}(s,c):re(s)}function Bn(s){return s[s.length-1]}function Jt(s){return function ss(s){return s&&(0,Fe.T)(s.schedule)}(Bn(s))?s.pop():void 0}function ee(...s){return Pt(s,Jt(s))}var en=H(398);const On=(0,H(279).L)(s=>function(){s(this),this.name="EmptyError",this.message="no elements in sequence"}),{isArray:as}=Array,{getPrototypeOf:vo,prototype:La,keys:us}=Object;var zn=H(871),$e=H(764);const{isArray:cs}=Array;function kt(...s){const c=Jt(s),a=function Fa(s){return(0,Fe.T)(Bn(s))?s.pop():void 0}(s),{args:l,keys:p}=function ja(s){if(1===s.length){const c=s[0];if(as(c))return{args:c,keys:null};if(function Hc(s){return s&&"object"==typeof s&&vo(s)===La}(c)){const a=us(c);return{args:a.map(l=>c[l]),keys:a}}}return{args:s,keys:null}}(s);if(0===l.length)return Pt([],c);const v=new at.c(function xn(s,c,a=zn.D){return l=>{ls(c,()=>{const{length:p}=s,v=new Array(p);let w=p,T=p;for(let M=0;M{const R=Pt(s[M],c);let L=!1;R.subscribe((0,Ct._)(l,G=>{v[M]=G,L||(L=!0,T--),T||l.next(a(v.slice()))},()=>{--w||l.complete()}))},l)},l)}}(l,c,p?w=>function Bc(s,c){return s.reduce((a,l,p)=>(a[l]=c[p],a),{})}(p,w):zn.D));return a?v.pipe(function er(s){return(0,$e.T)(c=>function $c(s,c){return cs(c)?s(...c):s(c)}(s,c))}(a)):v}function ls(s,c,a){s?le(a,s,c):c()}function St(s,c,a=1/0){return(0,Fe.T)(c)?St((l,p)=>(0,$e.T)((v,w)=>c(l,v,p,w))(re(s(l,p))),a):("number"==typeof c&&(a=c),(0,vt.N)((l,p)=>function tr(s,c,a,l,p,v,w,T){const M=[];let R=0,L=0,G=!1;const Te=()=>{G&&!M.length&&!R&&c.complete()},Ee=nt=>R{v&&c.next(nt),R++;let Ye=!1;re(a(nt,L++)).subscribe((0,Ct._)(c,xe=>{p?.(xe),v?Ee(xe):c.next(xe)},()=>{Ye=!0},void 0,()=>{if(Ye)try{for(R--;M.length&&RNe(xe)):Ne(xe)}Te()}catch(xe){c.error(xe)}}))};return s.subscribe((0,Ct._)(c,Ee,()=>{G=!0,Te()})),()=>{T?.()}}(l,p,s,a)))}function yo(...s){return function zc(){return function Dr(s=1/0){return St(zn.D,s)}(1)}()(Pt(s,Jt(s)))}function zr(s){return new at.c(c=>{re(s()).subscribe(c)})}var Gt=H(297);function Gr(s,c){const a=(0,Fe.T)(s)?s:()=>s,l=p=>p.error(a());return new at.c(c?p=>c.schedule(l,0,p):l)}const Ft=new at.c(s=>s.complete());var ln=H(539);function we(){return(0,vt.N)((s,c)=>{let a=null;s._refCount++;const l=(0,Ct._)(c,void 0,void 0,void 0,()=>{if(!s||s._refCount<=0||0<--s._refCount)return void(a=null);const p=s._connection,v=a;a=null,p&&(!v||p===v)&&p.unsubscribe(),c.unsubscribe()});s.subscribe(l),l.closed||(a=s.connect())})}class dn extends at.c{constructor(c,a){super(),this.source=c,this.subjectFactory=a,this._subject=null,this._refCount=0,this._connection=null,(0,vt.S)(c)&&(this.lift=c.lift)}_subscribe(c){return this.getSubject().subscribe(c)}getSubject(){const c=this._subject;return(!c||c.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:c}=this;this._subject=this._connection=null,c?.unsubscribe()}connect(){let c=this._connection;if(!c){c=this._connection=new ln.yU;const a=this.getSubject();c.add(this.source.subscribe((0,Ct._)(a,void 0,()=>{this._teardown(),a.complete()},l=>{this._teardown(),a.error(l)},()=>this._teardown()))),c.closed&&(this._connection=null,c=ln.yU.EMPTY)}return c}refCount(){return we()(this)}}var Gn=H(334);function yn(s,c){return(0,vt.N)((a,l)=>{let p=null,v=0,w=!1;const T=()=>w&&!p&&l.complete();a.subscribe((0,Ct._)(l,M=>{p?.unsubscribe();let R=0;const L=v++;re(s(M,L)).subscribe(p=(0,Ct._)(l,G=>l.next(c?c(M,G,L,R++):G),()=>{p=null,T()}))},()=>{w=!0,T()}))})}function Wn(s){return s<=0?()=>Ft:(0,vt.N)((c,a)=>{let l=0;c.subscribe((0,Ct._)(a,p=>{++l<=s&&(a.next(p),s<=l&&a.complete())}))})}function Wt(s,c){return(0,vt.N)((a,l)=>{let p=0;a.subscribe((0,Ct._)(l,v=>s.call(c,v,p++)&&l.next(v)))})}function Pn(s){return(0,vt.N)((c,a)=>{let l=!1;c.subscribe((0,Ct._)(a,p=>{l=!0,a.next(p)},()=>{l||a.next(s),a.complete()}))})}function Ua(s=ds){return(0,vt.N)((c,a)=>{let l=!1;c.subscribe((0,Ct._)(a,p=>{l=!0,a.next(p)},()=>l?a.complete():a.error(s())))})}function ds(){return new On}function qn(s,c){const a=arguments.length>=2;return l=>l.pipe(s?Wt((p,v)=>s(p,v,l)):zn.D,Wn(1),a?Pn(c):Ua(()=>new On))}function Wr(s,c){return(0,Fe.T)(c)?St(s,c,1):St(s,1)}function yt(s,c,a){const l=(0,Fe.T)(s)||c||a?{next:s,error:c,complete:a}:s;return l?(0,vt.N)((p,v)=>{var w;null===(w=l.subscribe)||void 0===w||w.call(l);let T=!0;p.subscribe((0,Ct._)(v,M=>{var R;null===(R=l.next)||void 0===R||R.call(l,M),v.next(M)},()=>{var M;T=!1,null===(M=l.complete)||void 0===M||M.call(l),v.complete()},M=>{var R;T=!1,null===(R=l.error)||void 0===R||R.call(l,M),v.error(M)},()=>{var M,R;T&&(null===(M=l.unsubscribe)||void 0===M||M.call(l)),null===(R=l.finalize)||void 0===R||R.call(l)}))}):zn.D}function Cr(s){return(0,vt.N)((c,a)=>{let v,l=null,p=!1;l=c.subscribe((0,Ct._)(a,void 0,void 0,w=>{v=re(s(w,Cr(s)(c))),l?(l.unsubscribe(),l=null,v.subscribe(a)):p=!0})),p&&(l.unsubscribe(),l=null,v.subscribe(a))})}function qr(s){return s<=0?()=>Ft:(0,vt.N)((c,a)=>{let l=[];c.subscribe((0,Ct._)(a,p=>{l.push(p),s{for(const p of l)a.next(p);a.complete()},void 0,()=>{l=null}))})}function qt(s){return(0,vt.N)((c,a)=>{try{c.subscribe(a)}finally{a.add(s)}})}var za=H(777);const me="primary",Co=Symbol("RouteTitle");class Wc{constructor(c){this.params=c||{}}has(c){return Object.prototype.hasOwnProperty.call(this.params,c)}get(c){if(this.has(c)){const a=this.params[c];return Array.isArray(a)?a[0]:a}return null}getAll(c){if(this.has(c)){const a=this.params[c];return Array.isArray(a)?a:[a]}return[]}get keys(){return Object.keys(this.params)}}function Qr(s){return new Wc(s)}function Ga(s,c,a){const l=a.path.split("/");if(l.length>s.length||"full"===a.pathMatch&&(c.hasChildren()||l.lengthl[v]===p)}return s===c}function Wa(s){return s.length>0?s[s.length-1]:null}function nr(s){return function Tc(s){return!!s&&(s instanceof at.c||(0,Fe.T)(s.lift)&&(0,Fe.T)(s.subscribe))}(s)?s:(0,I.jNT)(s)?Pt(Promise.resolve(s)):ee(s)}const wo={exact:function fe(s,c,a){if(!Qn(s.segments,c.segments)||!mt(s.segments,c.segments,a)||s.numberOfChildren!==c.numberOfChildren)return!1;for(const l in c.children)if(!s.children[l]||!fe(s.children[l],c.children[l],a))return!1;return!0},subset:bt},fi={exact:function Eo(s,c){return kn(s,c)},subset:function wt(s,c){return Object.keys(c).length<=Object.keys(s).length&&Object.keys(c).every(a=>fs(s[a],c[a]))},ignored:()=>!0};function hi(s,c,a){return wo[a.paths](s.root,c.root,a.matrixParams)&&fi[a.queryParams](s.queryParams,c.queryParams)&&!("exact"===a.fragment&&s.fragment!==c.fragment)}function bt(s,c,a){return Dn(s,c,c.segments,a)}function Dn(s,c,a,l){if(s.segments.length>a.length){const p=s.segments.slice(0,a.length);return!(!Qn(p,a)||c.hasChildren()||!mt(p,a,l))}if(s.segments.length===a.length){if(!Qn(s.segments,a)||!mt(s.segments,a,l))return!1;for(const p in c.children)if(!s.children[p]||!bt(s.children[p],c.children[p],l))return!1;return!0}{const p=a.slice(0,s.segments.length),v=a.slice(s.segments.length);return!!(Qn(s.segments,p)&&mt(s.segments,p,l)&&s.children[me])&&Dn(s.children[me],c,v,l)}}function mt(s,c,a){return c.every((l,p)=>fi[a](s[p].parameters,l.parameters))}class wr{constructor(c=new je([],{}),a={},l=null){this.root=c,this.queryParams=a,this.fragment=l}get queryParamMap(){return this._queryParamMap??=Qr(this.queryParams),this._queryParamMap}toString(){return qa.serialize(this)}}class je{constructor(c,a){this.segments=c,this.children=a,this.parent=null,Object.values(a).forEach(l=>l.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Er(this)}}class rr{constructor(c,a){this.path=c,this.parameters=a}get parameterMap(){return this._parameterMap??=Qr(this.parameters),this._parameterMap}toString(){return ps(this)}}function Qn(s,c){return s.length===c.length&&s.every((a,l)=>a.path===c[l].path)}let Kr=(()=>{class s{static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275prov=I.jDH({token:s,factory:()=>new Yr,providedIn:"root"})}}return s})();class Yr{parse(c){const a=new Za(c);return new wr(a.parseRootSegment(),a.parseQueryParams(),a.parseFragment())}serialize(c){const a=`/${pi(c.root,!0)}`,l=function So(s){const c=Object.entries(s).map(([a,l])=>Array.isArray(l)?l.map(p=>`${mi(a)}=${mi(p)}`).join("&"):`${mi(a)}=${mi(l)}`).filter(a=>a);return c.length?`?${c.join("&")}`:""}(c.queryParams);return`${a}${l}${"string"==typeof c.fragment?`#${function vi(s){return encodeURI(s)}(c.fragment)}`:""}`}}const qa=new Yr;function Er(s){return s.segments.map(c=>ps(c)).join("/")}function pi(s,c){if(!s.hasChildren())return Er(s);if(c){const a=s.children[me]?pi(s.children[me],!1):"",l=[];return Object.entries(s.children).forEach(([p,v])=>{p!==me&&l.push(`${p}:${pi(v,!1)}`)}),l.length>0?`${a}(${l.join("//")})`:a}{const a=function Zr(s,c){let a=[];return Object.entries(s.children).forEach(([l,p])=>{l===me&&(a=a.concat(c(p,l)))}),Object.entries(s.children).forEach(([l,p])=>{l!==me&&(a=a.concat(c(p,l)))}),a}(s,(l,p)=>p===me?[pi(s.children[me],!1)]:[`${p}:${pi(l,!1)}`]);return 1===Object.keys(s.children).length&&null!=s.children[me]?`${Er(s)}/${a[0]}`:`${Er(s)}/(${a.join("//")})`}}function gi(s){return encodeURIComponent(s).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function mi(s){return gi(s).replace(/%3B/gi,";")}function Io(s){return gi(s).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Xr(s){return decodeURIComponent(s)}function or(s){return Xr(s.replace(/\+/g,"%20"))}function ps(s){return`${Io(s.path)}${function gs(s){return Object.entries(s).map(([c,a])=>`;${Io(c)}=${Io(a)}`).join("")}(s.parameters)}`}const Qa=/^[^\/()?;#]+/;function bo(s){const c=s.match(Qa);return c?c[0]:""}const yi=/^[^\/()?;=#]+/,Jr=/^[^=?&#]+/,Qc=/^[^&#]+/;class Za{constructor(c){this.url=c,this.remaining=c}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new je([],{}):new je([],this.parseChildren())}parseQueryParams(){const c={};if(this.consumeOptional("?"))do{this.parseQueryParam(c)}while(this.consumeOptional("&"));return c}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const c=[];for(this.peekStartsWith("(")||c.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),c.push(this.parseSegment());let a={};this.peekStartsWith("/(")&&(this.capture("/"),a=this.parseParens(!0));let l={};return this.peekStartsWith("(")&&(l=this.parseParens(!1)),(c.length>0||Object.keys(a).length>0)&&(l[me]=new je(c,a)),l}parseSegment(){const c=bo(this.remaining);if(""===c&&this.peekStartsWith(";"))throw new I.wOt(4009,!1);return this.capture(c),new rr(Xr(c),this.parseMatrixParams())}parseMatrixParams(){const c={};for(;this.consumeOptional(";");)this.parseParam(c);return c}parseParam(c){const a=function fn(s){const c=s.match(yi);return c?c[0]:""}(this.remaining);if(!a)return;this.capture(a);let l="";if(this.consumeOptional("=")){const p=bo(this.remaining);p&&(l=p,this.capture(l))}c[Xr(a)]=Xr(l)}parseQueryParam(c){const a=function ms(s){const c=s.match(Jr);return c?c[0]:""}(this.remaining);if(!a)return;this.capture(a);let l="";if(this.consumeOptional("=")){const w=function Zc(s){const c=s.match(Qc);return c?c[0]:""}(this.remaining);w&&(l=w,this.capture(l))}const p=or(a),v=or(l);if(c.hasOwnProperty(p)){let w=c[p];Array.isArray(w)||(w=[w],c[p]=w),w.push(v)}else c[p]=v}parseParens(c){const a={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const l=bo(this.remaining),p=this.remaining[l.length];if("/"!==p&&")"!==p&&";"!==p)throw new I.wOt(4010,!1);let v;l.indexOf(":")>-1?(v=l.slice(0,l.indexOf(":")),this.capture(v),this.capture(":")):c&&(v=me);const w=this.parseChildren();a[v]=1===Object.keys(w).length?w[me]:new je([],w),this.consumeOptional("//")}return a}peekStartsWith(c){return this.remaining.startsWith(c)}consumeOptional(c){return!!this.peekStartsWith(c)&&(this.remaining=this.remaining.substring(c.length),!0)}capture(c){if(!this.consumeOptional(c))throw new I.wOt(4011,!1)}}function Ir(s){return s.segments.length>0?new je([],{[me]:s}):s}function Ka(s){const c={};for(const[l,p]of Object.entries(s.children)){const v=Ka(p);if(l===me&&0===v.segments.length&&v.hasChildren())for(const[w,T]of Object.entries(v.children))c[w]=T;else(v.segments.length>0||v.hasChildren())&&(c[l]=v)}return function Mo(s){if(1===s.numberOfChildren&&s.children[me]){const c=s.children[me];return new je(s.segments.concat(c.segments),c.children)}return s}(new je(s.segments,c))}function _o(s){return s instanceof wr}function h(s){let c;const p=Ir(function a(v){const w={};for(const M of v.children){const R=a(M);w[M.outlet]=R}const T=new je(v.url,w);return v===s&&(c=T),T}(s.root));return c??p}function C(s,c,a,l){let p=s;for(;p.parent;)p=p.parent;if(0===c.length)return b(p,p,p,a,l);const v=function Q(s){if("string"==typeof s[0]&&1===s.length&&"/"===s[0])return new k(!0,0,s);let c=0,a=!1;const l=s.reduce((p,v,w)=>{if("object"==typeof v&&null!=v){if(v.outlets){const T={};return Object.entries(v.outlets).forEach(([M,R])=>{T[M]="string"==typeof R?R.split("/"):R}),[...p,{outlets:T}]}if(v.segmentPath)return[...p,v.segmentPath]}return"string"!=typeof v?[...p,v]:0===w?(v.split("/").forEach((T,M)=>{0==M&&"."===T||(0==M&&""===T?a=!0:".."===T?c++:""!=T&&p.push(T))}),p):[...p,v]},[]);return new k(a,c,l)}(c);if(v.toRoot())return b(p,p,new je([],{}),a,l);const w=function Ae(s,c,a){if(s.isAbsolute)return new Ve(c,!0,0);if(!a)return new Ve(c,!1,NaN);if(null===a.parent)return new Ve(a,!0,0);const l=g(s.commands[0])?0:1;return function ze(s,c,a){let l=s,p=c,v=a;for(;v>p;){if(v-=p,l=l.parent,!l)throw new I.wOt(4005,!1);p=l.segments.length}return new Ve(l,!1,p-v)}(a,a.segments.length-1+l,s.numberOfDoubleDots)}(v,p,s),T=w.processChildren?be(w.segmentGroup,w.index,v.commands):tt(w.segmentGroup,w.index,v.commands);return b(p,w.segmentGroup,T,a,l)}function g(s){return"object"==typeof s&&null!=s&&!s.outlets&&!s.segmentPath}function D(s){return"object"==typeof s&&null!=s&&s.outlets}function b(s,c,a,l,p){let w,v={};l&&Object.entries(l).forEach(([M,R])=>{v[M]=Array.isArray(R)?R.map(L=>`${L}`):`${R}`}),w=s===c?a:O(s,c,a);const T=Ir(Ka(w));return new wr(T,v,p)}function O(s,c,a){const l={};return Object.entries(s.children).forEach(([p,v])=>{l[p]=v===c?a:O(v,c,a)}),new je(s.segments,l)}class k{constructor(c,a,l){if(this.isAbsolute=c,this.numberOfDoubleDots=a,this.commands=l,c&&l.length>0&&g(l[0]))throw new I.wOt(4003,!1);const p=l.find(D);if(p&&p!==Wa(l))throw new I.wOt(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class Ve{constructor(c,a,l){this.segmentGroup=c,this.processChildren=a,this.index=l}}function tt(s,c,a){if(s??=new je([],{}),0===s.segments.length&&s.hasChildren())return be(s,c,a);const l=function Et(s,c,a){let l=0,p=c;const v={match:!1,pathIndex:0,commandIndex:0};for(;p=a.length)return v;const w=s.segments[p],T=a[l];if(D(T))break;const M=`${T}`,R=l0&&void 0===M)break;if(M&&R&&"object"==typeof R&&void 0===R.outlets){if(!Me(M,R,w))return v;l+=2}else{if(!Me(M,{},w))return v;l++}p++}return{match:!0,pathIndex:p,commandIndex:l}}(s,c,a),p=a.slice(l.commandIndex);if(l.match&&l.pathIndexv!==me)&&s.children[me]&&1===s.numberOfChildren&&0===s.children[me].segments.length){const v=be(s.children[me],c,a);return new je(s.segments,v.children)}return Object.entries(l).forEach(([v,w])=>{"string"==typeof w&&(w=[w]),null!==w&&(p[v]=tt(s.children[v],c,w))}),Object.entries(s.children).forEach(([v,w])=>{void 0===l[v]&&(p[v]=w)}),new je(s.segments,p)}}function Cn(s,c,a){const l=s.segments.slice(0,c);let p=0;for(;p{"string"==typeof l&&(l=[l]),null!==l&&(c[a]=Cn(new je([],{}),0,l))}),c}function wn(s){const c={};return Object.entries(s).forEach(([a,l])=>c[a]=`${l}`),c}function Me(s,c,a){return s==a.path&&kn(c,a.parameters)}const j="imperative";var U=function(s){return s[s.NavigationStart=0]="NavigationStart",s[s.NavigationEnd=1]="NavigationEnd",s[s.NavigationCancel=2]="NavigationCancel",s[s.NavigationError=3]="NavigationError",s[s.RoutesRecognized=4]="RoutesRecognized",s[s.ResolveStart=5]="ResolveStart",s[s.ResolveEnd=6]="ResolveEnd",s[s.GuardsCheckStart=7]="GuardsCheckStart",s[s.GuardsCheckEnd=8]="GuardsCheckEnd",s[s.RouteConfigLoadStart=9]="RouteConfigLoadStart",s[s.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",s[s.ChildActivationStart=11]="ChildActivationStart",s[s.ChildActivationEnd=12]="ChildActivationEnd",s[s.ActivationStart=13]="ActivationStart",s[s.ActivationEnd=14]="ActivationEnd",s[s.Scroll=15]="Scroll",s[s.NavigationSkipped=16]="NavigationSkipped",s}(U||{});class Ie{constructor(c,a){this.id=c,this.url=a}}class Lt extends Ie{constructor(c,a,l="imperative",p=null){super(c,a),this.type=U.NavigationStart,this.navigationTrigger=l,this.restoredState=p}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class ut extends Ie{constructor(c,a,l){super(c,a),this.urlAfterRedirects=l,this.type=U.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}var Qe=function(s){return s[s.Redirect=0]="Redirect",s[s.SupersededByNewNavigation=1]="SupersededByNewNavigation",s[s.NoDataFromResolver=2]="NoDataFromResolver",s[s.GuardRejected=3]="GuardRejected",s}(Qe||{}),ir=function(s){return s[s.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",s[s.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",s}(ir||{});class Oe extends Ie{constructor(c,a,l,p){super(c,a),this.reason=l,this.code=p,this.type=U.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class rt extends Ie{constructor(c,a,l,p){super(c,a),this.reason=l,this.code=p,this.type=U.NavigationSkipped}}class En extends Ie{constructor(c,a,l,p){super(c,a),this.error=l,this.target=p,this.type=U.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class se extends Ie{constructor(c,a,l,p){super(c,a),this.urlAfterRedirects=l,this.state=p,this.type=U.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Di extends Ie{constructor(c,a,l,p){super(c,a),this.urlAfterRedirects=l,this.state=p,this.type=U.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Kc extends Ie{constructor(c,a,l,p,v){super(c,a),this.urlAfterRedirects=l,this.state=p,this.shouldActivate=v,this.type=U.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class To extends Ie{constructor(c,a,l,p){super(c,a),this.urlAfterRedirects=l,this.state=p,this.type=U.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ot extends Ie{constructor(c,a,l,p){super(c,a),this.urlAfterRedirects=l,this.state=p,this.type=U.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class eo{constructor(c){this.route=c,this.type=U.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class No{constructor(c){this.route=c,this.type=U.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class sr{constructor(c){this.snapshot=c,this.type=U.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Ao{constructor(c){this.snapshot=c,this.type=U.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Yc{constructor(c){this.snapshot=c,this.type=U.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Sr{constructor(c){this.snapshot=c,this.type=U.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ar{}class te{constructor(c,a){this.url=c,this.navigationBehaviorOptions=a}}class Ci{constructor(c){this.injector=c,this.outlet=null,this.route=null,this.children=new nn(this.injector),this.attachRef=null}}let nn=(()=>{class s{constructor(a){this.parentInjector=a,this.contexts=new Map}onChildOutletCreated(a,l){const p=this.getOrCreateContext(a);p.outlet=l,this.contexts.set(a,p)}onChildOutletDestroyed(a){const l=this.getContext(a);l&&(l.outlet=null,l.attachRef=null)}onOutletDeactivated(){const a=this.contexts;return this.contexts=new Map,a}onOutletReAttached(a){this.contexts=a}getOrCreateContext(a){let l=this.getContext(a);return l||(l=new Ci(this.parentInjector),this.contexts.set(a,l)),l}getContext(a){return this.contexts.get(a)||null}static{this.\u0275fac=function(l){return new(l||s)(I.KVO(I.uvJ))}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac,providedIn:"root"})}}return s})();class wi{constructor(c){this._root=c}get root(){return this._root.value}parent(c){const a=this.pathFromRoot(c);return a.length>1?a[a.length-2]:null}children(c){const a=br(c,this._root);return a?a.children.map(l=>l.value):[]}firstChild(c){const a=br(c,this._root);return a&&a.children.length>0?a.children[0].value:null}siblings(c){const a=ct(c,this._root);return a.length<2?[]:a[a.length-2].children.map(p=>p.value).filter(p=>p!==c)}pathFromRoot(c){return ct(c,this._root).map(a=>a.value)}}function br(s,c){if(s===c.value)return c;for(const a of c.children){const l=br(s,a);if(l)return l}return null}function ct(s,c){if(s===c.value)return[c];for(const a of c.children){const l=ct(s,a);if(l.length)return l.unshift(c),l}return[]}class rn{constructor(c,a){this.value=c,this.children=a}toString(){return`TreeNode(${this.value})`}}function lt(s){const c={};return s&&s.children.forEach(a=>c[a.value.outlet]=a),c}class jt extends wi{constructor(c,a){super(c),this.snapshot=a,Xa(this,c)}toString(){return this.snapshot.toString()}}function ys(s){const c=function to(s){const v=new Mr([],{},{},"",{},me,s,null,{});return new Jc("",new rn(v,[]))}(s),a=new en.t([new rr("",{})]),l=new en.t({}),p=new en.t({}),v=new en.t({}),w=new en.t(""),T=new ur(a,l,v,w,p,me,s,c.root);return T.snapshot=c.root,new jt(new rn(T,[]),c)}class ur{constructor(c,a,l,p,v,w,T,M){this.urlSubject=c,this.paramsSubject=a,this.queryParamsSubject=l,this.fragmentSubject=p,this.dataSubject=v,this.outlet=w,this.component=T,this._futureSnapshot=M,this.title=this.dataSubject?.pipe((0,$e.T)(R=>R[Co]))??ee(void 0),this.url=c,this.params=a,this.queryParams=l,this.fragment=p,this.data=v}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe((0,$e.T)(c=>Qr(c))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe((0,$e.T)(c=>Qr(c))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function on(s,c,a="emptyOnly"){let l;const{routeConfig:p}=s;return l=null===c||"always"!==a&&""!==p?.path&&(c.component||c.routeConfig?.loadComponent)?{params:{...s.params},data:{...s.data},resolve:{...s.data,...s._resolvedData??{}}}:{params:{...c.params,...s.params},data:{...c.data,...s.data},resolve:{...s.data,...c.data,...p?.data,...s._resolvedData}},p&&ws(p)&&(l.resolve[Co]=p.title),l}class Mr{get title(){return this.data?.[Co]}constructor(c,a,l,p,v,w,T,M,R){this.url=c,this.params=a,this.queryParams=l,this.fragment=p,this.data=v,this.outlet=w,this.component=T,this.routeConfig=M,this._resolve=R}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=Qr(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Qr(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(l=>l.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Jc extends wi{constructor(c,a){super(a),this.url=c,Xa(this,a)}toString(){return Ds(this._root)}}function Xa(s,c){c.value._routerState=s,c.children.forEach(a=>Xa(s,a))}function Ds(s){const c=s.children.length>0?` { ${s.children.map(Ds).join(", ")} } `:"";return`${s.value}${c}`}function Cs(s){if(s.snapshot){const c=s.snapshot,a=s._futureSnapshot;s.snapshot=a,kn(c.queryParams,a.queryParams)||s.queryParamsSubject.next(a.queryParams),c.fragment!==a.fragment&&s.fragmentSubject.next(a.fragment),kn(c.params,a.params)||s.paramsSubject.next(a.params),function qc(s,c){if(s.length!==c.length)return!1;for(let a=0;akn(a.parameters,c[l].parameters))}(s.url,c.url);return a&&!(!s.parent!=!c.parent)&&(!s.parent||Ja(s.parent,c.parent))}function ws(s){return"string"==typeof s.title||null===s.title}let el=(()=>{class s{constructor(){this.activated=null,this._activatedRoute=null,this.name=me,this.activateEvents=new I.bkB,this.deactivateEvents=new I.bkB,this.attachEvents=new I.bkB,this.detachEvents=new I.bkB,this.parentContexts=(0,I.WQX)(nn),this.location=(0,I.WQX)(I.c1b),this.changeDetector=(0,I.WQX)(I.gRc),this.inputBinder=(0,I.WQX)(eu,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(a){if(a.name){const{firstChange:l,previousValue:p}=a.name;if(l)return;this.isTrackedInParentContexts(p)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(p)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(a){return this.parentContexts.getContext(a)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const a=this.parentContexts.getContext(this.name);a?.route&&(a.attachRef?this.attach(a.attachRef,a.route):this.activateWith(a.route,a.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new I.wOt(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new I.wOt(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new I.wOt(4012,!1);this.location.detach();const a=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(a.instance),a}attach(a,l){this.activated=a,this._activatedRoute=l,this.location.insert(a.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(a.instance)}deactivate(){if(this.activated){const a=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(a)}}activateWith(a,l){if(this.isActivated)throw new I.wOt(4013,!1);this._activatedRoute=a;const p=this.location,w=a.snapshot.component,T=this.parentContexts.getOrCreateContext(this.name).children,M=new tl(a,T,p.injector);this.activated=p.createComponent(w,{index:p.length,injector:M,environmentInjector:l}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275dir=I.FsC({type:s,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[I.OA$]})}}return s})();class tl{__ngOutletInjector(c){return new tl(this.route,this.childContexts,c)}constructor(c,a,l){this.route=c,this.childContexts=a,this.parent=l}get(c,a){return c===ur?this.route:c===nn?this.childContexts:this.parent.get(c,a)}}const eu=new I.nKC("");function Es(s,c,a){if(a&&s.shouldReuseRoute(c.value,a.value.snapshot)){const l=a.value;l._futureSnapshot=c.value;const p=function ug(s,c,a){return c.children.map(l=>{for(const p of a.children)if(s.shouldReuseRoute(l.value,p.value.snapshot))return Es(s,l,p);return Es(s,l)})}(s,c,a);return new rn(l,p)}{if(s.shouldAttach(c.value)){const v=s.retrieve(c.value);if(null!==v){const w=v.route;return w.value._futureSnapshot=c.value,w.children=c.children.map(T=>Es(s,T)),w}}const l=function cg(s){return new ur(new en.t(s.url),new en.t(s.params),new en.t(s.queryParams),new en.t(s.fragment),new en.t(s.data),s.outlet,s.component,s)}(c.value),p=c.children.map(v=>Es(s,v));return new rn(l,p)}}class nl{constructor(c,a){this.redirectTo=c,this.navigationBehaviorOptions=a}}const Kd="ngNavigationCancelingError";function tu(s,c){const{redirectTo:a,navigationBehaviorOptions:l}=_o(c)?{redirectTo:c,navigationBehaviorOptions:void 0}:c,p=Yd(!1,Qe.Redirect);return p.url=a,p.navigationBehaviorOptions=l,p}function Yd(s,c){const a=new Error(`NavigationCancelingError: ${s||""}`);return a[Kd]=!0,a.cancellationCode=c,a}function nu(s){return!!s&&s[Kd]}let Xd=(()=>{class s{static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275cmp=I.VBU({type:s,selectors:[["ng-component"]],standalone:!0,features:[I.aNF],decls:1,vars:0,template:function(l,p){1&l&&I.nrm(0,"router-outlet")},dependencies:[el],encapsulation:2})}}return s})();function Is(s){const c=s.children&&s.children.map(Is),a=c?{...s,children:c}:{...s};return!a.component&&!a.loadComponent&&(c||a.loadChildren)&&a.outlet&&a.outlet!==me&&(a.component=Xd),a}function In(s){return s.outlet||me}function no(s){if(!s)return null;if(s.routeConfig?._injector)return s.routeConfig._injector;for(let c=s.parent;c;c=c.parent){const a=c.routeConfig;if(a?._loadedInjector)return a._loadedInjector;if(a?._injector)return a._injector}return null}class ol{constructor(c,a,l,p,v){this.routeReuseStrategy=c,this.futureState=a,this.currState=l,this.forwardEvent=p,this.inputBindingEnabled=v}activate(c){const a=this.futureState._root,l=this.currState?this.currState._root:null;this.deactivateChildRoutes(a,l,c),Cs(this.futureState.root),this.activateChildRoutes(a,l,c)}deactivateChildRoutes(c,a,l){const p=lt(a);c.children.forEach(v=>{const w=v.value.outlet;this.deactivateRoutes(v,p[w],l),delete p[w]}),Object.values(p).forEach(v=>{this.deactivateRouteAndItsChildren(v,l)})}deactivateRoutes(c,a,l){const p=c.value,v=a?a.value:null;if(p===v)if(p.component){const w=l.getContext(p.outlet);w&&this.deactivateChildRoutes(c,a,w.children)}else this.deactivateChildRoutes(c,a,l);else v&&this.deactivateRouteAndItsChildren(a,l)}deactivateRouteAndItsChildren(c,a){c.value.component&&this.routeReuseStrategy.shouldDetach(c.value.snapshot)?this.detachAndStoreRouteSubtree(c,a):this.deactivateRouteAndOutlet(c,a)}detachAndStoreRouteSubtree(c,a){const l=a.getContext(c.value.outlet),p=l&&c.value.component?l.children:a,v=lt(c);for(const w of Object.values(v))this.deactivateRouteAndItsChildren(w,p);if(l&&l.outlet){const w=l.outlet.detach(),T=l.children.onOutletDeactivated();this.routeReuseStrategy.store(c.value.snapshot,{componentRef:w,route:c,contexts:T})}}deactivateRouteAndOutlet(c,a){const l=a.getContext(c.value.outlet),p=l&&c.value.component?l.children:a,v=lt(c);for(const w of Object.values(v))this.deactivateRouteAndItsChildren(w,p);l&&(l.outlet&&(l.outlet.deactivate(),l.children.onOutletDeactivated()),l.attachRef=null,l.route=null)}activateChildRoutes(c,a,l){const p=lt(a);c.children.forEach(v=>{this.activateRoutes(v,p[v.value.outlet],l),this.forwardEvent(new Sr(v.value.snapshot))}),c.children.length&&this.forwardEvent(new Ao(c.value.snapshot))}activateRoutes(c,a,l){const p=c.value,v=a?a.value:null;if(Cs(p),p===v)if(p.component){const w=l.getOrCreateContext(p.outlet);this.activateChildRoutes(c,a,w.children)}else this.activateChildRoutes(c,a,l);else if(p.component){const w=l.getOrCreateContext(p.outlet);if(this.routeReuseStrategy.shouldAttach(p.snapshot)){const T=this.routeReuseStrategy.retrieve(p.snapshot);this.routeReuseStrategy.store(p.snapshot,null),w.children.onOutletReAttached(T.contexts),w.attachRef=T.componentRef,w.route=T.route.value,w.outlet&&w.outlet.attach(T.componentRef,T.route.value),Cs(T.route.value),this.activateChildRoutes(c,null,w.children)}else{const T=no(p.snapshot);w.attachRef=null,w.route=p,w.injector=T??w.injector,w.outlet&&w.outlet.activateWith(p,w.injector),this.activateChildRoutes(c,null,w.children)}}else this.activateChildRoutes(c,null,l)}}class ou{constructor(c){this.path=c,this.route=this.path[this.path.length-1]}}class _e{constructor(c,a){this.component=c,this.route=a}}function iu(s,c,a){const l=s._root;return Ii(l,c?c._root:null,a,[l.value])}function It(s,c){const a=Symbol(),l=c.get(s,a);return l===a?"function"!=typeof s||(0,I.LfX)(s)?c.get(s):s:l}function Ii(s,c,a,l,p={canDeactivateChecks:[],canActivateChecks:[]}){const v=lt(c);return s.children.forEach(w=>{(function Si(s,c,a,l,p={canDeactivateChecks:[],canActivateChecks:[]}){const v=s.value,w=c?c.value:null,T=a?a.getContext(s.value.outlet):null;if(w&&v.routeConfig===w.routeConfig){const M=function Ro(s,c,a){if("function"==typeof a)return a(s,c);switch(a){case"pathParamsChange":return!Qn(s.url,c.url);case"pathParamsOrQueryParamsChange":return!Qn(s.url,c.url)||!kn(s.queryParams,c.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Ja(s,c)||!kn(s.queryParams,c.queryParams);default:return!Ja(s,c)}}(w,v,v.routeConfig.runGuardsAndResolvers);M?p.canActivateChecks.push(new ou(l)):(v.data=w.data,v._resolvedData=w._resolvedData),Ii(s,c,v.component?T?T.children:null:a,l,p),M&&T&&T.outlet&&T.outlet.isActivated&&p.canDeactivateChecks.push(new _e(T.outlet.component,w))}else w&&Vt(c,T,p),p.canActivateChecks.push(new ou(l)),Ii(s,null,v.component?T?T.children:null:a,l,p)})(w,v[w.value.outlet],a,l.concat([w.value]),p),delete v[w.value.outlet]}),Object.entries(v).forEach(([w,T])=>Vt(T,a.getContext(w),p)),p}function Vt(s,c,a){const l=lt(s),p=s.value;Object.entries(l).forEach(([v,w])=>{Vt(w,p.component?c?c.children.getContext(v):null:c,a)}),a.canDeactivateChecks.push(new _e(p.component&&c&&c.outlet&&c.outlet.isActivated?c.outlet.component:null,p))}function bi(s){return"function"==typeof s}function Oo(s){return s instanceof On||"EmptyError"===s?.name}const xo=Symbol("INITIAL_VALUE");function cr(){return yn(s=>kt(s.map(c=>c.pipe(Wn(1),function Do(...s){const c=Jt(s);return(0,vt.N)((a,l)=>{(c?yo(s,a,c):yo(s,a)).subscribe(l)})}(xo)))).pipe((0,$e.T)(c=>{for(const a of c)if(!0!==a){if(a===xo)return xo;if(!1===a||Ss(a))return a}return!0}),Wt(c=>c!==xo),Wn(1)))}function Ss(s){return _o(s)||s instanceof nl}function ul(s){return(0,Gt.F)(yt(c=>{if("boolean"!=typeof c)throw tu(0,c)}),(0,$e.T)(c=>!0===c))}class lr{constructor(c){this.segmentGroup=c||null}}class Ms extends Error{constructor(c){super(),this.urlTree=c}}function Po(s){return Gr(new lr(s))}class P{constructor(c,a){this.urlSerializer=c,this.urlTree=a}lineralizeSegments(c,a){let l=[],p=a.root;for(;;){if(l=l.concat(p.segments),0===p.numberOfChildren)return ee(l);if(p.numberOfChildren>1||!p.children[me])return Gr(new I.wOt(4e3,!1));p=p.children[me]}}applyRedirectCommands(c,a,l,p,v){if("string"!=typeof a){const T=a,{queryParams:M,fragment:R,routeConfig:L,url:G,outlet:Te,params:Ee,data:Ne,title:nt}=p,Ye=(0,I.N4e)(v,()=>T({params:Ee,data:Ne,queryParams:M,fragment:R,routeConfig:L,url:G,outlet:Te,title:nt}));if(Ye instanceof wr)throw new Ms(Ye);a=Ye}const w=this.applyRedirectCreateUrlTree(a,this.urlSerializer.parse(a),c,l);if("/"===a[0])throw new Ms(w);return w}applyRedirectCreateUrlTree(c,a,l,p){const v=this.createSegmentGroup(c,a.root,l,p);return new wr(v,this.createQueryParams(a.queryParams,this.urlTree.queryParams),a.fragment)}createQueryParams(c,a){const l={};return Object.entries(c).forEach(([p,v])=>{if("string"==typeof v&&":"===v[0]){const T=v.substring(1);l[p]=a[T]}else l[p]=v}),l}createSegmentGroup(c,a,l,p){const v=this.createSegments(c,a.segments,l,p);let w={};return Object.entries(a.children).forEach(([T,M])=>{w[T]=this.createSegmentGroup(c,M,l,p)}),new je(v,w)}createSegments(c,a,l,p){return a.map(v=>":"===v.path[0]?this.findPosParam(c,v,p):this.findOrReturn(v,l))}findPosParam(c,a,l){const p=l[a.path.substring(1)];if(!p)throw new I.wOt(4001,!1);return p}findOrReturn(c,a){let l=0;for(const p of a){if(p.path===c.path)return a.splice(l),p;l++}return c}}const ye={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function ll(s,c,a,l,p){const v=_s(s,c,a);return v.matched?(l=function lg(s,c){return s.providers&&!s._injector&&(s._injector=(0,I.Ol2)(s.providers,c,`Route: ${s.path}`)),s._injector??c}(c,l),function cl(s,c,a,l){const p=c.canMatch;return p&&0!==p.length?ee(p.map(w=>{const T=It(w,s);return nr(function sl(s){return s&&bi(s.canMatch)}(T)?T.canMatch(c,a):(0,I.N4e)(s,()=>T(c,a)))})).pipe(cr(),ul()):ee(!0)}(l,c,a).pipe((0,$e.T)(w=>!0===w?v:{...ye}))):ee(v)}function _s(s,c,a){if("**"===c.path)return function Ge(s){return{matched:!0,parameters:s.length>0?Wa(s).parameters:{},consumedSegments:s,remainingSegments:[],positionalParamSegments:{}}}(a);if(""===c.path)return"full"===c.pathMatch&&(s.hasChildren()||a.length>0)?{...ye}:{matched:!0,consumedSegments:[],remainingSegments:a,parameters:{},positionalParamSegments:{}};const p=(c.matcher||Ga)(a,s,c);if(!p)return{...ye};const v={};Object.entries(p.posParams??{}).forEach(([T,M])=>{v[T]=M.path});const w=p.consumed.length>0?{...v,...p.consumed[p.consumed.length-1].parameters}:v;return{matched:!0,consumedSegments:p.consumed,remainingSegments:a.slice(p.consumed.length),parameters:w,positionalParamSegments:p.posParams??{}}}function cu(s,c,a,l){return a.length>0&&function lu(s,c,a){return a.some(l=>Ts(s,c,l)&&In(l)!==me)}(s,a,l)?{segmentGroup:new je(c,Kn(l,new je(a,s.children))),slicedSegments:[]}:0===a.length&&function du(s,c,a){return a.some(l=>Ts(s,c,l))}(s,a,l)?{segmentGroup:new je(s.segments,Mi(s,a,l,s.children)),slicedSegments:a}:{segmentGroup:new je(s.segments,s.children),slicedSegments:a}}function Mi(s,c,a,l){const p={};for(const v of a)if(Ts(s,c,v)&&!l[In(v)]){const w=new je([],{});p[In(v)]=w}return{...l,...p}}function Kn(s,c){const a={};a[me]=c;for(const l of s)if(""===l.path&&In(l)!==me){const p=new je([],{});a[In(l)]=p}return a}function Ts(s,c,a){return(!(s.hasChildren()||c.length>0)||"full"!==a.pathMatch)&&""===a.path}class dl{}class Kt{constructor(c,a,l,p,v,w,T){this.injector=c,this.configLoader=a,this.rootComponentType=l,this.config=p,this.urlTree=v,this.paramsInheritanceStrategy=w,this.urlSerializer=T,this.applyRedirects=new P(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(c){return new I.wOt(4002,`'${c.segmentGroup}'`)}recognize(){const c=cu(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(c).pipe((0,$e.T)(({children:a,rootSnapshot:l})=>{const p=new rn(l,a),v=new Jc("",p),w=function vs(s,c,a=null,l=null){return C(h(s),c,a,l)}(l,[],this.urlTree.queryParams,this.urlTree.fragment);return w.queryParams=this.urlTree.queryParams,v.url=this.urlSerializer.serialize(w),{state:v,tree:w}}))}match(c){const a=new Mr([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,Object.freeze({}),me,this.rootComponentType,null,{});return this.processSegmentGroup(this.injector,this.config,c,me,a).pipe((0,$e.T)(l=>({children:l,rootSnapshot:a})),Cr(l=>{if(l instanceof Ms)return this.urlTree=l.urlTree,this.match(l.urlTree.root);throw l instanceof lr?this.noMatchError(l):l}))}processSegmentGroup(c,a,l,p,v){return 0===l.segments.length&&l.hasChildren()?this.processChildren(c,a,l,v):this.processSegment(c,a,l,l.segments,p,!0,v).pipe((0,$e.T)(w=>w instanceof rn?[w]:[]))}processChildren(c,a,l,p){const v=[];for(const w of Object.keys(l.children))"primary"===w?v.unshift(w):v.push(w);return Pt(v).pipe(Wr(w=>{const T=l.children[w],M=function rf(s,c){const a=s.filter(l=>In(l)===c);return a.push(...s.filter(l=>In(l)!==c)),a}(a,w);return this.processSegmentGroup(c,M,T,w,p)}),function $a(s,c){return(0,vt.N)(function Ha(s,c,a,l,p){return(v,w)=>{let T=a,M=c,R=0;v.subscribe((0,Ct._)(w,L=>{const G=R++;M=T?s(M,L,G):(T=!0,L),l&&w.next(M)},p&&(()=>{T&&w.next(M),w.complete()})))}}(s,c,arguments.length>=2,!0))}((w,T)=>(w.push(...T),w)),Pn(null),function Ba(s,c){const a=arguments.length>=2;return l=>l.pipe(s?Wt((p,v)=>s(p,v,l)):zn.D,qr(1),a?Pn(c):Ua(()=>new On))}(),St(w=>{if(null===w)return Po(l);const T=bn(w);return function dr(s){s.sort((c,a)=>c.value.outlet===me?-1:a.value.outlet===me?1:c.value.outlet.localeCompare(a.value.outlet))}(T),ee(T)}))}processSegment(c,a,l,p,v,w,T){return Pt(a).pipe(Wr(M=>this.processSegmentAgainstRoute(M._injector??c,a,M,l,p,v,w,T).pipe(Cr(R=>{if(R instanceof lr)return ee(null);throw R}))),qn(M=>!!M),Cr(M=>{if(Oo(M))return function mg(s,c,a){return 0===c.length&&!s.children[a]}(l,p,v)?ee(new dl):Po(l);throw M}))}processSegmentAgainstRoute(c,a,l,p,v,w,T,M){return function gg(s,c,a,l){return!!(In(s)===l||l!==me&&Ts(c,a,s))&&_s(c,s,a).matched}(l,p,v,w)?void 0===l.redirectTo?this.matchSegmentAgainstRoute(c,p,l,v,w,M):this.allowRedirects&&T?this.expandSegmentAgainstRouteUsingRedirect(c,p,a,l,v,w,M):Po(p):Po(p)}expandSegmentAgainstRouteUsingRedirect(c,a,l,p,v,w,T){const{matched:M,parameters:R,consumedSegments:L,positionalParamSegments:G,remainingSegments:Te}=_s(a,p,v);if(!M)return Po(a);"string"==typeof p.redirectTo&&"/"===p.redirectTo[0]&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>31&&(this.allowRedirects=!1));const Ee=new Mr(v,R,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,gl(p),In(p),p.component??p._loadedComponent??null,p,fu(p)),Ne=on(Ee,T,this.paramsInheritanceStrategy);Ee.params=Object.freeze(Ne.params),Ee.data=Object.freeze(Ne.data);const nt=this.applyRedirects.applyRedirectCommands(L,p.redirectTo,G,Ee,c);return this.applyRedirects.lineralizeSegments(p,nt).pipe(St(Ye=>this.processSegment(c,l,a,Ye.concat(Te),w,!1,T)))}matchSegmentAgainstRoute(c,a,l,p,v,w){const T=ll(a,l,p,c);return"**"===l.path&&(a.children={}),T.pipe(yn(M=>M.matched?this.getChildConfig(c=l._injector??c,l,p).pipe(yn(({routes:R})=>{const L=l._loadedInjector??c,{parameters:G,consumedSegments:Te,remainingSegments:Ee}=M,Ne=new Mr(Te,G,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,gl(l),In(l),l.component??l._loadedComponent??null,l,fu(l)),nt=on(Ne,w,this.paramsInheritanceStrategy);Ne.params=Object.freeze(nt.params),Ne.data=Object.freeze(nt.data);const{segmentGroup:Ye,slicedSegments:xe}=cu(a,Te,Ee,R);if(0===xe.length&&Ye.hasChildren())return this.processChildren(L,R,Ye,Ne).pipe((0,$e.T)(fr=>new rn(Ne,fr)));if(0===R.length&&0===xe.length)return ee(new rn(Ne,[]));const Nl=In(l)===v;return this.processSegment(L,R,Ye,xe,Nl?me:v,!0,Ne).pipe((0,$e.T)(fr=>new rn(Ne,fr instanceof rn?[fr]:[])))})):Po(a)))}getChildConfig(c,a,l){return a.children?ee({routes:a.children,injector:c}):a.loadChildren?void 0!==a._loadedRoutes?ee({routes:a._loadedRoutes,injector:a._loadedInjector}):function cf(s,c,a,l){const p=c.canLoad;return void 0===p||0===p.length?ee(!0):ee(p.map(w=>{const T=It(w,s);return nr(function sf(s){return s&&bi(s.canLoad)}(T)?T.canLoad(c,a):(0,I.N4e)(s,()=>T(c,a)))})).pipe(cr(),ul())}(c,a,l).pipe(St(p=>p?this.configLoader.loadChildren(c,a).pipe(yt(v=>{a._loadedRoutes=v.routes,a._loadedInjector=v.injector})):function df(){return Gr(Yd(!1,Qe.GuardRejected))}())):ee({routes:[],injector:c})}}function pl(s){const c=s.value.routeConfig;return c&&""===c.path}function bn(s){const c=[],a=new Set;for(const l of s){if(!pl(l)){c.push(l);continue}const p=c.find(v=>l.value.routeConfig===v.value.routeConfig);void 0!==p?(p.children.push(...l.children),a.add(p)):c.push(l)}for(const l of a){const p=bn(l.children);c.push(new rn(l.value,p))}return c.filter(l=>!a.has(l))}function gl(s){return s.data||{}}function fu(s){return s.resolve||{}}function Ns(s){const c=s.children.map(a=>Ns(a)).flat();return[s,...c]}function gu(s){return yn(c=>{const a=s(c);return a?Pt(a).pipe((0,$e.T)(()=>c)):ee(c)})}let mu=(()=>{class s{buildTitle(a){let l,p=a.root;for(;void 0!==p;)l=this.getResolvedTitleForRoute(p)??l,p=p.children.find(v=>v.outlet===me);return l}getResolvedTitleForRoute(a){return a.data[Co]}static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275prov=I.jDH({token:s,factory:()=>(0,I.WQX)(vu),providedIn:"root"})}}return s})(),vu=(()=>{class s extends mu{constructor(a){super(),this.title=a}updateTitle(a){const l=this.buildTitle(a);void 0!==l&&this.title.setTitle(l)}static{this.\u0275fac=function(l){return new(l||s)(I.KVO(z))}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac,providedIn:"root"})}}return s})();const ko=new I.nKC("",{providedIn:"root",factory:()=>({})}),_i=new I.nKC("");let yu=(()=>{class s{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=(0,I.WQX)(I.Ql9)}loadComponent(a){if(this.componentLoaders.get(a))return this.componentLoaders.get(a);if(a._loadedComponent)return ee(a._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(a);const l=nr(a.loadComponent()).pipe((0,$e.T)(vl),yt(v=>{this.onLoadEndListener&&this.onLoadEndListener(a),a._loadedComponent=v}),qt(()=>{this.componentLoaders.delete(a)})),p=new dn(l,()=>new Gn.B).pipe(we());return this.componentLoaders.set(a,p),p}loadChildren(a,l){if(this.childrenLoaders.get(l))return this.childrenLoaders.get(l);if(l._loadedRoutes)return ee({routes:l._loadedRoutes,injector:l._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(l);const v=function ml(s,c,a,l){return nr(s.loadChildren()).pipe((0,$e.T)(vl),St(p=>p instanceof I.Co$||Array.isArray(p)?ee(p):Pt(c.compileModuleAsync(p))),(0,$e.T)(p=>{l&&l(s);let v,w,T=!1;return Array.isArray(p)?(w=p,!0):(v=p.create(a).injector,w=v.get(_i,[],{optional:!0,self:!0}).flat()),{routes:w.map(Is),injector:v}}))}(l,this.compiler,a,this.onLoadEndListener).pipe(qt(()=>{this.childrenLoaders.delete(l)})),w=new dn(v,()=>new Gn.B).pipe(we());return this.childrenLoaders.set(l,w),w}static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac,providedIn:"root"})}}return s})();function vl(s){return function Du(s){return s&&"object"==typeof s&&"default"in s}(s)?s.default:s}let Rt=(()=>{class s{static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275prov=I.jDH({token:s,factory:()=>(0,I.WQX)(oo),providedIn:"root"})}}return s})(),oo=(()=>{class s{shouldProcessUrl(a){return!0}extract(a){return a}merge(a,l){return a}static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac,providedIn:"root"})}}return s})();const Ze=new I.nKC(""),Dl=new I.nKC("");let Ti=(()=>{class s{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new Gn.B,this.transitionAbortSubject=new Gn.B,this.configLoader=(0,I.WQX)(yu),this.environmentInjector=(0,I.WQX)(I.uvJ),this.urlSerializer=(0,I.WQX)(Kr),this.rootContexts=(0,I.WQX)(nn),this.location=(0,I.WQX)(_.aZ),this.inputBindingEnabled=null!==(0,I.WQX)(eu,{optional:!0}),this.titleStrategy=(0,I.WQX)(mu),this.options=(0,I.WQX)(ko,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=(0,I.WQX)(Rt),this.createViewTransition=(0,I.WQX)(Ze,{optional:!0}),this.navigationErrorHandler=(0,I.WQX)(Dl,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>ee(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=p=>this.events.next(new No(p)),this.configLoader.onLoadStartListener=p=>this.events.next(new eo(p))}complete(){this.transitions?.complete()}handleNavigationRequest(a){const l=++this.navigationId;this.transitions?.next({...this.transitions.value,...a,id:l})}setupNavigations(a,l,p){return this.transitions=new en.t({id:0,currentUrlTree:l,currentRawUrl:l,extractedUrl:this.urlHandlingStrategy.extract(l),urlAfterRedirects:this.urlHandlingStrategy.extract(l),rawUrl:l,extras:{},resolve:()=>{},reject:()=>{},promise:Promise.resolve(!0),source:j,restoredState:null,currentSnapshot:p.snapshot,targetSnapshot:null,currentRouterState:p,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(Wt(v=>0!==v.id),(0,$e.T)(v=>({...v,extractedUrl:this.urlHandlingStrategy.extract(v.rawUrl)})),yn(v=>{let w=!1,T=!1;return ee(v).pipe(yn(M=>{if(this.navigationId>v.id)return this.cancelNavigationTransition(v,"",Qe.SupersededByNewNavigation),Ft;this.currentTransition=v,this.currentNavigation={id:M.id,initialUrl:M.rawUrl,extractedUrl:M.extractedUrl,trigger:M.source,extras:M.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null};const R=!a.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl();if(!R&&"reload"!==(M.extras.onSameUrlNavigation??a.onSameUrlNavigation)){const G="";return this.events.next(new rt(M.id,this.urlSerializer.serialize(M.rawUrl),G,ir.IgnoredSameUrlNavigation)),M.resolve(!1),Ft}if(this.urlHandlingStrategy.shouldProcessUrl(M.rawUrl))return ee(M).pipe(yn(G=>{const Te=this.transitions?.getValue();return this.events.next(new Lt(G.id,this.urlSerializer.serialize(G.extractedUrl),G.source,G.restoredState)),Te!==this.transitions?.getValue()?Ft:Promise.resolve(G)}),function ff(s,c,a,l,p,v){return St(w=>function fl(s,c,a,l,p,v,w="emptyOnly"){return new Kt(s,c,a,l,p,w,v).recognize()}(s,c,a,l,w.extractedUrl,p,v).pipe((0,$e.T)(({state:T,tree:M})=>({...w,targetSnapshot:T,urlAfterRedirects:M}))))}(this.environmentInjector,this.configLoader,this.rootComponentType,a.config,this.urlSerializer,this.paramsInheritanceStrategy),yt(G=>{v.targetSnapshot=G.targetSnapshot,v.urlAfterRedirects=G.urlAfterRedirects,this.currentNavigation={...this.currentNavigation,finalUrl:G.urlAfterRedirects};const Te=new se(G.id,this.urlSerializer.serialize(G.extractedUrl),this.urlSerializer.serialize(G.urlAfterRedirects),G.targetSnapshot);this.events.next(Te)}));if(R&&this.urlHandlingStrategy.shouldProcessUrl(M.currentRawUrl)){const{id:G,extractedUrl:Te,source:Ee,restoredState:Ne,extras:nt}=M,Ye=new Lt(G,this.urlSerializer.serialize(Te),Ee,Ne);this.events.next(Ye);const xe=ys(this.rootComponentType).snapshot;return this.currentTransition=v={...M,targetSnapshot:xe,urlAfterRedirects:Te,extras:{...nt,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.finalUrl=Te,ee(v)}{const G="";return this.events.next(new rt(M.id,this.urlSerializer.serialize(M.extractedUrl),G,ir.IgnoredByUrlHandlingStrategy)),M.resolve(!1),Ft}}),yt(M=>{const R=new Di(M.id,this.urlSerializer.serialize(M.extractedUrl),this.urlSerializer.serialize(M.urlAfterRedirects),M.targetSnapshot);this.events.next(R)}),(0,$e.T)(M=>(this.currentTransition=v={...M,guards:iu(M.targetSnapshot,M.currentSnapshot,this.rootContexts)},v)),function au(s,c){return St(a=>{const{targetSnapshot:l,currentSnapshot:p,guards:{canActivateChecks:v,canDeactivateChecks:w}}=a;return 0===w.length&&0===v.length?ee({...a,guardsResult:!0}):function ro(s,c,a,l){return Pt(s).pipe(St(p=>function uf(s,c,a,l,p){const v=c&&c.routeConfig?c.routeConfig.canDeactivate:null;return v&&0!==v.length?ee(v.map(T=>{const M=no(c)??p,R=It(T,M);return nr(function af(s){return s&&bi(s.canDeactivate)}(R)?R.canDeactivate(s,c,a,l):(0,I.N4e)(M,()=>R(s,c,a,l))).pipe(qn())})).pipe(cr()):ee(!0)}(p.component,p.route,a,c,l)),qn(p=>!0!==p,!0))}(w,l,p,s).pipe(St(T=>T&&function su(s){return"boolean"==typeof s}(T)?function ue(s,c,a,l){return Pt(c).pipe(Wr(p=>yo(function uu(s,c){return null!==s&&c&&c(new sr(s)),ee(!0)}(p.route.parent,l),function bs(s,c){return null!==s&&c&&c(new Yc(s)),ee(!0)}(p.route,l),function hg(s,c,a){const l=c[c.length-1],v=c.slice(0,c.length-1).reverse().map(w=>function Ei(s){const c=s.routeConfig?s.routeConfig.canActivateChild:null;return c&&0!==c.length?{node:s,guards:c}:null}(w)).filter(w=>null!==w).map(w=>zr(()=>ee(w.guards.map(M=>{const R=no(w.node)??a,L=It(M,R);return nr(function il(s){return s&&bi(s.canActivateChild)}(L)?L.canActivateChild(l,s):(0,I.N4e)(R,()=>L(l,s))).pipe(qn())})).pipe(cr())));return ee(v).pipe(cr())}(s,p.path,a),function al(s,c,a){const l=c.routeConfig?c.routeConfig.canActivate:null;if(!l||0===l.length)return ee(!0);const p=l.map(v=>zr(()=>{const w=no(c)??a,T=It(v,w);return nr(function Sn(s){return s&&bi(s.canActivate)}(T)?T.canActivate(c,s):(0,I.N4e)(w,()=>T(c,s))).pipe(qn())}));return ee(p).pipe(cr())}(s,p.route,a))),qn(p=>!0!==p,!0))}(l,v,s,c):ee(T)),(0,$e.T)(T=>({...a,guardsResult:T})))})}(this.environmentInjector,M=>this.events.next(M)),yt(M=>{if(v.guardsResult=M.guardsResult,M.guardsResult&&"boolean"!=typeof M.guardsResult)throw tu(0,M.guardsResult);const R=new Kc(M.id,this.urlSerializer.serialize(M.extractedUrl),this.urlSerializer.serialize(M.urlAfterRedirects),M.targetSnapshot,!!M.guardsResult);this.events.next(R)}),Wt(M=>!!M.guardsResult||(this.cancelNavigationTransition(M,"",Qe.GuardRejected),!1)),gu(M=>{if(M.guards.canActivateChecks.length)return ee(M).pipe(yt(R=>{const L=new To(R.id,this.urlSerializer.serialize(R.extractedUrl),this.urlSerializer.serialize(R.urlAfterRedirects),R.targetSnapshot);this.events.next(L)}),yn(R=>{let L=!1;return ee(R).pipe(function hf(s,c){return St(a=>{const{targetSnapshot:l,guards:{canActivateChecks:p}}=a;if(!p.length)return ee(a);const v=new Set(p.map(M=>M.route)),w=new Set;for(const M of v)if(!w.has(M))for(const R of Ns(M))w.add(R);let T=0;return Pt(w).pipe(Wr(M=>v.has(M)?function hu(s,c,a,l){const p=s.routeConfig,v=s._resolve;return void 0!==p?.title&&!ws(p)&&(v[Co]=p.title),function pu(s,c,a,l){const p=di(s);if(0===p.length)return ee({});const v={};return Pt(p).pipe(St(w=>function As(s,c,a,l){const p=no(c)??l,v=It(s,p);return nr(v.resolve?v.resolve(c,a):(0,I.N4e)(p,()=>v(c,a)))}(s[w],c,a,l).pipe(qn(),yt(T=>{if(T instanceof nl)throw tu(new Yr,T);v[w]=T}))),qr(1),function Gc(s){return(0,$e.T)(()=>s)}(v),Cr(w=>Oo(w)?Ft:Gr(w)))}(v,s,c,l).pipe((0,$e.T)(w=>(s._resolvedData=w,s.data=on(s,s.parent,a).resolve,null)))}(M,l,s,c):(M.data=on(M,M.parent,s).resolve,ee(void 0))),yt(()=>T++),qr(1),St(M=>T===w.size?ee(a):Ft))})}(this.paramsInheritanceStrategy,this.environmentInjector),yt({next:()=>L=!0,complete:()=>{L||this.cancelNavigationTransition(R,"",Qe.NoDataFromResolver)}}))}),yt(R=>{const L=new ot(R.id,this.urlSerializer.serialize(R.extractedUrl),this.urlSerializer.serialize(R.urlAfterRedirects),R.targetSnapshot);this.events.next(L)}))}),gu(M=>{const R=L=>{const G=[];L.routeConfig?.loadComponent&&!L.routeConfig._loadedComponent&&G.push(this.configLoader.loadComponent(L.routeConfig).pipe(yt(Te=>{L.component=Te}),(0,$e.T)(()=>{})));for(const Te of L.children)G.push(...R(Te));return G};return kt(R(M.targetSnapshot.root)).pipe(Pn(null),Wn(1))}),gu(()=>this.afterPreactivation()),yn(()=>{const{currentSnapshot:M,targetSnapshot:R}=v,L=this.createViewTransition?.(this.environmentInjector,M.root,R.root);return L?Pt(L).pipe((0,$e.T)(()=>v)):ee(v)}),(0,$e.T)(M=>{const R=function ag(s,c,a){const l=Es(s,c._root,a?a._root:void 0);return new jt(l,c)}(a.routeReuseStrategy,M.targetSnapshot,M.currentRouterState);return this.currentTransition=v={...M,targetRouterState:R},this.currentNavigation.targetRouterState=R,v}),yt(()=>{this.events.next(new ar)}),((s,c,a,l)=>(0,$e.T)(p=>(new ol(c,p.targetRouterState,p.currentRouterState,a,l).activate(s),p)))(this.rootContexts,a.routeReuseStrategy,M=>this.events.next(M),this.inputBindingEnabled),Wn(1),yt({next:M=>{w=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new ut(M.id,this.urlSerializer.serialize(M.extractedUrl),this.urlSerializer.serialize(M.urlAfterRedirects))),this.titleStrategy?.updateTitle(M.targetRouterState.snapshot),M.resolve(!0)},complete:()=>{w=!0}}),function Be(s){return(0,vt.N)((c,a)=>{re(s).subscribe((0,Ct._)(a,()=>a.complete(),za.l)),!a.closed&&c.subscribe(a)})}(this.transitionAbortSubject.pipe(yt(M=>{throw M}))),qt(()=>{!w&&!T&&this.cancelNavigationTransition(v,"",Qe.SupersededByNewNavigation),this.currentTransition?.id===v.id&&(this.currentNavigation=null,this.currentTransition=null)}),Cr(M=>{if(T=!0,nu(M))this.events.next(new Oe(v.id,this.urlSerializer.serialize(v.extractedUrl),M.message,M.cancellationCode)),function rl(s){return nu(s)&&_o(s.url)}(M)?this.events.next(new te(M.url,M.navigationBehaviorOptions)):v.resolve(!1);else{const R=new En(v.id,this.urlSerializer.serialize(v.extractedUrl),M,v.targetSnapshot??void 0);try{const L=(0,I.N4e)(this.environmentInjector,()=>this.navigationErrorHandler?.(R));if(L instanceof nl){const{message:G,cancellationCode:Te}=tu(0,L);this.events.next(new Oe(v.id,this.urlSerializer.serialize(v.extractedUrl),G,Te)),this.events.next(new te(L.redirectTo,L.navigationBehaviorOptions))}else{this.events.next(R);const G=a.errorHandler(M);v.resolve(!!G)}}catch(L){this.options.resolveNavigationPromiseOnError?v.resolve(!1):v.reject(L)}}return Ft}))}))}cancelNavigationTransition(a,l,p){const v=new Oe(a.id,this.urlSerializer.serialize(a.extractedUrl),l,p);this.events.next(v),a.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac,providedIn:"root"})}}return s})();function Cl(s){return s!==j}let Ni=(()=>{class s{static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275prov=I.jDH({token:s,factory:()=>(0,I.WQX)(gf),providedIn:"root"})}}return s})();class Yn{shouldDetach(c){return!1}store(c,a){}shouldAttach(c){return!1}retrieve(c){return null}shouldReuseRoute(c,a){return c.routeConfig===a.routeConfig}}let gf=(()=>{class s extends Yn{static{this.\u0275fac=(()=>{let a;return function(p){return(a||(a=I.xGo(s)))(p||s)}})()}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac,providedIn:"root"})}}return s})(),Ai=(()=>{class s{static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275prov=I.jDH({token:s,factory:()=>(0,I.WQX)(Rs),providedIn:"root"})}}return s})(),Rs=(()=>{class s extends Ai{constructor(){super(...arguments),this.location=(0,I.WQX)(_.aZ),this.urlSerializer=(0,I.WQX)(Kr),this.options=(0,I.WQX)(ko,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=(0,I.WQX)(Rt),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new wr,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=ys(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(a){return this.location.subscribe(l=>{"popstate"===l.type&&a(l.url,l.state)})}handleRouterEvent(a,l){if(a instanceof Lt)this.stateMemento=this.createStateMemento();else if(a instanceof rt)this.rawUrlTree=l.initialUrl;else if(a instanceof se){if("eager"===this.urlUpdateStrategy&&!l.extras.skipLocationChange){const p=this.urlHandlingStrategy.merge(l.finalUrl,l.initialUrl);this.setBrowserUrl(p,l)}}else a instanceof ar?(this.currentUrlTree=l.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(l.finalUrl,l.initialUrl),this.routerState=l.targetRouterState,"deferred"===this.urlUpdateStrategy&&(l.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,l))):a instanceof Oe&&(a.code===Qe.GuardRejected||a.code===Qe.NoDataFromResolver)?this.restoreHistory(l):a instanceof En?this.restoreHistory(l,!0):a instanceof ut&&(this.lastSuccessfulId=a.id,this.currentPageId=this.browserPageId)}setBrowserUrl(a,l){const p=this.urlSerializer.serialize(a);if(this.location.isCurrentPathEqualTo(p)||l.extras.replaceUrl){const w={...l.extras.state,...this.generateNgRouterState(l.id,this.browserPageId)};this.location.replaceState(p,"",w)}else{const v={...l.extras.state,...this.generateNgRouterState(l.id,this.browserPageId+1)};this.location.go(p,"",v)}}restoreHistory(a,l=!1){if("computed"===this.canceledNavigationResolution){const v=this.currentPageId-this.browserPageId;0!==v?this.location.historyGo(v):this.currentUrlTree===a.finalUrl&&0===v&&(this.resetState(a),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(l&&this.resetState(a),this.resetUrlToCurrentUrlTree())}resetState(a){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,a.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(a,l){return"computed"===this.canceledNavigationResolution?{navigationId:a,\u0275routerPageId:l}:{navigationId:a}}static{this.\u0275fac=(()=>{let a;return function(p){return(a||(a=I.xGo(s)))(p||s)}})()}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac,providedIn:"root"})}}return s})();var Tr=function(s){return s[s.COMPLETE=0]="COMPLETE",s[s.FAILED=1]="FAILED",s[s.REDIRECTING=2]="REDIRECTING",s}(Tr||{});function wl(s){throw s}const El={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},mf={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let hn=(()=>{class s{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.console=(0,I.WQX)(I.H3F),this.stateManager=(0,I.WQX)(Ai),this.options=(0,I.WQX)(ko,{optional:!0})||{},this.pendingTasks=(0,I.WQX)(I.TgB),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=(0,I.WQX)(Ti),this.urlSerializer=(0,I.WQX)(Kr),this.location=(0,I.WQX)(_.aZ),this.urlHandlingStrategy=(0,I.WQX)(Rt),this._events=new Gn.B,this.errorHandler=this.options.errorHandler||wl,this.navigated=!1,this.routeReuseStrategy=(0,I.WQX)(Ni),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=(0,I.WQX)(_i,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!(0,I.WQX)(eu,{optional:!0}),this.eventsSubscription=new ln.yU,this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:a=>{this.console.warn(a)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){const a=this.navigationTransitions.events.subscribe(l=>{try{const p=this.navigationTransitions.currentTransition,v=this.navigationTransitions.currentNavigation;if(null!==p&&null!==v)if(this.stateManager.handleRouterEvent(l,v),l instanceof Oe&&l.code!==Qe.Redirect&&l.code!==Qe.SupersededByNewNavigation)this.navigated=!0;else if(l instanceof ut)this.navigated=!0;else if(l instanceof te){const w=l.navigationBehaviorOptions,T=this.urlHandlingStrategy.merge(l.url,p.currentRawUrl),M={info:p.extras.info,skipLocationChange:p.extras.skipLocationChange,replaceUrl:p.extras.replaceUrl||"eager"===this.urlUpdateStrategy||Cl(p.source),...w};this.scheduleNavigation(T,j,null,M,{resolve:p.resolve,reject:p.reject,promise:p.promise})}(function vf(s){return!(s instanceof ar||s instanceof te)})(l)&&this._events.next(l)}catch(p){this.navigationTransitions.transitionAbortSubject.next(p)}});this.eventsSubscription.add(a)}resetRootComponentType(a){this.routerState.root.component=a,this.navigationTransitions.rootComponentType=a}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),j,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((a,l)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(a,"popstate",l)},0)})}navigateToSyncWithBrowser(a,l,p){const v={replaceUrl:!0},w=p?.navigationId?p:null;if(p){const M={...p};delete M.navigationId,delete M.\u0275routerPageId,0!==Object.keys(M).length&&(v.state=M)}const T=this.parseUrl(a);this.scheduleNavigation(T,l,w,v)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(a){this.config=a.map(Is),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(a,l={}){const{relativeTo:p,queryParams:v,fragment:w,queryParamsHandling:T,preserveFragment:M}=l,R=M?this.currentUrlTree.fragment:w;let G,L=null;switch(T){case"merge":L={...this.currentUrlTree.queryParams,...v};break;case"preserve":L=this.currentUrlTree.queryParams;break;default:L=v||null}null!==L&&(L=this.removeEmptyProps(L));try{G=h(p?p.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof a[0]||"/"!==a[0][0])&&(a=[]),G=this.currentUrlTree.root}return C(G,a,L,R??null)}navigateByUrl(a,l={skipLocationChange:!1}){const p=_o(a)?a:this.parseUrl(a),v=this.urlHandlingStrategy.merge(p,this.rawUrlTree);return this.scheduleNavigation(v,j,null,l)}navigate(a,l={skipLocationChange:!1}){return function Ri(s){for(let c=0;c(null!=v&&(l[p]=v),l),{})}scheduleNavigation(a,l,p,v,w){if(this.disposed)return Promise.resolve(!1);let T,M,R;w?(T=w.resolve,M=w.reject,R=w.promise):R=new Promise((G,Te)=>{T=G,M=Te});const L=this.pendingTasks.add();return function Os(s,c){s.events.pipe(Wt(a=>a instanceof ut||a instanceof Oe||a instanceof En||a instanceof rt),(0,$e.T)(a=>a instanceof ut||a instanceof rt?Tr.COMPLETE:a instanceof Oe&&(a.code===Qe.Redirect||a.code===Qe.SupersededByNewNavigation)?Tr.REDIRECTING:Tr.FAILED),Wt(a=>a!==Tr.REDIRECTING),Wn(1)).subscribe(()=>{c()})}(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(L))}),this.navigationTransitions.handleNavigationRequest({source:l,restoredState:p,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:a,extras:v,resolve:T,reject:M,promise:R,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),R.catch(G=>Promise.reject(G))}static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275prov=I.jDH({token:s,factory:s.\u0275fac,providedIn:"root"})}}return s})();const io=new I.nKC("");function xs(s){return s.routerState.root}function Fn(){const s=(0,I.WQX)(I.zZn);return c=>{const a=s.get(I.o8S);if(c!==a.components[0])return;const l=s.get(hn),p=s.get(Sl);1===s.get(Fo)&&l.initialNavigation(),s.get(Ps,null,I.$GK.Optional)?.setUpPreloading(),s.get(io,null,I.$GK.Optional)?.init(),l.resetRootComponentType(a.componentTypes[0]),p.closed||(p.next(),p.complete(),p.unsubscribe())}}const Sl=new I.nKC("",{factory:()=>new Gn.B}),Fo=new I.nKC("",{providedIn:"root",factory:()=>1}),Ps=new I.nKC(""),ks=[{path:"",redirectTo:"dashboard",pathMatch:"full"},{path:"dashboard",loadComponent:()=>H.e(626).then(H.bind(H,626)).then(s=>s.DashboardComponent)}],Tl={providers:[(0,I.Jn2)({eventCoalescing:!0}),function xi(s,...c){return(0,I.EmA)([{provide:_i,multi:!0,useValue:s},[],{provide:ur,useFactory:xs,deps:[hn]},{provide:I.iLQ,multi:!0,useFactory:Fn},c.map(a=>a.\u0275providers)])}(ks)]};(function Qo(s,c){return(0,I.TL3)({rootComponent:s,...Pr(c)})})((()=>{class s{static{this.\u0275fac=function(l){return new(l||s)}}static{this.\u0275cmp=I.VBU({type:s,selectors:[["app-root"]],standalone:!0,features:[I.aNF],decls:10,vars:0,consts:[[1,"min-h-screen","flex","flex-col","justify-between","p-6","bg-[#0a0a0c]"],[1,"flex","justify-between","items-center","border-b","border-white/10","pb-4","mb-6"],[1,"text-2xl","font-extrabold","tracking-wider","text-transparent","bg-clip-text","bg-gradient-to-r","from-cyan-400","to-blue-500"],[1,"text-xs","text-white/50"],[1,"flex-grow"],[1,"border-t","border-white/5","pt-4","mt-6","text-center","text-xs","text-white/30"]],template:function(l,p){1&l&&(I.j41(0,"main",0)(1,"header",1)(2,"h1",2),I.EFF(3," KINETIX INTRANET "),I.k0s(),I.j41(4,"div",3),I.EFF(5,"MODULAR AGENT ARCHITECTURE"),I.k0s()(),I.j41(6,"section",4),I.nrm(7,"router-outlet"),I.k0s(),I.j41(8,"footer",5),I.EFF(9," \xa9 2026 Kinetix Corp. All rights reserved. "),I.k0s()())},dependencies:[el],encapsulation:2})}}return s})(),Tl).catch(s=>console.error(s))},398:(ft,ge,H)=>{H.d(ge,{t:()=>I});var _=H(334);class I extends _.B{constructor(X){super(),this._value=X}get value(){return this.getValue()}_subscribe(X){const W=super._subscribe(X);return!W.closed&&X.next(this._value),W}getValue(){const{hasError:X,thrownError:W,_value:q}=this;if(X)throw W;return this._throwIfClosed(),q}next(X){super.next(this._value=X)}}},799:(ft,ge,H)=>{H.d(ge,{c:()=>Je});var _=H(713),I=H(539),de=H(848),X=H(297),W=H(348),q=H(429),We=H(540);let Je=(()=>{class Y{constructor(ce){ce&&(this._subscribe=ce)}lift(ce){const Le=new Y;return Le.source=this,Le.operator=ce,Le}subscribe(ce,Le,Qt){const ht=function V(Y){return Y&&Y instanceof _.vU||function Z(Y){return Y&&(0,q.T)(Y.next)&&(0,q.T)(Y.error)&&(0,q.T)(Y.complete)}(Y)&&(0,I.Uv)(Y)}(ce)?ce:new _.Ms(ce,Le,Qt);return(0,We.Y)(()=>{const{operator:Nt,source:Yt}=this;ht.add(Nt?Nt.call(ht,Yt):Yt?this._subscribe(ht):this._trySubscribe(ht))}),ht}_trySubscribe(ce){try{return this._subscribe(ce)}catch(Le){ce.error(Le)}}forEach(ce,Le){return new(Le=Se(Le))((Qt,ht)=>{const Nt=new _.Ms({next:Yt=>{try{ce(Yt)}catch(mr){ht(mr),Nt.unsubscribe()}},error:ht,complete:Qt});this.subscribe(Nt)})}_subscribe(ce){var Le;return null===(Le=this.source)||void 0===Le?void 0:Le.subscribe(ce)}[de.s](){return this}pipe(...ce){return(0,X.m)(ce)(this)}toPromise(ce){return new(ce=Se(ce))((Le,Qt)=>{let ht;this.subscribe(Nt=>ht=Nt,Nt=>Qt(Nt),()=>Le(ht))})}}return Y.create=Ue=>new Y(Ue),Y})();function Se(Y){var Ue;return null!==(Ue=Y??W.$.Promise)&&void 0!==Ue?Ue:Promise}},334:(ft,ge,H)=>{H.d(ge,{B:()=>We});var _=H(799),I=H(539);const X=(0,H(279).L)(Se=>function(){Se(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var W=H(618),q=H(540);let We=(()=>{class Se extends _.c{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(V){const Y=new Je(this,this);return Y.operator=V,Y}_throwIfClosed(){if(this.closed)throw new X}next(V){(0,q.Y)(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const Y of this.currentObservers)Y.next(V)}})}error(V){(0,q.Y)(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=V;const{observers:Y}=this;for(;Y.length;)Y.shift().error(V)}})}complete(){(0,q.Y)(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:V}=this;for(;V.length;)V.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var V;return(null===(V=this.observers)||void 0===V?void 0:V.length)>0}_trySubscribe(V){return this._throwIfClosed(),super._trySubscribe(V)}_subscribe(V){return this._throwIfClosed(),this._checkFinalizedStatuses(V),this._innerSubscribe(V)}_innerSubscribe(V){const{hasError:Y,isStopped:Ue,observers:ce}=this;return Y||Ue?I.Kn:(this.currentObservers=null,ce.push(V),new I.yU(()=>{this.currentObservers=null,(0,W.o)(ce,V)}))}_checkFinalizedStatuses(V){const{hasError:Y,thrownError:Ue,isStopped:ce}=this;Y?V.error(Ue):ce&&V.complete()}asObservable(){const V=new _.c;return V.source=this,V}}return Se.create=(Z,V)=>new Je(Z,V),Se})();class Je extends We{constructor(Z,V){super(),this.destination=Z,this.source=V}next(Z){var V,Y;null===(Y=null===(V=this.destination)||void 0===V?void 0:V.next)||void 0===Y||Y.call(V,Z)}error(Z){var V,Y;null===(Y=null===(V=this.destination)||void 0===V?void 0:V.error)||void 0===Y||Y.call(V,Z)}complete(){var Z,V;null===(V=null===(Z=this.destination)||void 0===Z?void 0:Z.complete)||void 0===V||V.call(Z)}_subscribe(Z){var V,Y;return null!==(Y=null===(V=this.source)||void 0===V?void 0:V.subscribe(Z))&&void 0!==Y?Y:I.Kn}}},713:(ft,ge,H)=>{H.d(ge,{Ms:()=>Qt,vU:()=>Y});var _=H(429),I=H(539),de=H(348),X=H(512),W=H(777);const q=Se("C",void 0,void 0);function Se(it,oe,qe){return{kind:it,value:oe,error:qe}}var Z=H(356),V=H(540);class Y extends I.yU{constructor(oe){super(),this.isStopped=!1,oe?(this.destination=oe,(0,I.Uv)(oe)&&oe.add(this)):this.destination=mr}static create(oe,qe,pt){return new Qt(oe,qe,pt)}next(oe){this.isStopped?Yt(function Je(it){return Se("N",it,void 0)}(oe),this):this._next(oe)}error(oe){this.isStopped?Yt(function We(it){return Se("E",void 0,it)}(oe),this):(this.isStopped=!0,this._error(oe))}complete(){this.isStopped?Yt(q,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(oe){this.destination.next(oe)}_error(oe){try{this.destination.error(oe)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const Ue=Function.prototype.bind;function ce(it,oe){return Ue.call(it,oe)}class Le{constructor(oe){this.partialObserver=oe}next(oe){const{partialObserver:qe}=this;if(qe.next)try{qe.next(oe)}catch(pt){ht(pt)}}error(oe){const{partialObserver:qe}=this;if(qe.error)try{qe.error(oe)}catch(pt){ht(pt)}else ht(oe)}complete(){const{partialObserver:oe}=this;if(oe.complete)try{oe.complete()}catch(qe){ht(qe)}}}class Qt extends Y{constructor(oe,qe,pt){let Zt;if(super(),(0,_.T)(oe)||!oe)Zt={next:oe??void 0,error:qe??void 0,complete:pt??void 0};else{let et;this&&de.$.useDeprecatedNextContext?(et=Object.create(oe),et.unsubscribe=()=>this.unsubscribe(),Zt={next:oe.next&&ce(oe.next,et),error:oe.error&&ce(oe.error,et),complete:oe.complete&&ce(oe.complete,et)}):Zt=oe}this.destination=new Le(Zt)}}function ht(it){de.$.useDeprecatedSynchronousErrorHandling?(0,V.l)(it):(0,X.m)(it)}function Yt(it,oe){const{onStoppedNotification:qe}=de.$;qe&&Z.f.setTimeout(()=>qe(it,oe))}const mr={closed:!0,next:W.l,error:function Nt(it){throw it},complete:W.l}},539:(ft,ge,H)=>{H.d(ge,{Kn:()=>q,yU:()=>W,Uv:()=>We});var _=H(429);const de=(0,H(279).L)(Se=>function(V){Se(this),this.message=V?`${V.length} errors occurred during unsubscription:\n${V.map((Y,Ue)=>`${Ue+1}) ${Y.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=V});var X=H(618);class W{constructor(Z){this.initialTeardown=Z,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let Z;if(!this.closed){this.closed=!0;const{_parentage:V}=this;if(V)if(this._parentage=null,Array.isArray(V))for(const ce of V)ce.remove(this);else V.remove(this);const{initialTeardown:Y}=this;if((0,_.T)(Y))try{Y()}catch(ce){Z=ce instanceof de?ce.errors:[ce]}const{_finalizers:Ue}=this;if(Ue){this._finalizers=null;for(const ce of Ue)try{Je(ce)}catch(Le){Z=Z??[],Le instanceof de?Z=[...Z,...Le.errors]:Z.push(Le)}}if(Z)throw new de(Z)}}add(Z){var V;if(Z&&Z!==this)if(this.closed)Je(Z);else{if(Z instanceof W){if(Z.closed||Z._hasParent(this))return;Z._addParent(this)}(this._finalizers=null!==(V=this._finalizers)&&void 0!==V?V:[]).push(Z)}}_hasParent(Z){const{_parentage:V}=this;return V===Z||Array.isArray(V)&&V.includes(Z)}_addParent(Z){const{_parentage:V}=this;this._parentage=Array.isArray(V)?(V.push(Z),V):V?[V,Z]:Z}_removeParent(Z){const{_parentage:V}=this;V===Z?this._parentage=null:Array.isArray(V)&&(0,X.o)(V,Z)}remove(Z){const{_finalizers:V}=this;V&&(0,X.o)(V,Z),Z instanceof W&&Z._removeParent(this)}}W.EMPTY=(()=>{const Se=new W;return Se.closed=!0,Se})();const q=W.EMPTY;function We(Se){return Se instanceof W||Se&&"closed"in Se&&(0,_.T)(Se.remove)&&(0,_.T)(Se.add)&&(0,_.T)(Se.unsubscribe)}function Je(Se){(0,_.T)(Se)?Se():Se.unsubscribe()}},348:(ft,ge,H)=>{H.d(ge,{$:()=>_});const _={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1}},578:(ft,ge,H)=>{H.d(ge,{_:()=>I});var _=H(713);function I(X,W,q,We,Je){return new de(X,W,q,We,Je)}class de extends _.vU{constructor(W,q,We,Je,Se,Z){super(W),this.onFinalize=Se,this.shouldUnsubscribe=Z,this._next=q?function(V){try{q(V)}catch(Y){W.error(Y)}}:super._next,this._error=Je?function(V){try{Je(V)}catch(Y){W.error(Y)}finally{this.unsubscribe()}}:super._error,this._complete=We?function(){try{We()}catch(V){W.error(V)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var W;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:q}=this;super.unsubscribe(),!q&&(null===(W=this.onFinalize)||void 0===W||W.call(this))}}}},764:(ft,ge,H)=>{H.d(ge,{T:()=>de});var _=H(536),I=H(578);function de(X,W){return(0,_.N)((q,We)=>{let Je=0;q.subscribe((0,I._)(We,Se=>{We.next(X.call(W,Se,Je++))}))})}},356:(ft,ge,H)=>{H.d(ge,{f:()=>_});const _={setTimeout(I,de,...X){const{delegate:W}=_;return W?.setTimeout?W.setTimeout(I,de,...X):setTimeout(I,de,...X)},clearTimeout(I){const{delegate:de}=_;return(de?.clearTimeout||clearTimeout)(I)},delegate:void 0}},848:(ft,ge,H)=>{H.d(ge,{s:()=>_});const _="function"==typeof Symbol&&Symbol.observable||"@@observable"},618:(ft,ge,H)=>{function _(I,de){if(I){const X=I.indexOf(de);0<=X&&I.splice(X,1)}}H.d(ge,{o:()=>_})},279:(ft,ge,H)=>{function _(I){const X=I(W=>{Error.call(W),W.stack=(new Error).stack});return X.prototype=Object.create(Error.prototype),X.prototype.constructor=X,X}H.d(ge,{L:()=>_})},540:(ft,ge,H)=>{H.d(ge,{Y:()=>de,l:()=>X});var _=H(348);let I=null;function de(W){if(_.$.useDeprecatedSynchronousErrorHandling){const q=!I;if(q&&(I={errorThrown:!1,error:null}),W(),q){const{errorThrown:We,error:Je}=I;if(I=null,We)throw Je}}else W()}function X(W){_.$.useDeprecatedSynchronousErrorHandling&&I&&(I.errorThrown=!0,I.error=W)}},871:(ft,ge,H)=>{function _(I){return I}H.d(ge,{D:()=>_})},429:(ft,ge,H)=>{function _(I){return"function"==typeof I}H.d(ge,{T:()=>_})},536:(ft,ge,H)=>{H.d(ge,{N:()=>de,S:()=>I});var _=H(429);function I(X){return(0,_.T)(X?.lift)}function de(X){return W=>{if(I(W))return W.lift(function(q){try{return X(q,this)}catch(We){this.error(We)}});throw new TypeError("Unable to lift unknown Observable type")}}},777:(ft,ge,H)=>{function _(){}H.d(ge,{l:()=>_})},297:(ft,ge,H)=>{H.d(ge,{F:()=>I,m:()=>de});var _=H(871);function I(...X){return de(X)}function de(X){return 0===X.length?_.D:1===X.length?X[0]:function(q){return X.reduce((We,Je)=>Je(We),q)}}},512:(ft,ge,H)=>{H.d(ge,{m:()=>de});var _=H(348),I=H(356);function de(X){I.f.setTimeout(()=>{const{onUnhandledError:W}=_.$;if(!W)throw X;W(X)})}},661:(ft,ge,H)=>{H.d(ge,{AJ:()=>us,MD:()=>La,N0:()=>kt,QT:()=>de,VF:()=>W,Vy:()=>zn,ZD:()=>X,_b:()=>os,aZ:()=>Nt,hb:()=>ce,qQ:()=>We});var _=H(690);let I=null;function de(){return I}function X(h){I??=h}class W{}const We=new _.nKC("");let Je=(()=>{class h{historyGo(g){throw new Error("")}static{this.\u0275fac=function(D){return new(D||h)}}static{this.\u0275prov=_.jDH({token:h,factory:()=>(0,_.WQX)(Z),providedIn:"platform"})}}return h})(),Z=(()=>{class h extends Je{constructor(){super(),this._doc=(0,_.WQX)(We),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return de().getBaseHref(this._doc)}onPopState(g){const D=de().getGlobalEventTarget(this._doc,"window");return D.addEventListener("popstate",g,!1),()=>D.removeEventListener("popstate",g)}onHashChange(g){const D=de().getGlobalEventTarget(this._doc,"window");return D.addEventListener("hashchange",g,!1),()=>D.removeEventListener("hashchange",g)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(g){this._location.pathname=g}pushState(g,D,b){this._history.pushState(g,D,b)}replaceState(g,D,b){this._history.replaceState(g,D,b)}forward(){this._history.forward()}back(){this._history.back()}historyGo(g=0){this._history.go(g)}getState(){return this._history.state}static{this.\u0275fac=function(D){return new(D||h)}}static{this.\u0275prov=_.jDH({token:h,factory:()=>new h,providedIn:"platform"})}}return h})();function V(h,C){if(0==h.length)return C;if(0==C.length)return h;let g=0;return h.endsWith("/")&&g++,C.startsWith("/")&&g++,2==g?h+C.substring(1):1==g?h+C:h+"/"+C}function Y(h){const C=h.match(/#|\?|$/),g=C&&C.index||h.length;return h.slice(0,g-("/"===h[g-1]?1:0))+h.slice(g)}function Ue(h){return h&&"?"!==h[0]?"?"+h:h}let ce=(()=>{class h{historyGo(g){throw new Error("")}static{this.\u0275fac=function(D){return new(D||h)}}static{this.\u0275prov=_.jDH({token:h,factory:()=>(0,_.WQX)(Qt),providedIn:"root"})}}return h})();const Le=new _.nKC("");let Qt=(()=>{class h extends ce{constructor(g,D){super(),this._platformLocation=g,this._removeListenerFns=[],this._baseHref=D??this._platformLocation.getBaseHrefFromDOM()??(0,_.WQX)(We).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(g){this._removeListenerFns.push(this._platformLocation.onPopState(g),this._platformLocation.onHashChange(g))}getBaseHref(){return this._baseHref}prepareExternalUrl(g){return V(this._baseHref,g)}path(g=!1){const D=this._platformLocation.pathname+Ue(this._platformLocation.search),b=this._platformLocation.hash;return b&&g?`${D}${b}`:D}pushState(g,D,b,O){const k=this.prepareExternalUrl(b+Ue(O));this._platformLocation.pushState(g,D,k)}replaceState(g,D,b,O){const k=this.prepareExternalUrl(b+Ue(O));this._platformLocation.replaceState(g,D,k)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(g=0){this._platformLocation.historyGo?.(g)}static{this.\u0275fac=function(D){return new(D||h)(_.KVO(Je),_.KVO(Le,8))}}static{this.\u0275prov=_.jDH({token:h,factory:h.\u0275fac,providedIn:"root"})}}return h})(),Nt=(()=>{class h{constructor(g){this._subject=new _.bkB,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=g;const D=this._locationStrategy.getBaseHref();this._basePath=function oe(h){if(new RegExp("^(https?:)?//").test(h)){const[,g]=h.split(/\/\/[^\/]+/);return g}return h}(Y(it(D))),this._locationStrategy.onPopState(b=>{this._subject.emit({url:this.path(!0),pop:!0,state:b.state,type:b.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(g=!1){return this.normalize(this._locationStrategy.path(g))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(g,D=""){return this.path()==this.normalize(g+Ue(D))}normalize(g){return h.stripTrailingSlash(function mr(h,C){if(!h||!C.startsWith(h))return C;const g=C.substring(h.length);return""===g||["/",";","?","#"].includes(g[0])?g:C}(this._basePath,it(g)))}prepareExternalUrl(g){return g&&"/"!==g[0]&&(g="/"+g),this._locationStrategy.prepareExternalUrl(g)}go(g,D="",b=null){this._locationStrategy.pushState(b,"",g,D),this._notifyUrlChangeListeners(this.prepareExternalUrl(g+Ue(D)),b)}replaceState(g,D="",b=null){this._locationStrategy.replaceState(b,"",g,D),this._notifyUrlChangeListeners(this.prepareExternalUrl(g+Ue(D)),b)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(g=0){this._locationStrategy.historyGo?.(g)}onUrlChange(g){return this._urlChangeListeners.push(g),this._urlChangeSubscription??=this.subscribe(D=>{this._notifyUrlChangeListeners(D.url,D.state)}),()=>{const D=this._urlChangeListeners.indexOf(g);this._urlChangeListeners.splice(D,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(g="",D){this._urlChangeListeners.forEach(b=>b(g,D))}subscribe(g,D,b){return this._subject.subscribe({next:g,error:D,complete:b})}static{this.normalizeQueryParams=Ue}static{this.joinWithSlash=V}static{this.stripTrailingSlash=Y}static{this.\u0275fac=function(D){return new(D||h)(_.KVO(ce))}}static{this.\u0275prov=_.jDH({token:h,factory:()=>function Yt(){return new Nt((0,_.KVO)(ce))}(),providedIn:"root"})}}return h})();function it(h){return h.replace(/\/index.html$/,"")}function os(h,C){C=encodeURIComponent(C);for(const g of h.split(";")){const D=g.indexOf("="),[b,O]=-1==D?[g,""]:[g.slice(0,D),g.slice(D+1)];if(b.trim()===C)return decodeURIComponent(O)}return null}let La=(()=>{class h{static{this.\u0275fac=function(D){return new(D||h)}}static{this.\u0275mod=_.$C({type:h})}static{this.\u0275inj=_.G2t({})}}return h})();const us="browser",ja="server";function zn(h){return h===ja}class kt{}},690:(ft,ge,H)=>{function _(e,t){return Object.is(e,t)}H.d(ge,{iLQ:()=>xd,sZ2:()=>Ff,o8S:()=>gr,BIS:()=>HE,gRc:()=>Ow,Ql9:()=>WN,Ocv:()=>eA,Z63:()=>dn,aKT:()=>_u,uvJ:()=>fn,zcH:()=>xe,bkB:()=>Nr,$GK:()=>le,nKC:()=>he,zZn:()=>L,_q3:()=>eg,MKu:()=>tg,xe9:()=>Fd,Co$:()=>My,Vns:()=>Hi,SKi:()=>dt,Agw:()=>Lf,PLl:()=>qg,sFG:()=>Tb,_9s:()=>kh,czy:()=>Gl,C4Q:()=>Gu,NYb:()=>VN,giA:()=>yw,RxE:()=>lw,c1b:()=>ld,gXe:()=>Wt,L39:()=>XA,EWP:()=>eR,Ol2:()=>tp,w6W:()=>_M,WQX:()=>K,QuC:()=>Dn,EmA:()=>Zr,Jn2:()=>YN,N4e:()=>h,vPA:()=>ay,O8t:()=>tR,H3F:()=>dw,H8p:()=>gs,KH2:()=>ga,TgB:()=>$i,wOt:()=>z,WHO:()=>mw,e01:()=>vw,H5H:()=>Mp,Zy3:()=>Un,mq5:()=>kD,JZv:()=>gt,TL3:()=>OA,LfX:()=>Ta,plB:()=>Uo,jNT:()=>Bp,zjR:()=>Dw,TL$:()=>VE,Tbb:()=>st,GFd:()=>by,OA$:()=>ru,aNF:()=>$C,R7$:()=>$m,BMQ:()=>hp,AVh:()=>yp,vxM:()=>bD,wni:()=>vC,VBU:()=>fs,FsC:()=>hi,jDH:()=>He,G2t:()=>un,$C:()=>wo,EJ8:()=>Eo,rXU:()=>zs,nrm:()=>Ip,k0s:()=>bd,j41:()=>Sd,RV6:()=>OD,xGo:()=>bu,KVO:()=>ee,kS0:()=>Mu,bIt:()=>Np,lsd:()=>DC,joV:()=>yl,qSk:()=>Cu,XpG:()=>aC,mGM:()=>yC,Dyx:()=>TD,Z7z:()=>_D,fX1:()=>MD,Njj:()=>_s,eBV:()=>ll,n$t:()=>Dm,DNE:()=>rp,EFF:()=>NC,JRh:()=>Op,SpI:()=>Nd});let I=null,de=!1,X=1;const W=Symbol("SIGNAL");function q(e){const t=I;return I=e,t}const Z={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function V(e){if(de)throw new Error("");if(null===I)return;I.consumerOnSignalRead(e);const t=I.nextProducerIndex++;pt(I),te.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}function Yt(e){pt(e);for(let t=0;t0}function pt(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}function Zt(e){e.liveConsumerNode??=[],e.liveConsumerIndexOfThis??=[]}const ke=Symbol("UNSET"),Bt=Symbol("COMPUTING"),Ke=Symbol("ERRORED"),wa={...Z,value:ke,dirty:!0,error:null,equal:_,producerMustRecompute:e=>e.value===ke||e.value===Bt,producerRecomputeValue(e){if(e.value===Bt)throw new Error("Detected cycle in computations.");const t=e.value;e.value=Bt;const n=ht(e);let r;try{r=e.computation()}catch(o){r=Ke,e.error=o}finally{Nt(e,n)}t!==ke&&t!==Ke&&r!==Ke&&e.equal(t,r)?e.value=t:(e.value=r,e.version++)}};let Wo=function Go(){throw new Error};function Qi(){Wo()}let qo=null;function uo(e,t){Le()||Qi(),e.equal(e.value,t)||(e.value=t,function Zo(e){e.version++,function Y(){X++}(),ce(e),qo?.()}(e))}const an={...Z,equal:_,value:void 0};var Ki=H(334),co=H(539),Ia=H(398),bc=H(764);const Xt="https://g.co/ng/security#xss";class z extends Error{constructor(t,n){super(Un(t,n)),this.code=t}}function Un(e,t){return`NG0${Math.abs(e)}${t?": "+t:""}`}function At(e){return{toString:e}.toString()}const Ce="__parameters__";function Hn(e,t,n){return At(()=>{const r=function mn(e){return function(...n){if(e){const r=e(...n);for(const o in r)this[o]=r[o]}}}(t);function o(...i){if(this instanceof o)return r.apply(this,i),this;const u=new o(...i);return d.annotation=u,d;function d(f,m,y){const E=f.hasOwnProperty(Ce)?f[Ce]:Object.defineProperty(f,Ce,{value:[]})[Ce];for(;E.length<=y;)E.push(null);return(E[y]=E[y]||[]).push(u),f}}return n&&(o.prototype=Object.create(n.prototype)),o.prototype.ngMetadataName=e,o.annotationCls=o,o})}const gt=globalThis;function J(e){for(let t in e)if(e[t]===J)return t;throw Error("Could not find renamed property on target object.")}function st(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(st).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}function Ji(e,t){return null==e||""===e?null===t?"":t:null==t||""===t?e:e+" "+t}const _c=J({__forward_ref__:J});function Ko(e){return e.__forward_ref__=Ko,e.toString=function(){return st(this())},e}function ie(e){return at(e)?e():e}function at(e){return"function"==typeof e&&e.hasOwnProperty(_c)&&e.__forward_ref__===Ko}function He(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function un(e){return{providers:e.providers||[],imports:e.imports||[]}}function Lr(e){return jr(e,yr)||jr(e,os)}function Ta(e){return null!==Lr(e)}function jr(e,t){return e.hasOwnProperty(t)?e[t]:null}function Vr(e){return e&&(e.hasOwnProperty(rs)||e.hasOwnProperty(ei))?e[rs]:null}const yr=J({\u0275prov:J}),rs=J({\u0275inj:J}),os=J({ngInjectableDef:J}),ei=J({ngInjectorDef:J});class he{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=He({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function go(e){return e&&!!e.\u0275providers}const $n=J({\u0275cmp:J}),Ur=J({\u0275dir:J}),mo=J({\u0275pipe:J}),si=J({\u0275mod:J}),Rn=J({\u0275fac:J}),Hr=J({__NG_ELEMENT_ID__:J}),ai=J({__NG_ENV_ID__:J});function re(e){return"string"==typeof e?e:null==e?"":String(e)}function ui(e,t){throw new z(-201,!1)}var le=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(le||{});let vt;function Ct(){return vt}function xt(e){const t=vt;return vt=e,t}function ci(e,t,n){const r=Lr(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&le.Optional?null:void 0!==t?t:void ui()}const $r={},li="__NG_DI_FLAG__",Br="ngTempTokenPath",ka=/\n/gm,ss="__source";let Bn;function Jt(e){const t=Bn;return Bn=e,t}function Uc(e,t=le.Default){if(void 0===Bn)throw new z(-203,!1);return null===Bn?ci(e,void 0,t):Bn.get(e,t&le.Optional?null:void 0,t)}function ee(e,t=le.Default){return(Ct()||Uc)(ie(e),t)}function K(e,t=le.Default){return ee(e,On(t))}function On(e){return typeof e>"u"||"number"==typeof e?e:(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function as(e){const t=[];for(let n=0;nArray.isArray(n)?xn(n,t):t(n))}function ls(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function tr(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function Gt(e,t,n){let r=Ft(e,t);return r>=0?e[1|r]=n:(r=~r,function yo(e,t,n,r){let o=e.length;if(o==t)e.push(n,r);else if(1===o)e.push(r,e[0]),e[0]=n;else{for(o--,e.push(e[o-1],e[o]);o>t;)e[o]=e[o-2],o--;e[t]=n,e[t+1]=r}}(e,r,t,n)),r}function Gr(e,t){const n=Ft(e,t);if(n>=0)return e[1|n]}function Ft(e,t){return function Va(e,t,n){let r=0,o=e.length>>n;for(;o!==r;){const i=r+(o-r>>1),u=e[i<t?o=i:r=i+1}return~(o<t){u=i-1;break}}}for(;i-1){let i;for(;++oi?"":o[y+1].toLowerCase(),2&r&&m!==E){if(qt(r))return!1;u=!0}}}}else{if(!u&&!qt(r)&&!qt(f))return!1;if(u&&qt(f))continue;u=!1,r=f|1&r}}return qt(r)||u}function qt(e){return!(1&e)}function za(e,t,n,r){if(null===t)return-1;let o=0;if(r||!n){let i=!1;for(;o-1)for(n++;n0?'="'+d+'"':"")+"]"}else 8&r?o+="."+u:4&r&&(o+=" "+u);else""!==o&&!qt(u)&&(t+=Ga(i,o),o=""),r=u,i=i||!qt(r);n++}return""!==o&&(t+=Ga(i,o)),t}function fs(e){return At(()=>{const t=wr(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===Do.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||Wt.Emulated,styles:e.styles||we,_:null,schemas:e.schemas||null,tView:null,id:""};je(n);const r=e.dependencies;return n.directiveDefs=rr(r,!1),n.pipeDefs=rr(r,!0),n.id=function Qn(e){let t=0;const n=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,e.consts,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery].join("|");for(const o of n)t=Math.imul(31,t)+o.charCodeAt(0)|0;return t+=2147483648,"c"+t}(n),n})}function Wa(e){return fe(e)||wt(e)}function nr(e){return null!==e}function wo(e){return At(()=>({type:e.type,bootstrap:e.bootstrap||we,declarations:e.declarations||we,imports:e.imports||we,exports:e.exports||we,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function fi(e,t){if(null==e)return ln;const n={};for(const r in e)if(e.hasOwnProperty(r)){const o=e[r];let i,u,d=Pn.None;Array.isArray(o)?(d=o[0],i=o[1],u=o[2]??i):(i=o,u=o),t?(n[i]=d!==Pn.None?[r,d]:r,t[i]=u):n[i]=r}return n}function hi(e){return At(()=>{const t=wr(e);return je(t),t})}function Eo(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:!0===e.standalone,onDestroy:e.type.prototype.ngOnDestroy||null}}function fe(e){return e[$n]||null}function wt(e){return e[Ur]||null}function bt(e){return e[mo]||null}function Dn(e){const t=fe(e)||wt(e)||bt(e);return null!==t&&t.standalone}function mt(e,t){const n=e[si]||null;if(!n&&!0===t)throw new Error(`Type ${st(e)} does not have '\u0275mod' property.`);return n}function wr(e){const t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputTransforms:null,inputConfig:e.inputs||ln,exportAs:e.exportAs||null,standalone:!0===e.standalone,signals:!0===e.signals,selectors:e.selectors||we,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:fi(e.inputs,t),outputs:fi(e.outputs),debugInfo:null}}function je(e){e.features?.forEach(t=>t(e))}function rr(e,t){if(!e)return null;const n=t?bt:Wa;return()=>("function"==typeof e?e():e).map(r=>n(r)).filter(nr)}function Zr(e){return{\u0275providers:e}}function Kr(...e){return{\u0275providers:Yr(0,e),\u0275fromNgModule:!0}}function Yr(e,...t){const n=[],r=new Set;let o;const i=u=>{n.push(u)};return xn(t,u=>{const d=u;Er(d,i,[],r)&&(o||=[],o.push(d))}),void 0!==o&&qa(o,i),n}function qa(e,t){for(let n=0;n{t(i,r)})}}function Er(e,t,n,r){if(!(e=ie(e)))return!1;let o=null,i=Vr(e);const u=!i&&fe(e);if(i||u){if(u&&!u.standalone)return!1;o=e}else{const f=e.ngModule;if(i=Vr(f),!i)return!1;o=f}const d=r.has(o);if(u){if(d)return!1;if(r.add(o),u.dependencies){const f="function"==typeof u.dependencies?u.dependencies():u.dependencies;for(const m of f)Er(m,t,n,r)}}else{if(!i)return!1;{if(null!=i.imports&&!d){let m;r.add(o);try{xn(i.imports,y=>{Er(y,t,n,r)&&(m||=[],m.push(y))})}finally{}void 0!==m&&qa(m,t)}if(!d){const m=er(o)||(()=>new o);t({provide:o,useFactory:m,deps:we},o),t({provide:yn,useValue:o,multi:!0},o),t({provide:dn,useValue:()=>ee(o),multi:!0},o)}const f=i.providers;if(null!=f&&!d){const m=e;gi(f,y=>{t(y,m)})}}}return o!==e&&void 0!==e.providers}function gi(e,t){for(let n of e)go(n)&&(n=n.\u0275providers),Array.isArray(n)?gi(n,t):t(n)}const mi=J({provide:String,useValue:J});function vi(e){return null!==e&&"object"==typeof e&&mi in e}function or(e){return"function"==typeof e}const gs=new he(""),So={},Qa={};let bo;function yi(){return void 0===bo&&(bo=new Wn),bo}class fn{}class Jr extends fn{get destroyed(){return this._destroyed}constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,vs(t,u=>this.processProvider(u)),this.records.set(Gn,Ir(void 0,this)),o.has("environment")&&this.records.set(fn,Ir(void 0,this));const i=this.records.get(gs);null!=i&&"string"==typeof i.value&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(yn,we,le.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const t=q(null);try{for(const r of this._ngOnDestroyHooks)r.ngOnDestroy();const n=this._onDestroyHooks;this._onDestroyHooks=[];for(const r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),q(t)}}onDestroy(t){return this.assertNotDestroyed(),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){this.assertNotDestroyed();const n=Jt(this),r=xt(void 0);try{return t()}finally{Jt(n),xt(r)}}get(t,n=$r,r=le.Default){if(this.assertNotDestroyed(),t.hasOwnProperty(ai))return t[ai](this);r=On(r);const i=Jt(this),u=xt(void 0);try{if(!(r&le.SkipSelf)){let f=this.records.get(t);if(void 0===f){const m=function _o(e){return"function"==typeof e||"object"==typeof e&&e instanceof he}(t)&&Lr(t);f=m&&this.injectableDefInScope(m)?Ir(ms(t),So):null,this.records.set(t,f)}if(null!=f)return this.hydrate(t,f)}return(r&le.Self?yi():this.parent).get(t,n=r&le.Optional&&n===$r?null:n)}catch(d){if("NullInjectorError"===d.name){if((d[Br]=d[Br]||[]).unshift(st(t)),i)throw d;return function us(e,t,n,r){const o=e[Br];throw t[ss]&&o.unshift(t[ss]),e.message=function ja(e,t,n,r=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let o=st(t);if(Array.isArray(t))o=t.map(st).join(" -> ");else if("object"==typeof t){let i=[];for(let u in t)if(t.hasOwnProperty(u)){let d=t[u];i.push(u+":"+("string"==typeof d?JSON.stringify(d):st(d)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(ka,"\n ")}`}("\n"+e.message,o,n,r),e.ngTokenPath=o,e[Br]=null,e}(d,t,"R3InjectorError",this.source)}throw d}finally{xt(u),Jt(i)}}resolveInjectorInitializers(){const t=q(null),n=Jt(this),r=xt(void 0);try{const i=this.get(dn,we,le.Self);for(const u of i)u()}finally{Jt(n),xt(r),q(t)}}toString(){const t=[],n=this.records;for(const r of n.keys())t.push(st(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new z(205,!1)}processProvider(t){let n=or(t=ie(t))?t:ie(t&&t.provide);const r=function Zc(e){return vi(e)?Ir(void 0,e.useValue):Ir(function Za(e,t,n){let r;if(or(e)){const o=ie(e);return er(o)||ms(o)}if(vi(e))r=()=>ie(e.useValue);else if(function Xr(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...as(e.deps||[]));else if(function Io(e){return!(!e||!e.useExisting)}(e))r=()=>ee(ie(e.useExisting));else{const o=ie(e&&(e.useClass||e.provide));if(!function Ka(e){return!!e.deps}(e))return er(o)||ms(o);r=()=>new o(...as(e.deps))}return r}(e),So)}(t);if(!or(t)&&!0===t.multi){let o=this.records.get(n);o||(o=Ir(void 0,So,!0),o.factory=()=>as(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){const r=q(null);try{return n.value===So&&(n.value=Qa,n.value=n.factory()),"object"==typeof n.value&&n.value&&function Mo(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{q(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;const n=ie(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){const n=this._onDestroyHooks.indexOf(t);-1!==n&&this._onDestroyHooks.splice(n,1)}}function ms(e){const t=Lr(e),n=null!==t?t.factory:er(e);if(null!==n)return n;if(e instanceof he)throw new z(204,!1);if(e instanceof Function)return function Qc(e){if(e.length>0)throw new z(204,!1);const n=function Jo(e){return e&&(e[yr]||e[os])||null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new z(204,!1)}function Ir(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function vs(e,t){for(const n of e)Array.isArray(n)?vs(n,t):n&&go(n)?vs(n.\u0275providers,t):t(n)}function h(e,t){e instanceof Jr&&e.assertNotDestroyed();const r=Jt(e),o=xt(void 0);try{return t()}finally{Jt(r),xt(o)}}const Me=0,j=1,U=2,Ie=3,Lt=4,ut=5,Qe=6,ir=7,Oe=8,rt=9,En=10,se=11,Di=12,Kc=13,To=14,ot=15,eo=16,No=17,sr=18,Ao=19,Yc=20,Sr=21,Ya=22,ar=23,te=25,Xc=1,nn=7,br=9,ct=10;var rn=function(e){return e[e.None=0]="None",e[e.HasTransplantedViews=2]="HasTransplantedViews",e}(rn||{});function lt(e){return Array.isArray(e)&&"object"==typeof e[Xc]}function jt(e){return Array.isArray(e)&&!0===e[Xc]}function ys(e){return!!(4&e.flags)}function to(e){return e.componentOffset>-1}function ur(e){return!(1&~e.flags)}function on(e){return!!e.template}function Mr(e){return!!(512&e[U])}class dg{constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}}function Jd(e,t,n,r){null!==t?t.applyValueToInputSignal(t,r):e[n]=r}function ru(){return ef}function ef(e){return e.type.prototype.ngOnChanges&&(e.setInput=nf),tf}function tf(){const e=In(this),t=e?.current;if(t){const n=e.previous;if(n===ln)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function nf(e,t,n,r,o){const i=this.declaredInputs[r],u=In(e)||function rf(e,t){return e[Is]=t}(e,{previous:ln,current:null}),d=u.current||(u.current={}),f=u.previous,m=f[i];d[i]=new dg(m&&m.currentValue,n,f===ln),Jd(e,t,o,n)}ru.ngInherit=!0;const Is="__ngSimpleChanges__";function In(e){return e[Is]||null}const Zn=function(e,t,n){},ol="svg";function _e(e){for(;Array.isArray(e);)e=e[Me];return e}function Ei(e,t){return _e(t[e])}function It(e,t){return _e(t[e.index])}function Si(e,t){return e.data[t]}function Vt(e,t){const n=t[e];return lt(n)?n:n[Me]}function su(e){return!(128&~e[U])}function Sn(e,t){return null==t?null:e[t]}function il(e){e[No]=0}function af(e){1024&e[U]||(e[U]|=1024,su(e)&&cr(e))}function Oo(e){return!!(9216&e[U]||e[ar]?.dirty)}function xo(e){e[En].changeDetectionScheduler?.notify(7),64&e[U]&&(e[U]|=1024),Oo(e)&&cr(e)}function cr(e){e[En].changeDetectionScheduler?.notify(0);let t=ro(e);for(;null!==t&&!(8192&t[U])&&(t[U]|=8192,su(t));)t=ro(t)}function Ss(e,t){if(!(256&~e[U]))throw new z(911,!1);null===e[Sr]&&(e[Sr]=[]),e[Sr].push(t)}function ro(e){const t=e[Ie];return jt(t)?t[Ie]:t}const ue={lFrame:_i(null),bindingsEnabled:!0,skipHydrationRootTNode:null};let al=!1;function cl(){return ue.bindingsEnabled}function P(){return ue.lFrame.lView}function ye(){return ue.lFrame.tView}function ll(e){return ue.lFrame.contextLView=e,e[Oe]}function _s(e){return ue.lFrame.contextLView=null,e}function Ge(){let e=cu();for(;null!==e&&64===e.type;)e=e.parent;return e}function cu(){return ue.lFrame.currentTNode}function Kn(e,t){const n=ue.lFrame;n.currentTNode=e,n.isParent=t}function lu(){return ue.lFrame.isParent}function fl(){return al}function hl(e){al=e}function bn(){return ue.lFrame.bindingIndex++}function ff(e,t){const n=ue.lFrame;n.bindingIndex=n.bindingRootIndex=e,Ns(t)}function Ns(e){ue.lFrame.currentDirectiveIndex=e}function pu(){return ue.lFrame.currentQueryIndex}function As(e){ue.lFrame.currentQueryIndex=e}function gu(e){const t=e[j];return 2===t.type?t.declTNode:1===t.type?e[ut]:null}function mu(e,t,n){if(n&le.SkipSelf){let o=t,i=e;for(;!(o=o.parent,null!==o||n&le.Host||(o=gu(i),null===o||(i=i[To],10&o.type))););if(null===o)return!1;t=o,e=i}const r=ue.lFrame=ko();return r.currentTNode=t,r.lView=e,!0}function vu(e){const t=ko(),n=e[j];ue.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function ko(){const e=ue.lFrame,t=null===e?null:e.child;return null===t?_i(e):t}function _i(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function yu(){const e=ue.lFrame;return ue.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const ml=yu;function Du(){const e=yu();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Rt(){return ue.lFrame.selectedIndex}function oo(e){ue.lFrame.selectedIndex=e}function Cu(){ue.lFrame.currentNamespace=ol}function yl(){!function Dl(){ue.lFrame.currentNamespace=null}()}let Cl=!0;function Ni(){return Cl}function Yn(e){Cl=e}function Ai(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n=r)break}else t[f]<0&&(e[No]+=65536),(d>14>16&&(3&e[U])===t&&(e[U]+=16384,El(d,i)):El(d,i)}const hn=-1;class Ri{constructor(t,n,r){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=r}}function wu(e){return e!==hn}function io(e){return 32767&e}function xi(e,t){let n=function Il(e){return e>>16}(e),r=t;for(;n>0;)r=r[To],n--;return r}let xs=!0;function pn(e){const t=xs;return xs=e,t}const wf=255,Ef=5;let yg=0;const Fn={};function Fo(e,t){const n=bl(e,t);if(-1!==n)return n;const r=t[j];r.firstCreatePass&&(e.injectorIndex=t.length,Eu(r.data,e),Eu(t,null),Eu(r.blueprint,null));const o=Iu(e,t),i=e.injectorIndex;if(wu(o)){const u=io(o),d=xi(o,t),f=d[j].data;for(let m=0;m<8;m++)t[i+m]=d[u+m]|f[u+m]}return t[i+8]=o,i}function Eu(e,t){e.push(0,0,0,0,0,0,0,0,t)}function bl(e,t){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===t[e.injectorIndex+8]?-1:e.injectorIndex}function Iu(e,t){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;null!==o;){if(r=Nf(o),null===r)return hn;if(n++,o=o[To],-1!==r.injectorIndex)return r.injectorIndex|n<<16}return hn}function Ps(e,t,n){!function Sl(e,t,n){let r;"string"==typeof n?r=n.charCodeAt(0)||0:n.hasOwnProperty(Hr)&&(r=n[Hr]),null==r&&(r=n[Hr]=yg++);const o=r&wf;t.data[e+(o>>Ef)]|=1<=0?t&wf:Eg:t}(n);if("function"==typeof i){if(!mu(t,e,r))return r&le.Host?If(o,0,r):Sf(t,n,r,o);try{let u;if(u=i(r),null!=u||r&le.Optional)return u;ui()}finally{ml()}}else if("number"==typeof i){let u=null,d=bl(e,t),f=hn,m=r&le.Host?t[ot][ut]:null;for((-1===d||r&le.SkipSelf)&&(f=-1===d?Iu(e,t):t[d+8],f!==hn&&Tf(r,!1)?(u=t[j],d=io(f),t=xi(f,t)):d=-1);-1!==d;){const y=t[j];if(_f(i,d,y.data)){const E=Cg(d,t,n,u,r,m);if(E!==Fn)return E}f=t[d+8],f!==hn&&Tf(r,t[j].data[d+8]===m)&&_f(i,d,t)?(u=y,d=io(f),t=xi(f,t)):d=-1}}return o}function Cg(e,t,n,r,o,i){const u=t[j],d=u.data[e+8],y=Su(d,u,n,null==r?to(d)&&xs:r!=u&&!!(3&d.type),o&le.Host&&i===d);return null!==y?Lo(t,u,y,d):Fn}function Su(e,t,n,r,o){const i=e.providerIndexes,u=t.data,d=1048575&i,f=e.directiveStart,y=i>>20,S=o?d+y:e.directiveEnd;for(let N=r?d:d+y;N=f&&A.type===n)return N}if(o){const N=u[f];if(N&&on(N)&&N.type===n)return f}return null}function Lo(e,t,n,r){let o=e[n];const i=t.data;if(function vf(e){return e instanceof Ri}(o)){const u=o;u.resolving&&function cn(e,t){throw t&&t.join(" > "),new z(-200,e)}(function Re(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():re(e)}(i[n]));const d=pn(u.canSeeViewProviders);u.resolving=!0;const m=u.injectImpl?xt(u.injectImpl):null;mu(e,r,le.Default);try{o=e[n]=u.factory(void 0,i,e,r),t.firstCreatePass&&n>=r.directiveStart&&function gf(e,t,n){const{ngOnChanges:r,ngOnInit:o,ngDoCheck:i}=t.type.prototype;if(r){const u=ef(t);(n.preOrderHooks??=[]).push(e,u),(n.preOrderCheckHooks??=[]).push(e,u)}o&&(n.preOrderHooks??=[]).push(0-e,o),i&&((n.preOrderHooks??=[]).push(e,i),(n.preOrderCheckHooks??=[]).push(e,i))}(n,i[n],t)}finally{null!==m&&xt(m),pn(d),u.resolving=!1,ml()}}return o}function _f(e,t,n){return!!(n[t+(e>>Ef)]&1<{const t=e.prototype.constructor,n=t[Rn]||Ml(t),r=Object.prototype;let o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){const i=o[Rn]||Ml(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function Ml(e){return at(e)?()=>{const t=Ml(ie(e));return t&&t()}:er(e)}function Nf(e){const t=e[j],n=t.type;return 2===n?t.declTNode:1===n?e[ut]:null}function Mu(e){return function Dg(e,t){if("class"===t)return e.classes;if("style"===t)return e.styles;const n=e.attrs;if(n){const r=n.length;let o=0;for(;oee(Gn)})}static{this.__NG_ELEMENT_ID__=-1}}new he("").__NG_ELEMENT_ID__=e=>{const t=Ge();if(null===t)throw new z(204,!1);if(2&t.type)return t.value;if(e&le.Optional)return null;throw new z(204,!1)};function Ye(e){return e.ngOriginalError}class xe{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Ye(t);for(;n&&Ye(n);)n=Ye(n);return n||null}}const Nl=new he("",{providedIn:"root",factory:()=>K(xe).handleError.bind(void 0)});let fr=(()=>{class e{static{this.__NG_ELEMENT_ID__=gE}static{this.__NG_ENV_ID__=n=>n}}return e})();class pE extends fr{constructor(t){super(),this._lView=t}onDestroy(t){return Ss(this._lView,t),()=>function au(e,t){if(null===e[Sr])return;const n=e[Sr].indexOf(t);-1!==n&&e[Sr].splice(n,1)}(this._lView,t)}}function gE(){return new pE(P())}function mE(){return Fs(Ge(),P())}function Fs(e,t){return new _u(It(e,t))}let _u=(()=>{class e{constructor(n){this.nativeElement=n}static{this.__NG_ELEMENT_ID__=mE}}return e})();function _g(e){return e instanceof _u?e.nativeElement:e}function Rf(e){return t=>{setTimeout(e,void 0,t)}}const Nr=class vE extends Ki.B{constructor(t=!1){super(),this.destroyRef=void 0,this.__isAsync=t,function C(){return void 0!==Ct()||null!=function Fa(){return Bn}()}()&&(this.destroyRef=K(fr,{optional:!0})??void 0)}emit(t){const n=q(null);try{super.next(t)}finally{q(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),u=r;if(t&&"object"==typeof t){const f=t;o=f.next?.bind(f),i=f.error?.bind(f),u=f.complete?.bind(f)}this.__isAsync&&(i=Rf(i),o&&(o=Rf(o)),u&&(u=Rf(u)));const d=super.subscribe({next:o,error:i,complete:u});return t instanceof co.yU&&t.add(d),d}};function yE(){return this._results[Symbol.iterator]()}class Of{get changes(){return this._changes??=new Nr}constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;const n=Of.prototype;n[Symbol.iterator]||(n[Symbol.iterator]=yE)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;const r=function kt(e){return e.flat(Number.POSITIVE_INFINITY)}(t);(this._changesDetected=!function Bc(e,t,n){if(e.length!==t.length)return!1;for(let r=0;rUE}),UE="ng",qg=new he(""),Lf=new he("",{providedIn:"platform",factory:()=>"unknown"}),HE=new he("",{providedIn:"root",factory:()=>function jo(){if(void 0!==kf)return kf;if(typeof document<"u")return document;throw new z(210,!1)}().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});let Qg=()=>null;function zf(e,t,n=!1){return Qg(e,t,n)}const nm=new he("",{providedIn:"root",factory:()=>!1});let Hl;function am(e){return function Zf(){if(void 0===Hl&&(Hl=null,gt.trustedTypes))try{Hl=gt.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Hl}()?.createScriptURL(e)||e}class um{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${Xt})`}}function Vo(e){return e instanceof um?e.changingThisBreaksApplicationSecurity:e}function ku(e,t){const n=function sI(e){return e instanceof um&&e.getTypeName()||null}(e);if(null!=n&&n!==t){if("ResourceURL"===n&&"URL"===t)return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${Xt})`)}return n===t}const lI=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;var Hs=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}(Hs||{});function vm(e){const t=Lu();return t?t.sanitize(Hs.URL,e)||"":ku(e,"URL")?Vo(e):function Kf(e){return(e=String(e)).match(lI)?e:"unsafe:"+e}(re(e))}function ym(e){const t=Lu();if(t)return am(t.sanitize(Hs.RESOURCE_URL,e)||"");if(ku(e,"ResourceURL"))return am(Vo(e));throw new z(904,!1)}function Dm(e,t,n){return function bI(e,t){return"src"===t&&("embed"===e||"frame"===e||"iframe"===e||"media"===e||"script"===e)||"href"===t&&("base"===e||"link"===e)?ym:vm}(t,n)(e)}function Lu(){const e=P();return e&&e[En].sanitizer}function Ln(e){return e instanceof Function?e():e}var Gl=function(e){return e[e.Important=1]="Important",e[e.DashCase=2]="DashCase",e}(Gl||{});let rh;function oh(e,t){return rh(e,t)}function Bs(e,t,n,r,o){if(null!=r){let i,u=!1;jt(r)?i=r:lt(r)&&(u=!0,r=r[Me]);const d=_e(r);0===e&&null!==n?null==o?Rm(t,n,d):Fi(t,n,d,o||null,!0):1===e&&null!==n?Fi(t,n,d,o||null,!0):2===e?function Uu(e,t,n){const r=Ql(e,t);r&&function WI(e,t,n,r){e.removeChild(t,n,r)}(e,r,t,n)}(t,d,u):3===e&&t.destroyNode(d),null!=i&&function ZI(e,t,n,r,o){const i=n[nn];i!==_e(n)&&Bs(t,e,r,i,o);for(let d=ct;d0&&(e[n-1][Lt]=r[Lt]);const i=tr(e,ct+t);!function UI(e,t){Tm(e,t),t[Me]=null,t[ut]=null}(r[j],r);const u=i[sr];null!==u&&u.detachView(i[j]),r[Ie]=null,r[Lt]=null,r[U]&=-129}return r}function ql(e,t){if(!(256&t[U])){const n=t[se];n.destroyNode&&Kl(e,t,n,3,null,null),function $I(e){let t=e[Di];if(!t)return uh(e[j],e);for(;t;){let n=null;if(lt(t))n=t[Di];else{const r=t[ct];r&&(n=r)}if(!n){for(;t&&!t[Lt]&&t!==e;)lt(t)&&uh(t[j],t),t=t[Ie];null===t&&(t=e),lt(t)&&uh(t[j],t),n=t&&t[Lt]}t=n}}(t)}}function uh(e,t){if(256&t[U])return;const n=q(null);try{t[U]&=-129,t[U]|=256,t[ar]&&function mr(e){if(pt(e),qe(e))for(let t=0;t=0?r[u]():r[-u].unsubscribe(),i+=2}else n[i].call(r[n[i+1]]);null!==r&&(t[ir]=null);const o=t[Sr];if(null!==o){t[Sr]=null;for(let i=0;i-1){const{encapsulation:i}=e.data[r.directiveStart+o];if(i===Wt.None||i===Wt.Emulated)return null}return It(r,n)}}(e,t.parent,n)}function Fi(e,t,n,r,o){e.insertBefore(t,n,r,o)}function Rm(e,t,n){e.appendChild(t,n)}function Om(e,t,n,r,o){null!==r?Fi(e,t,n,r,o):Rm(e,t,n)}function Ql(e,t){return e.parentNode(t)}let lh,km=function Pm(e,t,n){return 40&e.type?It(e,n):null};function Zl(e,t,n,r){const o=ch(e,r,t),i=t[se],d=function xm(e,t,n){return km(e,t,n)}(r.parent||t[ut],r,t);if(null!=o)if(Array.isArray(n))for(let f=0;fte&&Bm(e,t,te,!1),Zn(u?2:0,o),n(r,o)}finally{oo(i),Zn(u?3:1,o)}}function ph(e,t,n){if(ys(t)){const r=q(null);try{const i=t.directiveEnd;for(let u=t.directiveStart;unull;function Qm(e,t,n,r,o){for(let i in t){if(!t.hasOwnProperty(i))continue;const u=t[i];if(void 0===u)continue;r??={};let d,f=Pn.None;Array.isArray(u)?(d=u[0],f=u[1]):d=u;let m=i;if(null!==o){if(!o.hasOwnProperty(i))continue;m=o[i]}0===e?Zm(r,n,m,d,f):Zm(r,n,m,d)}return r}function Zm(e,t,n,r,o){let i;e.hasOwnProperty(n)?(i=e[n]).push(t,r):i=e[n]=[t,r],void 0!==o&&i.push(o)}function yh(e,t,n,r){if(cl()){const o=null===r?null:{"":-1},i=function gS(e,t){const n=e.directiveRegistry;let r=null,o=null;if(n)for(let i=0;i0;){const n=e[--t];if("number"==typeof n&&n<0)return n}return 0})(u)!=d&&u.push(d),u.push(n,r,i)}}(e,t,r,Hu(e,n,o.hostVars,pe),o)}function Ar(e,t,n,r,o,i){const u=It(e,t);!function Ch(e,t,n,r,o,i,u){if(null==i)e.removeAttribute(t,o,n);else{const d=null==u?re(i):u(i,r||"",o);e.setAttribute(t,o,d,n)}}(t[se],u,i,e.value,n,r,o)}function wS(e,t,n,r,o,i){const u=i[t];if(null!==u)for(let d=0;d0&&(n[o-1][Lt]=t),r{cr(e.lView)},consumerOnSignalRead(){this.lView[ar]=this}},AS=100;function ed(e,t=!0,n=0){const r=e[En],o=r.rendererFactory;o.begin?.();try{!function RS(e,t){const n=fl();try{hl(!0),bh(e,t);let r=0;for(;Oo(e);){if(r===AS)throw new z(103,!1);r++,bh(e,1)}}finally{hl(n)}}(e,n)}catch(u){throw t&&Jl(e,u),u}finally{o.end?.(),r.inlineEffectRunner?.flush()}}function OS(e,t,n,r){const o=t[U];if(!(256&~o))return;t[En].inlineEffectRunner?.flush(),vu(t);let d=null,f=null;(function xS(e){return 2!==e.type})(e)&&(f=function MS(e){return e[ar]??function _S(e){const t=iv.pop()??Object.create(NS);return t.lView=e,t}(e)}(t),d=ht(f));try{il(t),function pl(e){return ue.lFrame.bindingIndex=e}(e.bindingStartIndex),null!==n&&Gm(e,t,n,2,r);const m=!(3&~o);if(m){const S=e.preOrderCheckHooks;null!==S&&Rs(t,S,null)}else{const S=e.preOrderHooks;null!==S&&Tr(t,S,0,null),Os(t,0)}if(function PS(e){for(let t=Lg(e);null!==t;t=jg(t)){if(!(t[U]&rn.HasTransplantedViews))continue;const n=t[br];for(let r=0;r-1&&(ju(t,r),tr(n,r))}this._attachedToViewContainer=!1}ql(this._lView[j],this._lView)}onDestroy(t){Ss(this._lView,t)}markForCheck(){Bu(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[U]&=-129}reattach(){xo(this._lView),this._lView[U]|=128}detectChanges(){this._lView[U]|=1024,ed(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new z(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;const t=Mr(this._lView),n=this._lView[eo];null!==n&&!t&&ah(n,this._lView),Tm(this._lView[j],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new z(902,!1);this._appRef=t;const n=Mr(this._lView),r=this._lView[eo];null!==r&&!n&&Nm(r,this._lView),xo(this._lView)}}let Gu=(()=>{class e{static{this.__NG_ELEMENT_ID__=jS}}return e})();const FS=Gu,LS=class extends FS{constructor(t,n,r){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=r}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(t,n){return this.createEmbeddedViewImpl(t,n)}createEmbeddedViewImpl(t,n,r){const o=Ws(this._declarationLView,this._declarationTContainer,t,{embeddedViewInjector:n,dehydratedView:r});return new zu(o)}};function jS(){return td(Ge(),P())}function td(e,t){return 4&e.type?new LS(t,e,Fs(e,t)):null}let Nv=()=>null;function Vi(e,t){return Nv(e,t)}class Zs{}const Ju=new he("",{providedIn:"root",factory:()=>!1}),Av=new he("");class bb{}class Rv{}class _b{resolveComponentFactory(t){throw function Mb(e){const t=Error(`No component factory found for ${st(e)}.`);return t.ngComponent=e,t}(t)}}class sd{static{this.NULL=new _b}}class kh{}let Tb=(()=>{class e{constructor(){this.destroyNode=null}static{this.__NG_ELEMENT_ID__=()=>function Nb(){const e=P(),n=Vt(Ge().index,e);return(lt(n)?n:e)[se]}()}}return e})(),Ab=(()=>{class e{static{this.\u0275prov=He({token:e,providedIn:"root",factory:()=>null})}}return e})();const Fh={},xv=new Set;function jn(e){xv.has(e)||(xv.add(e),performance?.mark?.("mark_feature_usage",{detail:{feature:e}}))}function Pv(e){let t=!0;return setTimeout(()=>{t&&(t=!1,e())}),"function"==typeof gt.requestAnimationFrame&>.requestAnimationFrame(()=>{t&&(t=!1,e())}),()=>{t=!1}}function kv(e){let t=!0;return queueMicrotask(()=>{t&&e()}),()=>{t=!1}}function Fv(...e){}class dt{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new Nr(!1),this.onMicrotaskEmpty=new Nr(!1),this.onStable=new Nr(!1),this.onError=new Nr(!1),typeof Zone>"u")throw new z(908,!1);Zone.assertZonePatched();const o=this;o._nesting=0,o._outer=o._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(o._inner=o._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(o._inner=o._inner.fork(Zone.longStackTraceZoneSpec)),o.shouldCoalesceEventChangeDetection=!r&&n,o.shouldCoalesceRunChangeDetection=r,o.callbackScheduled=!1,function xb(e){const t=()=>{!function Ob(e){e.isCheckStableRunning||e.callbackScheduled||(e.callbackScheduled=!0,Zone.root.run(()=>{Pv(()=>{e.callbackScheduled=!1,jh(e),e.isCheckStableRunning=!0,Lh(e),e.isCheckStableRunning=!1})}),jh(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(n,r,o,i,u,d)=>{if(function Pb(e){return Vv(e,"__ignore_ng_zone__")}(d))return n.invokeTask(o,i,u,d);try{return Lv(e),n.invokeTask(o,i,u,d)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===i.type||e.shouldCoalesceRunChangeDetection)&&t(),jv(e)}},onInvoke:(n,r,o,i,u,d,f)=>{try{return Lv(e),n.invoke(o,i,u,d,f)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!function kb(e){return Vv(e,"__scheduler_tick__")}(d)&&t(),jv(e)}},onHasTask:(n,r,o,i)=>{n.hasTask(o,i),r===o&&("microTask"==i.change?(e._hasPendingMicrotasks=i.microTask,jh(e),Lh(e)):"macroTask"==i.change&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(n,r,o,i)=>(n.handleError(o,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}(o)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!dt.isInAngularZone())throw new z(909,!1)}static assertNotInAngularZone(){if(dt.isInAngularZone())throw new z(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){const i=this._inner,u=i.scheduleEventTask("NgZoneEvent: "+o,t,Rb,Fv,Fv);try{return i.runTask(u,n,r)}finally{i.cancelTask(u)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}}const Rb={};function Lh(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function jh(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&!0===e.callbackScheduled)}function Lv(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function jv(e){e._nesting--,Lh(e)}class Vh{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new Nr,this.onMicrotaskEmpty=new Nr,this.onStable=new Nr,this.onError=new Nr}run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,o){return t.apply(n,r)}}function Vv(e,t){return!(!Array.isArray(e)||1!==e.length)&&!0===e[0]?.data?.[t]}let ec=(()=>{class e{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){const n=[...this.internalCallbacks];this.internalCallbacks.length=0;for(const r of n)r()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}static{this.\u0275prov=He({token:e,providedIn:"root",factory:()=>new e})}}return e})();function Uo(e){return!!mt(e)}function ud(e,t,n){let r=n?e.styles:null,o=n?e.classes:null,i=0;if(null!==t)for(let u=0;u0&&Um(e,n,i.join(" "))}}(N,$t,x,r),void 0!==n&&function Qb(e,t,n){const r=e.projection=[];for(let o=0;o{class e{static{this.__NG_ELEMENT_ID__=Kb}}return e})();function Kb(){return Zv(Ge(),P())}const Yb=ld,qv=class extends Yb{constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return Fs(this._hostTNode,this._hostLView)}get injector(){return new Ot(this._hostTNode,this._hostLView)}get parentInjector(){const t=Iu(this._hostTNode,this._hostLView);if(wu(t)){const n=xi(t,this._hostLView),r=io(t);return new Ot(n[j].data[r+8],n)}return new Ot(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const n=Qv(this._lContainer);return null!==n&&n[t]||null}get length(){return this._lContainer.length-ct}createEmbeddedView(t,n,r){let o,i;"number"==typeof r?o=r:null!=r&&(o=r.index,i=r.injector);const u=Vi(this._lContainer,t.ssrId),d=t.createEmbeddedViewImpl(n||{},i,u);return this.insertImpl(d,o,Li(this._hostTNode,u)),d}createComponent(t,n,r,o,i){const u=t&&!function Ae(e){return"function"==typeof e}(t);let d;if(u)d=n;else{const A=n||{};d=A.index,r=A.injector,o=A.projectableNodes,i=A.environmentInjector||A.ngModuleRef}const f=u?t:new rc(fe(t)),m=r||this.parentInjector;if(!i&&null==f.ngModule){const x=(u?m:this.parentInjector).get(fn,null);x&&(i=x)}const y=fe(f.componentType??{}),E=Vi(this._lContainer,y?.id??null),N=f.create(m,o,E?.firstChild??null,i);return this.insertImpl(N.hostView,d,Li(this._hostTNode,E)),N}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){const o=t._lView;if(function sf(e){return jt(e[Ie])}(o)){const d=this.indexOf(t);if(-1!==d)this.detach(d);else{const f=o[Ie],m=new qv(f,f[ut],f[Ie]);m.detach(m.indexOf(t))}}const i=this._adjustIndex(n),u=this._lContainer;return qs(u,o,i,r),t.attachToViewContainerRef(),ls(Bh(u),i,t),t}move(t,n){return this.insert(t,n)}indexOf(t){const n=Qv(this._lContainer);return null!==n?n.indexOf(t):-1}remove(t){const n=this._adjustIndex(t,-1),r=ju(this._lContainer,n);r&&(tr(Bh(this._lContainer),n),ql(r[j],r))}detach(t){const n=this._adjustIndex(t,-1),r=ju(this._lContainer,n);return r&&null!=tr(Bh(this._lContainer),n)?new zu(r):null}_adjustIndex(t,n=0){return t??this.length+n}};function Qv(e){return e[8]}function Bh(e){return e[8]||(e[8]=[])}function Zv(e,t){let n;const r=t[e.index];return jt(r)?n=r:(n=Xm(r,t,null,e),t[e.index]=n,Xl(t,n)),Kv(n,t,e,r),new qv(n,e,t)}let Kv=function Xv(e,t,n,r){if(e[nn])return;let o;o=8&n.type?_e(r):function Xb(e,t){const n=e[se],r=n.createComment(""),o=It(t,e);return Fi(n,Ql(n,o),r,function qI(e,t){return e.nextSibling(t)}(n,o),!1),r}(t,n),e[nn]=o},zh=()=>!1;class Gh{constructor(t){this.queryList=t,this.matches=null}clone(){return new Gh(this.queryList)}setDirty(){this.queryList.setDirty()}}class Wh{constructor(t=[]){this.queries=t}createEmbeddedView(t){const n=t.queries;if(null!==n){const r=null!==t.contentQueries?t.contentQueries[0]:n.length,o=[];for(let i=0;it.trim())}(t):t}}class qh{constructor(t=[]){this.queries=t}elementStart(t,n){for(let r=0;r0)r.push(u[d/2]);else{const m=i[d+1],y=t[-f];for(let E=ct;E(V(t),t.value);return n[W]=t,n}(e),r=n[W];return t?.equal&&(r.equal=t.equal),n.set=o=>uo(r,o),n.update=o=>function Pr(e,t){Le()||Qi(),uo(e,t(e.value))}(r,o),n.asReadonly=uy.bind(n),n}function uy(){const e=this[W];if(void 0===e.readonlyFn){const t=()=>this();t[W]=e,e.readonlyFn=t}return e.readonlyFn}function by(e){const t=e.inputConfig,n={};for(const r in t)if(t.hasOwnProperty(r)){const o=t[r];Array.isArray(o)&&o[3]&&(n[r]=o[3])}e.inputTransforms=n}class Hi{}class My{}function _M(e,t){return new Jh(e,t??null,[])}class Jh extends Hi{constructor(t,n,r){super(),this._parent=n,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new Gv(this);const o=mt(t);this._bootstrapComponents=Ln(o.bootstrap),this._r3Injector=R(t,n,[{provide:Hi,useValue:this},{provide:sd,useValue:this.componentFactoryResolver},...r],st(t),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(t)}get injector(){return this._r3Injector}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class ep extends My{constructor(t){super(),this.moduleType=t}create(t){return new Jh(this.moduleType,t,[])}}class _y extends Hi{constructor(t){super(),this.componentFactoryResolver=new Gv(this),this.instance=null;const n=new Jr([...t.providers,{provide:Hi,useValue:this},{provide:sd,useValue:this.componentFactoryResolver}],t.parent||yi(),t.debugName,new Set(["environment"]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}}function tp(e,t,n=null){return new _y({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}let $i=(()=>{class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new Ia.t(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=He({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function pd(e){return!!np(e)&&(Array.isArray(e)||!(e instanceof Map)&&Symbol.iterator in e)}function np(e){return null!==e&&("function"==typeof e||"object"==typeof e)}function Mt(e,t,n){return!Object.is(e[t],n)&&(e[t]=n,!0)}function sc(e,t,n,r,o,i,u,d,f,m){const y=n+te,E=t.firstCreatePass?function PM(e,t,n,r,o,i,u,d,f){const m=t.consts,y=Gs(t,e,4,u||null,d||null);yh(t,n,y,Sn(m,f)),Ai(t,y);const E=y.tView=vh(2,y,r,o,i,t.directiveRegistry,t.pipeRegistry,null,t.schemas,m,null);return null!==t.queries&&(t.queries.template(t,y),E.queries=t.queries.embeddedTView(y)),y}(y,t,e,r,o,i,u,d,f):t.data[y];Kn(E,!1);const S=Ny(t,e,E,n);Ni()&&Zl(t,e,S,E),sn(S,e);const N=Xm(S,e,S,E);return e[y]=N,Xl(e,N),function Yv(e,t,n){return zh(e,t,n)}(N,E,e),ur(E)&&gh(t,e,E),null!=f&&mh(e,E,m),E}function rp(e,t,n,r,o,i,u,d){const f=P(),m=ye();return sc(f,m,e,t,n,r,o,Sn(m.consts,i),u,d),rp}let Ny=function Ay(e,t,n,r){return Yn(!0),t[se].createComment("")};function hp(e,t,n,r){const o=P();return Mt(o,bn(),t)&&(ye(),Ar(function Ze(){const e=ue.lFrame;return Si(e.tView,e.selectedIndex)}(),o,e,t,n,r)),hp}function wd(e,t){return e<<17|t<<2}function Bo(e){return e>>17&32767}function pp(e){return 2|e}function Gi(e){return(131068&e)>>2}function gp(e,t){return-131069&e|t<<2}function mp(e){return 1|e}function aD(e,t,n,r){const o=e[n+1],i=null===t;let u=r?Bo(o):Gi(o),d=!1;for(;0!==u&&(!1===d||i);){const m=e[u+1];C_(e[u],t)&&(d=!0,e[u+1]=r?mp(m):pp(m)),u=r?Bo(m):Gi(m)}d&&(e[n+1]=r?pp(o):mp(o))}function C_(e,t){return null===e||null==t||(Array.isArray(e)?e[1]:e)===t||!(!Array.isArray(e)||"string"!=typeof t)&&Ft(e,t)>=0}function vp(e,t,n,r,o){const u=o?"class":"style";Eh(e,n,t.inputs[u],u,r)}function yp(e,t){return function hr(e,t,n,r){const o=P(),i=ye(),u=function _r(e){const t=ue.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}(2);i.firstUpdatePass&&function vD(e,t,n,r){const o=e.data;if(null===o[n+1]){const i=o[Rt()],u=function mD(e,t){return t>=e.expandoStartIndex}(e,n);(function wD(e,t){return!!(e.flags&(t?8:16))})(i,r)&&null===t&&!u&&(t=!1),t=function N_(e,t,n,r){const o=function hu(e){const t=ue.lFrame.currentDirectiveIndex;return-1===t?null:e[t]}(e);let i=r?t.residualClasses:t.residualStyles;if(null===o)0===(r?t.classBindings:t.styleBindings)&&(n=lc(n=Dp(null,e,t,n,r),t.attrs,r),i=null);else{const u=t.directiveStylingLast;if(-1===u||e[u]!==o)if(n=Dp(o,e,t,n,r),null===i){let f=function A_(e,t,n){const r=n?t.classBindings:t.styleBindings;if(0!==Gi(r))return e[Bo(r)]}(e,t,r);void 0!==f&&Array.isArray(f)&&(f=Dp(null,e,t,f[1],r),f=lc(f,t.attrs,r),function R_(e,t,n,r){e[Bo(n?t.classBindings:t.styleBindings)]=r}(e,t,r,f))}else i=function O_(e,t,n){let r;const o=t.directiveEnd;for(let i=1+t.directiveStylingLast;i0)&&(m=!0)):y=n,o)if(0!==f){const S=Bo(e[d+1]);e[r+1]=wd(S,d),0!==S&&(e[S+1]=gp(e[S+1],r)),e[d+1]=function m_(e,t){return 131071&e|t<<17}(e[d+1],r)}else e[r+1]=wd(d,0),0!==d&&(e[d+1]=gp(e[d+1],r)),d=r;else e[r+1]=wd(f,0),0===d?d=r:e[f+1]=gp(e[f+1],r),f=r;m&&(e[r+1]=pp(e[r+1])),aD(e,y,r,!0),aD(e,y,r,!1),function D_(e,t,n,r,o){const i=o?e.residualClasses:e.residualStyles;null!=i&&"string"==typeof t&&Ft(i,t)>=0&&(n[r+1]=mp(n[r+1]))}(t,y,e,r,i),u=wd(d,f),i?t.classBindings=u:t.styleBindings=u}(o,i,t,n,u,r)}}(i,e,u,r),t!==pe&&Mt(o,u,t)&&function DD(e,t,n,r,o,i,u,d){if(!(3&t.type))return;const f=e.data,m=f[d+1],y=function v_(e){return!(1&~e)}(m)?CD(f,t,n,o,Gi(m),u):void 0;Ed(y)||(Ed(i)||function g_(e){return!(2&~e)}(m)&&(i=CD(f,null,n,o,d,u)),function KI(e,t,n,r,o){if(t)o?e.addClass(n,r):e.removeClass(n,r);else{let i=-1===r.indexOf("-")?void 0:Gl.DashCase;null==o?e.removeStyle(n,r,i):("string"==typeof o&&o.endsWith("!important")&&(o=o.slice(0,-10),i|=Gl.Important),e.setStyle(n,r,o,i))}}(r,u,Ei(Rt(),n),o,i))}(i,i.data[Rt()],o,o[se],e,o[u+1]=function F_(e,t){return null==e||""===e||("string"==typeof t?e+=t:"object"==typeof e&&(e=st(Vo(e)))),e}(t,n),r,u)}(e,t,null,!0),yp}function Dp(e,t,n,r,o){let i=null;const u=n.directiveEnd;let d=n.directiveStylingLast;for(-1===d?d=n.directiveStart:d++;d0;){const f=e[o],m=Array.isArray(f),y=m?f[1]:f,E=null===y;let S=n[o+1];S===pe&&(S=E?we:void 0);let N=E?Gr(S,r):y===r?S:void 0;if(m&&!Ed(N)&&(N=Gr(f,r)),Ed(N)&&(d=N,u))return d;const A=e[o+1];o=u?Bo(A):Gi(A)}if(null!==t){let f=i?t.residualClasses:t.residualStyles;null!=f&&(d=Gr(f,r))}return d}function Ed(e){return void 0!==e}class q_{destroy(t){}updateValue(t,n){}swap(t,n){const r=Math.min(t,n),o=Math.max(t,n),i=this.detach(o);if(o-r>1){const u=this.detach(r);this.attach(r,i),this.attach(o,u)}else this.attach(r,i)}move(t,n){this.attach(n,this.detach(t))}}function Cp(e,t,n,r,o){return e===n&&Object.is(t,r)?1:Object.is(o(e,t),o(n,r))?-1:0}function wp(e,t,n,r){return!(void 0===t||!t.has(r)||(e.attach(n,t.get(r)),t.delete(r),0))}function ED(e,t,n,r,o){if(wp(e,t,r,n(r,o)))e.updateValue(r,o);else{const i=e.create(r,o);e.attach(r,i)}}function ID(e,t,n,r){const o=new Set;for(let i=t;i<=n;i++)o.add(r(i,e.at(i)));return o}class SD{constructor(){this.kvMap=new Map,this._vMap=void 0}has(t){return this.kvMap.has(t)}delete(t){if(!this.has(t))return!1;const n=this.kvMap.get(t);return void 0!==this._vMap&&this._vMap.has(n)?(this.kvMap.set(t,this._vMap.get(n)),this._vMap.delete(n)):this.kvMap.delete(t),!0}get(t){return this.kvMap.get(t)}set(t,n){if(this.kvMap.has(t)){let r=this.kvMap.get(t);void 0===this._vMap&&(this._vMap=new Map);const o=this._vMap;for(;o.has(r);)r=o.get(r);o.set(r,n)}else this.kvMap.set(t,n)}forEach(t){for(let[n,r]of this.kvMap)if(t(r,n),void 0!==this._vMap){const o=this._vMap;for(;o.has(r);)r=o.get(r),t(r,n)}}}function bD(e,t){jn("NgControlFlow");const n=P(),r=bn(),o=n[r]!==pe?n[r]:-1,i=-1!==o?Id(n,te+o):void 0;if(Mt(n,r,e)){const d=q(null);try{if(void 0!==i&&Sh(i,0),-1!==e){const f=te+e,m=Id(n,f),y=Ep(n[j],f),E=Vi(m,y.tView.ssrId);qs(m,Ws(n,y,t,{dehydratedView:E}),0,Li(y,E))}}finally{q(d)}}else if(void 0!==i){const d=rv(i,0);void 0!==d&&(d[Oe]=t)}}class Z_{constructor(t,n,r){this.lContainer=t,this.$implicit=n,this.$index=r}get $count(){return this.lContainer.length-ct}}function MD(e,t){return t}class Y_{constructor(t,n,r){this.hasEmptyBlock=t,this.trackByFn=n,this.liveCollection=r}}function _D(e,t,n,r,o,i,u,d,f,m,y,E,S){jn("NgControlFlow");const N=P(),A=ye(),x=void 0!==f,$=P(),B=d?u.bind($[ot][Oe]):u,F=new Y_(x,B);$[te+e]=F,sc(N,A,e+1,t,n,r,o,Sn(A.consts,i)),x&&sc(N,A,e+2,f,m,y,E,Sn(A.consts,S))}class X_ extends q_{constructor(t,n,r){super(),this.lContainer=t,this.hostLView=n,this.templateTNode=r,this.operationsCounter=void 0,this.needsIndexUpdate=!1}get length(){return this.lContainer.length-ct}at(t){return this.getLView(t)[Oe].$implicit}attach(t,n){const r=n[Qe];this.needsIndexUpdate||=t!==this.length,qs(this.lContainer,n,t,Li(this.templateTNode,r))}detach(t){return this.needsIndexUpdate||=t!==this.length-1,function J_(e,t){return ju(e,t)}(this.lContainer,t)}create(t,n){const r=Vi(this.lContainer,this.templateTNode.tView.ssrId),o=Ws(this.hostLView,this.templateTNode,new Z_(this.lContainer,n,t),{dehydratedView:r});return this.operationsCounter?.recordCreate(),o}destroy(t){ql(t[j],t),this.operationsCounter?.recordDestroy()}updateValue(t,n){this.getLView(t)[Oe].$implicit=n}reset(){this.needsIndexUpdate=!1,this.operationsCounter?.reset()}updateIndexes(){if(this.needsIndexUpdate)for(let t=0;t{e.destroy(f)})}(f,e,i.trackByFn),f.updateIndexes(),i.hasEmptyBlock){const m=bn(),y=0===f.length;if(Mt(r,m,y)){const E=n+2,S=Id(r,E);if(y){const N=Ep(o,E),A=Vi(S,N.tView.ssrId);qs(S,Ws(r,N,void 0,{dehydratedView:A}),0,Li(N,A))}else Sh(S,0)}}}finally{q(t)}}function Id(e,t){return e[t]}function Ep(e,t){return Si(e,t)}function Sd(e,t,n,r){const o=P(),i=ye(),u=te+e,d=o[se],f=i.firstCreatePass?function t0(e,t,n,r,o,i){const u=t.consts,f=Gs(t,e,2,r,Sn(u,o));return yh(t,n,f,Sn(u,i)),null!==f.attrs&&ud(f,f.attrs,!1),null!==f.mergedAttrs&&ud(f,f.mergedAttrs,!0),null!==t.queries&&t.queries.elementStart(t,f),f}(u,i,o,t,n,r):i.data[u],m=ND(i,o,f,d,t,e);o[u]=m;const y=ur(f);return Kn(f,!0),Hm(d,m,f),!function Ys(e){return!(32&~e.flags)}(f)&&Ni()&&Zl(i,o,m,f),0===function uf(){return ue.lFrame.elementDepthCount}()&&sn(m,o),function cf(){ue.lFrame.elementDepthCount++}(),y&&(gh(i,o,f),ph(i,f,o)),null!==r&&mh(o,f),Sd}function bd(){let e=Ge();lu()?function du(){ue.lFrame.isParent=!1}():(e=e.parent,Kn(e,!1));const t=e;(function Ms(e){return ue.skipHydrationRootTNode===e})(t)&&function df(){ue.skipHydrationRootTNode=null}(),function ul(){ue.lFrame.elementDepthCount--}();const n=ye();return n.firstCreatePass&&(Ai(n,e),ys(e)&&n.queries.elementEnd(e)),null!=t.classesWithoutHost&&function Df(e){return!!(8&e.flags)}(t)&&vp(n,t,P(),t.classesWithoutHost,!0),null!=t.stylesWithoutHost&&function Cf(e){return!!(16&e.flags)}(t)&&vp(n,t,P(),t.stylesWithoutHost,!1),bd}function Ip(e,t,n,r){return Sd(e,t,n,r),bd(),Ip}let ND=(e,t,n,r,o,i)=>(Yn(!0),Wl(r,o,function Ti(){return ue.lFrame.currentNamespace}()));function OD(){return P()}const Wi=void 0;var c0=["en",[["a","p"],["AM","PM"],Wi],[["AM","PM"],Wi,Wi],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Wi,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Wi,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Wi,"{1} 'at' {0}",Wi],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function u0(e){const n=Math.floor(Math.abs(e)),r=e.toString().replace(/^[^.]*\.?/,"").length;return 1===n&&0===r?1:5}];let pa={};function Mp(e){const t=function l0(e){return e.toLowerCase().replace(/_/g,"-")}(e);let n=FD(t);if(n)return n;const r=t.split("-")[0];if(n=FD(r),n)return n;if("en"===r)return c0;throw new z(701,!1)}function kD(e){return Mp(e)[ga.PluralCase]}function FD(e){return e in pa||(pa[e]=gt.ng&>.ng.common&>.ng.common.locales&>.ng.common.locales[e]),pa[e]}var ga=function(e){return e[e.LocaleId=0]="LocaleId",e[e.DayPeriodsFormat=1]="DayPeriodsFormat",e[e.DayPeriodsStandalone=2]="DayPeriodsStandalone",e[e.DaysFormat=3]="DaysFormat",e[e.DaysStandalone=4]="DaysStandalone",e[e.MonthsFormat=5]="MonthsFormat",e[e.MonthsStandalone=6]="MonthsStandalone",e[e.Eras=7]="Eras",e[e.FirstDayOfWeek=8]="FirstDayOfWeek",e[e.WeekendRange=9]="WeekendRange",e[e.DateFormat=10]="DateFormat",e[e.TimeFormat=11]="TimeFormat",e[e.DateTimeFormat=12]="DateTimeFormat",e[e.NumberSymbols=13]="NumberSymbols",e[e.NumberFormats=14]="NumberFormats",e[e.CurrencyCode=15]="CurrencyCode",e[e.CurrencySymbol=16]="CurrencySymbol",e[e.CurrencyName=17]="CurrencyName",e[e.Currencies=18]="Currencies",e[e.Directionality=19]="Directionality",e[e.PluralCase=20]="PluralCase",e[e.ExtraData=21]="ExtraData",e}(ga||{});const ma="en-US";let LD=ma;let nC=(e,t,n)=>{};function Np(e,t,n,r){const o=P(),i=ye(),u=Ge();return function Ap(e,t,n,r,o,i,u){const d=ur(r),m=e.firstCreatePass&&tv(e),y=t[Oe],E=ev(t);let S=!0;if(3&r.type||u){const x=It(r,t),$=u?u(x):x,B=E.length,F=u?Pe=>u(_e(Pe[r.index])):r.index;nC(x,o,i);let ae=null;if(!u&&d&&(ae=function X0(e,t,n,r){const o=e.cleanup;if(null!=o)for(let i=0;if?d[f]:null}"string"==typeof u&&(i+=2)}return null}(e,t,o,r.index)),null!==ae)(ae.__ngLastListenerFn__||ae).__ngNextListenerFn__=i,ae.__ngLastListenerFn__=i,S=!1;else{i=sC(r,t,y,i);const Pe=n.listen($,o,i);E.push(i,Pe),m&&m.push(o,F,B,B+1)}}else i=sC(r,t,y,i);const N=r.outputs;let A;if(S&&null!==N&&(A=N[o])){const x=A.length;if(x)for(let $=0;$-1?Vt(e.index,t):t,5);let d=iC(t,n,r,i),f=o.__ngNextListenerFn__;for(;f;)d=iC(t,n,f,i)&&d,f=f.__ngNextListenerFn__;return d}}function aC(e=1){return function vl(e){return(ue.lFrame.contextLView=function sl(e,t){for(;e>0;)t=t[To],e--;return t}(e,ue.lFrame.contextLView))[Oe]}(e)}function vC(e,t,n,r){ry(e,t,n,r)}function yC(e){const t=P(),n=ye(),r=pu();As(r+1);const o=Yh(n,r);if(e.dirty&&function bi(e){return!(4&~e[U])}(t)===!(2&~o.metadata.flags)){if(null===o.matches)e.reset([]);else{const i=iy(t,r);e.reset(i,_g),e.notifyOnChanges()}return!0}return!1}function DC(){return function Kh(e,t){return e[sr].queries[t].queryList}(P(),pu())}function NC(e,t=""){const n=P(),r=ye(),o=e+te,i=r.firstCreatePass?Gs(r,o,1,t,null):r.data[o],u=AC(r,n,i,t,e);n[o]=u,Ni()&&Zl(r,n,u,i),Kn(i,!1)}let AC=(e,t,n,r,o)=>(Yn(!0),function ih(e,t){return e.createText(t)}(t[se],r));function Op(e){return Nd("",e,""),Op}function Nd(e,t,n){const r=P(),o=function ia(e,t,n,r){return Mt(e,bn(),n)?t+re(n)+r:pe}(r,e,t,n);return o!==pe&&function ao(e,t,n){const r=Ei(t,e);!function _m(e,t,n){e.setValue(t,n)}(e[se],r,n)}(r,Rt(),o),Nd}let MT=(()=>{class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){const r=Yr(0,n.type),o=r.length>0?tp([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(const n of this.cachedInjectors.values())null!==n&&n.destroy()}finally{this.cachedInjectors.clear()}}static{this.\u0275prov=He({token:e,providedIn:"environment",factory:()=>new e(ee(fn))})}}return e})();function $C(e){jn("NgStandalone"),e.getStandaloneInjector=t=>t.get(MT).getOrCreateStandaloneInjector(e)}class lw{constructor(t){this.full=t;const n=t.split(".");this.major=n[0],this.minor=n[1],this.patch=n.slice(2).join(".")}}let dw=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=He({token:e,factory:e.\u0275fac,providedIn:"platform"})}}return e})();const mw=new he(""),vw=new he("");let $p,VN=(()=>{class e{constructor(n,r,o){this._ngZone=n,this.registry=r,this._isZoneStable=!0,this._callbacks=[],this.taskTrackingZone=null,$p||(function UN(e){$p=e}(o),o.addToWindow(r)),this._watchAngularEvents(),n.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{dt.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}isStable(){return this._isZoneStable&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let n=this._callbacks.pop();clearTimeout(n.timeoutId),n.doneCb()}});else{let n=this.getPendingTasks();this._callbacks=this._callbacks.filter(r=>!r.updateCb||!r.updateCb(n)||(clearTimeout(r.timeoutId),!1))}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(n=>({source:n.source,creationLocation:n.creationLocation,data:n.data})):[]}addCallback(n,r,o){let i=-1;r&&r>0&&(i=setTimeout(()=>{this._callbacks=this._callbacks.filter(u=>u.timeoutId!==i),n()},r)),this._callbacks.push({doneCb:n,timeoutId:i,updateCb:o})}whenStable(n,r,o){if(o&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(n,r,o),this._runCallbacksIfReady()}registerApplication(n){this.registry.registerApplication(n,this)}unregisterApplication(n){this.registry.unregisterApplication(n)}findProviders(n,r,o){return[]}static{this.\u0275fac=function(r){return new(r||e)(ee(dt),ee(yw),ee(vw))}}static{this.\u0275prov=He({token:e,factory:e.\u0275fac})}}return e})(),yw=(()=>{class e{constructor(){this._applications=new Map}registerApplication(n,r){this._applications.set(n,r)}unregisterApplication(n){this._applications.delete(n)}unregisterAllApplications(){this._applications.clear()}getTestability(n){return this._applications.get(n)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(n,r=!0){return $p?.findTestabilityInTree(this,n,r)??null}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=He({token:e,factory:e.\u0275fac,providedIn:"platform"})}}return e})();function Bp(e){return!!e&&"function"==typeof e.then}function Dw(e){return!!e&&"function"==typeof e.subscribe}const HN=new he("");let zp=(()=>{class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r}),this.appInits=K(HN,{optional:!0})??[]}runInitializers(){if(this.initialized)return;const n=[];for(const o of this.appInits){const i=o();if(Bp(i))n.push(i);else if(Dw(i)){const u=new Promise((d,f)=>{i.subscribe({complete:d,error:f})});n.push(u)}}const r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),0===n.length&&r(),this.initialized=!0}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=He({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();const xd=new he("");let gr=(()=>{class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=K(Nl),this.afterRenderEffectManager=K(ec),this.zonelessEnabled=K(Ju),this.externalTestViews=new Set,this.beforeRender=new Ki.B,this.afterTick=new Ki.B,this.componentTypes=[],this.components=[],this.isStable=K($i).hasPendingTasks.pipe((0,bc.T)(n=>!n)),this._injector=K(fn)}get allViews(){return[...this.externalTestViews.keys(),...this._views]}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(n,r){const o=n instanceof Rv;if(!this._injector.get(zp).done)throw!o&&Dn(n),new z(405,!1);let u;u=o?n:this._injector.get(sd).resolveComponentFactory(n),this.componentTypes.push(u.componentType);const d=function $N(e){return e.isBoundToModule}(u)?void 0:this._injector.get(Hi),m=u.create(L.NULL,[],r||u.selector,d),y=m.location.nativeElement,E=m.injector.get(mw,null);return E?.registerApplication(y),m.onDestroy(()=>{this.detachView(m.hostView),Pd(this.components,m),E?.unregisterApplication(y)}),this._loadComponent(m),m}tick(){this._tick(!0)}_tick(n){if(this._runningTick)throw new z(101,!1);const r=q(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(n)}catch(o){this.internalErrorHandler(o)}finally{this._runningTick=!1,q(r),this.afterTick.next()}}detectChangesInAttachedViews(n){let r=null;this._injector.destroyed||(r=this._injector.get(kh,null,{optional:!0}));let o=0;const i=this.afterRenderEffectManager;for(;o<10;){const u=0===o;if(n||!u){this.beforeRender.next(u);for(let{_lView:d,notifyErrorHandler:f}of this._views)zN(d,f,u,this.zonelessEnabled)}else r?.begin?.(),r?.end?.();if(o++,i.executeInternalCallbacks(),!this.allViews.some(({_lView:d})=>Oo(d))&&(i.execute(),!this.allViews.some(({_lView:d})=>Oo(d))))break}}attachView(n){const r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){const r=n;Pd(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);const r=this._injector.get(xd,[]);[...this._bootstrapListeners,...r].forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>Pd(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new z(406,!1);const n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=He({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function Pd(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}function zN(e,t,n,r){(n||Oo(e))&&ed(e,t,n&&!r?0:1)}class GN{constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}}let WN=(()=>{class e{compileModuleSync(n){return new ep(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){const r=this.compileModuleSync(n),i=Ln(mt(n).declarations).reduce((u,d)=>{const f=fe(d);return f&&u.push(new rc(f)),u},[]);return new GN(r,i)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=He({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),ZN=(()=>{class e{constructor(){this.zone=K(dt),this.changeDetectionScheduler=K(Zs),this.applicationRef=K(gr)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=He({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function Gp({ngZoneFactory:e,ignoreChangesOutsideZone:t}){return e??=()=>new dt(Wp()),[{provide:dt,useFactory:e},{provide:dn,multi:!0,useFactory:()=>{const n=K(ZN,{optional:!0});return()=>n.initialize()}},{provide:dn,multi:!0,useFactory:()=>{const n=K(XN);return()=>{n.initialize()}}},{provide:Nl,useFactory:KN},!0===t?{provide:Av,useValue:!0}:[]]}function KN(){const e=K(dt),t=K(xe);return n=>e.runOutsideAngular(()=>t.handleError(n))}function YN(e){const t=e?.ignoreChangesOutsideZone,n=Gp({ngZoneFactory:()=>{const r=Wp(e);return r.shouldCoalesceEventChangeDetection&&jn("NgZone_CoalesceEvent"),new dt(r)},ignoreChangesOutsideZone:t});return Zr([[],{provide:Ju,useValue:!1},n])}function Wp(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}let XN=(()=>{class e{constructor(){this.subscription=new co.yU,this.initialized=!1,this.zone=K(dt),this.pendingTasks=K($i)}initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{dt.assertNotInAngularZone(),queueMicrotask(()=>{null!==n&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{dt.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=He({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),Cc=(()=>{class e{constructor(){this.appRef=K(gr),this.taskService=K($i),this.ngZone=K(dt),this.zonelessEnabled=K(Ju),this.disableScheduling=K(Av,{optional:!0})??!1,this.zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run,this.schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}],this.subscriptions=new co.yU,this.cancelScheduledCallback=null,this.shouldRefreshViews=!1,this.useMicrotaskScheduler=!1,this.runningTick=!1,this.pendingRenderTaskId=null,this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{this.runningTick||this.cleanup()})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()})),this.disableScheduling||=!this.zonelessEnabled&&(this.ngZone instanceof Vh||!this.zoneIsDefined)}notify(n){if(!this.zonelessEnabled&&5===n)return;switch(n){case 3:case 2:case 0:case 4:case 5:case 1:this.shouldRefreshViews=!0}if(!this.shouldScheduleTick())return;const r=this.useMicrotaskScheduler?kv:Pv;this.pendingRenderTaskId=this.taskService.add(),this.zoneIsDefined?Zone.root.run(()=>{this.cancelScheduledCallback=r(()=>{this.tick(this.shouldRefreshViews)})}):this.cancelScheduledCallback=r(()=>{this.tick(this.shouldRefreshViews)})}shouldScheduleTick(){return!(this.disableScheduling||null!==this.pendingRenderTaskId||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&dt.isInAngularZone())}tick(n){if(this.runningTick||this.appRef.destroyed)return;const r=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick(n)},void 0,this.schedulerTickApplyArgs)}catch(o){throw this.taskService.remove(r),o}finally{this.cleanup()}this.useMicrotaskScheduler=!0,kv(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(r)})}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.shouldRefreshViews=!1,this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,null!==this.pendingRenderTaskId){const n=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(n)}}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=He({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();const Fd=new he("",{providedIn:"root",factory:()=>K(Fd,le.Optional|le.SkipSelf)||function JN(){return typeof $localize<"u"&&$localize.locale||ma}()}),eA=new he("",{providedIn:"root",factory:()=>"USD"}),Qp=new he("");let zo=null;let Ow=(()=>{class e{static{this.__NG_ELEMENT_ID__=iA}}return e})();function iA(e){return function sA(e,t,n){if(to(e)&&!n){const r=Vt(e.index,t);return new zu(r,r)}return 47&e.type?new zu(t[ot],t):null}(Ge(),P(),!(16&~e))}class Fw{constructor(){}supports(t){return pd(t)}create(t){return new dA(t)}}const lA=(e,t)=>t;class dA{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||lA}forEachItem(t){let n;for(n=this._itHead;null!==n;n=n._next)t(n)}forEachOperation(t){let n=this._itHead,r=this._removalsHead,o=0,i=null;for(;n||r;){const u=!r||n&&n.currentIndex{u=this._trackByFn(o,d),null!==n&&Object.is(n.trackById,u)?(r&&(n=this._verifyReinsertion(n,d,u,o)),Object.is(n.item,d)||this._addIdentityChange(n,d)):(n=this._mismatch(n,d,u,o),r=!0),n=n._next,o++}),this.length=o;return this._truncate(n),this.collection=t,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let t;for(t=this._previousItHead=this._itHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;null!==t;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;null!==t;t=t._nextMoved)t.previousIndex=t.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,n,r,o){let i;return null===t?i=this._itTail:(i=t._prev,this._remove(t)),null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(r,null))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._reinsertAfter(t,i,o)):null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(r,o))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._moveAfter(t,i,o)):t=this._addAfter(new fA(n,r),i,o),t}_verifyReinsertion(t,n,r,o){let i=null===this._unlinkedRecords?null:this._unlinkedRecords.get(r,null);return null!==i?t=this._reinsertAfter(i,t._prev,o):t.currentIndex!=o&&(t.currentIndex=o,this._addToMoves(t,o)),t}_truncate(t){for(;null!==t;){const n=t._next;this._addToRemovals(this._unlink(t)),t=n}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,n,r){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const o=t._prevRemoved,i=t._nextRemoved;return null===o?this._removalsHead=i:o._nextRemoved=i,null===i?this._removalsTail=o:i._prevRemoved=o,this._insertAfter(t,n,r),this._addToMoves(t,r),t}_moveAfter(t,n,r){return this._unlink(t),this._insertAfter(t,n,r),this._addToMoves(t,r),t}_addAfter(t,n,r){return this._insertAfter(t,n,r),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,n,r){const o=null===n?this._itHead:n._next;return t._next=o,t._prev=n,null===o?this._itTail=t:o._prev=t,null===n?this._itHead=t:n._next=t,null===this._linkedRecords&&(this._linkedRecords=new Lw),this._linkedRecords.put(t),t.currentIndex=r,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const n=t._prev,r=t._next;return null===n?this._itHead=r:n._next=r,null===r?this._itTail=n:r._prev=n,t}_addToMoves(t,n){return t.previousIndex===n||(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t),t}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new Lw),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,n){return t.item=n,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class fA{constructor(t,n){this.item=t,this.trackById=n,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class hA{constructor(){this._head=null,this._tail=null}add(t){null===this._head?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,n){let r;for(r=this._head;null!==r;r=r._nextDup)if((null===n||n<=r.currentIndex)&&Object.is(r.trackById,t))return r;return null}remove(t){const n=t._prevDup,r=t._nextDup;return null===n?this._head=r:n._nextDup=r,null===r?this._tail=n:r._prevDup=n,null===this._head}}class Lw{constructor(){this.map=new Map}put(t){const n=t.trackById;let r=this.map.get(n);r||(r=new hA,this.map.set(n,r)),r.add(t)}get(t,n){const o=this.map.get(t);return o?o.get(t,n):null}remove(t){const n=t.trackById;return this.map.get(n).remove(t)&&this.map.delete(n),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function jw(e,t,n){const r=e.previousIndex;if(null===r)return r;let o=0;return n&&r{if(n&&n.key===o)this._maybeAddToChanges(n,r),this._appendAfter=n,n=n._next;else{const i=this._getOrCreateRecordForKey(o,r);n=this._insertBeforeOrAppend(n,i)}}),n){n._prev&&(n._prev._next=null),this._removalsHead=n;for(let r=n;null!==r;r=r._nextRemoved)r===this._mapHead&&(this._mapHead=null),this._records.delete(r.key),r._nextRemoved=r._next,r.previousValue=r.currentValue,r.currentValue=null,r._prev=null,r._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,n){if(t){const r=t._prev;return n._next=t,n._prev=r,t._prev=n,r&&(r._next=n),t===this._mapHead&&(this._mapHead=n),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=n,n._prev=this._appendAfter):this._mapHead=n,this._appendAfter=n,null}_getOrCreateRecordForKey(t,n){if(this._records.has(t)){const o=this._records.get(t);this._maybeAddToChanges(o,n);const i=o._prev,u=o._next;return i&&(i._next=u),u&&(u._prev=i),o._next=null,o._prev=null,o}const r=new gA(t);return this._records.set(t,r),r.currentValue=n,this._addToAdditions(r),r}_reset(){if(this.isDirty){let t;for(this._previousMapHead=this._mapHead,t=this._previousMapHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._changesHead;null!==t;t=t._nextChanged)t.previousValue=t.currentValue;for(t=this._additionsHead;null!=t;t=t._nextAdded)t.previousValue=t.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(t,n){Object.is(n,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=n,this._addToChanges(t))}_addToAdditions(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)}_addToChanges(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)}_forEach(t,n){t instanceof Map?t.forEach(n):Object.keys(t).forEach(r=>n(t[r],r))}}class gA{constructor(t){this.key=t,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function Uw(){return new eg([new Fw])}let eg=(()=>{class e{static{this.\u0275prov=He({token:e,providedIn:"root",factory:Uw})}constructor(n){this.factories=n}static create(n,r){if(null!=r){const o=r.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:r=>e.create(n,r||Uw()),deps:[[e,new cs,new zn]]}}find(n){const r=this.factories.find(o=>o.supports(n));if(null!=r)return r;throw new z(901,!1)}}return e})();function Hw(){return new tg([new Vw])}let tg=(()=>{class e{static{this.\u0275prov=He({token:e,providedIn:"root",factory:Hw})}constructor(n){this.factories=n}static create(n,r){if(r){const o=r.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:r=>e.create(n,r||Hw()),deps:[[e,new cs,new zn]]}}find(n){const r=this.factories.find(o=>o.supports(n));if(r)return r;throw new z(901,!1)}}return e})();function OA(e){try{const{rootComponent:t,appProviders:n,platformProviders:r}=e,o=function oA(e=[]){if(zo)return zo;const t=function Nw(e=[],t){return L.create({name:t,providers:[{provide:gs,useValue:"platform"},{provide:Qp,useValue:new Set([()=>zo=null])},...e]})}(e);return zo=t,function Cw(){!function Zi(e){Wo=e}(()=>{throw new z(600,!1)})}(),function Aw(e){e.get(qg,null)?.forEach(n=>n())}(t),t}(r),i=[Gp({}),{provide:Zs,useExisting:Cc},...n||[]],d=new _y({providers:i,parent:o,debugName:"",runEnvironmentInitializers:!1}).injector,f=d.get(dt);return f.run(()=>{d.resolveInjectorInitializers();const m=d.get(xe,null);let y;f.runOutsideAngular(()=>{y=f.onError.subscribe({next:N=>{m.handleError(N)}})});const E=()=>d.destroy(),S=o.get(Qp);return S.add(E),d.onDestroy(()=>{y.unsubscribe(),S.delete(E)}),function ww(e,t,n){try{const r=n();return Bp(r)?r.catch(o=>{throw t.runOutsideAngular(()=>e.handleError(o)),o}):r}catch(r){throw t.runOutsideAngular(()=>e.handleError(r)),r}}(m,f,()=>{const N=d.get(zp);return N.runInitializers(),N.donePromise.then(()=>{!function jD(e){"string"==typeof e&&(LD=e.toLowerCase().replace(/_/g,"-"))}(d.get(Fd,ma)||ma);const x=d.get(gr);return void 0!==t&&x.bootstrap(t),x})})})}catch(t){return Promise.reject(t)}}function XA(e){return"boolean"==typeof e?e:null!=e&&"false"!==e}function eR(e,t){jn("NgSignals");const n=function et(e){const t=Object.create(wa);t.computation=e;const n=()=>{if(Ue(t),V(t),t.value===Ke)throw t.error;return t.value};return n[W]=t,n}(e);return t?.equal&&(n[W].equal=t.equal),n}function tR(e){const t=q(null);try{return e()}finally{q(t)}}}},ft=>{ft(ft.s=259)}]); \ No newline at end of file diff --git a/frontend/dist/kinetix-frontend/runtime.16fe48dffc610f9c.js b/frontend/dist/kinetix-frontend/runtime.16fe48dffc610f9c.js deleted file mode 100644 index 4c0d6f3..0000000 --- a/frontend/dist/kinetix-frontend/runtime.16fe48dffc610f9c.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,v={},m={};function r(e){var o=m[e];if(void 0!==o)return o.exports;var t=m[e]={exports:{}};return v[e](t,t.exports,r),t.exports}r.m=v,e=[],r.O=(o,t,i,f)=>{if(!t){var a=1/0;for(n=0;n=f)&&Object.keys(r.O).every(b=>r.O[b](t[u]))?t.splice(u--,1):(s=!1,f0&&e[n-1][2]>f;n--)e[n]=e[n-1];e[n]=[t,i,f]},r.d=(e,o)=>{for(var t in o)r.o(o,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((o,t)=>(r.f[t](e,o),o),[])),r.u=e=>e+".d3df5d187c1cfe3b.js",r.miniCssF=e=>{},r.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),(()=>{var e={},o="kinetix-frontend:";r.l=(t,i,f,n)=>{if(e[t])e[t].push(i);else{var a,s;if(void 0!==f)for(var u=document.getElementsByTagName("script"),l=0;l{a.onerror=a.onload=null,clearTimeout(p);var h=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),h&&h.forEach(_=>_(b)),g)return g(b)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=c.bind(null,a.onerror),a.onload=c.bind(null,a.onload),s&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:o=>o},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={121:0};r.f.j=(i,f)=>{var n=r.o(e,i)?e[i]:void 0;if(0!==n)if(n)f.push(n[2]);else if(121!=i){var a=new Promise((d,c)=>n=e[i]=[d,c]);f.push(n[2]=a);var s=r.p+r.u(i),u=new Error;r.l(s,d=>{if(r.o(e,i)&&(0!==(n=e[i])&&(e[i]=void 0),n)){var c=d&&("load"===d.type?"missing":d.type),p=d&&d.target&&d.target.src;u.message="Loading chunk "+i+" failed.\n("+c+": "+p+")",u.name="ChunkLoadError",u.type=c,u.request=p,n[1](u)}},"chunk-"+i,i)}else e[i]=0},r.O.j=i=>0===e[i];var o=(i,f)=>{var u,l,[n,a,s]=f,d=0;if(n.some(p=>0!==e[p])){for(u in a)r.o(a,u)&&(r.m[u]=a[u]);if(s)var c=s(r)}for(i&&i(f);d -
-

- KINETIX INTRANET -

-
MODULAR AGENT ARCHITECTURE
+
+ +
+
+ +
+ Kinetix + Intranet Corporativa +
+
+
Consorcio · 2026
-
+
-
- © 2026 Kinetix Corp. All rights reserved. +
+ © 2026 Kinetix + + Todos los derechos reservados + + SSL/TLS Activo
+
` }) -export class AppComponent {} +export class AppComponent { + private router = inject(Router); + + isLoginView(): boolean { + return this.router.url.includes('/login'); + } +} diff --git a/frontend/src/app/app.routes.ts b/frontend/src/app/app.routes.ts index b483ded..a9de31f 100644 --- a/frontend/src/app/app.routes.ts +++ b/frontend/src/app/app.routes.ts @@ -1,4 +1,5 @@ import { Routes } from '@angular/router'; +import { authGuard } from './core/guards/auth.guard'; export const routes: Routes = [ { @@ -6,9 +7,33 @@ export const routes: Routes = [ redirectTo: 'dashboard', pathMatch: 'full' }, + { + path: 'login', + loadComponent: () => import('./features/auth/login.component').then(m => m.LoginComponent) + }, { path: 'dashboard', + canActivate: [authGuard], loadComponent: () => import('./features/dashboard/dashboard.component').then(m => m.DashboardComponent) + }, + { + path: 'reservas', + canActivate: [authGuard], + children: [ + { + path: '', + redirectTo: 'calendario', + pathMatch: 'full' + }, + { + path: 'calendario', + loadComponent: () => import('./features/reservas/calendar-booking/calendar-booking.component').then(m => m.CalendarBookingComponent) + }, + { + path: 'nuevo', + loadComponent: () => import('./features/reservas/reserva-form/reserva-form.component').then(m => m.ReservaFormComponent) + } + ] } ]; // Modules for each subagent will be lazily loaded here. diff --git a/frontend/src/app/core/guards/auth.guard.ts b/frontend/src/app/core/guards/auth.guard.ts new file mode 100644 index 0000000..7e1c001 --- /dev/null +++ b/frontend/src/app/core/guards/auth.guard.ts @@ -0,0 +1,15 @@ +import { inject } from '@angular/core'; +import { Router, CanActivateFn } from '@angular/router'; + +export const authGuard: CanActivateFn = (route, state) => { + const router = inject(Router); + const token = localStorage.getItem('kinetix_token'); + + if (token) { + return true; + } + + // Redirect to login if not authenticated + router.navigate(['/login']); + return false; +}; diff --git a/frontend/src/app/features/auth/login.component.css b/frontend/src/app/features/auth/login.component.css new file mode 100644 index 0000000..e0de212 --- /dev/null +++ b/frontend/src/app/features/auth/login.component.css @@ -0,0 +1,340 @@ +/* ========================================================= + LOGIN COMPONENT — Executive Suite (Light Mode) + Fondo blanco marfil, card blanca con sombras suaves, + acentos joya, tipografía oscura elegante. + ========================================================= */ + +.login-page { + min-height: 100vh; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + background: #F5F4F1; + background-image: + radial-gradient(ellipse at 25% 15%, rgba(201, 151, 60, 0.06) 0%, transparent 55%), + radial-gradient(ellipse at 75% 85%, rgba(55, 48, 163, 0.05) 0%, transparent 60%); + padding: 24px; + position: relative; + overflow: hidden; + box-sizing: border-box; +} + +/* Subtle ambient shapes */ +.glow-tl { + position: absolute; + width: 500px; + height: 500px; + border-radius: 50%; + background: radial-gradient(circle, rgba(201, 151, 60, 0.05) 0%, transparent 70%); + top: -180px; + left: -180px; + pointer-events: none; +} + +.glow-br { + position: absolute; + width: 400px; + height: 400px; + border-radius: 50%; + background: radial-gradient(circle, rgba(55, 48, 163, 0.04) 0%, transparent 70%); + bottom: -140px; + right: -140px; + pointer-events: none; +} + +/* ── Login Card ── */ +.login-card { + position: relative; + z-index: 1; + width: 100%; + max-width: 440px; + background: #FFFFFF; + border: 1px solid rgba(15, 13, 10, 0.08); + border-radius: 24px; + padding: 48px 42px; + box-shadow: + 0 1px 3px rgba(15, 13, 10, 0.04), + 0 16px 48px rgba(15, 13, 10, 0.08), + 0 0 0 1px rgba(15, 13, 10, 0.02); + display: flex; + flex-direction: column; + gap: 22px; +} + +/* Inner decorative border — gold accent */ +.login-card::before { + content: ''; + position: absolute; + inset: 10px; + border: 1px solid rgba(201, 151, 60, 0.12); + border-radius: 16px; + pointer-events: none; +} + +/* ── Brand ── */ +.login-brand { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + text-align: center; +} + +.login-logo-wrap { + width: 60px; + height: 60px; + border-radius: 16px; + background: linear-gradient(135deg, #0D1B2A, #1A0E2E); + border: 1px solid rgba(201, 151, 60, 0.18); + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 6px 20px rgba(13, 27, 42, 0.22); + margin-bottom: 4px; +} + +.login-logo-icon { width: 34px; height: 34px; } + +.login-eyebrow { + font-family: 'Outfit', sans-serif; + font-size: 9px; + font-weight: 700; + letter-spacing: 0.22em; + text-transform: uppercase; + color: #A8A29E; + margin: 0; +} + +.login-title { + font-family: 'Inter', 'Outfit', sans-serif; + font-size: 28px; + font-weight: 900; + letter-spacing: 2px; + text-transform: uppercase; + color: #0F0D0A; + margin: 0; + line-height: 1; +} + +.login-title-gold { + background: linear-gradient(90deg, #C9973C, #A67C28); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.login-sub { + font-size: 11px; + color: #A8A29E; + margin: 0; + font-weight: 400; +} + +.login-sep { + height: 1px; + background: linear-gradient(90deg, transparent, rgba(15, 13, 10, 0.08), transparent); +} + +/* ── Form ── */ +.login-form { + display: flex; + flex-direction: column; + gap: 14px; +} + +.field { + display: flex; + flex-direction: column; + gap: 7px; +} + +.field-lbl { + display: flex; + align-items: center; + gap: 6px; + font-size: 9px; + font-weight: 700; + letter-spacing: 0.18em; + text-transform: uppercase; + color: #78716C; +} + +.field-lbl-icon { + width: 12px; + height: 12px; + color: #A8A29E; + flex-shrink: 0; +} + +.field-input { + height: 54px; + width: 100%; + padding: 0 22px; + background: #F5F4F1; + border: 1px solid rgba(15, 13, 10, 0.12); + border-radius: 9999px; + color: #0F0D0A; + font-family: 'Outfit', sans-serif; + font-size: 14px; + font-weight: 400; + outline: none; + transition: border-color 0.2s, box-shadow 0.2s; + box-sizing: border-box; +} + +.field-input::placeholder { color: #A8A29E; } + +.field-input:focus { + border-color: #C9973C; + box-shadow: 0 0 0 3px rgba(201, 151, 60, 0.12); + background: #FFFFFF; +} + +/* ── CTA Button ── */ +.btn-cta { + width: 100%; + height: 54px; + border-radius: 9999px; + background: linear-gradient(135deg, #0D1B2A, #1A0E2E); + border: none; + color: #fff; + font-family: 'Inter', sans-serif; + font-size: 11px; + font-weight: 900; + letter-spacing: 0.16em; + text-transform: uppercase; + cursor: pointer; + transition: transform 0.2s, box-shadow 0.2s; + box-shadow: 0 4px 20px rgba(13, 27, 42, 0.25); + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + margin-top: 4px; +} + +.btn-cta:hover { + transform: translateY(-2px); + box-shadow: 0 8px 30px rgba(13, 27, 42, 0.35); +} + +.btn-cta:active { transform: translateY(0); } +.btn-cta:disabled { opacity: 0.65; cursor: not-allowed; transform: none; } + +/* ── Error ── */ +.login-error { + display: flex; + align-items: center; + gap: 8px; + padding: 12px 16px; + background: rgba(220, 38, 38, 0.06); + border: 1px solid rgba(220, 38, 38, 0.14); + border-radius: 12px; + color: #B91C1C; + font-size: 12px; + font-weight: 500; + animation: fadeUp 0.3s ease; +} + +.login-error svg { width: 15px; height: 15px; flex-shrink: 0; } + +@keyframes fadeUp { + from { opacity: 0; transform: translateY(-8px); } + to { opacity: 1; transform: translateY(0); } +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +/* ── SSO Divider ── */ +.sso-divider { + display: flex; + align-items: center; + gap: 10px; +} + +.sso-line { + flex: 1; + height: 1px; + background: rgba(15, 13, 10, 0.08); +} + +.sso-label { + font-size: 9px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.16em; + color: #A8A29E; + white-space: nowrap; +} + +/* ── SSO Button ── */ +.btn-sso { + width: 100%; + height: 52px; + border-radius: 9999px; + background: #F5F4F1; + border: 1px solid rgba(15, 13, 10, 0.10); + display: flex; + align-items: center; + gap: 14px; + padding: 0 20px; + cursor: pointer; + transition: background 0.2s, border-color 0.2s, transform 0.2s, box-shadow 0.2s; + font-family: 'Outfit', sans-serif; +} + +.btn-sso:hover { + background: #EEECE7; + border-color: rgba(201, 151, 60, 0.25); + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(15, 13, 10, 0.08); +} + +.btn-sso:disabled { opacity: 0.6; cursor: not-allowed; transform: none; } + +.ms-logo { width: 20px; height: 20px; flex-shrink: 0; } + +.sso-text { flex: 1; text-align: left; } + +.sso-provider { + display: block; + font-size: 13px; + font-weight: 600; + color: #0F0D0A; +} + +.sso-hint { + display: block; + font-size: 10px; + color: #A8A29E; +} + +.sso-arr { + width: 16px; + height: 16px; + color: #A8A29E; + flex-shrink: 0; +} + +/* ── Security Footer ── */ +.login-security { + display: flex; + align-items: center; + justify-content: center; + gap: 6px; + font-size: 9px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; + color: #D6D3D1; +} + +.login-security svg { width: 11px; height: 11px; color: #D6D3D1; } + +@media (max-width: 480px) { + .login-card { padding: 28px 22px; } + .login-title { font-size: 22px; letter-spacing: 1px; } +} diff --git a/frontend/src/app/features/auth/login.component.html b/frontend/src/app/features/auth/login.component.html new file mode 100644 index 0000000..ac16761 --- /dev/null +++ b/frontend/src/app/features/auth/login.component.html @@ -0,0 +1,135 @@ + + + diff --git a/frontend/src/app/features/auth/login.component.ts b/frontend/src/app/features/auth/login.component.ts new file mode 100644 index 0000000..271a314 --- /dev/null +++ b/frontend/src/app/features/auth/login.component.ts @@ -0,0 +1,76 @@ +import { Component, signal, inject } from '@angular/core'; +import { Router } from '@angular/router'; +import { CommonModule } from '@angular/common'; + +@Component({ + selector: 'app-login', + standalone: true, + imports: [CommonModule], + templateUrl: './login.component.html', + styleUrls: ['./login.component.css'] +}) +export class LoginComponent { + private router = inject(Router); + + email = signal(''); + password = signal(''); + errorMsg = signal(''); + loading = signal(false); + + getVal(event: Event): string { + return (event.target as HTMLInputElement).value; + } + + onSubmit(event: Event) { + event.preventDefault(); + this.loginLocal(); + } + + loginLocal() { + const em = this.email(); + const pw = this.password(); + + if (!em || !pw) { + this.errorMsg.set('Por favor ingresa tu correo y contraseña corporativos.'); + return; + } + + this.loading.set(true); + + // Simulate authentication delay + setTimeout(() => { + if (em.includes('admin') || em.includes('kinetix') || em.includes('@')) { + const userName = em.split('@')[0]; + const displayName = userName.charAt(0).toUpperCase() + userName.slice(1); + + localStorage.setItem('kinetix_token', 'local-mock-jwt-token-998822'); + localStorage.setItem('kinetix_user', JSON.stringify({ + name: displayName, + email: em, + role: 'Consortium Manager', + avatar: displayName.substring(0, 2).toUpperCase() + })); + + this.router.navigate(['/dashboard']); + } else { + this.errorMsg.set('Credenciales no válidas. Prueba con Active Directory SSO.'); + this.loading.set(false); + } + }, 600); + } + + loginSSO() { + this.loading.set(true); + + setTimeout(() => { + localStorage.setItem('kinetix_token', 'ad-jwt-token-microsoft-entra-id-2026'); + localStorage.setItem('kinetix_user', JSON.stringify({ + name: 'Jess Miller', + email: 'jess.miller@kinetix-consortium.com', + role: 'Chief Architect & Director', + avatar: 'JM' + })); + this.router.navigate(['/dashboard']); + }, 500); + } +} diff --git a/frontend/src/app/features/dashboard/dashboard.component.ts b/frontend/src/app/features/dashboard/dashboard.component.ts index 69ad29f..e01c0b9 100644 --- a/frontend/src/app/features/dashboard/dashboard.component.ts +++ b/frontend/src/app/features/dashboard/dashboard.component.ts @@ -1,4 +1,5 @@ -import { Component, signal, computed } from '@angular/core'; +import { Component, signal, computed, OnInit, inject } from '@angular/core'; +import { Router } from '@angular/router'; import { CommonModule } from '@angular/common'; interface Employee { @@ -12,6 +13,13 @@ interface Employee { tags: string[]; } +interface UserProfile { + name: string; + email: string; + role: string; + avatar: string; +} + @Component({ selector: 'app-dashboard', standalone: true, @@ -19,137 +27,139 @@ interface Employee { template: `
- +
- + @if (activeTab() === 'inicio') { -
- -
-
-
- - BIENVENIDO AL FUTURO -

- Ecosistema Kinetix -

-

- La evolución de la intranet corporativa: Automatización de procesos, diseño premium Neón de alta fidelidad y autogestión corporativa integral para equipos ágiles. -

- -
- - +
+ + + + + +
+ +
+ Sedes Integradas +
3 Sedes
+ London · Tokyo · NY
+ +
+ Directorio Activo +
1,450+
+ Usuarios Sincronizados +
+ +
+ Salas Disponibles +
18 Salas
+ Sistemas IoT Activos +
+ +
+ Flujos de Trabajo +
12 Activos
+ Reglas AD Operativas +
+
- -
-

Módulos de Nueva Generación

-
- -
-
📚
-

Bloque de Info

-

- Gestión de contenidos corporativos con arquitectura robusta de microservicios y publicación de artículos en tiempo récord. -

-
+ +
+

Módulos del Sistema

+

Selecciona un módulo para acceder a su gestión

+
- -
-
👤
-

Directorios AD

-

- Sincronización nativa instantánea con Active Directory y perfiles dinámicos inteligentes para el equipo de desarrollo. -

-
+ +
- -
-
📅
-

Autogestión

-

- Reserva fluida de salas de conferencias, oficinas temporales e incidencias con disponibilidad y alertas en tiempo real. -

+ +
+ +
+ +
+ + + + + + +
+

Info Hub

+

Gestión de contenidos corporativos y publicación de artículos.

+ + +
+
+
+ + + + + + + + + + +
+

Directorio AD

+

Sincronización con Active Directory y perfiles dinámicos.

+
+
+ + +
+
+
+ + + + + + + + +
+

Workflows

+

Líneas de aprobación, revisión y publicación de contenido.

+
+
+ + +
+
+
+ + + + + + + +
+

Espacios

+

Autogestión de salas, oficinas y activos de la empresa.

+
+
+
+
} + @if (activeTab() === 'directory') {
@@ -606,7 +616,203 @@ interface Employee {
} + + +
+ +
+
+ + Portal de Consorcio · Intranet 2026 +

+ Consorcio Corporativo Kinetix +

+

+ Plataforma unificada de administración y autogestión de recursos del consorcio. Control centralizado, monitoreo en tiempo real y acceso seguro vía Active Directory. +

+
+ + +
+
+ +
`, @@ -620,7 +826,9 @@ interface Employee { } `] }) -export class DashboardComponent { +export class DashboardComponent implements OnInit { + private router = inject(Router); + // Navigation active tab signal activeTab = signal<'inicio' | 'directory' | 'workflow' | 'spaces' | 'metrics' | 'admin'>('inicio'); @@ -633,6 +841,14 @@ export class DashboardComponent { simulationStatus = signal(''); approvalSuccess = signal(''); + // Sincronized Active Directory Active Profile signal + currentUser = signal({ + name: 'Invitado', + email: 'guest@kinetix.com', + role: 'Employee', + avatar: 'G' + }); + // Active Directory mock database of employees exactly styled as Slide 4 employees = signal([ { @@ -681,13 +897,13 @@ export class DashboardComponent { filteredEmployees = computed(() => { const query = this.searchQuery().toLowerCase(); const dept = this.selectedDept(); - + return this.employees().filter(emp => { // Basic text search filter - const matchesSearch = emp.name.toLowerCase().includes(query) || - emp.role.toLowerCase().includes(query) || - emp.tags.some(t => t.toLowerCase().includes(query)); - + const matchesSearch = emp.name.toLowerCase().includes(query) || + emp.role.toLowerCase().includes(query) || + emp.tags.some(t => t.toLowerCase().includes(query)); + // Basic department match let matchesDept = true; if (dept !== 'ALL') { @@ -699,11 +915,24 @@ export class DashboardComponent { matchesDept = emp.role.includes('Security'); } } - + return matchesSearch && matchesDept; }); }); + ngOnInit() { + // Load Active Directory profile from local storage + const userStr = localStorage.getItem('kinetix_user'); + if (userStr) { + try { + const user = JSON.parse(userStr); + this.currentUser.set(user); + } catch (e) { + console.error('Error parsing user profile from local storage', e); + } + } + } + setActiveTab(tab: 'inicio' | 'directory' | 'workflow' | 'spaces' | 'metrics' | 'admin') { this.activeTab.set(tab); // Reset secondary flags @@ -749,4 +978,10 @@ export class DashboardComponent { this.approvalSuccess.set(''); }, 4000); } + + logout() { + localStorage.removeItem('kinetix_token'); + localStorage.removeItem('kinetix_user'); + this.router.navigate(['/login']); + } } diff --git a/frontend/src/app/features/reservas/calendar-booking/calendar-booking.component.html b/frontend/src/app/features/reservas/calendar-booking/calendar-booking.component.html new file mode 100644 index 0000000..c4c0908 --- /dev/null +++ b/frontend/src/app/features/reservas/calendar-booking/calendar-booking.component.html @@ -0,0 +1,177 @@ +
+ + + + +
+ +
+
+ +

+ {{ monthYearLabel() }} +

+ + +
+ + +
+ + + +
+
+ + +
+ +
+ @for (dayName of weekDays; track $index) { +
+ {{ dayName }} +
+ } +
+ + +
+ @for (day of calendarDays(); track day.getTime()) { +
+ + +
+ + {{ day.getDate() }} + +
+ + +
+ @for (event of getEventsForDay(day); track event.id) { +
+
{{ event.title }}
+
{{ event.resourceName }}
+
+ } +
+ + + + + Reservar + +
+ } +
+
+
+
diff --git a/frontend/src/app/features/reservas/calendar-booking/calendar-booking.component.ts b/frontend/src/app/features/reservas/calendar-booking/calendar-booking.component.ts new file mode 100644 index 0000000..f924c6f --- /dev/null +++ b/frontend/src/app/features/reservas/calendar-booking/calendar-booking.component.ts @@ -0,0 +1,160 @@ +import { Component, OnInit, signal, computed, inject } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { Router, RouterModule } from '@angular/router'; + +export interface CalendarEvent { + id: string; + title: string; + start: Date; + end: Date; + type: 'room' | 'desk' | 'asset'; + resourceName: string; + colorClass: string; +} + +@Component({ + selector: 'app-calendar-booking', + standalone: true, + imports: [CommonModule, RouterModule], + templateUrl: './calendar-booking.component.html', + styleUrls: [] +}) +export class CalendarBookingComponent implements OnInit { + private router = inject(Router); + + // Signals para gestionar estado reactivamente + currentView = signal<'month' | 'week' | 'day'>('month'); + currentDate = signal(new Date()); + selectedFilter = signal<'all' | 'room' | 'desk' | 'asset'>('all'); + + // Eventos de prueba + events = signal([ + { + id: '1', + title: 'Reunión de Sincronización Mensual', + start: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate(), 10, 0), + end: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate(), 11, 30), + type: 'room', + resourceName: 'Sala Alpha', + colorClass: 'border-l-4 border-indigo-600 bg-indigo-50/50 text-indigo-900 dark:border-indigo-500 dark:bg-indigo-950/20 dark:text-indigo-200' + }, + { + id: '2', + title: 'Reserva de Escritorio Diario', + start: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 1, 9, 0), + end: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 1, 18, 0), + type: 'desk', + resourceName: 'Escritorio Standby 04', + colorClass: 'border-l-4 border-amber-600 bg-amber-50/50 text-amber-900 dark:border-amber-500 dark:bg-amber-950/20 dark:text-amber-200' + }, + { + id: '3', + title: 'Préstamo MacBook Pro para Demo', + start: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 1, 14, 0), + end: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 1, 16, 0), + type: 'asset', + resourceName: 'MacBook Pro M3', + colorClass: 'border-l-4 border-emerald-600 bg-emerald-50/50 text-emerald-900 dark:border-emerald-500 dark:bg-emerald-950/20 dark:text-emerald-200' + } + ]); + + // Lista de días de la semana + weekDays = ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb']; + + // Nombre legible del mes y año actual + monthYearLabel = computed(() => { + const date = this.currentDate(); + return date.toLocaleDateString('es-ES', { month: 'long', year: 'numeric' }); + }); + + // Días a renderizar en la cuadrícula mensual del calendario + calendarDays = computed(() => { + const date = this.currentDate(); + const year = date.getFullYear(); + const month = date.getMonth(); + + const firstDayIndex = new Date(year, month, 1).getDay(); + const totalDays = new Date(year, month + 1, 0).getDate(); + + const days: Date[] = []; + + // Agregar días de la última semana del mes anterior + const prevMonthTotalDays = new Date(year, month, 0).getDate(); + for (let i = firstDayIndex - 1; i >= 0; i--) { + days.push(new Date(year, month - 1, prevMonthTotalDays - i)); + } + + // Agregar días del mes actual + for (let i = 1; i <= totalDays; i++) { + days.push(new Date(year, month, i)); + } + + // Completar el grid hasta 42 posiciones (6 filas) + const nextDaysCount = 42 - days.length; + for (let i = 1; i <= nextDaysCount; i++) { + days.push(new Date(year, month + 1, i)); + } + + return days; + }); + + // Filtros aplicados + filteredEvents = computed(() => { + const filter = this.selectedFilter(); + if (filter === 'all') return this.events(); + return this.events().filter(e => e.type === filter); + }); + + ngOnInit(): void {} + + prev(): void { + const d = this.currentDate(); + this.currentDate.set(new Date(d.getFullYear(), d.getMonth() - 1, 1)); + } + + next(): void { + const d = this.currentDate(); + this.currentDate.set(new Date(d.getFullYear(), d.getMonth() + 1, 1)); + } + + today(): void { + this.currentDate.set(new Date()); + } + + setFilter(filter: 'all' | 'room' | 'desk' | 'asset'): void { + this.selectedFilter.set(filter); + } + + setView(view: 'month' | 'week' | 'day'): void { + this.currentView.set(view); + } + + selectDay(day: Date): void { + const dateStr = day.toISOString().split('T')[0]; + this.router.navigate(['/reservas/nuevo'], { + queryParams: { + fecha: dateStr, + tipo: this.selectedFilter() !== 'all' ? this.selectedFilter() : 'room' + } + }); + } + + getEventsForDay(day: Date): CalendarEvent[] { + return this.filteredEvents().filter(e => { + return e.start.getFullYear() === day.getFullYear() && + e.start.getMonth() === day.getMonth() && + e.start.getDate() === day.getDate(); + }); + } + + isToday(day: Date): boolean { + const today = new Date(); + return day.getDate() === today.getDate() && + day.getMonth() === today.getMonth() && + day.getFullYear() === today.getFullYear(); + } + + isCurrentMonth(day: Date): boolean { + return day.getMonth() === this.currentDate().getMonth(); + } +} diff --git a/frontend/src/app/features/reservas/reserva-form/reserva-form.component.html b/frontend/src/app/features/reservas/reserva-form/reserva-form.component.html new file mode 100644 index 0000000..f2ff89b --- /dev/null +++ b/frontend/src/app/features/reservas/reserva-form/reserva-form.component.html @@ -0,0 +1,207 @@ +
+
+ + +
+
+
+
+ smart_toy +
+
+

Asistente IA

+

Kinetix Intelligent Suite

+
+
+ +

+ Agenda con lenguaje natural +

+

+ Escribe lo que necesitas y nuestro asistente de inteligencia artificial pre-llenará el formulario por ti en segundos. +

+ + +
+ +
+ +
+ + +
+
+ + +
+ Diseñado bajo el estándar de IA Corporativa de Kinetix. +
+
+ + +
+
+
+

Detalles de la Reserva

+

Confirma los datos para agendar tu espacio o activo

+
+ + ← Volver al Calendario + +
+ + + @if (aiSuccessMessage()) { +
+ check_circle + {{ aiSuccessMessage() }} +
+ } + +
+ +
+ + + @if (bookingForm.get('title')?.touched && bookingForm.get('title')?.invalid) { + El título es requerido (mínimo 3 caracteres) + } +
+ +
+ +
+ + +
+ + +
+ + + @if (bookingForm.get('resourceName')?.touched && bookingForm.get('resourceName')?.invalid) { + El nombre del recurso es requerido + } +
+
+ +
+ +
+ + + @if (bookingForm.get('date')?.touched && bookingForm.get('date')?.invalid) { + Requerido + } +
+ + +
+ + + @if (bookingForm.get('startTime')?.touched && bookingForm.get('startTime')?.invalid) { + Requerido + } +
+ + +
+ + + @if (bookingForm.get('endTime')?.touched && bookingForm.get('endTime')?.invalid) { + Requerido + } +
+
+ +
+ +
+ + + @if (bookingForm.get('attendees')?.touched && bookingForm.get('attendees')?.invalid) { + Requerido (mínimo 1) + } +
+ + +
+ + +
+
+ + +
+ + +
+
+ +
+ + Cancelar + + +
+
+
+
diff --git a/frontend/src/app/features/reservas/reserva-form/reserva-form.component.ts b/frontend/src/app/features/reservas/reserva-form/reserva-form.component.ts new file mode 100644 index 0000000..9d64e28 --- /dev/null +++ b/frontend/src/app/features/reservas/reserva-form/reserva-form.component.ts @@ -0,0 +1,100 @@ +import { Component, OnInit, inject, signal } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; +import { ActivatedRoute, Router, RouterModule } from '@angular/router'; +import { IaParserService, IaParsedBooking } from '../services/ia-parser.service'; + +@Component({ + selector: 'app-reserva-form', + standalone: true, + imports: [CommonModule, ReactiveFormsModule, RouterModule], + templateUrl: './reserva-form.component.html', + styleUrls: [] +}) +export class ReservaFormComponent implements OnInit { + private fb = inject(FormBuilder); + private route = inject(ActivatedRoute); + private router = inject(Router); + private iaParser = inject(IaParserService); + + // Exponer Signals del servicio IA a la plantilla + isLoadingIa = this.iaParser.isLoading; + + // Reactivo Form + bookingForm!: FormGroup; + + // Estado del asistente + aiPrompt = signal(''); + aiSuccessMessage = signal(''); + + ngOnInit(): void { + this.initForm(); + + // Capturar QueryParams desde la URL + this.route.queryParams.subscribe(params => { + const fecha = params['fecha'] || ''; + const tipo = params['tipo'] || 'room'; + + this.bookingForm.patchValue({ + date: fecha, + resourceType: tipo + }); + }); + } + + private initForm(): void { + this.bookingForm = this.fb.group({ + title: ['', [Validators.required, Validators.minLength(3)]], + resourceType: ['room', [Validators.required]], + resourceName: ['', [Validators.required]], + date: ['', [Validators.required]], + startTime: ['', [Validators.required]], + endTime: ['', [Validators.required]], + attendees: [1, [Validators.required, Validators.min(1)]], + hasProjector: [false], + notes: [''] + }); + } + + /** + * Envía el prompt de lenguaje natural del Asistente IA para parsear y auto-llenar los campos. + */ + processAiPrompt(promptText: string): void { + if (!promptText.trim()) return; + + this.iaParser.parseNaturalLanguage(promptText).subscribe({ + next: (parsedData: IaParsedBooking) => { + // Rellenar formulario reactivamente con los datos estructurados devueltos por la IA + this.bookingForm.patchValue({ + title: parsedData.title || this.bookingForm.get('title')?.value, + resourceType: parsedData.resourceType || this.bookingForm.get('resourceType')?.value, + resourceName: parsedData.resourceName || this.bookingForm.get('resourceName')?.value, + date: parsedData.date || this.bookingForm.get('date')?.value, + startTime: parsedData.startTime || this.bookingForm.get('startTime')?.value, + endTime: parsedData.endTime || this.bookingForm.get('endTime')?.value, + attendees: parsedData.attendees || this.bookingForm.get('attendees')?.value, + hasProjector: parsedData.hasProjector !== undefined ? parsedData.hasProjector : this.bookingForm.get('hasProjector')?.value, + notes: parsedData.notes || this.bookingForm.get('notes')?.value + }); + + this.aiSuccessMessage.set('¡Los campos del formulario se han pre-llenado automáticamente gracias al Asistente IA!'); + setTimeout(() => this.aiSuccessMessage.set(''), 5000); + }, + error: (err) => { + console.error('Error procesando prompt con IA:', err); + } + }); + } + + onSubmit(): void { + if (this.bookingForm.invalid) { + this.bookingForm.markAllAsTouched(); + return; + } + + console.log('Reserva creada exitosamente:', this.bookingForm.value); + + // Regresar al calendario + this.router.navigate(['/reservas/calendario']); + } +} diff --git a/frontend/src/app/features/reservas/services/ia-parser.service.ts b/frontend/src/app/features/reservas/services/ia-parser.service.ts new file mode 100644 index 0000000..4471dfc --- /dev/null +++ b/frontend/src/app/features/reservas/services/ia-parser.service.ts @@ -0,0 +1,122 @@ +import { Injectable, inject, signal } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable, of } from 'rxjs'; +import { catchError, map, tap } from 'rxjs/operators'; + +export interface IaParsedBooking { + title?: string; + date?: string; // YYYY-MM-DD + startTime?: string; // HH:mm + endTime?: string; // HH:mm + attendees?: number; + resourceType?: 'room' | 'desk' | 'asset'; + resourceName?: string; + hasProjector?: boolean; + notes?: string; +} + +@Injectable({ + providedIn: 'root' +}) +export class IaParserService { + private http = inject(HttpClient); + private apiUrl = 'api/ai/parse-booking'; + + // Signals para gestionar el estado reactivamente (Angular 18) + isLoading = signal(false); + lastParsedResult = signal(null); + + /** + * Envía el prompt de lenguaje natural al backend o genera un mock en caso de fallo de red. + */ + parseNaturalLanguage(prompt: string): Observable { + this.isLoading.set(true); + return ((this.http.post(this.apiUrl, { prompt }) as any).pipe( + tap((result: any) => { + this.lastParsedResult.set(result); + this.isLoading.set(false); + }), + catchError((error: any) => { + console.warn('Conexión con el servidor backend IA simulada debido al entorno de desarrollo:', error.message); + // Fallback a un NLP simulado con alta fidelidad para el MVP + const mockResult = this.generateMockResponse(prompt); + this.lastParsedResult.set(mockResult); + this.isLoading.set(false); + return of(mockResult); + }) + ) as any); + } + + /** + * Parser simulado de lenguaje natural basado en heurísticas de palabras clave. + */ + private generateMockResponse(prompt: string): IaParsedBooking { + const p = prompt.toLowerCase(); + const result: IaParsedBooking = {}; + + // Determinar el tipo de recurso + if (p.includes('sala') || p.includes('reunión') || p.includes('juntas') || p.includes('boardroom')) { + result.resourceType = 'room'; + result.resourceName = p.includes('alpha') ? 'Sala Alpha' : p.includes('beta') ? 'Sala Beta' : 'Sala Ejecutiva'; + } else if (p.includes('escritorio') || p.includes('oficina') || p.includes('mesa') || p.includes('desk')) { + result.resourceType = 'desk'; + result.resourceName = 'Escritorio Standby 04'; + } else { + result.resourceType = 'asset'; + result.resourceName = p.includes('proyector') ? 'Proyector Epson 4K' : p.includes('laptop') ? 'MacBook Pro M3' : 'Pizarra Inteligente'; + } + + if (p.includes('proyector')) { + result.hasProjector = true; + } + + // Extraer número de asistentes / personas + const peopleMatch = p.match(/(\d+)\s*(personas|invitados|asistentes|miembros)/); + if (peopleMatch) { + result.attendees = parseInt(peopleMatch[1], 10); + } else { + result.attendees = p.includes('grupo') ? 8 : 1; + } + + // Extraer fecha + const targetDate = new Date(); + if (p.includes('mañana')) { + targetDate.setDate(targetDate.getDate() + 1); + } else if (p.includes('pasado mañana')) { + targetDate.setDate(targetDate.getDate() + 2); + } else if (p.includes('hoy')) { + // mantiene hoy + } else { + // Si menciona un día de la semana (ej. lunes, martes) + const daysOfWeek = ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado']; + const foundDay = daysOfWeek.findIndex(day => p.includes(day)); + if (foundDay !== -1) { + const currentDay = targetDate.getDay(); + let distance = foundDay - currentDay; + if (distance <= 0) distance += 7; + targetDate.setDate(targetDate.getDate() + distance); + } + } + result.date = targetDate.toISOString().split('T')[0]; + + // Extraer horarios aproximados + if (p.includes('tarde') || p.includes('pm')) { + result.startTime = '15:00'; + result.endTime = '16:30'; + } else if (p.includes('mañana') && !p.includes('mañana por')) { + result.startTime = '09:30'; + result.endTime = '11:00'; + } else if (p.includes('noche')) { + result.startTime = '19:00'; + result.endTime = '20:30'; + } else { + result.startTime = '11:00'; + result.endTime = '12:00'; + } + + result.title = `Reserva de ${result.resourceType === 'room' ? 'Sala' : result.resourceType === 'desk' ? 'Escritorio' : 'Activo'}`; + result.notes = `Sugerencia de reserva generada inteligentemente por el Asistente IA Kinetix.`; + + return result; + } +} diff --git a/frontend/src/styles.css b/frontend/src/styles.css index 38378eb..1980ae6 100644 --- a/frontend/src/styles.css +++ b/frontend/src/styles.css @@ -1,140 +1,401 @@ -/* Root Styles for Kinetix Neon Theme */ -@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap'); +/* ============================================================ + KINETIX INTRANET — Executive Suite Design System + Paleta: Fondo blanco, tarjetas joya sofisticadas + ============================================================ */ +/* Fonts: Inter (titulares) + Outfit (cuerpo) */ +@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;900&family=Inter:wght@400;600;700;800;900&display=swap'); + +/* ── Design Tokens ─────────────────────────────────────── */ :root { - font-family: 'Inter', sans-serif; - color-scheme: dark; - - /* HSL Neon Color Palette */ - --bg-deep-dark: HSL(240, 15%, 4%); - --bg-card: HSL(240, 12%, 8%); - --accent-cyan: HSL(180, 100%, 50%); - --accent-magenta: HSL(320, 100%, 50%); - --accent-purple: HSL(262, 80%, 60%); - --accent-green: HSL(140, 100%, 50%); + /* ── Fondo y superficies (LIGHT MODE) ── */ + --bg-page: #F5F4F1; /* Blanco cálido / ivory */ + --bg-surface: #FFFFFF; /* Superficie limpia */ + --bg-surface-2: #F0EEE9; /* Superficies secundarias */ + + /* ── Colores joya para tarjetas sofisticadas ── */ + --card-navy: #0D1B2A; /* Azul marino profundo */ + --card-plum: #1A0E2E; /* Ciruela / Violeta oscuro */ + --card-viridian: #0A2520; /* Verde Viridian / Bosque profundo */ + --card-espresso: #1C0E08; /* Espresso / Marrón ébano */ + + /* ── Acentos elegantes ── */ + --gold-luxe: #C9973C; /* Oro antiguo (visible en blanco) */ + --gold-dark: #A67C28; + --gold-light: #F0C060; /* Destellos dorados en tarjetas */ + --indigo-rich: #3730A3; /* Índigo profundo */ + --sapphire: #1E3A8A; /* Zafiro */ + --emerald-deep: #065F46; /* Esmeralda profundo */ + + /* ── Neon (login / accents) ── */ + --neon-blue: #0EA5E9; + --neon-cyan: #06B6D4; + + /* ── Textos (dark on white) ── */ + --text-primary: #0F0D0A; /* Negro cálido */ + --text-secondary: #44403C; /* Marrón oscuro */ + --text-muted: #78716C; /* Gris cálido */ + --text-placeholder: #A8A29E; + + /* ── Bordes / divisores ── */ + --border-light: rgba(15, 13, 10, 0.08); + --border-medium: rgba(15, 13, 10, 0.14); + --border-gold: rgba(201, 151, 60, 0.30); + + /* Legacy aliases */ + --bg-dark: #0D1B2A; + --bg-card: rgba(17, 22, 41, 0.70); + --bg-card-solid: #111629; + --accent-cyan: #0EA5E9; + --accent-magenta: hsl(320, 100%, 50%); + --accent-purple: hsl(262, 80%, 60%); + --bg-deep-dark: #02040A; + --text-light: #FFFFFF; + --text-muted-old: #858FA3; +} + +/* ── Base ──────────────────────────────────────────────── */ +*, *::before, *::after { box-sizing: border-box; } + +html { + font-size: 16px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } body { margin: 0; - background-color: var(--bg-deep-dark); - background-image: radial-gradient(circle at 50% -20%, rgba(0, 242, 254, 0.07) 0%, rgba(240, 12, 147, 0.03) 50%, transparent 100%); - color: #f3f4f6; - overflow-x: hidden; + font-family: 'Outfit', 'Inter', sans-serif; + font-weight: 400; + background: var(--bg-page); + color: var(--text-primary); min-height: 100vh; + overflow-x: hidden; } -/* Glassmorphism Panel (Vercel/Neon style) */ +/* ── Typography ─────────────────────────────────────────── */ +h1, h2, h3, h4, .font-display { + font-family: 'Inter', 'Outfit', sans-serif; + font-weight: 900; + margin: 0; +} + +/* ── Glass Panel (adaptado a fondo blanco) ─────────────── */ .glass-panel { - background: rgba(15, 15, 22, 0.65); - backdrop-filter: blur(14px); - border: 1px solid rgba(255, 255, 255, 0.06); - box-shadow: 0 12px 40px 0 rgba(0, 0, 0, 0.5); - transition: all 0.30s cubic-bezier(0.4, 0, 0.2, 1); + background: var(--bg-surface); + border: 1px solid var(--border-light); + border-radius: 16px; + box-shadow: + 0 1px 3px rgba(15, 13, 10, 0.06), + 0 8px 24px rgba(15, 13, 10, 0.06); + transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); } .glass-panel-hover:hover { transform: translateY(-2px); - border-color: rgba(255, 255, 255, 0.12); - box-shadow: 0 16px 48px 0 rgba(0, 0, 0, 0.6); + border-color: var(--border-medium); + box-shadow: + 0 2px 6px rgba(15, 13, 10, 0.08), + 0 12px 32px rgba(15, 13, 10, 0.10); } -/* Neon Borders and Accents */ -.neon-border-cyan { - border: 1px solid rgba(0, 242, 254, 0.15); -} -.neon-border-cyan:hover { - border-color: var(--accent-cyan); - box-shadow: 0 0 15px rgba(0, 242, 254, 0.2); +/* ── Tarjetas Joya (Blackjack) ─────────────────────────── */ +/* Clase base compartida — el color de fondo se pasa por variable */ +.card-blackjack { + position: relative; + border-radius: 20px; + overflow: hidden; + transition: all 0.22s cubic-bezier(0.34, 1.56, 0.64, 1); + cursor: pointer; } -.neon-border-magenta { - border: 1px solid rgba(240, 12, 147, 0.15); -} -.neon-border-magenta:hover { - border-color: var(--accent-magenta); - box-shadow: 0 0 15px rgba(240, 12, 147, 0.2); +.card-blackjack::before { + content: ''; + position: absolute; + inset: 10px; + border: 1px solid rgba(255, 255, 255, 0.12); + border-radius: 12px; + pointer-events: none; + z-index: 0; + transition: border-color 0.2s; } -.neon-border-purple { - border: 1px solid rgba(124, 58, 237, 0.15); -} -.neon-border-purple:hover { - border-color: var(--accent-purple); - box-shadow: 0 0 15px rgba(124, 58, 237, 0.2); +.card-blackjack:hover { + transform: translateY(-5px) scale(1.02); + box-shadow: + 0 20px 60px rgba(0, 0, 0, 0.35), + 0 0 0 1px rgba(255, 255, 255, 0.08); +} + +.card-blackjack:hover::before { + border-color: rgba(255, 255, 255, 0.22); +} + +/* ── KPI Cards (light mode) ────────────────────────────── */ +.kpi-card { + background: var(--bg-surface); + border: 1px solid var(--border-light); + border-radius: 14px; + padding: 20px 22px; + display: flex; + flex-direction: column; + gap: 4px; + box-shadow: 0 1px 4px rgba(15, 13, 10, 0.06); + transition: all 0.2s; +} + +.kpi-card:hover { + border-color: var(--border-medium); + box-shadow: 0 4px 16px rgba(15, 13, 10, 0.10); + transform: translateY(-1px); +} + +/* ── Borders ────────────────────────────────────────────── */ +.neon-border-gold { + border: 1px solid rgba(201, 151, 60, 0.25); +} +.neon-border-gold:hover { border-color: var(--gold-luxe); } + +.neon-border-blue { + border: 1px solid rgba(59, 130, 246, 0.20); +} +.neon-border-blue:hover { border-color: var(--sapphire); } + +/* Legacy borders */ +.neon-border-cyan { border: 1px solid rgba(14, 165, 233, 0.20); } +.neon-border-magenta { border: 1px solid rgba(240, 12, 147, 0.15); } +.neon-border-purple { border: 1px solid rgba(124, 58, 237, 0.15); } + +/* ── Typography Colors ──────────────────────────────────── */ +.text-gold { + color: var(--gold-luxe); } -/* Cyberpunk Typography */ .text-neon-cyan { - color: var(--accent-cyan); - text-shadow: 0 0 10px rgba(0, 242, 254, 0.3); + color: var(--indigo-rich); } .text-neon-magenta { - color: var(--accent-magenta); - text-shadow: 0 0 10px rgba(240, 12, 147, 0.3); + color: hsl(320, 70%, 45%); } .text-neon-purple { - color: var(--accent-purple); - text-shadow: 0 0 10px rgba(124, 58, 237, 0.3); + color: var(--indigo-rich); } -/* Inputs & Forms (rounded-full per slide 4) */ -.input-cyberpunk { - background: rgba(10, 10, 15, 0.8); - border: 1px solid rgba(255, 255, 255, 0.1); - color: #fff; - transition: all 0.3s ease; +.text-muted { + color: var(--text-muted); } -.input-cyberpunk:focus { +/* ── Inputs ─────────────────────────────────────────────── */ +/* Light mode input */ +.input-luxe { + height: 52px; + width: 100%; + padding: 0 22px; + background: var(--bg-surface); + border: 1px solid var(--border-medium); + border-radius: 9999px; + color: var(--text-primary); + font-family: 'Outfit', sans-serif; + font-size: 14px; + font-weight: 400; outline: none; - border-color: var(--accent-cyan); - box-shadow: 0 0 8px rgba(0, 242, 254, 0.25); - background: rgba(10, 10, 15, 0.95); + transition: border-color 0.2s, box-shadow 0.2s; + box-sizing: border-box; } -/* Buttons (Cyan/Purple Glow) */ -.btn-cyan { - background: var(--accent-cyan); - color: #000; - font-weight: 700; - letter-spacing: 0.05em; - transition: all 0.3s ease; - box-shadow: 0 4px 14px rgba(0, 242, 254, 0.3); +.input-luxe::placeholder { color: var(--text-placeholder); } +.input-luxe:focus { + border-color: var(--gold-luxe); + box-shadow: 0 0 0 3px rgba(201, 151, 60, 0.12); } -.btn-cyan:hover { - transform: translateY(-1px); - box-shadow: 0 6px 20px rgba(0, 242, 254, 0.5); +/* Dashboard search inputs (light) */ +.input-cyberpunk { + height: 44px; + width: 100%; + padding: 0 18px; + background: var(--bg-surface); + border: 1px solid var(--border-medium); + border-radius: 9999px; + color: var(--text-primary); + font-family: 'Outfit', sans-serif; + font-size: 13px; + outline: none; + transition: border-color 0.2s, box-shadow 0.2s; + box-sizing: border-box; } -.btn-purple { - background: var(--accent-purple); +.input-cyberpunk::placeholder { color: var(--text-placeholder); } +.input-cyberpunk:focus { + border-color: var(--gold-luxe); + box-shadow: 0 0 0 3px rgba(201, 151, 60, 0.10); +} + +/* Dark input (for login, dark bg sections) */ +.input-dark { + height: 54px; + width: 100%; + padding: 0 25px; + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.10); + border-radius: 9999px; color: #fff; - font-weight: 700; - letter-spacing: 0.05em; - transition: all 0.3s ease; - box-shadow: 0 4px 14px rgba(124, 58, 237, 0.3); + font-family: 'Outfit', sans-serif; + font-size: 14px; + outline: none; + transition: border-color 0.2s, box-shadow 0.2s; + box-sizing: border-box; } -.btn-purple:hover { - transform: translateY(-1px); - box-shadow: 0 6px 20px rgba(124, 58, 237, 0.5); +.input-dark::placeholder { color: rgba(255, 255, 255, 0.35); } +.input-dark:focus { + border-color: rgba(201, 151, 60, 0.55); + box-shadow: 0 0 0 3px rgba(201, 151, 60, 0.12); } -/* Custom Scrollbar */ -::-webkit-scrollbar { - width: 8px; - height: 8px; +/* ── Buttons ─────────────────────────────────────────────── */ +/* Gold gradient (primary) */ +.btn-gold { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + height: 48px; + padding: 0 28px; + border-radius: 9999px; + background: linear-gradient(135deg, #C9973C, #A67C28); + border: none; + color: #fff; + font-family: 'Inter', sans-serif; + font-size: 11px; + font-weight: 800; + letter-spacing: 0.14em; + text-transform: uppercase; + cursor: pointer; + transition: transform 0.2s, box-shadow 0.2s; + box-shadow: 0 4px 16px rgba(166, 124, 40, 0.30); } -::-webkit-scrollbar-track { - background: var(--bg-deep-dark); + +.btn-gold:hover { + transform: translateY(-2px); + box-shadow: 0 8px 24px rgba(166, 124, 40, 0.45); } + +/* Dark (CTA on dark backgrounds, e.g. login) */ +.btn-cyan { + display: inline-flex; + align-items: center; + justify-content: center; + height: 48px; + padding: 0 24px; + border-radius: 9999px; + background: linear-gradient(135deg, #C9973C, #A67C28); + border: none; + color: #fff; + font-family: 'Inter', sans-serif; + font-size: 11px; + font-weight: 900; + letter-spacing: 0.14em; + text-transform: uppercase; + cursor: pointer; + transition: transform 0.2s, box-shadow 0.2s; + box-shadow: 0 4px 16px rgba(201, 151, 60, 0.30); +} + +.btn-cyan:hover { transform: translateY(-2px); box-shadow: 0 6px 22px rgba(201, 151, 60, 0.45); } + +/* Indigo solid */ +.btn-indigo { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + height: 48px; + padding: 0 24px; + border-radius: 9999px; + background: var(--indigo-rich); + border: none; + color: #fff; + font-family: 'Inter', sans-serif; + font-size: 11px; + font-weight: 800; + letter-spacing: 0.12em; + text-transform: uppercase; + cursor: pointer; + transition: transform 0.2s, box-shadow 0.2s; + box-shadow: 0 4px 16px rgba(55, 48, 163, 0.30); +} + +.btn-indigo:hover { transform: translateY(-2px); } + +/* Ghost on white */ +.btn-ghost { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + height: 46px; + padding: 0 22px; + border-radius: 9999px; + background: transparent; + border: 1.5px solid var(--border-medium); + color: var(--text-secondary); + font-family: 'Outfit', sans-serif; + font-size: 12px; + font-weight: 600; + cursor: pointer; + transition: background 0.2s, border-color 0.2s; +} + +.btn-ghost:hover { + background: var(--bg-surface-2); + border-color: var(--border-medium); + color: var(--text-primary); +} + +/* Legacy purple */ +.btn-purple { + display: inline-flex; + align-items: center; + justify-content: center; + height: 44px; + padding: 0 20px; + border-radius: 9999px; + background: var(--indigo-rich); + border: none; + color: #fff; + font-weight: 800; + font-size: 11px; + letter-spacing: 0.10em; + text-transform: uppercase; + cursor: pointer; + transition: transform 0.2s; +} +.btn-purple:hover { transform: translateY(-1px); } + +/* ── Scrollbar ─────────────────────────────────────────── */ +::-webkit-scrollbar { width: 6px; height: 6px; } +::-webkit-scrollbar-track { background: var(--bg-surface-2); } ::-webkit-scrollbar-thumb { - background: rgba(255, 255, 255, 0.1); + background: rgba(15, 13, 10, 0.15); border-radius: 4px; } -::-webkit-scrollbar-thumb:hover { - background: var(--accent-cyan); +::-webkit-scrollbar-thumb:hover { background: rgba(201, 151, 60, 0.45); } + +/* ── Utilities ─────────────────────────────────────────── */ +.animate-fadeIn { + animation: fadeIn 0.35s ease-out forwards; +} + +@keyframes fadeIn { + from { opacity: 0; transform: translateY(8px); } + to { opacity: 1; transform: translateY(0); } +} + +.sr-only { + position: absolute; width: 1px; height: 1px; + padding: 0; margin: -1px; overflow: hidden; + clip: rect(0,0,0,0); white-space: nowrap; border: 0; } diff --git a/standards/04-ui-ux-neon.md b/standards/04-ui-ux-neon.md index 7533539..4c49ad0 100644 --- a/standards/04-ui-ux-neon.md +++ b/standards/04-ui-ux-neon.md @@ -1,35 +1,63 @@ -# Estándares - UI/UX Diseño Cyberpunk / Neon / Vercel +# Estándares - UI/UX Diseño Executive Suite / Kinetix -Este documento establece la guía de estilos visuales de la intranet corporativa Kinetix. +Este documento establece la guía de estilos visuales e interactivos de la intranet corporativa Kinetix, adaptada al **Executive Suite Design System**. --- -## 1. Paleta de Colores (Estilo Neón) -Para lograr el estilo neón premium e interactivo, la interfaz debe utilizar un fondo oscuro profundo con bordes y brillos acentuados en colores cian, magenta y verde neón. +## 1. Paleta de Colores (Diseño Elegante y Sofisticado) +El diseño evoluciona de un fondo oscuro a una combinación de fondos claros premium (Ivory/Blanco cálido) con tarjetas oscuras sofisticadas en tonos joya y acentos dorados/índigo. -- **Fondo Principal (Deep Dark):** HSL(240, 10%, 4%) -- **Fondo Secundario (Card Background):** HSL(240, 10%, 9%) -- **Acento Primario (Cian Neón):** HSL(180, 100%, 50%) -- **Acento Secundario (Magenta Neón):** HSL(320, 100%, 50%) -- **Acento de Éxito (Verde Neón):** HSL(140, 100%, 50%) +### Fondo y Superficies (Light Mode) +- **Fondo Principal (Ivory):** `#F5F4F1` +- **Superficie Principal (White):** `#FFFFFF` +- **Superficie Secundaria (Warm Grey):** `#F0EEE9` + +### Tarjetas Joya (Blackjack System) +Tarjetas de fondo oscuro profundo utilizadas para resaltar elementos clave: +- **Azul Marino (Navy):** `#0D1B2A` +- **Ciruela (Plum):** `#1A0E2E` +- **Verde Viridian (Forest):** `#0A2520` +- **Marrón Ébano (Espresso):** `#1C0E08` + +### Acentos de Lujo y Elegancia +- **Oro Antiguo (Gold Luxe):** `#C9973C` (utilizado para botones primarios, bordes y foco) +- **Índigo Profundo (Indigo Rich):** `#3730A3` (acentos interactivos y botones secundarios) +- **Zafiro (Sapphire):** `#1E3A8A` +- **Esmeralda Profundo (Emerald Deep):** `#065F46` --- -## 2. Efecto Glassmorphism (Vercel Style) -Utilizar bordes ultra finos semitransparentes combinados con desenfoque de fondo (`backdrop-filter`) para crear profundidad tridimensional en los paneles: +## 2. Componentes y Efecto Glassmorphism +El efecto de cristal se adapta para ofrecer limpieza y legibilidad sobre el fondo claro, utilizando bordes sutiles y sombras suaves. ```css .glass-panel { - background: rgba(15, 15, 20, 0.7); - backdrop-filter: blur(12px); - border: 1px solid rgba(255, 255, 255, 0.08); - box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); + background: var(--bg-surface); + border: 1px solid var(--border-light); + border-radius: 16px; + box-shadow: + 0 1px 3px rgba(15, 13, 10, 0.06), + 0 8px 24px rgba(15, 13, 10, 0.06); + transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); +} +``` + +### Tarjetas Blackjack (`.card-blackjack`) +Tienen un borde interno fino, un leve zoom al pasar el cursor y sombras tridimensionales al ser interactivas: +```css +.card-blackjack { + position: relative; + border-radius: 20px; + overflow: hidden; + transition: all 0.22s cubic-bezier(0.34, 1.56, 0.64, 1); } ``` --- -## 3. Micro-animaciones e Interactividad -- **Hover Glow:** Los botones interactivos y tarjetas deben tener transiciones suaves (`transition: all 0.3s ease`) que agreguen un brillo sutil al pasar el cursor. -- **Transición de Rutas:** Usar animaciones fluidas en Angular al alternar vistas. -- **Efectos de Foco:** Utilizar anillos de foco cian neón en entradas de texto y controles interactivos para garantizar accesibilidad. +## 3. Botones, Entradas e Interactividad +- **Botón Primario (Gold):** Gradiente de oro (`#C9973C` a `#A67C28`) con sombras proyectadas. +- **Botón Secundario (Indigo):** Sólido índigo (`#3730A3`) para acciones de flujo secundario. +- **Entradas Luxe (`.input-luxe`):** Bordes completamente redondeados, foco en color oro con un anillo suave de resplandor. +- **Micro-animaciones:** Todas las transiciones de tarjetas, botones y campos interactivos deben durar entre `0.2s` y `0.35s` con curvas suavizadas (`ease` o `cubic-bezier`). +- **Tipografía Premium:** Títulos en fuente **Inter** (peso de 900 para máxima jerarquía) y texto de cuerpo en **Outfit** para asegurar elegancia y alta legibilidad.