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
\n {{ currentUser().avatar }}\n
\n
\n
\n {{ currentUser().name }} \n {{ currentUser().role }} \n
\n
\n
\n SSO: {{ currentUser().email }}\n
\n
\n Cerrar Sesión\n \n
\n\n \n
Panel Kinetix
\n \n
\n ⚡ Consorcio Kinetix\n \n\n
\n 👤 Directorio AD\n \n\n
\n ⚙️ Workflow Aprobación\n \n\n
\n 📅 Gestión de Espacios\n \n\n
\n 📈 Adopción y KPIs\n \n\n
\n 🔑 Visión Admin\n \n
\n\n \n \n
\n Estado API: \n \n ONLINE\n \n
\n
\n Sesión SSO: \n ACTIVE AD \n
\n
\n Sincronización: \n Entra ID (AD) \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 Directorio Consorcio\n \n \n Reserva de Salas\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 Buscar Empleado \n \n
\n\n \n
\n Departamento \n \n Todos los Departamentos \n IT & Desarrollo \n Diseño y UI/UX \n Mantenimiento \n \n
\n\n
\n APLICAR FILTROS\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 Get In Touch\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 SIMULAR MOTOR DE REGLAS\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 Seleccionar Sala \n \n Sala London Hall (Piso 4) \n Sala Tokyo Lab (Piso 2) \n Oficina Flexible 15B (Piso 1) \n Sala New York Boardroom (Piso 5) \n \n
\n
\n
\n\n
\n
\n RESERVAR ESPACIO\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\n \n
\n
Promedio Industria \n
\n
\n\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 Aprobar y Postear\n \n
\n\n
\n
\n Manual del Desarrollador Backend NestJS \n Autor: Arquitecto Principal \n
\n
\n Aprobar y Postear\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
Portal Corporativo \n
\n Consorcio Kinetix \n \n
\n\n \n
\n \n
\n Correo Corporativo \n \n
\n\n
\n Contraseña \n \n
\n\n
\n INGRESAR A LA INTRANET\n \n\n \n
\n
\n O ACCEDER CON \n \n \n\n \n
\n \n \n \n \n \n \n Active Directory SSO\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":"AAAA,SAAoBA,MAAM,EAAEC,MAAM,QAAQ,eAAe;AACzD,SAASC,MAAM,QAAQ,iBAAiB;AACxC,SAASC,YAAY,QAAQ,iBAAiB;;;;IAoEpCC,EAAA,CAAAC,cAAA,cAAkJ;IAChJD,EAAA,CAAAE,MAAA,GACF;IAAAF,EAAA,CAAAG,YAAA,EAAM;;;;IADJH,EAAA,CAAAI,SAAA,EACF;IADEJ,EAAA,CAAAK,kBAAA,MAAAC,MAAA,CAAAC,QAAA,QACF;;;AAoBV,WAAaC,cAAc;EAArB,MAAOA,cAAc;IAxF3BC,YAAA;MAyFU,KAAAC,MAAM,GAAGb,MAAM,CAACC,MAAM,CAAC;MAE/B,KAAAa,KAAK,GAAG,EAAE;MACV,KAAAC,QAAQ,GAAG,EAAE;MACb,KAAAL,QAAQ,GAAGX,MAAM,CAAS,EAAE,CAAC;;IAE7BiB,aAAaA,CAACC,KAAY;MACxB,IAAI,CAACH,KAAK,GAAIG,KAAK,CAACC,MAA2B,CAACC,KAAK;IACvD;IAEAC,gBAAgBA,CAACH,KAAY;MAC3B,IAAI,CAACF,QAAQ,GAAIE,KAAK,CAACC,MAA2B,CAACC,KAAK;IAC1D;IAEAE,UAAUA,CAAA;MACR,IAAI,CAAC,IAAI,CAACP,KAAK,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE;QACjC,IAAI,CAACL,QAAQ,CAACY,GAAG,CAAC,yDAAyD,CAAC;QAC5E;MACF;MAEA,IAAI,IAAI,CAACR,KAAK,CAACS,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAACT,KAAK,CAACS,QAAQ,CAAC,SAAS,CAAC,EAAE;QAClE;QACA,MAAMC,QAAQ,GAAG,IAAI,CAACV,KAAK,CAACW,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzC,MAAMC,WAAW,GAAGF,QAAQ,CAACG,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE,GAAGJ,QAAQ,CAACK,KAAK,CAAC,CAAC,CAAC;QAExEC,YAAY,CAACC,OAAO,CAAC,eAAe,EAAE,6BAA6B,CAAC;QACpED,YAAY,CAACC,OAAO,CAAC,cAAc,EAAEC,IAAI,CAACC,SAAS,CAAC;UAClDC,IAAI,EAAER,WAAW;UACjBZ,KAAK,EAAE,IAAI,CAACA,KAAK;UACjBqB,IAAI,EAAE,oBAAoB;UAC1BC,MAAM,EAAEV,WAAW,CAACW,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAACT,WAAW;SAChD,CAAC,CAAC;QAEH,IAAI,CAACf,MAAM,CAACyB,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;MACtC,CAAC,MAAM;QACL,IAAI,CAAC5B,QAAQ,CAACY,GAAG,CAAC,yEAAyE,CAAC;MAC9F;IACF;IAEAiB,QAAQA,CAAA;MACN;MACAT,YAAY,CAACC,OAAO,CAAC,eAAe,EAAE,sCAAsC,CAAC;MAC7ED,YAAY,CAACC,OAAO,CAAC,cAAc,EAAEC,IAAI,CAACC,SAAS,CAAC;QAClDC,IAAI,EAAE,aAAa;QACnBpB,KAAK,EAAE,oCAAoC;QAC3CqB,IAAI,EAAE,4BAA4B;QAClCC,MAAM,EAAE;OACT,CAAC,CAAC;MAEH,IAAI,CAACvB,MAAM,CAACyB,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;IACtC;;;yBAnDW3B,cAAc;MAAA;IAAA;;;cAAdA,cAAc;QAAA6B,SAAA;QAAAC,UAAA;QAAAC,QAAA,GAAAvC,EAAA,CAAAwC,mBAAA;QAAAC,KAAA;QAAAC,IAAA;QAAAC,MAAA;QAAAC,QAAA,WAAAC,wBAAAC,EAAA,EAAAC,GAAA;UAAA,IAAAD,EAAA;YAnFvB9C,EAAA,CAAAC,cAAA,aAAyF;YAGvFD,EADA,CAAAgD,SAAA,aAAiG,aACK;YAOhGhD,EALN,CAAAC,cAAA,aAAiG,aAGhC,aAC6E,aACf;YACvHD,EAAA,CAAAE,MAAA,UACF;YACFF,EADE,CAAAG,YAAA,EAAM,EACF;YACNH,EAAA,CAAAC,cAAA,YAA4E;YAAAD,EAAA,CAAAE,MAAA,yBAAkB;YAAAF,EAAA,CAAAG,YAAA,EAAK;YACnGH,EAAA,CAAAC,cAAA,aAA4E;YAC1ED,EAAA,CAAAE,MAAA,mBAAU;YAAAF,EAAA,CAAAC,cAAA,eAAuF;YAAAD,EAAA,CAAAE,MAAA,eAAO;YAE5GF,EAF4G,CAAAG,YAAA,EAAO,EAC5G,EACD;YAMFH,EAHJ,CAAAC,cAAA,eAAiC,eAEI,iBAC4C;YAAAD,EAAA,CAAAE,MAAA,0BAAkB;YAAAF,EAAA,CAAAG,YAAA,EAAQ;YACvGH,EAAA,CAAAC,cAAA,iBAEkE;YADhED,EAAA,CAAAiD,UAAA,oBAAAC,iDAAAC,MAAA;cAAA,OAAUJ,GAAA,CAAAlC,aAAA,CAAAsC,MAAA,CAAqB;YAAA,EAAC;YAEpCnD,EAHE,CAAAG,YAAA,EAEkE,EAC9D;YAGJH,EADF,CAAAC,cAAA,eAAmC,iBAC4C;YAAAD,EAAA,CAAAE,MAAA,uBAAU;YAAAF,EAAA,CAAAG,YAAA,EAAQ;YAC/FH,EAAA,CAAAC,cAAA,iBAEkE;YADhED,EAAA,CAAAiD,UAAA,oBAAAG,iDAAAD,MAAA;cAAA,OAAUJ,GAAA,CAAA9B,gBAAA,CAAAkC,MAAA,CAAwB;YAAA,EAAC;YAEvCnD,EAHE,CAAAG,YAAA,EAEkE,EAC9D;YAENH,EAAA,CAAAC,cAAA,kBAA8H;YAAtHD,EAAA,CAAAiD,UAAA,mBAAAI,iDAAA;cAAA,OAASN,GAAA,CAAA7B,UAAA,EAAY;YAAA,EAAC;YAC5BlB,EAAA,CAAAE,MAAA,gCACF;YAAAF,EAAA,CAAAG,YAAA,EAAS;YAGTH,EAAA,CAAAC,cAAA,eAA0C;YACxCD,EAAA,CAAAgD,SAAA,cAAuC;YACvChD,EAAA,CAAAC,cAAA,gBAA2E;YAAAD,EAAA,CAAAE,MAAA,qBAAa;YAAAF,EAAA,CAAAG,YAAA,EAAO;YAC/FH,EAAA,CAAAgD,SAAA,cAAuC;YACzChD,EAAA,CAAAG,YAAA,EAAM;YAGNH,EAAA,CAAAC,cAAA,kBAA2Q;YAAnQD,EAAA,CAAAiD,UAAA,mBAAAK,iDAAA;cAAA,OAASP,GAAA,CAAAX,QAAA,EAAU;YAAA,EAAC;;YAC1BpC,EAAA,CAAAC,cAAA,eAA6D;YAI3DD,EAHA,CAAAgD,SAAA,gBAAyD,gBACC,gBACA,gBACC;YAC7DhD,EAAA,CAAAG,YAAA,EAAM;YACNH,EAAA,CAAAE,MAAA,8BACF;YACFF,EADE,CAAAG,YAAA,EAAS,EACL;YAENH,EAAA,CAAAuD,UAAA,KAAAC,sCAAA,kBAAkB;;YAOlBxD,EAAA,CAAAC,cAAA,eAAgF;YAC9ED,EAAA,CAAAE,MAAA,0FACF;YAEJF,EAFI,CAAAG,YAAA,EAAM,EACF,EACF;;;YAXFH,EAAA,CAAAI,SAAA,IAIC;YAJDJ,EAAA,CAAAyD,aAAA,CAAAV,GAAA,CAAAxC,QAAA,aAIC;;;uBAlEGR,YAAY;QAAA2D,MAAA;MAAA;IAAA;;SAqFXlD,cAAc;AAAA","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 \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 @@
-
+
-
+